Skip to content

adapter

FieldValue
Prefixadapter
Namespace constantAdapterNamespace
Subjects constantAdapterSubjects
Kindbus
Schema recordAdapterSchemas
Tierframework
Package@makaio/contracts
Defined inpackages/contracts/src/adapter/namespace.ts
KeyWireTypeSchema
agent.createdadapter.agent.createdeventagent-created.ts
erroradapter.erroreventerror.ts
getAgentadapter.getAgentrpcget-agent.ts
getCapabilitiesadapter.getCapabilitiesrpcget-capabilities.ts
getConfigSchemaadapter.getConfigSchemarpcget-config-schema.ts
inferadapter.inferrpcinfer.ts
initializedadapter.initializedeventinitialized.ts
listAgentsadapter.listAgentsrpclist-agents.ts
logadapter.logeventlog.ts
quotaadapter.quotaeventquota.ts
rehydrateAgentadapter.rehydrateAgentrpcrehydrate-agent.ts
session.closedadapter.session.closedeventsession-closed.ts
session.createdadapter.session.createdeventsession-created.ts
session.discoveredadapter.session.discoveredeventsession-discovered.ts
session.linkedadapter.session.linkedeventsession-linked.ts
session.statusChangedadapter.session.statusChangedeventsession-status-changed.ts
session.usageadapter.session.usageeventsession-usage.ts
startAgentadapter.startAgentrpcstart-agent.ts
stopAgentadapter.stopAgentrpcstop-agent.ts

Agent execution unit created.

Subject: adapter.agent.created Type: Event (fire-and-forget) Emitted when: Adapter spawns a new agent execution unit

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
adapterSessionIdstring | undefinedno
agentIdstringyes
sessionIdstringyes

Error during execution.

Subject: adapter.error Type: Event (fire-and-forget) Emitted during: promptText() execution on failure

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
errorstringyes
errorCategory"rate_limit" | "auth" | "model_unavailable" | "quota_exceeded" | undefinedno
sessionIdstring | undefinedno

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:

FieldTypeRequired
adapterIdstringyes
agentIdstringyes

Response:

FieldTypeRequired
agent{ agentId: string; sessionId: string; adapterSessionId: string; } | nullyes

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:

FieldTypeRequired
adapterIdstring | undefinedno
adapterNamestring | undefinedno

Response:

FieldTypeRequired
capabilitiesstring[]yes
nativeToolsstring[]yes

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:

FieldTypeRequired
adapterNamestringyes

Response:

FieldTypeRequired
adapterNamestringyes
foundbooleanyes
jsonSchemaRecord<string, unknown> | nullyes

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:

FieldTypeRequired
adapterIdstringyes
modelstring | undefinedno
promptstringyes
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; } | undefinedno
systemPromptstring | undefinedno

Response:

FieldTypeRequired
textstringyes
usage{ inputTokens: number; outputTokens: number; } | undefinedno

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.

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
capabilitiesstring[]yes
nativeToolsstring[] | undefinedno

List active agents for an adapter.

Subject: adapter.listAgents Type: Request (RPC) Purpose: Returns all active agents managed by the specified adapter.

Request:

FieldTypeRequired
adapterIdstringyes

Response:

FieldTypeRequired
agents{ agentId: string; sessionId: string; adapterSessionId: string; }[]yes

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.)

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
level"error" | "debug" | "info" | "warn" | undefinedno
messagestringyes
timestampnumberyes

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).

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
limitnumberyes
overagenumberyes
providerstringyes
quotaTypestringyes
resetDatestringyes
usednumberyes

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:

  1. Stop the existing connector for the specified agent
  2. Create a new connector with optional config overrides (cwd, model)
  3. 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:

FieldTypeRequired
adapterIdstringyes
agentIdstringyes
cwdstring | undefinedno
modelstring | undefinedno

Response:

Empty object.

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.

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
adapterSessionIdstringyes
agentIdstringyes
reasonstring | undefinedno
sessionIdstringyes

External provider session established.

Subject: adapter.session.created Type: Event (fire-and-forget) Emitted when: SDK session is created (Anthropic, OpenAI, etc.)

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
adapterSessionIdstringyes
modelstringyes
sessionIdstringyes

Subject: adapter.session.discovered Type: Event

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
adapterSessionIdstringyes
cwdstring | nullyes
forkPointMessageIdstring | nullyes
kind"fork" | "root" | "subagent" | "compress"yes
logFilePathstring | null | undefinedno
modelstring | nullyes
parentAdapterSessionIdstring | nullyes
startedAtnumber | undefinedno
titlestring | undefinedno

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.

FieldTypeRequired
adapterIdstring | undefinedno
adapterNamestringyes
adapterSessionIdstringyes
replayboolean | undefinedno
sessionIdstringyes

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.

FieldTypeRequired
adapterSessionIdstringyes
status"discovered" | "imported" | "live" | "tracking"yes

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.

FieldTypeRequired
adapterIdstringyes
adapterNamestringyes
adapterSessionIdstringyes
sessionIdstringyes
totalCallsnumberyes
totalInputTokensnumberyes
totalOutputTokensnumberyes

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:

FieldTypeRequired
adapterIdstringyes
allowedDirectoriesstring[] | undefinedno
allowedToolsstring[] | undefinedno
clientIdstring | undefinedno
cwdstring | undefinedno
disallowedToolsstring[] | undefinedno
envRecord<string, string> | undefinedno
ephemeralboolean | undefinedno
harnessIdstring | undefinedno
initialMessagestring | { 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; } | undefinedno
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; }[]; } | undefinedno
mode"fork" | "resume" | "create" | undefinedno
modelstring | undefinedno
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; } | undefinedno
reasoningEffort"none" | "low" | "medium" | "high" | "extra-high" | undefinedno
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; } | undefinedno
sessionIdstring | undefinedno
systemPromptstring | { mode: "append"; content: string; } | undefinedno

Response:

FieldTypeRequired
successbooleanyes

Stop and dispose an agent.

Subject: adapter.stopAgent Type: Request (RPC) Purpose: Aborts the agent and removes it from the adapter’s tracking.

Request:

FieldTypeRequired
adapterIdstringyes
agentIdstringyes

Response:

FieldTypeRequired
successbooleanyes

Auto-generated by yarn docs:bus. Do not edit manually.