-
feat(sessions,cli,tui): issue #8 — startup agent picker (v0.3.0)
released this
2026-05-23 17:58:22 -07:00 | 263 commits to main since this releaseAdds GET /agents fetch + ListView picker for bare
--new(TUI mode
without --agent). Three in-place amendments:- ratatoskr.sessions: new
list_agents()+AgentInfofrozen
dataclass with omit-when-null/empty defaults mirroring SessionInfo's
INV-001/INV-002 origin-conditional pattern. Non-200 responses raise
the existing SessionApiFailed (no new exception). - ratatoskr.cli:
_parse_argssoftens--agentfrom absolute to
mode-conditional — required for--send --new, optional for bare
--new, forbidden with--session(unchanged INV-004). - ratatoskr.tui: new
AgentPickerApp(App[str | None])— separate
Textual App (not Screen-within-RatatoskrApp) so list_agents errors
land on real stderr before any alt-screen opens (preserves issue
#6's INV-001)._resolve_then_rungains a pre-create branch:
fetch agents → empty list → exit 13; non-200 → exit 20; network
error → exit 21; picker dismissed → exit 0; otherwise thread chosen
agent_id into create_session.
Contract: docs/contracts/issues/8.contract.md (drift-check clean).
Tests: +18 (227 total, was 209). Live smoke against personal Worldtree
(:8081) returned 12 agents; programmatic picker drive auto-picked lofn
and created a real session withend_user_id="ratatoskr-tui".Downloads
- ratatoskr.sessions: new