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.
- package/CHANGELOG.md +12 -0
- package/README.md +5 -8
- package/docs/ADAPTER-CONFORMANCE.md +24 -0
- package/docs/CI-ARTIFACTS.md +2 -1
- package/docs/OPENAI-AGENTS-LOCAL.md +14 -0
- package/docs/SAFE-TRACE-SHARING.md +3 -0
- package/docs/SCREENSHOTS.md +2 -1
- package/docs/SELF-HOSTING.md +2 -0
- package/docs/STANDARDS.md +15 -0
- package/docs/SUPPORT-LEVELS.md +23 -0
- package/docs/assets/agent-inspect-logo-mark.svg +12 -0
- package/docs/assets/readme-product-loop.svg +17 -26
- package/package.json +5 -3
- package/packages/cli/dist/{chunk-FXGWXSFV.mjs → chunk-YX6RFLV5.mjs} +15 -5
- package/packages/cli/dist/chunk-YX6RFLV5.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +32 -10
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +22 -10
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-EW7KW2BK.mjs → src-X6SLMBNH.mjs} +3 -3
- package/packages/cli/dist/{src-EW7KW2BK.mjs.map → src-X6SLMBNH.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +7 -2
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.mjs +7 -2
- package/packages/core/dist/advanced.mjs.map +1 -1
- package/packages/core/dist/checks.cjs +7 -2
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.mjs +1 -1
- package/packages/core/dist/{chunk-UFP54T7F.mjs → chunk-HN377P23.mjs} +9 -4
- package/packages/core/dist/chunk-HN377P23.mjs.map +1 -0
- package/packages/cli/dist/chunk-FXGWXSFV.mjs.map +0 -1
- 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
|
-
<
|
|
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"
|
|
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/
|
|
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.
|
|
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)
|
package/docs/CI-ARTIFACTS.md
CHANGED
|
@@ -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
|
package/docs/SCREENSHOTS.md
CHANGED
|
@@ -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
|
-
| [
|
|
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
|
|
package/docs/SELF-HOSTING.md
CHANGED
|
@@ -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/)
|
package/docs/SUPPORT-LEVELS.md
CHANGED
|
@@ -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="
|
|
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
|
-
<text x="
|
|
11
|
-
<text x="
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<text x="
|
|
16
|
-
<
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
<text x="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
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.
|
|
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
|
-
"
|
|
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(
|
|
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-
|
|
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}`)
|
|
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-
|
|
11340
|
-
//# sourceMappingURL=chunk-
|
|
11349
|
+
//# sourceMappingURL=chunk-YX6RFLV5.mjs.map
|
|
11350
|
+
//# sourceMappingURL=chunk-YX6RFLV5.mjs.map
|