adapter
adapter
Section titled “adapter”| Field | Value |
|---|---|
| Prefix | adapter |
| Namespace constant | AdapterNamespace |
| Subjects constant | AdapterSubjects |
| Kind | bus |
| Schema record | AdapterSchemas |
| Tier | framework |
| Package | @makaio/contracts |
| Defined in | packages/contracts/src/adapter/namespace.ts |
Subjects
Section titled “Subjects”| Key | Wire | Type | Schema |
|---|---|---|---|
agent.created | adapter.agent.created | event | agent-created.ts |
error | adapter.error | event | error.ts |
getAgent | adapter.getAgent | rpc | get-agent.ts |
getCapabilities | adapter.getCapabilities | rpc | get-capabilities.ts |
getConfigSchema | adapter.getConfigSchema | rpc | get-config-schema.ts |
infer | adapter.infer | rpc | infer.ts |
initialized | adapter.initialized | event | initialized.ts |
listAgents | adapter.listAgents | rpc | list-agents.ts |
log | adapter.log | event | log.ts |
quota | adapter.quota | event | quota.ts |
rehydrateAgent | adapter.rehydrateAgent | rpc | rehydrate-agent.ts |
session.closed | adapter.session.closed | event | session-closed.ts |
session.created | adapter.session.created | event | session-created.ts |
session.discovered | adapter.session.discovered | event | session-discovered.ts |
session.linked | adapter.session.linked | event | session-linked.ts |
session.statusChanged | adapter.session.statusChanged | event | session-status-changed.ts |
session.usage | adapter.session.usage | event | session-usage.ts |
startAgent | adapter.startAgent | rpc | start-agent.ts |
stopAgent | adapter.stopAgent | rpc | stop-agent.ts |
Subject Details
Section titled “Subject Details”adapter.agent.created (event)
Section titled “adapter.agent.created (event)”Agent execution unit created.
Subject: adapter.agent.created
Type: Event (fire-and-forget)
Emitted when: Adapter spawns a new agent execution unit
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
adapterSessionId | string | undefined | no |
agentId | string | yes |
sessionId | string | yes |
adapter.error (event)
Section titled “adapter.error (event)”Error during execution.
Subject: adapter.error
Type: Event (fire-and-forget)
Emitted during: promptText() execution on failure
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
error | string | yes |
errorCategory | "rate_limit" | "auth" | "model_unavailable" | "quota_exceeded" | undefined | no |
sessionId | string | undefined | no |
adapter.getAgent (rpc)
Section titled “adapter.getAgent (rpc)”Get information about a specific agent.
Subject: adapter.getAgent
Type: Request (RPC)
Purpose: Returns details for a specific agent, or null if not found.
Request:
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
agentId | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
agent | { agentId: string; sessionId: string; adapterSessionId: string; } | null | yes |
adapter.getCapabilities (rpc)
Section titled “adapter.getCapabilities (rpc)”Request adapter capabilities.
Subject: adapter.getCapabilities
Type: Request (RPC)
Returns the adapter’s declared capabilities and native tools. Can be queried by adapter name or adapter instance ID.
Request:
| Field | Type | Required |
|---|---|---|
adapterId | string | undefined | no |
adapterName | string | undefined | no |
Response:
| Field | Type | Required |
|---|---|---|
capabilities | string[] | yes |
nativeTools | string[] | yes |
adapter.getConfigSchema (rpc)
Section titled “adapter.getConfigSchema (rpc)”Get adapter config schema as JSON Schema.
Subject: adapter.getConfigSchema
Type: Request (RPC)
Purpose: Returns the adapter’s providerConfig schema serialized as JSON Schema
for dynamic form generation in web-ui.
The response includes the full JSON Schema representation of the adapter’s configSchema field, suitable for rendering configuration forms.
Request:
| Field | Type | Required |
|---|---|---|
adapterName | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
adapterName | string | yes |
found | boolean | yes |
jsonSchema | Record<string, unknown> | null | yes |
adapter.infer (rpc)
Section titled “adapter.infer (rpc)”One-shot inference request/response schema.
Subject: adapter.infer
Type: Request (RPC)
Purpose: Ephemeral LLM inference without agent lifecycle overhead.
Used for classification, quick prompts, and meta-LLM calls.
The adapter creates a temporary connector, executes the inference, extracts the text response, and cleans up — no persistent agent.
Request:
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
model | string | undefined | no |
prompt | string | yes |
providerContext | { providerConfigId: string; definitionId: string; credentialRefs: Record<string, string & $brand<"CredentialRef">>; endpointOverrides?: { anthropic?: string | undefined; openai?: string | undefined; } | undefined; credentialEnvVars?: Record<string, string> | undefined; ambientCredentialEnvVars?: string[] | undefined; } | undefined | no |
systemPrompt | string | undefined | no |
Response:
| Field | Type | Required |
|---|---|---|
text | string | yes |
usage | { inputTokens: number; outputTokens: number; } | undefined | no |
adapter.initialized (event)
Section titled “adapter.initialized (event)”Adapter initialization completed.
Subject: adapter.initialized
Type: Event (fire-and-forget)
Emitted when: Adapter finishes initialization and is ready to handle requests.
This event signals that all adapter handlers are registered and the adapter is ready to process incoming messages. Useful for coordinating startup timing and preventing race conditions when transports accept connections before adapters are ready.
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
capabilities | string[] | yes |
nativeTools | string[] | undefined | no |
adapter.listAgents (rpc)
Section titled “adapter.listAgents (rpc)”List active agents for an adapter.
Subject: adapter.listAgents
Type: Request (RPC)
Purpose: Returns all active agents managed by the specified adapter.
Request:
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
agents | { agentId: string; sessionId: string; adapterSessionId: string; }[] | yes |
adapter.log (event)
Section titled “adapter.log (event)”Adapter or SDK log message.
Subject: adapter.log
Type: Event (fire-and-forget)
Emitted when: Adapter or SDK emits log messages (authentication, connection status, etc.)
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
level | "error" | "debug" | "info" | "warn" | undefined | no |
message | string | yes |
timestamp | number | yes |
adapter.quota (event)
Section titled “adapter.quota (event)”Account-wide quota and billing metrics.
Subject: adapter.quota
Type: Event (fire-and-forget)
Emitted when: Quota information is available from the provider (e.g., GitHub Copilot)
This tracks account-wide usage limits across all sessions in the billing period. Only applicable to providers with quota systems (currently GitHub Copilot).
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
limit | number | yes |
overage | number | yes |
provider | string | yes |
quotaType | string | yes |
resetDate | string | yes |
used | number | yes |
adapter.rehydrateAgent (rpc)
Section titled “adapter.rehydrateAgent (rpc)”Rehydrate an agent by swapping its connector.
Subject: adapter.rehydrateAgent
Type: Request (RPC)
Purpose: Allows the orchestrator to swap an agent’s connector (e.g., after a crash)
instead of killing and recreating the agent. This preserves the agent’s
identity and session state while replacing the underlying execution context.
The adapter will:
- Stop the existing connector for the specified agent
- Create a new connector with optional config overrides (cwd, model)
- Wire the new connector to the existing agent instance
Success is implicit. Errors are thrown if:
- Agent not found
- Adapter not found
- Connector swap fails
Request:
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
agentId | string | yes |
cwd | string | undefined | no |
model | string | undefined | no |
Response:
Empty object.
adapter.session.closed (event)
Section titled “adapter.session.closed (event)”External provider session closed.
Subject: adapter.session.closed
Type: Event (fire-and-forget)
Emitted when: SDK session ends
Re-emitted by AIAdapter when it receives AgentSubjects.session_closed.
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
adapterSessionId | string | yes |
agentId | string | yes |
reason | string | undefined | no |
sessionId | string | yes |
adapter.session.created (event)
Section titled “adapter.session.created (event)”External provider session established.
Subject: adapter.session.created
Type: Event (fire-and-forget)
Emitted when: SDK session is created (Anthropic, OpenAI, etc.)
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
adapterSessionId | string | yes |
model | string | yes |
sessionId | string | yes |
adapter.session.discovered (event)
Section titled “adapter.session.discovered (event)”Subject: adapter.session.discovered
Type: Event
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
adapterSessionId | string | yes |
cwd | string | null | yes |
forkPointMessageId | string | null | yes |
kind | "fork" | "root" | "subagent" | "compress" | yes |
logFilePath | string | null | undefined | no |
model | string | null | yes |
parentAdapterSessionId | string | null | yes |
startedAt | number | undefined | no |
title | string | undefined | no |
adapter.session.linked (event)
Section titled “adapter.session.linked (event)”Adapter session linked to a Makaio session.
Subject: adapter.session.linked
Type: Event (fire-and-forget)
Emitted when: An imported adapter session is linked to a Makaio session
Unlike session.discovered (which has no sessionId because the session doesn’t exist yet), this event confirms the linkage has been established. Used to resolve parent relationships for sessions imported out of order.
adapterId is optional here because linkage can occur during log import
before the owning adapter instance has been configured or started. Consumers
that need a resolved adapterId should use AdapterRuntimeSubjects.resolveId
separately through the runtime identity handlers.
| Field | Type | Required |
|---|---|---|
adapterId | string | undefined | no |
adapterName | string | yes |
adapterSessionId | string | yes |
replay | boolean | undefined | no |
sessionId | string | yes |
adapter.session.statusChanged (event)
Section titled “adapter.session.statusChanged (event)”Adapter session status changed.
Subject: adapter.session.statusChanged
Type: Event (fire-and-forget)
Emitted when: An adapter session’s import status transitions
(e.g., discovered → imported, discovered → tracking).
Used by the entity cache to keep adapterSessions reactive in the UI.
Emitted by the storage layer, so adapterId is not available.
| Field | Type | Required |
|---|---|---|
adapterSessionId | string | yes |
status | "discovered" | "imported" | "live" | "tracking" | yes |
adapter.session.usage (event)
Section titled “adapter.session.usage (event)”Session-level cumulative usage metrics.
Subject: adapter.session.usage
Type: Event (fire-and-forget)
Emitted when: Session usage totals are updated (after each API call)
This event contains running totals for the entire session/conversation.
For per-call delta metrics, see agent.usage.
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
adapterName | string | yes |
adapterSessionId | string | yes |
sessionId | string | yes |
totalCalls | number | yes |
totalInputTokens | number | yes |
totalOutputTokens | number | yes |
adapter.startAgent (rpc)
Section titled “adapter.startAgent (rpc)”Start a new agent with full lifecycle control.
Subject: adapter.startAgent
Type: Request (RPC)
Purpose: Non-blocking agent creation with full control over session management.
Returns immediately with agent identifiers for further interaction.
Request modes:
create(default, can be omitted): Create fresh session. Server generates sessionId.resume: Continue existing makaio session from a provider session’s last state.fork: Branch from existing provider session into same makaio session.
For fork mode, sessionId and sourceSessionId are REQUIRED.
For resume mode, sessionId and adapterSessionId are REQUIRED.
Request:
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
allowedDirectories | string[] | undefined | no |
allowedTools | string[] | undefined | no |
clientId | string | undefined | no |
cwd | string | undefined | no |
disallowedTools | string[] | undefined | no |
env | Record<string, string> | undefined | no |
ephemeral | boolean | undefined | no |
harnessId | string | undefined | no |
initialMessage | string | { blocks: { type: "text"; content: string; } | { type: "image"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "document"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "attachment"; fileName: string; filePath: string; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; attachmentType: "file" | "directory"; displayName?: string | undefined; } | { type: "reasoning"; content: string; metadata?: Record<string, unknown> | undefined; } | { type: "tool_call"; toolCallId: string; name: string; args: Record<string, unknown>; } | { type: "tool_output"; toolCallId: string; output: string; isError?: boolean | undefined; } | ({ type: "text"; content: string; } | { type: "image"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "document"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "attachment"; fileName: string; filePath: string; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; attachmentType: "file" | "directory"; displayName?: string | undefined; } | { type: "reasoning"; content: string; metadata?: Record<string, unknown> | undefined; } | { type: "tool_call"; toolCallId: string; name: string; args: Record<string, unknown>; } | { type: "tool_output"; toolCallId: string; output: string; isError?: boolean | undefined; })[]; role?: "user" | "assistant" | "system" | undefined; } | undefined | no |
mcpSessionContext | { sessionId: string; projectId: string | null; profileId: string | null; servers: { name: string; transport: { type: "stdio"; command: string; args?: string[] | undefined; env?: Record<string, string> | undefined; } | { url: string; type: "sse"; headers?: Record<string, string> | undefined; } | { url: string; type: "http"; headers?: Record<string, string> | undefined; }; exposureMode: "direct" | "discovery"; }[]; directTools: { fullName: string; originalName: string; serverName: string; inputSchema: Record<string, unknown>; exposureMode: "direct" | "discovery" | "hidden"; enabled: boolean; exposed: boolean; description?: string | undefined; enabledBy?: "discovery" | "toolset" | undefined; enabledAt?: number | undefined; }[]; discoverableTools: { fullName: string; originalName: string; serverName: string; inputSchema: Record<string, unknown>; exposureMode: "direct" | "discovery" | "hidden"; enabled: boolean; exposed: boolean; description?: string | undefined; enabledBy?: "discovery" | "toolset" | undefined; enabledAt?: number | undefined; }[]; } | undefined | no |
mode | "fork" | "resume" | "create" | undefined | no |
model | string | undefined | no |
providerContext | { providerConfigId: string; definitionId: string; credentialRefs: Record<string, string & $brand<"CredentialRef">>; endpointOverrides?: { anthropic?: string | undefined; openai?: string | undefined; } | undefined; credentialEnvVars?: Record<string, string> | undefined; ambientCredentialEnvVars?: string[] | undefined; } | undefined | no |
reasoningEffort | "none" | "low" | "medium" | "high" | "extra-high" | undefined | no |
role | "lead" | "member" | yes |
sessionContext | { messageHistory?: { blocks: { type: "text"; content: string; } | { type: "image"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "document"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "attachment"; fileName: string; filePath: string; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; attachmentType: "file" | "directory"; displayName?: string | undefined; } | { type: "reasoning"; content: string; metadata?: Record<string, unknown> | undefined; } | { type: "tool_call"; toolCallId: string; name: string; args: Record<string, unknown>; } | { type: "tool_output"; toolCallId: string; output: string; isError?: boolean | undefined; } | ({ type: "text"; content: string; } | { type: "image"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "document"; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; } | { type: "attachment"; fileName: string; filePath: string; source: { type: "base64"; data: string; mimeType: string; } | { type: "url"; url: string; mimeType?: string | undefined; }; attachmentType: "file" | "directory"; displayName?: string | undefined; } | { type: "reasoning"; content: string; metadata?: Record<string, unknown> | undefined; } | { type: "tool_call"; toolCallId: string; name: string; args: Record<string, unknown>; } | { type: "tool_output"; toolCallId: string; output: string; isError?: boolean | undefined; })[]; role?: "user" | "assistant" | "system" | undefined; }[] | undefined; hasNewTransforms?: boolean | undefined; hasCompression?: boolean | undefined; extractedContext?: unknown; isFirstTurn?: boolean | undefined; hasConnectorSwap?: boolean | undefined; turnContext?: Record<string, JsonValue> | undefined; } | undefined | no |
sessionId | string | undefined | no |
systemPrompt | string | { mode: "append"; content: string; } | undefined | no |
Response:
| Field | Type | Required |
|---|---|---|
success | boolean | yes |
adapter.stopAgent (rpc)
Section titled “adapter.stopAgent (rpc)”Stop and dispose an agent.
Subject: adapter.stopAgent
Type: Request (RPC)
Purpose: Aborts the agent and removes it from the adapter’s tracking.
Request:
| Field | Type | Required |
|---|---|---|
adapterId | string | yes |
agentId | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
success | boolean | yes |
Auto-generated by yarn docs:bus. Do not edit manually.