approval-md 0.2.0 → 0.4.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 +85 -877
- package/SPEC.md +150 -19
- package/cli.js +66 -7
- package/dist/src/adapters/smtp.d.ts +18 -0
- package/dist/src/adapters/smtp.js +24 -3
- package/dist/src/adapters/smtp.js.map +1 -1
- package/dist/src/channels/contract.d.ts +53 -1
- package/dist/src/channels/contract.js +304 -7
- package/dist/src/channels/contract.js.map +1 -1
- package/dist/src/channels/relay-server.d.ts +90 -0
- package/dist/src/channels/relay-server.js +295 -0
- package/dist/src/channels/relay-server.js.map +1 -0
- package/dist/src/channels/relay.d.ts +273 -0
- package/dist/src/channels/relay.js +564 -0
- package/dist/src/channels/relay.js.map +1 -0
- package/dist/src/channels/tagging.js +6 -1
- package/dist/src/channels/tagging.js.map +1 -1
- package/dist/src/channels/telegram-webhook.d.ts +273 -0
- package/dist/src/channels/telegram-webhook.js +536 -0
- package/dist/src/channels/telegram-webhook.js.map +1 -0
- package/dist/src/channels/telegram.d.ts +394 -12
- package/dist/src/channels/telegram.js +621 -68
- package/dist/src/channels/telegram.js.map +1 -1
- package/dist/src/channels/web.d.ts +9 -0
- package/dist/src/channels/web.js +17 -0
- package/dist/src/channels/web.js.map +1 -1
- package/dist/src/cli/amend.js +564 -34
- package/dist/src/cli/amend.js.map +1 -1
- package/dist/src/cli/attest.d.ts +9 -0
- package/dist/src/cli/attest.js +177 -13
- package/dist/src/cli/attest.js.map +1 -1
- package/dist/src/cli/channel-relay.d.ts +108 -0
- package/dist/src/cli/channel-relay.js +334 -0
- package/dist/src/cli/channel-relay.js.map +1 -0
- package/dist/src/cli/channel-telegram-webhook.d.ts +273 -0
- package/dist/src/cli/channel-telegram-webhook.js +709 -0
- package/dist/src/cli/channel-telegram-webhook.js.map +1 -0
- package/dist/src/cli/channel-telegram.d.ts +347 -28
- package/dist/src/cli/channel-telegram.js +763 -28
- package/dist/src/cli/channel-telegram.js.map +1 -1
- package/dist/src/cli/channel.d.ts +10 -1
- package/dist/src/cli/channel.js +14 -1
- package/dist/src/cli/channel.js.map +1 -1
- 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 +1 -1
- package/dist/src/cli/codex.js +304 -7
- package/dist/src/cli/codex.js.map +1 -1
- package/dist/src/cli/daemon.js +41 -6
- package/dist/src/cli/daemon.js.map +1 -1
- package/dist/src/cli/doctor.d.ts +63 -0
- package/dist/src/cli/doctor.js +1322 -122
- package/dist/src/cli/doctor.js.map +1 -1
- package/dist/src/cli/execute.d.ts +17 -1
- package/dist/src/cli/execute.js +366 -22
- package/dist/src/cli/execute.js.map +1 -1
- package/dist/src/cli/exit-codes.d.ts +12 -0
- package/dist/src/cli/exit-codes.js +13 -0
- package/dist/src/cli/exit-codes.js.map +1 -1
- package/dist/src/cli/gate.d.ts +2 -0
- package/dist/src/cli/gate.js +233 -2
- package/dist/src/cli/gate.js.map +1 -1
- package/dist/src/cli/help.d.ts +14 -2
- package/dist/src/cli/help.js +395 -82
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/hook-codex.d.ts +49 -1
- package/dist/src/cli/hook-codex.js +60 -1
- package/dist/src/cli/hook-codex.js.map +1 -1
- package/dist/src/cli/hook.d.ts +828 -4
- package/dist/src/cli/hook.js +2972 -142
- package/dist/src/cli/hook.js.map +1 -1
- package/dist/src/cli/import.js +1 -1
- package/dist/src/cli/import.js.map +1 -1
- package/dist/src/cli/init.js +16 -7
- package/dist/src/cli/init.js.map +1 -1
- package/dist/src/cli/instructions.js +24 -3
- package/dist/src/cli/instructions.js.map +1 -1
- package/dist/src/cli/log-anchor.d.ts +55 -0
- package/dist/src/cli/log-anchor.js +199 -60
- package/dist/src/cli/log-anchor.js.map +1 -1
- package/dist/src/cli/main.d.ts +0 -12
- package/dist/src/cli/main.js +56 -3
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/muse.d.ts +2 -0
- package/dist/src/cli/muse.js +62 -0
- package/dist/src/cli/muse.js.map +1 -0
- package/dist/src/cli/payload.js +79 -1
- package/dist/src/cli/payload.js.map +1 -1
- 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.js +14 -1
- package/dist/src/cli/policy.js.map +1 -1
- package/dist/src/cli/preflight.d.ts +151 -13
- package/dist/src/cli/preflight.js +398 -41
- package/dist/src/cli/preflight.js.map +1 -1
- package/dist/src/cli/sandbox.js +17 -1
- package/dist/src/cli/sandbox.js.map +1 -1
- package/dist/src/cli/scaffold.d.ts +1 -1
- package/dist/src/cli/scaffold.js +7 -1
- package/dist/src/cli/scaffold.js.map +1 -1
- package/dist/src/cli/serve.d.ts +53 -0
- package/dist/src/cli/serve.js +270 -0
- package/dist/src/cli/serve.js.map +1 -0
- package/dist/src/cli/setup-channel.d.ts +9 -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-common.d.ts +3 -1
- package/dist/src/cli/setup-common.js +3 -2
- package/dist/src/cli/setup-common.js.map +1 -1
- package/dist/src/cli/setup.d.ts +2 -0
- package/dist/src/cli/setup.js +94 -2
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli/up.js +134 -51
- package/dist/src/cli/up.js.map +1 -1
- package/dist/src/cli/values.js +3 -4
- package/dist/src/cli/values.js.map +1 -1
- package/dist/src/cli/verb-registry.d.ts +2 -0
- package/dist/src/cli/verb-registry.js +510 -47
- package/dist/src/cli/verb-registry.js.map +1 -1
- package/dist/src/cli/wordmark.d.ts +2 -2
- 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/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/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/core/advance-cycle.d.ts +51 -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 +20 -18
- package/dist/src/core/agents-md.js +33 -31
- package/dist/src/core/agents-md.js.map +1 -1
- package/dist/src/core/attest-bootstrap.d.ts +95 -0
- package/dist/src/core/attest-bootstrap.js +135 -0
- package/dist/src/core/attest-bootstrap.js.map +1 -0
- package/dist/src/core/attest.d.ts +234 -2
- package/dist/src/core/attest.js +342 -7
- package/dist/src/core/attest.js.map +1 -1
- package/dist/src/core/audit.d.ts +73 -3
- package/dist/src/core/audit.js +65 -5
- package/dist/src/core/audit.js.map +1 -1
- package/dist/src/core/channel-lease.d.ts +322 -0
- package/dist/src/core/channel-lease.js +663 -0
- package/dist/src/core/channel-lease.js.map +1 -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/command-class.d.ts +205 -0
- package/dist/src/core/command-class.js +1433 -28
- 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/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/daemon-host.d.ts +178 -0
- package/dist/src/core/daemon-host.js +228 -0
- package/dist/src/core/daemon-host.js.map +1 -0
- package/dist/src/core/daemon-identity.d.ts +238 -0
- package/dist/src/core/daemon-identity.js +252 -0
- package/dist/src/core/daemon-identity.js.map +1 -0
- package/dist/src/core/dark-session.d.ts +109 -8
- 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 +23 -2
- 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 +5 -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 +15 -2
- package/dist/src/core/execute.js +15 -2
- package/dist/src/core/execute.js.map +1 -1
- package/dist/src/core/gate.d.ts +392 -6
- package/dist/src/core/gate.js +852 -24
- 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/harness-version.d.ts +128 -4
- package/dist/src/core/harness-version.js +181 -12
- package/dist/src/core/harness-version.js.map +1 -1
- package/dist/src/core/harness-wait.d.ts +82 -3
- package/dist/src/core/harness-wait.js +89 -3
- package/dist/src/core/harness-wait.js.map +1 -1
- package/dist/src/core/instance.d.ts +59 -2
- package/dist/src/core/instance.js +113 -0
- package/dist/src/core/instance.js.map +1 -1
- package/dist/src/core/log-subscribe.d.ts +21 -0
- package/dist/src/core/log-subscribe.js +16 -6
- package/dist/src/core/log-subscribe.js.map +1 -1
- package/dist/src/core/log-write-layer.d.ts +55 -0
- package/dist/src/core/log-write-layer.js +91 -0
- package/dist/src/core/log-write-layer.js.map +1 -0
- package/dist/src/core/log.d.ts +89 -22
- package/dist/src/core/log.js +197 -19
- package/dist/src/core/log.js.map +1 -1
- package/dist/src/core/payload-census.d.ts +51 -0
- package/dist/src/core/payload-census.js +125 -2
- package/dist/src/core/payload-census.js.map +1 -1
- package/dist/src/core/payload-store.d.ts +31 -0
- package/dist/src/core/payload-store.js +113 -8
- package/dist/src/core/payload-store.js.map +1 -1
- package/dist/src/core/payload.d.ts +18 -3
- package/dist/src/core/payload.js +20 -4
- package/dist/src/core/payload.js.map +1 -1
- package/dist/src/core/policy-diff.d.ts +10 -0
- package/dist/src/core/policy-diff.js +10 -2
- package/dist/src/core/policy-diff.js.map +1 -1
- package/dist/src/core/policy-explain.d.ts +17 -1
- package/dist/src/core/policy-explain.js +48 -1
- package/dist/src/core/policy-explain.js.map +1 -1
- package/dist/src/core/policy-load.d.ts +65 -1
- package/dist/src/core/policy-load.js +21 -3
- package/dist/src/core/policy-load.js.map +1 -1
- package/dist/src/core/policy-match.d.ts +81 -0
- package/dist/src/core/policy-match.js +87 -0
- package/dist/src/core/policy-match.js.map +1 -1
- package/dist/src/core/policy-proposal.d.ts +75 -0
- package/dist/src/core/policy-proposal.js +110 -4
- package/dist/src/core/policy-proposal.js.map +1 -1
- package/dist/src/core/protected-path-guard.d.ts +117 -4
- package/dist/src/core/protected-path-guard.js +362 -48
- 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 +182 -0
- package/dist/src/core/read-scope.js +256 -0
- package/dist/src/core/read-scope.js.map +1 -0
- package/dist/src/core/run-payload.d.ts +160 -0
- package/dist/src/core/run-payload.js +304 -0
- package/dist/src/core/run-payload.js.map +1 -0
- package/dist/src/core/sandbox.d.ts +81 -0
- package/dist/src/core/sandbox.js +190 -1
- package/dist/src/core/sandbox.js.map +1 -1
- package/dist/src/core/sender-identity.d.ts +501 -0
- package/dist/src/core/sender-identity.js +609 -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 +52 -1
- package/dist/src/core/state.js +52 -6
- package/dist/src/core/state.js.map +1 -1
- package/dist/src/core/telegram-config.d.ts +79 -0
- package/dist/src/core/telegram-config.js +108 -0
- package/dist/src/core/telegram-config.js.map +1 -1
- package/dist/src/core/values.d.ts +18 -8
- package/dist/src/core/values.js +36 -1
- package/dist/src/core/values.js.map +1 -1
- package/dist/src/core/verify.d.ts +23 -1
- package/dist/src/core/verify.js +20 -2
- package/dist/src/core/verify.js.map +1 -1
- package/dist/src/daemon/advance.d.ts +10 -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 +80 -5
- package/dist/src/daemon/audit.js +126 -6
- package/dist/src/daemon/audit.js.map +1 -1
- package/dist/src/daemon/daemon.d.ts +174 -2
- package/dist/src/daemon/daemon.js +307 -7
- package/dist/src/daemon/daemon.js.map +1 -1
- package/dist/src/daemon/git-evidence.d.ts +2 -2
- package/dist/src/daemon/git-evidence.js +1 -1
- package/dist/src/daemon/projection.d.ts +13 -2
- package/dist/src/daemon/projection.js +39 -6
- package/dist/src/daemon/projection.js.map +1 -1
- package/dist/src/mcp/server.d.ts +39 -3
- package/dist/src/mcp/server.js +30 -3
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/muse/server.d.ts +16 -0
- package/dist/src/muse/server.js +238 -0
- package/dist/src/muse/server.js.map +1 -0
- package/dist/src/serve/archive.d.ts +158 -0
- package/dist/src/serve/archive.js +354 -0
- package/dist/src/serve/archive.js.map +1 -0
- package/dist/src/serve/arguments.d.ts +93 -0
- package/dist/src/serve/arguments.js +228 -0
- package/dist/src/serve/arguments.js.map +1 -0
- package/dist/src/serve/credentials.d.ts +91 -0
- package/dist/src/serve/credentials.js +143 -0
- package/dist/src/serve/credentials.js.map +1 -0
- package/dist/src/serve/follow.d.ts +86 -0
- package/dist/src/serve/follow.js +101 -0
- package/dist/src/serve/follow.js.map +1 -0
- package/dist/src/serve/hook-thread.d.ts +134 -0
- package/dist/src/serve/hook-thread.js +333 -0
- package/dist/src/serve/hook-thread.js.map +1 -0
- package/dist/src/serve/hook-worker.d.ts +134 -0
- package/dist/src/serve/hook-worker.js +173 -0
- package/dist/src/serve/hook-worker.js.map +1 -0
- package/dist/src/serve/server.d.ts +412 -0
- package/dist/src/serve/server.js +1251 -0
- package/dist/src/serve/server.js.map +1 -0
- package/docs/README-extended.md +766 -0
- package/docs/cli-reference.md +2563 -73
- package/docs/codex-enforced-session.md +75 -2
- package/docs/codex-workspace-broker.md +118 -0
- package/package.json +6 -2
- package/schema/event.schema.json +595 -9
- 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/daemon-id-malformed.json +15 -0
- package/schema/fixtures/event/invalid/execution-started-truncated-policy-sha256.json +18 -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/invalid/harness-cap-at-margin.json +16 -0
- package/schema/fixtures/event/invalid/harness-cap-fractional.json +16 -0
- package/schema/fixtures/event/invalid/harness-cap-negative.json +16 -0
- package/schema/fixtures/event/invalid/harness-cap-string.json +16 -0
- package/schema/fixtures/event/invalid/harness-cap-without-harness-execution.json +16 -0
- package/schema/fixtures/event/invalid/harness-cap-zero.json +16 -0
- package/schema/fixtures/event/valid/approval-granted-sender-hashed.json +20 -0
- package/schema/fixtures/event/valid/approval-requested-harness-cap.json +18 -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/daemon-identity-declared.json +17 -0
- package/schema/fixtures/event/valid/daemon-identity.json +15 -0
- package/schema/fixtures/event/valid/execution-started-policy-sha256.json +18 -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-hermes.json +23 -0
- package/schema/fixtures/event/valid/harness-kind-muse.json +23 -0
- package/schema/fixtures/policy/invalid/daemons-malformed-id.json +10 -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/daemons-allowlist.json +19 -0
- package/schema/fixtures/policy/valid/senders-keyed.json +24 -0
- package/schema/fixtures/policy-md/invalid/schema-invalid-agent-may-request.md +21 -0
- package/schema/fixtures/policy-md/valid/agent-may-request.md +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 +100 -4
- package/schema/values.schema.json +7 -11
- package/schema/fixtures/values/invalid/version-string.json +0 -1
package/dist/src/cli/attest.js
CHANGED
|
@@ -35,14 +35,24 @@
|
|
|
35
35
|
* above hold there too — bytes not parse, declared identity, an agent actor
|
|
36
36
|
* refused at exit 2 — and two refusals are added, both usage errors, for a path
|
|
37
37
|
* that is the policy file and for a path that is not an organ at all.
|
|
38
|
+
*
|
|
39
|
+
* **`--path <path>` signs off an ordinary PROTECTED path (APRV-338)**, and
|
|
40
|
+
* appends a third event (`gate.path.signed_off`) for a third reason: SPEC.md's
|
|
41
|
+
* amendment-provenance rule says text that reached a protected file without a
|
|
42
|
+
* grant is pending until a human ratifies it, and nothing recorded the
|
|
43
|
+
* ratification. This is that record. It is whole-file evidence and therefore
|
|
44
|
+
* weaker than the hunk a grant binds, which is why the protected-path guard
|
|
45
|
+
* reads it only after its grant search has failed; the verb's own job is
|
|
46
|
+
* simply to refuse every path that is not a `policy.edit` surface.
|
|
38
47
|
*/
|
|
39
48
|
import { accessSync, constants, statSync } from "node:fs";
|
|
40
49
|
import { isAbsolute, join, relative, resolve as resolvePathSegments } from "node:path";
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
50
|
+
import { appendBootstrapAttestation } from "../core/attest-bootstrap.js";
|
|
51
|
+
import { HUMAN_ACTOR_ENV, appendAttestation, appendOrganAttestation, appendPathSignOff, resolveHumanActor, } from "../core/attest.js";
|
|
52
|
+
import { normalizePathSpelling, } from "../core/command-class.js";
|
|
53
|
+
import { POLICY_FILENAMES, loadPolicy } from "../core/policy-load.js";
|
|
44
54
|
import { boolFlag, parseFlags, stringFlag } from "./args.js";
|
|
45
|
-
import { EXIT_IO, EXIT_OK, EXIT_TORN_TAIL, EXIT_USAGE } from "./exit-codes.js";
|
|
55
|
+
import { EXIT_INTEGRITY, EXIT_IO, EXIT_OK, EXIT_TORN_TAIL, EXIT_USAGE, } from "./exit-codes.js";
|
|
46
56
|
import { POLICY_ATTEST_HELP } from "./help.js";
|
|
47
57
|
import { DEFAULT_LOG_PATH, resolvePath } from "./paths.js";
|
|
48
58
|
import { usageErrorText } from "./usage.js";
|
|
@@ -50,8 +60,10 @@ const FLAGS = {
|
|
|
50
60
|
"--policy": "string",
|
|
51
61
|
"--dir": "string",
|
|
52
62
|
"--organ": "string",
|
|
63
|
+
"--path": "string",
|
|
53
64
|
"--as": "string",
|
|
54
65
|
"--log": "string",
|
|
66
|
+
"--bootstrap": "boolean",
|
|
55
67
|
"--json": "boolean",
|
|
56
68
|
"--help": "boolean",
|
|
57
69
|
"-h": "boolean",
|
|
@@ -62,8 +74,14 @@ function detail(cause) {
|
|
|
62
74
|
function absolute(value, cwd) {
|
|
63
75
|
return isAbsolute(value) ? value : resolvePathSegments(cwd, value);
|
|
64
76
|
}
|
|
65
|
-
/**
|
|
66
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Relativize a flag's path against the root whose bytes it names.
|
|
79
|
+
*
|
|
80
|
+
* Shared by `--organ` and `--path` (APRV-338) because the rule is one rule: the
|
|
81
|
+
* record names a path a reader on another machine resolves against their own
|
|
82
|
+
* checkout, so it must sit under the checkout the record was written in.
|
|
83
|
+
*/
|
|
84
|
+
function flagRelativePath(flag, value, root, what) {
|
|
67
85
|
// An absolute path is accepted and reduced, because a human tab-completing a
|
|
68
86
|
// path at a terminal produces one and refusing it would be pedantry. What is
|
|
69
87
|
// NOT accepted is one that leaves the root: the record names a path a reader
|
|
@@ -74,7 +92,7 @@ function organRelativePath(value, root) {
|
|
|
74
92
|
if (normalized.length === 0 || normalized.split("/").includes("..")) {
|
|
75
93
|
return {
|
|
76
94
|
ok: false,
|
|
77
|
-
message:
|
|
95
|
+
message: `${flag} ${JSON.stringify(value)} does not name a path inside ${root}; ${what} records a repository-relative path, so it must sit under the checkout it is written in (pass --dir to name a different one)`,
|
|
78
96
|
};
|
|
79
97
|
}
|
|
80
98
|
return { ok: true, path: normalized };
|
|
@@ -178,7 +196,7 @@ function attestOrgan(organFlag, run) {
|
|
|
178
196
|
if (run.policyFlag !== null) {
|
|
179
197
|
return usageError(streams, json, "--policy and --organ name two different files to hash; pass one of them (the policy file is attested by `approval policy attest` with no --organ)");
|
|
180
198
|
}
|
|
181
|
-
const resolved =
|
|
199
|
+
const resolved = flagRelativePath("--organ", organFlag, run.dir, "an organ attestation");
|
|
182
200
|
if (!resolved.ok)
|
|
183
201
|
return usageError(streams, json, resolved.message);
|
|
184
202
|
// The file is NOT stat'd here: `core/attest.ts` decides the path rules before
|
|
@@ -228,6 +246,102 @@ function attestOrgan(organFlag, run) {
|
|
|
228
246
|
return EXIT_IO;
|
|
229
247
|
}
|
|
230
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* `policy.protected_paths` as the live policy declares it, or `[]`.
|
|
251
|
+
*
|
|
252
|
+
* Loaded so a project that widened its own protected surface can sign off the
|
|
253
|
+
* files it added: without it `--path design/decisions.md` would refuse in a
|
|
254
|
+
* repository whose policy protects `design/`. A policy that will not load
|
|
255
|
+
* yields `[]`, which is the BUILT-IN set alone and therefore the narrower
|
|
256
|
+
* answer — the fail-closed direction for a verb whose list decides what may be
|
|
257
|
+
* signed, and the same direction `classifyCommand` takes when the list is
|
|
258
|
+
* omitted.
|
|
259
|
+
*/
|
|
260
|
+
function policyProtectedPaths(policyFlag, dir, cwd) {
|
|
261
|
+
const load = loadPolicy(policyFlag === null ? { dir } : { file: absolute(policyFlag, cwd) });
|
|
262
|
+
return load.ok ? (load.policy.protected_paths ?? []) : [];
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* `approval policy attest --path <path>` (APRV-338) — the human route for
|
|
266
|
+
* ratifying a protected file's current bytes.
|
|
267
|
+
*
|
|
268
|
+
* One path per call, for the reason `--organ` takes one: the checker's question
|
|
269
|
+
* is always about one path, and a set attested in one record would have to be
|
|
270
|
+
* unpicked by whoever asks "what did I sign off".
|
|
271
|
+
*
|
|
272
|
+
* `--organ` alongside `--path` is a usage error rather than a precedence
|
|
273
|
+
* puzzle. The two flags name two different records about two different kinds of
|
|
274
|
+
* surface, and a caller who passed both has not decided which claim they are
|
|
275
|
+
* making. `--policy` alongside either is refused for the same reason it is
|
|
276
|
+
* refused beside `--organ`.
|
|
277
|
+
*
|
|
278
|
+
* Everything that decides is in `core/attest.ts`: the human-actor rule, the
|
|
279
|
+
* three path refusals, and the digest. This function resolves a path, loads the
|
|
280
|
+
* policy's protected list, picks an exit code, and prints.
|
|
281
|
+
*/
|
|
282
|
+
function signOffPath(pathFlag, run) {
|
|
283
|
+
const { streams, json } = run;
|
|
284
|
+
if (run.organFlag !== null) {
|
|
285
|
+
return usageError(streams, json, "--organ and --path name two different records about two different surfaces; pass one of them (an organ is policy.core and has no grant available to it, an ordinary protected path does)");
|
|
286
|
+
}
|
|
287
|
+
if (run.policyFlag !== null) {
|
|
288
|
+
return usageError(streams, json, "--policy and --path name two different files to hash; pass one of them (the policy file is attested by `approval policy attest` with no --path)");
|
|
289
|
+
}
|
|
290
|
+
const resolved = flagRelativePath("--path", pathFlag, run.dir, "a sign-off");
|
|
291
|
+
if (!resolved.ok)
|
|
292
|
+
return usageError(streams, json, resolved.message);
|
|
293
|
+
// Not stat'd here, for the reason the organ route is not: `core/attest.ts`
|
|
294
|
+
// decides every path rule before it reads anything, so `--path src/core/gate.ts`
|
|
295
|
+
// is a usage error whether or not it exists, and an absent protected file
|
|
296
|
+
// comes back as that module's `io` refusal with the path and the root named.
|
|
297
|
+
const onDisk = join(run.dir, resolved.path);
|
|
298
|
+
// No timestamp is passed: `gate.path.signed_off` carries the `gate.` prefix,
|
|
299
|
+
// so amended SPEC.md §8 (A2) has core stamp it at the write boundary.
|
|
300
|
+
const result = appendPathSignOff(run.logPath, {
|
|
301
|
+
path: resolved.path,
|
|
302
|
+
root: run.dir,
|
|
303
|
+
protectedPaths: policyProtectedPaths(run.policyFlag, run.dir, run.cwd),
|
|
304
|
+
}, run.actor);
|
|
305
|
+
if (result.ok) {
|
|
306
|
+
const sha256 = result.record.payload["sha256"];
|
|
307
|
+
if (json) {
|
|
308
|
+
streams.out(`${JSON.stringify({
|
|
309
|
+
ok: true,
|
|
310
|
+
seq: result.record.seq,
|
|
311
|
+
sha256,
|
|
312
|
+
path: onDisk,
|
|
313
|
+
signed_path: resolved.path,
|
|
314
|
+
})}\n`);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
streams.out(`signed off ${resolved.path} at seq ${result.record.seq}: sha256 ${sha256}\n`);
|
|
318
|
+
}
|
|
319
|
+
return EXIT_OK;
|
|
320
|
+
}
|
|
321
|
+
if (json) {
|
|
322
|
+
streams.err(`${JSON.stringify({ ok: false, error: { code: result.error.code, message: result.error.message } })}\n`);
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
streams.err(`approval: ${result.error.message}\n`);
|
|
326
|
+
}
|
|
327
|
+
switch (result.error.code) {
|
|
328
|
+
// A path this verb will not sign off, and an actor who may not sign one,
|
|
329
|
+
// are both bad invocations: the caller has to change what they typed, not
|
|
330
|
+
// retry. The three path codes stay distinct in the payload because the
|
|
331
|
+
// repairs differ — `approval policy attest` with no flag, `--organ`, and
|
|
332
|
+
// nothing at all.
|
|
333
|
+
case "path-is-policy":
|
|
334
|
+
case "path-is-core":
|
|
335
|
+
case "path-not-protected":
|
|
336
|
+
case "actor-not-human":
|
|
337
|
+
case "validation":
|
|
338
|
+
return EXIT_USAGE;
|
|
339
|
+
case "corrupt-tail":
|
|
340
|
+
return EXIT_TORN_TAIL;
|
|
341
|
+
default:
|
|
342
|
+
return EXIT_IO;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
231
345
|
/** `approval policy attest …` — hash the live policy file and log the human's sign-off. */
|
|
232
346
|
export function commandPolicyAttest(argv, streams, cwd) {
|
|
233
347
|
const json = argv.includes("--json");
|
|
@@ -252,8 +366,38 @@ export function commandPolicyAttest(argv, streams, cwd) {
|
|
|
252
366
|
}
|
|
253
367
|
const dirFlag = stringFlag(parsed.flags, "--dir");
|
|
254
368
|
const dir = dirFlag === null ? cwd : absolute(dirFlag, cwd);
|
|
255
|
-
const
|
|
369
|
+
const bootstrap = boolFlag(parsed.flags, "--bootstrap");
|
|
370
|
+
const logFlag = stringFlag(parsed.flags, "--log");
|
|
371
|
+
// APRV-449 review. With --bootstrap the log is the STORE's, so it resolves
|
|
372
|
+
// under --dir (as `approval serve --dir` resolves it) unless --log names one.
|
|
373
|
+
// A provisioning step run from another directory with `--dir $STORE` would
|
|
374
|
+
// otherwise attest into a stray log beside its own cwd, and the store it
|
|
375
|
+
// meant would stay unattested. The plain verb keeps its cwd-relative default.
|
|
376
|
+
const logPath = bootstrap && logFlag === null
|
|
377
|
+
? join(dir, DEFAULT_LOG_PATH)
|
|
378
|
+
: resolvePath(logFlag, DEFAULT_LOG_PATH, cwd);
|
|
256
379
|
const organFlag = stringFlag(parsed.flags, "--organ");
|
|
380
|
+
const pathFlag = stringFlag(parsed.flags, "--path");
|
|
381
|
+
// APRV-449. The bootstrap is a rule about the POLICY attestation (a store's
|
|
382
|
+
// first one), so beside a route that appends a different event it would be a
|
|
383
|
+
// flag nobody read. Refused rather than ignored.
|
|
384
|
+
if (bootstrap && (organFlag !== null || pathFlag !== null)) {
|
|
385
|
+
return usageError(streams, json, `--bootstrap attests a store's first POLICY and cannot be combined with ${organFlag !== null ? "--organ" : "--path"}, which appends a different record`);
|
|
386
|
+
}
|
|
387
|
+
// `--path` is decided first so that passing both flags reports the conflict
|
|
388
|
+
// rather than silently running the organ route with a `--path` nobody read.
|
|
389
|
+
if (pathFlag !== null) {
|
|
390
|
+
return signOffPath(pathFlag, {
|
|
391
|
+
streams,
|
|
392
|
+
json,
|
|
393
|
+
actor,
|
|
394
|
+
dir,
|
|
395
|
+
cwd,
|
|
396
|
+
logPath,
|
|
397
|
+
policyFlag: stringFlag(parsed.flags, "--policy"),
|
|
398
|
+
organFlag,
|
|
399
|
+
});
|
|
400
|
+
}
|
|
257
401
|
if (organFlag !== null) {
|
|
258
402
|
return attestOrgan(organFlag, {
|
|
259
403
|
streams,
|
|
@@ -269,7 +413,13 @@ export function commandPolicyAttest(argv, streams, cwd) {
|
|
|
269
413
|
return ioError(streams, json, policy.message);
|
|
270
414
|
// No timestamp is passed: `policy.updated` is gate-typed, so amended SPEC.md
|
|
271
415
|
// §8 (A2) has core stamp it at the write boundary from its own clock.
|
|
272
|
-
|
|
416
|
+
//
|
|
417
|
+
// `--bootstrap` (APRV-449) reads the verified log first and attests only a
|
|
418
|
+
// store that has never been attested; a re-run is `policy-already-attested`
|
|
419
|
+
// and changed bytes are `policy-amendment-required`, both appending nothing.
|
|
420
|
+
const result = bootstrap
|
|
421
|
+
? appendBootstrapAttestation(logPath, policy.path, actor)
|
|
422
|
+
: appendAttestation(logPath, policy.path, actor);
|
|
273
423
|
if (result.ok) {
|
|
274
424
|
const sha256 = result.record.payload["sha256"];
|
|
275
425
|
if (json) {
|
|
@@ -280,13 +430,17 @@ export function commandPolicyAttest(argv, streams, cwd) {
|
|
|
280
430
|
}
|
|
281
431
|
return EXIT_OK;
|
|
282
432
|
}
|
|
433
|
+
const error = result.error;
|
|
283
434
|
if (json) {
|
|
284
|
-
|
|
435
|
+
// `seq` and `attested_by` ride only on the two bootstrap refusals, which is
|
|
436
|
+
// the one place they are facts: the attestation in force, and who made it.
|
|
437
|
+
const extra = error.seq === undefined ? {} : { seq: error.seq, attested_by: error.attested_by ?? null };
|
|
438
|
+
streams.err(`${JSON.stringify({ ok: false, error: { code: error.code, message: error.message, ...extra } })}\n`);
|
|
285
439
|
}
|
|
286
440
|
else {
|
|
287
|
-
streams.err(`approval: ${
|
|
441
|
+
streams.err(`approval: ${error.message}\n`);
|
|
288
442
|
}
|
|
289
|
-
switch (
|
|
443
|
+
switch (error.code) {
|
|
290
444
|
case "actor-not-human":
|
|
291
445
|
// The actor rule, re-refused by core with its own code since APRV-20 pass
|
|
292
446
|
// two. Reachable only if this layer's check and core's ever disagree; it
|
|
@@ -297,9 +451,19 @@ export function commandPolicyAttest(argv, streams, cwd) {
|
|
|
297
451
|
// different fact from the actor rule, and no longer spelled the same way.
|
|
298
452
|
return EXIT_USAGE;
|
|
299
453
|
case "corrupt-tail":
|
|
454
|
+
case "log-torn-tail":
|
|
300
455
|
// A torn tail has its own code in the frozen table, and calling it I/O
|
|
301
456
|
// would misreport a crashed write as a permission problem.
|
|
302
457
|
return EXIT_TORN_TAIL;
|
|
458
|
+
case "policy-already-attested":
|
|
459
|
+
case "policy-amendment-required":
|
|
460
|
+
case "head-moved":
|
|
461
|
+
case "log-corrupt":
|
|
462
|
+
// APRV-449. Decisions the runtime made from the log (and a chain it will
|
|
463
|
+
// not decide from), on the split the gate verbs draw: a well-formed
|
|
464
|
+
// command the runtime said no to is 1, not 2. A provisioning step branches
|
|
465
|
+
// on `error.code`; `policy-already-attested` is its expected re-run answer.
|
|
466
|
+
return EXIT_INTEGRITY;
|
|
303
467
|
default:
|
|
304
468
|
return EXIT_IO;
|
|
305
469
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attest.js","sourceRoot":"","sources":["../../../src/cli/attest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attest.js","sourceRoot":"","sources":["../../../src/cli/attest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approval channel relay` — gestures an operator's authenticated relay
|
|
3
|
+
* carries (SPEC.md §10.3, APRV-455).
|
|
4
|
+
*
|
|
5
|
+
* The third arrival of a human gesture, beside a Telegram tap and a terminal.
|
|
6
|
+
* An operator's control plane holds an EdgeOS session for the person, shows
|
|
7
|
+
* them a request or their policy, and posts what they did here: the gesture,
|
|
8
|
+
* the EdgeOS `/humans/me` id of the session that made it, the hash or the key
|
|
9
|
+
* it answers, and a nonce. `channels/relay-server.ts` authenticates the post
|
|
10
|
+
* and `channels/relay.ts` turns it into a log event through the one function a
|
|
11
|
+
* Telegram tap goes through. This file resolves configuration, refuses what it
|
|
12
|
+
* must refuse, binds a port and reports; it decides nothing.
|
|
13
|
+
*
|
|
14
|
+
* ## The refusals that are the point
|
|
15
|
+
*
|
|
16
|
+
* 1. **The secret comes from the launch environment, never from the tree.**
|
|
17
|
+
* `APPROVAL_RELAY_SECRET`, refused when unset, when shorter than a value a
|
|
18
|
+
* host would generate, and when it holds a character a header cannot carry
|
|
19
|
+
* unambiguously (SPEC.md §11.1 invariant 7). It is a conventional name,
|
|
20
|
+
* beside `APPROVAL_TG_WEBHOOK_SECRET`, for that variable's reason: the
|
|
21
|
+
* policy decides WHETHER a channel exists, never the value that
|
|
22
|
+
* authenticates it, and a second declaration would be a second place for
|
|
23
|
+
* one fact to be wrong. Under the `APPROVAL_` prefix it is withheld from
|
|
24
|
+
* every child `approval run` spawns (`core/child-env.ts`), and the hook
|
|
25
|
+
* classifier holds this command line `policy.core`, so an agent session
|
|
26
|
+
* cannot start a relay with a secret of its own.
|
|
27
|
+
* 2. **No human identity.** This verb takes no `--as` and reads no
|
|
28
|
+
* `APPROVAL_HUMAN`. Every gesture is attributed to the account the attested
|
|
29
|
+
* policy maps, or refused `sender-unmapped`.
|
|
30
|
+
* 3. **A post without the secret decides nothing and appends nothing.**
|
|
31
|
+
*
|
|
32
|
+
* ## Why there is no transport lease
|
|
33
|
+
*
|
|
34
|
+
* A Telegram bot admits one receiver, so its transports take a lease. A relay
|
|
35
|
+
* has no such constraint: two relays on one gate would each record through
|
|
36
|
+
* compare-and-append, the gate would answer a duplicate decision
|
|
37
|
+
* `already-decided`, and the nonce ledger is a directory of exclusively linked files that
|
|
38
|
+
* refuses a replay whichever relay it reaches. A second relay on the SAME port
|
|
39
|
+
* fails to bind and says so.
|
|
40
|
+
*
|
|
41
|
+
* ## Where TLS is
|
|
42
|
+
*
|
|
43
|
+
* Not here, exactly as for `approval serve` and the webhook. Loopback by
|
|
44
|
+
* default, behind whatever the operator puts in front of it; a routable bind
|
|
45
|
+
* takes two flags and prints a banner, because the secret travels in a header.
|
|
46
|
+
*/
|
|
47
|
+
import type { Streams } from "./main.js";
|
|
48
|
+
/** The environment variable the shared secret is read from. */
|
|
49
|
+
export declare const RELAY_SECRET_ENV = "APPROVAL_RELAY_SECRET";
|
|
50
|
+
/** The shortest secret this verb starts with: `serve`'s floor, for its reason. */
|
|
51
|
+
export declare const RELAY_MIN_SECRET_LENGTH = 24;
|
|
52
|
+
/**
|
|
53
|
+
* Why the relay could not start. A closed union, distinct per repair (SPEC.md
|
|
54
|
+
* §11.1 invariant 6). Its per-request refusals are `RELAY_REFUSAL_CODES`.
|
|
55
|
+
*/
|
|
56
|
+
export declare const RELAY_START_REFUSAL_CODES: readonly [
|
|
57
|
+
/** `APPROVAL_RELAY_SECRET` is unset or empty. */
|
|
58
|
+
"relay-secret-missing",
|
|
59
|
+
/** It is shorter than {@link RELAY_MIN_SECRET_LENGTH}. */
|
|
60
|
+
"relay-secret-weak",
|
|
61
|
+
/** It holds a character outside A-Z a-z 0-9 _ -, or is longer than 256. */
|
|
62
|
+
"relay-secret-charset",
|
|
63
|
+
/** `--proposer` is not an `agent:` id. */
|
|
64
|
+
"relay-proposer-invalid",
|
|
65
|
+
/** The bind flags do not name a usable loopback (or explicitly widened) address. */
|
|
66
|
+
"relay-bind-invalid"];
|
|
67
|
+
export type RelayStartRefusalCode = (typeof RELAY_START_REFUSAL_CODES)[number];
|
|
68
|
+
export interface RelaySetup {
|
|
69
|
+
logPath: string;
|
|
70
|
+
policy: {
|
|
71
|
+
dir?: string;
|
|
72
|
+
file?: string;
|
|
73
|
+
};
|
|
74
|
+
secret: string;
|
|
75
|
+
host: string;
|
|
76
|
+
port: number;
|
|
77
|
+
proposer: string;
|
|
78
|
+
json: boolean;
|
|
79
|
+
}
|
|
80
|
+
export type RelayPreparation = {
|
|
81
|
+
ok: true;
|
|
82
|
+
setup: RelaySetup;
|
|
83
|
+
} | {
|
|
84
|
+
ok: false;
|
|
85
|
+
code: RelayStartRefusalCode;
|
|
86
|
+
message: string;
|
|
87
|
+
};
|
|
88
|
+
export interface RelayRequest {
|
|
89
|
+
logPath: string;
|
|
90
|
+
policy: {
|
|
91
|
+
dir?: string;
|
|
92
|
+
file?: string;
|
|
93
|
+
};
|
|
94
|
+
listen: string | null;
|
|
95
|
+
port: string | null;
|
|
96
|
+
allowNonLoopback: boolean;
|
|
97
|
+
proposer: string | null;
|
|
98
|
+
json: boolean;
|
|
99
|
+
env?: NodeJS.ProcessEnv;
|
|
100
|
+
}
|
|
101
|
+
/** Everything that can fail without binding a port. Prints nothing. */
|
|
102
|
+
export declare function prepareRelay(request: RelayRequest): RelayPreparation;
|
|
103
|
+
/** The banner a routable bind prints, every time, on stderr. */
|
|
104
|
+
export declare function relayNonLoopbackBanner(host: string, port: number): string;
|
|
105
|
+
/** Run the relay until a signal stops it. */
|
|
106
|
+
export declare function runRelay(setup: RelaySetup, streams: Streams): Promise<number>;
|
|
107
|
+
/** `approval channel relay [flags]`. */
|
|
108
|
+
export declare function commandChannelRelay(argv: string[], streams: Streams, cwd: string): Promise<number>;
|