2.7 KiB
2.7 KiB
| title | phase | priority | status | area |
|---|---|---|---|---|
| Itinerary System | 3.0 | 🟡 Medium | landed | Tools / TUI |
Itinerary System
Description
An itinerary is an ordered sequence of stops — the agent's route through the current work. Each stop optionally links to a todo commitment by ID; linked stops inherit the todo's nature/energy for display in the header strip. The itinerary is not a task list — it's the active face of whatever the agent is doing right now.
Persisted to system/dynamic/itinerary.md in the agent's memfs (same volatile zone as energy balance, context pressure). Agent-controlled via itinerary tool (set / advance / describe / clear). "Cancel" and "stop" signals from the user during a long tool loop trigger a mid-turn subconscious checkpoint that can HALT the loop.
What Landed
src/core/tools/itinerary.rs—ItineraryTool,Itinerary,Stop,StopStatusdata types, YAML frontmatter persistence, todo enrichment (reads nature/energy from linkedtasks/{id}.md),route_line()for compact strip displaysrc/server/turn.rs— emitsBackendEvent::Itinerary(route_line)on itinerary tool calls so the TUI picks it upsrc/ui/chat/mod.rs—itinerary_linefield onChatStatesrc/ui/chat/render.rs— header strip showing⟡ title · ✓ stop ● stop ○ stopwith nature/energy glyphssrc/ui/chat/events.rs—BackendEvent::Itinerary→ updatesitinerary_linesrc/ui/component.rs—TuiEvent::ItineraryChangedfor future component integrationsrc/ui/app/mod.rs— dispatchesItineraryChangedfrom consciousness eventssrc/backend/mod.rs—BackendEvent::Itinerary(String)variantsrc/core/tools/todo.rs— cross-reference in description pointing toitinerarysrc/core/prompt.rs— when live todos exist without an active itinerary, injects: "I have N live commitments — I could useitineraryto lay them out..."
Agent Commands
itinerary set title:<str> stops:[{name, description?, todo_id?}]— lay out a new routeitinerary advance [todo_id:<str>]— mark current stop done, move to next; optionally auto-complete linked todoitinerary describe— read back the route with nature/energy detailsitinerary clear— dismiss the itinerary (does NOT touch linked todos)
Files Changed
18 files touched across the implementation.
Remaining
- Persistent UI element: the Panel now renders the itinerary as a dedicated
status ribbon above chat input. Its living contract and remaining glass proof
are in
souveraine/saf/surface/04-agent-pane.md; the former task is archived. - Auto-advance detection: watch for tool patterns or commits that naturally complete a stop
- Cross-session restore: read itinerary.md at startup and re-render the strip