@@ -23,6 +23,7 @@ type SessionNextEvent =
2323 properties : {
2424 sessionID : string ;
2525 timestamp : number ;
26+ assistantMessageID ?: string ;
2627 agent : string ;
2728 model : NonNullable < ActiveGenerationStep [ "model" ] > ;
2829 snapshot ?: string ;
@@ -39,9 +40,23 @@ type SessionNextEvent =
3940 properties : {
4041 sessionID : string ;
4142 timestamp : number ;
43+ assistantMessageID ?: string ;
4244 error : { message : string } ;
4345 } ;
4446 }
47+ | {
48+ id : string ;
49+ type : "session.next.tool.called" ;
50+ properties : {
51+ sessionID : string ;
52+ timestamp : number ;
53+ assistantMessageID ?: string ;
54+ callID : string ;
55+ tool : string ;
56+ input : Record < string , unknown > ;
57+ provider : { executed : boolean ; metadata ?: unknown } ;
58+ } ;
59+ }
4560 | {
4661 id : string ;
4762 type : "session.next.retried" ;
@@ -173,6 +188,7 @@ const eventHook = (event: OpencodeEvent, shutdown?: () => Promise<void>) =>
173188 if ( event . type === "session.next.step.started" ) {
174189 langfuse . startActiveGenerationStep ( {
175190 sessionID : event . properties . sessionID ,
191+ assistantMessageID : event . properties . assistantMessageID ,
176192 agent : event . properties . agent ,
177193 model : event . properties . model ,
178194 started : event . properties . timestamp ,
@@ -184,11 +200,22 @@ const eventHook = (event: OpencodeEvent, shutdown?: () => Promise<void>) =>
184200 langfuse . traceFailedGenerationStep ( {
185201 id : event . id ,
186202 sessionID : event . properties . sessionID ,
203+ assistantMessageID : event . properties . assistantMessageID ,
187204 completed : event . properties . timestamp ,
188205 error : event . properties . error ,
189206 } ) ;
190207 }
191208
209+ if (
210+ event . type === "session.next.tool.called" &&
211+ event . properties . assistantMessageID
212+ ) {
213+ langfuse . rememberToolCall ( {
214+ callID : event . properties . callID ,
215+ messageID : event . properties . assistantMessageID ,
216+ } ) ;
217+ }
218+
192219 if ( event . type === "session.next.retried" ) {
193220 langfuse . traceEvent ( {
194221 id : event . id ,
@@ -229,7 +256,22 @@ const eventHook = (event: OpencodeEvent, shutdown?: () => Promise<void>) =>
229256 if ( event . type === "message.updated" ) {
230257 const message = event . properties . info ;
231258
232- if ( message . role !== "assistant" || ! message . time . completed ) {
259+ if ( message . role !== "assistant" ) {
260+ return ;
261+ }
262+
263+ langfuse . startActiveGenerationStep ( {
264+ sessionID : message . sessionID ,
265+ assistantMessageID : message . id ,
266+ agent : message . mode ,
267+ model : {
268+ id : message . modelID ,
269+ providerID : message . providerID ,
270+ } ,
271+ started : message . time . created ,
272+ } ) ;
273+
274+ if ( ! message . time . completed ) {
233275 return ;
234276 }
235277
0 commit comments