@arnilo/prism 0.0.96 → 0.1.1
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 +290 -2
- package/README.md +17 -3
- package/dist/agent-definitions.js +2 -3
- package/dist/agent-event-source.d.ts +11 -0
- package/dist/agent-event-source.js +512 -0
- package/dist/agent-loops.d.ts +5 -0
- package/dist/agent-loops.js +99 -14
- package/dist/agent-run-lifecycle.d.ts +5 -2
- package/dist/agent-run-lifecycle.js +18 -2
- package/dist/agent-run-state.d.ts +27 -1
- package/dist/agent-run-state.js +113 -7
- package/dist/agents.d.ts +3 -1
- package/dist/agents.js +1255 -129
- package/dist/artifacts.d.ts +132 -0
- package/dist/artifacts.js +44 -0
- package/dist/cache-helpers.js +18 -9
- package/dist/checkpoints.d.ts +4 -0
- package/dist/checkpoints.js +17 -9
- package/dist/cli-init.js +3 -7
- package/dist/cli-runner.d.ts +2 -6
- package/dist/cli-runner.js +71 -33
- package/dist/compaction.js +5 -4
- package/dist/config.js +7 -4
- package/dist/content.js +26 -24
- package/dist/context-budget.d.ts +67 -0
- package/dist/context-budget.js +288 -0
- package/dist/contracts.d.ts +590 -8
- package/dist/contracts.js +142 -1
- package/dist/contribution-parsing.js +6 -2
- package/dist/contributions.d.ts +2 -0
- package/dist/contributions.js +3 -0
- package/dist/conversations.d.ts +50 -0
- package/dist/conversations.js +98 -0
- package/dist/credentials.d.ts +22 -2
- package/dist/credentials.js +18 -3
- package/dist/devices.d.ts +94 -0
- package/dist/devices.js +138 -0
- package/dist/event-multiplexer.js +18 -4
- package/dist/extensions.d.ts +18 -1
- package/dist/extensions.js +79 -6
- package/dist/feedback.js +12 -10
- package/dist/guardrails.d.ts +1 -1
- package/dist/guardrails.js +26 -17
- package/dist/identity.d.ts +92 -0
- package/dist/identity.js +265 -0
- package/dist/index.d.ts +94 -72
- package/dist/index.js +48 -36
- package/dist/input.d.ts +10 -1
- package/dist/input.js +152 -52
- package/dist/instruction-injection.d.ts +1 -1
- package/dist/middleware.js +9 -1
- package/dist/models.d.ts +2 -0
- package/dist/models.js +3 -0
- package/dist/node/agent-definitions.js +16 -8
- package/dist/node/contribution-discovery.d.ts +1 -2
- package/dist/node/contribution-discovery.js +3 -3
- package/dist/node/session-store-jsonl.js +13 -7
- package/dist/node/settings.d.ts +1 -1
- package/dist/node/settings.js +1 -1
- package/dist/node/system-project-prompts.js +2 -4
- package/dist/node/trust.js +1 -1
- package/dist/persistence-lifecycle.d.ts +103 -0
- package/dist/persistence-lifecycle.js +202 -0
- package/dist/provider-events.d.ts +1 -0
- package/dist/provider-events.js +6 -1
- package/dist/provider-request-policy.js +3 -4
- package/dist/providers/media.d.ts +1 -1
- package/dist/providers/openai-compatible.d.ts +46 -1
- package/dist/providers/openai-compatible.js +123 -53
- package/dist/providers/openai-primitives.js +10 -7
- package/dist/providers/transport.d.ts +6 -0
- package/dist/providers/transport.js +21 -0
- package/dist/providers.d.ts +2 -0
- package/dist/providers.js +3 -0
- package/dist/redaction.d.ts +1 -0
- package/dist/redaction.js +26 -9
- package/dist/resources.d.ts +2 -2
- package/dist/resources.js +2 -2
- package/dist/retry.d.ts +5 -0
- package/dist/retry.js +8 -1
- package/dist/rpc.js +55 -11
- package/dist/run-ledger.d.ts +6 -0
- package/dist/run-ledger.js +16 -13
- package/dist/run-limits.js +49 -10
- package/dist/secure-agent.js +8 -2
- package/dist/security.js +7 -2
- package/dist/session-stores.d.ts +7 -2
- package/dist/session-stores.js +195 -21
- package/dist/skill-disclosure.d.ts +35 -0
- package/dist/skill-disclosure.js +101 -0
- package/dist/skill-load.d.ts +25 -0
- package/dist/skill-load.js +112 -0
- package/dist/structured-output.d.ts +5 -1
- package/dist/structured-output.js +20 -2
- package/dist/system-prompts.js +7 -2
- package/dist/testing/agent-event-source-conformance.d.ts +4 -0
- package/dist/testing/agent-event-source-conformance.js +54 -0
- package/dist/testing/compaction-conformance.js +5 -1
- package/dist/testing/extension-conformance.js +15 -3
- package/dist/testing/feedback.d.ts +1 -3
- package/dist/testing/feedback.js +1 -1
- package/dist/testing/persistence-schema.d.ts +2 -2
- package/dist/testing/persistence-schema.js +280 -35
- package/dist/testing/provider-conformance.js +3 -3
- package/dist/testing/run-ledger-conformance.js +1 -1
- package/dist/testing/session-store-conformance.d.ts +6 -0
- package/dist/testing/session-store-conformance.js +37 -2
- package/dist/testing/tool-conformance.js +30 -5
- package/dist/testing/tool-effect-store-conformance.d.ts +9 -0
- package/dist/testing/tool-effect-store-conformance.js +85 -0
- package/dist/thinking.js +4 -1
- package/dist/tool-effects.d.ts +15 -0
- package/dist/tool-effects.js +352 -0
- package/dist/tool-result-fold.d.ts +40 -0
- package/dist/tool-result-fold.js +176 -0
- package/dist/tools.d.ts +8 -3
- package/dist/tools.js +248 -13
- package/docs/0.1.0-readiness.md +215 -0
- package/docs/a2a.md +33 -2
- package/docs/acp.md +152 -0
- package/docs/ag-ui-adoption.md +77 -0
- package/docs/ag-ui.md +225 -0
- package/docs/agent-events.md +34 -3
- package/docs/agent-identity.md +144 -0
- package/docs/agent-loops.md +17 -2
- package/docs/agent-session-runtime.md +21 -4
- package/docs/browser-automation.md +5 -0
- package/docs/caveman.md +129 -0
- package/docs/cli-rpc.md +3 -6
- package/docs/coding-agent-tools.md +229 -25
- package/docs/coding-security.md +77 -11
- package/docs/compaction-and-retry.md +5 -2
- package/docs/compaction-llm.md +20 -1
- package/docs/compaction-observational-memory.md +52 -8
- package/docs/context-and-skills.md +94 -7
- package/docs/contribution-registries.md +1 -0
- package/docs/conversations.md +135 -0
- package/docs/credential-storage.md +34 -1
- package/docs/credentials-and-redaction.md +11 -1
- package/docs/database-persistence.md +27 -7
- package/docs/device-adapters.md +97 -0
- package/docs/enterprise-postgres-state.md +178 -0
- package/docs/evaluations.md +14 -1
- package/docs/extensions.md +4 -1
- package/docs/forge-integration.md +113 -0
- package/docs/guardrails.md +16 -2
- package/docs/host-security.md +35 -4
- package/docs/index.md +69 -37
- package/docs/input-and-prompt-assembly.md +8 -7
- package/docs/language-intelligence.md +162 -0
- package/docs/mcp-tools.md +62 -5
- package/docs/middleware-hooks.md +2 -2
- package/docs/migration.md +427 -2
- package/docs/model-routing.md +111 -0
- package/docs/multimodal-content.md +8 -5
- package/docs/node-jsonl-session-store.md +1 -1
- package/docs/observability.md +2 -0
- package/docs/openapi-tools.md +56 -0
- package/docs/performance.md +282 -0
- package/docs/policy-and-audit.md +171 -0
- package/docs/ponytail.md +127 -0
- package/docs/postgres-persistence.md +8 -4
- package/docs/process-sessions.md +147 -0
- package/docs/provider-caching.md +13 -1
- package/docs/provider-conformance.md +29 -5
- package/docs/provider-packages.md +43 -2
- package/docs/provider-request-policies.md +2 -0
- package/docs/providers/ai-sdk.md +24 -7
- package/docs/providers/alibaba.md +179 -0
- package/docs/providers/anthropic.md +93 -0
- package/docs/providers/azure.md +74 -0
- package/docs/providers/bedrock.md +72 -0
- package/docs/providers/google.md +89 -0
- package/docs/providers/ollama.md +166 -0
- package/docs/providers/openai-compatible.md +31 -2
- package/docs/providers/openai.md +24 -5
- package/docs/providers/openrouter.md +2 -0
- package/docs/providers/vertex.md +71 -0
- package/docs/public-contracts.md +68 -4
- package/docs/rag.md +41 -12
- package/docs/release-and-install.md +362 -208
- package/docs/resource-loading.md +3 -0
- package/docs/runs-and-usage.md +3 -0
- package/docs/server.md +44 -6
- package/docs/session-store-conformance.md +2 -0
- package/docs/session-stores.md +41 -2
- package/docs/sqlite-persistence.md +11 -3
- package/docs/structured-output.md +7 -1
- package/docs/supervisors.md +8 -0
- package/docs/tool-effects.md +95 -0
- package/docs/tools.md +5 -0
- package/docs/work-artifacts-and-review.md +102 -0
- package/docs/work-connectors.md +32 -0
- package/docs/work-tools.md +137 -0
- package/docs/workflows.md +6 -0
- package/docs/working-and-semantic-memory.md +40 -7
- package/package.json +30 -7
- package/templates/init/providers.json +22 -0
- package/docs/review-coverage-2026-07-14.md +0 -260
- package/docs/review-coverage-2026-07-15.md +0 -193
- package/docs/review-coverage-2026-07-17-provider-validation.md +0 -192
- package/docs/review-coverage-2026-07-19-phase-3.md +0 -174
- package/docs/review-coverage-2026-07-20-phase-4.md +0 -175
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
# Review coverage — 2026-07-14
|
|
2
|
-
|
|
3
|
-
Traceability matrix for the 2026-07-14 code review, `prism-bug-report.md`, and Plans 053-058. Status is updated as implementation lands for release 0.0.4.
|
|
4
|
-
|
|
5
|
-
## Final 0.0.4 status — complete for publish handoff
|
|
6
|
-
|
|
7
|
-
All frozen findings and capabilities are implemented, documented, and verified. Task 8's clean RC matrix passed; Task 9's live registry preflight reports all 24 `0.0.4` versions available. Decision is **GO** after protected release commit/tag and npm authentication prerequisites in `docs/release-and-install.md`. No package was published during plan execution. C-012 remains the sole approved out-of-scope capability.
|
|
8
|
-
|
|
9
|
-
## Frozen 0.0.4 release scope
|
|
10
|
-
|
|
11
|
-
Plans 053-057 contain no unchecked tasks. Frozen review scope contains R-001-R-012 and C-001-C-011. C-012 (interactive TUI) is the sole approved exclusion: Plan 057 replaced terminal UI with public workflow APIs and RPC commands. Any row marked `release blocker` must close before publication; it is not deferred.
|
|
12
|
-
|
|
13
|
-
| Surface | Owner | Implementation / evidence | Tests / release check | Docs | Compatibility owner | Security owner / responsibility | Status |
|
|
14
|
-
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
15
|
-
| Core correctness and storage hardening (R-001-R-007) | 053-1 through 053-6 | `src/agent-loops.ts`, `src/redaction.ts`, `src/agents.ts`, node stores/config | Plan 053 core suites; aggregate `sdk:ready` | `agent-loops.md`, `credentials-and-redaction.md`, `performance.md` | 058-1 | 058-2; host keeps production workloads off JSONL | verified |
|
|
16
|
-
| Provider transport, OAuth, structured output, telemetry (R-008-R-010, C-002/C-004/C-008) | 054-1 through 054-6 | `@arnilo/prism/providers/{transport,openai,media}`; provider packages; observability package | provider/conformance/OAuth/structured-output/observability suites | `provider-primitives.md`, `structured-output.md`, `observability.md` | 058-1 | 058-2; hosts own credentials, endpoints, exporter data policy | verified |
|
|
17
|
-
| Tool validation, MCP, parallel dispatch, coding policy/media bounds (C-001/C-003/C-006/C-007, R-011) | 055-1 through 055-6; 058-1/3 | core validator/concurrency/execution policy; validator/MCP/coding-security packages | Plan 055 342-test gate; 058 packed composition, hung MCP, and exclusive-turn/later-turn tests pass | `tool-execution-primitives.md`, `mcp-tools.md`, `coding-security.md`, `agent-loops.md` | 058-1 | 058-1/2/3; hosts trust transports and configure roots/approval | verified through 058-3 |
|
|
18
|
-
| Persistence, credentials, multimodality (C-005/C-010/C-011) | 056-1 through 056-7 | SQLite/PostgreSQL/credentials packages; content/provider media APIs | Plan 056 suites + PostgreSQL CI; 058 integration/performance audit | persistence, credential-storage, multimodal docs | 058-1 | 058-2; hosts own DB TLS, keychain availability, URL/path policy | verified through 058-2 |
|
|
19
|
-
| Workflow orchestration (C-009) | 057-0 through 057-7 | workflow package; checkpoint/event/lease core primitives; durable coordinators | 34 workflow tests, 1,000-node stress, Postgres lease/CAS CI | `workflows.md`, `workflow-orchestration-primitives.md` | 058-1 | 058-1/2; hosts own workflow definitions, tenant identity, approvals | verified |
|
|
20
|
-
| Release tag/version/provenance/resume (R-012) | 058-7/8/9 | Stdlib `scripts/release.mjs`; exact clean tag/version/lock/range validation; registry fingerprint preflight; topological resumable publisher | `release.test.ts`; clean tagged 24-package registry preflight, deterministic dry-run, and operator handoff guard | `release-and-install.md` | 058-7 | Existing `NPM_TOKEN` scoped to publish step; OIDC enabled; explicit public/provenance/latest args; retained artifacts/report | complete for handoff |
|
|
21
|
-
| Package/version graph: 24 publishable manifests | 058-5/7/8 | root + 23 workspace manifests; six family/profile metas; all manifests, internal dependencies/peers, lock entries, runtime metadata at 0.0.4 | exact graph + clean pack/install/import/bin + Node 20/24 checks | profile READMEs; `release-and-install.md` | 058-7 | 0-vulnerability audit, SBOM/license scan, checksums, tarball secret/deny scan | verified through 058-8 |
|
|
22
|
-
| Public API families: provider subpaths; structured output/telemetry; validation/concurrency/execution policy; multimodal content; persistence conformance; checkpoint/event/lease; optional package APIs and workflow RPC | 054-057; 058-6 | Root exports and eight new optional package entry points listed in Plans 054-057 | public-export, packaging, install, docs, and 0.0.3 compatibility fixtures | API pages linked exactly once from `docs/index.md`; all 24 changelogs finalized | 058-1/6 | 058-2; each API page records limits/trust boundaries | verified through 058-6 |
|
|
23
|
-
| Versioned formats/migrations: persistence/checkpoint/lease schema v1; credential envelope/vault v1 | 056/057 | migration contracts and adapter-owned migrations | reopen/migration/CAS/fencing/wrong-key/tamper suites | persistence and credential-storage docs | 058-1 | 058-2; migrations fail closed and values remain parameterized/encrypted | frozen |
|
|
24
|
-
|
|
25
|
-
### Performance and security release ownership
|
|
26
|
-
|
|
27
|
-
| Area | Frozen threshold / current evidence | Remaining release owner | Security test or host responsibility | Status |
|
|
28
|
-
| --- | --- | --- | --- | --- |
|
|
29
|
-
| Provider transport | 256 KiB event, 512 KiB buffer, 64 KiB error body; 16 MiB fixture at 380 MiB/s and +1.7 MiB heap | 058-2 regression comparison | Oversize/abort/header/redaction fixtures | recorded |
|
|
30
|
-
| Telemetry/events | realistic enabled overhead under 5%; measured within 1%; bounded subscriber/workflow buffers | 058-2/8 | Content off by default; exporters are host trust boundary | recorded |
|
|
31
|
-
| Media/MCP/workflows | 10 MB MCP result/image defaults; finite media totals/timeouts; workflow 1,000 nodes, concurrency 8, fan-out 64, event buffer 2,048 | 058-1/2/8 | SSRF/MIME/path/approval/tenant/fencing fixtures | recorded |
|
|
32
|
-
| Ledger/JSONL | 500 deltas: 1.19 ms with ledger, event append concurrency 1; 500 JSONL appends: 141.10 ms / 3,544 per second | closed 058-8 | Redaction canary; JSONL remains single-process development storage | verified 058-8 |
|
|
33
|
-
| Schema cache/parallel tools | warm validation 0.99 µs vs cold compile 2.50 ms; six 20 ms calls: 121.12 ms at concurrency 1 vs 60.92 ms at 2; exclusive turn clamps to 1 and later turn restores 2 | closed 058-8 | Invalid args never invoke handlers; coding shell definitions are exclusive | verified 058-8 |
|
|
34
|
-
| SQLite/PostgreSQL/KDF | SQLite 1,000 appends: 31.84 ms; scrypt/AES default: 48.09 ms; PostgreSQL fresh-container 15/15 integration pass | closed 058-8 | SQL isolation/injection, tamper/wrong-key/plaintext fixtures; DB TLS is host-owned | verified 058-8 |
|
|
35
|
-
| Dependency/artifact security | audit 0 vulnerabilities; clean graph; CycloneDX root + 173 components; 24 tarballs and 28 verified SHA-256 entries; 0 forbidden licenses/files/secret patterns | closed 058-8 | audit/license/provenance/secret/tarball scans | verified 058-8 |
|
|
36
|
-
|
|
37
|
-
### Plan 058 Task 1 integration and compatibility matrix — 2026-07-14
|
|
38
|
-
|
|
39
|
-
| Scenario | Public/packed boundary | Evidence | Result |
|
|
40
|
-
| --- | --- | --- | --- |
|
|
41
|
-
| 0.0.3 source compatibility + additive 0.0.4 structured-output/concurrency options | root public exports and TypeScript contracts | `src/__tests__/compatibility-0-0-3.test.ts`; root typecheck/runtime gate | pass |
|
|
42
|
-
| JSON Schema validator + `toolConcurrency: 3` + local and MCP-mapped tools + coding shell approval in one turn | fresh offline install of all 24 packed tarballs | generated consumer in `src/__tests__/install-smoke.test.ts`; ordered persisted results, exclusive-shell serialization, approval, invalid-arg block, read-only write denial; non-exclusive overlap covered by loop suite | pass |
|
|
43
|
-
| Hung MCP call | public `attachMcpToolBridge`, SDK linked in-memory transport | `packages/mcp/src/__tests__/bridge.test.ts`; 10 ms `callTimeoutMs`, attributable `mcp:hung:hang` error, returns under 150 ms | pass |
|
|
44
|
-
| Revision/redaction + native structured output and artifact fallback + provider telemetry | public core/provider APIs | root agent-loop, redaction, structured-output, observability, and provider conformance suites | pass |
|
|
45
|
-
| SQLite restart/resume + PostgreSQL checkpoint/lease resume | public persistence/workflow APIs | SQLite/workflow package suites and offline examples; Task 8 fresh `postgres:16` run passed all 15 live adapter tests | pass offline and live Postgres |
|
|
46
|
-
| Encrypted credentials + bounded multimodal provider mapping + workflow checkpoint/resume/cancel | public credentials/content/provider/workflow APIs | credential, content/provider-media, workflow package suites and nine offline workflow examples | pass |
|
|
47
|
-
| Secret containment | packed canary plus existing redaction/ledger/store/checkpoint/credential/provider fixtures | no canary in packed session store; aggregate threat suites green | pass |
|
|
48
|
-
| Node/package matrix | Node >=20 type/export contract plus Node 24 full gate | `npm run sdk:ready`: 1,475 tests, 1,450 pass, 25 explicit live skips, 0 failures; all 24 dry-run packs | pass |
|
|
49
|
-
| Live providers | six first-party provider smoke suites | `PRISM_LIVE_PROVIDER_TESTS=1 npm run test --workspaces --if-present`; skipped because no provider credentials were present | operator-gated, non-blocking offline |
|
|
50
|
-
|
|
51
|
-
### Plan 058 Task 2 release audit — 2026-07-14
|
|
52
|
-
|
|
53
|
-
| Audit | Evidence / decision | Result |
|
|
54
|
-
| --- | --- | --- |
|
|
55
|
-
| Dependencies | `npm audit --audit-level=high`; `npm ls --all`; lock integrity/provenance scan; `npm outdated --workspaces`; license and install-script inventories | 0 vulnerabilities; clean graph; `@types/node` patched to 22.20.1; runtime majors deferred with rationale in `release-and-install.md` |
|
|
56
|
-
| Maintainability | TODO/no-op scan, provider helper scan, hotspot/domain review, source-text-test scan, strict typecheck/export/package gates | no contradictory product TODO; shared bounded provider helpers used; no touched brittle source test; large core domains remain type-only/runtime-cohesive and are not churned for release |
|
|
57
|
-
| Performance | dated local benchmark matrix in `docs/performance.md`; existing SSE/telemetry/media/workflow stress evidence | all frozen thresholds pass; PostgreSQL wall-clock intentionally CI/environment-owned |
|
|
58
|
-
| Security | common-token/private-key scan plus SQL/SSRF/path/shell/schema/OAuth/credential/MCP/redaction suites; packed canary and deny-list guards | pass; host terminal ANSI/control rendering is explicitly host-owned because 0.0.4 ships RPC, not a TUI |
|
|
59
|
-
| Optional environments | packed imports/bin, failure fixtures, network-free guard, Node >=20 CI import job; PostgreSQL/provider/keychain gates retained | pass offline; credential/OS-backed gates remain explicit |
|
|
60
|
-
|
|
61
|
-
### Plan 058 Task 6 documentation release gate — 2026-07-14
|
|
62
|
-
|
|
63
|
-
| Surface | Evidence | Status |
|
|
64
|
-
| --- | --- | --- |
|
|
65
|
-
| API navigation and structure | 70 docs files; all non-template pages linked exactly once from `docs/index.md`; 59 API/provider pages enforce the wiki heading contract | pass |
|
|
66
|
-
| Imports/links/package graph | Local markdown links resolve; documented core subpaths and all 24 package names match manifests; packed export/import guards remain green | pass |
|
|
67
|
-
| Examples | All 39 TypeScript examples are listed and typechecked; runnable demos complete offline with secret-output scan | pass |
|
|
68
|
-
| READMEs/changelogs | Root + 23 workspace READMEs reviewed; every publishable package ships a finalized `0.0.4` changelog | pass |
|
|
69
|
-
| Compatibility/security/performance | Migration guide states additive 0.0.3 compatibility; API pages and release docs preserve finite limits, opt-in live gates, inactive-by-install behavior, and host trust/credential/transport/storage responsibilities | pass |
|
|
70
|
-
| Focused verification | `docs.test.ts`: 75 pass; `packaging.test.ts`: 124 pass; 0 failures | pass |
|
|
71
|
-
|
|
72
|
-
### Plan 058 Task 7 deterministic publication gate — 2026-07-15
|
|
73
|
-
|
|
74
|
-
| Surface | Evidence | Status |
|
|
75
|
-
| --- | --- | --- |
|
|
76
|
-
| Version graph | All 24 manifests, internal dependency/peer/dev ranges, lockfile workspace entries, root runtime version, and MCP client metadata are `0.0.4` | pass |
|
|
77
|
-
| Registry preflight | Live public-registry availability check reports all 24 `@arnilo/*@0.0.4` versions available; no publish performed | pass |
|
|
78
|
-
| Ordering/resume | One stdlib script derives graph once, emits stable topological order, skips only matching published manifests under `--resume`, and persists status after every package | pass |
|
|
79
|
-
| Publication security | Clean exact `v0.0.4` tag required; real publish cannot bypass checks; `--access public --provenance --tag latest`; OIDC `id-token: write` only in publish job; no long-lived token | pass |
|
|
80
|
-
| Dry run | Real npm CLI dry-run completed all 24 packages in graph order; report contains 24 `dry-run` statuses and 0 failures | pass |
|
|
81
|
-
| Automated regressions | Version/range mismatch, collision, matching/mismatched resume, interruption report, git state, publish args, and token canary tests | pass |
|
|
82
|
-
|
|
83
|
-
### Plan 058 Task 8 clean release-candidate gate — 2026-07-15
|
|
84
|
-
|
|
85
|
-
| Surface | Evidence | Status |
|
|
86
|
-
| --- | --- | --- |
|
|
87
|
-
| Clean build | Fresh 641-file committed snapshot; `npm ci` 1 s; `npm test` 28.209 s; `sdk:ready` 51.500 s; zero generated-file drift | pass |
|
|
88
|
-
| Test/runtime matrix | 1,475 tests: 1,450 pass, 25 explicit provider/keychain skips, 0 fail; Node 20.20.2 and Node 24.18.0 each import 20 root targets | pass |
|
|
89
|
-
| Optional database | Fresh `postgres:16`; all 15 PostgreSQL adapter integration tests pass, 0 skipped | pass |
|
|
90
|
-
| Exact packed consumer | 24 RC tarballs install offline; 24 packages, 37 imports, and `prism --help` pass | pass |
|
|
91
|
-
| Artifact inspection | 539,285 packed / 2,044,155 unpacked bytes; 24/24 reproducible shasums; no forbidden/unsafe files or metadata mismatch | pass |
|
|
92
|
-
| Supply chain | 0 audit vulnerabilities; clean dependency graph; CycloneDX 1.5 SBOM root + 173 components; no missing/prohibited license; 28 verified SHA-256 entries; 0 source/artifact token/private-key matches | pass |
|
|
93
|
-
| Publication boundary | Clean `v0.0.4` registry preflight and provenance-enabled npm dry-run pass 24/24; actual OIDC attestation awaits real publish by design | pass |
|
|
94
|
-
| Performance | `npm test` remains under 60 s; Task 2 ledger/JSONL/schema/parallel/SQLite/redaction/KDF/workflow benchmarks remain inside frozen ceilings | pass |
|
|
95
|
-
|
|
96
|
-
### Plan 058 Task 9 publish handoff — 2026-07-15
|
|
97
|
-
|
|
98
|
-
| Surface | Evidence | Status |
|
|
99
|
-
| --- | --- | --- |
|
|
100
|
-
| Registry state | Live preflight: 24/24 `0.0.4` versions available; 13 packages currently at `0.0.3`, 11 names unpublished | pass |
|
|
101
|
-
| Commit/tag dispatch | Protected signed commit/tag checklist; exact `v0.0.4` tag push dispatch; no local/manual publication | pass |
|
|
102
|
-
| Authentication | Existing GitHub `NPM_TOKEN` is scoped only to the publish step; OIDC/provenance remains enabled | operator prerequisite verified by owner |
|
|
103
|
-
| Order/resume | Exact 24-package topological order recorded; same-tag failed-job rerun skips only matching registry manifests | pass |
|
|
104
|
-
| Post-publish | Bounded metadata/integrity/checksum/import/bin/signature/provenance smoke documented | pass |
|
|
105
|
-
| Rollback | Immutable/non-transactional limitation, deprecation, dist-tag restoration/removal, and no-unpublish default documented | pass |
|
|
106
|
-
| Scope closure | Plans 053-057 follow-ups reconciled; no in-scope finding deferred; C-012 remains approved exclusion | complete |
|
|
107
|
-
|
|
108
|
-
## Core findings (Plan 053)
|
|
109
|
-
|
|
110
|
-
| ID | Priority | Finding | Plan task | Implementation | Tests | Docs | Status |
|
|
111
|
-
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
112
|
-
| R-001 | P0 | Revision request duplicated and corrupted by redaction | 053-1 | `src/agent-loops.ts`, `src/redaction.ts` | `src/__tests__/agent-loops.test.ts` (revision with redactor) | `docs/agent-loops.md`, `docs/credentials-and-redaction.md` | implemented |
|
|
113
|
-
| R-002 | P1 | Multi-round tool transcript chronologically invalid | 053-2 | `src/agent-loops.ts` | `src/__tests__/agent-loops.test.ts` (multi-round ordering) | `docs/agent-loops.md`, `docs/tools.md` | implemented |
|
|
114
|
-
| R-003 | P1 | Redactor leaks secrets in object/Map keys | 053-1 | `src/redaction.ts` | `src/__tests__/runtime-redaction.test.ts` | `docs/credentials-and-redaction.md` | implemented |
|
|
115
|
-
| R-004 | P1 | Event-ledger writes have no backpressure | 053-3 | `src/agents.ts` | `src/__tests__/run-ledger.test.ts` (serialized appends) | `docs/runs-and-usage.md`, `docs/performance.md` | implemented |
|
|
116
|
-
| R-005 | P2 | JSONL append silent on corrupt lines | 053-4 | `src/node/session-store-jsonl.ts` | `src/__tests__/node-session-store-jsonl.test.ts` | `docs/node-jsonl-session-store.md` | implemented |
|
|
117
|
-
| R-006 | P2 | Optional config ENOENT detected by message text | 053-5 | `src/node/config.ts`, `src/node/settings.ts` | `src/__tests__/node-config.test.ts` | `docs/node-filesystem-config.md` | implemented |
|
|
118
|
-
| R-007 | P2 | OpenAI-compatible malformed message `TypeError` | 053-1 | `src/providers/openai-compatible.ts` | `src/__tests__/openai-compatible.test.ts` | `docs/providers/openai-compatible.md` | implemented |
|
|
119
|
-
|
|
120
|
-
## Bug report fixes A–D
|
|
121
|
-
|
|
122
|
-
| Fix | Description | Covered by |
|
|
123
|
-
| --- | --- | --- |
|
|
124
|
-
| A+B | Repair input ownership / duplicate revision prompt | R-001 (`pendingHistory` + active-path redaction) |
|
|
125
|
-
| C | Diamond refs collapsed to `[Circular]` | R-001, R-003 |
|
|
126
|
-
| D | Provider assumes iterable `message.content` | R-007 |
|
|
127
|
-
|
|
128
|
-
## Provider findings (Plan 054)
|
|
129
|
-
|
|
130
|
-
| ID | Priority | Finding / capability | Plan task | Design / implementation | Tests | Docs | Status |
|
|
131
|
-
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
132
|
-
| R-008 | P1 | Unbounded SSE/error bodies | 054-1, 054-2 | `src/providers/transport.ts`; migrated in all first-party providers | `src/__tests__/provider-transport.test.ts` + provider package suites | `docs/provider-primitives.md` | implemented |
|
|
133
|
-
| R-009 | P1 | OpenAI device-code OAuth polling | 054-3 | `packages/provider-openai/src/oauth.ts` | `packages/provider-openai/src/__tests__/codex-oauth.test.ts` | `docs/providers/openai.md`, `docs/credentials-and-redaction.md` | implemented |
|
|
134
|
-
| R-010 | P2 | Duplicated provider protocol helpers | 054-1, 054-2 | `src/providers/transport.ts`, `src/providers/openai-primitives.ts`; local `sse.ts` removed | `src/__tests__/openai-primitives.test.ts` + provider package suites | `docs/provider-primitives.md` | implemented |
|
|
135
|
-
| C-002 | — | Native structured output | 054-4 | `StructuredOutputOptions`, `validateStructuredOutputOptions`, provider mappers | `src/__tests__/structured-output.test.ts`, `openai-compatible.test.ts` | `docs/structured-output.md` | implemented |
|
|
136
|
-
| C-004 | — | Shared resilient transport | 054-1, 054-2 | `readSseEvents`, `readBoundedResponseText` in all first-party providers | Fixture matrix + provider suites | `docs/provider-primitives.md` | implemented |
|
|
137
|
-
| C-008 | — | Provider/tool observability | 054-5 | `ProviderTurnMetadata`, `@arnilo/prism-observability-opentelemetry` | `src/__tests__/observability.test.ts` + package suite | `docs/observability.md` | implemented |
|
|
138
|
-
|
|
139
|
-
## Tool execution findings (Plan 055)
|
|
140
|
-
|
|
141
|
-
| ID | Priority | Finding / capability | Plan task | Design / implementation | Tests | Docs | Status |
|
|
142
|
-
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
143
|
-
| C-001 | — | Runtime JSON Schema tool validation | 055-1 | `src/tools.ts` (`ToolArgumentValidator`, `createToolParameterValidator`); `@arnilo/prism-tool-validator-json-schema` | `src/__tests__/tools.test.ts`, package suite | `docs/tools.md`, `docs/tool-execution-primitives.md` | implemented |
|
|
144
|
-
| C-003 | — | MCP client bridge | 055-3 | `@arnilo/prism-mcp`: `connectMcpTools`, stdio + Streamable HTTP, prefixed tools, bounded results | package suite (`packages/mcp`) | `docs/mcp-tools.md`, `docs/tool-execution-primitives.md` | implemented |
|
|
145
|
-
| C-006 | — | Approval/sandbox for coding tools | 055-4 | `src/execution-policy.ts`; `@arnilo/prism-coding-security`; coding-agent `executionPolicy` option | `src/__tests__/execution-policy.test.ts`, package suites | `docs/coding-security.md`, `docs/tool-execution-primitives.md` | implemented |
|
|
146
|
-
| C-007 | — | Parallel tool-call execution | 055-2 | `src/agent-loops.ts` (`dispatchToolCallsInOrder`, `resolveToolConcurrency`); `LoopContext.toolConcurrency` | `src/__tests__/agent-loops.test.ts` | `docs/agent-loops.md`, `docs/tools.md`, `docs/performance.md` | implemented |
|
|
147
|
-
| R-011 | P2 | Coding-agent image size / resize option | 055-5 | `maxImageBytes`, `transformImage`, `DEFAULT_MAX_IMAGE_BYTES`; deprecated `autoResizeImages` | `packages/coding-agent/src/__tests__/read.test.ts` | `docs/coding-agent-tools.md`, `docs/tool-execution-primitives.md` | implemented |
|
|
148
|
-
|
|
149
|
-
## Deferred to later plans (053–058)
|
|
150
|
-
|
|
151
|
-
| ID | Priority | Finding / capability | Owner plan | Status |
|
|
152
|
-
| --- | --- | --- | --- | --- |
|
|
153
|
-
| R-012 | P2 | Release workflow tag/version/resume | 058-7/9 | **implemented and verified** — deterministic graph, collision preflight, resumable publication, provenance, first-publication bootstrap, retained report, operator handoff |
|
|
154
|
-
| C-005 | — | Production database adapters | 056 | verified (sqlite offline + postgres CI live) |
|
|
155
|
-
| C-009 | — | Workflow orchestration | 057 | verified (distributed leases/coordinator + durable control + 9 examples + release gates) |
|
|
156
|
-
| C-010 | — | Audio/file/document multimodality | 056 | verified (core + provider mapping) |
|
|
157
|
-
| C-011 | — | Encrypted credential adapters | 056 | verified (`@arnilo/prism-credentials-node`) |
|
|
158
|
-
| C-012 | — | Interactive TUI | deferred | out of scope for 057 / 0.0.4 workflow completeness |
|
|
159
|
-
|
|
160
|
-
## Plan 056 — persistence, credentials, multimodality (Task 0)
|
|
161
|
-
|
|
162
|
-
| ID | Capability | Plan task | Design / implementation | Tests | Docs | Status |
|
|
163
|
-
| --- | --- | --- | --- | --- | --- | --- |
|
|
164
|
-
| C-005 | Production database adapters | 056-0 / 056-1 / 056-2 / 056-3 / 056-7 | Task 0 matrix + Task 1 shared primitives + Task 2 `@arnilo/prism-session-store-sqlite` + Task 3 `@arnilo/prism-session-store-postgres` (`createPostgresPersistence`, advisory-lock migrations, pooled parameterized SQL, configurable schema); CI `postgres-integration` job | `packages/session-store-sqlite/src/__tests__/sqlite-persistence.test.ts`, `packages/session-store-postgres/src/__tests__/postgres-persistence.test.ts`, `postgres-integration.test.ts` (CI + `PRISM_TEST_POSTGRES_URL`), `persistence-schema.test.ts`, `conformance-helpers.test.ts` | `sqlite-persistence.md`, `postgres-persistence.md`, `database-persistence.md`, `session-store-conformance.md`, `run-ledger-conformance.md` | verified |
|
|
165
|
-
| C-010 | Audio/file/document multimodality | 056-0 / 056-5 / 056-6 / 056-7 | Core `audio`/`file`/`document` blocks + `resolveMediaContentBlock`; `@arnilo/prism/providers/media` wire helpers; OpenAI Responses maps `input_file`/`input_audio` with data-URL inline files, bounded upload cache + cleanup; Anthropic routes (OpenCode Go, Kimi) map PDF `document`/`file`; OpenRouter/NeuralWatt/Z.ai/OpenCode OpenAI route reject undeclared media | `src/__tests__/content.test.ts`, `src/__tests__/provider-media.test.ts`, `packages/provider-openai/src/__tests__/openai-media.test.ts`, provider package tests | `multimodal-content.md`, `provider-conformance.md`, `model-registry.md` | verified |
|
|
166
|
-
| C-011 | Encrypted credential adapters | 056-0 / 056-4 / 056-7 | `@arnilo/prism-credentials-node` — AES-256-GCM file envelope + scrypt + `@napi-rs/keyring@^1.3.0` keychain adapter; core stays storage-free | `packages/credentials-node/src/__tests__/credentials-node.test.ts` (opt-in keychain via `PRISM_TEST_KEYCHAIN=1`) | `credential-storage.md`, `credentials-and-redaction.md`, `settings-auth-trust-security.md` | verified |
|
|
167
|
-
|
|
168
|
-
## Verification evidence
|
|
169
|
-
|
|
170
|
-
### Plan 053 core gate
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
npm run typecheck
|
|
174
|
-
npm test
|
|
175
|
-
npm run build
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
All rows marked **implemented** in the core table pass their focused suites and aggregate core gates.
|
|
179
|
-
|
|
180
|
-
### Plan 054 provider gate — 2026-07-14
|
|
181
|
-
|
|
182
|
-
| Check | Result |
|
|
183
|
-
| --- | --- |
|
|
184
|
-
| `npm run sdk:ready` | pass; typecheck, 1,234 tests (1,209 pass, 25 opt-in live skips, 0 fail), workspace builds, export/install/package guards, and all dry-run packs |
|
|
185
|
-
| `npm audit --audit-level=high` | pass; 0 vulnerabilities |
|
|
186
|
-
| `npm ls --all --depth=0` | pass; clean workspace dependency tree |
|
|
187
|
-
| Duplicate-helper scan | pass; no provider-local `sse.ts`, `safeText`, `parseArgs`, or `toOpenAIMessage`; remaining Kimi/OpenCode Anthropic, OpenAI Responses, and NeuralWatt serializers are documented wire-format variants |
|
|
188
|
-
| Bounds/security fixtures | pass; SSE event/buffer/body/argument limits, abort, malformed schema, prototype-pollution keys, owned headers, and canonical secret-redaction tests |
|
|
189
|
-
| Benchmarks | 16 MiB SSE at 380 MiB/s with +1.7 MiB end heap delta; disabled telemetry within measurement noise; enabled realistic stream within 1%; details in `docs/performance.md` |
|
|
190
|
-
|
|
191
|
-
Plan 054 rows R-008 through R-010 and C-002/C-004/C-008 are verified **implemented**. Live provider tests remain explicit credential-gated smoke tests and account for the 25 aggregate skips.
|
|
192
|
-
|
|
193
|
-
### Plan 055 tool ecosystem / security gate — 2026-07-14
|
|
194
|
-
|
|
195
|
-
| Check | Result |
|
|
196
|
-
| --- | --- |
|
|
197
|
-
| `npm run sdk:ready` | pass; typecheck, 1,305 tests (1,280 pass, 25 opt-in live skips, 0 fail), workspace builds, export/install/package guards, and all dry-run packs |
|
|
198
|
-
| Focused 055 suites | pass; 342 focused tests across core tools/loops/execution-policy/export/install/packaging + tool-validator (12), mcp (11), coding-security (10), coding-agent read/shell/execution-policy |
|
|
199
|
-
| New package packs | pass; `@arnilo/prism-tool-validator-json-schema`, `@arnilo/prism-mcp`, `@arnilo/prism-coding-security` included in install-smoke + packaging + `pack:dry-run` |
|
|
200
|
-
| `npm audit --audit-level=high` | pass; 0 vulnerabilities |
|
|
201
|
-
| `npm ls --all --depth=0` | pass; clean workspace tree including Ajv 8 and MCP SDK 1.29 |
|
|
202
|
-
| Threat-model fixtures | pass; schema remote-ref/pollution/oversized args, parallel abort + ordered results, MCP name collision/list-changed/maxResultBytes, path/symlink/metacharacter/approval denial, image `maxImageBytes` stat-first reject |
|
|
203
|
-
| Secret scan (055 surfaces) | pass; no credential-like literals in new packages/core seams/docs |
|
|
204
|
-
|
|
205
|
-
Plan 055 rows C-001, C-003, C-006, C-007, and R-011 are verified **implemented**. Residual host responsibilities (MCP transport trust, `toolConcurrency` with dangerous shells, optional image transformers) are documented in `docs/tool-execution-primitives.md` and Plan 055 compromises.
|
|
206
|
-
|
|
207
|
-
### Plan 056 persistence / credentials / multimodality gate — 2026-07-14
|
|
208
|
-
|
|
209
|
-
| Check | Result |
|
|
210
|
-
| --- | --- |
|
|
211
|
-
| `npm run sdk:ready` | pass; typecheck, 1,396 tests (1,371 pass, 25 opt-in live skips, 0 fail), workspace builds, export/install/package guards, and all dry-run packs |
|
|
212
|
-
| Focused 056 suites | pass; persistence-schema + conformance helpers + content + provider-media (49), sqlite adapter (7), credentials-node (15), openai multimodal (3) + postgres offline identifiers/DDL |
|
|
213
|
-
| Live PostgreSQL matrix | pass; 9 integration tests via `PRISM_TEST_POSTGRES_URL` (session/run conformance, checkpoint CAS/fencing, atomic leases, migrations, pagination, tenant isolation, injection, advisory-lock race) |
|
|
214
|
-
| CI workflow | `.github/workflows/release.yml` adds `postgres-integration` job (`postgres:16` service + `npm run test:postgres`); publish waits on `verify`, `node20-compat`, and `postgres-integration` |
|
|
215
|
-
| New package packs | pass; `@arnilo/prism-session-store-sqlite`, `@arnilo/prism-session-store-postgres`, `@arnilo/prism-credentials-node` included in install-smoke + packaging + `pack:dry-run` |
|
|
216
|
-
| `npm audit --audit-level=high` | pass; 0 vulnerabilities |
|
|
217
|
-
| `npm ls --all --depth=0` | pass; clean tree including `better-sqlite3@12.11.1`, `pg@8.22.0`, `@napi-rs/keyring@1.3.0`; core remains dependency-free |
|
|
218
|
-
| Threat-model fixtures | pass; SQL injection/tenant isolation, encrypted-store wrong-key/tamper/plaintext scan/permissions/rotation, SSRF/MIME/bounds/unsupported modality, provider reject-undeclared media |
|
|
219
|
-
| Secret scan (056 surfaces) | pass; no credential-like literals in new packages/core media seams/docs |
|
|
220
|
-
|
|
221
|
-
Plan 056 rows C-005, C-010, and C-011 are verified. Residual host responsibilities (Postgres TLS/credential ownership, OS keychain availability, pre-resolving `resourceUri` before providers, provider upload retention) are documented in Plan 056 compromises and the persistence/credentials/multimodality docs.
|
|
222
|
-
|
|
223
|
-
## Plan 057 — workflow orchestration (Tasks 0–7)
|
|
224
|
-
|
|
225
|
-
| ID | Capability | Plan task | Design / implementation | Tests | Docs | Status |
|
|
226
|
-
| --- | --- | --- | --- | --- | --- | --- |
|
|
227
|
-
| C-009 | Workflow/graph orchestration | 057-0 through 057-7 | Tasks 0–6 shipped bounded DAG orchestration and generic persistence/event primitives; Task 7 added core `LeaseStore`, persistence-owned atomic leases, fenced checkpoint CAS, and package-local multi-process enqueue/claim/renew/takeover/cancel coordination. | 34 workflow tests including distributed claim/concurrency/cancel/takeover and 1,000-node stress + 6 focused core primitive tests + SQLite/PostgreSQL persistence coverage; `npm run sdk:ready`: 1,444 tests (1,419 pass, 25 opt-in live skips, 0 fail), strict typecheck, 9 examples, install smoke, packaging guard, all dry-run packs | `workflows.md`, `workflow-orchestration-primitives.md`, `cli-rpc.md`, persistence docs, `examples/README.md` | **verified** |
|
|
228
|
-
| C-012 | Interactive TUI | — | Removed from Plan 057; deferred indefinitely. Workflow host control uses public APIs + optional RPC/`CommandDefinition` bindings instead of a terminal UI. | n/a | `workflow-orchestration-primitives.md` (deferral note); stub at `workflow-tui-primitives.md` | deferred |
|
|
229
|
-
|
|
230
|
-
### Plan 057 workflow gate — 2026-07-14
|
|
231
|
-
|
|
232
|
-
| Check | Result |
|
|
233
|
-
| --- | --- |
|
|
234
|
-
| `npm run sdk:ready` | pass; strict typecheck, 1,444 tests (1,419 pass, 25 explicit live skips, 0 fail), workspace builds, fresh offline install smoke, packaging guard, and all dry-run packs |
|
|
235
|
-
| Workflow/core primitives | workflow 34/34 + focused core 6/6 pass, including distributed exclusive claim, concurrency bounds, heartbeat cancellation, expiry takeover/fencing, checkpoint/lease/event primitives, and a bounded 1,000-node DAG |
|
|
236
|
-
| Examples | 9/9 default executions pass offline and emit no credential-shaped secrets; PostgreSQL safely skips without `PRISM_TEST_POSTGRES_URL` |
|
|
237
|
-
| Live PostgreSQL | root/CI `test:postgres` covers session/run/query persistence, checkpoint CAS/fencing, and atomic leases when `PRISM_TEST_POSTGRES_URL` is present; default network-free gate keeps it opt-in |
|
|
238
|
-
| Scope | no TUI/readline dependency; C-012 remains explicitly deferred and does not block C-009 verification |
|
|
239
|
-
|
|
240
|
-
### Task 0 primitive review summary (2026-07-14)
|
|
241
|
-
|
|
242
|
-
| Area | Shipped seams reused | Gaps closed in Task 0 design | Task 1 core primitive |
|
|
243
|
-
| --- | --- | --- | --- |
|
|
244
|
-
| Orchestration | `AgentSession`, `AgentLoopStrategy`, `LoopContext`, abort, `maxToolRounds`/`toolConcurrency` | Package DAG scheduler over multiple sessions | **Skip** (package-only) |
|
|
245
|
-
| CLI/RPC | `runRpcServer`, branch handles, concurrent abort, JSON events, `CommandDefinition` | Optional `createWorkflowCommands()` for start/status/cancel/resume (replaces TUI control surface) | **Skip** |
|
|
246
|
-
| Events | `AgentEvent`, bounded `subscribe()`, `RunLedger`, redaction | Package `WorkflowEvent` facade over generic bounded fan-in | **Added Task 6:** `EventMultiplexer<T>` |
|
|
247
|
-
| Approval | `PermissionPolicy`, `ExecutionPolicy`, `createCodingApprovalPolicy` | Host `approve` callback + `workflowId`/`nodeId` metadata | **Skip** |
|
|
248
|
-
| Persistence | `SessionStore`, `ProductionPersistenceStore`, SQLite/Postgres, `RunLedger` | `WorkflowCheckpointAdapter` over generic persistence capability | **Added Task 6:** `CheckpointStore` |
|
|
249
|
-
|
|
250
|
-
### Task 1 confirmation (2026-07-14)
|
|
251
|
-
|
|
252
|
-
| Decision | Outcome |
|
|
253
|
-
| --- | --- |
|
|
254
|
-
| Core `CheckpointStore` | **Added in Task 6.** Optional `ProductionPersistenceStore.checkpoints`; memory/SQLite/PostgreSQL implementations; workflows adapt via `createWorkflowCheckpoints({ store })`. |
|
|
255
|
-
| Core event multiplexer | **Added in Task 6.** `WorkflowEventBus` delegates source fan-in, queue bounds, overflow, abort, and close to `createEventMultiplexer<T>()`. |
|
|
256
|
-
| Core `ApprovalHandler` / workflow types | **Not added.** Host policies + package-local types only. |
|
|
257
|
-
| Locked contracts | `WorkflowCheckpointAdapter` (+ value/list shapes), `WorkflowEvent`/`WorkflowEventBus`, `runWorkflow`/`resumeWorkflow`/`getWorkflowRun`/`listWorkflowRuns`, `createWorkflowCommands` — documented in `docs/workflow-orchestration-primitives.md`. |
|
|
258
|
-
| Core code changed | Task 1: none. Task 6 review: generic primitives added without workflow vocabulary. |
|
|
259
|
-
|
|
260
|
-
Tasks 2–4 shipped `@arnilo/prism-workflows`, durable control, and 8 examples. Task 6 removed workflow-owned SQL/queue duplication: core now owns generic checkpoint/event primitives and first-party persistence owns durable checkpoint tables.
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
# Review coverage — 2026-07-15
|
|
2
|
-
|
|
3
|
-
This page freezes Prism 0.0.5 scope at commit `f5128a816ae204c52f3e2f089de71c99bd5de6d4` after the Prism/Mastra review. It maps every confirmed finding and accepted capability to one owning roadmap phase, package/public surface, focused test owner, and documentation owner.
|
|
4
|
-
|
|
5
|
-
Status: **scope frozen; Phases 1-14 implementation complete; publication handoff pending**. Phase 0 changes no public runtime behavior.
|
|
6
|
-
|
|
7
|
-
## Release decision
|
|
8
|
-
|
|
9
|
-
- Target release is **0.0.5**. Do not publish the currently versioned but unpublished 0.0.4 package graph.
|
|
10
|
-
- npm currently reports `@arnilo/prism@0.0.3`; Phase 14 has retargeted every repository package and lock entry to 0.0.5. Publication remains pending the clean signed-tag workflow.
|
|
11
|
-
- Core remains a Node.js 20-compatible, zero-runtime-dependency harness.
|
|
12
|
-
- New capabilities are opt-in and package-owned. No server, database, credential store, telemetry exporter, memory worker, schedule, remote agent, or privileged tool activates on install.
|
|
13
|
-
- Any row below that changes a trust boundary remains a release blocker until its owning phase and regression checks pass.
|
|
14
|
-
|
|
15
|
-
## Frozen confirmed findings
|
|
16
|
-
|
|
17
|
-
Each ID appears once. “Planned” means owned, not fixed.
|
|
18
|
-
|
|
19
|
-
| ID | Confirmed finding | Disposition and single owner | Package / public surface | Focused test owner | Documentation owner | Status |
|
|
20
|
-
| --- | --- | --- | --- | --- | --- | --- |
|
|
21
|
-
| S-001 | Bracket-normalization lets IPv6 loopback, link-local, ULA, and IPv4-mapped private literals bypass media SSRF checks; DNS resolution/rebinding behavior is not sufficient for a private-network denial claim. | Phase 1 | Core `src/content.ts`; `SsrfPolicy` and media fetch path | `src/__tests__/content.test.ts` with injected resolver/requester matrix | `multimodal-content.md`, `host-security.md` | completed 2026-07-15 |
|
|
22
|
-
| S-002 | `createReadOnlyTools()` does not apply the aggregate `executionPolicy`. | Phase 1 | `@arnilo/prism-coding-agent` read-only aggregator | coding-agent execution-policy tests | `coding-agent-tools.md` | completed 2026-07-15 |
|
|
23
|
-
| S-003 | Approval caching defaults to a process-lifetime map instead of `none`; `run` and `session` scopes have no identity in the cache key. | Phase 1 | `@arnilo/prism-coding-security`; approval policy and execution identity metadata | coding-security approval tests | `coding-security.md`, `host-security.md` | completed 2026-07-15 |
|
|
24
|
-
| C-001 | Sandbox adapter returns only an exit code and cannot forward stdout/stderr to coding-agent `onData`. | Phase 2 | coding-security sandbox adapter / coding-agent bash operations bridge | sandbox and shell integration tests | `coding-security.md`, `coding-agent-tools.md` | completed 2026-07-15 |
|
|
25
|
-
| C-002 | OpenTelemetry agent spans end only on `agent_finished`; provider failure can leave `prism.agent.run` active. | Phase 2 | `@arnilo/prism-observability-opentelemetry` instrumentation lifecycle | in-memory telemetry failed/aborted-run tests | `observability.md` | completed 2026-07-15 |
|
|
26
|
-
| C-003 | `prism.provider.tokens` is incremented for provider-turn and agent-total events, double-counting one usage source. | Phase 2 | OTel token metric names/scopes | in-memory metric assertions | `observability.md`, `runs-and-usage.md` | completed 2026-07-15 |
|
|
27
|
-
| C-004 | Usage rows do not distinguish provider-turn values from run totals; the loop returns the latest turn rather than an explicit aggregate. | Phase 2 | core `Usage`, `UsageRecord`, runtime accumulator, persistence adapters | multi-turn run-ledger conformance and runtime tests | `runs-and-usage.md`, persistence docs | completed 2026-07-15 |
|
|
28
|
-
| C-005 | Providers resolve media one block at a time, so request-wide 32-item/32-MiB bounds are not accumulated before provider/upload side effects. | Phase 2 | core media request resolver and provider media serializers | content/provider-media/provider package tests | `multimodal-content.md` | completed 2026-07-15 |
|
|
29
|
-
| A-001 | Workflow coordinator concurrency test was timing-sensitive under load. | Phase 0 | test only; production workflow API unchanged | `packages/workflows/src/__tests__/coordinator.test.ts` repeated five times plus full suite | this page, `performance.md` | completed at frozen HEAD `f5128a8` |
|
|
30
|
-
| A-002 | `AgentConfig.extensions`, `settings`, and `credentials` are accepted but explicitly ignored by agent/session runtime. | Phase 3 | core `AgentConfig` and host composition docs | compile fixtures and runtime behavior tests | `agent-session-runtime.md`, `customization.md`, `migration.md` | completed 2026-07-15 |
|
|
31
|
-
| A-003 | `AgentSession.run()`/`prompt()` return `Promise<void>` and integrated streaming requires a separately started subscriber. | Phase 3 | core `AgentSession`, new run-result/stream contract | agent/session, CLI/RPC, workflow tests | agent/session, events, CLI/RPC, workflow docs | completed 2026-07-15 |
|
|
32
|
-
| A-004 | Direct source/phase-text boundary tests make refactors fail without behavioral changes. | Phase 14 | test architecture; replace implementation assertions when touched, retain manifest/docs/absence boundary checks | docs/export/behavior/pack tests replacing implementation-text assertions | testing/release coverage docs | completed for touched tests; broad historical conversion deferred |
|
|
33
|
-
| A-005 | `src/contracts.ts`, `src/agents.ts`, and `packages/workflows/src/run.ts` are conflict hotspots; docs/plans are larger than production source. | Phase 14 | maintainability gate; split only where completed work proves a cohesive domain | typecheck, public exports, behavior suites, docs links | review coverage and release docs | reviewed; no safe release-time cohesive split, deferred with measurements |
|
|
34
|
-
| R-001 | 0.0.4 must not be published after the review; all package/version/tag/provenance checks must target 0.0.5. | Phase 14 | 30-package graph, lockfile, release workflow/script | release, packaging, install, Node 20/24, registry checks | `release-and-install.md`, changelogs, migration docs | completed 2026-07-16; publication handoff pending |
|
|
35
|
-
|
|
36
|
-
## Accepted capability scope
|
|
37
|
-
|
|
38
|
-
These are the twelve accepted Mastra-comparison recommendations. Each has one implementation owner; adjacent phases may consume the result but do not own a duplicate implementation.
|
|
39
|
-
|
|
40
|
-
| ID | Capability | Single owner | Reused Prism primitives | Minimum missing surface | Test owner | Documentation owner |
|
|
41
|
-
| --- | --- | --- | --- | --- | --- | --- |
|
|
42
|
-
| F-001 | Direct run result and integrated stream | Phase 3 / core | `AgentSession`, loop, `AgentEvent`, bounded subscriber | `AgentRunResult`; race-free `session.stream()` wrapper over one execution | core agent/session suite | agent/session and events docs |
|
|
43
|
-
| F-002 | Minimal scorers, sampling, datasets, batch experiments | Phase 4 / `@arnilo/prism-evals` (completed 2026-07-15) | F-001 result, run/trace IDs, package-local evaluation store | package-local scorer/dataset/experiment records and runner | eval package tests | `evaluations.md` |
|
|
44
|
-
| F-003 | Minimal project scaffold | Phase 5 / existing root CLI (completed 2026-07-15) | CLI parser, examples, provider packages, pack smoke | deterministic `prism init`; tiny templates | CLI temp-project pack/install/typecheck/test | CLI, README, release/install docs |
|
|
45
|
-
| F-004 | AI SDK model interoperability | Phase 6 / `@arnilo/prism-provider-ai-sdk` (completed 2026-07-15) | `AIProvider`, provider events, transport/content/structured-output conformance | one supported AI SDK language-model adapter | provider conformance with fake AI SDK model | provider package and AI SDK page |
|
|
46
|
-
| F-005 | Working memory and semantic recall | Phase 7 / `@arnilo/prism-memory` (completed 2026-07-15) | context providers, middleware, ownership, Postgres package | package-local `Embedder`, `VectorStore`, working-memory store; one pgvector adapter | memory conformance and PostgreSQL opt-in suite | `working-and-semantic-memory.md` |
|
|
47
|
-
| F-006 | Durable human approval and suspend/resume | Phase 8 / workflows plus coding-security bridge (completed 2026-07-15) | checkpoints, leases, fencing, workflow resume/cancel, execution policy | suspended state, validated payload, exact-once resume cursor | workflow restart/race/authorization tests | workflow and coding-security docs |
|
|
48
|
-
| F-007 | Small text/Markdown RAG | Phase 9 / `@arnilo/prism-rag` (completed 2026-07-16) | Phase 7 embed/vector contracts, resource/content bounds, context provider | deterministic chunk/index/retrieve/citation helpers | RAG package tests | `rag.md` |
|
|
49
|
-
| F-008 | Web-standard agent/workflow handler and MCP server | Phase 10 / `@arnilo/prism-server` plus existing MCP package (completed 2026-07-16) | F-001 result/stream, workflow commands, MCP SDK, abort/redaction | `Request -> Response` handler; explicit MCP server registration | server and MCP in-memory tests | `server.md`, `mcp-tools.md` |
|
|
50
|
-
| F-009 | Durable schedules and reconnectable background runs | Phase 11 / workflows (completed 2026-07-16) | coordinator, checkpoints, leases, active-run registry | schedule records/claims and one-time/interval/host-calculated next run | workflow multi-coordinator tests | workflow/persistence/server docs |
|
|
51
|
-
| F-010 | Workflow composition, state, and replay | Phase 11 / workflows (completed 2026-07-16) | DAG runner, node adapters, checkpoints, lineage/events | workflow node, bounded typed state, replay lineage/cursor | workflow nested/replay tests | workflow docs |
|
|
52
|
-
| F-011 | Trace/run feedback linked to evaluations | Phase 12 / persistence plus OTel/evals (completed 2026-07-16) | run/trace IDs, cursor queries, redaction, OTel | bounded feedback record/query and safe OTel projection | persistence conformance and OTel tests | observability/evaluation docs |
|
|
53
|
-
| F-012 | Supervisor delegation and A2A | Phase 13 / `@arnilo/prism-supervisor` (completed 2026-07-16) | F-001, memory scope, permission/abort/budget, web handler | bounded child delegation and current A2A protocol mapping/signing | supervisor isolation and A2A protocol tests | `supervisors.md`, `a2a.md` |
|
|
54
|
-
|
|
55
|
-
## Existing primitive inventory
|
|
56
|
-
|
|
57
|
-
| Domain | Existing reusable primitive | What it already covers | Frozen gap/decision |
|
|
58
|
-
| --- | --- | --- | --- |
|
|
59
|
-
| Agent execution | `Agent`, `AgentSession`, `AgentLoopStrategy`, `singleShotLoop`, generate/validate/revise loop | provider/tool turns, retry, compaction, abort, stores, middleware, ledger | Add only F-001 result/stream in Phase 3; do not add a second engine or central application object. |
|
|
60
|
-
| Events and fan-in | `AgentEvent`, `createEventMultiplexer<T>()`, bounded `subscribe()` queues | normalized live events, ordered source fan-in, overflow policies | Reuse for server, workflow, and supervisor streams. Durable replay remains storage-owned. |
|
|
61
|
-
| Provider boundary | `AIProvider.generate()`, `ProviderEvent`, request policies, bounded SSE/body/argument transport, provider/media/openai helpers | first-party model streams, tool fragments, structured output, abort, metadata | AI SDK is an optional adapter only; no new provider abstraction. |
|
|
62
|
-
| Input/context | `InputBuilder`, `PromptBuilder`, `ContextProvider`, instruction injectors, resource loader, ten middleware hook names | explicit context/prompt assembly and host contributions | Memory and RAG inject through context/middleware; no memory-specific core hook. |
|
|
63
|
-
| Tools | `ToolDefinition`, validator, registry/filter, permission policy, `ExecutionPolicy`, bounded parallel dispatch | schema validation, allow/deny, ownership metadata, ordered tool transcript | Fix policy propagation/identity; durable approval extends workflow checkpoints rather than tool loop internals. |
|
|
64
|
-
| Redaction | `SecretRedactor`, message/event/request/session/ledger redactors | active-path cycle handling, object/Map key redaction, metadata-safe errors | Reuse at every new storage/remote boundary; no second redaction system. |
|
|
65
|
-
| Session/run persistence | `SessionStore`, `RunLedger`, `ProductionPersistenceStore`, cursor pages, ownership scope | sessions, branches, entries, runs, events, tool calls, usage, definitions, retention, migrations | Add narrowly typed records only when package-local stores cannot preserve cross-package run linkage. Vector search stays outside `SessionStore`. |
|
|
66
|
-
| Durable coordination | `CheckpointStore`, `LeaseStore`, fencing tokens; memory/SQLite/PostgreSQL implementations | versioned CAS state, atomic claims, expiry/takeover | Reuse for suspend, schedules, background runs, and replay. No new queue/lock engine. |
|
|
67
|
-
| Workflows | bounded DAG with agent/function/tool/conditional/fan-out/join nodes; checkpoint/resume/cancel/coordinator/RPC | deterministic local and multi-process orchestration | Extended for suspension, schedules/background runs, composition/state/replay without a durable-agent engine. |
|
|
68
|
-
| MCP | client bridge over SDK stdio and Streamable HTTP; list cache, timeout, abort, bounded results | consuming remote MCP tools | Add explicit server exposure in existing package; expose nothing by default. |
|
|
69
|
-
| CLI/RPC | `prism` CLI, LF-delimited RPC, `CommandDefinition`, workflow commands | host-controlled run and durable workflow operations | Add stdlib-only `init`; server remains optional package-owned. |
|
|
70
|
-
| Testing | mock provider plus provider/session/ledger/compaction/tool/extension/persistence conformance | network-free adapter and behavior checks | Add package-specific conformance only for genuinely reusable memory/eval/server seams. Avoid new source-text boundary tests. |
|
|
71
|
-
| Packaging | root plus 29 workspaces; 23 capability packages and six profile bundles | independent installation, dependency-ordered release, pack/import smoke | `prism-all` reaches all 30 packages; provider umbrella reaches all seven adapters; focused profiles stay unchanged. Core keeps zero runtime dependencies. |
|
|
72
|
-
|
|
73
|
-
## Current package and export inventory
|
|
74
|
-
|
|
75
|
-
The publishable graph is root plus 28 workspaces (29 packages). Every package remains explicit; no package discovery exists.
|
|
76
|
-
|
|
77
|
-
| Export group | Current public surface |
|
|
78
|
-
| --- | --- |
|
|
79
|
-
| Root runtime | `@arnilo/prism` |
|
|
80
|
-
| Root provider helpers | `@arnilo/prism/providers/openai-compatible`, `/transport`, `/openai`, `/media` |
|
|
81
|
-
| Root testing helpers | `/testing/provider-conformance`, `/session-store-conformance`, `/compaction-conformance`, `/tool-conformance`, `/extension-conformance`, `/persistence-schema`, `/run-ledger-conformance` |
|
|
82
|
-
| Root Node helpers | `/node/config`, `/settings`, `/trust`, `/session-store-jsonl`, `/contribution-discovery`, `/instruction-injectors`, `/system-prompts`, `/agent-definitions` |
|
|
83
|
-
| Provider packages | `prism-provider-openai`, `-opencode-go`, `-openrouter`, `-zai`, `-kimi`, `-neuralwatt` |
|
|
84
|
-
| Compaction packages | `prism-compaction-llm`, `prism-compaction-observational-memory` |
|
|
85
|
-
| Optional feature packages | `prism-observability-opentelemetry`, `prism-tool-validator-json-schema`, `prism-mcp`, `prism-coding-agent`, `prism-coding-security`, `prism-session-store-sqlite`, `prism-session-store-postgres`, `prism-credentials-node`, `prism-workflows`, `prism-evals`, `prism-provider-ai-sdk`, `prism-memory`, `prism-rag`, `prism-server`, `prism-supervisor` |
|
|
86
|
-
| Profile bundles | `prism-all`, `prism-base`, `prism-code`, `prism-compaction`, `prism-providers`, `prism-sdk` |
|
|
87
|
-
|
|
88
|
-
Core middleware exposes exactly ten built-in hook names: `provider_request`, `input_assembly`, `prompt_build`, `context`, `tool_call`, `tool_result`, `retry`, `compaction`, `session_start`, and `session_shutdown`. Custom string hooks remain extension-owned. New phases reuse these hooks or package APIs unless the owning phase documents a generic cross-package gap.
|
|
89
|
-
|
|
90
|
-
## Package and primitive decisions by phase
|
|
91
|
-
|
|
92
|
-
| Phase | Owner | Existing primitive consumed | Why it is insufficient | Minimum generic addition allowed |
|
|
93
|
-
| --- | --- | --- | --- | --- |
|
|
94
|
-
| 1 | core, coding-agent, coding-security | content policy, execution policy, approval policy | hostname normalization/DNS pinning and cache identity are incomplete | normalized/pinned network seam and execution run/session identity only |
|
|
95
|
-
| 2 | core, coding-security, OTel, providers | bash callback, runtime events, usage rows, media resolver | callbacks/terminal states/accounting/request aggregation are incomplete | sandbox output callback; usage scope/aggregate; request-level media resolver |
|
|
96
|
-
| 3 | core | session run, loop, events | no direct terminal result or integrated stream | `AgentRunResult` and one stream wrapper |
|
|
97
|
-
| 4 | optional eval package | Phase 3 result, IDs, persistence | no scorer/dataset record or bounded runner | package-local contracts; generic persistence addition only for durable cross-package linkage |
|
|
98
|
-
| 5 | root CLI | CLI and compile-checked examples | `prism init` + `templates/init` | templates and command only; no new library primitive |
|
|
99
|
-
| 6 | optional AI SDK provider | `AIProvider` and provider conformance | AI SDK models do not implement Prism's interface | adapter only; no core change |
|
|
100
|
-
| 7 | optional memory plus PostgreSQL adapter | context, ownership, middleware | no embedding/vector/working-memory contract | package-owned contracts and one production adapter |
|
|
101
|
-
| 8 | workflows/coding-security | checkpoint/resume/lease/policy | completed: suspended/denied state, validated/redacted resume, expected-version CAS, tool policy recheck | workflow status/checkpoint extension; no generic scheduler |
|
|
102
|
-
| 9 | optional RAG | Phase 7 and context/resource limits | completed: bounded text/Markdown chunk/index/filter/retrieve/citation/context helpers | package-only helpers |
|
|
103
|
-
| 10 | optional server and MCP | Web APIs, result/stream, workflow commands, MCP SDK | completed: bounded authorized agent/workflow Web handler plus explicit MCP tool/command registration and SDK Web transport | package-owned handler/router and MCP registrations |
|
|
104
|
-
| 11 | workflows/persistence | coordinator/checkpoint/lease/DAG | completed: ownership-scoped one-time/interval/calculated schedules, deterministic background enqueue, nested runner composition, bounded validated state/history, immutable replay lineage and fresh approval checks | package records over existing generic checkpoint/lease primitives; no migration or second worker engine |
|
|
105
|
-
| 12 | persistence/evals/OTel | run/trace IDs and cursor queries | completed: immutable exact-owned feedback append/query/delete, ID-only evaluation linkage, migration-003 SQLite/PostgreSQL stores, safe span projection and fixed-label counters | one bounded typed record/store plus optional OTel handlers; no vendor exporter |
|
|
106
|
-
| 13 | optional supervisor/A2A | session result, memory scope, policy, event multiplexer, Request/Response, WebCrypto | completed: explicit bounded child delegation, narrowing permissions/hooks, derived scopes, A2A 1.0 cards/ES256/JSON-RPC/SSE/exact-origin client | one zero-dependency optional package; text-only protocol subset |
|
|
107
|
-
| 14 | release/docs/tests | deterministic release and pack checks | completed: graph/docs/changelogs retargeted to 0.0.5; packed cross-capability and release matrix evidence recorded | no release-time source split; all umbrella inclusion preserves independent direct installs and inert activation |
|
|
108
|
-
|
|
109
|
-
## Threat-boundary matrix
|
|
110
|
-
|
|
111
|
-
| Boundary | Untrusted input / asset | Primary risks | Required 0.0.5 controls | Owner |
|
|
112
|
-
| --- | --- | --- | --- | --- |
|
|
113
|
-
| Media network fetch | URL, hostname, DNS answer, response bytes/MIME | private-network access, rebinding, redirects, decompression/size abuse | normalize literals, classify all private ranges, resolve and pin public address or require allow-list/injected hardened loader, reject redirects, timeout/abort, per-item and whole-request bounds before provider side effects | Phases 1-2 |
|
|
114
|
-
| Tool execution | model-produced name/arguments/path/command | shell execution, traversal/symlink escape, policy bypass, output exhaustion | schema/filter/permission/execution policy on every aggregator, realpath containment, approval, sandbox, abort, bounded/redacted output | Phases 1-2 |
|
|
115
|
-
| Approval cache/resume | action and human decision | cross-run/session/tenant decision reuse, stale approval, duplicate side effect | default no cache, identity-bound keys, durable owner check, version/fencing/idempotency, policy recheck on resume | Phases 1 and 8 |
|
|
116
|
-
| Remote HTTP/MCP | request body, identity headers, selected capability, stream consumer | unauthorized capability use, DoS, data leak, orphaned runs | expose nothing by default, host auth callback, owner checks, body/event/concurrency/time bounds, disconnect abort, redacted errors | Phase 10 |
|
|
117
|
-
| Working/semantic memory and RAG | stored user text, embeddings, retrieved documents/metadata | cross-tenant recall, prompt injection, retention leak, unbounded context | mandatory tenant/resource/thread scope, bounded top-K/context, redaction, inert context, host retention/deletion | Phases 7 and 9 |
|
|
118
|
-
| Workflow suspend/schedule/replay | resume payload, checkpoint, schedule, source run | forged resume, stale worker, duplicate fire/side effect, approval replay | schema validation, authorization, CAS/fencing, idempotency, immutable lineage, bounded state/history | Phases 8 and 11 |
|
|
119
|
-
| Feedback/evaluation | comments, tags, scorer output, dataset items | PII/secret persistence, tenant leak, metric-cardinality explosion | ownership, redaction, limits, retention, no free text in metric labels, scorer isolation | Phases 4 and 12 |
|
|
120
|
-
| Supervisor delegation | child prompt/result, selected child/tool, delegated memory | privilege amplification, recursive/cyclic delegation, budget exhaustion, memory/credential leak | implemented: explicit allow-list, AND-only permission narrowing, unique resources, depth/concurrency/token/time/tool limits, cancellation propagation | Phase 13 complete |
|
|
121
|
-
| A2A | remote card, signature, task/message stream | impersonation, replay, malicious/oversized remote content, SSRF/credential forwarding | implemented: protocol-1.0 validation, host auth, ES256 signature/expiry verification, exact HTTPS origin allow-list/redirect rejection, bounds/timeouts/abort, untrusted output mapping | Phase 13 complete |
|
|
122
|
-
|
|
123
|
-
## Capabilities already present — do not reimplement
|
|
124
|
-
|
|
125
|
-
| Existing capability | Evidence | 0.0.5 rule |
|
|
126
|
-
| --- | --- | --- |
|
|
127
|
-
| Revision ownership/redaction fix and valid multi-round tool transcript | `src/agent-loops.ts`, `src/redaction.ts`, regression tests | Preserve; Phase 3 reuses loop output. |
|
|
128
|
-
| Object and `Map` key redaction, active-path cycle handling | redaction suite | Use the same redactor everywhere. |
|
|
129
|
-
| Bounded provider SSE, error body, argument parsing, retry, native structured output | provider primitives and conformance | Adapters reuse these helpers/limits. |
|
|
130
|
-
| Polling OpenAI device OAuth | provider-openai OAuth tests | No new credential flow in core. |
|
|
131
|
-
| JSON Schema tool validation, bounded parallel calls, exclusive tools | core/tool-validator and loop tests | Preserve shared dispatch. |
|
|
132
|
-
| MCP client bridge | `@arnilo/prism-mcp` | Phase 10 adds server direction only. |
|
|
133
|
-
| SQLite/PostgreSQL production persistence, checkpoints, leases | adapter conformance/live CI | Extend only required records/migrations. |
|
|
134
|
-
| Encrypted file/keychain credentials | `@arnilo/prism-credentials-node` | Hosts keep explicit credential ownership. |
|
|
135
|
-
| Audio/file/document blocks and MIME/size checks | core/provider media tests | Fix SSRF/request aggregation; do not add a second media model. |
|
|
136
|
-
| OpenTelemetry agent/provider/tool instrumentation | optional OTel package | Correct lifecycle/accounting; no vendor matrix. |
|
|
137
|
-
| Bounded DAG workflows and distributed coordinator | workflows package | Extend the same engine. |
|
|
138
|
-
| Deterministic resumable package release | `scripts/release.mjs`, release workflow/tests | Retarget to 0.0.5 only after all gates. |
|
|
139
|
-
|
|
140
|
-
## Explicit exclusions
|
|
141
|
-
|
|
142
|
-
0.0.5 does not include Studio/editor/cloud services, browser automation, voice providers, chat-channel adapters, framework-specific HTTP adapters, auth-provider packages, deployment-provider packages, vendor observability exporters, a vector-store matrix, advanced document parsers/GraphRAG, an interactive TUI, automatic discovery/activation, or a mandatory central application object.
|
|
143
|
-
|
|
144
|
-
A cron-expression parser is also excluded: Phase 11 provides one-time timestamps, fixed intervals, and a host-supplied next-run calculator. Add a cron adapter only from a concrete requirement.
|
|
145
|
-
|
|
146
|
-
## Frozen baseline summary
|
|
147
|
-
|
|
148
|
-
Detailed commands and measurements are in [Performance limits](performance.md#005-phase-0-baseline-2026-07-15).
|
|
149
|
-
|
|
150
|
-
| Area | Frozen value |
|
|
151
|
-
| --- | --- |
|
|
152
|
-
| Runtime/toolchain | Node 24.18.0 measurement host; npm 11.16.0; supported runtime remains Node >=20 |
|
|
153
|
-
| Full network-free tests | 1,475 total; 1,450 pass; 25 explicit live skips; 0 fail; 25.750 s |
|
|
154
|
-
| `sdk:ready` | pass; 54.341 s |
|
|
155
|
-
| Publishable graph | 24 packages at Phase 0 freeze; 25 after Phase 4 (evals); 26 after Phase 6 (AI SDK); 27 after Phase 7 (memory); 28 after Phase 9 (RAG); 29 after Phase 10 (server); 30 after Phase 13 (supervisor/A2A). Phase 14 follow-up puts all 30 behind `prism-all` and all seven adapters behind `prism-providers`. |
|
|
156
|
-
| Tarballs | 542,993 packed bytes / 2,084,900 unpacked bytes aggregate; root 346.0 kB / 1.3 MB |
|
|
157
|
-
| Installed workspace | 72 MiB `node_modules` |
|
|
158
|
-
| Source/tests | 189 production TypeScript files / 26,828 lines; 144 test files / 23,535 lines |
|
|
159
|
-
| Docs/plans/examples | 70 docs / 12,662 lines; 58 plans / 24,270 lines; 39 examples / 3,134 lines |
|
|
160
|
-
| Current generator | `prism init`; default sources ~3.3 KB / 8 files; default clean install ~27.5 MB vs Mastra 439 MB |
|
|
161
|
-
| Mastra comparator | default scaffold measured 439 MB `node_modules`, 300 MB build output, 427 installed packages |
|
|
162
|
-
|
|
163
|
-
## Phase 0 verification
|
|
164
|
-
|
|
165
|
-
Executed from repository root at frozen HEAD:
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
npm test
|
|
169
|
-
npm run sdk:ready
|
|
170
|
-
for i in 1 2 3 4 5; do node --test packages/workflows/dist/__tests__/coordinator.test.js; done
|
|
171
|
-
node /tmp/prism-phase0-bench.mjs
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
Results:
|
|
175
|
-
|
|
176
|
-
- Pre-change baseline and post-documentation full checks passed with zero failures. Final `sdk:ready` completed in 57.764 s with all 24 dry-run packs; the frozen pre-change value remains 54.341 s.
|
|
177
|
-
- Coordinator suite passed five consecutive runs after the pre-freeze test correction.
|
|
178
|
-
- Traceability validation found 14 unique confirmed-finding IDs, 12 unique capability IDs, all roadmap phases 0-14, and no missing or duplicate owner.
|
|
179
|
-
- The benchmark script was temporary because these measurements are dated evidence, not CI wall-clock assertions.
|
|
180
|
-
|
|
181
|
-
## Documentation reviewed
|
|
182
|
-
|
|
183
|
-
- Local: `docs/index.md`, `public-contracts.md`, `agent-session-runtime.md`, `agent-loops.md`, `runs-and-usage.md`, `workflows.md`, `workflow-orchestration-primitives.md`, `host-security.md`, `release-and-install.md`, `performance.md`, and `review-coverage-2026-07-14.md`.
|
|
184
|
-
- Source: core contracts/runtime/middleware/input/tools/content/redaction/persistence/checkpoint/lease/provider primitives, workflow package, optional package manifests/exports, and all seven testing conformance helpers.
|
|
185
|
-
- Comparison: Mastra repository commit `2745031d1d4a4978f037092da371428c32e2842a` and current docs/source reviewed on 2026-07-15 for agents, memory, RAG, workflows, evals, observability, server, MCP, scheduling, supervisors, and A2A.
|
|
186
|
-
|
|
187
|
-
## Related pages
|
|
188
|
-
|
|
189
|
-
- [Roadmap](../roadmap.md): executable Phase 0-14 plan and release gate.
|
|
190
|
-
- [Review coverage — 2026-07-14](review-coverage-2026-07-14.md): evidence for capabilities already shipped before this review.
|
|
191
|
-
- [Performance limits](performance.md): dated baseline details and existing runtime limits.
|
|
192
|
-
- [Host security](host-security.md): current host responsibilities pending the Phase 1-2 corrections.
|
|
193
|
-
- [Release and install](release-and-install.md): current package graph and deterministic publication process.
|