Commit Graph

2 Commits

  • [codex] default unknown contributed tools to mutating (#22143)
    ## Summary
    - make the shared `ToolExecutor::is_mutating` default conservative by
    returning `true`
    - update the trait docs to say read-only tools should opt out explicitly
    - add a regression test covering the default behavior
    
    ## Why
    Hosts use this signal for serialization and approval policy. Treating
    unknown contributed tools as read-only lets a write-capable tool
    accidentally bypass mutating-tool safeguards if it forgets to override
    the hook.
    
    ## Validation
    - not run, per request
  • refactor: extract executable tool contracts into codex-tool-api (#22138)
    ## Why
    The tool-extraction work needs one shared executable-tool seam that
    hosts and tool owners can depend on without reaching into `codex-core`.
    Landing that seam first makes the later tool-family ports incremental
    and keeps the reusable contract separate from any one migration.
    
    ## What changed
    - add a new `codex-tool-api` crate and workspace wiring
    - move the common executable-tool contracts into that crate:
    `ToolBundle`, `ToolDefinition`, `ToolExecutor`, `ToolCall`, `ToolInput`,
    `ToolOutput`, `JsonToolOutput`, and `ToolError`
    - keep host state generic through `ToolBundle<C>` / `ToolCall<C>` so
    later integrations can provide their own runtime context without baking
    core types into the API
    - carry the host signals the runtime will need later, including
    parallel-call support and mutability probing
    - leave existing tool families in place for now; this PR only
    establishes the reusable API surface
    - add the Bazel target and lockfile updates for the new crate
    
    ## Testing
    - `cargo test -p codex-tool-api`