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/cli.js
CHANGED
|
@@ -9,22 +9,81 @@
|
|
|
9
9
|
* The exit code is set via `process.exitCode` rather than `process.exit()`, so
|
|
10
10
|
* stdout is flushed by the normal exit path — a JSON object truncated by an
|
|
11
11
|
* early exit would be worse than no output.
|
|
12
|
+
*
|
|
13
|
+
* ONE exception to "no behaviour here" (APRV-445 refutation, S3): the Hermes
|
|
14
|
+
* hook. Hermes reads any non-zero exit with an EMPTY stdout as an ALLOW, so a
|
|
15
|
+
* failure to load the runtime at all (a missing or half-written dist/, a
|
|
16
|
+
* static import that throws) must still answer with a block. That is the only
|
|
17
|
+
* thing this file can do that the runtime cannot: it runs before the runtime
|
|
18
|
+
* exists. For `approval hook hermes` it prints `{"action":"block",...}` and
|
|
19
|
+
* exits 2 on any failure to load or run; every other invocation keeps its old
|
|
20
|
+
* behaviour exactly.
|
|
12
21
|
*/
|
|
13
22
|
|
|
14
|
-
import { existsSync } from "node:fs";
|
|
23
|
+
import { existsSync, writeSync } from "node:fs";
|
|
15
24
|
|
|
16
25
|
const entry = new URL("./dist/src/cli/main.js", import.meta.url);
|
|
26
|
+
const argv = process.argv.slice(2);
|
|
27
|
+
// Matched the way `main` dispatches it: `--no-color` is the one global flag it
|
|
28
|
+
// strips, wherever it appears (APRV-445 recheck L-d).
|
|
29
|
+
const dispatched = argv.filter((word) => word !== "--no-color");
|
|
30
|
+
const hermesHook = dispatched[0] === "hook" && dispatched[1] === "hermes";
|
|
31
|
+
|
|
32
|
+
/** Hermes's own block directive, spelled here because the runtime may not load. */
|
|
33
|
+
function hermesBlock(message) {
|
|
34
|
+
writeSync(1, `${JSON.stringify({ action: "block", message: `hook-io: ${message}; nothing authorizes this call` })}\n`);
|
|
35
|
+
printed = true;
|
|
36
|
+
process.exitCode = 2;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// The last guard (recheck L-d): whatever path the process takes out, a Hermes
|
|
40
|
+
// hook that leaves with a non-zero code other than 2 and nothing on stdout is
|
|
41
|
+
// an ALLOW to Hermes. Such an exit leaves as 2, with the directive when nothing
|
|
42
|
+
// was printed. Exit 0 with nothing on stdout is the post-event answer and is
|
|
43
|
+
// left alone; the adapter itself never answers a pre-event that way.
|
|
44
|
+
let printed = false;
|
|
45
|
+
if (hermesHook) {
|
|
46
|
+
const write = process.stdout.write.bind(process.stdout);
|
|
47
|
+
process.stdout.write = (chunk, ...rest) => {
|
|
48
|
+
if (chunk !== undefined && String(chunk).length > 0) printed = true;
|
|
49
|
+
return write(chunk, ...rest);
|
|
50
|
+
};
|
|
51
|
+
process.on("exit", (code) => {
|
|
52
|
+
if (code === 0 || code === 2) return;
|
|
53
|
+
if (!printed) {
|
|
54
|
+
try {
|
|
55
|
+
writeSync(1, `${JSON.stringify({ action: "block", message: `hook-io: the hook exited ${String(code)} without a verdict; nothing authorizes this call` })}\n`);
|
|
56
|
+
} catch {
|
|
57
|
+
// stdout is gone; the exit code below is the whole verdict.
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Exit 2 blocks whatever stdout says, so it is the code a Hermes hook
|
|
61
|
+
// leaves with on any non-zero path.
|
|
62
|
+
process.exitCode = 2;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
17
65
|
|
|
18
66
|
if (!existsSync(entry)) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
67
|
+
if (hermesHook) {
|
|
68
|
+
hermesBlock("the approval runtime is not built (dist/src/cli/main.js is missing)");
|
|
69
|
+
} else {
|
|
70
|
+
// Exit 4 = I/O error in the frozen exit-code table (src/cli/exit-codes.ts).
|
|
71
|
+
process.stderr.write(
|
|
72
|
+
"approval: dist/src/cli/main.js is missing — run `npm run build` first.\n",
|
|
73
|
+
);
|
|
74
|
+
process.exitCode = 4;
|
|
75
|
+
}
|
|
76
|
+
} else if (hermesHook) {
|
|
77
|
+
try {
|
|
78
|
+
const { main } = await import(entry.href);
|
|
79
|
+
process.exitCode = await main(argv);
|
|
80
|
+
} catch (cause) {
|
|
81
|
+
hermesBlock(`the hook could not run: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
82
|
+
}
|
|
24
83
|
} else {
|
|
25
84
|
const { main } = await import(entry.href);
|
|
26
85
|
// `main` is asynchronous since APRV-209: every verb is loaded on demand, and
|
|
27
86
|
// ESM has no synchronous dynamic import. The exit code still travels through
|
|
28
87
|
// `process.exitCode`, so the flush behaviour described above is unchanged.
|
|
29
|
-
process.exitCode = await main(
|
|
88
|
+
process.exitCode = await main(argv);
|
|
30
89
|
}
|
|
@@ -138,6 +138,24 @@ export interface SmtpTransportOptions {
|
|
|
138
138
|
/** Applied to every string this module returns. See the module header. */
|
|
139
139
|
redact?(text: string): string;
|
|
140
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* The TLS `servername` (SNI) to use for `host`, or `undefined` when there is
|
|
143
|
+
* none to send (APRV-416).
|
|
144
|
+
*
|
|
145
|
+
* SNI names a virtual host, and an IP address is not one. Sending an address
|
|
146
|
+
* there has always been meaningless; Node 26 turned the long-standing
|
|
147
|
+
* deprecation into a hard error, so a session against an IP-addressed relay
|
|
148
|
+
* fails at the handshake with "Setting the TLS ServerName to an IP address is
|
|
149
|
+
* not permitted" before it reaches the certificate. Omitting it is the whole
|
|
150
|
+
* fix: verification of an IP host then rests on the certificate's IP SAN
|
|
151
|
+
* entry, which is what TLS intends for an address, and `rejectUnauthorized`
|
|
152
|
+
* keeps its meaning either way.
|
|
153
|
+
*
|
|
154
|
+
* A bracketed IPv6 literal (`[::1]`, the URL spelling) is unwrapped before the
|
|
155
|
+
* test, because it is an address in every sense that matters here and nothing
|
|
156
|
+
* that reaches this function is a hostname shaped like one.
|
|
157
|
+
*/
|
|
158
|
+
export declare function tlsServername(host: string): string | undefined;
|
|
141
159
|
/** The SMTP envelope, which is not the message's headers. */
|
|
142
160
|
export interface SmtpEnvelope {
|
|
143
161
|
/** MAIL FROM. The return path, not necessarily the From: header. */
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
* Deterministic apart from the network and the clock it does not read: no
|
|
77
77
|
* randomness, no ambient configuration, no environment reads.
|
|
78
78
|
*/
|
|
79
|
-
import { connect as netConnect } from "node:net";
|
|
79
|
+
import { connect as netConnect, isIP } from "node:net";
|
|
80
80
|
import { connect as tlsConnect } from "node:tls";
|
|
81
81
|
export function isSmtpSecurity(value) {
|
|
82
82
|
return value === "implicit" || value === "starttls" || value === "none";
|
|
@@ -103,6 +103,27 @@ export const SMTP_TRANSPORT_FAILURE_CODES = [
|
|
|
103
103
|
export const SMTP_REPLY_CODE_PATTERN = /^smtp-[1-5]\d\d$/u;
|
|
104
104
|
/** The default whole-session budget, in milliseconds. */
|
|
105
105
|
export const DEFAULT_SMTP_TIMEOUT_MS = 30_000;
|
|
106
|
+
/**
|
|
107
|
+
* The TLS `servername` (SNI) to use for `host`, or `undefined` when there is
|
|
108
|
+
* none to send (APRV-416).
|
|
109
|
+
*
|
|
110
|
+
* SNI names a virtual host, and an IP address is not one. Sending an address
|
|
111
|
+
* there has always been meaningless; Node 26 turned the long-standing
|
|
112
|
+
* deprecation into a hard error, so a session against an IP-addressed relay
|
|
113
|
+
* fails at the handshake with "Setting the TLS ServerName to an IP address is
|
|
114
|
+
* not permitted" before it reaches the certificate. Omitting it is the whole
|
|
115
|
+
* fix: verification of an IP host then rests on the certificate's IP SAN
|
|
116
|
+
* entry, which is what TLS intends for an address, and `rejectUnauthorized`
|
|
117
|
+
* keeps its meaning either way.
|
|
118
|
+
*
|
|
119
|
+
* A bracketed IPv6 literal (`[::1]`, the URL spelling) is unwrapped before the
|
|
120
|
+
* test, because it is an address in every sense that matters here and nothing
|
|
121
|
+
* that reaches this function is a hostname shaped like one.
|
|
122
|
+
*/
|
|
123
|
+
export function tlsServername(host) {
|
|
124
|
+
const bare = host.startsWith("[") && host.endsWith("]") ? host.slice(1, -1) : host;
|
|
125
|
+
return isIP(bare) === 0 ? host : undefined;
|
|
126
|
+
}
|
|
106
127
|
// ---------------------------------------------------------------------------
|
|
107
128
|
// Internals
|
|
108
129
|
// ---------------------------------------------------------------------------
|
|
@@ -307,7 +328,7 @@ async function runSession(options, envelope, message) {
|
|
|
307
328
|
host: options.host,
|
|
308
329
|
port: options.port,
|
|
309
330
|
rejectUnauthorized,
|
|
310
|
-
servername: options.host,
|
|
331
|
+
servername: tlsServername(options.host),
|
|
311
332
|
};
|
|
312
333
|
const created = tlsConnect(tlsOptions, () => {
|
|
313
334
|
created.removeListener("error", onError);
|
|
@@ -349,7 +370,7 @@ async function runSession(options, envelope, message) {
|
|
|
349
370
|
const onError = (cause) => {
|
|
350
371
|
reject(new SmtpError("smtp-tls-failed", `the STARTTLS handshake failed: ${redact(cause.message)}`));
|
|
351
372
|
};
|
|
352
|
-
const upgraded = tlsConnect({ socket: plain, rejectUnauthorized, servername: options.host }, () => {
|
|
373
|
+
const upgraded = tlsConnect({ socket: plain, rejectUnauthorized, servername: tlsServername(options.host) }, () => {
|
|
353
374
|
upgraded.removeListener("error", onError);
|
|
354
375
|
resolve(upgraded);
|
|
355
376
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smtp.js","sourceRoot":"","sources":["../../../src/adapters/smtp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smtp.js","sourceRoot":"","sources":["../../../src/adapters/smtp.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
import type { AttestationStatus } from "../core/attest.js";
|
|
52
52
|
import type { BudgetVerdict } from "../core/budgets.js";
|
|
53
53
|
import { type DecideOptions, type GateRefusal } from "../core/gate.js";
|
|
54
|
+
import { type ChannelDecisionRefusalCode, type ChannelSender } from "../core/sender-identity.js";
|
|
54
55
|
import type { EventRecord } from "../core/log.js";
|
|
55
56
|
import type { Autonomy } from "../core/policy-load.js";
|
|
56
57
|
import type { Provenance } from "../core/policy-match.js";
|
|
@@ -450,6 +451,27 @@ export declare function batchDeliveryIdOf(record: EventRecord): DeliveryId | nul
|
|
|
450
451
|
/** A human gesture, as reported by a channel. Never an authorization. */
|
|
451
452
|
export interface ChannelDecision {
|
|
452
453
|
action_key: string;
|
|
454
|
+
/**
|
|
455
|
+
* The sender the channel's own transport authenticated for THIS gesture
|
|
456
|
+
* (APRV-324, `design/channel-sender-identity.md` §3.2).
|
|
457
|
+
*
|
|
458
|
+
* The design put this on {@link ChannelActorOptions}; it lives here instead,
|
|
459
|
+
* because the sender is a property of one tap and that object is a property of
|
|
460
|
+
* the listener. `onDecision` registers one handler for the process, and the
|
|
461
|
+
* only thing that varies per gesture is this value — a per-listener field
|
|
462
|
+
* could not carry it, and giving each listener a mutable slot to stash it in
|
|
463
|
+
* would be exactly the channel-held state SPEC.md §10.3 forbids.
|
|
464
|
+
*
|
|
465
|
+
* It is an OBSERVATION and never an assertion of authority. The channel does
|
|
466
|
+
* not resolve it, cannot choose the actor with it, and must read it from the
|
|
467
|
+
* transport's own attribution: Telegram's `callback_query.from.id`, and
|
|
468
|
+
* nothing a message body, a callback payload or a username says (§11.1
|
|
469
|
+
* invariant 4). A channel that authenticates nobody — the web page, the
|
|
470
|
+
* terminal — sets nothing here, and a `sender` field arriving in one of their
|
|
471
|
+
* request bodies is ignored rather than honoured, because a surface that
|
|
472
|
+
* cannot authenticate a person must not be able to claim one.
|
|
473
|
+
*/
|
|
474
|
+
sender?: ChannelSender;
|
|
453
475
|
/**
|
|
454
476
|
* What the human did. `revoke` is deliberately absent: withdrawing a standing
|
|
455
477
|
* authorization is a considered act performed against the log through the
|
|
@@ -471,6 +493,17 @@ export interface ChannelDecision {
|
|
|
471
493
|
* {@link recordChannelDecision} in {@link ChannelDecisionResult.token}, never in
|
|
472
494
|
* this value. A channel learns that a grant landed, not how to spend it.
|
|
473
495
|
*/
|
|
496
|
+
/**
|
|
497
|
+
* A refusal made by the decision SURFACE, before the gate is called
|
|
498
|
+
* (APRV-324). Its codes are {@link CHANNEL_DECISION_REFUSAL_CODES}, a union of
|
|
499
|
+
* its own: `decide` cannot emit them, and folding them into the gate's
|
|
500
|
+
* vocabulary would tell a second implementation that its gate must.
|
|
501
|
+
*/
|
|
502
|
+
export interface ChannelDecisionRefusal {
|
|
503
|
+
ok: false;
|
|
504
|
+
code: ChannelDecisionRefusalCode;
|
|
505
|
+
message: string;
|
|
506
|
+
}
|
|
474
507
|
export type DecisionOutcome = {
|
|
475
508
|
ok: true;
|
|
476
509
|
action_key: string;
|
|
@@ -489,7 +522,7 @@ export type DecisionOutcome = {
|
|
|
489
522
|
* whose token was never this surface's to hold.
|
|
490
523
|
*/
|
|
491
524
|
tokenIssued: boolean;
|
|
492
|
-
} | GateRefusal;
|
|
525
|
+
} | GateRefusal | ChannelDecisionRefusal;
|
|
493
526
|
/** A channel's self-report. `detail` explains a `false`; SPEC.md §10.2 polls it. */
|
|
494
527
|
export interface ChannelHealth {
|
|
495
528
|
ok: boolean;
|
|
@@ -579,6 +612,25 @@ export interface ChannelActorOptions {
|
|
|
579
612
|
actor: string;
|
|
580
613
|
/** The channel that collected the gesture, for audit context in the note. */
|
|
581
614
|
channel?: string;
|
|
615
|
+
/**
|
|
616
|
+
* Refuse every gesture whose actor would come from {@link actor} rather than
|
|
617
|
+
* from the sender mapping (APRV-455).
|
|
618
|
+
*
|
|
619
|
+
* A listener that holds a human identity of its own (a Telegram listener
|
|
620
|
+
* launched `--as human:carter`) keeps it for the modes `resolveSender` calls
|
|
621
|
+
* `configured`: no sender observed, or a policy that maps no sender for the
|
|
622
|
+
* channel. That fallback is the migration path for a person's own phone, and
|
|
623
|
+
* it is exactly wrong for a RELAY. A relay holds no human identity at all; the
|
|
624
|
+
* only thing it can honestly attribute a gesture to is the account the
|
|
625
|
+
* operator mapped, so where the attested policy maps nobody on the channel,
|
|
626
|
+
* the answer is `sender-unmapped` and one `audit.decision_refused`, never a
|
|
627
|
+
* decision recorded under whatever `actor` the relay was started with.
|
|
628
|
+
*
|
|
629
|
+
* Applies to decisions and attestations alike. A gesture with no sender at
|
|
630
|
+
* all under this flag is refused without a record: there is nobody to
|
|
631
|
+
* attribute the attempt to, and the relay never builds one.
|
|
632
|
+
*/
|
|
633
|
+
requireSenderMapping?: boolean;
|
|
582
634
|
}
|
|
583
635
|
/**
|
|
584
636
|
* {@link recordChannelDecision}'s result: the channel-safe outcome, plus the
|