@arnilo/prism 0.0.10 → 0.0.12

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 (60) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/agent-loops.d.ts +1 -0
  3. package/dist/agent-loops.js +37 -2
  4. package/dist/agent-run-lifecycle.d.ts +5 -1
  5. package/dist/agent-run-lifecycle.js +17 -1
  6. package/dist/agents.d.ts +3 -1
  7. package/dist/agents.js +202 -24
  8. package/dist/context-budget.d.ts +63 -0
  9. package/dist/context-budget.js +235 -0
  10. package/dist/contracts.d.ts +109 -0
  11. package/dist/contracts.js +77 -0
  12. package/dist/index.d.ts +8 -6
  13. package/dist/index.js +5 -4
  14. package/dist/input.d.ts +3 -0
  15. package/dist/input.js +71 -28
  16. package/dist/node/session-store-jsonl.js +4 -1
  17. package/dist/rpc.js +13 -2
  18. package/dist/session-stores.d.ts +7 -2
  19. package/dist/session-stores.js +174 -4
  20. package/dist/structured-output.d.ts +5 -1
  21. package/dist/structured-output.js +18 -0
  22. package/dist/testing/persistence-schema.d.ts +1 -1
  23. package/dist/testing/persistence-schema.js +8 -2
  24. package/dist/testing/session-store-conformance.d.ts +6 -0
  25. package/dist/testing/session-store-conformance.js +36 -1
  26. package/docs/a2a.md +1 -0
  27. package/docs/ag-ui.md +123 -0
  28. package/docs/agent-events.md +2 -1
  29. package/docs/agent-loops.md +8 -1
  30. package/docs/agent-session-runtime.md +10 -2
  31. package/docs/cli-rpc.md +2 -1
  32. package/docs/coding-agent-tools.md +70 -1
  33. package/docs/compaction-and-retry.md +2 -1
  34. package/docs/compaction-llm.md +20 -1
  35. package/docs/credential-storage.md +2 -1
  36. package/docs/credentials-and-redaction.md +8 -0
  37. package/docs/evaluations.md +1 -1
  38. package/docs/host-security.md +2 -0
  39. package/docs/index.md +20 -17
  40. package/docs/input-and-prompt-assembly.md +4 -1
  41. package/docs/migration.md +32 -0
  42. package/docs/node-jsonl-session-store.md +1 -1
  43. package/docs/performance.md +36 -0
  44. package/docs/postgres-persistence.md +3 -3
  45. package/docs/provider-packages.md +11 -1
  46. package/docs/providers/anthropic.md +93 -0
  47. package/docs/providers/google.md +88 -0
  48. package/docs/providers/openai.md +2 -2
  49. package/docs/public-contracts.md +6 -0
  50. package/docs/release-and-install.md +232 -65
  51. package/docs/review-coverage-2026-07-22-phase-6.md +209 -0
  52. package/docs/review-coverage-2026-07-22-phase-7.md +173 -0
  53. package/docs/runs-and-usage.md +1 -0
  54. package/docs/server.md +1 -0
  55. package/docs/session-store-conformance.md +2 -0
  56. package/docs/session-stores.md +40 -1
  57. package/docs/sqlite-persistence.md +3 -3
  58. package/docs/structured-output.md +7 -1
  59. package/docs/workflows.md +2 -0
  60. package/package.json +3 -2
@@ -2,15 +2,15 @@
2
2
 
3
3
  ## What it does
4
4
 
5
- Prism is published as one core package, twenty-five 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, twenty-eight 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.
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.10` 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.12` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
12
12
 
13
- - `@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.
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
14
  - `@arnilo/prism-provider-ai-sdk` — optional AI SDK `LanguageModelV4` adapter; included by the provider and all umbrellas.
15
15
  - `@arnilo/prism-compaction-llm` — optional LLM-backed compaction strategy.
16
16
  - `@arnilo/prism-compaction-observational-memory` — optional source-backed observational memory.
@@ -28,10 +28,15 @@ First-party workspace packages (each has non-optional `@arnilo/prism@0.0.10` pee
28
28
  - `@arnilo/prism-supervisor` — optional bounded child delegation and A2A 1.0 card/server/client interoperability.
29
29
  - `@arnilo/prism-web-tools` — optional bounded host-selected Brave/Exa search and Firecrawl Markdown/schema extraction; native fetch, no vendor SDK/browser.
30
30
  - `@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.
31
+ - `@arnilo/prism-ag-ui` — optional bounded AG-UI mapper/authorized Web handler/replay plus stable `./acp` sibling; root and ACP imports are inert.
32
+
33
+ ### 0.0.12 AG-UI package boundary
34
+
35
+ `@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
36
 
32
37
  Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and `CHANGELOG.md`; use exact hard `dependencies`):
33
38
 
34
- - `@arnilo/prism-providers` — all seven `@arnilo/prism-provider-*` packages: six HTTP adapters plus AI SDK interoperability.
39
+ - `@arnilo/prism-providers` — all nine `@arnilo/prism-provider-*` packages: eight HTTP adapters plus AI SDK interoperability.
35
40
  - `@arnilo/prism-compaction` — both `@arnilo/prism-compaction-*` packages.
36
41
  - `@arnilo/prism-base` — core + compaction family + JSON Schema validator; excludes providers, MCP, native credentials/storage, and coding tools.
37
42
  - `@arnilo/prism-code` — base + coding-agent + coding-security + MCP; providers and persistence remain explicit choices.
@@ -39,7 +44,7 @@ Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and
39
44
  - `@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
45
  - `@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.
41
46
 
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 32 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.
47
+ 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 35 first-party manifests; 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
48
 
44
49
  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
50
 
@@ -61,15 +66,16 @@ Consumers install the core package for the runtime and add first-party packages
61
66
  | Install application SDK profile | `npm install @arnilo/prism-sdk @arnilo/prism-provider-openai @arnilo/prism-session-store-sqlite` |
62
67
  | Install everything | `npm install @arnilo/prism-all` |
63
68
  | Install core + a single provider | `npm install @arnilo/prism @arnilo/prism-provider-openai` |
69
+ | 0.0.12 AG-UI (after release) | `npm install @arnilo/prism@0.0.12 @arnilo/prism-ag-ui@0.0.12` |
64
70
  | Install bounded web research tools | `npm install @arnilo/prism @arnilo/prism-web-tools @arnilo/prism-tool-validator-json-schema` |
65
71
  | Install browser automation tools | `npm install @arnilo/prism @arnilo/prism-browser playwright-core@1.61.0` |
66
72
  | Build everything (core + workspaces) | `npm run build` |
67
73
  | Run the default (network-free) test suite | `npm test` |
68
74
  | Dry-run pack core + every package | `npm run pack:dry-run` |
69
75
  | 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.10` |
71
- | Preview deterministic publish order | `npm run release:publish -- --version 0.0.10 --dry-run --allow-dirty --allow-untagged` |
72
- | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.10 --resume --report release-artifacts/publish-report.json` |
76
+ | Validate clean tag/version/ranges and reject registry collisions | `npm run release:check -- --version 0.0.12` |
77
+ | Preview deterministic publish order | `npm run release:publish -- --version 0.0.12 --dry-run --allow-dirty --allow-untagged` |
78
+ | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.12 --resume --report release-artifacts/publish-report.json` |
73
79
  | Full SDK readiness gate (typecheck + offline tests + pack) | `npm run sdk:ready` |
74
80
 
75
81
  Public core import specifiers (from the root `exports` map):
@@ -106,7 +112,7 @@ A packed tarball contains only public compiled output and release files:
106
112
  - Code packages ship `README.md`, `LICENSE`, and `CHANGELOG.md`; family/profile packages ship `README.md` and `CHANGELOG.md`.
107
113
  - The core tarball additionally ships the full `docs/` directory (the docs hub) and `templates/init/` used by `prism init`.
108
114
  - `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.10.tgz`; first-party packages produce `arnilo-prism-provider-<name>-0.0.10.tgz` / `arnilo-prism-compaction-<name>-0.0.10.tgz` / `arnilo-prism-coding-agent-0.0.10.tgz`; family/profile packages produce `arnilo-prism-{providers,compaction,base,code,sdk,all}-0.0.10.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).
115
+ - **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
116
 
111
117
  Excluded from every tarball by `files` negation:
112
118
 
@@ -125,9 +131,9 @@ Excluded from every tarball by `files` negation:
125
131
  "name": "host-app",
126
132
  "type": "module",
127
133
  "dependencies": {
128
- "@arnilo/prism": "0.0.10",
129
- "@arnilo/prism-provider-openai": "0.0.10",
130
- "@arnilo/prism-compaction-observational-memory": "0.0.10"
134
+ "@arnilo/prism": "0.0.12",
135
+ "@arnilo/prism-provider-openai": "0.0.12",
136
+ "@arnilo/prism-compaction-observational-memory": "0.0.12"
131
137
  }
132
138
  }
133
139
  ```
@@ -137,7 +143,7 @@ Installing the provider/compaction packages without `@arnilo/prism` present prod
137
143
  ```text
138
144
  npm error code ERESOLVE
139
145
  npm error Could not resolve dependency:
140
- npm error peer @arnilo/prism@"0.0.10" from @arnilo/prism-provider-openai@0.0.10
146
+ npm error peer @arnilo/prism@"0.0.12" from @arnilo/prism-provider-openai@0.0.12
141
147
  ```
142
148
 
143
149
  ## Implementation example
@@ -170,11 +176,11 @@ For SDK readiness, run the same one-command gate directly. It composes existing
170
176
  npm run sdk:ready
171
177
  ```
172
178
 
173
- Release publication derives all 32 packages from the workspace once, validates exact `0.0.10` manifest/lockfile/internal ranges, then uses deterministic dependency order. `release:check` requires a clean commit tagged `v0.0.10` 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.
179
+ 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
180
 
175
181
  ```bash
176
- npm run release:check -- --version 0.0.10
177
- npm run release:publish -- --version 0.0.10 --dry-run --allow-dirty --allow-untagged
182
+ npm run release:check -- --version 0.0.12
183
+ npm run release:publish -- --version 0.0.12 --dry-run --allow-dirty --allow-untagged
178
184
  ```
179
185
 
180
186
  `--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,7 +191,198 @@ Optional live smoke tests stay separate from SDK readiness because they require
185
191
  PRISM_LIVE_PROVIDER_TESTS=1 npm run test --workspaces --if-present
186
192
  ```
187
193
 
188
- ### 0.0.10 publish handoff
194
+ ### 0.0.12 publish handoff
195
+
196
+ **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.
197
+
198
+ ```bash
199
+ git diff --check
200
+ npm ci
201
+ npm run sdk:ready
202
+ npm run release:check -- --version 0.0.12 --allow-untagged --report /tmp/prism-0.0.12-preflight.json
203
+ git tag -s v0.0.12 -m "Prism 0.0.12"
204
+ git verify-tag v0.0.12
205
+ git push origin v0.0.12
206
+ ```
207
+
208
+ 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.
209
+
210
+ #### Rollback limitations
211
+
212
+ npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
213
+
214
+ Package set (35):
215
+
216
+ ```text
217
+ @arnilo/prism
218
+ @arnilo/prism-ag-ui
219
+ @arnilo/prism-browser
220
+ @arnilo/prism-coding-agent
221
+ @arnilo/prism-coding-security
222
+ @arnilo/prism-compaction-llm
223
+ @arnilo/prism-compaction-observational-memory
224
+ @arnilo/prism-credentials-node
225
+ @arnilo/prism-evals
226
+ @arnilo/prism-mcp
227
+ @arnilo/prism-memory
228
+ @arnilo/prism-observability-opentelemetry
229
+ @arnilo/prism-all
230
+ @arnilo/prism-base
231
+ @arnilo/prism-code
232
+ @arnilo/prism-compaction
233
+ @arnilo/prism-providers
234
+ @arnilo/prism-sdk
235
+ @arnilo/prism-provider-ai-sdk
236
+ @arnilo/prism-provider-anthropic
237
+ @arnilo/prism-provider-google
238
+ @arnilo/prism-provider-kimi
239
+ @arnilo/prism-provider-neuralwatt
240
+ @arnilo/prism-provider-openai
241
+ @arnilo/prism-provider-opencode-go
242
+ @arnilo/prism-provider-openrouter
243
+ @arnilo/prism-provider-zai
244
+ @arnilo/prism-rag
245
+ @arnilo/prism-server
246
+ @arnilo/prism-session-store-postgres
247
+ @arnilo/prism-session-store-sqlite
248
+ @arnilo/prism-supervisor
249
+ @arnilo/prism-tool-validator-json-schema
250
+ @arnilo/prism-web-tools
251
+ @arnilo/prism-workflows
252
+ ```
253
+
254
+ ### 0.0.11 publish handoff
255
+
256
+ **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.
257
+
258
+ #### npm authentication prerequisite
259
+
260
+ The existing GitHub Actions secret `NPM_TOKEN` is used only by the publish step as `NODE_AUTH_TOKEN`, matching previous Prism releases. Confirm that token remains valid and can publish existing and new public packages under `@arnilo`; no additional secret or manual npm publish is required. The workflow also requests OIDC and always passes `--provenance`.
261
+
262
+ #### Release commit and tag
263
+
264
+ Merge through the protected release branch, then run these commands from a clean checkout of the protected merge commit. `git push origin v0.0.11` is the workflow dispatch; there is no manual publish command.
265
+
266
+ ```bash
267
+ # Prepare and push the release commit.
268
+ git diff --check
269
+ npm ci
270
+ npm run sdk:ready
271
+ git add -A
272
+ git diff --cached --check
273
+ git commit -S -m "Release 0.0.11"
274
+ git push origin HEAD
275
+
276
+ # Merge/confirm protected branch CI, then check out that exact clean merge commit.
277
+ test -z "$(git status --porcelain)"
278
+ npm ci
279
+ npm run release:check -- --version 0.0.11 --allow-untagged --report /tmp/prism-0.0.11-preflight.json
280
+
281
+ git tag -s v0.0.11 -m "Prism 0.0.11"
282
+ git verify-tag v0.0.11
283
+ test "$(git rev-parse HEAD)" = "$(git rev-list -n 1 v0.0.11)"
284
+ npm run release:check -- --version 0.0.11 --report /tmp/prism-0.0.11-tagged-preflight.json
285
+ git push origin v0.0.11
286
+ ```
287
+
288
+ The tag workflow's only publication command is `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`. Latest registry preflight returned `available` for all 34 `0.0.11` versions at handoff. Publisher order is stable and dependency-safe (run `node -e` via `release:check` for the live order). Package set:
289
+
290
+ ```text
291
+ @arnilo/prism
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-provider-ai-sdk
302
+ @arnilo/prism-provider-anthropic
303
+ @arnilo/prism-provider-google
304
+ @arnilo/prism-provider-kimi
305
+ @arnilo/prism-provider-neuralwatt
306
+ @arnilo/prism-provider-openai
307
+ @arnilo/prism-provider-opencode-go
308
+ @arnilo/prism-provider-openrouter
309
+ @arnilo/prism-provider-zai
310
+ @arnilo/prism-session-store-postgres
311
+ @arnilo/prism-session-store-sqlite
312
+ @arnilo/prism-supervisor
313
+ @arnilo/prism-tool-validator-json-schema
314
+ @arnilo/prism-web-tools
315
+ @arnilo/prism-browser
316
+ @arnilo/prism-workflows
317
+ @arnilo/prism-compaction
318
+ @arnilo/prism-providers
319
+ @arnilo/prism-rag
320
+ @arnilo/prism-server
321
+ @arnilo/prism-base
322
+ @arnilo/prism-code
323
+ @arnilo/prism-sdk
324
+ @arnilo/prism-all
325
+ ```
326
+
327
+ #### Interruption and resume
328
+
329
+ Do not create another tag or rerun packages manually. Re-run failed jobs for the same tag in GitHub Actions. The workflow invokes `release:publish --resume`: registry versions with matching names, versions, and internal dependency fingerprints are skipped; any mismatch stops the job. Retain `release-artifacts-v0.0.11` and `publish-report-v0.0.11` for audit.
330
+
331
+ #### Bounded post-publish smoke
332
+
333
+ Download the workflow artifact and run `sha256sum -c SHA256SUMS`. Then verify all registry versions/tags/integrity and install the complete profile in a fresh directory:
334
+
335
+ ```bash
336
+ while read -r package; do
337
+ test "$(npm view "$package@0.0.11" version)" = "0.0.11"
338
+ test "$(npm view "$package" dist-tags.latest)" = "0.0.11"
339
+ npm view "$package@0.0.11" dist.integrity >/dev/null
340
+ done <<'PACKAGES'
341
+ @arnilo/prism
342
+ @arnilo/prism-coding-agent
343
+ @arnilo/prism-coding-security
344
+ @arnilo/prism-compaction-llm
345
+ @arnilo/prism-compaction-observational-memory
346
+ @arnilo/prism-credentials-node
347
+ @arnilo/prism-evals
348
+ @arnilo/prism-mcp
349
+ @arnilo/prism-memory
350
+ @arnilo/prism-observability-opentelemetry
351
+ @arnilo/prism-provider-ai-sdk
352
+ @arnilo/prism-provider-anthropic
353
+ @arnilo/prism-provider-google
354
+ @arnilo/prism-provider-kimi
355
+ @arnilo/prism-provider-neuralwatt
356
+ @arnilo/prism-provider-openai
357
+ @arnilo/prism-provider-opencode-go
358
+ @arnilo/prism-provider-openrouter
359
+ @arnilo/prism-provider-zai
360
+ @arnilo/prism-session-store-postgres
361
+ @arnilo/prism-session-store-sqlite
362
+ @arnilo/prism-supervisor
363
+ @arnilo/prism-tool-validator-json-schema
364
+ @arnilo/prism-web-tools
365
+ @arnilo/prism-browser
366
+ @arnilo/prism-workflows
367
+ @arnilo/prism-compaction
368
+ @arnilo/prism-providers
369
+ @arnilo/prism-rag
370
+ @arnilo/prism-server
371
+ @arnilo/prism-base
372
+ @arnilo/prism-code
373
+ @arnilo/prism-sdk
374
+ @arnilo/prism-all
375
+ PACKAGES
376
+
377
+ npm audit signatures --json --include-attestations
378
+ npm install --no-audit --no-fund @arnilo/prism-all@0.0.11
379
+ ```
380
+
381
+ #### Rollback limitations
382
+
383
+ npm publication is not transactional and published versions are immutable. Partial publication is a resume case, not rollback. For a confirmed systemic defect after completion, deprecate every affected `@0.0.11`; restore `latest` to the previous good release only where that tag already existed. Exact `0.0.11` installs remain possible, so publish a fixed version promptly. Do not unpublish except for a security/legal emergency under npm policy.
384
+
385
+ ### 0.0.10 publish handoff (historical)
189
386
 
190
387
  **Decision: GO after operator prerequisites below.** Phase 5 coding-harness unified workspace: required `workspaceMode`, fail-closed mixed wiring, sandbox FS auto-wire, tree identity, adversarial consistency tests, and `scripts/benchmark-0.0.10.mjs` evidence. Code, tests, exact `0.0.10` package graph (retargeted from post-ship `0.0.96`), packed artifacts, security gates, and dependency-ordered publication dry-run passed from the Phase 5 release-candidate tree. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected Docker/Playwright live gates (when host-provisioned), and actual publication remain operator/workflow prerequisites. No package was published during readiness work. Scope is coding-harness P0 only; **no Office** package, binary, SDK, wrapper, docs page, test, or release gate exists. Host mode never claims disposable containment.
191
388
 
@@ -334,8 +531,8 @@ npm publication is not transactional and published versions are immutable. Parti
334
531
 
335
532
  ## Extension and configuration notes
336
533
 
337
- - **Required `@arnilo/prism` peer.** Every first-party package declares a non-optional `@arnilo/prism@0.0.10` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.10` 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.
338
- - **Public access.** All 32 manifests (26 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.
534
+ - **Required `@arnilo/prism` peer.** Every first-party code package declares a non-optional `@arnilo/prism@0.0.12` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.12` 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.
535
+ - **Public access.** All 35 manifests (29 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.
339
536
  - **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).
340
537
  - **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`.
341
538
  - **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.
@@ -344,7 +541,7 @@ npm publication is not transactional and published versions are immutable. Parti
344
541
 
345
542
  - **No secrets or fixtures in tarballs.** Tests, fixtures, `src/`, `plans/`, `.agents/`, `roadmap.md`, and `tsconfig` files are excluded. The `docs avoid real-looking secret examples` docs check and the packaging guard's deny list prevent secret-bearing fixtures from shipping.
346
543
  - **Live tests stay opt-in.** The default `npm test` is network-free by construction and never sets these vars. Provider/compaction live gates stay credential-gated and are not set by default or during `sdk:ready`. The PostgreSQL adapter live matrix is the exception that runs in CI via the dedicated `postgres-integration` job (still skipped in the default suite).
347
- - `PRISM_LIVE_PROVIDER_TESTS=1` — gates the six provider packages' `src/__tests__/live.test.ts` (`@arnilo/prism-provider-openai`, `provider-opencode-go`, `provider-openrouter`, `provider-zai`, `provider-kimi`, `provider-neuralwatt`). Each provider live test also requires its own API key env var and skips safely when it is missing:
544
+ - `PRISM_LIVE_PROVIDER_TESTS=1` — gates the eight provider packages' `src/__tests__/live.test.ts` (`@arnilo/prism-provider-anthropic`, `provider-google`, `provider-openai`, `provider-opencode-go`, `provider-openrouter`, `provider-zai`, `provider-kimi`, `provider-neuralwatt`). Each provider live test also requires its own API key env var and skips safely when it is missing:
348
545
  - `OPENAI_API_KEY` for `@arnilo/prism-provider-openai`
349
546
  - `OPENROUTER_API_KEY` for `@arnilo/prism-provider-openrouter`
350
547
  - `KIMI_API_KEY` for `@arnilo/prism-provider-kimi`
@@ -367,63 +564,33 @@ npm publication is not transactional and published versions are immutable. Parti
367
564
  - **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.
368
565
  - **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.
369
566
 
370
- ### 0.0.10 dependency audit decision (2026-07-21)
371
-
372
- `npm audit --audit-level=high` reports 0 vulnerabilities and `npm ls --all --depth=0` resolves the exact 32-package `0.0.10` graph (including `@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.
373
-
374
- ### 0.0.10 release-candidate verification — 2026-07-21
567
+ ### 0.0.12 release-candidate verification — 2026-07-22
375
568
 
376
569
  | Gate | Result |
377
570
  | --- | --- |
378
- | Package graph | Root + 31 workspaces = 32 publishable manifests at exact `0.0.10` with exact internal peer/dependency ranges (retargeted from post-ship `0.0.96`); `@arnilo/prism-browser` in `@arnilo/prism-all` only (not `@arnilo/prism-code`). |
379
- | Deterministic suites | `npm run sdk:ready` passed: 1,963 tests (1,934 pass, 29 explicit live skips, 0 fail), full typecheck/build/examples, docs/export/package/install smoke, and 32 dry-run packs. |
380
- | Workspace modes | Required `workspaceMode`; sandbox FS auto-wire; fail-closed mixed wiring; host non-containment; tree identity; adversarial consistency + `benchmark-0.0.10` schema green. |
381
- | Coding/browser | Network-free coding-agent + browser adversarial fixtures retained; `scripts/benchmark-0.0.10.mjs` host/sandbox-fake evidence (10-iter schema run green); protected Docker/Playwright remain operator P0 gates. |
382
- | Supply chain | `npm audit --audit-level=high` = 0 vulnerabilities; SPDX SBOM 186 packages / 8 approved licenses; working-tree secret scan 2,418 files / 0 findings; `git diff --check` clean. |
383
- | Artifacts | Packed review: 988,020 bytes compressed / 3,820,326 unpacked / 850 files across 32 tarballs; core 527,333 / 1,848,113 / 248 files; no Playwright binary/image and no Office package/binary. |
384
- | Registry/order | Public `release:check` found all 32 `@arnilo/*@0.0.10` versions available. Dependency-ordered `release:publish --dry-run --allow-dirty --allow-untagged` completed 32/32 dry-run with explicit public/latest/provenance; no commit, tag, or publication created. |
385
- | Office exclusion | No Office package, binary, SDK, wrapper, docs page, test, or release gate. |
386
- | Containment claims | Host mode and mixed-wiring escape hatch never claim disposable containment in docs/release notes. |
571
+ | 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`. |
572
+ | 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. |
573
+ | SDK readiness | `npm run sdk:ready` passed: typecheck, network-free tests, offline install/export checks, and 35 package dry-run packs. |
574
+ | 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. |
575
+ | 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. |
387
576
 
388
- ### 0.0.9 dependency audit decision (2026-07-21)
577
+ 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.
389
578
 
390
- `npm audit --audit-level=high` reports 0 vulnerabilities and `npm ls --all --depth=0` resolves the exact 32-package `0.0.96` graph (including `@arnilo/prism-browser`). Locked-install SPDX contains 185 packages and eight approved license expressions; `scripts/verify-sbom.mjs` passed. Browser keeps `playwright-core@1.61.0` as an optional peer and ships no browser binary/image; no Office package/binary enters the graph.
579
+ ### 0.0.11 dependency audit decision (2026-07-22)
391
580
 
392
- ### 0.0.8 dependency audit decision (2026-07-20)
581
+ `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.
393
582
 
394
- `npm audit --audit-level=high` reports 0 vulnerabilities and `npm ls --all --depth=0` resolves the exact 31-package `0.0.8` graph. Locked-install SPDX contains 183 packages and eight approved license expressions; `scripts/verify-sbom.mjs` passed. New runtime dependencies remain isolated to optional packages: MCP stays pinned to SDK 1.29.0 and web tools add no vendor SDK. Native `better-sqlite3` remains the sole install-script dependency and stays in opt-in SQLite.
395
583
 
396
- ### 0.0.9 release-candidate verification — 2026-07-21
584
+ ### 0.0.11 release-candidate verification — 2026-07-22
397
585
 
398
586
  | Gate | Result |
399
587
  | --- | --- |
400
- | Package graph | Root + 31 workspaces = 32 publishable manifests at exact `0.0.96` with exact internal peer/dependency ranges; `@arnilo/prism-browser` in `@arnilo/prism-all` only (not `@arnilo/prism-code`). |
401
- | Deterministic suites | Post–Synapta Task 13 re-verify: `npm run sdk:ready` passed: 1,934 tests across core/workspaces (1,905 pass, 29 explicit live skips, 0 fail), full typecheck/build/examples, docs/export/package/install smoke, and 32 dry-run packs. |
402
- | Synapta Defects 1a/1b/2 | Malformed streamed tool-call args → failed/`tool_execution_blocked` (`invalid_json_arguments`, never executes); incomplete deltas → typed `incomplete_delta` fail-closed; empty/thinking-only call-free artifacts → `parse_error` revision budget with no `succeeded` without `artifact_finished`. Conformance helper matches recovery/`incomplete_delta` contract. |
403
- | Coding/browser | Network-free coding-agent + browser adversarial fixtures unchanged; dated `scripts/benchmark-0.0.9.mjs` evidence retained (Node v24.18.0 Linux x64, 100 iterations); protected Docker (`PRISM_TEST_DOCKER_SANDBOX=1`) and Playwright (`PRISM_LIVE_PLAYWRIGHT=1`) remain explicit operator P0 gates when host-provisioned. |
404
- | Supply chain | `npm audit --audit-level=high` = 0 vulnerabilities; SPDX SBOM 185 packages / 8 approved licenses; working-tree secret scan 2,402 files / 0 findings; unpacked-tarball secret scan 847 files / 0 findings; `git diff --check` clean. |
405
- | Artifacts | Packed review: 972,339 bytes compressed / 3,755,038 unpacked / 847 files across 32 tarballs; core 519,366 / 1,819,939; browser 29,171 / 132,669 with no Playwright binary/image and no Office package/binary. |
406
- | Registry/order | Public `release:check` found all 32 `@arnilo/*@0.0.96` versions available. Dependency-ordered `release:publish --dry-run --allow-dirty --allow-untagged` completed 32/32 dry-run with explicit public/latest/provenance; no commit, tag, or publication created. |
407
- | Office exclusion | No Office package, binary, SDK, wrapper, docs page, test, or release gate. |
408
-
409
- ### 0.0.8 release-candidate verification — 2026-07-20
410
-
411
- Phase 3 validation ran from this working tree without creating a release commit/tag or publishing. Clean protected-branch/tag, GitHub CodeQL/dependency-review, environment approval, OIDC, and actual canary/publication checks remain mandatory in the handoff above.
588
+ | Package graph | Root + 33 workspaces = 34 publishable manifests at exact `0.0.11` with exact internal peer/dependency ranges; Anthropic/Google in `@arnilo/prism-providers` and transitively `@arnilo/prism-all`. |
589
+ | Coding harness P1 | SessionIndex/search, contextBudget, steer, ask_user_decision, runCodingGoalVerify; schema v4 FTS migration; `benchmark-0.0.11` search/budget schema green. |
590
+ | Providers | Native Anthropic + Google packages offline-conformant; live gates remain `PRISM_LIVE_PROVIDER_TESTS=1` + host keys. |
591
+ | SDK readiness | `npm run sdk:ready`: 2,047 tests (2,014 pass / 33 skip / 0 fail); pack 1,041,760 / 4,041,551 / 889 files; core 549,565 / 1,938,287 / 253. |
592
+ | Registry/order | Public `release:check` found all 34 `@arnilo/*@0.0.11` versions available. Dependency-ordered `release:publish --dry-run --allow-dirty --allow-untagged` completed 34/34 dry-run with explicit public/latest/provenance; no commit, tag, or publication created. |
412
593
 
413
- | Gate | Result |
414
- | --- | --- |
415
- | Node 24 full matrix | `npm run sdk:ready` passed in 87 seconds inside its five-minute backstop: 1,814 tests (1,789 pass, 25 explicit live skips, 0 fail), full typecheck/build/examples, docs/export/package/install smoke, workspace conformance, and 31 dry-run packs. |
416
- | Node 20 compatibility | Docker Node 20.20.1 performed a clean locked install, built all workspaces, and imported all 21 public root export targets. |
417
- | PostgreSQL | Fresh `pgvector/pgvector:pg16`: 17 session-store/persistence plus 14 memory/pgvector checks passed with 0 skips/failures. |
418
- | Packed consumer | Offline install smoke packed all 31 exact `0.0.8` tarballs into a fresh consumer, imported every public code package/core subpath, ran integration/composition journeys, and ran generated `prism init`. |
419
- | Artifact contents | 31 tarballs contain 783 files, about 860 kB packed and 3.28 MB unpacked. Core is 245 files, about 490 kB packed and 1.74 MB unpacked. Packaging deny-list and unpacked-artifact secret scan found no tests/maps/source/plans/secrets. |
420
- | Registry and order | Public preflight found all 31 `@arnilo/*@0.0.8` versions available. Dependency-ordered `release:publish --dry-run` completed 31/31 with explicit public/latest/provenance arguments; no publish occurred. |
421
- | Supply chain | High-severity audit: 0 vulnerabilities; dependency tree clean; SPDX/license policy passed (183 packages/eight expressions); tracked source (2,229 files) and unpacked artifacts (783 files) returned zero secret findings. Immutable-action/permission/attestation policy tests passed. Actual CodeQL/dependency-review and artifact attestations run only in protected GitHub workflows. |
422
- | Benchmarks | Dated 1,000-operation Node 24/Linux x64 results cover actual batched-ledger and in-memory OTel paths, snapshot-cache lookup, and provider/PostgreSQL/MCP/A2A/web local envelope shapes; table and non-live caveats are in `docs/performance.md`. |
423
- | Live prerequisites | Disposable PostgreSQL passed and `PRISM_TEST_KEYCHAIN=1` passed 27/27. Three web-provider live tests and provider/MCP/A2A protected canaries stayed explicitly skipped because this host has no release credentials/endpoints; disabled gate performed no network. |
424
- | Provenance/publication | GitHub OIDC attestations and npm provenance are generated only by authorized execution from clean signed `v0.0.8`; no commit, tag, attestation, or publication was created here. |
425
-
426
- Temporary containers, benchmark JSON, SBOM, packed tarballs, and dry-run reports were deleted or kept only under `/tmp`; protected CI recreates retained release artifacts.
427
594
 
428
595
  ## Release checklist
429
596