agent-inspect 6.31.16 → 6.31.18
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/SECURITY.md +1 -0
- package/docs/COMPARE.md +11 -0
- package/package.json +2 -2
- package/packages/cli/dist/{chunk-ZAYVAHIH.mjs → chunk-AHARYDFO.mjs} +62 -28
- package/packages/cli/dist/chunk-AHARYDFO.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +122 -32
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +64 -9
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-KP4UIFK5.mjs → src-YNZZ2KYR.mjs} +3 -3
- package/packages/cli/dist/{src-KP4UIFK5.mjs.map → src-YNZZ2KYR.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +1 -1
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.mjs +9 -9
- package/packages/core/dist/checks.cjs +59 -25
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.mjs +3 -3
- package/packages/core/dist/{chunk-SSG3ICI4.mjs → chunk-6C244CAV.mjs} +4 -4
- package/packages/core/dist/{chunk-SSG3ICI4.mjs.map → chunk-6C244CAV.mjs.map} +1 -1
- package/packages/core/dist/{chunk-N5PZAI6Q.mjs → chunk-77UZIMMD.mjs} +3 -3
- package/packages/core/dist/{chunk-N5PZAI6Q.mjs.map → chunk-77UZIMMD.mjs.map} +1 -1
- package/packages/core/dist/{chunk-DK3OW6UI.mjs → chunk-EOXUEQB6.mjs} +3 -3
- package/packages/core/dist/chunk-EOXUEQB6.mjs.map +1 -0
- package/packages/core/dist/{chunk-CCYKNAOD.mjs → chunk-FRBBZUEP.mjs} +62 -28
- package/packages/core/dist/chunk-FRBBZUEP.mjs.map +1 -0
- package/packages/core/dist/{chunk-M3RJD3BP.mjs → chunk-NX25C7JZ.mjs} +3 -3
- package/packages/core/dist/{chunk-M3RJD3BP.mjs.map → chunk-NX25C7JZ.mjs.map} +1 -1
- package/packages/core/dist/exporters.cjs +55 -3
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +57 -5
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/index.cjs +1 -1
- package/packages/core/dist/index.cjs.map +1 -1
- package/packages/core/dist/index.mjs +4 -4
- package/packages/core/dist/writers.cjs +1 -1
- package/packages/core/dist/writers.cjs.map +1 -1
- package/packages/core/dist/writers.mjs +1 -1
- package/packages/cli/dist/chunk-ZAYVAHIH.mjs.map +0 -1
- package/packages/core/dist/chunk-CCYKNAOD.mjs.map +0 -1
- package/packages/core/dist/chunk-DK3OW6UI.mjs.map +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createRunDepthRule, createToolFailureRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-
|
|
2
|
-
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-
|
|
3
|
-
export { MAX_TERMINAL_DEPTH, MAX_TERMINAL_NAME_LENGTH, TERMINAL_INDENT, TraceDirectory, createInspector, createInspectorRuntime, formatTerminalName, getCurrentContext, getCurrentCorrelationMetadata, getCurrentDepth, getCurrentRunId, getCurrentRunName, getCurrentStepId, getIndent, getParentStepId, getTraceDirFromContext, getTraceSafetyFromContext, hasActiveContext, isAgentInspectEnabled, isSilentContext, maybeInspectRun, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, resolveTraceDir, runWithContext, runWithStepContext } from './chunk-
|
|
4
|
-
import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-
|
|
5
|
-
export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-
|
|
6
|
-
import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-
|
|
7
|
-
export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-
|
|
1
|
+
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createRunDepthRule, createToolFailureRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-FRBBZUEP.mjs';
|
|
2
|
+
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-FRBBZUEP.mjs';
|
|
3
|
+
export { MAX_TERMINAL_DEPTH, MAX_TERMINAL_NAME_LENGTH, TERMINAL_INDENT, TraceDirectory, createInspector, createInspectorRuntime, formatTerminalName, getCurrentContext, getCurrentCorrelationMetadata, getCurrentDepth, getCurrentRunId, getCurrentRunName, getCurrentStepId, getIndent, getParentStepId, getTraceDirFromContext, getTraceSafetyFromContext, hasActiveContext, isAgentInspectEnabled, isSilentContext, maybeInspectRun, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, resolveTraceDir, runWithContext, runWithStepContext } from './chunk-6C244CAV.mjs';
|
|
4
|
+
import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-NX25C7JZ.mjs';
|
|
5
|
+
export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-NX25C7JZ.mjs';
|
|
6
|
+
import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-77UZIMMD.mjs';
|
|
7
|
+
export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-77UZIMMD.mjs';
|
|
8
8
|
import { diffTraceEvents, renderRunDiff } from './chunk-F7STQ5JF.mjs';
|
|
9
9
|
import './chunk-BT7CATSD.mjs';
|
|
10
10
|
import { escapeHtml, flattenTree } from './chunk-CAWPF22J.mjs';
|
|
11
|
-
import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-
|
|
12
|
-
export { DEFAULT_MAX_EVENT_BYTES, DEFAULT_MAX_METADATA_VALUE_LENGTH, DEFAULT_MAX_PREVIEW_LENGTH, getRunIdFromTraceFileName, initializeTraceFile, listTraceFiles, prepareMetadataForDisk, prepareTraceEventForDisk, readTraceEvents, readTraceFile, resolveRedactionProfile, resolveTraceSafetyOptions, serializeEvent, validateEvent, writeTraceEvent } from './chunk-
|
|
11
|
+
import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-EOXUEQB6.mjs';
|
|
12
|
+
export { DEFAULT_MAX_EVENT_BYTES, DEFAULT_MAX_METADATA_VALUE_LENGTH, DEFAULT_MAX_PREVIEW_LENGTH, getRunIdFromTraceFileName, initializeTraceFile, listTraceFiles, prepareMetadataForDisk, prepareTraceEventForDisk, readTraceEvents, readTraceFile, resolveRedactionProfile, resolveTraceSafetyOptions, serializeEvent, validateEvent, writeTraceEvent } from './chunk-EOXUEQB6.mjs';
|
|
13
13
|
import { Redactor } from './chunk-VLVCLAPB.mjs';
|
|
14
14
|
import { openTrace } from './chunk-NJUSSJX3.mjs';
|
|
15
15
|
import './chunk-JE3TUFAQ.mjs';
|
|
@@ -1756,24 +1756,26 @@ function attemptIdOf(event) {
|
|
|
1756
1756
|
return typeof value === "string" && value.trim() !== "" ? value : void 0;
|
|
1757
1757
|
}
|
|
1758
1758
|
function countOperationAttempts(members) {
|
|
1759
|
-
const
|
|
1760
|
-
|
|
1761
|
-
)
|
|
1762
|
-
|
|
1763
|
-
|
|
1759
|
+
const identified = /* @__PURE__ */ new Set();
|
|
1760
|
+
let unidentified = 0;
|
|
1761
|
+
for (const event of members) {
|
|
1762
|
+
if (event.kind !== "TOOL" && event.kind !== "LLM") continue;
|
|
1763
|
+
const id = attemptIdOf(event);
|
|
1764
|
+
if (id !== void 0) {
|
|
1765
|
+
identified.add(id);
|
|
1766
|
+
continue;
|
|
1767
|
+
}
|
|
1768
|
+
unidentified += 1;
|
|
1769
|
+
}
|
|
1770
|
+
if (identified.size > 0) {
|
|
1771
|
+
return identified.size + unidentified;
|
|
1764
1772
|
}
|
|
1765
1773
|
const numbers = members.map((event) => attemptNumberOf(event)).filter((value) => value !== void 0).sort((a, b) => a - b);
|
|
1766
1774
|
if (numbers.length > 0) {
|
|
1767
1775
|
const unique = [...new Set(numbers)];
|
|
1768
|
-
const min = unique[0];
|
|
1769
|
-
const max = unique[unique.length - 1];
|
|
1770
|
-
const contiguous = unique.length === max - min + 1 && unique.every((value, index) => value === min + index);
|
|
1771
|
-
if (contiguous) {
|
|
1772
|
-
return unique.length;
|
|
1773
|
-
}
|
|
1774
1776
|
return unique.length;
|
|
1775
1777
|
}
|
|
1776
|
-
return
|
|
1778
|
+
return unidentified;
|
|
1777
1779
|
}
|
|
1778
1780
|
function classifyRetryAttempt(event, priorOrdered, allMembers) {
|
|
1779
1781
|
const workflow = workflowFor(event);
|
|
@@ -2048,8 +2050,30 @@ function eventEvidence2(event) {
|
|
|
2048
2050
|
function eventTime2(event) {
|
|
2049
2051
|
return event.startedAt ?? event.timestamp ?? "";
|
|
2050
2052
|
}
|
|
2053
|
+
function parseComparableMs(value) {
|
|
2054
|
+
if (!value) return void 0;
|
|
2055
|
+
const parsed = Date.parse(value);
|
|
2056
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
2057
|
+
}
|
|
2058
|
+
function consumerStartMs(event) {
|
|
2059
|
+
return parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
|
|
2060
|
+
}
|
|
2061
|
+
function resultAvailableMs(event) {
|
|
2062
|
+
const ended = parseComparableMs(event.endedAt);
|
|
2063
|
+
if (ended !== void 0) return ended;
|
|
2064
|
+
const started = parseComparableMs(event.startedAt) ?? parseComparableMs(event.timestamp);
|
|
2065
|
+
if (started !== void 0 && event.durationMs !== void 0 && Number.isFinite(event.durationMs)) {
|
|
2066
|
+
return started + event.durationMs;
|
|
2067
|
+
}
|
|
2068
|
+
return parseComparableMs(event.timestamp);
|
|
2069
|
+
}
|
|
2051
2070
|
function sortByTime2(events) {
|
|
2052
|
-
return [...events].sort((a, b) =>
|
|
2071
|
+
return [...events].sort((a, b) => {
|
|
2072
|
+
const aMs = consumerStartMs(a) ?? 0;
|
|
2073
|
+
const bMs = consumerStartMs(b) ?? 0;
|
|
2074
|
+
if (aMs !== bMs) return aMs - bMs;
|
|
2075
|
+
return eventTime2(a).localeCompare(eventTime2(b));
|
|
2076
|
+
});
|
|
2053
2077
|
}
|
|
2054
2078
|
function errorCodeOf(event) {
|
|
2055
2079
|
if (typeof event.error?.code === "string" && event.error.code.trim() !== "") {
|
|
@@ -2117,13 +2141,20 @@ function sameArguments(left, right) {
|
|
|
2117
2141
|
}
|
|
2118
2142
|
return { ok: true };
|
|
2119
2143
|
}
|
|
2144
|
+
var UNEVALUABLE_WRITE_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
2145
|
+
"TIMEOUT",
|
|
2146
|
+
"ETIMEDOUT",
|
|
2147
|
+
"UNKNOWN_COMPLETION",
|
|
2148
|
+
"DEADLINE_EXCEEDED"
|
|
2149
|
+
]);
|
|
2120
2150
|
function isUnevaluableWriteCompletion(event) {
|
|
2121
2151
|
if (event.status === "running" || event.status === "unknown") return true;
|
|
2122
2152
|
const attrs2 = event.attributes ?? {};
|
|
2123
2153
|
if (attrs2.timeout === true) return true;
|
|
2154
|
+
if (attrs2.unknownCompletion === true) return true;
|
|
2124
2155
|
if (attrs2.completionState === "unknown" || attrs2.completionState === "timeout") return true;
|
|
2125
2156
|
const code = errorCodeOf(event)?.toUpperCase();
|
|
2126
|
-
if (code
|
|
2157
|
+
if (code && UNEVALUABLE_WRITE_ERROR_CODES.has(code)) {
|
|
2127
2158
|
return true;
|
|
2128
2159
|
}
|
|
2129
2160
|
return false;
|
|
@@ -2171,14 +2202,17 @@ function collectExplicitReferences(event) {
|
|
|
2171
2202
|
return refs;
|
|
2172
2203
|
}
|
|
2173
2204
|
function llmReferencesTool(llm, toolEvent, requireExplicit) {
|
|
2174
|
-
if (
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2205
|
+
if (llm.runId !== toolEvent.runId) return false;
|
|
2206
|
+
if (requireExplicit) {
|
|
2207
|
+
const refs = collectExplicitReferences(llm);
|
|
2208
|
+
const toolCallId = workflowFor2(toolEvent).toolCallId;
|
|
2209
|
+
const hasRef = refs.has(toolEvent.eventId) || toolCallId !== void 0 && refs.has(toolCallId);
|
|
2210
|
+
if (!hasRef) return false;
|
|
2211
|
+
}
|
|
2212
|
+
const resultMs = resultAvailableMs(toolEvent);
|
|
2213
|
+
const consumerMs = consumerStartMs(llm);
|
|
2214
|
+
if (resultMs === void 0 || consumerMs === void 0) return false;
|
|
2215
|
+
return resultMs <= consumerMs;
|
|
2182
2216
|
}
|
|
2183
2217
|
function attemptIdOf2(event) {
|
|
2184
2218
|
const value = workflowFor2(event).attemptId;
|
|
@@ -3735,7 +3769,7 @@ var DEFAULT_SECRET_PATTERNS = [
|
|
|
3735
3769
|
// Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
|
|
3736
3770
|
{
|
|
3737
3771
|
id: "key-value-secret",
|
|
3738
|
-
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED
|
|
3772
|
+
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED|HASH:(?:[0-9a-f]{8}|unknown))\](?![^\s"'\\&#?]))([^\s"'\\]{8,})/i
|
|
3739
3773
|
}
|
|
3740
3774
|
];
|
|
3741
3775
|
function compareStrings(a, b) {
|
|
@@ -4179,8 +4213,8 @@ function isFullyRedactedValue(value, markers = ["[REDACTED]", "[REDACTED:"]) {
|
|
|
4179
4213
|
if (typeof value !== "string") return false;
|
|
4180
4214
|
const trimmed = value.trim();
|
|
4181
4215
|
if (trimmed.length === 0) return false;
|
|
4182
|
-
if (
|
|
4183
|
-
if (/^\[
|
|
4216
|
+
if (trimmed === "[HASH:unknown]") return true;
|
|
4217
|
+
if (/^\[HASH:[0-9a-f]{8}\]$/.test(trimmed)) return true;
|
|
4184
4218
|
for (const marker of markers) {
|
|
4185
4219
|
if (marker.endsWith(":")) continue;
|
|
4186
4220
|
if (trimmed === marker) return true;
|