codeburn/docs/providers/goose.md
Resham Joshi 6746ecc22f
Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284)
Document the contributor onboarding path:
- CONTRIBUTING.md: setup, npm scripts, coding conventions, PR process,
  the block-claude-coauthor enforcement, and the five providers without
  test coverage today (claude, gemini, goose, qwen, antigravity).
- docs/architecture.md: 12-command CLI surface, parser pipeline, three
  cache layers, 14 optimize detectors, and the mac / gnome / build
  layouts with cited line numbers.
- docs/providers/: one file per provider (17 providers plus the shared
  vscode-cline-parser helper). Each covers data path, storage format,
  caching, dedup key, quirks, and a "when fixing a bug here" checklist.

Also fix two pre-existing documentation issues surfaced while writing
the new docs:
- RELEASING.md claimed GitHub Actions auto-publishes the CLI when a
  v* tag is pushed. There is no such workflow; CLI publishing is
  manual via npm publish. Updated the CLI section to reflect reality
  and kept the menubar (mac-v* tag) automation accurate.
- .gitignore had CLAUDE.md unanchored, which on case-insensitive
  filesystems also matched docs/providers/claude.md. Anchored to
  /CLAUDE.md so the root-level memory file stays ignored without
  affecting subdirectory docs.

All cited file paths, line numbers, function names, and test counts
were verified against current code (41 test files, 558 tests passing).
2026-05-09 18:39:41 -07:00

1.5 KiB

Goose

Block's Goose CLI.

  • Source: src/providers/goose.ts
  • Loading: lazy (src/providers/index.ts:29-42)
  • Test: none. Adding a fixture-based test is a known good first issue.

Where it reads from

A SQLite database. Path resolution honors XDG_DATA_HOME and a GOOSE_PATH_ROOT override:

Platform Default path
macOS / Linux ~/.local/share/goose/sessions/sessions.db
Windows %APPDATA%/Block/goose/sessions/sessions.db

See goose.ts:52-62.

Storage format

SQLite.

Caching

None.

Deduplication

Per sessionId (goose.ts:174).

Quirks

  • Source paths are encoded as <dbPath>:<sessionId> so a single db can yield many session sources. The discovery code splits on the last colon (goose.ts:148-150).
  • Tool inventory comes from the messages table queried with LIKE '%toolRequest%' (goose.ts:90). This will miss tools whose payloads are encoded differently in a future Goose version.
  • Tokens are read directly from accumulated_input_tokens and accumulated_output_tokens. No estimation.

When fixing a bug here

  1. Add a fixture-based test before changing logic. tests/providers/goose.test.ts does not exist yet; create it and use a small SQLite file under tests/fixtures/goose/.
  2. If the bug is "no sessions", check XDG_DATA_HOME and GOOSE_PATH_ROOT first; users on non-default Linux setups will not match the default path.
  3. The LIKE '%toolRequest%' query is fragile. If Goose changes the message envelope, this is where it will break.