agent-inspect 6.31.33 → 6.31.34

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 (40) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/packages/cli/dist/{chunk-AILSHDEF.mjs → chunk-6TXW53UR.mjs} +32 -17
  5. package/packages/cli/dist/chunk-6TXW53UR.mjs.map +1 -0
  6. package/packages/cli/dist/index.cjs +91 -31
  7. package/packages/cli/dist/index.cjs.map +1 -1
  8. package/packages/cli/dist/index.mjs +64 -19
  9. package/packages/cli/dist/index.mjs.map +1 -1
  10. package/packages/cli/dist/{src-SP36M4VB.mjs → src-GCLC4DIC.mjs} +3 -3
  11. package/packages/cli/dist/{src-SP36M4VB.mjs.map → src-GCLC4DIC.mjs.map} +1 -1
  12. package/packages/core/dist/advanced.cjs +3 -2
  13. package/packages/core/dist/advanced.cjs.map +1 -1
  14. package/packages/core/dist/advanced.mjs +9 -9
  15. package/packages/core/dist/checks.cjs +27 -13
  16. package/packages/core/dist/checks.cjs.map +1 -1
  17. package/packages/core/dist/checks.mjs +3 -3
  18. package/packages/core/dist/{chunk-6S666BF4.mjs → chunk-2SKAI5ZN.mjs} +3 -3
  19. package/packages/core/dist/{chunk-6S666BF4.mjs.map → chunk-2SKAI5ZN.mjs.map} +1 -1
  20. package/packages/core/dist/{chunk-FBPDF7HO.mjs → chunk-6F6KLGCR.mjs} +3 -3
  21. package/packages/core/dist/{chunk-FBPDF7HO.mjs.map → chunk-6F6KLGCR.mjs.map} +1 -1
  22. package/packages/core/dist/{chunk-EMDJLFRK.mjs → chunk-CXC7L4PY.mjs} +30 -16
  23. package/packages/core/dist/chunk-CXC7L4PY.mjs.map +1 -0
  24. package/packages/core/dist/{chunk-RB6WANSW.mjs → chunk-PU3FF5AP.mjs} +5 -4
  25. package/packages/core/dist/chunk-PU3FF5AP.mjs.map +1 -0
  26. package/packages/core/dist/{chunk-VIEJJ5JB.mjs → chunk-X5RP2E2H.mjs} +4 -4
  27. package/packages/core/dist/{chunk-VIEJJ5JB.mjs.map → chunk-X5RP2E2H.mjs.map} +1 -1
  28. package/packages/core/dist/exporters.cjs +33 -9
  29. package/packages/core/dist/exporters.cjs.map +1 -1
  30. package/packages/core/dist/exporters.mjs +33 -10
  31. package/packages/core/dist/exporters.mjs.map +1 -1
  32. package/packages/core/dist/index.cjs +3 -2
  33. package/packages/core/dist/index.cjs.map +1 -1
  34. package/packages/core/dist/index.mjs +4 -4
  35. package/packages/core/dist/writers.cjs +3 -2
  36. package/packages/core/dist/writers.cjs.map +1 -1
  37. package/packages/core/dist/writers.mjs +1 -1
  38. package/packages/cli/dist/chunk-AILSHDEF.mjs.map +0 -1
  39. package/packages/core/dist/chunk-EMDJLFRK.mjs.map +0 -1
  40. package/packages/core/dist/chunk-RB6WANSW.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.31.34
4
+
5
+ ### Patch Changes
6
+
7
+ - c0726d8: Detect underscore-adjacent Stripe keys across redact, credential-value, and verify-safe patterns (#528; thanks Frank). Align `gate --evidence-on` check-results `aggregateStatus` with residual artifact assessment while keeping gate pass/fail separate (#529; thanks Frank). Fail unfinished before-order occurrences even when a finished peer exists, and treat after-start without a terminal as order-relevant. Harden Gary/Nest saved verifiers, refuse ambiguous HTML lifecycle joins, and evaluate Roy UNPROVABLE positive controls.
8
+
3
9
  ## 6.31.33
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -213,7 +213,7 @@ The root package is enough for custom capture, the CLI, checks, and Evidence wor
213
213
 
214
214
  ## Status and documentation
215
215
 
216
- **Current published baseline:** **6.31.33** · persisted schema `1.0` · Node.js `>=20` · MIT.
216
+ **Current published baseline:** **6.31.34** · persisted schema `1.0` · Node.js `>=20` · MIT.
217
217
 
218
218
  Legacy v0.1 and v0.2 traces remain readable. Check the npm badge and [changelog](CHANGELOG.md) for the current published version.
219
219
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-inspect",
3
- "version": "6.31.33",
3
+ "version": "6.31.34",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Local evidence debugger and trajectory-test toolkit for TypeScript AI agents — execution trees, TraceContract checks, Evidence v2, and read-only MCP",
@@ -938,8 +938,9 @@ var HIGH_CONFIDENCE_CREDENTIAL_PATTERNS = [
938
938
  /\beyJ[a-zA-Z0-9_-]{8,}\.[a-zA-Z0-9_-]{8,}\.[a-zA-Z0-9_-]{8,}\b/,
939
939
  /\b(?:sk-(?:proj-)?[a-zA-Z0-9_-]{16,}|sk-ant-[a-zA-Z0-9_-]{16,}|AIza[0-9A-Za-z_-]{20,})\b/,
940
940
  // Stripe secret / restricted keys use underscores (not sk-). Keep in sync with
941
- // packages/redact/src/index.ts + packages/core/src/checks DEFAULT_SECRET_PATTERNS (#520).
942
- /\b(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}\b/,
941
+ // packages/redact/src/index.ts + packages/core/src/checks DEFAULT_SECRET_PATTERNS (#520/#528).
942
+ // Use non-alnum lookarounds so underscore-adjacent forms (acct_sk_live_…, …_eu) match.
943
+ /(?<![A-Za-z0-9])(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}(?![A-Za-z0-9])/,
943
944
  /\bxox[abposr]-[A-Za-z0-9-]{10,}\b/,
944
945
  /\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9_]{20,}\b/,
945
946
  /\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/,
@@ -7832,10 +7833,11 @@ var SAFE_USAGE_LEAF_KEYS = /* @__PURE__ */ new Set([
7832
7833
  var DEFAULT_SECRET_PATTERNS = [
7833
7834
  { id: "bearer-token", pattern: /Bearer\s+[A-Za-z0-9._~+/-]{12,}=*/ },
7834
7835
  { id: "openai-key", pattern: /sk-[A-Za-z0-9_-]{16,}/ },
7835
- // Stripe + Slack: keep in sync with packages/redact + credential-value-patterns (#520).
7836
+ // Stripe + Slack: keep in sync with packages/redact + credential-value-patterns (#520/#528).
7837
+ // Non-alnum lookarounds so underscore-adjacent forms (acct_sk_live_…, …_eu) match.
7836
7838
  {
7837
7839
  id: "stripe-key",
7838
- pattern: /\b(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}\b/
7840
+ pattern: /(?<![A-Za-z0-9])(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}(?![A-Za-z0-9])/
7839
7841
  },
7840
7842
  { id: "slack-token", pattern: /\bxox[abposr]-[A-Za-z0-9-]{10,}\b/ },
7841
7843
  { id: "aws-access-key", pattern: /AKIA[0-9A-Z]{16}/ },
@@ -8786,7 +8788,12 @@ function createStepOrderingRule(options) {
8786
8788
  const beforeRunning = semanticEvents(context).filter(
8787
8789
  (event) => event.kind === options.before.kind && event.status === "running" && stepEndpointName(event, options.before.kind) === options.before.name
8788
8790
  );
8789
- if (beforeEvents.length === 0 && afterEvents.length > 0 && beforeRunning.length > 0) {
8791
+ const afterRunning = semanticEvents(context).filter(
8792
+ (event) => event.kind === options.after.kind && event.status === "running" && stepEndpointName(event, options.after.kind) === options.after.name
8793
+ );
8794
+ const afterStarted = afterEvents.length > 0 || afterRunning.length > 0;
8795
+ const afterEvidenceEvent = afterEvents[0] ?? afterRunning[0];
8796
+ if (beforeRunning.length > 0 && afterStarted && afterEvidenceEvent !== void 0) {
8790
8797
  const endpointExpected2 = bothTools ? { before: options.before.name, after: options.after.name } : { before: options.before, after: options.after };
8791
8798
  return [
8792
8799
  failFinding(
@@ -8794,18 +8801,20 @@ function createStepOrderingRule(options) {
8794
8801
  `${subject} ${beforeLabel} started but never finished before ${afterLabel} ran.`,
8795
8802
  [
8796
8803
  ...beforeRunning.map((event) => eventEvidence3(event)),
8797
- eventEvidence3(afterEvents[0])
8804
+ eventEvidence3(afterEvidenceEvent)
8798
8805
  ],
8799
8806
  { ...endpointExpected2, mode },
8800
8807
  {
8801
8808
  code: bothTools ? "tool.order.interval-unresolved" : "step.order.interval-unresolved",
8802
8809
  unfinishedBefore: true,
8803
- beforeStatus: "running"
8810
+ beforeStatus: "running",
8811
+ ...beforeEvents.length > 0 ? { finishedBeforeMasked: true } : {},
8812
+ ...afterEvents.length === 0 ? { afterStatus: "running" } : {}
8804
8813
  }
8805
8814
  )
8806
8815
  ];
8807
8816
  }
8808
- if (beforeEvents.length === 0 || afterEvents.length === 0) {
8817
+ if (beforeEvents.length === 0 || !afterStarted) {
8809
8818
  if (!requireEndpoints) return [];
8810
8819
  const findings = [];
8811
8820
  if (beforeEvents.length === 0) {
@@ -8829,7 +8838,7 @@ function createStepOrderingRule(options) {
8829
8838
  )
8830
8839
  );
8831
8840
  }
8832
- if (afterEvents.length === 0) {
8841
+ if (!afterStarted) {
8833
8842
  const otherKinds = otherKindsForStepName(
8834
8843
  context,
8835
8844
  options.after.kind,
@@ -8852,9 +8861,15 @@ function createStepOrderingRule(options) {
8852
8861
  }
8853
8862
  return findings;
8854
8863
  }
8855
- const encounter = finishedEvents(context).filter(
8856
- (event) => event.kind === options.before.kind && stepEndpointName(event, options.before.kind) === options.before.name || event.kind === options.after.kind && stepEndpointName(event, options.after.kind) === options.after.name
8857
- );
8864
+ const afterForOrder = afterEvents.length > 0 ? afterEvents : afterRunning;
8865
+ const encounter = [
8866
+ ...finishedEvents(context).filter(
8867
+ (event) => event.kind === options.before.kind && stepEndpointName(event, options.before.kind) === options.before.name || event.kind === options.after.kind && stepEndpointName(event, options.after.kind) === options.after.name
8868
+ ),
8869
+ ...afterEvents.length === 0 ? afterRunning.filter(
8870
+ (event) => !finishedEvents(context).some((finished) => finished.eventId === event.eventId)
8871
+ ) : []
8872
+ ];
8858
8873
  let beforeIndex;
8859
8874
  let afterIndex;
8860
8875
  for (const [position, event] of encounter.entries()) {
@@ -8885,7 +8900,7 @@ function createStepOrderingRule(options) {
8885
8900
  ];
8886
8901
  }
8887
8902
  const beforeEvent = beforeEvents[0];
8888
- const afterEvent = afterEvents[0];
8903
+ const afterEvent = afterForOrder[0];
8889
8904
  const beforeEnd = eventEndMs(beforeEvent);
8890
8905
  const afterStart = eventStartMs(afterEvent);
8891
8906
  const endpointExpected = bothTools ? { before: options.before.name, after: options.after.name } : { before: options.before, after: options.after };
@@ -8971,7 +8986,7 @@ function createStepOrderingRule(options) {
8971
8986
  latestBefore = { event, end };
8972
8987
  }
8973
8988
  }
8974
- for (const event of afterEvents) {
8989
+ for (const event of afterForOrder) {
8975
8990
  const start = eventStartMs(event);
8976
8991
  if (start === void 0) {
8977
8992
  missingAfterStarts += 1;
@@ -9000,7 +9015,7 @@ function createStepOrderingRule(options) {
9000
9015
  const tie = tiedEnd === tiedStart ? recordedTieOrder(
9001
9016
  context,
9002
9017
  beforeEvents.filter((event) => eventEndMs(event) === tiedEnd),
9003
- afterEvents.filter((event) => eventStartMs(event) === tiedStart)
9018
+ afterForOrder.filter((event) => eventStartMs(event) === tiedStart)
9004
9019
  ) : void 0;
9005
9020
  if (latestBefore.end > earliestAfter.start || tie !== void 0 && tie.inOrder !== true) {
9006
9021
  return [
@@ -16171,5 +16186,5 @@ function renderGateReport(result, options = {}) {
16171
16186
  }
16172
16187
 
16173
16188
  export { ATTRIBUTION_CONFIDENCES, COHORT_METRIC_IDS, DEFAULT_REDACT_KEYS, DEFAULT_SUITE_ARTIFACTS_DIR, DELIVERY_CONFLICT_ATTR, DELIVERY_EVENT_BASE_ATTR, EVIDENCE_FORMAT_VERSION, EVIDENCE_HTML_FILENAME, EVIDENCE_MANIFEST_FILENAME, IDENTITY_CONFLICT_ATTR, Redactor, TraceDirectory, TraceReadError, TreeBuilder, aggregateBundleSafeStatus, aggregateSessionCheckResults, analyzeCohort, applyProfileMetadataCaps, assertBundlePathContained, assertEvidenceRelativePath, buildActivitySummary, buildBundleMetadata, buildBundleSummaryMarkdown, buildEvidenceCausalFailureViewHtml, buildEvidenceCiPackage, buildEvidenceCircuitViewHtml, buildEvidenceContractsViewHtml, buildEvidenceDiffViewHtml, buildEvidenceHtmlShell, buildEvidenceManifest, buildEvidenceOutcomesViewHtml, buildEvidenceProvenanceViewHtml, buildEvidenceSafetyViewHtml, buildEvidenceTimelineViewHtml, buildEvidenceToolsLlmViewHtml, buildEvidenceTreeViewHtml, buildLocalExplanation, buildPlaceholderArtifact, buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildSessionIndex, buildTraceStats, buildZipArchive, bundleFailsOnSafety, bundleRunAssetRelativePath, collectTraceSchemaVersions, compactAttributes, createBaselineRegressionRule, createLlmUsageRule, createMaxStepDurationRule, createObservedOutcomeRule, createRequireCompletedRule, createRunDepthRule, createRunDurationRule, createRunStatusRule, createSafetyOversizedAttributeRule, createSafetyRawContentRule, createSafetyRedactionRule, createSafetySecretPatternRule, createStallDetectionRule, createStructureCycleRule, createStructureOrphanRule, createStructureParallelWidthRule, createStructureRelationshipRule, createToolUsageRule, defaultBundleOutputPath, defaultSuiteConfigTemplate, defineTraceContract, diffRuns, diffTraceEvents, enrichSessionRunRecord, escapeHtml, escapeMarkdown, evaluateTraceContract, extractMetadata, extractOutcomesFromTraceEvents, filterMetasBySessionScope, filterTraces, flattenTree, formatDuration2 as formatDuration, formatStepLabel, formatTimestamp, gateHasThresholds, getIndent, getTraceFilePath, inferEvidenceFileRole, isAgentInspectTrace, isAttributionConfidence, isCredentialSensitiveKey, isPersistedInspectEvent, loadSessionRunRecords, loadSuiteConfig, loadTraceMetadataList, manualTraceEventsToComparableRun, nanoid, normalizeBundleOutputPath, openTrace, parseCohortMetricList, parseDuration, parseDurationFilter, parseGateList, parseTraceJsonl, persistedInspectEventsToRunTrees, persistedInspectEventsToTraceEvents, projectLogicalEvents, renderActivitySummaryHuman, renderCohortReport, renderErrorLine, renderGateReport, renderObservedOutcomesHtml, renderObservedOutcomesMarkdown, renderRunDiff, renderRunWhat, renderStepLine, renderSuiteReport, renderTimeline, renderTraceStats, resolveBundleRunIds, resolveRedactionProfile, resolveSuiteTemplate, resolveTraceDir, runGate, runSuite, runTraceChecks, safeString, sanitizeBundleRunId, searchTraces, serializeEvidenceManifest, sha256Hex, stableJson, stringContainsHighConfidenceCredential, summarizeObservedOutcomes, summarizeSemanticParity, traceEventToPersistedInspectEvent, truncateName, truncateStringForProfile, validateEvent, validateSuiteConfig, verifyEvidenceDirectory, zeroKinds };
16174
- //# sourceMappingURL=chunk-AILSHDEF.mjs.map
16175
- //# sourceMappingURL=chunk-AILSHDEF.mjs.map
16189
+ //# sourceMappingURL=chunk-6TXW53UR.mjs.map
16190
+ //# sourceMappingURL=chunk-6TXW53UR.mjs.map