@arnilo/prism 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/agents.js +21 -2
  3. package/dist/contracts.d.ts +25 -1
  4. package/dist/extensions.d.ts +11 -0
  5. package/dist/extensions.js +15 -0
  6. package/dist/identity.d.ts +92 -0
  7. package/dist/identity.js +257 -0
  8. package/dist/index.d.ts +6 -2
  9. package/dist/index.js +3 -1
  10. package/dist/persistence-lifecycle.d.ts +103 -0
  11. package/dist/persistence-lifecycle.js +204 -0
  12. package/dist/providers/openai-compatible.d.ts +5 -1
  13. package/dist/providers/openai-compatible.js +15 -6
  14. package/dist/secure-agent.js +7 -1
  15. package/dist/testing/persistence-schema.d.ts +2 -2
  16. package/dist/testing/persistence-schema.js +35 -2
  17. package/dist/tools.d.ts +2 -0
  18. package/dist/tools.js +6 -0
  19. package/docs/a2a.md +2 -0
  20. package/docs/agent-identity.md +111 -0
  21. package/docs/credential-storage.md +3 -0
  22. package/docs/database-persistence.md +18 -7
  23. package/docs/extensions.md +1 -0
  24. package/docs/guardrails.md +3 -0
  25. package/docs/host-security.md +5 -1
  26. package/docs/index.md +17 -8
  27. package/docs/mcp-tools.md +2 -0
  28. package/docs/migration.md +27 -0
  29. package/docs/model-routing.md +102 -0
  30. package/docs/observability.md +2 -0
  31. package/docs/performance.md +19 -0
  32. package/docs/policy-and-audit.md +127 -0
  33. package/docs/postgres-persistence.md +1 -1
  34. package/docs/provider-packages.md +8 -1
  35. package/docs/provider-request-policies.md +2 -0
  36. package/docs/providers/azure.md +74 -0
  37. package/docs/providers/bedrock.md +72 -0
  38. package/docs/providers/google.md +1 -0
  39. package/docs/providers/openai-compatible.md +3 -1
  40. package/docs/providers/openrouter.md +2 -0
  41. package/docs/providers/vertex.md +71 -0
  42. package/docs/public-contracts.md +3 -1
  43. package/docs/release-and-install.md +78 -6
  44. package/docs/review-coverage-2026-07-23-phase-8.md +245 -0
  45. package/docs/runs-and-usage.md +2 -0
  46. package/docs/server.md +33 -4
  47. package/docs/sqlite-persistence.md +1 -1
  48. package/docs/supervisors.md +2 -0
  49. package/docs/work-connectors.md +28 -0
  50. package/docs/work-tools.md +114 -0
  51. package/package.json +4 -1
@@ -0,0 +1,74 @@
1
+ # Azure OpenAI / Foundry
2
+
3
+ ## What it does
4
+
5
+ `@arnilo/prism-provider-azure` registers an Azure OpenAI / Foundry Chat Completions provider that uses host-supplied Entra workload identity (Bearer) or Azure resource keys (`api-key`). Deployment URLs keep the configured endpoint host (custom subdomain, private endpoint, or VNet FQDN).
6
+
7
+ ## When to use it
8
+
9
+ Use it for enterprise Azure OpenAI / Foundry deployments with Managed Identity or host token providers. Do not fold this into consumer OpenAI packages. Do not embed static keys in fixtures.
10
+
11
+ ## Inputs / request
12
+
13
+ ```ts
14
+ import { createAzureOpenAIProviderPackage } from "@arnilo/prism-provider-azure";
15
+
16
+ createAzureOpenAIProviderPackage({
17
+ endpoint: "https://my-resource.openai.azure.com",
18
+ deployment: "gpt-4o",
19
+ apiVersion: "2024-10-21",
20
+ credential: hostEntraToken, // late-bound
21
+ authStyle: "bearer",
22
+ models: [{ provider: "azure", model: "gpt-4o" }],
23
+ });
24
+ ```
25
+
26
+ | Field | Meaning |
27
+ | --- | --- |
28
+ | `endpoint` | Absolute https resource URL; host preserved |
29
+ | `deployment` | Deployment name (defaults to `model.model`) |
30
+ | `apiVersion` | Query `api-version` (default `2024-10-21`) |
31
+ | `credential` | `CredentialValueSource` — Entra token or resource key |
32
+ | `authStyle` | `bearer` (default) or `api-key` |
33
+
34
+ ## Outputs / response / events
35
+
36
+ Reuses `@arnilo/prism/providers/openai-compatible` streaming events (text, tool deltas, usage, done, redacted errors). Missing credentials fail closed before `fetch`.
37
+
38
+ ## Request/response example
39
+
40
+ ```http
41
+ POST https://my-resource.privatelink.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-10-21
42
+ Authorization: Bearer <entra-token>
43
+ ```
44
+
45
+ ## Implementation example
46
+
47
+ ```ts
48
+ const provider = createAzureOpenAIProvider({
49
+ endpoint: process.env.AZURE_OPENAI_ENDPOINT!,
50
+ deployment: "gpt-4o",
51
+ credential: () => entra.getToken("https://cognitiveservices.azure.com/.default").then((t) => t.token),
52
+ });
53
+ ```
54
+
55
+ Opt-in live canaries: inject real `fetch` + host credential behind host CI secrets — no secrets in repo.
56
+
57
+ ## Extension and configuration notes
58
+
59
+ Register via `createExtensionKernel().load([createAzureOpenAIProviderPackage(...)])`. Pair with `@arnilo/prism-model-router` for residency allow-lists on Azure regions/endpoints.
60
+
61
+ ## Security and performance notes
62
+
63
+ - No credential prefetch at import; resolve per request.
64
+ - Endpoint host is never rewritten to public DNS.
65
+ - Errors redact credential values via shared transport helpers.
66
+ - No Azure SDK dependency.
67
+
68
+ ## Related APIs
69
+
70
+ - [OpenAI-compatible provider](openai-compatible.md)
71
+ - [Provider packages](../provider-packages.md)
72
+ - [Model routing](../model-routing.md)
73
+ - [Credential storage](../credential-storage.md)
74
+ - Package README: [`@arnilo/prism-provider-azure`](../../packages/provider-azure/README.md)
@@ -0,0 +1,72 @@
1
+ # Amazon Bedrock
2
+
3
+ ## What it does
4
+
5
+ `@arnilo/prism-provider-bedrock` registers an Amazon Bedrock Runtime OpenAI-compatible Chat Completions provider. Hosts supply IAM/IRSA/assumed-role credentials; the package signs requests with SigV4 (no AWS SDK). Region and optional PrivateLink endpoint URLs are preserved.
6
+
7
+ ## When to use it
8
+
9
+ Use it for enterprise Bedrock access under workload identity. Do not embed long-lived keys in fixtures. Use model-router residency policy to deny disallowed regions.
10
+
11
+ ## Inputs / request
12
+
13
+ ```ts
14
+ import { createBedrockProviderPackage } from "@arnilo/prism-provider-bedrock";
15
+
16
+ createBedrockProviderPackage({
17
+ region: "eu-west-1",
18
+ // endpoint: "https://vpce-….bedrock-runtime.eu-west-1.vpce.amazonaws.com",
19
+ credential: () => hostAwsCredentials(),
20
+ models: [{ provider: "bedrock", model: "anthropic.claude-3-haiku-20240307-v1:0" }],
21
+ });
22
+ ```
23
+
24
+ | Field | Meaning |
25
+ | --- | --- |
26
+ | `region` | AWS region for signing + default endpoint |
27
+ | `endpoint` | Optional https PrivateLink / VPC interface base URL |
28
+ | `credential` | `{ accessKeyId, secretAccessKey, sessionToken? }` or async callback |
29
+ | `signRequest` | Optional host SigV4 override |
30
+
31
+ Default public base: `https://bedrock-runtime.{region}.amazonaws.com` → `/openai/v1/chat/completions`.
32
+
33
+ ## Outputs / response / events
34
+
35
+ OpenAI-compatible SSE mapped to Prism provider events. Missing credentials fail closed before network I/O.
36
+
37
+ ## Request/response example
38
+
39
+ ```http
40
+ POST https://bedrock-runtime.eu-west-1.amazonaws.com/openai/v1/chat/completions
41
+ Authorization: AWS4-HMAC-SHA256 Credential=…/eu-west-1/bedrock/aws4_request, …
42
+ X-Amz-Security-Token: …
43
+ ```
44
+
45
+ ## Implementation example
46
+
47
+ ```ts
48
+ const provider = createBedrockProvider({
49
+ region: "us-east-1",
50
+ credential: async () => fromNodeProviderChain()(),
51
+ });
52
+ ```
53
+
54
+ Live canaries stay opt-in behind host credentials; default tests are network-free.
55
+
56
+ ## Extension and configuration notes
57
+
58
+ Uses Bedrock’s OpenAI-compatible runtime route (not Converse eventstream). Hosts needing Converse-only models should supply a custom provider or AI SDK bridge.
59
+
60
+ ## Security and performance notes
61
+
62
+ - No AWS SDK; package-local SigV4 only for `bedrock` service.
63
+ - Private endpoint hosts are not rewritten to public DNS.
64
+ - Credential secrets are redacted from provider errors.
65
+ - No credential prefetch at import.
66
+
67
+ ## Related APIs
68
+
69
+ - [OpenAI-compatible provider](openai-compatible.md)
70
+ - [Model routing](../model-routing.md)
71
+ - [Provider packages](../provider-packages.md)
72
+ - Package README: [`@arnilo/prism-provider-bedrock`](../../packages/provider-bedrock/README.md)
@@ -82,6 +82,7 @@ api.registerProviderPackage(createGoogleProviderPackage({ apiKey: hostKey, model
82
82
 
83
83
  ## Related APIs
84
84
 
85
+ - [Google Vertex AI](vertex.md): enterprise ADC/workload-identity package (separate from this consumer API-key package).
85
86
  - [Provider packages](../provider-packages.md): package setup + discovery contract.
86
87
  - [Thinking and reasoning](../thinking-and-reasoning.md): portable thinking helpers.
87
88
  - [Provider conformance](../provider-conformance.md): network-free assertions.
@@ -27,9 +27,11 @@ Options:
27
27
  | Field | Type | Purpose |
28
28
  | --- | --- | --- |
29
29
  | `id` | `string` | Optional provider id. Defaults to `openai-compatible`. |
30
- | `baseUrl` | `string` | Base API URL; `/chat/completions` is appended. |
30
+ | `baseUrl` | `string` | Base API URL; `/chat/completions` is appended unless `chatCompletionsUrl` is set. |
31
31
  | `apiKey` | `CredentialValueSource` | Optional direct/callback/resolver credential source. |
32
32
  | `fetch` | `typeof fetch` | Optional fetch implementation for tests or custom hosts. |
33
+ | `chatCompletionsUrl` | `string \| ((request) => string)` | Optional full chat-completions URL override (Azure deployment paths). |
34
+ | `authStyle` | `"bearer" \| "api-key" \| "none"` | Auth header style. Default `bearer`. |
33
35
 
34
36
  Provider requests use the standard `ProviderRequest` shape: `model`, `messages`, optional `tools`, `metadata`, and `signal`.
35
37
 
@@ -188,9 +188,11 @@ cache-read pricing exists), and seeds `compat.reasoning.effort` from
188
188
  hidden app identity.
189
189
  - Live tests stay opt-in behind `PRISM_LIVE_PROVIDER_TESTS=1` plus fake-safe
190
190
  provider-specific env names; default tests are network-free.
191
+ - Enterprise hosts that must gate `compat.openRouterRouting` should wrap selection with `@arnilo/prism-model-router` (`allowOpenRouterRouting`); the OpenRouter adapter itself still passthroughs routing when present on the request.
191
192
 
192
193
  ## Related APIs
193
194
 
195
+ - [Model routing](../model-routing.md): optional allow-list/residency/budget/circuit facade and OpenRouter routing gate.
194
196
  - [Provider packages](../provider-packages.md): `defineProviderPackage`,
195
197
  `ModelConfig`/`compat`, cache policy, caller-gated discovery.
196
198
  - [Thinking and reasoning](../thinking-and-reasoning.md): `applyThinkingLevel`
@@ -0,0 +1,71 @@
1
+ # Google Vertex AI
2
+
3
+ ## What it does
4
+
5
+ `@arnilo/prism-provider-vertex` registers a Vertex AI OpenAPI-compatible Chat Completions provider authenticated with host ADC / workload identity tokens. It is intentionally separate from `@arnilo/prism-provider-google` (consumer Gemini API keys).
6
+
7
+ ## When to use it
8
+
9
+ Use it for GCP enterprise Vertex deployments with Application Default Credentials or workload identity federation. Do not use the consumer Google package for Vertex auth semantics.
10
+
11
+ ## Inputs / request
12
+
13
+ ```ts
14
+ import { createVertexProviderPackage } from "@arnilo/prism-provider-vertex";
15
+
16
+ createVertexProviderPackage({
17
+ projectId: "my-gcp-project",
18
+ location: "europe-west1",
19
+ credential: () => hostAdcAccessToken(),
20
+ models: [{ provider: "vertex", model: "google/gemini-2.0-flash-001" }],
21
+ });
22
+ ```
23
+
24
+ | Field | Meaning |
25
+ | --- | --- |
26
+ | `projectId` | GCP project |
27
+ | `location` | Vertex location / region |
28
+ | `endpoint` | Optional full https OpenAPI base (private/custom); otherwise location-scoped default |
29
+ | `credential` | Bearer access token source (ADC / WIF) |
30
+
31
+ Default base: `https://{location}-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/openapi`.
32
+
33
+ ## Outputs / response / events
34
+
35
+ OpenAI-compatible SSE → Prism provider events. Missing ADC token fails closed before `fetch`.
36
+
37
+ ## Request/response example
38
+
39
+ ```http
40
+ POST https://europe-west1-aiplatform.googleapis.com/v1/projects/my-gcp-project/locations/europe-west1/endpoints/openapi/chat/completions
41
+ Authorization: Bearer <adc-token>
42
+ ```
43
+
44
+ ## Implementation example
45
+
46
+ ```ts
47
+ const provider = createVertexProvider({
48
+ projectId: "my-gcp-project",
49
+ location: "us-central1",
50
+ credential: async () => (await GoogleAuth.getAccessToken()),
51
+ });
52
+ ```
53
+
54
+ ## Extension and configuration notes
55
+
56
+ `@arnilo/prism-provider-google` remains API-key Gemini (`generativelanguage.googleapis.com`) and must not register Vertex OAuth/ADC. Load this package explicitly for Vertex.
57
+
58
+ ## Security and performance notes
59
+
60
+ - No Google Cloud SDK dependency in the package.
61
+ - Custom/private endpoint hosts are preserved.
62
+ - Tokens redacted from errors; no import-time credential prefetch.
63
+ - Pair with model-router residency allow-lists on `location`.
64
+
65
+ ## Related APIs
66
+
67
+ - [Google Gemini (consumer)](google.md)
68
+ - [OpenAI-compatible provider](openai-compatible.md)
69
+ - [Provider packages](../provider-packages.md)
70
+ - [Model routing](../model-routing.md)
71
+ - Package README: [`@arnilo/prism-provider-vertex`](../../packages/provider-vertex/README.md)
@@ -15,7 +15,8 @@ Current contract groups:
15
15
  - Extensions/middleware: `ExtensionLifecycleEventName`, `ExtensionEvent`, `Extension`, `ExtensionAPI`, `MiddlewareHookName`, `Middleware`, `MiddlewareNext`, `MiddlewareRegistry`
16
16
  - Configuration/manifests: `ConfigProvider`, `ConfigLayer`, `ConfigLoadContext`, `PrismManifest`, `ManifestContributionDeclaration`, `ManifestResourceDeclaration`, `ManifestContributionKind`
17
17
  - Stores/resources/settings/credentials/compaction/retry/cache helpers: `SessionEntry`, `SessionStore`, `StoreFactory`, `Resource`, `ResourceLoader`, `ResourceLoadContext`, `SettingsProvider`, `CredentialRequest`, `Credential`, `CredentialResolver`, `CompactionStrategy`, `CompactionContext`, `CompactionResult`, `CompactionOptions`, `CompactionMiddlewarePayload`, `CompactionEntryData`, `DefaultCompactionStrategyOptions`, `RetryPolicy`, `RetryContext`, `RetryDecision`, `RetryOptions`, `RetryMiddlewarePayload`, `DefaultRetryPolicyOptions`, `CacheUsageReport`, `sanitizeCacheKey`, `mapCacheRetention`, `applyCacheControl`, `cacheHitRate`, `cacheSavings`, `cacheUsageReport`
18
- - Production persistence (adapter-facing): `ProductionPersistenceStore`, `CheckpointStore`, `CheckpointKey`, `CheckpointSaveInput`, `CheckpointRecord`, `CheckpointQuery`, `LeaseStore`, `LeaseKey`, `LeaseAcquireInput`, `LeaseClaimInput`, `LeaseRecord`, `PersistencePage`, `PersistenceQuery`, `OwnershipScope`, `SessionRecord`, `SessionQuery`, `BranchRecord`, `BranchQuery`, `SessionEntryQuery`, `RunRecord`, `RunQuery`, `RunFeedbackRecord`, `RunFeedbackStore`, `RunFeedbackQuery`, `AgentEventRecord`, `AgentEventQuery`, `ToolCallRecord`, `ToolCallQuery`, `UsageRecord`, `UsageQuery`, `AgentDefinitionRecord`, `AgentDefinitionQuery`, `RetentionPolicy`, `RetentionPolicyQuery`, `MigrationRecord`, `MigrationQuery`
18
+ - Production persistence (adapter-facing): `ProductionPersistenceStore` (optional `lifecycle`), `CheckpointStore`, `CheckpointKey`, `CheckpointSaveInput`, `CheckpointRecord`, `CheckpointQuery`, `LeaseStore`, `LeaseKey`, `LeaseAcquireInput`, `LeaseClaimInput`, `LeaseRecord`, `PersistencePage`, `PersistenceQuery`, `OwnershipScope`, `SessionRecord`, `SessionQuery`, `BranchRecord`, `BranchQuery`, `SessionEntryQuery`, `RunRecord`, `RunQuery`, `RunFeedbackRecord`, `RunFeedbackStore`, `RunFeedbackQuery`, `AgentEventRecord`, `AgentEventQuery`, `ToolCallRecord`, `ToolCallQuery`, `UsageRecord`, `UsageQuery`, `AgentDefinitionRecord`, `AgentDefinitionQuery`, `RetentionPolicy`, `RetentionPolicyQuery`, `MigrationRecord`, `MigrationQuery`, `PersistenceLifecycleStore`, `LegalHoldRecord`, `TenantQuota`
19
+ - Identity: `Principal`, `AgentIdentity`, `IdentityVerifier`, `assertIdentityActive`, `narrowIdentity`, `ownershipFromIdentity`, `assertIdentityMatchesOwnership`, `assertIdentityPropagation`, `identityTelemetryAttributes`, `resolveRunIdentity`, `IdentityError`, identity limit constants
19
20
 
20
21
  ## When to use it
21
22
 
@@ -165,6 +166,7 @@ Important request shapes:
165
166
  | `CacheUsageReport` | Numeric cache diagnostics from normalized `Usage`: read/write tokens, hit rate, estimated savings, and optional currency. |
166
167
  | `AgentDefinitionRecord` / `AgentDefinitionQuery` | Versioned agent-definition snapshot and filters. Does not store credentials or provider instances. |
167
168
  | `RetentionPolicy` / `RetentionPolicyQuery` | Retention policy and filters: age, entry count, byte limits, archive store, applied kinds. |
169
+ | `PersistenceLifecycleStore` / `LegalHoldRecord` / `TenantQuota` | Optional hold/retention apply/export/quota capability on `ProductionPersistenceStore.lifecycle`. |
168
170
  | `MigrationRecord` / `MigrationQuery` | Applied migration record and filters. |
169
171
 
170
172
  ## Outputs / response / events
@@ -2,15 +2,19 @@
2
2
 
3
3
  ## What it does
4
4
 
5
- Prism is published as one core package, twenty-eight first-party capability packages, and six pure-manifest family/profile packages. This page describes how they are packed, what each tarball contains, how to install them, the required `@arnilo/prism` peer dependency, the release workflow, and the offline test budget.
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.12` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
11
+ First-party workspace packages (each has non-optional `@arnilo/prism@0.0.13` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
12
12
 
13
13
  - `@arnilo/prism-provider-anthropic`, `@arnilo/prism-provider-google`, `@arnilo/prism-provider-openai`, `@arnilo/prism-provider-openrouter`, `@arnilo/prism-provider-kimi`, `@arnilo/prism-provider-zai`, `@arnilo/prism-provider-opencode-go`, `@arnilo/prism-provider-neuralwatt` — provider adapters.
14
+ - `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-vertex` — optional enterprise-cloud adapters (Entra/IAM/ADC; separate from consumer Anthropic/Google).
15
+ - `@arnilo/prism-policy` — optional policy-decision ledger and cursor-paginated audit export.
16
+ - `@arnilo/prism-model-router` — optional model governance router (allow-list, residency, budgets, circuits, fallbacks) over `ProviderResolver`.
17
+ - `@arnilo/prism-work-tools` — optional identity-scoped M365/GWS connectors (`./microsoft365`, `./google-workspace`); host-pinned CLI argv only.
14
18
  - `@arnilo/prism-provider-ai-sdk` — optional AI SDK `LanguageModelV4` adapter; included by the provider and all umbrellas.
15
19
  - `@arnilo/prism-compaction-llm` — optional LLM-backed compaction strategy.
16
20
  - `@arnilo/prism-compaction-observational-memory` — optional source-backed observational memory.
@@ -42,9 +46,9 @@ Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and
42
46
  - `@arnilo/prism-code` — base + coding-agent + coding-security + MCP; providers and persistence remain explicit choices.
43
47
  - `@arnilo/prism-sdk` — base + workflows + MCP + Node credentials + OpenTelemetry; providers and persistence remain explicit choices.
44
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.
45
- - `@arnilo/prism-all` — every first-party package: code + SDK + providers + persistence + evals + memory/RAG + server + supervisor + web tools + browser. Installation alone activates no network/listener, telemetry, database, memory, evaluation, delegation, MCP, shell, filesystem, or browser capability.
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.
46
50
 
47
- Profile footprint snapshot (Node 24/npm 11, lockfile graph, 2026-07-19): `base` reaches 6 first-party packages and one external dependency root (Ajv); `code` reaches 10 and three (Ajv, MCP SDK, diff); `sdk` reaches 11 and three (Ajv, MCP SDK, keyring); `all` reaches all 35 first-party manifests; AG-UI adds only its protocol SDK dependencies while native database drivers remain all-profile-only. Native database drivers stay out of base/code/sdk; both appear only in all.
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.
48
52
 
49
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`.
50
54
 
@@ -191,6 +195,74 @@ Optional live smoke tests stay separate from SDK readiness because they require
191
195
  PRISM_LIVE_PROVIDER_TESTS=1 npm run test --workspaces --if-present
192
196
  ```
193
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
+
194
266
  ### 0.0.12 publish handoff
195
267
 
196
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.
@@ -531,8 +603,8 @@ npm publication is not transactional and published versions are immutable. Parti
531
603
 
532
604
  ## Extension and configuration notes
533
605
 
534
- - **Required `@arnilo/prism` peer.** Every first-party code package declares a non-optional `@arnilo/prism@0.0.12` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.12` for the current 0.x release and will widen to `^1.0.0` at the 1.x stable release. Inside the workspace each package also declares `"@arnilo/prism": "file:../.."` in `devDependencies` so `npm install` resolves the peer locally; that devDependency is stripped from consumer installs and is not a runtime dependency.
535
- - **Public access.** All 35 manifests (29 code packages + 6 family/profile packages) declare `"publishConfig": { "access": "public" }`; the publisher also passes `--access public` explicitly because scoped packages otherwise default to restricted on first publish.
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.
536
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).
537
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`.
538
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.