fix: normalize missing Codex token usage

Treat token_count events without usage as null canonical token values so node:sqlite never receives undefined. Covers issue #1 with a parse-to-persist regression test.
This commit is contained in:
tommy0103
2026-07-22 01:02:25 +08:00
parent 28fa99ac94
commit 476d4a94fa
3 changed files with 52 additions and 7 deletions
+13 -4
View File
@@ -296,12 +296,21 @@ function parseCodexJsonInput(value: JsonValue): JsonValue {
try { return JSON.parse(value); } catch { return value; }
}
function codexUsage(payload: JsonRecord) {
interface CodexUsage {
inputTokens: number | null;
outputTokens: number | null;
}
function codexUsage(payload: JsonRecord): CodexUsage {
const usage = payload?.info?.last_token_usage || payload?.info?.total_token_usage || payload?.last_token_usage || null;
if (!usage) return {};
if (!usage) return { inputTokens: null, outputTokens: null };
return {
inputTokens: usage.input_tokens ?? null,
outputTokens: usage.output_tokens ?? null,
inputTokens: typeof usage.input_tokens === 'number' && Number.isFinite(usage.input_tokens)
? usage.input_tokens
: null,
outputTokens: typeof usage.output_tokens === 'number' && Number.isFinite(usage.output_tokens)
? usage.output_tokens
: null,
};
}