Files
buzz/desktop/scripts
Matt TooheyandClaude Fable 5 f32d436daa feat(desktop): resolve bundled ACP bridge tools ahead of user installs
Register the staged ACP tools bin dir (BUZZ_ACP_TOOLS_DIR dev override,
else the resources/acp/bin Tauri resource dir) once at app setup, and
consult it everywhere bridge commands are resolved:

- New managed_agents::acp_tools module: OnceLock registration plus
  command_in_bundled_dir, which resolves bare command names only —
  path-like commands name a specific binary the user picked and are
  never redirected into the bundle (Path::join with an absolute path
  would replace the bundled dir entirely).
- resolve_command_uncached consults the bundled dir first, so the
  discovery sweep, readiness find_command, and spawn-time agent-command
  resolution (BUZZ_ACP_AGENT_COMMAND) all prefer the pinned bridges.
  Registration runs at the top of .setup() because resolutions are
  cached for the app lifetime.
- build_augmented_path gains the bundled dir as its highest-priority
  segment, covering both the agent spawn PATH and the CLI auth-probe
  PATH, and now joins entries best-effort: an entry embedding the PATH
  separator (legal in macOS paths) is dropped with a log line instead
  of collapsing the entire augmented PATH to None.

The donor's GOOSE_SEARCH_PATHS pinning is deliberately not ported —
Buzz spawns bridges via its own buzz-acp harness, which takes the
resolved command from BUZZ_ACP_AGENT_COMMAND and the augmented PATH.

The discovery.rs file-size ratchet is bumped 1171 -> 1178 for the new
sweep check; the codex version-gate retirement later in this series
shrinks the file and ratchets it back down.

Ports block/builderbot apps/staged 55eb2772 (resolve bundled ACP tools
at runtime) and afa524e7 (best-effort PATH join), themselves ports of
squareup/berd 2add3727 and bb912c96.

Verification:
- cargo test --manifest-path desktop/src-tauri/Cargo.toml --lib:
  1382 passed, 0 failed, 11 ignored (14 new tests cover env-override
  precedence, bare-name-only bundled resolution, executable checks,
  bundled-dir PATH priority, and un-joinable entry handling)
- cargo clippy --all-targets: clean; cargo fmt --check: clean

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
2026-07-15 13:40:04 +10:00
..