agent-inspect 6.31.21 → 6.31.23
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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/packages/cli/dist/{chunk-N5JN26MW.mjs → chunk-P27XTK5U.mjs} +347 -36
- package/packages/cli/dist/chunk-P27XTK5U.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +434 -63
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +81 -33
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-VMGRSTG7.mjs → src-EWZYLDST.mjs} +3 -3
- package/packages/cli/dist/{src-VMGRSTG7.mjs.map → src-EWZYLDST.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +280 -10
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.mjs +6 -5
- package/packages/core/dist/advanced.mjs.map +1 -1
- package/packages/core/dist/checks.cjs +185 -27
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.mjs +2 -1
- package/packages/core/dist/{chunk-JE3TUFAQ.mjs → chunk-77PUPLPG.mjs} +14 -8
- package/packages/core/dist/chunk-77PUPLPG.mjs.map +1 -0
- package/packages/core/dist/chunk-AN5MOADW.mjs +204 -0
- package/packages/core/dist/chunk-AN5MOADW.mjs.map +1 -0
- package/packages/core/dist/{chunk-4CDX5GDS.mjs → chunk-IMCM42W6.mjs} +110 -99
- package/packages/core/dist/chunk-IMCM42W6.mjs.map +1 -0
- package/packages/core/dist/{chunk-YU6XT5A2.mjs → chunk-J2ST4VCX.mjs} +45 -3
- package/packages/core/dist/chunk-J2ST4VCX.mjs.map +1 -0
- package/packages/core/dist/{chunk-EIP5CNEL.mjs → chunk-JJSL346L.mjs} +58 -3
- package/packages/core/dist/chunk-JJSL346L.mjs.map +1 -0
- package/packages/core/dist/exporters.cjs +91 -29
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +78 -29
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/logs.cjs +206 -1
- package/packages/core/dist/logs.cjs.map +1 -1
- package/packages/core/dist/logs.mjs +3 -2
- package/packages/core/dist/logs.mjs.map +1 -1
- package/packages/core/dist/persisted.cjs +226 -8
- package/packages/core/dist/persisted.cjs.map +1 -1
- package/packages/core/dist/persisted.mjs +9 -5
- package/packages/core/dist/persisted.mjs.map +1 -1
- package/packages/core/dist/readers.cjs +276 -6
- package/packages/core/dist/readers.cjs.map +1 -1
- package/packages/core/dist/readers.mjs +4 -3
- package/packages/cli/dist/chunk-N5JN26MW.mjs.map +0 -1
- package/packages/core/dist/chunk-4CDX5GDS.mjs.map +0 -1
- package/packages/core/dist/chunk-EIP5CNEL.mjs.map +0 -1
- package/packages/core/dist/chunk-JE3TUFAQ.mjs.map +0 -1
- package/packages/core/dist/chunk-YU6XT5A2.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-
|
|
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, IDENTITY_CONFLICT_ATTR, DELIVERY_CONFLICT_ATTR, DELIVERY_EVENT_BASE_ATTR, 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-P27XTK5U.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.
|
|
17
|
+
var version = "6.31.23";
|
|
18
18
|
|
|
19
19
|
// packages/cli/src/trace-dir-scale.ts
|
|
20
20
|
var TRACE_COUNT_WARN = 1e3;
|
|
@@ -2616,43 +2616,85 @@ var STRUCTURAL_IDENTITY_KEYS = [
|
|
|
2616
2616
|
"attemptNumber",
|
|
2617
2617
|
"attempt"
|
|
2618
2618
|
];
|
|
2619
|
-
function
|
|
2619
|
+
function nestedBag(bag) {
|
|
2620
2620
|
if (!bag || typeof bag !== "object") return void 0;
|
|
2621
|
-
const
|
|
2622
|
-
if (typeof
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
if (
|
|
2627
|
-
|
|
2621
|
+
const nested = bag.metadata;
|
|
2622
|
+
if (!nested || typeof nested !== "object" || Array.isArray(nested)) return void 0;
|
|
2623
|
+
return nested;
|
|
2624
|
+
}
|
|
2625
|
+
function pickBoundedIdentityString(bag, key, maxLen) {
|
|
2626
|
+
if (!bag || typeof bag !== "object") return {};
|
|
2627
|
+
const directRaw = bag[key];
|
|
2628
|
+
const nestedRaw = nestedBag(bag)?.[key];
|
|
2629
|
+
const directFull = typeof directRaw === "string" && directRaw.trim() !== "" ? directRaw.trim() : void 0;
|
|
2630
|
+
const nestedFull = typeof nestedRaw === "string" && nestedRaw.trim() !== "" ? nestedRaw.trim() : void 0;
|
|
2631
|
+
const direct = directFull !== void 0 ? directFull.slice(0, maxLen) : void 0;
|
|
2632
|
+
const nested = nestedFull !== void 0 ? nestedFull.slice(0, maxLen) : void 0;
|
|
2633
|
+
if (directFull !== void 0 && nestedFull !== void 0 && directFull !== nestedFull) {
|
|
2634
|
+
return {
|
|
2635
|
+
value: direct,
|
|
2636
|
+
conflictAlternate: nested,
|
|
2637
|
+
truncatedCollision: direct === nested
|
|
2638
|
+
};
|
|
2628
2639
|
}
|
|
2629
|
-
|
|
2640
|
+
if (direct !== void 0) return { value: direct };
|
|
2641
|
+
if (nested !== void 0) return { value: nested };
|
|
2642
|
+
return {};
|
|
2630
2643
|
}
|
|
2631
2644
|
function pickBoundedIdentityNumber(bag, key) {
|
|
2632
|
-
if (!bag || typeof bag !== "object") return
|
|
2633
|
-
const
|
|
2634
|
-
|
|
2635
|
-
const
|
|
2636
|
-
|
|
2637
|
-
|
|
2645
|
+
if (!bag || typeof bag !== "object") return {};
|
|
2646
|
+
const directRaw = bag[key];
|
|
2647
|
+
const nestedRaw = nestedBag(bag)?.[key];
|
|
2648
|
+
const direct = typeof directRaw === "number" && Number.isFinite(directRaw) ? directRaw : void 0;
|
|
2649
|
+
const nested = typeof nestedRaw === "number" && Number.isFinite(nestedRaw) ? nestedRaw : void 0;
|
|
2650
|
+
if (direct !== void 0 && nested !== void 0 && direct !== nested) {
|
|
2651
|
+
return { value: direct, conflictAlternate: nested };
|
|
2652
|
+
}
|
|
2653
|
+
if (direct !== void 0) return { value: direct };
|
|
2654
|
+
if (nested !== void 0) return { value: nested };
|
|
2655
|
+
return {};
|
|
2638
2656
|
}
|
|
2639
2657
|
function appendStructuralIdentityAttrs(attrs, meta, maxLen) {
|
|
2640
|
-
const
|
|
2641
|
-
|
|
2642
|
-
|
|
2658
|
+
const conflicts = [];
|
|
2659
|
+
const emitString = (key, otlpKey, conflictKey) => {
|
|
2660
|
+
const picked = pickBoundedIdentityString(meta, key, maxLen);
|
|
2661
|
+
if (picked.value !== void 0) {
|
|
2662
|
+
attrs.push(stringAttr(otlpKey, picked.value));
|
|
2663
|
+
}
|
|
2664
|
+
if (picked.conflictAlternate !== void 0 || picked.truncatedCollision) {
|
|
2665
|
+
if (picked.conflictAlternate !== void 0) {
|
|
2666
|
+
attrs.push(stringAttr(conflictKey, picked.conflictAlternate));
|
|
2667
|
+
}
|
|
2668
|
+
conflicts.push(key);
|
|
2669
|
+
}
|
|
2670
|
+
};
|
|
2671
|
+
emitString("operationId", "agent_inspect.operation_id", IDENTITY_CONFLICT_ATTR.operationId);
|
|
2672
|
+
emitString("attemptId", "agent_inspect.attempt_id", IDENTITY_CONFLICT_ATTR.attemptId);
|
|
2673
|
+
emitString("retryOf", "agent_inspect.retry_of", IDENTITY_CONFLICT_ATTR.retryOf);
|
|
2674
|
+
const attemptNumberPrimary = pickBoundedIdentityNumber(meta, "attemptNumber");
|
|
2675
|
+
const attemptNumber2 = attemptNumberPrimary.value !== void 0 || attemptNumberPrimary.conflictAlternate !== void 0 ? attemptNumberPrimary : pickBoundedIdentityNumber(meta, "attempt");
|
|
2676
|
+
if (attemptNumber2.value !== void 0) {
|
|
2677
|
+
attrs.push(intAttr("agent_inspect.attempt_number", attemptNumber2.value));
|
|
2643
2678
|
}
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2679
|
+
if (attemptNumber2.conflictAlternate !== void 0) {
|
|
2680
|
+
attrs.push(
|
|
2681
|
+
intAttr(IDENTITY_CONFLICT_ATTR.attemptNumber, attemptNumber2.conflictAlternate)
|
|
2682
|
+
);
|
|
2683
|
+
conflicts.push("attemptNumber");
|
|
2647
2684
|
}
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2685
|
+
if (conflicts.length > 0) {
|
|
2686
|
+
attrs.push(
|
|
2687
|
+
stringAttr(IDENTITY_CONFLICT_ATTR.fields, conflicts.join(",").slice(0, maxLen))
|
|
2688
|
+
);
|
|
2651
2689
|
}
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
attrs.push(intAttr("agent_inspect.attempt_number", attemptNumber2));
|
|
2690
|
+
if (meta?.[DELIVERY_CONFLICT_ATTR] === true) {
|
|
2691
|
+
attrs.push(boolAttr(DELIVERY_CONFLICT_ATTR, true));
|
|
2655
2692
|
}
|
|
2693
|
+
const deliveryBase = meta?.[DELIVERY_EVENT_BASE_ATTR];
|
|
2694
|
+
if (typeof deliveryBase === "string" && deliveryBase.trim() !== "") {
|
|
2695
|
+
attrs.push(stringAttr(DELIVERY_EVENT_BASE_ATTR, deliveryBase.trim().slice(0, maxLen)));
|
|
2696
|
+
}
|
|
2697
|
+
return conflicts;
|
|
2656
2698
|
}
|
|
2657
2699
|
function resolveSpanTimes(ev) {
|
|
2658
2700
|
const startedAtMs = typeof ev.attributes?.startedAtMs === "number" && Number.isFinite(ev.attributes.startedAtMs) ? ev.attributes.startedAtMs : void 0;
|
|
@@ -2675,7 +2717,8 @@ function exportOtlpJson(tree, options) {
|
|
|
2675
2717
|
"OTLP JSON export uses OTel GenAI-aligned attributes where applicable; experimental until verified against specific collectors.",
|
|
2676
2718
|
"Not OTLP gRPC/protobuf \u2014 JSON mapping only. Generated locally; no network upload.",
|
|
2677
2719
|
"Status and span kind use OTLP numeric enums (StatusCode 0/1/2, SpanKind INTERNAL=1).",
|
|
2678
|
-
"When present on source events, operationId/attemptId/retryOf/attemptNumber are emitted as bounded agent_inspect.* identity attributes (not a broad attribute dump)."
|
|
2720
|
+
"When present on source events, operationId/attemptId/retryOf/attemptNumber are emitted as bounded agent_inspect.* identity attributes (not a broad attribute dump).",
|
|
2721
|
+
"When direct and nested identity disagree, export prefers direct for non-strict consumers and emits agent_inspect.identity_conflict.* for the nested alternate; this does not certify conflicting identity."
|
|
2679
2722
|
];
|
|
2680
2723
|
const traceId = hexFrom2(`trace:${tree.runId}`, 16);
|
|
2681
2724
|
const includeAttributes = options?.includeAttributes ?? false;
|
|
@@ -2723,11 +2766,16 @@ function exportOtlpJson(tree, options) {
|
|
|
2723
2766
|
if (typeof inp === "number") attrs.push(intAttr("gen_ai.usage.input_tokens", inp));
|
|
2724
2767
|
if (typeof outp === "number") attrs.push(intAttr("gen_ai.usage.output_tokens", outp));
|
|
2725
2768
|
}
|
|
2726
|
-
appendStructuralIdentityAttrs(
|
|
2769
|
+
const identityConflicts = appendStructuralIdentityAttrs(
|
|
2727
2770
|
attrs,
|
|
2728
2771
|
meta && typeof meta === "object" ? meta : void 0,
|
|
2729
2772
|
maxLen
|
|
2730
2773
|
);
|
|
2774
|
+
if (identityConflicts.length > 0) {
|
|
2775
|
+
warnings.push(
|
|
2776
|
+
`Identity representation conflict on event ${ev.eventId}: ${identityConflicts.join(", ")} (direct preferred; nested retained on agent_inspect.identity_conflict.*).`
|
|
2777
|
+
);
|
|
2778
|
+
}
|
|
2731
2779
|
if (includeAttributes && meta && typeof meta === "object") {
|
|
2732
2780
|
const skipKeys = /* @__PURE__ */ new Set([
|
|
2733
2781
|
"tokens",
|
|
@@ -4040,7 +4088,7 @@ async function newestTraceMtimeMs(traceDir) {
|
|
|
4040
4088
|
}
|
|
4041
4089
|
async function loadSessionRuns(traceDir) {
|
|
4042
4090
|
try {
|
|
4043
|
-
const mod = await import('./src-
|
|
4091
|
+
const mod = await import('./src-EWZYLDST.mjs');
|
|
4044
4092
|
const dbPath = mod.resolveIndexDbPath(traceDir);
|
|
4045
4093
|
const status = mod.indexStatus(dbPath);
|
|
4046
4094
|
if (!status.healthy) {
|
|
@@ -14022,7 +14070,7 @@ function isModuleNotFound4(e) {
|
|
|
14022
14070
|
}
|
|
14023
14071
|
async function loadIndexSqlite() {
|
|
14024
14072
|
try {
|
|
14025
|
-
return await import('./src-
|
|
14073
|
+
return await import('./src-EWZYLDST.mjs');
|
|
14026
14074
|
} catch (e) {
|
|
14027
14075
|
if (isModuleNotFound4(e)) {
|
|
14028
14076
|
console.error(
|