• v0.3.0 d30be12deb

    feat(sessions,cli,tui): issue #8 — startup agent picker (v0.3.0)

    vh released this 2026-05-23 17:58:22 -07:00 | 263 commits to main since this release

    Adds GET /agents fetch + ListView picker for bare --new (TUI mode
    without --agent). Three in-place amendments:

    • ratatoskr.sessions: new list_agents() + AgentInfo frozen
      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_args softens --agent from 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_run gains 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 with end_user_id="ratatoskr-tui".

    Downloads