agent-inspect 6.31.12 → 6.31.13

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 (36) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/packages/cli/dist/{chunk-GBAGZVUX.mjs → chunk-ZAYVAHIH.mjs} +82 -13
  5. package/packages/cli/dist/chunk-ZAYVAHIH.mjs.map +1 -0
  6. package/packages/cli/dist/index.cjs +286 -44
  7. package/packages/cli/dist/index.cjs.map +1 -1
  8. package/packages/cli/dist/index.mjs +209 -36
  9. package/packages/cli/dist/index.mjs.map +1 -1
  10. package/packages/cli/dist/{src-F44EQY4S.mjs → src-KP4UIFK5.mjs} +3 -3
  11. package/packages/cli/dist/{src-F44EQY4S.mjs.map → src-KP4UIFK5.mjs.map} +1 -1
  12. package/packages/core/dist/advanced.cjs +80 -11
  13. package/packages/core/dist/advanced.cjs.map +1 -1
  14. package/packages/core/dist/advanced.mjs +27 -7
  15. package/packages/core/dist/advanced.mjs.map +1 -1
  16. package/packages/core/dist/{chunk-OAUNS5CS.mjs → chunk-JE3TUFAQ.mjs} +3 -3
  17. package/packages/core/dist/{chunk-OAUNS5CS.mjs.map → chunk-JE3TUFAQ.mjs.map} +1 -1
  18. package/packages/core/dist/{chunk-QOC3PJO3.mjs → chunk-NJUSSJX3.mjs} +3 -3
  19. package/packages/core/dist/{chunk-QOC3PJO3.mjs.map → chunk-NJUSSJX3.mjs.map} +1 -1
  20. package/packages/core/dist/{chunk-AK5EN4U2.mjs → chunk-YU6XT5A2.mjs} +58 -9
  21. package/packages/core/dist/chunk-YU6XT5A2.mjs.map +1 -0
  22. package/packages/core/dist/exporters.cjs +205 -32
  23. package/packages/core/dist/exporters.cjs.map +1 -1
  24. package/packages/core/dist/exporters.mjs +205 -32
  25. package/packages/core/dist/exporters.mjs.map +1 -1
  26. package/packages/core/dist/logs.cjs +56 -7
  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 +56 -7
  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 +56 -7
  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-GBAGZVUX.mjs.map +0 -1
  36. package/packages/core/dist/chunk-AK5EN4U2.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { ATTRIBUTION_CONFIDENCES, createSafetyRawContentRule, createSafetyRedactionRule, createSafetySecretPatternRule, createSafetyOversizedAttributeRule, resolveTraceDir, parseDuration, buildSessionIndex, resolveBundleRunIds, getTraceFilePath, openTrace, sha256Hex, collectTraceSchemaVersions, aggregateBundleSafeStatus, bundleFailsOnSafety, bundleRunAssetRelativePath, buildPlaceholderArtifact, EVIDENCE_HTML_FILENAME, EVIDENCE_MANIFEST_FILENAME, buildBundleMetadata, buildBundleSummaryMarkdown, buildEvidenceHtmlShell, buildEvidenceProvenanceViewHtml, EVIDENCE_FORMAT_VERSION, inferEvidenceFileRole, buildEvidenceSafetyViewHtml, buildEvidenceDiffViewHtml, buildEvidenceCircuitViewHtml, buildEvidenceOutcomesViewHtml, buildEvidenceContractsViewHtml, buildEvidenceToolsLlmViewHtml, buildEvidenceCausalFailureViewHtml, buildEvidenceTimelineViewHtml, buildEvidenceTreeViewHtml, buildEvidenceManifest, serializeEvidenceManifest, buildZipArchive, assertBundlePathContained, enrichSessionRunRecord, normalizeBundleOutputPath, sanitizeBundleRunId, defaultBundleOutputPath, runTraceChecks, assertEvidenceRelativePath, TraceDirectory, loadTraceMetadataList, loadSessionRunRecords, TraceReadError, resolveRedactionProfile, applyProfileMetadataCaps, Redactor, flattenTree, escapeHtml, safeString, compactAttributes, stableJson, escapeMarkdown, DEFAULT_REDACT_KEYS, truncateStringForProfile, stringContainsHighConfidenceCredential, isCredentialSensitiveKey, extractMetadata, filterTraces, truncateName, buildRunSummary, formatDuration, formatTimestamp, renderErrorLine, isAgentInspectTrace, persistedInspectEventsToRunTrees, defineTraceContract, filterMetasBySessionScope, evaluateTraceContract, aggregateSessionCheckResults, createBaselineRegressionRule, summarizeSemanticParity, buildEvidenceCiPackage, verifyEvidenceDirectory, diffTraceEvents, renderRunDiff, buildRunTimeline, renderTimeline, buildTraceStats, renderTraceStats, parseDurationFilter, searchTraces, formatStepLabel, buildActivitySummary, renderActivitySummaryHuman, buildRunWhatSummary, renderRunWhat, buildLocalExplanation, resolveSuiteTemplate, defaultSuiteConfigTemplate, loadSuiteConfig, validateSuiteConfig, runSuite, renderSuiteReport, analyzeCohort, renderCohortReport, gateHasThresholds, runGate, renderGateReport, persistedInspectEventsToTraceEvents, renderStepLine, getIndent, TreeBuilder, validateEvent, traceEventToPersistedInspectEvent, isPersistedInspectEvent, createRunStatusRule, createStructureOrphanRule, createStructureCycleRule, createRunDurationRule, createMaxStepDurationRule, createRequireCompletedRule, createStallDetectionRule, createObservedOutcomeRule, createRunDepthRule, createToolUsageRule, createLlmUsageRule, createStructureRelationshipRule, createStructureParallelWidthRule, projectLogicalEvents, summarizeObservedOutcomes, extractOutcomesFromTraceEvents, renderObservedOutcomesMarkdown, renderObservedOutcomesHtml, DEFAULT_SUITE_ARTIFACTS_DIR, parseCohortMetricList, COHORT_METRIC_IDS, parseGateList, nanoid, isAttributionConfidence, zeroKinds, diffRuns, manualTraceEventsToComparableRun } from './chunk-GBAGZVUX.mjs';
2
+ import { ATTRIBUTION_CONFIDENCES, createSafetyRawContentRule, createSafetyRedactionRule, createSafetySecretPatternRule, createSafetyOversizedAttributeRule, resolveTraceDir, parseDuration, buildSessionIndex, resolveBundleRunIds, getTraceFilePath, openTrace, sha256Hex, collectTraceSchemaVersions, aggregateBundleSafeStatus, bundleFailsOnSafety, bundleRunAssetRelativePath, buildPlaceholderArtifact, EVIDENCE_HTML_FILENAME, EVIDENCE_MANIFEST_FILENAME, buildBundleMetadata, buildBundleSummaryMarkdown, buildEvidenceHtmlShell, buildEvidenceProvenanceViewHtml, EVIDENCE_FORMAT_VERSION, inferEvidenceFileRole, buildEvidenceSafetyViewHtml, buildEvidenceDiffViewHtml, buildEvidenceCircuitViewHtml, buildEvidenceOutcomesViewHtml, buildEvidenceContractsViewHtml, buildEvidenceToolsLlmViewHtml, buildEvidenceCausalFailureViewHtml, buildEvidenceTimelineViewHtml, buildEvidenceTreeViewHtml, buildEvidenceManifest, serializeEvidenceManifest, buildZipArchive, assertBundlePathContained, enrichSessionRunRecord, normalizeBundleOutputPath, sanitizeBundleRunId, defaultBundleOutputPath, runTraceChecks, assertEvidenceRelativePath, TraceDirectory, loadTraceMetadataList, loadSessionRunRecords, TraceReadError, resolveRedactionProfile, applyProfileMetadataCaps, Redactor, flattenTree, escapeHtml, safeString, compactAttributes, stableJson, escapeMarkdown, DEFAULT_REDACT_KEYS, truncateStringForProfile, stringContainsHighConfidenceCredential, isCredentialSensitiveKey, extractMetadata, filterTraces, truncateName, buildRunSummary, formatDuration, formatTimestamp, renderErrorLine, isAgentInspectTrace, persistedInspectEventsToRunTrees, defineTraceContract, filterMetasBySessionScope, evaluateTraceContract, aggregateSessionCheckResults, createBaselineRegressionRule, summarizeSemanticParity, buildEvidenceCiPackage, verifyEvidenceDirectory, diffTraceEvents, renderRunDiff, buildRunTimeline, renderTimeline, buildTraceStats, renderTraceStats, parseDurationFilter, searchTraces, formatStepLabel, buildActivitySummary, renderActivitySummaryHuman, buildRunWhatSummary, renderRunWhat, buildLocalExplanation, resolveSuiteTemplate, defaultSuiteConfigTemplate, loadSuiteConfig, validateSuiteConfig, runSuite, renderSuiteReport, analyzeCohort, renderCohortReport, gateHasThresholds, runGate, renderGateReport, persistedInspectEventsToTraceEvents, renderStepLine, getIndent, TreeBuilder, validateEvent, traceEventToPersistedInspectEvent, isPersistedInspectEvent, createRunStatusRule, createStructureOrphanRule, createStructureCycleRule, createRunDurationRule, createMaxStepDurationRule, createRequireCompletedRule, createStallDetectionRule, createObservedOutcomeRule, createRunDepthRule, createToolUsageRule, createLlmUsageRule, createStructureRelationshipRule, createStructureParallelWidthRule, projectLogicalEvents, summarizeObservedOutcomes, extractOutcomesFromTraceEvents, renderObservedOutcomesMarkdown, renderObservedOutcomesHtml, DEFAULT_SUITE_ARTIFACTS_DIR, parseCohortMetricList, COHORT_METRIC_IDS, parseGateList, nanoid, isAttributionConfidence, zeroKinds, diffRuns, manualTraceEventsToComparableRun } from './chunk-ZAYVAHIH.mjs';
3
3
  import { realpathSync, constants as constants$1, existsSync, readFileSync } from 'fs';
4
4
  import path19 from 'path';
5
5
  import { fileURLToPath, pathToFileURL } from 'url';
@@ -14,7 +14,7 @@ import { createServer } from 'http';
14
14
  import { createRequire } from 'module';
15
15
 
16
16
  // package.json
17
- var version = "6.31.12";
17
+ var version = "6.31.13";
18
18
 
19
19
  // packages/cli/src/trace-dir-scale.ts
20
20
  var TRACE_COUNT_WARN = 1e3;
@@ -2752,7 +2752,14 @@ function exportOtlpJson(tree, options) {
2752
2752
 
2753
2753
  // packages/core/src/exporters/validation.ts
2754
2754
  var EXPERIMENTAL = "Experimental compatibility export \u2014 verify against your target tooling before relying on it.";
2755
+ var UINT64_MAX = 18446744073709551615n;
2756
+ var INT64_MIN = -9223372036854775808n;
2757
+ var INT64_MAX = 9223372036854775807n;
2758
+ var MAX_ANYVALUE_DEPTH = 8;
2759
+ var MAX_ANYVALUE_ELEMENTS = 256;
2760
+ var MAX_DIAGNOSTIC_ERRORS = 64;
2755
2761
  function pushPath(errors, path30, message) {
2762
+ if (errors.length >= MAX_DIAGNOSTIC_ERRORS) return;
2756
2763
  errors.push(`${path30}: ${message}`);
2757
2764
  }
2758
2765
  function isRecord5(value) {
@@ -2761,7 +2768,59 @@ function isRecord5(value) {
2761
2768
  function isHexId(value, byteLen) {
2762
2769
  return typeof value === "string" && new RegExp(`^[0-9a-fA-F]{${byteLen * 2}}$`).test(value);
2763
2770
  }
2764
- function validateAnyValue(errors, path30, value) {
2771
+ function parseDecimalIntegerString(value) {
2772
+ if (typeof value !== "string" || !/^-?\d+$/.test(value)) {
2773
+ return { ok: false, reason: "must be a decimal integer string" };
2774
+ }
2775
+ try {
2776
+ return { ok: true, n: BigInt(value) };
2777
+ } catch {
2778
+ return { ok: false, reason: "out of integer range" };
2779
+ }
2780
+ }
2781
+ function validateUint64String(errors, path30, value, label) {
2782
+ const parsed = parseDecimalIntegerString(value);
2783
+ if (!parsed.ok) {
2784
+ pushPath(errors, path30, `${label} ${parsed.reason}`);
2785
+ return;
2786
+ }
2787
+ if (parsed.n < 0n || parsed.n > UINT64_MAX) {
2788
+ pushPath(
2789
+ errors,
2790
+ path30,
2791
+ `${label} must be an unsigned 64-bit integer (0..${UINT64_MAX.toString()})`
2792
+ );
2793
+ }
2794
+ }
2795
+ function validateInt64String(errors, path30, value) {
2796
+ const parsed = parseDecimalIntegerString(value);
2797
+ if (!parsed.ok) {
2798
+ pushPath(errors, path30, parsed.reason);
2799
+ return;
2800
+ }
2801
+ if (parsed.n < INT64_MIN || parsed.n > INT64_MAX) {
2802
+ pushPath(
2803
+ errors,
2804
+ path30,
2805
+ `must be a signed 64-bit integer (${INT64_MIN.toString()}..${INT64_MAX.toString()})`
2806
+ );
2807
+ }
2808
+ }
2809
+ function validateAnyValue(errors, path30, value, depth = 0, counters = { elements: 0 }) {
2810
+ if (errors.length >= MAX_DIAGNOSTIC_ERRORS) return;
2811
+ if (depth > MAX_ANYVALUE_DEPTH) {
2812
+ pushPath(errors, path30, `AnyValue nesting exceeds depth ${MAX_ANYVALUE_DEPTH}`);
2813
+ return;
2814
+ }
2815
+ counters.elements += 1;
2816
+ if (counters.elements > MAX_ANYVALUE_ELEMENTS) {
2817
+ pushPath(
2818
+ errors,
2819
+ path30,
2820
+ `AnyValue element count exceeds ${MAX_ANYVALUE_ELEMENTS}`
2821
+ );
2822
+ return;
2823
+ }
2765
2824
  if (!isRecord5(value)) {
2766
2825
  pushPath(errors, path30, "must be an AnyValue object");
2767
2826
  return;
@@ -2781,13 +2840,99 @@ function validateAnyValue(errors, path30, value) {
2781
2840
  path30,
2782
2841
  `AnyValue must set exactly one variant (found ${variants.length}: ${variants.join(",")})`
2783
2842
  );
2843
+ return;
2784
2844
  }
2785
- if (value.intValue !== void 0) {
2786
- if (typeof value.intValue !== "string" || !/^-?\d+$/.test(value.intValue)) {
2787
- pushPath(errors, `${path30}.intValue`, "must be a decimal integer string");
2845
+ const arm = variants[0];
2846
+ switch (arm) {
2847
+ case "stringValue":
2848
+ if (typeof value.stringValue !== "string") {
2849
+ pushPath(errors, `${path30}.stringValue`, "must be a string");
2850
+ }
2851
+ break;
2852
+ case "boolValue":
2853
+ if (typeof value.boolValue !== "boolean") {
2854
+ pushPath(errors, `${path30}.boolValue`, "must be a boolean");
2855
+ }
2856
+ break;
2857
+ case "intValue":
2858
+ validateInt64String(errors, `${path30}.intValue`, value.intValue);
2859
+ break;
2860
+ case "doubleValue":
2861
+ if (typeof value.doubleValue !== "number" || !Number.isFinite(value.doubleValue)) {
2862
+ pushPath(errors, `${path30}.doubleValue`, "must be a finite number");
2863
+ }
2864
+ break;
2865
+ case "bytesValue":
2866
+ if (typeof value.bytesValue !== "string") {
2867
+ pushPath(errors, `${path30}.bytesValue`, "must be a base64 string");
2868
+ }
2869
+ break;
2870
+ case "arrayValue": {
2871
+ if (!isRecord5(value.arrayValue)) {
2872
+ pushPath(errors, `${path30}.arrayValue`, "must be an object");
2873
+ break;
2874
+ }
2875
+ const values = value.arrayValue.values;
2876
+ if (values === void 0) break;
2877
+ if (!Array.isArray(values)) {
2878
+ pushPath(errors, `${path30}.arrayValue.values`, "must be an array");
2879
+ break;
2880
+ }
2881
+ values.forEach((item, i) => {
2882
+ validateAnyValue(
2883
+ errors,
2884
+ `${path30}.arrayValue.values[${i}]`,
2885
+ item,
2886
+ depth + 1,
2887
+ counters
2888
+ );
2889
+ });
2890
+ break;
2891
+ }
2892
+ case "kvlistValue": {
2893
+ if (!isRecord5(value.kvlistValue)) {
2894
+ pushPath(errors, `${path30}.kvlistValue`, "must be an object");
2895
+ break;
2896
+ }
2897
+ const values = value.kvlistValue.values;
2898
+ if (values === void 0) break;
2899
+ if (!Array.isArray(values)) {
2900
+ pushPath(errors, `${path30}.kvlistValue.values`, "must be an array");
2901
+ break;
2902
+ }
2903
+ values.forEach((item, i) => {
2904
+ const itemPath = `${path30}.kvlistValue.values[${i}]`;
2905
+ if (!isRecord5(item)) {
2906
+ pushPath(errors, itemPath, "must be a KeyValue object");
2907
+ return;
2908
+ }
2909
+ if (typeof item.key !== "string") {
2910
+ pushPath(errors, `${itemPath}.key`, "must be a string");
2911
+ }
2912
+ validateAnyValue(errors, `${itemPath}.value`, item.value, depth + 1, counters);
2913
+ });
2914
+ break;
2788
2915
  }
2789
2916
  }
2790
2917
  }
2918
+ function validateKeyValueList(errors, path30, attrs) {
2919
+ if (attrs === void 0) return;
2920
+ if (!Array.isArray(attrs)) {
2921
+ pushPath(errors, path30, "must be an array");
2922
+ return;
2923
+ }
2924
+ attrs.forEach((attr, ai) => {
2925
+ const attrPath = `${path30}[${ai}]`;
2926
+ if (!isRecord5(attr)) {
2927
+ pushPath(errors, attrPath, "must be an object");
2928
+ return;
2929
+ }
2930
+ if (typeof attr.key !== "string") {
2931
+ pushPath(errors, `${attrPath}.key`, "must be a string");
2932
+ }
2933
+ validateAnyValue(errors, `${attrPath}.value`, attr.value);
2934
+ });
2935
+ }
2791
2936
  function validateOtlpJson(content) {
2792
2937
  const errors = [];
2793
2938
  const warnings = [
@@ -2816,6 +2961,13 @@ function validateOtlpJson(content) {
2816
2961
  pushPath(errors, rsPath, "must be an object");
2817
2962
  return;
2818
2963
  }
2964
+ if (isRecord5(resourceSpan.resource)) {
2965
+ validateKeyValueList(
2966
+ errors,
2967
+ `${rsPath}.resource.attributes`,
2968
+ resourceSpan.resource.attributes
2969
+ );
2970
+ }
2819
2971
  if (!Array.isArray(resourceSpan.scopeSpans)) {
2820
2972
  pushPath(errors, `${rsPath}.scopeSpans`, "must be an array");
2821
2973
  return;
@@ -2826,6 +2978,13 @@ function validateOtlpJson(content) {
2826
2978
  pushPath(errors, ssPath, "must be an object");
2827
2979
  return;
2828
2980
  }
2981
+ if (isRecord5(scopeSpan.scope)) {
2982
+ validateKeyValueList(
2983
+ errors,
2984
+ `${ssPath}.scope.attributes`,
2985
+ scopeSpan.scope.attributes
2986
+ );
2987
+ }
2829
2988
  if (!Array.isArray(scopeSpan.spans)) {
2830
2989
  pushPath(errors, `${ssPath}.spans`, "must be an array");
2831
2990
  return;
@@ -2860,44 +3019,58 @@ function validateOtlpJson(content) {
2860
3019
  if (typeof span.name !== "string") {
2861
3020
  pushPath(errors, `${spanPath}.name`, "must be a string");
2862
3021
  }
2863
- if (typeof span.startTimeUnixNano !== "string" || !/^\d+$/.test(span.startTimeUnixNano)) {
2864
- pushPath(
2865
- errors,
2866
- `${spanPath}.startTimeUnixNano`,
2867
- "must be a decimal-string 64-bit integer"
2868
- );
2869
- }
2870
- if (span.endTimeUnixNano !== void 0 && (typeof span.endTimeUnixNano !== "string" || !/^\d+$/.test(span.endTimeUnixNano))) {
2871
- pushPath(
3022
+ validateUint64String(
3023
+ errors,
3024
+ `${spanPath}.startTimeUnixNano`,
3025
+ span.startTimeUnixNano,
3026
+ "startTimeUnixNano"
3027
+ );
3028
+ if (span.endTimeUnixNano !== void 0) {
3029
+ validateUint64String(
2872
3030
  errors,
2873
3031
  `${spanPath}.endTimeUnixNano`,
2874
- "must be a decimal-string 64-bit integer when present"
3032
+ span.endTimeUnixNano,
3033
+ "endTimeUnixNano"
2875
3034
  );
2876
3035
  }
2877
- if (typeof span.startTimeUnixNano === "string" && /^\d+$/.test(span.startTimeUnixNano) && typeof span.endTimeUnixNano === "string" && /^\d+$/.test(span.endTimeUnixNano)) {
2878
- try {
2879
- if (BigInt(span.endTimeUnixNano) < BigInt(span.startTimeUnixNano)) {
2880
- pushPath(
3036
+ if (typeof span.startTimeUnixNano === "string" && typeof span.endTimeUnixNano === "string") {
3037
+ const start = parseDecimalIntegerString(span.startTimeUnixNano);
3038
+ const end = parseDecimalIntegerString(span.endTimeUnixNano);
3039
+ if (start.ok && end.ok && end.n < start.n) {
3040
+ pushPath(
3041
+ errors,
3042
+ `${spanPath}.endTimeUnixNano`,
3043
+ "must be >= startTimeUnixNano"
3044
+ );
3045
+ }
3046
+ }
3047
+ validateKeyValueList(errors, `${spanPath}.attributes`, span.attributes);
3048
+ if (Array.isArray(span.events)) {
3049
+ span.events.forEach((event, ei) => {
3050
+ const eventPath = `${spanPath}.events[${ei}]`;
3051
+ if (!isRecord5(event)) {
3052
+ pushPath(errors, eventPath, "must be an object");
3053
+ return;
3054
+ }
3055
+ if (event.timeUnixNano !== void 0) {
3056
+ validateUint64String(
2881
3057
  errors,
2882
- `${spanPath}.endTimeUnixNano`,
2883
- "must be >= startTimeUnixNano"
3058
+ `${eventPath}.timeUnixNano`,
3059
+ event.timeUnixNano,
3060
+ "timeUnixNano"
2884
3061
  );
2885
3062
  }
2886
- } catch {
2887
- pushPath(errors, `${spanPath}.endTimeUnixNano`, "out of integer range");
2888
- }
3063
+ validateKeyValueList(errors, `${eventPath}.attributes`, event.attributes);
3064
+ });
2889
3065
  }
2890
- if (Array.isArray(span.attributes)) {
2891
- span.attributes.forEach((attr, ai) => {
2892
- const attrPath = `${spanPath}.attributes[${ai}]`;
2893
- if (!isRecord5(attr)) {
2894
- pushPath(errors, attrPath, "must be an object");
3066
+ if (Array.isArray(span.links)) {
3067
+ span.links.forEach((link, li) => {
3068
+ const linkPath = `${spanPath}.links[${li}]`;
3069
+ if (!isRecord5(link)) {
3070
+ pushPath(errors, linkPath, "must be an object");
2895
3071
  return;
2896
3072
  }
2897
- if (typeof attr.key !== "string") {
2898
- pushPath(errors, `${attrPath}.key`, "must be a string");
2899
- }
2900
- validateAnyValue(errors, `${attrPath}.value`, attr.value);
3073
+ validateKeyValueList(errors, `${linkPath}.attributes`, link.attributes);
2901
3074
  });
2902
3075
  }
2903
3076
  if (typeof span.kind === "number") {
@@ -3815,7 +3988,7 @@ async function newestTraceMtimeMs(traceDir) {
3815
3988
  }
3816
3989
  async function loadSessionRuns(traceDir) {
3817
3990
  try {
3818
- const mod = await import('./src-F44EQY4S.mjs');
3991
+ const mod = await import('./src-KP4UIFK5.mjs');
3819
3992
  const dbPath = mod.resolveIndexDbPath(traceDir);
3820
3993
  const status = mod.indexStatus(dbPath);
3821
3994
  if (!status.healthy) {
@@ -13794,7 +13967,7 @@ function isModuleNotFound4(e) {
13794
13967
  }
13795
13968
  async function loadIndexSqlite() {
13796
13969
  try {
13797
- return await import('./src-F44EQY4S.mjs');
13970
+ return await import('./src-KP4UIFK5.mjs');
13798
13971
  } catch (e) {
13799
13972
  if (isModuleNotFound4(e)) {
13800
13973
  console.error(