@@ -56,6 +56,7 @@ import {
5656import { stripShellPrefix } from "./CommandUtils" ;
5757import { createTerminalOutputMeta , type TerminalOutputMode } from "./TerminalOutputMode" ;
5858import {
59+ createCodexMessagePhaseMeta ,
5960 createAgentTextMessageChunk ,
6061 createAgentTextThoughtChunk ,
6162} from "./ContentChunks" ;
@@ -74,6 +75,7 @@ export class CodexEventHandler {
7475 private readonly seenReasoningDeltaItemIds = new Set < string > ( ) ;
7576 private readonly terminalCommandIds = new Set < string > ( ) ;
7677 private readonly terminalCommandOutputIds = new Set < string > ( ) ;
78+ private readonly agentMessagePhases = new Map < string , string | null > ( ) ;
7779
7880 constructor ( connection : AcpClientConnection , sessionState : SessionState ) {
7981 this . connection = connection ;
@@ -230,7 +232,8 @@ export class CodexEventHandler {
230232 }
231233
232234 private async createTextEvent ( event : AgentMessageDeltaNotification ) : Promise < UpdateSessionEvent > {
233- return createAgentTextMessageChunk ( event . delta , event . itemId ) ;
235+ const phase = this . agentMessagePhases . get ( event . itemId ) ?? null ;
236+ return createAgentTextMessageChunk ( event . delta , event . itemId , createCodexMessagePhaseMeta ( phase ) ) ;
234237 }
235238
236239 private async createConfigWarningEvent ( event : ConfigWarningNotification ) : Promise < UpdateSessionEvent > {
@@ -331,11 +334,13 @@ export class CodexEventHandler {
331334 return createImageGenerationStartUpdate ( event . item ) ;
332335 case "collabAgentToolCall" :
333336 return createCollabAgentToolCallUpdate ( event . item ) ;
337+ case "agentMessage" :
338+ this . rememberAgentMessagePhase ( event . item ) ;
339+ return null ;
334340 case "subAgentActivity" :
335341 case "sleep" :
336342 case "userMessage" :
337343 case "hookPrompt" :
338- case "agentMessage" :
339344 case "reasoning" :
340345 case "enteredReviewMode" :
341346 case "exitedReviewMode" :
@@ -383,6 +388,9 @@ export class CodexEventHandler {
383388 return createWebSearchCompleteUpdate ( event . item ) ;
384389 case "collabAgentToolCall" :
385390 return createCollabAgentToolCallCompleteUpdate ( event . item ) ;
391+ case "agentMessage" :
392+ this . rememberAgentMessagePhase ( event . item ) ;
393+ return null ;
386394 case "exitedReviewMode" :
387395 return this . createExitedReviewModeEvent ( event . item ) ;
388396 case "contextCompaction" :
@@ -392,14 +400,17 @@ export class CodexEventHandler {
392400 case "sleep" :
393401 case "userMessage" :
394402 case "hookPrompt" :
395- case "agentMessage" :
396403 case "enteredReviewMode" :
397404 case "plan" :
398405 return null ;
399406
400407 }
401408 }
402409
410+ private rememberAgentMessagePhase ( item : ThreadItem & { type : "agentMessage" } ) : void {
411+ this . agentMessagePhases . set ( item . id , item . phase ) ;
412+ }
413+
403414 private createCompletedReasoningEvent ( item : ThreadItem & { type : "reasoning" } ) : UpdateSessionEvent | null {
404415 const parts = item . summary . length > 0 ? item . summary : item . content ;
405416 const text = parts . filter ( part => part . length > 0 ) . join ( "\n\n" ) ;
0 commit comments