agent-inspect 6.29.4 → 6.29.6
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 +22 -0
- package/README.md +1 -1
- package/docs/CLI.md +1 -1
- package/docs/LIMITATIONS.md +1 -1
- package/docs/TRACE-CONTRACTS.md +11 -8
- package/package.json +1 -1
- package/packages/cli/dist/{chunk-FJRUJSST.mjs → chunk-DBRMI7TC.mjs} +74 -30
- package/packages/cli/dist/chunk-DBRMI7TC.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +229 -73
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +148 -45
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-GZQVDREP.mjs → src-6CET2GW2.mjs} +3 -3
- package/packages/cli/dist/{src-GZQVDREP.mjs.map → src-6CET2GW2.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +39 -10
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.d.cts +10 -10
- package/packages/core/dist/advanced.d.ts +10 -10
- package/packages/core/dist/advanced.mjs +15 -14
- package/packages/core/dist/advanced.mjs.map +1 -1
- package/packages/core/dist/checks.cjs +78 -32
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.d.cts +7 -7
- package/packages/core/dist/checks.d.ts +7 -7
- package/packages/core/dist/checks.mjs +5 -5
- package/packages/core/dist/{chunk-7LSVGXCN.mjs → chunk-26YJSETN.mjs} +3 -3
- package/packages/core/dist/{chunk-7LSVGXCN.mjs.map → chunk-26YJSETN.mjs.map} +1 -1
- package/packages/core/dist/{chunk-5M4QUYFH.mjs → chunk-BGF5JDJN.mjs} +3 -3
- package/packages/core/dist/{chunk-5M4QUYFH.mjs.map → chunk-BGF5JDJN.mjs.map} +1 -1
- package/packages/core/dist/{chunk-3I6KX32E.mjs → chunk-EE5Z2GQ3.mjs} +20 -12
- package/packages/core/dist/chunk-EE5Z2GQ3.mjs.map +1 -0
- package/packages/core/dist/{chunk-FKVCTIP6.mjs → chunk-KWBO36PH.mjs} +4 -4
- package/packages/core/dist/{chunk-FKVCTIP6.mjs.map → chunk-KWBO36PH.mjs.map} +1 -1
- package/packages/core/dist/{chunk-XPDNO3KH.mjs → chunk-OOX25GTH.mjs} +62 -35
- package/packages/core/dist/chunk-OOX25GTH.mjs.map +1 -0
- package/packages/core/dist/{chunk-BMRK6XHO.mjs → chunk-PBNBQRXV.mjs} +4 -4
- package/packages/core/dist/{chunk-BMRK6XHO.mjs.map → chunk-PBNBQRXV.mjs.map} +1 -1
- package/packages/core/dist/{chunk-KNRY24RS.mjs → chunk-Q5SLKV2Y.mjs} +3 -3
- package/packages/core/dist/{chunk-KNRY24RS.mjs.map → chunk-Q5SLKV2Y.mjs.map} +1 -1
- package/packages/core/dist/{chunk-AT7TICCQ.mjs → chunk-WN5PT4GV.mjs} +4 -4
- package/packages/core/dist/{chunk-AT7TICCQ.mjs.map → chunk-WN5PT4GV.mjs.map} +1 -1
- package/packages/core/dist/{chunk-DZBNXCLA.mjs → chunk-ZFJ2ICTC.mjs} +5 -5
- package/packages/core/dist/{chunk-DZBNXCLA.mjs.map → chunk-ZFJ2ICTC.mjs.map} +1 -1
- package/packages/core/dist/{context-B8zzsmjX.d.ts → context-B7DqUmsJ.d.ts} +3 -3
- package/packages/core/dist/{context-BhaVHtOT.d.cts → context-rR_jW9TH.d.cts} +3 -3
- package/packages/core/dist/diff.d.cts +3 -3
- package/packages/core/dist/diff.d.ts +3 -3
- package/packages/core/dist/exporters.d.cts +3 -3
- package/packages/core/dist/exporters.d.ts +3 -3
- package/packages/core/dist/exporters.mjs +5 -5
- package/packages/core/dist/{index-CrnEOoRu.d.ts → index-7hG_qggp.d.ts} +9 -4
- package/packages/core/dist/{index-BaQ48jrq.d.cts → index-CQJUNPPe.d.cts} +9 -4
- package/packages/core/dist/{index-BT3KcO6-.d.cts → index-Cdww9h50.d.cts} +2 -2
- package/packages/core/dist/{index-reskZCVW.d.ts → index-xUbdpcrP.d.ts} +2 -2
- package/packages/core/dist/index.cjs +11 -9
- package/packages/core/dist/index.cjs.map +1 -1
- package/packages/core/dist/index.d.cts +6 -6
- package/packages/core/dist/index.d.ts +6 -6
- package/packages/core/dist/index.mjs +6 -6
- package/packages/core/dist/{inspect-event-CDqjcrG_.d.cts → inspect-event-ClM5Z8om.d.cts} +6 -1
- package/packages/core/dist/{inspect-event-CDqjcrG_.d.ts → inspect-event-ClM5Z8om.d.ts} +6 -1
- package/packages/core/dist/{log-config-DcjV8ZjF.d.cts → log-config-CyRGaaWd.d.cts} +1 -1
- package/packages/core/dist/{log-config-N_c5AE09.d.ts → log-config-DAV_sR9A.d.ts} +1 -1
- package/packages/core/dist/logs.d.cts +3 -3
- package/packages/core/dist/logs.d.ts +3 -3
- package/packages/core/dist/{persisted-inspect-event-BMwvGIB8.d.ts → persisted-inspect-event-DG02LhEP.d.ts} +1 -1
- package/packages/core/dist/{persisted-inspect-event-DPaCiars.d.cts → persisted-inspect-event-q2ViiBW6.d.cts} +1 -1
- package/packages/core/dist/persisted.cjs +11 -9
- package/packages/core/dist/persisted.cjs.map +1 -1
- package/packages/core/dist/persisted.d.cts +5 -5
- package/packages/core/dist/persisted.d.ts +5 -5
- package/packages/core/dist/persisted.mjs +3 -3
- package/packages/core/dist/readers.cjs +11 -9
- package/packages/core/dist/readers.cjs.map +1 -1
- package/packages/core/dist/readers.d.cts +3 -3
- package/packages/core/dist/readers.d.ts +3 -3
- package/packages/core/dist/readers.mjs +4 -4
- package/packages/core/dist/{types-C5Y8Idle.d.ts → types-BX1EPji1.d.ts} +1 -1
- package/packages/core/dist/{types-BSzhK7Z1.d.cts → types-bwL8cBv5.d.cts} +1 -1
- package/packages/core/dist/writers.cjs +11 -9
- package/packages/core/dist/writers.cjs.map +1 -1
- package/packages/core/dist/writers.d.cts +2 -2
- package/packages/core/dist/writers.d.ts +2 -2
- package/packages/core/dist/writers.mjs +3 -3
- package/packages/cli/dist/chunk-FJRUJSST.mjs.map +0 -1
- package/packages/core/dist/chunk-3I6KX32E.mjs.map +0 -1
- package/packages/core/dist/chunk-XPDNO3KH.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 6.29.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 129f45a: Safe sharing and integration clarity for 6.29.6:
|
|
8
|
+
|
|
9
|
+
- Treat fully redacted raw-content fields as share-safe while retaining other safety checks (N-8).
|
|
10
|
+
- Clarify trajectory vs outcome CI gates and TOOL-only `requiredOrder` diagnostics in CLI help/docs.
|
|
11
|
+
- Recipe corrections: pairwise measured stage commitments for comparable-cohort-runs; browser observed-outcome identity/precondition/postcondition matrix.
|
|
12
|
+
- Jest reporter association remains explicit (`associations` / `resolveTrace`); private hotel capture (N-9) stays unverified without application checkouts.
|
|
13
|
+
|
|
14
|
+
## 6.29.5
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 3e8750f: Trustworthy existing checks for 6.29.5:
|
|
19
|
+
|
|
20
|
+
- Validate `structure.minConfidence` against the canonical AttributionConfidence vocabulary (`unknown` | `heuristic` | `correlated` | `explicit`); reject obsolete values with exit 2.
|
|
21
|
+
- Fail closed on uncertain write completion: client idempotency keys / producer flags are not write-completion proof (ADR-0011).
|
|
22
|
+
- Circuit rules use logical-event projection, case-insensitive TOOL/LLM kind, and `--run` scoping so other runs cannot inflate counts.
|
|
23
|
+
- Selected `--circuit` / `--guardrails` rules appear in `ruleExecutions` / `rulesEvaluated`; unknown extension rule names fail closed instead of silent green.
|
|
24
|
+
|
|
3
25
|
## 6.29.4
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -212,7 +212,7 @@ The root package is enough for custom capture, the CLI, checks, and Evidence wor
|
|
|
212
212
|
|
|
213
213
|
## Status and documentation
|
|
214
214
|
|
|
215
|
-
**Current published baseline:** **6.29.
|
|
215
|
+
**Current published baseline:** **6.29.6** · persisted schema `1.0` · Node.js `>=20` · MIT.
|
|
216
216
|
|
|
217
217
|
Legacy v0.1 and v0.2 traces remain readable. Check the npm badge and [changelog](CHANGELOG.md) for the current published version.
|
|
218
218
|
|
package/docs/CLI.md
CHANGED
|
@@ -337,7 +337,7 @@ Options:
|
|
|
337
337
|
- `--correlate-group`: when using `--session`, also match synthetic `group:` session keys
|
|
338
338
|
- `--guardrails <rule>`: optional deterministic guardrail rules (`banned-phrase`, `pii-leak`, `prompt-injection`, …); repeatable
|
|
339
339
|
- `--circuit <rule>`: optional circuit analyzers (`same-tool-repetition`, `max-retries`, …); repeatable
|
|
340
|
-
- `--fail-on-observation <status>`:
|
|
340
|
+
- `--fail-on-observation <status>`: **outcome gate** — adds `outcome.status` with `requireAny=true` (needs ≥1 OUTCOME event). Comma-separated statuses: `failed`, `passed`, `unknown`, `skipped`. Does **not** invent a passed outcome from tool/LLM/run success. For adapter structure without outcomes, use `--preset trajectory` (plus `--required-tool` etc.); a trajectory pass is not share safety (`verify-safe`).
|
|
341
341
|
- `--preset <trajectory|safety|comprehensive|behavioral-session>`: additive check preset (does not change the default when omitted)
|
|
342
342
|
- `behavioral-session` (6.26): require harness completion + score OUTCOME events (`--fail-on-observation failed` by default); does **not** treat every TOOL `error` as a failed run
|
|
343
343
|
- `trajectory`: completion/structure/relationship focus; excludes share-safety findings
|
package/docs/LIMITATIONS.md
CHANGED
|
@@ -8,7 +8,7 @@ This document states what AgentInspect **does not** provide today. It complement
|
|
|
8
8
|
- **No production APM replacement**: no sampling agents, no fleet-wide aggregation, no uptime SLAs.
|
|
9
9
|
- **No vendor upload pipeline**: no built-in Langfuse/Braintrust/New Relic/Datadog direct exporters as live sinks.
|
|
10
10
|
- **No automatic universal instrumentation** of every framework: integration is explicit (manual traces, log ingest, optional adapters).
|
|
11
|
-
- **No retry execution engine:** TraceContract `retry` rules (including additive `retry.operations[]` recovery oracles in 6.27) evaluate attempt identity and evidence only. AgentInspect does not retry tools, remediates nothing, and does not treat a client `idempotencyKey` as proof of exactly-once writes. Write-tool timeout/unknown completion is unevaluable
|
|
11
|
+
- **No retry execution engine:** TraceContract `retry` rules (including additive `retry.operations[]` recovery oracles in 6.27) evaluate attempt identity and evidence only. AgentInspect does not retry tools, remediates nothing, and does not treat a client `idempotencyKey` as proof of exactly-once writes. Write-tool timeout/unknown/running completion is unevaluable for `retry.operations` write recovery (client keys and producer no-side-effect flags do not clear that finding); write-retry is not safe by default.
|
|
12
12
|
- **Transport facts are source-boundary only:** HTTP status, server-advertised retry delay, selected delay, and their sources must be captured at the transport/fetch boundary. An MCP wrapper cannot recover facts already collapsed into an SDK error message.
|
|
13
13
|
- **Run comparability is optional guidance:** Ordinary trajectory checks do not fail when cohort/prompt/tool commitments are absent. See [RUN-COMPARABILITY.md](./RUN-COMPARABILITY.md). A machine-readable comparable-run profile is not a default gate in this line.
|
|
14
14
|
- **Omitted-payload digests** (`createOmittedPayloadCommitment`) are bounded (1 MiB preflight). Digests prove omitted bytes existed; they are not redaction or authorization.
|
package/docs/TRACE-CONTRACTS.md
CHANGED
|
@@ -25,6 +25,8 @@ Contracts compile to deterministic check rules for common cases:
|
|
|
25
25
|
|
|
26
26
|
## `tools.requiredOrder` semantics
|
|
27
27
|
|
|
28
|
+
`requiredOrder` / `orderRules` match **TOOL** events only (via canonical tool names). LLM / LOGIC / other kinds with the same display name do not satisfy the order and are not relabeled as tools. When a required name exists only under another kind, `tool.usage` reports that kind in the finding message.
|
|
29
|
+
|
|
28
30
|
`requiredOrder` is expanded into **adjacent pair** ordering rules with unique ids:
|
|
29
31
|
|
|
30
32
|
```text
|
|
@@ -42,15 +44,16 @@ Contracts compile to deterministic check rules for common cases:
|
|
|
42
44
|
- `all-occurrences` requires every `before` occurrence to finish before every `after` occurrence starts (`max(before.end) <= min(after.start)`);
|
|
43
45
|
- causal modes fail when a required interval boundary cannot be resolved instead of falling back to encounter order.
|
|
44
46
|
|
|
45
|
-
Examples for `requiredOrder: ["
|
|
47
|
+
Examples for `requiredOrder: ["retrieve_policy", "send_email"]` (both TOOL-typed):
|
|
46
48
|
|
|
47
49
|
| Trajectory | Result |
|
|
48
50
|
| --- | --- |
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
53
|
-
| `cache_lookup →
|
|
51
|
+
| `retrieve_policy → send_email` | PASS |
|
|
52
|
+
| `retrieve_policy → rerank_docs → send_email` | PASS |
|
|
53
|
+
| `retrieve_policy → send_email → retrieve_policy` | PASS under omitted / `first-occurrence`; FAIL under `all-occurrences` |
|
|
54
|
+
| `send_email → retrieve_policy` | FAIL (order) |
|
|
55
|
+
| `cache_lookup → send_email` | FAIL (missing `retrieve_policy` via implied presence) |
|
|
56
|
+
| LLM named `generate` present, no TOOL `generate` | FAIL presence with non-TOOL kind diagnostic; not treated as a tool |
|
|
54
57
|
|
|
55
58
|
Low-level `createToolOrderingRule({ before, after })` alone may still pass when an endpoint is missing (compositional). TraceContract `requiredOrder` does not.
|
|
56
59
|
|
|
@@ -111,7 +114,7 @@ defineTraceContract({
|
|
|
111
114
|
{
|
|
112
115
|
id: "retrieve",
|
|
113
116
|
contract: {
|
|
114
|
-
tools: { required: ["
|
|
117
|
+
tools: { required: ["retrieve_policy"], requiredOrder: ["retrieve_policy", "send_email"] },
|
|
115
118
|
observations: { required: ["retrieval-context-valid"] },
|
|
116
119
|
},
|
|
117
120
|
},
|
|
@@ -225,7 +228,7 @@ defineTraceContract({
|
|
|
225
228
|
|
|
226
229
|
**Retry classification (6.25.1):** a genuine retry is detected from explicit identity preference — `attemptNumber > 1`, valid `retryOf` (target exists and precedes), distinct later `attemptId` under the same `operationId`, or a later finished attempt in an explicitly grouped operation — **not** only from a prior `ok`. `error → success` without `idempotencyKey` / `noSideEffect` evidence fails when `requireIdempotencyEvidenceForRetry` is set. `fallbackOnlyAfterFailure` and `requireRecoveredFailureVisible` require chronological earlier failure in the related chain. A client `idempotencyKey` is evidence of intent, not proof of exactly-once mutation. AgentInspect evaluates traces; it does not execute retries.
|
|
227
230
|
|
|
228
|
-
**Bounded recovery operations (6.27):** `retry.operations[]` adds per-tool oracles for safe **read** recovery first (`retrieve_policy` recipe). Same-arguments checks accept structured payloads or matching digests and fail closed when both are missing. Write `sideEffectClass` treats timeout/`unknown`/`running` completion as unevaluable
|
|
231
|
+
**Bounded recovery operations (6.27 / 6.29.5):** `retry.operations[]` adds per-tool oracles for safe **read** recovery first (`retrieve_policy` recipe). Same-arguments checks accept structured payloads or matching digests and fail closed when both are missing. Write `sideEffectClass` treats timeout/`unknown`/`running` completion as unevaluable → fail; a client `idempotencyKey` or producer `noSideEffect`/`sideEffect:false` flag does **not** clear that finding. Write-retry is not safe by default.
|
|
229
232
|
|
|
230
233
|
Missing structured argument evidence fails closed (`AI_CHECK_TOOL_ARGUMENT_EVIDENCE_UNAVAILABLE`). Findings never include full actual inputs.
|
|
231
234
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-inspect",
|
|
3
|
-
"version": "6.29.
|
|
3
|
+
"version": "6.29.6",
|
|
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",
|
|
@@ -9,6 +9,23 @@ import { createReadStream } from 'fs';
|
|
|
9
9
|
import { createInterface } from 'readline';
|
|
10
10
|
import { pathToFileURL } from 'url';
|
|
11
11
|
|
|
12
|
+
// packages/core/src/types/inspect-event.ts
|
|
13
|
+
var ATTRIBUTION_CONFIDENCES = [
|
|
14
|
+
"unknown",
|
|
15
|
+
"heuristic",
|
|
16
|
+
"correlated",
|
|
17
|
+
"explicit"
|
|
18
|
+
];
|
|
19
|
+
function isAttributionConfidence(value) {
|
|
20
|
+
return typeof value === "string" && ATTRIBUTION_CONFIDENCES.includes(value);
|
|
21
|
+
}
|
|
22
|
+
var ATTRIBUTION_CONFIDENCE_RANK = {
|
|
23
|
+
unknown: 0,
|
|
24
|
+
heuristic: 1,
|
|
25
|
+
correlated: 2,
|
|
26
|
+
explicit: 3
|
|
27
|
+
};
|
|
28
|
+
|
|
12
29
|
// packages/core/src/types/persisted-inspect-event.ts
|
|
13
30
|
var INSPECT_KINDS = [
|
|
14
31
|
"RUN",
|
|
@@ -24,12 +41,6 @@ var INSPECT_KINDS = [
|
|
|
24
41
|
"LOG",
|
|
25
42
|
"OUTCOME"
|
|
26
43
|
];
|
|
27
|
-
var ATTRIBUTION_CONFIDENCES = [
|
|
28
|
-
"explicit",
|
|
29
|
-
"correlated",
|
|
30
|
-
"heuristic",
|
|
31
|
-
"unknown"
|
|
32
|
-
];
|
|
33
44
|
var PERSISTED_EVENT_SOURCE_TYPES = [
|
|
34
45
|
"manual",
|
|
35
46
|
"json-log",
|
|
@@ -65,9 +76,6 @@ function isOptionalNonNegativeNumber(value) {
|
|
|
65
76
|
function isInspectKind(value) {
|
|
66
77
|
return typeof value === "string" && INSPECT_KINDS.includes(value);
|
|
67
78
|
}
|
|
68
|
-
function isAttributionConfidence(value) {
|
|
69
|
-
return typeof value === "string" && ATTRIBUTION_CONFIDENCES.includes(value);
|
|
70
|
-
}
|
|
71
79
|
function isPersistedEventSourceType(value) {
|
|
72
80
|
return typeof value === "string" && PERSISTED_EVENT_SOURCE_TYPES.includes(value);
|
|
73
81
|
}
|
|
@@ -5192,12 +5200,7 @@ var STATUS_RANK = {
|
|
|
5192
5200
|
warning: 1,
|
|
5193
5201
|
pass: 2
|
|
5194
5202
|
};
|
|
5195
|
-
var CONFIDENCE_RANK =
|
|
5196
|
-
unknown: 0,
|
|
5197
|
-
heuristic: 1,
|
|
5198
|
-
correlated: 2,
|
|
5199
|
-
explicit: 3
|
|
5200
|
-
};
|
|
5203
|
+
var CONFIDENCE_RANK = ATTRIBUTION_CONFIDENCE_RANK;
|
|
5201
5204
|
var DEFAULT_SENSITIVE_KEYS = DEFAULT_CREDENTIAL_SENSITIVE_KEYS;
|
|
5202
5205
|
var DEFAULT_RAW_CONTENT_KEYS = [
|
|
5203
5206
|
"body",
|
|
@@ -5671,6 +5674,18 @@ function limitFindings(findings, maxFindings) {
|
|
|
5671
5674
|
function hasRedactionMarker(value, markers) {
|
|
5672
5675
|
return markers.some((marker) => value.includes(marker)) || /^\[HASH:[A-Za-z0-9_-]+\]$/.test(value);
|
|
5673
5676
|
}
|
|
5677
|
+
function isFullyRedactedValue(value, markers = ["[REDACTED]", "[REDACTED:"]) {
|
|
5678
|
+
if (typeof value !== "string") return false;
|
|
5679
|
+
const trimmed = value.trim();
|
|
5680
|
+
if (trimmed.length === 0) return false;
|
|
5681
|
+
if (/^\[HASH:[A-Za-z0-9_-]+\]$/.test(trimmed)) return true;
|
|
5682
|
+
if (/^\[REDACTED:[^\]]*\]$/.test(trimmed)) return true;
|
|
5683
|
+
for (const marker of markers) {
|
|
5684
|
+
if (marker.endsWith(":")) continue;
|
|
5685
|
+
if (trimmed === marker) return true;
|
|
5686
|
+
}
|
|
5687
|
+
return false;
|
|
5688
|
+
}
|
|
5674
5689
|
function isSensitiveKey(key, sensitiveKeys) {
|
|
5675
5690
|
return isCredentialSensitiveKey(key, sensitiveKeys);
|
|
5676
5691
|
}
|
|
@@ -5989,8 +6004,26 @@ function createToolUsageRule(options) {
|
|
|
5989
6004
|
const findings = [];
|
|
5990
6005
|
for (const required of options.required ?? []) {
|
|
5991
6006
|
if (!nameSet.has(required)) {
|
|
6007
|
+
const otherKinds = [
|
|
6008
|
+
...new Set(
|
|
6009
|
+
context.events.filter((event) => {
|
|
6010
|
+
const kind = typeof event.kind === "string" ? event.kind.toUpperCase() : "";
|
|
6011
|
+
if (kind === "TOOL") return false;
|
|
6012
|
+
return resolveCanonicalToolName(event) === required || event.name === required || event.name === `tool:${required}` || event.name.endsWith(`:${required}`);
|
|
6013
|
+
}).map(
|
|
6014
|
+
(event) => typeof event.kind === "string" ? event.kind.toUpperCase() : "UNKNOWN"
|
|
6015
|
+
)
|
|
6016
|
+
)
|
|
6017
|
+
].sort();
|
|
6018
|
+
const hint = otherKinds.length > 0 ? ` Required name appears under non-TOOL kind(s): ${otherKinds.join(", ")}. tools.required / requiredOrder match TOOL events only.` : "";
|
|
5992
6019
|
findings.push(
|
|
5993
|
-
failFinding(
|
|
6020
|
+
failFinding(
|
|
6021
|
+
"tool.usage",
|
|
6022
|
+
`Required tool ${required} did not appear.${hint}`,
|
|
6023
|
+
runEvidence(context.selectedRun),
|
|
6024
|
+
required,
|
|
6025
|
+
names
|
|
6026
|
+
)
|
|
5994
6027
|
);
|
|
5995
6028
|
}
|
|
5996
6029
|
}
|
|
@@ -6164,6 +6197,12 @@ function createStructureCycleRule() {
|
|
|
6164
6197
|
};
|
|
6165
6198
|
}
|
|
6166
6199
|
function createStructureRelationshipRule(options = {}) {
|
|
6200
|
+
if (options.minConfidence !== void 0 && !isAttributionConfidence(options.minConfidence)) {
|
|
6201
|
+
throw new TypeError(
|
|
6202
|
+
`createStructureRelationshipRule: minConfidence must be one of: ${ATTRIBUTION_CONFIDENCES.join(", ")}.`
|
|
6203
|
+
);
|
|
6204
|
+
}
|
|
6205
|
+
const minConfidence = options.minConfidence;
|
|
6167
6206
|
return {
|
|
6168
6207
|
id: "structure.relationship",
|
|
6169
6208
|
category: "structure",
|
|
@@ -6171,18 +6210,21 @@ function createStructureRelationshipRule(options = {}) {
|
|
|
6171
6210
|
evaluate(context) {
|
|
6172
6211
|
const byId = eventMap(semanticEvents(context));
|
|
6173
6212
|
const findings = [];
|
|
6174
|
-
const minConfidence = options.minConfidence;
|
|
6175
6213
|
for (const event of semanticEvents(context)) {
|
|
6176
|
-
if (minConfidence
|
|
6177
|
-
|
|
6178
|
-
|
|
6179
|
-
|
|
6180
|
-
|
|
6181
|
-
|
|
6182
|
-
|
|
6183
|
-
|
|
6184
|
-
|
|
6185
|
-
|
|
6214
|
+
if (minConfidence) {
|
|
6215
|
+
const eventRank = CONFIDENCE_RANK[event.confidence] ?? CONFIDENCE_RANK.unknown;
|
|
6216
|
+
const minRank = CONFIDENCE_RANK[minConfidence];
|
|
6217
|
+
if (eventRank < minRank) {
|
|
6218
|
+
findings.push(
|
|
6219
|
+
failFinding(
|
|
6220
|
+
"structure.relationship",
|
|
6221
|
+
`Event confidence ${event.confidence} is below ${minConfidence}.`,
|
|
6222
|
+
[eventEvidence(event, "confidence")],
|
|
6223
|
+
{ minConfidence },
|
|
6224
|
+
event.confidence
|
|
6225
|
+
)
|
|
6226
|
+
);
|
|
6227
|
+
}
|
|
6186
6228
|
}
|
|
6187
6229
|
if (!event.parentId) continue;
|
|
6188
6230
|
if (event.parentId === event.eventId) {
|
|
@@ -6346,6 +6388,7 @@ function createSafetyRedactionRule(options = {}) {
|
|
|
6346
6388
|
function createSafetyRawContentRule(options = {}) {
|
|
6347
6389
|
const forbiddenKeys = options.forbiddenKeys ?? DEFAULT_RAW_CONTENT_KEYS;
|
|
6348
6390
|
const safePathPrefixes = options.safePathPrefixes ?? DEFAULT_SAFE_RAW_CONTENT_PATH_PREFIXES;
|
|
6391
|
+
const markers = options.redactedMarkers ?? ["[REDACTED]", "[REDACTED:"];
|
|
6349
6392
|
return {
|
|
6350
6393
|
id: "safety.rawPrompt",
|
|
6351
6394
|
category: "safety",
|
|
@@ -6356,6 +6399,7 @@ function createSafetyRawContentRule(options = {}) {
|
|
|
6356
6399
|
for (const entry of eventValueEntries(event, { includeSummaries: options.includeSummaries })) {
|
|
6357
6400
|
const key = entry.key ?? lastPathSegment(entry.path);
|
|
6358
6401
|
if (!isRawContentPath(entry.path, key, forbiddenKeys, safePathPrefixes)) continue;
|
|
6402
|
+
if (isFullyRedactedValue(entry.value, markers)) continue;
|
|
6359
6403
|
findings.push(
|
|
6360
6404
|
failFinding(
|
|
6361
6405
|
"safety.rawPrompt",
|
|
@@ -12488,6 +12532,6 @@ function renderGateReport(result, options = {}) {
|
|
|
12488
12532
|
return renderGateSummaryMarkdown(result);
|
|
12489
12533
|
}
|
|
12490
12534
|
|
|
12491
|
-
export { COHORT_METRIC_IDS, DEFAULT_SUITE_ARTIFACTS_DIR, EVIDENCE_FORMAT_VERSION, EVIDENCE_HTML_FILENAME, EVIDENCE_MANIFEST_FILENAME, 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, diffRuns, diffTraceEvents, enrichSessionRunRecord, escapeHtml, escapeMarkdown, extractMetadata, extractOutcomesFromTraceEvents, filterMetasBySessionScope, filterTraces, flattenTree, formatDuration2 as formatDuration, formatStepLabel, formatTimestamp, gateHasThresholds, getIndent, getTraceFilePath, inferEvidenceFileRole, isAgentInspectTrace, isPersistedInspectEvent, loadSessionRunRecords, loadSuiteConfig, loadTraceMetadataList, manualTraceEventsToComparableRun, nanoid, normalizeBundleOutputPath, openTrace, parseCohortMetricList, parseDuration, parseDurationFilter, parseGateList, parseTraceJsonl, persistedInspectEventsToTraceEvents, 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, summarizeObservedOutcomes, summarizeSemanticParity, traceEventToPersistedInspectEvent, truncateName, truncateStringForProfile, validateEvent, validateSuiteConfig, verifyEvidenceDirectory, zeroKinds };
|
|
12492
|
-
//# sourceMappingURL=chunk-
|
|
12493
|
-
//# sourceMappingURL=chunk-
|
|
12535
|
+
export { ATTRIBUTION_CONFIDENCES, COHORT_METRIC_IDS, DEFAULT_SUITE_ARTIFACTS_DIR, EVIDENCE_FORMAT_VERSION, EVIDENCE_HTML_FILENAME, EVIDENCE_MANIFEST_FILENAME, 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, diffRuns, diffTraceEvents, enrichSessionRunRecord, escapeHtml, escapeMarkdown, extractMetadata, extractOutcomesFromTraceEvents, filterMetasBySessionScope, filterTraces, flattenTree, formatDuration2 as formatDuration, formatStepLabel, formatTimestamp, gateHasThresholds, getIndent, getTraceFilePath, inferEvidenceFileRole, isAgentInspectTrace, isAttributionConfidence, isPersistedInspectEvent, loadSessionRunRecords, loadSuiteConfig, loadTraceMetadataList, manualTraceEventsToComparableRun, nanoid, normalizeBundleOutputPath, openTrace, parseCohortMetricList, parseDuration, parseDurationFilter, parseGateList, parseTraceJsonl, 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, summarizeObservedOutcomes, summarizeSemanticParity, traceEventToPersistedInspectEvent, truncateName, truncateStringForProfile, validateEvent, validateSuiteConfig, verifyEvidenceDirectory, zeroKinds };
|
|
12536
|
+
//# sourceMappingURL=chunk-DBRMI7TC.mjs.map
|
|
12537
|
+
//# sourceMappingURL=chunk-DBRMI7TC.mjs.map
|