Skip to content

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 07 May 18:37
v0.10.0
20acff6

Features

  • Add session-scoped tool profiles via initialize hint: clients that pass "io.clouatre-labs/profile" in initialize._meta receive only the tools for that profile (edit: 4 tools, analyze: 6 tools); absent or unknown profile falls back to all 10 tools unchanged; reduces schema tokens by up to 87% per turn (#751)
  • Extend edit_rename from single-file to cross-file scope: when path is a directory, the tool walks the entire tree and applies the AST-aware rename to every file where old_name appears as a syntactic identifier, returning per-file files_changed and errors; single-file behavior and output schema are unchanged (#757)
  • Add stdin parameter to exec_command: optional UTF-8 content piped into the child process without shell escaping; enforces a 1 MB cap (STDIN_MAX_BYTES) before spawn; Stdio::null() is now set explicitly when stdin is None, fixing a pre-existing bug where the child inherited the MCP transport pipe as its stdin descriptor (#756)
  • Fix edit_rename ToolAnnotations per MCP 2025-11-25 spec: destructive_hint corrected to false (rename is reversible, no data loss), idempotent_hint corrected to true (renaming X to Y when Y already exists leaves the file unchanged) (#754)

Bug Fixes

  • Remove hardcoded 30s default timeout from exec_command: timeout_secs now defaults to None (no timeout); callers that need a bound pass it explicitly; eliminates the race with goose's MCP client deadline that killed the transport on long-running commands such as cargo build or git fetch (#755)
  • Switch edit_overwrite and edit_replace to atomic temp-file-plus-rename writes via NamedTempFile::new_in(path.parent()): a crash or signal mid-write no longer leaves the target file in a corrupt intermediate state (#752)

Documentation

  • Remove stale kind parameter clause from edit_rename tool description (#753)

Tests

  • Add 5 profile integration tests (test_edit_profile_tool_count, test_analyze_profile_tool_count, test_no_profile_tool_count, test_unknown_profile_tool_count, test_disabled_tool_returns_invalid_params) using a full duplex JSON-RPC harness (#751)
  • Add 2 directory-scope edit_rename integration tests (test_edit_rename_directory_multi_file, test_edit_rename_directory_partial_failure) (#757)
  • Add 3 exec_command stdin tests (test_exec_stdin_cat_roundtrip, test_exec_stdin_none_no_regression, test_exec_stdin_size_cap_validation) (#756)

Full Changelog: v0.9.0...v0.10.0