agent-inspect 6.31.30 → 6.31.32
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/docs/CLI.md +3 -1
- package/docs/TRACE-CONTRACTS.md +2 -0
- package/package.json +2 -2
- package/packages/cli/dist/{chunk-4GTOJ3G2.mjs → chunk-PEGM6T2X.mjs} +82 -9
- package/packages/cli/dist/chunk-PEGM6T2X.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +185 -33
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +109 -30
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-BF74ZVDF.mjs → src-CWUJTMRD.mjs} +3 -3
- package/packages/cli/dist/{src-BF74ZVDF.mjs.map → src-CWUJTMRD.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +4 -0
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.d.cts +2 -2
- package/packages/core/dist/advanced.d.ts +2 -2
- package/packages/core/dist/advanced.mjs +9 -9
- package/packages/core/dist/checks.cjs +76 -7
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.d.cts +2 -2
- package/packages/core/dist/checks.d.ts +2 -2
- package/packages/core/dist/checks.mjs +3 -3
- package/packages/core/dist/{chunk-BYNAJPNH.mjs → chunk-6G67ZN72.mjs} +79 -10
- package/packages/core/dist/chunk-6G67ZN72.mjs.map +1 -0
- package/packages/core/dist/{chunk-76QIWWJ5.mjs → chunk-6S666BF4.mjs} +3 -3
- package/packages/core/dist/{chunk-76QIWWJ5.mjs.map → chunk-6S666BF4.mjs.map} +1 -1
- package/packages/core/dist/{chunk-QMO3ITYF.mjs → chunk-FBPDF7HO.mjs} +3 -3
- package/packages/core/dist/{chunk-QMO3ITYF.mjs.map → chunk-FBPDF7HO.mjs.map} +1 -1
- package/packages/core/dist/{chunk-XM27TZLD.mjs → chunk-RB6WANSW.mjs} +6 -2
- package/packages/core/dist/chunk-RB6WANSW.mjs.map +1 -0
- package/packages/core/dist/{chunk-JTJN4KBJ.mjs → chunk-VIEJJ5JB.mjs} +4 -4
- package/packages/core/dist/{chunk-JTJN4KBJ.mjs.map → chunk-VIEJJ5JB.mjs.map} +1 -1
- package/packages/core/dist/exporters.cjs +89 -22
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +88 -25
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/{index-DACU4Dy1.d.cts → index-Ceyw5x7b.d.cts} +4 -2
- package/packages/core/dist/{index-b4tIGrzq.d.ts → index-K5Cinf1r.d.ts} +4 -2
- package/packages/core/dist/index.cjs +4 -0
- package/packages/core/dist/index.cjs.map +1 -1
- package/packages/core/dist/index.mjs +4 -4
- package/packages/core/dist/writers.cjs +4 -0
- package/packages/core/dist/writers.cjs.map +1 -1
- package/packages/core/dist/writers.mjs +1 -1
- package/packages/cli/dist/chunk-4GTOJ3G2.mjs.map +0 -1
- package/packages/core/dist/chunk-BYNAJPNH.mjs.map +0 -1
- package/packages/core/dist/chunk-XM27TZLD.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, persistedInspectEventsToRunTrees, 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, 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, persistedInspectEventsToRunTrees, 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, 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-PEGM6T2X.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.32";
|
|
18
18
|
|
|
19
19
|
// packages/cli/src/trace-dir-scale.ts
|
|
20
20
|
var TRACE_COUNT_WARN = 1e3;
|
|
@@ -2178,6 +2178,16 @@ function stepIdOf(event) {
|
|
|
2178
2178
|
const value = event.attributes?.stepId;
|
|
2179
2179
|
return typeof value === "string" && value.trim() !== "" ? value : void 0;
|
|
2180
2180
|
}
|
|
2181
|
+
function attemptIdOf(event) {
|
|
2182
|
+
const direct = event.attributes?.attemptId;
|
|
2183
|
+
if (typeof direct === "string" && direct.trim() !== "") return direct;
|
|
2184
|
+
const meta = event.attributes?.metadata;
|
|
2185
|
+
if (meta && typeof meta === "object" && !Array.isArray(meta)) {
|
|
2186
|
+
const nested = meta.attemptId;
|
|
2187
|
+
if (typeof nested === "string" && nested.trim() !== "") return nested;
|
|
2188
|
+
}
|
|
2189
|
+
return void 0;
|
|
2190
|
+
}
|
|
2181
2191
|
function lifecycleKey(event) {
|
|
2182
2192
|
if (event.kind === "RUN") return `run:${event.runId}`;
|
|
2183
2193
|
const stepId = stepIdOf(event);
|
|
@@ -2187,6 +2197,9 @@ function lifecycleKey(event) {
|
|
|
2187
2197
|
function isTerminal(status) {
|
|
2188
2198
|
return status === "ok" || status === "error";
|
|
2189
2199
|
}
|
|
2200
|
+
function eventTime(event) {
|
|
2201
|
+
return typeof event.timestamp === "number" ? event.timestamp : 0;
|
|
2202
|
+
}
|
|
2190
2203
|
function cloneNode(node) {
|
|
2191
2204
|
return {
|
|
2192
2205
|
event: {
|
|
@@ -2197,37 +2210,87 @@ function cloneNode(node) {
|
|
|
2197
2210
|
depth: node.depth
|
|
2198
2211
|
};
|
|
2199
2212
|
}
|
|
2213
|
+
function joinOnePair(start, terminal) {
|
|
2214
|
+
const childMap = /* @__PURE__ */ new Map();
|
|
2215
|
+
if (start) {
|
|
2216
|
+
for (const child of start.children) {
|
|
2217
|
+
childMap.set(child.event.eventId, child);
|
|
2218
|
+
}
|
|
2219
|
+
}
|
|
2220
|
+
for (const child of terminal.children) {
|
|
2221
|
+
childMap.set(child.event.eventId, child);
|
|
2222
|
+
}
|
|
2223
|
+
return {
|
|
2224
|
+
event: {
|
|
2225
|
+
...terminal.event,
|
|
2226
|
+
name: start?.event.name ?? terminal.event.name,
|
|
2227
|
+
kind: start?.event.kind ?? terminal.event.kind,
|
|
2228
|
+
...start && attemptIdOf(terminal.event) === void 0 && attemptIdOf(start.event) ? {
|
|
2229
|
+
attributes: {
|
|
2230
|
+
...terminal.event.attributes,
|
|
2231
|
+
attemptId: attemptIdOf(start.event)
|
|
2232
|
+
}
|
|
2233
|
+
} : {}
|
|
2234
|
+
},
|
|
2235
|
+
children: presentSiblingNodes([...childMap.values()]),
|
|
2236
|
+
depth: terminal.depth
|
|
2237
|
+
};
|
|
2238
|
+
}
|
|
2200
2239
|
function joinSiblingGroup(group) {
|
|
2201
2240
|
if (group.length <= 1) return group;
|
|
2202
|
-
const terminals = group.filter((n) => isTerminal(n.event.status));
|
|
2203
|
-
const runnings = group.filter((n) => n.event.status === "running");
|
|
2241
|
+
const terminals = group.filter((n) => isTerminal(n.event.status)).sort((a, b) => eventTime(a.event) - eventTime(b.event));
|
|
2242
|
+
const runnings = group.filter((n) => n.event.status === "running").sort((a, b) => eventTime(a.event) - eventTime(b.event));
|
|
2243
|
+
const others = group.filter(
|
|
2244
|
+
(n) => !isTerminal(n.event.status) && n.event.status !== "running"
|
|
2245
|
+
);
|
|
2204
2246
|
const terminalStatuses = new Set(terminals.map((n) => n.event.status));
|
|
2205
2247
|
if (terminalStatuses.size > 1) {
|
|
2206
2248
|
return group;
|
|
2207
2249
|
}
|
|
2208
|
-
if (terminals.length
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2250
|
+
if (terminals.length > 1 && terminals.every((t) => attemptIdOf(t.event) === void 0) && runnings.every((r) => attemptIdOf(r.event) === void 0)) {
|
|
2251
|
+
return group;
|
|
2252
|
+
}
|
|
2253
|
+
const usedRunning = /* @__PURE__ */ new Set();
|
|
2254
|
+
const out = [];
|
|
2255
|
+
for (const terminal of terminals) {
|
|
2256
|
+
const terminalAttempt = attemptIdOf(terminal.event);
|
|
2257
|
+
const terminalTs = eventTime(terminal.event);
|
|
2258
|
+
const candidate = runnings.find((r) => {
|
|
2259
|
+
if (usedRunning.has(r.event.eventId)) return false;
|
|
2260
|
+
if (eventTime(r.event) > terminalTs) return false;
|
|
2261
|
+
const runningAttempt = attemptIdOf(r.event);
|
|
2262
|
+
if (terminalAttempt !== void 0) {
|
|
2263
|
+
return runningAttempt === terminalAttempt;
|
|
2264
|
+
}
|
|
2265
|
+
if (runningAttempt !== void 0) {
|
|
2266
|
+
return true;
|
|
2267
|
+
}
|
|
2268
|
+
return true;
|
|
2269
|
+
});
|
|
2270
|
+
if (candidate) {
|
|
2271
|
+
usedRunning.add(candidate.event.eventId);
|
|
2272
|
+
out.push(joinOnePair(candidate, terminal));
|
|
2273
|
+
} else {
|
|
2274
|
+
out.push({
|
|
2275
|
+
...terminal,
|
|
2276
|
+
children: presentSiblingNodes(terminal.children)
|
|
2277
|
+
});
|
|
2216
2278
|
}
|
|
2217
|
-
return [
|
|
2218
|
-
{
|
|
2219
|
-
event: {
|
|
2220
|
-
...terminal.event,
|
|
2221
|
-
name: start?.event.name ?? terminal.event.name,
|
|
2222
|
-
kind: start?.event.kind ?? terminal.event.kind,
|
|
2223
|
-
...start?.event.timestamp !== void 0 && terminal.event.durationMs === void 0 ? {} : {}
|
|
2224
|
-
},
|
|
2225
|
-
children: presentSiblingNodes([...childMap.values()]),
|
|
2226
|
-
depth: terminal.depth
|
|
2227
|
-
}
|
|
2228
|
-
];
|
|
2229
2279
|
}
|
|
2230
|
-
|
|
2280
|
+
for (const running of runnings) {
|
|
2281
|
+
if (usedRunning.has(running.event.eventId)) continue;
|
|
2282
|
+
out.push({
|
|
2283
|
+
...running,
|
|
2284
|
+
children: presentSiblingNodes(running.children)
|
|
2285
|
+
});
|
|
2286
|
+
}
|
|
2287
|
+
for (const other of others) {
|
|
2288
|
+
out.push({
|
|
2289
|
+
...other,
|
|
2290
|
+
children: presentSiblingNodes(other.children)
|
|
2291
|
+
});
|
|
2292
|
+
}
|
|
2293
|
+
return out;
|
|
2231
2294
|
}
|
|
2232
2295
|
function presentSiblingNodes(nodes) {
|
|
2233
2296
|
const prepared = nodes.map((n) => ({
|
|
@@ -4180,7 +4243,7 @@ async function newestTraceMtimeMs(traceDir) {
|
|
|
4180
4243
|
}
|
|
4181
4244
|
async function loadSessionRuns(traceDir) {
|
|
4182
4245
|
try {
|
|
4183
|
-
const mod = await import('./src-
|
|
4246
|
+
const mod = await import('./src-CWUJTMRD.mjs');
|
|
4184
4247
|
const dbPath = mod.resolveIndexDbPath(traceDir);
|
|
4185
4248
|
const status = mod.indexStatus(dbPath);
|
|
4186
4249
|
if (!status.healthy) {
|
|
@@ -5053,6 +5116,18 @@ var credentialDetectors = [
|
|
|
5053
5116
|
pattern: /\b(?:sk-(?:proj-)?[a-zA-Z0-9_-]{16,}|sk-ant-[a-zA-Z0-9_-]{16,}|AIza[0-9A-Za-z_-]{20,})\b/,
|
|
5054
5117
|
severity: "error"
|
|
5055
5118
|
}),
|
|
5119
|
+
// Stripe secret/restricted keys (underscore form). Keep in sync with
|
|
5120
|
+
// packages/core/src/safety/credential-value-patterns.ts + checks DEFAULT_SECRET_PATTERNS (#520).
|
|
5121
|
+
patternDetector({
|
|
5122
|
+
id: "value.stripeSecretKey",
|
|
5123
|
+
pattern: /\b(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}\b/,
|
|
5124
|
+
severity: "error"
|
|
5125
|
+
}),
|
|
5126
|
+
patternDetector({
|
|
5127
|
+
id: "value.slackToken",
|
|
5128
|
+
pattern: /\bxox[abposr]-[A-Za-z0-9-]{10,}\b/,
|
|
5129
|
+
severity: "error"
|
|
5130
|
+
}),
|
|
5056
5131
|
patternDetector({
|
|
5057
5132
|
id: "value.githubToken",
|
|
5058
5133
|
pattern: /\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9_]{20,}\b/,
|
|
@@ -6800,8 +6875,9 @@ function parseEvidenceFormat(value) {
|
|
|
6800
6875
|
`Unsupported --evidence-format "${value}". Use directory, html, or zip.`
|
|
6801
6876
|
);
|
|
6802
6877
|
}
|
|
6803
|
-
function
|
|
6804
|
-
|
|
6878
|
+
function residualStatusToEvidenceSafe(status) {
|
|
6879
|
+
if (status === "SAFE_WITH_WARNINGS") return "SAFE WITH WARNINGS";
|
|
6880
|
+
return status;
|
|
6805
6881
|
}
|
|
6806
6882
|
function stableJson2(value) {
|
|
6807
6883
|
return `${JSON.stringify(value, null, 2)}
|
|
@@ -6841,7 +6917,10 @@ async function writeLocalEvidence(input3) {
|
|
|
6841
6917
|
combined += redacted.content.endsWith("\n") ? redacted.content : `${redacted.content}
|
|
6842
6918
|
`;
|
|
6843
6919
|
}
|
|
6844
|
-
const
|
|
6920
|
+
const residual = await assessResidualFromContent(combined, {
|
|
6921
|
+
format: "agent-inspect-jsonl"
|
|
6922
|
+
});
|
|
6923
|
+
const assessmentStatus = residualStatusToEvidenceSafe(residual.status);
|
|
6845
6924
|
const evidencePackage = buildEvidenceCiPackage({
|
|
6846
6925
|
generatorVersion: version,
|
|
6847
6926
|
runIds: input3.runIds,
|
|
@@ -14177,7 +14256,7 @@ function isModuleNotFound4(e) {
|
|
|
14177
14256
|
}
|
|
14178
14257
|
async function loadIndexSqlite() {
|
|
14179
14258
|
try {
|
|
14180
|
-
return await import('./src-
|
|
14259
|
+
return await import('./src-CWUJTMRD.mjs');
|
|
14181
14260
|
} catch (e) {
|
|
14182
14261
|
if (isModuleNotFound4(e)) {
|
|
14183
14262
|
console.error(
|