Skip to content

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 07 May 03:38
v0.9.0
e69ee15

Features

  • Add interleaved field to ShellOutput: stdout and stderr merged in arrival order via LinesStream::merge; primary text block now shows interleaved view; stdout and stderr remain separate in structuredContent for structured access (#742)
  • Add output_collection_error: Option<String> to ShellOutput: distinguishes post-exit drain timeout from size-based truncation (#742)
  • Emit progress notifications every 5 s for commands with timeout_secs > 10 via emit_progress() (#742)
  • Apply Content.with_priority(0.0) to all exec_command response content blocks (#742)
  • Add memory_limit_mb and cpu_limit_secs resource-control parameters to exec_command: RLIMIT_AS (Linux only, with warn on other platforms) and RLIMIT_CPU applied in the forked child via nix::sys::resource::setrlimit (#733)
  • Add top-level Tool.title field (MCP 2025-11-25) to all 10 tool annotations (#733)

Bug Fixes

  • exec_command now returns CallToolResult::error() when timed_out=true or exit_code != Some(0), complying with MCP 2025-11-25 isError semantics (#739)
  • Timeout arm now captures buffered output before kill via shared Arc<Mutex<Vec<u8>>> buffers (#739)
  • Shell selection prefers bash: APTU_SHELL env var > which::which("bash") > /bin/sh, replacing verbatim $SHELL passthrough that failed on fish/tcsh/nu (#739)
  • Post-exit drain timeout (500 ms on child.wait()) handles backgrounded processes that keep pipes open after the main process exits (#739)
  • Replace sequential stdout/stderr read_to_end with tokio::join! concurrent drain, eliminating pipe deadlocks on commands writing more than ~64 KB (#738)
  • Overflow outputs (>2000 lines) written to {temp_dir}/aptu-coder-overflow/slot-{seq%8}/{stdout,stderr}; response includes last 50 lines plus a second Content block with the overflow file path (#738)
  • Add next_start_line: Option<usize> to AnalyzeRawOutput: set to Some(end_line + 1) mid-file, null at EOF, giving models an unambiguous pagination cursor (#737)

Documentation

  • Improve all 10 MCP tool descriptions: add Returns clause, Fails if conditions, git_ref notes, and example queries; remove double-hyphens; apply caveman compression (#732)
  • Rewrite analyze_symbol tool description and import_lookup/def_use parameter docs following MCP best-practices Description Scope principle (#729)
  • Trim READMEs for low maintenance and crates.io compatibility (#743)

Tests

  • Add five handler-level integration tests for exec_command via in-process MCP JSON-RPC transport (tokio::io::duplex): structured output, timeout, invalid working dir, nonzero exit, stderr (#730)

Chores

  • Fix release workflow: replace curl with gh release download for mcp-publisher binary fetch (#728)
  • Fix release workflow: bump mcp-publisher to v1.7.8 to resolve OIDC audience mismatch (mcp-registryhttps://registry.modelcontextprotocol.io) (#727)

Full Changelog: v0.8.1...v0.9.0