agent-inspect 6.7.3 → 6.7.4

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 (37) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +1 -1
  3. package/packages/cli/dist/{chunk-EMYDJREA.mjs → chunk-FVEQ7JFF.mjs} +227 -201
  4. package/packages/cli/dist/chunk-FVEQ7JFF.mjs.map +1 -0
  5. package/packages/cli/dist/index.cjs +247 -209
  6. package/packages/cli/dist/index.cjs.map +1 -1
  7. package/packages/cli/dist/index.mjs +16 -5
  8. package/packages/cli/dist/index.mjs.map +1 -1
  9. package/packages/cli/dist/{src-IPJNFV37.mjs → src-I5NA7BLK.mjs} +3 -3
  10. package/packages/cli/dist/{src-IPJNFV37.mjs.map → src-I5NA7BLK.mjs.map} +1 -1
  11. package/packages/core/dist/advanced.cjs +225 -199
  12. package/packages/core/dist/advanced.cjs.map +1 -1
  13. package/packages/core/dist/advanced.mjs +26 -241
  14. package/packages/core/dist/advanced.mjs.map +1 -1
  15. package/packages/core/dist/{chunk-X2FLDF7M.mjs → chunk-CTA6XNDP.mjs} +3 -3
  16. package/packages/core/dist/{chunk-X2FLDF7M.mjs.map → chunk-CTA6XNDP.mjs.map} +1 -1
  17. package/packages/core/dist/{chunk-3USJVBLA.mjs → chunk-KDDU2R5P.mjs} +236 -5
  18. package/packages/core/dist/chunk-KDDU2R5P.mjs.map +1 -0
  19. package/packages/core/dist/{chunk-E5F2LQCX.mjs → chunk-T5MASTIW.mjs} +15 -4
  20. package/packages/core/dist/chunk-T5MASTIW.mjs.map +1 -0
  21. package/packages/core/dist/{chunk-KNYL56KZ.mjs → chunk-UOPVGCOB.mjs} +3 -3
  22. package/packages/core/dist/{chunk-KNYL56KZ.mjs.map → chunk-UOPVGCOB.mjs.map} +1 -1
  23. package/packages/core/dist/exporters.cjs +136 -129
  24. package/packages/core/dist/exporters.cjs.map +1 -1
  25. package/packages/core/dist/exporters.mjs +1 -1
  26. package/packages/core/dist/logs.cjs +13 -2
  27. package/packages/core/dist/logs.cjs.map +1 -1
  28. package/packages/core/dist/logs.mjs +2 -2
  29. package/packages/core/dist/persisted.cjs +13 -2
  30. package/packages/core/dist/persisted.cjs.map +1 -1
  31. package/packages/core/dist/persisted.mjs +3 -3
  32. package/packages/core/dist/readers.cjs +13 -2
  33. package/packages/core/dist/readers.cjs.map +1 -1
  34. package/packages/core/dist/readers.mjs +3 -3
  35. package/packages/cli/dist/chunk-EMYDJREA.mjs.map +0 -1
  36. package/packages/core/dist/chunk-3USJVBLA.mjs.map +0 -1
  37. package/packages/core/dist/chunk-E5F2LQCX.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-EQVXDGGU.mjs';
2
2
  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, isAgentInspectEnabled, isSilentContext, maybeInspectRun, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, resolveTraceDir, runWithContext, runWithStepContext } from './chunk-ZWA5RWMV.mjs';
3
- import { buildRunSummary, extractMetadata } from './chunk-3USJVBLA.mjs';
4
- export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, extractMetadata, renderRunWhat, renderTimeline } from './chunk-3USJVBLA.mjs';
3
+ import { filterTraces, extractMetadata, buildRunSummary } from './chunk-KDDU2R5P.mjs';
4
+ export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-KDDU2R5P.mjs';
5
5
  import { parseObservationFilter, extractOutcomesFromTraceEvents, extractOutcomesFromPersistedEvents } from './chunk-VFO76UH3.mjs';
6
6
  export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-VFO76UH3.mjs';
7
7
  import './chunk-BT7CATSD.mjs';
@@ -9,11 +9,11 @@ import { escapeHtml } from './chunk-CAWPF22J.mjs';
9
9
  import { resolveRedactionProfile, readTraceEventsFromFile } from './chunk-ULCGIRTC.mjs';
10
10
  export { DEFAULT_MAX_EVENT_BYTES, DEFAULT_MAX_METADATA_VALUE_LENGTH, DEFAULT_MAX_PREVIEW_LENGTH, getRunIdFromTraceFileName, initializeTraceFile, listTraceFiles, prepareMetadataForDisk, prepareTraceEventForDisk, readTraceEvents, readTraceFile, resolveRedactionProfile, resolveTraceSafetyOptions, serializeEvent, validateEvent, writeTraceEvent } from './chunk-ULCGIRTC.mjs';
11
11
  import { Redactor } from './chunk-VU6O5QAH.mjs';
12
- import { openTrace } from './chunk-X2FLDF7M.mjs';
13
- import './chunk-KNYL56KZ.mjs';
12
+ import { openTrace } from './chunk-CTA6XNDP.mjs';
13
+ import './chunk-UOPVGCOB.mjs';
14
14
  import './chunk-S4YWKV4G.mjs';
15
- import './chunk-E5F2LQCX.mjs';
16
- import { parseDuration, formatDuration, isTraceEvent, getTraceFilePath } from './chunk-WRE4CNPF.mjs';
15
+ import './chunk-T5MASTIW.mjs';
16
+ import { parseDuration, isTraceEvent, getTraceFilePath } from './chunk-WRE4CNPF.mjs';
17
17
  export { DEFAULT_TRACE_DIR_NAME, FALLBACK_TRACE_DIR, MAX_NAME_LENGTH, RUNS_DIR_NAME, createRunId, createStepId, ensureTraceDir, formatDuration, formatError, formatTimestamp, getDefaultTraceDir, getTraceFilePath, isStepStatus, isStepType, isTraceEvent, parseDuration, parseTraceJsonl, truncateName, unknownTraceFormatMessage, warn } from './chunk-WRE4CNPF.mjs';
18
18
  import './chunk-P366CCL2.mjs';
19
19
  import './chunk-7TGZLWEE.mjs';
@@ -23,41 +23,13 @@ import path from 'path';
23
23
  import { access, readFile } from 'fs/promises';
24
24
  import { pathToFileURL } from 'url';
25
25
 
26
- // packages/core/src/trace-filter.ts
27
- function toLower(s) {
28
- return typeof s === "string" ? s.toLowerCase() : "";
29
- }
30
- function filterTraces(traces, options) {
31
- const input = [...traces];
32
- let out = input.filter((t) => {
33
- if (options.status && t.status !== options.status) return false;
34
- if (options.name) {
35
- const q = options.name.toLowerCase();
36
- const hay = `${toLower(t.name)} ${toLower(t.runId)}`;
37
- if (!hay.includes(q)) return false;
38
- }
39
- if (options.since) {
40
- const windowMs = parseDuration(options.since);
41
- const cutoff = Date.now() - windowMs;
42
- const started = typeof t.startedAt === "number" ? t.startedAt : void 0;
43
- const basis = started ?? t.createdAt.getTime();
44
- if (!Number.isFinite(basis) || basis < cutoff) return false;
45
- }
46
- return true;
47
- });
48
- out.sort((a, b) => {
49
- const aTime = (typeof a.startedAt === "number" ? a.startedAt : void 0) ?? a.createdAt.getTime();
50
- const bTime = (typeof b.startedAt === "number" ? b.startedAt : void 0) ?? b.createdAt.getTime();
51
- return bTime - aTime;
52
- });
53
- if (typeof options.limit === "number" && Number.isFinite(options.limit)) {
54
- const n = Math.max(0, Math.floor(options.limit));
55
- out = out.slice(0, n);
56
- }
57
- return out;
58
- }
59
-
60
26
  // packages/core/src/explain.ts
27
+ function toDisplayStatus(status) {
28
+ if (status === "ok") return "success";
29
+ if (status === "error") return "error";
30
+ if (status === "running") return "running";
31
+ return "unknown";
32
+ }
61
33
  function flatten(nodes, out = []) {
62
34
  for (const node of nodes) {
63
35
  out.push({ node, index: out.length + 1 });
@@ -115,7 +87,7 @@ function buildFacts(run, redactor) {
115
87
  const facts = [
116
88
  fact("run.id", "Run id", run.runId, redactor),
117
89
  fact("run.name", "Run name", run.name ?? run.runId, redactor),
118
- fact("run.status", "Run status", run.status ?? "unknown", redactor),
90
+ fact("run.status", "Run status", toDisplayStatus(run.status), redactor),
119
91
  fact("run.totalEvents", "Total events", run.metadata.totalEvents, redactor),
120
92
  fact("run.stepCount", "Top-level step count", run.children.length, redactor),
121
93
  fact("run.nodeCount", "Total node count", nodes.length, redactor),
@@ -191,7 +163,7 @@ function buildLocalExplanation(run, options = {}) {
191
163
  mode,
192
164
  runId: String(redactValue(redactor, "runId", run.runId)),
193
165
  ...run.name !== void 0 ? { name: String(redactValue(redactor, "name", run.name)) } : {},
194
- ...run.status !== void 0 ? { status: run.status } : {},
166
+ ...run.status !== void 0 ? { status: toDisplayStatus(run.status) } : {},
195
167
  redactionProfile,
196
168
  facts,
197
169
  inferences: mode === "dry-run" ? [] : buildInferences(run, facts),
@@ -202,199 +174,6 @@ function buildLocalExplanation(run, options = {}) {
202
174
  };
203
175
  }
204
176
 
205
- // packages/core/src/stats.ts
206
- function percentile(sorted, p) {
207
- if (sorted.length === 0) return void 0;
208
- const idx = Math.min(
209
- sorted.length - 1,
210
- Math.max(0, Math.ceil(p / 100 * sorted.length) - 1)
211
- );
212
- return sorted[idx];
213
- }
214
- async function readRunStartedMetadata(filePath) {
215
- try {
216
- const events = await readTraceEventsFromFile(filePath);
217
- for (const event of events) {
218
- if (event.event !== "run_started") continue;
219
- const rs = event;
220
- if (rs.metadata && typeof rs.metadata === "object") {
221
- return rs.metadata;
222
- }
223
- return void 0;
224
- }
225
- } catch {
226
- }
227
- return void 0;
228
- }
229
- function metaMatchesCorrelation(metadata, correlationId, groupId) {
230
- if (correlationId) {
231
- const v = metadata?.correlationId;
232
- if (typeof v !== "string" || v !== correlationId) return false;
233
- }
234
- if (groupId) {
235
- const v = metadata?.groupId;
236
- if (typeof v !== "string" || v !== groupId) return false;
237
- }
238
- return true;
239
- }
240
- async function buildTraceStats(metas, options) {
241
- let filtered = filterTraces(metas, { since: options.since });
242
- if (options.correlationId || options.groupId) {
243
- const next = [];
244
- for (const m of filtered) {
245
- const md = await readRunStartedMetadata(m.filePath);
246
- if (metaMatchesCorrelation(md, options.correlationId, options.groupId)) {
247
- next.push(m);
248
- }
249
- }
250
- filtered = next;
251
- }
252
- let successCount = 0;
253
- let errorCount = 0;
254
- let runningCount = 0;
255
- let unknownCount = 0;
256
- const durations = [];
257
- let totalSteps = 0;
258
- let totalLlmSteps = 0;
259
- let totalToolSteps = 0;
260
- let totalErrorSteps = 0;
261
- const slowestRuns = [];
262
- const slowestSteps = [];
263
- for (const m of filtered) {
264
- if (m.status === "success") successCount += 1;
265
- else if (m.status === "error") errorCount += 1;
266
- else if (m.status === "running") runningCount += 1;
267
- else unknownCount += 1;
268
- if (typeof m.durationMs === "number" && Number.isFinite(m.durationMs) && m.durationMs >= 0) {
269
- durations.push(m.durationMs);
270
- slowestRuns.push({
271
- runId: m.runId,
272
- name: m.name,
273
- durationMs: m.durationMs,
274
- status: m.status
275
- });
276
- }
277
- try {
278
- const events = await readTraceEventsFromFile(m.filePath);
279
- if (events.length === 0) continue;
280
- const summary = buildRunSummary(events);
281
- totalSteps += summary.totalSteps;
282
- totalLlmSteps += summary.llmSteps;
283
- totalToolSteps += summary.toolSteps;
284
- totalErrorSteps += summary.errorSteps;
285
- const steps = collectCompletedSteps(events, m.runId);
286
- for (const s of steps) {
287
- slowestSteps.push(s);
288
- }
289
- } catch {
290
- }
291
- }
292
- slowestRuns.sort((a, b) => (b.durationMs ?? 0) - (a.durationMs ?? 0));
293
- slowestSteps.sort((a, b) => b.durationMs - a.durationMs);
294
- const runLimit = options.slowRunLimit ?? 5;
295
- const stepLimit = options.slowStepLimit ?? 5;
296
- const sortedDur = [...durations].sort((a, b) => a - b);
297
- const totalRuns = filtered.length;
298
- const errorRate = totalRuns > 0 ? errorCount / totalRuns : 0;
299
- const sumDur = durations.reduce((a, b) => a + b, 0);
300
- return {
301
- traceDir: options.traceDir,
302
- ...options.since ? { since: options.since } : {},
303
- ...options.correlationId ? { correlationId: options.correlationId } : {},
304
- ...options.groupId ? { groupId: options.groupId } : {},
305
- totalRuns,
306
- successCount,
307
- errorCount,
308
- runningCount,
309
- unknownCount,
310
- errorRate,
311
- duration: {
312
- ...sortedDur.length > 0 ? {
313
- minMs: sortedDur[0],
314
- maxMs: sortedDur[sortedDur.length - 1],
315
- avgMs: sumDur / sortedDur.length,
316
- p50Ms: percentile(sortedDur, 50),
317
- p95Ms: percentile(sortedDur, 95)
318
- } : {}
319
- },
320
- totalSteps,
321
- avgStepsPerRun: totalRuns > 0 ? totalSteps / totalRuns : 0,
322
- totalLlmSteps,
323
- totalToolSteps,
324
- totalErrorSteps,
325
- slowestRuns: slowestRuns.slice(0, runLimit),
326
- slowestSteps: slowestSteps.slice(0, stepLimit)
327
- };
328
- }
329
- function collectCompletedSteps(events, runId) {
330
- const started = /* @__PURE__ */ new Map();
331
- const out = [];
332
- for (const e of events) {
333
- if (e.event === "step_started") {
334
- const s = e;
335
- started.set(s.stepId, { name: s.name, type: s.type });
336
- }
337
- if (e.event === "step_completed") {
338
- const c = e;
339
- if (c.status !== "success" && c.status !== "error") continue;
340
- if (typeof c.durationMs !== "number" || !Number.isFinite(c.durationMs)) {
341
- continue;
342
- }
343
- const meta = started.get(c.stepId);
344
- out.push({
345
- runId,
346
- stepName: meta?.name ?? c.stepId,
347
- stepType: meta?.type ?? "logic",
348
- durationMs: c.durationMs
349
- });
350
- }
351
- }
352
- return out;
353
- }
354
- function renderTraceStats(stats) {
355
- const lines = [];
356
- lines.push("Trace stats (local)");
357
- lines.push(`Directory: ${stats.traceDir}`);
358
- if (stats.since) lines.push(`Since: ${stats.since}`);
359
- if (stats.correlationId) lines.push(`Correlation ID: ${stats.correlationId}`);
360
- if (stats.groupId) lines.push(`Group ID: ${stats.groupId}`);
361
- lines.push("");
362
- lines.push(`Runs: ${stats.totalRuns}`);
363
- lines.push(
364
- ` success: ${stats.successCount} error: ${stats.errorCount} running: ${stats.runningCount} unknown: ${stats.unknownCount}`
365
- );
366
- lines.push(`Error rate: ${(stats.errorRate * 100).toFixed(1)}%`);
367
- if (stats.duration.avgMs !== void 0) {
368
- lines.push(
369
- `Duration: min ${formatDuration(stats.duration.minMs ?? 0)} | avg ${formatDuration(stats.duration.avgMs)} | p50 ${formatDuration(stats.duration.p50Ms ?? 0)} | p95 ${formatDuration(stats.duration.p95Ms ?? 0)} | max ${formatDuration(stats.duration.maxMs ?? 0)}`
370
- );
371
- }
372
- lines.push("");
373
- lines.push(`Steps: ${stats.totalSteps} (avg ${stats.avgStepsPerRun.toFixed(1)} per run)`);
374
- lines.push(
375
- ` LLM: ${stats.totalLlmSteps} tool: ${stats.totalToolSteps} errors: ${stats.totalErrorSteps}`
376
- );
377
- if (stats.slowestRuns.length > 0) {
378
- lines.push("");
379
- lines.push("Slowest runs:");
380
- for (const r of stats.slowestRuns) {
381
- lines.push(
382
- ` ${r.runId} | ${r.name ?? "-"} | ${formatDuration(r.durationMs ?? 0)} | ${r.status}`
383
- );
384
- }
385
- }
386
- if (stats.slowestSteps.length > 0) {
387
- lines.push("");
388
- lines.push("Slowest steps:");
389
- for (const s of stats.slowestSteps) {
390
- lines.push(
391
- ` ${s.runId} | ${s.stepType}:${s.stepName} | ${formatDuration(s.durationMs)}`
392
- );
393
- }
394
- }
395
- return lines.join("\n");
396
- }
397
-
398
177
  // packages/core/src/search.ts
399
178
  function parseDurationFilter(expr) {
400
179
  const raw = expr.trim();
@@ -461,6 +240,12 @@ async function searchTraces(metas, options) {
461
240
  ...sessionLabel ? { sessionId: sessionLabel } : {}
462
241
  });
463
242
  }
243
+ results.sort((a, b) => {
244
+ const ta = a.timestamp ?? 0;
245
+ const tb = b.timestamp ?? 0;
246
+ if (ta !== tb) return tb - ta;
247
+ return a.runId.localeCompare(b.runId);
248
+ });
464
249
  return results.slice(0, limit);
465
250
  }
466
251
  for (const m of filtered) {
@@ -508,7 +293,7 @@ async function searchTraces(metas, options) {
508
293
  results.sort((a, b) => {
509
294
  const ta = a.timestamp ?? 0;
510
295
  const tb = b.timestamp ?? 0;
511
- if (ta !== tb) return ta - tb;
296
+ if (ta !== tb) return tb - ta;
512
297
  const runCmp = a.runId.localeCompare(b.runId);
513
298
  if (runCmp !== 0) return runCmp;
514
299
  return (a.stepName ?? "").localeCompare(b.stepName ?? "");
@@ -2649,7 +2434,7 @@ async function computeCohortRunMetrics(input) {
2649
2434
  toolOrdering: tools.ordering
2650
2435
  };
2651
2436
  }
2652
- function percentile2(values, p) {
2437
+ function percentile(values, p) {
2653
2438
  if (values.length === 0) return void 0;
2654
2439
  const sorted = [...values].sort((a, b) => a - b);
2655
2440
  const idx = Math.min(
@@ -2703,7 +2488,7 @@ function aggregateCohortMetrics(runs, groupKey, cohortLabel) {
2703
2488
  runCount: runs.length,
2704
2489
  errorRate: runs.length > 0 ? errors / runs.length : 0,
2705
2490
  avgDurationMs: durations.length > 0 ? durations.reduce((sum, value) => sum + value, 0) / durations.length : void 0,
2706
- p95DurationMs: percentile2(durations, 95),
2491
+ p95DurationMs: percentile(durations, 95),
2707
2492
  avgLlmCallCount: runs.length > 0 ? runs.reduce((sum, run) => sum + run.llmCallCount, 0) / runs.length : 0,
2708
2493
  avgTokenUsage: tokenValues.length > 0 ? tokenValues.reduce((sum, value) => sum + value, 0) / tokenValues.length : void 0,
2709
2494
  avgRetryCount: runs.length > 0 ? runs.reduce((sum, run) => sum + run.retryCount, 0) / runs.length : 0,
@@ -2929,7 +2714,7 @@ function parseGateNumber(value, label, options = {}) {
2929
2714
  }
2930
2715
 
2931
2716
  // packages/core/src/gate/evaluate.ts
2932
- function percentile3(values, p) {
2717
+ function percentile2(values, p) {
2933
2718
  if (values.length === 0) return void 0;
2934
2719
  const sorted = [...values].sort((a, b) => a - b);
2935
2720
  const idx = Math.min(
@@ -3001,7 +2786,7 @@ async function evaluateGateThresholds(runs, options) {
3001
2786
  }
3002
2787
  if (options.maxP95DurationMs !== void 0) {
3003
2788
  const durations = runMetrics.map((run) => run.durationMs).filter((value) => typeof value === "number");
3004
- const actual = percentile3(durations, 95);
2789
+ const actual = percentile2(durations, 95);
3005
2790
  const ok = actual !== void 0 && actual <= options.maxP95DurationMs;
3006
2791
  checks.push({
3007
2792
  id: "maxP95Duration",
@@ -3313,6 +3098,6 @@ function renderGateReport(result, options = {}) {
3313
3098
  return renderGateSummaryMarkdown(result);
3314
3099
  }
3315
3100
 
3316
- export { COHORT_METRIC_IDS, DEFAULT_SUITE_ARTIFACTS_DIR, DEFAULT_SUITE_CONFIG_NAMES, SESSION_WORKFLOW_KEYS, SUITE_TEMPLATE_IDS, aggregateBundleSafeStatus, aggregateSessionCheckResults, analyzeCohort, assertBundlePathContained, buildActivitySummary, buildBundleMetadata, buildBundleSummaryMarkdown, buildLocalExplanation, buildPlaceholderArtifact, buildSessionIndex, buildTraceStats, bundleFailsOnSafety, bundleRunAssetRelativePath, compareCohortAggregates, defaultBundleOutputPath, defaultSuiteConfigTemplate, deriveSessionStatus, enrichSessionRunRecord, enrichSessionSummary, extractSessionWorkflowMetadata, filterMetasBySessionScope, filterTraces, gateHasThresholds, getSuiteTemplate, groupSessionCohorts, isAgentInspectTrace, listSuiteTemplates, loadSessionRunRecords, loadSuiteConfig, loadTraceMetadataList, normalizeBundleOutputPath, normalizeSuiteConfig, parseCohortMetricList, parseDurationFilter, parseGateList, parseGateNumber, parseGroupBySpec, renderActivitySummaryHuman, renderCohortReport, renderCohortSummaryMarkdown, renderGateGithubStepSummary, renderGateJUnit, renderGateReport, renderGateSummaryMarkdown, renderSuiteReport, renderSuiteReportMarkdown, renderTraceStats, resolveBundleRunIds, resolveSuiteCaseTrace, resolveSuiteConfigPath, resolveSuiteTemplate, runGate, runSuite, sanitizeBundleRunId, searchTraces, sessionKeyForRun, toMetadataSafeStatus, traceMetasToSessionRunRecords, validateSuiteConfig };
3101
+ export { COHORT_METRIC_IDS, DEFAULT_SUITE_ARTIFACTS_DIR, DEFAULT_SUITE_CONFIG_NAMES, SESSION_WORKFLOW_KEYS, SUITE_TEMPLATE_IDS, aggregateBundleSafeStatus, aggregateSessionCheckResults, analyzeCohort, assertBundlePathContained, buildActivitySummary, buildBundleMetadata, buildBundleSummaryMarkdown, buildLocalExplanation, buildPlaceholderArtifact, buildSessionIndex, bundleFailsOnSafety, bundleRunAssetRelativePath, compareCohortAggregates, defaultBundleOutputPath, defaultSuiteConfigTemplate, deriveSessionStatus, enrichSessionRunRecord, enrichSessionSummary, extractSessionWorkflowMetadata, filterMetasBySessionScope, gateHasThresholds, getSuiteTemplate, groupSessionCohorts, isAgentInspectTrace, listSuiteTemplates, loadSessionRunRecords, loadSuiteConfig, loadTraceMetadataList, normalizeBundleOutputPath, normalizeSuiteConfig, parseCohortMetricList, parseDurationFilter, parseGateList, parseGateNumber, parseGroupBySpec, renderActivitySummaryHuman, renderCohortReport, renderCohortSummaryMarkdown, renderGateGithubStepSummary, renderGateJUnit, renderGateReport, renderGateSummaryMarkdown, renderSuiteReport, renderSuiteReportMarkdown, resolveBundleRunIds, resolveSuiteCaseTrace, resolveSuiteConfigPath, resolveSuiteTemplate, runGate, runSuite, sanitizeBundleRunId, searchTraces, sessionKeyForRun, toMetadataSafeStatus, traceMetasToSessionRunRecords, validateSuiteConfig };
3317
3102
  //# sourceMappingURL=advanced.mjs.map
3318
3103
  //# sourceMappingURL=advanced.mjs.map