agent-inspect 6.31.8 → 6.31.10

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 (53) 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-6FE47XSF.mjs → chunk-JCKC4ZRV.mjs} +212 -12
  5. package/packages/cli/dist/chunk-JCKC4ZRV.mjs.map +1 -0
  6. package/packages/cli/dist/index.cjs +215 -11
  7. package/packages/cli/dist/index.cjs.map +1 -1
  8. package/packages/cli/dist/index.mjs +4 -4
  9. package/packages/cli/dist/index.mjs.map +1 -1
  10. package/packages/cli/dist/{src-NXAYHG34.mjs → src-4UD7JNDR.mjs} +3 -3
  11. package/packages/cli/dist/{src-NXAYHG34.mjs.map → src-4UD7JNDR.mjs.map} +1 -1
  12. package/packages/core/dist/advanced.cjs +202 -15
  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 +90 -15
  17. package/packages/core/dist/advanced.mjs.map +1 -1
  18. package/packages/core/dist/checks.cjs +79 -0
  19. package/packages/core/dist/checks.cjs.map +1 -1
  20. package/packages/core/dist/checks.d.cts +1 -1
  21. package/packages/core/dist/checks.d.ts +1 -1
  22. package/packages/core/dist/checks.mjs +3 -2
  23. package/packages/core/dist/{chunk-L5WLVBW4.mjs → chunk-AHUZNHFI.mjs} +4 -55
  24. package/packages/core/dist/chunk-AHUZNHFI.mjs.map +1 -0
  25. package/packages/core/dist/{chunk-2CCRUI42.mjs → chunk-CPQAOJW4.mjs} +72 -3
  26. package/packages/core/dist/chunk-CPQAOJW4.mjs.map +1 -0
  27. package/packages/core/dist/{chunk-2IRRUNIN.mjs → chunk-OAUNS5CS.mjs} +3 -3
  28. package/packages/core/dist/{chunk-2IRRUNIN.mjs.map → chunk-OAUNS5CS.mjs.map} +1 -1
  29. package/packages/core/dist/{chunk-IJJSPJXV.mjs → chunk-QOC3PJO3.mjs} +4 -4
  30. package/packages/core/dist/{chunk-IJJSPJXV.mjs.map → chunk-QOC3PJO3.mjs.map} +1 -1
  31. package/packages/core/dist/chunk-S6LQBLX5.mjs +67 -0
  32. package/packages/core/dist/chunk-S6LQBLX5.mjs.map +1 -0
  33. package/packages/core/dist/{chunk-VQUB3WRI.mjs → chunk-SSG3ICI4.mjs} +28 -3
  34. package/packages/core/dist/chunk-SSG3ICI4.mjs.map +1 -0
  35. package/packages/core/dist/index.cjs +89 -1
  36. package/packages/core/dist/index.cjs.map +1 -1
  37. package/packages/core/dist/index.mjs +3 -2
  38. package/packages/core/dist/index.mjs.map +1 -1
  39. package/packages/core/dist/persisted.cjs +11 -0
  40. package/packages/core/dist/persisted.cjs.map +1 -1
  41. package/packages/core/dist/persisted.mjs +4 -3
  42. package/packages/core/dist/persisted.mjs.map +1 -1
  43. package/packages/core/dist/{programmatic-gZTWLObB.d.cts → programmatic-BLlC7Ytq.d.cts} +1 -1
  44. package/packages/core/dist/{programmatic-gZTWLObB.d.ts → programmatic-BLlC7Ytq.d.ts} +1 -1
  45. package/packages/core/dist/readers.cjs +11 -0
  46. package/packages/core/dist/readers.cjs.map +1 -1
  47. package/packages/core/dist/readers.d.cts +1 -1
  48. package/packages/core/dist/readers.d.ts +1 -1
  49. package/packages/core/dist/readers.mjs +4 -3
  50. package/packages/cli/dist/chunk-6FE47XSF.mjs.map +0 -1
  51. package/packages/core/dist/chunk-2CCRUI42.mjs.map +0 -1
  52. package/packages/core/dist/chunk-L5WLVBW4.mjs.map +0 -1
  53. package/packages/core/dist/chunk-VQUB3WRI.mjs.map +0 -1
@@ -0,0 +1,67 @@
1
+ // packages/core/src/diagnostics/programmatic.ts
2
+ var PROGRAMMATIC_DIAGNOSTIC_SPECS = Object.freeze({
3
+ AI_TRACE_INPUT_INVALID: {
4
+ code: "AI_TRACE_INPUT_INVALID",
5
+ summary: 'Expected { type: "file", path }, { type: "directory", path }, { type: "string", content }, { type: "buffer", content }, or { type: "stdin" }.',
6
+ remediation: "For a file path, use openTraceFile(path).",
7
+ relatedCodes: ["invalid_input"]
8
+ },
9
+ AI_TRACE_FORMAT_UNSUPPORTED: {
10
+ code: "AI_TRACE_FORMAT_UNSUPPORTED",
11
+ summary: "No trace reader could detect the input format.",
12
+ remediation: "Pass an AgentInspect JSONL file via openTraceFile, or set options.format to a registered reader.",
13
+ relatedCodes: ["unsupported_format"]
14
+ },
15
+ AI_TRACE_FORMAT_AMBIGUOUS: {
16
+ code: "AI_TRACE_FORMAT_AMBIGUOUS",
17
+ summary: "Multiple trace readers matched the input with equal confidence.",
18
+ remediation: "Set options.format explicitly to disambiguate the reader.",
19
+ relatedCodes: ["ambiguous_format"]
20
+ },
21
+ AI_TRACE_FACTS_INPUT_NOT_NORMALIZED: {
22
+ code: "AI_TRACE_FACTS_INPUT_NOT_NORMALIZED",
23
+ summary: "TraceFacts requires TraceReadResult or PersistedInspectEvent[].",
24
+ remediation: "Use openTraceFile() to normalize a JSONL trace first."
25
+ },
26
+ AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED: {
27
+ code: "AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED",
28
+ summary: "Multiple runs are available; select a run before executing checks.",
29
+ remediation: "Pass options.runId or TraceCheckInput.selectedRun.",
30
+ relatedCodes: ["AI_CHECK_RUN_SELECTION_REQUIRED"]
31
+ },
32
+ AI_TRACE_RELATIONSHIP_SELF_PARENT: {
33
+ code: "AI_TRACE_RELATIONSHIP_SELF_PARENT",
34
+ summary: "A parentId equals its own event/step id.",
35
+ remediation: "Reject at capture (AI_LANGGRAPH_SELF_PARENT_REJECTED) or drop via logical projection; do not invent replacement parents.",
36
+ relatedCodes: [
37
+ "AI_LANGGRAPH_SELF_PARENT_REJECTED",
38
+ "AI_LOGICAL_SELF_PARENT_REMOVED"
39
+ ]
40
+ },
41
+ AI_TRACE_RELATIONSHIP_CYCLE: {
42
+ code: "AI_TRACE_RELATIONSHIP_CYCLE",
43
+ summary: "Trace contains a parentId cycle.",
44
+ remediation: "Use visibility-first tree linking for legacy fixtures; prefer acyclic capture for new adapter output.",
45
+ relatedCodes: ["structure.cycle"]
46
+ },
47
+ AI_TRACE_CONTRACT_INPUT_INVALID: {
48
+ code: "AI_TRACE_CONTRACT_INPUT_INVALID",
49
+ summary: "evaluateTraceContract expects ({ read }, contract) or use evaluateTraceContractRead(read, contract).",
50
+ remediation: "Pass TraceCheckInput as the first argument: evaluateTraceContract({ read }, contract).",
51
+ relatedCodes: ["AI_CHECK_INVALID_ARGUMENTS"]
52
+ },
53
+ AI_INSPECT_RUN_UNSUPPORTED_OPTION: {
54
+ code: "AI_INSPECT_RUN_UNSUPPORTED_OPTION",
55
+ summary: 'inspectRun does not accept a "writer" option.',
56
+ remediation: "Use createInspector({ writer }) then inspector.run(...). inspectRun persists via the global JSONL path (schema 0.1)."
57
+ }
58
+ });
59
+ function formatProgrammaticDiagnostic(code, detail) {
60
+ const spec = PROGRAMMATIC_DIAGNOSTIC_SPECS[code];
61
+ const summary = detail?.trim() ? detail.trim() : spec.summary;
62
+ return `${code}: ${summary} Remediation: ${spec.remediation}`;
63
+ }
64
+
65
+ export { PROGRAMMATIC_DIAGNOSTIC_SPECS, formatProgrammaticDiagnostic };
66
+ //# sourceMappingURL=chunk-S6LQBLX5.mjs.map
67
+ //# sourceMappingURL=chunk-S6LQBLX5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/diagnostics/programmatic.ts"],"names":[],"mappings":";AA8BO,IAAM,6BAAA,GAET,OAAO,MAAA,CAAO;AAAA,EAChB,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,wBAAA;AAAA,IACN,OAAA,EACE,+IAAA;AAAA,IACF,WAAA,EAAa,2CAAA;AAAA,IACb,YAAA,EAAc,CAAC,eAAe;AAAA,GAChC;AAAA,EACA,2BAAA,EAA6B;AAAA,IAC3B,IAAA,EAAM,6BAAA;AAAA,IACN,OAAA,EAAS,gDAAA;AAAA,IACT,WAAA,EACE,kGAAA;AAAA,IACF,YAAA,EAAc,CAAC,oBAAoB;AAAA,GACrC;AAAA,EACA,yBAAA,EAA2B;AAAA,IACzB,IAAA,EAAM,2BAAA;AAAA,IACN,OAAA,EAAS,iEAAA;AAAA,IACT,WAAA,EAAa,2DAAA;AAAA,IACb,YAAA,EAAc,CAAC,kBAAkB;AAAA,GACnC;AAAA,EACA,mCAAA,EAAqC;AAAA,IACnC,IAAA,EAAM,qCAAA;AAAA,IACN,OAAA,EAAS,iEAAA;AAAA,IACT,WAAA,EAAa;AAAA,GACf;AAAA,EACA,wCAAA,EAA0C;AAAA,IACxC,IAAA,EAAM,0CAAA;AAAA,IACN,OAAA,EAAS,oEAAA;AAAA,IACT,WAAA,EAAa,oDAAA;AAAA,IACb,YAAA,EAAc,CAAC,iCAAiC;AAAA,GAClD;AAAA,EACA,iCAAA,EAAmC;AAAA,IACjC,IAAA,EAAM,mCAAA;AAAA,IACN,OAAA,EAAS,0CAAA;AAAA,IACT,WAAA,EACE,0HAAA;AAAA,IACF,YAAA,EAAc;AAAA,MACZ,mCAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,2BAAA,EAA6B;AAAA,IAC3B,IAAA,EAAM,6BAAA;AAAA,IACN,OAAA,EAAS,kCAAA;AAAA,IACT,WAAA,EACE,uGAAA;AAAA,IACF,YAAA,EAAc,CAAC,iBAAiB;AAAA,GAClC;AAAA,EACA,+BAAA,EAAiC;AAAA,IAC/B,IAAA,EAAM,iCAAA;AAAA,IACN,OAAA,EACE,sGAAA;AAAA,IACF,WAAA,EACE,wFAAA;AAAA,IACF,YAAA,EAAc,CAAC,4BAA4B;AAAA,GAC7C;AAAA,EACA,iCAAA,EAAmC;AAAA,IACjC,IAAA,EAAM,mCAAA;AAAA,IACN,OAAA,EAAS,+CAAA;AAAA,IACT,WAAA,EACE;AAAA;AAEN,CAAC;AAKM,SAAS,4BAAA,CACd,MACA,MAAA,EACQ;AACR,EAAA,MAAM,IAAA,GAAO,8BAA8B,IAAI,CAAA;AAC/C,EAAA,MAAM,UAAU,MAAA,EAAQ,IAAA,KAAS,MAAA,CAAO,IAAA,KAAS,IAAA,CAAK,OAAA;AACtD,EAAA,OAAO,GAAG,IAAI,CAAA,EAAA,EAAK,OAAO,CAAA,cAAA,EAAiB,KAAK,WAAW,CAAA,CAAA;AAC7D","file":"chunk-S6LQBLX5.mjs","sourcesContent":["/**\n * Stable programmatic diagnostic codes for readers / TraceFacts / TraceContract.\n *\n * Lowercase `TraceReadError.code` values remain the published reader error codes.\n * These `AI_*` identifiers appear in messages and catalogs for actionable remediation.\n *\n * @experimental Additive in 6.15.0; do not replace published lowercase reader codes.\n */\n\nexport type ProgrammaticDiagnosticCode =\n | \"AI_TRACE_INPUT_INVALID\"\n | \"AI_TRACE_FORMAT_UNSUPPORTED\"\n | \"AI_TRACE_FORMAT_AMBIGUOUS\"\n | \"AI_TRACE_FACTS_INPUT_NOT_NORMALIZED\"\n | \"AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED\"\n | \"AI_TRACE_RELATIONSHIP_SELF_PARENT\"\n | \"AI_TRACE_RELATIONSHIP_CYCLE\"\n | \"AI_TRACE_CONTRACT_INPUT_INVALID\"\n | \"AI_INSPECT_RUN_UNSUPPORTED_OPTION\";\n\nexport interface ProgrammaticDiagnosticSpec {\n readonly code: ProgrammaticDiagnosticCode;\n /** Short problem statement (without the code prefix). */\n readonly summary: string;\n /** Actionable remediation hint (always included in formatted messages). */\n readonly remediation: string;\n /** Related published / capture codes that must remain valid. */\n readonly relatedCodes?: readonly string[];\n}\n\nexport const PROGRAMMATIC_DIAGNOSTIC_SPECS: Readonly<\n Record<ProgrammaticDiagnosticCode, ProgrammaticDiagnosticSpec>\n> = Object.freeze({\n AI_TRACE_INPUT_INVALID: {\n code: \"AI_TRACE_INPUT_INVALID\",\n summary:\n 'Expected { type: \"file\", path }, { type: \"directory\", path }, { type: \"string\", content }, { type: \"buffer\", content }, or { type: \"stdin\" }.',\n remediation: \"For a file path, use openTraceFile(path).\",\n relatedCodes: [\"invalid_input\"],\n },\n AI_TRACE_FORMAT_UNSUPPORTED: {\n code: \"AI_TRACE_FORMAT_UNSUPPORTED\",\n summary: \"No trace reader could detect the input format.\",\n remediation:\n \"Pass an AgentInspect JSONL file via openTraceFile, or set options.format to a registered reader.\",\n relatedCodes: [\"unsupported_format\"],\n },\n AI_TRACE_FORMAT_AMBIGUOUS: {\n code: \"AI_TRACE_FORMAT_AMBIGUOUS\",\n summary: \"Multiple trace readers matched the input with equal confidence.\",\n remediation: \"Set options.format explicitly to disambiguate the reader.\",\n relatedCodes: [\"ambiguous_format\"],\n },\n AI_TRACE_FACTS_INPUT_NOT_NORMALIZED: {\n code: \"AI_TRACE_FACTS_INPUT_NOT_NORMALIZED\",\n summary: \"TraceFacts requires TraceReadResult or PersistedInspectEvent[].\",\n remediation: \"Use openTraceFile() to normalize a JSONL trace first.\",\n },\n AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED: {\n code: \"AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED\",\n summary: \"Multiple runs are available; select a run before executing checks.\",\n remediation: \"Pass options.runId or TraceCheckInput.selectedRun.\",\n relatedCodes: [\"AI_CHECK_RUN_SELECTION_REQUIRED\"],\n },\n AI_TRACE_RELATIONSHIP_SELF_PARENT: {\n code: \"AI_TRACE_RELATIONSHIP_SELF_PARENT\",\n summary: \"A parentId equals its own event/step id.\",\n remediation:\n \"Reject at capture (AI_LANGGRAPH_SELF_PARENT_REJECTED) or drop via logical projection; do not invent replacement parents.\",\n relatedCodes: [\n \"AI_LANGGRAPH_SELF_PARENT_REJECTED\",\n \"AI_LOGICAL_SELF_PARENT_REMOVED\",\n ],\n },\n AI_TRACE_RELATIONSHIP_CYCLE: {\n code: \"AI_TRACE_RELATIONSHIP_CYCLE\",\n summary: \"Trace contains a parentId cycle.\",\n remediation:\n \"Use visibility-first tree linking for legacy fixtures; prefer acyclic capture for new adapter output.\",\n relatedCodes: [\"structure.cycle\"],\n },\n AI_TRACE_CONTRACT_INPUT_INVALID: {\n code: \"AI_TRACE_CONTRACT_INPUT_INVALID\",\n summary:\n \"evaluateTraceContract expects ({ read }, contract) or use evaluateTraceContractRead(read, contract).\",\n remediation:\n \"Pass TraceCheckInput as the first argument: evaluateTraceContract({ read }, contract).\",\n relatedCodes: [\"AI_CHECK_INVALID_ARGUMENTS\"],\n },\n AI_INSPECT_RUN_UNSUPPORTED_OPTION: {\n code: \"AI_INSPECT_RUN_UNSUPPORTED_OPTION\",\n summary: 'inspectRun does not accept a \"writer\" option.',\n remediation:\n \"Use createInspector({ writer }) then inspector.run(...). inspectRun persists via the global JSONL path (schema 0.1).\",\n },\n});\n\n/**\n * Format `CODE: summary Remediation: …` for thrown errors and diagnostics.\n */\nexport function formatProgrammaticDiagnostic(\n code: ProgrammaticDiagnosticCode,\n detail?: string,\n): string {\n const spec = PROGRAMMATIC_DIAGNOSTIC_SPECS[code];\n const summary = detail?.trim() ? detail.trim() : spec.summary;\n return `${code}: ${summary} Remediation: ${spec.remediation}`;\n}\n"]}
@@ -2,6 +2,7 @@ import { normalizeObserveOutcomeInput } from './chunk-N5PZAI6Q.mjs';
2
2
  import { source_default } from './chunk-BT7CATSD.mjs';
3
3
  import { resolveTraceSafetyOptions, preparePersistedInspectEventForWrite, initializeTraceFile, writeTraceEvent, prepareTraceEventForDisk } from './chunk-DK3OW6UI.mjs';
4
4
  import { extractCorrelationMetadata, buildRunStartedMetadata } from './chunk-S4YWKV4G.mjs';
5
+ import { formatProgrammaticDiagnostic } from './chunk-S6LQBLX5.mjs';
5
6
  import { truncateName, formatDuration, getDefaultTraceDir, createRunId, formatError, getTraceFilePath, createStepId, warn } from './chunk-7DHSWDKB.mjs';
6
7
  import { AsyncLocalStorage } from 'async_hooks';
7
8
  import { readdir, stat } from 'fs/promises';
@@ -538,7 +539,18 @@ function createInspector(options = {}) {
538
539
  };
539
540
  return inspector;
540
541
  }
541
- var storage = new AsyncLocalStorage();
542
+ var GLOBAL_CONTEXT_ALS_KEY = "agent-inspect:execution-context-als:v1";
543
+ function getSharedContextStorage() {
544
+ const host = globalThis;
545
+ const existing = host[GLOBAL_CONTEXT_ALS_KEY];
546
+ if (existing instanceof AsyncLocalStorage) {
547
+ return existing;
548
+ }
549
+ const created = new AsyncLocalStorage();
550
+ host[GLOBAL_CONTEXT_ALS_KEY] = created;
551
+ return created;
552
+ }
553
+ var storage = getSharedContextStorage();
542
554
  function toPublicContext(ctx) {
543
555
  return {
544
556
  runId: ctx.runId,
@@ -848,6 +860,18 @@ var TraceDirectory = class {
848
860
  };
849
861
 
850
862
  // packages/core/src/inspect-run.ts
863
+ var INSPECT_RUN_UNSUPPORTED_OPTION_KEYS = ["writer"];
864
+ function warnUnsupportedInspectRunOptions(options) {
865
+ if (typeof options !== "object" || options === null || Array.isArray(options)) {
866
+ return;
867
+ }
868
+ const record = options;
869
+ for (const key of INSPECT_RUN_UNSUPPORTED_OPTION_KEYS) {
870
+ if (Object.prototype.hasOwnProperty.call(record, key) && record[key] !== void 0) {
871
+ warn(formatProgrammaticDiagnostic("AI_INSPECT_RUN_UNSUPPORTED_OPTION"));
872
+ }
873
+ }
874
+ }
851
875
  function normalizeRunName(name) {
852
876
  if (typeof name !== "string" || name.trim() === "") {
853
877
  return "unnamed-run";
@@ -865,6 +889,7 @@ async function inspectRun(name, fn, options) {
865
889
  if (typeof fn !== "function") {
866
890
  throw new TypeError("inspectRun requires `fn` to be a function");
867
891
  }
892
+ warnUnsupportedInspectRunOptions(options);
868
893
  if (options?.enabled === false) {
869
894
  return Promise.resolve(fn());
870
895
  }
@@ -978,5 +1003,5 @@ async function maybeInspectRun(name, fn, options) {
978
1003
  }
979
1004
 
980
1005
  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
1006
+ //# sourceMappingURL=chunk-SSG3ICI4.mjs.map
1007
+ //# sourceMappingURL=chunk-SSG3ICI4.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-SSG3ICI4.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 { formatProgrammaticDiagnostic } from \"./diagnostics/programmatic.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\n/** Options that belong on createInspector, not inspectRun. */\nconst INSPECT_RUN_UNSUPPORTED_OPTION_KEYS = [\"writer\"] as const;\n\nfunction warnUnsupportedInspectRunOptions(options: unknown): void {\n if (typeof options !== \"object\" || options === null || Array.isArray(options)) {\n return;\n }\n const record = options as Record<string, unknown>;\n for (const key of INSPECT_RUN_UNSUPPORTED_OPTION_KEYS) {\n if (Object.prototype.hasOwnProperty.call(record, key) && record[key] !== undefined) {\n // Do not log the option value (may contain sensitive writer state).\n warn(formatProgrammaticDiagnostic(\"AI_INSPECT_RUN_UNSUPPORTED_OPTION\"));\n }\n }\n}\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 warnUnsupportedInspectRunOptions(options);\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"]}
@@ -1942,7 +1942,18 @@ function createInspector(options = {}) {
1942
1942
  };
1943
1943
  return inspector;
1944
1944
  }
1945
- var storage = new async_hooks.AsyncLocalStorage();
1945
+ var GLOBAL_CONTEXT_ALS_KEY = "agent-inspect:execution-context-als:v1";
1946
+ function getSharedContextStorage() {
1947
+ const host = globalThis;
1948
+ const existing = host[GLOBAL_CONTEXT_ALS_KEY];
1949
+ if (existing instanceof async_hooks.AsyncLocalStorage) {
1950
+ return existing;
1951
+ }
1952
+ const created = new async_hooks.AsyncLocalStorage();
1953
+ host[GLOBAL_CONTEXT_ALS_KEY] = created;
1954
+ return created;
1955
+ }
1956
+ var storage = getSharedContextStorage();
1946
1957
  function toPublicContext(ctx) {
1947
1958
  return {
1948
1959
  runId: ctx.runId,
@@ -2061,6 +2072,70 @@ function runWithStepContext(stepId, fn) {
2061
2072
  });
2062
2073
  }
2063
2074
 
2075
+ // packages/core/src/diagnostics/programmatic.ts
2076
+ var PROGRAMMATIC_DIAGNOSTIC_SPECS = Object.freeze({
2077
+ AI_TRACE_INPUT_INVALID: {
2078
+ code: "AI_TRACE_INPUT_INVALID",
2079
+ summary: 'Expected { type: "file", path }, { type: "directory", path }, { type: "string", content }, { type: "buffer", content }, or { type: "stdin" }.',
2080
+ remediation: "For a file path, use openTraceFile(path).",
2081
+ relatedCodes: ["invalid_input"]
2082
+ },
2083
+ AI_TRACE_FORMAT_UNSUPPORTED: {
2084
+ code: "AI_TRACE_FORMAT_UNSUPPORTED",
2085
+ summary: "No trace reader could detect the input format.",
2086
+ remediation: "Pass an AgentInspect JSONL file via openTraceFile, or set options.format to a registered reader.",
2087
+ relatedCodes: ["unsupported_format"]
2088
+ },
2089
+ AI_TRACE_FORMAT_AMBIGUOUS: {
2090
+ code: "AI_TRACE_FORMAT_AMBIGUOUS",
2091
+ summary: "Multiple trace readers matched the input with equal confidence.",
2092
+ remediation: "Set options.format explicitly to disambiguate the reader.",
2093
+ relatedCodes: ["ambiguous_format"]
2094
+ },
2095
+ AI_TRACE_FACTS_INPUT_NOT_NORMALIZED: {
2096
+ code: "AI_TRACE_FACTS_INPUT_NOT_NORMALIZED",
2097
+ summary: "TraceFacts requires TraceReadResult or PersistedInspectEvent[].",
2098
+ remediation: "Use openTraceFile() to normalize a JSONL trace first."
2099
+ },
2100
+ AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED: {
2101
+ code: "AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED",
2102
+ summary: "Multiple runs are available; select a run before executing checks.",
2103
+ remediation: "Pass options.runId or TraceCheckInput.selectedRun.",
2104
+ relatedCodes: ["AI_CHECK_RUN_SELECTION_REQUIRED"]
2105
+ },
2106
+ AI_TRACE_RELATIONSHIP_SELF_PARENT: {
2107
+ code: "AI_TRACE_RELATIONSHIP_SELF_PARENT",
2108
+ summary: "A parentId equals its own event/step id.",
2109
+ remediation: "Reject at capture (AI_LANGGRAPH_SELF_PARENT_REJECTED) or drop via logical projection; do not invent replacement parents.",
2110
+ relatedCodes: [
2111
+ "AI_LANGGRAPH_SELF_PARENT_REJECTED",
2112
+ "AI_LOGICAL_SELF_PARENT_REMOVED"
2113
+ ]
2114
+ },
2115
+ AI_TRACE_RELATIONSHIP_CYCLE: {
2116
+ code: "AI_TRACE_RELATIONSHIP_CYCLE",
2117
+ summary: "Trace contains a parentId cycle.",
2118
+ remediation: "Use visibility-first tree linking for legacy fixtures; prefer acyclic capture for new adapter output.",
2119
+ relatedCodes: ["structure.cycle"]
2120
+ },
2121
+ AI_TRACE_CONTRACT_INPUT_INVALID: {
2122
+ code: "AI_TRACE_CONTRACT_INPUT_INVALID",
2123
+ summary: "evaluateTraceContract expects ({ read }, contract) or use evaluateTraceContractRead(read, contract).",
2124
+ remediation: "Pass TraceCheckInput as the first argument: evaluateTraceContract({ read }, contract).",
2125
+ relatedCodes: ["AI_CHECK_INVALID_ARGUMENTS"]
2126
+ },
2127
+ AI_INSPECT_RUN_UNSUPPORTED_OPTION: {
2128
+ code: "AI_INSPECT_RUN_UNSUPPORTED_OPTION",
2129
+ summary: 'inspectRun does not accept a "writer" option.',
2130
+ remediation: "Use createInspector({ writer }) then inspector.run(...). inspectRun persists via the global JSONL path (schema 0.1)."
2131
+ }
2132
+ });
2133
+ function formatProgrammaticDiagnostic(code, detail) {
2134
+ const spec = PROGRAMMATIC_DIAGNOSTIC_SPECS[code];
2135
+ const summary = spec.summary;
2136
+ return `${code}: ${summary} Remediation: ${spec.remediation}`;
2137
+ }
2138
+
2064
2139
  // node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
2065
2140
  var ANSI_BACKGROUND_OFFSET = 10;
2066
2141
  var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
@@ -2691,6 +2766,18 @@ function resolveTraceDir(options = {}) {
2691
2766
  }
2692
2767
 
2693
2768
  // packages/core/src/inspect-run.ts
2769
+ var INSPECT_RUN_UNSUPPORTED_OPTION_KEYS = ["writer"];
2770
+ function warnUnsupportedInspectRunOptions(options) {
2771
+ if (typeof options !== "object" || options === null || Array.isArray(options)) {
2772
+ return;
2773
+ }
2774
+ const record = options;
2775
+ for (const key of INSPECT_RUN_UNSUPPORTED_OPTION_KEYS) {
2776
+ if (Object.prototype.hasOwnProperty.call(record, key) && record[key] !== void 0) {
2777
+ warn(formatProgrammaticDiagnostic("AI_INSPECT_RUN_UNSUPPORTED_OPTION"));
2778
+ }
2779
+ }
2780
+ }
2694
2781
  function normalizeRunName(name) {
2695
2782
  if (typeof name !== "string" || name.trim() === "") {
2696
2783
  return "unnamed-run";
@@ -2708,6 +2795,7 @@ async function inspectRun(name, fn, options) {
2708
2795
  if (typeof fn !== "function") {
2709
2796
  throw new TypeError("inspectRun requires `fn` to be a function");
2710
2797
  }
2798
+ warnUnsupportedInspectRunOptions(options);
2711
2799
  if (options?.enabled === false) {
2712
2800
  return Promise.resolve(fn());
2713
2801
  }