Files
buzz/desktop
Michael Neale 1f6b75a7dc refactor(buzz-agent): swap the agent loop onto the goose library
buzz-agent keeps its name, its binary, its ACP contract and its place in the
workspace. Only the guts change: ~11k lines of hand-written agent loop are
replaced by the goose crate used as a Rust library.

Deleted, now goose's: llm.rs 3846 (providers), mcp.rs 1139 (extension manager),
hints.rs 726, builtin.rs 575 (skills), handoff.rs 430 (context_mgmt), plus most
of config.rs 2709. Kept: wire.rs verbatim, and the parts goose does not know
about -- the exact session/update shapes buzz-acp parses, the keepalive ticker,
usage_update ordering, activeRunId, and the error taxonomy.

Behaviour preserved, each with an end-to-end stdio test: the Fizz persona (the
reason for embedding -- goose's own ACP server never reads systemPrompt, so
this only works via the library API), the _Stop end-turn veto, _PostCompact
re-injection, [Reflect] on failed tool calls, the model catalog, set_model,
cancel and steer. Validated against the real buzz-dev-mcp, not just a fake.

Two dependency conflicts had to be solved to get goose into the workspace:

1. goose pins icu_locale "=2.1.1" (needs icu_collections ~2.1.1) while
   url 2.5.x -> idna -> idna_adapter 1.2.2 pulls icu_normalizer 2.2.0 (needs
   icu_collections ~2.2.0). Only one 2.x icu_collections can be selected.
   Fixed by pinning idna_adapter "=1.2.0", the last release on ICU4X 1.x,
   which keeps IDNA off that line entirely.

2. The desktop could no longer link buzz-agent at all: goose pulls
   sqlx-sqlite -> libsqlite3-sys 0.30, desktop has rusqlite 0.37 ->
   libsqlite3-sys 0.35, and both declare links = "sqlite3". Cargo forbids
   that and no pin resolves it. But the desktop only ever used Databricks
   model discovery and WINDOWS_SHELL_RESOLUTION_ENV, so those moved to a new
   buzz-model-catalog crate (no goose, no sqlite, same API). The desktop
   dependency is renamed in place, so no desktop source changes.

Also fixes a test that had been silently skipping: real_dev_mcp.rs located
buzz-dev-mcp by a hardcoded parent depth, so after the move it returned early
and reported 0.00s. It now searches upward and panics on a miss.

Workspace, sprig, and desktop all build. 41 tests green, fmt + clippy clean.

Signed-off-by: Michael Neale <michael.neale@gmail.com>
2026-07-27 17:28:16 +10:00
..
…

Buzz

Desktop chat shell with:

  • Tauri + React + TypeScript + Vite
  • Tailwind CSS
  • shadcn/ui-ready shared components
  • Biome (lint/format/check)
  • Feature-driven frontend structure

Scripts

  • pnpm dev - run the web frontend
  • pnpm tauri dev - run the desktop app
  • pnpm build - typecheck and build frontend
  • pnpm typecheck - TypeScript checks
  • pnpm lint - Biome lint
  • pnpm format - Biome format (write)
  • pnpm check - Biome check

Structure

  • src/shared - reusable app-wide code (ui, lib, styles)
  • src/features - feature modules (vertical slices)
  • src/app - top-level app composition