this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Handle old Codex top-level message entries

Old format (pre-October 2025) has user/assistant messages at top level
with type 'message' rather than wrapped in response_item. Adds handler
to parse these and populate userMessages/assistantMessages correctly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

alice 0de18cda b5377672

+28
+28
src/core/codex-reader.ts
··· 329 329 } 330 330 } 331 331 } 332 + 333 + // Handle old format: top-level message (pre-October 2025) 334 + // Old format: {"type":"message","role":"user/assistant","content":[{"type":"input_text/output_text","text":"..."}]} 335 + if (entry.type === 'message') { 336 + const msgEntry = entry as unknown as { type: string; role: string; content?: Array<{ type: string; text?: string }> }; 337 + const text = extractTextFromContent(msgEntry.content); 338 + 339 + // Skip environment_context messages (just contain cwd/approval policy info) 340 + if (text && !text.includes('<environment_context>')) { 341 + if (msgEntry.role === 'user') { 342 + userMessages++; 343 + messages.push({ 344 + type: 'user', 345 + timestamp: (entry as Record<string, unknown>).timestamp as string || '', 346 + text, 347 + toolUses: [], 348 + }); 349 + } else if (msgEntry.role === 'assistant') { 350 + assistantMessages++; 351 + messages.push({ 352 + type: 'assistant', 353 + timestamp: (entry as Record<string, unknown>).timestamp as string || '', 354 + text, 355 + toolUses: [], 356 + }); 357 + } 358 + } 359 + } 332 360 } 333 361 334 362 // Fallback to filename for sessionId