codeburn/docs/providers
Nihal Jain cd07707363 fix(copilot): parse JetBrains agent sessions from old plugin format (≤1.5.x)
JetBrains Copilot plugin ≤1.5.x (e.g. 1.5.59-243) stores all session turns
inside ONE large binary-framed outer Nitrite document, rather than the
per-turn {"__first__":{"type":"Subgraph",...}} blobs introduced in later
plugins (≥1.12.x, e.g. 1.12.1-251).

In the old format each assistant turn is a UUID-keyed Value entry whose
value field contains a JSON-string-escaped AgentRound record:

  {"<uuid>":{"type":"Value","value":"{\"type\":\"AgentRound\",
    \"data\":\"{...reply...}\"}"}, ...}

The extractResponseText depth-unescape loop already handles this one extra
level of escaping; the only gap was that extractJetBrainsDbTurns never fed
it the outer document — it only scanned for __first__/Subgraph blobs, which
the old plugin never writes.

Add a fallback that activates when the Subgraph scan produces zero turns but
'AgentRound' text is present in the raw file (old-format signal). It locates
the binary-framed outer document (UUID-keyed Value entry, hex matched
case-insensitively so an uppercase UUID does not fall through to $0), extracts
it with matchJsonObject, and passes it to extractResponseText. Because the outer
document holds every turn in one blob, this emits ONE session-level call per
document (all rounds' replies joined): cost/tokens are correct, only the
per-turn call-count granularity is coarser — an accepted tradeoff for legacy
data. MVStore keeps two identical collection copies; seenReplies dedupes them.

The fallback is guarded by turns.length === 0 so new-format sessions (whose
Subgraph scan succeeds) are completely unaffected and never double-counted.

Tests: old-format doc with multiple AgentRound rounds → 1 call whose token
count equals the two non-empty replies joined (the empty tool-call round is
excluded); an uppercase-UUID variant (fails without the case-insensitive
match); and a guard that new-format Subgraph turns are not double-counted.
docs/providers/copilot.md documents the old format and the one-call-per-session
limitation.
2026-07-03 18:21:08 +05:30
..
antigravity.md feat(antigravity-ide): added support for antigravity IDE (#418) 2026-06-09 22:12:01 +02:00
claude.md Fix Claude 1-hour cache write pricing (#317) 2026-05-11 21:23:04 -07:00
cline.md Add Cline provider 2026-05-12 00:31:41 +03:00
codex.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
copilot.md fix(copilot): parse JetBrains agent sessions from old plugin format (≤1.5.x) 2026-07-03 18:21:08 +05:30
crush.md Add Crush provider plus per-provider icon column in README (#286) 2026-05-09 20:47:56 -07:00
cursor-agent.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
cursor.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
devin.md fix(devin): add missing support for ATIF v1.7 (#570) 2026-06-28 19:00:51 +02:00
droid.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
forge.md feat(providers): add forge provider support (#401) 2026-05-26 03:36:57 -07:00
gemini.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
goose.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
grok.md feat(providers): add Grok Build provider (#521) 2026-06-19 17:21:41 +02:00
hermes.md feat: add Hermes Agent provider 2026-06-21 23:29:22 +02:00
ibm-bob.md Add IBM Bob provider with workspace extraction (#316) 2026-05-11 20:54:13 -07:00
kilo-code.md Add Cline provider 2026-05-12 00:31:41 +03:00
kimi.md Add Kimi provider 2026-05-11 19:02:28 +03:00
kiro.md Fix Kiro post-February storage discovery (#339) 2026-05-24 02:25:09 -07:00
mistral-vibe.md Fix one-shot rate detection for all non-Claude providers (#355) 2026-05-18 15:56:14 -07:00
mux.md feat(providers): add coder/mux as a datasource (#438) 2026-06-06 03:04:24 +02:00
omp.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
openclaw.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
opencode.md Keep OpenCode router calls without usage (#342) 2026-05-18 16:48:03 -07:00
pi.md fix(pi): classify native skill loads as Skill, not Read (#588) (#590) 2026-07-01 15:57:31 +02:00
qwen.md Add CONTRIBUTING.md, docs/architecture.md, and per-provider docs (#284) 2026-05-09 18:39:41 -07:00
README.md feat(copilot): track GitHub Copilot JetBrains IDE usage 2026-07-03 16:11:27 +05:30
roo-code.md Add Cline provider 2026-05-12 00:31:41 +03:00
vercel-gateway.md fix(cursor): period-aligned lookback; add Vercel AI Gateway provider (#432) 2026-06-09 23:01:43 +02:00
vscode-cline-parser.md Merge main into feat/cline-provider to resolve conflicts 2026-05-16 05:58:10 -07:00
warp.md feat: add Warp provider adapter (#350) 2026-05-21 00:19:53 -07:00
zcode.md feat(providers): add ZCode (z.ai GLM-5.2) usage provider (#537) 2026-06-20 21:37:32 +02:00
zed.md release: 0.9.15 2026-07-02 06:19:14 +02:00
zerostack.md Add zerostack provider (#519) 2026-06-19 14:44:45 +02:00

Provider Docs

One file per provider integration. If you are fixing a bug or adding a feature scoped to a single provider, read the file for that provider first; it tells you which file to edit, where on disk the source data lives, and what edge cases the test suite already covers.

For the architectural picture, see ../architecture.md.

Provider Index

Eager (always loaded)

Provider Storage Source Test
Claude JSONL (no parser) src/providers/claude.ts none (covered indirectly)
Cline JSON src/providers/cline.ts tests/providers/cline.test.ts
Codex JSONL src/providers/codex.ts tests/providers/codex.test.ts
Copilot JSONL + SQLite (OTel) + Nitrite .db (JetBrains) src/providers/copilot.ts tests/providers/copilot.test.ts
Devin JSON + SQLite enrichment src/providers/devin.ts tests/providers/devin.test.ts
Droid JSONL src/providers/droid.ts tests/providers/droid.test.ts
Gemini JSON / JSONL src/providers/gemini.ts none
Hermes Agent SQLite src/providers/hermes.ts tests/providers/hermes.test.ts
IBM Bob JSON src/providers/ibm-bob.ts tests/providers/ibm-bob.test.ts
KiloCode JSON src/providers/kilo-code.ts tests/providers/kilo-code.test.ts
Kiro JSON src/providers/kiro.ts tests/providers/kiro.test.ts
Kimi JSONL src/providers/kimi.ts tests/providers/kimi.test.ts
Mistral Vibe JSON / JSONL src/providers/mistral-vibe.ts tests/providers/mistral-vibe.test.ts
OpenClaw JSONL src/providers/openclaw.ts tests/providers/openclaw.test.ts
Pi JSONL src/providers/pi.ts tests/providers/pi.test.ts
OMP JSONL src/providers/pi.ts tests/providers/omp.test.ts
Qwen JSONL src/providers/qwen.ts none
Roo Code JSON src/providers/roo-code.ts tests/providers/roo-code.test.ts
Zerostack JSON src/providers/zerostack.ts tests/providers/zerostack.test.ts
Grok Build JSON/JSONL src/providers/grok.ts tests/providers/grok.test.ts

Lazy (loaded on first call)

Provider Storage Source Test
Antigravity protobuf over RPC src/providers/antigravity.ts none
Crush SQLite (per-project) src/providers/crush.ts tests/providers/crush.test.ts
Forge SQLite src/providers/forge.ts tests/providers/forge.test.ts
Cursor SQLite src/providers/cursor.ts tests/providers/cursor.test.ts
Cursor Agent text / JSONL src/providers/cursor-agent.ts tests/providers/cursor-agent.test.ts
Goose SQLite src/providers/goose.ts none
OpenCode SQLite src/providers/opencode.ts tests/providers/opencode.test.ts
Warp SQLite src/providers/warp.ts tests/providers/warp.test.ts
Vercel AI Gateway REST API src/providers/vercel-gateway.ts tests/providers/vercel-gateway.test.ts
ZCode SQLite src/providers/zcode.ts tests/providers/zcode.test.ts

Shared

Helper Used by Source
vscode-cline-parser cline, ibm-bob, kilo-code, roo-code src/providers/vscode-cline-parser.ts

File Format

Each provider doc has the same structure:

  1. One-line summary of what the provider integrates.
  2. Where it reads from on disk (or over RPC).
  3. Storage format and validation rules.
  4. Caching (which cache layer, if any).
  5. Deduplication key so you understand cross-provider dedup.
  6. Quirks that have bitten us before.
  7. When fixing a bug here as a checklist.

If you add a new provider, copy claude.md as a template and fill in your provider's specifics. Update this index, and prefer adding a real test fixture under tests/providers/.