approval-md 0.1.0 → 0.3.0
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/README.md +629 -559
- package/SPEC.md +99 -24
- package/dist/src/adapters/agentmail.d.ts +426 -0
- package/dist/src/adapters/agentmail.js +2 -2
- package/dist/src/adapters/conformance.d.ts +149 -0
- package/dist/src/adapters/contract.d.ts +628 -0
- package/dist/src/adapters/contract.js +110 -16
- package/dist/src/adapters/contract.js.map +1 -1
- package/dist/src/adapters/email.d.ts +324 -0
- package/dist/src/adapters/env-passphrase.d.ts +93 -0
- package/dist/src/adapters/public.d.ts +11 -0
- package/dist/src/adapters/public.js +11 -0
- package/dist/src/adapters/public.js.map +1 -0
- package/dist/src/adapters/registry.d.ts +59 -0
- package/dist/src/adapters/registry.js +2 -1
- package/dist/src/adapters/registry.js.map +1 -1
- package/dist/src/adapters/smtp.d.ts +213 -0
- package/dist/src/adapters/vault-provider.d.ts +114 -0
- package/dist/src/adapters/vault-provider.js +3 -3
- package/dist/src/adapters/zzz.d.ts +66 -0
- package/dist/src/adapters/zzz.js +299 -0
- package/dist/src/adapters/zzz.js.map +1 -0
- package/dist/src/channels/batch.d.ts +109 -0
- package/dist/src/channels/cli.d.ts +193 -0
- package/dist/src/channels/conformance.d.ts +92 -0
- package/dist/src/channels/contract.d.ts +656 -0
- package/dist/src/channels/contract.js +200 -7
- package/dist/src/channels/contract.js.map +1 -1
- package/dist/src/channels/payload-view.d.ts +35 -0
- package/dist/src/channels/render-queue.d.ts +149 -0
- package/dist/src/channels/tagging.d.ts +196 -0
- package/dist/src/channels/telegram.d.ts +1944 -0
- package/dist/src/channels/telegram.js +218 -23
- package/dist/src/channels/telegram.js.map +1 -1
- package/dist/src/channels/web.d.ts +350 -0
- package/dist/src/channels/web.js +17 -0
- package/dist/src/channels/web.js.map +1 -1
- package/dist/src/cli/adapter.d.ts +90 -0
- package/dist/src/cli/adapter.js +25 -15
- package/dist/src/cli/adapter.js.map +1 -1
- package/dist/src/cli/amend.d.ts +59 -0
- package/dist/src/cli/amend.js +214 -30
- package/dist/src/cli/amend.js.map +1 -1
- package/dist/src/cli/args.d.ts +43 -0
- package/dist/src/cli/attest.d.ts +50 -0
- package/dist/src/cli/attest.js +134 -7
- package/dist/src/cli/attest.js.map +1 -1
- package/dist/src/cli/audit-card.d.ts +62 -0
- package/dist/src/cli/audit.d.ts +59 -0
- package/dist/src/cli/channel-telegram.d.ts +879 -0
- package/dist/src/cli/channel-telegram.js +311 -13
- package/dist/src/cli/channel-telegram.js.map +1 -1
- package/dist/src/cli/channel-web.d.ts +131 -0
- package/dist/src/cli/channel.d.ts +80 -0
- package/dist/src/cli/channel.js +9 -0
- package/dist/src/cli/channel.js.map +1 -1
- package/dist/src/cli/checkpoint-tap.d.ts +169 -0
- package/dist/src/cli/codex-bridge.d.ts +819 -0
- package/dist/src/cli/codex-bridge.js +1607 -0
- package/dist/src/cli/codex-bridge.js.map +1 -0
- package/dist/src/cli/codex.d.ts +2 -0
- package/dist/src/cli/codex.js +469 -0
- package/dist/src/cli/codex.js.map +1 -0
- package/dist/src/cli/coverage.d.ts +61 -0
- package/dist/src/cli/daemon.d.ts +120 -0
- package/dist/src/cli/daemon.js +4 -1
- package/dist/src/cli/daemon.js.map +1 -1
- package/dist/src/cli/doctor.d.ts +129 -0
- package/dist/src/cli/doctor.js +586 -17
- package/dist/src/cli/doctor.js.map +1 -1
- package/dist/src/cli/env.d.ts +65 -0
- package/dist/src/cli/execute.d.ts +202 -0
- package/dist/src/cli/execute.js +25 -2
- package/dist/src/cli/execute.js.map +1 -1
- package/dist/src/cli/exit-codes.d.ts +73 -0
- package/dist/src/cli/feedback.d.ts +60 -0
- package/dist/src/cli/gate-window.d.ts +40 -0
- package/dist/src/cli/gate.d.ts +68 -0
- package/dist/src/cli/git-scope.d.ts +190 -0
- package/dist/src/cli/gloss-attach.d.ts +85 -0
- package/dist/src/cli/gloss-codex-child.d.ts +9 -0
- package/dist/src/cli/gloss-codex.d.ts +24 -0
- package/dist/src/cli/gloss-options.d.ts +42 -0
- package/dist/src/cli/gloss.d.ts +265 -0
- package/dist/src/cli/help.d.ts +107 -0
- package/dist/src/cli/help.js +320 -93
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/hook-codex.d.ts +126 -0
- package/dist/src/cli/hook-codex.js +226 -0
- package/dist/src/cli/hook-codex.js.map +1 -0
- package/dist/src/cli/hook.d.ts +787 -0
- package/dist/src/cli/hook.js +1235 -181
- package/dist/src/cli/hook.js.map +1 -1
- package/dist/src/cli/import.d.ts +35 -0
- package/dist/src/cli/import.js +1 -1
- package/dist/src/cli/import.js.map +1 -1
- package/dist/src/cli/init.d.ts +84 -0
- package/dist/src/cli/init.js +2 -2
- package/dist/src/cli/init.js.map +1 -1
- package/dist/src/cli/instructions.d.ts +23 -0
- package/dist/src/cli/journal.d.ts +41 -0
- package/dist/src/cli/log-advance.d.ts +287 -0
- package/dist/src/cli/log-advance.js +102 -11
- package/dist/src/cli/log-advance.js.map +1 -1
- package/dist/src/cli/log-anchor.d.ts +176 -0
- package/dist/src/cli/log-checkpoint.d.ts +22 -0
- package/dist/src/cli/log-sync.d.ts +243 -0
- package/dist/src/cli/log-verbs.d.ts +16 -0
- package/dist/src/cli/log-verbs.js +7 -1
- package/dist/src/cli/log-verbs.js.map +1 -1
- package/dist/src/cli/long-help.d.ts +70 -0
- package/dist/src/cli/main.d.ts +77 -0
- package/dist/src/cli/main.js +159 -7
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/mcp.d.ts +52 -0
- package/dist/src/cli/paths.d.ts +56 -0
- package/dist/src/cli/payload.d.ts +58 -0
- package/dist/src/cli/policy-apply.d.ts +195 -0
- package/dist/src/cli/policy-apply.js +573 -0
- package/dist/src/cli/policy-apply.js.map +1 -0
- package/dist/src/cli/policy.d.ts +43 -0
- package/dist/src/cli/policy.js +14 -1
- package/dist/src/cli/policy.js.map +1 -1
- package/dist/src/cli/preflight.d.ts +501 -0
- package/dist/src/cli/preflight.js +689 -45
- package/dist/src/cli/preflight.js.map +1 -1
- package/dist/src/cli/progress.d.ts +78 -0
- package/dist/src/cli/prompt.d.ts +209 -0
- package/dist/src/cli/quickstart.d.ts +46 -0
- package/dist/src/cli/quickstart.js +297 -0
- package/dist/src/cli/quickstart.js.map +1 -0
- package/dist/src/cli/records.d.ts +34 -0
- package/dist/src/cli/render.d.ts +22 -0
- package/dist/src/cli/sandbox.d.ts +51 -0
- package/dist/src/cli/sandbox.js +17 -1
- package/dist/src/cli/sandbox.js.map +1 -1
- package/dist/src/cli/scaffold.d.ts +79 -0
- package/dist/src/cli/scaffold.js +1 -1
- package/dist/src/cli/setup-adapter.d.ts +137 -0
- package/dist/src/cli/setup-adapter.js +38 -4
- package/dist/src/cli/setup-adapter.js.map +1 -1
- package/dist/src/cli/setup-channel.d.ts +126 -0
- package/dist/src/cli/setup-channel.js +28 -1
- package/dist/src/cli/setup-channel.js.map +1 -1
- package/dist/src/cli/setup-checkpoint.d.ts +57 -0
- package/dist/src/cli/setup-common.d.ts +277 -0
- package/dist/src/cli/setup-common.js +3 -2
- package/dist/src/cli/setup-common.js.map +1 -1
- package/dist/src/cli/setup-flow.d.ts +287 -0
- package/dist/src/cli/setup-service.d.ts +96 -0
- package/dist/src/cli/setup.d.ts +204 -0
- package/dist/src/cli/setup.js +94 -2
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli/style.d.ts +320 -0
- package/dist/src/cli/token.d.ts +39 -0
- package/dist/src/cli/up.d.ts +155 -0
- package/dist/src/cli/up.js +119 -53
- package/dist/src/cli/up.js.map +1 -1
- package/dist/src/cli/usage.d.ts +37 -0
- package/dist/src/cli/values.d.ts +40 -0
- package/dist/src/cli/values.js +3 -4
- package/dist/src/cli/values.js.map +1 -1
- package/dist/src/cli/vault.d.ts +59 -0
- package/dist/src/cli/vault.js +2 -2
- package/dist/src/cli/vault.js.map +1 -1
- package/dist/src/cli/verb-registry.d.ts +76 -0
- package/dist/src/cli/verb-registry.js +344 -11
- package/dist/src/cli/verb-registry.js.map +1 -1
- package/dist/src/cli/wordmark.d.ts +31 -0
- package/dist/src/cli/wordmark.js +2 -2
- package/dist/src/codex/broker.d.ts +229 -0
- package/dist/src/codex/broker.js +548 -0
- package/dist/src/codex/broker.js.map +1 -0
- package/dist/src/codex/doctor.d.ts +13 -0
- package/dist/src/codex/doctor.js +41 -0
- package/dist/src/codex/doctor.js.map +1 -0
- package/dist/src/codex/manifest.d.ts +49 -0
- package/dist/src/codex/manifest.js +103 -0
- package/dist/src/codex/manifest.js.map +1 -0
- package/dist/src/codex/runner.d.ts +178 -0
- package/dist/src/codex/runner.js +231 -0
- package/dist/src/codex/runner.js.map +1 -0
- package/dist/src/codex/serve.d.ts +56 -0
- package/dist/src/codex/serve.js +98 -0
- package/dist/src/codex/serve.js.map +1 -0
- package/dist/src/codex/templates.d.ts +41 -0
- package/dist/src/codex/templates.js +319 -0
- package/dist/src/codex/templates.js.map +1 -0
- package/dist/src/codex/trust.d.ts +19 -0
- package/dist/src/codex/trust.js +183 -0
- package/dist/src/codex/trust.js.map +1 -0
- package/dist/src/codex/workspace-commit.d.ts +219 -0
- package/dist/src/codex/workspace-commit.js +549 -0
- package/dist/src/codex/workspace-commit.js.map +1 -0
- package/dist/src/codex/workspace-plan.d.ts +131 -0
- package/dist/src/codex/workspace-plan.js +561 -0
- package/dist/src/codex/workspace-plan.js.map +1 -0
- package/dist/src/core/actor.d.ts +2 -0
- package/dist/src/core/actor.js +5 -0
- package/dist/src/core/actor.js.map +1 -0
- package/dist/src/core/advance-cycle.d.ts +221 -0
- package/dist/src/core/advance-cycle.js +66 -2
- package/dist/src/core/advance-cycle.js.map +1 -1
- package/dist/src/core/agents-md.d.ts +278 -0
- package/dist/src/core/agents-md.js +33 -31
- package/dist/src/core/agents-md.js.map +1 -1
- package/dist/src/core/apply-patch.d.ts +49 -0
- package/dist/src/core/apply-patch.js +266 -0
- package/dist/src/core/apply-patch.js.map +1 -0
- package/dist/src/core/attest.d.ts +635 -0
- package/dist/src/core/attest.js +326 -4
- package/dist/src/core/attest.js.map +1 -1
- package/dist/src/core/audit.d.ts +510 -0
- package/dist/src/core/audit.js +13 -0
- package/dist/src/core/audit.js.map +1 -1
- package/dist/src/core/budgets.d.ts +238 -0
- package/dist/src/core/channel-owner.d.ts +213 -0
- package/dist/src/core/channel-owner.js +358 -0
- package/dist/src/core/channel-owner.js.map +1 -0
- package/dist/src/core/checkpoint.d.ts +500 -0
- package/dist/src/core/child-env.d.ts +88 -0
- package/dist/src/core/clock.d.ts +52 -0
- package/dist/src/core/command-class.d.ts +697 -0
- package/dist/src/core/command-class.js +713 -25
- package/dist/src/core/command-class.js.map +1 -1
- package/dist/src/core/commit-guard.d.ts +272 -0
- package/dist/src/core/commit-guard.js +424 -0
- package/dist/src/core/commit-guard.js.map +1 -0
- package/dist/src/core/coverage-sources/adapter.d.ts +40 -0
- package/dist/src/core/coverage-sources/gh.d.ts +48 -0
- package/dist/src/core/coverage-sources/git.d.ts +101 -0
- package/dist/src/core/coverage.d.ts +217 -0
- package/dist/src/core/credential-spec.d.ts +72 -0
- package/dist/src/core/daemon-actor.d.ts +45 -0
- package/dist/src/core/daemon-actor.js +54 -0
- package/dist/src/core/daemon-actor.js.map +1 -0
- package/dist/src/core/dark-session.d.ts +432 -0
- package/dist/src/core/dark-session.js +266 -82
- package/dist/src/core/dark-session.js.map +1 -1
- package/dist/src/core/decision-refusal.d.ts +206 -0
- package/dist/src/core/decision-refusal.js +24 -2
- package/dist/src/core/decision-refusal.js.map +1 -1
- package/dist/src/core/env-file.d.ts +455 -0
- package/dist/src/core/env-file.js +60 -1
- package/dist/src/core/env-file.js.map +1 -1
- package/dist/src/core/execute.d.ts +871 -0
- package/dist/src/core/execute.js +59 -8
- package/dist/src/core/execute.js.map +1 -1
- package/dist/src/core/frontmatter.d.ts +78 -0
- package/dist/src/core/gate-window.d.ts +312 -0
- package/dist/src/core/gate.d.ts +1449 -0
- package/dist/src/core/gate.js +149 -14
- package/dist/src/core/gate.js.map +1 -1
- package/dist/src/core/gesture-refusal.d.ts +166 -0
- package/dist/src/core/gesture-refusal.js +188 -0
- package/dist/src/core/gesture-refusal.js.map +1 -0
- package/dist/src/core/git-run.d.ts +73 -0
- package/dist/src/core/harness-version.d.ts +157 -0
- package/dist/src/core/harness-version.js +4 -1
- package/dist/src/core/harness-version.js.map +1 -1
- package/dist/src/core/harness-wait.d.ts +55 -0
- package/dist/src/core/head-retry.d.ts +107 -0
- package/dist/src/core/instance.d.ts +310 -0
- package/dist/src/core/instance.js +113 -0
- package/dist/src/core/instance.js.map +1 -1
- package/dist/src/core/intake-limits.d.ts +247 -0
- package/dist/src/core/jcs.d.ts +52 -0
- package/dist/src/core/journal.d.ts +144 -0
- package/dist/src/core/live-draw.d.ts +436 -0
- package/dist/src/core/log-reconcile.d.ts +89 -0
- package/dist/src/core/log-subscribe.d.ts +36 -0
- package/dist/src/core/log-subscribe.js +162 -0
- package/dist/src/core/log-subscribe.js.map +1 -0
- package/dist/src/core/log.d.ts +316 -0
- package/dist/src/core/log.js.map +1 -1
- package/dist/src/core/loop.d.ts +274 -0
- package/dist/src/core/loop.js +11 -0
- package/dist/src/core/loop.js.map +1 -1
- package/dist/src/core/md-fence.d.ts +41 -0
- package/dist/src/core/money.d.ts +147 -0
- package/dist/src/core/payload-census.d.ts +74 -0
- package/dist/src/core/payload-store.d.ts +175 -0
- package/dist/src/core/payload.d.ts +71 -0
- package/dist/src/core/policy-diff.d.ts +292 -0
- package/dist/src/core/policy-diff.js +27 -4
- package/dist/src/core/policy-diff.js.map +1 -1
- package/dist/src/core/policy-expectations.d.ts +199 -0
- package/dist/src/core/policy-explain.d.ts +160 -0
- package/dist/src/core/policy-explain.js +63 -3
- package/dist/src/core/policy-explain.js.map +1 -1
- package/dist/src/core/policy-load.d.ts +567 -0
- package/dist/src/core/policy-load.js +36 -6
- package/dist/src/core/policy-load.js.map +1 -1
- package/dist/src/core/policy-match.d.ts +324 -0
- package/dist/src/core/policy-match.js +72 -9
- package/dist/src/core/policy-match.js.map +1 -1
- package/dist/src/core/policy-proposal.d.ts +317 -0
- package/dist/src/core/policy-proposal.js +102 -2
- package/dist/src/core/policy-proposal.js.map +1 -1
- package/dist/src/core/prompt-layout.d.ts +221 -0
- package/dist/src/core/protected-path-guard.d.ts +566 -0
- package/dist/src/core/protected-path-guard.js +848 -55
- package/dist/src/core/protected-path-guard.js.map +1 -1
- package/dist/src/core/question-preempted.d.ts +141 -0
- package/dist/src/core/question-preempted.js +152 -0
- package/dist/src/core/question-preempted.js.map +1 -0
- package/dist/src/core/read-scope.d.ts +172 -0
- package/dist/src/core/read-scope.js +252 -0
- package/dist/src/core/read-scope.js.map +1 -0
- package/dist/src/core/registration.d.ts +25 -0
- package/dist/src/core/reindex.d.ts +99 -0
- package/dist/src/core/sampler.d.ts +313 -0
- package/dist/src/core/sandbox.d.ts +371 -0
- package/dist/src/core/sandbox.js +190 -1
- package/dist/src/core/sandbox.js.map +1 -1
- package/dist/src/core/seal.d.ts +165 -0
- package/dist/src/core/sender-identity.d.ts +476 -0
- package/dist/src/core/sender-identity.js +572 -0
- package/dist/src/core/sender-identity.js.map +1 -0
- package/dist/src/core/shlex.d.ts +102 -0
- package/dist/src/core/shlex.js +159 -0
- package/dist/src/core/shlex.js.map +1 -0
- package/dist/src/core/state.d.ts +505 -0
- package/dist/src/core/task-file.d.ts +185 -0
- package/dist/src/core/telegram-config.d.ts +93 -0
- package/dist/src/core/token.d.ts +409 -0
- package/dist/src/core/token.js +21 -38
- package/dist/src/core/token.js.map +1 -1
- package/dist/src/core/validate.d.ts +138 -0
- package/dist/src/core/values.d.ts +147 -0
- package/dist/src/core/values.js +36 -1
- package/dist/src/core/values.js.map +1 -1
- package/dist/src/core/vault.d.ts +291 -0
- package/dist/src/core/verified-snapshot.d.ts +204 -0
- package/dist/src/core/verify.d.ts +336 -0
- package/dist/src/core/version.d.ts +8 -0
- package/dist/src/core/wysiwys.d.ts +370 -0
- package/dist/src/daemon/advance-child.d.ts +39 -0
- package/dist/src/daemon/advance.d.ts +476 -0
- package/dist/src/daemon/advance.js +25 -4
- package/dist/src/daemon/advance.js.map +1 -1
- package/dist/src/daemon/audit.d.ts +87 -0
- package/dist/src/daemon/daemon.d.ts +1180 -0
- package/dist/src/daemon/daemon.js +9 -0
- package/dist/src/daemon/daemon.js.map +1 -1
- package/dist/src/daemon/dark-session.d.ts +64 -0
- package/dist/src/daemon/draw-child.d.ts +36 -0
- package/dist/src/daemon/draw.d.ts +154 -0
- package/dist/src/daemon/git-evidence.d.ts +173 -0
- package/dist/src/daemon/git-evidence.js +1 -1
- package/dist/src/daemon/projection.d.ts +180 -0
- package/dist/src/daemon/prune.d.ts +207 -0
- package/dist/src/mcp/http.d.ts +113 -0
- package/dist/src/mcp/server.d.ts +265 -0
- package/dist/src/mcp/server.js +17 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/docs/adapter-api.md +106 -0
- package/docs/cli-reference.md +1316 -63
- package/docs/codex-enforced-session.md +103 -0
- package/docs/codex-workspace-broker.md +118 -0
- package/package.json +14 -2
- package/schema/codex-instance.schema.json +82 -0
- package/schema/event.schema.json +539 -9
- package/schema/fixtures/codex-instance/invalid/unpinned-codex-version.json +40 -0
- package/schema/fixtures/codex-instance/valid/canonical.json +40 -0
- package/schema/fixtures/event/invalid/approval-granted-sender-hashed-false.json +20 -0
- package/schema/fixtures/event/invalid/approval-granted-sender-hashed-raw-id.json +20 -0
- package/schema/fixtures/event/invalid/audit-gesture-refused-human-actor.json +16 -0
- package/schema/fixtures/event/invalid/audit-gesture-refused-no-actor-no-sender.json +15 -0
- package/schema/fixtures/event/invalid/audit-gesture-refused-unknown-gesture.json +16 -0
- package/schema/fixtures/event/invalid/audit-question-preempted-agent-actor.json +16 -0
- package/schema/fixtures/event/invalid/audit-question-preempted-no-question-id.json +16 -0
- package/schema/fixtures/event/invalid/audit-question-preempted-unknown-source.json +15 -0
- package/schema/fixtures/event/invalid/gate-path-signed-off-absolute-path.json +14 -0
- package/schema/fixtures/event/invalid/gate-path-signed-off-agent-actor.json +14 -0
- package/schema/fixtures/event/invalid/gate-path-signed-off-missing-path.json +13 -0
- package/schema/fixtures/event/valid/approval-granted-sender-hashed.json +20 -0
- package/schema/fixtures/event/valid/audit-gesture-refused-review-note.json +21 -0
- package/schema/fixtures/event/valid/audit-gesture-refused-sender-key-unavailable.json +19 -0
- package/schema/fixtures/event/valid/audit-gesture-refused.json +19 -0
- package/schema/fixtures/event/valid/audit-question-preempted-no-verdict.json +16 -0
- package/schema/fixtures/event/valid/audit-question-preempted.json +20 -0
- package/schema/fixtures/event/valid/gate-path-signed-off.json +14 -0
- package/schema/fixtures/event/valid/harness-kind-claude-code.json +23 -0
- package/schema/fixtures/event/valid/harness-kind-codex.json +23 -0
- package/schema/fixtures/event/valid/harness-kind-cursor.json +23 -0
- package/schema/fixtures/event/valid/harness-kind-grok.json +23 -0
- package/schema/fixtures/event/valid/harness-kind-muse.json +23 -0
- package/schema/fixtures/policy/invalid/senders-half-keyed.json +20 -0
- package/schema/fixtures/policy/valid/canonical.json +1 -1
- package/schema/fixtures/policy/valid/senders-keyed.json +24 -0
- package/schema/fixtures/policy-md/valid/canonical.md +1 -1
- package/schema/fixtures/policy-md/valid/with-values.md +5 -7
- package/schema/fixtures/values/invalid/class-shaped.json +1 -1
- package/schema/fixtures/values/invalid/duplicate-entry.json +1 -1
- package/schema/fixtures/values/invalid/non-string-item.json +1 -1
- package/schema/fixtures/values/invalid/over-cap.json +1 -1
- package/schema/fixtures/values/invalid/unknown-key.json +1 -1
- package/schema/fixtures/values/invalid/version-float.json +1 -0
- package/schema/fixtures/values/invalid/version-integer.json +1 -0
- package/schema/fixtures/values/invalid/version-wrong-string.json +1 -0
- package/schema/fixtures/values/valid/empty-lists.json +2 -3
- package/schema/fixtures/values/valid/full.json +5 -7
- package/schema/fixtures/values/valid/minimal.json +1 -1
- package/schema/fixtures/values-md/invalid/schema-invalid.md +5 -3
- package/schema/fixtures/values-md/invalid/two-blocks.md +3 -3
- package/schema/fixtures/values-md/invalid/unterminated.md +2 -2
- package/schema/fixtures/values-md/invalid/version-1.md +69 -0
- package/schema/fixtures/values-md/invalid/version-unquoted.md +64 -0
- package/schema/fixtures/values-md/invalid/yaml-error.md +2 -2
- package/schema/fixtures/values-md/valid/absent.md +1 -1
- package/schema/fixtures/values-md/valid/with-values.md +5 -7
- package/schema/policy.schema.json +75 -3
- package/schema/values.schema.json +7 -11
- package/templates/codex/README.md +9 -0
- package/schema/fixtures/values/invalid/version-string.json +0 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The payload store: one source of bytes for the gate, the render, and every
|
|
3
|
+
* channel (SPEC.md §6.2, §9, §10.4; APRV-28).
|
|
4
|
+
*
|
|
5
|
+
* SPEC.md §6.2 already asks for this in one clause — "The payload itself is
|
|
6
|
+
* stored or referenced by the request so channels can display it; the hash is
|
|
7
|
+
* what approval binds to" — and until now nothing implemented it. The bytes a
|
|
8
|
+
* human had to see before deciding were carried around the runtime by hand:
|
|
9
|
+
* `--payload-dir` for the CLI and web channels, `--payloads` for Telegram, and
|
|
10
|
+
* nothing at all for `approval render`, which is why QUEUE.md's pending count
|
|
11
|
+
* disagreed with the queue every channel showed (the APRV-27 friction case).
|
|
12
|
+
*
|
|
13
|
+
* ## What this is
|
|
14
|
+
*
|
|
15
|
+
* A content-addressed directory, `.approval/payloads/` beside the log, holding
|
|
16
|
+
* one file per bound payload: `<payload_hash>.json`, whose contents are the
|
|
17
|
+
* exact material whose RFC 8785 canonical serialization hashes to the filename.
|
|
18
|
+
* The name *is* the checksum, so the store needs no index, no manifest and no
|
|
19
|
+
* lock: two writers writing the same payload write the same bytes to the same
|
|
20
|
+
* path, and a file either verifies or it is refused.
|
|
21
|
+
*
|
|
22
|
+
* ## Verified on every read, without exception
|
|
23
|
+
*
|
|
24
|
+
* {@link loadPayload} re-canonicalizes and re-hashes what it read and compares
|
|
25
|
+
* that against the filename before returning anything. A file whose contents
|
|
26
|
+
* were edited after it was written refuses `hash-mismatch` and its value is
|
|
27
|
+
* **never returned**, so tampering with the store cannot put different bytes in
|
|
28
|
+
* front of an approver than the ones the request bound to. The recorded binding
|
|
29
|
+
* on `approval.requested` stays authoritative in both directions: the store is a
|
|
30
|
+
* cache of bytes that the log already committed to, and when the two disagree
|
|
31
|
+
* the log is right and the store is refused.
|
|
32
|
+
*
|
|
33
|
+
* This is the same rule the rest of the codebase keeps — files are the
|
|
34
|
+
* interface, the log is the truth, the database (and now the store) is a cache.
|
|
35
|
+
*
|
|
36
|
+
* ## External references
|
|
37
|
+
*
|
|
38
|
+
* A request may name material this runtime cannot hold: a message body in a
|
|
39
|
+
* vault, an object in a bucket. The store records that as `{"$ref": "<uri>"}` in
|
|
40
|
+
* the same `<hash>.json` file, and {@link loadPayload} reports it as a
|
|
41
|
+
* `reference` — deliberately **not** resolved. Resolving a URI would mean
|
|
42
|
+
* fetching bytes at render time from a source this module cannot verify, and a
|
|
43
|
+
* channel that displayed them would be showing an approver something no hash
|
|
44
|
+
* ever bound. So a reference renders as a reference: the channel says where the
|
|
45
|
+
* payload lives and refuses to pretend it has seen it.
|
|
46
|
+
*
|
|
47
|
+
* ## Writes never touch the log
|
|
48
|
+
*
|
|
49
|
+
* Nothing here opens `events.jsonl`. {@link storePayload} writes exactly one
|
|
50
|
+
* file, atomically (temp + rename in the destination directory), and the store
|
|
51
|
+
* directory is a sibling of the log directory rather than a child, so no
|
|
52
|
+
* conceivable store path collides with the log's.
|
|
53
|
+
*/
|
|
54
|
+
/** The directory name, beside the log's home: `.approval/payloads/`. */
|
|
55
|
+
export declare const PAYLOAD_STORE_DIRNAME = "payloads";
|
|
56
|
+
/**
|
|
57
|
+
* The store directory for a given log path — the convention every caller uses
|
|
58
|
+
* when no explicit directory is supplied.
|
|
59
|
+
*
|
|
60
|
+
* SPEC.md §9 fixes the log at `<home>/log/events.jsonl`, so the store is
|
|
61
|
+
* `<home>/payloads/`: a sibling of the log directory, never inside it. When a
|
|
62
|
+
* caller points `--log` at some other layout the store lands beside that file
|
|
63
|
+
* instead, which keeps the two together for the ad-hoc case without ever
|
|
64
|
+
* placing payload files in the directory the log is walked from.
|
|
65
|
+
*/
|
|
66
|
+
export declare function payloadStoreDirFor(logPath: string): string;
|
|
67
|
+
/** The file one payload hash addresses. */
|
|
68
|
+
export declare function payloadPath(storeDir: string, hash: string): string;
|
|
69
|
+
export type StorePayloadResult = {
|
|
70
|
+
ok: true;
|
|
71
|
+
hash: string;
|
|
72
|
+
path: string;
|
|
73
|
+
} | {
|
|
74
|
+
ok: false;
|
|
75
|
+
code: "unserializable" | "write-failed";
|
|
76
|
+
message: string;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Store payload material and return the hash it is addressed by.
|
|
80
|
+
*
|
|
81
|
+
* The bytes written are the RFC 8785 canonical serialization itself — not
|
|
82
|
+
* `JSON.stringify` of the value — so the file's own bytes hash to its own name
|
|
83
|
+
* and the store is verifiable byte for byte as well as semantically.
|
|
84
|
+
*
|
|
85
|
+
* **Idempotent.** Writing the same value twice writes the same bytes to the same
|
|
86
|
+
* path and reports the same hash. The write is unconditional rather than
|
|
87
|
+
* skipped-if-present, which also means a corrupted file is repaired by the next
|
|
88
|
+
* store of the same payload: content addressing makes "overwrite" and "leave
|
|
89
|
+
* alone" the same operation for anything that was ever valid.
|
|
90
|
+
*
|
|
91
|
+
* Refuses `unserializable` for material RFC 8785 cannot serialize (a cycle, a
|
|
92
|
+
* NaN, a function). A payload that cannot be canonicalized cannot be bound to,
|
|
93
|
+
* so it must not be stored under a hash that would then name something else.
|
|
94
|
+
*/
|
|
95
|
+
export declare function storePayload(storeDir: string, value: unknown): StorePayloadResult;
|
|
96
|
+
/**
|
|
97
|
+
* Record an external reference for a payload this runtime does not hold.
|
|
98
|
+
*
|
|
99
|
+
* The hash is supplied by the caller because a reference does not determine one:
|
|
100
|
+
* the binding is a fact about the *payload*, which lives elsewhere, and the
|
|
101
|
+
* reference is only a pointer to it. {@link loadPayload} reports the pointer and
|
|
102
|
+
* resolves nothing — see the module header.
|
|
103
|
+
*/
|
|
104
|
+
export declare function storeReference(storeDir: string, hash: string, reference: string): StorePayloadResult;
|
|
105
|
+
/**
|
|
106
|
+
* Every payload hash the store currently holds, sorted.
|
|
107
|
+
*
|
|
108
|
+
* Only `<hash>.json` names whose stem is a well-formed `payload_hash` are
|
|
109
|
+
* reported. A directory, a dotfile (the temp name an interrupted
|
|
110
|
+
* {@link writeAtomic} leaves behind), and anything else a human dropped in the
|
|
111
|
+
* directory are not payloads the store addresses, so no caller — the daemon's
|
|
112
|
+
* pruner least of all — is ever handed one as if it were.
|
|
113
|
+
*
|
|
114
|
+
* An unreadable or absent directory yields the empty list rather than throwing:
|
|
115
|
+
* a store that cannot be listed holds nothing this process can act on, which is
|
|
116
|
+
* the fail-closed reading for every caller here (reporting counts, deciding what
|
|
117
|
+
* to prune).
|
|
118
|
+
*/
|
|
119
|
+
export declare function listStoredPayloadHashes(storeDir: string): string[];
|
|
120
|
+
/** Why a removal did not happen. `absent` is a success for every caller here. */
|
|
121
|
+
export type RemovePayloadResult = {
|
|
122
|
+
ok: true;
|
|
123
|
+
path: string;
|
|
124
|
+
existed: boolean;
|
|
125
|
+
} | {
|
|
126
|
+
ok: false;
|
|
127
|
+
code: "unlink-failed";
|
|
128
|
+
message: string;
|
|
129
|
+
path: string;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Delete the bytes stored under `hash`.
|
|
133
|
+
*
|
|
134
|
+
* **Daemon-only.** SPEC.md §5.2: "Pruning is performed by the daemon and by
|
|
135
|
+
* nothing else." Nothing in the CLI calls this, and the retention rule that
|
|
136
|
+
* decides *which* hash reaches it lives in `daemon/prune.ts`, which appends the
|
|
137
|
+
* `payload.pruned` event before the file goes. This function is the unlink and
|
|
138
|
+
* nothing more: it judges no retention, reads no policy, and touches no log.
|
|
139
|
+
*
|
|
140
|
+
* A file that is already gone reports `existed: false` and `ok`. The caller's
|
|
141
|
+
* intent is that the bytes not be there, and a removal that raced another
|
|
142
|
+
* removal (or completed a crash-interrupted one) achieved exactly that.
|
|
143
|
+
*/
|
|
144
|
+
export declare function removeStoredPayload(storeDir: string, hash: string): RemovePayloadResult;
|
|
145
|
+
/** Why a read did not produce material. */
|
|
146
|
+
export type LoadPayloadRefusalCode =
|
|
147
|
+
/** No file is stored under this hash. */
|
|
148
|
+
"absent"
|
|
149
|
+
/** A file exists but its contents do not hash to its name. */
|
|
150
|
+
| "hash-mismatch"
|
|
151
|
+
/** The file could not be read, or is not JSON. */
|
|
152
|
+
| "unreadable"
|
|
153
|
+
/** The file holds a `{"$ref": …}` pointer, which is not resolved here. */
|
|
154
|
+
| "reference";
|
|
155
|
+
export type LoadPayloadResult = {
|
|
156
|
+
ok: true;
|
|
157
|
+
value: unknown;
|
|
158
|
+
path: string;
|
|
159
|
+
} | {
|
|
160
|
+
ok: false;
|
|
161
|
+
code: LoadPayloadRefusalCode;
|
|
162
|
+
message: string;
|
|
163
|
+
path: string;
|
|
164
|
+
/** The pointer, when `code` is `reference`. */
|
|
165
|
+
reference?: string;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Load the material stored under `hash`, verifying it against `hash`.
|
|
169
|
+
*
|
|
170
|
+
* The verification is unconditional and the value is withheld when it fails:
|
|
171
|
+
* `hash-mismatch` says the file on disk is not the payload the request bound to,
|
|
172
|
+
* and returning it "so the caller can decide" would hand a channel exactly the
|
|
173
|
+
* bytes the binding exists to keep away from an approver.
|
|
174
|
+
*/
|
|
175
|
+
export declare function loadPayload(storeDir: string, hash: string): LoadPayloadResult;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content binding: the hash an approval is bound to (amended SPEC.md §6.2, §10,
|
|
3
|
+
* APRV-20 pass two / amendment A1).
|
|
4
|
+
*
|
|
5
|
+
* ## What this buys
|
|
6
|
+
*
|
|
7
|
+
* Before content binding, a grant approved an *action key*. The bytes that key
|
|
8
|
+
* would ultimately execute were whatever the executor happened to hold at
|
|
9
|
+
* execution time, which is to say: whatever the agent decided after the human
|
|
10
|
+
* said yes. The amended §10 closes that:
|
|
11
|
+
*
|
|
12
|
+
* > An execution token is bound to the request, its `idempotency_key`, AND its
|
|
13
|
+
* > `payload_hash`. Adapters and `approval run` MUST recompute the hash of the
|
|
14
|
+
* > payload they are about to execute and MUST refuse, with a distinct
|
|
15
|
+
* > machine-readable reason (`payload-mismatch`), when it differs from the hash
|
|
16
|
+
* > the grant recorded. A grant therefore approves specific bytes.
|
|
17
|
+
*
|
|
18
|
+
* So the hash is the *whole* mechanism: `core/gate.ts` refuses to admit a manual
|
|
19
|
+
* action whose declaration carries none (`payload-hash-required`), copies it
|
|
20
|
+
* onto `approval.requested` and then onto `approval.granted`, and
|
|
21
|
+
* `core/token.ts` refuses to spend a token against different bytes
|
|
22
|
+
* (`payload-mismatch`).
|
|
23
|
+
*
|
|
24
|
+
* ## Why JCS, and why not "just hash the string"
|
|
25
|
+
*
|
|
26
|
+
* §6.2 says "SHA-256 over the RFC 8785 canonical serialization of the action's
|
|
27
|
+
* concrete payload". Canonicalization is what makes the hash reproducible across
|
|
28
|
+
* two implementations that agree about the *payload* but not about key order,
|
|
29
|
+
* whitespace, or number formatting — which is exactly the situation an adapter
|
|
30
|
+
* written in another language is in. The same canonicalizer the log's hash chain
|
|
31
|
+
* uses (`core/jcs.ts`) is used here, so there is one serialization rule in this
|
|
32
|
+
* codebase and not two.
|
|
33
|
+
*
|
|
34
|
+
* ## The `approval run` payload
|
|
35
|
+
*
|
|
36
|
+
* §6.2 names it: "for `approval run`, the argv array and cwd". {@link
|
|
37
|
+
* runPayloadHash} is that definition made executable — the hash of
|
|
38
|
+
* `{"argv": [...], "cwd": "..."}` — and `approval run` computes it
|
|
39
|
+
* automatically from the command it is about to spawn. An adapter whose payload
|
|
40
|
+
* is something else (a message body and its recipients, a proposed record)
|
|
41
|
+
* hashes that with {@link payloadHash} and presents the result explicitly.
|
|
42
|
+
*
|
|
43
|
+
* The cwd is inside the hash on purpose: `rm -rf build` means two different
|
|
44
|
+
* things in two different directories, and a binding that ignored the working
|
|
45
|
+
* directory would approve one of them and execute the other.
|
|
46
|
+
*
|
|
47
|
+
* Pure: no I/O, no clock, no randomness.
|
|
48
|
+
*/
|
|
49
|
+
/** The form a `payload_hash` takes everywhere: SHA-256, lowercase hex. */
|
|
50
|
+
export declare const PAYLOAD_HASH_PATTERN: RegExp;
|
|
51
|
+
/** Is this a well-formed `payload_hash`? The schema says the same thing. */
|
|
52
|
+
export declare function isPayloadHash(value: unknown): value is string;
|
|
53
|
+
/**
|
|
54
|
+
* SHA-256 (lowercase hex) over the RFC 8785 canonical serialization of a
|
|
55
|
+
* payload — the definition amended SPEC.md §6.2 gives for `payload_hash`.
|
|
56
|
+
*
|
|
57
|
+
* Throws `JcsError` for a value RFC 8785 cannot serialize (a cycle, a NaN, a
|
|
58
|
+
* function). That is deliberate: a payload that cannot be canonicalized cannot
|
|
59
|
+
* be bound to, and returning a plausible-looking digest for it would be worse
|
|
60
|
+
* than failing.
|
|
61
|
+
*/
|
|
62
|
+
export declare function payloadHash(value: unknown): string;
|
|
63
|
+
/**
|
|
64
|
+
* The `payload_hash` of an `approval run` invocation: the argv array and cwd.
|
|
65
|
+
*
|
|
66
|
+
* `argv` is the child's argv as it will actually be spawned — the command name
|
|
67
|
+
* first, then its arguments — not the `approval` wrapper's own flags, which
|
|
68
|
+
* have no side effect to bind. `cwd` is the absolute directory the child will
|
|
69
|
+
* run in.
|
|
70
|
+
*/
|
|
71
|
+
export declare function runPayloadHash(argv: readonly string[], cwd: string): string;
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic policy diff (APRV-30) — what an edit to `APPROVAL.md` actually
|
|
3
|
+
* *changes about the runtime's answers*, computed by the real engine on both
|
|
4
|
+
* versions of the file.
|
|
5
|
+
*
|
|
6
|
+
* ## Why this module exists: two live incidents
|
|
7
|
+
*
|
|
8
|
+
* **seq 2 of this repository's own log.** An amendment was attested and then
|
|
9
|
+
* superseded eleven minutes later, because the operator attested a policy edit
|
|
10
|
+
* that broke a pinned dogfood assertion — a fact nobody learned until the test
|
|
11
|
+
* suite ran, well after the bytes had been signed for. Nothing in the ceremony
|
|
12
|
+
* had asked "what does this edit change?" before recording "a human saw these
|
|
13
|
+
* bytes".
|
|
14
|
+
*
|
|
15
|
+
* **The unsigned interregnum.** Commit `f829e6c` edited the policy file; its
|
|
16
|
+
* attestation landed in a later commit. In between, the repository was carrying
|
|
17
|
+
* an *inoperative* policy: `checkAttestation` reported `hash-mismatch`, and
|
|
18
|
+
* every gate operation refused. The edit and the attestation were two acts when
|
|
19
|
+
* they should have been one.
|
|
20
|
+
*
|
|
21
|
+
* Both incidents share a shape: the policy edit was treated as a text change
|
|
22
|
+
* rather than as an amendment with consequences. This module supplies the
|
|
23
|
+
* missing half of the ceremony — the consequences — and `cli/amend.ts` supplies
|
|
24
|
+
* the ceremony itself.
|
|
25
|
+
*
|
|
26
|
+
* ## What is compared, and how
|
|
27
|
+
*
|
|
28
|
+
* Nothing here re-implements matching, specificity, the irreversibility floor,
|
|
29
|
+
* or defaulting. {@link diffPolicies} calls `resolve()` from
|
|
30
|
+
* `core/policy-match.ts` on **both** loads for the same probe class, and reports
|
|
31
|
+
* the pairs that differ. A diff that computed the answer a second way could
|
|
32
|
+
* disagree with the engine, and the diff would be the more convincing lie.
|
|
33
|
+
*
|
|
34
|
+
* Five sections:
|
|
35
|
+
*
|
|
36
|
+
* - **classes** — resolution changes (autonomy, provenance, matched pattern)
|
|
37
|
+
* over a probe set: every key of either version's `classes` map, plus the
|
|
38
|
+
* caller's `sampleClasses` (the CLI passes SPEC.md §7's top-level namespaces).
|
|
39
|
+
* - **approvers** — approvers added, removed, or whose channel reachability
|
|
40
|
+
* changed, plus the class rules left naming an approver the policy no longer
|
|
41
|
+
* defines. Losing the only human who can be reached for a class is an
|
|
42
|
+
* availability change disguised as a config tweak.
|
|
43
|
+
* - **defaults** — `autonomy`, `channel`, `approval_ttl`, `on_expiry`.
|
|
44
|
+
* - **budgets** — every `(scope, limit)` pair, old -> new. Scopes are the
|
|
45
|
+
* `budgets` map's keys plus `classes.<pattern>` for a rule's `limits`.
|
|
46
|
+
* - **vocabulary** — every other key of the policy document, by dotted path,
|
|
47
|
+
* before -> after. See below.
|
|
48
|
+
*
|
|
49
|
+
* ## The vocabulary section, and the incident that added it (APRV-111)
|
|
50
|
+
*
|
|
51
|
+
* On 2026-08-20 a real amendment added `protected_paths: [SPEC.md]` — a key
|
|
52
|
+
* that decides which file edits are `policy.edit`, which is to say which edits
|
|
53
|
+
* a human has to approve — and this module reported **"no semantic change"**.
|
|
54
|
+
* The four sections above were the whole diff, and none of them can see a
|
|
55
|
+
* top-level key outside `classes` / `approvers` / `defaults` / `budgets`. A
|
|
56
|
+
* human was shown "nothing changed" while signing bytes that moved the gate.
|
|
57
|
+
*
|
|
58
|
+
* The fix is not a fifth hand-written list, because a hand-written list is
|
|
59
|
+
* exactly what went stale: `protected_paths` was added to the vocabulary by
|
|
60
|
+
* APRV-107 and nothing here changed. {@link diffPolicies} now walks **both
|
|
61
|
+
* documents' actual keys**, flattens them to dotted paths, and reports every
|
|
62
|
+
* pair that differs. New spec keys are covered the day they parse, with no edit
|
|
63
|
+
* to this file. Paths the dedicated sections already report are dropped, so
|
|
64
|
+
* nothing is said twice.
|
|
65
|
+
*
|
|
66
|
+
* Two consequences worth stating:
|
|
67
|
+
*
|
|
68
|
+
* - **Unknown top-level keys are named, never dropped.** `policy.schema.json`
|
|
69
|
+
* is closed, so an unrecognised key means the load FAILED and the policy is
|
|
70
|
+
* all-manual. That key is reported (marked `recognised: false`) whether or
|
|
71
|
+
* not its value changed: the display side fails closed too, and an edit this
|
|
72
|
+
* module cannot describe must be called out rather than summarised as no
|
|
73
|
+
* change. Which keys are known is READ FROM THAT SCHEMA since APRV-296 (see
|
|
74
|
+
* {@link policyTopLevelKeys}), because the hand-written copy that stood here
|
|
75
|
+
* fell behind it and warned an operator about three `daemon.*` keys the
|
|
76
|
+
* schema had admitted for a month.
|
|
77
|
+
* - **A side whose YAML never parsed has no vocabulary to read.** Then
|
|
78
|
+
* {@link PolicyDiff.vocabularyComparable} is `false` and the renderer says the
|
|
79
|
+
* rest of the document was not compared, instead of printing "no semantic
|
|
80
|
+
* change" over an unexamined document.
|
|
81
|
+
*
|
|
82
|
+
* ## Probes are a report, not a proof
|
|
83
|
+
*
|
|
84
|
+
* The class space is infinite; a diff over it cannot be exhaustive. The probe
|
|
85
|
+
* set is stated in the output ({@link PolicyDiff.probes}) precisely so a reader
|
|
86
|
+
* knows what was *not* examined. Wildcard keys (`read.*`) are probed as the
|
|
87
|
+
* literal strings they are, which is the honest thing to do without inventing
|
|
88
|
+
* action classes that nobody declared: both versions are asked the same
|
|
89
|
+
* question, so a difference in the answers is a real difference, and a class
|
|
90
|
+
* outside the probe set may still have changed.
|
|
91
|
+
*
|
|
92
|
+
* ## Fail-closed sides are rendered honestly
|
|
93
|
+
*
|
|
94
|
+
* A side that fails to load is not "an empty policy". It resolves **every**
|
|
95
|
+
* class to `manual` with provenance `fail-closed`, and `resolve()` already says
|
|
96
|
+
* so, so the class section stays truthful with no special case. The structural
|
|
97
|
+
* sections are different: a failed load has no `approvers`, `defaults` or
|
|
98
|
+
* `budgets` to read, and reporting them as removed would assert a change the
|
|
99
|
+
* file never made. So when either side failed, those three sections are empty
|
|
100
|
+
* and {@link PolicyDiff.structuralComparable} is `false`, with
|
|
101
|
+
* {@link PolicyDiff.beforeFailure} / {@link PolicyDiff.afterFailure} carrying
|
|
102
|
+
* the codes a renderer prints as "everything manual (fail-closed: <code>)".
|
|
103
|
+
*
|
|
104
|
+
* Deterministic: no clock, no randomness, and probe order is sorted, so the
|
|
105
|
+
* same two loads always produce a byte-identical diff. The one read of the
|
|
106
|
+
* filesystem is the policy SCHEMA, once per process, for the key vocabulary
|
|
107
|
+
* described above; nothing here reads a policy file, and no answer depends on
|
|
108
|
+
* anything but the two loads it was handed.
|
|
109
|
+
*/
|
|
110
|
+
import type { Autonomy, PolicyLoadErrorCode, PolicyLoadResult } from "./policy-load.js";
|
|
111
|
+
import { type Provenance } from "./policy-match.js";
|
|
112
|
+
/**
|
|
113
|
+
* SPEC.md §7's reserved top-level namespaces, in table order.
|
|
114
|
+
*
|
|
115
|
+
* Exported here rather than in the CLI because they are a fact about the spec's
|
|
116
|
+
* taxonomy, not about a command's flags, and because a diff that only probed
|
|
117
|
+
* the classes a policy happens to name would go quiet on exactly the edit that
|
|
118
|
+
* matters most: one that *stops* naming a dangerous namespace and lets it fall
|
|
119
|
+
* through to `defaults.autonomy`.
|
|
120
|
+
*/
|
|
121
|
+
export declare const SPEC_NAMESPACES: readonly string[];
|
|
122
|
+
/** One version's answer for one probe class. */
|
|
123
|
+
export interface ResolutionSnapshot {
|
|
124
|
+
autonomy: Autonomy;
|
|
125
|
+
provenance: Provenance;
|
|
126
|
+
/** The pattern that matched, or `null` for a default / fail-closed answer. */
|
|
127
|
+
pattern: string | null;
|
|
128
|
+
}
|
|
129
|
+
/** A probe class whose resolution differs between the two versions. */
|
|
130
|
+
export interface ClassResolutionChange {
|
|
131
|
+
/** The probe string that was resolved under both versions. */
|
|
132
|
+
class: string;
|
|
133
|
+
before: ResolutionSnapshot;
|
|
134
|
+
after: ResolutionSnapshot;
|
|
135
|
+
/** Present whenever the truthful irreversible outcome changed. */
|
|
136
|
+
irreversible?: {
|
|
137
|
+
before: ResolutionSnapshot;
|
|
138
|
+
after: ResolutionSnapshot;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/** How an approver entry changed. */
|
|
142
|
+
export type ApproverChangeKind = "added" | "removed" | "channels-changed";
|
|
143
|
+
/** An approver added, removed, or re-channelled. */
|
|
144
|
+
export interface ApproverChange {
|
|
145
|
+
approver: string;
|
|
146
|
+
change: ApproverChangeKind;
|
|
147
|
+
/** Channels before; `null` when the approver did not exist. */
|
|
148
|
+
beforeChannels: string[] | null;
|
|
149
|
+
/** Channels after; `null` when the approver no longer exists. */
|
|
150
|
+
afterChannels: string[] | null;
|
|
151
|
+
/**
|
|
152
|
+
* Class patterns in the AFTER policy that still name this approver although
|
|
153
|
+
* the AFTER `approvers` map no longer defines them — a rule whose decider is
|
|
154
|
+
* reachable on nothing.
|
|
155
|
+
*
|
|
156
|
+
* `policy.schema.json` already forbids an approver with an empty `channels`
|
|
157
|
+
* list ("an approver reachable nowhere can never grant"), so the only
|
|
158
|
+
* reachability hole a *loadable* policy can have is this dangling reference:
|
|
159
|
+
* the schema says explicitly that the rule-to-approver cross-reference is a
|
|
160
|
+
* runtime check, not a schema constraint. Empty for every other change.
|
|
161
|
+
*/
|
|
162
|
+
danglingRules: string[];
|
|
163
|
+
}
|
|
164
|
+
/** A `defaults` field whose value changed. `null` means "absent". */
|
|
165
|
+
export interface DefaultsChange {
|
|
166
|
+
field: "autonomy" | "channel" | "approval_ttl" | "on_expiry";
|
|
167
|
+
before: string | null;
|
|
168
|
+
after: string | null;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* A policy key outside the four dedicated sections, before -> after (APRV-111).
|
|
172
|
+
*
|
|
173
|
+
* `key` is a dotted path into the policy document (`protected_paths`,
|
|
174
|
+
* `audit.skew_tolerance`, `channels.telegram.token_env`). Values are rendered
|
|
175
|
+
* for reading, not for parsing: scalars as themselves, sequences and anything
|
|
176
|
+
* else as JSON. `null` means the key was absent on that side.
|
|
177
|
+
*/
|
|
178
|
+
export interface VocabularyChange {
|
|
179
|
+
key: string;
|
|
180
|
+
/**
|
|
181
|
+
* Is this path's TOP-LEVEL key part of SPEC.md §5.2's policy vocabulary?
|
|
182
|
+
*
|
|
183
|
+
* `false` means the schema does not know the key, which means the policy does
|
|
184
|
+
* not load, which means every class is `manual`. Reported even when the value
|
|
185
|
+
* did not change — see the module header.
|
|
186
|
+
*/
|
|
187
|
+
recognised: boolean;
|
|
188
|
+
before: string | null;
|
|
189
|
+
after: string | null;
|
|
190
|
+
}
|
|
191
|
+
/** A budget or class limit whose value changed. `null` means "absent". */
|
|
192
|
+
export interface BudgetChange {
|
|
193
|
+
/** `budgets` key (e.g. `global`) or `classes.<pattern>` for a rule limit. */
|
|
194
|
+
scope: string;
|
|
195
|
+
/** The limit's name, e.g. `daily_usd`, `daily_actions`, `max_usd`. */
|
|
196
|
+
limit: string;
|
|
197
|
+
before: number | null;
|
|
198
|
+
after: number | null;
|
|
199
|
+
}
|
|
200
|
+
/** The result of {@link diffPolicies}. Frozen shape: the CLI prints it as JSON. */
|
|
201
|
+
export interface PolicyDiff {
|
|
202
|
+
/** Non-null when the BEFORE side failed to load: everything was manual. */
|
|
203
|
+
beforeFailure: {
|
|
204
|
+
code: PolicyLoadErrorCode;
|
|
205
|
+
message: string;
|
|
206
|
+
} | null;
|
|
207
|
+
/** Non-null when the AFTER side failed to load: everything becomes manual. */
|
|
208
|
+
afterFailure: {
|
|
209
|
+
code: PolicyLoadErrorCode;
|
|
210
|
+
message: string;
|
|
211
|
+
} | null;
|
|
212
|
+
/**
|
|
213
|
+
* False when either side failed to load, in which case `approvers`,
|
|
214
|
+
* `defaults` and `budgets` are empty because a failed load has no structure
|
|
215
|
+
* to compare — not because nothing changed.
|
|
216
|
+
*/
|
|
217
|
+
structuralComparable: boolean;
|
|
218
|
+
/** Every probe class that was resolved, sorted; the stated scope of the diff. */
|
|
219
|
+
probes: string[];
|
|
220
|
+
classes: ClassResolutionChange[];
|
|
221
|
+
approvers: ApproverChange[];
|
|
222
|
+
defaults: DefaultsChange[];
|
|
223
|
+
budgets: BudgetChange[];
|
|
224
|
+
/**
|
|
225
|
+
* Every other key of the document, changed or unrecognised (APRV-111).
|
|
226
|
+
* Sorted by `key`, so the same two policies always diff byte-identically.
|
|
227
|
+
*/
|
|
228
|
+
vocabulary: VocabularyChange[];
|
|
229
|
+
/**
|
|
230
|
+
* False when a side's document could not be read as a mapping at all (its
|
|
231
|
+
* YAML did not parse, or the file was missing), in which case `vocabulary` is
|
|
232
|
+
* empty because there were no keys to walk — not because none changed.
|
|
233
|
+
*/
|
|
234
|
+
vocabularyComparable: boolean;
|
|
235
|
+
/** True when no section reported a change. */
|
|
236
|
+
unchanged: boolean;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* The policy schema on disk, the file `core/validate.ts` validates against.
|
|
240
|
+
*
|
|
241
|
+
* Derived here rather than imported from `DEFAULT_SCHEMA_DIR` so this module
|
|
242
|
+
* keeps its empty runtime dependency graph: importing `validate.ts` would pull
|
|
243
|
+
* Ajv into every process that renders a diff, the Telegram channel included.
|
|
244
|
+
* The two derivations are the same walk from the same directory, and
|
|
245
|
+
* `tests/policy-vocabulary.test.ts` asserts they name one file, so a schema
|
|
246
|
+
* directory that ever moves fails there rather than drifting quietly.
|
|
247
|
+
*/
|
|
248
|
+
export declare const POLICY_SCHEMA_PATH: string;
|
|
249
|
+
/**
|
|
250
|
+
* SPEC.md §5.2's top-level policy keys, READ FROM `policy.schema.json`
|
|
251
|
+
* (APRV-296).
|
|
252
|
+
*
|
|
253
|
+
* Used for ONE decision: whether a key the document carries is part of the
|
|
254
|
+
* vocabulary at all. It is not used to decide what to walk — the documents' own
|
|
255
|
+
* keys decide that — so this list only ever changes what a key is CALLED in the
|
|
256
|
+
* report.
|
|
257
|
+
*
|
|
258
|
+
* It used to be a second, hand-written copy of the schema's top-level
|
|
259
|
+
* `properties`, and the 2026-09-07 ceremony is what a hand-written copy costs:
|
|
260
|
+
* the amend diff printed `daemon.full_reproof_after: 60s -> 60s (UNKNOWN KEY:
|
|
261
|
+
* … the policy FAILS CLOSED to all-manual until it is removed)` for three
|
|
262
|
+
* `daemon.*` keys the schema had admitted since APRV-217, which the same
|
|
263
|
+
* ceremony then loaded cleanly and resolved every pin against. A false
|
|
264
|
+
* fail-closed warning in a ceremony's output is worse than no warning: it
|
|
265
|
+
* teaches the operator reading it that the warnings are noise.
|
|
266
|
+
*
|
|
267
|
+
* Reading the schema is the fix that cannot go stale, because the schema is
|
|
268
|
+
* what actually decides whether the key loads. The read is memoised for the
|
|
269
|
+
* life of the process, which `core/validate.ts` deliberately does not do for
|
|
270
|
+
* validation: this is DISPLAY vocabulary over a file shipped with the package,
|
|
271
|
+
* not a verdict, and a schema edited under a running process changes what the
|
|
272
|
+
* next diff CALLS a key rather than whether that key was validated.
|
|
273
|
+
*/
|
|
274
|
+
export declare function policyTopLevelKeys(): readonly string[];
|
|
275
|
+
/**
|
|
276
|
+
* Diff two loaded policies by what the engine answers under each.
|
|
277
|
+
*
|
|
278
|
+
* `before` and `after` are whole {@link PolicyLoadResult}s, failures included —
|
|
279
|
+
* see the module header for why a failed side is reported rather than treated
|
|
280
|
+
* as empty. `sampleClasses` widens the probe set beyond the two policies' own
|
|
281
|
+
* class keys; the CLI supplies {@link SPEC_NAMESPACES}.
|
|
282
|
+
*/
|
|
283
|
+
export declare function diffPolicies(before: PolicyLoadResult, after: PolicyLoadResult, sampleClasses?: readonly string[]): PolicyDiff;
|
|
284
|
+
/**
|
|
285
|
+
* Render a {@link PolicyDiff} as the lines the CLI prints.
|
|
286
|
+
*
|
|
287
|
+
* Lives beside the diff rather than in the CLI for the same reason
|
|
288
|
+
* `decisionPath` lives in `policy-explain.ts`: the human rendering and the
|
|
289
|
+
* machine shape must be derived from one value, or they will eventually
|
|
290
|
+
* disagree about what changed.
|
|
291
|
+
*/
|
|
292
|
+
export declare function renderDiff(diff: PolicyDiff): string[];
|
|
@@ -319,7 +319,13 @@ function failureOf(load) {
|
|
|
319
319
|
return load.ok ? null : { code: load.code, message: load.message };
|
|
320
320
|
}
|
|
321
321
|
function snapshot(load, probe) {
|
|
322
|
-
|
|
322
|
+
return snapshotFor(load, probe, false);
|
|
323
|
+
}
|
|
324
|
+
function irreversibleSnapshot(load, probe) {
|
|
325
|
+
return snapshotFor(load, probe, true);
|
|
326
|
+
}
|
|
327
|
+
function snapshotFor(load, probe, irreversible) {
|
|
328
|
+
const resolution = resolve(load, probe, irreversible ? { reversible: false } : {});
|
|
323
329
|
return {
|
|
324
330
|
autonomy: resolution.autonomy,
|
|
325
331
|
provenance: resolution.provenance,
|
|
@@ -462,9 +468,21 @@ export function diffPolicies(before, after, sampleClasses = []) {
|
|
|
462
468
|
for (const probe of probes) {
|
|
463
469
|
const previous = snapshot(before, probe);
|
|
464
470
|
const next = snapshot(after, probe);
|
|
465
|
-
|
|
471
|
+
const previousIrreversible = irreversibleSnapshot(before, probe);
|
|
472
|
+
const nextIrreversible = irreversibleSnapshot(after, probe);
|
|
473
|
+
const ordinaryChanged = !sameSnapshot(previous, next);
|
|
474
|
+
const irreversibleChanged = !sameSnapshot(previousIrreversible, nextIrreversible);
|
|
475
|
+
if (!ordinaryChanged && !irreversibleChanged)
|
|
466
476
|
continue;
|
|
467
|
-
|
|
477
|
+
const change = {
|
|
478
|
+
class: probe,
|
|
479
|
+
before: previous,
|
|
480
|
+
after: next,
|
|
481
|
+
};
|
|
482
|
+
if (irreversibleChanged) {
|
|
483
|
+
change.irreversible = { before: previousIrreversible, after: nextIrreversible };
|
|
484
|
+
}
|
|
485
|
+
classes.push(change);
|
|
468
486
|
}
|
|
469
487
|
const structuralComparable = before.ok && after.ok;
|
|
470
488
|
const approvers = structuralComparable ? diffApprovers(beforePolicy, afterPolicy) : [];
|
|
@@ -518,7 +536,12 @@ export function renderDiff(diff) {
|
|
|
518
536
|
if (diff.classes.length > 0) {
|
|
519
537
|
lines.push(`class resolutions changed (${diff.classes.length}):`);
|
|
520
538
|
for (const change of diff.classes) {
|
|
521
|
-
|
|
539
|
+
if (!sameSnapshot(change.before, change.after)) {
|
|
540
|
+
lines.push(` ${change.class}: ${describeSnapshot(change.before)} -> ${describeSnapshot(change.after)}`);
|
|
541
|
+
}
|
|
542
|
+
if (change.irreversible !== undefined) {
|
|
543
|
+
lines.push(` ${change.class} (reversible: false): ${describeSnapshot(change.irreversible.before)} -> ${describeSnapshot(change.irreversible.after)}`);
|
|
544
|
+
}
|
|
522
545
|
}
|
|
523
546
|
}
|
|
524
547
|
if (diff.approvers.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-diff.js","sourceRoot":"","sources":["../../../src/core/policy-diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policy-diff.js","sourceRoot":"","sources":["../../../src/core/policy-diff.ts"],"names":[],"mappings":"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"}
|