@agent-inspect/openai-agents 6.17.4 → 6.17.6

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 CHANGED
@@ -44,6 +44,7 @@ Use **`setTraceProcessors` replacement** for local-only mode. Avoid `addTracePro
44
44
  - Local JSONL files only
45
45
  - AgentInspect does not upload traces to OpenAI
46
46
  - Metadata-only by default
47
+ - `capture: "preview"` is accepted for compatibility but currently falls back to metadata-only and emits one `AI_ADAPTER_PREVIEW_NOT_AVAILABLE` console warning per processor instance
47
48
 
48
49
  ## API
49
50
 
@@ -65,6 +66,7 @@ Use **`setTraceProcessors` replacement** for local-only mode. Avoid `addTracePro
65
66
 
66
67
  - **Duplicate export:** Using `addTraceProcessor` keeps SDK default exporter — use replacement mode for local-only
67
68
  - **Handoffs/sessions:** Mapped to run metadata; see docs for session IDs
69
+ - **Preview mode warning:** `capture: "preview"` is not implemented yet; AgentInspect emits `AI_ADAPTER_PREVIEW_NOT_AVAILABLE` once and keeps metadata-only persistence
68
70
 
69
71
 
70
72
  ## Version
package/dist/index.cjs CHANGED
@@ -304,7 +304,8 @@ var AgentInspectOpenAiAgentsTracingProcessor = class {
304
304
  "diagnostics",
305
305
  "activeTraces",
306
306
  "activeSpans",
307
- "closed"
307
+ "closed",
308
+ "previewCapabilityWarned"
308
309
  ]) {
309
310
  Object.defineProperty(this, key, { enumerable: false });
310
311
  }
@@ -545,15 +546,21 @@ var AgentInspectOpenAiAgentsTracingProcessor = class {
545
546
  this.diagnostics.lifecycleWarnings += 1;
546
547
  this.diagnostics.lastWarning = message;
547
548
  }
549
+ previewCapabilityWarned = false;
548
550
  recordCaptureOptionWarnings() {
549
551
  const previewOnlyOptions = [];
550
552
  if (this.requestedCapture === "preview") previewOnlyOptions.push("capture");
551
553
  if (this.options.redactionProfile !== void 0) previewOnlyOptions.push("redactionProfile");
552
554
  if (this.options.maxPreviewChars !== void 0) previewOnlyOptions.push("maxPreviewChars");
553
555
  if (this.requestedCapture === "preview") {
556
+ const message = `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:"preview" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;
554
557
  this.recordLifecycleWarning(
555
558
  `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(", ")}.`
556
559
  );
560
+ if (!this.previewCapabilityWarned) {
561
+ this.previewCapabilityWarned = true;
562
+ console.warn(`[agent-inspect:openai-agents] ${message}`);
563
+ }
557
564
  return;
558
565
  }
559
566
  if (previewOnlyOptions.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["fileWriter"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the framework adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["fileWriter"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the framework adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n \"previewCapabilityWarned\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private previewCapabilityWarned = false;\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n const message =\n `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:\"preview\" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n if (!this.previewCapabilityWarned) {\n this.previewCapabilityWarned = true;\n console.warn(`[agent-inspect:openai-agents] ${message}`);\n }\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
package/dist/index.mjs CHANGED
@@ -302,7 +302,8 @@ var AgentInspectOpenAiAgentsTracingProcessor = class {
302
302
  "diagnostics",
303
303
  "activeTraces",
304
304
  "activeSpans",
305
- "closed"
305
+ "closed",
306
+ "previewCapabilityWarned"
306
307
  ]) {
307
308
  Object.defineProperty(this, key, { enumerable: false });
308
309
  }
@@ -543,15 +544,21 @@ var AgentInspectOpenAiAgentsTracingProcessor = class {
543
544
  this.diagnostics.lifecycleWarnings += 1;
544
545
  this.diagnostics.lastWarning = message;
545
546
  }
547
+ previewCapabilityWarned = false;
546
548
  recordCaptureOptionWarnings() {
547
549
  const previewOnlyOptions = [];
548
550
  if (this.requestedCapture === "preview") previewOnlyOptions.push("capture");
549
551
  if (this.options.redactionProfile !== void 0) previewOnlyOptions.push("redactionProfile");
550
552
  if (this.options.maxPreviewChars !== void 0) previewOnlyOptions.push("maxPreviewChars");
551
553
  if (this.requestedCapture === "preview") {
554
+ const message = `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:"preview" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;
552
555
  this.recordLifecycleWarning(
553
556
  `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(", ")}.`
554
557
  );
558
+ if (!this.previewCapabilityWarned) {
559
+ this.previewCapabilityWarned = true;
560
+ console.warn(`[agent-inspect:openai-agents] ${message}`);
561
+ }
555
562
  return;
556
563
  }
557
564
  if (previewOnlyOptions.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the framework adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAuHA,IAAM,oBAAA,GAAuB;AAAA,EAC3B,IAAA,EAAM,SAAA;AAAA,EACN,IAAA,EAAM,8BAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,MAAA,GAAiB;AACxB,EAAA,OAAA,iBAAO,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAChC;AAEA,SAAS,eAAe,KAAA,EAAwB;AAC9C,EAAA,IAAI,iBAAiB,KAAA,IAAS,KAAA,CAAM,OAAA,CAAQ,IAAA,OAAW,EAAA,EAAI;AACzD,IAAA,OAAO,KAAA,CAAM,OAAA;AAAA,EACf;AACA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,IAAA,OAAW,EAAA,EAAI;AACpD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,uCAAA;AACT;AAEA,SAAS,UAAA,CAAW,WAAmB,OAAA,EAAqC;AAC1E,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AACpC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAChC,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,MAAA;AACjE,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,OAAO,CAAA;AACpC;AAEA,SAAS,gBAAgB,KAAA,EAAoC;AAC3D,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA;AAC5B;AAEA,SAAS,yBAAyB,KAAA,EAAoC;AACpE,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,CAAC,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,KAAA,GAAQ,CAAA,EAAG;AACrE,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AACzB;AAEA,SAAS,iBAAiB,KAAA,EAAyC;AACjE,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,OAAO,EAAE,MAAM,MAAA,EAAO;AAC1C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,KAAA,CAAM,MAAA,EAAO;AAE1E,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,eAAA,CAAgB,KAAK,KAAK,CAAA,EAAE;AAAA,EACjE;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,MAAM,MAAA,EAAO;AAAA,EAChD;AACA,EAAA,MAAM,YAAY,OAAO,KAAA;AACzB,EAAA,IAAI,SAAA,KAAc,QAAA,IAAY,SAAA,KAAc,SAAA,IAAa,cAAc,QAAA,EAAU;AAC/E,IAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAAA,EAC3B;AACA,EAAA,IAAI,SAAA,KAAc,WAAA,EAAa,OAAO,EAAE,MAAM,WAAA,EAAY;AAC1D,EAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAC3B;AAEA,SAAS,yBAAyB,KAAA,EAAqD;AACrF,EAAA,OAAO,KAAA,KAAU,MAAA,GAAY,MAAA,GAAY,gBAAA,CAAiB,KAAK,CAAA;AACjE;AAEA,SAAS,eAAe,KAAA,EAAwE;AAC9F,EAAA,IAAI,CAAC,KAAA,EAAO,OAAA,EAAS,OAAO,MAAA;AAC5B,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ;AAClC;AAEA,SAAS,eAAe,KAAA,EAAiD;AACvE,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA;AACf,EAAA,MAAM,aAAkC,EAAC;AACzC,EAAA,IAAI,OAAO,OAAO,YAAA,KAAiB,QAAA,IAAY,OAAO,QAAA,CAAS,MAAA,CAAO,YAAY,CAAA,EAAG;AACnF,IAAA,UAAA,CAAW,QAAQ,MAAA,CAAO,YAAA;AAAA,EAC5B;AACA,EAAA,IAAI,OAAO,OAAO,aAAA,KAAkB,QAAA,IAAY,OAAO,QAAA,CAAS,MAAA,CAAO,aAAa,CAAA,EAAG;AACrF,IAAA,UAAA,CAAW,SAAS,MAAA,CAAO,aAAA;AAAA,EAC7B;AACA,EAAA,IAAI,UAAA,CAAW,KAAA,KAAU,MAAA,IAAa,UAAA,CAAW,WAAW,MAAA,EAAW;AACrE,IAAA,UAAA,CAAW,KAAA,GAAA,CAAS,UAAA,CAAW,KAAA,IAAS,CAAA,KAAM,WAAW,MAAA,IAAU,CAAA,CAAA;AAAA,EACrE;AAEA,EAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,EAAA,IAAI,OAAO,YAAY,QAAA,IAAY,OAAA,KAAY,QAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC9E,IAAA,MAAM,YAAA,GAAe,OAAA;AACrB,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,aAAA,IAAiB,YAAA,CAAa,mBAAA;AAC1D,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG;AACzD,MAAA,UAAA,CAAW,MAAA,GAAS,MAAA;AAAA,IACtB;AAAA,EACF;AAEA,EAAA,OAAO,OAAO,IAAA,CAAK,UAAU,CAAA,CAAE,MAAA,GAAS,IAAI,UAAA,GAAa,MAAA;AAC3D;AAEA,SAAS,SAAS,IAAA,EAAmD;AACnE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,OAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,YAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,eAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,SAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,UAAA;AAAA,IACT,KAAK,QAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAA;AAAA;AAEb;AAEA,SAAS,SAAS,IAAA,EAAwB;AACxC,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,OAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,IAAA,CAAK,IAAA;AAAA,IACd,KAAK,YAAA;AACH,MAAA,OAAO,IAAA,CAAK,KAAA,GAAQ,CAAA,WAAA,EAAc,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,YAAA;AAAA,IACnD,KAAK,UAAA;AACH,MAAA,OAAO,IAAA,CAAK,WAAA,GAAc,CAAA,SAAA,EAAY,IAAA,CAAK,WAAW,CAAA,CAAA,GAAK,UAAA;AAAA,IAC7D,KAAK,SAAA;AACH,MAAA,OAAO,IAAA,CAAK,QAAA,GAAW,CAAA,QAAA,EAAW,IAAA,CAAK,QAAQ,CAAA,CAAA,GAAK,SAAA;AAAA,IACtD,KAAK,WAAA;AACH,MAAA,OAAO,IAAA,CAAK,MAAA,GAAS,CAAA,UAAA,EAAa,IAAA,CAAK,MAAM,CAAA,CAAA,GAAK,WAAA;AAAA,IACpD,KAAK,eAAA;AACH,MAAA,OAAO,IAAA,CAAK,KAAA,GAAQ,CAAA,cAAA,EAAiB,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,eAAA;AAAA,IACtD,KAAK,QAAA;AACH,MAAA,OAAO,IAAA,CAAK,KAAA,GAAQ,CAAA,OAAA,EAAU,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,QAAA;AAAA,IAC/C,KAAK,cAAA;AACH,MAAA,OAAO,cAAA;AAAA,IACT;AACE,MAAA,OAAO,oBAAA;AAAA;AAEb;AAEA,SAAS,qBAAqB,IAAA,EAA+C;AAC3E,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,cAAA;AAAA,IACb,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,QAAA,EAAU,qBAAA,CAAsB,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AAAA,IAClD,QAAA,EAAU,KAAK,QAAA,CAAS,IAAA;AAAA,IACxB,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,YAAA,EAAc,KAAK,QAAA,IAAY,MAAA;AAAA,IAC/B,qBAAA,EAAuB,eAAA,CAAgB,IAAA,CAAK,aAAa;AAAA,GAC3D;AACF;AAEA,SAAS,uBAAuB,IAAA,EAAyC;AACvE,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,OAAA;AACH,MAAA,OAAO;AAAA,QACL,WAAW,IAAA,CAAK,IAAA;AAAA,QAChB,YAAA,EAAc,IAAA,CAAK,QAAA,EAAU,MAAA,IAAU,CAAA;AAAA,QACvC,cAAc,IAAA,CAAK,QAAA;AAAA,QACnB,SAAA,EAAW,IAAA,CAAK,KAAA,EAAO,MAAA,IAAU,CAAA;AAAA,QACjC,WAAW,IAAA,CAAK,KAAA;AAAA,QAChB,YAAY,IAAA,CAAK;AAAA,OACnB;AAAA,IACF,KAAK,UAAA;AACH,MAAA,OAAO;AAAA,QACL,UAAU,IAAA,CAAK,IAAA;AAAA,QACf,QAAA,EAAU,KAAK,KAAA,KAAU,MAAA;AAAA,QACzB,SAAA,EAAW,KAAK,MAAA,KAAW,MAAA;AAAA,QAC3B,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,KAAK,CAAA;AAAA,QACzC,aAAA,EAAe,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA;AAAA,QAC3C,cAAA,EAAgB,wBAAA,CAAyB,IAAA,CAAK,QAAQ;AAAA,OACxD;AAAA,IACF,KAAK,YAAA;AACH,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,mBAAA,EAAqB,eAAA,CAAgB,IAAA,CAAK,YAAY,CAAA;AAAA,QACtD,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,KAAK,CAAA;AAAA,QACjD,aAAA,EAAe,wBAAA,CAAyB,IAAA,CAAK,MAAM,CAAA;AAAA,QACnD,oBAAA,EAAsB,eAAA,CAAgB,IAAA,CAAK,KAAA,EAAO,OAAO;AAAA,OAC3D;AAAA,IACF,KAAK,UAAA;AACH,MAAA,OAAO;AAAA,QACL,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,MAAM,CAAA;AAAA,QAClD,eAAA,EAAiB,wBAAA,CAAyB,IAAA,CAAK,SAAS;AAAA,OAC1D;AAAA,IACF,KAAK,SAAA;AACH,MAAA,OAAO;AAAA,QACL,WAAW,IAAA,CAAK,UAAA;AAAA,QAChB,SAAS,IAAA,CAAK;AAAA,OAChB;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,YAAY,IAAA,CAAK,IAAA;AAAA,QACjB,WAAA,EAAa,gBAAA,CAAiB,IAAA,CAAK,IAAI;AAAA,OACzC;AAAA,IACF,KAAK,WAAA;AACH,MAAA,OAAO;AAAA,QACL,eAAe,IAAA,CAAK,IAAA;AAAA,QACpB,WAAW,IAAA,CAAK;AAAA,OAClB;AAAA,IACF,KAAK,WAAA;AACH,MAAA,OAAO;AAAA,QACL,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,SAAA,EAAW,IAAA,CAAK,MAAA,EAAQ,MAAA,IAAU,CAAA;AAAA,QAClC,WAAW,IAAA,CAAK;AAAA,OAClB;AAAA,IACF,KAAK,eAAA;AACH,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,WAAA,EAAa,KAAK,KAAA,CAAM,MAAA;AAAA,QACxB,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,QAC9C,aAAA,EAAe,wBAAA,CAAyB,IAAA,CAAK,MAAM,CAAA;AAAA,QACnD,mBAAA,EAAqB,eAAA,CAAgB,IAAA,CAAK,YAAY;AAAA,OACxD;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,KAAK,CAAA;AAAA,QACjD,YAAA,EAAc,KAAK,MAAA,CAAO,MAAA;AAAA,QAC1B,aAAA,EAAe,gBAAA,CAAiB,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAAA,QAChD,mBAAA,EAAqB,eAAA,CAAgB,IAAA,CAAK,YAAY;AAAA,OACxD;AAAA,IACF,KAAK,cAAA;AACH,MAAA,OAAO;AAAA,QACL,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,KAAK;AAAA,OACnD;AAAA,IACF;AACE,MAAA,OAAO,EAAC;AAAA;AAEd;AAEA,SAAS,sBAAsB,IAAA,EAA4B;AACzD,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,YAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,eAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,SAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,UAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,QAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAA;AAAA;AAEb;AAEA,SAAS,iBAAiB,IAAA,EAAyB;AACjD,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,YAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,KAAK,CAAA;AAAA,IAC5C,KAAK,UAAA;AACH,MAAA,OAAO,gBAAA,CAAiB,KAAK,KAAK,CAAA;AAAA,IACpC,KAAK,UAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,MAAM,CAAA;AAAA,IAC7C,KAAK,QAAA;AACH,MAAA,OAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AAAA,IACnC,KAAK,eAAA;AACH,MAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,GAAG,gBAAA,CAAiB,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,EAAE;AAAA,IAC3E,KAAK,QAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,KAAK,CAAA;AAAA,IAC5C;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAEA,SAAS,kBAAkB,IAAA,EAAyB;AAClD,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,YAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,MAAM,CAAA;AAAA,IAC7C,KAAK,UAAA;AACH,MAAA,OAAO,gBAAA,CAAiB,KAAK,MAAM,CAAA;AAAA,IACrC,KAAK,UAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,SAAS,CAAA;AAAA,IAChD,KAAK,WAAA;AACH,MAAA,OAAO,EAAE,SAAA,EAAW,IAAA,CAAK,SAAA,EAAU;AAAA,IACrC,KAAK,WAAA;AACH,MAAA,OAAO,EAAE,SAAA,EAAW,IAAA,CAAK,MAAA,EAAQ,UAAU,CAAA,EAAE;AAAA,IAC/C,KAAK,eAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,MAAM,CAAA;AAAA,IAC7C,KAAK,QAAA;AACH,MAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,MAAA,EAAQ,GAAG,gBAAA,CAAiB,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,IAC7E;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAEA,SAAS,aAAa,OAAA,EAAyB;AAC7C,EAAA,OAAO,uBAAuB,OAAO,CAAA,CAAA;AACvC;AAEA,SAAS,YAAY,MAAA,EAAwB;AAC3C,EAAA,OAAO,sBAAsB,MAAM,CAAA,CAAA;AACrC;AAEA,IAAM,2CAAN,MAA4F;AAAA,EAkB1F,YAA6B,OAAA,EAA0C;AAA1C,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAC3B,IAAA,IAAA,CAAK,gBAAA,GAAmB,QAAQ,OAAA,IAAW,eAAA;AAC3C,IAAA,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,QAAA,GAAW,UAAA,CAAW,EAAE,GAAA,EAAK,OAAA,CAAQ,QAAA,EAAU,CAAA,GAAI,MAAA,CAAA;AAC5F,IAAA,KAAA,MAAW,GAAA,IAAO;AAAA,MAChB,SAAA;AAAA,MACA,QAAA;AAAA,MACA,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,EAAY;AACV,MAAA,MAAA,CAAO,eAAe,IAAA,EAAM,GAAA,EAAK,EAAE,UAAA,EAAY,OAAO,CAAA;AAAA,IACxD;AACA,IAAA,IAAA,CAAK,2BAAA,EAA4B;AAAA,EACnC;AAAA,EAjB6B,OAAA;AAAA,EAjBpB,WAAA,GAAc,oBAAA;AAAA,EACd,SAAA,GAAY,IAAA;AAAA,EAEJ,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA,GAAoC,eAAA;AAAA,EACpC,WAAA,GAAmD;AAAA,IAClE,aAAA,EAAe,CAAA;AAAA,IACf,iBAAA,EAAmB,CAAA;AAAA,IACnB,aAAA,EAAe,CAAA;AAAA,IACf,gBAAA,EAAkB,CAAA;AAAA,IAClB,yBAAA,EAA2B;AAAA,GAC7B;AAAA,EACiB,YAAA,uBAAmB,GAAA,EAAyB;AAAA,EAC5C,WAAA,uBAAkB,GAAA,EAAwB;AAAA,EACnD,MAAA,GAAS,KAAA;AAAA,EAqBjB,KAAA,GAAc;AAAA,EAEd;AAAA,EAEA,MAAM,aAAa,KAAA,EAA6B;AAC9C,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,cAAA,EAAgB,YAAY;AACrD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,sDAAsD,CAAA;AAClF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAY,MAAA,EAAO;AACzB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,IAAgB,MAAM,IAAA,IAAQ,mBAAA;AACxD,MAAA,MAAM,OAAA,GAAU,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA;AAC1C,MAAA,IAAA,CAAK,YAAA,CAAa,IAAI,KAAA,CAAM,OAAA,EAAS,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,CAAA;AAEjE,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,OAAA;AAAA,QACA,OAAO,KAAA,CAAM,OAAA;AAAA,QACb,IAAA,EAAM,KAAA;AAAA,QACN,IAAA;AAAA,QACA,MAAA,EAAQ,SAAA;AAAA,QACR,SAAA,EAAW,SAAA;AAAA,QACX,SAAA;AAAA,QACA,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,WAAA,EAAa,aAAA;AAAA,UACb,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,SAAS,IAAA,CAAK,gBAAA;AAAA,UACd,kBACE,IAAA,CAAK,gBAAA,KAAqB,IAAA,CAAK,gBAAA,GAC3B,SACA,IAAA,CAAK,gBAAA;AAAA,UACX,uBAAA,EACE,IAAA,CAAK,gBAAA,KAAqB,SAAA,GAAY,KAAA,GAAQ,MAAA;AAAA,UAChD,gBAAA,EAAkB,KAAK,OAAA,CAAQ,gBAAA;AAAA,UAC/B,eAAA,EAAiB,wBAAA,CAAyB,IAAA,CAAK,OAAA,CAAQ,eAAe,CAAA;AAAA,UACtE,OAAA,EAAS,MAAM,OAAA,IAAW,MAAA;AAAA,UAC1B,gBAAA,EAAkB,eAAA,CAAgB,KAAA,CAAM,QAAQ;AAAA,SAClD;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,KAAA,CAAM;AAAA;AACjB,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,WAAW,KAAA,EAA6B;AAC5C,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,YAAA,EAAc,YAAY;AACnD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,oDAAoD,CAAA;AAChF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,MAAM,OAAO,CAAA;AAClD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,IAAA,CAAK,sBAAA;AAAA,UACH,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA,gCAAA;AAAA,SACnD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAU,MAAA,EAAO;AACvB,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,OAAO,KAAA,CAAM,OAAA;AAAA,QACb,IAAA,EAAM,KAAA;AAAA,QACN,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,MAAA,EAAQ,IAAA;AAAA,QACR,SAAA,EAAW,OAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,OAAA;AAAA,QACA,UAAA,EAAY,UAAA,CAAW,MAAA,CAAO,SAAA,EAAW,OAAO,CAAA;AAAA,QAChD,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,WAAA,EAAa,eAAA;AAAA,UACb,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,OAAA,EAAS,MAAM,OAAA,IAAW,MAAA;AAAA,UAC1B,gBAAA,EAAkB,eAAA,CAAgB,KAAA,CAAM,QAAQ;AAAA,SAClD;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,KAAA,CAAM;AAAA;AACjB,OACD,CAAA;AACD,MAAA,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA;AAAA,IACxC,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,YAAY,IAAA,EAAqC;AACrD,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,aAAA,EAAe,YAAY;AACpD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,qDAAqD,CAAA;AACjF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,IAAa,MAAA,EAAO;AAC3C,MAAA,MAAM,OAAA,GAAU,WAAA,CAAY,IAAA,CAAK,MAAM,CAAA;AACvC,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,oBAAA,CAAqB,IAAI,CAAA;AAC/C,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AACxC,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AACnC,MAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ;AAAA,QAChC,OAAA;AAAA,QACA,OAAO,IAAA,CAAK,OAAA;AAAA,QACZ,QAAA;AAAA,QACA,SAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,OAAA;AAAA,QACA,OAAO,IAAA,CAAK,OAAA;AAAA,QACZ,QAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA,EAAQ,SAAA;AAAA,QACR,SAAA,EAAW,SAAA;AAAA,QACX,SAAA;AAAA,QACA,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,GAAG,qBAAqB,IAAI,CAAA;AAAA,UAC5B,GAAG,sBAAA,CAAuB,IAAA,CAAK,QAAQ;AAAA,SACzC;AAAA,QACA,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC5C,UAAA,EAAY,cAAA;AAAA,UACV,KAAK,QAAA,CAAS,IAAA,KAAS,YAAA,GAAe,IAAA,CAAK,SAAS,KAAA,GAAQ;AAAA,SAC9D;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,YAAA,EAAc,KAAK,QAAA,IAAY;AAAA;AACjC,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAU,IAAA,EAAqC;AACnD,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,WAAA,EAAa,YAAY;AAClD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,mDAAmD,CAAA;AAC/E,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,KAAK,MAAM,CAAA;AAC/C,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,IAAA,CAAK,sBAAA;AAAA,UACH,CAAA,+BAAA,EAAkC,KAAK,MAAM,CAAA,gCAAA;AAAA,SAC/C;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,IAAW,MAAA,EAAO;AACvC,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,KAAK,CAAA;AACvC,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,MAAA,EAAQ,QAAQ,OAAA,GAAU,IAAA;AAAA,QAC1B,SAAA,EAAW,OAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,OAAA;AAAA,QACA,UAAA,EAAY,UAAA,CAAW,MAAA,CAAO,SAAA,EAAW,OAAO,CAAA;AAAA,QAChD,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,GAAG,qBAAqB,IAAI,CAAA;AAAA,UAC5B,GAAG,sBAAA,CAAuB,IAAA,CAAK,QAAQ,CAAA;AAAA,UACvC,WAAA,EAAa,gBAAA;AAAA,UACb,gBAAA,EAAkB,wBAAA,CAAyB,IAAA,CAAK,KAAA,EAAO,IAAI;AAAA,SAC7D;AAAA,QACA,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC5C,aAAA,EAAe,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC9C,KAAA;AAAA,QACA,UAAA,EAAY,cAAA;AAAA,UACV,KAAK,QAAA,CAAS,IAAA,KAAS,YAAA,GAAe,IAAA,CAAK,SAAS,KAAA,GAAQ;AAAA,SAC9D;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,YAAA,EAAc,KAAK,QAAA,IAAY;AAAA;AACjC,OACD,CAAA;AACD,MAAA,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,IACrC,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,QAAQ,KAAA,IAAQ;AAAA,IAC7B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,YAAY,aAAA,IAAiB,CAAA;AAClC,MAAA,IAAA,CAAK,WAAA,CAAY,SAAA,GAAY,cAAA,CAAe,KAAK,CAAA;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,QAAA,EAAkC;AAC/C,IAAA,IAAI,KAAK,MAAA,EAAQ;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,QAAQ,KAAA,IAAQ;AAAA,IAC7B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,YAAY,gBAAA,IAAoB,CAAA;AACrC,MAAA,IAAA,CAAK,WAAA,CAAY,SAAA,GAAY,cAAA,CAAe,KAAK,CAAA;AAAA,IACnD,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,MAAA,IAAA,CAAK,aAAa,KAAA,EAAM;AACxB,MAAA,IAAA,CAAK,YAAY,KAAA,EAAM;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,cAAA,GAAsD;AACpD,IAAA,OAAO,EAAE,GAAG,IAAA,CAAK,WAAA,EAAY;AAAA,EAC/B;AAAA,EAEA,cAAA,GAA+C;AAC7C,IAAA,OAAO,IAAA,CAAK,QAAQ,QAAA,IAAW;AAAA,EACjC;AAAA,EAEQ,qBAAqB,IAAA,EAA0C;AACrE,IAAA,IAAI,IAAA,CAAK,QAAA,EAAU,OAAO,WAAA,CAAY,KAAK,QAAQ,CAAA;AACnD,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA,EAAG,OAAA;AAAA,EAC9C;AAAA,EAEA,MAAc,eAAA,CACZ,YAAA,EACA,GAAA,EACe;AACf,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,EAAI;AAAA,IACZ,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,uBAAuB,CAAA,EAAG,YAAY,KAAK,cAAA,CAAe,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,IACzE;AAAA,EACF;AAAA,EAEQ,uBAAuB,OAAA,EAAuB;AACpD,IAAA,IAAA,CAAK,YAAY,iBAAA,IAAqB,CAAA;AACtC,IAAA,IAAA,CAAK,YAAY,WAAA,GAAc,OAAA;AAAA,EACjC;AAAA,EAEQ,uBAAA,GAA0B,KAAA;AAAA,EAE1B,2BAAA,GAAoC;AAC1C,IAAA,MAAM,qBAA+B,EAAC;AACtC,IAAA,IAAI,IAAA,CAAK,gBAAA,KAAqB,SAAA,EAAW,kBAAA,CAAmB,KAAK,SAAS,CAAA;AAC1E,IAAA,IAAI,KAAK,OAAA,CAAQ,gBAAA,KAAqB,MAAA,EAAW,kBAAA,CAAmB,KAAK,kBAAkB,CAAA;AAC3F,IAAA,IAAI,KAAK,OAAA,CAAQ,eAAA,KAAoB,MAAA,EAAW,kBAAA,CAAmB,KAAK,iBAAiB,CAAA;AAEzF,IAAA,IAAI,IAAA,CAAK,qBAAqB,SAAA,EAAW;AACvC,MAAA,MAAM,OAAA,GACJ,CAAA,6MAAA,CAAA;AACF,MAAA,IAAA,CAAK,sBAAA;AAAA,QACH,CAAA,gHAAA,EAAmH,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,OAClJ;AACA,MAAA,IAAI,CAAC,KAAK,uBAAA,EAAyB;AACjC,QAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA;AAC/B,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,8BAAA,EAAiC,OAAO,CAAA,CAAE,CAAA;AAAA,MACzD;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,MAAA,IAAA,CAAK,sBAAA;AAAA,QACH,CAAA,4EAAA,EAA+E,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,OAC9G;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,MAAM,KAAA,EAA6C;AAC/D,IAAA,IAAI,CAAC,KAAK,MAAA,EAAQ;AAElB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,IAC/B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,YAAY,aAAA,IAAiB,CAAA;AAClC,MAAA,IAAA,CAAK,WAAA,CAAY,SAAA,GAAY,cAAA,CAAe,KAAK,CAAA;AAAA,IACnD;AAAA,EACF;AACF,CAAA;AAeO,SAAS,qBAAA,CACd,OAAA,GAA2C,EAAC,EACT;AACnC,EAAA,OAAO,IAAI,yCAAyC,OAAO,CAAA;AAC7D","file":"index.mjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the framework adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n \"previewCapabilityWarned\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private previewCapabilityWarned = false;\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n const message =\n `AI_ADAPTER_PREVIEW_NOT_AVAILABLE: capture:\"preview\" was requested, but this adapter currently persists metadata-only. Effective capture: metadata-only. No preview content was written. See docs/ADAPTERS.md.`;\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n if (!this.previewCapabilityWarned) {\n this.previewCapabilityWarned = true;\n console.warn(`[agent-inspect:openai-agents] ${message}`);\n }\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-inspect/openai-agents",
3
- "version": "6.17.4",
3
+ "version": "6.17.6",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "OpenAI Agents JS processor integration for AgentInspect local traces and TraceContract checks",
@@ -37,7 +37,7 @@
37
37
  "@openai/agents": "^0.12.0"
38
38
  },
39
39
  "dependencies": {
40
- "agent-inspect": "6.17.4"
40
+ "agent-inspect": "6.17.6"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"