agent-inspect 6.17.2 → 6.17.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.
Files changed (32) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +5 -8
  3. package/docs/ADAPTER-CONFORMANCE.md +24 -0
  4. package/docs/CI-ARTIFACTS.md +2 -1
  5. package/docs/OPENAI-AGENTS-LOCAL.md +14 -0
  6. package/docs/SAFE-TRACE-SHARING.md +3 -0
  7. package/docs/SCREENSHOTS.md +2 -1
  8. package/docs/SELF-HOSTING.md +2 -0
  9. package/docs/STANDARDS.md +15 -0
  10. package/docs/SUPPORT-LEVELS.md +23 -0
  11. package/docs/assets/agent-inspect-logo-mark.svg +12 -0
  12. package/docs/assets/readme-product-loop.svg +17 -26
  13. package/package.json +5 -3
  14. package/packages/cli/dist/{chunk-FXGWXSFV.mjs → chunk-YX6RFLV5.mjs} +15 -5
  15. package/packages/cli/dist/chunk-YX6RFLV5.mjs.map +1 -0
  16. package/packages/cli/dist/index.cjs +32 -10
  17. package/packages/cli/dist/index.cjs.map +1 -1
  18. package/packages/cli/dist/index.mjs +22 -10
  19. package/packages/cli/dist/index.mjs.map +1 -1
  20. package/packages/cli/dist/{src-EW7KW2BK.mjs → src-X6SLMBNH.mjs} +3 -3
  21. package/packages/cli/dist/{src-EW7KW2BK.mjs.map → src-X6SLMBNH.mjs.map} +1 -1
  22. package/packages/core/dist/advanced.cjs +7 -2
  23. package/packages/core/dist/advanced.cjs.map +1 -1
  24. package/packages/core/dist/advanced.mjs +7 -2
  25. package/packages/core/dist/advanced.mjs.map +1 -1
  26. package/packages/core/dist/checks.cjs +7 -2
  27. package/packages/core/dist/checks.cjs.map +1 -1
  28. package/packages/core/dist/checks.mjs +1 -1
  29. package/packages/core/dist/{chunk-UFP54T7F.mjs → chunk-HN377P23.mjs} +9 -4
  30. package/packages/core/dist/chunk-HN377P23.mjs.map +1 -0
  31. package/packages/cli/dist/chunk-FXGWXSFV.mjs.map +0 -1
  32. package/packages/core/dist/chunk-UFP54T7F.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.17.4
4
+
5
+ ### Patch Changes
6
+
7
+ - c4b0f03: Fix camelCase / kebab / dot compound credential key redaction (`userPassword`, `clientSecret`) while keeping token-config keys and camelCase topic fields (`emailNote`) un-key-redacted.
8
+
9
+ ## 6.17.3
10
+
11
+ ### Patch Changes
12
+
13
+ - 737bb03: Docs updates (README mark/loop, case-study template, Evidence retention guidance, support reproduction), TraceFacts/Evidence/OTLP/CLI regression tests, and exclude the RUN boundary from `run.slowestNode`.
14
+
3
15
  ## 6.17.2
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -1,11 +1,8 @@
1
1
  <p align="center">
2
- <picture>
3
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/rajudandigam/agent-inspect/main/docs/assets/agent-inspect-logo-dark.svg?sanitize=true">
4
- <img src="https://raw.githubusercontent.com/rajudandigam/agent-inspect/main/docs/assets/agent-inspect-logo.svg?sanitize=true" width="240" alt="AgentInspect">
5
- </picture>
2
+ <img src="https://raw.githubusercontent.com/rajudandigam/agent-inspect/main/docs/assets/agent-inspect-logo-mark.svg?sanitize=true" width="56" height="56" alt="AgentInspect">
6
3
  </p>
7
-
8
- <p align="center"><strong>Local-first evidence for TypeScript AI agents</strong></p>
4
+ <p align="center"><strong>agent-inspect</strong></p>
5
+ <p align="center">Local-first evidence for TypeScript AI agents</p>
9
6
 
10
7
  <h1 align="center">
11
8
  See what your agent did.<br>
@@ -47,7 +44,7 @@ npm install agent-inspect
47
44
  Agent code rarely fails as one function call. It plans, retrieves, calls tools, invokes a model, retries, and produces side effects. Flat logs show fragments. AgentInspect keeps the run as local JSONL and gives you one evidence loop from the same trace.
48
45
 
49
46
  <p align="center">
50
- <img src="https://raw.githubusercontent.com/rajudandigam/agent-inspect/main/docs/assets/showcase/diagrams/value-loop.svg" alt="Capture or import one local trace, then debug the run, prevent trajectory regressions, and prepare share-checked evidence" width="900">
47
+ <img src="https://raw.githubusercontent.com/rajudandigam/agent-inspect/main/docs/assets/readme-product-loop.svg?sanitize=true" alt="Capture one local trace, then debug, prevent, and share from the same evidence loop" width="900">
51
48
  </p>
52
49
 
53
50
  ## One trace. Three jobs.
@@ -213,7 +210,7 @@ The root package is enough for custom capture, the CLI, checks, and Evidence wor
213
210
 
214
211
  ## Status and documentation
215
212
 
216
- **Current published baseline:** **6.17.2** · persisted schema `1.0` · Node.js `>=20` · MIT.
213
+ **Current published baseline:** **6.17.3** · persisted schema `1.0` · Node.js `>=20` · MIT.
217
214
 
218
215
  Legacy v0.1 and v0.2 traces remain readable. Check the npm badge and [changelog](CHANGELOG.md) for the current published version.
219
216
 
@@ -58,6 +58,30 @@ This is an internal official-adapter gate, not a third-party certification progr
58
58
 
59
59
  An adapter can be documented as supported only after no-network fixtures cover run, step, tool, LLM, error, streaming, and metadata-bound expectations for that framework path.
60
60
 
61
+ ## Third-party adapter conformance CI
62
+
63
+ The gate above is the internal official-adapter gate, not a third-party certification program. Third-party adapter authors run the **public** conformance helper from [`@agent-inspect/adapter-sdk`](https://www.npmjs.com/package/@agent-inspect/adapter-sdk) in their own CI:
64
+
65
+ ```ts
66
+ import { runAdapterConformance } from "@agent-inspect/adapter-sdk";
67
+
68
+ const result = await runAdapterConformance({
69
+ adapterId: "my-adapter",
70
+ events, // PersistedInspectEvent[] your adapter emits
71
+ expectedKinds: ["RUN", "LLM"],
72
+ forbiddenRawStrings: ["super-secret-key"], // must not leak into events
73
+ });
74
+ // assert result.ok in your test runner
75
+ ```
76
+
77
+ A copyable GitHub Actions template lives at [`examples/adapter-sdk/third-party-conformance-ci.yml`](../examples/adapter-sdk/third-party-conformance-ci.yml). Copy it to `.github/workflows/agent-inspect-conformance.yml` in your adapter repo and adjust the install/build/test commands. The template:
78
+
79
+ - runs on a Node LTS matrix (18 / 20 / 22),
80
+ - requires **no provider keys** and makes **no network calls** (conformance is metadata-only),
81
+ - keeps the framework SDK as a peer dependency of your adapter, never of AgentInspect core.
82
+
83
+ See the runnable examples under [`examples/adapter-sdk/`](../examples/adapter-sdk/) for adapters that call `runAdapterConformance` end to end.
84
+
61
85
  ## v3.2 adoption evidence refresh
62
86
 
63
87
  - [AI-SDK-ADOPTION.md](./AI-SDK-ADOPTION.md) — blessed AI SDK path (`generateText`, `streamText`, Next.js recipe, troubleshooting)
@@ -86,8 +86,9 @@ Recipes:
86
86
 
87
87
  - [examples/recipes/deterministic-ci-checks](../examples/recipes/deterministic-ci-checks/README.md) for v1.8 `check`, baseline, safe artifact, and step-summary workflows.
88
88
  - [examples/recipes/github-actions-artifact](../examples/recipes/github-actions-artifact/README.md) for share-safe trace exports and reporter manifest summaries.
89
+ - [examples/recipes/github-actions-gate](../examples/recipes/github-actions-gate/README.md) for a retained broken-to-fixed suite/gate pilot with separate Evidence v2 artifacts.
89
90
 
90
- Sample workflows: [deterministic checks workflow](../examples/recipes/deterministic-ci-checks/workflow-example.yml), [share-safe export workflow](../examples/recipes/github-actions-artifact/workflow-example.yml)
91
+ Sample workflows: [deterministic checks workflow](../examples/recipes/deterministic-ci-checks/workflow-example.yml), [share-safe export workflow](../examples/recipes/github-actions-artifact/workflow-example.yml), [retained gate workflow](../examples/recipes/github-actions-gate/workflow-example.yml)
91
92
 
92
93
  ```yaml
93
94
  - uses: actions/upload-artifact@v4
@@ -41,6 +41,20 @@ setTraceProcessors([
41
41
 
42
42
  - [openai-agents-local-processor](../../examples/recipes/openai-agents-local-processor/)
43
43
 
44
+ ## No-key packed consumer check
45
+
46
+ The repository includes a packed-consumer check that installs the root and
47
+ OpenAI Agents adapter tarballs into a temporary project. It drives deterministic
48
+ tracing fixtures without `OPENAI_API_KEY` or a live provider call, writes a local
49
+ trace, and inspects it through the packed AgentInspect CLI.
50
+
51
+ ```bash
52
+ pnpm build
53
+ node scripts/packed-openai-agents-e2e.mjs
54
+ ```
55
+
56
+ The check is also included in `pnpm pack:smoke`.
57
+
44
58
  ## Troubleshooting
45
59
 
46
60
  | Symptom | Check |
@@ -28,12 +28,15 @@ Manual traces redact common sensitive keys **before disk** by default. Pass `red
28
28
 
29
29
  ## Before sharing
30
30
 
31
+ When a maintainer or support responder needs reproducible evidence, follow the [safe support reproduction workflow](./SUPPORT-REPRODUCTION.md) to create and review a minimized Evidence bundle. Do not attach a raw trace directory.
32
+
31
33
  - Use **`--redaction-profile share`** for PR/issue attachments; use **`strict`** when sharing outside your team.
32
34
  - **Review** the exported file — profiles do not detect all sensitive data.
33
35
  - Treat traces written with `redact: false` as sensitive. Review every event before sharing them outside your team.
34
36
  - Inspect manual metadata passed to `inspectRun()`, `step()`, `step.tool()`, `step.llm()`, or `observe()`.
35
37
  - Inspect log-derived fields from `logs` / `tail` ingest configs, including custom `run-id`, `event`, `parent`, timestamp, and attribute mappings.
36
38
  - Avoid posting raw prompts, completions, tool inputs, or tool outputs in public threads unless the content is approved for public disclosure.
39
+ - For cross-system correlation, retain a bounded identifier instead of copying the external record or payload. Follow [External reference metadata](./EXTERNAL-REFERENCES.md), and expect `share` / `strict` profiles to redact the named correlation fields.
37
40
  - Prefer Markdown export for issue or PR sharing when a summarized tree is enough.
38
41
 
39
42
  ## Remove or replace sensitive values
@@ -21,7 +21,8 @@ Curated terminal recordings and diagrams for AgentInspect **6.17.x**. They show
21
21
  | [debug-tree.gif](assets/showcase/gif/debug-tree.gif) | Debug — `list` then inspect a local run |
22
22
  | [check-pass-fail.gif](assets/showcase/gif/check-pass-fail.gif) | Prevent — `check --preset trajectory` plus shorthands, pass then fail |
23
23
  | [evidence-bundle.gif](assets/showcase/gif/evidence-bundle.gif) | Share — `bundle --profile share` then `bundle verify` (relative `./evidence`) |
24
- | [value-loop.svg](assets/showcase/diagrams/value-loop.svg) | Capture once → debug, prevent, share |
24
+ | [readme-product-loop.svg](assets/readme-product-loop.svg) | README loop: one local trace → debug prevent share |
25
+ | [value-loop.svg](assets/showcase/diagrams/value-loop.svg) | Alternate stacked Debug / Prevent / Share diagram |
25
26
 
26
27
  The check tape is named for the `check` command, not `gate`.
27
28
 
@@ -125,6 +125,8 @@ Postgres URLs are reserved for team deployments and are **not required** for loc
125
125
 
126
126
  ## Related docs
127
127
 
128
+ - [STUDIO-IMPORT-BUNDLE.md](./STUDIO-IMPORT-BUNDLE.md) — walkthrough: share-safe bundle → local Studio
129
+ - [STUDIO-IMPORT-GITHUB-ARTIFACT.md](./STUDIO-IMPORT-GITHUB-ARTIFACT.md) — walkthrough: GitHub Actions artifact → local Studio
128
130
  - [SELF-HOSTED-STUDIO-V6.0.md](./proposals/SELF-HOSTED-STUDIO-V6.0.md)
129
131
  - [CLIENT-HOSTED-INGESTION-V6.1.md](./proposals/CLIENT-HOSTED-INGESTION-V6.1.md)
130
132
  - [LOCAL-TRACE-WORKSPACE.md](./proposals/LOCAL-TRACE-WORKSPACE.md)
package/docs/STANDARDS.md CHANGED
@@ -21,6 +21,8 @@ Shape validation is **compatible**; semantic checks add field-level warnings for
21
21
 
22
22
  Fixture: [fixtures/standards/openinference-basic.json](../fixtures/standards/openinference-basic.json)
23
23
 
24
+ The fixture's top-level `version` is an **AgentInspect reference fixture revision**, not an upstream OpenInference version.
25
+
24
26
  ## OTLP JSON (experimental)
25
27
 
26
28
  ```bash
@@ -31,10 +33,23 @@ GenAI attribute mapping follows `OTEL_GEN_AI_SEMCONV_PIN` (see exporters API). N
31
33
 
32
34
  Fixture: [fixtures/standards/otlp-basic.json](../fixtures/standards/otlp-basic.json)
33
35
 
36
+ The fixture's `scope.version` is an **AgentInspect test-scope fixture revision**, not the `OTEL_GEN_AI_SEMCONV_PIN` and not an upstream OpenTelemetry version.
37
+
34
38
  ## Graduation guide
35
39
 
36
40
  Full path from local export through review to optional customer-owned import: [STANDARDS-GRADUATION.md](./STANDARDS-GRADUATION.md).
37
41
 
42
+ That guide is the canonical source for standards known-loss boundaries, including kind degradation, bounded metadata, no chain-of-thought capture, and snapshot limitations.
43
+
44
+ ## Maintaining tested provenance
45
+
46
+ - When the OTLP mapping changes, update `OTEL_GEN_AI_SEMCONV_PIN` in [`packages/core/src/exporters/semconv.ts`](../packages/core/src/exporters/semconv.ts) and any explicit tested-version claims together.
47
+ - When the OTLP reference shape changes, update its test-scope fixture revision in [`fixtures/standards/otlp-basic.json`](../fixtures/standards/otlp-basic.json) and any repeated fixture revision together.
48
+ - When the OpenInference reference shape changes, update the top-level fixture revision in [`fixtures/standards/openinference-basic.json`](../fixtures/standards/openinference-basic.json) and any repeated fixture revision together. The value remains an AgentInspect fixture revision, not an upstream version.
49
+ - Keep known-loss behavior canonical in [`STANDARDS-GRADUATION.md`](./STANDARDS-GRADUATION.md) and update its validation alongside any intentional exporter behavior change.
50
+
51
+ Run `pnpm public-truth:check` and `pnpm docs:check` after changing these sources.
52
+
38
53
  ## Import recipes
39
54
 
40
55
  - [Phoenix / OpenInference](../examples/recipes/phoenix-openinference-import/)
@@ -37,6 +37,29 @@ Canonical maturity labels for AgentInspect public packages and major surfaces (6
37
37
 
38
38
  Part of the fixed AgentInspect release line — see the npm badge for the current version.
39
39
 
40
+ > Every level in this matrix must be one of the Definitions levels above, and `docs/product/PUBLIC-PRODUCT-FACTS.json` `matchers.status` must match the matchers row here. `pnpm public-truth:check` enforces both; update the doc and the facts file together.
41
+
42
+ ## Changing a level
43
+
44
+ A level is stated in two places, and they must not disagree: the row above, and
45
+ the `**Support level:**` line in the package's own README (which is what npm
46
+ shows). `pnpm package-readmes:check` enforces the agreement and runs as part of
47
+ `pnpm docs:check`.
48
+
49
+ To promote or demote a surface:
50
+
51
+ 1. Edit the row in the matrix above.
52
+ 2. Edit the `**Support level:**` line in each affected `packages/*/README.md`.
53
+ 3. Run `pnpm package-readmes:check`.
54
+
55
+ The check also reports packages whose level is **unenforced** — those the matrix
56
+ above does not name, so the README is their only source. Adding a row that names
57
+ the package (in backticks) puts it under enforcement.
58
+
59
+ It rejects an absolute "no network" claim from any surface
60
+ [NETWORK-BEHAVIOR.md](./NETWORK-BEHAVIOR.md) records as making network calls, so
61
+ a promotion that changes network behavior cannot leave a stale guarantee on npm.
62
+
40
63
  ## Public package groups (presentation only)
41
64
 
42
65
  Physical packages stay the fixed group of 18. Outreach/install kits group them as:
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="AgentInspect">
2
+ <defs>
3
+ <linearGradient id="ai-mark" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" stop-color="#4f46e5"/>
5
+ <stop offset="100%" stop-color="#6366f1"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="48" height="48" rx="12" fill="url(#ai-mark)"/>
9
+ <path d="M16 16h16M16 24h12M16 32h16" stroke="#fff" stroke-width="2.5" stroke-linecap="round"/>
10
+ <circle cx="36" cy="24" r="5" fill="none" stroke="#fff" stroke-width="2"/>
11
+ <path d="M39.5 27.5L44 32" stroke="#fff" stroke-width="2.5" stroke-linecap="round"/>
12
+ </svg>
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="900" height="150" viewBox="0 0 900 150" role="img" aria-label="AgentInspect evidence loop: capture or import, understand causality, enforce expectations, verify and bundle, review locally or in customer-owned Studio">
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="900" height="150" viewBox="0 0 900 150" role="img" aria-label="Capture one local trace, then debug the run, prevent trajectory regressions, and share-checked evidence">
2
2
  <defs>
3
3
  <marker id="arr" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto">
4
4
  <path d="M0,0 L6,3 L0,6 Z" fill="#64748b"/>
@@ -6,30 +6,21 @@
6
6
  </defs>
7
7
  <rect width="900" height="150" fill="#ffffff"/>
8
8
  <g font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif">
9
- <rect x="10" y="24" width="150" height="78" rx="12" fill="#eef2ff" stroke="#6366f1" stroke-width="1.5"/>
10
- <text x="85" y="52" text-anchor="middle" font-size="13" font-weight="600" fill="#312e81">Capture / import</text>
11
- <text x="85" y="72" text-anchor="middle" font-size="10" fill="#475569">JSONL, adapters,</text>
12
- <text x="85" y="86" text-anchor="middle" font-size="10" fill="#475569">logs, standards</text>
13
- <path d="M168 63h22" stroke="#64748b" stroke-width="2" marker-end="url(#arr)"/>
14
- <rect x="198" y="24" width="150" height="78" rx="12" fill="#ecfdf5" stroke="#10b981" stroke-width="1.5"/>
15
- <text x="273" y="52" text-anchor="middle" font-size="13" font-weight="600" fill="#064e3b">Understand</text>
16
- <text x="273" y="72" text-anchor="middle" font-size="10" fill="#475569">tree, timeline,</text>
17
- <text x="273" y="86" text-anchor="middle" font-size="10" fill="#475569">report, diff</text>
18
- <path d="M356 63h22" stroke="#64748b" stroke-width="2" marker-end="url(#arr)"/>
19
- <rect x="386" y="24" width="150" height="78" rx="12" fill="#fff7ed" stroke="#f59e0b" stroke-width="1.5"/>
20
- <text x="461" y="52" text-anchor="middle" font-size="13" font-weight="600" fill="#78350f">Enforce</text>
21
- <text x="461" y="72" text-anchor="middle" font-size="10" fill="#475569">checks, contracts,</text>
22
- <text x="461" y="86" text-anchor="middle" font-size="10" fill="#475569">suites, CI gates</text>
23
- <path d="M544 63h22" stroke="#64748b" stroke-width="2" marker-end="url(#arr)"/>
24
- <rect x="574" y="24" width="150" height="78" rx="12" fill="#f8fafc" stroke="#64748b" stroke-width="1.5"/>
25
- <text x="649" y="52" text-anchor="middle" font-size="13" font-weight="600" fill="#0f172a">Verify / bundle</text>
26
- <text x="649" y="72" text-anchor="middle" font-size="10" fill="#475569">redact, verify-safe,</text>
27
- <text x="649" y="86" text-anchor="middle" font-size="10" fill="#475569">offline bundle</text>
28
- <path d="M732 63h22" stroke="#64748b" stroke-width="2" marker-end="url(#arr)"/>
29
- <rect x="762" y="24" width="128" height="78" rx="12" fill="#f5f3ff" stroke="#7c3aed" stroke-width="1.5"/>
30
- <text x="826" y="52" text-anchor="middle" font-size="13" font-weight="600" fill="#4c1d95">Review</text>
31
- <text x="826" y="72" text-anchor="middle" font-size="10" fill="#475569">local or Studio</text>
32
- <text x="826" y="86" text-anchor="middle" font-size="10" fill="#475569">Beta (yours)</text>
33
- <text x="450" y="132" text-anchor="middle" font-size="12" fill="#64748b">No account · no default upload · metadata-only by default · optional customer-owned Studio</text>
9
+ <rect x="16" y="28" width="188" height="78" rx="12" fill="#eef2ff" stroke="#6366f1" stroke-width="1.5"/>
10
+ <text x="110" y="58" text-anchor="middle" font-size="13" font-weight="600" fill="#312e81">One local trace</text>
11
+ <text x="110" y="78" text-anchor="middle" font-size="11" fill="#475569">JSONL you own</text>
12
+ <path d="M212 67h28" stroke="#64748b" stroke-width="2" marker-end="url(#arr)"/>
13
+ <rect x="248" y="28" width="188" height="78" rx="12" fill="#ecfdf5" stroke="#10b981" stroke-width="1.5"/>
14
+ <text x="342" y="58" text-anchor="middle" font-size="13" font-weight="600" fill="#064e3b">Debug</text>
15
+ <text x="342" y="78" text-anchor="middle" font-size="11" fill="#475569">view · report · explain</text>
16
+ <path d="M444 67h28" stroke="#64748b" stroke-width="2" marker-end="url(#arr)"/>
17
+ <rect x="480" y="28" width="188" height="78" rx="12" fill="#fff7ed" stroke="#f59e0b" stroke-width="1.5"/>
18
+ <text x="574" y="58" text-anchor="middle" font-size="13" font-weight="600" fill="#78350f">Prevent</text>
19
+ <text x="574" y="78" text-anchor="middle" font-size="11" fill="#475569">check · contract · CI</text>
20
+ <path d="M676 67h28" stroke="#64748b" stroke-width="2" marker-end="url(#arr)"/>
21
+ <rect x="712" y="28" width="172" height="78" rx="12" fill="#f5f3ff" stroke="#7c3aed" stroke-width="1.5"/>
22
+ <text x="798" y="58" text-anchor="middle" font-size="13" font-weight="600" fill="#4c1d95">Share</text>
23
+ <text x="798" y="78" text-anchor="middle" font-size="11" fill="#475569">redact · bundle · verify</text>
24
+ <text x="450" y="132" text-anchor="middle" font-size="12" fill="#64748b">Capture once. Debug, prevent, and share from the same local trace.</text>
34
25
  </g>
35
26
  </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-inspect",
3
- "version": "6.17.2",
3
+ "version": "6.17.4",
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",
@@ -181,6 +181,7 @@
181
181
  "docs/VSCODE.md",
182
182
  "docs/assets/agent-inspect-logo.svg",
183
183
  "docs/assets/agent-inspect-logo-dark.svg",
184
+ "docs/assets/agent-inspect-logo-mark.svg",
184
185
  "docs/assets/readme-product-loop.svg"
185
186
  ],
186
187
  "sideEffects": false,
@@ -234,13 +235,14 @@
234
235
  "test:all": "pnpm run typecheck && pnpm run linked-versions:check && pnpm run build && pnpm run test && pnpm run size",
235
236
  "prepublish:checks": "pnpm run typecheck && pnpm run test && pnpm run test:coverage && pnpm run build && pnpm run fixtures:check && pnpm run recipes:check && pnpm run size && pnpm run linked-versions:check && pnpm run repo:health && pnpm run pack:smoke",
236
237
  "pack:dry-run": "pnpm run build && npm pack --dry-run",
237
- "pack:smoke": "pnpm run build && node scripts/package-smoke.mjs && node scripts/packed-quickstart-e2e.mjs && node scripts/packed-semantic-loop-e2e.mjs && node scripts/packed-swarm-loop-e2e.mjs && node scripts/evidence-ci-golden-paths.mjs",
238
+ "pack:smoke": "pnpm run build && node scripts/package-smoke.mjs && node scripts/packed-openai-agents-e2e.mjs && node scripts/packed-quickstart-e2e.mjs && node scripts/packed-semantic-loop-e2e.mjs && node scripts/packed-swarm-loop-e2e.mjs && node scripts/evidence-ci-golden-paths.mjs",
238
239
  "linked-versions:check": "node scripts/check-linked-versions.mjs",
239
240
  "docs:commands": "node scripts/validate-doc-commands.mjs",
240
241
  "docs:links": "node scripts/validate-doc-links.mjs",
241
242
  "public-truth:check": "node scripts/validate-public-truth.mjs",
242
243
  "ai-assets:check": "node scripts/validate-ai-assets.mjs",
243
- "docs:check": "pnpm run docs:commands && pnpm run docs:links && pnpm run public-truth:check && pnpm run ai-assets:check && pnpm run repo:health && pnpm run demo:verify",
244
+ "package-readmes:check": "node scripts/validate-package-readmes.mjs",
245
+ "docs:check": "pnpm run docs:commands && pnpm run docs:links && pnpm run public-truth:check && pnpm run ai-assets:check && pnpm run package-readmes:check && pnpm run repo:health && pnpm run demo:verify",
244
246
  "repo:health": "node scripts/validate-repo-health.mjs",
245
247
  "demo:generate": "node scripts/demo-generate.mjs",
246
248
  "demo:verify": "node scripts/demo-verify.mjs",
@@ -2412,7 +2412,12 @@ function countErrorNodes(nodes) {
2412
2412
  return nodes.filter((entry) => entry.node.event.status === "error").length;
2413
2413
  }
2414
2414
  function slowestNode(nodes) {
2415
- return nodes.filter((entry) => entry.node.event.durationMs !== void 0).sort((a, b) => {
2415
+ return nodes.filter(
2416
+ (entry) => entry.node.event.durationMs !== void 0 && // The RUN boundary spans the whole run, so its duration always dominates
2417
+ // and shadows every real step. Rank actual work nodes only, matching the
2418
+ // stats slowest-step ranking, which never counts the run envelope.
2419
+ entry.node.event.kind !== "RUN"
2420
+ ).sort((a, b) => {
2416
2421
  const delta = (b.node.event.durationMs ?? 0) - (a.node.event.durationMs ?? 0);
2417
2422
  return delta !== 0 ? delta : a.index - b.index;
2418
2423
  })[0];
@@ -6232,8 +6237,11 @@ formatProgrammaticDiagnostic(
6232
6237
  );
6233
6238
 
6234
6239
  // packages/core/src/safety/sensitive-key.ts
6240
+ function keyHasExplicitSeparator(value) {
6241
+ return /[_\-.]/.test(value);
6242
+ }
6235
6243
  function normalizeSensitiveKey(value) {
6236
- return value.toLowerCase().replace(/[^a-z0-9_]/g, "");
6244
+ return value.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
6237
6245
  }
6238
6246
  var NON_CREDENTIAL_TOKEN_CONFIG_KEYS = new Set(
6239
6247
  [
@@ -6285,6 +6293,7 @@ function isCredentialSensitiveKey(key, sensitiveKeys = DEFAULT_CREDENTIAL_SENSIT
6285
6293
  const normalized = normalizeSensitiveKey(key);
6286
6294
  if (!normalized) return false;
6287
6295
  if (NON_CREDENTIAL_TOKEN_CONFIG_KEYS.has(normalized)) return false;
6296
+ const allowPrefixCompound = keyHasExplicitSeparator(key);
6288
6297
  for (const sensitive of sensitiveKeys) {
6289
6298
  const s = normalizeSensitiveKey(sensitive);
6290
6299
  if (!s) continue;
@@ -6293,7 +6302,8 @@ function isCredentialSensitiveKey(key, sensitiveKeys = DEFAULT_CREDENTIAL_SENSIT
6293
6302
  continue;
6294
6303
  }
6295
6304
  if (normalized === s) return true;
6296
- if (normalized.endsWith(`_${s}`) || normalized.startsWith(`${s}_`)) return true;
6305
+ if (normalized.endsWith(`_${s}`)) return true;
6306
+ if (allowPrefixCompound && normalized.startsWith(`${s}_`)) return true;
6297
6307
  }
6298
6308
  return false;
6299
6309
  }
@@ -11336,5 +11346,5 @@ function renderGateReport(result, options = {}) {
11336
11346
  }
11337
11347
 
11338
11348
  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 };
11339
- //# sourceMappingURL=chunk-FXGWXSFV.mjs.map
11340
- //# sourceMappingURL=chunk-FXGWXSFV.mjs.map
11349
+ //# sourceMappingURL=chunk-YX6RFLV5.mjs.map
11350
+ //# sourceMappingURL=chunk-YX6RFLV5.mjs.map