agent-inspect 6.31.8 → 6.31.10
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-6FE47XSF.mjs → chunk-JCKC4ZRV.mjs} +212 -12
- package/packages/cli/dist/chunk-JCKC4ZRV.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +215 -11
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +4 -4
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-NXAYHG34.mjs → src-4UD7JNDR.mjs} +3 -3
- package/packages/cli/dist/{src-NXAYHG34.mjs.map → src-4UD7JNDR.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +202 -15
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.d.cts +1 -1
- package/packages/core/dist/advanced.d.ts +1 -1
- package/packages/core/dist/advanced.mjs +90 -15
- package/packages/core/dist/advanced.mjs.map +1 -1
- package/packages/core/dist/checks.cjs +79 -0
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.d.cts +1 -1
- package/packages/core/dist/checks.d.ts +1 -1
- package/packages/core/dist/checks.mjs +3 -2
- package/packages/core/dist/{chunk-L5WLVBW4.mjs → chunk-AHUZNHFI.mjs} +4 -55
- package/packages/core/dist/chunk-AHUZNHFI.mjs.map +1 -0
- package/packages/core/dist/{chunk-2CCRUI42.mjs → chunk-CPQAOJW4.mjs} +72 -3
- package/packages/core/dist/chunk-CPQAOJW4.mjs.map +1 -0
- package/packages/core/dist/{chunk-2IRRUNIN.mjs → chunk-OAUNS5CS.mjs} +3 -3
- package/packages/core/dist/{chunk-2IRRUNIN.mjs.map → chunk-OAUNS5CS.mjs.map} +1 -1
- package/packages/core/dist/{chunk-IJJSPJXV.mjs → chunk-QOC3PJO3.mjs} +4 -4
- package/packages/core/dist/{chunk-IJJSPJXV.mjs.map → chunk-QOC3PJO3.mjs.map} +1 -1
- package/packages/core/dist/chunk-S6LQBLX5.mjs +67 -0
- package/packages/core/dist/chunk-S6LQBLX5.mjs.map +1 -0
- package/packages/core/dist/{chunk-VQUB3WRI.mjs → chunk-SSG3ICI4.mjs} +28 -3
- package/packages/core/dist/chunk-SSG3ICI4.mjs.map +1 -0
- package/packages/core/dist/index.cjs +89 -1
- package/packages/core/dist/index.cjs.map +1 -1
- package/packages/core/dist/index.mjs +3 -2
- package/packages/core/dist/index.mjs.map +1 -1
- package/packages/core/dist/persisted.cjs +11 -0
- package/packages/core/dist/persisted.cjs.map +1 -1
- package/packages/core/dist/persisted.mjs +4 -3
- package/packages/core/dist/persisted.mjs.map +1 -1
- package/packages/core/dist/{programmatic-gZTWLObB.d.cts → programmatic-BLlC7Ytq.d.cts} +1 -1
- package/packages/core/dist/{programmatic-gZTWLObB.d.ts → programmatic-BLlC7Ytq.d.ts} +1 -1
- package/packages/core/dist/readers.cjs +11 -0
- package/packages/core/dist/readers.cjs.map +1 -1
- package/packages/core/dist/readers.d.cts +1 -1
- package/packages/core/dist/readers.d.ts +1 -1
- package/packages/core/dist/readers.mjs +4 -3
- package/packages/cli/dist/chunk-6FE47XSF.mjs.map +0 -1
- package/packages/core/dist/chunk-2CCRUI42.mjs.map +0 -1
- package/packages/core/dist/chunk-L5WLVBW4.mjs.map +0 -1
- package/packages/core/dist/chunk-VQUB3WRI.mjs.map +0 -1
|
@@ -1269,7 +1269,7 @@ interface EvidenceCiPackageFiles {
|
|
|
1269
1269
|
declare function buildEvidenceCiPackage(input: EvidenceCiPackageInput): EvidenceCiPackageFiles;
|
|
1270
1270
|
|
|
1271
1271
|
type SuiteCaseStatus = "pass" | "fail" | "error" | "skipped";
|
|
1272
|
-
type SuiteDiagnosticCode = "AI_SUITE_CONFIG_INVALID" | "AI_SUITE_CONFIG_LOAD_FAILED" | "AI_SUITE_CASE_TRACE_MISSING" | "AI_SUITE_CASE_CHECK_FAILED" | "AI_SUITE_CASE_EVAL_FAILED" | "AI_SUITE_CASE_OBSERVATION_FAILED" | "AI_SUITE_TRACE_UNREADABLE";
|
|
1272
|
+
type SuiteDiagnosticCode = "AI_SUITE_CONFIG_INVALID" | "AI_SUITE_CONFIG_LOAD_FAILED" | "AI_SUITE_CASE_TRACE_MISSING" | "AI_SUITE_CASE_CHECK_FAILED" | "AI_SUITE_CASE_EVAL_FAILED" | "AI_SUITE_CASE_OBSERVATION_FAILED" | "AI_SUITE_NO_ASSERTIONS" | "AI_SUITE_UNKNOWN_SELECTOR" | "AI_SUITE_TRACE_UNREADABLE";
|
|
1273
1273
|
interface SuiteDiagnostic {
|
|
1274
1274
|
code: SuiteDiagnosticCode;
|
|
1275
1275
|
severity: "error" | "warning" | "info";
|
|
@@ -1269,7 +1269,7 @@ interface EvidenceCiPackageFiles {
|
|
|
1269
1269
|
declare function buildEvidenceCiPackage(input: EvidenceCiPackageInput): EvidenceCiPackageFiles;
|
|
1270
1270
|
|
|
1271
1271
|
type SuiteCaseStatus = "pass" | "fail" | "error" | "skipped";
|
|
1272
|
-
type SuiteDiagnosticCode = "AI_SUITE_CONFIG_INVALID" | "AI_SUITE_CONFIG_LOAD_FAILED" | "AI_SUITE_CASE_TRACE_MISSING" | "AI_SUITE_CASE_CHECK_FAILED" | "AI_SUITE_CASE_EVAL_FAILED" | "AI_SUITE_CASE_OBSERVATION_FAILED" | "AI_SUITE_TRACE_UNREADABLE";
|
|
1272
|
+
type SuiteDiagnosticCode = "AI_SUITE_CONFIG_INVALID" | "AI_SUITE_CONFIG_LOAD_FAILED" | "AI_SUITE_CASE_TRACE_MISSING" | "AI_SUITE_CASE_CHECK_FAILED" | "AI_SUITE_CASE_EVAL_FAILED" | "AI_SUITE_CASE_OBSERVATION_FAILED" | "AI_SUITE_NO_ASSERTIONS" | "AI_SUITE_UNKNOWN_SELECTOR" | "AI_SUITE_TRACE_UNREADABLE";
|
|
1273
1273
|
interface SuiteDiagnostic {
|
|
1274
1274
|
code: SuiteDiagnosticCode;
|
|
1275
1275
|
severity: "error" | "warning" | "info";
|
|
@@ -1,6 +1,6 @@
|
|
|
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-
|
|
1
|
+
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createRunDepthRule, createToolFailureRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-CPQAOJW4.mjs';
|
|
2
|
+
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-CPQAOJW4.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-SSG3ICI4.mjs';
|
|
4
4
|
import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-7YYS742B.mjs';
|
|
5
5
|
export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-7YYS742B.mjs';
|
|
6
6
|
import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-N5PZAI6Q.mjs';
|
|
@@ -11,10 +11,11 @@ import { escapeHtml, flattenTree } from './chunk-CAWPF22J.mjs';
|
|
|
11
11
|
import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-DK3OW6UI.mjs';
|
|
12
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-DK3OW6UI.mjs';
|
|
13
13
|
import { Redactor } from './chunk-VLVCLAPB.mjs';
|
|
14
|
-
import { openTrace } from './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
14
|
+
import { openTrace } from './chunk-QOC3PJO3.mjs';
|
|
15
|
+
import './chunk-OAUNS5CS.mjs';
|
|
16
|
+
import './chunk-AHUZNHFI.mjs';
|
|
17
17
|
import './chunk-S4YWKV4G.mjs';
|
|
18
|
+
import './chunk-S6LQBLX5.mjs';
|
|
18
19
|
import './chunk-AK5EN4U2.mjs';
|
|
19
20
|
import { parseDuration, isTraceEvent, getTraceFilePath } from './chunk-7DHSWDKB.mjs';
|
|
20
21
|
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';
|
|
@@ -3626,21 +3627,48 @@ async function resolveSuiteCaseTrace(suiteCase, options) {
|
|
|
3626
3627
|
reason: `no trace found for run id "${runKey}" under ${options.tracesDir}`
|
|
3627
3628
|
};
|
|
3628
3629
|
}
|
|
3630
|
+
var KNOWN_SUITE_SELECT_IDS = /* @__PURE__ */ new Set([
|
|
3631
|
+
"run.status",
|
|
3632
|
+
"run.duration",
|
|
3633
|
+
"run.depth",
|
|
3634
|
+
"outcome.status",
|
|
3635
|
+
"tool.usage",
|
|
3636
|
+
"tool.failures",
|
|
3637
|
+
"llm.usage"
|
|
3638
|
+
]);
|
|
3629
3639
|
function diagnostic3(code, message, severity = "error", caseId) {
|
|
3630
3640
|
return { code, message, severity, ...caseId !== void 0 ? { caseId } : {} };
|
|
3631
3641
|
}
|
|
3632
|
-
function
|
|
3642
|
+
function buildCaseAssertions(suiteCase, config) {
|
|
3633
3643
|
const rules = [];
|
|
3634
3644
|
const select = new Set(config.checks?.select ?? []);
|
|
3635
|
-
|
|
3645
|
+
const configDiagnostics = [];
|
|
3646
|
+
const evalConfig = config.eval;
|
|
3647
|
+
const declaredSelect = [...select];
|
|
3648
|
+
for (const id of declaredSelect) {
|
|
3649
|
+
if (!KNOWN_SUITE_SELECT_IDS.has(id)) {
|
|
3650
|
+
configDiagnostics.push(
|
|
3651
|
+
diagnostic3(
|
|
3652
|
+
"AI_SUITE_UNKNOWN_SELECTOR",
|
|
3653
|
+
`Unknown or unsupported suite check selector "${id}".`,
|
|
3654
|
+
"error",
|
|
3655
|
+
suiteCase.id
|
|
3656
|
+
)
|
|
3657
|
+
);
|
|
3658
|
+
}
|
|
3659
|
+
}
|
|
3660
|
+
if (select.has("run.status") || evalConfig?.requireSuccess === true) {
|
|
3636
3661
|
rules.push(createRunStatusRule());
|
|
3662
|
+
select.add("run.status");
|
|
3637
3663
|
}
|
|
3638
3664
|
const requiredTools = [
|
|
3639
3665
|
...config.checks?.tool?.required ?? [],
|
|
3666
|
+
...evalConfig?.requiredTools ?? [],
|
|
3640
3667
|
...suiteCase.requireTools ?? []
|
|
3641
3668
|
];
|
|
3642
3669
|
const forbiddenTools = [
|
|
3643
3670
|
...config.checks?.tool?.forbidden ?? [],
|
|
3671
|
+
...evalConfig?.forbiddenTools ?? [],
|
|
3644
3672
|
...suiteCase.forbidTools ?? []
|
|
3645
3673
|
];
|
|
3646
3674
|
if (requiredTools.length > 0 || forbiddenTools.length > 0) {
|
|
@@ -3652,20 +3680,51 @@ function buildCaseRules(suiteCase, config) {
|
|
|
3652
3680
|
);
|
|
3653
3681
|
select.add("tool.usage");
|
|
3654
3682
|
}
|
|
3655
|
-
const maxDurationMs = suiteCase.maxDurationMs ?? config.checks?.run?.maxDurationMs ??
|
|
3683
|
+
const maxDurationMs = suiteCase.maxDurationMs ?? config.checks?.run?.maxDurationMs ?? evalConfig?.maxDurationMs;
|
|
3656
3684
|
if (maxDurationMs !== void 0) {
|
|
3657
3685
|
rules.push(createRunDurationRule({ maxDurationMs }));
|
|
3658
3686
|
select.add("run.duration");
|
|
3659
3687
|
}
|
|
3660
|
-
const
|
|
3661
|
-
if (
|
|
3662
|
-
rules.push(
|
|
3688
|
+
const maxDepth = config.checks?.run?.maxDepth ?? evalConfig?.maxDepth;
|
|
3689
|
+
if (maxDepth !== void 0) {
|
|
3690
|
+
rules.push(createRunDepthRule({ maxDepth }));
|
|
3691
|
+
select.add("run.depth");
|
|
3692
|
+
}
|
|
3693
|
+
if (evalConfig?.maxRetries !== void 0) {
|
|
3694
|
+
rules.push(createToolFailureRule({ maxRetries: evalConfig.maxRetries }));
|
|
3695
|
+
select.add("tool.failures");
|
|
3696
|
+
}
|
|
3697
|
+
const allowedModels = config.checks?.llm?.allowedModels;
|
|
3698
|
+
const maxTotalTokens = config.checks?.llm?.maxTotalTokens ?? evalConfig?.maxTotalTokens;
|
|
3699
|
+
if (allowedModels !== void 0 || maxTotalTokens !== void 0) {
|
|
3700
|
+
rules.push(
|
|
3701
|
+
createLlmUsageRule({
|
|
3702
|
+
...allowedModels !== void 0 ? { allowedModels } : {},
|
|
3703
|
+
...maxTotalTokens !== void 0 ? { maxTotalTokens } : {}
|
|
3704
|
+
})
|
|
3705
|
+
);
|
|
3663
3706
|
select.add("llm.usage");
|
|
3664
3707
|
}
|
|
3665
3708
|
if (select.has("outcome.status")) {
|
|
3666
3709
|
rules.push(createObservedOutcomeRule({ failOn: ["failed"] }));
|
|
3667
3710
|
}
|
|
3668
|
-
|
|
3711
|
+
const observationCount = suiteCase.expectedObservations?.length ?? 0;
|
|
3712
|
+
if (rules.length === 0 && observationCount === 0 && configDiagnostics.length === 0) {
|
|
3713
|
+
configDiagnostics.push(
|
|
3714
|
+
diagnostic3(
|
|
3715
|
+
"AI_SUITE_NO_ASSERTIONS",
|
|
3716
|
+
`Suite case "${suiteCase.id}" declares no effective checks, eval controls, or expected observations.`,
|
|
3717
|
+
"error",
|
|
3718
|
+
suiteCase.id
|
|
3719
|
+
)
|
|
3720
|
+
);
|
|
3721
|
+
}
|
|
3722
|
+
return {
|
|
3723
|
+
rules,
|
|
3724
|
+
select: [...select],
|
|
3725
|
+
observationCount,
|
|
3726
|
+
configDiagnostics
|
|
3727
|
+
};
|
|
3669
3728
|
}
|
|
3670
3729
|
function outcomesFromRead(read) {
|
|
3671
3730
|
const persistedOutcomes = extractOutcomesFromPersistedEvents(
|
|
@@ -3746,8 +3805,20 @@ async function runSuiteCase(suiteCase, config, options) {
|
|
|
3746
3805
|
]
|
|
3747
3806
|
};
|
|
3748
3807
|
}
|
|
3749
|
-
const
|
|
3750
|
-
|
|
3808
|
+
const compiled = buildCaseAssertions(suiteCase, config);
|
|
3809
|
+
if (compiled.configDiagnostics.length > 0) {
|
|
3810
|
+
return {
|
|
3811
|
+
id: suiteCase.id,
|
|
3812
|
+
status: "error",
|
|
3813
|
+
tracePath: resolved.tracePath,
|
|
3814
|
+
...resolved.runId !== void 0 ? { runId: resolved.runId } : {},
|
|
3815
|
+
checkOk: false,
|
|
3816
|
+
...config.eval?.requireSuccess === true ? { evalOk: false } : {},
|
|
3817
|
+
message: compiled.configDiagnostics.map((item) => item.message).join("; "),
|
|
3818
|
+
diagnostics: compiled.configDiagnostics
|
|
3819
|
+
};
|
|
3820
|
+
}
|
|
3821
|
+
const checkResult = compiled.rules.length > 0 ? runTraceChecks({ read }, { rules: compiled.rules, select: compiled.select }) : {
|
|
3751
3822
|
ok: true,
|
|
3752
3823
|
status: "pass",
|
|
3753
3824
|
format: read.format,
|
|
@@ -3775,6 +3846,9 @@ async function runSuiteCase(suiteCase, config, options) {
|
|
|
3775
3846
|
];
|
|
3776
3847
|
const checkOk = checkResult.ok;
|
|
3777
3848
|
const observationsOk = observationResult.ok;
|
|
3849
|
+
const evalOk = config.eval?.requireSuccess === true ? checkResult.findings.every(
|
|
3850
|
+
(finding) => finding.ruleId !== "run.status" || finding.status !== "fail"
|
|
3851
|
+
) && checkResult.diagnostics.every((item) => item.severity !== "error") : void 0;
|
|
3778
3852
|
const ok = checkOk && observationsOk;
|
|
3779
3853
|
const status = ok ? "pass" : checkResult.status === "error" ? "error" : "fail";
|
|
3780
3854
|
return {
|
|
@@ -3783,6 +3857,7 @@ async function runSuiteCase(suiteCase, config, options) {
|
|
|
3783
3857
|
tracePath: resolved.tracePath,
|
|
3784
3858
|
...resolved.runId !== void 0 ? { runId: resolved.runId } : {},
|
|
3785
3859
|
checkOk,
|
|
3860
|
+
...evalOk !== void 0 ? { evalOk } : {},
|
|
3786
3861
|
observationsOk,
|
|
3787
3862
|
diagnostics,
|
|
3788
3863
|
...ok ? {} : {
|