agent-inspect 6.31.17 → 6.31.19

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 (32) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/docs/COMPARE.md +1 -1
  4. package/package.json +2 -2
  5. package/packages/cli/dist/{chunk-USZJEEME.mjs → chunk-NALE36AJ.mjs} +154 -31
  6. package/packages/cli/dist/chunk-NALE36AJ.mjs.map +1 -0
  7. package/packages/cli/dist/index.cjs +208 -32
  8. package/packages/cli/dist/index.cjs.map +1 -1
  9. package/packages/cli/dist/index.mjs +58 -6
  10. package/packages/cli/dist/index.mjs.map +1 -1
  11. package/packages/cli/dist/{src-EY4EY456.mjs → src-IZIVBMCO.mjs} +3 -3
  12. package/packages/cli/dist/{src-EY4EY456.mjs.map → src-IZIVBMCO.mjs.map} +1 -1
  13. package/packages/core/dist/advanced.cjs +72 -4
  14. package/packages/core/dist/advanced.cjs.map +1 -1
  15. package/packages/core/dist/advanced.mjs +3 -3
  16. package/packages/core/dist/checks.cjs +86 -29
  17. package/packages/core/dist/checks.cjs.map +1 -1
  18. package/packages/core/dist/checks.mjs +1 -1
  19. package/packages/core/dist/{chunk-GTA6SNDK.mjs → chunk-2RSTU3OZ.mjs} +88 -31
  20. package/packages/core/dist/chunk-2RSTU3OZ.mjs.map +1 -0
  21. package/packages/core/dist/{chunk-NJUSSJX3.mjs → chunk-EIP5CNEL.mjs} +68 -2
  22. package/packages/core/dist/chunk-EIP5CNEL.mjs.map +1 -0
  23. package/packages/core/dist/exporters.cjs +54 -2
  24. package/packages/core/dist/exporters.cjs.map +1 -1
  25. package/packages/core/dist/exporters.mjs +54 -2
  26. package/packages/core/dist/exporters.mjs.map +1 -1
  27. package/packages/core/dist/readers.cjs +66 -0
  28. package/packages/core/dist/readers.cjs.map +1 -1
  29. package/packages/core/dist/readers.mjs +1 -1
  30. package/packages/cli/dist/chunk-USZJEEME.mjs.map +0 -1
  31. package/packages/core/dist/chunk-GTA6SNDK.mjs.map +0 -1
  32. package/packages/core/dist/chunk-NJUSSJX3.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.31.19
4
+
5
+ ### Patch Changes
6
+
7
+ - 8df3096: Fix residual recovery attemptNumber undercount and invalid result-availability times; promote OTLP agent_inspect.\* identity into workflow metadata on read; harden packed MCP SDK e2e (429/cancel/overlap/readiness); complete keyless Fix-Owes fixture corpus (Om through Thorin, Bezalel invariants).
8
+
9
+ ## 6.31.18
10
+
11
+ ### Patch Changes
12
+
13
+ - c65817e: Fix recovery result-availability ordering and mixed attemptId counting; emit bounded OTLP operation/attempt identity without broad attribute dump; add real MCP SDK packed e2e and Fix-Owes recipe corpus (variable paths, timeout ledger, access disclosure, browser observed outcomes, NestJS tenant, causal failure, headsign, Keniel B8).
14
+
3
15
  ## 6.31.17
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.17** · persisted schema `1.0` · Node.js `>=20` · MIT.
216
+ **Current published baseline:** **6.31.19** · 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/docs/COMPARE.md CHANGED
@@ -106,7 +106,7 @@ OrcaReplay is a local CLI that records an agent run at the model-provider bounda
106
106
 
107
107
  AgentInspect is local-first CLI debugging:
108
108
 
109
- - Use AgentInspect to inspect and gate a run's trajectory; the two capture at different layers, so a run can be captured by both at once — AgentInspect instruments inside the process and produces an execution tree, while OrcaReplay proxies the provider connection and records the bytes on the wire.
109
+ - Use AgentInspect to inspect and gate a run's trajectory; the two capture at different layers. AgentInspect builds a local execution tree from in-process instrumentation and from existing log/trace readers; OrcaReplay proxies the provider connection and records the bytes on the wire. Simultaneous AgentInspect + OrcaReplay capture on one run is possible in principle but **untested** here until a retained joint experiment exists.
110
110
  - If you reach for OrcaReplay, two limits are worth knowing: a matching replay is not a determinism result, and replay blocks model-provider egress only — it is not a sandbox, so recorded tool calls still execute and a tool that opens its own connection still reaches the network.
111
111
  - AgentInspect does not replay a recorded run; the README lists "a replay engine" among the things it is not.
112
112
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-inspect",
3
- "version": "6.31.17",
3
+ "version": "6.31.19",
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",
@@ -236,7 +236,7 @@
236
236
  "test:all": "pnpm run typecheck && pnpm run linked-versions:check && pnpm run build && pnpm run test && pnpm run size",
237
237
  "prepublish:checks": "pnpm run typecheck && pnpm run build && pnpm run test && pnpm run test:coverage && pnpm run fixtures:check && pnpm run recipes:check && pnpm run test:integration-offline && pnpm run size && pnpm run linked-versions:check && pnpm run repo:health && pnpm run pack:smoke",
238
238
  "pack:dry-run": "pnpm run build && npm pack --dry-run",
239
- "pack:smoke": "pnpm run package-licenses:check && pnpm run build && node scripts/package-smoke.mjs && node scripts/packed-openai-agents-e2e.mjs && node scripts/packed-ai-sdk-e2e.mjs && node scripts/packed-mcp-e2e.mjs && node scripts/packed-quickstart-e2e.mjs && node scripts/packed-semantic-loop-e2e.mjs && node scripts/packed-swarm-loop-e2e.mjs && node scripts/evidence-ci-golden-paths.mjs",
239
+ "pack:smoke": "pnpm run package-licenses:check && pnpm run build && node scripts/package-smoke.mjs && node scripts/packed-openai-agents-e2e.mjs && node scripts/packed-ai-sdk-e2e.mjs && node scripts/packed-mcp-e2e.mjs && node scripts/packed-mcp-sdk-e2e.mjs && node scripts/packed-quickstart-e2e.mjs && node scripts/packed-semantic-loop-e2e.mjs && node scripts/packed-swarm-loop-e2e.mjs && node scripts/evidence-ci-golden-paths.mjs",
240
240
  "linked-versions:check": "node scripts/check-linked-versions.mjs",
241
241
  "docs:commands": "node scripts/validate-doc-commands.mjs",
242
242
  "docs:links": "node scripts/validate-doc-links.mjs",
@@ -3696,7 +3696,7 @@ function extractSessionWorkflowMetadata(record) {
3696
3696
  assignString("conversationId", record.conversationId);
3697
3697
  assignString("groupId", record.groupId);
3698
3698
  assignString("parentGroupId", record.parentGroupId);
3699
- assignString("retryOf", record.retryOf);
3699
+ assignString("retryOf", record.retryOf ?? record["agent_inspect.retry_of"]);
3700
3700
  assignString("retryReason", record.retryReason);
3701
3701
  assignString("handoffFrom", record.handoffFrom);
3702
3702
  assignString("handoffTo", record.handoffTo);
@@ -3709,8 +3709,8 @@ function extractSessionWorkflowMetadata(record) {
3709
3709
  assignString("toolCallId", record.toolCallId);
3710
3710
  assignString("mcpToolCallId", record.mcpToolCallId);
3711
3711
  assignString("linkedStepId", record.linkedStepId);
3712
- assignString("operationId", record.operationId);
3713
- assignString("attemptId", record.attemptId);
3712
+ assignString("operationId", record.operationId ?? record["agent_inspect.operation_id"]);
3713
+ assignString("attemptId", record.attemptId ?? record["agent_inspect.attempt_id"]);
3714
3714
  assignString("fallbackOf", record.fallbackOf);
3715
3715
  assignString("idempotencyKey", record.idempotencyKey);
3716
3716
  assignString("correlationId", record.correlationId);
@@ -3721,7 +3721,9 @@ function extractSessionWorkflowMetadata(record) {
3721
3721
  out.attempt = attempt;
3722
3722
  found = true;
3723
3723
  }
3724
- const attemptNumber = finitePositiveInt(record.attemptNumber);
3724
+ const attemptNumber = finitePositiveInt(
3725
+ record.attemptNumber ?? record["agent_inspect.attempt_number"]
3726
+ );
3725
3727
  if (attemptNumber !== void 0) {
3726
3728
  out.attemptNumber = attemptNumber;
3727
3729
  found = true;
@@ -5737,24 +5739,35 @@ function attemptIdOf(event) {
5737
5739
  return typeof value === "string" && value.trim() !== "" ? value : void 0;
5738
5740
  }
5739
5741
  function countOperationAttempts(members) {
5740
- const attemptIds = new Set(
5741
- members.map((event) => attemptIdOf(event)).filter((value) => value !== void 0)
5742
- );
5743
- if (attemptIds.size > 0) {
5744
- return attemptIds.size;
5742
+ const identified = /* @__PURE__ */ new Set();
5743
+ let unidentified = 0;
5744
+ for (const event of members) {
5745
+ if (event.kind !== "TOOL" && event.kind !== "LLM") continue;
5746
+ const id = attemptIdOf(event);
5747
+ if (id !== void 0) {
5748
+ identified.add(id);
5749
+ continue;
5750
+ }
5751
+ unidentified += 1;
5752
+ }
5753
+ if (identified.size > 0) {
5754
+ return identified.size + unidentified;
5745
5755
  }
5746
- const numbers = members.map((event) => attemptNumberOf(event)).filter((value) => value !== void 0).sort((a, b) => a - b);
5747
- if (numbers.length > 0) {
5748
- const unique = [...new Set(numbers)];
5749
- const min = unique[0];
5750
- const max = unique[unique.length - 1];
5751
- const contiguous = unique.length === max - min + 1 && unique.every((value, index) => value === min + index);
5752
- if (contiguous) {
5753
- return unique.length;
5756
+ const numbered = /* @__PURE__ */ new Set();
5757
+ let unnumbered = 0;
5758
+ for (const event of members) {
5759
+ if (event.kind !== "TOOL" && event.kind !== "LLM") continue;
5760
+ const num = attemptNumberOf(event);
5761
+ if (num !== void 0) {
5762
+ numbered.add(num);
5763
+ continue;
5754
5764
  }
5755
- return unique.length;
5765
+ unnumbered += 1;
5766
+ }
5767
+ if (numbered.size > 0) {
5768
+ return numbered.size + unnumbered;
5756
5769
  }
5757
- return members.filter((event) => event.kind === "TOOL" || event.kind === "LLM").length;
5770
+ return unnumbered;
5758
5771
  }
5759
5772
  function classifyRetryAttempt(event, priorOrdered, allMembers) {
5760
5773
  const workflow = workflowFor(event);
@@ -6029,8 +6042,42 @@ function eventEvidence2(event) {
6029
6042
  function eventTime2(event) {
6030
6043
  return event.startedAt ?? event.timestamp ?? "";
6031
6044
  }
6045
+ function parseComparableMs(value) {
6046
+ if (!value) return void 0;
6047
+ const parsed = Date.parse(value);
6048
+ return Number.isFinite(parsed) ? parsed : void 0;
6049
+ }
6050
+ function consumerStartMs(event) {
6051
+ return parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
6052
+ }
6053
+ function resultAvailableMs(event) {
6054
+ const started = parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
6055
+ const endedRaw = event.endedAt;
6056
+ const endedPresent = endedRaw !== void 0 && endedRaw !== null && String(endedRaw).trim() !== "";
6057
+ if (endedPresent) {
6058
+ const ended = parseComparableMs(typeof endedRaw === "string" ? endedRaw : String(endedRaw));
6059
+ if (ended === void 0) return void 0;
6060
+ if (started !== void 0 && ended < started) return void 0;
6061
+ return ended;
6062
+ }
6063
+ if (event.durationMs !== void 0) {
6064
+ if (!Number.isFinite(event.durationMs) || event.durationMs < 0) {
6065
+ return void 0;
6066
+ }
6067
+ if (started !== void 0) {
6068
+ return started + event.durationMs;
6069
+ }
6070
+ return void 0;
6071
+ }
6072
+ return parseComparableMs(event.timestamp);
6073
+ }
6032
6074
  function sortByTime2(events) {
6033
- return [...events].sort((a, b) => eventTime2(a).localeCompare(eventTime2(b)));
6075
+ return [...events].sort((a, b) => {
6076
+ const aMs = consumerStartMs(a) ?? 0;
6077
+ const bMs = consumerStartMs(b) ?? 0;
6078
+ if (aMs !== bMs) return aMs - bMs;
6079
+ return eventTime2(a).localeCompare(eventTime2(b));
6080
+ });
6034
6081
  }
6035
6082
  function errorCodeOf(event) {
6036
6083
  if (typeof event.error?.code === "string" && event.error.code.trim() !== "") {
@@ -6098,13 +6145,20 @@ function sameArguments(left, right) {
6098
6145
  }
6099
6146
  return { ok: true };
6100
6147
  }
6148
+ var UNEVALUABLE_WRITE_ERROR_CODES = /* @__PURE__ */ new Set([
6149
+ "TIMEOUT",
6150
+ "ETIMEDOUT",
6151
+ "UNKNOWN_COMPLETION",
6152
+ "DEADLINE_EXCEEDED"
6153
+ ]);
6101
6154
  function isUnevaluableWriteCompletion(event) {
6102
6155
  if (event.status === "running" || event.status === "unknown") return true;
6103
6156
  const attrs = event.attributes ?? {};
6104
6157
  if (attrs.timeout === true) return true;
6158
+ if (attrs.unknownCompletion === true) return true;
6105
6159
  if (attrs.completionState === "unknown" || attrs.completionState === "timeout") return true;
6106
6160
  const code = errorCodeOf(event)?.toUpperCase();
6107
- if (code === "TIMEOUT" || code === "UNKNOWN_COMPLETION" || code === "DEADLINE_EXCEEDED") {
6161
+ if (code && UNEVALUABLE_WRITE_ERROR_CODES.has(code)) {
6108
6162
  return true;
6109
6163
  }
6110
6164
  return false;
@@ -6152,14 +6206,17 @@ function collectExplicitReferences(event) {
6152
6206
  return refs;
6153
6207
  }
6154
6208
  function llmReferencesTool(llm, toolEvent, requireExplicit) {
6155
- if (!requireExplicit) {
6156
- return eventTime2(llm) >= eventTime2(toolEvent);
6157
- }
6158
- const refs = collectExplicitReferences(llm);
6159
- if (refs.has(toolEvent.eventId)) return true;
6160
- const toolCallId = workflowFor2(toolEvent).toolCallId;
6161
- if (toolCallId && refs.has(toolCallId)) return true;
6162
- return false;
6209
+ if (llm.runId !== toolEvent.runId) return false;
6210
+ if (requireExplicit) {
6211
+ const refs = collectExplicitReferences(llm);
6212
+ const toolCallId = workflowFor2(toolEvent).toolCallId;
6213
+ const hasRef = refs.has(toolEvent.eventId) || toolCallId !== void 0 && refs.has(toolCallId);
6214
+ if (!hasRef) return false;
6215
+ }
6216
+ const resultMs = resultAvailableMs(toolEvent);
6217
+ const consumerMs = consumerStartMs(llm);
6218
+ if (resultMs === void 0 || consumerMs === void 0) return false;
6219
+ return resultMs <= consumerMs;
6163
6220
  }
6164
6221
  function attemptIdOf2(event) {
6165
6222
  const value = workflowFor2(event).attemptId;
@@ -13573,6 +13630,70 @@ function mapOtlpEvents(value, pathPrefix) {
13573
13630
  unsupportedFields
13574
13631
  };
13575
13632
  }
13633
+ function promoteAgentInspectWorkflowIdentity(attributes, pathPrefix) {
13634
+ const warnings = [];
13635
+ const mapping = [
13636
+ ["agent_inspect.operation_id", "operationId", "string"],
13637
+ ["agent_inspect.attempt_id", "attemptId", "string"],
13638
+ ["agent_inspect.retry_of", "retryOf", "string"],
13639
+ ["agent_inspect.attempt_number", "attemptNumber", "int"]
13640
+ ];
13641
+ const metadata = attributes.metadata && typeof attributes.metadata === "object" && !Array.isArray(attributes.metadata) ? { ...attributes.metadata } : {};
13642
+ for (const [dotted, camel, kind] of mapping) {
13643
+ const raw = attributes[dotted];
13644
+ if (raw === void 0 || raw === null) continue;
13645
+ let promoted;
13646
+ if (kind === "int") {
13647
+ const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
13648
+ if (!Number.isFinite(n) || n < 1) {
13649
+ warnings.push({
13650
+ code: "otlp_identity_invalid",
13651
+ message: `Ignoring invalid ${dotted} identity value.`,
13652
+ severity: "warning",
13653
+ field: `${pathPrefix}.${dotted}`
13654
+ });
13655
+ continue;
13656
+ }
13657
+ promoted = Math.trunc(n);
13658
+ } else if (typeof raw === "string" && raw.trim() !== "") {
13659
+ promoted = raw.trim();
13660
+ } else {
13661
+ warnings.push({
13662
+ code: "otlp_identity_invalid",
13663
+ message: `Ignoring non-string ${dotted} identity value.`,
13664
+ severity: "warning",
13665
+ field: `${pathPrefix}.${dotted}`
13666
+ });
13667
+ continue;
13668
+ }
13669
+ const direct = attributes[camel];
13670
+ const nested = metadata[camel];
13671
+ if (direct !== void 0 && direct !== promoted) {
13672
+ warnings.push({
13673
+ code: "otlp_identity_conflict",
13674
+ message: `Conflicting ${camel}: attributes.${camel} vs ${dotted}; keeping camelCase.`,
13675
+ severity: "warning",
13676
+ field: `${pathPrefix}.${dotted}`
13677
+ });
13678
+ continue;
13679
+ }
13680
+ if (nested !== void 0 && nested !== promoted && direct === void 0) {
13681
+ warnings.push({
13682
+ code: "otlp_identity_conflict",
13683
+ message: `Conflicting ${camel}: attributes.metadata.${camel} vs ${dotted}; keeping nested.`,
13684
+ severity: "warning",
13685
+ field: `${pathPrefix}.${dotted}`
13686
+ });
13687
+ continue;
13688
+ }
13689
+ if (direct === void 0) attributes[camel] = promoted;
13690
+ if (nested === void 0) metadata[camel] = promoted;
13691
+ }
13692
+ if (Object.keys(metadata).length > 0) {
13693
+ attributes.metadata = metadata;
13694
+ }
13695
+ return warnings;
13696
+ }
13576
13697
  function mapOtlpSpan(context) {
13577
13698
  const { span, pathPrefix } = context;
13578
13699
  const warnings = [];
@@ -13604,6 +13725,7 @@ function mapOtlpSpan(context) {
13604
13725
  if (context.scopeVersion !== void 0) {
13605
13726
  attributes["scope.version"] = context.scopeVersion;
13606
13727
  }
13728
+ warnings.push(...promoteAgentInspectWorkflowIdentity(attributes, pathPrefix));
13607
13729
  for (const [key, value] of Object.entries(span)) {
13608
13730
  if (OTLP_SPAN_KEYS.has(key)) continue;
13609
13731
  unsupportedFields.push(`${pathPrefix}.${key}`);
@@ -13641,6 +13763,7 @@ function mapOtlpSpan(context) {
13641
13763
  if (events.events !== void 0) {
13642
13764
  attributes["otlp.events"] = events.events;
13643
13765
  }
13766
+ warnings.push(...promoteAgentInspectWorkflowIdentity(attributes, pathPrefix));
13644
13767
  const traceId = readStringField(span, ["traceId"]) ?? "trace-unknown";
13645
13768
  const spanId = readStringField(span, ["spanId"]) ?? "span-unknown";
13646
13769
  const parentSpanId = readStringField(span, ["parentSpanId"]);
@@ -15547,5 +15670,5 @@ function renderGateReport(result, options = {}) {
15547
15670
  }
15548
15671
 
15549
15672
  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 };
15550
- //# sourceMappingURL=chunk-USZJEEME.mjs.map
15551
- //# sourceMappingURL=chunk-USZJEEME.mjs.map
15673
+ //# sourceMappingURL=chunk-NALE36AJ.mjs.map
15674
+ //# sourceMappingURL=chunk-NALE36AJ.mjs.map