Repository navigation
v0.2.14
Slash commands, everywhere they should have been.
Bare agentpit on a TTY opens the TUI, and the TUI had no slash-command system: three literal string comparisons in its Enter handler, everything else forwarded as a conversational turn. Typing /help there cost a real backend call. This release gives both interactive surfaces one registry, the completion UI each can support, and two extension sources on top.
One registry, two surfaces
Name, aliases, usage forms, category, per-surface availability and whether a command can reach a backend now live in one table. The TUI gets a dropdown: / on an empty line opens a filtered popup above the input, ↑↓ select, Enter/Tab accept, Esc dismisses. rustyline cannot render an arrow-selectable popup, so the line REPL gets Tab completion and inline hints over the same registry.
13 more commands
/rescue /refactor /explain /security-review /adversarial-review /learning /arena /profile /similarity /outcome /sessions /doctor /diagnose — each wired to its real CLI signature and offered only where it can honestly run. /outcome is reachable from the TUI, since it attaches the verdict the learned router weights above every other evidence source.
Extensions: SKILL.md and MCP
SKILL.md files under .claude/skills — both the flat and the directory layout, project scope before user — become slash commands. A skill runs as one composed conversational turn, not a subprocess, which is what makes it work on backends that have no skill mechanism of their own.
MCP servers contribute their prompts as /<server>:<prompt> (prompts are the user-initiated primitive; tools are for models). Server definitions come from agentpit's own [mcp.servers] and the project's .mcp.json; agentpit mcp import pulls them out of ~/.claude.json once. Nothing is spawned at startup — /mcp list reads a cache, and only /mcp refresh starts a server.
Two typo bugs fixed
Neither surface honored the rule its own comment claimed. The TUI turned an unknown /word into a backend turn, and the REPL fell through to free-text dispatch, so /frobnicate and a bare /branch were billable calls. Both now refuse with a suggestion.
Rules the extension layer holds to
- An extension can never shadow a built-in —
/reviewstays agentpit's. - Text read off disk is stripped of ANSI/control sequences before it reaches a popup.
- Every composed turn announces its provenance — name, size, source — before it is sent.