Skip to content

v0.9.28

Choose a tag to compare

@depletionmode depletionmode released this 11 May 07:57
· 21 commits to main since this release
1db6f2a

Highlights

  • Intercept targets reworked into a TOML virtual file edited via $EDITOR from the CLI (#195).
  • New MCP session_list tool 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 with session_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_config key (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_targets module owning the default TOML asset and parser. The legacy per-row table is dropped.
  • Common — dropped InterceptTargetInfo and the per-row CRUD message variants; added InterceptTargetsGet/Set/ResetDefaults and a combined InterceptTargetsState response. Dropped the now-unused id from InterceptTargetConfig.
  • 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).
  • name field dropped — the section header (agent short_name) doubles as routing key and display label; the parser auto-populates InterceptTargetConfig.name from the section header for downstream code that prints target.name.
  • Docs — rewrote the intercept-target sections in usage/interception.md and connectors/adding-new.md.

Node Runtime

  • node/tiny_c: route session/prompt updates and final response to the requesting client_id (#194). handle_session_new had captured the originating client_id on the session struct, so every session/update notification and the session/prompt response went back to the session/new caller. The service uses a fresh svc_<uuid> client_id per ACP request, so its pending_internal map (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 through prompt_args and stream_ctx, and passed to send_agent_chunk / emit_tool_call / emit_tool_result / acp_send_response. The unused client_id slot on the session struct is removed.
  • Strip log output from release builds of tiny_c — all INFO/WARN/ERROR/DEBUG macros expand to a never-taken branch and --gc-sections drops log_msg and the level strings entirely. Release builds write nothing to stdout/stderr.

CLI / Orchestrator

  • Surface tool-call failures in the orchestrator display (#196). An is_error flag is now threaded through session_update_tool_result, so MCP errors, transport failures, and status: "error" payloads from local/MCP tool wrappers render with the ✗ indicator and error styling. raw_input is populated on the ACP ToolCall so the CLI's in block has data in the expanded entry.
  • Restore mouse capture after $EDITOR returns — all three CLI $EDITOR launch sites (intercept targets, agent scripts, praxis agent system prompt) now disable mouse capture alongside LeaveAlternateScreen and 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_list tool in usage/mcp.md.
  • Rewrote the intercept-target sections in usage/interception.md and connectors/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