PRD: Named / Labelled Agents #184

Merged
didericis merged 6 commits from prd-0051-named-labelled-agents into main 2026-06-07 13:26:03 -04:00
Collaborator

Closes #171.

PRD 0054

Summary

Renumbered from PRD 0049 (PR #172) and updated to reflect the contrib architecture introduced in PRD 0050 (PR #180):

  • ClaudeAgentProvider.provision_plan() in bot_bottle/contrib/claude/agent_provider.py now owns the claude.json write; success criterion #7 and the design section updated accordingly
  • Threading path made concrete: add label/color keyword params to AgentProvider.provision_plan() (ABC), ClaudeAgentProvider, and the agent_provision_plan() shim; both docker/prepare.py and smolmachines/prepare.py pass spec.label/spec.color
  • Data flow diagram updated
Closes #171. [PRD 0054](https://gitea.dideric.is/didericis/bot-bottle/src/commit/38466f5550b735d8dc3940c19bf341651018fe2f/docs/prds/0054-named-labelled-agents.md) ## Summary Renumbered from PRD 0049 (PR #172) and updated to reflect the contrib architecture introduced in PRD 0050 (PR #180): - `ClaudeAgentProvider.provision_plan()` in `bot_bottle/contrib/claude/agent_provider.py` now owns the `claude.json` write; success criterion #7 and the design section updated accordingly - Threading path made concrete: add `label`/`color` keyword params to `AgentProvider.provision_plan()` (ABC), `ClaudeAgentProvider`, and the `agent_provision_plan()` shim; both `docker/prepare.py` and `smolmachines/prepare.py` pass `spec.label`/`spec.color` - Data flow diagram updated
didericis force-pushed prd-0051-named-labelled-agents from 0cc9a0d24c to 38466f5550 2026-06-06 16:24:33 -04:00 Compare
didericis-claude changed title from PRD 0051: Named / Labelled Agents to PRD 0054: Named / Labelled Agents 2026-06-06 16:48:52 -04:00
didericis-claude changed title from PRD 0054: Named / Labelled Agents to PRD: Named / Labelled Agents 2026-06-06 22:10:43 -04:00
didericis added 4 commits 2026-06-07 12:01:20 -04:00
- Single modal with two steps (label then color) instead of
  bare text prompts dropped to terminal
- Default label is <agent_name>-<slug_suffix>; first keystroke
  replaces the pre-fill rather than appending to it
- Color step shows a navigable list with live color preview;
  (none) selected by default; Esc skips
- Modal lives in tui.py and is shared between supervisor flow
  and cmd_start

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
didericis force-pushed prd-0051-named-labelled-agents from c1926561db to 39e0976ace 2026-06-07 12:01:20 -04:00 Compare
didericis added 2 commits 2026-06-07 12:12:41 -04:00
- Dashboard no longer exists; remove all references to it
- Active agent display surface is cli list active, not a TUI pane
- Label/color rendered with ANSI escape codes in list output
- Modal called from cmd_start only, no supervisor _new_agent_flow
- Remove _format_agent_row/_color_pair_for curses design (list is
  plain text); add _ansi_color() helper design instead
- Clarify slug-suffix caveat: modal appears before prepare() mints
  the slug so default label falls back to agent_name

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat(agents): named and labelled agents with optional ANSI color
test / unit (pull_request) Successful in 32s
test / integration (pull_request) Successful in 43s
lint / lint (push) Successful in 1m32s
prd-number / assign-numbers (push) Successful in 17s
test / unit (push) Successful in 29s
Update Quality Badges / update-badges (push) Successful in 1m18s
test / integration (push) Successful in 45s
04d7ca2e6a
Chunk 1 (schema + storage): BottleSpec, ActiveAgent, and BottleMetadata
gain label and color fields. Both docker and smolmachines backends
persist them to metadata.json on prepare and surface them in
enumerate_active_agents(). AgentProvider.provision_plan() passes
label/color through to the Claude provider, which injects them into
claude.json so claude-code displays the session name and color in its
header. Codex provider accepts and ignores the knobs.

Chunk 2 (curses modal + display): cmd_start presents a two-step curses
modal — first edit the label (first keystroke replaces the pre-fill),
then optionally pick a color. cli list active renders label with ANSI
escape codes when the terminal supports it, falling back to agent_name
when no label is set.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
didericis approved these changes 2026-06-07 13:25:53 -04:00
didericis merged commit 04d7ca2e6a into main 2026-06-07 13:26:03 -04:00
didericis deleted branch prd-0051-named-labelled-agents 2026-06-07 13:26:03 -04:00
Sign in to join this conversation.