Files
buzz/desktop/scripts
Matt TooheyandClaude Fable 5 f60138463f refactor(desktop): retire dead install-gate, npm-preflight, and codex drift machinery
Since the bundling series emptied every runtime's
adapter_install_commands, three pieces of machinery in the earlier
cleanup plan were dead code. Delete them, and fix the Phase-3 install
verification hint that the emptying broke for goose:

- node_required install gate: runtime_needs_npm was constant false, so
  the node_required computation never fired and Doctor's amber
  "Node.js is required to install this adapter" callout could never
  render. Deleted the trigger (discovery.rs), the wire field (types.rs,
  tauri.ts, types.ts), the callout component + the nodeRequired half of
  the Install-button gate (DoctorSettingsPanel.tsx), and the fixture
  fields (e2eBridge.ts, agentReadiness.test.mjs, doctor-states.spec.ts).
  E2e test 04-node-required force-fed the retired state and is deleted;
  the bundled bridges' real Node.js requirement bites at spawn, not
  install, and is covered by the node-runtime Doctor section
  (07-node-runtime-warn). The cleanup plan's per-row spawn-time callout
  derived from nodeRuntimeCheck remains open as a follow-up.

- npm preflight/EACCES machinery: Phase 2 of
  install_acp_runtime_blocking applied npm handling only to
  adapter_install_commands — empty everywhere. Deleted
  is_npm_global_install (+7 tests), npm_eacces_hint/npm_eacces_guidance/
  NPM_MISSING_HINT (+5 tests), npm_preflight_check/resolve_npm_prefix/
  npm_install_target_is_writable/unix_is_writable (+3 tests), the
  Phase-2 npm branches, and the stale Phase-1 preflight note.

- codex adapter-availability drift stamp: built to catch a manual npm
  install/downgrade flipping the adapter under a running agent —
  impossible now that bare-name resolution prefers the bundle. Deleted
  the cache + availability_drift predicate (+5 tests), the codex-only
  discovery warm, the spawn-time stamp, the availability_drift half of
  needs_restart (hash_drift stays), and the ManagedAgentProcess field
  with its finish_spawn plumbing.

Goose verify hint fix: adapter_verification_step received
bundled = adapter_install_commands.is_empty(), now true for all four
runtimes — a goose curl install that succeeded but left `goose`
unresolvable claimed "The Goose ACP adapter ships with the Buzz desktop
app… Reinstall Buzz", wrong on both counts. The new
runtime_adapter_is_bundled seam requires cli_install_commands AND
adapter_install_commands to be empty (goose has a curl CLI installer;
claude/codex/buzz-agent have neither), with catalog-driven tests
pinning goose to the check-the-step-output hint. That hint also drops
its "and your npm global prefix" tail — no npm-installed adapters
remain in the catalog.

File-size ledger ratcheted down to bank the deletions:
agent_discovery.rs 1410 -> 1021, discovery.rs 1147 -> 1046,
runtime.rs 2216 -> 2079, tauri.ts 1342 -> 1340, types.ts 1066 -> 1064.

Covers sections 1 and 3 of the post-bundling cleanup note; the
adapter_missing retirement (section 2) and copy/fixture staleness
(section 4) are separate follow-ups.

Verification:
- cargo test --lib (desktop/src-tauri): 1423 passed, 0 failed
  (1436 at head - 15 deleted npm/drift tests + 2 new bundled-flag tests)
- cargo clippy --lib --tests -D warnings: clean; cargo fmt --check: clean
- tsc --noEmit: clean; biome: no new diagnostics
- pnpm test (desktop): 2792 passed, 0 failed
- playwright doctor-states.spec.ts: 8 passed;
  doctor-cta-screenshots.spec.ts: 3 passed
- node scripts/check-file-sizes.mjs + check-px-text.mjs: pass

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