Repository navigation
v0.9.28
Highlights
- Intercept targets reworked into a TOML virtual file edited via
$EDITORfrom the CLI (#195). - New MCP
session_listtool for enumerating active ACP sessions on a node (#192). - Orchestrator UI fixes — tool-call failures now render with the ✗ indicator and tool input is shown in the expanded view (#196).
- Node/tiny_c session-routing fix — semantic ops no longer hang on the 600s timeout (#194).
MCP Server
session_list(#192) — new tool that enumerates active ACP sessions on a node, returning each session's id (full + short), title, and cwd. Pairs naturally withsession_prompt/session_close.
Intercept Targets — TOML virtual file (#195)
The set of intercept targets is now stored as a single TOML document on the service (one [section] per target, keyed by agent_short_name) and edited via $EDITOR from the CLI rather than a per-target form. Commenting out a section disables it; a reset action restores the shipped defaults.
- Storage — moved to a single
service_configkey (intercept_targets_toml). A migration converts any existing per-row entries into the new file, preserving disabled flags as commented-out sections and emitting a trailing# was: <old display name>comment when the converted row's old name differed from its short_name. - Service — new
intercept_targetsmodule owning the default TOML asset and parser. The legacy per-row table is dropped. - Common — dropped
InterceptTargetInfoand the per-row CRUD message variants; addedInterceptTargetsGet/Set/ResetDefaultsand a combinedInterceptTargetsStateresponse. Dropped the now-unusedidfromInterceptTargetConfig. - CLI — settings tab now shows the parsed list and offers two actions: edit the raw TOML in
$EDITOR, or reset to defaults. Parse errors are surfaced inline. Target rows are non-selectable; domains are shown inline next to each target. Action rows pick up icons matching the Agents tab (✎ edit, ↻ reset). namefield dropped — the section header (agentshort_name) doubles as routing key and display label; the parser auto-populatesInterceptTargetConfig.namefrom the section header for downstream code that printstarget.name.- Docs — rewrote the intercept-target sections in
usage/interception.mdandconnectors/adding-new.md.
Node Runtime
node/tiny_c: route session/prompt updates and final response to the requestingclient_id(#194).handle_session_newhad captured the originating client_id on the session struct, so everysession/updatenotification and thesession/promptresponse went back to thesession/newcaller. The service uses a freshsvc_<uuid>client_id per ACP request, so itspending_internalmap (keyed on(client_id, request_id)) never matched and semantic operations hung until the 600s timeout. The current request's client_id is now threaded throughprompt_argsandstream_ctx, and passed tosend_agent_chunk/emit_tool_call/emit_tool_result/acp_send_response. The unusedclient_idslot on the session struct is removed.- Strip log output from release builds of
tiny_c— allINFO/WARN/ERROR/DEBUGmacros expand to a never-taken branch and--gc-sectionsdropslog_msgand the level strings entirely. Release builds write nothing to stdout/stderr.
CLI / Orchestrator
- Surface tool-call failures in the orchestrator display (#196). An
is_errorflag is now threaded throughsession_update_tool_result, so MCP errors, transport failures, andstatus: "error"payloads from local/MCP tool wrappers render with the ✗ indicator and error styling.raw_inputis populated on the ACPToolCallso the CLI'sinblock has data in the expanded entry. - Restore mouse capture after
$EDITORreturns — all three CLI$EDITORlaunch sites (intercept targets, agent scripts, praxis agent system prompt) now disable mouse capture alongsideLeaveAlternateScreenand re-enable it on return. Previously the alt-screen and raw mode came back but the mouse-capture escape sequence was lost, breaking TUI mouse input for the rest of the session.
Docs
- Documented the new MCP
session_listtool inusage/mcp.md. - Rewrote the intercept-target sections in
usage/interception.mdandconnectors/adding-new.md.
Upgrade Notes
- Intercept-target migration runs automatically on first service start. Any existing rows are converted into the new TOML file; disabled rows become commented-out sections.
- The AUR package is updated automatically by CI on each release.
Full changelog: v0.9.27...v0.9.28