mirror of
https://github.com/AgentSeal/codeburn.git
synced 2026-08-06 23:24:32 +00:00
The Cline CLI (npm `cline`, 3.x) stores sessions as <sessions>/<id>/<id>.json + <id>.messages.json. The existing `cline` provider only discovers tasks/<id>/ui_messages.json, so every CLI session was silently reported as $0.00 — no warning, not even under --verbose. Adds `cline-cli` as its own provider rather than a third root on `cline`, leaving the shared Cline-family parser (Roo Code, KiloCode, IBM Bob) untouched. It mirrors the CLI's own root resolution (CLINE_SESSION_DATA_DIR -> CLINE_DATA_DIR -> CLINE_DIR -> ~/.cline), implements probeRoots() so `doctor` can tell "not installed" from "wrong override", emits one call per assistant message's `metrics` block, and falls back to the session rollup when a session carries none. The fallback reads `usage`, not `aggregateUsage`, which folds in spawned subagents that are themselves separate session directories. Two supporting changes, both required for CLI costs to report correctly: - parser.ts re-priced cline-cli calls from tokens because the provider was not on the reported-cost allowlist, inflating a real 12-session local sample from $1.11 to $3.92. - session-cache.ts gains the matching PROVIDER_ENV_VARS entry (so a changed override invalidates) and a `reported-cost-v1` parse version (so sessions cached before the allowlist fix re-parse once instead of being re-priced forever). Cost is treated as metered only when actually present and non-negative, so a metered $0 stays reported while a missing or negative cost falls back to token pricing — applied identically on the per-message and rollup paths. Timestamps promote a seconds-resolution value rather than silently landing in 1970, matching the guard kiro.ts uses. CLINE_DIR / CLINE_DATA_DIR / CLINE_SESSION_DATA_DIR are added to the test env-isolation list so a developer's real sessions cannot bleed into fixtures. The VS Code variant discovery bug reported alongside this in #874 is deliberately NOT fixed here — it shipped in #882. Verified against 18 real local sessions: 142 calls, 4,934,762 input / 224,561 output tokens, and a cost matching the CLI's own metered total to the cent. `codeburn doctor` reports "Cline CLI OK". Refs: #874 |
||
|---|---|---|
| .. | ||
| antigravity.md | ||
| claude.md | ||
| cline-cli.md | ||
| cline.md | ||
| codewhale.md | ||
| codex.md | ||
| copilot.md | ||
| crush.md | ||
| cursor-agent.md | ||
| cursor.md | ||
| devin.md | ||
| droid.md | ||
| forge.md | ||
| gemini.md | ||
| goose.md | ||
| grok.md | ||
| hermes.md | ||
| ibm-bob.md | ||
| kilo-code.md | ||
| kimi.md | ||
| kimicode.md | ||
| kiro.md | ||
| lingtai-tui.md | ||
| mistral-vibe.md | ||
| mux.md | ||
| omp.md | ||
| openclaw.md | ||
| opencode.md | ||
| pi.md | ||
| quickdesk.md | ||
| qwen.md | ||
| README.md | ||
| roo-code.md | ||
| vercel-gateway.md | ||
| vscode-cline-parser.md | ||
| warp.md | ||
| zcode.md | ||
| zed.md | ||
| zerostack.md | ||
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 |
| Cline CLI | JSON | src/providers/cline-cli.ts |
tests/providers/cline-cli.test.ts |
| CodeWhale | JSON | src/providers/codewhale.ts |
tests/providers/codewhale.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 |
| Kimi Code | JSONL | src/providers/kimicode.ts |
tests/providers/kimicode.test.ts |
| LingTai TUI | JSONL | src/providers/lingtai-tui.ts |
tests/providers/lingtai-tui.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 |
| Quick Desktop | EMF JSONL + SQLite | src/providers/quickdesk.ts |
tests/providers/quickdesk.test.ts |
| 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:
- One-line summary of what the provider integrates.
- Where it reads from on disk (or over RPC).
- Storage format and validation rules.
- Caching (which cache layer, if any).
- Deduplication key so you understand cross-provider dedup.
- Quirks that have bitten us before.
- 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/.