subagent
subagent
Section titled “subagent”| Field | Value |
|---|---|
| Prefix | subagent |
| Namespace constant | SubagentNamespace |
| Subjects constant | SubagentSubjects |
| Kind | bus |
| Schema record | SubagentSchemas |
| Tier | framework |
| Package | @makaio/contracts |
| Defined in | packages/contracts/src/subagent/namespace.ts |
Subjects
Section titled “Subjects”| Key | Wire | Type | Schema |
|---|---|---|---|
await | subagent.await | rpc | — |
cancelled | subagent.cancelled | event | — |
completed | subagent.completed | event | — |
completeTask | subagent.completeTask | rpc | — |
execute | subagent.execute | rpc | — |
executionFailed | subagent.executionFailed | event | schemas.ts |
getStatus | subagent.getStatus | rpc | — |
kill | subagent.kill | rpc | — |
listBySession | subagent.listBySession | rpc | — |
reportProgress | subagent.reportProgress | rpc | — |
requestInput | subagent.requestInput | rpc | — |
send | subagent.send | rpc | — |
spawn | subagent.spawn | rpc | — |
spawned | subagent.spawned | event | — |
toChild | subagent.toChild | event | — |
toParent | subagent.toParent | event | — |
Subject Details
Section titled “Subject Details”subagent.await (rpc)
Section titled “subagent.await (rpc)”RPC: Await subagent completion or terminal state
Subject: subagent.await
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
subagentId | string | yes |
timeoutMs | number | undefined | no |
Response:
| Field | Type | Required |
|---|---|---|
error | string | undefined | no |
pendingRequest | { messageId: string; question: string; context?: string | undefined; } | undefined | no |
result | string | undefined | no |
status | "completed" | "cancelled" | "failed" | "waiting_input" | "timeout" | yes |
subagent.cancelled (event)
Section titled “subagent.cancelled (event)”Emitted when a subagent is cancelled by parent.
Subject: subagent.cancelled
Type: Event
| Field | Type | Required |
|---|---|---|
reason | string | yes |
subagentId | string | yes |
subagent.completed (event)
Section titled “subagent.completed (event)”Emitted when a subagent completes (success or failure).
Subject: subagent.completed
Type: Event
| Field | Type | Required |
|---|---|---|
error | string | undefined | no |
result | string | undefined | no |
subagentId | string | yes |
success | boolean | yes |
usage | { inputTokens: number; outputTokens: number; totalTokens: number; } | undefined | no |
subagent.completeTask (rpc)
Section titled “subagent.completeTask (rpc)”RPC: Child signals task completion
Subject: subagent.completeTask
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
result | string | yes |
subagentId | string | yes |
summary | string | undefined | no |
Response:
| Field | Type | Required |
|---|---|---|
completed | boolean | yes |
subagent.execute (rpc)
Section titled “subagent.execute (rpc)”RPC: Execute a spawned subagent (create session + start adapter)
Subject: subagent.execute
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
config | { task: string; contextMode: "fork" | "fresh"; adapterName?: string | undefined; providerConfigId?: string | undefined; harnessId?: string | undefined; model?: string | undefined; tools?: string[] | undefined; disallowedTools?: string[] | undefined; systemPrompt?: string | undefined; maxDepth?: number | undefined; responseSchema?: Record<string, unknown> | undefined; executionTargetId?: string | undefined; workstreamId?: string | undefined; } | yes |
depth | number | yes |
parentSessionId | string | yes |
subagentId | string | yes |
task | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
agentId | string | undefined | no |
error | string | undefined | no |
success | boolean | yes |
subagent.executionFailed (event)
Section titled “subagent.executionFailed (event)”Event: Subagent execution failed during startup
Subject: subagent.executionFailed
Type: Event
| Field | Type | Required |
|---|---|---|
error | string | yes |
parentSessionId | string | yes |
phase | "session_create" | "adapter_start" | "agent_start" | yes |
subagentId | string | yes |
subagent.getStatus (rpc)
Section titled “subagent.getStatus (rpc)”Query subagent status.
Subject: subagent.getStatus
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
subagentId | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
childSessionId | string | undefined | no |
error | string | undefined | no |
pendingRequest | { messageId: string; question: string; context?: string | undefined; } | undefined | no |
progress | string[] | yes |
result | string | undefined | no |
status | "completed" | "cancelled" | "failed" | "spawning" | "running" | "waiting_input" | "hung" | yes |
summary | string | undefined | no |
subagent.kill (rpc)
Section titled “subagent.kill (rpc)”RPC: Kill a running subagent
Subject: subagent.kill
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
reason | string | undefined | no |
subagentId | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
killed | boolean | yes |
subagent.listBySession (rpc)
Section titled “subagent.listBySession (rpc)”RPC: List non-terminal subagents for a parent session.
Used by the coordinator manifest builder to populate activeSubagents.
Returns an empty array after process restart (in-memory tracking only).
Subject: subagent.listBySession
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
parentSessionId | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
subagents | { subagentId: string; task: string; status: "completed" | "cancelled" | "failed" | "spawning" | "running" | "waiting_input" | "hung"; workstreamId?: string | undefined; }[] | yes |
subagent.reportProgress (rpc)
Section titled “subagent.reportProgress (rpc)”RPC: Child reports progress
Subject: subagent.reportProgress
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
percentComplete | number | undefined | no |
subagentId | string | yes |
update | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
reported | boolean | yes |
subagent.requestInput (rpc)
Section titled “subagent.requestInput (rpc)”RPC: Child requests input from parent
Subject: subagent.requestInput
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
context | string | undefined | no |
question | string | yes |
subagentId | string | yes |
timeoutMs | number | undefined | no |
Response:
| Field | Type | Required |
|---|---|---|
responded | boolean | yes |
response | string | undefined | no |
timedOut | boolean | yes |
subagent.send (rpc)
Section titled “subagent.send (rpc)”RPC: Send message to subagent
Subject: subagent.send
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
content | string | yes |
inResponseTo | string | undefined | no |
subagentId | string | yes |
Response:
| Field | Type | Required |
|---|---|---|
resolvedPending | boolean | yes |
sent | boolean | yes |
subagent.spawn (rpc)
Section titled “subagent.spawn (rpc)”RPC: Spawn a subagent (validates constraints, tracks, emits spawned)
Subject: subagent.spawn
Type: Request (RPC)
Request:
| Field | Type | Required |
|---|---|---|
config | { task: string; contextMode: "fork" | "fresh"; adapterName?: string | undefined; providerConfigId?: string | undefined; harnessId?: string | undefined; model?: string | undefined; tools?: string[] | undefined; disallowedTools?: string[] | undefined; systemPrompt?: string | undefined; maxDepth?: number | undefined; responseSchema?: Record<string, unknown> | undefined; executionTargetId?: string | undefined; workstreamId?: string | undefined; } | yes |
depth | number | yes |
parentSessionId | string | yes |
spawningToolCallId | string | undefined | no |
Response:
| Field | Type | Required |
|---|---|---|
status | "spawning" | yes |
subagentId | string | yes |
subagent.spawned (event)
Section titled “subagent.spawned (event)”Emitted when a subagent is spawned.
Subject: subagent.spawned
Note: childSessionId is not included - the session is created by SubagentService after receiving this event, not pre-generated.
Type: Event
| Field | Type | Required |
|---|---|---|
config | { task: string; contextMode: "fork" | "fresh"; adapterName?: string | undefined; providerConfigId?: string | undefined; harnessId?: string | undefined; model?: string | undefined; tools?: string[] | undefined; disallowedTools?: string[] | undefined; systemPrompt?: string | undefined; maxDepth?: number | undefined; responseSchema?: Record<string, unknown> | undefined; executionTargetId?: string | undefined; workstreamId?: string | undefined; } | yes |
depth | number | yes |
parentSessionId | string | yes |
spawningToolCallId | string | undefined | no |
subagentId | string | yes |
task | string | yes |
subagent.toChild (event)
Section titled “subagent.toChild (event)”Message from parent to subagent.
Subject: subagent.toChild
Type: Event
| Field | Type | Required |
|---|---|---|
content | string | yes |
inResponseTo | string | undefined | no |
messageId | string | yes |
subagentId | string | yes |
subagent.toParent (event)
Section titled “subagent.toParent (event)”Message from subagent to parent.
Subject: subagent.toParent
Types: progress (status update), request_input (blocking question)
Type: Event
| Field | Type | Required |
|---|---|---|
content | string | yes |
context | string | undefined | no |
messageId | string | yes |
subagentId | string | yes |
type | "progress" | "request_input" | yes |
Auto-generated by yarn docs:bus. Do not edit manually.