@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.
- package/CHANGELOG.md +24 -0
- package/dist/agent-run-lifecycle.d.ts +5 -1
- package/dist/agent-run-lifecycle.js +17 -1
- package/dist/agents.d.ts +3 -1
- package/dist/agents.js +98 -20
- package/dist/contracts.d.ts +29 -1
- package/dist/extensions.d.ts +11 -0
- package/dist/extensions.js +15 -0
- package/dist/identity.d.ts +92 -0
- package/dist/identity.js +257 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +4 -2
- package/dist/persistence-lifecycle.d.ts +103 -0
- package/dist/persistence-lifecycle.js +204 -0
- package/dist/providers/openai-compatible.d.ts +5 -1
- package/dist/providers/openai-compatible.js +15 -6
- package/dist/secure-agent.js +7 -1
- package/dist/testing/persistence-schema.d.ts +2 -2
- package/dist/testing/persistence-schema.js +35 -2
- package/dist/tools.d.ts +2 -0
- package/dist/tools.js +6 -0
- package/docs/a2a.md +3 -0
- package/docs/ag-ui.md +123 -0
- package/docs/agent-events.md +2 -1
- package/docs/agent-identity.md +111 -0
- package/docs/agent-session-runtime.md +5 -1
- package/docs/coding-agent-tools.md +2 -0
- package/docs/compaction-and-retry.md +2 -1
- package/docs/compaction-llm.md +20 -1
- package/docs/credential-storage.md +5 -1
- package/docs/credentials-and-redaction.md +8 -0
- package/docs/database-persistence.md +18 -7
- package/docs/extensions.md +1 -0
- package/docs/guardrails.md +3 -0
- package/docs/host-security.md +7 -1
- package/docs/index.md +25 -14
- package/docs/mcp-tools.md +2 -0
- package/docs/migration.md +43 -0
- package/docs/model-routing.md +102 -0
- package/docs/observability.md +2 -0
- package/docs/performance.md +38 -0
- package/docs/policy-and-audit.md +127 -0
- package/docs/postgres-persistence.md +1 -1
- package/docs/provider-packages.md +17 -0
- package/docs/provider-request-policies.md +2 -0
- package/docs/providers/anthropic.md +3 -2
- package/docs/providers/azure.md +74 -0
- package/docs/providers/bedrock.md +72 -0
- package/docs/providers/google.md +4 -2
- package/docs/providers/openai-compatible.md +3 -1
- package/docs/providers/openai.md +2 -2
- package/docs/providers/openrouter.md +2 -0
- package/docs/providers/vertex.md +71 -0
- package/docs/public-contracts.md +5 -1
- package/docs/release-and-install.md +167 -17
- package/docs/review-coverage-2026-07-22-phase-7.md +173 -0
- package/docs/review-coverage-2026-07-23-phase-8.md +245 -0
- package/docs/runs-and-usage.md +3 -0
- package/docs/server.md +34 -4
- package/docs/sqlite-persistence.md +1 -1
- package/docs/supervisors.md +2 -0
- package/docs/work-connectors.md +28 -0
- package/docs/work-tools.md +114 -0
- 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,
|
|
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
|
+
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
|
|
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.
|
|
71
|
-
| Preview deterministic publish order | `npm run release:publish -- --version 0.0.
|
|
72
|
-
| Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.
|
|
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.
|
|
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.
|
|
129
|
-
"@arnilo/prism-provider-openai": "0.0.
|
|
130
|
-
"@arnilo/prism-compaction-observational-memory": "0.0.
|
|
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.
|
|
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.
|
|
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.
|
|
177
|
-
npm run release:publish -- --version 0.0.
|
|
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.
|
|
469
|
-
- **Public access.** All
|
|
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.
|