Conflict resolution notes: - package.json/run-gates: both sides' new doc-sync gates kept (master's scoped-events/readme gates + this branch's website-api/website-yaml); js-yaml devDeps deduped (master added them independently). - pnpm-workspace/knip: website AND python/sdk-runtime entries kept. - doc-typecheck/verify-type-equiv: master's condensed headers kept, website glob retained in both scan scopes. - vendor/cordis/src/fiber.ts: master's lifecycle-hardening code taken; this branch's richer FiberState JSDoc reapplied on top. vendor/README.md logs both local modifications (hardening = 6, JSDoc enrichment = 7). - pnpm-lock: regenerated from master's side (pnpm install). Post-merge sync the gates forced (the system working as designed): - verify-website-yaml caught 4 stale plugin names from master's package reorg (dsh-stdio-agent -> dsh-stdio-demo, dsh-acp-agent -> dsh-acp-demo); 8 references fixed across guide/ and develop/. - gen-website-api picked up master's 6 new services automatically (ctx.approval/permission/sandbox/sessionQuery/skills/tasks -> 6 new pages + sidebar); api/index.md hub updated to list them. - AGENTS.md budget ceiling 1370 -> 1400: the website rows (layout line + two command lines) and master's own growth collided with the old ceiling; all three website rows are load-bearing (new top-level dir, new CI command).
2.2 KiB
ctx.subagents
SubagentService — provided by @deepseek-ai/dsh-subagent.
Named provider registry and capability-checked start surface.
ctx.subagents.registerProvider(provider)
registerProvider(provider: SubagentProvider): () => void
Register a provider under its name. Registration is effect-scoped and HMR safe; removing a provider blocks new starts but does not revoke runs that were already returned to their holders.
provider— the trusted provider implementation.
Returns the exact Cordis effect disposer.
ctx.subagents.getProvider(name)
getProvider(name: string): SubagentProvider | undefined
Look up a provider by name.
name— the provider name.
Returns the provider, or undefined when absent.
ctx.subagents.list()
list(): string[]
List registered provider names in insertion order.
Returns the registered names.
ctx.subagents.start(name, request)
async start(name: string, request: SubagentStartRequest): Promise<SubagentRun>
Establish a ready child on the named provider. Capability and semantic checks run before delegation. Provider ownership lasts until its promise fulfills; a rejection therefore has no run for the caller to dispose and emits no run lifecycle events.
name— the provider to use.request— child prompt, parent, signal, and optional capabilities.
Returns the ready holder-owned run.