Kimi Code wire.jsonl -> Vec.
Targets quorum’s usage.record rows (full input/cache fidelity + model), not
agentsview’s lower-fidelity StatusUpdate path. Prefer usageScope:"turn" rows;
fall back to the latest session row. Never mix turn + session (double-counts).
Provider-keyed usage normalizers. Each turns a provider’s raw usage
object into token buckets. The agent dialects and the obol house dialect
share these so the per-provider accounting — the cache-bucket split, the
OpenAI cached-subtraction, the part naive summers get wrong — lives in one
place, not once per dialect.
Detect dialect from content: Codex lines carry a top-level payload
(session_meta/response_item/event_msg); Claude lines carry message with
type user/assistant.