@arnilo/prism 0.0.11 → 0.0.13

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 (64) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/agent-run-lifecycle.d.ts +5 -1
  3. package/dist/agent-run-lifecycle.js +17 -1
  4. package/dist/agents.d.ts +3 -1
  5. package/dist/agents.js +98 -20
  6. package/dist/contracts.d.ts +29 -1
  7. package/dist/extensions.d.ts +11 -0
  8. package/dist/extensions.js +15 -0
  9. package/dist/identity.d.ts +92 -0
  10. package/dist/identity.js +257 -0
  11. package/dist/index.d.ts +8 -4
  12. package/dist/index.js +4 -2
  13. package/dist/persistence-lifecycle.d.ts +103 -0
  14. package/dist/persistence-lifecycle.js +204 -0
  15. package/dist/providers/openai-compatible.d.ts +5 -1
  16. package/dist/providers/openai-compatible.js +15 -6
  17. package/dist/secure-agent.js +7 -1
  18. package/dist/testing/persistence-schema.d.ts +2 -2
  19. package/dist/testing/persistence-schema.js +35 -2
  20. package/dist/tools.d.ts +2 -0
  21. package/dist/tools.js +6 -0
  22. package/docs/a2a.md +3 -0
  23. package/docs/ag-ui.md +123 -0
  24. package/docs/agent-events.md +2 -1
  25. package/docs/agent-identity.md +111 -0
  26. package/docs/agent-session-runtime.md +5 -1
  27. package/docs/coding-agent-tools.md +2 -0
  28. package/docs/compaction-and-retry.md +2 -1
  29. package/docs/compaction-llm.md +20 -1
  30. package/docs/credential-storage.md +5 -1
  31. package/docs/credentials-and-redaction.md +8 -0
  32. package/docs/database-persistence.md +18 -7
  33. package/docs/extensions.md +1 -0
  34. package/docs/guardrails.md +3 -0
  35. package/docs/host-security.md +7 -1
  36. package/docs/index.md +25 -14
  37. package/docs/mcp-tools.md +2 -0
  38. package/docs/migration.md +43 -0
  39. package/docs/model-routing.md +102 -0
  40. package/docs/observability.md +2 -0
  41. package/docs/performance.md +38 -0
  42. package/docs/policy-and-audit.md +127 -0
  43. package/docs/postgres-persistence.md +1 -1
  44. package/docs/provider-packages.md +17 -0
  45. package/docs/provider-request-policies.md +2 -0
  46. package/docs/providers/anthropic.md +3 -2
  47. package/docs/providers/azure.md +74 -0
  48. package/docs/providers/bedrock.md +72 -0
  49. package/docs/providers/google.md +4 -2
  50. package/docs/providers/openai-compatible.md +3 -1
  51. package/docs/providers/openai.md +2 -2
  52. package/docs/providers/openrouter.md +2 -0
  53. package/docs/providers/vertex.md +71 -0
  54. package/docs/public-contracts.md +5 -1
  55. package/docs/release-and-install.md +167 -17
  56. package/docs/review-coverage-2026-07-22-phase-7.md +173 -0
  57. package/docs/review-coverage-2026-07-23-phase-8.md +245 -0
  58. package/docs/runs-and-usage.md +3 -0
  59. package/docs/server.md +34 -4
  60. package/docs/sqlite-persistence.md +1 -1
  61. package/docs/supervisors.md +2 -0
  62. package/docs/work-connectors.md +28 -0
  63. package/docs/work-tools.md +114 -0
  64. package/package.json +5 -1
@@ -2,15 +2,19 @@
2
2
 
3
3
  ## What it does
4
4
 
5
- Prism is published as one core package, twenty-seven first-party capability packages, and six pure-manifest family/profile packages. This page describes how they are packed, what each tarball contains, how to install them, the required `@arnilo/prism` peer dependency, the release workflow, and the offline test budget.
5
+ Prism is published as one core package, thirty-four first-party capability packages, and six pure-manifest family/profile packages (**41** publishable manifests total). This page describes how they are packed, what each tarball contains, how to install them, the required `@arnilo/prism` peer dependency, the release workflow, and the offline test budget.
6
6
 
7
7
  Core package:
8
8
 
9
9
  - `@arnilo/prism` — the runtime, contracts, registries, streaming events, CLI (including `prism init`), and the `/docs` hub. `files`: `dist` (with `!dist/__tests__` and `!dist/**/*.map` negations), `docs`, `templates`, `CHANGELOG.md`. `bin`: `prism` -> `dist/cli.js`. `sideEffects`: `["dist/cli.js"]`.
10
10
 
11
- First-party workspace packages (each has non-optional `@arnilo/prism@0.0.11` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
11
+ First-party workspace packages (each has non-optional `@arnilo/prism@0.0.13` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
12
12
 
13
13
  - `@arnilo/prism-provider-anthropic`, `@arnilo/prism-provider-google`, `@arnilo/prism-provider-openai`, `@arnilo/prism-provider-openrouter`, `@arnilo/prism-provider-kimi`, `@arnilo/prism-provider-zai`, `@arnilo/prism-provider-opencode-go`, `@arnilo/prism-provider-neuralwatt` — provider adapters.
14
+ - `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-vertex` — optional enterprise-cloud adapters (Entra/IAM/ADC; separate from consumer Anthropic/Google).
15
+ - `@arnilo/prism-policy` — optional policy-decision ledger and cursor-paginated audit export.
16
+ - `@arnilo/prism-model-router` — optional model governance router (allow-list, residency, budgets, circuits, fallbacks) over `ProviderResolver`.
17
+ - `@arnilo/prism-work-tools` — optional identity-scoped M365/GWS connectors (`./microsoft365`, `./google-workspace`); host-pinned CLI argv only.
14
18
  - `@arnilo/prism-provider-ai-sdk` — optional AI SDK `LanguageModelV4` adapter; included by the provider and all umbrellas.
15
19
  - `@arnilo/prism-compaction-llm` — optional LLM-backed compaction strategy.
16
20
  - `@arnilo/prism-compaction-observational-memory` — optional source-backed observational memory.
@@ -28,6 +32,11 @@ First-party workspace packages (each has non-optional `@arnilo/prism@0.0.11` pee
28
32
  - `@arnilo/prism-supervisor` — optional bounded child delegation and A2A 1.0 card/server/client interoperability.
29
33
  - `@arnilo/prism-web-tools` — optional bounded host-selected Brave/Exa search and Firecrawl Markdown/schema extraction; native fetch, no vendor SDK/browser.
30
34
  - `@arnilo/prism-browser` — optional host-supplied Playwright browser tools (`browser_open`/`browser_snapshot`/`browser_act`/`browser_close`); import launches nothing; `playwright-core@1.61.0` optional peer.
35
+ - `@arnilo/prism-ag-ui` — optional bounded AG-UI mapper/authorized Web handler/replay plus stable `./acp` sibling; root and ACP imports are inert.
36
+
37
+ ### 0.0.12 AG-UI package boundary
38
+
39
+ `@arnilo/prism-ag-ui` is a publishable optional code package with root AG-UI exports and stable `./acp` sibling, peer `@arnilo/prism@0.0.12`, pinned `@ag-ui/core@0.0.57` / `@agentclientprotocol/sdk@1.3.0`, and no import-time network/listener/run. It is included by `@arnilo/prism-all` only—not `@arnilo/prism-code` or `@arnilo/prism-sdk`—so coding and SDK profiles stay free of UI protocol dependencies.
31
40
 
32
41
  Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and `CHANGELOG.md`; use exact hard `dependencies`):
33
42
 
@@ -37,9 +46,9 @@ Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and
37
46
  - `@arnilo/prism-code` — base + coding-agent + coding-security + MCP; providers and persistence remain explicit choices.
38
47
  - `@arnilo/prism-sdk` — base + workflows + MCP + Node credentials + OpenTelemetry; providers and persistence remain explicit choices.
39
48
  - `@arnilo/prism-evals` remains optional and network-free by default; model judges are host callbacks and live credentialed gates run separately. `examples/evaluation-gate.ts` demonstrates non-zero threshold gating.
40
- - `@arnilo/prism-all` — every first-party package: code + SDK + providers + persistence + evals + memory/RAG + server + supervisor + web tools + browser. Installation alone activates no network/listener, telemetry, database, memory, evaluation, delegation, MCP, shell, filesystem, or browser capability.
49
+ - `@arnilo/prism-all` — every first-party package: code + SDK + providers + persistence + evals + memory/RAG + server + supervisor + web tools + browser + Phase 8 optional policy/router/enterprise providers/work-tools. **0.0.13** enrolls `@arnilo/prism-policy`, `@arnilo/prism-model-router`, `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-vertex`, and `@arnilo/prism-work-tools` in the umbrella only. Installation alone activates no network/listener, telemetry, database, memory, evaluation, delegation, MCP, shell, filesystem, or browser capability.
41
50
 
42
- Profile footprint snapshot (Node 24/npm 11, lockfile graph, 2026-07-19): `base` reaches 6 first-party packages and one external dependency root (Ajv); `code` reaches 10 and three (Ajv, MCP SDK, diff); `sdk` reaches 11 and three (Ajv, MCP SDK, keyring); `all` reaches all 34 first-party manifests and seven external roots (those plus better-sqlite3, pg, and AI SDK provider types). Native database drivers stay out of base/code/sdk; both appear only in all.
51
+ Profile footprint snapshot (Node 24/npm 11, lockfile graph, 2026-07-19): `base` reaches 6 first-party packages and one external dependency root (Ajv); `code` reaches 10 and three (Ajv, MCP SDK, diff); `sdk` reaches 11 and three (Ajv, MCP SDK, keyring); `all` reaches **41** first-party manifests after Phase 8 optional packages ship (graph bump Task 10); AG-UI adds only its protocol SDK dependencies while native database drivers remain all-profile-only. Native database drivers stay out of base/code/sdk; both appear only in all.
43
52
 
44
53
  Each code package's `files` array is `["dist", "!dist/__tests__", "!dist/**/*.map", "README.md", "CHANGELOG.md"]`; `README.md`, `LICENSE`, and `CHANGELOG.md` ship in every code-package tarball, the core tarball also ships the `docs/` directory, and family/profile tarballs ship `README.md` + `CHANGELOG.md` + `package.json`.
45
54
 
@@ -61,15 +70,16 @@ Consumers install the core package for the runtime and add first-party packages
61
70
  | Install application SDK profile | `npm install @arnilo/prism-sdk @arnilo/prism-provider-openai @arnilo/prism-session-store-sqlite` |
62
71
  | Install everything | `npm install @arnilo/prism-all` |
63
72
  | Install core + a single provider | `npm install @arnilo/prism @arnilo/prism-provider-openai` |
73
+ | 0.0.12 AG-UI (after release) | `npm install @arnilo/prism@0.0.12 @arnilo/prism-ag-ui@0.0.12` |
64
74
  | Install bounded web research tools | `npm install @arnilo/prism @arnilo/prism-web-tools @arnilo/prism-tool-validator-json-schema` |
65
75
  | Install browser automation tools | `npm install @arnilo/prism @arnilo/prism-browser playwright-core@1.61.0` |
66
76
  | Build everything (core + workspaces) | `npm run build` |
67
77
  | Run the default (network-free) test suite | `npm test` |
68
78
  | Dry-run pack core + every package | `npm run pack:dry-run` |
69
79
  | Local mirror of the release verify gate | `npm run release:dry-run` |
70
- | Validate clean tag/version/ranges and reject registry collisions | `npm run release:check -- --version 0.0.11` |
71
- | Preview deterministic publish order | `npm run release:publish -- --version 0.0.11 --dry-run --allow-dirty --allow-untagged` |
72
- | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.11 --resume --report release-artifacts/publish-report.json` |
80
+ | Validate clean tag/version/ranges and reject registry collisions | `npm run release:check -- --version 0.0.12` |
81
+ | Preview deterministic publish order | `npm run release:publish -- --version 0.0.12 --dry-run --allow-dirty --allow-untagged` |
82
+ | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.12 --resume --report release-artifacts/publish-report.json` |
73
83
  | Full SDK readiness gate (typecheck + offline tests + pack) | `npm run sdk:ready` |
74
84
 
75
85
  Public core import specifiers (from the root `exports` map):
@@ -106,7 +116,7 @@ A packed tarball contains only public compiled output and release files:
106
116
  - Code packages ship `README.md`, `LICENSE`, and `CHANGELOG.md`; family/profile packages ship `README.md` and `CHANGELOG.md`.
107
117
  - The core tarball additionally ships the full `docs/` directory (the docs hub) and `templates/init/` used by `prism init`.
108
118
  - `dist/cli.js` and the `bin` link in core.
109
- - **Tarball filenames.** npm strips the `@scope/` prefix, so the core package `@arnilo/prism` produces a tarball named `arnilo-prism-0.0.11.tgz`; first-party packages produce `arnilo-prism-provider-<name>-0.0.11.tgz` / `arnilo-prism-compaction-<name>-0.0.11.tgz` / `arnilo-prism-coding-agent-0.0.11.tgz`; family/profile packages produce `arnilo-prism-{providers,compaction,base,code,sdk,all}-0.0.11.tgz`. The CLI bin name `prism` is unaffected by the package name (`npx prism` still works; npm allows the bin field to differ from the package name).
119
+ - **Tarball filenames.** npm strips the `@scope/` prefix, so the core package `@arnilo/prism` produces a tarball named `arnilo-prism-0.0.12.tgz`; first-party packages produce `arnilo-prism-provider-<name>-0.0.12.tgz` / `arnilo-prism-compaction-<name>-0.0.12.tgz` / `arnilo-prism-coding-agent-0.0.12.tgz`; family/profile packages produce `arnilo-prism-{providers,compaction,base,code,sdk,all}-0.0.12.tgz`. The CLI bin name `prism` is unaffected by the package name (`npx prism` still works; npm allows the bin field to differ from the package name).
110
120
 
111
121
  Excluded from every tarball by `files` negation:
112
122
 
@@ -125,9 +135,9 @@ Excluded from every tarball by `files` negation:
125
135
  "name": "host-app",
126
136
  "type": "module",
127
137
  "dependencies": {
128
- "@arnilo/prism": "0.0.11",
129
- "@arnilo/prism-provider-openai": "0.0.11",
130
- "@arnilo/prism-compaction-observational-memory": "0.0.11"
138
+ "@arnilo/prism": "0.0.12",
139
+ "@arnilo/prism-provider-openai": "0.0.12",
140
+ "@arnilo/prism-compaction-observational-memory": "0.0.12"
131
141
  }
132
142
  }
133
143
  ```
@@ -137,7 +147,7 @@ Installing the provider/compaction packages without `@arnilo/prism` present prod
137
147
  ```text
138
148
  npm error code ERESOLVE
139
149
  npm error Could not resolve dependency:
140
- npm error peer @arnilo/prism@"0.0.11" from @arnilo/prism-provider-openai@0.0.11
150
+ npm error peer @arnilo/prism@"0.0.12" from @arnilo/prism-provider-openai@0.0.12
141
151
  ```
142
152
 
143
153
  ## Implementation example
@@ -170,11 +180,11 @@ For SDK readiness, run the same one-command gate directly. It composes existing
170
180
  npm run sdk:ready
171
181
  ```
172
182
 
173
- Release publication derives all 34 packages from the workspace once, validates exact `0.0.11` manifest/lockfile/internal ranges, then uses deterministic dependency order. `release:check` requires a clean commit tagged `v0.0.11` and rejects any existing registry version. `release:publish --resume` skips only registry versions whose internal dependency fingerprint matches the local manifest; conflicting versions fail closed. Each attempted package is written immediately to the JSON report, so a failed job can rerun safely. `--dry-run` still performs registry availability checks and invokes `npm publish --dry-run` with explicit public access, provenance, and `latest` tag.
183
+ Release publication derives all 34 packages from the workspace once, validates exact `0.0.12` manifest/lockfile/internal ranges, then uses deterministic dependency order. `release:check` requires a clean commit tagged `v0.0.12` and rejects any existing registry version. `release:publish --resume` skips only registry versions whose internal dependency fingerprint matches the local manifest; conflicting versions fail closed. Each attempted package is written immediately to the JSON report, so a failed job can rerun safely. `--dry-run` still performs registry availability checks and invokes `npm publish --dry-run` with explicit public access, provenance, and `latest` tag.
174
184
 
175
185
  ```bash
176
- npm run release:check -- --version 0.0.11
177
- npm run release:publish -- --version 0.0.11 --dry-run --allow-dirty --allow-untagged
186
+ npm run release:check -- --version 0.0.12
187
+ npm run release:publish -- --version 0.0.12 --dry-run --allow-dirty --allow-untagged
178
188
  ```
179
189
 
180
190
  `--allow-dirty` and `--allow-untagged` exist only for local preview; real publication and CI never pass them. npm registry calls occur only in these release preflight/publication commands, never build/test/package discovery.
@@ -185,6 +195,134 @@ Optional live smoke tests stay separate from SDK readiness because they require
185
195
  PRISM_LIVE_PROVIDER_TESTS=1 npm run test --workspaces --if-present
186
196
  ```
187
197
 
198
+ ### 0.0.13 publish handoff
199
+
200
+ **Decision: GO after operator prerequisites below.** Phase 8 enterprise identity, policy/audit, model governance, Azure/Bedrock/Vertex providers, server deployment seams, persistence schema v5 lifecycle hooks, and M365/GWS work connectors. The exact 0.0.13 graph has **41 manifests**. Phase 8 optional packages (`@arnilo/prism-policy`, `@arnilo/prism-model-router`, enterprise providers, `@arnilo/prism-work-tools`) enroll in `@arnilo/prism-all` only; `@arnilo/prism-code` and `@arnilo/prism-sdk` stay lean. no Office package, 0.0.14 conversation/artifact services, internal auth DB, or Redis/SQS queue adapter ships. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected live canaries, and actual publication remain operator/workflow prerequisites.
201
+
202
+ ```bash
203
+ git diff --check
204
+ npm ci
205
+ npm run sdk:ready
206
+ node scripts/benchmark-0.0.13.mjs
207
+ node --test scripts/benchmark-0.0.13.test.mjs
208
+ npm run release:check -- --version 0.0.13 --allow-untagged --report /tmp/prism-0.0.13-preflight.json
209
+ git tag -s v0.0.13 -m "Prism 0.0.13"
210
+ git verify-tag v0.0.13
211
+ git push origin v0.0.13
212
+ ```
213
+
214
+ The tag workflow publishes only through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`. Re-run failed jobs for the same tag; registry state is the resumable journal. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish operator checks.
215
+
216
+ #### Rollback limitations
217
+
218
+ npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
219
+
220
+ Package set (41):
221
+
222
+ ```text
223
+ @arnilo/prism
224
+ @arnilo/prism-ag-ui
225
+ @arnilo/prism-browser
226
+ @arnilo/prism-coding-agent
227
+ @arnilo/prism-coding-security
228
+ @arnilo/prism-compaction-llm
229
+ @arnilo/prism-compaction-observational-memory
230
+ @arnilo/prism-credentials-node
231
+ @arnilo/prism-evals
232
+ @arnilo/prism-mcp
233
+ @arnilo/prism-memory
234
+ @arnilo/prism-model-router
235
+ @arnilo/prism-observability-opentelemetry
236
+ @arnilo/prism-policy
237
+ @arnilo/prism-all
238
+ @arnilo/prism-base
239
+ @arnilo/prism-code
240
+ @arnilo/prism-compaction
241
+ @arnilo/prism-providers
242
+ @arnilo/prism-sdk
243
+ @arnilo/prism-provider-ai-sdk
244
+ @arnilo/prism-provider-anthropic
245
+ @arnilo/prism-provider-azure
246
+ @arnilo/prism-provider-bedrock
247
+ @arnilo/prism-provider-google
248
+ @arnilo/prism-provider-kimi
249
+ @arnilo/prism-provider-neuralwatt
250
+ @arnilo/prism-provider-openai
251
+ @arnilo/prism-provider-opencode-go
252
+ @arnilo/prism-provider-openrouter
253
+ @arnilo/prism-provider-vertex
254
+ @arnilo/prism-provider-zai
255
+ @arnilo/prism-rag
256
+ @arnilo/prism-server
257
+ @arnilo/prism-session-store-postgres
258
+ @arnilo/prism-session-store-sqlite
259
+ @arnilo/prism-supervisor
260
+ @arnilo/prism-tool-validator-json-schema
261
+ @arnilo/prism-web-tools
262
+ @arnilo/prism-work-tools
263
+ @arnilo/prism-workflows
264
+ ```
265
+
266
+ ### 0.0.12 publish handoff
267
+
268
+ **Decision: GO after operator prerequisites below.** Phase 7 coding-harness interoperability ships the optional `@arnilo/prism-ag-ui` root/`./acp` adapter, shared durable resume stream, coding compaction preset, and provider-authorized OAuth boundary. The exact 0.0.12 graph has 35 manifests. `@arnilo/prism-ag-ui` is included by `@arnilo/prism-all` only; `@arnilo/prism-code` and `@arnilo/prism-sdk` remain free of AG-UI/ACP dependencies. no Office package, 0.0.13 conversations/artifacts/enterprise identity APIs, or Anthropic/Gemini subscription OAuth adapter ships. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected live provider/Docker/Playwright/PostgreSQL/keychain gates, and actual publication remain operator/workflow prerequisites.
269
+
270
+ ```bash
271
+ git diff --check
272
+ npm ci
273
+ npm run sdk:ready
274
+ npm run release:check -- --version 0.0.12 --allow-untagged --report /tmp/prism-0.0.12-preflight.json
275
+ git tag -s v0.0.12 -m "Prism 0.0.12"
276
+ git verify-tag v0.0.12
277
+ git push origin v0.0.12
278
+ ```
279
+
280
+ The tag workflow publishes only through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`. Re-run failed jobs for the same tag; registry state is the resumable journal. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish operator checks.
281
+
282
+ #### Rollback limitations
283
+
284
+ npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
285
+
286
+ Package set (35):
287
+
288
+ ```text
289
+ @arnilo/prism
290
+ @arnilo/prism-ag-ui
291
+ @arnilo/prism-browser
292
+ @arnilo/prism-coding-agent
293
+ @arnilo/prism-coding-security
294
+ @arnilo/prism-compaction-llm
295
+ @arnilo/prism-compaction-observational-memory
296
+ @arnilo/prism-credentials-node
297
+ @arnilo/prism-evals
298
+ @arnilo/prism-mcp
299
+ @arnilo/prism-memory
300
+ @arnilo/prism-observability-opentelemetry
301
+ @arnilo/prism-all
302
+ @arnilo/prism-base
303
+ @arnilo/prism-code
304
+ @arnilo/prism-compaction
305
+ @arnilo/prism-providers
306
+ @arnilo/prism-sdk
307
+ @arnilo/prism-provider-ai-sdk
308
+ @arnilo/prism-provider-anthropic
309
+ @arnilo/prism-provider-google
310
+ @arnilo/prism-provider-kimi
311
+ @arnilo/prism-provider-neuralwatt
312
+ @arnilo/prism-provider-openai
313
+ @arnilo/prism-provider-opencode-go
314
+ @arnilo/prism-provider-openrouter
315
+ @arnilo/prism-provider-zai
316
+ @arnilo/prism-rag
317
+ @arnilo/prism-server
318
+ @arnilo/prism-session-store-postgres
319
+ @arnilo/prism-session-store-sqlite
320
+ @arnilo/prism-supervisor
321
+ @arnilo/prism-tool-validator-json-schema
322
+ @arnilo/prism-web-tools
323
+ @arnilo/prism-workflows
324
+ ```
325
+
188
326
  ### 0.0.11 publish handoff
189
327
 
190
328
  **Decision: GO after operator prerequisites below.** Phase 6 coding-harness fundamentals: `SessionIndex`/`searchSessions`, assembler `contextBudget`, `@arnilo/prism-provider-anthropic` + `@arnilo/prism-provider-google`, mid-run `steer`, coding-agent `runCodingGoalVerify` + opt-in `ask_user_decision`, and `scripts/benchmark-0.0.11.mjs` search/budget evidence. Code, tests, exact `0.0.11` package graph (34 manifests), packed artifacts, security gates, and dependency-ordered publication dry-run passed from the Phase 6 release-candidate tree. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected Anthropic/Google live canaries + Docker/Playwright/PostgreSQL gates (when host-provisioned), and actual publication remain operator/workflow prerequisites. No package was published during readiness work. Scope is coding-harness P1 only; **no Office** package, binary, SDK, wrapper, docs page, test, or release gate exists. Host mode never claims disposable containment. `@arnilo/prism-browser` remains optional via `@arnilo/prism-all` only.
@@ -465,8 +603,8 @@ npm publication is not transactional and published versions are immutable. Parti
465
603
 
466
604
  ## Extension and configuration notes
467
605
 
468
- - **Required `@arnilo/prism` peer.** Every first-party package declares a non-optional `@arnilo/prism@0.0.11` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.11` for the 0.x series and will widen to `^1.0.0` at the 1.x stable release. Inside the workspace each package also declares `"@arnilo/prism": "file:../.."` in `devDependencies` so `npm install` resolves the peer locally; that devDependency is stripped from consumer installs and is not a runtime dependency.
469
- - **Public access.** All 34 manifests (28 code packages + 6 family/profile packages) declare `"publishConfig": { "access": "public" }`; the publisher also passes `--access public` explicitly because scoped packages otherwise default to restricted on first publish.
606
+ - **Required `@arnilo/prism` peer.** Every first-party code package declares a non-optional `@arnilo/prism@0.0.13` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.13` for the current 0.x release and will widen to `^1.0.0` at the 1.x stable release. Inside the workspace each package also declares `"@arnilo/prism": "file:../.."` in `devDependencies` so `npm install` resolves the peer locally; that devDependency is stripped from consumer installs and is not a runtime dependency.
607
+ - **Public access.** All 41 manifests (35 code packages + 6 family/profile packages) declare `"publishConfig": { "access": "public" }`; the publisher also passes `--access public` explicitly because scoped packages otherwise default to restricted on first publish.
470
608
  - **Map retention knob.** Source maps are emitted locally but stripped from tarballs by `!dist/**/*.map`. Removing that `files` negation ships maps in releases (larger tarballs, better consumer stack traces).
471
609
  - **Release workflow.** `.github/workflows/release.yml` has six jobs. `verify` runs network-free SDK readiness on Node 24; `node20-compat` builds/imports every public root `exports` default target on Node 20 for declared `engines.node >=20` (docs examples need Node >=22.6 native TypeScript stripping); `postgres-integration` uses `pgvector/pgvector:pg16`; `supply-chain` runs high-severity audit, SPDX/license policy, and tracked-source secret scanning; and tag-only `codeql-release` runs SAST. Tag-only `publish` needs all five gates, preserves clean exact-tag/version/topological publication, and alone receives `NPM_TOKEN`, `id-token: write`, and `attestations: write`. Before npm publish it packs all current tarballs, generates checksums plus SPDX, scans unpacked public artifacts, creates GitHub attestations for tarballs and SBOM, then retains artifacts for 30 days. Registry state remains the resumable journal. Local `npm run release:dry-run` remains network-free SDK readiness; local PostgreSQL coverage is `PRISM_TEST_POSTGRES_URL=... npm run test:postgres`.
472
610
  - **Adding a package.** New workspace packages are picked up automatically by `npm run build --workspaces`, `npm test --workspaces`, `npm run pack:dry-run`, the packaging guard (`src/__tests__/packaging.test.ts`), and the install-smoke test (`src/__tests__/install-smoke.test.ts`) via the workspace glob; add the package to both tests' config arrays for explicit per-package assertions.
@@ -498,6 +636,18 @@ npm publication is not transactional and published versions are immutable. Parti
498
636
  - **Install smoke is offline.** The install-smoke test packs core + every package into a temp dir and installs tarballs with `--offline --no-audit --no-fund` into a fresh project. External dependencies are satisfied from the lockfile-backed npm cache prepared by `npm ci`; any attempted uncached registry fetch fails the gate.
499
637
  - **Offline test budget.** The default `npm test` (no `PRISM_LIVE_PROVIDER_TESTS`) is pinned at **< 60s on Node 20** with a measured local baseline of ~45s (build ~18s + network-free tests/workspace tests/packaging smoke ~27s). The full CI `sdk:ready` gate runs on Node 24 because docs tests execute `examples/*.ts` via native TypeScript stripping. `npm run sdk:ready` also runs typecheck and pack dry-run, so it is allowed to exceed the `npm test` budget while remaining network-free. The CI `sdk:ready` step has `timeout-minutes: 5` as a hang backstop; the separate Node 20 compatibility step has `timeout-minutes: 3`. The budget was raised from 30s after the default suite grew to include every first-party package, offline install smoke, packaging guards, docs examples, and workspace tests; optimize before raising it again.
500
638
 
639
+ ### 0.0.12 release-candidate verification — 2026-07-22
640
+
641
+ | Gate | Result |
642
+ | --- | --- |
643
+ | Package graph | Root + 34 workspaces = 35 publishable manifests at exact `0.0.12`; `@arnilo/prism-ag-ui` is public and reached only through `@arnilo/prism-all`. |
644
+ | Protocol and compaction | AG-UI root/`./acp`, core streamed durable resume, and coding compaction import from packed offline consumer; `benchmark-0.0.12` schema passed. |
645
+ | SDK readiness | `npm run sdk:ready` passed: typecheck, network-free tests, offline install/export checks, and 35 package dry-run packs. |
646
+ | Compatibility and supply chain | Node 20.20.2 imported every core export; audit found 0 high findings (2 moderate MCP-transitive advisories); SPDX/license check covered 192 packages/8 effective licenses. `@ag-ui/core@0.0.57` is an exact MIT override because its published metadata omits `license` while its shipped LICENSE is MIT; other `NOASSERTION` entries still fail. 963 present tracked files had 0 secret findings. |
647
+ | Registry/order | Public `release:check` found all 35 `@arnilo/*@0.0.12` versions available. Dependency-ordered `release:publish --dry-run --allow-dirty --allow-untagged` completed 35/35 with explicit public/latest/provenance; no commit, tag, or publication was created. |
648
+
649
+ A deleted tracked feature-request markdown was intentionally not restored by release work; resolve it before a clean checkout runs the workflow's literal `git ls-files` secret-scan command. Protected live gates, signed tag, OIDC, and actual publication remain operator prerequisites.
650
+
501
651
  ### 0.0.11 dependency audit decision (2026-07-22)
502
652
 
503
653
  `npm audit --audit-level=high` reports 0 vulnerabilities and `npm ls --all --depth=0` resolves the exact 34-package `0.0.11` graph (including `@arnilo/prism-provider-anthropic`, `@arnilo/prism-provider-google`, and `@arnilo/prism-browser`). Locked-install SPDX and `scripts/verify-sbom.mjs` pass. Browser keeps `playwright-core@1.61.0` as an optional peer and ships no browser binary/image; no Office package/binary enters the graph. Host mode never claims disposable containment.
@@ -0,0 +1,173 @@
1
+ # Review coverage — 2026-07-22 Phase 7
2
+
3
+ Working evidence for Plan 075 Task 0. Freezes Phase 7 / Release **0.0.12** scope, protocol revisions, primitive ownership, finite limits, OAuth eligibility, threats, tests, docs, and release gates before implementation.
4
+
5
+ **Evidence frozen:** 2026-07-22. **Prism source:** `f9630a9bd12f299fdf473640e3869eea050b786f`. **Release target:** 0.0.12. **Default test rule:** network-free fakes and protocol fixtures; provider live canaries remain explicit host/operator gates.
6
+
7
+ ## Status legend
8
+
9
+ | Status | Meaning |
10
+ | --- | --- |
11
+ | `existing` | Current public contract covers the requirement. |
12
+ | `extend` | Owning task adds a generic reusable contract to an existing seam. |
13
+ | `new-package` | New optional workspace package; core remains protocol/UI-free. |
14
+ | `compose` | Existing public primitives suffice; package-local wiring only. |
15
+ | `out-of-scope` | Later phase or deliberately unsupported; must not land in 0.0.12. |
16
+
17
+ ## Frozen product decision
18
+
19
+ 0.0.12 closes **coding-harness P2 interoperability** only: one optional AG-UI package with a stable ACP sibling, one generic streamed durable-resume seam, and a thin coding-focused LLM compaction preset.
20
+
21
+ **Not in 0.0.12** (do not implement here):
22
+
23
+ | Deferred or rejected item | Owner / reason |
24
+ | --- | --- |
25
+ | Conversation storage/service, artifacts API, personal-agent UX, device sync | 0.0.13+ product scope. |
26
+ | Enterprise identity, Azure/Bedrock/Vertex, work connectors, policy ledger | 0.0.13+ enterprise scope. |
27
+ | Prism TUI, desktop app, browser UI framework, server route | Host-owned UI; adapter uses Web `Request`/`Response` only. |
28
+ | ACP terminal, filesystem, editor, process, diff, or MCP implementation | Host/editor responsibility; stable sibling maps only shared message/tool/approval lifecycle. |
29
+ | Protocol types or AG-UI/ACP dependencies in `@arnilo/prism` core | Optional package owns protocol dependencies. |
30
+ | Second agent runtime, event daemon, polling worker, UI state database, replay cache | Reuse session/event/ledger/checkpoint seams; no background process. |
31
+ | Raw event passthrough, client-defined executable tools, client state mutation, raw tool args/results, local paths | Default-deny projection boundary. |
32
+ | Anthropic Claude Code or Google Gemini CLI subscription OAuth/token reuse | Current provider terms prohibit third-party subscription credential routing/piggybacking. |
33
+ | Generic OAuth framework or credential-file/CLI scraping | Provider-local supported flow only; current core OAuth seams already suffice. |
34
+ | Observational-memory coding runtime/profile | LLM preset is sufficient; do not add a second coding memory system. |
35
+
36
+ ## Frozen external revisions
37
+
38
+ | Surface | Frozen reference | Compatibility decision |
39
+ | --- | --- | --- |
40
+ | Prism | [`f9630a9bd12f299fdf473640e3869eea050b786f`](../plans/075-release-0-0-12-coding-harness-interoperability.md) | Existing core/session/server/compaction contracts inventoried below. |
41
+ | Node.js | Release support remains Node 20+ | Optional package uses Web `Request`/`Response`, `ReadableStream`, native abort, and existing bounded SSE patterns; no framework dependency. |
42
+ | AG-UI | `@ag-ui/core` **0.0.57**; [Events](https://docs.ag-ui.com/concepts/events), [Interrupts](https://docs.ag-ui.com/concepts/interrupts), [Serialization](https://docs.ag-ui.com/concepts/serialization), [TypeScript schemas](https://github.com/ag-ui-protocol/ag-ui/tree/main/sdks/typescript/packages/core) | Pin the official schema package. Validate produced events with `EventSchemas`; close active message/tool sequences before `RUN_FINISHED` or `RUN_ERROR`. |
43
+ | ACP | `@agentclientprotocol/sdk` **1.3.0** stable root; [overview](https://agentclientprotocol.com/protocol/overview), [tool calls](https://agentclientprotocol.com/protocol/tool-calls), [TypeScript SDK](https://agentclientprotocol.com/libraries/typescript) | Use stable `session/update` and `session/request_permission` contracts only. Exclude `./experimental/v2`. |
44
+ | OpenAI Codex OAuth | Existing `packages/provider-openai/src/oauth.ts`; [OpenAI provider docs](providers/openai.md) | Existing RFC 7636 PKCE browser/device-code flow is retained, host-invoked, abortable, bounded, and redacted. |
45
+ | Anthropic Claude Code auth/legal | [Authentication](https://docs.anthropic.com/en/docs/claude-code/authentication), [legal and compliance](https://docs.anthropic.com/en/docs/claude-code/legal-and-compliance) | No third-party Claude.ai subscription OAuth adapter: Anthropic directs third-party products to API keys or cloud providers. |
46
+ | Gemini CLI auth/terms | [Authentication](https://github.com/google-gemini/gemini-cli/blob/main/docs/get-started/authentication.mdx), [FAQ](https://github.com/google-gemini/gemini-cli/blob/main/docs/resources/faq.md), [terms/privacy](https://github.com/google-gemini/gemini-cli/blob/main/docs/resources/tos-privacy.md) | No Gemini CLI OAuth adapter or token import: terms prohibit third-party software use of Gemini CLI OAuth; use API key or Vertex instead. |
47
+
48
+ ## Frozen package and API contract
49
+
50
+ | Decision | Frozen choice |
51
+ | --- | --- |
52
+ | Package | New optional `@arnilo/prism-ag-ui`; it depends on `@arnilo/prism` and pinned protocol packages. `@arnilo/prism` remains dependency-free and protocol-free. |
53
+ | Subpath | `@arnilo/prism-ag-ui/acp` is the only ACP export. It uses the stable ACP SDK root, never the experimental v2 subpath. |
54
+ | Root exports | `createAgUiEventMapper`, `createAgUiHandler`, `createPersistenceAgUiReplay`, and package-local limits/projection types. |
55
+ | ACP exports | `createAcpEventMapper`, `createPrismAcpAgent`. No terminal/filesystem/editor/process/MCP export. |
56
+ | Generic core gap | Add `resumeAgentRunStream()` and `AgentRunLifecycle.resumeStream()`. Both reuse one private resume preparation/CAS path with existing `resumeAgentRun()`; no AG-UI/ACP type enters core. |
57
+ | AG-UI run input | Parse official `RunAgentInput` before host capability resolution. Host rebinds `threadId`/`runId` to authorized session/run ownership; default input selection is final accepted user text only. |
58
+ | AG-UI lifecycle | Map Prism lifecycle/message/tool events to official `RUN_*`, `TEXT_MESSAGE_*`, and `TOOL_CALL_*` schemas. Close open text/tool sequences before terminal events. Map durable suspension to `RUN_FINISHED` with `{ type: "interrupt", interrupts }`; map failure to one `RUN_ERROR`. |
59
+ | Durable approval | Exact checkpoint `runId`, authorized ownership, interruption, and `expectedVersion` are required. AG-UI resume resolves every pending interrupt in one payload; ACP unknown/cancel/reject choices deny. No side effect is replayed after an ambiguous dispatched tool. |
60
+ | Replay | `createPersistenceAgUiReplay` adapts ownership-scoped `ProductionPersistenceStore.queryEvents({ sessionId, runId, ... })`. It pages durable redacted rows, then attaches to a live bounded subscriber. Delivery is at-least-once across page/live boundary; stable event/message/tool IDs permit client deduplication. Terminal replay never invokes a provider or tool. |
61
+ | Projection | Default deny: tool name/status only; no args, result, progress payload, raw event, local path, frontend tool, or arbitrary state. Host must explicitly provide redaction-safe projectors for any exposed value. |
62
+ | ACP parity | Map assistant chunks, safe tool status, usage, errors, and durable permissions over same projection/limits/ownership contracts. ACP `session/update` does not create a second run runtime. |
63
+ | Coding compaction | `createCodingCompactionStrategy()` lives in `@arnilo/prism-compaction-llm`, wraps `createLlmCompactionStrategy()`, enables existing file-operation retention, and adds coding instructions. It produces normal `kind: "compaction"` entries; raw history remains. |
64
+ | Release graph | Task 8 adds one publishable package (34 → 35) and includes it only in `@arnilo/prism-all`, never `@arnilo/prism-code` or `@arnilo/prism-sdk`. |
65
+
66
+ ## Capability traceability matrix
67
+
68
+ | Phase 7 roadmap criterion | Existing surface | Minimum gap | Status / owner | Required proof | Docs | Release gate |
69
+ | --- | --- | --- | --- | --- | --- | --- |
70
+ | Provider-authorized subscription OAuth behind existing seams | `OAuthProvider`, `refreshOAuthCredential`, Node OAuth store, OpenAI Codex PKCE/device flow | Support matrix and eligibility gate; no currently eligible Anthropic/Google flow | `compose` / Task 6 | provider registration absence; existing Codex OAuth tests | credential + provider pages | offline + provider-policy review |
71
+ | AG-UI event mapping without core/UI coupling | Redacted ordered `AgentEvent`, session `stream()`/`subscribe()` | Optional mapper over official schemas and projection policy | `new-package` / Task 2 | schema/lifecycle/redaction/limit fixtures | `ag-ui.md`, agent events | offline package test |
72
+ | Host TUI/desktop run, approval, resume, reconnect | Durable run state, `AgentRunLifecycle`, `AgentEventRecord`, `queryEvents`, server SSE limits | Generic streamed durable resume + handler/replay adapter | `extend` / Task 1; `new-package` / Task 3 | CAS/ownership/reconnect/no-rerun/overflow fixtures | runtime, runs, server, security | offline integration |
73
+ | ACP parity where event/tool/approval contracts overlap | Same agent event, interruption, and lifecycle seams | Stable sibling mapper/agent over shared policy | `new-package` / Task 4 | stable SDK type/permission/subpath packed-consumer tests | AG-UI, A2A, security | offline package test |
74
+ | Coding-aware compaction retaining path/diff/check/plan signals | LLM `CompactionStrategy`, file-operation collection, coding checkpoints/check summaries | Thin LLM preset and fixture | `compose` / Task 5 | prompt/redaction/repeated-compaction/conformance fixtures | compaction + coding docs | offline package test |
75
+ | Finite protocol/reconnect/compaction behavior | Server/SSE, subscriber, persistence, compaction limits | Package-local resolved limits plus benchmark | `new-package` / Tasks 2–3; `compose` / Task 5; Task 8 | hostile-input and benchmark schema/budget tests | performance + AG-UI docs | benchmark + `sdk:ready` |
76
+ | No product/UI/enterprise scope creep | Host-owned UI/product boundaries | Explicit negative tests and release guard | `compose` / Tasks 0, 8 | source/package/export scope assertions | review + migration docs | pack/install + diff review |
77
+
78
+ ## Primitive and caller inventory
79
+
80
+ | Primitive / symbol | Existing contract and callers | Phase 7 disposition |
81
+ | --- | --- | --- |
82
+ | `AgentEvent`, `redactAgentEvent`, `AgentSession.stream()` / `subscribe()` | Core redacted ordered live events; subscriber default queue 1024 and close/drop policies | Reuse. Adapter owns protocol event correlation and projected payload. |
83
+ | `AgentEventRecord`, `RunLedger`, `ProductionPersistenceStore.queryEvents()` | Redacted durable event rows; SQLite/Postgres persistence queries | Reuse for replay only after host ownership binding. Add no event store/cache. |
84
+ | `resumeAgentRun`, `AgentRunLifecycle.resume()` | CAS, exact ownership/ref/session/fingerprint/revision, denial, dispatched-tool ambiguity protection | **Extend once** with streamed resume wrappers used by AG-UI and ACP. |
85
+ | `StoredAgentRunState`, `AgentRunInterruption`, checkpoint store | Redacted versioned pre-side-effect durable state; 256 KiB default / 1 MiB hard | Reuse. Adapter exposes only public interruption/status/version. |
86
+ | `PrismServerLimits` and server SSE handler | Existing Web request/response, abort, bounded stream/event/queue/time controls | Reuse values/pattern; AG-UI remains package-local and does not add server route. |
87
+ | `SecretRedactor`, credential resolver/OAuth store | Exact known-secret redaction; host-owned late-bound credentials/storage | Reuse. Project before transport/persistence; do not scan CLI credentials. |
88
+ | `OAuthProvider`, `refreshOAuthCredential`, `createOAuthCredentialStoreAdapter` | Generic login/refresh/store seam, OpenAI provider implementation | Reuse unchanged. Future provider OAuth stays provider-local and eligibility-gated. |
89
+ | `CompactionStrategy`, LLM preparation/file operations | Standard append semantics; LLM tracks read/modified files and caps summary/provider output | Reuse. Implement preset, not a memory runtime. |
90
+ | Observational-memory strategy | Optional projection/ledger/fold rendering workers | Leave unchanged; no coding profile needed. |
91
+ | Coding checkpoint and named check summaries | Bounded plan/todo/artifact/check references and fixed command checks | Supply coding signals to LLM compaction fixture/instructions; do not expose raw checkpoint/path data by default. |
92
+
93
+ ### Primitive decision
94
+
95
+ **Authorized generic core extension:** `resumeAgentRunStream()` and `AgentRunLifecycle.resumeStream()` only. The implementation must share resume validation/CAS/dispatch preparation with `resumeAgentRun()` and use the existing bounded event subscriber. Both AG-UI and ACP consume it.
96
+
97
+ **Authorized new package:** `@arnilo/prism-ag-ui`, including its `./acp` sibling and package-local mapper, handler, replay, SSE, projection, and limit code.
98
+
99
+ **Authorized package-local composition:** `createCodingCompactionStrategy()` in `@arnilo/prism-compaction-llm`; provider support documentation/negative guards.
100
+
101
+ **Rejected:** protocol types in core; UI framework/server route; new runtime/store/worker; generic OAuth abstraction; observational-memory coding runtime; client-controlled tools/state; raw event passthrough; Claude/Gemini CLI credential reuse.
102
+
103
+ ## Frozen finite limits and charging points
104
+
105
+ **Rule:** adapter validates every incoming selector/body/count before resolving a session, invoking resume, querying replay, or subscribing. It checks every outgoing projected field before enqueue/serialization. Task 2/3 must implement these exact defaults and hard caps; they may tighten a default but must not raise a hard cap without updating this page, tests, and docs.
106
+
107
+ | Resource | Default / hard cap | Charge/check point | Failure/cleanup owner |
108
+ | --- | ---: | --- | --- |
109
+ | Request body | 64 KiB / 1 MiB | Before AG-UI parse | Task 3 returns bounded client error. |
110
+ | Input messages | 128 / 1,024 | Before host input resolver | Task 3 rejects; never silently truncates user intent. |
111
+ | Input text or one content value | 64 KiB / 1 MiB | Before message projection/host resolver | Task 3 rejects. |
112
+ | Frontend tools / frontend state mutation | 0 / 0 | Before session/run lookup | Task 3 rejects unless a later scope revises this freeze. |
113
+ | Replay cursor | 4 KiB / 16 KiB | Before durable query | Task 3 rejects malformed/oversized cursor. |
114
+ | Replay page rows | 100 / 500 | Before `queryEvents` | Task 3 pages; never full-scans. |
115
+ | Outbound projected event | 64 KiB / 1 MiB | Before SSE/ACP enqueue | Tasks 2–4 close/fail safely; do not split JSON. |
116
+ | Outbound text, tool display, state snapshot | 64 KiB / 1 MiB | Before schema serialization | Tasks 2–4 omit/truncate only with explicit bounded marker. |
117
+ | Tool args/results/progress payload | 0 / 0 by default | Projection | Tasks 2–4 omit. Any later host projector remains inside outbound-event cap. |
118
+ | Error detail | 8 KiB / 64 KiB | Before protocol error event | Tasks 2–4 redact and truncate. |
119
+ | Stream events / aggregate bytes | 10,000 / 100,000; 10 MiB / 64 MiB | Before each enqueue | Task 3 closes stream with bounded terminal error. |
120
+ | Subscriber queue | 128 / 4,096 | Existing `SubscribeOptions` passed by adapter | Tasks 1/3 use `overflow: "close"`; no hidden queue. |
121
+ | Request/run wall time | 120 s / 30 min | Adapter-owned abort signal | Task 3 aborts/cleans up; background completion is explicit host policy only. |
122
+ | Coding compaction output | reuse 16,384 / 131,072 tokens; error 1 KiB / 8 KiB | Existing LLM strategy | Task 5 adds no provider call or unbounded parser. |
123
+
124
+ The request/event/aggregate/queue/time values intentionally match existing `@arnilo/prism-server` defaults and hard caps. Replay page and cursor values reuse bounded persistence/MCP conventions. The `0 / 0` tool/state rows are a capability denial, not a zero-length serialization limit.
125
+
126
+ **Forbidden:** unbounded replay, polling, background queue, raw tool payload forwarding, arbitrary client state patch, local path disclosure, auto OAuth refresh timer, CLI credential scan, second compaction call, or hard-cap increase.
127
+
128
+ ## OAuth eligibility matrix
129
+
130
+ | Provider surface | 0.0.12 status | Allowed auth | Explicitly prohibited / absent | Future eligibility evidence |
131
+ | --- | --- | --- | --- | --- |
132
+ | OpenAI Codex | supported existing flow | `createOpenAICodexOAuthProvider`; host-invoked browser/device code, PKCE, abort, refresh/store seam | automatic login, ambient credential discovery | Existing protocol/abort/refresh/redaction/store tests remain required. |
133
+ | Anthropic provider | API key only | Host-supplied `apiKey` | `createAnthropicSubscriptionOAuthProvider`, Claude Code credential file/token import, Claude.ai subscription routing | Provider-published third-party authorization plus exact flow/scopes, terms review, network-free fixtures. |
134
+ | Google provider | API key only | Host-supplied `apiKey`; Vertex remains later enterprise scope | `createGeminiCliOAuthProvider`, Gemini CLI credential/token import | Provider-published third-party authorization plus exact flow/scopes, terms review, network-free fixtures. |
135
+
136
+ A future provider-local subscription adapter requires all of: explicit provider permission for third-party products; exact authorize/token/refresh documentation; abort and expiry behavior; PKCE/state where required; bounded request/response handling; token/code/error redaction; durable store round trip; no import/setup network; protocol conformance; legal review. Until then absence is correct behavior, not a missing stub.
137
+
138
+ ## Threat and authority matrix
139
+
140
+ | Boundary | Trusted authority | Untrusted input | Mandatory control | Default / unsupported |
141
+ | --- | --- | --- | --- | --- |
142
+ | AG-UI thread/run IDs | Host `authorize` and session/run resolver | Client `threadId`, `runId`, cursor | Rebind to exact ownership/session/run; validate checkpoint version | Cross-owner replay/resume unsupported. |
143
+ | Resume/approval | Durable checkpoint + host policy | Resume payload/permission result | Exact run/interruption/version; all open interrupts addressed; CAS before side effect | Partial, stale, unknown, or ambiguous resumes fail. |
144
+ | Event/replay payload | Runtime redactor + host projection | Messages, tool events, ledger rows | Redact then allow-list/project/cap before transport | Raw events/paths/args/results/state unsupported. |
145
+ | Client tools/state | Host tool registry/session state | `RunAgentInput.tools`, state, custom fields | Reject before agent lookup | Client cannot grant capabilities or mutate backend state. |
146
+ | ACP permissions | Host permission policy + checkpoint | ACP option/outcome | Only known allow-once/reject selection maps to exact resume; unknown/cancel denies | Allow-always persistence is not added in 0.0.12. |
147
+ | OAuth | Provider terms + host credential ownership | OAuth code/token/CLI credential files | Explicit authorized flow, bounded calls, redaction, host store | Claude/Gemini CLI subscription credential use unsupported. |
148
+ | Compaction | Existing LLM redactor/limits/provider | Paths, diffs, command/check output, previous summary | Existing serialization/redaction/caps; retain signal summary only | Full diff/transcript retention and second memory runtime unsupported. |
149
+
150
+ ## Validation matrix for Task 0
151
+
152
+ | Check | Frozen assertion |
153
+ | --- | --- |
154
+ | Traceability | Every Phase 7 roadmap criterion has one primary Task 1–8 owner; 0.0.13+ conversations/artifacts/enterprise identity have none. |
155
+ | Protocol revisions | `@ag-ui/core@0.0.57`; `@agentclientprotocol/sdk@1.3.0` stable root; official AG-UI schemas validate mapped events. |
156
+ | Primitive reuse | Only streamed durable resume is a generic core extension with two consumers; all AG-UI/ACP types stay optional-package-local. |
157
+ | Lifecycle | `RUN_FINISHED` closes text/tool lifecycle; durable suspension is interrupt outcome; terminal replay never reruns work. |
158
+ | Finite resources | All request/event/page/queue/text/tool/state/error/time caps above are enforced; no polling/daemon/unbounded scan. |
159
+ | Security | Ownership before data, exact-version approvals, default-deny projection, redaction before transport, and no frontend capability grant. |
160
+ | OAuth policy | OpenAI Codex remains only subscription OAuth; Anthropic/Google register API key only and expose no forbidden factory. |
161
+ | Coding compaction | One LLM preset reuses file operations/standard entries/redaction/caps; raw session history stays intact. |
162
+
163
+ ## Documentation and release ownership
164
+
165
+ - Task 0: this evidence page, `docs/index.md`, and `docs.test.ts` regression guard.
166
+ - Task 1: generic streamed durable resume; runtime/events/public-contract docs.
167
+ - Tasks 2–4: optional AG-UI/ACP mapper, handler/replay, and stable sibling; AG-UI/security/A2A docs.
168
+ - Task 5: coding LLM compaction preset and docs.
169
+ - Task 6: OAuth support-matrix docs and absence guards.
170
+ - Task 7: canonical docs, examples, migration, package metadata/navigation.
171
+ - Task 8: 0.0.12 graph, benchmark, pack/install, supply-chain, dry-run publish, and roadmap completion evidence.
172
+
173
+ No public implementation API changes land in Task 0. This page, `roadmap.md` Phase 7, and Plan 075 are authoritative until implementation; later tasks may tighten defaults but cannot widen scope, raise hard caps, add protocol types to core, add a background worker/store, or enable unsupported subscription OAuth without updating this evidence, tests, docs, and plan.