@agentgov/sdk 0.1.1 → 0.1.3
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 +171 -270
- package/dist/exporters/openai-agents.d.ts +125 -0
- package/dist/exporters/openai-agents.d.ts.map +1 -0
- package/dist/exporters/openai-agents.js +413 -0
- package/dist/exporters/openai-agents.js.map +1 -0
- package/dist/exporters/openai-agents.types.d.ts +119 -0
- package/dist/exporters/openai-agents.types.d.ts.map +1 -0
- package/dist/exporters/openai-agents.types.js +10 -0
- package/dist/exporters/openai-agents.types.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/fetch.d.ts +4 -0
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +3 -0
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/lru-cache.d.ts +17 -0
- package/dist/utils/lru-cache.d.ts.map +1 -0
- package/dist/utils/lru-cache.js +50 -0
- package/dist/utils/lru-cache.js.map +1 -0
- package/package.json +11 -3
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Agents SDK Integration
|
|
3
|
+
*
|
|
4
|
+
* Exports traces from @openai/agents to AgentGov for observability and governance.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { BatchTraceProcessor, setTraceProcessors } from '@openai/agents'
|
|
9
|
+
* import { AgentGovExporter } from '@agentgov/sdk/openai-agents'
|
|
10
|
+
*
|
|
11
|
+
* setTraceProcessors([
|
|
12
|
+
* new BatchTraceProcessor(new AgentGovExporter({
|
|
13
|
+
* apiKey: process.env.AGENTGOV_API_KEY!,
|
|
14
|
+
* projectId: process.env.AGENTGOV_PROJECT_ID!,
|
|
15
|
+
* }))
|
|
16
|
+
* ])
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
import type { OpenAITrace, OpenAISpan, TracingExporter } from './openai-agents.types.js';
|
|
22
|
+
export type { TracingExporter, OpenAITrace, OpenAISpan } from './openai-agents.types.js';
|
|
23
|
+
export interface AgentGovExporterConfig {
|
|
24
|
+
/** API key from AgentGov dashboard (ag_xxx) */
|
|
25
|
+
apiKey: string;
|
|
26
|
+
/** Project ID */
|
|
27
|
+
projectId: string;
|
|
28
|
+
/** API base URL (default: https://api.agentgov.co) */
|
|
29
|
+
baseUrl?: string;
|
|
30
|
+
/** Enable debug logging (default: false) */
|
|
31
|
+
debug?: boolean;
|
|
32
|
+
/** Max entries in trace cache before eviction (default: 1000) */
|
|
33
|
+
maxCacheSize?: number;
|
|
34
|
+
/** Cache TTL in milliseconds (default: 3600000 = 1 hour) */
|
|
35
|
+
cacheTtl?: number;
|
|
36
|
+
/** Max retry attempts for failed requests (default: 3) */
|
|
37
|
+
maxRetries?: number;
|
|
38
|
+
/** Request timeout in ms (default: 30000) */
|
|
39
|
+
timeout?: number;
|
|
40
|
+
/** Callback for export errors (default: logs to console in debug mode) */
|
|
41
|
+
onError?: (error: Error, context: ExportErrorContext) => void;
|
|
42
|
+
/** Min spans to use batch endpoint (default: 5). Set to 0 to disable batching. */
|
|
43
|
+
batchThreshold?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface ExportErrorContext {
|
|
46
|
+
operation: 'createTrace' | 'createSpan' | 'createSpanBatch' | 'updateSpan';
|
|
47
|
+
externalId: string;
|
|
48
|
+
itemType: 'trace' | 'span';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* AgentGov exporter for OpenAI Agents SDK
|
|
52
|
+
*
|
|
53
|
+
* Implements the TracingExporter interface to send traces and spans
|
|
54
|
+
* from @openai/agents to AgentGov for observability and governance.
|
|
55
|
+
*/
|
|
56
|
+
export declare class AgentGovExporter implements TracingExporter {
|
|
57
|
+
private readonly client;
|
|
58
|
+
private readonly traceCache;
|
|
59
|
+
private readonly spanCache;
|
|
60
|
+
private readonly debug;
|
|
61
|
+
private readonly onError?;
|
|
62
|
+
private readonly batchThreshold;
|
|
63
|
+
constructor(config: AgentGovExporterConfig);
|
|
64
|
+
/**
|
|
65
|
+
* Export traces and spans to AgentGov
|
|
66
|
+
*/
|
|
67
|
+
export(items: (OpenAITrace | OpenAISpan)[], signal?: AbortSignal): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Export a single trace group (trace + its spans)
|
|
70
|
+
*/
|
|
71
|
+
private exportTraceGroup;
|
|
72
|
+
/**
|
|
73
|
+
* Export a single span to AgentGov
|
|
74
|
+
*/
|
|
75
|
+
private exportSpan;
|
|
76
|
+
/**
|
|
77
|
+
* Export multiple spans using batch endpoint
|
|
78
|
+
*/
|
|
79
|
+
private exportSpanBatch;
|
|
80
|
+
/**
|
|
81
|
+
* Map OpenAI span to AgentGov SpanInput
|
|
82
|
+
*/
|
|
83
|
+
private mapSpanToInput;
|
|
84
|
+
/**
|
|
85
|
+
* Add type-specific fields to span input
|
|
86
|
+
*/
|
|
87
|
+
private addTypeSpecificFields;
|
|
88
|
+
/**
|
|
89
|
+
* Build SpanUpdate from completed span data
|
|
90
|
+
*/
|
|
91
|
+
private buildSpanUpdate;
|
|
92
|
+
/**
|
|
93
|
+
* Map OpenAI span type to AgentGov SpanType
|
|
94
|
+
*/
|
|
95
|
+
private mapSpanType;
|
|
96
|
+
/**
|
|
97
|
+
* Get human-readable span name
|
|
98
|
+
*/
|
|
99
|
+
private getSpanName;
|
|
100
|
+
/**
|
|
101
|
+
* Group items by trace ID
|
|
102
|
+
*/
|
|
103
|
+
private groupByTrace;
|
|
104
|
+
/**
|
|
105
|
+
* Safely parse JSON string
|
|
106
|
+
*/
|
|
107
|
+
private safeParseJson;
|
|
108
|
+
/**
|
|
109
|
+
* Handle export errors
|
|
110
|
+
*/
|
|
111
|
+
private handleError;
|
|
112
|
+
private log;
|
|
113
|
+
/** Get cache statistics */
|
|
114
|
+
getCacheStats(): {
|
|
115
|
+
traces: number;
|
|
116
|
+
spans: number;
|
|
117
|
+
};
|
|
118
|
+
/** Clear all caches */
|
|
119
|
+
clearCaches(): void;
|
|
120
|
+
/** Shutdown the exporter */
|
|
121
|
+
shutdown(_timeout?: number): Promise<void>;
|
|
122
|
+
/** Force flush (no-op - BatchTraceProcessor handles batching) */
|
|
123
|
+
forceFlush(): Promise<void>;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=openai-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-agents.d.ts","sourceRoot":"","sources":["../../src/exporters/openai-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EAEV,eAAe,EAChB,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAMxF,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC7D,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,aAAa,GAAG,YAAY,GAAG,iBAAiB,GAAG,YAAY,CAAA;IAC1E,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;CAC3B;AAMD;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqD;IAC9E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAE3B,MAAM,EAAE,sBAAsB;IAqB1C;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtF;;OAEG;YACW,gBAAgB;IAuD9B;;OAEG;YACW,UAAU;IAiCxB;;OAEG;YACW,eAAe;IAmC7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqF7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,GAAG;IAUX,2BAA2B;IAC3B,aAAa,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAIlD,uBAAuB;IACvB,WAAW,IAAI,IAAI;IAKnB,4BAA4B;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,iEAAiE;IAC3D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Agents SDK Integration
|
|
3
|
+
*
|
|
4
|
+
* Exports traces from @openai/agents to AgentGov for observability and governance.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { BatchTraceProcessor, setTraceProcessors } from '@openai/agents'
|
|
9
|
+
* import { AgentGovExporter } from '@agentgov/sdk/openai-agents'
|
|
10
|
+
*
|
|
11
|
+
* setTraceProcessors([
|
|
12
|
+
* new BatchTraceProcessor(new AgentGovExporter({
|
|
13
|
+
* apiKey: process.env.AGENTGOV_API_KEY!,
|
|
14
|
+
* projectId: process.env.AGENTGOV_PROJECT_ID!,
|
|
15
|
+
* }))
|
|
16
|
+
* ])
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
import { FetchClient } from '../utils/fetch.js';
|
|
22
|
+
import { LRUCache } from '../utils/lru-cache.js';
|
|
23
|
+
// ============================================
|
|
24
|
+
// Exporter Implementation
|
|
25
|
+
// ============================================
|
|
26
|
+
/**
|
|
27
|
+
* AgentGov exporter for OpenAI Agents SDK
|
|
28
|
+
*
|
|
29
|
+
* Implements the TracingExporter interface to send traces and spans
|
|
30
|
+
* from @openai/agents to AgentGov for observability and governance.
|
|
31
|
+
*/
|
|
32
|
+
export class AgentGovExporter {
|
|
33
|
+
client;
|
|
34
|
+
traceCache;
|
|
35
|
+
spanCache;
|
|
36
|
+
debug;
|
|
37
|
+
onError;
|
|
38
|
+
batchThreshold;
|
|
39
|
+
constructor(config) {
|
|
40
|
+
this.debug = config.debug ?? false;
|
|
41
|
+
this.onError = config.onError;
|
|
42
|
+
this.batchThreshold = config.batchThreshold ?? 5;
|
|
43
|
+
this.client = new FetchClient({
|
|
44
|
+
baseUrl: config.baseUrl ?? 'https://api.agentgov.co',
|
|
45
|
+
apiKey: config.apiKey,
|
|
46
|
+
projectId: config.projectId,
|
|
47
|
+
debug: this.debug,
|
|
48
|
+
maxRetries: config.maxRetries ?? 3,
|
|
49
|
+
timeout: config.timeout ?? 30000
|
|
50
|
+
});
|
|
51
|
+
const maxCacheSize = config.maxCacheSize ?? 1000;
|
|
52
|
+
const cacheTtl = config.cacheTtl ?? 3600000; // 1 hour
|
|
53
|
+
this.traceCache = new LRUCache(maxCacheSize, cacheTtl);
|
|
54
|
+
this.spanCache = new LRUCache(maxCacheSize * 10, cacheTtl);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Export traces and spans to AgentGov
|
|
58
|
+
*/
|
|
59
|
+
async export(items, signal) {
|
|
60
|
+
if (items.length === 0)
|
|
61
|
+
return;
|
|
62
|
+
this.log(`Exporting ${items.length} items`);
|
|
63
|
+
const grouped = this.groupByTrace(items);
|
|
64
|
+
const promises = [];
|
|
65
|
+
for (const [externalTraceId, group] of grouped) {
|
|
66
|
+
promises.push(this.exportTraceGroup(externalTraceId, group, signal));
|
|
67
|
+
}
|
|
68
|
+
await Promise.all(promises);
|
|
69
|
+
this.log('Export complete');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Export a single trace group (trace + its spans)
|
|
73
|
+
*/
|
|
74
|
+
async exportTraceGroup(externalTraceId, items, signal) {
|
|
75
|
+
if (signal?.aborted)
|
|
76
|
+
return;
|
|
77
|
+
// Ensure trace exists
|
|
78
|
+
let agTraceId = this.traceCache.get(externalTraceId);
|
|
79
|
+
if (!agTraceId) {
|
|
80
|
+
const traceItem = items.find((i) => i.type === 'trace');
|
|
81
|
+
try {
|
|
82
|
+
const trace = await this.client.createTrace({
|
|
83
|
+
name: traceItem?.name ?? 'Agent Run',
|
|
84
|
+
externalId: externalTraceId, // For idempotency
|
|
85
|
+
metadata: {
|
|
86
|
+
groupId: traceItem?.groupId,
|
|
87
|
+
...traceItem?.metadata
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
agTraceId = trace.id;
|
|
91
|
+
this.traceCache.set(externalTraceId, agTraceId);
|
|
92
|
+
this.log(`Created trace ${agTraceId} (external: ${externalTraceId})`);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
this.handleError(error, {
|
|
96
|
+
operation: 'createTrace',
|
|
97
|
+
externalId: externalTraceId,
|
|
98
|
+
itemType: 'trace'
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Export spans
|
|
104
|
+
const spans = items.filter((i) => i.type === 'trace.span');
|
|
105
|
+
// Filter out already exported spans
|
|
106
|
+
const newSpans = spans.filter(span => !this.spanCache.has(span.spanId));
|
|
107
|
+
if (newSpans.length === 0) {
|
|
108
|
+
this.log('All spans already exported, skipping');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
// Use batch endpoint for multiple new spans (more efficient)
|
|
112
|
+
if (this.batchThreshold > 0 && newSpans.length >= this.batchThreshold) {
|
|
113
|
+
await this.exportSpanBatch(newSpans, agTraceId, signal);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Export spans individually
|
|
117
|
+
await Promise.all(newSpans.map(span => this.exportSpan(span, agTraceId, signal)));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Export a single span to AgentGov
|
|
122
|
+
*/
|
|
123
|
+
async exportSpan(span, agTraceId, signal) {
|
|
124
|
+
if (signal?.aborted)
|
|
125
|
+
return;
|
|
126
|
+
if (this.spanCache.has(span.spanId)) {
|
|
127
|
+
this.log(`Span ${span.spanId} already exported, skipping`);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const spanInput = this.mapSpanToInput(span, agTraceId);
|
|
132
|
+
const createdSpan = await this.client.createSpan(spanInput);
|
|
133
|
+
this.spanCache.set(span.spanId, createdSpan.id);
|
|
134
|
+
if (span.endedAt || span.error) {
|
|
135
|
+
const update = this.buildSpanUpdate(span);
|
|
136
|
+
if (Object.keys(update).length > 0) {
|
|
137
|
+
await this.client.updateSpan(createdSpan.id, update);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
this.log(`Exported span ${createdSpan.id} (external: ${span.spanId})`);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
this.handleError(error, {
|
|
144
|
+
operation: 'createSpan',
|
|
145
|
+
externalId: span.spanId,
|
|
146
|
+
itemType: 'span'
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Export multiple spans using batch endpoint
|
|
152
|
+
*/
|
|
153
|
+
async exportSpanBatch(spans, agTraceId, signal) {
|
|
154
|
+
if (signal?.aborted)
|
|
155
|
+
return;
|
|
156
|
+
try {
|
|
157
|
+
const spanInputs = spans.map(span => this.mapSpanToInput(span, agTraceId));
|
|
158
|
+
const result = await this.client.createSpanBatch(spanInputs);
|
|
159
|
+
// Mark all spans as exported in cache
|
|
160
|
+
for (const span of spans) {
|
|
161
|
+
this.spanCache.set(span.spanId, `batch_${Date.now()}`);
|
|
162
|
+
}
|
|
163
|
+
this.log(`Batch exported ${result.created}/${result.total} spans`);
|
|
164
|
+
// Note: Batch endpoint doesn't return individual span IDs,
|
|
165
|
+
// so we can't update individual spans. For spans that need updates
|
|
166
|
+
// (endedAt/error), we'll need to handle them separately if needed.
|
|
167
|
+
// For now, batch is primarily for initial span creation.
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
this.handleError(error, {
|
|
171
|
+
operation: 'createSpanBatch',
|
|
172
|
+
externalId: `batch_${spans.length}_spans`,
|
|
173
|
+
itemType: 'span'
|
|
174
|
+
});
|
|
175
|
+
// Fall back to individual exports on batch failure
|
|
176
|
+
this.log('Batch failed, falling back to individual exports');
|
|
177
|
+
await Promise.all(spans.map(span => this.exportSpan(span, agTraceId, signal)));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Map OpenAI span to AgentGov SpanInput
|
|
182
|
+
*/
|
|
183
|
+
mapSpanToInput(span, traceId) {
|
|
184
|
+
const { spanData } = span;
|
|
185
|
+
const base = {
|
|
186
|
+
traceId,
|
|
187
|
+
name: this.getSpanName(spanData),
|
|
188
|
+
type: this.mapSpanType(spanData.type),
|
|
189
|
+
metadata: {
|
|
190
|
+
externalId: span.spanId,
|
|
191
|
+
externalParentId: span.parentId,
|
|
192
|
+
spanDataType: spanData.type,
|
|
193
|
+
startedAt: span.startedAt
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
return this.addTypeSpecificFields(base, spanData);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Add type-specific fields to span input
|
|
200
|
+
*/
|
|
201
|
+
addTypeSpecificFields(base, spanData) {
|
|
202
|
+
switch (spanData.type) {
|
|
203
|
+
case 'generation':
|
|
204
|
+
return {
|
|
205
|
+
...base,
|
|
206
|
+
model: spanData.model,
|
|
207
|
+
input: spanData.input ? { messages: spanData.input } : undefined,
|
|
208
|
+
metadata: { ...base.metadata, model_config: spanData.model_config }
|
|
209
|
+
};
|
|
210
|
+
case 'function':
|
|
211
|
+
return {
|
|
212
|
+
...base,
|
|
213
|
+
toolName: spanData.name,
|
|
214
|
+
toolInput: this.safeParseJson(spanData.input),
|
|
215
|
+
metadata: { ...base.metadata, mcp_data: spanData.mcp_data }
|
|
216
|
+
};
|
|
217
|
+
case 'agent':
|
|
218
|
+
return {
|
|
219
|
+
...base,
|
|
220
|
+
metadata: {
|
|
221
|
+
...base.metadata,
|
|
222
|
+
handoffs: spanData.handoffs,
|
|
223
|
+
tools: spanData.tools,
|
|
224
|
+
output_type: spanData.output_type
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
case 'handoff':
|
|
228
|
+
return {
|
|
229
|
+
...base,
|
|
230
|
+
metadata: {
|
|
231
|
+
...base.metadata,
|
|
232
|
+
from_agent: spanData.from_agent,
|
|
233
|
+
to_agent: spanData.to_agent
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
case 'guardrail':
|
|
237
|
+
return {
|
|
238
|
+
...base,
|
|
239
|
+
metadata: { ...base.metadata, triggered: spanData.triggered }
|
|
240
|
+
};
|
|
241
|
+
case 'response':
|
|
242
|
+
return {
|
|
243
|
+
...base,
|
|
244
|
+
input: spanData._input ? { input: spanData._input } : undefined,
|
|
245
|
+
metadata: { ...base.metadata, response_id: spanData.response_id }
|
|
246
|
+
};
|
|
247
|
+
case 'transcription':
|
|
248
|
+
case 'speech':
|
|
249
|
+
case 'speech_group':
|
|
250
|
+
return {
|
|
251
|
+
...base,
|
|
252
|
+
model: 'model' in spanData ? spanData.model : undefined,
|
|
253
|
+
metadata: {
|
|
254
|
+
...base.metadata,
|
|
255
|
+
model_config: 'model_config' in spanData ? spanData.model_config : undefined
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
case 'custom':
|
|
259
|
+
return {
|
|
260
|
+
...base,
|
|
261
|
+
metadata: { ...base.metadata, customData: spanData.data }
|
|
262
|
+
};
|
|
263
|
+
case 'mcp_tools':
|
|
264
|
+
return {
|
|
265
|
+
...base,
|
|
266
|
+
metadata: {
|
|
267
|
+
...base.metadata,
|
|
268
|
+
server: spanData.server,
|
|
269
|
+
result: spanData.result
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
default:
|
|
273
|
+
return base;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Build SpanUpdate from completed span data
|
|
278
|
+
*/
|
|
279
|
+
buildSpanUpdate(span) {
|
|
280
|
+
const update = {};
|
|
281
|
+
const { spanData } = span;
|
|
282
|
+
if (span.error) {
|
|
283
|
+
update.status = 'FAILED';
|
|
284
|
+
update.error = span.error.message;
|
|
285
|
+
if (span.error.data) {
|
|
286
|
+
update.metadata = { errorData: span.error.data };
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else if (span.endedAt) {
|
|
290
|
+
update.status = 'COMPLETED';
|
|
291
|
+
}
|
|
292
|
+
if (spanData.type === 'generation') {
|
|
293
|
+
if (spanData.output)
|
|
294
|
+
update.output = { messages: spanData.output };
|
|
295
|
+
if (spanData.usage) {
|
|
296
|
+
update.promptTokens = spanData.usage.prompt_tokens;
|
|
297
|
+
update.outputTokens = spanData.usage.completion_tokens;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (spanData.type === 'function' && spanData.output) {
|
|
301
|
+
update.toolOutput = this.safeParseJson(spanData.output);
|
|
302
|
+
}
|
|
303
|
+
if (spanData.type === 'response' && spanData._response) {
|
|
304
|
+
update.output = spanData._response;
|
|
305
|
+
}
|
|
306
|
+
return update;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Map OpenAI span type to AgentGov SpanType
|
|
310
|
+
*/
|
|
311
|
+
mapSpanType(type) {
|
|
312
|
+
const mapping = {
|
|
313
|
+
generation: 'LLM_CALL',
|
|
314
|
+
function: 'TOOL_CALL',
|
|
315
|
+
agent: 'AGENT_STEP',
|
|
316
|
+
handoff: 'AGENT_STEP',
|
|
317
|
+
transcription: 'LLM_CALL',
|
|
318
|
+
speech: 'LLM_CALL',
|
|
319
|
+
speech_group: 'LLM_CALL',
|
|
320
|
+
response: 'LLM_CALL',
|
|
321
|
+
mcp_tools: 'TOOL_CALL',
|
|
322
|
+
guardrail: 'CUSTOM',
|
|
323
|
+
custom: 'CUSTOM'
|
|
324
|
+
};
|
|
325
|
+
return mapping[type] ?? 'CUSTOM';
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Get human-readable span name
|
|
329
|
+
*/
|
|
330
|
+
getSpanName(spanData) {
|
|
331
|
+
switch (spanData.type) {
|
|
332
|
+
case 'agent': return `Agent: ${spanData.name}`;
|
|
333
|
+
case 'function': return `Tool: ${spanData.name}`;
|
|
334
|
+
case 'generation': return `LLM: ${spanData.model ?? 'unknown'}`;
|
|
335
|
+
case 'handoff': return `Handoff: ${spanData.from_agent ?? '?'} → ${spanData.to_agent ?? '?'}`;
|
|
336
|
+
case 'guardrail': return `Guardrail: ${spanData.name}`;
|
|
337
|
+
case 'response': return 'Response';
|
|
338
|
+
case 'custom': return spanData.name;
|
|
339
|
+
case 'transcription': return `Transcription: ${spanData.model ?? 'unknown'}`;
|
|
340
|
+
case 'speech': return `Speech: ${spanData.model ?? 'unknown'}`;
|
|
341
|
+
case 'speech_group': return 'Speech Group';
|
|
342
|
+
case 'mcp_tools': return `MCP Tools: ${spanData.server ?? 'unknown'}`;
|
|
343
|
+
default: return 'Unknown';
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Group items by trace ID
|
|
348
|
+
*/
|
|
349
|
+
groupByTrace(items) {
|
|
350
|
+
const grouped = new Map();
|
|
351
|
+
for (const item of items) {
|
|
352
|
+
const group = grouped.get(item.traceId);
|
|
353
|
+
if (group) {
|
|
354
|
+
group.push(item);
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
grouped.set(item.traceId, [item]);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return grouped;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Safely parse JSON string
|
|
364
|
+
*/
|
|
365
|
+
safeParseJson(value) {
|
|
366
|
+
try {
|
|
367
|
+
const parsed = JSON.parse(value);
|
|
368
|
+
return typeof parsed === 'object' && parsed !== null ? parsed : { value: parsed };
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
return { raw: value };
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Handle export errors
|
|
376
|
+
*/
|
|
377
|
+
handleError(error, context) {
|
|
378
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
379
|
+
if (this.onError) {
|
|
380
|
+
this.onError(err, context);
|
|
381
|
+
}
|
|
382
|
+
else if (this.debug) {
|
|
383
|
+
console.error(`[AgentGov] Export error (${context.operation}):`, err.message, context);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
log(message, data) {
|
|
387
|
+
if (this.debug) {
|
|
388
|
+
console.log('[AgentGov]', message, data ?? '');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
// ============================================
|
|
392
|
+
// Public API
|
|
393
|
+
// ============================================
|
|
394
|
+
/** Get cache statistics */
|
|
395
|
+
getCacheStats() {
|
|
396
|
+
return { traces: this.traceCache.size, spans: this.spanCache.size };
|
|
397
|
+
}
|
|
398
|
+
/** Clear all caches */
|
|
399
|
+
clearCaches() {
|
|
400
|
+
this.traceCache.clear();
|
|
401
|
+
this.spanCache.clear();
|
|
402
|
+
}
|
|
403
|
+
/** Shutdown the exporter */
|
|
404
|
+
async shutdown(_timeout) {
|
|
405
|
+
this.log('Shutting down exporter');
|
|
406
|
+
this.clearCaches();
|
|
407
|
+
}
|
|
408
|
+
/** Force flush (no-op - BatchTraceProcessor handles batching) */
|
|
409
|
+
async forceFlush() {
|
|
410
|
+
this.log('forceFlush called (no-op)');
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=openai-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-agents.js","sourceRoot":"","sources":["../../src/exporters/openai-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for @openai/agents SDK
|
|
3
|
+
*
|
|
4
|
+
* These types mirror the @openai/agents package to allow standalone
|
|
5
|
+
* type checking without requiring the peer dependency at build time.
|
|
6
|
+
*
|
|
7
|
+
* @see https://openai.github.io/openai-agents-js/guides/tracing/
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* OpenAI Agents Trace - represents a complete agent execution
|
|
11
|
+
*/
|
|
12
|
+
export interface OpenAITrace {
|
|
13
|
+
type: 'trace';
|
|
14
|
+
traceId: string;
|
|
15
|
+
name: string;
|
|
16
|
+
groupId: string | null;
|
|
17
|
+
metadata?: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* OpenAI Agents Span - represents a single operation within a trace
|
|
21
|
+
*/
|
|
22
|
+
export interface OpenAISpan {
|
|
23
|
+
type: 'trace.span';
|
|
24
|
+
traceId: string;
|
|
25
|
+
spanId: string;
|
|
26
|
+
parentId: string | null;
|
|
27
|
+
spanData: SpanData;
|
|
28
|
+
startedAt: string | null;
|
|
29
|
+
endedAt: string | null;
|
|
30
|
+
error: SpanError | null;
|
|
31
|
+
}
|
|
32
|
+
export interface SpanError {
|
|
33
|
+
message: string;
|
|
34
|
+
data?: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export type SpanData = AgentSpanData | FunctionSpanData | GenerationSpanData | ResponseSpanData | HandoffSpanData | CustomSpanData | GuardrailSpanData | TranscriptionSpanData | SpeechSpanData | SpeechGroupSpanData | MCPListToolsSpanData;
|
|
37
|
+
export interface AgentSpanData {
|
|
38
|
+
type: 'agent';
|
|
39
|
+
name: string;
|
|
40
|
+
handoffs?: string[];
|
|
41
|
+
tools?: string[];
|
|
42
|
+
output_type?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface FunctionSpanData {
|
|
45
|
+
type: 'function';
|
|
46
|
+
name: string;
|
|
47
|
+
input: string;
|
|
48
|
+
output: string;
|
|
49
|
+
mcp_data?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface GenerationSpanData {
|
|
52
|
+
type: 'generation';
|
|
53
|
+
input?: Array<Record<string, unknown>>;
|
|
54
|
+
output?: Array<Record<string, unknown>>;
|
|
55
|
+
model?: string;
|
|
56
|
+
model_config?: Record<string, unknown>;
|
|
57
|
+
usage?: {
|
|
58
|
+
prompt_tokens?: number;
|
|
59
|
+
completion_tokens?: number;
|
|
60
|
+
total_tokens?: number;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export interface ResponseSpanData {
|
|
64
|
+
type: 'response';
|
|
65
|
+
response_id?: string;
|
|
66
|
+
_input?: string | Record<string, unknown>[];
|
|
67
|
+
_response?: Record<string, unknown>;
|
|
68
|
+
}
|
|
69
|
+
export interface HandoffSpanData {
|
|
70
|
+
type: 'handoff';
|
|
71
|
+
from_agent?: string;
|
|
72
|
+
to_agent?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface CustomSpanData {
|
|
75
|
+
type: 'custom';
|
|
76
|
+
name: string;
|
|
77
|
+
data: Record<string, unknown>;
|
|
78
|
+
}
|
|
79
|
+
export interface GuardrailSpanData {
|
|
80
|
+
type: 'guardrail';
|
|
81
|
+
name: string;
|
|
82
|
+
triggered: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface TranscriptionSpanData {
|
|
85
|
+
type: 'transcription';
|
|
86
|
+
input: {
|
|
87
|
+
data: string;
|
|
88
|
+
format: string;
|
|
89
|
+
};
|
|
90
|
+
output?: string;
|
|
91
|
+
model?: string;
|
|
92
|
+
model_config?: Record<string, unknown>;
|
|
93
|
+
}
|
|
94
|
+
export interface SpeechSpanData {
|
|
95
|
+
type: 'speech';
|
|
96
|
+
input?: string;
|
|
97
|
+
output: {
|
|
98
|
+
data: string;
|
|
99
|
+
format: string;
|
|
100
|
+
};
|
|
101
|
+
model?: string;
|
|
102
|
+
model_config?: Record<string, unknown>;
|
|
103
|
+
}
|
|
104
|
+
export interface SpeechGroupSpanData {
|
|
105
|
+
type: 'speech_group';
|
|
106
|
+
input?: string;
|
|
107
|
+
}
|
|
108
|
+
export interface MCPListToolsSpanData {
|
|
109
|
+
type: 'mcp_tools';
|
|
110
|
+
server?: string;
|
|
111
|
+
result?: string[];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* TracingExporter interface from @openai/agents
|
|
115
|
+
*/
|
|
116
|
+
export interface TracingExporter {
|
|
117
|
+
export(items: (OpenAITrace | OpenAISpan)[], signal?: AbortSignal): Promise<void>;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=openai-agents.types.d.ts.map
|