@@ -27,7 +27,7 @@ import {
2727 TOOL_NAME ,
2828 TOOL_PARAMETERS ,
2929} from "@arizeai/openinference-semantic-conventions"
30- import { errorSummary , setBoundedMap , accumulateSessionTotals , isMetricEnabled , isTraceEnabled } from "../util.ts"
30+ import { agentAttrs , errorSummary , setBoundedMap , accumulateSessionTotals , getSessionAgentMeta , isMetricEnabled , isTraceEnabled } from "../util.ts"
3131import type { HandlerContext } from "../types.ts"
3232
3333const OPENINFERENCE_SPAN_KIND = SemanticConventions . OPENINFERENCE_SPAN_KIND
@@ -56,7 +56,8 @@ export function handleMessageUpdated(e: EventMessageUpdated, ctx: HandlerContext
5656
5757 const { sessionID, modelID, providerID } = assistant
5858 const duration = assistant . time . completed - assistant . time . created
59- const agent = ctx . sessionTotals . get ( sessionID ) ?. agent ?? "unknown"
59+ const { agentName, agentType } = getSessionAgentMeta ( sessionID , ctx )
60+ const agent = agentName
6061
6162 const totalTokens = assistant . tokens . input + assistant . tokens . output + assistant . tokens . reasoning
6263 + assistant . tokens . cache . read + assistant . tokens . cache . write
@@ -110,6 +111,8 @@ export function handleMessageUpdated(e: EventMessageUpdated, ctx: HandlerContext
110111 if ( msgSpan ) {
111112 const outputText = ctx . messageOutputs . get ( msgKey )
112113 msgSpan . setAttributes ( {
114+ [ AGENT_NAME ] : agentName ,
115+ "agent.type" : agentType ,
113116 [ LLM_TOKEN_COUNT_PROMPT ] : assistant . tokens . input ,
114117 [ LLM_TOKEN_COUNT_COMPLETION ] : assistant . tokens . output ,
115118 [ LLM_TOKEN_COUNT_COMPLETION_DETAILS_REASONING ] : assistant . tokens . reasoning ,
@@ -150,7 +153,7 @@ export function handleMessageUpdated(e: EventMessageUpdated, ctx: HandlerContext
150153 "session.id" : sessionID ,
151154 model : modelID ,
152155 provider : providerID ,
153- agent ,
156+ ... agentAttrs ( agentName , agentType ) ,
154157 error : errorSummary ( assistant . error ) ,
155158 duration_ms : duration ,
156159 ...ctx . commonAttrs ,
@@ -173,12 +176,12 @@ export function handleMessageUpdated(e: EventMessageUpdated, ctx: HandlerContext
173176 body : "api_request" ,
174177 attributes : {
175178 "event.name" : "api_request" ,
176- "session.id" : sessionID ,
177- model : modelID ,
178- provider : providerID ,
179- agent ,
180- cost_usd : assistant . cost ,
181- duration_ms : duration ,
179+ "session.id" : sessionID ,
180+ model : modelID ,
181+ provider : providerID ,
182+ ... agentAttrs ( agentName , agentType ) ,
183+ cost_usd : assistant . cost ,
184+ duration_ms : duration ,
182185 input_tokens : assistant . tokens . input ,
183186 output_tokens : assistant . tokens . output ,
184187 reasoning_tokens : assistant . tokens . reasoning ,
@@ -224,6 +227,7 @@ export function handleMessagePartUpdated(e: EventMessagePartUpdated, ctx: Handle
224227 ...ctx . commonAttrs ,
225228 "session.id" : subtask . sessionID ,
226229 agent : subtask . agent ,
230+ "agent.type" : "subagent" ,
227231 } )
228232 }
229233 ctx . emitLog ( {
@@ -235,7 +239,7 @@ export function handleMessagePartUpdated(e: EventMessagePartUpdated, ctx: Handle
235239 attributes : {
236240 "event.name" : "subtask_invoked" ,
237241 "session.id" : subtask . sessionID ,
238- agent : subtask . agent ,
242+ ... agentAttrs ( subtask . agent , "subagent" ) ,
239243 description : subtask . description ,
240244 prompt_length : subtask . prompt . length ,
241245 ...ctx . commonAttrs ,
@@ -253,6 +257,7 @@ export function handleMessagePartUpdated(e: EventMessagePartUpdated, ctx: Handle
253257 const key = `${ toolPart . sessionID } :${ toolPart . callID } `
254258
255259 if ( toolPart . state . status === "running" ) {
260+ const { agentName, agentType } = getSessionAgentMeta ( toolPart . sessionID , ctx )
256261 const toolSpan = isTraceEnabled ( "tool" , ctx )
257262 ? ( ( ) => {
258263 const sessionSpan = ctx . sessionSpans . get ( toolPart . sessionID )
@@ -273,6 +278,8 @@ export function handleMessagePartUpdated(e: EventMessagePartUpdated, ctx: Handle
273278 [ TOOL_PARAMETERS ] : JSON . stringify ( toolPart . state . input ) ,
274279 [ INPUT_VALUE ] : JSON . stringify ( toolPart . state . input ) ,
275280 [ INPUT_MIME_TYPE ] : MimeType . JSON ,
281+ [ AGENT_NAME ] : agentName ,
282+ "agent.type" : agentType ,
276283 ...ctx . commonAttrs ,
277284 } ,
278285 } ,
@@ -299,6 +306,7 @@ export function handleMessagePartUpdated(e: EventMessagePartUpdated, ctx: Handle
299306 if ( end === undefined ) return
300307 const duration_ms = end - start
301308 const success = toolPart . state . status === "completed"
309+ const { agentName, agentType } = getSessionAgentMeta ( toolPart . sessionID , ctx )
302310
303311 if ( isMetricEnabled ( "tool.duration" , ctx ) ) {
304312 ctx . instruments . toolDurationHistogram . record ( duration_ms , {
@@ -335,6 +343,7 @@ export function handleMessagePartUpdated(e: EventMessagePartUpdated, ctx: Handle
335343 parentCtx ,
336344 )
337345 } ) ( )
346+ toolSpan . setAttributes ( { [ AGENT_NAME ] : agentName , "agent.type" : agentType } )
338347 toolSpan . setAttribute ( "tool.success" , success )
339348 if ( success ) {
340349 const output = ( toolPart . state as { output : string } ) . output
@@ -370,6 +379,7 @@ export function handleMessagePartUpdated(e: EventMessagePartUpdated, ctx: Handle
370379 "event.name" : "tool_result" ,
371380 "session.id" : toolPart . sessionID ,
372381 tool_name : toolPart . tool ,
382+ ...agentAttrs ( agentName , agentType ) ,
373383 success,
374384 duration_ms,
375385 ...sizeAttr ,
@@ -409,6 +419,7 @@ export function startMessageSpan(
409419 if ( ! isTraceEnabled ( "llm" , ctx ) ) return
410420 const msgKey = `${ sessionID } :${ messageID } `
411421 if ( ctx . messageSpans . has ( msgKey ) ) return
422+ const { agentName, agentType } = getSessionAgentMeta ( sessionID , ctx )
412423 const sessionSpan = ctx . sessionSpans . get ( sessionID )
413424 const baseCtx = ctx . rootContext ( )
414425 const parentCtx = sessionSpan
@@ -423,7 +434,8 @@ export function startMessageSpan(
423434 attributes : {
424435 [ OPENINFERENCE_SPAN_KIND ] : OpenInferenceSpanKind . LLM ,
425436 [ SESSION_ID ] : sessionID ,
426- [ AGENT_NAME ] : ctx . sessionTotals . get ( sessionID ) ?. agent ?? "unknown" ,
437+ [ AGENT_NAME ] : agentName ,
438+ "agent.type" : agentType ,
427439 [ LLM_SYSTEM ] : providerID ,
428440 [ LLM_PROVIDER ] : providerID ,
429441 [ LLM_MODEL_NAME ] : modelID ,
0 commit comments