@openai/agents-openai 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,32 +3,412 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OpenAITracingExporter = void 0;
6
+ exports.OpenAITracingExporter = exports._openAITracingExporterTestUtils = void 0;
7
7
  exports.setDefaultOpenAITracingExporter = setDefaultOpenAITracingExporter;
8
8
  const agents_core_1 = require("@openai/agents-core");
9
9
  const defaults_1 = require("./defaults.js");
10
10
  const logger_1 = __importDefault(require("./logger.js"));
11
+ const OPENAI_TRACING_MAX_FIELD_BYTES = 100_000;
12
+ const OPENAI_TRACING_MAX_RECURSION_DEPTH = 1_000;
13
+ const OPENAI_TRACING_STRING_TRUNCATION_SUFFIX = '... [truncated]';
14
+ const UNSERIALIZABLE = Symbol('openaiTracingExporter.unserializable');
15
+ const textEncoder = new TextEncoder();
11
16
  function isRecord(value) {
12
17
  return typeof value === 'object' && value !== null;
13
18
  }
19
+ function isPlainObject(value) {
20
+ if (!isRecord(value)) {
21
+ return false;
22
+ }
23
+ const prototype = Object.getPrototypeOf(value);
24
+ return prototype === Object.prototype || prototype === null;
25
+ }
26
+ function hasToJSON(value) {
27
+ try {
28
+ return typeof value.toJSON === 'function';
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
14
34
  function isGenerationSpanData(spanData) {
15
35
  return spanData.type === 'generation';
16
36
  }
17
37
  function isGenerationUsageData(usage) {
18
38
  return isRecord(usage);
19
39
  }
40
+ function isFiniteJsonNumber(value) {
41
+ return typeof value === 'number' && Number.isFinite(value);
42
+ }
43
+ function valueJsonSizeBytes(value) {
44
+ try {
45
+ const serialized = JSON.stringify(value);
46
+ if (serialized === undefined) {
47
+ return 0;
48
+ }
49
+ if (typeof serialized !== 'string') {
50
+ return OPENAI_TRACING_MAX_FIELD_BYTES + 1;
51
+ }
52
+ return textEncoder.encode(serialized).length;
53
+ }
54
+ catch {
55
+ return OPENAI_TRACING_MAX_FIELD_BYTES + 1;
56
+ }
57
+ }
58
+ function truncateStringForJsonLimit(value, maxBytes) {
59
+ const valueSize = valueJsonSizeBytes(value);
60
+ if (valueSize <= maxBytes) {
61
+ return value;
62
+ }
63
+ const suffixSize = valueJsonSizeBytes(OPENAI_TRACING_STRING_TRUNCATION_SUFFIX);
64
+ if (suffixSize > maxBytes) {
65
+ return '';
66
+ }
67
+ if (suffixSize === maxBytes) {
68
+ return OPENAI_TRACING_STRING_TRUNCATION_SUFFIX;
69
+ }
70
+ const budgetWithoutSuffix = maxBytes - suffixSize;
71
+ let estimatedChars = Math.floor((value.length * budgetWithoutSuffix) / Math.max(valueSize, 1));
72
+ estimatedChars = Math.max(0, Math.min(value.length, estimatedChars));
73
+ let best = value.slice(0, estimatedChars) + OPENAI_TRACING_STRING_TRUNCATION_SUFFIX;
74
+ let bestSize = valueJsonSizeBytes(best);
75
+ while (bestSize > maxBytes && estimatedChars > 0) {
76
+ const overflowRatio = (bestSize - maxBytes) / Math.max(bestSize, 1);
77
+ const trimChars = Math.max(1, Math.floor(estimatedChars * overflowRatio) + 1);
78
+ estimatedChars = Math.max(0, estimatedChars - trimChars);
79
+ best =
80
+ value.slice(0, estimatedChars) + OPENAI_TRACING_STRING_TRUNCATION_SUFFIX;
81
+ bestSize = valueJsonSizeBytes(best);
82
+ }
83
+ return best;
84
+ }
85
+ function sanitizeJsonCompatibleValue(value, seen = new Set(), depth = 0) {
86
+ if (depth >= OPENAI_TRACING_MAX_RECURSION_DEPTH) {
87
+ return UNSERIALIZABLE;
88
+ }
89
+ if (value === null ||
90
+ typeof value === 'string' ||
91
+ typeof value === 'boolean') {
92
+ return value;
93
+ }
94
+ if (typeof value === 'number') {
95
+ return Number.isFinite(value) ? value : UNSERIALIZABLE;
96
+ }
97
+ if (value && typeof value === 'object' && hasToJSON(value)) {
98
+ if (seen.has(value)) {
99
+ return UNSERIALIZABLE;
100
+ }
101
+ seen.add(value);
102
+ try {
103
+ return sanitizeJsonCompatibleValue(value.toJSON(), seen, depth + 1);
104
+ }
105
+ catch {
106
+ return UNSERIALIZABLE;
107
+ }
108
+ finally {
109
+ seen.delete(value);
110
+ }
111
+ }
112
+ if (Array.isArray(value)) {
113
+ if (seen.has(value)) {
114
+ return UNSERIALIZABLE;
115
+ }
116
+ seen.add(value);
117
+ const sanitized = [];
118
+ try {
119
+ for (const nestedValue of value) {
120
+ const sanitizedNested = sanitizeJsonCompatibleValue(nestedValue, seen, depth + 1);
121
+ sanitized.push(sanitizedNested === UNSERIALIZABLE ? null : sanitizedNested);
122
+ }
123
+ }
124
+ finally {
125
+ seen.delete(value);
126
+ }
127
+ return sanitized;
128
+ }
129
+ if (value && typeof value === 'object') {
130
+ if (seen.has(value)) {
131
+ return UNSERIALIZABLE;
132
+ }
133
+ seen.add(value);
134
+ const sanitized = {};
135
+ try {
136
+ for (const [key, nestedValue] of Object.entries(value)) {
137
+ const sanitizedNested = sanitizeJsonCompatibleValue(nestedValue, seen, depth + 1);
138
+ if (sanitizedNested !== UNSERIALIZABLE) {
139
+ sanitized[key] = sanitizedNested;
140
+ }
141
+ }
142
+ }
143
+ catch {
144
+ return UNSERIALIZABLE;
145
+ }
146
+ finally {
147
+ seen.delete(value);
148
+ }
149
+ return sanitized;
150
+ }
151
+ return UNSERIALIZABLE;
152
+ }
153
+ function getValueTypeName(value) {
154
+ if (value === null) {
155
+ return 'null';
156
+ }
157
+ if (typeof value !== 'object') {
158
+ return typeof value;
159
+ }
160
+ try {
161
+ return value.constructor?.name ?? 'Object';
162
+ }
163
+ catch {
164
+ return 'Object';
165
+ }
166
+ }
167
+ function truncatedPreview(value) {
168
+ const typeName = getValueTypeName(value);
169
+ let preview = `<${typeName} truncated>`;
170
+ if (Array.isArray(value)) {
171
+ preview = `<${typeName} len=${value.length} truncated>`;
172
+ }
173
+ else if (ArrayBuffer.isView(value)) {
174
+ preview = `<${typeName} bytes=${value.byteLength} truncated>`;
175
+ }
176
+ else if (value instanceof ArrayBuffer) {
177
+ preview = `<${typeName} bytes=${value.byteLength} truncated>`;
178
+ }
179
+ else if (value instanceof Map || value instanceof Set) {
180
+ preview = `<${typeName} len=${value.size} truncated>`;
181
+ }
182
+ else if (isPlainObject(value)) {
183
+ preview = `<${typeName} len=${Object.keys(value).length} truncated>`;
184
+ }
185
+ let previewObject = {
186
+ truncated: true,
187
+ original_type: typeName,
188
+ preview,
189
+ };
190
+ if (valueJsonSizeBytes(previewObject) <= OPENAI_TRACING_MAX_FIELD_BYTES) {
191
+ return previewObject;
192
+ }
193
+ const previewBudget = Math.max(0, OPENAI_TRACING_MAX_FIELD_BYTES -
194
+ valueJsonSizeBytes({
195
+ truncated: true,
196
+ original_type: typeName,
197
+ preview: '',
198
+ }));
199
+ previewObject = {
200
+ truncated: true,
201
+ original_type: typeName,
202
+ preview: truncateStringForJsonLimit(preview, previewBudget),
203
+ };
204
+ if (valueJsonSizeBytes(previewObject) <= OPENAI_TRACING_MAX_FIELD_BYTES) {
205
+ return previewObject;
206
+ }
207
+ const typeBudget = Math.max(0, OPENAI_TRACING_MAX_FIELD_BYTES -
208
+ valueJsonSizeBytes({
209
+ truncated: true,
210
+ original_type: '',
211
+ preview: previewObject.preview,
212
+ }));
213
+ previewObject = {
214
+ truncated: true,
215
+ original_type: truncateStringForJsonLimit(typeName, typeBudget),
216
+ preview: previewObject.preview,
217
+ };
218
+ if (valueJsonSizeBytes(previewObject) <= OPENAI_TRACING_MAX_FIELD_BYTES) {
219
+ return previewObject;
220
+ }
221
+ const finalPreviewBudget = Math.max(0, OPENAI_TRACING_MAX_FIELD_BYTES -
222
+ valueJsonSizeBytes({
223
+ truncated: true,
224
+ original_type: previewObject.original_type,
225
+ preview: '',
226
+ }));
227
+ return {
228
+ truncated: true,
229
+ original_type: previewObject.original_type,
230
+ preview: truncateStringForJsonLimit(previewObject.preview, finalPreviewBudget),
231
+ };
232
+ }
233
+ function truncateJsonValueForLimit(value, maxBytes, depth = 0) {
234
+ if (depth >= OPENAI_TRACING_MAX_RECURSION_DEPTH) {
235
+ return truncatedPreview(value);
236
+ }
237
+ if (valueJsonSizeBytes(value) <= maxBytes) {
238
+ return value;
239
+ }
240
+ if (typeof value === 'string') {
241
+ return truncateStringForJsonLimit(value, maxBytes);
242
+ }
243
+ if (Array.isArray(value)) {
244
+ return truncateListForJsonLimit(value, maxBytes, depth + 1);
245
+ }
246
+ if (isPlainObject(value)) {
247
+ return truncateMappingForJsonLimit(value, maxBytes, depth + 1);
248
+ }
249
+ return truncatedPreview(value);
250
+ }
251
+ function truncateMappingForJsonLimit(value, maxBytes, depth = 0) {
252
+ const truncated = { ...value };
253
+ let currentSize = valueJsonSizeBytes(truncated);
254
+ while (Object.keys(truncated).length > 0 && currentSize > maxBytes) {
255
+ let largestKey;
256
+ let largestChildSize = -1;
257
+ for (const [key, child] of Object.entries(truncated)) {
258
+ const childSize = valueJsonSizeBytes(child);
259
+ if (childSize > largestChildSize) {
260
+ largestKey = key;
261
+ largestChildSize = childSize;
262
+ }
263
+ }
264
+ if (largestKey === undefined) {
265
+ break;
266
+ }
267
+ const child = truncated[largestKey];
268
+ const childBudget = Math.max(0, maxBytes - (currentSize - largestChildSize));
269
+ if (childBudget === 0) {
270
+ delete truncated[largestKey];
271
+ currentSize = valueJsonSizeBytes(truncated);
272
+ continue;
273
+ }
274
+ const truncatedChild = truncateJsonValueForLimit(child, childBudget, depth + 1);
275
+ const truncatedChildSize = valueJsonSizeBytes(truncatedChild);
276
+ if (truncatedChild === child || truncatedChildSize >= largestChildSize) {
277
+ delete truncated[largestKey];
278
+ }
279
+ else {
280
+ truncated[largestKey] = truncatedChild;
281
+ }
282
+ currentSize = valueJsonSizeBytes(truncated);
283
+ }
284
+ return truncated;
285
+ }
286
+ function truncateListForJsonLimit(value, maxBytes, depth = 0) {
287
+ const truncated = [...value];
288
+ let currentSize = valueJsonSizeBytes(truncated);
289
+ while (truncated.length > 0 && currentSize > maxBytes) {
290
+ let largestIndex = 0;
291
+ let largestChildSize = -1;
292
+ for (let index = 0; index < truncated.length; index += 1) {
293
+ const childSize = valueJsonSizeBytes(truncated[index]);
294
+ if (childSize > largestChildSize) {
295
+ largestIndex = index;
296
+ largestChildSize = childSize;
297
+ }
298
+ }
299
+ const child = truncated[largestIndex];
300
+ const childBudget = Math.max(0, maxBytes - (currentSize - largestChildSize));
301
+ if (childBudget === 0) {
302
+ truncated.splice(largestIndex, 1);
303
+ currentSize = valueJsonSizeBytes(truncated);
304
+ continue;
305
+ }
306
+ const truncatedChild = truncateJsonValueForLimit(child, childBudget, depth + 1);
307
+ const truncatedChildSize = valueJsonSizeBytes(truncatedChild);
308
+ if (truncatedChild === child || truncatedChildSize >= largestChildSize) {
309
+ truncated.splice(largestIndex, 1);
310
+ }
311
+ else {
312
+ truncated[largestIndex] = truncatedChild;
313
+ }
314
+ currentSize = valueJsonSizeBytes(truncated);
315
+ }
316
+ return truncated;
317
+ }
318
+ function exceedsNestingDepthLimit(value, maxDepth) {
319
+ const stack = [{ value, depth: 0 }];
320
+ const seen = new Set();
321
+ while (stack.length > 0) {
322
+ const current = stack.pop();
323
+ if (!current) {
324
+ break;
325
+ }
326
+ if (current.depth >= maxDepth) {
327
+ return true;
328
+ }
329
+ if (!current.value || typeof current.value !== 'object') {
330
+ continue;
331
+ }
332
+ if (seen.has(current.value)) {
333
+ continue;
334
+ }
335
+ seen.add(current.value);
336
+ try {
337
+ if (hasToJSON(current.value)) {
338
+ stack.push({
339
+ value: current.value.toJSON(),
340
+ depth: current.depth + 1,
341
+ });
342
+ continue;
343
+ }
344
+ const nestedValues = Array.isArray(current.value)
345
+ ? current.value
346
+ : Object.values(current.value);
347
+ for (const nestedValue of nestedValues) {
348
+ stack.push({
349
+ value: nestedValue,
350
+ depth: current.depth + 1,
351
+ });
352
+ }
353
+ }
354
+ catch {
355
+ return true;
356
+ }
357
+ }
358
+ return false;
359
+ }
360
+ function truncateSpanFieldValue(value) {
361
+ if (valueJsonSizeBytes(value) <= OPENAI_TRACING_MAX_FIELD_BYTES) {
362
+ return value;
363
+ }
364
+ if (exceedsNestingDepthLimit(value, OPENAI_TRACING_MAX_RECURSION_DEPTH)) {
365
+ return truncatedPreview(value);
366
+ }
367
+ try {
368
+ const sanitizedValue = sanitizeJsonCompatibleValue(value);
369
+ if (sanitizedValue === UNSERIALIZABLE) {
370
+ return truncatedPreview(value);
371
+ }
372
+ return truncateJsonValueForLimit(sanitizedValue, OPENAI_TRACING_MAX_FIELD_BYTES);
373
+ }
374
+ catch {
375
+ // Deeply nested or otherwise hostile values should degrade to a preview
376
+ // instead of failing the whole export batch.
377
+ return truncatedPreview(value);
378
+ }
379
+ }
380
+ function cloneRecordSafely(value) {
381
+ const clone = {};
382
+ for (const key of Object.keys(value)) {
383
+ try {
384
+ clone[key] = value[key];
385
+ }
386
+ catch {
387
+ // Omit unreadable properties so tracing export remains non-fatal.
388
+ }
389
+ }
390
+ return clone;
391
+ }
392
+ exports._openAITracingExporterTestUtils = {
393
+ valueJsonSizeBytes,
394
+ truncateJsonValueForLimit,
395
+ truncateMappingForJsonLimit,
396
+ truncateListForJsonLimit,
397
+ };
20
398
  function sanitizeGenerationUsageForTracesIngest(usage) {
21
399
  const inputTokens = usage.input_tokens;
22
400
  const outputTokens = usage.output_tokens;
23
- if (typeof inputTokens !== 'number' ||
24
- Number.isNaN(inputTokens) ||
25
- typeof outputTokens !== 'number' ||
26
- Number.isNaN(outputTokens)) {
401
+ if (!isFiniteJsonNumber(inputTokens) || !isFiniteJsonNumber(outputTokens)) {
27
402
  return undefined;
28
403
  }
29
404
  const details = {};
30
- if (isRecord(usage.details)) {
31
- Object.assign(details, usage.details);
405
+ if (isPlainObject(usage.details)) {
406
+ for (const [key, value] of Object.entries(usage.details)) {
407
+ const sanitizedValue = sanitizeJsonCompatibleValue(value);
408
+ if (sanitizedValue !== UNSERIALIZABLE) {
409
+ details[key] = sanitizedValue;
410
+ }
411
+ }
32
412
  }
33
413
  for (const [key, value] of Object.entries(usage)) {
34
414
  if (key === 'input_tokens' ||
@@ -37,7 +417,10 @@ function sanitizeGenerationUsageForTracesIngest(usage) {
37
417
  value === undefined) {
38
418
  continue;
39
419
  }
40
- details[key] = value;
420
+ const sanitizedValue = sanitizeJsonCompatibleValue(value);
421
+ if (sanitizedValue !== UNSERIALIZABLE) {
422
+ details[key] = sanitizedValue;
423
+ }
41
424
  }
42
425
  return {
43
426
  input_tokens: inputTokens,
@@ -51,20 +434,55 @@ function sanitizeGenerationUsageForTracesIngest(usage) {
51
434
  * to avoid non-fatal 400 client errors.
52
435
  */
53
436
  function sanitizeSpanDataForTracesIngest(spanData) {
437
+ let sanitizedSpanData = spanData;
438
+ let didMutate = false;
439
+ for (const fieldName of ['input', 'output']) {
440
+ if (!(fieldName in spanData)) {
441
+ continue;
442
+ }
443
+ let fieldValue;
444
+ try {
445
+ fieldValue = spanData[fieldName];
446
+ }
447
+ catch {
448
+ if (!didMutate) {
449
+ sanitizedSpanData = cloneRecordSafely(spanData);
450
+ didMutate = true;
451
+ }
452
+ delete sanitizedSpanData[fieldName];
453
+ continue;
454
+ }
455
+ const sanitizedField = truncateSpanFieldValue(fieldValue);
456
+ if (sanitizedField === fieldValue) {
457
+ continue;
458
+ }
459
+ if (!didMutate) {
460
+ sanitizedSpanData = cloneRecordSafely(spanData);
461
+ didMutate = true;
462
+ }
463
+ sanitizedSpanData[fieldName] = sanitizedField;
464
+ }
54
465
  if (!isGenerationSpanData(spanData) ||
55
466
  !isGenerationUsageData(spanData.usage)) {
56
- return spanData;
467
+ return didMutate ? sanitizedSpanData : spanData;
57
468
  }
58
469
  const sanitizedUsage = sanitizeGenerationUsageForTracesIngest(spanData.usage);
59
470
  if (!sanitizedUsage) {
60
- const { usage, ...rest } = spanData;
61
- void usage;
62
- return rest;
471
+ if (!didMutate) {
472
+ sanitizedSpanData = cloneRecordSafely(spanData);
473
+ didMutate = true;
474
+ }
475
+ delete sanitizedSpanData.usage;
476
+ return sanitizedSpanData;
63
477
  }
64
- return {
65
- ...spanData,
66
- usage: sanitizedUsage,
67
- };
478
+ if (sanitizedUsage === spanData.usage) {
479
+ return didMutate ? sanitizedSpanData : spanData;
480
+ }
481
+ if (!didMutate) {
482
+ sanitizedSpanData = cloneRecordSafely(spanData);
483
+ }
484
+ sanitizedSpanData.usage = sanitizedUsage;
485
+ return sanitizedSpanData;
68
486
  }
69
487
  function sanitizePayloadItemForTracesIngest(payloadItem) {
70
488
  if (payloadItem.object !== 'trace.span' || !isRecord(payloadItem.span_data)) {
@@ -1 +1 @@
1
- {"version":3,"file":"openaiTracingExporter.js","sourceRoot":"","sources":["../src/openaiTracingExporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openaiTracingExporter.js","sourceRoot":"","sources":["../src/openaiTracingExporter.ts"],"names":[],"mappings":"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"}