agent-inspect 6.31.7 → 6.31.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/packages/cli/dist/{chunk-QV73NM25.mjs → chunk-SWUZRRDT.mjs} +158 -21
  5. package/packages/cli/dist/chunk-SWUZRRDT.mjs.map +1 -0
  6. package/packages/cli/dist/index.cjs +312 -52
  7. package/packages/cli/dist/index.cjs.map +1 -1
  8. package/packages/cli/dist/index.mjs +156 -36
  9. package/packages/cli/dist/index.mjs.map +1 -1
  10. package/packages/cli/dist/{src-KFOBXFPN.mjs → src-XFIPYODW.mjs} +3 -3
  11. package/packages/cli/dist/{src-KFOBXFPN.mjs.map → src-XFIPYODW.mjs.map} +1 -1
  12. package/packages/core/dist/advanced.cjs +200 -24
  13. package/packages/core/dist/advanced.cjs.map +1 -1
  14. package/packages/core/dist/advanced.d.cts +1 -1
  15. package/packages/core/dist/advanced.d.ts +1 -1
  16. package/packages/core/dist/advanced.mjs +89 -15
  17. package/packages/core/dist/advanced.mjs.map +1 -1
  18. package/packages/core/dist/checks.mjs +2 -2
  19. package/packages/core/dist/{chunk-LXYPM2ZO.mjs → chunk-2CCRUI42.mjs} +19 -318
  20. package/packages/core/dist/chunk-2CCRUI42.mjs.map +1 -0
  21. package/packages/core/dist/{chunk-QLYUWKK7.mjs → chunk-2IRRUNIN.mjs} +11 -5
  22. package/packages/core/dist/chunk-2IRRUNIN.mjs.map +1 -0
  23. package/packages/core/dist/{chunk-VQUB3WRI.mjs → chunk-3SPBELJB.mjs} +14 -3
  24. package/packages/core/dist/chunk-3SPBELJB.mjs.map +1 -0
  25. package/packages/core/dist/{chunk-3RV3JILQ.mjs → chunk-IJJSPJXV.mjs} +20 -12
  26. package/packages/core/dist/chunk-IJJSPJXV.mjs.map +1 -0
  27. package/packages/core/dist/chunk-L5WLVBW4.mjs +355 -0
  28. package/packages/core/dist/chunk-L5WLVBW4.mjs.map +1 -0
  29. package/packages/core/dist/exporters.cjs +110 -18
  30. package/packages/core/dist/exporters.cjs.map +1 -1
  31. package/packages/core/dist/exporters.mjs +110 -18
  32. package/packages/core/dist/exporters.mjs.map +1 -1
  33. package/packages/core/dist/index.cjs +12 -1
  34. package/packages/core/dist/index.cjs.map +1 -1
  35. package/packages/core/dist/index.mjs +2 -2
  36. package/packages/core/dist/persisted.cjs +344 -9
  37. package/packages/core/dist/persisted.cjs.map +1 -1
  38. package/packages/core/dist/persisted.d.cts +8 -1
  39. package/packages/core/dist/persisted.d.ts +8 -1
  40. package/packages/core/dist/persisted.mjs +3 -2
  41. package/packages/core/dist/persisted.mjs.map +1 -1
  42. package/packages/core/dist/readers.cjs +377 -87
  43. package/packages/core/dist/readers.cjs.map +1 -1
  44. package/packages/core/dist/readers.mjs +3 -3
  45. package/packages/cli/dist/chunk-QV73NM25.mjs.map +0 -1
  46. package/packages/core/dist/chunk-3RV3JILQ.mjs.map +0 -1
  47. package/packages/core/dist/chunk-FWK3Q3OJ.mjs +0 -56
  48. package/packages/core/dist/chunk-FWK3Q3OJ.mjs.map +0 -1
  49. package/packages/core/dist/chunk-LXYPM2ZO.mjs.map +0 -1
  50. package/packages/core/dist/chunk-QLYUWKK7.mjs.map +0 -1
  51. package/packages/core/dist/chunk-VQUB3WRI.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.31.9
4
+
5
+ ### Patch Changes
6
+
7
+ - f71ec7e: Fail closed when suite cases declare no effective assertions or unknown selectors, wire eval.requireSuccess and related eval controls into real check rules, and share AsyncLocalStorage across packed CJS root and /advanced entrypoints so guarded wrappers see the active run context.
8
+
9
+ ## 6.31.8
10
+
11
+ ### Patch Changes
12
+
13
+ - 5bbe8c0: Restore CLI export lifecycle coalescing for schema 0.1 nested tools, map adapter modelId/source/fractional duration on OTLP export, keep OTLP parent lookup trace-scoped, strengthen producer validation, and make Promptfoo/Collector/Elastic recipe verifiers honest.
14
+
3
15
  ## 6.31.7
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -213,7 +213,7 @@ The root package is enough for custom capture, the CLI, checks, and Evidence wor
213
213
 
214
214
  ## Status and documentation
215
215
 
216
- **Current published baseline:** **6.31.7** · persisted schema `1.0` · Node.js `>=20` · MIT.
216
+ **Current published baseline:** **6.31.9** · persisted schema `1.0` · Node.js `>=20` · MIT.
217
217
 
218
218
  Legacy v0.1 and v0.2 traces remain readable. Check the npm badge and [changelog](CHANGELOG.md) for the current published version.
219
219
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-inspect",
3
- "version": "6.31.7",
3
+ "version": "6.31.9",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Local evidence debugger and trajectory-test toolkit for TypeScript AI agents — execution trees, TraceContract checks, Evidence v2, and read-only MCP",
@@ -1627,7 +1627,18 @@ function extractCorrelationMetadata(record) {
1627
1627
  }
1628
1628
 
1629
1629
  // packages/core/src/context.ts
1630
- new AsyncLocalStorage();
1630
+ var GLOBAL_CONTEXT_ALS_KEY = "agent-inspect:execution-context-als:v1";
1631
+ function getSharedContextStorage() {
1632
+ const host = globalThis;
1633
+ const existing = host[GLOBAL_CONTEXT_ALS_KEY];
1634
+ if (existing instanceof AsyncLocalStorage) {
1635
+ return existing;
1636
+ }
1637
+ const created = new AsyncLocalStorage();
1638
+ host[GLOBAL_CONTEXT_ALS_KEY] = created;
1639
+ return created;
1640
+ }
1641
+ getSharedContextStorage();
1631
1642
 
1632
1643
  // packages/core/src/terminal.ts
1633
1644
  var TERMINAL_INDENT = " ";
@@ -8407,6 +8418,45 @@ function createToolOrderingRule(options) {
8407
8418
  requireEndpoints: false
8408
8419
  });
8409
8420
  }
8421
+ function createToolFailureRule(options) {
8422
+ return {
8423
+ id: "tool.failures",
8424
+ category: "tool",
8425
+ defaultSeverity: "error",
8426
+ evaluate(context) {
8427
+ const tools = finishedEvents(context, "TOOL");
8428
+ const failures = tools.filter((event) => event.status === "error");
8429
+ const retries = tools.map((event) => ({ event, count: retryCount(event) })).filter((item) => item.count !== void 0);
8430
+ const findings = [];
8431
+ if (options.maxFailures !== void 0 && failures.length > options.maxFailures) {
8432
+ findings.push(
8433
+ failFinding(
8434
+ "tool.failures",
8435
+ `Tool failure count ${failures.length} exceeded ${options.maxFailures}.`,
8436
+ failures.map((event) => eventEvidence3(event)),
8437
+ { maxFailures: options.maxFailures },
8438
+ failures.length
8439
+ )
8440
+ );
8441
+ }
8442
+ if (options.maxRetries !== void 0) {
8443
+ const excessiveRetries = retries.filter((item) => item.count > options.maxRetries);
8444
+ if (excessiveRetries.length > 0) {
8445
+ findings.push(
8446
+ failFinding(
8447
+ "tool.failures",
8448
+ `Tool retry count exceeded ${options.maxRetries}.`,
8449
+ excessiveRetries.map((item) => eventEvidence3(item.event, "attributes.retryCount")),
8450
+ { maxRetries: options.maxRetries },
8451
+ excessiveRetries.map((item) => ({ tool: toolName(item.event), retries: item.count }))
8452
+ )
8453
+ );
8454
+ }
8455
+ }
8456
+ return findings;
8457
+ }
8458
+ };
8459
+ }
8410
8460
  function createLlmUsageRule(options) {
8411
8461
  return {
8412
8462
  id: "llm.usage",
@@ -11954,8 +12004,13 @@ function persistedInspectEventsToInspectEvents(events, options) {
11954
12004
  }
11955
12005
 
11956
12006
  // packages/core/src/persisted/tree-bridge.ts
12007
+ function logicalToPersisted(event) {
12008
+ const { sourceEventIds: _sourceEventIds, projection: _projection, ...rest } = event;
12009
+ return rest;
12010
+ }
11957
12011
  function persistedInspectEventsToRunTrees(events, options) {
11958
- const inspectEvents = persistedInspectEventsToInspectEvents(events, {
12012
+ const sourceEvents = options?.coalesceLifecycle === true ? projectLogicalEvents(events).logicalEvents.map(logicalToPersisted) : events;
12013
+ const inspectEvents = persistedInspectEventsToInspectEvents(sourceEvents, {
11959
12014
  skipInvalid: options?.skipInvalid
11960
12015
  });
11961
12016
  return new TreeBuilder().build(inspectEvents);
@@ -12649,7 +12704,7 @@ function mapOpenInferenceSpan(span, index, version) {
12649
12704
  const errorMessage = isRecord11(span.status) && typeof span.status.message === "string" ? span.status.message : void 0;
12650
12705
  const event = {
12651
12706
  schemaVersion: "0.2",
12652
- eventId: typeof rawAttributes["agent_inspect.event_id"] === "string" ? rawAttributes["agent_inspect.event_id"] : spanId,
12707
+ eventId: typeof rawAttributes["agent_inspect.event_id"] === "string" ? rawAttributes["agent_inspect.event_id"] : `${traceId}:${spanId}`,
12653
12708
  runId: typeof rawAttributes["agent_inspect.run_id"] === "string" ? rawAttributes["agent_inspect.run_id"] : traceId,
12654
12709
  kind,
12655
12710
  name,
@@ -12700,12 +12755,16 @@ function mapOpenInferenceEvents(document) {
12700
12755
  const mapped = document.spans.map(
12701
12756
  (span, index) => mapOpenInferenceSpan(span, index, document.version)
12702
12757
  );
12703
- const spanIdToEventId = new Map(
12704
- mapped.map((span) => [span.spanId, span.event.eventId])
12758
+ const spanKeyToEventId = new Map(
12759
+ mapped.map((span) => {
12760
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
12761
+ return [`${traceId}:${span.spanId}`, span.event.eventId];
12762
+ })
12705
12763
  );
12706
12764
  for (const span of mapped) {
12707
12765
  if (span.parentSpanId === void 0) continue;
12708
- span.event.parentId = spanIdToEventId.get(span.parentSpanId) ?? span.parentSpanId;
12766
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
12767
+ span.event.parentId = spanKeyToEventId.get(`${traceId}:${span.parentSpanId}`) ?? span.parentSpanId;
12709
12768
  }
12710
12769
  return {
12711
12770
  events: mapped.map((span) => span.event),
@@ -13254,7 +13313,7 @@ function mapOtlpSpan(context) {
13254
13313
  const errorMessage = isRecord11(span.status) && typeof span.status.message === "string" ? span.status.message : void 0;
13255
13314
  const event = {
13256
13315
  schemaVersion: "0.2",
13257
- eventId: typeof parsedSpanAttributes.attributes["agent_inspect.event_id"] === "string" ? parsedSpanAttributes.attributes["agent_inspect.event_id"] : spanId,
13316
+ eventId: typeof parsedSpanAttributes.attributes["agent_inspect.event_id"] === "string" ? parsedSpanAttributes.attributes["agent_inspect.event_id"] : `${traceId}:${spanId}`,
13258
13317
  runId: typeof parsedSpanAttributes.attributes["agent_inspect.run_id"] === "string" ? parsedSpanAttributes.attributes["agent_inspect.run_id"] : traceId,
13259
13318
  kind,
13260
13319
  name: readStringField(span, ["name"]) ?? spanId,
@@ -13303,12 +13362,16 @@ function mapOtlpSpan(context) {
13303
13362
  }
13304
13363
  function mapOtlpEventsToPersisted(document) {
13305
13364
  const mapped = document.spans.map((span) => mapOtlpSpan(span));
13306
- const spanIdToEventId = new Map(
13307
- mapped.map((span) => [span.spanId, span.event.eventId])
13365
+ const spanKeyToEventId = new Map(
13366
+ mapped.map((span) => {
13367
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
13368
+ return [`${traceId}:${span.spanId}`, span.event.eventId];
13369
+ })
13308
13370
  );
13309
13371
  for (const span of mapped) {
13310
13372
  if (span.parentSpanId === void 0) continue;
13311
- span.event.parentId = spanIdToEventId.get(span.parentSpanId) ?? span.parentSpanId;
13373
+ const traceId = typeof span.event.trace?.traceId === "string" ? span.event.trace.traceId : "";
13374
+ span.event.parentId = spanKeyToEventId.get(`${traceId}:${span.parentSpanId}`) ?? span.parentSpanId;
13312
13375
  }
13313
13376
  return {
13314
13377
  events: mapped.map((span) => span.event),
@@ -13636,21 +13699,48 @@ async function resolveSuiteCaseTrace(suiteCase, options) {
13636
13699
  }
13637
13700
 
13638
13701
  // packages/core/src/suite/run.ts
13702
+ var KNOWN_SUITE_SELECT_IDS = /* @__PURE__ */ new Set([
13703
+ "run.status",
13704
+ "run.duration",
13705
+ "run.depth",
13706
+ "outcome.status",
13707
+ "tool.usage",
13708
+ "tool.failures",
13709
+ "llm.usage"
13710
+ ]);
13639
13711
  function diagnostic5(code, message, severity = "error", caseId) {
13640
13712
  return { code, message, severity, ...caseId !== void 0 ? { caseId } : {} };
13641
13713
  }
13642
- function buildCaseRules(suiteCase, config) {
13714
+ function buildCaseAssertions(suiteCase, config) {
13643
13715
  const rules = [];
13644
13716
  const select = new Set(config.checks?.select ?? []);
13645
- if (select.has("run.status")) {
13717
+ const configDiagnostics = [];
13718
+ const evalConfig = config.eval;
13719
+ const declaredSelect = [...select];
13720
+ for (const id of declaredSelect) {
13721
+ if (!KNOWN_SUITE_SELECT_IDS.has(id)) {
13722
+ configDiagnostics.push(
13723
+ diagnostic5(
13724
+ "AI_SUITE_UNKNOWN_SELECTOR",
13725
+ `Unknown or unsupported suite check selector "${id}".`,
13726
+ "error",
13727
+ suiteCase.id
13728
+ )
13729
+ );
13730
+ }
13731
+ }
13732
+ if (select.has("run.status") || evalConfig?.requireSuccess === true) {
13646
13733
  rules.push(createRunStatusRule());
13734
+ select.add("run.status");
13647
13735
  }
13648
13736
  const requiredTools = [
13649
13737
  ...config.checks?.tool?.required ?? [],
13738
+ ...evalConfig?.requiredTools ?? [],
13650
13739
  ...suiteCase.requireTools ?? []
13651
13740
  ];
13652
13741
  const forbiddenTools = [
13653
13742
  ...config.checks?.tool?.forbidden ?? [],
13743
+ ...evalConfig?.forbiddenTools ?? [],
13654
13744
  ...suiteCase.forbidTools ?? []
13655
13745
  ];
13656
13746
  if (requiredTools.length > 0 || forbiddenTools.length > 0) {
@@ -13662,20 +13752,51 @@ function buildCaseRules(suiteCase, config) {
13662
13752
  );
13663
13753
  select.add("tool.usage");
13664
13754
  }
13665
- const maxDurationMs = suiteCase.maxDurationMs ?? config.checks?.run?.maxDurationMs ?? config.eval?.maxDurationMs;
13755
+ const maxDurationMs = suiteCase.maxDurationMs ?? config.checks?.run?.maxDurationMs ?? evalConfig?.maxDurationMs;
13666
13756
  if (maxDurationMs !== void 0) {
13667
13757
  rules.push(createRunDurationRule({ maxDurationMs }));
13668
13758
  select.add("run.duration");
13669
13759
  }
13670
- const llm = config.checks?.llm;
13671
- if (llm?.allowedModels !== void 0 || llm?.maxTotalTokens !== void 0) {
13672
- rules.push(createLlmUsageRule(llm));
13760
+ const maxDepth = config.checks?.run?.maxDepth ?? evalConfig?.maxDepth;
13761
+ if (maxDepth !== void 0) {
13762
+ rules.push(createRunDepthRule({ maxDepth }));
13763
+ select.add("run.depth");
13764
+ }
13765
+ if (evalConfig?.maxRetries !== void 0) {
13766
+ rules.push(createToolFailureRule({ maxRetries: evalConfig.maxRetries }));
13767
+ select.add("tool.failures");
13768
+ }
13769
+ const allowedModels = config.checks?.llm?.allowedModels;
13770
+ const maxTotalTokens = config.checks?.llm?.maxTotalTokens ?? evalConfig?.maxTotalTokens;
13771
+ if (allowedModels !== void 0 || maxTotalTokens !== void 0) {
13772
+ rules.push(
13773
+ createLlmUsageRule({
13774
+ ...allowedModels !== void 0 ? { allowedModels } : {},
13775
+ ...maxTotalTokens !== void 0 ? { maxTotalTokens } : {}
13776
+ })
13777
+ );
13673
13778
  select.add("llm.usage");
13674
13779
  }
13675
13780
  if (select.has("outcome.status")) {
13676
13781
  rules.push(createObservedOutcomeRule({ failOn: ["failed"] }));
13677
13782
  }
13678
- return { rules, select: [...select] };
13783
+ const observationCount = suiteCase.expectedObservations?.length ?? 0;
13784
+ if (rules.length === 0 && observationCount === 0 && configDiagnostics.length === 0) {
13785
+ configDiagnostics.push(
13786
+ diagnostic5(
13787
+ "AI_SUITE_NO_ASSERTIONS",
13788
+ `Suite case "${suiteCase.id}" declares no effective checks, eval controls, or expected observations.`,
13789
+ "error",
13790
+ suiteCase.id
13791
+ )
13792
+ );
13793
+ }
13794
+ return {
13795
+ rules,
13796
+ select: [...select],
13797
+ observationCount,
13798
+ configDiagnostics
13799
+ };
13679
13800
  }
13680
13801
  function outcomesFromRead(read) {
13681
13802
  const persistedOutcomes = extractOutcomesFromPersistedEvents(
@@ -13756,8 +13877,20 @@ async function runSuiteCase(suiteCase, config, options) {
13756
13877
  ]
13757
13878
  };
13758
13879
  }
13759
- const { rules, select } = buildCaseRules(suiteCase, config);
13760
- const checkResult = rules.length > 0 ? runTraceChecks({ read }, { rules, select }) : {
13880
+ const compiled = buildCaseAssertions(suiteCase, config);
13881
+ if (compiled.configDiagnostics.length > 0) {
13882
+ return {
13883
+ id: suiteCase.id,
13884
+ status: "error",
13885
+ tracePath: resolved.tracePath,
13886
+ ...resolved.runId !== void 0 ? { runId: resolved.runId } : {},
13887
+ checkOk: false,
13888
+ ...config.eval?.requireSuccess === true ? { evalOk: false } : {},
13889
+ message: compiled.configDiagnostics.map((item) => item.message).join("; "),
13890
+ diagnostics: compiled.configDiagnostics
13891
+ };
13892
+ }
13893
+ const checkResult = compiled.rules.length > 0 ? runTraceChecks({ read }, { rules: compiled.rules, select: compiled.select }) : {
13761
13894
  ok: true,
13762
13895
  status: "pass",
13763
13896
  format: read.format,
@@ -13785,6 +13918,9 @@ async function runSuiteCase(suiteCase, config, options) {
13785
13918
  ];
13786
13919
  const checkOk = checkResult.ok;
13787
13920
  const observationsOk = observationResult.ok;
13921
+ const evalOk = config.eval?.requireSuccess === true ? checkResult.findings.every(
13922
+ (finding) => finding.ruleId !== "run.status" || finding.status !== "fail"
13923
+ ) && checkResult.diagnostics.every((item) => item.severity !== "error") : void 0;
13788
13924
  const ok = checkOk && observationsOk;
13789
13925
  const status = ok ? "pass" : checkResult.status === "error" ? "error" : "fail";
13790
13926
  return {
@@ -13793,6 +13929,7 @@ async function runSuiteCase(suiteCase, config, options) {
13793
13929
  tracePath: resolved.tracePath,
13794
13930
  ...resolved.runId !== void 0 ? { runId: resolved.runId } : {},
13795
13931
  checkOk,
13932
+ ...evalOk !== void 0 ? { evalOk } : {},
13796
13933
  observationsOk,
13797
13934
  diagnostics,
13798
13935
  ...ok ? {} : {
@@ -14960,5 +15097,5 @@ function renderGateReport(result, options = {}) {
14960
15097
  }
14961
15098
 
14962
15099
  export { ATTRIBUTION_CONFIDENCES, COHORT_METRIC_IDS, DEFAULT_REDACT_KEYS, DEFAULT_SUITE_ARTIFACTS_DIR, EVIDENCE_FORMAT_VERSION, EVIDENCE_HTML_FILENAME, EVIDENCE_MANIFEST_FILENAME, Redactor, TraceDirectory, TraceReadError, TreeBuilder, aggregateBundleSafeStatus, aggregateSessionCheckResults, analyzeCohort, applyProfileMetadataCaps, assertBundlePathContained, assertEvidenceRelativePath, buildActivitySummary, buildBundleMetadata, buildBundleSummaryMarkdown, buildEvidenceCausalFailureViewHtml, buildEvidenceCiPackage, buildEvidenceCircuitViewHtml, buildEvidenceContractsViewHtml, buildEvidenceDiffViewHtml, buildEvidenceHtmlShell, buildEvidenceManifest, buildEvidenceOutcomesViewHtml, buildEvidenceProvenanceViewHtml, buildEvidenceSafetyViewHtml, buildEvidenceTimelineViewHtml, buildEvidenceToolsLlmViewHtml, buildEvidenceTreeViewHtml, buildLocalExplanation, buildPlaceholderArtifact, buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildSessionIndex, buildTraceStats, buildZipArchive, bundleFailsOnSafety, bundleRunAssetRelativePath, collectTraceSchemaVersions, compactAttributes, createBaselineRegressionRule, createLlmUsageRule, createMaxStepDurationRule, createObservedOutcomeRule, createRequireCompletedRule, createRunDepthRule, createRunDurationRule, createRunStatusRule, createSafetyOversizedAttributeRule, createSafetyRawContentRule, createSafetyRedactionRule, createSafetySecretPatternRule, createStallDetectionRule, createStructureCycleRule, createStructureOrphanRule, createStructureParallelWidthRule, createStructureRelationshipRule, createToolUsageRule, defaultBundleOutputPath, defaultSuiteConfigTemplate, defineTraceContract, diffRuns, diffTraceEvents, enrichSessionRunRecord, escapeHtml, escapeMarkdown, evaluateTraceContract, extractMetadata, extractOutcomesFromTraceEvents, filterMetasBySessionScope, filterTraces, flattenTree, formatDuration2 as formatDuration, formatStepLabel, formatTimestamp, gateHasThresholds, getIndent, getTraceFilePath, inferEvidenceFileRole, isAgentInspectTrace, isAttributionConfidence, isCredentialSensitiveKey, isPersistedInspectEvent, loadSessionRunRecords, loadSuiteConfig, loadTraceMetadataList, manualTraceEventsToComparableRun, nanoid, normalizeBundleOutputPath, openTrace, parseCohortMetricList, parseDuration, parseDurationFilter, parseGateList, parseTraceJsonl, persistedInspectEventsToRunTrees, persistedInspectEventsToTraceEvents, projectLogicalEvents, renderActivitySummaryHuman, renderCohortReport, renderErrorLine, renderGateReport, renderObservedOutcomesHtml, renderObservedOutcomesMarkdown, renderRunDiff, renderRunWhat, renderStepLine, renderSuiteReport, renderTimeline, renderTraceStats, resolveBundleRunIds, resolveRedactionProfile, resolveSuiteTemplate, resolveTraceDir, runGate, runSuite, runTraceChecks, safeString, sanitizeBundleRunId, searchTraces, serializeEvidenceManifest, sha256Hex, stableJson, stringContainsHighConfidenceCredential, summarizeObservedOutcomes, summarizeSemanticParity, traceEventToPersistedInspectEvent, truncateName, truncateStringForProfile, validateEvent, validateSuiteConfig, verifyEvidenceDirectory, zeroKinds };
14963
- //# sourceMappingURL=chunk-QV73NM25.mjs.map
14964
- //# sourceMappingURL=chunk-QV73NM25.mjs.map
15100
+ //# sourceMappingURL=chunk-SWUZRRDT.mjs.map
15101
+ //# sourceMappingURL=chunk-SWUZRRDT.mjs.map