From 6762a32ea6b70d7836723c3122367223017bb409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Thu, 27 Aug 2026 08:46:36 +0000 Subject: [PATCH] todo: turn a chat into a commander or a bot, carrying its context Co-Authored-By: Claude Fable 5 --- TODO.md | 6 +-- .../turn-a-chat-into-a-commander-or-a-bot.md | 51 +++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 todo/agent-coordination/turn-a-chat-into-a-commander-or-a-bot.md diff --git a/TODO.md b/TODO.md index 65e312ef..7e7ca056 100644 --- a/TODO.md +++ b/TODO.md @@ -22,12 +22,12 @@ the owner's OS user and can never be granted. Indirection there really is accide ## Themes -**106 open, 31 closed**, across 33 themes. +**107 open, 31 closed**, across 33 themes. | Theme | Open | Closed | | ------------------------------------------------------------------------------------------ | ---- | ------ | | [Affordances](todo/affordances/) | 2 | 0 | -| [Agents coordinating agents](todo/agent-coordination/) | 4 | 0 | +| [Agents coordinating agents](todo/agent-coordination/) | 5 | 0 | | [Speaking into a session from the backend](todo/agent-delivery/) | 1 | 1 | | [Backburner](todo/backburner/) | 3 | 0 | | [Background jobs](todo/background-jobs/) | 2 | 1 | @@ -69,6 +69,7 @@ the owner's OS user and can never be granted. Indirection there really is accide ## Newest ten +- `2026-08-27` **Turn an ordinary chat into a commander or a bot, carrying its context along** — [agent-coordination/turn-a-chat-into-a-commander-or-a-bot](todo/agent-coordination/turn-a-chat-into-a-commander-or-a-bot.md) - `2026-08-27` **AGENTS.md sweep — what is left after the static docs landed** — [docs-conventions/agents-md-remaining](todo/docs-conventions/agents-md-remaining.md) - `2026-08-27` **The calendar/contacts skill has never been exercised by an actual agent** — [known-bugs/calendar-skill-never-used-by-an-agent](todo/known-bugs/calendar-skill-never-used-by-an-agent.md) - `2026-08-27` **Setting up a phone for calendar and contacts should be one link inside Officer, not a manual account form** — [mobile-apps/setting-up-a-phone-should-be-a-link-in-the-app](todo/mobile-apps/setting-up-a-phone-should-be-a-link-in-the-app.md) @@ -78,4 +79,3 @@ the owner's OS user and can never be granted. Indirection there really is accide - `2026-08-25` **Commit signing is inconsistent across harnesses — Claude names itself, opencode names nothing** — [agent-coordination/commit-signing-is-inconsistent-across-harnesses](todo/agent-coordination/commit-signing-is-inconsistent-across-harnesses.md) - `2026-08-25` **A commander's watcher does not survive a reboot, and nothing says so** — [agent-coordination/a-commander-s-watcher-does-not-survive-a-reboot](todo/agent-coordination/a-commander-s-watcher-does-not-survive-a-reboot.md) - `2026-08-25` **Resurrect Projects/Apps** — [backburner/resurrect-projects-apps](todo/backburner/resurrect-projects-apps.md) -- `2026-08-25` **Sweep: AGENTS.md becomes the real instructions everywhere, CLAUDE.md a pointer beside it** — [docs-conventions/sweep-agents-md-primary-claude-md-pointer](todo/docs-conventions/sweep-agents-md-primary-claude-md-pointer.md) diff --git a/todo/agent-coordination/turn-a-chat-into-a-commander-or-a-bot.md b/todo/agent-coordination/turn-a-chat-into-a-commander-or-a-bot.md new file mode 100644 index 00000000..2e19c87d --- /dev/null +++ b/todo/agent-coordination/turn-a-chat-into-a-commander-or-a-bot.md @@ -0,0 +1,51 @@ +--- +id: agent-coordination/turn-a-chat-into-a-commander-or-a-bot +title: 'Turn an ordinary chat into a commander or a bot, carrying its context along' +theme: agent-coordination +status: open +created: 2026-08-27 +date_source: stated +order: 4 +--- + +**Every chat should have a "turn into commander" / "turn into bot" action, carrying the conversation's +context into the new one.** Wanted 2026-08-27. The case: a conversation has already built up real +context — you were investigating something, chatting through a problem — and only partway through does +it become clear this should be a standing watcher or a standing job, rather than something to +re-explain from a blank commander or bot. + +**Bot and commander are two real, different things today, not one feature with two names** — worth +being precise about which is meant when this is built. Both are just "a conversation whose working +directory is set to a special folder", per `permissions/registry.ts:312`: _"a bot IS a conversation +whose working directory is `bots/`."_ But their briefs are opposite in size on purpose +(`api/bots/brief.ts`'s own comment): **a bot is one sentence and a watch, arm-on-first-message, no +interview.** **A commander is a job** — procedures, a ledger, a dispatch policy, a setup conversation. +So "turn into bot" and "turn into commander" are different destinations with different expectations of +how much ceremony happens next, not two labels for the same button. + +**The real obstacle, and it is structural, not a missing button:** both are created fresh today. +`POST /command-hq/commanders/new` takes a `prompt`, a `name`, a `referencePath` — nothing that accepts +an existing conversation's history — and starts a **new** transcript in the commander's own directory. +Bots work the same way. And a Claude Code transcript's identity is scoped to the working directory it +started in (verified this session: `~/.claude/projects//.jsonl`) — so there is no +"just move this transcript" version of this feature. An ordinary `/chat` session's transcript lives at +a different cwd than `commanders//` or `bots/`, and nothing repoints one transcript's directory +after the fact. + +So "carrying context" has to mean actually transplanting something into the new session, and which +something is the design question to settle before building, not after: + +- **Replay the full transcript** into the new commander/bot's directory as its opening — complete, but + potentially large, and a commander/bot's brief is deliberately short (arm-on-first-message for a bot; + a lean setup conversation for a commander) — dumping a long unrelated history in front of that + may work against the brief's own point. +- **Summarize** what happened and seed the new session with the summary as its first message — + cheaper, but a summary is a lossy claim about a conversation, the same caveat this platform's own + email-recall design already states about summarizing versus retrieving. +- Some hybrid: summary up front, full transcript kept alongside as a file the new session can go read + if it needs the detail rather than carrying it in every future turn's context. + +Related, not the same problem: `sub-agents/an-api-endpoint-for-spawning-an-agent-with-a` already +answered "how do you start a commander from code" (`POST /api/sub-agents/spawn` / commander creation) — +this item is specifically about carrying an EXISTING conversation's context across that boundary, which +neither existing endpoint does.