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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/packages/cli/dist/{chunk-QV73NM25.mjs → chunk-SWUZRRDT.mjs} +158 -21
- package/packages/cli/dist/chunk-SWUZRRDT.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +312 -52
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +156 -36
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-KFOBXFPN.mjs → src-XFIPYODW.mjs} +3 -3
- package/packages/cli/dist/{src-KFOBXFPN.mjs.map → src-XFIPYODW.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +200 -24
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.d.cts +1 -1
- package/packages/core/dist/advanced.d.ts +1 -1
- package/packages/core/dist/advanced.mjs +89 -15
- package/packages/core/dist/advanced.mjs.map +1 -1
- package/packages/core/dist/checks.mjs +2 -2
- package/packages/core/dist/{chunk-LXYPM2ZO.mjs → chunk-2CCRUI42.mjs} +19 -318
- package/packages/core/dist/chunk-2CCRUI42.mjs.map +1 -0
- package/packages/core/dist/{chunk-QLYUWKK7.mjs → chunk-2IRRUNIN.mjs} +11 -5
- package/packages/core/dist/chunk-2IRRUNIN.mjs.map +1 -0
- package/packages/core/dist/{chunk-VQUB3WRI.mjs → chunk-3SPBELJB.mjs} +14 -3
- package/packages/core/dist/chunk-3SPBELJB.mjs.map +1 -0
- package/packages/core/dist/{chunk-3RV3JILQ.mjs → chunk-IJJSPJXV.mjs} +20 -12
- package/packages/core/dist/chunk-IJJSPJXV.mjs.map +1 -0
- package/packages/core/dist/chunk-L5WLVBW4.mjs +355 -0
- package/packages/core/dist/chunk-L5WLVBW4.mjs.map +1 -0
- package/packages/core/dist/exporters.cjs +110 -18
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +110 -18
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/index.cjs +12 -1
- package/packages/core/dist/index.cjs.map +1 -1
- package/packages/core/dist/index.mjs +2 -2
- package/packages/core/dist/persisted.cjs +344 -9
- package/packages/core/dist/persisted.cjs.map +1 -1
- package/packages/core/dist/persisted.d.cts +8 -1
- package/packages/core/dist/persisted.d.ts +8 -1
- package/packages/core/dist/persisted.mjs +3 -2
- package/packages/core/dist/persisted.mjs.map +1 -1
- package/packages/core/dist/readers.cjs +377 -87
- package/packages/core/dist/readers.cjs.map +1 -1
- package/packages/core/dist/readers.mjs +3 -3
- package/packages/cli/dist/chunk-QV73NM25.mjs.map +0 -1
- package/packages/core/dist/chunk-3RV3JILQ.mjs.map +0 -1
- package/packages/core/dist/chunk-FWK3Q3OJ.mjs +0 -56
- package/packages/core/dist/chunk-FWK3Q3OJ.mjs.map +0 -1
- package/packages/core/dist/chunk-LXYPM2ZO.mjs.map +0 -1
- package/packages/core/dist/chunk-QLYUWKK7.mjs.map +0 -1
- 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
|
|
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-
|
|
446
|
-
//# sourceMappingURL=chunk-
|
|
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
|
|
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-
|
|
982
|
-
//# sourceMappingURL=chunk-
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
|
846
|
-
mapped.map((span) =>
|
|
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.
|
|
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
|
|
1449
|
-
mapped.map((span) =>
|
|
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.
|
|
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-
|
|
1754
|
-
//# sourceMappingURL=chunk-
|
|
1761
|
+
//# sourceMappingURL=chunk-IJJSPJXV.mjs.map
|
|
1762
|
+
//# sourceMappingURL=chunk-IJJSPJXV.mjs.map
|