agent-inspect 6.31.3 → 6.31.4
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 +8 -0
- package/README.md +1 -1
- package/SECURITY.md +2 -0
- package/docs/GETTING-STARTED.md +2 -0
- package/docs/SAFE-TRACE-SHARING.md +1 -0
- package/package.json +1 -1
- package/packages/cli/dist/{chunk-SJ6FRNOE.mjs → chunk-LKEPABND.mjs} +86 -80
- package/packages/cli/dist/chunk-LKEPABND.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +399 -91
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +307 -14
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-YNEJOPRA.mjs → src-4WYF5RFI.mjs} +3 -3
- package/packages/cli/dist/{src-YNEJOPRA.mjs.map → src-4WYF5RFI.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +97 -30
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.mjs +13 -13
- package/packages/core/dist/checks.cjs +51 -49
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.mjs +5 -5
- package/packages/core/dist/{chunk-PBNBQRXV.mjs → chunk-2KJR6X4V.mjs} +9 -9
- package/packages/core/dist/chunk-2KJR6X4V.mjs.map +1 -0
- package/packages/core/dist/{chunk-26YJSETN.mjs → chunk-7DHSWDKB.mjs} +19 -6
- package/packages/core/dist/chunk-7DHSWDKB.mjs.map +1 -0
- package/packages/core/dist/{chunk-BGF5JDJN.mjs → chunk-INE5IWLN.mjs} +3 -3
- package/packages/core/dist/{chunk-BGF5JDJN.mjs.map → chunk-INE5IWLN.mjs.map} +1 -1
- package/packages/core/dist/{chunk-ZFJ2ICTC.mjs → chunk-MTMTXTJL.mjs} +5 -5
- package/packages/core/dist/{chunk-ZFJ2ICTC.mjs.map → chunk-MTMTXTJL.mjs.map} +1 -1
- package/packages/core/dist/{chunk-KWBO36PH.mjs → chunk-NY4ILMXK.mjs} +4 -4
- package/packages/core/dist/{chunk-KWBO36PH.mjs.map → chunk-NY4ILMXK.mjs.map} +1 -1
- package/packages/core/dist/{chunk-WN5PT4GV.mjs → chunk-OSGNGRHF.mjs} +3 -3
- package/packages/core/dist/{chunk-WN5PT4GV.mjs.map → chunk-OSGNGRHF.mjs.map} +1 -1
- package/packages/core/dist/{chunk-CBPWLHNQ.mjs → chunk-PKDBFBJ7.mjs} +5 -76
- package/packages/core/dist/chunk-PKDBFBJ7.mjs.map +1 -0
- package/packages/core/dist/{chunk-VU6O5QAH.mjs → chunk-VLVCLAPB.mjs} +83 -5
- package/packages/core/dist/chunk-VLVCLAPB.mjs.map +1 -0
- package/packages/core/dist/exporters.cjs +217 -6
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.mjs +118 -9
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/index.cjs +97 -8
- package/packages/core/dist/index.cjs.map +1 -1
- package/packages/core/dist/index.mjs +6 -6
- package/packages/core/dist/logs.cjs +80 -2
- package/packages/core/dist/logs.cjs.map +1 -1
- package/packages/core/dist/logs.d.cts +2 -0
- package/packages/core/dist/logs.d.ts +2 -0
- package/packages/core/dist/logs.mjs +2 -2
- package/packages/core/dist/readers.cjs +2 -0
- package/packages/core/dist/readers.cjs.map +1 -1
- package/packages/core/dist/readers.mjs +2 -2
- package/packages/core/dist/writers.cjs +96 -8
- package/packages/core/dist/writers.cjs.map +1 -1
- package/packages/core/dist/writers.mjs +7 -8
- package/packages/core/dist/writers.mjs.map +1 -1
- package/packages/cli/dist/chunk-SJ6FRNOE.mjs.map +0 -1
- package/packages/core/dist/chunk-26YJSETN.mjs.map +0 -1
- package/packages/core/dist/chunk-CBPWLHNQ.mjs.map +0 -1
- package/packages/core/dist/chunk-PBNBQRXV.mjs.map +0 -1
- package/packages/core/dist/chunk-VU6O5QAH.mjs.map +0 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, 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, createLlmUsageRule, createObservedOutcomeRule } from './chunk-PKDBFBJ7.mjs';
|
|
2
|
+
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-PKDBFBJ7.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-MTMTXTJL.mjs';
|
|
4
|
+
import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-NY4ILMXK.mjs';
|
|
5
|
+
export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-NY4ILMXK.mjs';
|
|
6
|
+
import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-INE5IWLN.mjs';
|
|
7
|
+
export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-INE5IWLN.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-
|
|
13
|
-
import { Redactor } from './chunk-
|
|
14
|
-
import { openTrace } from './chunk-
|
|
11
|
+
import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-2KJR6X4V.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-2KJR6X4V.mjs';
|
|
13
|
+
import { Redactor } from './chunk-VLVCLAPB.mjs';
|
|
14
|
+
import { openTrace } from './chunk-OSGNGRHF.mjs';
|
|
15
15
|
import './chunk-FWK3Q3OJ.mjs';
|
|
16
16
|
import './chunk-Q5SLKV2Y.mjs';
|
|
17
17
|
import './chunk-S4YWKV4G.mjs';
|
|
18
18
|
import './chunk-AK5EN4U2.mjs';
|
|
19
|
-
import { parseDuration, isTraceEvent, getTraceFilePath } from './chunk-
|
|
20
|
-
export { DEFAULT_TRACE_DIR_NAME, FALLBACK_TRACE_DIR, MAX_NAME_LENGTH, RUNS_DIR_NAME, createRunId, createStepId, ensureTraceDir, formatDuration, formatError, formatTimestamp, getDefaultTraceDir, getTraceFilePath, isStepStatus, isStepType, isTraceEvent, parseDuration, parseTraceJsonl, truncateName, unknownTraceFormatMessage, warn } from './chunk-
|
|
19
|
+
import { parseDuration, isTraceEvent, getTraceFilePath } from './chunk-7DHSWDKB.mjs';
|
|
20
|
+
export { DEFAULT_TRACE_DIR_NAME, FALLBACK_TRACE_DIR, MAX_NAME_LENGTH, RUNS_DIR_NAME, createRunId, createStepId, ensureTraceDir, formatDuration, formatError, formatTimestamp, getDefaultTraceDir, getTraceFilePath, isStepStatus, isStepType, isTraceEvent, parseDuration, parseTraceJsonl, truncateName, unknownTraceFormatMessage, warn } from './chunk-7DHSWDKB.mjs';
|
|
21
21
|
import { persistedInspectEventsToTraceEvents } from './chunk-EE5Z2GQ3.mjs';
|
|
22
22
|
export { ATTRIBUTION_CONFIDENCES, ATTRIBUTION_CONFIDENCE_RANK, isAttributionConfidence } from './chunk-EE5Z2GQ3.mjs';
|
|
23
23
|
import './chunk-7TGZLWEE.mjs';
|
|
@@ -96,54 +96,6 @@ var OUTCOME_ATTRIBUTE_STATUS_KEY = "outcomeStatus";
|
|
|
96
96
|
var OUTCOME_ATTRIBUTE_EXPECTATION_KEY = "expectation";
|
|
97
97
|
var OUTCOME_ATTRIBUTE_METHOD_KEY = "method";
|
|
98
98
|
var OUTCOME_ATTRIBUTE_OBSERVED_AT_KEY = "observedAt";
|
|
99
|
-
var RUNS_DIR_NAME = "runs";
|
|
100
|
-
path__default.default.join(
|
|
101
|
-
os__default.default.tmpdir(),
|
|
102
|
-
"agent-inspect",
|
|
103
|
-
RUNS_DIR_NAME
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
// packages/core/src/outcomes/extract.ts
|
|
107
|
-
function isOutcomeStatus(value) {
|
|
108
|
-
return value === "passed" || value === "failed" || value === "unknown" || value === "skipped";
|
|
109
|
-
}
|
|
110
|
-
function parseMethod(value) {
|
|
111
|
-
if (typeof value !== "string" || value.trim() === "") return void 0;
|
|
112
|
-
return value;
|
|
113
|
-
}
|
|
114
|
-
function fromPersistedOutcome(event) {
|
|
115
|
-
if (event.kind !== "OUTCOME") return void 0;
|
|
116
|
-
const attrs2 = event.attributes ?? {};
|
|
117
|
-
const statusRaw = attrs2[OUTCOME_ATTRIBUTE_STATUS_KEY];
|
|
118
|
-
if (!isOutcomeStatus(statusRaw)) return void 0;
|
|
119
|
-
const expectation = typeof attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] === "string" ? attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] : event.name;
|
|
120
|
-
const observedAtRaw = attrs2[OUTCOME_ATTRIBUTE_OBSERVED_AT_KEY];
|
|
121
|
-
const observedAt = typeof observedAtRaw === "string" ? Date.parse(observedAtRaw) : typeof observedAtRaw === "number" && Number.isFinite(observedAtRaw) ? observedAtRaw : Date.parse(event.timestamp);
|
|
122
|
-
return {
|
|
123
|
-
outcomeId: event.eventId,
|
|
124
|
-
runId: event.runId,
|
|
125
|
-
...event.parentId !== void 0 ? { parentId: event.parentId } : {},
|
|
126
|
-
name: event.name,
|
|
127
|
-
expectation,
|
|
128
|
-
status: statusRaw,
|
|
129
|
-
...parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) !== void 0 ? { method: parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) } : {},
|
|
130
|
-
...event.outputSummary !== void 0 ? { actual: event.outputSummary } : {},
|
|
131
|
-
...attrs2.evidence !== void 0 ? { evidence: attrs2.evidence } : {},
|
|
132
|
-
observedAt: Number.isFinite(observedAt) ? observedAt : Date.parse(event.timestamp)
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
function extractOutcomesFromPersistedEvents(events) {
|
|
136
|
-
const out = [];
|
|
137
|
-
for (const event of events) {
|
|
138
|
-
const outcome = fromPersistedOutcome(event);
|
|
139
|
-
if (outcome) out.push(outcome);
|
|
140
|
-
}
|
|
141
|
-
return out.sort((a, b) => a.observedAt - b.observedAt || a.name.localeCompare(b.name));
|
|
142
|
-
}
|
|
143
|
-
function outcomesMatchingStatus(outcomes, statuses) {
|
|
144
|
-
const set = new Set(statuses);
|
|
145
|
-
return outcomes.filter((outcome) => set.has(outcome.status));
|
|
146
|
-
}
|
|
147
99
|
|
|
148
100
|
// packages/core/src/safety/sensitive-key.ts
|
|
149
101
|
function keyHasExplicitSeparator(value) {
|
|
@@ -217,6 +169,56 @@ function isCredentialSensitiveKey(key, sensitiveKeys = DEFAULT_CREDENTIAL_SENSIT
|
|
|
217
169
|
return false;
|
|
218
170
|
}
|
|
219
171
|
|
|
172
|
+
// packages/core/src/utils.ts
|
|
173
|
+
var RUNS_DIR_NAME = "runs";
|
|
174
|
+
path__default.default.join(
|
|
175
|
+
os__default.default.tmpdir(),
|
|
176
|
+
"agent-inspect",
|
|
177
|
+
RUNS_DIR_NAME
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
// packages/core/src/outcomes/extract.ts
|
|
181
|
+
function isOutcomeStatus(value) {
|
|
182
|
+
return value === "passed" || value === "failed" || value === "unknown" || value === "skipped";
|
|
183
|
+
}
|
|
184
|
+
function parseMethod(value) {
|
|
185
|
+
if (typeof value !== "string" || value.trim() === "") return void 0;
|
|
186
|
+
return value;
|
|
187
|
+
}
|
|
188
|
+
function fromPersistedOutcome(event) {
|
|
189
|
+
if (event.kind !== "OUTCOME") return void 0;
|
|
190
|
+
const attrs2 = event.attributes ?? {};
|
|
191
|
+
const statusRaw = attrs2[OUTCOME_ATTRIBUTE_STATUS_KEY];
|
|
192
|
+
if (!isOutcomeStatus(statusRaw)) return void 0;
|
|
193
|
+
const expectation = typeof attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] === "string" ? attrs2[OUTCOME_ATTRIBUTE_EXPECTATION_KEY] : event.name;
|
|
194
|
+
const observedAtRaw = attrs2[OUTCOME_ATTRIBUTE_OBSERVED_AT_KEY];
|
|
195
|
+
const observedAt = typeof observedAtRaw === "string" ? Date.parse(observedAtRaw) : typeof observedAtRaw === "number" && Number.isFinite(observedAtRaw) ? observedAtRaw : Date.parse(event.timestamp);
|
|
196
|
+
return {
|
|
197
|
+
outcomeId: event.eventId,
|
|
198
|
+
runId: event.runId,
|
|
199
|
+
...event.parentId !== void 0 ? { parentId: event.parentId } : {},
|
|
200
|
+
name: event.name,
|
|
201
|
+
expectation,
|
|
202
|
+
status: statusRaw,
|
|
203
|
+
...parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) !== void 0 ? { method: parseMethod(attrs2[OUTCOME_ATTRIBUTE_METHOD_KEY]) } : {},
|
|
204
|
+
...event.outputSummary !== void 0 ? { actual: event.outputSummary } : {},
|
|
205
|
+
...attrs2.evidence !== void 0 ? { evidence: attrs2.evidence } : {},
|
|
206
|
+
observedAt: Number.isFinite(observedAt) ? observedAt : Date.parse(event.timestamp)
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function extractOutcomesFromPersistedEvents(events) {
|
|
210
|
+
const out = [];
|
|
211
|
+
for (const event of events) {
|
|
212
|
+
const outcome = fromPersistedOutcome(event);
|
|
213
|
+
if (outcome) out.push(outcome);
|
|
214
|
+
}
|
|
215
|
+
return out.sort((a, b) => a.observedAt - b.observedAt || a.name.localeCompare(b.name));
|
|
216
|
+
}
|
|
217
|
+
function outcomesMatchingStatus(outcomes, statuses) {
|
|
218
|
+
const set = new Set(statuses);
|
|
219
|
+
return outcomes.filter((outcome) => set.has(outcome.status));
|
|
220
|
+
}
|
|
221
|
+
|
|
220
222
|
// packages/core/src/checks/logical-events.ts
|
|
221
223
|
function isRecord(value) {
|
|
222
224
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -3628,7 +3630,7 @@ var DEFAULT_SECRET_PATTERNS = [
|
|
|
3628
3630
|
// Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
|
|
3629
3631
|
{
|
|
3630
3632
|
id: "key-value-secret",
|
|
3631
|
-
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=([^\s"'\\]{8,})/i
|
|
3633
|
+
pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i
|
|
3632
3634
|
}
|
|
3633
3635
|
];
|
|
3634
3636
|
function compareStrings(a, b) {
|