@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.
- package/CHANGELOG.md +11 -0
- package/dist/agents.js +21 -2
- package/dist/contracts.d.ts +25 -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 +6 -2
- package/dist/index.js +3 -1
- 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 +2 -0
- package/docs/agent-identity.md +111 -0
- package/docs/credential-storage.md +3 -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 +5 -1
- package/docs/index.md +17 -8
- package/docs/mcp-tools.md +2 -0
- package/docs/migration.md +27 -0
- package/docs/model-routing.md +102 -0
- package/docs/observability.md +2 -0
- package/docs/performance.md +19 -0
- package/docs/policy-and-audit.md +127 -0
- package/docs/postgres-persistence.md +1 -1
- package/docs/provider-packages.md +8 -1
- package/docs/provider-request-policies.md +2 -0
- package/docs/providers/azure.md +74 -0
- package/docs/providers/bedrock.md +72 -0
- package/docs/providers/google.md +1 -0
- package/docs/providers/openai-compatible.md +3 -1
- package/docs/providers/openrouter.md +2 -0
- package/docs/providers/vertex.md +71 -0
- package/docs/public-contracts.md +3 -1
- package/docs/release-and-install.md +78 -6
- package/docs/review-coverage-2026-07-23-phase-8.md +245 -0
- package/docs/runs-and-usage.md +2 -0
- package/docs/server.md +33 -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 +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)
|
package/docs/providers/google.md
CHANGED
|
@@ -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)
|
package/docs/public-contracts.md
CHANGED
|
@@ -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
|
|
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,
|
|
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.
|
|
@@ -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
|
|
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.
|
|
535
|
-
- **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.
|
|
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.
|