agent-inspect 6.30.0 → 6.31.1

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.
Files changed (30) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/docs/COMPARE.md +1 -1
  4. package/docs/FIRST-TRACE-IN-5-MINUTES.md +21 -17
  5. package/docs/GETTING-STARTED.md +1 -1
  6. package/docs/TRACE-CONTRACTS.md +25 -0
  7. package/package.json +4 -2
  8. package/packages/cli/dist/{chunk-BDRJENLM.mjs → chunk-SJ6FRNOE.mjs} +201 -49
  9. package/packages/cli/dist/chunk-SJ6FRNOE.mjs.map +1 -0
  10. package/packages/cli/dist/index.cjs +288 -50
  11. package/packages/cli/dist/index.cjs.map +1 -1
  12. package/packages/cli/dist/index.mjs +91 -5
  13. package/packages/cli/dist/index.mjs.map +1 -1
  14. package/packages/cli/dist/{src-ZUGAUXY6.mjs → src-YNEJOPRA.mjs} +3 -3
  15. package/packages/cli/dist/{src-ZUGAUXY6.mjs.map → src-YNEJOPRA.mjs.map} +1 -1
  16. package/packages/core/dist/advanced.cjs +39 -1
  17. package/packages/core/dist/advanced.cjs.map +1 -1
  18. package/packages/core/dist/advanced.d.cts +2 -2
  19. package/packages/core/dist/advanced.d.ts +2 -2
  20. package/packages/core/dist/advanced.mjs +2 -2
  21. package/packages/core/dist/checks.cjs +207 -47
  22. package/packages/core/dist/checks.cjs.map +1 -1
  23. package/packages/core/dist/checks.d.cts +2 -2
  24. package/packages/core/dist/checks.d.ts +2 -2
  25. package/packages/core/dist/checks.mjs +1 -1
  26. package/packages/core/dist/{chunk-OOX25GTH.mjs → chunk-CBPWLHNQ.mjs} +209 -50
  27. package/packages/core/dist/{chunk-OOX25GTH.mjs.map → chunk-CBPWLHNQ.mjs.map} +1 -1
  28. package/packages/core/dist/{index-7hG_qggp.d.ts → index-CgOAGuM5.d.ts} +111 -1
  29. package/packages/core/dist/{index-CQJUNPPe.d.cts → index-EQihlEei.d.cts} +111 -1
  30. package/packages/cli/dist/chunk-BDRJENLM.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, truncateStringForProfile, 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, zeroKinds, 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, diffRuns, manualTraceEventsToComparableRun } from './chunk-BDRJENLM.mjs';
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, truncateStringForProfile, 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, zeroKinds, 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, diffRuns, manualTraceEventsToComparableRun } from './chunk-SJ6FRNOE.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';
@@ -13,7 +13,7 @@ import { createServer } from 'http';
13
13
  import { createRequire } from 'module';
14
14
 
15
15
  // package.json
16
- var version = "6.30.0";
16
+ var version = "6.31.1";
17
17
 
18
18
  // packages/cli/src/trace-dir-scale.ts
19
19
  var TRACE_COUNT_WARN = 1e3;
@@ -3397,7 +3397,7 @@ async function newestTraceMtimeMs(traceDir) {
3397
3397
  }
3398
3398
  async function loadSessionRuns(traceDir) {
3399
3399
  try {
3400
- const mod = await import('./src-ZUGAUXY6.mjs');
3400
+ const mod = await import('./src-YNEJOPRA.mjs');
3401
3401
  const dbPath = mod.resolveIndexDbPath(traceDir);
3402
3402
  const status = mod.indexStatus(dbPath);
3403
3403
  if (!status.healthy) {
@@ -6834,6 +6834,7 @@ var CONTRACT_KEYS = /* @__PURE__ */ new Set([
6834
6834
  "run",
6835
6835
  "tools",
6836
6836
  "llm",
6837
+ "steps",
6837
6838
  "observations",
6838
6839
  "scope",
6839
6840
  "alternatives",
@@ -6844,6 +6845,7 @@ var CONTRACT_BODY_KEYS = /* @__PURE__ */ new Set([
6844
6845
  "run",
6845
6846
  "tools",
6846
6847
  "llm",
6848
+ "steps",
6847
6849
  "observations",
6848
6850
  "controls",
6849
6851
  "retry"
@@ -6921,6 +6923,15 @@ var CONTRACT_ORDER_RULE_KEYS = /* @__PURE__ */ new Set([
6921
6923
  "occurrenceMode",
6922
6924
  "requireEndpoints"
6923
6925
  ]);
6926
+ var CONTRACT_STEPS_KEYS = /* @__PURE__ */ new Set(["orderRelations"]);
6927
+ var CONTRACT_STEP_ORDER_RELATION_KEYS = /* @__PURE__ */ new Set([
6928
+ "before",
6929
+ "after",
6930
+ "mode",
6931
+ "requireEndpoints"
6932
+ ]);
6933
+ var CONTRACT_STEP_REF_KEYS = /* @__PURE__ */ new Set(["kind", "name"]);
6934
+ var CONTRACT_STEP_KINDS = /* @__PURE__ */ new Set(["TOOL", "LLM"]);
6924
6935
  var CONTRACT_ARGUMENT_KEYS = /* @__PURE__ */ new Set([
6925
6936
  "tool",
6926
6937
  "path",
@@ -7251,6 +7262,7 @@ function contractConfigHasEffect(contract) {
7251
7262
  if (sectionHasEffect(contract.run)) return true;
7252
7263
  if (sectionHasEffect(contract.tools)) return true;
7253
7264
  if (sectionHasEffect(contract.llm)) return true;
7265
+ if (sectionHasEffect(contract.steps)) return true;
7254
7266
  if (sectionHasEffect(contract.observations)) {
7255
7267
  return true;
7256
7268
  }
@@ -7270,10 +7282,21 @@ function parseContractRunSection(value, pathPrefix = "contract.run") {
7270
7282
  );
7271
7283
  }
7272
7284
  if (record.allowedStatuses !== void 0) {
7273
- out.allowedStatuses = requireBoundedStringArray(
7285
+ const statuses = requireBoundedStringArray(
7274
7286
  record.allowedStatuses,
7275
7287
  `${pathPrefix}.allowedStatuses`
7276
7288
  );
7289
+ const allowed = /* @__PURE__ */ new Set(["ok", "error", "running", "success", "failed"]);
7290
+ for (let i = 0; i < statuses.length; i++) {
7291
+ const status = statuses[i];
7292
+ if (!allowed.has(status)) {
7293
+ throw new CheckConfigError(
7294
+ "AI_CHECK_CONFIG_INVALID_VALUE",
7295
+ `${pathPrefix}.allowedStatuses[${i}] must be one of: ok, error, running (aliases: success, failed); got ${JSON.stringify(status)}.`
7296
+ );
7297
+ }
7298
+ }
7299
+ out.allowedStatuses = statuses;
7277
7300
  }
7278
7301
  if (record.maxDurationMs !== void 0) {
7279
7302
  out.maxDurationMs = requireNonNegativeNumber(
@@ -7435,6 +7458,66 @@ function parseContractLlmSection(value, pathPrefix = "contract.llm") {
7435
7458
  }
7436
7459
  return out;
7437
7460
  }
7461
+ function parseStepRef(value, pathPrefix) {
7462
+ const record = requireObject(value, pathPrefix);
7463
+ rejectUnknownKeys(record, CONTRACT_STEP_REF_KEYS, pathPrefix);
7464
+ if (typeof record.kind !== "string" || !CONTRACT_STEP_KINDS.has(record.kind)) {
7465
+ throw new CheckConfigError(
7466
+ "AI_CHECK_CONFIG_INVALID_VALUE",
7467
+ `${pathPrefix}.kind must be "TOOL" or "LLM".`
7468
+ );
7469
+ }
7470
+ return {
7471
+ kind: record.kind,
7472
+ name: requireNonEmptyString(record.name, `${pathPrefix}.name`)
7473
+ };
7474
+ }
7475
+ function parseStepOrderRelation(value, pathPrefix) {
7476
+ const record = requireObject(value, pathPrefix);
7477
+ rejectUnknownKeys(record, CONTRACT_STEP_ORDER_RELATION_KEYS, pathPrefix);
7478
+ if (record.before === void 0) {
7479
+ throw new CheckConfigError(
7480
+ "AI_CHECK_CONFIG_INVALID_VALUE",
7481
+ `${pathPrefix}.before is required.`
7482
+ );
7483
+ }
7484
+ if (record.after === void 0) {
7485
+ throw new CheckConfigError(
7486
+ "AI_CHECK_CONFIG_INVALID_VALUE",
7487
+ `${pathPrefix}.after is required.`
7488
+ );
7489
+ }
7490
+ const out = {
7491
+ before: parseStepRef(record.before, `${pathPrefix}.before`),
7492
+ after: parseStepRef(record.after, `${pathPrefix}.after`)
7493
+ };
7494
+ if (record.mode !== void 0) {
7495
+ out.mode = requireOrderMode(record.mode, `${pathPrefix}.mode`);
7496
+ }
7497
+ if (record.requireEndpoints !== void 0) {
7498
+ out.requireEndpoints = requireBoolean(
7499
+ record.requireEndpoints,
7500
+ `${pathPrefix}.requireEndpoints`
7501
+ );
7502
+ }
7503
+ return out;
7504
+ }
7505
+ function parseContractStepsSection(value, pathPrefix = "contract.steps") {
7506
+ const record = requireObject(value, pathPrefix);
7507
+ rejectUnknownKeys(record, CONTRACT_STEPS_KEYS, pathPrefix);
7508
+ const out = {};
7509
+ if (record.orderRelations !== void 0) {
7510
+ const items = requireBoundedArray(
7511
+ record.orderRelations,
7512
+ `${pathPrefix}.orderRelations`,
7513
+ CONTRACT_MAX_ORDER_RULES
7514
+ );
7515
+ out.orderRelations = items.map(
7516
+ (item, index) => parseStepOrderRelation(item, `${pathPrefix}.orderRelations[${index}]`)
7517
+ );
7518
+ }
7519
+ return out;
7520
+ }
7438
7521
  function parseRequireProvenance(value, pathPrefix) {
7439
7522
  const record = requireObject(value, pathPrefix);
7440
7523
  rejectUnknownKeys(record, CONTRACT_PROVENANCE_KEYS, pathPrefix);
@@ -7720,6 +7803,9 @@ function parseContractBodySection(value, pathPrefix) {
7720
7803
  out.tools = parseContractToolsSection(record.tools, `${pathPrefix}.tools`);
7721
7804
  }
7722
7805
  if (record.llm !== void 0) out.llm = parseContractLlmSection(record.llm, `${pathPrefix}.llm`);
7806
+ if (record.steps !== void 0) {
7807
+ out.steps = parseContractStepsSection(record.steps, `${pathPrefix}.steps`);
7808
+ }
7723
7809
  if (record.observations !== void 0) {
7724
7810
  out.observations = parseContractObservationsSection(
7725
7811
  record.observations,
@@ -12905,7 +12991,7 @@ function isModuleNotFound4(e) {
12905
12991
  }
12906
12992
  async function loadIndexSqlite() {
12907
12993
  try {
12908
- return await import('./src-ZUGAUXY6.mjs');
12994
+ return await import('./src-YNEJOPRA.mjs');
12909
12995
  } catch (e) {
12910
12996
  if (isModuleNotFound4(e)) {
12911
12997
  console.error(