Skip to content

feat: agent pool for dynamic persona swarm#48

Open
robinojw wants to merge 41 commits intomainfrom
feat/agent-pool
Open

feat: agent pool for dynamic persona swarm#48
robinojw wants to merge 41 commits intomainfrom
feat/agent-pool

Conversation

@robinojw
Copy link
Copy Markdown
Owner

@robinojw robinojw commented Mar 19, 2026

Summary

  • Adds roster system (internal/roster/) to load persona definitions from .roster/personas/*.md YAML frontmatter files and repo signals from signals.json
  • Adds orchestrator command parser (internal/orchestrator/) that extracts dj-command JSON blocks from streaming agent deltas for spawn/message/complete actions
  • Adds agent pool (internal/pool/) to manage multiple concurrent Codex agent processes with spawn, stop, lookup by thread ID, and orchestrator detection
  • Adds pool configuration to internal/config/ with roster path, auto-orchestrate toggle, and max agent count
  • Integrates pool into the TUI layer: persona-colored cards with badges, orchestrator thick borders, swarm hints in header/statusbar, pool event multiplexing with command parsing, and p/m/s/K keybindings for swarm control
  • Updates main startup (cmd/dj/main.go) to load roster and create an agent pool when personas are available, falling back to single-client mode otherwise
  • Adds swarm interaction UI: InputBarModel for text entry, persona picker menu, agent picker for messaging, canvas swarm filter, and menu intent routing for multi-purpose menus

New packages

Package Purpose
internal/roster/ Persona definition types + YAML/JSON file loaders
internal/orchestrator/ dj-command fenced block parser for streaming deltas
internal/pool/ AgentPool managing multiple AgentProcess instances

Swarm interaction UI (new in this update)

Component File(s) Description
InputBarModel inputbar.go Single-line text input with cursor, replaces status bar when active
Menu intent routing msgs.go, app_menu.go MenuIntent enum distinguishes persona picker, agent picker, and thread context menu
Persona picker app_swarm.go p key opens persona menu → input bar for task entry → spawns agent
Agent picker app_swarm.go m key opens agent menu → input bar for message → sends to agent
Swarm filter canvas.go s key toggles canvas to show only agent threads
Input bar keys app_inputbar.go Captures typing, backspace, Esc dismiss, Enter submit with intent dispatch

Test plan

  • All 28 tasks implemented with TDD (test-first for each component)
  • go test ./... -v -race — all pass
  • golangci-lint run — 0 issues
  • go build -o dj ./cmd/dj — builds successfully
  • Manual verification with Codex CLI for end-to-end persona spawning

robinojw added 30 commits March 19, 2026 10:17
Design for DJ to manage multiple concurrent Codex processes, each
typed with a roster persona. Covers orchestrator bridge, command
parsing, cross-agent communication, and dynamic mid-session spawning.
18-task TDD plan covering roster loader, command parser, agent pool,
pool event multiplexing, persona-aware UI, and startup integration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant