@@ -282,18 +282,49 @@ export class CodexAcpAgent extends BaseAcpAgent {
282282
283283 const response = await this . codexConnection . prompt ( params ) ;
284284
285- // Emit PostHog usage notification
286- if ( this . sessionState ?. taskRunId && response . usage ) {
287- await this . client . extNotification ( "_posthog/usage_update" , {
285+ if ( this . sessionState && response . usage ) {
286+ // Accumulate token usage from the prompt response
287+ this . sessionState . accumulatedUsage . inputTokens +=
288+ response . usage . inputTokens ?? 0 ;
289+ this . sessionState . accumulatedUsage . outputTokens +=
290+ response . usage . outputTokens ?? 0 ;
291+ this . sessionState . accumulatedUsage . cachedReadTokens +=
292+ response . usage . cachedReadTokens ?? 0 ;
293+ this . sessionState . accumulatedUsage . cachedWriteTokens +=
294+ response . usage . cachedWriteTokens ?? 0 ;
295+ }
296+
297+ if ( this . sessionState ?. taskRunId ) {
298+ const { accumulatedUsage } = this . sessionState ;
299+
300+ await this . client . extNotification ( POSTHOG_NOTIFICATIONS . TURN_COMPLETE , {
288301 sessionId : params . sessionId ,
289- used : {
290- inputTokens : response . usage . inputTokens ?? 0 ,
291- outputTokens : response . usage . outputTokens ?? 0 ,
292- cachedReadTokens : response . usage . cachedReadTokens ?? 0 ,
293- cachedWriteTokens : response . usage . cachedWriteTokens ?? 0 ,
302+ stopReason : response . stopReason ?? "end_turn" ,
303+ usage : {
304+ inputTokens : accumulatedUsage . inputTokens ,
305+ outputTokens : accumulatedUsage . outputTokens ,
306+ cachedReadTokens : accumulatedUsage . cachedReadTokens ,
307+ cachedWriteTokens : accumulatedUsage . cachedWriteTokens ,
308+ totalTokens :
309+ accumulatedUsage . inputTokens +
310+ accumulatedUsage . outputTokens +
311+ accumulatedUsage . cachedReadTokens +
312+ accumulatedUsage . cachedWriteTokens ,
294313 } ,
295- cost : null ,
296314 } ) ;
315+
316+ if ( response . usage ) {
317+ await this . client . extNotification ( "_posthog/usage_update" , {
318+ sessionId : params . sessionId ,
319+ used : {
320+ inputTokens : response . usage . inputTokens ?? 0 ,
321+ outputTokens : response . usage . outputTokens ?? 0 ,
322+ cachedReadTokens : response . usage . cachedReadTokens ?? 0 ,
323+ cachedWriteTokens : response . usage . cachedWriteTokens ?? 0 ,
324+ } ,
325+ cost : null ,
326+ } ) ;
327+ }
297328 }
298329
299330 return response ;
0 commit comments