@anvia/otel 0.1.0 → 0.1.1

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 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":";AAAA;AAAA,EAeE;AAAA,OACK;AACP;AAAA,EAGE;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAWA,IAAM,OAAO;AAAA,EAClB,OAAO,UAA8B,CAAC,GAAgB;AACpD,WAAO,IAAI,kBAAkB,OAAO;AAAA,EACtC;AACF;AAEA,IAAM,oBAAN,MAA+C;AAAA,EAC5B;AAAA,EACA;AAAA,EAEjB,YAAY,SAA6B;AACvC,SAAK,SACH,QAAQ,UACR,MAAM;AAAA,MACJ,iBAAiB,QAAQ,UAAU,KAAK;AAAA,MACxC,iBAAiB,QAAQ,aAAa;AAAA,IACxC;AACF,SAAK,cAAc,iBAAiB,QAAQ,WAAW;AAAA,EACzD;AAAA,EAEA,SAAS,MAA2C;AAClD,UAAM,gBAAgB,yBAAyB,KAAK,OAAO,OAAO;AAClE,UAAM,OAAO,KAAK,OAAO;AAAA,MACvB,aAAa,IAAI;AAAA,MACjB;AAAA,QACE,MAAM,SAAS;AAAA,QACf,YAAY,mBAAmB,MAAM,KAAK,WAAW;AAAA,MACvD;AAAA,MACA;AAAA,IACF;AAEA,WAAO,IAAI,gBAAgB,KAAK,QAAQ,IAAI;AAAA,EAC9C;AACF;AAEA,IAAM,kBAAN,MAAkD;AAAA,EAIhD,YACmB,QACA,MACjB;AAFiB;AACA;AAEjB,UAAM,cAAc,KAAK,YAAY;AACrC,SAAK,QAAQ;AAAA,MACX,SAAS,YAAY;AAAA,MACrB,eAAe,YAAY;AAAA,IAC7B;AACA,SAAK,cAAc,MAAM,QAAQ,cAAc,IAAI;AAAA,EACrD;AAAA,EATmB;AAAA,EACA;AAAA,EALV;AAAA,EACQ;AAAA,EAcjB,gBAAgB,MAAyD;AACvE,UAAM,aAAa,KAAK,OAAO;AAAA,MAC7B,cAAc,KAAK,IAAI;AAAA,MACvB;AAAA,QACE,MAAM,SAAS;AAAA,QACf,YAAY,0BAA0B,IAAI;AAAA,MAC5C;AAAA,MACA,KAAK;AAAA,IACP;AACA,WAAO,IAAI,uBAAuB,UAAU;AAAA,EAC9C;AAAA,EAEA,UAAU,MAA6C;AACrD,UAAM,OAAO,KAAK,OAAO;AAAA,MACvB,QAAQ,KAAK,QAAQ;AAAA,MACrB;AAAA,QACE,MAAM,SAAS;AAAA,QACf,YAAY,oBAAoB,IAAI;AAAA,MACtC;AAAA,MACA,KAAK;AAAA,IACP;AACA,WAAO,IAAI,iBAAiB,IAAI;AAAA,EAClC;AAAA,EAEA,IAAI,MAA6B;AAC/B,SAAK,KAAK,cAAc,iBAAiB,IAAI,CAAC;AAC9C,SAAK,KAAK,UAAU,EAAE,MAAM,eAAe,GAAG,CAAC;AAC/C,SAAK,KAAK,IAAI;AAAA,EAChB;AAAA,EAEA,MAAM,MAA+B;AACnC,oBAAgB,KAAK,MAAM,KAAK,KAAK;AACrC,SAAK,KAAK,cAAc,mBAAmB,IAAI,CAAC;AAChD,SAAK,KAAK,IAAI;AAAA,EAChB;AACF;AAEA,IAAM,yBAAN,MAAgE;AAAA,EAC9D,YAA6B,YAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,IAAI,MAAoC;AACtC,SAAK,WAAW,cAAc,wBAAwB,IAAI,CAAC;AAC3D,SAAK,WAAW,UAAU,EAAE,MAAM,eAAe,GAAG,CAAC;AACrD,SAAK,WAAW,IAAI;AAAA,EACtB;AAAA,EAEA,MAAM,MAAsC;AAC1C,oBAAgB,KAAK,YAAY,KAAK,KAAK;AAC3C,SAAK,WAAW,cAAc;AAAA,MAC5B,yBAAyB,KAAK;AAAA,IAChC,CAAC;AACD,SAAK,WAAW,IAAI;AAAA,EACtB;AACF;AAEA,IAAM,mBAAN,MAAoD;AAAA,EAClD,YAA6B,MAAY;AAAZ;AAAA,EAAa;AAAA,EAAb;AAAA,EAE7B,IAAI,MAA8B;AAChC,SAAK,KAAK,cAAc,kBAAkB,IAAI,CAAC;AAC/C,SAAK,KAAK,UAAU,EAAE,MAAM,eAAe,GAAG,CAAC;AAC/C,SAAK,KAAK,IAAI;AAAA,EAChB;AAAA,EAEA,MAAM,MAAgC;AACpC,oBAAgB,KAAK,MAAM,KAAK,KAAK;AACrC,SAAK,KAAK,cAAc,oBAAoB,IAAI,CAAC;AACjD,SAAK,KAAK,IAAI;AAAA,EAChB;AACF;AAEA,SAAS,aAAa,MAAiC;AACrD,SAAO,KAAK,cAAc,UAAa,KAAK,UAAU,WAAW,IAC7D,cACA,SAAS,KAAK,SAAS;AAC7B;AAEA,SAAS,mBAAmB,MAAyB,aAA6C;AAChG,SAAO,kBAAkB;AAAA,IACvB,gBAAgB;AAAA,IAChB,oBAAoB,KAAK;AAAA,IACzB,2BAA2B,KAAK;AAAA,IAChC,4BAA4B,KAAK;AAAA,IACjC,uBAAuB,KAAK;AAAA,IAC5B,oBAAoB,WAAW,KAAK,MAAM;AAAA,IAC1C,qBAAqB,WAAW,KAAK,OAAO;AAAA,IAC5C,oBAAoB,KAAK,OAAO,QAAQ,KAAK;AAAA,IAC7C,uBAAuB,KAAK,OAAO;AAAA,IACnC,0BAA0B,KAAK,OAAO;AAAA,IACtC,oBAAoB,KAAK,OAAO;AAAA,IAChC,uBAAuB,KAAK,OAAO;AAAA,IACnC,GAAG,mBAAmB,wBAAwB,KAAK,OAAO,QAAQ;AAAA,EACpE,CAAC;AACH;AAEA,SAAS,iBAAiB,MAAmC;AAC3D,SAAO,kBAAkB;AAAA,IACvB,oBAAoB,KAAK;AAAA,IACzB,sBAAsB,WAAW,KAAK,QAAQ;AAAA,IAC9C,GAAG,gBAAgB,KAAK,KAAK;AAAA,EAC/B,CAAC;AACH;AAEA,SAAS,mBAAmB,MAAqC;AAC/D,SAAO,kBAAkB;AAAA,IACvB,mBAAmB,aAAa,KAAK,KAAK;AAAA,IAC1C,sBAAsB,WAAW,KAAK,QAAQ;AAAA,IAC9C,GAAG,gBAAgB,KAAK,KAAK;AAAA,EAC/B,CAAC;AACH;AAEA,SAAS,0BAA0B,MAA4C;AAC7E,QAAM,SAAS,gBAAgB,KAAK,OAAO;AAC3C,SAAO,kBAAkB;AAAA,IACvB,yBAAyB,KAAK;AAAA,IAC9B,0BAA0B,WAAW,KAAK,QAAQ,WAAW;AAAA,IAC7D,0BAA0B,KAAK,QAAQ,SAAS;AAAA,IAChD,+BAA+B,KAAK,QAAQ,MAAM;AAAA,IAClD,sCAAsC,KAAK,QAAQ,iBAAiB;AAAA,IACpE,GAAG;AAAA,EACL,CAAC;AACH;AAEA,SAAS,wBAAwB,MAA0C;AACzE,SAAO,kBAAkB;AAAA,IACvB,yBAAyB,KAAK;AAAA,IAC9B,+BAA+B,KAAK,SAAS;AAAA,IAC7C,2BAA2B,WAAW,KAAK,SAAS,MAAM;AAAA,IAC1D,gCAAgC,yBAAyB,KAAK,SAAS,MAAM;AAAA,IAC7E,mCAAmC,KAAK;AAAA,IACxC,GAAG,gBAAgB,KAAK,SAAS,KAAK;AAAA,EACxC,CAAC;AACH;AAEA,SAAS,oBAAoB,MAAsC;AACjE,SAAO,kBAAkB;AAAA,IACvB,mBAAmB,KAAK;AAAA,IACxB,mBAAmB,KAAK;AAAA,IACxB,mBAAmB,KAAK;AAAA,IACxB,mBAAmB,WAAW,KAAK,QAAQ;AAAA,IAC3C,+BAA+B,KAAK;AAAA,IACpC,sBAAsB,KAAK;AAAA,EAC7B,CAAC;AACH;AAEA,SAAS,kBAAkB,MAAoC;AAC7D,SAAO,kBAAkB;AAAA,IACvB,mBAAmB,KAAK;AAAA,IACxB,mBAAmB,KAAK;AAAA,IACxB,qBAAqB,KAAK;AAAA,IAC1B,sBAAsB,KAAK;AAAA,IAC3B,+BAA+B,KAAK;AAAA,IACpC,sBAAsB,KAAK;AAAA,EAC7B,CAAC;AACH;AAEA,SAAS,oBAAoB,MAAsC;AACjE,SAAO,kBAAkB;AAAA,IACvB,mBAAmB,KAAK;AAAA,IACxB,mBAAmB,KAAK;AAAA,IACxB,oBAAoB,aAAa,KAAK,KAAK;AAAA,IAC3C,+BAA+B,KAAK;AAAA,IACpC,sBAAsB,KAAK;AAAA,EAC7B,CAAC;AACH;AAEA,SAAS,gBAAgB,OAA6C;AACpE,SAAO;AAAA,IACL,4BAA4B,MAAM;AAAA,IAClC,6BAA6B,MAAM;AAAA,IACnC,4BAA4B,MAAM;AAAA,IAClC,mCAAmC,MAAM;AAAA,IACzC,2CAA2C,MAAM;AAAA,EACnD;AACF;AAEA,SAAS,gBACP,SAC6C;AAC7C,SAAO;AAAA,IACL,gCAAgC,QAAQ;AAAA,IACxC,+BAA+B,QAAQ;AAAA,IACvC,gCACE,QAAQ,eAAe,SACnB,SACA,OAAO,QAAQ,eAAe,WAC5B,QAAQ,aACR,QAAQ,WAAW;AAAA,EAC7B;AACF;AAEA,SAAS,mBACP,QACA,UACY;AACZ,QAAM,aAAyB,CAAC;AAChC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,CAAC,CAAC,GAAG;AACzD,UAAM,aAAa,uBAAuB,KAAK;AAC/C,QAAI,eAAe,QAAW;AAC5B,iBAAW,GAAG,MAAM,IAAI,GAAG,EAAE,IAAI;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,QAAwD;AACjF,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,MAAM,EAAE,OAAO,CAAC,UAA8D;AAC3F,YAAM,CAAC,EAAE,KAAK,IAAI;AAClB,aAAO,UAAU;AAAA,IACnB,CAAC;AAAA,EACH;AACF;AAEA,SAAS,yBAAyB,SAAsC;AACtE,MAAI,CAAC,eAAe,OAAO,GAAG;AAC5B,WAAO,QAAQ,OAAO;AAAA,EACxB;AACA,SAAO,MAAM,eAAe,cAAc;AAAA,IACxC;AAAA,IACA,QAAQ;AAAA,IACR,YAAY,WAAW;AAAA,IACvB,UAAU;AAAA,EACZ,CAAC;AACH;AAEA,SAAS,eAAe,SAAgD;AACtE,SACE,YAAY,UACZ,kBAAkB,KAAK,OAAO,KAC9B,YAAY;AAEhB;AAEA,SAAS,gBAAgB,MAAY,OAAsB;AACzD,OAAK,gBAAgB,iBAAiB,QAAQ,QAAQ,aAAa,KAAK,CAAC;AACzE,OAAK,UAAU;AAAA,IACb,MAAM,eAAe;AAAA,IACrB,SAAS,aAAa,KAAK;AAAA,EAC7B,CAAC;AACH;AAEA,SAAS,WAAW,OAAwB;AAC1C,MAAI;AACF,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,uBAAuB,OAAoC;AAClE,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,SAAO,WAAW,KAAK;AACzB;AAEA,SAAS,iBAAiB,OAA+C;AACvE,SAAO,UAAU,UAAa,MAAM,WAAW,IAAI,SAAY;AACjE;AAEA,SAAS,aAAa,OAAwB;AAC5C,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;","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.0",
3
+ "version": "0.1.1",
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.1.0"
22
+ "@anvia/core": "0.1.5"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^24.9.1",