Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
iiRecord
Agentic AI Atlas · External Agent Tasks
page:docs-adapters-babysitter-integrations-external-agent-tasksa5c.ai
Search record views/
Record · tabs

Available views

II.Record viewspp. 1 - 1
overviewarticlejsongraph
II.
Page JSON

page:docs-adapters-babysitter-integrations-external-agent-tasks

Structured · live

External Agent Tasks json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · wiki/docs/adapters-babysitter-integrations/external-agent-tasks.mdCluster · wiki
Record JSON
{
  "id": "page:docs-adapters-babysitter-integrations-external-agent-tasks",
  "_kind": "Page",
  "_file": "wiki/docs/adapters-babysitter-integrations/external-agent-tasks.md",
  "_cluster": "wiki",
  "attributes": {
    "nodeKind": "Page",
    "sourcePath": "docs/adapters-babysitter-integrations/external-agent-tasks.md",
    "sourceKind": "repo-docs",
    "title": "External Agent Tasks",
    "displayName": "External Agent Tasks",
    "slug": "docs/adapters-babysitter-integrations/external-agent-tasks",
    "articlePath": "wiki/docs/adapters-babysitter-integrations/external-agent-tasks.md",
    "article": "\n# External Agent Tasks\n\n## Summary\n\nExtend the `agent` task kind with `responderType` routing metadata so tasks-adapter can route work to an internal responder, human, external agent, tracker, or automatic choice. This supersedes the older #603 `external: true` proposal.\n\n## Task Definition API\n\n### Current (internal only)\n```javascript\nconst analyzeTask = defineTask(\"analyze\", (args) => ({\n  kind: \"agent\",\n  title: \"Analyze codebase\",\n  agent: { name: \"Analyzer\", prompt: \"Analyze the code...\" },\n}));\n```\n\n### New (external via adapters)\n```javascript\nconst reviewTask = defineTask(\"review\", (args) => ({\n  kind: \"agent\",\n  title: \"Code review via Claude Code\",\n  agent: {\n    name: \"Code Reviewer\",\n    prompt: \"Review the changes in the working directory...\",\n    responderType: \"agent\",   // tasks-adapter routes to adapters\n    adapter: \"claude-code\",   // NEW — which adapters adapter\n    model: \"claude-sonnet-4-6\", // optional — model override\n    provider: \"anthropic\",    // optional — provider override\n    timeoutMs: 300_000,       // optional — per-task timeout\n    approvalMode: \"yolo\",     // optional — auto-approve tool use\n    maxTurns: 10,             // optional — conversation turn limit\n  },\n}));\n```\n\n### Fallback behavior\n```javascript\nconst flexibleTask = defineTask(\"flexible-review\", (args) => ({\n  kind: \"agent\",\n  title: \"Code review\",\n  agent: {\n    name: \"Reviewer\",\n    prompt: \"Review the code...\",\n    responderType: \"agent\",\n    adapter: \"claude-code\",\n    fallbackType: \"internal\",\n  },\n}));\n```\n\n## SDK Changes\n\n### `packages/babysitter-sdk/src/tasks/types.ts`\n\n```typescript\ninterface AgentTaskOptions {\n  name: string;\n  prompt: string | { instructions: string[] };\n  outputSchema?: Record<string, unknown>;\n  responderType?: \"internal\" | \"human\" | \"agent\" | \"tracker\" | \"auto\";\n  adapter?: string;           // adapters adapter name\n  fallbackType?: \"internal\" | \"human\" | \"agent\" | \"tracker\" | \"auto\";\n  model?: string;             // model override\n  provider?: string;          // provider override\n  timeoutMs?: number;         // per-task timeout\n  approvalMode?: \"yolo\" | \"prompt\";\n  maxTurns?: number;\n}\n\n// Add to TaskDef\ninterface TaskDef {\n  kind: TaskKind;\n  agent?: AgentTaskOptions;   // existing field, extended\n  // ...\n}\n```\n\n### `packages/babysitter-sdk/src/tasks/kinds/index.ts`\n\nAdd helper function:\n\n```typescript\nconst reviewTask = externalAgentTask(\"review\", {\n  adapter: \"claude-code\",\n  prompt: \"Review the changes in the working directory...\",\n  fallbackType: \"internal\",\n});\n```\n\n### `packages/babysitter-sdk/src/tasks/defineTask.ts`\n\nWhen the task kind is `\"agent\"` and `agent.responderType` is `\"agent\"`:\n- Validate that `agent.adapter` is set\n- Preserve valid routing metadata on the task definition\n- Leave effect routing to the tasks-adapter work tracked by #630/#620\n\n## Files to Modify\n\n- `packages/babysitter-sdk/src/tasks/types.ts` — extend AgentTaskOptions with responder routing fields\n- `packages/babysitter-sdk/src/tasks/kinds/index.ts` — export `externalAgentTask`, `humanTask`, and `autoTask` helpers\n- `packages/babysitter-sdk/src/tasks/defineTask.ts` — validate agent adapter for `responderType: \"agent\"`\n- `packages/babysitter-sdk/src/tasks/serializer.ts` — preserve typed agent routing metadata\n- `packages/babysitter-sdk/src/tasks/__tests__/*.test.ts` — cover helpers, validation, serialization, and compatibility\n\n## Validation Rules\n\nIn SDK task definition validation:\n- Accept typed `agent.responderType`\n- Validate `adapter` is a non-empty string when `agent.responderType === \"agent\"`\n- Leave adapter availability checks to the tasks-adapter/runtime routing work\n\n## Process Template Update\n\nWhen external agents are available, the process definition template should mention:\n\n```\nYou may use external agent tasks to delegate work to installed agents:\n- defineTask(\"id\", (args) => ({\n    kind: \"agent\",\n    agent: { name: \"...\", prompt: \"...\", responderType: \"agent\", adapter: \"claude-code\" }\n  }))\nAvailable adapters: claude-code, codex, gemini-cli, ...\n```\n",
    "documents": []
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "page:docs-adapters-babysitter-integrations",
      "to": "page:docs-adapters-babysitter-integrations-external-agent-tasks",
      "kind": "contains_page"
    }
  ]
}

Shortcuts

Back to overview
Open graph tab