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,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approval setup service` — the login service that runs the ambient runtime
|
|
3
|
+
* (SPEC.md §10.2, APRV-110).
|
|
4
|
+
*
|
|
5
|
+
* `approval up` is a foreground process. This verb writes the one file that
|
|
6
|
+
* makes it start at login and stay started: a launchd user agent on macOS, or a
|
|
7
|
+
* systemd user unit on Linux. It is the fifth member of the `setup` family and
|
|
8
|
+
* it obeys the family's rules — interactive by refusal, human-only, appending
|
|
9
|
+
* nothing to the log, editing no policy — with two of its own.
|
|
10
|
+
*
|
|
11
|
+
* ## It never copies a value
|
|
12
|
+
*
|
|
13
|
+
* A unit file is world-readable configuration that survives reboots and gets
|
|
14
|
+
* backed up. A bot token in one is a bot token in a backup. So the unit NAMES
|
|
15
|
+
* where the environment comes from and never carries it:
|
|
16
|
+
*
|
|
17
|
+
* - by default it runs a WRAPPER the human reads in the printed unit —
|
|
18
|
+
* `eval "$(approval env)"` and then `exec approval up` — so the keystore
|
|
19
|
+
* references stay in the keystore and `approval env` stays the only thing
|
|
20
|
+
* that resolves them (SPEC.md §11.1 invariant 7: nothing loads that file
|
|
21
|
+
* implicitly, and here it is a human's line in a file they approved);
|
|
22
|
+
* - or, with `--env-file`, it points at a file THE OPERATOR AUTHORED, which
|
|
23
|
+
* this verb neither writes nor reads.
|
|
24
|
+
*
|
|
25
|
+
* ## It prints the unit before it writes it, and it does not arm it
|
|
26
|
+
*
|
|
27
|
+
* The whole file goes to stdout first, and nothing is written until the operator
|
|
28
|
+
* confirms. Loading it is a separate act: this verb prints the exact
|
|
29
|
+
* `launchctl` or `systemctl` line and stops there. A login service is a standing
|
|
30
|
+
* capability on someone's machine — it will start a process that holds a
|
|
31
|
+
* credential and can put prompts on a phone — and a wizard that armed one as a
|
|
32
|
+
* side effect of writing a file would be making that decision on the operator's
|
|
33
|
+
* behalf. Printing the command costs one paste and buys an explicit act.
|
|
34
|
+
*
|
|
35
|
+
* ## Logs never go into `.approval/`
|
|
36
|
+
*
|
|
37
|
+
* The service's stdout and stderr go where the operator chooses, defaulting to
|
|
38
|
+
* the platform's own log home. A path inside the approval home is REFUSED:
|
|
39
|
+
* `.approval/` holds the log, the queue projection, the payload store, the
|
|
40
|
+
* vault and the environment source map, and a service that appended its console
|
|
41
|
+
* output beside them would put unverifiable text in the one directory whose
|
|
42
|
+
* contents are supposed to mean something.
|
|
43
|
+
*/
|
|
44
|
+
import type { Streams } from "./main.js";
|
|
45
|
+
import { type SetupDeps } from "./setup-common.js";
|
|
46
|
+
/** The two service managers this verb writes for. */
|
|
47
|
+
export type ServicePlatform = "launchd" | "systemd";
|
|
48
|
+
/** The conventional names. `--label` overrides both. */
|
|
49
|
+
export declare const LAUNCHD_LABEL = "md.approval.up";
|
|
50
|
+
export declare const SYSTEMD_UNIT = "approval-up";
|
|
51
|
+
/** Which manager this machine has, or `null` when it has neither. */
|
|
52
|
+
export declare function platformFor(platform: NodeJS.Platform): ServicePlatform | null;
|
|
53
|
+
/** Where the unit file belongs, for a platform and a label. */
|
|
54
|
+
export declare function unitPathFor(platform: ServicePlatform, label: string, home: string): string;
|
|
55
|
+
/** Where the platform keeps a user's own logs. */
|
|
56
|
+
export declare function defaultLogsDir(platform: ServicePlatform, home: string): string;
|
|
57
|
+
/** The command that arms the written unit, printed and never run. */
|
|
58
|
+
export declare function armCommand(platform: ServicePlatform, label: string, path: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* The command that disarms it, printed before the file is removed.
|
|
61
|
+
*
|
|
62
|
+
* Takes no path, unlike {@link armCommand}: launchd boots a service OUT by its
|
|
63
|
+
* label, and the plist it was booted in from may already be gone.
|
|
64
|
+
*/
|
|
65
|
+
export declare function disarmCommand(platform: ServicePlatform, label: string): string;
|
|
66
|
+
/** Everything a unit is generated from, all of it already resolved. */
|
|
67
|
+
export interface ServicePlan {
|
|
68
|
+
platform: ServicePlatform;
|
|
69
|
+
label: string;
|
|
70
|
+
/** The unit file this would be written to. */
|
|
71
|
+
path: string;
|
|
72
|
+
/** The primary checkout the runtime is started in. */
|
|
73
|
+
workingDir: string;
|
|
74
|
+
/** The `approval` invocation, as argv words. */
|
|
75
|
+
exec: string[];
|
|
76
|
+
/** An operator-authored EnvironmentFile, or `null` for the `approval env` wrapper. */
|
|
77
|
+
envFile: string | null;
|
|
78
|
+
outLog: string;
|
|
79
|
+
errLog: string;
|
|
80
|
+
/** The variable NAMES the runtime will look for. Printed as a comment only. */
|
|
81
|
+
variables: string[];
|
|
82
|
+
}
|
|
83
|
+
/** One `sh -lc` script: the wrapper the operator reads inside the unit. */
|
|
84
|
+
export declare function wrapperScript(plan: ServicePlan): string;
|
|
85
|
+
/** The whole unit file, as the operator will read it and as it will be written. */
|
|
86
|
+
export declare function renderUnit(plan: ServicePlan): string;
|
|
87
|
+
/**
|
|
88
|
+
* The approval invocation this process was started as.
|
|
89
|
+
*
|
|
90
|
+
* `node dist/src/cli/main.js` and the installed `approval` bin are both
|
|
91
|
+
* legitimate, and a unit that named the wrong one would fail at login rather
|
|
92
|
+
* than here. `--exec` overrides for the case neither guess fits.
|
|
93
|
+
*/
|
|
94
|
+
export declare function execWords(override: string | null, argv: readonly string[]): string[];
|
|
95
|
+
/** `approval setup service` — write the login unit. HUMAN-ONLY, INTERACTIVE. */
|
|
96
|
+
export declare function commandSetupService(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): number;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approval setup` — the interactive configuration family (SPEC.md §5.2, §10.1).
|
|
3
|
+
*
|
|
4
|
+
* APRV-73 gave `.approval/env` a format and `approval env` a reader. This verb
|
|
5
|
+
* is the writer, and it is the only one: it establishes the things an operator
|
|
6
|
+
* must have before any gate operation works — a declared human identity, a
|
|
7
|
+
* vault passphrase, a sampling secret, a live Telegram bot and chat, and an
|
|
8
|
+
* adapter's credentials — by putting each VALUE where that kind of value
|
|
9
|
+
* belongs and each SOURCE in `.approval/env`.
|
|
10
|
+
*
|
|
11
|
+
* ## Who lives where
|
|
12
|
+
*
|
|
13
|
+
* This file holds the three subcommands whose subject is a value this runtime
|
|
14
|
+
* MINTS or a name it records, plus the dispatch:
|
|
15
|
+
*
|
|
16
|
+
* ```
|
|
17
|
+
* setup identity # APPROVAL_HUMAN, in this file
|
|
18
|
+
* setup vault # the vault passphrase, in this file
|
|
19
|
+
* setup sampling # the audit sampling secret, in this file
|
|
20
|
+
* setup checkpoint # cli/setup-checkpoint.ts (the vault + a print)
|
|
21
|
+
* setup channel <name> # cli/setup-channel.ts (keystore + .approval/env)
|
|
22
|
+
* setup adapter <name> # cli/setup-adapter.ts (the vault)
|
|
23
|
+
* setup service # cli/setup-service.ts (a launchd/systemd unit)
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* The last two are **two nouns and not one list**, and the split is SPEC.md
|
|
27
|
+
* §4's: a CHANNEL surfaces requests and collects decisions and holds no state,
|
|
28
|
+
* so its setup fills the keystore and `.approval/env`; an ADAPTER executes side
|
|
29
|
+
* effects and holds credentials, so its setup fills the vault.
|
|
30
|
+
* An older build spelled the Telegram one without the `channel` noun, and that
|
|
31
|
+
* form is gone (APRV-79): the dispatch answers it with the new one and exits 2
|
|
32
|
+
* rather than aliasing it, because an alias would leave two spellings of a
|
|
33
|
+
* distinction the SPEC draws on purpose.
|
|
34
|
+
*
|
|
35
|
+
* Everything the three files share — the dependency bag, the keystore seam, the
|
|
36
|
+
* front matter, the human-only gate, the service names, the plaintext-literal
|
|
37
|
+
* offer — is `cli/setup-common.ts`, which imports from none of them. The
|
|
38
|
+
* conversation `setup channel|adapter` both run is `cli/setup-flow.ts`.
|
|
39
|
+
*
|
|
40
|
+
* ## The order these run in
|
|
41
|
+
*
|
|
42
|
+
* Nothing enforced it and nothing said it, which APRV-76 noticed the hard way.
|
|
43
|
+
* It is:
|
|
44
|
+
*
|
|
45
|
+
* ```
|
|
46
|
+
* approval init # the directory and the .gitignore
|
|
47
|
+
* (write APPROVAL.md) # the policy NAMES every variable below
|
|
48
|
+
* approval setup identity # APPROVAL_HUMAN
|
|
49
|
+
* approval setup vault # the passphrase, into the keystore
|
|
50
|
+
* eval "$(approval env)" # the ONLY thing that puts them in a shell
|
|
51
|
+
* approval setup adapter <name> # the adapter's credentials, into the vault
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* The policy comes before every `setup`, because each of them reads variable
|
|
55
|
+
* NAMES out of it. The `eval` comes before `setup adapter`, because that
|
|
56
|
+
* subcommand needs the passphrase's VALUE in the environment and will not read
|
|
57
|
+
* `.approval/env` to get it (§11.1 invariant 7). `setup sampling` and
|
|
58
|
+
* `setup channel telegram` slot in anywhere after the policy.
|
|
59
|
+
*
|
|
60
|
+
* ## What this verb is not allowed to do
|
|
61
|
+
*
|
|
62
|
+
* **It never appends to the log, never attests, and never edits `APPROVAL.md`.**
|
|
63
|
+
* Configuration is not an authorized action, and the log is the record of
|
|
64
|
+
* authorized actions; a "telegram configured" event would be a line in the one
|
|
65
|
+
* file this project promises never to rewrite, saying something the log has no
|
|
66
|
+
* business knowing. `tests/cli-setup.test.ts` byte-compares `events.jsonl`
|
|
67
|
+
* across a complete run of every subcommand to keep that true by assertion.
|
|
68
|
+
* When a policy line is needed (the sampling secret's name), this verb PRINTS
|
|
69
|
+
* the `approval policy amend` invocation and stops: an amendment is a human
|
|
70
|
+
* ceremony with an attestation at the end of it, and a setup wizard that
|
|
71
|
+
* silently edited an attested policy would be forging the sign-off.
|
|
72
|
+
*
|
|
73
|
+
* It writes exactly three things: lines in `.approval/env`, through a writer
|
|
74
|
+
* that preserves every other line and comment (`core/env-file.ts`), items in
|
|
75
|
+
* the OS keystore, and entries in the vault (`setup adapter` only).
|
|
76
|
+
*
|
|
77
|
+
* ## Interactive or nothing
|
|
78
|
+
*
|
|
79
|
+
* Every subcommand refuses when stdin is not a terminal, or when `--json` was
|
|
80
|
+
* given, and exits 2 printing THE EXACT NON-INTERACTIVE ALTERNATIVE — the
|
|
81
|
+
* `security add-generic-password` line to run, or the `.approval/env` line to
|
|
82
|
+
* add, or the `export` to put in a shell profile. This is not a wizard being
|
|
83
|
+
* precious about its terminal. A `setup` that could be driven from a pipe would
|
|
84
|
+
* be a way for a CI job or an agent to write `APPROVAL_HUMAN` and a keystore
|
|
85
|
+
* item, which is precisely the boundary §11 draws: identity is config-declared,
|
|
86
|
+
* so establishing it must be an act of the human at the machine. The refusal
|
|
87
|
+
* text is the documented scripted path, so nobody has to reverse-engineer one.
|
|
88
|
+
*
|
|
89
|
+
* `setup identity` is EXEMPT from the human-only `--as` gate that every other
|
|
90
|
+
* subcommand carries, and the exemption is not a hole: identity is what that
|
|
91
|
+
* gate reads. A verb that demanded `APPROVAL_HUMAN` before it would let you set
|
|
92
|
+
* `APPROVAL_HUMAN` could only ever be run by someone who did not need it. The
|
|
93
|
+
* control on this path is the terminal itself.
|
|
94
|
+
*
|
|
95
|
+
* ## Answers, and answering again (APRV-90)
|
|
96
|
+
*
|
|
97
|
+
* Every typed question in this family runs through `prompt.ts`'s `askUntil`: a
|
|
98
|
+
* wrong answer is one line saying what was wrong and the same question again,
|
|
99
|
+
* never an exit code with a help page under it. `setup identity` also
|
|
100
|
+
* NORMALISES what it is given — `carter` is recorded as `human:carter`, and
|
|
101
|
+
* `human:carter` is taken as it stands ({@link identityFromAnswer}). The prompt
|
|
102
|
+
* still prints the `human:` prefix, because the prefix is what distinguishes
|
|
103
|
+
* the actor kinds the human-only verbs refuse, but nobody has to retype a
|
|
104
|
+
* prefix the question already showed them. `agent:` and `system:` are refused
|
|
105
|
+
* with the sentence that names why, as a reason to answer again.
|
|
106
|
+
*
|
|
107
|
+
* ## Where a secret goes, and how it gets there
|
|
108
|
+
*
|
|
109
|
+
* Three service names, one per secret, documented so an operator can find them
|
|
110
|
+
* with `security find-generic-password` or `secret-tool lookup` by hand:
|
|
111
|
+
* `approval-tg-token`, `approval-vault-passphrase`, `approval-sampling-secret`.
|
|
112
|
+
*
|
|
113
|
+
* - **macOS** (`darwin` and `security` on PATH) → `keychain:<service>`;
|
|
114
|
+
* - **Linux with `secret-tool`** → `secret-service:<service>` (the same string
|
|
115
|
+
* is the label, so the two platforms name one secret one way);
|
|
116
|
+
* - **neither** → the operator is OFFERED a plaintext literal in
|
|
117
|
+
* `.approval/env`, and must type `yes` in full to take it, having been shown
|
|
118
|
+
* the same warning `approval env --check` will print at them forever after.
|
|
119
|
+
* §5.2 permits literals for a stated reason, and refusing here would only
|
|
120
|
+
* move the value into a shell profile where nothing can see it to report it.
|
|
121
|
+
*
|
|
122
|
+
* **A value the operator already holds is never handled by this process.** The
|
|
123
|
+
* Telegram token on macOS is collected by `security`'s OWN no-echo prompt: we
|
|
124
|
+
* spawn `security add-generic-password … -w` WITH NO VALUE and with inherited
|
|
125
|
+
* stdio, Apple's prompt reads it from the terminal, and the token reaches this
|
|
126
|
+
* runtime only afterwards, on the stdout of a `find-generic-password -w` read
|
|
127
|
+
* that puts nothing in an argv either. Off macOS it comes through
|
|
128
|
+
* `Prompter.readSecret`, which at least keeps it off the screen.
|
|
129
|
+
*
|
|
130
|
+
* **A value we generate ourselves is a different question**, and it is the one
|
|
131
|
+
* place this family makes a trade rather than following a rule. The vault
|
|
132
|
+
* passphrase and the sampling secret are `randomBytes(32)`, minted in this
|
|
133
|
+
* process, so they are already in this process and there is nobody to prompt.
|
|
134
|
+
* They reach the keystore by STDIN first: `security add-generic-password -w`
|
|
135
|
+
* with the value written to its stdin twice (the prompt asks for confirmation),
|
|
136
|
+
* and `secret-tool store`, which documents stdin as its input. Only if the
|
|
137
|
+
* stdin form FAILS does the fallback put the value in an argv (`-w <value>`),
|
|
138
|
+
* and then the outcome says so out loud. That residual exposure is a value
|
|
139
|
+
* minted one millisecond earlier, never used, visible in `ps` to the same user
|
|
140
|
+
* who is running the command and to root — which is the boundary §11 already
|
|
141
|
+
* declares undefended. It is accepted for generated values and for nothing
|
|
142
|
+
* else: no path in this family ever puts an operator's own token in an argv.
|
|
143
|
+
*
|
|
144
|
+
* **And there is one standing exception to the rule above, which
|
|
145
|
+
* `setup adapter <name>` takes.** A credential bound for the VAULT must pass
|
|
146
|
+
* through this process, because the vault is not a helper with a prompt: it is
|
|
147
|
+
* a file this runtime encrypts, so `setCredential` needs the bytes. There is
|
|
148
|
+
* nothing to delegate the typing to and no third party to hold the value. The
|
|
149
|
+
* secret is read with `Prompter.readSecret` (no echo), handed straight to the
|
|
150
|
+
* cipher, and never printed, logged, or placed in an argv — which is exactly
|
|
151
|
+
* what `approval vault set` already does when a human pastes a credential onto
|
|
152
|
+
* its stdin. The rule is "never handle a value someone else can hold for you";
|
|
153
|
+
* for the vault nobody can, so it is stated here rather than left to look like
|
|
154
|
+
* an oversight.
|
|
155
|
+
*
|
|
156
|
+
* ## Seams
|
|
157
|
+
*
|
|
158
|
+
* The prompter, the keystore, and `fetch` are injected. The alternative is a
|
|
159
|
+
* test suite that needs a terminal, writes to the developer's real Keychain,
|
|
160
|
+
* and talks to the real Bot API — and the third of those would put a real bot
|
|
161
|
+
* token in a test run. `tests/cli-setup.test.ts` drives all three through fakes
|
|
162
|
+
* and the mock Bot API on loopback, and the spawned-CLI cases never get past
|
|
163
|
+
* the terminal check, so nothing under `npm test` can reach a keystore at all.
|
|
164
|
+
*/
|
|
165
|
+
import { type SetupDeps } from "./setup-common.js";
|
|
166
|
+
import type { Streams } from "./main.js";
|
|
167
|
+
/**
|
|
168
|
+
* One typed answer to `human identity (human:<id>):`, as an identity (APRV-90).
|
|
169
|
+
*
|
|
170
|
+
* **A bare id is accepted and normalised.** The prompt prints the `human:`
|
|
171
|
+
* prefix because the prefix is load-bearing — actors are `human:`, `agent:` or
|
|
172
|
+
* `system:`, and the human-only verbs refuse the other two — so an operator who
|
|
173
|
+
* has never read SPEC.md §11 learns the shape from the question itself. Making
|
|
174
|
+
* them retype a prefix the prompt just printed adds a failure path and teaches
|
|
175
|
+
* nothing further, so `carter` becomes `human:carter` and `human:carter` is
|
|
176
|
+
* taken as it stands.
|
|
177
|
+
*
|
|
178
|
+
* An answer with a colon in it is taken as a FULL actor and validated as one,
|
|
179
|
+
* which is what makes `agent:claude` a refusal rather than `human:agent:claude`.
|
|
180
|
+
* That refusal is a reason handed back to {@link askUntil}, so the operator is
|
|
181
|
+
* asked again rather than dropped out of the verb.
|
|
182
|
+
*/
|
|
183
|
+
export declare function identityFromAnswer(answer: string): {
|
|
184
|
+
ok: true;
|
|
185
|
+
value: string;
|
|
186
|
+
} | {
|
|
187
|
+
ok: false;
|
|
188
|
+
reason: string;
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* `approval setup identity` — declare who the human is.
|
|
192
|
+
*
|
|
193
|
+
* EXEMPT from the human-only gate, and the module doc says why: this is the
|
|
194
|
+
* verb that creates the thing the gate reads.
|
|
195
|
+
*/
|
|
196
|
+
export declare function commandSetupIdentity(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): number;
|
|
197
|
+
/** `approval setup vault` — mint and store the vault passphrase. HUMAN-ONLY. */
|
|
198
|
+
export declare function commandSetupVault(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): number;
|
|
199
|
+
/** `approval setup sampling` — mint and store the audit sampling secret. HUMAN-ONLY. */
|
|
200
|
+
export declare function commandSetupSampling(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): number;
|
|
201
|
+
/** `approval setup sender-key` — mint and store the sender key. HUMAN-ONLY. */
|
|
202
|
+
export declare function commandSetupSenderKey(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): number;
|
|
203
|
+
/** `approval setup <identity|vault|sampling|channel <name>|adapter <name>>`. */
|
|
204
|
+
export declare function commandSetup(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): number | Promise<number>;
|
package/dist/src/cli/setup.js
CHANGED
|
@@ -164,14 +164,16 @@
|
|
|
164
164
|
*/
|
|
165
165
|
import { HUMAN_ACTOR_ENV, resolveHumanActor } from "../core/attest.js";
|
|
166
166
|
import { readEnvFile, upsertEnvFileEntries } from "../core/env-file.js";
|
|
167
|
+
import { SENDER_KEY_ENV, hashedSenderId, senderKeyFrom } from "../core/sender-identity.js";
|
|
167
168
|
import { passphraseEnvFor, vaultExists, vaultPathFor } from "../core/vault.js";
|
|
169
|
+
import { parseFlags, stringFlag } from "./args.js";
|
|
168
170
|
import { EXIT_IO, EXIT_OK } from "./exit-codes.js";
|
|
169
|
-
import { SETUP_CHANNEL_HELP, SETUP_HELP, SETUP_IDENTITY_HELP, SETUP_SAMPLING_HELP, SETUP_VAULT_HELP, } from "./help.js";
|
|
171
|
+
import { SETUP_CHANNEL_HELP, SETUP_HELP, SETUP_IDENTITY_HELP, SETUP_SAMPLING_HELP, SETUP_SENDER_KEY_HELP, SETUP_VAULT_HELP, } from "./help.js";
|
|
170
172
|
import { commandSetupAdapter } from "./setup-adapter.js";
|
|
171
173
|
import { commandSetupCheckpoint } from "./setup-checkpoint.js";
|
|
172
174
|
import { RENAMED_NOTICE, commandSetupChannel } from "./setup-channel.js";
|
|
173
175
|
import { commandSetupService } from "./setup-service.js";
|
|
174
|
-
import { DEFAULT_SAMPLING_ENV, emitRefusal, front, offerLiteral, promptRefusal, requireHuman, retrievalCommand, samplingEnvName, schemeFor, storageCommand, usageError, } from "./setup-common.js";
|
|
176
|
+
import { DEFAULT_SAMPLING_ENV, FLAGS, emitRefusal, front, offerLiteral, promptRefusal, requireHuman, retrievalCommand, samplingEnvName, schemeFor, storageCommand, usageError, } from "./setup-common.js";
|
|
175
177
|
import { PLAN_PHRASES, planWrites, reportLeftAlone } from "./setup-flow.js";
|
|
176
178
|
import { askUntil } from "./prompt.js";
|
|
177
179
|
// ---------------------------------------------------------------------------
|
|
@@ -425,6 +427,89 @@ export function commandSetupSampling(argv, streams, cwd, deps = {}) {
|
|
|
425
427
|
return EXIT_OK;
|
|
426
428
|
}
|
|
427
429
|
// ---------------------------------------------------------------------------
|
|
430
|
+
// approval setup sender-key (APRV-370)
|
|
431
|
+
// ---------------------------------------------------------------------------
|
|
432
|
+
const SENDER_KEY_HINT = (where) => ` # 1. store the key (the helper prompts; no value on this command line):\n ${storageCommand(where.kind === "none" ? "keychain" : where.kind, where.services.senderKey)}\n\n # 2. record where it lives (the name carries this instance's id; see \`approval doctor\`):\n printf '%s\\n' '${SENDER_KEY_ENV}=${schemeFor(where.kind === "none" ? "keychain" : where.kind, where.services.senderKey) ?? ""}' >> ${where.envPath}\n chmod 600 ${where.envPath}\n\n # 3. turn an account id into the line the policy carries:\n eval "$(approval env)"\n approval setup sender-key --id <account-id>`;
|
|
433
|
+
/**
|
|
434
|
+
* Print the mapping line for one account id, and mint nothing (APRV-370).
|
|
435
|
+
*
|
|
436
|
+
* The half of this verb that runs after the key exists, and the reason the
|
|
437
|
+
* proposal page an operator applies does not have to carry a placeholder they
|
|
438
|
+
* fill by hand: the digest depends on a secret only their environment holds,
|
|
439
|
+
* so the exact bytes can only be produced here, on their machine.
|
|
440
|
+
*
|
|
441
|
+
* It stores nothing, prompts for nothing, and prints no secret — a digest is a
|
|
442
|
+
* value designed to be published in a policy — so it is exempt from the
|
|
443
|
+
* terminal requirement and from the human-identity check that guard the minting
|
|
444
|
+
* path. A verb that refused to compute a public value without a TTY would be
|
|
445
|
+
* ceremony charged for nothing.
|
|
446
|
+
*/
|
|
447
|
+
function senderKeyDigest(argv, streams) {
|
|
448
|
+
const json = argv.includes("--json");
|
|
449
|
+
const parsed = parseFlags(argv, { ...FLAGS, "--id": "string" });
|
|
450
|
+
if (!parsed.ok)
|
|
451
|
+
return usageError(streams, json, parsed.message, SETUP_SENDER_KEY_HELP);
|
|
452
|
+
const id = stringFlag(parsed.flags, "--id") ?? "";
|
|
453
|
+
if (id.length === 0) {
|
|
454
|
+
return usageError(streams, json, "--id expects the channel account id to hash, as the transport reports it (for telegram, the decimal callback_query.from.id)", SETUP_SENDER_KEY_HELP);
|
|
455
|
+
}
|
|
456
|
+
const key = senderKeyFrom();
|
|
457
|
+
if (key === null) {
|
|
458
|
+
// Fail closed and say the whole repair. Printing a digest under a key this
|
|
459
|
+
// process invented would hand the operator a line no listener can ever
|
|
460
|
+
// match, and they would find that out at a refused tap.
|
|
461
|
+
const message = `${SENDER_KEY_ENV} is unset or empty in this process, so there is no key to hash ${JSON.stringify(id)} under and nothing was printed. Mint it with \`approval setup sender-key\` if it does not exist yet, then \`eval "$(approval env)"\` to establish it in this shell.`;
|
|
462
|
+
if (json)
|
|
463
|
+
streams.err(`${JSON.stringify({ error: { code: "sender-key-unavailable", message } })}\n`);
|
|
464
|
+
else
|
|
465
|
+
streams.err(`approval: ${message}\n`);
|
|
466
|
+
return EXIT_IO;
|
|
467
|
+
}
|
|
468
|
+
const digest = hashedSenderId(key, id);
|
|
469
|
+
if (json) {
|
|
470
|
+
streams.out(`${JSON.stringify({ id, mapping: digest, env: SENDER_KEY_ENV })}\n`);
|
|
471
|
+
return EXIT_OK;
|
|
472
|
+
}
|
|
473
|
+
streams.out(`The mapping value for account ${id}, under the key in ${SENDER_KEY_ENV}:\n\n ${digest}\n\nIn the approver's block:\n\n senders:\n telegram: "${digest}"\n\nAs a policy-proposal pair (docs/proposals/README.md), with the approver id and\nthe current line replaced by what your own APPROVAL.md says:\n\n Current:\n\n \`\`\`yaml\n approvers:\n <id>:\n channels: [telegram, cli]\n senders:\n telegram: "${id}"\n \`\`\`\n\n Replace with:\n\n \`\`\`yaml\n approvers:\n <id>:\n channels: [telegram, cli]\n senders:\n telegram: "${digest}"\n \`\`\`\n\nThe digest is not a secret: it is published in the policy and in every decision\nrecord. The key it was computed under is, and it was not printed.\n`);
|
|
474
|
+
return EXIT_OK;
|
|
475
|
+
}
|
|
476
|
+
/** `approval setup sender-key` — mint and store the sender key. HUMAN-ONLY. */
|
|
477
|
+
export function commandSetupSenderKey(argv, streams, cwd, deps = {}) {
|
|
478
|
+
// The --id path first, because it mints nothing: no keystore, no prompter, no
|
|
479
|
+
// human identity, and no terminal. `front` would refuse it for want of a TTY.
|
|
480
|
+
if (argv.includes("--id"))
|
|
481
|
+
return senderKeyDigest(argv, streams);
|
|
482
|
+
const outcome = front("sender-key", argv, streams, cwd, deps, SETUP_SENDER_KEY_HELP, SENDER_KEY_HINT, { "--id": "string" });
|
|
483
|
+
if (outcome.kind === "handled")
|
|
484
|
+
return outcome.code;
|
|
485
|
+
const context = outcome;
|
|
486
|
+
const human = requireHuman(context.flags, streams, SETUP_SENDER_KEY_HELP, "sender-key");
|
|
487
|
+
if (!human.ok)
|
|
488
|
+
return human.code;
|
|
489
|
+
streams.out(`approval setup sender-key — mints the operator-held key that turns a channel\naccount id into the value an \`approvers[id].senders\` block carries.\n\nA published policy and a published log disclose the account otherwise: once in\nthe file and then on every decision. A plain unkeyed digest would not fix that,\nbecause a Telegram id is a short decimal number and the whole space of them is\nenumerable on a laptop. This key is what makes the digest a digest of anything.\n\nIt is not an authenticator. Nothing in the gate's safety rests on its secrecy,\nand a listener that loses it can no longer RESOLVE accounts — it refuses every\ndecision on a keyed channel rather than falling back to the raw comparison.\n\n`);
|
|
490
|
+
const plan = planReplacements(streams, context.prompter, context.envPath, [SENDER_KEY_ENV]);
|
|
491
|
+
if (!plan.ok)
|
|
492
|
+
return emitRefusal(streams, plan.refusal);
|
|
493
|
+
if (plan.write.length === 0) {
|
|
494
|
+
reportSkipped(streams, context.envPath, plan.skipped);
|
|
495
|
+
return EXIT_OK;
|
|
496
|
+
}
|
|
497
|
+
const stored = storeGeneratedSecret(streams, context, context.services.senderKey, "sender key");
|
|
498
|
+
if (stored === null)
|
|
499
|
+
return EXIT_OK;
|
|
500
|
+
if ("failed" in stored)
|
|
501
|
+
return stored.code;
|
|
502
|
+
const written = writeLines(streams, context.envPath, [{ key: SENDER_KEY_ENV, value: stored.value, describe: stored.describe }], plan.write);
|
|
503
|
+
if (!written.ok)
|
|
504
|
+
return written.code;
|
|
505
|
+
reportSkipped(streams, context.envPath, plan.skipped);
|
|
506
|
+
// The value was not printed and there is no verb that prints it. What the
|
|
507
|
+
// operator needs next is the line the POLICY carries, which is a different
|
|
508
|
+
// value and is printed on demand by the `--id` path.
|
|
509
|
+
streams.out(`\nThe key is in ${SENDER_KEY_ENV}, and its value was not printed here or anywhere\nelse. Establish it, then turn an account id into the line your policy carries:\n\n eval "$(approval env)"\n approval setup sender-key --id <account-id>\n\nNothing changes until an \`approvers[id].senders\` entry is written in the keyed\nform, through the amendment ceremony that attests it (\`approval policy amend\`,\nor \`approval policy apply <proposal>\`). Until then every mapping stays raw and\nevery record reads exactly as it did.\n\nWHEN IT IS KEYED, the listener needs this variable in its environment or it\nrefuses every decision on that channel (\`sender-key-unavailable\`). Restart the\nlistener after establishing it, and check it with \`approval doctor\`.\n`);
|
|
510
|
+
return EXIT_OK;
|
|
511
|
+
}
|
|
512
|
+
// ---------------------------------------------------------------------------
|
|
428
513
|
// Dispatch
|
|
429
514
|
// ---------------------------------------------------------------------------
|
|
430
515
|
/** `approval setup <identity|vault|sampling|channel <name>|adapter <name>>`. */
|
|
@@ -445,6 +530,13 @@ export function commandSetup(argv, streams, cwd, deps = {}) {
|
|
|
445
530
|
return commandSetupVault(rest, streams, cwd, deps);
|
|
446
531
|
if (sub === "sampling")
|
|
447
532
|
return commandSetupSampling(rest, streams, cwd, deps);
|
|
533
|
+
// APRV-370. The second secret whose PUBLIC half belongs in APPROVAL.md: the
|
|
534
|
+
// key stays in `.approval/env`, and the digest of an account id under it is
|
|
535
|
+
// the value the `senders` mapping carries. Like every setup verb here it
|
|
536
|
+
// edits no policy file; unlike the rest it can be asked to compute that
|
|
537
|
+
// public half, which is what `--id` does.
|
|
538
|
+
if (sub === "sender-key")
|
|
539
|
+
return commandSetupSenderKey(rest, streams, cwd, deps);
|
|
448
540
|
// APRV-257. The fourth subcommand whose subject is a value this runtime
|
|
449
541
|
// MINTS, and the first whose public half belongs in APPROVAL.md rather than
|
|
450
542
|
// in `.approval/env`. It prints that half and the amendment ceremony and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|