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