Commit Graph

3 Commits

  • Unified execution (#3288)
    ## Unified PTY-Based Exec Tool
    
    Note: this requires to have this flag in the config:
    `use_experimental_unified_exec_tool=true`
    
    - Adds a PTY-backed interactive exec feature (“unified_exec”) with
    session reuse via
      session_id, bounded output (128 KiB), and timeout clamping (≤ 60 s).
    - Protocol: introduces ResponseItem::UnifiedExec { session_id,
    arguments, timeout_ms }.
    - Tools: exposes unified_exec as a function tool (Responses API);
    excluded from Chat
      Completions payload while still supported in tool lists.
    - Path handling: resolves commands via PATH (or explicit paths), with
    UTF‑8/newline‑aware
      truncation (truncate_middle).
    - Tests: cover command parsing, path resolution, session
    persistence/cleanup, multi‑session
      isolation, timeouts, and truncation behavior.
  • fix: Scope ExecSessionManager to Session instead of using global singleton (#2664)
    The `SessionManager` in `exec_command` owns a number of
    `ExecCommandSession` objects where `ExecCommandSession` has a
    non-trivial implementation of `Drop`, so we want to be able to drop an
    individual `SessionManager` to help ensure things get cleaned up in a
    timely fashion. To that end, we should have one `SessionManager` per
    session rather than one global one for the lifetime of the CLI process.