@microsoft/agents-a365-observability-extensions-openai 0.1.0-preview.30

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.
Files changed (42) hide show
  1. package/README.md +33 -0
  2. package/dist/cjs/Constants.d.ts +29 -0
  3. package/dist/cjs/Constants.d.ts.map +1 -0
  4. package/dist/cjs/Constants.js +37 -0
  5. package/dist/cjs/Constants.js.map +1 -0
  6. package/dist/cjs/OpenAIAgentsTraceInstrumentor.d.ts +43 -0
  7. package/dist/cjs/OpenAIAgentsTraceInstrumentor.d.ts.map +1 -0
  8. package/dist/cjs/OpenAIAgentsTraceInstrumentor.js +108 -0
  9. package/dist/cjs/OpenAIAgentsTraceInstrumentor.js.map +1 -0
  10. package/dist/cjs/OpenAIAgentsTraceProcessor.d.ts +84 -0
  11. package/dist/cjs/OpenAIAgentsTraceProcessor.d.ts.map +1 -0
  12. package/dist/cjs/OpenAIAgentsTraceProcessor.js +374 -0
  13. package/dist/cjs/OpenAIAgentsTraceProcessor.js.map +1 -0
  14. package/dist/cjs/Utils.d.ts +44 -0
  15. package/dist/cjs/Utils.d.ts.map +1 -0
  16. package/dist/cjs/Utils.js +221 -0
  17. package/dist/cjs/Utils.js.map +1 -0
  18. package/dist/cjs/index.d.ts +6 -0
  19. package/dist/cjs/index.d.ts.map +1 -0
  20. package/dist/cjs/index.js +14 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/esm/Constants.d.ts +29 -0
  23. package/dist/esm/Constants.d.ts.map +1 -0
  24. package/dist/esm/Constants.js +34 -0
  25. package/dist/esm/Constants.js.map +1 -0
  26. package/dist/esm/OpenAIAgentsTraceInstrumentor.d.ts +43 -0
  27. package/dist/esm/OpenAIAgentsTraceInstrumentor.d.ts.map +1 -0
  28. package/dist/esm/OpenAIAgentsTraceInstrumentor.js +104 -0
  29. package/dist/esm/OpenAIAgentsTraceInstrumentor.js.map +1 -0
  30. package/dist/esm/OpenAIAgentsTraceProcessor.d.ts +84 -0
  31. package/dist/esm/OpenAIAgentsTraceProcessor.d.ts.map +1 -0
  32. package/dist/esm/OpenAIAgentsTraceProcessor.js +337 -0
  33. package/dist/esm/OpenAIAgentsTraceProcessor.js.map +1 -0
  34. package/dist/esm/Utils.d.ts +44 -0
  35. package/dist/esm/Utils.d.ts.map +1 -0
  36. package/dist/esm/Utils.js +177 -0
  37. package/dist/esm/Utils.js.map +1 -0
  38. package/dist/esm/index.d.ts +6 -0
  39. package/dist/esm/index.d.ts.map +1 -0
  40. package/dist/esm/index.js +9 -0
  41. package/dist/esm/index.js.map +1 -0
  42. package/package.json +69 -0
@@ -0,0 +1,374 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // ------------------------------------------------------------------------------
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.OpenAIAgentsTraceProcessor = void 0;
40
+ /**
41
+ * Trace processor for OpenAI Agents SDK
42
+ * Converts OpenAI Agents SDK spans to OpenTelemetry spans
43
+ */
44
+ const api_1 = require("@opentelemetry/api");
45
+ const agents_a365_observability_1 = require("@microsoft/agents-a365-observability");
46
+ const Constants = __importStar(require("./Constants"));
47
+ const Utils = __importStar(require("./Utils"));
48
+ /**
49
+ * Processor for OpenAI Agents SDK traces
50
+ */
51
+ class OpenAIAgentsTraceProcessor {
52
+ constructor(tracer) {
53
+ this.rootSpans = new Map();
54
+ this.otelSpans = new Map();
55
+ this.tokens = new Map();
56
+ this.reverseHandoffsDict = new Map();
57
+ // Track span names for later access (since OTel Span doesn't expose name)
58
+ this.spanNames = new Map();
59
+ this.keyMappings = new Map([
60
+ ['mcp_tools' + Constants.GEN_AI_RESPONSE_CONTENT_KEY, agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EVENT_CONTENT],
61
+ ['mcp_tools' + Constants.GEN_AI_REQUEST_CONTENT_KEY, agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_TOOL_ARGS_KEY],
62
+ ['function' + Constants.GEN_AI_RESPONSE_CONTENT_KEY, agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EVENT_CONTENT],
63
+ ['function' + Constants.GEN_AI_REQUEST_CONTENT_KEY, agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_TOOL_ARGS_KEY],
64
+ ['generation' + Constants.GEN_AI_RESPONSE_CONTENT_KEY, agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY],
65
+ ['generation' + Constants.GEN_AI_REQUEST_CONTENT_KEY, agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY],
66
+ ]);
67
+ this.tracer = tracer;
68
+ }
69
+ getNewKey(spanType, key) {
70
+ return this.keyMappings.get(`${spanType}${key}`) ?? null;
71
+ }
72
+ /**
73
+ * Called to initialize the processor
74
+ */
75
+ async start() {
76
+ // Initialization logic if needed
77
+ }
78
+ /**
79
+ * Called when a trace starts
80
+ */
81
+ async onTraceStart(_trace) {
82
+ // Trace start - no root span creation needed
83
+ }
84
+ /**
85
+ * Called when a trace ends
86
+ */
87
+ async onTraceEnd(trace) {
88
+ const rootSpan = this.rootSpans.get(trace.traceId);
89
+ if (rootSpan) {
90
+ this.rootSpans.delete(trace.traceId);
91
+ rootSpan.end();
92
+ }
93
+ }
94
+ /**
95
+ * Called when a span starts
96
+ */
97
+ async onSpanStart(span) {
98
+ const spanId = span.spanId;
99
+ const parentId = span.parentId;
100
+ const traceId = span.traceId;
101
+ const startedAt = span.startedAt;
102
+ const spanData = span.spanData;
103
+ if (!startedAt || !spanId || !traceId) {
104
+ return;
105
+ }
106
+ const startTime = new Date(startedAt).getTime();
107
+ // Find parent span
108
+ const parentSpan = parentId
109
+ ? this.otelSpans.get(parentId)
110
+ : this.rootSpans.get(traceId);
111
+ // Create context with parent
112
+ const parentContext = parentSpan
113
+ ? api_1.trace.setSpan(api_1.context.active(), parentSpan)
114
+ : api_1.context.active();
115
+ const spanName = Utils.getSpanName(span);
116
+ // Start OpenTelemetry span
117
+ const otelSpan = this.tracer.startSpan(spanName, {
118
+ startTime,
119
+ attributes: {
120
+ [agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY]: Utils.getSpanKind(spanData),
121
+ [agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_SYSTEM_KEY]: 'openai',
122
+ },
123
+ }, parentContext);
124
+ if (!parentSpan) {
125
+ this.rootSpans.set(traceId, otelSpan);
126
+ }
127
+ // Store span and activate context
128
+ this.otelSpans.set(spanId, otelSpan);
129
+ this.spanNames.set(otelSpan, spanName);
130
+ const newContext = api_1.trace.setSpan(api_1.context.active(), otelSpan);
131
+ const token = api_1.context.with(newContext, () => api_1.context.active());
132
+ this.tokens.set(spanId, token);
133
+ }
134
+ /**
135
+ * Called when a span ends
136
+ */
137
+ async onSpanEnd(span) {
138
+ const spanId = span.spanId;
139
+ const traceId = span.traceId;
140
+ const endedAt = span.endedAt;
141
+ const spanData = span.spanData;
142
+ if (!spanId || !traceId) {
143
+ return;
144
+ }
145
+ // Cleanup context token
146
+ const token = this.tokens.get(spanId);
147
+ if (token) {
148
+ this.tokens.delete(spanId);
149
+ // Context cleanup is automatic in JS
150
+ }
151
+ // Retrieve OpenTelemetry span
152
+ const otelSpan = this.otelSpans.get(spanId);
153
+ if (!otelSpan) {
154
+ return;
155
+ }
156
+ this.otelSpans.delete(spanId);
157
+ this.spanNames.delete(otelSpan);
158
+ // Update span name
159
+ otelSpan.updateName(Utils.getSpanName(span));
160
+ // Process based on span data type
161
+ if (spanData) {
162
+ this.processSpanData(otelSpan, spanData, traceId);
163
+ }
164
+ // Set end time and status
165
+ const endTime = endedAt ? new Date(endedAt).getTime() : undefined;
166
+ const status = Utils.getSpanStatus(span);
167
+ otelSpan.setStatus(status);
168
+ if (endTime) {
169
+ otelSpan.end(endTime);
170
+ }
171
+ else {
172
+ otelSpan.end();
173
+ }
174
+ }
175
+ /**
176
+ * Process span data based on type
177
+ */
178
+ processSpanData(otelSpan, data, traceId) {
179
+ const type = data.type;
180
+ switch (type) {
181
+ case 'response':
182
+ this.processResponseSpanData(otelSpan, data);
183
+ break;
184
+ case 'generation':
185
+ this.processGenerationSpanData(otelSpan, data, traceId);
186
+ break;
187
+ case 'function':
188
+ this.processFunctionSpanData(otelSpan, data, traceId);
189
+ break;
190
+ case 'mcp_tools':
191
+ this.processMCPListToolsSpanData(otelSpan, data);
192
+ break;
193
+ case 'handoff':
194
+ this.processHandoffSpanData(otelSpan, data, traceId);
195
+ break;
196
+ case 'agent':
197
+ this.processAgentSpanData(otelSpan, data, traceId);
198
+ break;
199
+ }
200
+ }
201
+ /**
202
+ * Process response span data
203
+ */
204
+ processResponseSpanData(otelSpan, data) {
205
+ const responseData = data;
206
+ // Handle both formats: _response/_input (actual format) and response/input (legacy format)
207
+ const responseObj = responseData._response || responseData.response;
208
+ const inputObj = responseData._input || responseData.input;
209
+ if (responseObj) {
210
+ const resp = responseObj;
211
+ // Store the output field for GEN_AI_RESPONSE_CONTENT_KEY
212
+ if (resp.output) {
213
+ if (typeof resp.output === 'string') {
214
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, resp.output);
215
+ }
216
+ else {
217
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, JSON.stringify(resp.output));
218
+ }
219
+ }
220
+ // Get attributes but filter out unwanted ones
221
+ const attrs = Utils.getAttributesFromResponse(responseObj);
222
+ Object.entries(attrs).forEach(([key, value]) => {
223
+ if (value !== null && value !== undefined &&
224
+ key !== Constants.GEN_AI_RESPONSE_CONTENT_KEY) {
225
+ otelSpan.setAttribute(key, value);
226
+ }
227
+ });
228
+ const modelName = attrs[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_REQUEST_MODEL_KEY] ?? '';
229
+ otelSpan.updateName(`${agents_a365_observability_1.InferenceOperationType.CHAT} ${modelName}`);
230
+ }
231
+ if (inputObj) {
232
+ if (typeof inputObj === 'string') {
233
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, inputObj);
234
+ }
235
+ else if (Array.isArray(inputObj)) {
236
+ // Store the complete _input structure as JSON
237
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, JSON.stringify(inputObj));
238
+ // Get attributes but filter out unwanted ones
239
+ const attrs = Utils.getAttributesFromInput(inputObj);
240
+ Object.entries(attrs).forEach(([key, value]) => {
241
+ if (value !== null && value !== undefined &&
242
+ key !== Constants.GEN_AI_REQUEST_CONTENT_KEY) {
243
+ otelSpan.setAttribute(key, value);
244
+ }
245
+ });
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * Process generation span data
251
+ */
252
+ processGenerationSpanData(otelSpan, data, traceId) {
253
+ const attrs = Utils.getAttributesFromGenerationSpanData(data);
254
+ Object.entries(attrs).forEach(([key, value]) => {
255
+ const shouldExcludeKey = key === agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY
256
+ || key === Constants.GEN_AI_EXECUTION_PAYLOAD_KEY;
257
+ if (value !== null && value !== undefined && !shouldExcludeKey) {
258
+ const newKey = this.getNewKey(data.type, key);
259
+ otelSpan.setAttribute(newKey || key, value);
260
+ }
261
+ });
262
+ this.stampCustomParent(otelSpan, traceId);
263
+ // Update span name with model
264
+ const operationName = attrs[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY];
265
+ const modelName = attrs[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_REQUEST_MODEL_KEY];
266
+ if (operationName && modelName) {
267
+ otelSpan.updateName(`${operationName} ${modelName}`);
268
+ }
269
+ }
270
+ /**
271
+ * Process function/tool span data
272
+ */
273
+ processFunctionSpanData(otelSpan, data, traceId) {
274
+ const functionData = data;
275
+ const attrs = Utils.getAttributesFromFunctionSpanData(data);
276
+ Object.entries(attrs).forEach(([key, value]) => {
277
+ if (value !== null && value !== undefined && key !== agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY) {
278
+ const newKey = this.getNewKey(data.type, key);
279
+ otelSpan.setAttribute(newKey || key, value);
280
+ }
281
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_TOOL_TYPE_KEY, 'function');
282
+ });
283
+ this.stampCustomParent(otelSpan, traceId);
284
+ // Use function name from data instead of span name
285
+ otelSpan.updateName(`${agents_a365_observability_1.OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME} ${functionData.name ?? ''}`);
286
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY, agents_a365_observability_1.OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME);
287
+ }
288
+ /**
289
+ * Process MCP list tools span data
290
+ */
291
+ processMCPListToolsSpanData(otelSpan, data) {
292
+ const attrs = Utils.getAttributesFromMCPListToolsSpanData(data);
293
+ Object.entries(attrs).forEach(([key, value]) => {
294
+ if (value !== null && value !== undefined && key !== agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY) {
295
+ const newKey = this.getNewKey(data.type, key);
296
+ otelSpan.setAttribute(newKey || key, value);
297
+ }
298
+ });
299
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY, agents_a365_observability_1.OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME);
300
+ const serverName = data.server ?? 'unknown';
301
+ const newSpanName = `${agents_a365_observability_1.OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME} ${serverName}`;
302
+ otelSpan.updateName(newSpanName);
303
+ if (serverName) {
304
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_TOOL_NAME_KEY, serverName);
305
+ }
306
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_TOOL_TYPE_KEY, 'extension');
307
+ }
308
+ /**
309
+ * Process handoff span data
310
+ */
311
+ processHandoffSpanData(otelSpan, data, traceId) {
312
+ const handoffData = data;
313
+ if (handoffData.to_agent && handoffData.from_agent) {
314
+ const key = `${handoffData.to_agent}:${traceId}`;
315
+ this.reverseHandoffsDict.set(key, handoffData.from_agent);
316
+ // Cap the size
317
+ while (this.reverseHandoffsDict.size > OpenAIAgentsTraceProcessor.MAX_HANDOFFS_IN_FLIGHT) {
318
+ const firstKey = this.reverseHandoffsDict.keys().next().value;
319
+ if (firstKey) {
320
+ this.reverseHandoffsDict.delete(firstKey);
321
+ }
322
+ }
323
+ }
324
+ }
325
+ /**
326
+ * Process agent span data
327
+ */
328
+ processAgentSpanData(otelSpan, data, traceId) {
329
+ const agentData = data;
330
+ if (agentData.name) {
331
+ otelSpan.setAttribute(Constants.GEN_AI_GRAPH_NODE_ID, agentData.name);
332
+ otelSpan.setAttribute(agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY, agents_a365_observability_1.OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME);
333
+ // Lookup parent node if exists
334
+ const key = `${agentData.name}:${traceId}`;
335
+ const parentNode = this.reverseHandoffsDict.get(key);
336
+ if (parentNode) {
337
+ this.reverseHandoffsDict.delete(key);
338
+ otelSpan.setAttribute(Constants.GEN_AI_GRAPH_NODE_PARENT_ID, parentNode);
339
+ }
340
+ // Update span name for agent
341
+ otelSpan.updateName(`${agents_a365_observability_1.OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME} ${agentData.name}`);
342
+ }
343
+ }
344
+ /**
345
+ * Stamp custom parent reference
346
+ */
347
+ stampCustomParent(otelSpan, traceId) {
348
+ const root = this.rootSpans.get(traceId);
349
+ if (!root) {
350
+ return;
351
+ }
352
+ const spanContext = root.spanContext();
353
+ const pidHex = `0x${spanContext.spanId}`;
354
+ otelSpan.setAttribute('custom.parent.span.id', pidHex);
355
+ }
356
+ /**
357
+ * Force flush
358
+ */
359
+ async forceFlush() {
360
+ // Implementation depends on tracer provider
361
+ }
362
+ /**
363
+ * Shutdown
364
+ */
365
+ async shutdown(_timeout) {
366
+ this.rootSpans.clear();
367
+ this.otelSpans.clear();
368
+ this.tokens.clear();
369
+ this.reverseHandoffsDict.clear();
370
+ }
371
+ }
372
+ exports.OpenAIAgentsTraceProcessor = OpenAIAgentsTraceProcessor;
373
+ OpenAIAgentsTraceProcessor.MAX_HANDOFFS_IN_FLIGHT = 1000;
374
+ //# sourceMappingURL=OpenAIAgentsTraceProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIAgentsTraceProcessor.js","sourceRoot":"","sources":["../../src/OpenAIAgentsTraceProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { SpanStatusCode } from '@opentelemetry/api';
2
+ import { Span as AgentsSpan, SpanData } from '@openai/agents-core/dist/tracing/spans';
3
+ /**
4
+ * Safely stringify an object to JSON
5
+ * @param obj - The object to stringify
6
+ * @returns JSON string representation or string conversion if JSON.stringify fails
7
+ */
8
+ export declare function safeJsonDumps(obj: unknown): string;
9
+ /**
10
+ * Get span name from OpenAI Agents SDK span
11
+ */
12
+ export declare function getSpanName(span: AgentsSpan<SpanData>): string;
13
+ /**
14
+ * Get span kind based on span data type
15
+ */
16
+ export declare function getSpanKind(spanData: SpanData | undefined): string;
17
+ /**
18
+ * Get attributes from generation span data
19
+ */
20
+ export declare function getAttributesFromGenerationSpanData(data: SpanData): Record<string, unknown>;
21
+ /**
22
+ * Get attributes from function span data
23
+ */
24
+ export declare function getAttributesFromFunctionSpanData(data: SpanData): Record<string, unknown>;
25
+ /**
26
+ * Get attributes from MCP list tools span data
27
+ */
28
+ export declare function getAttributesFromMCPListToolsSpanData(data: SpanData): Record<string, unknown>;
29
+ /**
30
+ * Get attributes from response span data
31
+ */
32
+ export declare function getAttributesFromResponse(response: unknown): Record<string, unknown>;
33
+ /**
34
+ * Get attributes from input data
35
+ */
36
+ export declare function getAttributesFromInput(input: unknown): Record<string, unknown>;
37
+ /**
38
+ * Get span status from OpenAI Agents SDK span
39
+ */
40
+ export declare function getSpanStatus(span: AgentsSpan<SpanData>): {
41
+ code: SpanStatusCode;
42
+ message?: string;
43
+ };
44
+ //# sourceMappingURL=Utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../src/Utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAiB9D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAqBlE;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwC3F;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBzF;AAED;;GAEG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAU7F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBpF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAU9E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAUpG"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ // ------------------------------------------------------------------------------
3
+ // Copyright (c) Microsoft Corporation. All rights reserved.
4
+ // ------------------------------------------------------------------------------
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.safeJsonDumps = safeJsonDumps;
40
+ exports.getSpanName = getSpanName;
41
+ exports.getSpanKind = getSpanKind;
42
+ exports.getAttributesFromGenerationSpanData = getAttributesFromGenerationSpanData;
43
+ exports.getAttributesFromFunctionSpanData = getAttributesFromFunctionSpanData;
44
+ exports.getAttributesFromMCPListToolsSpanData = getAttributesFromMCPListToolsSpanData;
45
+ exports.getAttributesFromResponse = getAttributesFromResponse;
46
+ exports.getAttributesFromInput = getAttributesFromInput;
47
+ exports.getSpanStatus = getSpanStatus;
48
+ const api_1 = require("@opentelemetry/api");
49
+ const agents_a365_observability_1 = require("@microsoft/agents-a365-observability");
50
+ const Constants = __importStar(require("./Constants"));
51
+ /**
52
+ * Safely stringify an object to JSON
53
+ * @param obj - The object to stringify
54
+ * @returns JSON string representation or string conversion if JSON.stringify fails
55
+ */
56
+ function safeJsonDumps(obj) {
57
+ try {
58
+ return JSON.stringify(obj);
59
+ }
60
+ catch {
61
+ return String(obj);
62
+ }
63
+ }
64
+ /**
65
+ * Get span name from OpenAI Agents SDK span
66
+ */
67
+ function getSpanName(span) {
68
+ const data = span.spanData;
69
+ // Check if data has a 'name' property (for agent, function, custom spans)
70
+ const dataWithName = data;
71
+ if (dataWithName?.name && typeof dataWithName.name === 'string') {
72
+ return dataWithName.name;
73
+ }
74
+ if (data?.type === 'handoff') {
75
+ const handoffData = data;
76
+ if (handoffData.to_agent) {
77
+ return `handoff to ${handoffData.to_agent}`;
78
+ }
79
+ }
80
+ return data?.type || 'unknown';
81
+ }
82
+ /**
83
+ * Get span kind based on span data type
84
+ */
85
+ function getSpanKind(spanData) {
86
+ if (!spanData?.type) {
87
+ return Constants.GEN_AI_SPAN_KIND_CHAIN_KEY;
88
+ }
89
+ switch (spanData.type) {
90
+ case 'agent':
91
+ return Constants.GEN_AI_SPAN_KIND_AGENT_KEY;
92
+ case 'function':
93
+ return Constants.GEN_AI_SPAN_KIND_TOOL_KEY;
94
+ case 'generation':
95
+ case 'response':
96
+ return Constants.GEN_AI_SPAN_KIND_LLM_KEY;
97
+ case 'handoff':
98
+ return Constants.GEN_AI_SPAN_KIND_CHAIN_KEY;
99
+ case 'custom':
100
+ case 'guardrail':
101
+ return Constants.GEN_AI_SPAN_KIND_CHAIN_KEY;
102
+ default:
103
+ return Constants.GEN_AI_SPAN_KIND_CHAIN_KEY;
104
+ }
105
+ }
106
+ /**
107
+ * Get attributes from generation span data
108
+ */
109
+ function getAttributesFromGenerationSpanData(data) {
110
+ const attributes = {
111
+ [agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_PROVIDER_NAME_KEY]: 'openai',
112
+ };
113
+ const genData = data;
114
+ if (typeof genData.model === 'string') {
115
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_REQUEST_MODEL_KEY] = genData.model;
116
+ }
117
+ if (genData.model_config || genData.modelConfig) {
118
+ const config = genData.model_config || genData.modelConfig;
119
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_PAYLOAD_KEY] = safeJsonDumps(config);
120
+ }
121
+ if (genData.input) {
122
+ attributes[Constants.GEN_AI_REQUEST_CONTENT_KEY] = safeJsonDumps(genData.input);
123
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY] = 'application/json';
124
+ }
125
+ if (genData.output) {
126
+ attributes[Constants.GEN_AI_RESPONSE_CONTENT_KEY] = safeJsonDumps(genData.output);
127
+ const output = genData.output;
128
+ if (output.id) {
129
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_RESPONSE_ID_KEY] = output.id;
130
+ }
131
+ }
132
+ if (genData.usage) {
133
+ const usage = genData.usage;
134
+ if (usage.input_tokens !== undefined) {
135
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY] = usage.input_tokens;
136
+ }
137
+ if (usage.output_tokens !== undefined) {
138
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY] = usage.output_tokens;
139
+ }
140
+ }
141
+ return attributes;
142
+ }
143
+ /**
144
+ * Get attributes from function span data
145
+ */
146
+ function getAttributesFromFunctionSpanData(data) {
147
+ const attributes = {};
148
+ const funcData = data;
149
+ if (funcData.name) {
150
+ attributes['gen_ai.tool.name'] = funcData.name;
151
+ }
152
+ if (funcData.input) {
153
+ attributes[Constants.GEN_AI_REQUEST_CONTENT_KEY] =
154
+ typeof funcData.input === 'string' ? funcData.input : safeJsonDumps(funcData.input);
155
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY] = 'application/json';
156
+ }
157
+ if (funcData.output !== undefined && funcData.output !== null) {
158
+ const output = typeof funcData.output === 'object' ? safeJsonDumps(funcData.output) : String(funcData.output);
159
+ attributes[Constants.GEN_AI_RESPONSE_CONTENT_KEY] = output;
160
+ }
161
+ return attributes;
162
+ }
163
+ /**
164
+ * Get attributes from MCP list tools span data
165
+ */
166
+ function getAttributesFromMCPListToolsSpanData(data) {
167
+ const attributes = {};
168
+ const mcpData = data;
169
+ if (mcpData.result) {
170
+ attributes[Constants.GEN_AI_RESPONSE_CONTENT_KEY] = safeJsonDumps(mcpData.result);
171
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY] = 'application/json';
172
+ }
173
+ return attributes;
174
+ }
175
+ /**
176
+ * Get attributes from response span data
177
+ */
178
+ function getAttributesFromResponse(response) {
179
+ const attributes = {};
180
+ const resp = response;
181
+ if (resp.model) {
182
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_REQUEST_MODEL_KEY] = resp.model;
183
+ }
184
+ if (resp.usage) {
185
+ const usage = resp.usage;
186
+ if (usage.input_tokens !== undefined) {
187
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY] = usage.input_tokens;
188
+ }
189
+ if (usage.output_tokens !== undefined) {
190
+ attributes[agents_a365_observability_1.OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY] = usage.output_tokens;
191
+ }
192
+ }
193
+ return attributes;
194
+ }
195
+ /**
196
+ * Get attributes from input data
197
+ */
198
+ function getAttributesFromInput(input) {
199
+ const attributes = {};
200
+ if (typeof input === 'string') {
201
+ attributes[Constants.GEN_AI_REQUEST_CONTENT_KEY] = input;
202
+ }
203
+ else if (Array.isArray(input)) {
204
+ attributes[Constants.GEN_AI_REQUEST_CONTENT_KEY] = safeJsonDumps(input);
205
+ }
206
+ return attributes;
207
+ }
208
+ /**
209
+ * Get span status from OpenAI Agents SDK span
210
+ */
211
+ function getSpanStatus(span) {
212
+ if (span.error) {
213
+ const message = span.error.message || span.error.data || 'Unknown error';
214
+ return {
215
+ code: api_1.SpanStatusCode.ERROR,
216
+ message: String(message),
217
+ };
218
+ }
219
+ return { code: api_1.SpanStatusCode.OK };
220
+ }
221
+ //# sourceMappingURL=Utils.js.map