@arnilo/prism 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/README.md +34 -10
  3. package/dist/agent-loops.d.ts +1 -0
  4. package/dist/agent-loops.js +26 -16
  5. package/dist/agents.js +147 -21
  6. package/dist/cli-init.d.ts +41 -0
  7. package/dist/cli-init.js +390 -0
  8. package/dist/cli-runner.d.ts +7 -1
  9. package/dist/cli-runner.js +13 -1
  10. package/dist/content.d.ts +19 -0
  11. package/dist/content.js +197 -69
  12. package/dist/contracts.d.ts +96 -9
  13. package/dist/contracts.js +8 -0
  14. package/dist/feedback.d.ts +48 -0
  15. package/dist/feedback.js +230 -0
  16. package/dist/ids.d.ts +2 -0
  17. package/dist/ids.js +6 -0
  18. package/dist/index.d.ts +10 -4
  19. package/dist/index.js +6 -3
  20. package/dist/providers/media.d.ts +3 -1
  21. package/dist/providers/media.js +11 -1
  22. package/dist/session-stores.js +2 -3
  23. package/dist/testing/feedback.d.ts +6 -0
  24. package/dist/testing/feedback.js +37 -0
  25. package/dist/testing/persistence-schema.d.ts +48 -10
  26. package/dist/testing/persistence-schema.js +166 -22
  27. package/dist/testing/run-ledger-conformance.js +7 -1
  28. package/dist/thinking.d.ts +42 -0
  29. package/dist/thinking.js +92 -0
  30. package/dist/tools.js +2 -3
  31. package/dist/use-case-model.d.ts +63 -0
  32. package/dist/use-case-model.js +52 -0
  33. package/docs/a2a.md +75 -0
  34. package/docs/agent-events.md +14 -21
  35. package/docs/agent-loops.md +12 -9
  36. package/docs/agent-session-runtime.md +14 -16
  37. package/docs/cli-rpc.md +35 -7
  38. package/docs/coding-agent-tools.md +35 -14
  39. package/docs/coding-security.md +7 -3
  40. package/docs/compaction-llm.md +17 -7
  41. package/docs/compaction-observational-memory.md +30 -4
  42. package/docs/context-and-skills.md +1 -0
  43. package/docs/credential-storage.md +58 -9
  44. package/docs/credentials-and-redaction.md +3 -3
  45. package/docs/database-persistence.md +17 -9
  46. package/docs/evaluations.md +122 -0
  47. package/docs/extensions.md +2 -2
  48. package/docs/host-security.md +26 -5
  49. package/docs/index.md +43 -28
  50. package/docs/mcp-tools.md +74 -13
  51. package/docs/migration.md +177 -3
  52. package/docs/multimodal-content.md +14 -6
  53. package/docs/node-filesystem-config.md +1 -0
  54. package/docs/node-jsonl-session-store.md +5 -4
  55. package/docs/observability.md +14 -6
  56. package/docs/performance.md +209 -0
  57. package/docs/postgres-persistence.md +8 -6
  58. package/docs/provider-caching.md +16 -4
  59. package/docs/provider-conformance.md +40 -1
  60. package/docs/provider-packages.md +62 -3
  61. package/docs/providers/ai-sdk.md +149 -0
  62. package/docs/providers/kimi.md +124 -61
  63. package/docs/providers/neuralwatt.md +19 -13
  64. package/docs/providers/openai.md +56 -13
  65. package/docs/providers/opencode-go.md +118 -30
  66. package/docs/providers/openrouter.md +105 -35
  67. package/docs/providers/zai.md +94 -45
  68. package/docs/public-contracts.md +6 -5
  69. package/docs/rag.md +113 -0
  70. package/docs/release-and-install.md +100 -79
  71. package/docs/review-coverage-2026-07-15.md +193 -0
  72. package/docs/review-coverage-2026-07-17-provider-validation.md +192 -0
  73. package/docs/runs-and-usage.md +42 -5
  74. package/docs/server.md +139 -0
  75. package/docs/settings-auth-trust-security.md +5 -5
  76. package/docs/sqlite-persistence.md +6 -5
  77. package/docs/structured-output.md +1 -1
  78. package/docs/supervisors.md +71 -0
  79. package/docs/thinking-and-reasoning.md +98 -0
  80. package/docs/tool-execution-primitives.md +3 -3
  81. package/docs/tools.md +15 -0
  82. package/docs/use-case-model-selection.md +109 -0
  83. package/docs/workflow-orchestration-primitives.md +20 -3
  84. package/docs/workflows.md +114 -33
  85. package/docs/working-and-semantic-memory.md +170 -0
  86. package/package.json +13 -3
  87. package/templates/init/README.md.tmpl +28 -0
  88. package/templates/init/env.example.tmpl +1 -0
  89. package/templates/init/gitignore.tmpl +11 -0
  90. package/templates/init/optional/evals-example.ts.tmpl +17 -0
  91. package/templates/init/optional/workflows-example.ts.tmpl +27 -0
  92. package/templates/init/package.json.tmpl +22 -0
  93. package/templates/init/providers.json +76 -0
  94. package/templates/init/src/agent.ts.tmpl +10 -0
  95. package/templates/init/src/index.ts.tmpl +12 -0
  96. package/templates/init/src/tests/agent.test.ts.tmpl +24 -0
  97. package/templates/init/tsconfig.json.tmpl +15 -0
@@ -2,35 +2,41 @@
2
2
 
3
3
  ## What it does
4
4
 
5
- Prism is published as one core package, seventeen 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-three 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
- - `@arnilo/prism` — the runtime, contracts, registries, streaming events, CLI, and the `/docs` hub. `files`: `dist` (with `!dist/__tests__` and `!dist/**/*.map` negations), `docs`, `CHANGELOG.md`. `bin`: `prism` -> `./dist/cli.js`. `sideEffects`: `["dist/cli.js"]`.
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 `peerDependencies: { "@arnilo/prism": "0.0.4" }`, non-optional; `sideEffects: false`):
11
+ First-party workspace packages (each has non-optional `@arnilo/prism@0.0.6` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
12
12
 
13
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.
14
+ - `@arnilo/prism-provider-ai-sdk` — optional AI SDK `LanguageModelV4` adapter; included by the provider and all umbrellas.
14
15
  - `@arnilo/prism-compaction-llm` — optional LLM-backed compaction strategy.
15
16
  - `@arnilo/prism-compaction-observational-memory` — optional source-backed observational memory.
16
17
  - `@arnilo/prism-observability-opentelemetry` — optional OpenTelemetry adapter for `AgentEvent` streams.
17
18
  - `@arnilo/prism-tool-validator-json-schema` — bounded JSON Schema tool argument validation.
18
- - `@arnilo/prism-mcp` — MCP transport/client bridge mapping remote tools into core dispatch.
19
+ - `@arnilo/prism-mcp` — MCP transport/client bridge plus explicit authorized Prism tool/command server exposure.
19
20
  - `@arnilo/prism-coding-agent` / `@arnilo/prism-coding-security` — optional host shell/filesystem tools plus approval, containment, and sandbox policy.
20
21
  - `@arnilo/prism-session-store-sqlite` / `@arnilo/prism-session-store-postgres` — production persistence, checkpoints, and leases.
21
22
  - `@arnilo/prism-credentials-node` — encrypted-file and keychain credential storage.
22
- - `@arnilo/prism-workflows` — typed bounded DAG orchestration over sessions/tools/events/persistence.
23
+ - `@arnilo/prism-workflows` — typed bounded DAG orchestration with durable approval, schedules/background runs, composition/state/replay, and multi-process coordination.
24
+ - `@arnilo/prism-evals` — optional deterministic scorers, immutable datasets, and bounded batch experiments over `AgentRunResult`.
25
+ - `@arnilo/prism-memory` — optional working memory, semantic recall, Embedder/VectorStore contracts, and PostgreSQL/pgvector adapter.
26
+ - `@arnilo/prism-rag` — optional bounded text/Markdown chunking, vector indexing/retrieval, stable citations, and ContextProvider integration (peers on memory).
27
+ - `@arnilo/prism-server` — optional framework-free authorized Web agent/workflow routes (peers on workflows).
28
+ - `@arnilo/prism-supervisor` — optional bounded child delegation and A2A 1.0 card/server/client interoperability.
23
29
 
24
30
  Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and `CHANGELOG.md`; use exact hard `dependencies`):
25
31
 
26
- - `@arnilo/prism-providers` — all 6 `@arnilo/prism-provider-*` packages.
32
+ - `@arnilo/prism-providers` — all seven `@arnilo/prism-provider-*` packages: six HTTP adapters plus AI SDK interoperability.
27
33
  - `@arnilo/prism-compaction` — both `@arnilo/prism-compaction-*` packages.
28
34
  - `@arnilo/prism-base` — core + compaction family + JSON Schema validator; excludes providers, MCP, native credentials/storage, and coding tools.
29
35
  - `@arnilo/prism-code` — base + coding-agent + coding-security + MCP; providers and persistence remain explicit choices.
30
36
  - `@arnilo/prism-sdk` — base + workflows + MCP + Node credentials + OpenTelemetry; providers and persistence remain explicit choices.
31
- - `@arnilo/prism-all` — code + SDK + providers + SQLite + PostgreSQL, transitively installing every first-party package. Installation alone activates no network, telemetry, database, MCP, shell, or filesystem capability.
37
+ - `@arnilo/prism-all` — every first-party package: code + SDK + providers + persistence + evals + memory/RAG + server + supervisor. Installation alone activates no network/listener, telemetry, database, memory, evaluation, delegation, MCP, shell, or filesystem capability.
32
38
 
33
- Profile footprint snapshot (Node 24/npm 11, lockfile graph, 2026-07-14): `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 24 manifests and six (those plus better-sqlite3 and pg). Final clean-RC manifest tarballs are 998 B, 995 B, 1,001 B, and 1,393 B respectively, including their 0.0.4 changelogs. Native database drivers stay out of base/code/sdk; both appear only in all.
39
+ 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 30 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.
34
40
 
35
41
  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`.
36
42
 
@@ -45,6 +51,7 @@ Consumers install the core package for the runtime and add first-party packages
45
51
  | Operation | Command |
46
52
  | --- | --- |
47
53
  | Install core only | `npm install @arnilo/prism` |
54
+ | Scaffold a minimal project | `npx --package @arnilo/prism prism init my-agent [--provider openai] [--with-workflows] [--with-evals]` |
48
55
  | Install core + all providers | `npm install @arnilo/prism @arnilo/prism-providers` |
49
56
  | Install minimal safe profile | `npm install @arnilo/prism-base` |
50
57
  | Install coding-agent profile | `npm install @arnilo/prism-code @arnilo/prism-provider-openai` |
@@ -55,9 +62,9 @@ Consumers install the core package for the runtime and add first-party packages
55
62
  | Run the default (network-free) test suite | `npm test` |
56
63
  | Dry-run pack core + every package | `npm run pack:dry-run` |
57
64
  | Local mirror of the release verify gate | `npm run release:dry-run` |
58
- | Validate clean tag/version/ranges and reject registry collisions | `npm run release:check -- --version 0.0.4` |
59
- | Preview deterministic publish order | `npm run release:publish -- --version 0.0.4 --dry-run --allow-dirty --allow-untagged` |
60
- | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.4 --resume --report release-artifacts/publish-report.json` |
65
+ | Validate clean tag/version/ranges and reject registry collisions | `npm run release:check -- --version 0.0.6` |
66
+ | Preview deterministic publish order | `npm run release:publish -- --version 0.0.6 --dry-run --allow-dirty --allow-untagged` |
67
+ | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.6 --resume --report release-artifacts/publish-report.json` |
61
68
  | Full SDK readiness gate (typecheck + offline tests + pack) | `npm run sdk:ready` |
62
69
 
63
70
  Public core import specifiers (from the root `exports` map):
@@ -76,6 +83,7 @@ Public core import specifiers (from the root `exports` map):
76
83
  | `@arnilo/prism/testing/extension-conformance` | `dist/testing/extension-conformance.{js,d.ts}` |
77
84
  | `@arnilo/prism/testing/persistence-schema` | `dist/testing/persistence-schema.{js,d.ts}` |
78
85
  | `@arnilo/prism/testing/run-ledger-conformance` | `dist/testing/run-ledger-conformance.{js,d.ts}` |
86
+ | `@arnilo/prism/testing/feedback` | `dist/testing/feedback.{js,d.ts}` |
79
87
  | `@arnilo/prism/node/config` | `dist/node/config.{js,d.ts}` |
80
88
  | `@arnilo/prism/node/settings` | `dist/node/settings.{js,d.ts}` |
81
89
  | `@arnilo/prism/node/trust` | `dist/node/trust.{js,d.ts}` |
@@ -91,9 +99,9 @@ A packed tarball contains only public compiled output and release files:
91
99
 
92
100
  - `dist/**` compiled `.js` and `.d.ts` for every exported subpath.
93
101
  - Code packages ship `README.md`, `LICENSE`, and `CHANGELOG.md`; family/profile packages ship `README.md` and `CHANGELOG.md`.
94
- - The core tarball additionally ships the full `docs/` directory (the docs hub).
102
+ - The core tarball additionally ships the full `docs/` directory (the docs hub) and `templates/init/` used by `prism init`.
95
103
  - `dist/cli.js` and the `bin` link in core.
96
- - **Tarball filenames.** npm strips the `@scope/` prefix, so the core package `@arnilo/prism` produces a tarball named `arnilo-prism-0.0.4.tgz`; first-party packages produce `arnilo-prism-provider-<name>-0.0.4.tgz` / `arnilo-prism-compaction-<name>-0.0.4.tgz` / `arnilo-prism-coding-agent-0.0.4.tgz`; family/profile packages produce `arnilo-prism-{providers,compaction,base,code,sdk,all}-0.0.4.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).
104
+ - **Tarball filenames.** npm strips the `@scope/` prefix, so the core package `@arnilo/prism` produces a tarball named `arnilo-prism-0.0.6.tgz`; first-party packages produce `arnilo-prism-provider-<name>-0.0.6.tgz` / `arnilo-prism-compaction-<name>-0.0.6.tgz` / `arnilo-prism-coding-agent-0.0.6.tgz`; family/profile packages produce `arnilo-prism-{providers,compaction,base,code,sdk,all}-0.0.6.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).
97
105
 
98
106
  Excluded from every tarball by `files` negation:
99
107
 
@@ -103,6 +111,8 @@ Excluded from every tarball by `files` negation:
103
111
 
104
112
  `sideEffects` is `false` for every first-party package (their entrypoints export only types and declarations). Core sets `sideEffects: ["dist/cli.js"]` because `src/cli.ts` runs the CLI and sets `process.exitCode` at import time; every other core entrypoint is side-effect-free.
105
113
 
114
+ `prism init` generates a private TypeScript project whose default dependency set is only `@arnilo/prism` (plus TypeScript tooling as `devDependencies`). Provider and `--with-workflows` / `--with-evals` flags add only the selected optional packages. Measured default clean install is ~27.5 MB versus the Mastra scaffold baseline of 439 MB.
115
+
106
116
  ## Request/response example
107
117
 
108
118
  ```json
@@ -110,9 +120,9 @@ Excluded from every tarball by `files` negation:
110
120
  "name": "host-app",
111
121
  "type": "module",
112
122
  "dependencies": {
113
- "@arnilo/prism": "0.0.4",
114
- "@arnilo/prism-provider-openai": "0.0.4",
115
- "@arnilo/prism-compaction-observational-memory": "0.0.4"
123
+ "@arnilo/prism": "0.0.6",
124
+ "@arnilo/prism-provider-openai": "0.0.6",
125
+ "@arnilo/prism-compaction-observational-memory": "0.0.6"
116
126
  }
117
127
  }
118
128
  ```
@@ -122,7 +132,7 @@ Installing the provider/compaction packages without `@arnilo/prism` present prod
122
132
  ```text
123
133
  npm error code ERESOLVE
124
134
  npm error Could not resolve dependency:
125
- npm error peer @arnilo/prism@"0.0.4" from @arnilo/prism-provider-openai@0.0.4
135
+ npm error peer @arnilo/prism@"0.0.6" from @arnilo/prism-provider-openai@0.0.6
126
136
  ```
127
137
 
128
138
  ## Implementation example
@@ -155,11 +165,11 @@ For SDK readiness, run the same one-command gate directly. It composes existing
155
165
  npm run sdk:ready
156
166
  ```
157
167
 
158
- Release publication derives all 24 packages from the workspace once, validates exact `0.0.4` manifest/lockfile/internal ranges, then uses deterministic dependency order. `release:check` requires a clean commit tagged `v0.0.4` 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.
168
+ Release publication derives all 30 packages from the workspace once, validates exact `0.0.6` manifest/lockfile/internal ranges, then uses deterministic dependency order. `release:check` requires a clean commit tagged `v0.0.6` 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.
159
169
 
160
170
  ```bash
161
- npm run release:check -- --version 0.0.4
162
- npm run release:publish -- --version 0.0.4 --dry-run --allow-dirty --allow-untagged
171
+ npm run release:check -- --version 0.0.6
172
+ npm run release:publish -- --version 0.0.6 --dry-run --allow-dirty --allow-untagged
163
173
  ```
164
174
 
165
175
  `--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.
@@ -170,9 +180,9 @@ Optional live smoke tests stay separate from SDK readiness because they require
170
180
  PRISM_LIVE_PROVIDER_TESTS=1 npm run test --workspaces --if-present
171
181
  ```
172
182
 
173
- ### 0.0.4 publish handoff
183
+ ### 0.0.6 publish handoff
174
184
 
175
- **Decision: GO after operator prerequisites below.** Code, tests, package graph, registry availability, and clean-RC artifacts passed. No package was published during readiness work.
185
+ **Decision: GO after operator prerequisites below.** Code, tests, package graph, live PostgreSQL, registry availability, packed artifacts, and dependency-ordered publication dry-run passed from the Phase 14 working tree. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, and actual publication remain operator/workflow prerequisites. No package was published during readiness work.
176
186
 
177
187
  #### npm authentication prerequisite
178
188
 
@@ -180,7 +190,7 @@ The existing GitHub Actions secret `NPM_TOKEN` is used only by the publish step
180
190
 
181
191
  #### Release commit and tag
182
192
 
183
- Merge through the protected release branch, then run these commands from a clean checkout of the protected merge commit. `git push origin v0.0.4` is the workflow dispatch; there is no manual publish command.
193
+ Merge through the protected release branch, then run these commands from a clean checkout of the protected merge commit. `git push origin v0.0.6` is the workflow dispatch; there is no manual publish command.
184
194
 
185
195
  ```bash
186
196
  # Prepare and push the release commit.
@@ -189,22 +199,22 @@ npm ci
189
199
  npm run sdk:ready
190
200
  git add -A
191
201
  git diff --cached --check
192
- git commit -S -m "Release 0.0.4"
202
+ git commit -S -m "Release 0.0.6"
193
203
  git push origin HEAD
194
204
 
195
205
  # Merge/confirm protected branch CI, then check out that exact clean merge commit.
196
206
  test -z "$(git status --porcelain)"
197
207
  npm ci
198
- npm run release:check -- --version 0.0.4 --allow-untagged --report /tmp/prism-0.0.4-preflight.json
208
+ npm run release:check -- --version 0.0.6 --allow-untagged --report /tmp/prism-0.0.6-preflight.json
199
209
 
200
- git tag -s v0.0.4 -m "Prism 0.0.4"
201
- git verify-tag v0.0.4
202
- test "$(git rev-parse HEAD)" = "$(git rev-list -n 1 v0.0.4)"
203
- npm run release:check -- --version 0.0.4 --report /tmp/prism-0.0.4-tagged-preflight.json
204
- git push origin v0.0.4
210
+ git tag -s v0.0.6 -m "Prism 0.0.6"
211
+ git verify-tag v0.0.6
212
+ test "$(git rev-parse HEAD)" = "$(git rev-list -n 1 v0.0.6)"
213
+ npm run release:check -- --version 0.0.6 --report /tmp/prism-0.0.6-tagged-preflight.json
214
+ git push origin v0.0.6
205
215
  ```
206
216
 
207
- 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 24 `0.0.4` versions. Publisher order is stable and dependency-safe:
217
+ 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 30 `0.0.6` versions. Publisher order is stable and dependency-safe:
208
218
 
209
219
  ```text
210
220
  1 @arnilo/prism
@@ -212,30 +222,36 @@ The tag workflow's only publication command is `npm run release:publish -- --ver
212
222
  3 @arnilo/prism-compaction-llm
213
223
  4 @arnilo/prism-compaction-observational-memory
214
224
  5 @arnilo/prism-credentials-node
215
- 6 @arnilo/prism-mcp
216
- 7 @arnilo/prism-observability-opentelemetry
217
- 8 @arnilo/prism-provider-kimi
218
- 9 @arnilo/prism-provider-neuralwatt
219
- 10 @arnilo/prism-provider-openai
220
- 11 @arnilo/prism-provider-opencode-go
221
- 12 @arnilo/prism-provider-openrouter
222
- 13 @arnilo/prism-provider-zai
223
- 14 @arnilo/prism-session-store-postgres
224
- 15 @arnilo/prism-session-store-sqlite
225
- 16 @arnilo/prism-tool-validator-json-schema
226
- 17 @arnilo/prism-workflows
227
- 18 @arnilo/prism-coding-security
228
- 19 @arnilo/prism-compaction
229
- 20 @arnilo/prism-providers
230
- 21 @arnilo/prism-base
231
- 22 @arnilo/prism-code
232
- 23 @arnilo/prism-sdk
233
- 24 @arnilo/prism-all
225
+ 6 @arnilo/prism-evals
226
+ 7 @arnilo/prism-mcp
227
+ 8 @arnilo/prism-memory
228
+ 9 @arnilo/prism-observability-opentelemetry
229
+ 10 @arnilo/prism-provider-ai-sdk
230
+ 11 @arnilo/prism-provider-kimi
231
+ 12 @arnilo/prism-provider-neuralwatt
232
+ 13 @arnilo/prism-provider-openai
233
+ 14 @arnilo/prism-provider-opencode-go
234
+ 15 @arnilo/prism-provider-openrouter
235
+ 16 @arnilo/prism-provider-zai
236
+ 17 @arnilo/prism-session-store-postgres
237
+ 18 @arnilo/prism-session-store-sqlite
238
+ 19 @arnilo/prism-supervisor
239
+ 20 @arnilo/prism-tool-validator-json-schema
240
+ 21 @arnilo/prism-workflows
241
+ 22 @arnilo/prism-coding-security
242
+ 23 @arnilo/prism-compaction
243
+ 24 @arnilo/prism-providers
244
+ 25 @arnilo/prism-rag
245
+ 26 @arnilo/prism-server
246
+ 27 @arnilo/prism-base
247
+ 28 @arnilo/prism-code
248
+ 29 @arnilo/prism-sdk
249
+ 30 @arnilo/prism-all
234
250
  ```
235
251
 
236
252
  #### Interruption and resume
237
253
 
238
- 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.4` and `publish-report-v0.0.4` for audit.
254
+ 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.6` and `publish-report-v0.0.6` for audit.
239
255
 
240
256
  #### Bounded post-publish smoke
241
257
 
@@ -243,16 +259,21 @@ Download the workflow artifact and run `sha256sum -c SHA256SUMS`. Then verify al
243
259
 
244
260
  ```bash
245
261
  while read -r package; do
246
- test "$(npm view "$package@0.0.4" version)" = "0.0.4"
247
- test "$(npm view "$package" dist-tags.latest)" = "0.0.4"
248
- npm view "$package@0.0.4" dist.integrity >/dev/null
262
+ test "$(npm view "$package@0.0.6" version)" = "0.0.6"
263
+ test "$(npm view "$package" dist-tags.latest)" = "0.0.6"
264
+ npm view "$package@0.0.6" dist.integrity >/dev/null
249
265
  done <<'PACKAGES'
250
266
  @arnilo/prism
251
267
  @arnilo/prism-coding-agent
252
268
  @arnilo/prism-compaction-llm
253
269
  @arnilo/prism-compaction-observational-memory
254
270
  @arnilo/prism-credentials-node
271
+ @arnilo/prism-evals
255
272
  @arnilo/prism-mcp
273
+ @arnilo/prism-memory
274
+ @arnilo/prism-rag
275
+ @arnilo/prism-server
276
+ @arnilo/prism-supervisor
256
277
  @arnilo/prism-observability-opentelemetry
257
278
  @arnilo/prism-provider-kimi
258
279
  @arnilo/prism-provider-neuralwatt
@@ -276,7 +297,7 @@ PACKAGES
276
297
  consumer="$(mktemp -d)"
277
298
  cd "$consumer"
278
299
  npm init -y >/dev/null
279
- npm install --no-audit --no-fund @arnilo/prism-all@0.0.4
300
+ npm install --no-audit --no-fund @arnilo/prism-all@0.0.6
280
301
  node --input-type=module <<'NODE'
281
302
  for (const name of [
282
303
  "@arnilo/prism", "@arnilo/prism-coding-agent", "@arnilo/prism-coding-security",
@@ -285,7 +306,9 @@ for (const name of [
285
306
  "@arnilo/prism-provider-kimi", "@arnilo/prism-provider-neuralwatt", "@arnilo/prism-provider-openai",
286
307
  "@arnilo/prism-provider-opencode-go", "@arnilo/prism-provider-openrouter", "@arnilo/prism-provider-zai",
287
308
  "@arnilo/prism-session-store-postgres", "@arnilo/prism-session-store-sqlite",
288
- "@arnilo/prism-tool-validator-json-schema", "@arnilo/prism-workflows",
309
+ "@arnilo/prism-tool-validator-json-schema", "@arnilo/prism-workflows", "@arnilo/prism-evals",
310
+ "@arnilo/prism-provider-ai-sdk", "@arnilo/prism-memory", "@arnilo/prism-rag",
311
+ "@arnilo/prism-server", "@arnilo/prism-supervisor",
289
312
  ]) await import(name);
290
313
  NODE
291
314
  ./node_modules/.bin/prism --help >/dev/null
@@ -296,14 +319,14 @@ This smoke is bounded to registry metadata, imports, CLI startup, checksums, sig
296
319
 
297
320
  #### Rollback limitations
298
321
 
299
- 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.4`; restore `latest` to `0.0.3` only for the 13 previously published packages, and remove `latest` from the 11 first-publication packages. Exact `0.0.4` installs remain possible, so publish a fixed version promptly. Do not unpublish except for a security/legal emergency under npm policy.
322
+ 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.6`; restore `latest` to `0.0.3` only for the 13 previously published packages, and remove `latest` from the 11 first-publication packages. Exact `0.0.6` installs remain possible, so publish a fixed version promptly. Do not unpublish except for a security/legal emergency under npm policy.
300
323
 
301
324
  ## Extension and configuration notes
302
325
 
303
- - **Required `@arnilo/prism` peer.** Every first-party package declares `peerDependencies: { "@arnilo/prism": "0.0.4" }` with no `peerDependenciesMeta` (non-optional). The range stays pinned to `0.0.4` 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.
304
- - **Public access.** All 24 manifests (18 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.
326
+ - **Required `@arnilo/prism` peer.** Every first-party package declares `peerDependencies: { "@arnilo/prism": "0.0.6" }` with no `peerDependenciesMeta` (non-optional). The range stays pinned to `0.0.6` 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.
327
+ - **Public access.** All 30 manifests (24 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.
305
328
  - **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).
306
- - **Release workflow.** `.github/workflows/release.yml` has four jobs. `verify` runs the full SDK readiness gate on Node 24: `npm ci`, then `npm run sdk:ready` (`npm run typecheck`, network-free `npm test`, and `npm run pack:dry-run`). `node20-compat` runs on Node 20: `npm ci`, `npm run build`, then imports every public root `exports` default target from `dist/`. This proves published-package basics under declared `engines.node >=20` without docs examples, which require Node >=22.6 native TypeScript stripping. `postgres-integration` runs the PostgreSQL suite against `postgres:16`. `publish` runs only for exact `v*` tags after all three gates, checks clean/tagged state and the complete 0.0.4 graph, then publishes in topological order through `scripts/release.mjs`. The existing `NPM_TOKEN` GitHub secret is exposed only to the publish step; `id-token: write` also enables OIDC where configured. npm receives `--provenance --access public --tag latest`; no credential value is placed in source or output. Before publishing, CI packs all 24 tarballs, generates `SHA256SUMS`, and retains both pack manifests and artifacts for 30 days. Registry state is the resume journal: matching published packages are skipped, mismatches stop publication, and an incremental package-status report is also retained for 30 days. Local `npm run release:dry-run` delegates to `npm run sdk:ready`; local PostgreSQL coverage is `PRISM_TEST_POSTGRES_URL=... npm run test:postgres`.
329
+ - **Release workflow.** `.github/workflows/release.yml` has four jobs. `verify` runs the full SDK readiness gate on Node 24: `npm ci`, then `npm run sdk:ready` (`npm run typecheck`, network-free `npm test`, and `npm run pack:dry-run`). `node20-compat` runs on Node 20: `npm ci`, `npm run build`, then imports every public root `exports` default target from `dist/`. This proves published-package basics under declared `engines.node >=20` without docs examples, which require Node >=22.6 native TypeScript stripping. `postgres-integration` runs the PostgreSQL suite against `pgvector/pgvector:pg16`. `publish` runs only for exact `v*` tags after all three gates, checks clean/tagged state and the complete 0.0.6 graph, then publishes in topological order through `scripts/release.mjs`. The existing `NPM_TOKEN` GitHub secret is exposed only to the publish step; `id-token: write` also enables OIDC where configured. npm receives `--provenance --access public --tag latest`; no credential value is placed in source or output. Before publishing, CI packs all 30 tarballs, generates `SHA256SUMS`, and retains both pack manifests and artifacts for 30 days. Registry state is the resume journal: matching published packages are skipped, mismatches stop publication, and an incremental package-status report is also retained for 30 days. Local `npm run release:dry-run` delegates to `npm run sdk:ready`; local PostgreSQL coverage is `PRISM_TEST_POSTGRES_URL=... npm run test:postgres`.
307
330
  - **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.
308
331
 
309
332
  ## Security and performance notes
@@ -319,36 +342,34 @@ npm publication is not transactional and published versions are immutable. Parti
319
342
  - `OPENCODE_API_KEY` for `@arnilo/prism-provider-opencode-go`
320
343
  - `PRISM_LIVE_COMPACTION_TESTS=1` — gates `@arnilo/prism-compaction-llm`'s live summary-provider smoke test (placeholder).
321
344
  - `PRISM_LIVE_OBSERVATIONAL_MEMORY_TESTS=1` — gates `@arnilo/prism-compaction-observational-memory`'s live worker/provider checks (placeholder).
322
- - `PRISM_TEST_POSTGRES_URL` — gates `@arnilo/prism-session-store-postgres` integration tests (`runSessionStoreConformance` / `runRunLedgerConformance` against a real database). Local: `PRISM_TEST_POSTGRES_URL=... npm run test:postgres`. CI: `postgres-integration` job.
345
+ - `PRISM_TEST_POSTGRES_URL` — gates `@arnilo/prism-session-store-postgres` and `@arnilo/prism-memory` integration tests against a real database (memory path requires pgvector). Local: `PRISM_TEST_POSTGRES_URL=... npm run test:postgres`. CI: `postgres-integration` job with `pgvector/pgvector:pg16`.
323
346
  - `PRISM_TEST_KEYCHAIN=1` — gates `@arnilo/prism-credentials-node` system-keychain round-trips (requires a working OS keychain backend; skipped by default).
324
347
  - Provider live tests read the API key from the env only when both gates are set; the key is used as a bearer token and never logged. `assertNoSecretLeak` verifies the key value does not appear in any streamed event. The compaction placeholders still carry no real credentials.
325
348
  - Enforced by `network-free-guard.test.ts` (default suite stays network-free) and by source-scanning meta-tests that assert each `live.test.ts` keeps its `skip:` guard.
326
349
  - **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.
327
350
  - **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.
328
351
 
329
- ### 0.0.4 dependency audit decision (2026-07-14)
330
-
331
- `npm audit --audit-level=high` reports 0 vulnerabilities and `npm ls --all` is clean. Lockfile registry entries all carry integrity hashes and resolved registry URLs; direct/runtime dependency licenses are permissive. `@types/node` was updated within its declared Node 22 range from 22.19.21 to 22.20.1. No runtime dependency changed.
352
+ ### 0.0.6 dependency audit decision (2026-07-19)
332
353
 
333
- Major updates are deliberately deferred from this feature release: `diff` 8.0.4 → 9 requires coding-tool compatibility review, TypeScript 5.9.3 → 7 requires compiler/output review, and `@types/node` 22 → 26 would exceed the project's Node 20 support target. Revisit each in a dedicated dependency update after 0.0.4; none addresses a current audit finding. Native `better-sqlite3` is the sole dependency with an install hook and remains isolated in the opt-in SQLite package.
354
+ `npm audit --audit-level=high` reports 0 vulnerabilities and `npm ls --all --depth=0` resolves the exact 30-package `0.0.6` graph. No Phase 1 dependency was added. Native `better-sqlite3` remains the sole install-script dependency and stays in the opt-in SQLite package.
334
355
 
335
- ### 0.0.4 release-candidate verification — 2026-07-15
356
+ ### 0.0.6 release-candidate verification — 2026-07-19
336
357
 
337
- Release candidate was copied from the current repository file set into a fresh Git repository, committed, and verified from a clean tree. `npm ci` completed in 1 s and all build/test/pack operations left zero generated or modified files.
358
+ Phase 1 validation ran from this working tree without creating a release commit/tag or publishing. Clean protected-branch/tag checks remain mandatory in the handoff above.
338
359
 
339
360
  | Gate | Result |
340
361
  | --- | --- |
341
- | Node 24 full matrix | `npm test` 28.209 s; `npm run sdk:ready` 51.500 s; 1,475 tests (1,450 pass, 25 explicit live skips, 0 fail). The `< 60s` `npm test` budget and 5-minute SDK hang backstop hold. |
342
- | Node 20 compatibility | Node 20.20.2 clean `npm ci` + build; all 20 root export targets imported. Node 24.18.0 repeated the same 20-import smoke. |
343
- | PostgreSQL | Fresh `postgres:16` container; all 15 adapter integration tests passed with 0 skips/failures. |
344
- | Packed consumer | All 24 exact RC tarballs installed offline; 37 code-package/root-subpath imports loaded (six family/profile packages are manifest-only); `prism --help` exited successfully. |
345
- | Artifact contents | 24 tarballs, 539,285 packed bytes / 2,044,155 unpacked bytes. Core: 342,328 B; base/code/sdk/all: 998/995/1,001/1,393 B. Zero tests, source maps, source, plans, internal reports, fixtures, lockfiles, credential files, unsafe paths, or version/range/access mismatches. The small profile differences from the earlier working-tree snapshot are gzip-level only; unpacked sizes are unchanged. |
346
- | Reproducibility | A second clean tagged dry-run produced the same SHA-1 tarball shasum for all 24 packages. Registry preflight reported all 24 versions available. |
347
- | Supply chain | `npm audit --audit-level=high`: 0 vulnerabilities; `npm ls --all`: clean. CycloneDX 1.5 SBOM contains root plus 173 components with no missing/prohibited licenses. Pack manifests include SHA-1 and SHA-512 integrity; 28 SHA-256 checksums cover 24 tarballs, two pack manifests, RC manifest, and SBOM and all re-verify. Source/artifact private-key/token scans found 0 matches. |
348
- | Provenance | Clean exact `v0.0.4` publication dry-run completed 24/24 with explicit public/latest/provenance arguments and no publish. Signed npm provenance attestation is intentionally generated only by the OIDC publish job because creating it requires real registry publication. |
349
- | Performance baselines | Task 2 release measurements remain within ceilings: 500-delta ledger 1.19 ms; 500 JSONL appends 141.10 ms; cached schema validation 0.99 µs; six delayed tools 121.12 ms sequential / 60.92 ms at concurrency 2; SQLite 1,000 appends 31.84 ms; redaction 10,000 objects 4.79 ms; default scrypt/AES 48.09 ms; 1,000-node workflow 27.68 ms. |
350
-
351
- RC manifests, SBOM, checksums, and tarballs are retained as CI artifacts rather than committed generated files.
362
+ | Node 24 full matrix | `npm run sdk:ready` passed inside its five-minute backstop: 1,767 tests (1,742 pass, 25 explicit live skips, 0 fail), full typecheck/build, docs/export/install-smoke tests, and 30 dry-run packs. |
363
+ | Node 20 compatibility | Docker Node 20.20.2 built all workspaces and imported every public root export target. |
364
+ | PostgreSQL | Fresh `pgvector/pgvector:pg16` container: 17 session-store plus 14 memory/pgvector checks passed with 0 skips/failures. |
365
+ | Packed consumer | Offline install-smoke packed all 30 exact `0.0.6` tarballs into a fresh consumer, imported public surfaces, ran packed integration/composition journeys, and ran the generated `prism init` project. |
366
+ | Artifact contents | All 30 dry-run packs passed; core is 230 files, 445.5 kB packed, and 1.6 MB unpacked. Packaging guards reject tests, maps, source, plans, internal artifacts, and real-looking secrets. |
367
+ | Registry and order | Public-registry preflight found all 30 `@arnilo/*@0.0.6` versions available. Dependency-ordered `release:publish --dry-run` completed 30/30 with explicit public/latest/provenance arguments; no publish occurred. Core uses npm's valid `bin` path form `dist/cli.js`. |
368
+ | Supply chain | `npm audit --audit-level=high`: 0 vulnerabilities. `npm ls --all --depth=0`: clean. |
369
+ | Provenance | Signed npm provenance is generated only by real OIDC publication from the clean signed `v0.0.6` tag workflow. |
370
+ | Deferred live smokes | No provider credentials or external A2A endpoint were configured. `PRISM_TEST_KEYCHAIN=1` found no working system-keychain backend (native read returned no value after write); run that explicit round-trip on the release host before publication. |
371
+
372
+ The temporary PostgreSQL container and local dry-run report are not release artifacts. CI recreates and retains package manifests, checksums, and the publication report.
352
373
 
353
374
  ## Release checklist
354
375
 
@@ -362,7 +383,7 @@ Every release gate maps to an exact enforcement test or command, so the checklis
362
383
  | Root SDK export surface freeze | `public-export-contract.test.ts` `root export surface is frozen` snapshots every value and type export of `src/index.ts` (107 value + 69 type) so any add/remove is a deliberate test update; `every frozen value export resolves at runtime` rebuilds `dist/index.js` and asserts each value export is present (catches build drift), and `every frozen type export appears in the built type declarations` asserts each type export is in `dist/index.d.ts`. |
363
384
  | Examples compile and are listed; runnable demos execute | `npm run typecheck` runs `tsc -p examples --noEmit`; `docs.test.ts` checks every `examples/*.ts` file is listed in `examples/README.md`, then runs demos offline and scans output for secrets. |
364
385
  | Examples run to completion with no secret leakage | `docs.test.ts` `examples_demos_run_to_completion_and_emit_no_secret` runs each demo (Node strips TypeScript types natively) with exit-0 and real-secret scans; `external_app_example_*` pins the DB-backed adapter reference exercising the `RunLedger`, branch-handle checkout, fork, and prior-run resume. |
365
- | Tarball excludes built tests, source maps, and source | `packaging.test.ts` rejects `dist/__tests__/`, `*.map`, `src/`, `plans/`, and internal files; confirms every package ships README/changelog (and code packages ship LICENSE), core ships docs + CLI, exported targets exist (`dist/index.js` + `dist/index.d.ts` for NeuralWatt), and `prism-all` transitively reaches all 24 manifests. |
386
+ | Tarball excludes built tests, source maps, and source | `packaging.test.ts` rejects `dist/__tests__/`, `*.map`, `src/`, `plans/`, and internal files; confirms every package ships README/changelog (and code packages ship LICENSE), core ships docs + CLI, exported targets exist (`dist/index.js` + `dist/index.d.ts` for NeuralWatt), and `prism-all` transitively reaches all 30 published first-party manifests. |
366
387
  | NeuralWatt package/docs/examples release gate | `packaging.test.ts` pins `@arnilo/prism-provider-neuralwatt` package exports/type declarations and `@arnilo/prism-providers`/`@arnilo/prism-all` membership; `docs.test.ts` asserts `docs/index.md` links `providers/neuralwatt.md` and `provider-caching.md`, and that `examples/cache-aware-prompt-assembly.ts` plus `examples/neuralwatt-agent-run.ts` exist and are listed. |
367
388
  | Version graph and resumable publication | `release.test.ts` covers exact package/lock/range validation, topological order, registry collisions, dry-run, interrupted reports/resume, clean tagged git state, provenance/public/tag arguments, and token-safe errors. `release:check` and `release:publish` derive the workspace graph without a manual package list. |
368
389
  | Network-free + offline test budget | `network-free-guard.test.ts` keeps the default suite network-free; budget pinned `< 60s` (measured baseline above). Install-smoke is offline (`--offline --no-audit --no-fund`, zero registry fetches). |