agent-inspect 6.31.7 → 6.31.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/packages/cli/dist/{chunk-QV73NM25.mjs → chunk-SWUZRRDT.mjs} +158 -21
  5. package/packages/cli/dist/chunk-SWUZRRDT.mjs.map +1 -0
  6. package/packages/cli/dist/index.cjs +312 -52
  7. package/packages/cli/dist/index.cjs.map +1 -1
  8. package/packages/cli/dist/index.mjs +156 -36
  9. package/packages/cli/dist/index.mjs.map +1 -1
  10. package/packages/cli/dist/{src-KFOBXFPN.mjs → src-XFIPYODW.mjs} +3 -3
  11. package/packages/cli/dist/{src-KFOBXFPN.mjs.map → src-XFIPYODW.mjs.map} +1 -1
  12. package/packages/core/dist/advanced.cjs +200 -24
  13. package/packages/core/dist/advanced.cjs.map +1 -1
  14. package/packages/core/dist/advanced.d.cts +1 -1
  15. package/packages/core/dist/advanced.d.ts +1 -1
  16. package/packages/core/dist/advanced.mjs +89 -15
  17. package/packages/core/dist/advanced.mjs.map +1 -1
  18. package/packages/core/dist/checks.mjs +2 -2
  19. package/packages/core/dist/{chunk-LXYPM2ZO.mjs → chunk-2CCRUI42.mjs} +19 -318
  20. package/packages/core/dist/chunk-2CCRUI42.mjs.map +1 -0
  21. package/packages/core/dist/{chunk-QLYUWKK7.mjs → chunk-2IRRUNIN.mjs} +11 -5
  22. package/packages/core/dist/chunk-2IRRUNIN.mjs.map +1 -0
  23. package/packages/core/dist/{chunk-VQUB3WRI.mjs → chunk-3SPBELJB.mjs} +14 -3
  24. package/packages/core/dist/chunk-3SPBELJB.mjs.map +1 -0
  25. package/packages/core/dist/{chunk-3RV3JILQ.mjs → chunk-IJJSPJXV.mjs} +20 -12
  26. package/packages/core/dist/chunk-IJJSPJXV.mjs.map +1 -0
  27. package/packages/core/dist/chunk-L5WLVBW4.mjs +355 -0
  28. package/packages/core/dist/chunk-L5WLVBW4.mjs.map +1 -0
  29. package/packages/core/dist/exporters.cjs +110 -18
  30. package/packages/core/dist/exporters.cjs.map +1 -1
  31. package/packages/core/dist/exporters.mjs +110 -18
  32. package/packages/core/dist/exporters.mjs.map +1 -1
  33. package/packages/core/dist/index.cjs +12 -1
  34. package/packages/core/dist/index.cjs.map +1 -1
  35. package/packages/core/dist/index.mjs +2 -2
  36. package/packages/core/dist/persisted.cjs +344 -9
  37. package/packages/core/dist/persisted.cjs.map +1 -1
  38. package/packages/core/dist/persisted.d.cts +8 -1
  39. package/packages/core/dist/persisted.d.ts +8 -1
  40. package/packages/core/dist/persisted.mjs +3 -2
  41. package/packages/core/dist/persisted.mjs.map +1 -1
  42. package/packages/core/dist/readers.cjs +377 -87
  43. package/packages/core/dist/readers.cjs.map +1 -1
  44. package/packages/core/dist/readers.mjs +3 -3
  45. package/packages/cli/dist/chunk-QV73NM25.mjs.map +0 -1
  46. package/packages/core/dist/chunk-3RV3JILQ.mjs.map +0 -1
  47. package/packages/core/dist/chunk-FWK3Q3OJ.mjs +0 -56
  48. package/packages/core/dist/chunk-FWK3Q3OJ.mjs.map +0 -1
  49. package/packages/core/dist/chunk-LXYPM2ZO.mjs.map +0 -1
  50. package/packages/core/dist/chunk-QLYUWKK7.mjs.map +0 -1
  51. package/packages/core/dist/chunk-VQUB3WRI.mjs.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { projectLogicalEvents } from './chunk-L5WLVBW4.mjs';
1
2
  import { extractCorrelationMetadata } from './chunk-S4YWKV4G.mjs';
2
3
  import { TreeBuilder } from './chunk-AK5EN4U2.mjs';
3
4
  import { isPersistedInspectEvent } from './chunk-EE5Z2GQ3.mjs';
@@ -430,17 +431,22 @@ function persistedInspectEventsToInspectEvents(events, options) {
430
431
  }
431
432
 
432
433
  // packages/core/src/persisted/tree-bridge.ts
434
+ function logicalToPersisted(event) {
435
+ const { sourceEventIds: _sourceEventIds, projection: _projection, ...rest } = event;
436
+ return rest;
437
+ }
433
438
  function persistedInspectEventsToRunTrees(events, options) {
434
- const inspectEvents = persistedInspectEventsToInspectEvents(events, {
439
+ const sourceEvents = options?.coalesceLifecycle === true ? projectLogicalEvents(events).logicalEvents.map(logicalToPersisted) : events;
440
+ const inspectEvents = persistedInspectEventsToInspectEvents(sourceEvents, {
435
441
  skipInvalid: options?.skipInvalid
436
442
  });
437
443
  return new TreeBuilder().build(inspectEvents);
438
444
  }
439
- function traceEventsToPersistedRunTrees(events) {
445
+ function traceEventsToPersistedRunTrees(events, options) {
440
446
  const persisted = traceEventsToPersistedInspectEvents(events);
441
- return persistedInspectEventsToRunTrees(persisted);
447
+ return persistedInspectEventsToRunTrees(persisted, options);
442
448
  }
443
449
 
444
450
  export { normalizeTokenUsage, persistedInspectEventToInspectEvent, persistedInspectEventsToInspectEvents, persistedInspectEventsToRunTrees, traceEventToPersistedInspectEvent, traceEventsToPersistedInspectEvents, traceEventsToPersistedRunTrees };
445
- //# sourceMappingURL=chunk-QLYUWKK7.mjs.map
446
- //# sourceMappingURL=chunk-QLYUWKK7.mjs.map
451
+ //# sourceMappingURL=chunk-2IRRUNIN.mjs.map
452
+ //# sourceMappingURL=chunk-2IRRUNIN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/persisted/token-usage.ts","../src/persisted/from-trace-event.ts","../src/persisted/to-inspect-event.ts","../src/persisted/tree-bridge.ts"],"names":["compactAttributes"],"mappings":"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","file":"chunk-2IRRUNIN.mjs","sourcesContent":["import type { PersistedTokenUsage } from \"../types/persisted-inspect-event.js\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction nonNegativeFinite(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0\n ? value\n : undefined;\n}\n\n/**\n * Keeps the approved token vocabulary and derives total only when it is absent.\n * Cached / cache-write / reasoning tokens are informational and are never added to total.\n */\nexport function normalizeTokenUsage(\n value: unknown,\n): PersistedTokenUsage | undefined {\n if (!isRecord(value)) return undefined;\n\n const input = nonNegativeFinite(value.input);\n const output = nonNegativeFinite(value.output);\n const suppliedTotal = nonNegativeFinite(value.total);\n const cached = nonNegativeFinite(value.cached);\n const cacheWrite = nonNegativeFinite(value.cacheWrite);\n const reasoning = nonNegativeFinite(value.reasoning);\n const derivedTotal =\n input !== undefined && output !== undefined && Number.isFinite(input + output)\n ? input + output\n : undefined;\n const total = suppliedTotal ?? derivedTotal;\n\n if (\n input === undefined &&\n output === undefined &&\n total === undefined &&\n cached === undefined &&\n cacheWrite === undefined &&\n reasoning === undefined\n ) {\n return undefined;\n }\n\n return {\n ...(input !== undefined ? { input } : {}),\n ...(output !== undefined ? { output } : {}),\n ...(total !== undefined ? { total } : {}),\n ...(cached !== undefined ? { cached } : {}),\n ...(cacheWrite !== undefined ? { cacheWrite } : {}),\n ...(reasoning !== undefined ? { reasoning } : {}),\n };\n}\n","import { extractCorrelationMetadata } from \"../correlation-metadata.js\";\nimport type { InspectKind } from \"../types/inspect-event.js\";\nimport type {\n ErrorInfo,\n StepMetadata,\n StepType,\n TraceEvent,\n} from \"../types.js\";\nimport type {\n PersistedEventSource,\n PersistedEventStatus,\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n} from \"../types/persisted-inspect-event.js\";\nimport { normalizeTokenUsage } from \"./token-usage.js\";\n\nexport interface TraceEventToPersistedOptions {\n /**\n * Stable index within the source event list.\n * Used only to make synthetic eventId deterministic when v0.1 has no eventId.\n */\n eventIndex?: number;\n\n /**\n * Optional source name override.\n * Default: \"trace-event\"\n */\n sourceName?: string;\n\n /**\n * Optional source version override.\n * Default: \"0.1\"\n */\n sourceVersion?: string;\n}\n\nfunction sanitizeIdPart(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}\n\nfunction nodeIdForEvent(event: TraceEvent): string {\n switch (event.event) {\n case \"run_started\":\n case \"run_completed\":\n return event.runId;\n case \"step_started\":\n case \"step_completed\":\n return event.stepId;\n case \"outcome_observed\":\n return event.outcomeId;\n default:\n return \"unknown\";\n }\n}\n\nfunction createPersistedEventId(event: TraceEvent, eventIndex: number): string {\n const runId = sanitizeIdPart(event.runId);\n const ev = sanitizeIdPart(event.event);\n const node = sanitizeIdPart(nodeIdForEvent(event));\n return `manual:${runId}:${ev}:${node}:${eventIndex}`;\n}\n\nfunction toIsoTimestamp(\n ms: number,\n): { iso: string; invalidTimestamp: boolean } {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) {\n return { iso: new Date(0).toISOString(), invalidTimestamp: true };\n }\n return { iso: new Date(ms).toISOString(), invalidTimestamp: false };\n}\n\nfunction buildSource(options?: TraceEventToPersistedOptions): PersistedEventSource {\n return {\n type: \"manual\",\n name: options?.sourceName ?? \"trace-event\",\n version: options?.sourceVersion ?? \"0.1\",\n };\n}\n\nfunction mapStepTypeToInspectKind(type: StepType): InspectKind {\n switch (type) {\n case \"run\":\n return \"RUN\";\n case \"llm\":\n return \"LLM\";\n case \"tool\":\n return \"TOOL\";\n case \"decision\":\n return \"DECISION\";\n case \"logic\":\n case \"state\":\n case \"custom\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction mapRunOrStepStatus(\n status: \"success\" | \"error\",\n): PersistedEventStatus {\n return status === \"success\" ? \"ok\" : \"error\";\n}\n\nfunction mapErrorInfo(\n error: ErrorInfo | undefined,\n): {\n persisted?: PersistedInspectError;\n errorStack?: string;\n} {\n if (!error?.message) {\n return {};\n }\n const out: {\n persisted: PersistedInspectError;\n errorStack?: string;\n } = {\n persisted: {\n message: error.message,\n name: \"Error\",\n },\n };\n if (typeof error.stack === \"string\" && error.stack.length > 0) {\n out.errorStack = error.stack;\n }\n return out;\n}\n\nfunction mapTokenUsageFromMetadata(\n metadata: StepMetadata | undefined,\n): PersistedTokenUsage | undefined {\n return normalizeTokenUsage(metadata?.tokens);\n}\n\nfunction compactAttributes(\n entries: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(entries)) {\n if (value !== undefined) {\n out[key] = value;\n }\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\n/**\n * Maps one v0.1 {@link TraceEvent} to a v0.2 {@link PersistedInspectEvent}.\n * Does not mutate `event`.\n */\nexport function traceEventToPersistedInspectEvent(\n event: TraceEvent,\n options?: TraceEventToPersistedOptions,\n): PersistedInspectEvent {\n const eventIndex = options?.eventIndex ?? 0;\n const eventId = createPersistedEventId(event, eventIndex);\n const source = buildSource(options);\n const tsMain = toIsoTimestamp(event.timestamp);\n\n switch (event.event) {\n case \"run_started\": {\n const tsStart = toIsoTimestamp(event.startTime);\n const correlation = extractCorrelationMetadata(event.metadata);\n const attributes = compactAttributes({\n legacyEvent: \"run_started\",\n metadata:\n event.metadata !== undefined ? { ...event.metadata } : undefined,\n correlationId: correlation?.correlationId,\n requestId: correlation?.requestId,\n decisionId: correlation?.decisionId,\n groupId: correlation?.groupId,\n invalidTimestamp:\n tsMain.invalidTimestamp || tsStart.invalidTimestamp ? true : undefined,\n });\n\n return {\n schemaVersion: \"0.2\",\n eventId,\n runId: event.runId,\n kind: \"RUN\",\n name: event.name,\n status: \"running\",\n timestamp: tsMain.iso,\n startedAt: tsStart.iso,\n confidence: \"explicit\",\n source,\n attributes,\n };\n }\n\n case \"run_completed\": {\n const tsEnd = toIsoTimestamp(event.endTime);\n const { persisted: error, errorStack } = mapErrorInfo(event.error);\n const attributes = compactAttributes({\n legacyEvent: \"run_completed\",\n errorStack,\n invalidTimestamp:\n tsMain.invalidTimestamp || tsEnd.invalidTimestamp ? true : undefined,\n });\n\n return {\n schemaVersion: \"0.2\",\n eventId,\n runId: event.runId,\n kind: \"RUN\",\n name: \"run\",\n status: mapRunOrStepStatus(event.status),\n timestamp: tsMain.iso,\n endedAt: tsEnd.iso,\n durationMs: event.durationMs,\n confidence: \"explicit\",\n source,\n attributes,\n error,\n };\n }\n\n case \"step_started\": {\n const tsStart = toIsoTimestamp(event.startTime);\n const tokenUsage = mapTokenUsageFromMetadata(event.metadata);\n const attributes = compactAttributes({\n legacyEvent: \"step_started\",\n stepId: event.stepId,\n stepType: event.type,\n metadata:\n event.metadata !== undefined ? { ...event.metadata } : undefined,\n invalidTimestamp:\n tsMain.invalidTimestamp || tsStart.invalidTimestamp ? true : undefined,\n });\n\n const out: PersistedInspectEvent = {\n schemaVersion: \"0.2\",\n eventId,\n runId: event.runId,\n kind: mapStepTypeToInspectKind(event.type),\n name: event.name,\n status: \"running\",\n timestamp: tsMain.iso,\n startedAt: tsStart.iso,\n confidence: \"explicit\",\n source,\n attributes,\n };\n if (event.parentId !== undefined) {\n out.parentId = event.parentId;\n }\n if (tokenUsage !== undefined) {\n out.tokenUsage = tokenUsage;\n }\n return out;\n }\n\n case \"step_completed\": {\n const tsEnd = toIsoTimestamp(event.endTime);\n const { persisted: error, errorStack } = mapErrorInfo(event.error);\n const attributes = compactAttributes({\n legacyEvent: \"step_completed\",\n stepId: event.stepId,\n errorStack,\n invalidTimestamp:\n tsMain.invalidTimestamp || tsEnd.invalidTimestamp ? true : undefined,\n });\n\n return {\n schemaVersion: \"0.2\",\n eventId,\n runId: event.runId,\n kind: \"LOGIC\",\n name: event.stepId,\n status: mapRunOrStepStatus(event.status),\n timestamp: tsMain.iso,\n endedAt: tsEnd.iso,\n durationMs: event.durationMs,\n confidence: \"explicit\",\n source,\n attributes,\n error,\n };\n }\n\n case \"outcome_observed\": {\n const tsObserved = toIsoTimestamp(event.observedAt);\n const attributes = compactAttributes({\n legacyEvent: \"outcome_observed\",\n outcomeId: event.outcomeId,\n outcomeStatus: event.status,\n expectation: event.expectation,\n method: event.method,\n actual: event.actual,\n evidence: event.evidence,\n observedAt: tsObserved.iso,\n invalidTimestamp:\n tsMain.invalidTimestamp || tsObserved.invalidTimestamp ? true : undefined,\n });\n\n const out: PersistedInspectEvent = {\n schemaVersion: \"0.2\",\n eventId,\n runId: event.runId,\n kind: \"OUTCOME\",\n name: event.name,\n status: event.status === \"failed\" ? \"error\" : \"ok\",\n timestamp: tsMain.iso,\n confidence: \"explicit\",\n source,\n attributes,\n };\n if (event.parentId !== undefined) {\n out.parentId = event.parentId;\n }\n if (event.actual !== undefined) {\n out.outputSummary = event.actual;\n }\n return out;\n }\n\n default: {\n const _exhaustive: never = event;\n throw new Error(`Unsupported trace event: ${(_exhaustive as TraceEvent).event}`);\n }\n }\n}\n\n/**\n * Maps a v0.1 trace event list to persisted v0.2 events (one output per input).\n */\nexport function traceEventsToPersistedInspectEvents(\n events: readonly TraceEvent[],\n options?: Omit<TraceEventToPersistedOptions, \"eventIndex\">,\n): PersistedInspectEvent[] {\n return events.map((event, index) =>\n traceEventToPersistedInspectEvent(event, { ...options, eventIndex: index }),\n );\n}\n","import type { EventSource, InspectEvent } from \"../types/inspect-event.js\";\nimport {\n isPersistedInspectEvent,\n type PersistedEventSourceType,\n type PersistedInspectEvent,\n} from \"../types/persisted-inspect-event.js\";\n\nexport interface PersistedToInspectEventOptions {\n /**\n * If true, invalid persisted events are skipped by batch conversion.\n * If false or omitted, invalid events throw.\n */\n skipInvalid?: boolean;\n}\n\nfunction compactAttributes(\n entries: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(entries)) {\n if (value !== undefined) {\n out[key] = value;\n }\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\nfunction parseIsoToMs(iso: string): { ms: number; invalidTimestamp: boolean } {\n const parsed = Date.parse(iso);\n if (!Number.isFinite(parsed)) {\n return { ms: 0, invalidTimestamp: true };\n }\n return { ms: parsed, invalidTimestamp: false };\n}\n\nfunction mapPersistedSourceToInspect(\n event: PersistedInspectEvent,\n): EventSource {\n const attrs = event.attributes ?? {};\n const sourceName = event.source.name;\n\n if (sourceName === \"pino\") {\n return {\n type: \"pino\",\n file: typeof attrs.sourceFile === \"string\" ? attrs.sourceFile : undefined,\n line: typeof attrs.sourceLine === \"number\" ? attrs.sourceLine : undefined,\n };\n }\n if (sourceName === \"winston\") {\n return {\n type: \"winston\",\n file: typeof attrs.sourceFile === \"string\" ? attrs.sourceFile : undefined,\n line: typeof attrs.sourceLine === \"number\" ? attrs.sourceLine : undefined,\n };\n }\n\n const mapType = (t: PersistedEventSourceType): EventSource[\"type\"] => {\n switch (t) {\n case \"manual\":\n return \"manual\";\n case \"json-log\":\n return \"json-log\";\n case \"log4js\":\n return \"log4js\";\n case \"adapter\":\n case \"ai-sdk\":\n case \"otel\":\n return \"adapter\";\n default:\n return \"json-log\";\n }\n };\n\n return {\n type: mapType(event.source.type),\n file: typeof attrs.sourceFile === \"string\" ? attrs.sourceFile : undefined,\n line: typeof attrs.sourceLine === \"number\" ? attrs.sourceLine : undefined,\n };\n}\n\nfunction buildInspectAttributes(event: PersistedInspectEvent): Record<string, unknown> {\n const attrs =\n event.attributes !== undefined ? { ...event.attributes } : {};\n\n if (event.inputSummary !== undefined) {\n attrs.inputSummary = event.inputSummary;\n }\n if (event.outputSummary !== undefined) {\n attrs.outputSummary = event.outputSummary;\n }\n\n if (event.error) {\n if (event.error.name !== undefined) {\n attrs.errorName = event.error.name;\n }\n attrs.errorMessage = event.error.message;\n if (event.error.code !== undefined) {\n attrs.errorCode = event.error.code;\n }\n }\n\n if (event.tokenUsage) {\n attrs.tokens = { ...event.tokenUsage };\n }\n\n if (event.source.type === \"ai-sdk\" || event.source.type === \"otel\") {\n attrs.originalSourceType = event.source.type;\n }\n\n if (event.source.name !== undefined) {\n attrs.sourceName = event.source.name;\n }\n if (event.source.version !== undefined) {\n attrs.sourceVersion = event.source.version;\n }\n\n return attrs;\n}\n\n/**\n * Maps one v0.2 {@link PersistedInspectEvent} to in-memory {@link InspectEvent}.\n * Throws if `event` fails {@link isPersistedInspectEvent}.\n */\nexport function persistedInspectEventToInspectEvent(\n event: PersistedInspectEvent,\n): InspectEvent {\n if (!isPersistedInspectEvent(event)) {\n throw new Error(\"Invalid PersistedInspectEvent: failed isPersistedInspectEvent\");\n }\n\n const ts = parseIsoToMs(event.timestamp);\n const attrs = buildInspectAttributes(event);\n if (ts.invalidTimestamp) {\n attrs.invalidTimestamp = true;\n }\n\n let status: InspectEvent[\"status\"] | undefined;\n if (\n event.status === \"running\" ||\n event.status === \"ok\" ||\n event.status === \"error\"\n ) {\n status = event.status;\n } else if (event.status === \"unknown\") {\n attrs.persistedStatus = \"unknown\";\n }\n\n const out: InspectEvent = {\n eventId: event.eventId,\n runId: event.runId,\n name: event.name,\n kind: event.kind,\n timestamp: ts.ms,\n confidence: event.confidence,\n source: mapPersistedSourceToInspect(event),\n attributes: compactAttributes(attrs),\n };\n\n if (event.parentId !== undefined) {\n out.parentId = event.parentId;\n }\n if (status !== undefined) {\n out.status = status;\n }\n if (\n event.durationMs !== undefined &&\n Number.isFinite(event.durationMs) &&\n event.durationMs >= 0\n ) {\n out.durationMs = event.durationMs;\n }\n if (event.startedAt !== undefined) {\n const started = parseIsoToMs(event.startedAt);\n if (!started.invalidTimestamp) {\n attrs.startedAtMs = started.ms;\n // Prefer real start instant for span timing when timestamp alone is completion-skewed.\n out.timestamp = started.ms;\n }\n }\n if (event.endedAt !== undefined) {\n const ended = parseIsoToMs(event.endedAt);\n if (!ended.invalidTimestamp) {\n attrs.endedAtMs = ended.ms;\n if (\n out.durationMs === undefined &&\n typeof attrs.startedAtMs === \"number\" &&\n ended.ms >= attrs.startedAtMs\n ) {\n out.durationMs = ended.ms - attrs.startedAtMs;\n }\n }\n }\n out.attributes = compactAttributes(attrs);\n\n return out;\n}\n\n/**\n * Maps persisted v0.2 events to in-memory {@link InspectEvent} rows.\n */\nexport function persistedInspectEventsToInspectEvents(\n events: readonly PersistedInspectEvent[],\n options?: PersistedToInspectEventOptions,\n): InspectEvent[] {\n const skipInvalid = options?.skipInvalid === true;\n const out: InspectEvent[] = [];\n\n for (const event of events) {\n if (!isPersistedInspectEvent(event)) {\n if (skipInvalid) {\n continue;\n }\n throw new Error(\"Invalid PersistedInspectEvent: failed isPersistedInspectEvent\");\n }\n out.push(persistedInspectEventToInspectEvent(event));\n }\n\n return out;\n}\n","import {\n projectLogicalEvents,\n type LogicalTraceEvent,\n} from \"../checks/logical-events.js\";\nimport { TreeBuilder } from \"../logs/tree-builder.js\";\nimport type { InspectRunTree } from \"../types/inspect-event.js\";\nimport type { PersistedInspectEvent } from \"../types/persisted-inspect-event.js\";\nimport type { TraceEvent } from \"../types.js\";\n\nimport { traceEventsToPersistedInspectEvents } from \"./from-trace-event.js\";\nimport { persistedInspectEventsToInspectEvents } from \"./to-inspect-event.js\";\n\nexport interface PersistedTreeBridgeOptions {\n /**\n * If true, invalid persisted events are skipped.\n * If false or omitted, invalid persisted events throw.\n */\n skipInvalid?: boolean;\n /**\n * When true, pair v0.1 start/complete lifecycle rows into logical events\n * before tree construction (CLI export fidelity). Schema 1.0 completed-only\n * rows are unchanged. Yields one RUN span per run when run_started+completed\n * pair, and one span per logical tool/step.\n */\n coalesceLifecycle?: boolean;\n}\n\nfunction logicalToPersisted(event: LogicalTraceEvent): PersistedInspectEvent {\n const { sourceEventIds: _sourceEventIds, projection: _projection, ...rest } =\n event;\n return rest;\n}\n\n/**\n * Builds {@link InspectRunTree} rows from v0.2 {@link PersistedInspectEvent} input.\n * Uses {@link TreeBuilder} as the canonical tree builder. Does not mutate `events`.\n */\nexport function persistedInspectEventsToRunTrees(\n events: readonly PersistedInspectEvent[],\n options?: PersistedTreeBridgeOptions,\n): InspectRunTree[] {\n const sourceEvents =\n options?.coalesceLifecycle === true\n ? projectLogicalEvents(events).logicalEvents.map(logicalToPersisted)\n : events;\n const inspectEvents = persistedInspectEventsToInspectEvents(sourceEvents, {\n skipInvalid: options?.skipInvalid,\n });\n return new TreeBuilder().build(inspectEvents);\n}\n\n/**\n * Builds {@link InspectRunTree} rows from legacy v0.1 {@link TraceEvent} input\n * via the persisted-event model. Does not mutate `events`.\n */\nexport function traceEventsToPersistedRunTrees(\n events: readonly TraceEvent[],\n options?: PersistedTreeBridgeOptions,\n): InspectRunTree[] {\n const persisted = traceEventsToPersistedInspectEvents(events);\n return persistedInspectEventsToRunTrees(persisted, options);\n}\n"]}
@@ -538,7 +538,18 @@ function createInspector(options = {}) {
538
538
  };
539
539
  return inspector;
540
540
  }
541
- var storage = new AsyncLocalStorage();
541
+ var GLOBAL_CONTEXT_ALS_KEY = "agent-inspect:execution-context-als:v1";
542
+ function getSharedContextStorage() {
543
+ const host = globalThis;
544
+ const existing = host[GLOBAL_CONTEXT_ALS_KEY];
545
+ if (existing instanceof AsyncLocalStorage) {
546
+ return existing;
547
+ }
548
+ const created = new AsyncLocalStorage();
549
+ host[GLOBAL_CONTEXT_ALS_KEY] = created;
550
+ return created;
551
+ }
552
+ var storage = getSharedContextStorage();
542
553
  function toPublicContext(ctx) {
543
554
  return {
544
555
  runId: ctx.runId,
@@ -978,5 +989,5 @@ async function maybeInspectRun(name, fn, options) {
978
989
  }
979
990
 
980
991
  export { MAX_TERMINAL_DEPTH, MAX_TERMINAL_NAME_LENGTH, TERMINAL_INDENT, TraceDirectory, createInspector, createInspectorRuntime, formatTerminalName, getCurrentContext, getCurrentCorrelationMetadata, getCurrentDepth, getCurrentRunId, getCurrentRunName, getCurrentStepId, getIndent, getParentStepId, getTraceDirFromContext, getTraceSafetyFromContext, hasActiveContext, inspectRun, isAgentInspectEnabled, isSilentContext, maybeInspectRun, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, resolveTraceDir, runWithContext, runWithStepContext };
981
- //# sourceMappingURL=chunk-VQUB3WRI.mjs.map
982
- //# sourceMappingURL=chunk-VQUB3WRI.mjs.map
992
+ //# sourceMappingURL=chunk-3SPBELJB.mjs.map
993
+ //# sourceMappingURL=chunk-3SPBELJB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/inspector-runtime.ts","../src/inspector.ts","../src/context.ts","../src/terminal.ts","../src/trace-directory.ts","../src/inspect-run.ts","../src/maybe-inspect-run.ts"],"names":["storage","AsyncLocalStorage","invoke","durationMs","endTime","printPath"],"mappings":"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","file":"chunk-3SPBELJB.mjs","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport { extractCorrelationMetadata } from \"./correlation-metadata.js\";\nimport type { ExecutionContext, TraceCorrelationMetadata } from \"./types.js\";\nimport {\n preparePersistedInspectEventForWrite,\n resolveTraceSafetyOptions,\n type TraceSafetyOptions,\n} from \"./trace-event-safety.js\";\nimport type { PersistedInspectEvent } from \"./types/persisted-inspect-event.js\";\nimport type { TraceWriter, TraceWriterStats } from \"./writers/index.js\";\n\nexport interface InspectorRuntimeOptions {\n enabled?: boolean;\n writer?: TraceWriter;\n traceSafety?: TraceSafetyOptions;\n}\n\nexport interface InspectorRuntimeContext extends ExecutionContext {\n runtimeId: string;\n}\n\nexport interface InspectorRuntimeDiagnostics {\n instrumentationErrors: number;\n lastInstrumentationError?: string;\n writerStats?: TraceWriterStats;\n}\n\ntype RuntimeStore = InspectorRuntimeContext & {\n currentStepId?: string;\n currentDepth: number;\n traceSafety: TraceSafetyOptions;\n};\n\nexport interface InspectorRuntime {\n readonly runtimeId: string;\n readonly enabled: boolean;\n runWithContext<T>(\n context: ExecutionContext,\n fn: () => Promise<T> | T,\n ): Promise<T>;\n runWithStepContext<T>(\n stepId: string,\n fn: () => Promise<T> | T,\n ): Promise<T>;\n getCurrentContext(): InspectorRuntimeContext | undefined;\n getCurrentCorrelationMetadata(): TraceCorrelationMetadata | undefined;\n getCurrentStepId(): string | undefined;\n getCurrentDepth(): number;\n getTraceSafety(): TraceSafetyOptions;\n write(event: PersistedInspectEvent): Promise<void>;\n flush(): Promise<void>;\n close(): Promise<void>;\n getDiagnostics(): InspectorRuntimeDiagnostics;\n}\n\nfunction invoke<T>(fn: () => T | Promise<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n try {\n Promise.resolve(fn()).then(resolve, reject);\n } catch (error) {\n reject(error);\n }\n });\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 inspector runtime error\";\n}\n\nlet runtimeSequence = 0;\n\nfunction createRuntimeId(): string {\n runtimeSequence += 1;\n return `runtime_${runtimeSequence.toString(36)}`;\n}\n\nfunction publicContext(store: RuntimeStore): InspectorRuntimeContext {\n return {\n runtimeId: store.runtimeId,\n runId: store.runId,\n runName: store.runName,\n traceDir: store.traceDir,\n silent: store.silent,\n metadata: store.metadata,\n };\n}\n\nexport function createInspectorRuntime(\n options: InspectorRuntimeOptions = {},\n): InspectorRuntime {\n const storage = new AsyncLocalStorage<RuntimeStore>();\n const enabled = options.enabled ?? true;\n const runtimeId = createRuntimeId();\n const traceSafety = options.traceSafety ?? resolveTraceSafetyOptions();\n let closed = false;\n let instrumentationErrors = 0;\n let lastInstrumentationError: string | undefined;\n\n function recordInstrumentationError(error: unknown): void {\n instrumentationErrors += 1;\n lastInstrumentationError = normalizeError(error);\n }\n\n function currentStore(): RuntimeStore | undefined {\n try {\n return storage.getStore();\n } catch (error) {\n recordInstrumentationError(error);\n return undefined;\n }\n }\n\n const runtime: InspectorRuntime = {\n runtimeId,\n enabled,\n runWithContext(context, fn) {\n if (!enabled) return invoke(fn);\n\n const store: RuntimeStore = {\n runtimeId,\n runId: context.runId,\n runName: context.runName,\n traceDir: context.traceDir,\n silent: context.silent,\n metadata: context.metadata,\n traceSafety,\n currentDepth: 0,\n };\n\n return new Promise((resolve, reject) => {\n storage.run(store, () => {\n invoke(fn).then(resolve, reject);\n });\n });\n },\n runWithStepContext(stepId, fn) {\n if (!enabled) return invoke(fn);\n const parent = currentStore();\n if (!parent) return invoke(fn);\n\n const store: RuntimeStore = {\n runtimeId,\n runId: parent.runId,\n runName: parent.runName,\n traceDir: parent.traceDir,\n silent: parent.silent,\n metadata: parent.metadata,\n traceSafety: parent.traceSafety,\n currentStepId: stepId,\n currentDepth: parent.currentDepth + 1,\n };\n\n return new Promise((resolve, reject) => {\n storage.run(store, () => {\n invoke(fn).then(resolve, reject);\n });\n });\n },\n getCurrentContext() {\n const store = currentStore();\n return store ? publicContext(store) : undefined;\n },\n getCurrentCorrelationMetadata() {\n return extractCorrelationMetadata(currentStore()?.metadata);\n },\n getCurrentStepId() {\n return currentStore()?.currentStepId;\n },\n getCurrentDepth() {\n const depth = currentStore()?.currentDepth;\n return typeof depth === \"number\" && Number.isFinite(depth) ? depth : 0;\n },\n getTraceSafety() {\n return traceSafety;\n },\n async write(event) {\n if (!enabled || closed || !options.writer) return;\n try {\n const safe = preparePersistedInspectEventForWrite(event, traceSafety);\n if (safe === undefined) {\n recordInstrumentationError(\"Invalid persisted inspect event\");\n return;\n }\n await options.writer.write(safe);\n } catch (error) {\n recordInstrumentationError(error);\n }\n },\n async flush() {\n if (!options.writer) return;\n try {\n await options.writer.flush?.();\n } catch (error) {\n recordInstrumentationError(error);\n }\n },\n async close() {\n if (closed) return;\n try {\n await options.writer?.close?.();\n } catch (error) {\n recordInstrumentationError(error);\n } finally {\n closed = true;\n }\n },\n getDiagnostics() {\n const diagnostics: InspectorRuntimeDiagnostics = {\n instrumentationErrors,\n };\n if (lastInstrumentationError !== undefined) {\n diagnostics.lastInstrumentationError = lastInstrumentationError;\n }\n const writerStats = options.writer?.getStats?.();\n if (writerStats !== undefined) {\n diagnostics.writerStats = writerStats;\n }\n return diagnostics;\n },\n };\n\n return runtime;\n}\n","import { createInspectorRuntime } from \"./inspector-runtime.js\";\nimport type { InspectorRuntime } from \"./inspector-runtime.js\";\nimport type { InspectKind } from \"./types/inspect-event.js\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n} from \"./types/persisted-inspect-event.js\";\nimport type { RedactionProfile, StepMetadata, StepType } from \"./types.js\";\nimport {\n normalizeObserveOutcomeInput,\n type ObserveOutcomeOptions,\n} from \"./outcomes/index.js\";\nimport {\n preparePersistedInspectEventForWrite,\n resolveTraceSafetyOptions,\n type TraceSafetyOptions,\n} from \"./trace-event-safety.js\";\nimport type { TraceWriter } from \"./writers/index.js\";\nimport {\n createRunId,\n createStepId,\n getDefaultTraceDir,\n truncateName,\n} from \"./utils.js\";\n\nconst INSPECTOR_PERSISTED_SCHEMA_VERSION =\n \"1.0\" satisfies PersistedInspectEvent[\"schemaVersion\"];\n\nexport interface InspectorCaptureOptions {\n onSuccess?: \"none\" | \"metadata-only\";\n onError?: \"none\" | \"metadata-only\";\n}\n\nexport interface CreateInspectorOptions {\n enabled?: boolean;\n writer?: TraceWriter;\n /**\n * Context metadata only. Does not configure writer output; use\n * `fileWriter({ dir })` or another explicit writer for persistence paths.\n *\n * @experimental\n */\n traceDir?: string;\n /**\n * Context metadata only for compatibility with existing terminal helpers.\n * `createInspector()` does not print lifecycle output.\n *\n * @experimental\n */\n silent?: boolean;\n metadata?: Record<string, unknown>;\n redactionProfile?: RedactionProfile;\n /**\n * Metadata-only summaries for persisted run/step completion rows.\n * This never stores raw return values, prompts, outputs, or thrown objects.\n *\n * @experimental\n */\n capture?: InspectorCaptureOptions;\n traceSafety?: TraceSafetyOptions;\n}\n\nexport interface InspectorRunOptions {\n runId?: string;\n traceDir?: string;\n silent?: boolean;\n metadata?: Record<string, unknown>;\n}\n\nexport interface InspectorStepOptions {\n type?: StepType;\n metadata?: StepMetadata;\n}\n\nexport type InspectorObserveOptions = InspectorStepOptions;\n\nexport interface Inspector {\n /**\n * Low-level runtime access is retained for v1.6 compatibility. Prefer\n * `getDiagnostics()` unless you need advanced runtime context primitives.\n *\n * @experimental\n */\n readonly runtime: InspectorRuntime;\n run<T>(\n name: string,\n fn: () => T | Promise<T>,\n options?: InspectorRunOptions,\n ): Promise<T>;\n step<T>(\n name: string,\n fn: () => T | Promise<T>,\n options?: InspectorStepOptions,\n ): Promise<T>;\n tool<T>(\n name: string,\n fn: () => T | Promise<T>,\n options?: InspectorStepOptions,\n ): Promise<T>;\n llm<T>(\n name: string,\n fn: () => T | Promise<T>,\n options?: InspectorStepOptions,\n ): Promise<T>;\n observe<TFunction extends (...args: any[]) => any>(\n name: string,\n fn: TFunction,\n options?: InspectorObserveOptions,\n ): (...args: Parameters<TFunction>) => Promise<Awaited<ReturnType<TFunction>>>;\n observeOutcome(name: string, options: ObserveOutcomeOptions): Promise<void>;\n getDiagnostics(): ReturnType<InspectorRuntime[\"getDiagnostics\"]>;\n flush(): Promise<void>;\n close(): Promise<void>;\n}\n\nfunction normalizeName(name: unknown, fallback: string): string {\n if (typeof name !== \"string\" || name.trim() === \"\") return fallback;\n return truncateName(name.trim(), 100);\n}\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number {\n return Math.max(0, Date.parse(endedAt) - Date.parse(startedAt));\n}\n\nfunction mergeMetadata(\n base: Record<string, unknown> | undefined,\n override: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (base === undefined && override === undefined) return undefined;\n return {\n ...(base ?? {}),\n ...(override ?? {}),\n };\n}\n\nconst SAFE_ERROR_CODE_MAX_LENGTH = 128;\nconst SAFE_ERROR_CODE_PATTERN = /^[A-Za-z0-9_.:-]+$/;\n\n/**\n * Normalize a thrown error's `code` or `status` into a bounded safe string.\n * Accepts finite numbers (e.g. HTTP 404) and short alphanumeric codes.\n * Omits objects, arrays, multiline/oversized values, and arbitrary properties.\n */\nfunction toSafeErrorCode(error: unknown): string | undefined {\n if (typeof error !== \"object\" || error === null) {\n return undefined;\n }\n const record = error as Record<string, unknown>;\n const raw = record.code !== undefined ? record.code : record.status;\n let candidate: string | undefined;\n if (typeof raw === \"number\" && Number.isFinite(raw)) {\n candidate = String(raw);\n } else if (typeof raw === \"string\") {\n candidate = raw.trim();\n }\n if (\n candidate === undefined ||\n candidate.length === 0 ||\n candidate.length > SAFE_ERROR_CODE_MAX_LENGTH ||\n !SAFE_ERROR_CODE_PATTERN.test(candidate)\n ) {\n return undefined;\n }\n return candidate;\n}\n\nfunction toPersistedError(error: unknown): PersistedInspectError {\n if (error instanceof Error) {\n const persisted: PersistedInspectError = {\n name: error.name,\n message: error.message,\n };\n const code = toSafeErrorCode(error);\n if (code !== undefined) {\n persisted.code = code;\n }\n return persisted;\n }\n if (typeof error === \"string\") {\n return { message: error };\n }\n if (typeof error === \"object\" && error !== null) {\n const record = error as Record<string, unknown>;\n const message =\n typeof record.message === \"string\" && record.message.length > 0\n ? record.message\n : \"Unknown error\";\n const persisted: PersistedInspectError = { message };\n if (typeof record.name === \"string\" && record.name.length > 0) {\n persisted.name = record.name;\n }\n const code = toSafeErrorCode(error);\n if (code !== undefined) {\n persisted.code = code;\n }\n return persisted;\n }\n return { message: \"Unknown error\" };\n}\n\nfunction summarizeValue(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", length: value.length };\n\n if (typeof value === \"string\") return { type: \"string\", length: value.length };\n if (typeof value === \"number\") {\n return { type: \"number\", finite: Number.isFinite(value) };\n }\n if (typeof value === \"bigint\") return { type: \"bigint\" };\n if (typeof value === \"boolean\") return { type: \"boolean\" };\n if (typeof value === \"undefined\") return { type: \"undefined\" };\n if (typeof value === \"symbol\") return { type: \"symbol\" };\n if (typeof value === \"function\") {\n return { type: \"function\", name: value.name || undefined };\n }\n if (typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n let keyCount: number | undefined;\n try {\n keyCount = Object.keys(record).length;\n } catch {\n keyCount = undefined;\n }\n return {\n type: \"object\",\n constructorName: value?.constructor?.name,\n ...(keyCount !== undefined ? { keyCount } : {}),\n };\n }\n return { type: typeof value };\n}\n\nfunction summarizeCapturedError(error: unknown): Record<string, unknown> {\n if (error instanceof Error) {\n return { type: \"error\", name: error.name };\n }\n return summarizeValue(error);\n}\n\nfunction stepTypeToKind(type: StepType): InspectKind {\n switch (type) {\n case \"llm\":\n return \"LLM\";\n case \"tool\":\n return \"TOOL\";\n case \"decision\":\n return \"DECISION\";\n case \"run\":\n return \"RUN\";\n default:\n return \"LOGIC\";\n }\n}\n\nexport function createInspector(\n options: CreateInspectorOptions = {},\n): Inspector {\n const traceSafety =\n options.traceSafety ??\n resolveTraceSafetyOptions({\n redactionProfile: options.redactionProfile,\n });\n const runtime = createInspectorRuntime({\n enabled: options.enabled,\n writer: options.writer,\n traceSafety,\n });\n\n async function write(event: PersistedInspectEvent): Promise<void> {\n const safe = preparePersistedInspectEventForWrite(event, traceSafety);\n if (safe !== undefined) {\n await runtime.write(safe);\n }\n }\n\n async function run<T>(\n name: string,\n fn: () => T | Promise<T>,\n runOptions: InspectorRunOptions = {},\n ): Promise<T> {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"inspector.run requires `fn` to be a function\");\n }\n if (options.enabled === false) {\n return Promise.resolve(fn());\n }\n\n const runName = normalizeName(name, \"unnamed-run\");\n const runId = runOptions.runId ?? createRunId();\n const traceDir = runOptions.traceDir ?? options.traceDir ?? getDefaultTraceDir();\n const metadata = mergeMetadata(options.metadata, runOptions.metadata);\n const startedAt = nowIso();\n\n return runtime.runWithContext(\n {\n runId,\n runName,\n traceDir,\n silent: runOptions.silent ?? options.silent ?? true,\n metadata,\n },\n async () => {\n await write({\n schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,\n eventId: `${runId}_started`,\n runId,\n kind: \"RUN\",\n name: runName,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: { type: \"manual\", name: \"createInspector\" },\n attributes: {\n legacyEvent: \"run_started\",\n ...(metadata !== undefined ? { metadata } : {}),\n },\n });\n\n try {\n const result = await Promise.resolve(fn());\n const endedAt = nowIso();\n await write({\n schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,\n eventId: `${runId}_completed`,\n runId,\n kind: \"RUN\",\n name: runName,\n status: \"ok\",\n timestamp: endedAt,\n endedAt,\n durationMs: durationMs(startedAt, endedAt),\n confidence: \"explicit\",\n source: { type: \"manual\", name: \"createInspector\" },\n attributes: { legacyEvent: \"run_completed\" },\n ...(options.capture?.onSuccess === \"metadata-only\"\n ? { outputSummary: summarizeValue(result) }\n : {}),\n });\n return result;\n } catch (error) {\n const endedAt = nowIso();\n await write({\n schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,\n eventId: `${runId}_completed`,\n runId,\n kind: \"RUN\",\n name: runName,\n status: \"error\",\n timestamp: endedAt,\n endedAt,\n durationMs: durationMs(startedAt, endedAt),\n confidence: \"explicit\",\n source: { type: \"manual\", name: \"createInspector\" },\n attributes: { legacyEvent: \"run_completed\" },\n ...(options.capture?.onError === \"metadata-only\"\n ? { outputSummary: summarizeCapturedError(error) }\n : {}),\n error: toPersistedError(error),\n });\n throw error;\n }\n },\n );\n }\n\n async function step<T>(\n name: string,\n fn: () => T | Promise<T>,\n stepOptions: InspectorStepOptions = {},\n ): Promise<T> {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"inspector.step requires `fn` to be a function\");\n }\n if (options.enabled === false || !runtime.getCurrentContext()) {\n return Promise.resolve(fn());\n }\n\n const context = runtime.getCurrentContext()!;\n const stepName = normalizeName(name, \"unnamed-step\");\n const stepId = createStepId();\n const parentId = runtime.getCurrentStepId();\n const stepType = stepOptions.type ?? \"logic\";\n const startedAt = nowIso();\n const attributes = {\n legacyEvent: \"step_started\",\n stepId,\n stepType,\n ...(stepOptions.metadata !== undefined\n ? { metadata: stepOptions.metadata }\n : {}),\n };\n\n await write({\n schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,\n eventId: `${stepId}_started`,\n runId: context.runId,\n ...(parentId !== undefined ? { parentId } : {}),\n kind: stepTypeToKind(stepType),\n name: stepName,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: { type: \"manual\", name: \"createInspector\" },\n attributes,\n });\n\n return runtime.runWithStepContext(stepId, async () => {\n try {\n const result = await Promise.resolve(fn());\n const endedAt = nowIso();\n await write({\n schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,\n eventId: `${stepId}_completed`,\n runId: context.runId,\n kind: stepTypeToKind(stepType),\n name: stepName,\n status: \"ok\",\n timestamp: endedAt,\n endedAt,\n durationMs: durationMs(startedAt, endedAt),\n confidence: \"explicit\",\n source: { type: \"manual\", name: \"createInspector\" },\n attributes: {\n legacyEvent: \"step_completed\",\n stepId,\n stepType,\n },\n ...(options.capture?.onSuccess === \"metadata-only\"\n ? { outputSummary: summarizeValue(result) }\n : {}),\n });\n return result;\n } catch (error) {\n const endedAt = nowIso();\n await write({\n schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,\n eventId: `${stepId}_completed`,\n runId: context.runId,\n kind: stepTypeToKind(stepType),\n name: stepName,\n status: \"error\",\n timestamp: endedAt,\n endedAt,\n durationMs: durationMs(startedAt, endedAt),\n confidence: \"explicit\",\n source: { type: \"manual\", name: \"createInspector\" },\n attributes: {\n legacyEvent: \"step_completed\",\n stepId,\n stepType,\n },\n ...(options.capture?.onError === \"metadata-only\"\n ? { outputSummary: summarizeCapturedError(error) }\n : {}),\n error: toPersistedError(error),\n });\n throw error;\n }\n });\n }\n\n const inspector: Inspector = {\n runtime,\n run,\n step,\n tool(name, fn, toolOptions) {\n const toolName = normalizeName(name, \"unknown-tool\");\n return step(`tool:${toolName}`, fn, {\n ...toolOptions,\n type: \"tool\",\n metadata: {\n ...(toolOptions?.metadata ?? {}),\n toolName,\n },\n });\n },\n llm(name, fn, llmOptions) {\n const model = normalizeName(name, \"unknown-model\");\n return step(`llm:${model}`, fn, {\n ...llmOptions,\n type: \"llm\",\n metadata: {\n ...(llmOptions?.metadata ?? {}),\n model,\n },\n });\n },\n observe(name, fn, observeOptions) {\n return async (...args) =>\n step(name, () => Promise.resolve(fn(...args)), observeOptions);\n },\n async observeOutcome(name, outcomeOptions) {\n const ctx = runtime.getCurrentContext();\n if (!ctx) return;\n let normalized;\n try {\n normalized = normalizeObserveOutcomeInput(name, outcomeOptions);\n } catch {\n return;\n }\n const outcomeId = createStepId();\n const parentId = runtime.getCurrentStepId();\n await write({\n schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,\n eventId: outcomeId,\n runId: ctx.runId,\n ...(parentId !== undefined ? { parentId } : {}),\n kind: \"OUTCOME\",\n name: normalized.name,\n status: normalized.status === \"failed\" ? \"error\" : \"ok\",\n timestamp: new Date(normalized.observedAt).toISOString(),\n confidence: \"explicit\",\n source: { type: \"manual\", name: \"createInspector\" },\n attributes: {\n legacyEvent: \"outcome_observed\",\n outcomeId,\n outcomeStatus: normalized.status,\n expectation: normalized.expectation,\n ...(normalized.method !== undefined ? { method: normalized.method } : {}),\n ...(normalized.actual !== undefined ? { actual: normalized.actual } : {}),\n ...(normalized.evidence !== undefined ? { evidence: normalized.evidence } : {}),\n observedAt: new Date(normalized.observedAt).toISOString(),\n },\n ...(normalized.actual !== undefined ? { outputSummary: normalized.actual } : {}),\n });\n },\n getDiagnostics() {\n return runtime.getDiagnostics();\n },\n flush() {\n return runtime.flush();\n },\n close() {\n return runtime.close();\n },\n };\n\n return inspector;\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport { extractCorrelationMetadata } from \"./correlation-metadata.js\";\nimport type { ExecutionContext, TraceCorrelationMetadata } from \"./types.js\";\nimport {\n resolveTraceSafetyOptions,\n type TraceSafetyOptions,\n} from \"./trace-event-safety.js\";\n\ntype RuntimeExecutionContext = ExecutionContext & {\n currentStepId?: string;\n currentDepth: number;\n traceSafety: TraceSafetyOptions;\n};\n\n/**\n * Versioned process key so packed CJS root and `/advanced` entrypoints share one\n * AsyncLocalStorage instance. Bump the suffix only when the store shape is incompatible.\n * createInspector keeps a separate per-instance ALS in inspector-runtime.ts.\n */\nconst GLOBAL_CONTEXT_ALS_KEY = \"agent-inspect:execution-context-als:v1\";\n\ntype GlobalAlsHost = typeof globalThis & {\n [GLOBAL_CONTEXT_ALS_KEY]?: AsyncLocalStorage<RuntimeExecutionContext>;\n};\n\nfunction getSharedContextStorage(): AsyncLocalStorage<RuntimeExecutionContext> {\n const host = globalThis as GlobalAlsHost;\n const existing = host[GLOBAL_CONTEXT_ALS_KEY];\n if (existing instanceof AsyncLocalStorage) {\n return existing;\n }\n const created = new AsyncLocalStorage<RuntimeExecutionContext>();\n host[GLOBAL_CONTEXT_ALS_KEY] = created;\n return created;\n}\n\nconst storage = getSharedContextStorage();\n\nfunction toPublicContext(ctx: RuntimeExecutionContext): ExecutionContext {\n return {\n runId: ctx.runId,\n runName: ctx.runName,\n traceDir: ctx.traceDir,\n silent: ctx.silent,\n metadata: ctx.metadata,\n };\n}\n\nfunction invoke<T>(fn: () => T | Promise<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n try {\n Promise.resolve(fn()).then(resolve, reject);\n } catch (e) {\n reject(e);\n }\n });\n}\n\n/** Returns the active run context, without internal step fields. */\nexport function getCurrentContext(): ExecutionContext | undefined {\n try {\n const s = storage.getStore();\n if (!s) return undefined;\n return toPublicContext(s);\n } catch {\n return undefined;\n }\n}\n\n/** Active `runId` when inside `runWithContext`, else `undefined`. */\nexport function getCurrentRunId(): string | undefined {\n try {\n return storage.getStore()?.runId;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Correlation metadata for the active run (`correlationId`, `requestId`, `decisionId`, `groupId`).\n * `undefined` outside `inspectRun` / `maybeInspectRun` or when no correlation fields were set.\n */\nexport function getCurrentCorrelationMetadata():\n | TraceCorrelationMetadata\n | undefined {\n try {\n return extractCorrelationMetadata(storage.getStore()?.metadata);\n } catch {\n return undefined;\n }\n}\n\n/** Active `runName` when inside `runWithContext`, else `undefined`. */\nexport function getCurrentRunName(): string | undefined {\n try {\n return storage.getStore()?.runName;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Active step id in this async scope (parent for nested `step()` calls).\n * `undefined` at run root or outside any run.\n */\nexport function getCurrentStepId(): string | undefined {\n try {\n return storage.getStore()?.currentStepId;\n } catch {\n return undefined;\n }\n}\n\n/** Alias of {@link getCurrentStepId} for readability in step instrumentation. */\nexport function getParentStepId(): string | undefined {\n return getCurrentStepId();\n}\n\n/**\n * Nesting depth: `0` at run root, increments by one per nested `runWithStepContext`.\n * Returns `0` outside any run.\n */\nexport function getCurrentDepth(): number {\n try {\n const d = storage.getStore()?.currentDepth;\n return typeof d === \"number\" && Number.isFinite(d) ? d : 0;\n } catch {\n return 0;\n }\n}\n\nexport function hasActiveContext(): boolean {\n try {\n return storage.getStore() !== undefined;\n } catch {\n return false;\n }\n}\n\nexport function getTraceDirFromContext(): string | undefined {\n try {\n return storage.getStore()?.traceDir;\n } catch {\n return undefined;\n }\n}\n\nexport function isSilentContext(): boolean {\n try {\n const s = storage.getStore();\n return s ? s.silent : false;\n } catch {\n return false;\n }\n}\n\n/** Resolved trace safety settings for the active run (redaction + size bounds). */\nexport function getTraceSafetyFromContext(): TraceSafetyOptions | undefined {\n try {\n return storage.getStore()?.traceSafety;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Runs `fn` with a fresh AgentInspect run context (depth 0, no active step).\n * Propagates sync/async results and rejections; does not swallow user errors.\n */\nexport function runWithContext<T>(\n context: ExecutionContext,\n fn: () => Promise<T> | T,\n traceSafety: TraceSafetyOptions = resolveTraceSafetyOptions(),\n): Promise<T> {\n const runtime: RuntimeExecutionContext = {\n runId: context.runId,\n runName: context.runName,\n traceDir: context.traceDir,\n silent: context.silent,\n metadata: context.metadata,\n traceSafety,\n currentDepth: 0,\n };\n\n return new Promise((resolve, reject) => {\n storage.run(runtime, () => {\n try {\n Promise.resolve(fn()).then(resolve, reject);\n } catch (e) {\n reject(e);\n }\n });\n });\n}\n\n/**\n * Runs `fn` with `stepId` as the active step (incremented depth).\n * If no run is active, runs `fn` without altering async context.\n */\nexport function runWithStepContext<T>(\n stepId: string,\n fn: () => Promise<T> | T,\n): Promise<T> {\n let parent: RuntimeExecutionContext | undefined;\n try {\n parent = storage.getStore();\n } catch {\n parent = undefined;\n }\n\n if (!parent) {\n return invoke(fn);\n }\n\n const derived: RuntimeExecutionContext = {\n runId: parent.runId,\n runName: parent.runName,\n traceDir: parent.traceDir,\n silent: parent.silent,\n metadata: parent.metadata,\n traceSafety: parent.traceSafety,\n currentStepId: stepId,\n currentDepth: parent.currentDepth + 1,\n };\n\n return new Promise((resolve, reject) => {\n storage.run(derived, () => {\n try {\n Promise.resolve(fn()).then(resolve, reject);\n } catch (e) {\n reject(e);\n }\n });\n });\n}\n","import chalk from \"chalk\";\n\nimport { isSilentContext } from \"./context.js\";\nimport type { ErrorInfo, RunStatus, StepStatus } from \"./types.js\";\nimport { formatDuration, truncateName } from \"./utils.js\";\n\n/** Two spaces per nesting level in terminal output. */\nexport const TERMINAL_INDENT = \" \";\n\n/** Max display length for names in terminal output. */\nexport const MAX_TERMINAL_NAME_LENGTH = 80;\n\n/** Max nesting depth used for indentation (prevents huge indents). */\nexport const MAX_TERMINAL_DEPTH = 10;\n\nfunction normalizeDepth(depth: number): number {\n if (!Number.isFinite(depth) || depth < 0) {\n return 0;\n }\n return Math.min(Math.floor(depth), MAX_TERMINAL_DEPTH);\n}\n\nfunction safePrint(line = \"\"): void {\n try {\n console.log(line);\n } catch {\n /* never break callers */\n }\n}\n\n/** Indentation string for a nesting depth (capped, never negative). */\nexport function getIndent(depth: number): string {\n return TERMINAL_INDENT.repeat(normalizeDepth(depth));\n}\n\n/** Truncates a display name for terminal use; invalid input becomes `\"unnamed\"`. */\nexport function formatTerminalName(name: string): string {\n if (typeof name !== \"string\" || name.trim() === \"\") {\n return \"unnamed\";\n }\n return truncateName(name, MAX_TERMINAL_NAME_LENGTH);\n}\n\nfunction getStatusIcon(status: StepStatus | RunStatus): string {\n if (status === \"success\") return chalk.green(\"✔\");\n if (status === \"error\") return chalk.red(\"✖\");\n return chalk.yellow(\"⏳\");\n}\n\n/** Renders a single step line (colored); does not consult silent mode. */\nexport function renderStepLine(\n name: string,\n durationMs: number | undefined,\n status: StepStatus,\n depth?: number,\n): string {\n try {\n const nm = formatTerminalName(name);\n const ind = getIndent(depth ?? 0);\n if (status === \"running\" && durationMs === undefined) {\n return `${ind}${chalk.yellow(\"⏳\")} ${nm}`;\n }\n const hasDur =\n durationMs !== undefined && Number.isFinite(durationMs as number);\n const dur = hasDur ? formatDuration(durationMs as number) : undefined;\n if (status === \"running\") {\n return dur !== undefined\n ? `${ind}${chalk.yellow(\"⏳\")} ${nm} (${dur})`\n : `${ind}${chalk.yellow(\"⏳\")} ${nm}`;\n }\n if (!hasDur || dur === undefined) {\n return `${ind}${chalk.yellow(\"⏳\")} ${nm}`;\n }\n if (status === \"success\") {\n return `${ind}${getStatusIcon(\"success\")} ${nm} (${dur})`;\n }\n return `${ind}${getStatusIcon(\"error\")} ${nm} (${dur})`;\n } catch {\n return \"\";\n }\n}\n\n/** Renders an error summary line (no stack in MVP). */\nexport function renderErrorLine(error: ErrorInfo, depth?: number): string {\n try {\n const msg =\n typeof error.message === \"string\" ? error.message : \"\";\n const ind = getIndent((depth ?? 0) + 1);\n return `${ind}Error: ${msg}`;\n } catch {\n return \"\";\n }\n}\n\n/** Plain-text run summary lines (no chalk) for stable testing and CLI reuse. */\nexport function renderRunSummary(\n durationMs: number,\n status: RunStatus,\n traceFilePath?: string,\n): string[] {\n try {\n const dur = Number.isFinite(durationMs)\n ? formatDuration(durationMs)\n : formatDuration(0);\n const head =\n status === \"error\" ? `Failed in ${dur}` : `Completed in ${dur}`;\n const lines = [head];\n if (traceFilePath !== undefined && traceFilePath.trim() !== \"\") {\n lines.push(`Trace: ${traceFilePath}`);\n }\n return lines;\n } catch {\n return [];\n }\n}\n\n/** Prints run header with icon and dim run id. */\nexport function printRunStart(runId: string, name: string): void {\n if (isSilentContext()) return;\n try {\n safePrint(\"\");\n const header = `${chalk.cyan.bold(\"🔍 AgentInspect:\")} ${formatTerminalName(name)} ${chalk.dim(`(${runId})`)}`;\n safePrint(header);\n } catch {\n /* noop */\n }\n}\n\n/** Prints a running step line. */\nexport function printStepStart(name: string, depth = 0): void {\n if (isSilentContext()) return;\n try {\n safePrint(renderStepLine(name, undefined, \"running\", depth));\n } catch {\n /* noop */\n }\n}\n\n/** Prints a completed step line with duration and status icon. */\nexport function printStepComplete(\n name: string,\n durationMs: number,\n status: StepStatus,\n depth = 0,\n): void {\n if (isSilentContext()) return;\n try {\n safePrint(renderStepLine(name, durationMs, status, depth));\n } catch {\n /* noop */\n }\n}\n\n/** Prints a structured error line (message only, no stack). */\nexport function printError(error: ErrorInfo, depth = 0): void {\n if (isSilentContext()) return;\n try {\n safePrint(renderErrorLine(error, depth));\n } catch {\n /* noop */\n }\n}\n\n/** Prints run completion summary and optional trace path. */\nexport function printRunComplete(\n _name: string,\n _runId: string,\n durationMs: number,\n status: RunStatus,\n traceFilePath?: string,\n): void {\n if (isSilentContext()) return;\n try {\n const lines = renderRunSummary(durationMs, status, traceFilePath);\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]!;\n if (i === 0) {\n const color =\n status === \"error\"\n ? chalk.red\n : status === \"running\"\n ? chalk.yellow\n : chalk.green;\n safePrint(color(line));\n } else {\n safePrint(chalk.dim(line));\n }\n }\n } catch {\n /* noop */\n }\n}\n\n/** Prints which step failed. */\nexport function printFailedAt(stepName: string): void {\n if (isSilentContext()) return;\n try {\n safePrint(`Failed at: ${formatTerminalName(stepName)}`);\n } catch {\n /* noop */\n }\n}\n","import type { Stats } from \"node:fs\";\nimport { readdir, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { getDefaultTraceDir } from \"./utils.js\";\n\nexport interface TraceDirectoryOptions {\n dir?: string;\n}\n\nexport function resolveTraceDir(options: TraceDirectoryOptions = {}): string {\n if (typeof options.dir === \"string\" && options.dir.trim() !== \"\") {\n return options.dir.trim();\n }\n const envDir = process.env.AGENT_INSPECT_TRACE_DIR;\n if (typeof envDir === \"string\" && envDir.trim() !== \"\") {\n return envDir.trim();\n }\n return getDefaultTraceDir();\n}\n\nexport class TraceDirectory {\n readonly #dir: string;\n\n constructor(options: TraceDirectoryOptions = {}) {\n this.#dir = resolveTraceDir(options);\n }\n\n getPath(filename?: string): string {\n return filename ? path.join(this.#dir, filename) : this.#dir;\n }\n\n async list(): Promise<string[]> {\n try {\n const files = await readdir(this.#dir);\n return files.filter((f) => f.endsWith(\".jsonl\"));\n } catch (e) {\n if (e && typeof e === \"object\" && \"code\" in e && e.code === \"ENOENT\") {\n return [];\n }\n throw e;\n }\n }\n\n async getFileStats(filename: string): Promise<Stats> {\n return await stat(this.getPath(filename));\n }\n}\n\n","import { buildRunStartedMetadata } from \"./correlation-metadata.js\";\nimport { runWithContext } from \"./context.js\";\nimport type { ExecutionContext, InspectRunOptions, TraceEvent } from \"./types.js\";\nimport { initializeTraceFile, writeTraceEvent } from \"./storage.js\";\nimport { printRunComplete, printRunStart } from \"./terminal.js\";\nimport { resolveTraceDir } from \"./trace-directory.js\";\nimport {\n prepareTraceEventForDisk,\n resolveTraceSafetyOptions,\n} from \"./trace-event-safety.js\";\nimport {\n createRunId,\n formatError,\n getTraceFilePath,\n truncateName,\n warn,\n} from \"./utils.js\";\n\nfunction normalizeRunName(name: unknown): string {\n if (typeof name !== \"string\" || name.trim() === \"\") {\n return \"unnamed-run\";\n }\n return truncateName(name.trim(), 100);\n}\n\nasync function safeInstrumentation(\n label: string,\n op: () => void | Promise<void>,\n): Promise<void> {\n try {\n await Promise.resolve(op());\n } catch (e) {\n warn(`inspectRun: ${label}`, e);\n }\n}\n\n/**\n * Stable v1.0 API for local manual run tracing.\n *\n * Runs `fn` inside an AgentInspect trace: JSONL `run_started` / `run_completed`, optional terminal output,\n * and {@link ExecutionContext} for nested APIs. Instrumentation failures are swallowed; user errors are re-thrown.\n */\nexport async function inspectRun<T>(\n name: string,\n fn: () => Promise<T> | T,\n options?: InspectRunOptions,\n): Promise<T> {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"inspectRun requires `fn` to be a function\");\n }\n\n if (options?.enabled === false) {\n return Promise.resolve(fn());\n }\n\n const runName = normalizeRunName(name);\n const runId = createRunId();\n const traceDir = resolveTraceDir({ dir: options?.traceDir });\n\n const traceSafety = resolveTraceSafetyOptions(options);\n const runMetadata = buildRunStartedMetadata(options);\n\n const context: ExecutionContext = {\n runId,\n runName,\n traceDir,\n silent: options?.silent ?? false,\n metadata: runMetadata,\n };\n\n return runWithContext(context, async () => {\n const startTime = Date.now();\n let traceFilePath: string | undefined;\n\n await safeInstrumentation(\"initializeTraceFile\", async () => {\n traceFilePath = await initializeTraceFile(runId, traceDir);\n });\n\n await safeInstrumentation(\"writeTraceEvent(run_started)\", async () => {\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_started\",\n timestamp: startTime,\n runId,\n name: runName,\n startTime,\n ...(runMetadata !== undefined ? { metadata: runMetadata } : {}),\n };\n await writeTraceEvent(\n prepareTraceEventForDisk(started, traceSafety),\n traceDir,\n );\n });\n\n await safeInstrumentation(\"printRunStart\", () => {\n printRunStart(runId, runName);\n });\n\n let result: T;\n try {\n result = await Promise.resolve(fn());\n } catch (userError) {\n const endTime = Date.now();\n const durationMs = endTime - startTime;\n const formatted = formatError(userError);\n const printPath = traceFilePath ?? getTraceFilePath(runId, traceDir);\n\n await safeInstrumentation(\"writeTraceEvent(run_completed error)\", async () => {\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_completed\",\n timestamp: endTime,\n runId,\n status: \"error\",\n endTime,\n durationMs,\n error: formatted,\n };\n await writeTraceEvent(\n prepareTraceEventForDisk(completed, traceSafety),\n traceDir,\n );\n });\n\n await safeInstrumentation(\"printRunComplete(error)\", () => {\n printRunComplete(runName, runId, durationMs, \"error\", printPath);\n });\n\n throw userError;\n }\n\n const endTime = Date.now();\n const durationMs = endTime - startTime;\n const printPath = traceFilePath ?? getTraceFilePath(runId, traceDir);\n\n await safeInstrumentation(\"writeTraceEvent(run_completed success)\", async () => {\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_completed\",\n timestamp: endTime,\n runId,\n status: \"success\",\n endTime,\n durationMs,\n };\n await writeTraceEvent(\n prepareTraceEventForDisk(completed, traceSafety),\n traceDir,\n );\n });\n\n await safeInstrumentation(\"printRunComplete(success)\", () => {\n printRunComplete(runName, runId, durationMs, \"success\", printPath);\n });\n\n return result;\n }, traceSafety);\n}\n","import { inspectRun } from \"./inspect-run.js\";\nimport type { InspectRunOptions } from \"./types.js\";\n\nconst ENABLED_ENV_VALUES = new Set([\"1\", \"true\", \"yes\", \"on\", \"enabled\"]);\n\n/**\n * Returns true when `value` is one of the recognized AGENT_INSPECT enable tokens\n * (`1`, `true`, `yes`, `on`, `enabled`, case-insensitive). Undefined or any other value is false.\n */\nexport function isAgentInspectEnabled(value?: string): boolean {\n if (value === undefined) return false;\n const normalized = value.trim().toLowerCase();\n if (normalized === \"\") return false;\n return ENABLED_ENV_VALUES.has(normalized);\n}\n\n/**\n * Runs `fn` with tracing when enabled; otherwise passthrough (no trace file, no context).\n *\n * Enablement order: explicit `options.enabled` wins; when omitted, reads `process.env.AGENT_INSPECT`.\n * Unset or unrecognized env values disable tracing.\n */\nexport async function maybeInspectRun<T>(\n name: string,\n fn: () => Promise<T> | T,\n options?: InspectRunOptions,\n): Promise<T> {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"maybeInspectRun requires `fn` to be a function\");\n }\n\n const enabled =\n options?.enabled !== undefined\n ? options.enabled\n : isAgentInspectEnabled(process.env.AGENT_INSPECT);\n\n if (!enabled) {\n return Promise.resolve(fn());\n }\n\n return inspectRun(name, fn, options);\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { formatProgrammaticDiagnostic } from './chunk-FWK3Q3OJ.mjs';
2
- import { persistedInspectEventsToRunTrees, traceEventToPersistedInspectEvent, traceEventsToPersistedInspectEvents } from './chunk-QLYUWKK7.mjs';
1
+ import { persistedInspectEventsToRunTrees, traceEventToPersistedInspectEvent, traceEventsToPersistedInspectEvents } from './chunk-2IRRUNIN.mjs';
2
+ import { formatProgrammaticDiagnostic } from './chunk-L5WLVBW4.mjs';
3
3
  import { parseTraceJsonl } from './chunk-7DHSWDKB.mjs';
4
4
  import { readFile, readdir } from 'fs/promises';
5
5
  import path from 'path';
@@ -791,7 +791,7 @@ function mapOpenInferenceSpan(span, index, version) {
791
791
  const errorMessage = isRecord(span.status) && typeof span.status.message === "string" ? span.status.message : void 0;
792
792
  const event = {
793
793
  schemaVersion: "0.2",
794
- eventId: typeof rawAttributes["agent_inspect.event_id"] === "string" ? rawAttributes["agent_inspect.event_id"] : spanId,
794
+ eventId: typeof rawAttributes["agent_inspect.event_id"] === "string" ? rawAttributes["agent_inspect.event_id"] : `${traceId}:${spanId}`,
795
795
  runId: typeof rawAttributes["agent_inspect.run_id"] === "string" ? rawAttributes["agent_inspect.run_id"] : traceId,
796
796
  kind,
797
797
  name,
@@ -842,12 +842,16 @@ function mapOpenInferenceEvents(document) {
842
842
  const mapped = document.spans.map(
843
843
  (span, index) => mapOpenInferenceSpan(span, index, document.version)
844
844
  );
845
- const spanIdToEventId = new Map(
846
- mapped.map((span) => [span.spanId, span.event.eventId])
845
+ const spanKeyToEventId = new Map(
846
+ mapped.map((span) => {
847
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
848
+ return [`${traceId}:${span.spanId}`, span.event.eventId];
849
+ })
847
850
  );
848
851
  for (const span of mapped) {
849
852
  if (span.parentSpanId === void 0) continue;
850
- span.event.parentId = spanIdToEventId.get(span.parentSpanId) ?? span.parentSpanId;
853
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
854
+ span.event.parentId = spanKeyToEventId.get(`${traceId}:${span.parentSpanId}`) ?? span.parentSpanId;
851
855
  }
852
856
  return {
853
857
  events: mapped.map((span) => span.event),
@@ -1396,7 +1400,7 @@ function mapOtlpSpan(context) {
1396
1400
  const errorMessage = isRecord(span.status) && typeof span.status.message === "string" ? span.status.message : void 0;
1397
1401
  const event = {
1398
1402
  schemaVersion: "0.2",
1399
- eventId: typeof parsedSpanAttributes.attributes["agent_inspect.event_id"] === "string" ? parsedSpanAttributes.attributes["agent_inspect.event_id"] : spanId,
1403
+ eventId: typeof parsedSpanAttributes.attributes["agent_inspect.event_id"] === "string" ? parsedSpanAttributes.attributes["agent_inspect.event_id"] : `${traceId}:${spanId}`,
1400
1404
  runId: typeof parsedSpanAttributes.attributes["agent_inspect.run_id"] === "string" ? parsedSpanAttributes.attributes["agent_inspect.run_id"] : traceId,
1401
1405
  kind,
1402
1406
  name: readStringField(span, ["name"]) ?? spanId,
@@ -1445,12 +1449,16 @@ function mapOtlpSpan(context) {
1445
1449
  }
1446
1450
  function mapOtlpEventsToPersisted(document) {
1447
1451
  const mapped = document.spans.map((span) => mapOtlpSpan(span));
1448
- const spanIdToEventId = new Map(
1449
- mapped.map((span) => [span.spanId, span.event.eventId])
1452
+ const spanKeyToEventId = new Map(
1453
+ mapped.map((span) => {
1454
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
1455
+ return [`${traceId}:${span.spanId}`, span.event.eventId];
1456
+ })
1450
1457
  );
1451
1458
  for (const span of mapped) {
1452
1459
  if (span.parentSpanId === void 0) continue;
1453
- span.event.parentId = spanIdToEventId.get(span.parentSpanId) ?? span.parentSpanId;
1460
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
1461
+ span.event.parentId = spanKeyToEventId.get(`${traceId}:${span.parentSpanId}`) ?? span.parentSpanId;
1454
1462
  }
1455
1463
  return {
1456
1464
  events: mapped.map((span) => span.event),
@@ -1750,5 +1758,5 @@ function openTraceText(content, options = {}) {
1750
1758
  }
1751
1759
 
1752
1760
  export { BUILTIN_MAPPING_LEDGERS, DEFAULT_TRACE_READERS, OPENINFERENCE_MAPPING_LEDGER, OTLP_JSON_MAPPING_LEDGER, TraceReadError, agentInspectJsonlReader, assertTraceInput, detectTraceFormat, getMappingLedger, openInferenceJsonReader, openTrace, openTraceDirectory, openTraceFile, openTraceText, otlpJsonReader, readTrace };
1753
- //# sourceMappingURL=chunk-3RV3JILQ.mjs.map
1754
- //# sourceMappingURL=chunk-3RV3JILQ.mjs.map
1761
+ //# sourceMappingURL=chunk-IJJSPJXV.mjs.map
1762
+ //# sourceMappingURL=chunk-IJJSPJXV.mjs.map