@anvia/otel 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +207 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -73,7 +73,7 @@ var OtelRunObserver = class {
|
|
|
73
73
|
},
|
|
74
74
|
this.rootContext
|
|
75
75
|
);
|
|
76
|
-
return new OtelToolObserver(tool);
|
|
76
|
+
return new OtelToolObserver(this.tracer, tool);
|
|
77
77
|
}
|
|
78
78
|
end(args) {
|
|
79
79
|
this.root.setAttributes(runEndAttributes(args));
|
|
@@ -105,20 +105,204 @@ var OtelGenerationObserver = class {
|
|
|
105
105
|
}
|
|
106
106
|
};
|
|
107
107
|
var OtelToolObserver = class {
|
|
108
|
-
constructor(tool) {
|
|
108
|
+
constructor(tracer, tool) {
|
|
109
|
+
this.tracer = tracer;
|
|
109
110
|
this.tool = tool;
|
|
111
|
+
this.toolContext = trace.setSpan(ROOT_CONTEXT, tool);
|
|
110
112
|
}
|
|
113
|
+
tracer;
|
|
111
114
|
tool;
|
|
115
|
+
childAgents = /* @__PURE__ */ new Map();
|
|
116
|
+
childGenerations = /* @__PURE__ */ new Map();
|
|
117
|
+
childTools = [];
|
|
118
|
+
toolContext;
|
|
119
|
+
streamEvent(args) {
|
|
120
|
+
const wrapper = args.event;
|
|
121
|
+
const child = isRecord(wrapper.event) ? wrapper.event : void 0;
|
|
122
|
+
if (child === void 0) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const agentId = wrapper.agentId;
|
|
126
|
+
const agentName = wrapper.agentName;
|
|
127
|
+
const childTurn = typeof child.turn === "number" ? child.turn : args.turn;
|
|
128
|
+
const agent = this.childAgent(agentId, agentName, args);
|
|
129
|
+
if (child.type === "turn_start") {
|
|
130
|
+
const generation = this.tracer.startSpan(
|
|
131
|
+
`${agentLabel(agentId, agentName)}.model.turn.${childTurn}`,
|
|
132
|
+
{
|
|
133
|
+
kind: SpanKind.CLIENT,
|
|
134
|
+
attributes: compactAttributes({
|
|
135
|
+
"anvia.child_agent.id": agentId,
|
|
136
|
+
"anvia.child_agent.name": agentName,
|
|
137
|
+
"anvia.child_agent.turn": childTurn,
|
|
138
|
+
"anvia.parent_tool.name": args.toolName,
|
|
139
|
+
"anvia.parent_tool.internal_call_id": args.internalCallId,
|
|
140
|
+
"anvia.parent_tool.call_id": args.toolCallId,
|
|
141
|
+
"anvia.generation.input": jsonString({
|
|
142
|
+
prompt: child.prompt,
|
|
143
|
+
history: child.history
|
|
144
|
+
})
|
|
145
|
+
})
|
|
146
|
+
},
|
|
147
|
+
trace.setSpan(ROOT_CONTEXT, agent)
|
|
148
|
+
);
|
|
149
|
+
this.childGenerations.set(generationKey(agentId, childTurn), generation);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (child.type === "turn_end") {
|
|
153
|
+
const generation = this.childGenerations.get(generationKey(agentId, childTurn));
|
|
154
|
+
if (generation !== void 0) {
|
|
155
|
+
generation.setAttributes(
|
|
156
|
+
compactAttributes({
|
|
157
|
+
"anvia.child_agent.id": agentId,
|
|
158
|
+
"anvia.child_agent.name": agentName,
|
|
159
|
+
"anvia.child_agent.turn": childTurn,
|
|
160
|
+
"anvia.generation.output": jsonString(child.response),
|
|
161
|
+
...isRecord(child.response) && isRecord(child.response.usage) ? usageAttributesFromRecord(child.response.usage) : {}
|
|
162
|
+
})
|
|
163
|
+
);
|
|
164
|
+
generation.setStatus({ code: SpanStatusCode.OK });
|
|
165
|
+
generation.end();
|
|
166
|
+
this.childGenerations.delete(generationKey(agentId, childTurn));
|
|
167
|
+
}
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (child.type === "tool_call" && isRecord(child.toolCall)) {
|
|
171
|
+
const toolCall = child.toolCall;
|
|
172
|
+
const toolCallFunction = isRecord(toolCall.function) ? toolCall.function : void 0;
|
|
173
|
+
const toolName = typeof toolCallFunction?.name === "string" ? toolCallFunction.name : "tool";
|
|
174
|
+
const toolCallId = typeof toolCall.callId === "string" ? toolCall.callId : typeof toolCall.id === "string" ? toolCall.id : void 0;
|
|
175
|
+
const span = this.tracer.startSpan(
|
|
176
|
+
`${agentLabel(agentId, agentName)}.${toolName}`,
|
|
177
|
+
{
|
|
178
|
+
kind: SpanKind.INTERNAL,
|
|
179
|
+
attributes: compactAttributes({
|
|
180
|
+
"anvia.child_agent.id": agentId,
|
|
181
|
+
"anvia.child_agent.name": agentName,
|
|
182
|
+
"anvia.child_agent.turn": childTurn,
|
|
183
|
+
"anvia.tool.name": toolName,
|
|
184
|
+
"anvia.tool.call_id": toolCallId,
|
|
185
|
+
"anvia.tool.args": jsonString(toolCallFunction?.arguments ?? {}),
|
|
186
|
+
"anvia.parent_tool.name": args.toolName,
|
|
187
|
+
"anvia.parent_tool.internal_call_id": args.internalCallId,
|
|
188
|
+
"anvia.parent_tool.call_id": args.toolCallId
|
|
189
|
+
})
|
|
190
|
+
},
|
|
191
|
+
trace.setSpan(ROOT_CONTEXT, agent)
|
|
192
|
+
);
|
|
193
|
+
this.childTools.push({
|
|
194
|
+
agentId,
|
|
195
|
+
toolName,
|
|
196
|
+
...toolCallId === void 0 ? {} : { toolCallId },
|
|
197
|
+
span,
|
|
198
|
+
ended: false
|
|
199
|
+
});
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (child.type === "tool_result") {
|
|
203
|
+
const toolName = typeof child.toolName === "string" ? child.toolName : "tool";
|
|
204
|
+
const toolCallId = typeof child.toolCallId === "string" ? child.toolCallId : void 0;
|
|
205
|
+
const span = this.findChildTool(agentId, toolName, toolCallId);
|
|
206
|
+
if (span !== void 0) {
|
|
207
|
+
span.ended = true;
|
|
208
|
+
span.span.setAttributes(
|
|
209
|
+
compactAttributes({
|
|
210
|
+
"anvia.child_agent.id": agentId,
|
|
211
|
+
"anvia.child_agent.name": agentName,
|
|
212
|
+
"anvia.child_agent.turn": childTurn,
|
|
213
|
+
"anvia.tool.name": toolName,
|
|
214
|
+
"anvia.tool.call_id": toolCallId,
|
|
215
|
+
"anvia.tool.internal_call_id": typeof child.internalCallId === "string" ? child.internalCallId : void 0,
|
|
216
|
+
"anvia.tool.args": typeof child.args === "string" ? child.args : void 0,
|
|
217
|
+
"anvia.tool.result": typeof child.result === "string" ? child.result : void 0
|
|
218
|
+
})
|
|
219
|
+
);
|
|
220
|
+
span.span.setStatus({ code: SpanStatusCode.OK });
|
|
221
|
+
span.span.end();
|
|
222
|
+
}
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (child.type === "final") {
|
|
226
|
+
agent.setAttributes(
|
|
227
|
+
compactAttributes({
|
|
228
|
+
"anvia.child_agent.output": typeof child.output === "string" ? child.output : void 0,
|
|
229
|
+
"anvia.child_agent.messages": jsonString(child.messages),
|
|
230
|
+
...isRecord(child.usage) ? usageAttributesFromRecord(child.usage) : {}
|
|
231
|
+
})
|
|
232
|
+
);
|
|
233
|
+
agent.setStatus({ code: SpanStatusCode.OK });
|
|
234
|
+
agent.end();
|
|
235
|
+
this.childAgents.delete(agentId);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (child.type === "error") {
|
|
239
|
+
recordSpanError(agent, child.error);
|
|
240
|
+
agent.end();
|
|
241
|
+
this.childAgents.delete(agentId);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
112
244
|
end(args) {
|
|
245
|
+
this.endOpenChildren();
|
|
113
246
|
this.tool.setAttributes(toolEndAttributes(args));
|
|
114
247
|
this.tool.setStatus({ code: SpanStatusCode.OK });
|
|
115
248
|
this.tool.end();
|
|
116
249
|
}
|
|
117
250
|
error(args) {
|
|
251
|
+
this.endOpenChildren();
|
|
118
252
|
recordSpanError(this.tool, args.error);
|
|
119
253
|
this.tool.setAttributes(toolErrorAttributes(args));
|
|
120
254
|
this.tool.end();
|
|
121
255
|
}
|
|
256
|
+
childAgent(agentId, agentName, args) {
|
|
257
|
+
const existing = this.childAgents.get(agentId);
|
|
258
|
+
if (existing !== void 0) {
|
|
259
|
+
return existing;
|
|
260
|
+
}
|
|
261
|
+
const span = this.tracer.startSpan(
|
|
262
|
+
`${agentLabel(agentId, agentName)}.run`,
|
|
263
|
+
{
|
|
264
|
+
kind: SpanKind.INTERNAL,
|
|
265
|
+
attributes: compactAttributes({
|
|
266
|
+
"anvia.child_agent.id": agentId,
|
|
267
|
+
"anvia.child_agent.name": agentName,
|
|
268
|
+
"anvia.parent_tool.name": args.toolName,
|
|
269
|
+
"anvia.parent_tool.internal_call_id": args.internalCallId,
|
|
270
|
+
"anvia.parent_tool.call_id": args.toolCallId
|
|
271
|
+
})
|
|
272
|
+
},
|
|
273
|
+
this.toolContext
|
|
274
|
+
);
|
|
275
|
+
this.childAgents.set(agentId, span);
|
|
276
|
+
return span;
|
|
277
|
+
}
|
|
278
|
+
findChildTool(agentId, toolName, toolCallId) {
|
|
279
|
+
for (let index = this.childTools.length - 1; index >= 0; index -= 1) {
|
|
280
|
+
const childTool = this.childTools[index];
|
|
281
|
+
if (childTool === void 0 || childTool.ended || childTool.agentId !== agentId || childTool.toolName !== toolName) {
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
if (toolCallId === void 0 || childTool.toolCallId === toolCallId) {
|
|
285
|
+
return childTool;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return void 0;
|
|
289
|
+
}
|
|
290
|
+
endOpenChildren() {
|
|
291
|
+
for (const generation of this.childGenerations.values()) {
|
|
292
|
+
generation.end();
|
|
293
|
+
}
|
|
294
|
+
this.childGenerations.clear();
|
|
295
|
+
for (const tool of this.childTools) {
|
|
296
|
+
if (!tool.ended) {
|
|
297
|
+
tool.span.end();
|
|
298
|
+
tool.ended = true;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
for (const agent of this.childAgents.values()) {
|
|
302
|
+
agent.end();
|
|
303
|
+
}
|
|
304
|
+
this.childAgents.clear();
|
|
305
|
+
}
|
|
122
306
|
};
|
|
123
307
|
function rootSpanName(args) {
|
|
124
308
|
return args.agentName === void 0 || args.agentName.length === 0 ? "agent.run" : `agent.${args.agentName}`;
|
|
@@ -213,6 +397,15 @@ function usageAttributes(usage) {
|
|
|
213
397
|
"anvia.usage.cache_creation_input_tokens": usage.cacheCreationInputTokens
|
|
214
398
|
};
|
|
215
399
|
}
|
|
400
|
+
function usageAttributesFromRecord(usage) {
|
|
401
|
+
return compactAttributes({
|
|
402
|
+
"anvia.usage.input_tokens": numberValue(usage.inputTokens),
|
|
403
|
+
"anvia.usage.output_tokens": numberValue(usage.outputTokens),
|
|
404
|
+
"anvia.usage.total_tokens": numberValue(usage.totalTokens),
|
|
405
|
+
"anvia.usage.cached_input_tokens": numberValue(usage.cachedInputTokens),
|
|
406
|
+
"anvia.usage.cache_creation_input_tokens": numberValue(usage.cacheCreationInputTokens)
|
|
407
|
+
});
|
|
408
|
+
}
|
|
216
409
|
function modelParameters(request) {
|
|
217
410
|
return {
|
|
218
411
|
"anvia.generation.temperature": request.temperature,
|
|
@@ -249,6 +442,18 @@ function parentContextFromTraceId(traceId) {
|
|
|
249
442
|
isRemote: true
|
|
250
443
|
});
|
|
251
444
|
}
|
|
445
|
+
function isRecord(value) {
|
|
446
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
447
|
+
}
|
|
448
|
+
function numberValue(value) {
|
|
449
|
+
return typeof value === "number" ? value : void 0;
|
|
450
|
+
}
|
|
451
|
+
function generationKey(agentId, turn) {
|
|
452
|
+
return `${agentId}:${turn}`;
|
|
453
|
+
}
|
|
454
|
+
function agentLabel(agentId, agentName) {
|
|
455
|
+
return (agentName ?? agentId).replaceAll(/\s+/g, "_");
|
|
456
|
+
}
|
|
252
457
|
function isValidTraceId(traceId) {
|
|
253
458
|
return traceId !== void 0 && /^[0-9a-f]{32}$/i.test(traceId) && traceId !== "00000000000000000000000000000000";
|
|
254
459
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n type AgentGenerationEndArgs,\n type AgentGenerationErrorArgs,\n type AgentGenerationObserver,\n type AgentGenerationStartArgs,\n type AgentObserver,\n type AgentRunEndArgs,\n type AgentRunErrorArgs,\n type AgentRunObserver,\n type AgentRunStartArgs,\n type AgentToolEndArgs,\n type AgentToolErrorArgs,\n type AgentToolObserver,\n type AgentToolStartArgs,\n type AgentTraceInfo,\n textFromAssistantContent,\n} from \"@anvia/core\";\nimport {\n type Attributes,\n type Context,\n context,\n ROOT_CONTEXT,\n type Span,\n SpanKind,\n SpanStatusCode,\n TraceFlags,\n type Tracer,\n trace,\n} from \"@opentelemetry/api\";\n\nexport type OtelTracingOptions = {\n tracer?: Tracer | undefined;\n tracerName?: string | undefined;\n tracerVersion?: string | undefined;\n serviceName?: string | undefined;\n};\n\nexport type OtelTracing = AgentObserver;\n\nexport const otel = {\n create(options: OtelTracingOptions = {}): OtelTracing {\n return new OtelAgentObserver(options);\n },\n};\n\nclass OtelAgentObserver implements OtelTracing {\n private readonly tracer: Tracer;\n private readonly serviceName: string | undefined;\n\n constructor(options: OtelTracingOptions) {\n this.tracer =\n options.tracer ??\n trace.getTracer(\n emptyToUndefined(options.tracerName) ?? \"@anvia/otel\",\n emptyToUndefined(options.tracerVersion),\n );\n this.serviceName = emptyToUndefined(options.serviceName);\n }\n\n startRun(args: AgentRunStartArgs): AgentRunObserver {\n const parentContext = parentContextFromTraceId(args.trace?.traceId);\n const root = this.tracer.startSpan(\n rootSpanName(args),\n {\n kind: SpanKind.INTERNAL,\n attributes: runStartAttributes(args, this.serviceName),\n },\n parentContext,\n );\n\n return new OtelRunObserver(this.tracer, root);\n }\n}\n\nclass OtelRunObserver implements AgentRunObserver {\n readonly trace: AgentTraceInfo;\n private readonly rootContext: Context;\n\n constructor(\n private readonly tracer: Tracer,\n private readonly root: Span,\n ) {\n const spanContext = root.spanContext();\n this.trace = {\n traceId: spanContext.traceId,\n observationId: spanContext.spanId,\n };\n this.rootContext = trace.setSpan(ROOT_CONTEXT, root);\n }\n\n startGeneration(args: AgentGenerationStartArgs): AgentGenerationObserver {\n const generation = this.tracer.startSpan(\n `model.turn.${args.turn}`,\n {\n kind: SpanKind.CLIENT,\n attributes: generationStartAttributes(args),\n },\n this.rootContext,\n );\n return new OtelGenerationObserver(generation);\n }\n\n startTool(args: AgentToolStartArgs): AgentToolObserver {\n const tool = this.tracer.startSpan(\n `tool.${args.toolName}`,\n {\n kind: SpanKind.INTERNAL,\n attributes: toolStartAttributes(args),\n },\n this.rootContext,\n );\n return new OtelToolObserver(tool);\n }\n\n end(args: AgentRunEndArgs): void {\n this.root.setAttributes(runEndAttributes(args));\n this.root.setStatus({ code: SpanStatusCode.OK });\n this.root.end();\n }\n\n error(args: AgentRunErrorArgs): void {\n recordSpanError(this.root, args.error);\n this.root.setAttributes(runErrorAttributes(args));\n this.root.end();\n }\n}\n\nclass OtelGenerationObserver implements AgentGenerationObserver {\n constructor(private readonly generation: Span) {}\n\n end(args: AgentGenerationEndArgs): void {\n this.generation.setAttributes(generationEndAttributes(args));\n this.generation.setStatus({ code: SpanStatusCode.OK });\n this.generation.end();\n }\n\n error(args: AgentGenerationErrorArgs): void {\n recordSpanError(this.generation, args.error);\n this.generation.setAttributes({\n \"anvia.generation.turn\": args.turn,\n });\n this.generation.end();\n }\n}\n\nclass OtelToolObserver implements AgentToolObserver {\n constructor(private readonly tool: Span) {}\n\n end(args: AgentToolEndArgs): void {\n this.tool.setAttributes(toolEndAttributes(args));\n this.tool.setStatus({ code: SpanStatusCode.OK });\n this.tool.end();\n }\n\n error(args: AgentToolErrorArgs): void {\n recordSpanError(this.tool, args.error);\n this.tool.setAttributes(toolErrorAttributes(args));\n this.tool.end();\n }\n}\n\nfunction rootSpanName(args: AgentRunStartArgs): string {\n return args.agentName === undefined || args.agentName.length === 0\n ? \"agent.run\"\n : `agent.${args.agentName}`;\n}\n\nfunction runStartAttributes(args: AgentRunStartArgs, serviceName: string | undefined): Attributes {\n return compactAttributes({\n \"service.name\": serviceName,\n \"anvia.agent.name\": args.agentName,\n \"anvia.agent.description\": args.agentDescription,\n \"anvia.agent.instructions\": args.instructions,\n \"anvia.run.max_turns\": args.maxTurns,\n \"anvia.run.prompt\": jsonString(args.prompt),\n \"anvia.run.history\": jsonString(args.history),\n \"anvia.trace.name\": args.trace?.name ?? args.agentName,\n \"anvia.trace.user_id\": args.trace?.userId,\n \"anvia.trace.session_id\": args.trace?.sessionId,\n \"anvia.trace.tags\": args.trace?.tags,\n \"anvia.trace.version\": args.trace?.version,\n ...metadataAttributes(\"anvia.trace.metadata\", args.trace?.metadata),\n });\n}\n\nfunction runEndAttributes(args: AgentRunEndArgs): Attributes {\n return compactAttributes({\n \"anvia.run.output\": args.output,\n \"anvia.run.messages\": jsonString(args.messages),\n ...usageAttributes(args.usage),\n });\n}\n\nfunction runErrorAttributes(args: AgentRunErrorArgs): Attributes {\n return compactAttributes({\n \"anvia.run.error\": errorMessage(args.error),\n \"anvia.run.messages\": jsonString(args.messages),\n ...usageAttributes(args.usage),\n });\n}\n\nfunction generationStartAttributes(args: AgentGenerationStartArgs): Attributes {\n const params = modelParameters(args.request);\n return compactAttributes({\n \"anvia.generation.turn\": args.turn,\n \"anvia.generation.input\": jsonString(args.request.chatHistory),\n \"anvia.generation.model\": args.request.model ?? \"default\",\n \"anvia.generation.tool_count\": args.request.tools.length,\n \"anvia.generation.has_output_schema\": args.request.outputSchema !== undefined,\n ...params,\n });\n}\n\nfunction generationEndAttributes(args: AgentGenerationEndArgs): Attributes {\n return compactAttributes({\n \"anvia.generation.turn\": args.turn,\n \"anvia.generation.message_id\": args.response.messageId,\n \"anvia.generation.output\": jsonString(args.response.choice),\n \"anvia.generation.output_text\": textFromAssistantContent(args.response.choice),\n \"anvia.generation.first_delta_ms\": args.firstDeltaMs,\n ...usageAttributes(args.response.usage),\n });\n}\n\nfunction toolStartAttributes(args: AgentToolStartArgs): Attributes {\n return compactAttributes({\n \"anvia.tool.name\": args.toolName,\n \"anvia.tool.turn\": args.turn,\n \"anvia.tool.args\": args.args,\n \"anvia.tool.call\": jsonString(args.toolCall),\n \"anvia.tool.internal_call_id\": args.internalCallId,\n \"anvia.tool.call_id\": args.toolCallId,\n });\n}\n\nfunction toolEndAttributes(args: AgentToolEndArgs): Attributes {\n return compactAttributes({\n \"anvia.tool.name\": args.toolName,\n \"anvia.tool.turn\": args.turn,\n \"anvia.tool.result\": args.result,\n \"anvia.tool.skipped\": args.skipped,\n \"anvia.tool.internal_call_id\": args.internalCallId,\n \"anvia.tool.call_id\": args.toolCallId,\n });\n}\n\nfunction toolErrorAttributes(args: AgentToolErrorArgs): Attributes {\n return compactAttributes({\n \"anvia.tool.name\": args.toolName,\n \"anvia.tool.turn\": args.turn,\n \"anvia.tool.error\": errorMessage(args.error),\n \"anvia.tool.internal_call_id\": args.internalCallId,\n \"anvia.tool.call_id\": args.toolCallId,\n });\n}\n\nfunction usageAttributes(usage: AgentRunEndArgs[\"usage\"]): Attributes {\n return {\n \"anvia.usage.input_tokens\": usage.inputTokens,\n \"anvia.usage.output_tokens\": usage.outputTokens,\n \"anvia.usage.total_tokens\": usage.totalTokens,\n \"anvia.usage.cached_input_tokens\": usage.cachedInputTokens,\n \"anvia.usage.cache_creation_input_tokens\": usage.cacheCreationInputTokens,\n };\n}\n\nfunction modelParameters(\n request: AgentGenerationStartArgs[\"request\"],\n): Record<string, string | number | undefined> {\n return {\n \"anvia.generation.temperature\": request.temperature,\n \"anvia.generation.max_tokens\": request.maxTokens,\n \"anvia.generation.tool_choice\":\n request.toolChoice === undefined\n ? undefined\n : typeof request.toolChoice === \"string\"\n ? request.toolChoice\n : request.toolChoice.name,\n };\n}\n\nfunction metadataAttributes(\n prefix: string,\n metadata: Record<string, unknown> | undefined,\n): Attributes {\n const attributes: Attributes = {};\n for (const [key, value] of Object.entries(metadata ?? {})) {\n const serialized = serializeMetadataValue(value);\n if (serialized !== undefined) {\n attributes[`${prefix}.${key}`] = serialized;\n }\n }\n return attributes;\n}\n\nfunction compactAttributes(values: Record<string, Attributes[string]>): Attributes {\n return Object.fromEntries(\n Object.entries(values).filter((entry): entry is [string, NonNullable<Attributes[string]>] => {\n const [, value] = entry;\n return value !== undefined;\n }),\n );\n}\n\nfunction parentContextFromTraceId(traceId: string | undefined): Context {\n if (!isValidTraceId(traceId)) {\n return context.active();\n }\n return trace.setSpanContext(ROOT_CONTEXT, {\n traceId,\n spanId: \"0000000000000001\",\n traceFlags: TraceFlags.SAMPLED,\n isRemote: true,\n });\n}\n\nfunction isValidTraceId(traceId: string | undefined): traceId is string {\n return (\n traceId !== undefined &&\n /^[0-9a-f]{32}$/i.test(traceId) &&\n traceId !== \"00000000000000000000000000000000\"\n );\n}\n\nfunction recordSpanError(span: Span, error: unknown): void {\n span.recordException(error instanceof Error ? error : errorMessage(error));\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: errorMessage(error),\n });\n}\n\nfunction jsonString(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch {\n return \"<failed to serialize>\";\n }\n}\n\nfunction serializeMetadataValue(value: unknown): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n return jsonString(value);\n}\n\nfunction emptyToUndefined(value: string | undefined): string | undefined {\n return value === undefined || value.length === 0 ? undefined : value;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n type AgentGenerationEndArgs,\n type AgentGenerationErrorArgs,\n type AgentGenerationObserver,\n type AgentGenerationStartArgs,\n type AgentObserver,\n type AgentRunEndArgs,\n type AgentRunErrorArgs,\n type AgentRunObserver,\n type AgentRunStartArgs,\n type AgentToolEndArgs,\n type AgentToolErrorArgs,\n type AgentToolObserver,\n type AgentToolStartArgs,\n type AgentToolStreamEventArgs,\n type AgentTraceInfo,\n textFromAssistantContent,\n} from \"@anvia/core\";\nimport {\n type Attributes,\n type Context,\n context,\n ROOT_CONTEXT,\n type Span,\n SpanKind,\n SpanStatusCode,\n TraceFlags,\n type Tracer,\n trace,\n} from \"@opentelemetry/api\";\n\nexport type OtelTracingOptions = {\n tracer?: Tracer | undefined;\n tracerName?: string | undefined;\n tracerVersion?: string | undefined;\n serviceName?: string | undefined;\n};\n\nexport type OtelTracing = AgentObserver;\n\nexport const otel = {\n create(options: OtelTracingOptions = {}): OtelTracing {\n return new OtelAgentObserver(options);\n },\n};\n\nclass OtelAgentObserver implements OtelTracing {\n private readonly tracer: Tracer;\n private readonly serviceName: string | undefined;\n\n constructor(options: OtelTracingOptions) {\n this.tracer =\n options.tracer ??\n trace.getTracer(\n emptyToUndefined(options.tracerName) ?? \"@anvia/otel\",\n emptyToUndefined(options.tracerVersion),\n );\n this.serviceName = emptyToUndefined(options.serviceName);\n }\n\n startRun(args: AgentRunStartArgs): AgentRunObserver {\n const parentContext = parentContextFromTraceId(args.trace?.traceId);\n const root = this.tracer.startSpan(\n rootSpanName(args),\n {\n kind: SpanKind.INTERNAL,\n attributes: runStartAttributes(args, this.serviceName),\n },\n parentContext,\n );\n\n return new OtelRunObserver(this.tracer, root);\n }\n}\n\nclass OtelRunObserver implements AgentRunObserver {\n readonly trace: AgentTraceInfo;\n private readonly rootContext: Context;\n\n constructor(\n private readonly tracer: Tracer,\n private readonly root: Span,\n ) {\n const spanContext = root.spanContext();\n this.trace = {\n traceId: spanContext.traceId,\n observationId: spanContext.spanId,\n };\n this.rootContext = trace.setSpan(ROOT_CONTEXT, root);\n }\n\n startGeneration(args: AgentGenerationStartArgs): AgentGenerationObserver {\n const generation = this.tracer.startSpan(\n `model.turn.${args.turn}`,\n {\n kind: SpanKind.CLIENT,\n attributes: generationStartAttributes(args),\n },\n this.rootContext,\n );\n return new OtelGenerationObserver(generation);\n }\n\n startTool(args: AgentToolStartArgs): AgentToolObserver {\n const tool = this.tracer.startSpan(\n `tool.${args.toolName}`,\n {\n kind: SpanKind.INTERNAL,\n attributes: toolStartAttributes(args),\n },\n this.rootContext,\n );\n return new OtelToolObserver(this.tracer, tool);\n }\n\n end(args: AgentRunEndArgs): void {\n this.root.setAttributes(runEndAttributes(args));\n this.root.setStatus({ code: SpanStatusCode.OK });\n this.root.end();\n }\n\n error(args: AgentRunErrorArgs): void {\n recordSpanError(this.root, args.error);\n this.root.setAttributes(runErrorAttributes(args));\n this.root.end();\n }\n}\n\nclass OtelGenerationObserver implements AgentGenerationObserver {\n constructor(private readonly generation: Span) {}\n\n end(args: AgentGenerationEndArgs): void {\n this.generation.setAttributes(generationEndAttributes(args));\n this.generation.setStatus({ code: SpanStatusCode.OK });\n this.generation.end();\n }\n\n error(args: AgentGenerationErrorArgs): void {\n recordSpanError(this.generation, args.error);\n this.generation.setAttributes({\n \"anvia.generation.turn\": args.turn,\n });\n this.generation.end();\n }\n}\n\nclass OtelToolObserver implements AgentToolObserver {\n private readonly childAgents = new Map<string, Span>();\n private readonly childGenerations = new Map<string, Span>();\n private readonly childTools: Array<{\n agentId: string;\n toolName: string;\n toolCallId?: string;\n span: Span;\n ended: boolean;\n }> = [];\n private readonly toolContext: Context;\n\n constructor(\n private readonly tracer: Tracer,\n private readonly tool: Span,\n ) {\n this.toolContext = trace.setSpan(ROOT_CONTEXT, tool);\n }\n\n streamEvent(args: AgentToolStreamEventArgs): void {\n const wrapper = args.event;\n const child = isRecord(wrapper.event) ? wrapper.event : undefined;\n if (child === undefined) {\n return;\n }\n\n const agentId = wrapper.agentId;\n const agentName = wrapper.agentName;\n const childTurn = typeof child.turn === \"number\" ? child.turn : args.turn;\n const agent = this.childAgent(agentId, agentName, args);\n\n if (child.type === \"turn_start\") {\n const generation = this.tracer.startSpan(\n `${agentLabel(agentId, agentName)}.model.turn.${childTurn}`,\n {\n kind: SpanKind.CLIENT,\n attributes: compactAttributes({\n \"anvia.child_agent.id\": agentId,\n \"anvia.child_agent.name\": agentName,\n \"anvia.child_agent.turn\": childTurn,\n \"anvia.parent_tool.name\": args.toolName,\n \"anvia.parent_tool.internal_call_id\": args.internalCallId,\n \"anvia.parent_tool.call_id\": args.toolCallId,\n \"anvia.generation.input\": jsonString({\n prompt: child.prompt,\n history: child.history,\n }),\n }),\n },\n trace.setSpan(ROOT_CONTEXT, agent),\n );\n this.childGenerations.set(generationKey(agentId, childTurn), generation);\n return;\n }\n\n if (child.type === \"turn_end\") {\n const generation = this.childGenerations.get(generationKey(agentId, childTurn));\n if (generation !== undefined) {\n generation.setAttributes(\n compactAttributes({\n \"anvia.child_agent.id\": agentId,\n \"anvia.child_agent.name\": agentName,\n \"anvia.child_agent.turn\": childTurn,\n \"anvia.generation.output\": jsonString(child.response),\n ...(isRecord(child.response) && isRecord(child.response.usage)\n ? usageAttributesFromRecord(child.response.usage)\n : {}),\n }),\n );\n generation.setStatus({ code: SpanStatusCode.OK });\n generation.end();\n this.childGenerations.delete(generationKey(agentId, childTurn));\n }\n return;\n }\n\n if (child.type === \"tool_call\" && isRecord(child.toolCall)) {\n const toolCall = child.toolCall;\n const toolCallFunction = isRecord(toolCall.function) ? toolCall.function : undefined;\n const toolName = typeof toolCallFunction?.name === \"string\" ? toolCallFunction.name : \"tool\";\n const toolCallId =\n typeof toolCall.callId === \"string\"\n ? toolCall.callId\n : typeof toolCall.id === \"string\"\n ? toolCall.id\n : undefined;\n const span = this.tracer.startSpan(\n `${agentLabel(agentId, agentName)}.${toolName}`,\n {\n kind: SpanKind.INTERNAL,\n attributes: compactAttributes({\n \"anvia.child_agent.id\": agentId,\n \"anvia.child_agent.name\": agentName,\n \"anvia.child_agent.turn\": childTurn,\n \"anvia.tool.name\": toolName,\n \"anvia.tool.call_id\": toolCallId,\n \"anvia.tool.args\": jsonString(toolCallFunction?.arguments ?? {}),\n \"anvia.parent_tool.name\": args.toolName,\n \"anvia.parent_tool.internal_call_id\": args.internalCallId,\n \"anvia.parent_tool.call_id\": args.toolCallId,\n }),\n },\n trace.setSpan(ROOT_CONTEXT, agent),\n );\n this.childTools.push({\n agentId,\n toolName,\n ...(toolCallId === undefined ? {} : { toolCallId }),\n span,\n ended: false,\n });\n return;\n }\n\n if (child.type === \"tool_result\") {\n const toolName = typeof child.toolName === \"string\" ? child.toolName : \"tool\";\n const toolCallId = typeof child.toolCallId === \"string\" ? child.toolCallId : undefined;\n const span = this.findChildTool(agentId, toolName, toolCallId);\n if (span !== undefined) {\n span.ended = true;\n span.span.setAttributes(\n compactAttributes({\n \"anvia.child_agent.id\": agentId,\n \"anvia.child_agent.name\": agentName,\n \"anvia.child_agent.turn\": childTurn,\n \"anvia.tool.name\": toolName,\n \"anvia.tool.call_id\": toolCallId,\n \"anvia.tool.internal_call_id\":\n typeof child.internalCallId === \"string\" ? child.internalCallId : undefined,\n \"anvia.tool.args\": typeof child.args === \"string\" ? child.args : undefined,\n \"anvia.tool.result\": typeof child.result === \"string\" ? child.result : undefined,\n }),\n );\n span.span.setStatus({ code: SpanStatusCode.OK });\n span.span.end();\n }\n return;\n }\n\n if (child.type === \"final\") {\n agent.setAttributes(\n compactAttributes({\n \"anvia.child_agent.output\": typeof child.output === \"string\" ? child.output : undefined,\n \"anvia.child_agent.messages\": jsonString(child.messages),\n ...(isRecord(child.usage) ? usageAttributesFromRecord(child.usage) : {}),\n }),\n );\n agent.setStatus({ code: SpanStatusCode.OK });\n agent.end();\n this.childAgents.delete(agentId);\n return;\n }\n\n if (child.type === \"error\") {\n recordSpanError(agent, child.error);\n agent.end();\n this.childAgents.delete(agentId);\n }\n }\n\n end(args: AgentToolEndArgs): void {\n this.endOpenChildren();\n this.tool.setAttributes(toolEndAttributes(args));\n this.tool.setStatus({ code: SpanStatusCode.OK });\n this.tool.end();\n }\n\n error(args: AgentToolErrorArgs): void {\n this.endOpenChildren();\n recordSpanError(this.tool, args.error);\n this.tool.setAttributes(toolErrorAttributes(args));\n this.tool.end();\n }\n\n private childAgent(\n agentId: string,\n agentName: string | undefined,\n args: AgentToolStartArgs,\n ): Span {\n const existing = this.childAgents.get(agentId);\n if (existing !== undefined) {\n return existing;\n }\n const span = this.tracer.startSpan(\n `${agentLabel(agentId, agentName)}.run`,\n {\n kind: SpanKind.INTERNAL,\n attributes: compactAttributes({\n \"anvia.child_agent.id\": agentId,\n \"anvia.child_agent.name\": agentName,\n \"anvia.parent_tool.name\": args.toolName,\n \"anvia.parent_tool.internal_call_id\": args.internalCallId,\n \"anvia.parent_tool.call_id\": args.toolCallId,\n }),\n },\n this.toolContext,\n );\n this.childAgents.set(agentId, span);\n return span;\n }\n\n private findChildTool(\n agentId: string,\n toolName: string,\n toolCallId: string | undefined,\n ): (typeof this.childTools)[number] | undefined {\n for (let index = this.childTools.length - 1; index >= 0; index -= 1) {\n const childTool = this.childTools[index];\n if (\n childTool === undefined ||\n childTool.ended ||\n childTool.agentId !== agentId ||\n childTool.toolName !== toolName\n ) {\n continue;\n }\n if (toolCallId === undefined || childTool.toolCallId === toolCallId) {\n return childTool;\n }\n }\n return undefined;\n }\n\n private endOpenChildren(): void {\n for (const generation of this.childGenerations.values()) {\n generation.end();\n }\n this.childGenerations.clear();\n for (const tool of this.childTools) {\n if (!tool.ended) {\n tool.span.end();\n tool.ended = true;\n }\n }\n for (const agent of this.childAgents.values()) {\n agent.end();\n }\n this.childAgents.clear();\n }\n}\n\nfunction rootSpanName(args: AgentRunStartArgs): string {\n return args.agentName === undefined || args.agentName.length === 0\n ? \"agent.run\"\n : `agent.${args.agentName}`;\n}\n\nfunction runStartAttributes(args: AgentRunStartArgs, serviceName: string | undefined): Attributes {\n return compactAttributes({\n \"service.name\": serviceName,\n \"anvia.agent.name\": args.agentName,\n \"anvia.agent.description\": args.agentDescription,\n \"anvia.agent.instructions\": args.instructions,\n \"anvia.run.max_turns\": args.maxTurns,\n \"anvia.run.prompt\": jsonString(args.prompt),\n \"anvia.run.history\": jsonString(args.history),\n \"anvia.trace.name\": args.trace?.name ?? args.agentName,\n \"anvia.trace.user_id\": args.trace?.userId,\n \"anvia.trace.session_id\": args.trace?.sessionId,\n \"anvia.trace.tags\": args.trace?.tags,\n \"anvia.trace.version\": args.trace?.version,\n ...metadataAttributes(\"anvia.trace.metadata\", args.trace?.metadata),\n });\n}\n\nfunction runEndAttributes(args: AgentRunEndArgs): Attributes {\n return compactAttributes({\n \"anvia.run.output\": args.output,\n \"anvia.run.messages\": jsonString(args.messages),\n ...usageAttributes(args.usage),\n });\n}\n\nfunction runErrorAttributes(args: AgentRunErrorArgs): Attributes {\n return compactAttributes({\n \"anvia.run.error\": errorMessage(args.error),\n \"anvia.run.messages\": jsonString(args.messages),\n ...usageAttributes(args.usage),\n });\n}\n\nfunction generationStartAttributes(args: AgentGenerationStartArgs): Attributes {\n const params = modelParameters(args.request);\n return compactAttributes({\n \"anvia.generation.turn\": args.turn,\n \"anvia.generation.input\": jsonString(args.request.chatHistory),\n \"anvia.generation.model\": args.request.model ?? \"default\",\n \"anvia.generation.tool_count\": args.request.tools.length,\n \"anvia.generation.has_output_schema\": args.request.outputSchema !== undefined,\n ...params,\n });\n}\n\nfunction generationEndAttributes(args: AgentGenerationEndArgs): Attributes {\n return compactAttributes({\n \"anvia.generation.turn\": args.turn,\n \"anvia.generation.message_id\": args.response.messageId,\n \"anvia.generation.output\": jsonString(args.response.choice),\n \"anvia.generation.output_text\": textFromAssistantContent(args.response.choice),\n \"anvia.generation.first_delta_ms\": args.firstDeltaMs,\n ...usageAttributes(args.response.usage),\n });\n}\n\nfunction toolStartAttributes(args: AgentToolStartArgs): Attributes {\n return compactAttributes({\n \"anvia.tool.name\": args.toolName,\n \"anvia.tool.turn\": args.turn,\n \"anvia.tool.args\": args.args,\n \"anvia.tool.call\": jsonString(args.toolCall),\n \"anvia.tool.internal_call_id\": args.internalCallId,\n \"anvia.tool.call_id\": args.toolCallId,\n });\n}\n\nfunction toolEndAttributes(args: AgentToolEndArgs): Attributes {\n return compactAttributes({\n \"anvia.tool.name\": args.toolName,\n \"anvia.tool.turn\": args.turn,\n \"anvia.tool.result\": args.result,\n \"anvia.tool.skipped\": args.skipped,\n \"anvia.tool.internal_call_id\": args.internalCallId,\n \"anvia.tool.call_id\": args.toolCallId,\n });\n}\n\nfunction toolErrorAttributes(args: AgentToolErrorArgs): Attributes {\n return compactAttributes({\n \"anvia.tool.name\": args.toolName,\n \"anvia.tool.turn\": args.turn,\n \"anvia.tool.error\": errorMessage(args.error),\n \"anvia.tool.internal_call_id\": args.internalCallId,\n \"anvia.tool.call_id\": args.toolCallId,\n });\n}\n\nfunction usageAttributes(usage: AgentRunEndArgs[\"usage\"]): Attributes {\n return {\n \"anvia.usage.input_tokens\": usage.inputTokens,\n \"anvia.usage.output_tokens\": usage.outputTokens,\n \"anvia.usage.total_tokens\": usage.totalTokens,\n \"anvia.usage.cached_input_tokens\": usage.cachedInputTokens,\n \"anvia.usage.cache_creation_input_tokens\": usage.cacheCreationInputTokens,\n };\n}\n\nfunction usageAttributesFromRecord(usage: Record<string, unknown>): Attributes {\n return compactAttributes({\n \"anvia.usage.input_tokens\": numberValue(usage.inputTokens),\n \"anvia.usage.output_tokens\": numberValue(usage.outputTokens),\n \"anvia.usage.total_tokens\": numberValue(usage.totalTokens),\n \"anvia.usage.cached_input_tokens\": numberValue(usage.cachedInputTokens),\n \"anvia.usage.cache_creation_input_tokens\": numberValue(usage.cacheCreationInputTokens),\n });\n}\n\nfunction modelParameters(\n request: AgentGenerationStartArgs[\"request\"],\n): Record<string, string | number | undefined> {\n return {\n \"anvia.generation.temperature\": request.temperature,\n \"anvia.generation.max_tokens\": request.maxTokens,\n \"anvia.generation.tool_choice\":\n request.toolChoice === undefined\n ? undefined\n : typeof request.toolChoice === \"string\"\n ? request.toolChoice\n : request.toolChoice.name,\n };\n}\n\nfunction metadataAttributes(\n prefix: string,\n metadata: Record<string, unknown> | undefined,\n): Attributes {\n const attributes: Attributes = {};\n for (const [key, value] of Object.entries(metadata ?? {})) {\n const serialized = serializeMetadataValue(value);\n if (serialized !== undefined) {\n attributes[`${prefix}.${key}`] = serialized;\n }\n }\n return attributes;\n}\n\nfunction compactAttributes(values: Record<string, Attributes[string]>): Attributes {\n return Object.fromEntries(\n Object.entries(values).filter((entry): entry is [string, NonNullable<Attributes[string]>] => {\n const [, value] = entry;\n return value !== undefined;\n }),\n );\n}\n\nfunction parentContextFromTraceId(traceId: string | undefined): Context {\n if (!isValidTraceId(traceId)) {\n return context.active();\n }\n return trace.setSpanContext(ROOT_CONTEXT, {\n traceId,\n spanId: \"0000000000000001\",\n traceFlags: TraceFlags.SAMPLED,\n isRemote: true,\n });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nfunction generationKey(agentId: string, turn: number): string {\n return `${agentId}:${turn}`;\n}\n\nfunction agentLabel(agentId: string, agentName: string | undefined): string {\n return (agentName ?? agentId).replaceAll(/\\s+/g, \"_\");\n}\n\nfunction isValidTraceId(traceId: string | undefined): traceId is string {\n return (\n traceId !== undefined &&\n /^[0-9a-f]{32}$/i.test(traceId) &&\n traceId !== \"00000000000000000000000000000000\"\n );\n}\n\nfunction recordSpanError(span: Span, error: unknown): void {\n span.recordException(error instanceof Error ? error : errorMessage(error));\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: errorMessage(error),\n });\n}\n\nfunction jsonString(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch {\n return \"<failed to serialize>\";\n }\n}\n\nfunction serializeMetadataValue(value: unknown): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n return jsonString(value);\n}\n\nfunction emptyToUndefined(value: string | undefined): string | undefined {\n return value === undefined || value.length === 0 ? undefined : value;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anvia/otel",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "OpenTelemetry tracing adapter for Anvia.",
|
|
5
5
|
"author": "anvia",
|
|
6
6
|
"maintainer": "Indra Zulfi",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@opentelemetry/api": "^1.9.1",
|
|
22
|
-
"@anvia/core": "0.
|
|
22
|
+
"@anvia/core": "0.2.3"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^24.9.1",
|