agent-inspect 1.8.0 → 2.0.0

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 (100) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +146 -23
  3. package/docs/ADAPTER-CONFORMANCE.md +1 -1
  4. package/docs/ADAPTERS.md +41 -6
  5. package/docs/API.md +123 -36
  6. package/docs/CLI.md +75 -11
  7. package/docs/EXPORTS.md +1 -1
  8. package/docs/GETTING-STARTED.md +72 -16
  9. package/docs/KNOWN-ISSUES.md +8 -3
  10. package/docs/LIMITATIONS.md +6 -6
  11. package/docs/LOG-TO-TREE-QUICKSTART.md +1 -2
  12. package/docs/MIGRATION.md +67 -0
  13. package/docs/SCHEMA.md +29 -12
  14. package/package.json +2 -2
  15. package/packages/cli/dist/index.cjs +7604 -7660
  16. package/packages/cli/dist/index.cjs.map +1 -1
  17. package/packages/cli/dist/index.mjs +7604 -7660
  18. package/packages/cli/dist/index.mjs.map +1 -1
  19. package/packages/core/dist/advanced.cjs +2047 -26
  20. package/packages/core/dist/advanced.cjs.map +1 -1
  21. package/packages/core/dist/advanced.d.cts +346 -196
  22. package/packages/core/dist/advanced.d.ts +346 -196
  23. package/packages/core/dist/advanced.mjs +628 -5
  24. package/packages/core/dist/advanced.mjs.map +1 -1
  25. package/packages/core/dist/checks.d.cts +1 -1
  26. package/packages/core/dist/checks.d.ts +1 -1
  27. package/packages/core/dist/chunk-2ZXEMWGK.mjs +549 -0
  28. package/packages/core/dist/chunk-2ZXEMWGK.mjs.map +1 -0
  29. package/packages/core/dist/{chunk-57S5D6HR.mjs → chunk-4JVGFNQH.mjs} +50 -6
  30. package/packages/core/dist/chunk-4JVGFNQH.mjs.map +1 -0
  31. package/packages/core/dist/{chunk-6QSLZCBJ.mjs → chunk-A4V2H3YU.mjs} +329 -163
  32. package/packages/core/dist/chunk-A4V2H3YU.mjs.map +1 -0
  33. package/packages/core/dist/{chunk-74XZ6N7Q.mjs → chunk-IZBJAZGF.mjs} +12 -4
  34. package/packages/core/dist/chunk-IZBJAZGF.mjs.map +1 -0
  35. package/packages/core/dist/{chunk-VTIB5MDK.mjs → chunk-NQZPZ2FN.mjs} +15 -10
  36. package/packages/core/dist/chunk-NQZPZ2FN.mjs.map +1 -0
  37. package/packages/core/dist/{chunk-TZISEVLQ.mjs → chunk-XUNJMAPD.mjs} +3 -3
  38. package/packages/core/dist/{chunk-TZISEVLQ.mjs.map → chunk-XUNJMAPD.mjs.map} +1 -1
  39. package/packages/core/dist/context-CSKnzpXR.d.cts +177 -0
  40. package/packages/core/dist/context-yv2VSDQF.d.ts +177 -0
  41. package/packages/core/dist/diff.d.cts +2 -2
  42. package/packages/core/dist/diff.d.ts +2 -2
  43. package/packages/core/dist/diff.mjs +473 -3
  44. package/packages/core/dist/diff.mjs.map +1 -1
  45. package/packages/core/dist/exporters.cjs +691 -0
  46. package/packages/core/dist/exporters.cjs.map +1 -1
  47. package/packages/core/dist/exporters.d.cts +24 -3
  48. package/packages/core/dist/exporters.d.ts +24 -3
  49. package/packages/core/dist/exporters.mjs +1113 -3
  50. package/packages/core/dist/exporters.mjs.map +1 -1
  51. package/packages/core/dist/index.cjs +1385 -8022
  52. package/packages/core/dist/index.cjs.map +1 -1
  53. package/packages/core/dist/index.d.cts +8 -313
  54. package/packages/core/dist/index.d.ts +8 -313
  55. package/packages/core/dist/index.mjs +18 -1331
  56. package/packages/core/dist/index.mjs.map +1 -1
  57. package/packages/core/dist/{log-config-DanPV3P9.d.cts → log-config-8aE5Kxtr.d.cts} +1 -1
  58. package/packages/core/dist/{log-config-BPHS4Sds.d.ts → log-config-DVimQJho.d.ts} +1 -1
  59. package/packages/core/dist/logs.d.cts +2 -2
  60. package/packages/core/dist/logs.d.ts +2 -2
  61. package/packages/core/dist/logs.mjs +785 -2
  62. package/packages/core/dist/logs.mjs.map +1 -1
  63. package/packages/core/dist/{persisted-inspect-event-Cw7TeYGr.d.ts → persisted-inspect-event-D-WpXeZX.d.ts} +14 -5
  64. package/packages/core/dist/{persisted-inspect-event-DHPfzUd8.d.cts → persisted-inspect-event-DHcHPUKv.d.cts} +14 -5
  65. package/packages/core/dist/persisted.cjs +11 -1
  66. package/packages/core/dist/persisted.cjs.map +1 -1
  67. package/packages/core/dist/persisted.d.cts +4 -4
  68. package/packages/core/dist/persisted.d.ts +4 -4
  69. package/packages/core/dist/persisted.mjs +150 -3
  70. package/packages/core/dist/persisted.mjs.map +1 -1
  71. package/packages/core/dist/readers.cjs +27 -10
  72. package/packages/core/dist/readers.cjs.map +1 -1
  73. package/packages/core/dist/readers.d.cts +1 -1
  74. package/packages/core/dist/readers.d.ts +1 -1
  75. package/packages/core/dist/readers.mjs +1580 -4
  76. package/packages/core/dist/readers.mjs.map +1 -1
  77. package/packages/core/dist/{types-Ap9uMdx_.d.ts → types-D-Y1kOU-.d.ts} +2 -2
  78. package/packages/core/dist/{types-B2-BU5CS.d.cts → types-DgMN3qow.d.cts} +2 -2
  79. package/packages/core/dist/writers.cjs +49 -3
  80. package/packages/core/dist/writers.cjs.map +1 -1
  81. package/packages/core/dist/writers.d.cts +1 -1
  82. package/packages/core/dist/writers.d.ts +1 -1
  83. package/packages/core/dist/writers.mjs +341 -4
  84. package/packages/core/dist/writers.mjs.map +1 -1
  85. package/packages/core/dist/chunk-57S5D6HR.mjs.map +0 -1
  86. package/packages/core/dist/chunk-6QSLZCBJ.mjs.map +0 -1
  87. package/packages/core/dist/chunk-6SZPTECC.mjs +0 -342
  88. package/packages/core/dist/chunk-6SZPTECC.mjs.map +0 -1
  89. package/packages/core/dist/chunk-74XZ6N7Q.mjs.map +0 -1
  90. package/packages/core/dist/chunk-HR7G62IE.mjs +0 -785
  91. package/packages/core/dist/chunk-HR7G62IE.mjs.map +0 -1
  92. package/packages/core/dist/chunk-TFLPUZ56.mjs +0 -1571
  93. package/packages/core/dist/chunk-TFLPUZ56.mjs.map +0 -1
  94. package/packages/core/dist/chunk-U2BGPESY.mjs +0 -150
  95. package/packages/core/dist/chunk-U2BGPESY.mjs.map +0 -1
  96. package/packages/core/dist/chunk-VTIB5MDK.mjs.map +0 -1
  97. package/packages/core/dist/chunk-Y56BPA3B.mjs +0 -990
  98. package/packages/core/dist/chunk-Y56BPA3B.mjs.map +0 -1
  99. package/packages/core/dist/chunk-YWAOOXLR.mjs +0 -475
  100. package/packages/core/dist/chunk-YWAOOXLR.mjs.map +0 -1
@@ -1,156 +1,12 @@
1
1
  import { source_default } from './chunk-BT7CATSD.mjs';
2
- import { resolveTraceSafetyOptions, preparePersistedInspectEventForWrite } from './chunk-57S5D6HR.mjs';
3
- import { extractCorrelationMetadata } from './chunk-S4YWKV4G.mjs';
4
- import { truncateName, formatDuration, createRunId, getDefaultTraceDir, createStepId } from './chunk-VTIB5MDK.mjs';
2
+ import { resolveTraceSafetyOptions, preparePersistedInspectEventForWrite, initializeTraceFile, writeTraceEvent, prepareTraceEventForDisk } from './chunk-4JVGFNQH.mjs';
3
+ import { extractCorrelationMetadata, buildRunStartedMetadata } from './chunk-S4YWKV4G.mjs';
4
+ import { truncateName, formatDuration, getDefaultTraceDir, createRunId, formatError, getTraceFilePath, createStepId, warn } from './chunk-NQZPZ2FN.mjs';
5
5
  import { AsyncLocalStorage } from 'async_hooks';
6
+ import { readdir, stat } from 'fs/promises';
7
+ import path from 'path';
6
8
 
7
- var storage = new AsyncLocalStorage();
8
- function toPublicContext(ctx) {
9
- return {
10
- runId: ctx.runId,
11
- runName: ctx.runName,
12
- traceDir: ctx.traceDir,
13
- silent: ctx.silent,
14
- metadata: ctx.metadata
15
- };
16
- }
17
9
  function invoke(fn) {
18
- return new Promise((resolve, reject) => {
19
- try {
20
- Promise.resolve(fn()).then(resolve, reject);
21
- } catch (e) {
22
- reject(e);
23
- }
24
- });
25
- }
26
- function getCurrentContext() {
27
- try {
28
- const s = storage.getStore();
29
- if (!s) return void 0;
30
- return toPublicContext(s);
31
- } catch {
32
- return void 0;
33
- }
34
- }
35
- function getCurrentRunId() {
36
- try {
37
- return storage.getStore()?.runId;
38
- } catch {
39
- return void 0;
40
- }
41
- }
42
- function getCurrentCorrelationMetadata() {
43
- try {
44
- return extractCorrelationMetadata(storage.getStore()?.metadata);
45
- } catch {
46
- return void 0;
47
- }
48
- }
49
- function getCurrentRunName() {
50
- try {
51
- return storage.getStore()?.runName;
52
- } catch {
53
- return void 0;
54
- }
55
- }
56
- function getCurrentStepId() {
57
- try {
58
- return storage.getStore()?.currentStepId;
59
- } catch {
60
- return void 0;
61
- }
62
- }
63
- function getParentStepId() {
64
- return getCurrentStepId();
65
- }
66
- function getCurrentDepth() {
67
- try {
68
- const d = storage.getStore()?.currentDepth;
69
- return typeof d === "number" && Number.isFinite(d) ? d : 0;
70
- } catch {
71
- return 0;
72
- }
73
- }
74
- function hasActiveContext() {
75
- try {
76
- return storage.getStore() !== void 0;
77
- } catch {
78
- return false;
79
- }
80
- }
81
- function getTraceDirFromContext() {
82
- try {
83
- return storage.getStore()?.traceDir;
84
- } catch {
85
- return void 0;
86
- }
87
- }
88
- function isSilentContext() {
89
- try {
90
- const s = storage.getStore();
91
- return s ? s.silent : false;
92
- } catch {
93
- return false;
94
- }
95
- }
96
- function getTraceSafetyFromContext() {
97
- try {
98
- return storage.getStore()?.traceSafety;
99
- } catch {
100
- return void 0;
101
- }
102
- }
103
- function runWithContext(context, fn, traceSafety = resolveTraceSafetyOptions()) {
104
- const runtime = {
105
- runId: context.runId,
106
- runName: context.runName,
107
- traceDir: context.traceDir,
108
- silent: context.silent,
109
- metadata: context.metadata,
110
- traceSafety,
111
- currentDepth: 0
112
- };
113
- return new Promise((resolve, reject) => {
114
- storage.run(runtime, () => {
115
- try {
116
- Promise.resolve(fn()).then(resolve, reject);
117
- } catch (e) {
118
- reject(e);
119
- }
120
- });
121
- });
122
- }
123
- function runWithStepContext(stepId, fn) {
124
- let parent;
125
- try {
126
- parent = storage.getStore();
127
- } catch {
128
- parent = void 0;
129
- }
130
- if (!parent) {
131
- return invoke(fn);
132
- }
133
- const derived = {
134
- runId: parent.runId,
135
- runName: parent.runName,
136
- traceDir: parent.traceDir,
137
- silent: parent.silent,
138
- metadata: parent.metadata,
139
- traceSafety: parent.traceSafety,
140
- currentStepId: stepId,
141
- currentDepth: parent.currentDepth + 1
142
- };
143
- return new Promise((resolve, reject) => {
144
- storage.run(derived, () => {
145
- try {
146
- Promise.resolve(fn()).then(resolve, reject);
147
- } catch (e) {
148
- reject(e);
149
- }
150
- });
151
- });
152
- }
153
- function invoke2(fn) {
154
10
  return new Promise((resolve, reject) => {
155
11
  try {
156
12
  Promise.resolve(fn()).then(resolve, reject);
@@ -207,7 +63,7 @@ function createInspectorRuntime(options = {}) {
207
63
  runtimeId,
208
64
  enabled,
209
65
  runWithContext(context, fn) {
210
- if (!enabled) return invoke2(fn);
66
+ if (!enabled) return invoke(fn);
211
67
  const store = {
212
68
  runtimeId,
213
69
  runId: context.runId,
@@ -220,14 +76,14 @@ function createInspectorRuntime(options = {}) {
220
76
  };
221
77
  return new Promise((resolve, reject) => {
222
78
  storage2.run(store, () => {
223
- invoke2(fn).then(resolve, reject);
79
+ invoke(fn).then(resolve, reject);
224
80
  });
225
81
  });
226
82
  },
227
83
  runWithStepContext(stepId, fn) {
228
- if (!enabled) return invoke2(fn);
84
+ if (!enabled) return invoke(fn);
229
85
  const parent = currentStore();
230
- if (!parent) return invoke2(fn);
86
+ if (!parent) return invoke(fn);
231
87
  const store = {
232
88
  runtimeId,
233
89
  runId: parent.runId,
@@ -241,7 +97,7 @@ function createInspectorRuntime(options = {}) {
241
97
  };
242
98
  return new Promise((resolve, reject) => {
243
99
  storage2.run(store, () => {
244
- invoke2(fn).then(resolve, reject);
100
+ invoke(fn).then(resolve, reject);
245
101
  });
246
102
  });
247
103
  },
@@ -311,6 +167,7 @@ function createInspectorRuntime(options = {}) {
311
167
  }
312
168
 
313
169
  // packages/core/src/inspector.ts
170
+ var INSPECTOR_PERSISTED_SCHEMA_VERSION = "1.0";
314
171
  function normalizeName(name, fallback) {
315
172
  if (typeof name !== "string" || name.trim() === "") return fallback;
316
173
  return truncateName(name.trim(), 100);
@@ -427,7 +284,7 @@ function createInspector(options = {}) {
427
284
  },
428
285
  async () => {
429
286
  await write({
430
- schemaVersion: "0.2",
287
+ schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,
431
288
  eventId: `${runId}_started`,
432
289
  runId,
433
290
  kind: "RUN",
@@ -446,7 +303,7 @@ function createInspector(options = {}) {
446
303
  const result = await Promise.resolve(fn());
447
304
  const endedAt = nowIso();
448
305
  await write({
449
- schemaVersion: "0.2",
306
+ schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,
450
307
  eventId: `${runId}_completed`,
451
308
  runId,
452
309
  kind: "RUN",
@@ -464,7 +321,7 @@ function createInspector(options = {}) {
464
321
  } catch (error) {
465
322
  const endedAt = nowIso();
466
323
  await write({
467
- schemaVersion: "0.2",
324
+ schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,
468
325
  eventId: `${runId}_completed`,
469
326
  runId,
470
327
  kind: "RUN",
@@ -504,7 +361,7 @@ function createInspector(options = {}) {
504
361
  ...stepOptions.metadata !== void 0 ? { metadata: stepOptions.metadata } : {}
505
362
  };
506
363
  await write({
507
- schemaVersion: "0.2",
364
+ schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,
508
365
  eventId: `${stepId}_started`,
509
366
  runId: context.runId,
510
367
  ...parentId !== void 0 ? { parentId } : {},
@@ -522,7 +379,7 @@ function createInspector(options = {}) {
522
379
  const result = await Promise.resolve(fn());
523
380
  const endedAt = nowIso();
524
381
  await write({
525
- schemaVersion: "0.2",
382
+ schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,
526
383
  eventId: `${stepId}_completed`,
527
384
  runId: context.runId,
528
385
  kind: stepTypeToKind(stepType),
@@ -544,7 +401,7 @@ function createInspector(options = {}) {
544
401
  } catch (error) {
545
402
  const endedAt = nowIso();
546
403
  await write({
547
- schemaVersion: "0.2",
404
+ schemaVersion: INSPECTOR_PERSISTED_SCHEMA_VERSION,
548
405
  eventId: `${stepId}_completed`,
549
406
  runId: context.runId,
550
407
  kind: stepTypeToKind(stepType),
@@ -608,6 +465,152 @@ function createInspector(options = {}) {
608
465
  };
609
466
  return inspector;
610
467
  }
468
+ var storage = new AsyncLocalStorage();
469
+ function toPublicContext(ctx) {
470
+ return {
471
+ runId: ctx.runId,
472
+ runName: ctx.runName,
473
+ traceDir: ctx.traceDir,
474
+ silent: ctx.silent,
475
+ metadata: ctx.metadata
476
+ };
477
+ }
478
+ function invoke2(fn) {
479
+ return new Promise((resolve, reject) => {
480
+ try {
481
+ Promise.resolve(fn()).then(resolve, reject);
482
+ } catch (e) {
483
+ reject(e);
484
+ }
485
+ });
486
+ }
487
+ function getCurrentContext() {
488
+ try {
489
+ const s = storage.getStore();
490
+ if (!s) return void 0;
491
+ return toPublicContext(s);
492
+ } catch {
493
+ return void 0;
494
+ }
495
+ }
496
+ function getCurrentRunId() {
497
+ try {
498
+ return storage.getStore()?.runId;
499
+ } catch {
500
+ return void 0;
501
+ }
502
+ }
503
+ function getCurrentCorrelationMetadata() {
504
+ try {
505
+ return extractCorrelationMetadata(storage.getStore()?.metadata);
506
+ } catch {
507
+ return void 0;
508
+ }
509
+ }
510
+ function getCurrentRunName() {
511
+ try {
512
+ return storage.getStore()?.runName;
513
+ } catch {
514
+ return void 0;
515
+ }
516
+ }
517
+ function getCurrentStepId() {
518
+ try {
519
+ return storage.getStore()?.currentStepId;
520
+ } catch {
521
+ return void 0;
522
+ }
523
+ }
524
+ function getParentStepId() {
525
+ return getCurrentStepId();
526
+ }
527
+ function getCurrentDepth() {
528
+ try {
529
+ const d = storage.getStore()?.currentDepth;
530
+ return typeof d === "number" && Number.isFinite(d) ? d : 0;
531
+ } catch {
532
+ return 0;
533
+ }
534
+ }
535
+ function hasActiveContext() {
536
+ try {
537
+ return storage.getStore() !== void 0;
538
+ } catch {
539
+ return false;
540
+ }
541
+ }
542
+ function getTraceDirFromContext() {
543
+ try {
544
+ return storage.getStore()?.traceDir;
545
+ } catch {
546
+ return void 0;
547
+ }
548
+ }
549
+ function isSilentContext() {
550
+ try {
551
+ const s = storage.getStore();
552
+ return s ? s.silent : false;
553
+ } catch {
554
+ return false;
555
+ }
556
+ }
557
+ function getTraceSafetyFromContext() {
558
+ try {
559
+ return storage.getStore()?.traceSafety;
560
+ } catch {
561
+ return void 0;
562
+ }
563
+ }
564
+ function runWithContext(context, fn, traceSafety = resolveTraceSafetyOptions()) {
565
+ const runtime = {
566
+ runId: context.runId,
567
+ runName: context.runName,
568
+ traceDir: context.traceDir,
569
+ silent: context.silent,
570
+ metadata: context.metadata,
571
+ traceSafety,
572
+ currentDepth: 0
573
+ };
574
+ return new Promise((resolve, reject) => {
575
+ storage.run(runtime, () => {
576
+ try {
577
+ Promise.resolve(fn()).then(resolve, reject);
578
+ } catch (e) {
579
+ reject(e);
580
+ }
581
+ });
582
+ });
583
+ }
584
+ function runWithStepContext(stepId, fn) {
585
+ let parent;
586
+ try {
587
+ parent = storage.getStore();
588
+ } catch {
589
+ parent = void 0;
590
+ }
591
+ if (!parent) {
592
+ return invoke2(fn);
593
+ }
594
+ const derived = {
595
+ runId: parent.runId,
596
+ runName: parent.runName,
597
+ traceDir: parent.traceDir,
598
+ silent: parent.silent,
599
+ metadata: parent.metadata,
600
+ traceSafety: parent.traceSafety,
601
+ currentStepId: stepId,
602
+ currentDepth: parent.currentDepth + 1
603
+ };
604
+ return new Promise((resolve, reject) => {
605
+ storage.run(derived, () => {
606
+ try {
607
+ Promise.resolve(fn()).then(resolve, reject);
608
+ } catch (e) {
609
+ reject(e);
610
+ }
611
+ });
612
+ });
613
+ }
611
614
 
612
615
  // packages/core/src/terminal.ts
613
616
  var TERMINAL_INDENT = " ";
@@ -737,7 +740,170 @@ function printFailedAt(stepName) {
737
740
  } catch {
738
741
  }
739
742
  }
743
+ function resolveTraceDir(options = {}) {
744
+ if (typeof options.dir === "string" && options.dir.trim() !== "") {
745
+ return options.dir.trim();
746
+ }
747
+ const envDir = process.env.AGENT_INSPECT_TRACE_DIR;
748
+ if (typeof envDir === "string" && envDir.trim() !== "") {
749
+ return envDir.trim();
750
+ }
751
+ return getDefaultTraceDir();
752
+ }
753
+ var TraceDirectory = class {
754
+ #dir;
755
+ constructor(options = {}) {
756
+ this.#dir = resolveTraceDir(options);
757
+ }
758
+ getPath(filename) {
759
+ return filename ? path.join(this.#dir, filename) : this.#dir;
760
+ }
761
+ async list() {
762
+ try {
763
+ const files = await readdir(this.#dir);
764
+ return files.filter((f) => f.endsWith(".jsonl"));
765
+ } catch (e) {
766
+ if (e && typeof e === "object" && "code" in e && e.code === "ENOENT") {
767
+ return [];
768
+ }
769
+ throw e;
770
+ }
771
+ }
772
+ async getFileStats(filename) {
773
+ return await stat(this.getPath(filename));
774
+ }
775
+ };
776
+
777
+ // packages/core/src/inspect-run.ts
778
+ function normalizeRunName(name) {
779
+ if (typeof name !== "string" || name.trim() === "") {
780
+ return "unnamed-run";
781
+ }
782
+ return truncateName(name.trim(), 100);
783
+ }
784
+ async function safeInstrumentation(label, op) {
785
+ try {
786
+ await Promise.resolve(op());
787
+ } catch (e) {
788
+ warn(`inspectRun: ${label}`, e);
789
+ }
790
+ }
791
+ async function inspectRun(name, fn, options) {
792
+ if (typeof fn !== "function") {
793
+ throw new TypeError("inspectRun requires `fn` to be a function");
794
+ }
795
+ if (options?.enabled === false) {
796
+ return Promise.resolve(fn());
797
+ }
798
+ const runName = normalizeRunName(name);
799
+ const runId = createRunId();
800
+ const traceDir = resolveTraceDir({ dir: options?.traceDir });
801
+ const traceSafety = resolveTraceSafetyOptions(options);
802
+ const runMetadata = buildRunStartedMetadata(options);
803
+ const context = {
804
+ runId,
805
+ runName,
806
+ traceDir,
807
+ silent: options?.silent ?? false,
808
+ metadata: runMetadata
809
+ };
810
+ return runWithContext(context, async () => {
811
+ const startTime = Date.now();
812
+ let traceFilePath;
813
+ await safeInstrumentation("initializeTraceFile", async () => {
814
+ traceFilePath = await initializeTraceFile(runId, traceDir);
815
+ });
816
+ await safeInstrumentation("writeTraceEvent(run_started)", async () => {
817
+ const started = {
818
+ schemaVersion: "0.1",
819
+ event: "run_started",
820
+ timestamp: startTime,
821
+ runId,
822
+ name: runName,
823
+ startTime,
824
+ ...runMetadata !== void 0 ? { metadata: runMetadata } : {}
825
+ };
826
+ await writeTraceEvent(
827
+ prepareTraceEventForDisk(started, traceSafety),
828
+ traceDir
829
+ );
830
+ });
831
+ await safeInstrumentation("printRunStart", () => {
832
+ printRunStart(runId, runName);
833
+ });
834
+ let result;
835
+ try {
836
+ result = await Promise.resolve(fn());
837
+ } catch (userError) {
838
+ const endTime2 = Date.now();
839
+ const durationMs3 = endTime2 - startTime;
840
+ const formatted = formatError(userError);
841
+ const printPath2 = traceFilePath ?? getTraceFilePath(runId, traceDir);
842
+ await safeInstrumentation("writeTraceEvent(run_completed error)", async () => {
843
+ const completed = {
844
+ schemaVersion: "0.1",
845
+ event: "run_completed",
846
+ timestamp: endTime2,
847
+ runId,
848
+ status: "error",
849
+ endTime: endTime2,
850
+ durationMs: durationMs3,
851
+ error: formatted
852
+ };
853
+ await writeTraceEvent(
854
+ prepareTraceEventForDisk(completed, traceSafety),
855
+ traceDir
856
+ );
857
+ });
858
+ await safeInstrumentation("printRunComplete(error)", () => {
859
+ printRunComplete(runName, runId, durationMs3, "error", printPath2);
860
+ });
861
+ throw userError;
862
+ }
863
+ const endTime = Date.now();
864
+ const durationMs2 = endTime - startTime;
865
+ const printPath = traceFilePath ?? getTraceFilePath(runId, traceDir);
866
+ await safeInstrumentation("writeTraceEvent(run_completed success)", async () => {
867
+ const completed = {
868
+ schemaVersion: "0.1",
869
+ event: "run_completed",
870
+ timestamp: endTime,
871
+ runId,
872
+ status: "success",
873
+ endTime,
874
+ durationMs: durationMs2
875
+ };
876
+ await writeTraceEvent(
877
+ prepareTraceEventForDisk(completed, traceSafety),
878
+ traceDir
879
+ );
880
+ });
881
+ await safeInstrumentation("printRunComplete(success)", () => {
882
+ printRunComplete(runName, runId, durationMs2, "success", printPath);
883
+ });
884
+ return result;
885
+ }, traceSafety);
886
+ }
887
+
888
+ // packages/core/src/maybe-inspect-run.ts
889
+ var ENABLED_ENV_VALUES = /* @__PURE__ */ new Set(["1", "true", "yes", "on", "enabled"]);
890
+ function isAgentInspectEnabled(value) {
891
+ if (value === void 0) return false;
892
+ const normalized = value.trim().toLowerCase();
893
+ if (normalized === "") return false;
894
+ return ENABLED_ENV_VALUES.has(normalized);
895
+ }
896
+ async function maybeInspectRun(name, fn, options) {
897
+ if (typeof fn !== "function") {
898
+ throw new TypeError("maybeInspectRun requires `fn` to be a function");
899
+ }
900
+ const enabled = options?.enabled !== void 0 ? options.enabled : isAgentInspectEnabled(process.env.AGENT_INSPECT);
901
+ if (!enabled) {
902
+ return Promise.resolve(fn());
903
+ }
904
+ return inspectRun(name, fn, options);
905
+ }
740
906
 
741
- export { MAX_TERMINAL_DEPTH, MAX_TERMINAL_NAME_LENGTH, TERMINAL_INDENT, createInspector, createInspectorRuntime, formatTerminalName, getCurrentContext, getCurrentCorrelationMetadata, getCurrentDepth, getCurrentRunId, getCurrentRunName, getCurrentStepId, getIndent, getParentStepId, getTraceDirFromContext, getTraceSafetyFromContext, hasActiveContext, isSilentContext, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, runWithContext, runWithStepContext };
742
- //# sourceMappingURL=chunk-6QSLZCBJ.mjs.map
743
- //# sourceMappingURL=chunk-6QSLZCBJ.mjs.map
907
+ 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 };
908
+ //# sourceMappingURL=chunk-A4V2H3YU.mjs.map
909
+ //# sourceMappingURL=chunk-A4V2H3YU.mjs.map