mirror of
https://github.com/AgentSeal/codeburn.git
synced 2026-08-31 10:06:33 +00:00
Some checks are pending
CI / semgrep (push) Waiting to run
* Add CodeBurn Pro Mac App Store app SwiftUI MenuBarExtra with litellm-snapshot pricing, Claude/Codex/Copilot parsers, session discovery, auto-refresh timer, and dashboard UI matching the real menubar design. * Add appstore/ to .gitignore Private Mac App Store build, not for the public repo. * Fix one-shot rate detection for Gemini, Vibe, Kiro, and Goose Gemini and Mistral Vibe now emit per-assistant-message calls grouped by user turn via turnId, so the classifier sees Edit->Bash->Edit as retries instead of independent one-shot turns. Kiro and Goose record per-message tool ordering via toolSequence for the same effect on aggregated sessions. Vibe now prefers meta.json.stats.session_cost over price-derived estimates. Session cache bumped to v2. Insight pill switcher scrolls horizontally instead of wrapping. Closes #351. * Remove dead geminiOrdinal variable and add toolSequence cache validation * Restore geminiOrdinal for idx fallback dedup key
45 lines
2.7 KiB
Markdown
45 lines
2.7 KiB
Markdown
# Mistral Vibe
|
|
|
|
Mistral Vibe CLI.
|
|
|
|
- **Source:** `src/providers/mistral-vibe.ts`
|
|
- **Loading:** eager (`src/providers/index.ts`)
|
|
- **Test:** `tests/providers/mistral-vibe.test.ts`
|
|
|
|
## Where it reads from
|
|
|
|
`$VIBE_HOME/logs/session/` when `VIBE_HOME` is set, otherwise `~/.vibe/logs/session/`.
|
|
|
|
## Storage format
|
|
|
|
Vibe 2.x stores each session as a directory:
|
|
|
|
- `meta.json` contains session metadata, cumulative token totals, active model config, model prices, timestamps, working directory, and available tools.
|
|
- `messages.jsonl` contains non-system messages and assistant `tool_calls`.
|
|
|
|
Subagent traces are stored under a parent session's `agents/` folder with the same `meta.json` / `messages.jsonl` shape, so CodeBurn scans those one level down as separate sessions.
|
|
|
|
## Caching
|
|
|
|
Current Vibe local logs do not expose cache-read/cache-write token fields, so
|
|
CodeBurn reports cache token counts as `0`. When `meta.json.stats.session_cost`
|
|
is present, CodeBurn uses that session total instead of re-estimating from
|
|
prompt/completion token prices because it is the best cache-aware cost signal
|
|
available in the local log shape.
|
|
|
|
## Deduplication
|
|
|
|
Per `mistral-vibe:<session_id>`.
|
|
|
|
## Quirks
|
|
|
|
- **Usage is cumulative per session.** Vibe does not write per-assistant-message token usage into `messages.jsonl`; token counts come from `meta.json.stats.session_prompt_tokens` and `session_completion_tokens`. CodeBurn splits assistant-message tools into their user turns for classification and distributes the cumulative token/cost totals across those assistant calls so session totals remain unchanged.
|
|
- **Cost prefers Vibe's own session total.** `meta.json.stats.session_cost` is used first. If it is missing, `meta.json.stats.input_price_per_million` and `output_price_per_million` are used with the active model config as a fallback. LiteLLM pricing is only used when Vibe provides no price data.
|
|
- **Project names come from metadata.** Discovery uses `meta.json.environment.working_directory` and falls back to the session directory name if that field is missing.
|
|
- **Tool calls come from messages.** Assistant `tool_calls[*].function.name` is normalized to the standard CodeBurn names (`bash` to `Bash`, `search_replace` to `Edit`, etc.). Bash commands are extracted from `function.arguments.command`.
|
|
|
|
## When fixing a bug here
|
|
|
|
1. Reproduce with a fixture that has both `meta.json` and `messages.jsonl`; both files are required for current Vibe sessions.
|
|
2. If the bug is "wrong total", check `meta.json.stats` first. `messages.jsonl` is only for prompts and tool calls.
|
|
3. If a future Vibe release adds per-turn usage, add tests before changing the one-record-per-session behavior so historical sessions continue to parse correctly.
|