diff --git a/packages/shared/src/agentPresets/presets/captain/preset.json b/packages/shared/src/agentPresets/presets/captain/preset.json index 755ce72a26961..fe40ad9111e77 100644 --- a/packages/shared/src/agentPresets/presets/captain/preset.json +++ b/packages/shared/src/agentPresets/presets/captain/preset.json @@ -26,7 +26,7 @@ "setupNotes": [ "Requires Claude Code with access to claude-opus-5-5.", "Delegation requires configured Ada agents named Cook, Pastry and Cleaner; Cook (OpenSource) is optional.", - "Listener helpers require Claude Haiku 5.5 access, or the documented Codex Luna fallback.", + "Listener helpers require Claude Haiku 5.5 access.", "Project bootstrapping requires Git and Node.js; Go, Make and Docker are needed for generated project checks.", "GitHub publication requires an authenticated GitHub CLI and explicit authorization.", "Browser CLI workflows require playwright-cli and its browser dependencies." diff --git a/packages/shared/src/agentPresets/presets/captain/system-prompt.md b/packages/shared/src/agentPresets/presets/captain/system-prompt.md index 9fbb6e8640c88..05497004309d3 100644 --- a/packages/shared/src/agentPresets/presets/captain/system-prompt.md +++ b/packages/shared/src/agentPresets/presets/captain/system-prompt.md @@ -12,7 +12,7 @@ Always work with children in parallel threads to save time and work more efficie Ada no longer sends any automatic message from a named child to its parent: nothing on done, idle, input, stopped or task updates. Only three things wake you: the user, a profile-less delegate_task helper finishing ("Delegated tasks … reached terminal states"), and watched PRs. Follow the captain-event-loop skill on every turn that touches children: -- After every launch, t3_thread_send (use it rather than t3_send_message: it returns the runId), answered question or resume, arm exactly one listener for that child run: a profile-less delegate_task on claude-haiku-5-5 (low) that blocks on t3_thread_wait with that runId. Its completion is your wake. +- After every launch, t3_thread_send (use it rather than t3_send_message: it returns the runId), answered question or resume, arm exactly one listener for that child run: a profile-less delegate_task on claude-haiku-5-5 (low) that blocks on t3_thread_wait with that runId. Its completion is your wake. Every listener runs on Claude Haiku 5.5, whatever provider you run on: never Sonnet, Opus, Codex models or your own inherited model. If Haiku is unavailable, tell the user instead of falling back. - On every turn, whatever woke you, sweep all children in one t3_task_read call (no threadId), then handle every changed child, not just the one named in the wake. idle: read its last 3–5 messages and start the next pipeline step. waiting_input: answer it. interrupted/failed/stopped: resume once, then report if it stops again. running with no listener: arm one. - Never end a turn while a running child has no live listener or an idle child is waiting on you. Never poll, sleep, schedule checks or message other chats to keep work moving. - You lead: decide reversible and routine choices yourself, including merging each PR once its review fixes are in, CI is green and the staging deploy is checked, and list them under "Defaults taken". Ask the user only about production deploys or releases, architecture exceptions, product decisions they have not made, and destructive or spending actions. Keep everything else moving while you wait for them. diff --git a/packages/shared/src/agentPresets/skills/captain-event-loop/SKILL.md b/packages/shared/src/agentPresets/skills/captain-event-loop/SKILL.md index 7e767f38ffc38..f1ccbac58f3a0 100644 --- a/packages/shared/src/agentPresets/skills/captain-event-loop/SKILL.md +++ b/packages/shared/src/agentPresets/skills/captain-event-loop/SKILL.md @@ -46,7 +46,7 @@ delegate_task { } ``` -Record the listener's `taskId` against the child in the pipeline table. A listener can still end without the run ending (a repeated connection error, or the 8-hour cap), so a wake means "look", not "the child stopped". The sweep decides. Fallback model: `codex` / `gpt-5.6-luna` / `reasoningEffort: low` (also proven). Ada caps one MCP tool call at 65 minutes, so the listener re-waits hourly itself. Captain is not woken unless a wait errors or the 8-hour cap is reached. +Record the listener's `taskId` against the child in the pipeline table. A listener can still end without the run ending (a repeated connection error, or the 8-hour cap), so a wake means "look", not "the child stopped". The sweep decides. Listeners always run on Claude Haiku 5.5; there is no fallback model. If Haiku is unavailable, tell the user. Ada caps one MCP tool call at 65 minutes, so the listener re-waits hourly itself. Captain is not woken unless a wait errors or the 8-hour cap is reached. ## Wake: sweep everything, then act