agent-inspect 6.31.3 → 6.31.5

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 (60) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  3. package/SECURITY.md +2 -0
  4. package/docs/GETTING-STARTED.md +2 -0
  5. package/docs/SAFE-TRACE-SHARING.md +1 -0
  6. package/package.json +1 -1
  7. package/packages/cli/dist/{chunk-SJ6FRNOE.mjs → chunk-LKEPABND.mjs} +86 -80
  8. package/packages/cli/dist/chunk-LKEPABND.mjs.map +1 -0
  9. package/packages/cli/dist/index.cjs +449 -91
  10. package/packages/cli/dist/index.cjs.map +1 -1
  11. package/packages/cli/dist/index.mjs +357 -14
  12. package/packages/cli/dist/index.mjs.map +1 -1
  13. package/packages/cli/dist/{src-YNEJOPRA.mjs → src-4WYF5RFI.mjs} +3 -3
  14. package/packages/cli/dist/{src-YNEJOPRA.mjs.map → src-4WYF5RFI.mjs.map} +1 -1
  15. package/packages/core/dist/advanced.cjs +97 -30
  16. package/packages/core/dist/advanced.cjs.map +1 -1
  17. package/packages/core/dist/advanced.mjs +13 -13
  18. package/packages/core/dist/checks.cjs +51 -49
  19. package/packages/core/dist/checks.cjs.map +1 -1
  20. package/packages/core/dist/checks.mjs +5 -5
  21. package/packages/core/dist/{chunk-PBNBQRXV.mjs → chunk-2KJR6X4V.mjs} +9 -9
  22. package/packages/core/dist/chunk-2KJR6X4V.mjs.map +1 -0
  23. package/packages/core/dist/{chunk-26YJSETN.mjs → chunk-7DHSWDKB.mjs} +19 -6
  24. package/packages/core/dist/chunk-7DHSWDKB.mjs.map +1 -0
  25. package/packages/core/dist/{chunk-BGF5JDJN.mjs → chunk-INE5IWLN.mjs} +3 -3
  26. package/packages/core/dist/{chunk-BGF5JDJN.mjs.map → chunk-INE5IWLN.mjs.map} +1 -1
  27. package/packages/core/dist/{chunk-ZFJ2ICTC.mjs → chunk-MTMTXTJL.mjs} +5 -5
  28. package/packages/core/dist/{chunk-ZFJ2ICTC.mjs.map → chunk-MTMTXTJL.mjs.map} +1 -1
  29. package/packages/core/dist/{chunk-KWBO36PH.mjs → chunk-NY4ILMXK.mjs} +4 -4
  30. package/packages/core/dist/{chunk-KWBO36PH.mjs.map → chunk-NY4ILMXK.mjs.map} +1 -1
  31. package/packages/core/dist/{chunk-WN5PT4GV.mjs → chunk-OSGNGRHF.mjs} +3 -3
  32. package/packages/core/dist/{chunk-WN5PT4GV.mjs.map → chunk-OSGNGRHF.mjs.map} +1 -1
  33. package/packages/core/dist/{chunk-CBPWLHNQ.mjs → chunk-PKDBFBJ7.mjs} +5 -76
  34. package/packages/core/dist/chunk-PKDBFBJ7.mjs.map +1 -0
  35. package/packages/core/dist/{chunk-VU6O5QAH.mjs → chunk-VLVCLAPB.mjs} +83 -5
  36. package/packages/core/dist/chunk-VLVCLAPB.mjs.map +1 -0
  37. package/packages/core/dist/exporters.cjs +242 -6
  38. package/packages/core/dist/exporters.cjs.map +1 -1
  39. package/packages/core/dist/exporters.mjs +143 -9
  40. package/packages/core/dist/exporters.mjs.map +1 -1
  41. package/packages/core/dist/index.cjs +97 -8
  42. package/packages/core/dist/index.cjs.map +1 -1
  43. package/packages/core/dist/index.mjs +6 -6
  44. package/packages/core/dist/logs.cjs +80 -2
  45. package/packages/core/dist/logs.cjs.map +1 -1
  46. package/packages/core/dist/logs.d.cts +2 -0
  47. package/packages/core/dist/logs.d.ts +2 -0
  48. package/packages/core/dist/logs.mjs +2 -2
  49. package/packages/core/dist/readers.cjs +2 -0
  50. package/packages/core/dist/readers.cjs.map +1 -1
  51. package/packages/core/dist/readers.mjs +2 -2
  52. package/packages/core/dist/writers.cjs +96 -8
  53. package/packages/core/dist/writers.cjs.map +1 -1
  54. package/packages/core/dist/writers.mjs +7 -8
  55. package/packages/core/dist/writers.mjs.map +1 -1
  56. package/packages/cli/dist/chunk-SJ6FRNOE.mjs.map +0 -1
  57. package/packages/core/dist/chunk-26YJSETN.mjs.map +0 -1
  58. package/packages/core/dist/chunk-CBPWLHNQ.mjs.map +0 -1
  59. package/packages/core/dist/chunk-PBNBQRXV.mjs.map +0 -1
  60. package/packages/core/dist/chunk-VU6O5QAH.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.31.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 909ea70: Strip userinfo credentials from common connection URIs (postgres, mysql, mongodb, redis, amqp, and TLS variants) under share/strict while keeping scheme, host, port, and database/queue path.
8
+
9
+ ## 6.31.4
10
+
11
+ ### Patch Changes
12
+
13
+ - fc7e7ad: Match credential keys across snake, kebab, and header spellings (`api_key`, `x-api-key`, `access_token`, …) in share/strict export and `@agent-inspect/redact`.
14
+ - fc7e7ad: URL-aware redaction keeps host/path while stripping http(s) userinfo and credential query/fragment params, residual-checks export after rewrite, and treats only _complete_ `[REDACTED]` / `[HASH:…]` placeholders as safe (marker prefixes cannot hide residual secrets). Postgres and other non-http URI userinfo remain tracked separately.
15
+ - 98e0f30: Preserve multibyte UTF-8 across `tail --file` polling reads, and request restrictive POSIX creation modes (`0700` directories / `0600` JSONL) for new built-in raw traces with a `doctor` confidentiality warning. Existing paths are not rewritten.
16
+
3
17
  ## 6.31.3
4
18
 
5
19
  ### 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.3** · persisted schema `1.0` · Node.js `>=20` · MIT.
216
+ **Current published baseline:** **6.31.5** · 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/SECURITY.md CHANGED
@@ -53,6 +53,8 @@ In scope:
53
53
  - Manual tracing writes local JSONL files (see `docs/SCHEMA.md`).
54
54
  - The CLI reads and renders local files.
55
55
  - Exports generate local strings/files only (Markdown/HTML/OpenInference/OTLP JSON); they do not upload anywhere.
56
+ - On POSIX, **newly created** built-in raw trace directories request mode `0700` and new JSONL files request `0600`. Existing paths are **not** rewritten. Local-first custody does **not** replace host filesystem permissions, disk encryption, CI access controls, or retention policy, and does not claim compliance or guaranteed confidentiality.
57
+ - For existing shared, synchronized, or CI trace directories, restrict manually (`chmod 700` on the directory; review JSONL files with `chmod 600`) and prefer a user-private location when possible.
56
58
 
57
59
  ## Redaction expectations
58
60
 
@@ -287,6 +287,8 @@ agent-inspect view <runId> --tui
287
287
  - Persisted events are size-bounded by default (see `docs/API.md`).
288
288
  - Confidence labels are required to keep attribution honest.
289
289
  - AgentInspect is for local debugging, not production monitoring.
290
+ - On POSIX, new built-in raw trace directories request `0700` and new JSONL files request `0600`. Pre-existing paths are not chmodded. Local-first does not replace host permissions, disk encryption, CI access controls, or retention policy.
291
+ - `doctor` warns when an existing POSIX trace directory still has group/other permission bits; remediate with `chmod 700` on the directory and review JSONL files with `chmod 600`.
290
292
 
291
293
  ## 16. Next docs
292
294
 
@@ -43,6 +43,7 @@ For reviewer-reproducible trajectory checks (6.28+), prefer Evidence that includ
43
43
  - Inspect log-derived fields from `logs` / `tail` ingest configs, including custom `run-id`, `event`, `parent`, timestamp, and attribute mappings.
44
44
  - Avoid posting raw prompts, completions, tool inputs, or tool outputs in public threads unless the content is approved for public disclosure.
45
45
  - For cross-system correlation, retain a bounded identifier instead of copying the external record or payload. Follow [External reference metadata](./EXTERNAL-REFERENCES.md), and expect `share` / `strict` profiles to redact the named correlation fields.
46
+ - `share` and `strict` rewrite http(s) URLs rather than dropping them: userinfo and credential-looking query or fragment params are replaced, identifier-like path segments become `[id]`, and scheme, host and path stay, so a retry on the same page is still recognizable. The same profiles also strip userinfo from common connection URIs (`postgres` / `postgresql`, `mysql` / `mariadb`, `mongodb` / `mongodb+srv`, `redis` / `rediss`, `amqp` / `amqps`) while keeping scheme, host, port, and database/queue path: `postgres://user:secret@db.example.com:5432/app_db` becomes `postgres://db.example.com:5432/app_db`. Other schemes still need a manual check.
46
47
  - Prefer Markdown export for issue or PR sharing when a summarized tree is enough.
47
48
 
48
49
  ## Remove or replace sensitive values
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-inspect",
3
- "version": "6.31.3",
3
+ "version": "6.31.5",
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",
@@ -1,7 +1,7 @@
1
- import { readdir, stat, readFile, access } from 'fs/promises';
2
1
  import os from 'os';
3
2
  import path7 from 'path';
4
3
  import crypto2, { createHash, webcrypto } from 'crypto';
4
+ import { readdir, stat, readFile, access } from 'fs/promises';
5
5
  import process2 from 'process';
6
6
  import tty from 'tty';
7
7
  import { AsyncLocalStorage } from 'async_hooks';
@@ -758,6 +758,80 @@ function parseTraceJsonl(raw, options = {}) {
758
758
  else if (saw10) format = "1.0";
759
759
  return { format, sourceEventCount, events: traceEvents, persisted, rows };
760
760
  }
761
+
762
+ // packages/core/src/safety/sensitive-key.ts
763
+ function keyHasExplicitSeparator(value) {
764
+ return /[_\-.]/.test(value);
765
+ }
766
+ function normalizeSensitiveKey(value) {
767
+ return value.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
768
+ }
769
+ var NON_CREDENTIAL_TOKEN_CONFIG_KEYS = new Set(
770
+ [
771
+ "tokens",
772
+ "max_tokens",
773
+ "min_tokens",
774
+ "ls_max_tokens",
775
+ "token_count",
776
+ "token_limit",
777
+ "token_budget",
778
+ "input_tokens",
779
+ "output_tokens",
780
+ "total_tokens",
781
+ "cached_tokens",
782
+ "prompt_tokens",
783
+ "completion_tokens"
784
+ ].map(normalizeSensitiveKey)
785
+ );
786
+ var DEFAULT_CREDENTIAL_SENSITIVE_KEYS = [
787
+ "authorization",
788
+ "cookie",
789
+ "token",
790
+ "access_token",
791
+ "accesstoken",
792
+ "auth_token",
793
+ "authtoken",
794
+ "refresh_token",
795
+ "refreshtoken",
796
+ "id_token",
797
+ "idtoken",
798
+ "bearer_token",
799
+ "bearertoken",
800
+ "api_token",
801
+ "apitoken",
802
+ "apikey",
803
+ "api_key",
804
+ "password",
805
+ "secret",
806
+ "email"
807
+ ];
808
+ function isTokenCredentialKey(normalized) {
809
+ if (NON_CREDENTIAL_TOKEN_CONFIG_KEYS.has(normalized)) return false;
810
+ if (normalized === "token") return true;
811
+ if (normalized.endsWith("tokens")) return false;
812
+ return normalized.endsWith("token");
813
+ }
814
+ function isCredentialSensitiveKey(key, sensitiveKeys = DEFAULT_CREDENTIAL_SENSITIVE_KEYS) {
815
+ if (!key) return false;
816
+ const normalized = normalizeSensitiveKey(key);
817
+ if (!normalized) return false;
818
+ if (NON_CREDENTIAL_TOKEN_CONFIG_KEYS.has(normalized)) return false;
819
+ const allowPrefixCompound = keyHasExplicitSeparator(key);
820
+ for (const sensitive of sensitiveKeys) {
821
+ const s = normalizeSensitiveKey(sensitive);
822
+ if (!s) continue;
823
+ if (s === "token") {
824
+ if (isTokenCredentialKey(normalized)) return true;
825
+ continue;
826
+ }
827
+ if (normalized === s) return true;
828
+ if (normalized.endsWith(`_${s}`)) return true;
829
+ if (allowPrefixCompound && normalized.startsWith(`${s}_`)) return true;
830
+ }
831
+ return false;
832
+ }
833
+
834
+ // packages/core/src/logs/redactor.ts
761
835
  var DEFAULT_REDACT_KEYS = [
762
836
  "authorization",
763
837
  "cookie",
@@ -781,7 +855,7 @@ function compileRules(rules, extraKeys) {
781
855
  const out = /* @__PURE__ */ new Map();
782
856
  const set = (r) => {
783
857
  const k = toKey(r.key);
784
- out.set(k, { ...r, key: k });
858
+ out.set(k, { ...r, key: k, raw: r.raw ?? r.key });
785
859
  };
786
860
  for (const k of DEFAULT_REDACT_KEYS) {
787
861
  set({ key: k, strategy: "full" });
@@ -810,9 +884,13 @@ var Redactor = class {
810
884
  constructor(options) {
811
885
  this.#rules = compileRules(options?.rules, options?.extraKeys);
812
886
  }
887
+ /** Field names this redactor treats as sensitive, for value-level helpers. */
888
+ get sensitiveKeys() {
889
+ return this.#rules.map((rule) => rule.raw ?? rule.key);
890
+ }
813
891
  redactValue(key, value) {
814
892
  const k = toKey(key);
815
- const rule = this.#rules.find((r) => r.key === k);
893
+ const rule = this.#rules.find((r) => r.key === k) ?? this.#rules.find((r) => isCredentialSensitiveKey(key, [r.raw ?? r.key]));
816
894
  if (!rule) {
817
895
  return this.#redactNested(value);
818
896
  }
@@ -852,7 +930,7 @@ var Redactor = class {
852
930
  };
853
931
 
854
932
  // packages/core/src/safety/credential-value-patterns.ts
855
- var KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=([^\s"'\\]{8,})/i;
933
+ var KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i;
856
934
  var HIGH_CONFIDENCE_CREDENTIAL_PATTERNS = [
857
935
  /^(?:basic|bearer|digest|apikey)\s+[a-z0-9._~+/=-]+$/i,
858
936
  /\bbearer\s+[a-z0-9._~+/=-]{12,}\b/i,
@@ -4932,78 +5010,6 @@ formatProgrammaticDiagnostic(
4932
5010
  "AI_TRACE_FACTS_INPUT_NOT_NORMALIZED"
4933
5011
  );
4934
5012
 
4935
- // packages/core/src/safety/sensitive-key.ts
4936
- function keyHasExplicitSeparator(value) {
4937
- return /[_\-.]/.test(value);
4938
- }
4939
- function normalizeSensitiveKey(value) {
4940
- return value.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
4941
- }
4942
- var NON_CREDENTIAL_TOKEN_CONFIG_KEYS = new Set(
4943
- [
4944
- "tokens",
4945
- "max_tokens",
4946
- "min_tokens",
4947
- "ls_max_tokens",
4948
- "token_count",
4949
- "token_limit",
4950
- "token_budget",
4951
- "input_tokens",
4952
- "output_tokens",
4953
- "total_tokens",
4954
- "cached_tokens",
4955
- "prompt_tokens",
4956
- "completion_tokens"
4957
- ].map(normalizeSensitiveKey)
4958
- );
4959
- var DEFAULT_CREDENTIAL_SENSITIVE_KEYS = [
4960
- "authorization",
4961
- "cookie",
4962
- "token",
4963
- "access_token",
4964
- "accesstoken",
4965
- "auth_token",
4966
- "authtoken",
4967
- "refresh_token",
4968
- "refreshtoken",
4969
- "id_token",
4970
- "idtoken",
4971
- "bearer_token",
4972
- "bearertoken",
4973
- "api_token",
4974
- "apitoken",
4975
- "apikey",
4976
- "api_key",
4977
- "password",
4978
- "secret",
4979
- "email"
4980
- ];
4981
- function isTokenCredentialKey(normalized) {
4982
- if (NON_CREDENTIAL_TOKEN_CONFIG_KEYS.has(normalized)) return false;
4983
- if (normalized === "token") return true;
4984
- if (normalized.endsWith("tokens")) return false;
4985
- return normalized.endsWith("token");
4986
- }
4987
- function isCredentialSensitiveKey(key, sensitiveKeys = DEFAULT_CREDENTIAL_SENSITIVE_KEYS) {
4988
- if (!key) return false;
4989
- const normalized = normalizeSensitiveKey(key);
4990
- if (!normalized) return false;
4991
- if (NON_CREDENTIAL_TOKEN_CONFIG_KEYS.has(normalized)) return false;
4992
- const allowPrefixCompound = keyHasExplicitSeparator(key);
4993
- for (const sensitive of sensitiveKeys) {
4994
- const s = normalizeSensitiveKey(sensitive);
4995
- if (!s) continue;
4996
- if (s === "token") {
4997
- if (isTokenCredentialKey(normalized)) return true;
4998
- continue;
4999
- }
5000
- if (normalized === s) return true;
5001
- if (normalized.endsWith(`_${s}`)) return true;
5002
- if (allowPrefixCompound && normalized.startsWith(`${s}_`)) return true;
5003
- }
5004
- return false;
5005
- }
5006
-
5007
5013
  // packages/core/src/checks/contract-scope.ts
5008
5014
  function diagnostic(code, message, ruleId) {
5009
5015
  return {
@@ -7301,7 +7307,7 @@ var DEFAULT_SECRET_PATTERNS = [
7301
7307
  // Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
7302
7308
  {
7303
7309
  id: "key-value-secret",
7304
- pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=([^\s"'\\]{8,})/i
7310
+ pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i
7305
7311
  }
7306
7312
  ];
7307
7313
  function compareStrings(a, b) {
@@ -14884,6 +14890,6 @@ function renderGateReport(result, options = {}) {
14884
14890
  return renderGateSummaryMarkdown(result);
14885
14891
  }
14886
14892
 
14887
- export { ATTRIBUTION_CONFIDENCES, COHORT_METRIC_IDS, 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, isPersistedInspectEvent, loadSessionRunRecords, loadSuiteConfig, loadTraceMetadataList, manualTraceEventsToComparableRun, nanoid, normalizeBundleOutputPath, openTrace, parseCohortMetricList, parseDuration, parseDurationFilter, parseGateList, parseTraceJsonl, 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, summarizeObservedOutcomes, summarizeSemanticParity, traceEventToPersistedInspectEvent, truncateName, truncateStringForProfile, validateEvent, validateSuiteConfig, verifyEvidenceDirectory, zeroKinds };
14888
- //# sourceMappingURL=chunk-SJ6FRNOE.mjs.map
14889
- //# sourceMappingURL=chunk-SJ6FRNOE.mjs.map
14893
+ 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, 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 };
14894
+ //# sourceMappingURL=chunk-LKEPABND.mjs.map
14895
+ //# sourceMappingURL=chunk-LKEPABND.mjs.map