OpenCode (sst/opencode).
- Source:
src/providers/opencode.ts - Loading: lazy (
src/providers/index.ts:59-75) - Test:
tests/providers/opencode.test.ts(676 lines, the largest provider test)
Default ~/.local/share/opencode/ or $XDG_DATA_HOME/opencode/. The discovery walk picks up opencode*.db files (opencode.ts:71-88).
SQLite.
None.
Per <sessionId>:<messageId>.
- Schema validation is loud. When a required table is missing, the parser logs an actionable warning telling the user which table is gone and what version of OpenCode it expects. This is the right behavior; do not silently swallow these.
- Source paths are encoded as
<dbPath>:<sessionId>. - Each message's
partsare indexed; preserving the order matters for reasoning-token correctness. - Tokens are reported across
input,output,reasoning,cache.read, andcache.write. Anthropic semantics. - External MCP tools are stored as
<server>_<tool>names (for exampleclickup_clickup_get_task). The provider normalizes those to CodeBurn's canonicalmcp__<server>__<tool>names before aggregation so shared MCP panels andoptimizefindings count OpenCode usage.
- The 558-line test suite catches a lot. Run
npm test -- tests/providers/opencode.test.tsbefore and after any change. - If the bug is "missing table" warning, do not catch and silence it. Either upgrade the version expectation in the parser or document the breaking schema change.
- If the bug is "reasoning tokens off by one", check the parts index ordering.