From ec10ad1b67a0558343a417690b35888e37dd84ea Mon Sep 17 00:00:00 2001 From: AgentSeal Date: Fri, 24 Apr 2026 19:42:21 +0200 Subject: [PATCH] Fix Codex model extraction from turn_context entries --- src/models.ts | 1 + src/providers/codex.ts | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/models.ts b/src/models.ts index 1fd9285..e501fbf 100644 --- a/src/models.ts +++ b/src/models.ts @@ -221,6 +221,7 @@ export function getShortModelName(model: string): string { 'gpt-4.1-nano': 'GPT-4.1 Nano', 'gpt-4.1-mini': 'GPT-4.1 Mini', 'gpt-4.1': 'GPT-4.1', + 'codex-auto-review': 'Codex Auto Review', 'gpt-5.4-mini': 'GPT-5.4 Mini', 'gpt-5.4': 'GPT-5.4', 'gpt-5.3-codex': 'GPT-5.3 Codex', diff --git a/src/providers/codex.ts b/src/providers/codex.ts index 01d48b7..cd49c1a 100644 --- a/src/providers/codex.ts +++ b/src/providers/codex.ts @@ -7,9 +7,12 @@ import { calculateCost } from '../models.js' import type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js' const modelDisplayNames: Record = { - 'gpt-5.3-codex': 'GPT-5.3 Codex', + 'codex-auto-review': 'Codex Auto Review', 'gpt-5.4-mini': 'GPT-5.4 Mini', 'gpt-5.4': 'GPT-5.4', + 'gpt-5.3-codex': 'GPT-5.3 Codex', + 'gpt-5.2-low': 'GPT-5.2 Low', + 'gpt-5.2': 'GPT-5.2', 'gpt-5': 'GPT-5', 'gpt-4o-mini': 'GPT-4o Mini', 'gpt-4o': 'GPT-4o', @@ -132,7 +135,8 @@ async function discoverSessionsInDir(codexDir: string): Promise } function resolveModel(info: CodexEntry['payload'], sessionModel?: string): string { - return info?.info?.model + return info?.model + ?? info?.info?.model ?? info?.info?.model_name ?? sessionModel ?? 'gpt-5' @@ -164,7 +168,12 @@ function createParser(source: SessionSource, seenKeys: Set): SessionPars if (entry.type === 'session_meta') { sessionId = entry.payload?.session_id ?? basename(source.path, '.jsonl') - sessionModel = entry.payload?.model + sessionModel = entry.payload?.model ?? sessionModel + continue + } + + if (entry.type === 'turn_context' && entry.payload?.model) { + sessionModel = entry.payload.model continue }