@@ -29,9 +29,14 @@ export type StreamChatFinishCallback<C extends Context, TOOLS extends ToolSet> =
29
29
ctx : IRunContext < C >
30
30
) => Promise < void > | void ;
31
31
32
+ type TelemetrySettingsCallback < C extends Context > = (
33
+ agent : LlmAgent < C , ToolParameters > ,
34
+ ctx : IRunContext < C >
35
+ ) => TelemetrySettings | undefined ;
36
+
32
37
type FlowOptions < C extends Context > = {
33
38
onChatStreamFinish ?: StreamChatFinishCallback < C , ToolSet > ;
34
- telemetry ?: boolean ;
39
+ telemetry ?: false | TelemetrySettings | TelemetrySettingsCallback < C > ;
35
40
} ;
36
41
37
42
export abstract class AgentFlow < C extends Context > {
@@ -79,7 +84,7 @@ export abstract class AgentFlow<C extends Context> {
79
84
experimental_generateMessageId : this . generateUUID ,
80
85
onFinish,
81
86
onStepFinish,
82
- experimental_telemetry : this . getTelemetry ( agent ) ,
87
+ experimental_telemetry : this . getTelemetry ( agent , ctx ) ,
83
88
} ) ;
84
89
}
85
90
@@ -99,7 +104,7 @@ export abstract class AgentFlow<C extends Context> {
99
104
onStepFinish,
100
105
experimental_generateMessageId : this . generateUUID ,
101
106
experimental_output : agent . output ? Output . object ( { schema : agent . output } ) : undefined ,
102
- experimental_telemetry : this . getTelemetry ( agent ) ,
107
+ experimental_telemetry : this . getTelemetry ( agent , ctx ) ,
103
108
} ) ;
104
109
}
105
110
@@ -117,7 +122,7 @@ export abstract class AgentFlow<C extends Context> {
117
122
system : getContextPrompt ( agent . system , ctx ) ,
118
123
...prompt ,
119
124
schema : agent . output ,
120
- experimental_telemetry : this . getTelemetry ( agent ) ,
125
+ experimental_telemetry : this . getTelemetry ( agent , ctx ) ,
121
126
} ) ;
122
127
}
123
128
@@ -200,11 +205,15 @@ export abstract class AgentFlow<C extends Context> {
200
205
}
201
206
202
207
private getTelemetry < P extends ToolParameters > (
203
- agent : LlmAgent < C , P >
208
+ agent : LlmAgent < C , P > ,
209
+ ctx : IRunContext < C >
204
210
) : TelemetrySettings | undefined {
205
- if ( ! agent . telemetry ) {
211
+ if ( ! this . options . telemetry ) {
206
212
return undefined ;
207
213
}
208
- return { isEnabled : ! ! this . options . telemetry , ...agent . telemetry } ;
214
+ if ( typeof this . options . telemetry === 'function' ) {
215
+ return this . options . telemetry ( agent , ctx ) ;
216
+ }
217
+ return { ...( agent . telemetry ?? { } ) , ...this . options . telemetry } ;
209
218
}
210
219
}
0 commit comments