@deepagents/context 0.36.0 → 0.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +67 -2
  2. package/dist/browser.js +6 -130
  3. package/dist/browser.js.map +3 -3
  4. package/dist/index.d.ts +5 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3755 -2467
  7. package/dist/index.js.map +4 -4
  8. package/dist/lib/advisor.d.ts +26 -0
  9. package/dist/lib/advisor.d.ts.map +1 -0
  10. package/dist/lib/agent.d.ts +14 -2
  11. package/dist/lib/agent.d.ts.map +1 -1
  12. package/dist/lib/chat.d.ts +6 -2
  13. package/dist/lib/chat.d.ts.map +1 -1
  14. package/dist/lib/engine.d.ts +10 -0
  15. package/dist/lib/engine.d.ts.map +1 -1
  16. package/dist/lib/fragments/message/user.d.ts +0 -18
  17. package/dist/lib/fragments/message/user.d.ts.map +1 -1
  18. package/dist/lib/fragments/reminders/combinators.d.ts +6 -0
  19. package/dist/lib/fragments/reminders/combinators.d.ts.map +1 -0
  20. package/dist/lib/fragments/reminders/content-predicates.d.ts +2 -0
  21. package/dist/lib/fragments/reminders/content-predicates.d.ts.map +1 -1
  22. package/dist/lib/fragments/reminders/temporal/index.d.ts +3 -0
  23. package/dist/lib/fragments/reminders/temporal/index.d.ts.map +1 -0
  24. package/dist/lib/fragments/reminders/temporal/predicates.d.ts +22 -0
  25. package/dist/lib/fragments/reminders/temporal/predicates.d.ts.map +1 -0
  26. package/dist/lib/fragments/reminders/{temporal-reminder.d.ts → temporal/reminder.d.ts} +3 -5
  27. package/dist/lib/fragments/reminders/temporal/reminder.d.ts.map +1 -0
  28. package/dist/lib/fragments/reminders/turn-predicates.d.ts +6 -0
  29. package/dist/lib/fragments/reminders/turn-predicates.d.ts.map +1 -0
  30. package/dist/lib/guardrail.d.ts +1 -0
  31. package/dist/lib/guardrail.d.ts.map +1 -1
  32. package/dist/lib/guardrails/error-recovery.guardrail.d.ts.map +1 -1
  33. package/dist/lib/repair.d.ts +4 -0
  34. package/dist/lib/repair.d.ts.map +1 -0
  35. package/dist/lib/sandbox/ast-utils.d.ts +4 -0
  36. package/dist/lib/sandbox/ast-utils.d.ts.map +1 -0
  37. package/dist/lib/sandbox/bash-exception.d.ts +5 -0
  38. package/dist/lib/sandbox/bash-exception.d.ts.map +1 -0
  39. package/dist/lib/sandbox/bash-meta.d.ts +13 -0
  40. package/dist/lib/sandbox/bash-meta.d.ts.map +1 -0
  41. package/dist/lib/sandbox/bash-tool.d.ts +27 -0
  42. package/dist/lib/sandbox/bash-tool.d.ts.map +1 -0
  43. package/dist/lib/sandbox/container-tool.d.ts +39 -11
  44. package/dist/lib/sandbox/container-tool.d.ts.map +1 -1
  45. package/dist/lib/sandbox/extension.d.ts +39 -0
  46. package/dist/lib/sandbox/extension.d.ts.map +1 -0
  47. package/dist/lib/sandbox/file-events.d.ts +47 -0
  48. package/dist/lib/sandbox/file-events.d.ts.map +1 -0
  49. package/dist/lib/sandbox/index.d.ts +14 -0
  50. package/dist/lib/sandbox/index.d.ts.map +1 -1
  51. package/dist/lib/sandbox/openapi/demo.d.ts +2 -0
  52. package/dist/lib/sandbox/openapi/demo.d.ts.map +1 -0
  53. package/dist/lib/sandbox/openapi/extension.d.ts +19 -0
  54. package/dist/lib/sandbox/openapi/extension.d.ts.map +1 -0
  55. package/dist/lib/sandbox/openapi/format.d.ts +11 -0
  56. package/dist/lib/sandbox/openapi/format.d.ts.map +1 -0
  57. package/dist/lib/sandbox/openapi/schema.d.ts +9 -0
  58. package/dist/lib/sandbox/openapi/schema.d.ts.map +1 -0
  59. package/dist/lib/sandbox/openapi/skill/index.d.ts +6 -0
  60. package/dist/lib/sandbox/openapi/skill/index.d.ts.map +1 -0
  61. package/dist/lib/sandbox/openapi/skill/index.js +14 -0
  62. package/dist/lib/sandbox/openapi/skill/index.js.map +7 -0
  63. package/dist/lib/sandbox/openapi/skill/openapi-cli/SKILL.md +109 -0
  64. package/dist/lib/sandbox/openapi/validate.d.ts +7 -0
  65. package/dist/lib/sandbox/openapi/validate.d.ts.map +1 -0
  66. package/dist/lib/sandbox/routing-sandbox.d.ts +28 -0
  67. package/dist/lib/sandbox/routing-sandbox.d.ts.map +1 -0
  68. package/dist/lib/sandbox/subcommand.d.ts +49 -0
  69. package/dist/lib/sandbox/subcommand.d.ts.map +1 -0
  70. package/dist/lib/sandbox/types.d.ts +46 -0
  71. package/dist/lib/sandbox/types.d.ts.map +1 -0
  72. package/dist/lib/sandbox/upload-skills.d.ts +14 -0
  73. package/dist/lib/sandbox/upload-skills.d.ts.map +1 -0
  74. package/dist/lib/sandbox/walk.d.ts +17 -0
  75. package/dist/lib/sandbox/walk.d.ts.map +1 -0
  76. package/dist/lib/skills/fragments.d.ts +10 -15
  77. package/dist/lib/skills/fragments.d.ts.map +1 -1
  78. package/dist/lib/skills/types.d.ts +2 -27
  79. package/dist/lib/skills/types.d.ts.map +1 -1
  80. package/dist/lib/stream/stream-manager.d.ts +4 -0
  81. package/dist/lib/stream/stream-manager.d.ts.map +1 -1
  82. package/dist/lib/title.d.ts +1 -1
  83. package/dist/lib/title.d.ts.map +1 -1
  84. package/dist/lib/tracing/exporter.d.ts.map +1 -1
  85. package/dist/lib/tracing/index.js +59 -12
  86. package/dist/lib/tracing/index.js.map +2 -2
  87. package/dist/lib/tracing/openai-traces-integration.d.ts.map +1 -1
  88. package/dist/lib/tracing/serialization.d.ts.map +1 -1
  89. package/dist/lib/tracing/types.d.ts +0 -1
  90. package/dist/lib/tracing/types.d.ts.map +1 -1
  91. package/package.json +21 -9
  92. package/dist/lib/fragments/reminders/temporal-reminder.d.ts.map +0 -1
@@ -81,6 +81,32 @@ var BatchTraceProcessor = class {
81
81
  };
82
82
 
83
83
  // packages/context/src/lib/tracing/exporter.ts
84
+ var STRINGIFIED_IO_TYPES = {
85
+ function: true,
86
+ transcription: true
87
+ };
88
+ function hasStringifiedIO(data) {
89
+ return data.type in STRINGIFIED_IO_TYPES;
90
+ }
91
+ function encodeField(value) {
92
+ if (value == null) return void 0;
93
+ return typeof value === "string" ? value : JSON.stringify(value);
94
+ }
95
+ function toWireItem(item) {
96
+ if (item.object !== "trace.span") return item;
97
+ const spanData = item.span_data;
98
+ if (!hasStringifiedIO(spanData)) {
99
+ return { ...item, span_data: spanData };
100
+ }
101
+ return {
102
+ ...item,
103
+ span_data: {
104
+ ...spanData,
105
+ input: encodeField(spanData.input),
106
+ output: encodeField(spanData.output)
107
+ }
108
+ };
109
+ }
84
110
  var OpenAIExportError = class extends Error {
85
111
  status;
86
112
  constructor(status, body) {
@@ -125,7 +151,7 @@ var OpenAITracesExporter = class {
125
151
  if (this.#project) {
126
152
  headers["OpenAI-Project"] = this.#project;
127
153
  }
128
- const body = JSON.stringify({ data: items });
154
+ const body = JSON.stringify({ data: items.map(toWireItem) });
129
155
  await this.#fetchWithRetry(this.#endpoint, {
130
156
  method: "POST",
131
157
  headers,
@@ -304,7 +330,6 @@ function normalizeUsage(usage) {
304
330
  return {
305
331
  input_tokens: usage.inputTokens,
306
332
  output_tokens: usage.outputTokens,
307
- total_tokens: usage.totalTokens,
308
333
  ...Object.keys(details).length > 0 ? { details } : {}
309
334
  };
310
335
  }
@@ -547,8 +572,8 @@ function createOpenAITracesIntegration(options = {}) {
547
572
  if (openRuns.length === 1) {
548
573
  return openRuns[0];
549
574
  }
550
- let bestState;
551
575
  let bestScore = 0;
576
+ let bestStates = [];
552
577
  const eventMetadataRef = asObjectRef(event.metadata);
553
578
  const eventContextRef = asObjectRef(event.experimental_context);
554
579
  const eventModelKey = event.model != null ? toModelKey(event.model) : void 0;
@@ -579,10 +604,22 @@ function createOpenAITracesIntegration(options = {}) {
579
604
  }
580
605
  if (score > bestScore) {
581
606
  bestScore = score;
582
- bestState = state;
607
+ bestStates = [state];
608
+ } else if (score === bestScore && bestScore > 0) {
609
+ bestStates.push(state);
583
610
  }
584
611
  }
585
- return bestState;
612
+ if (bestStates.length === 0) return void 0;
613
+ if (bestStates.length === 1) return bestStates[0];
614
+ if (event.response?.id != null) {
615
+ const withOpenStep = bestStates.filter((s) => s.stepSpans.length > 0);
616
+ if (withOpenStep.length >= 1) return withOpenStep[0];
617
+ }
618
+ if (event.toolCall?.toolCallId != null) {
619
+ const withOpenTool = bestStates.filter((s) => s.toolCallSpans.size > 0);
620
+ if (withOpenTool.length >= 1) return withOpenTool[0];
621
+ }
622
+ return bestStates[0];
586
623
  }
587
624
  function closeRunState(state) {
588
625
  const index = openRuns.indexOf(state);
@@ -628,16 +665,26 @@ function now() {
628
665
  function toModelKey(model) {
629
666
  return `${model.provider}:${model.modelId}`;
630
667
  }
668
+ function canonicalizeMessageContent(content) {
669
+ if (typeof content === "string") {
670
+ return [{ type: "text", text: content }];
671
+ }
672
+ return content;
673
+ }
674
+ function canonicalizeMessages(messages) {
675
+ if (!Array.isArray(messages)) return messages;
676
+ return messages.map((message) => {
677
+ if (message == null || typeof message !== "object") return message;
678
+ const record = message;
679
+ if (!("content" in record)) return record;
680
+ return { ...record, content: canonicalizeMessageContent(record.content) };
681
+ });
682
+ }
631
683
  function fingerprintInput(input) {
632
- const normalizedMessages = input.messages ?? (typeof input.prompt === "string" ? [
633
- {
634
- role: "user",
635
- content: [{ type: "text", text: input.prompt }]
636
- }
637
- ] : input.prompt);
684
+ const source = input.messages ?? (typeof input.prompt === "string" ? [{ role: "user", content: input.prompt }] : input.prompt);
638
685
  const normalized = normalizeForJson({
639
686
  system: input.system,
640
- messages: normalizedMessages
687
+ messages: canonicalizeMessages(source)
641
688
  });
642
689
  if (normalized == null) {
643
690
  return void 0;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/lib/tracing/batch-processor.ts", "../../../src/lib/tracing/exporter.ts", "../../../src/lib/tracing/ids.ts", "../../../src/lib/tracing/processor.ts", "../../../src/lib/tracing/serialization.ts", "../../../src/lib/tracing/openai-traces-integration.ts"],
4
- "sourcesContent": ["import type { TracingExporter, TracingProcessor } from './processor.ts';\nimport type { OpenAISpan, OpenAITrace, TraceItem } from './types.ts';\n\nexport interface BatchTraceProcessorOptions {\n maxQueueSize?: number;\n maxBatchSize?: number;\n scheduleDelayMs?: number;\n exportTriggerRatio?: number;\n exportTimeoutMs?: number;\n}\n\nexport class BatchTraceProcessor implements TracingProcessor {\n readonly #exporter: TracingExporter;\n readonly #maxQueueSize: number;\n readonly #maxBatchSize: number;\n readonly #scheduleDelayMs: number;\n readonly #exportTimeoutMs: number;\n readonly #flushThreshold: number;\n\n #queue: TraceItem[] = [];\n #flushTimer?: NodeJS.Timeout;\n #flushPromise?: Promise<void>;\n #shutdown = false;\n\n constructor(\n exporter: TracingExporter,\n options: BatchTraceProcessorOptions = {},\n ) {\n this.#exporter = exporter;\n this.#maxQueueSize = options.maxQueueSize ?? 8192;\n this.#maxBatchSize = options.maxBatchSize ?? 128;\n this.#scheduleDelayMs = options.scheduleDelayMs ?? 5000;\n this.#exportTimeoutMs = options.exportTimeoutMs ?? 30000;\n this.#flushThreshold = Math.max(\n 1,\n Math.floor(this.#maxQueueSize * (options.exportTriggerRatio ?? 0.7)),\n );\n }\n\n start(): void {\n if (this.#shutdown || this.#flushTimer != null) {\n return;\n }\n\n this.#flushTimer = setInterval(() => {\n void this.forceFlush();\n }, this.#scheduleDelayMs);\n this.#flushTimer.unref?.();\n }\n\n onTraceEnd(trace: OpenAITrace): void {\n this.#enqueue(trace);\n }\n\n onSpanEnd(span: OpenAISpan): void {\n this.#enqueue(span);\n }\n\n async forceFlush(): Promise<void> {\n if (this.#flushPromise != null) {\n await this.#flushPromise;\n return;\n }\n\n if (this.#queue.length === 0) {\n return;\n }\n\n this.#flushPromise = this.#flush();\n\n try {\n await this.#flushPromise;\n } finally {\n this.#flushPromise = undefined;\n }\n }\n\n async shutdown(): Promise<void> {\n this.#shutdown = true;\n\n if (this.#flushTimer != null) {\n clearInterval(this.#flushTimer);\n this.#flushTimer = undefined;\n }\n\n await this.forceFlush();\n }\n\n #enqueue(item: TraceItem): void {\n if (this.#queue.length >= this.#maxQueueSize) {\n return;\n }\n\n this.#queue.push(item);\n\n if (this.#queue.length >= this.#flushThreshold) {\n void this.forceFlush();\n }\n }\n\n async #flush(): Promise<void> {\n while (this.#queue.length > 0) {\n const batch = this.#queue.slice(0, this.#maxBatchSize);\n await this.#exporter.export(\n batch,\n AbortSignal.timeout(this.#exportTimeoutMs),\n );\n this.#queue.splice(0, batch.length);\n }\n }\n}\n", "import type { TracingExporter } from './processor.ts';\nimport type { TraceItem } from './types.ts';\n\nexport class OpenAIExportError extends Error {\n readonly status: number;\n\n constructor(status: number, body: string) {\n super(`OpenAI traces export failed (${status}): ${body}`);\n this.name = 'OpenAIExportError';\n this.status = status;\n }\n}\n\nexport interface OpenAITracesExporterOptions {\n apiKey?: string | (() => string | Promise<string>);\n endpoint?: string;\n baseURL?: string;\n organization?: string;\n project?: string;\n maxRetries?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nexport class OpenAITracesExporter implements TracingExporter {\n #apiKey: string | (() => string | Promise<string>);\n #endpoint: string;\n #organization?: string;\n #project?: string;\n #maxRetries: number;\n #baseDelayMs: number;\n #maxDelayMs: number;\n\n constructor(options: OpenAITracesExporterOptions = {}) {\n this.#apiKey = options.apiKey ?? process.env.OPENAI_API_KEY ?? '';\n this.#endpoint =\n options.endpoint ??\n `${options.baseURL ?? 'https://api.openai.com'}/v1/traces/ingest`;\n this.#organization = options.organization;\n this.#project = options.project;\n this.#maxRetries = options.maxRetries ?? 3;\n this.#baseDelayMs = options.baseDelayMs ?? 1000;\n this.#maxDelayMs = options.maxDelayMs ?? 30000;\n }\n\n async export(items: TraceItem[], signal?: AbortSignal): Promise<void> {\n if (items.length === 0) return;\n const apiKey = await this.#resolveApiKey();\n if (!apiKey) {\n throw new Error(\n 'OpenAI API key is required. Set OPENAI_API_KEY or pass apiKey option.',\n );\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n 'OpenAI-Beta': 'traces=v1',\n };\n if (this.#organization) {\n headers['OpenAI-Organization'] = this.#organization;\n }\n if (this.#project) {\n headers['OpenAI-Project'] = this.#project;\n }\n\n const body = JSON.stringify({ data: items });\n await this.#fetchWithRetry(this.#endpoint, {\n method: 'POST',\n headers,\n body,\n signal,\n });\n }\n\n async #resolveApiKey(): Promise<string> {\n return typeof this.#apiKey === 'function'\n ? await this.#apiKey()\n : this.#apiKey;\n }\n\n async #fetchWithRetry(url: string, init: RequestInit): Promise<Response> {\n let lastError: unknown;\n for (let attempt = 0; attempt < this.#maxRetries; attempt++) {\n try {\n const response = await fetch(url, init);\n if (response.ok) return response;\n if (response.status >= 400 && response.status < 500) {\n const text = await response.text().catch(() => '');\n throw new OpenAIExportError(response.status, text);\n }\n lastError = new Error(`Server error ${response.status}`);\n } catch (error) {\n if (error instanceof OpenAIExportError) {\n throw error;\n }\n lastError = error;\n }\n if (attempt < this.#maxRetries - 1) {\n const delay = Math.min(\n this.#baseDelayMs * 2 ** attempt,\n this.#maxDelayMs,\n );\n const jitter = delay * (0.9 + Math.random() * 0.2);\n await new Promise((r) => setTimeout(r, jitter));\n }\n }\n throw lastError;\n }\n}\n", "import { randomUUID } from 'node:crypto';\n\nexport function traceId(): string {\n return `trace_${randomUUID().replace(/-/g, '')}`;\n}\n\nexport function spanId(): string {\n return `span_${randomUUID().replace(/-/g, '').slice(0, 24)}`;\n}\n\nexport function groupId(): string {\n return `group_${randomUUID().replace(/-/g, '').slice(0, 24)}`;\n}\n", "import type { OpenAISpan, OpenAITrace, TraceItem } from './types.ts';\n\nexport interface TracingExporter {\n export(items: TraceItem[], signal?: AbortSignal): Promise<void>;\n}\n\nexport interface TracingProcessor {\n start?(): Promise<void> | void;\n onTraceStart?(trace: OpenAITrace): Promise<void> | void;\n onTraceEnd?(trace: OpenAITrace): Promise<void> | void;\n onSpanStart?(span: OpenAISpan): Promise<void> | void;\n onSpanEnd?(span: OpenAISpan): Promise<void> | void;\n forceFlush?(): Promise<void> | void;\n shutdown?(): Promise<void> | void;\n}\n\nexport class CompositeTraceProcessor implements TracingProcessor {\n readonly #processors: TracingProcessor[];\n\n constructor(processors: TracingProcessor[]) {\n this.#processors = processors.filter(Boolean);\n }\n\n async start(): Promise<void> {\n for (const processor of this.#processors) {\n await processor.start?.();\n }\n }\n\n async onTraceStart(trace: OpenAITrace): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onTraceStart?.(trace);\n }\n }\n\n async onTraceEnd(trace: OpenAITrace): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onTraceEnd?.(trace);\n }\n }\n\n async onSpanStart(span: OpenAISpan): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onSpanStart?.(span);\n }\n }\n\n async onSpanEnd(span: OpenAISpan): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onSpanEnd?.(span);\n }\n }\n\n async forceFlush(): Promise<void> {\n for (const processor of this.#processors) {\n await processor.forceFlush?.();\n }\n }\n\n async shutdown(): Promise<void> {\n for (const processor of this.#processors) {\n await processor.shutdown?.();\n }\n }\n}\n\nexport function createTracingProcessor(\n processors: TracingProcessor | TracingProcessor[] | undefined,\n): TracingProcessor | undefined {\n if (processors == null) {\n return undefined;\n }\n\n const list = Array.isArray(processors) ? processors : [processors];\n if (list.length === 0) {\n return undefined;\n }\n\n return list.length === 1 ? list[0] : new CompositeTraceProcessor(list);\n}\n", "import type { LanguageModelUsage } from 'ai';\n\nimport type { GenerationUsageData, OpenAISpanError } from './types.ts';\n\nexport function normalizeForJson(value: unknown): unknown {\n if (value == null) {\n return value;\n }\n\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (value instanceof Error) {\n return errorToSpanError(value);\n }\n\n if (Array.isArray(value)) {\n return value\n .map((item) => normalizeForJson(item))\n .filter((item) => item !== undefined);\n }\n\n if (typeof value === 'object') {\n const normalized: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(\n value as Record<string, unknown>,\n )) {\n const result = normalizeForJson(entry);\n if (result !== undefined) {\n normalized[key] = result;\n }\n }\n return normalized;\n }\n\n return String(value);\n}\n\nexport function normalizeRecordArray(\n value: unknown,\n): Record<string, unknown>[] | undefined {\n const normalized = normalizeForJson(value);\n if (!Array.isArray(normalized)) {\n return undefined;\n }\n\n return normalized.map((item) =>\n typeof item === 'object' && item != null\n ? (item as Record<string, unknown>)\n : { value: item },\n );\n}\n\nexport function normalizeUsage(\n usage: LanguageModelUsage | undefined,\n): GenerationUsageData | undefined {\n if (usage == null) {\n return undefined;\n }\n\n const details: Record<string, unknown> = {};\n\n if (hasDefinedValue(usage.inputTokenDetails)) {\n details.input_token_details = normalizeForJson({\n no_cache_tokens: usage.inputTokenDetails.noCacheTokens,\n cache_read_tokens: usage.inputTokenDetails.cacheReadTokens,\n cache_write_tokens: usage.inputTokenDetails.cacheWriteTokens,\n });\n }\n\n if (hasDefinedValue(usage.outputTokenDetails)) {\n details.output_token_details = normalizeForJson({\n text_tokens: usage.outputTokenDetails.textTokens,\n reasoning_tokens: usage.outputTokenDetails.reasoningTokens,\n });\n }\n\n if (usage.raw != null) {\n details.raw = normalizeForJson(usage.raw);\n }\n\n if (usage.reasoningTokens !== undefined) {\n details.reasoning_tokens = usage.reasoningTokens;\n }\n\n if (usage.cachedInputTokens !== undefined) {\n details.cached_input_tokens = usage.cachedInputTokens;\n }\n\n return {\n input_tokens: usage.inputTokens,\n output_tokens: usage.outputTokens,\n total_tokens: usage.totalTokens,\n ...(Object.keys(details).length > 0 ? { details } : {}),\n };\n}\n\nexport function errorToSpanError(error: unknown): OpenAISpanError {\n if (error instanceof Error) {\n const data = normalizeForJson({\n name: error.name,\n stack: error.stack,\n cause: error.cause,\n }) as Record<string, unknown>;\n\n return {\n message: error.message,\n ...(Object.keys(data).length > 0 ? { data } : {}),\n };\n }\n\n return {\n message: String(error),\n };\n}\n\nfunction hasDefinedValue(value: Record<string, unknown> | undefined): boolean {\n if (value == null) {\n return false;\n }\n\n return Object.values(value).some((entry) => entry !== undefined);\n}\n", "import type {\n OnFinishEvent,\n OnStartEvent,\n OnStepFinishEvent,\n OnStepStartEvent,\n OnToolCallFinishEvent,\n OnToolCallStartEvent,\n TelemetryIntegration,\n} from 'ai';\n\nimport {\n BatchTraceProcessor,\n type BatchTraceProcessorOptions,\n} from './batch-processor.ts';\nimport { OpenAITracesExporter } from './exporter.ts';\nimport { spanId, traceId } from './ids.ts';\nimport { type TracingProcessor, createTracingProcessor } from './processor.ts';\nimport {\n errorToSpanError,\n normalizeForJson,\n normalizeRecordArray,\n normalizeUsage,\n} from './serialization.ts';\nimport type {\n AgentSpanData,\n FunctionSpanData,\n GenerationSpanData,\n OpenAISpan,\n OpenAITrace,\n} from './types.ts';\n\ninterface TraceRunState {\n trace: OpenAITrace;\n rootSpan: OpenAISpan;\n functionId?: string;\n modelKey?: string;\n inputFingerprint?: string;\n metadataRef?: object;\n contextRef?: object;\n abortSignal?: AbortSignal;\n responseIds: Set<string>;\n stepSpans: string[];\n spansById: Map<string, OpenAISpan>;\n toolCallSpans: Map<string, string>;\n}\n\nexport interface OpenAITracesIntegrationOptions {\n apiKey?: string | (() => string | Promise<string>);\n baseURL?: string;\n endpoint?: string;\n organization?: string;\n project?: string;\n workflowName?: string;\n groupId?: string;\n metadata?: Record<string, unknown>;\n exporter?: OpenAITracesExporter;\n processor?: TracingProcessor | TracingProcessor[];\n batch?: BatchTraceProcessorOptions;\n includeSensitiveData?: boolean;\n}\n\nexport function createOpenAITracesIntegration(\n options: OpenAITracesIntegrationOptions = {},\n): TelemetryIntegration {\n if (process.env.OPENAI_AGENTS_DISABLE_TRACING === '1') {\n return {};\n }\n\n const exporter =\n options.exporter ??\n new OpenAITracesExporter({\n apiKey: options.apiKey,\n baseURL: options.baseURL,\n endpoint: options.endpoint,\n organization: options.organization,\n project: options.project,\n });\n\n const processor: TracingProcessor =\n createTracingProcessor(options.processor) ??\n new BatchTraceProcessor(exporter, options.batch);\n\n const includeSensitive =\n options.includeSensitiveData ??\n process.env.OPENAI_AGENTS_TRACE_INCLUDE_SENSITIVE_DATA !== '0';\n const openRuns: TraceRunState[] = [];\n const responseIdToRun = new Map<string, TraceRunState>();\n const toolCallIdToRun = new Map<string, TraceRunState>();\n\n void processor.start?.();\n\n return {\n onStart: async (event: OnStartEvent) => {\n const trace: OpenAITrace = {\n object: 'trace',\n id: traceId(),\n workflow_name:\n options.workflowName ?? event.functionId ?? 'ai-sdk-workflow',\n group_id: options.groupId ?? null,\n metadata: normalizeMetadata({\n ...options.metadata,\n ...(event.metadata as Record<string, unknown> | undefined),\n }),\n };\n\n const rootSpan: OpenAISpan = {\n object: 'trace.span',\n id: spanId(),\n trace_id: trace.id,\n parent_id: null,\n started_at: now(),\n span_data: {\n type: 'agent',\n name: trace.workflow_name,\n tools: event.tools ? Object.keys(event.tools) : undefined,\n output_type: getOutputType(event.output),\n } satisfies AgentSpanData,\n };\n\n const state: TraceRunState = {\n trace,\n rootSpan,\n functionId: event.functionId,\n modelKey: toModelKey(event.model),\n inputFingerprint: fingerprintInput({\n system: event.system,\n prompt: event.prompt,\n messages: event.messages,\n }),\n metadataRef: asObjectRef(event.metadata),\n contextRef: asObjectRef(event.experimental_context),\n abortSignal: event.abortSignal,\n responseIds: new Set(),\n stepSpans: [],\n spansById: new Map([[rootSpan.id, rootSpan]]),\n toolCallSpans: new Map(),\n };\n\n openRuns.push(state);\n\n await processor.onTraceStart?.(trace);\n await processor.onSpanStart?.(rootSpan);\n },\n\n onStepStart: async (event: OnStepStartEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const span: OpenAISpan = {\n object: 'trace.span',\n id: spanId(),\n trace_id: state.trace.id,\n parent_id: currentParentId(state),\n started_at: now(),\n span_data: {\n type: 'generation',\n model: event.model.modelId,\n model_config: normalizeMetadata({\n provider: event.model.provider,\n tool_choice: event.toolChoice,\n active_tools: event.activeTools,\n provider_options: event.providerOptions,\n }),\n ...(includeSensitive\n ? { input: normalizeRecordArray(event.messages) }\n : {}),\n } satisfies GenerationSpanData,\n };\n\n state.stepSpans.push(span.id);\n state.spansById.set(span.id, span);\n\n await processor.onSpanStart?.(span);\n },\n\n onToolCallStart: async (event: OnToolCallStartEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const span: OpenAISpan = {\n object: 'trace.span',\n id: spanId(),\n trace_id: state.trace.id,\n parent_id: currentParentId(state),\n started_at: now(),\n span_data: {\n type: 'function',\n name: event.toolCall.toolName,\n ...(includeSensitive\n ? {\n input: normalizeForJson(event.toolCall.input),\n }\n : {}),\n } satisfies FunctionSpanData,\n };\n\n state.toolCallSpans.set(event.toolCall.toolCallId, span.id);\n toolCallIdToRun.set(event.toolCall.toolCallId, state);\n state.spansById.set(span.id, span);\n\n await processor.onSpanStart?.(span);\n },\n\n onToolCallFinish: async (event: OnToolCallFinishEvent) => {\n const state =\n toolCallIdToRun.get(event.toolCall.toolCallId) ??\n resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const id = state.toolCallSpans.get(event.toolCall.toolCallId);\n if (id == null) {\n return;\n }\n\n state.toolCallSpans.delete(event.toolCall.toolCallId);\n toolCallIdToRun.delete(event.toolCall.toolCallId);\n\n const span = state.spansById.get(id);\n if (span == null) {\n return;\n }\n\n span.ended_at = now();\n\n const data = span.span_data as FunctionSpanData;\n if (includeSensitive && event.success) {\n data.output = normalizeForJson(event.output);\n }\n\n if (!event.success) {\n span.error = errorToSpanError(event.error);\n }\n\n await processor.onSpanEnd?.(span);\n },\n\n onStepFinish: async (event: OnStepFinishEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const id = state.stepSpans.pop();\n if (id == null) {\n return;\n }\n\n const span = state.spansById.get(id);\n if (span == null) {\n return;\n }\n\n span.ended_at = now();\n\n const data = span.span_data as GenerationSpanData;\n if (includeSensitive) {\n data.output = normalizeRecordArray(event.response.messages);\n }\n data.usage = normalizeUsage(event.usage);\n state.responseIds.add(event.response.id);\n responseIdToRun.set(event.response.id, state);\n\n await processor.onSpanEnd?.(span);\n },\n\n onFinish: async (event: OnFinishEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n try {\n while (state.stepSpans.length > 0) {\n const openStepId = state.stepSpans.pop();\n if (openStepId == null) {\n continue;\n }\n\n const openStep = state.spansById.get(openStepId);\n if (openStep == null || openStep.ended_at != null) {\n continue;\n }\n\n openStep.ended_at = now();\n await processor.onSpanEnd?.(openStep);\n }\n\n state.rootSpan.ended_at = now();\n state.trace.metadata = normalizeMetadata({\n ...state.trace.metadata,\n total_usage: normalizeUsage(event.totalUsage),\n steps: event.steps.length,\n finish_reason: event.finishReason,\n });\n\n await processor.onSpanEnd?.(state.rootSpan);\n await processor.onTraceEnd?.(state.trace);\n await processor.forceFlush?.();\n } finally {\n closeRunState(state);\n }\n },\n };\n\n function resolveRunState(event: {\n functionId?: string;\n metadata?: unknown;\n experimental_context?: unknown;\n abortSignal?: AbortSignal | undefined;\n model?: { provider: string; modelId: string } | undefined;\n system?: unknown;\n prompt?: unknown;\n messages?: unknown;\n response?: { id: string } | undefined;\n toolCall?: { toolCallId: string } | undefined;\n }): TraceRunState | undefined {\n if (event.response?.id != null) {\n const state = responseIdToRun.get(event.response.id);\n if (state != null) {\n return state;\n }\n }\n\n if (event.toolCall?.toolCallId != null) {\n const state = toolCallIdToRun.get(event.toolCall.toolCallId);\n if (state != null) {\n return state;\n }\n }\n\n if (openRuns.length === 0) {\n return undefined;\n }\n if (openRuns.length === 1) {\n return openRuns[0];\n }\n\n let bestState: TraceRunState | undefined;\n let bestScore = 0;\n const eventMetadataRef = asObjectRef(event.metadata);\n const eventContextRef = asObjectRef(event.experimental_context);\n const eventModelKey =\n event.model != null ? toModelKey(event.model) : undefined;\n const eventFingerprint = fingerprintInput({\n system: event.system,\n prompt: event.prompt,\n messages: event.messages,\n });\n\n for (const state of openRuns) {\n let score = 0;\n\n if (eventContextRef != null && state.contextRef === eventContextRef) {\n score += 1000;\n }\n\n if (eventMetadataRef != null && state.metadataRef === eventMetadataRef) {\n score += 800;\n }\n\n if (\n event.abortSignal != null &&\n state.abortSignal != null &&\n state.abortSignal === event.abortSignal\n ) {\n score += 600;\n }\n\n if (event.functionId != null && state.functionId === event.functionId) {\n score += 300;\n }\n\n if (eventModelKey != null && state.modelKey === eventModelKey) {\n score += 100;\n }\n\n if (\n eventFingerprint != null &&\n state.inputFingerprint != null &&\n state.inputFingerprint === eventFingerprint\n ) {\n score += 200;\n }\n\n if (score > bestScore) {\n bestScore = score;\n bestState = state;\n }\n }\n\n return bestState;\n }\n\n function closeRunState(state: TraceRunState): void {\n const index = openRuns.indexOf(state);\n if (index >= 0) {\n openRuns.splice(index, 1);\n }\n\n for (const responseId of state.responseIds) {\n responseIdToRun.delete(responseId);\n }\n\n for (const toolCallId of state.toolCallSpans.keys()) {\n toolCallIdToRun.delete(toolCallId);\n }\n }\n}\n\nfunction currentParentId(state: TraceRunState): string {\n return state.stepSpans[state.stepSpans.length - 1] ?? state.rootSpan.id;\n}\n\nfunction normalizeMetadata(\n metadata: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (metadata == null) {\n return undefined;\n }\n\n const normalized = normalizeForJson(metadata);\n if (\n normalized == null ||\n typeof normalized !== 'object' ||\n Array.isArray(normalized)\n ) {\n return undefined;\n }\n\n return Object.keys(normalized).length > 0\n ? (normalized as Record<string, unknown>)\n : undefined;\n}\n\nfunction getOutputType(output: unknown): string | undefined {\n if (output == null) {\n return undefined;\n }\n\n if (\n typeof output === 'object' &&\n 'type' in (output as Record<string, unknown>) &&\n typeof (output as Record<string, unknown>).type === 'string'\n ) {\n return (output as Record<string, unknown>).type as string;\n }\n\n if (typeof output === 'object' && output.constructor?.name != null) {\n return output.constructor.name;\n }\n\n return typeof output;\n}\n\nfunction now(): string {\n return new Date().toISOString();\n}\n\nfunction toModelKey(model: { provider: string; modelId: string }): string {\n return `${model.provider}:${model.modelId}`;\n}\n\nfunction fingerprintInput(input: {\n system?: unknown;\n prompt?: unknown;\n messages?: unknown;\n}): string | undefined {\n const normalizedMessages =\n input.messages ??\n (typeof input.prompt === 'string'\n ? [\n {\n role: 'user',\n content: [{ type: 'text', text: input.prompt }],\n },\n ]\n : input.prompt);\n const normalized = normalizeForJson({\n system: input.system,\n messages: normalizedMessages,\n });\n\n if (normalized == null) {\n return undefined;\n }\n\n return JSON.stringify(normalized);\n}\n\nfunction asObjectRef(value: unknown): object | undefined {\n return value != null && typeof value === 'object'\n ? (value as object)\n : undefined;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { TracingExporter, TracingProcessor } from './processor.ts';\nimport type { OpenAISpan, OpenAITrace, TraceItem } from './types.ts';\n\nexport interface BatchTraceProcessorOptions {\n maxQueueSize?: number;\n maxBatchSize?: number;\n scheduleDelayMs?: number;\n exportTriggerRatio?: number;\n exportTimeoutMs?: number;\n}\n\nexport class BatchTraceProcessor implements TracingProcessor {\n readonly #exporter: TracingExporter;\n readonly #maxQueueSize: number;\n readonly #maxBatchSize: number;\n readonly #scheduleDelayMs: number;\n readonly #exportTimeoutMs: number;\n readonly #flushThreshold: number;\n\n #queue: TraceItem[] = [];\n #flushTimer?: NodeJS.Timeout;\n #flushPromise?: Promise<void>;\n #shutdown = false;\n\n constructor(\n exporter: TracingExporter,\n options: BatchTraceProcessorOptions = {},\n ) {\n this.#exporter = exporter;\n this.#maxQueueSize = options.maxQueueSize ?? 8192;\n this.#maxBatchSize = options.maxBatchSize ?? 128;\n this.#scheduleDelayMs = options.scheduleDelayMs ?? 5000;\n this.#exportTimeoutMs = options.exportTimeoutMs ?? 30000;\n this.#flushThreshold = Math.max(\n 1,\n Math.floor(this.#maxQueueSize * (options.exportTriggerRatio ?? 0.7)),\n );\n }\n\n start(): void {\n if (this.#shutdown || this.#flushTimer != null) {\n return;\n }\n\n this.#flushTimer = setInterval(() => {\n void this.forceFlush();\n }, this.#scheduleDelayMs);\n this.#flushTimer.unref?.();\n }\n\n onTraceEnd(trace: OpenAITrace): void {\n this.#enqueue(trace);\n }\n\n onSpanEnd(span: OpenAISpan): void {\n this.#enqueue(span);\n }\n\n async forceFlush(): Promise<void> {\n if (this.#flushPromise != null) {\n await this.#flushPromise;\n return;\n }\n\n if (this.#queue.length === 0) {\n return;\n }\n\n this.#flushPromise = this.#flush();\n\n try {\n await this.#flushPromise;\n } finally {\n this.#flushPromise = undefined;\n }\n }\n\n async shutdown(): Promise<void> {\n this.#shutdown = true;\n\n if (this.#flushTimer != null) {\n clearInterval(this.#flushTimer);\n this.#flushTimer = undefined;\n }\n\n await this.forceFlush();\n }\n\n #enqueue(item: TraceItem): void {\n if (this.#queue.length >= this.#maxQueueSize) {\n return;\n }\n\n this.#queue.push(item);\n\n if (this.#queue.length >= this.#flushThreshold) {\n void this.forceFlush();\n }\n }\n\n async #flush(): Promise<void> {\n while (this.#queue.length > 0) {\n const batch = this.#queue.slice(0, this.#maxBatchSize);\n await this.#exporter.export(\n batch,\n AbortSignal.timeout(this.#exportTimeoutMs),\n );\n this.#queue.splice(0, batch.length);\n }\n }\n}\n", "import type { TracingExporter } from './processor.ts';\nimport type {\n FunctionSpanData,\n OpenAISpan,\n OpenAITrace,\n SpanData,\n TraceItem,\n TranscriptionSpanData,\n} from './types.ts';\n\ntype StringifiedIOSpan = FunctionSpanData | TranscriptionSpanData;\ntype StringifiedIOSpanType = StringifiedIOSpan['type'];\n\nconst STRINGIFIED_IO_TYPES = {\n function: true,\n transcription: true,\n} as const satisfies Record<StringifiedIOSpanType, true>;\n\ntype WireSpanData =\n | Exclude<SpanData, StringifiedIOSpan>\n | (Omit<StringifiedIOSpan, 'input' | 'output'> & {\n input?: string;\n output?: string;\n });\n\ntype WireSpan = Omit<OpenAISpan, 'span_data'> & { span_data: WireSpanData };\ntype WireTraceItem = OpenAITrace | WireSpan;\n\nfunction hasStringifiedIO(data: SpanData): data is StringifiedIOSpan {\n return data.type in STRINGIFIED_IO_TYPES;\n}\n\nfunction encodeField(value: unknown): string | undefined {\n if (value == null) return undefined;\n return typeof value === 'string' ? value : JSON.stringify(value);\n}\n\nfunction toWireItem(item: TraceItem): WireTraceItem {\n if (item.object !== 'trace.span') return item;\n const spanData = item.span_data;\n if (!hasStringifiedIO(spanData)) {\n return { ...item, span_data: spanData };\n }\n return {\n ...item,\n span_data: {\n ...spanData,\n input: encodeField(spanData.input),\n output: encodeField(spanData.output),\n },\n };\n}\n\nexport class OpenAIExportError extends Error {\n readonly status: number;\n\n constructor(status: number, body: string) {\n super(`OpenAI traces export failed (${status}): ${body}`);\n this.name = 'OpenAIExportError';\n this.status = status;\n }\n}\n\nexport interface OpenAITracesExporterOptions {\n apiKey?: string | (() => string | Promise<string>);\n endpoint?: string;\n baseURL?: string;\n organization?: string;\n project?: string;\n maxRetries?: number;\n baseDelayMs?: number;\n maxDelayMs?: number;\n}\n\nexport class OpenAITracesExporter implements TracingExporter {\n #apiKey: string | (() => string | Promise<string>);\n #endpoint: string;\n #organization?: string;\n #project?: string;\n #maxRetries: number;\n #baseDelayMs: number;\n #maxDelayMs: number;\n\n constructor(options: OpenAITracesExporterOptions = {}) {\n this.#apiKey = options.apiKey ?? process.env.OPENAI_API_KEY ?? '';\n this.#endpoint =\n options.endpoint ??\n `${options.baseURL ?? 'https://api.openai.com'}/v1/traces/ingest`;\n this.#organization = options.organization;\n this.#project = options.project;\n this.#maxRetries = options.maxRetries ?? 3;\n this.#baseDelayMs = options.baseDelayMs ?? 1000;\n this.#maxDelayMs = options.maxDelayMs ?? 30000;\n }\n\n async export(items: TraceItem[], signal?: AbortSignal): Promise<void> {\n if (items.length === 0) return;\n const apiKey = await this.#resolveApiKey();\n if (!apiKey) {\n throw new Error(\n 'OpenAI API key is required. Set OPENAI_API_KEY or pass apiKey option.',\n );\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n 'OpenAI-Beta': 'traces=v1',\n };\n if (this.#organization) {\n headers['OpenAI-Organization'] = this.#organization;\n }\n if (this.#project) {\n headers['OpenAI-Project'] = this.#project;\n }\n\n const body = JSON.stringify({ data: items.map(toWireItem) });\n await this.#fetchWithRetry(this.#endpoint, {\n method: 'POST',\n headers,\n body,\n signal,\n });\n }\n\n async #resolveApiKey(): Promise<string> {\n return typeof this.#apiKey === 'function'\n ? await this.#apiKey()\n : this.#apiKey;\n }\n\n async #fetchWithRetry(url: string, init: RequestInit): Promise<Response> {\n let lastError: unknown;\n for (let attempt = 0; attempt < this.#maxRetries; attempt++) {\n try {\n const response = await fetch(url, init);\n if (response.ok) return response;\n if (response.status >= 400 && response.status < 500) {\n const text = await response.text().catch(() => '');\n throw new OpenAIExportError(response.status, text);\n }\n lastError = new Error(`Server error ${response.status}`);\n } catch (error) {\n if (error instanceof OpenAIExportError) {\n throw error;\n }\n lastError = error;\n }\n if (attempt < this.#maxRetries - 1) {\n const delay = Math.min(\n this.#baseDelayMs * 2 ** attempt,\n this.#maxDelayMs,\n );\n const jitter = delay * (0.9 + Math.random() * 0.2);\n await new Promise((r) => setTimeout(r, jitter));\n }\n }\n throw lastError;\n }\n}\n", "import { randomUUID } from 'node:crypto';\n\nexport function traceId(): string {\n return `trace_${randomUUID().replace(/-/g, '')}`;\n}\n\nexport function spanId(): string {\n return `span_${randomUUID().replace(/-/g, '').slice(0, 24)}`;\n}\n\nexport function groupId(): string {\n return `group_${randomUUID().replace(/-/g, '').slice(0, 24)}`;\n}\n", "import type { OpenAISpan, OpenAITrace, TraceItem } from './types.ts';\n\nexport interface TracingExporter {\n export(items: TraceItem[], signal?: AbortSignal): Promise<void>;\n}\n\nexport interface TracingProcessor {\n start?(): Promise<void> | void;\n onTraceStart?(trace: OpenAITrace): Promise<void> | void;\n onTraceEnd?(trace: OpenAITrace): Promise<void> | void;\n onSpanStart?(span: OpenAISpan): Promise<void> | void;\n onSpanEnd?(span: OpenAISpan): Promise<void> | void;\n forceFlush?(): Promise<void> | void;\n shutdown?(): Promise<void> | void;\n}\n\nexport class CompositeTraceProcessor implements TracingProcessor {\n readonly #processors: TracingProcessor[];\n\n constructor(processors: TracingProcessor[]) {\n this.#processors = processors.filter(Boolean);\n }\n\n async start(): Promise<void> {\n for (const processor of this.#processors) {\n await processor.start?.();\n }\n }\n\n async onTraceStart(trace: OpenAITrace): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onTraceStart?.(trace);\n }\n }\n\n async onTraceEnd(trace: OpenAITrace): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onTraceEnd?.(trace);\n }\n }\n\n async onSpanStart(span: OpenAISpan): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onSpanStart?.(span);\n }\n }\n\n async onSpanEnd(span: OpenAISpan): Promise<void> {\n for (const processor of this.#processors) {\n await processor.onSpanEnd?.(span);\n }\n }\n\n async forceFlush(): Promise<void> {\n for (const processor of this.#processors) {\n await processor.forceFlush?.();\n }\n }\n\n async shutdown(): Promise<void> {\n for (const processor of this.#processors) {\n await processor.shutdown?.();\n }\n }\n}\n\nexport function createTracingProcessor(\n processors: TracingProcessor | TracingProcessor[] | undefined,\n): TracingProcessor | undefined {\n if (processors == null) {\n return undefined;\n }\n\n const list = Array.isArray(processors) ? processors : [processors];\n if (list.length === 0) {\n return undefined;\n }\n\n return list.length === 1 ? list[0] : new CompositeTraceProcessor(list);\n}\n", "import type { LanguageModelUsage } from 'ai';\n\nimport type { GenerationUsageData, OpenAISpanError } from './types.ts';\n\nexport function normalizeForJson(value: unknown): unknown {\n if (value == null) {\n return value;\n }\n\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (value instanceof Error) {\n return errorToSpanError(value);\n }\n\n if (Array.isArray(value)) {\n return value\n .map((item) => normalizeForJson(item))\n .filter((item) => item !== undefined);\n }\n\n if (typeof value === 'object') {\n const normalized: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(\n value as Record<string, unknown>,\n )) {\n const result = normalizeForJson(entry);\n if (result !== undefined) {\n normalized[key] = result;\n }\n }\n return normalized;\n }\n\n return String(value);\n}\n\nexport function normalizeRecordArray(\n value: unknown,\n): Record<string, unknown>[] | undefined {\n const normalized = normalizeForJson(value);\n if (!Array.isArray(normalized)) {\n return undefined;\n }\n\n return normalized.map((item) =>\n typeof item === 'object' && item != null\n ? (item as Record<string, unknown>)\n : { value: item },\n );\n}\n\nexport function normalizeUsage(\n usage: LanguageModelUsage | undefined,\n): GenerationUsageData | undefined {\n if (usage == null) {\n return undefined;\n }\n\n const details: Record<string, unknown> = {};\n\n if (hasDefinedValue(usage.inputTokenDetails)) {\n details.input_token_details = normalizeForJson({\n no_cache_tokens: usage.inputTokenDetails.noCacheTokens,\n cache_read_tokens: usage.inputTokenDetails.cacheReadTokens,\n cache_write_tokens: usage.inputTokenDetails.cacheWriteTokens,\n });\n }\n\n if (hasDefinedValue(usage.outputTokenDetails)) {\n details.output_token_details = normalizeForJson({\n text_tokens: usage.outputTokenDetails.textTokens,\n reasoning_tokens: usage.outputTokenDetails.reasoningTokens,\n });\n }\n\n if (usage.raw != null) {\n details.raw = normalizeForJson(usage.raw);\n }\n\n if (usage.reasoningTokens !== undefined) {\n details.reasoning_tokens = usage.reasoningTokens;\n }\n\n if (usage.cachedInputTokens !== undefined) {\n details.cached_input_tokens = usage.cachedInputTokens;\n }\n\n return {\n input_tokens: usage.inputTokens,\n output_tokens: usage.outputTokens,\n ...(Object.keys(details).length > 0 ? { details } : {}),\n };\n}\n\nexport function errorToSpanError(error: unknown): OpenAISpanError {\n if (error instanceof Error) {\n const data = normalizeForJson({\n name: error.name,\n stack: error.stack,\n cause: error.cause,\n }) as Record<string, unknown>;\n\n return {\n message: error.message,\n ...(Object.keys(data).length > 0 ? { data } : {}),\n };\n }\n\n return {\n message: String(error),\n };\n}\n\nfunction hasDefinedValue(value: Record<string, unknown> | undefined): boolean {\n if (value == null) {\n return false;\n }\n\n return Object.values(value).some((entry) => entry !== undefined);\n}\n", "import type {\n OnFinishEvent,\n OnStartEvent,\n OnStepFinishEvent,\n OnStepStartEvent,\n OnToolCallFinishEvent,\n OnToolCallStartEvent,\n TelemetryIntegration,\n} from 'ai';\n\nimport {\n BatchTraceProcessor,\n type BatchTraceProcessorOptions,\n} from './batch-processor.ts';\nimport { OpenAITracesExporter } from './exporter.ts';\nimport { spanId, traceId } from './ids.ts';\nimport { type TracingProcessor, createTracingProcessor } from './processor.ts';\nimport {\n errorToSpanError,\n normalizeForJson,\n normalizeRecordArray,\n normalizeUsage,\n} from './serialization.ts';\nimport type {\n AgentSpanData,\n FunctionSpanData,\n GenerationSpanData,\n OpenAISpan,\n OpenAITrace,\n} from './types.ts';\n\ninterface TraceRunState {\n trace: OpenAITrace;\n rootSpan: OpenAISpan;\n functionId?: string;\n modelKey?: string;\n inputFingerprint?: string;\n metadataRef?: object;\n contextRef?: object;\n abortSignal?: AbortSignal;\n responseIds: Set<string>;\n stepSpans: string[];\n spansById: Map<string, OpenAISpan>;\n toolCallSpans: Map<string, string>;\n}\n\ninterface ResolvableEvent {\n functionId?: string;\n metadata?: unknown;\n experimental_context?: unknown;\n abortSignal?: AbortSignal;\n model?: { provider: string; modelId: string };\n system?: unknown;\n prompt?: unknown;\n messages?: unknown;\n response?: { id: string };\n toolCall?: { toolCallId: string };\n}\n\nexport interface OpenAITracesIntegrationOptions {\n apiKey?: string | (() => string | Promise<string>);\n baseURL?: string;\n endpoint?: string;\n organization?: string;\n project?: string;\n workflowName?: string;\n groupId?: string;\n metadata?: Record<string, unknown>;\n exporter?: OpenAITracesExporter;\n processor?: TracingProcessor | TracingProcessor[];\n batch?: BatchTraceProcessorOptions;\n includeSensitiveData?: boolean;\n}\n\nexport function createOpenAITracesIntegration(\n options: OpenAITracesIntegrationOptions = {},\n): TelemetryIntegration {\n if (process.env.OPENAI_AGENTS_DISABLE_TRACING === '1') {\n return {};\n }\n\n const exporter =\n options.exporter ??\n new OpenAITracesExporter({\n apiKey: options.apiKey,\n baseURL: options.baseURL,\n endpoint: options.endpoint,\n organization: options.organization,\n project: options.project,\n });\n\n const processor: TracingProcessor =\n createTracingProcessor(options.processor) ??\n new BatchTraceProcessor(exporter, options.batch);\n\n const includeSensitive =\n options.includeSensitiveData ??\n process.env.OPENAI_AGENTS_TRACE_INCLUDE_SENSITIVE_DATA !== '0';\n const openRuns: TraceRunState[] = [];\n const responseIdToRun = new Map<string, TraceRunState>();\n const toolCallIdToRun = new Map<string, TraceRunState>();\n\n void processor.start?.();\n\n return {\n onStart: async (event: OnStartEvent) => {\n const trace: OpenAITrace = {\n object: 'trace',\n id: traceId(),\n workflow_name:\n options.workflowName ?? event.functionId ?? 'ai-sdk-workflow',\n group_id: options.groupId ?? null,\n metadata: normalizeMetadata({\n ...options.metadata,\n ...(event.metadata as Record<string, unknown> | undefined),\n }),\n };\n\n const rootSpan: OpenAISpan = {\n object: 'trace.span',\n id: spanId(),\n trace_id: trace.id,\n parent_id: null,\n started_at: now(),\n span_data: {\n type: 'agent',\n name: trace.workflow_name,\n tools: event.tools ? Object.keys(event.tools) : undefined,\n output_type: getOutputType(event.output),\n } satisfies AgentSpanData,\n };\n\n const state: TraceRunState = {\n trace,\n rootSpan,\n functionId: event.functionId,\n modelKey: toModelKey(event.model),\n inputFingerprint: fingerprintInput({\n system: event.system,\n prompt: event.prompt,\n messages: event.messages,\n }),\n metadataRef: asObjectRef(event.metadata),\n contextRef: asObjectRef(event.experimental_context),\n abortSignal: event.abortSignal,\n responseIds: new Set(),\n stepSpans: [],\n spansById: new Map([[rootSpan.id, rootSpan]]),\n toolCallSpans: new Map(),\n };\n\n openRuns.push(state);\n\n await processor.onTraceStart?.(trace);\n await processor.onSpanStart?.(rootSpan);\n },\n\n onStepStart: async (event: OnStepStartEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const span: OpenAISpan = {\n object: 'trace.span',\n id: spanId(),\n trace_id: state.trace.id,\n parent_id: currentParentId(state),\n started_at: now(),\n span_data: {\n type: 'generation',\n model: event.model.modelId,\n model_config: normalizeMetadata({\n provider: event.model.provider,\n tool_choice: event.toolChoice,\n active_tools: event.activeTools,\n provider_options: event.providerOptions,\n }),\n ...(includeSensitive\n ? { input: normalizeRecordArray(event.messages) }\n : {}),\n } satisfies GenerationSpanData,\n };\n\n state.stepSpans.push(span.id);\n state.spansById.set(span.id, span);\n\n await processor.onSpanStart?.(span);\n },\n\n onToolCallStart: async (event: OnToolCallStartEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const span: OpenAISpan = {\n object: 'trace.span',\n id: spanId(),\n trace_id: state.trace.id,\n parent_id: currentParentId(state),\n started_at: now(),\n span_data: {\n type: 'function',\n name: event.toolCall.toolName,\n ...(includeSensitive\n ? {\n input: normalizeForJson(event.toolCall.input),\n }\n : {}),\n } satisfies FunctionSpanData,\n };\n\n state.toolCallSpans.set(event.toolCall.toolCallId, span.id);\n toolCallIdToRun.set(event.toolCall.toolCallId, state);\n state.spansById.set(span.id, span);\n\n await processor.onSpanStart?.(span);\n },\n\n onToolCallFinish: async (event: OnToolCallFinishEvent) => {\n const state =\n toolCallIdToRun.get(event.toolCall.toolCallId) ??\n resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const id = state.toolCallSpans.get(event.toolCall.toolCallId);\n if (id == null) {\n return;\n }\n\n state.toolCallSpans.delete(event.toolCall.toolCallId);\n toolCallIdToRun.delete(event.toolCall.toolCallId);\n\n const span = state.spansById.get(id);\n if (span == null) {\n return;\n }\n\n span.ended_at = now();\n\n const data = span.span_data as FunctionSpanData;\n if (includeSensitive && event.success) {\n data.output = normalizeForJson(event.output);\n }\n\n if (!event.success) {\n span.error = errorToSpanError(event.error);\n }\n\n await processor.onSpanEnd?.(span);\n },\n\n onStepFinish: async (event: OnStepFinishEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n const id = state.stepSpans.pop();\n if (id == null) {\n return;\n }\n\n const span = state.spansById.get(id);\n if (span == null) {\n return;\n }\n\n span.ended_at = now();\n\n const data = span.span_data as GenerationSpanData;\n if (includeSensitive) {\n data.output = normalizeRecordArray(event.response.messages);\n }\n data.usage = normalizeUsage(event.usage);\n state.responseIds.add(event.response.id);\n responseIdToRun.set(event.response.id, state);\n\n await processor.onSpanEnd?.(span);\n },\n\n onFinish: async (event: OnFinishEvent) => {\n const state = resolveRunState(event);\n if (state == null) {\n return;\n }\n\n try {\n while (state.stepSpans.length > 0) {\n const openStepId = state.stepSpans.pop();\n if (openStepId == null) {\n continue;\n }\n\n const openStep = state.spansById.get(openStepId);\n if (openStep == null || openStep.ended_at != null) {\n continue;\n }\n\n openStep.ended_at = now();\n await processor.onSpanEnd?.(openStep);\n }\n\n state.rootSpan.ended_at = now();\n state.trace.metadata = normalizeMetadata({\n ...state.trace.metadata,\n total_usage: normalizeUsage(event.totalUsage),\n steps: event.steps.length,\n finish_reason: event.finishReason,\n });\n\n await processor.onSpanEnd?.(state.rootSpan);\n await processor.onTraceEnd?.(state.trace);\n await processor.forceFlush?.();\n } finally {\n closeRunState(state);\n }\n },\n };\n\n function resolveRunState(event: ResolvableEvent): TraceRunState | undefined {\n if (event.response?.id != null) {\n const state = responseIdToRun.get(event.response.id);\n if (state != null) {\n return state;\n }\n }\n\n if (event.toolCall?.toolCallId != null) {\n const state = toolCallIdToRun.get(event.toolCall.toolCallId);\n if (state != null) {\n return state;\n }\n }\n\n if (openRuns.length === 0) {\n return undefined;\n }\n if (openRuns.length === 1) {\n return openRuns[0];\n }\n\n let bestScore = 0;\n let bestStates: TraceRunState[] = [];\n const eventMetadataRef = asObjectRef(event.metadata);\n const eventContextRef = asObjectRef(event.experimental_context);\n const eventModelKey =\n event.model != null ? toModelKey(event.model) : undefined;\n const eventFingerprint = fingerprintInput({\n system: event.system,\n prompt: event.prompt,\n messages: event.messages,\n });\n\n for (const state of openRuns) {\n let score = 0;\n\n if (eventContextRef != null && state.contextRef === eventContextRef) {\n score += 1000;\n }\n\n if (eventMetadataRef != null && state.metadataRef === eventMetadataRef) {\n score += 800;\n }\n\n if (\n event.abortSignal != null &&\n state.abortSignal != null &&\n state.abortSignal === event.abortSignal\n ) {\n score += 600;\n }\n\n if (event.functionId != null && state.functionId === event.functionId) {\n score += 300;\n }\n\n if (eventModelKey != null && state.modelKey === eventModelKey) {\n score += 100;\n }\n\n if (\n eventFingerprint != null &&\n state.inputFingerprint != null &&\n state.inputFingerprint === eventFingerprint\n ) {\n score += 200;\n }\n\n if (score > bestScore) {\n bestScore = score;\n bestStates = [state];\n } else if (score === bestScore && bestScore > 0) {\n bestStates.push(state);\n }\n }\n\n if (bestStates.length === 0) return undefined;\n if (bestStates.length === 1) return bestStates[0];\n\n if (event.response?.id != null) {\n const withOpenStep = bestStates.filter((s) => s.stepSpans.length > 0);\n if (withOpenStep.length >= 1) return withOpenStep[0];\n }\n\n if (event.toolCall?.toolCallId != null) {\n const withOpenTool = bestStates.filter((s) => s.toolCallSpans.size > 0);\n if (withOpenTool.length >= 1) return withOpenTool[0];\n }\n\n return bestStates[0];\n }\n\n function closeRunState(state: TraceRunState): void {\n const index = openRuns.indexOf(state);\n if (index >= 0) {\n openRuns.splice(index, 1);\n }\n\n for (const responseId of state.responseIds) {\n responseIdToRun.delete(responseId);\n }\n\n for (const toolCallId of state.toolCallSpans.keys()) {\n toolCallIdToRun.delete(toolCallId);\n }\n }\n}\n\nfunction currentParentId(state: TraceRunState): string {\n return state.stepSpans[state.stepSpans.length - 1] ?? state.rootSpan.id;\n}\n\nfunction normalizeMetadata(\n metadata: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (metadata == null) {\n return undefined;\n }\n\n const normalized = normalizeForJson(metadata);\n if (\n normalized == null ||\n typeof normalized !== 'object' ||\n Array.isArray(normalized)\n ) {\n return undefined;\n }\n\n return Object.keys(normalized).length > 0\n ? (normalized as Record<string, unknown>)\n : undefined;\n}\n\nfunction getOutputType(output: unknown): string | undefined {\n if (output == null) {\n return undefined;\n }\n\n if (\n typeof output === 'object' &&\n 'type' in (output as Record<string, unknown>) &&\n typeof (output as Record<string, unknown>).type === 'string'\n ) {\n return (output as Record<string, unknown>).type as string;\n }\n\n if (typeof output === 'object' && output.constructor?.name != null) {\n return output.constructor.name;\n }\n\n return typeof output;\n}\n\nfunction now(): string {\n return new Date().toISOString();\n}\n\nfunction toModelKey(model: { provider: string; modelId: string }): string {\n return `${model.provider}:${model.modelId}`;\n}\n\nfunction canonicalizeMessageContent(content: unknown): unknown {\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }];\n }\n return content;\n}\n\nfunction canonicalizeMessages(messages: unknown): unknown {\n if (!Array.isArray(messages)) return messages;\n return messages.map((message) => {\n if (message == null || typeof message !== 'object') return message;\n const record = message as Record<string, unknown>;\n if (!('content' in record)) return record;\n return { ...record, content: canonicalizeMessageContent(record.content) };\n });\n}\n\nfunction fingerprintInput(input: {\n system?: unknown;\n prompt?: unknown;\n messages?: unknown;\n}): string | undefined {\n const source =\n input.messages ??\n (typeof input.prompt === 'string'\n ? [{ role: 'user', content: input.prompt }]\n : input.prompt);\n const normalized = normalizeForJson({\n system: input.system,\n messages: canonicalizeMessages(source),\n });\n\n if (normalized == null) {\n return undefined;\n }\n\n return JSON.stringify(normalized);\n}\n\nfunction asObjectRef(value: unknown): object | undefined {\n return value != null && typeof value === 'object'\n ? (value as object)\n : undefined;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai-traces-integration.d.ts","sourceRoot":"","sources":["../../../src/lib/tracing/openai-traces-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,oBAAoB,EACrB,MAAM,IAAI,CAAC;AAEZ,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AA8B/E,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,oBAAoB,CA8VtB"}
1
+ {"version":3,"file":"openai-traces-integration.d.ts","sourceRoot":"","sources":["../../../src/lib/tracing/openai-traces-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,oBAAoB,EACrB,MAAM,IAAI,CAAC;AAEZ,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AA2C/E,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,oBAAoB,CAkWtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../../src/lib/tracing/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA6CxD;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAWvC;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,GAAG,SAAS,GACpC,mBAAmB,GAAG,SAAS,CAwCjC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAiBhE"}
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../../src/lib/tracing/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA6CxD;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAWvC;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,GAAG,SAAS,GACpC,mBAAmB,GAAG,SAAS,CAuCjC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAiBhE"}
@@ -23,7 +23,6 @@ export interface OpenAISpanError {
23
23
  export interface GenerationUsageData {
24
24
  input_tokens?: number;
25
25
  output_tokens?: number;
26
- total_tokens?: number;
27
26
  details?: Record<string, unknown>;
28
27
  }
29
28
  export interface GenerationSpanData {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/tracing/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,QAAQ,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,cAAc,GACd,mBAAmB,GACnB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/tracing/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepagents/context",
3
- "version": "0.36.0",
3
+ "version": "0.37.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,6 +31,11 @@
31
31
  "types": "./dist/lib/tracing/index.d.ts",
32
32
  "import": "./dist/lib/tracing/index.js",
33
33
  "default": "./dist/lib/tracing/index.js"
34
+ },
35
+ "./openapi-skill": {
36
+ "types": "./dist/lib/sandbox/openapi/skill/index.d.ts",
37
+ "import": "./dist/lib/sandbox/openapi/skill/index.js",
38
+ "default": "./dist/lib/sandbox/openapi/skill/index.js"
34
39
  }
35
40
  },
36
41
  "files": [
@@ -42,14 +47,16 @@
42
47
  "access": "public"
43
48
  },
44
49
  "dependencies": {
45
- "@ai-sdk/groq": "^3.0.31",
46
- "@deepagents/agent": "0.36.0",
47
- "ai": "^6.0.141",
50
+ "@ai-sdk/groq": "^3.0.36",
51
+ "@ai-sdk/openai": "^3.0.54",
52
+ "@ai-sdk/openai-compatible": "^2.0.42",
53
+ "@ai-sdk/provider": "^3.0.9",
54
+ "ai": "^6.0.169",
48
55
  "bash-tool": "^1.3.16",
49
56
  "chalk": "^5.6.0",
50
57
  "dedent": "^1.7.0",
51
58
  "gpt-tokenizer": "^3.4.0",
52
- "just-bash": "^2.14.1",
59
+ "just-bash": "^2.14.2",
53
60
  "lodash-es": "^4.17.21",
54
61
  "nano-spawn": "^2.0.0",
55
62
  "openai": "^6.25.0",
@@ -57,19 +64,24 @@
57
64
  "stringcase": "^4.3.1",
58
65
  "tiny-tfidf": "^1.0.0",
59
66
  "yaml": "^2.8.0",
60
- "zod": "^3.25.76 || ^4.0.0"
67
+ "zod": "^3.25.76 || ^4.0.0",
68
+ "zod-to-json-schema": "^3.25.1",
69
+ "@deepagents/agent": "0.37.1",
70
+ "@sdk-it/rpc": "^0.40.0",
71
+ "@sdk-it/spec": "^0.40.0"
61
72
  },
62
73
  "devDependencies": {
63
74
  "@types/debug": "^4.1.12",
64
75
  "@types/mssql": "^9.1.6",
65
76
  "@types/pg": "^8.16.0",
77
+ "nock": "^14.0.12",
66
78
  "pg-boss": "^10.0.0"
67
79
  },
68
80
  "peerDependencies": {
69
- "mssql": "^12.2.0",
70
- "pg": "^8.17.2",
81
+ "@rivet-dev/agent-os-common": "^0.0.260331072558",
71
82
  "@rivet-dev/agent-os-core": ">=0.1.0",
72
- "@rivet-dev/agent-os-common": ">=0.1.0"
83
+ "mssql": "^12.2.0",
84
+ "pg": "^8.17.2"
73
85
  },
74
86
  "peerDependenciesMeta": {
75
87
  "mssql": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporal-reminder.d.ts","sourceRoot":"","sources":["../../../../src/lib/fragments/reminders/temporal-reminder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAa1D,MAAM,WAAW,uBAAuB;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+DD,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,CAqBjB;AAED,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,CAmBjB;AAED,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,CAmBjB;AAED,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,CAmBjB;AAED,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,CAmBjB;AA0BD,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,eAAe,CA8BjB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,EAAE,CAUnB"}