approval-md 0.1.0 → 0.2.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 +584 -553
- package/SPEC.md +42 -13
- 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 +623 -0
- 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 +1832 -0
- package/dist/src/channels/web.d.ts +341 -0
- 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/args.d.ts +43 -0
- package/dist/src/cli/attest.d.ts +41 -0
- 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 +806 -0
- package/dist/src/cli/channel-web.d.ts +131 -0
- package/dist/src/cli/channel.d.ts +71 -0
- package/dist/src/cli/checkpoint-tap.d.ts +169 -0
- package/dist/src/cli/codex.d.ts +2 -0
- package/dist/src/cli/codex.js +172 -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/doctor.d.ts +129 -0
- package/dist/src/cli/doctor.js +119 -5
- 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/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 +103 -0
- package/dist/src/cli/help.js +173 -51
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/hook-codex.d.ts +78 -0
- package/dist/src/cli/hook-codex.js +167 -0
- package/dist/src/cli/hook-codex.js.map +1 -0
- package/dist/src/cli/hook.d.ts +331 -0
- package/dist/src/cli/hook.js +186 -80
- package/dist/src/cli/hook.js.map +1 -1
- package/dist/src/cli/import.d.ts +35 -0
- 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 +155 -5
- 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.d.ts +43 -0
- package/dist/src/cli/preflight.d.ts +363 -0
- package/dist/src/cli/preflight.js +294 -7
- 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/scaffold.d.ts +79 -0
- 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 +117 -0
- package/dist/src/cli/setup-checkpoint.d.ts +57 -0
- package/dist/src/cli/setup-common.d.ts +275 -0
- 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 +202 -0
- 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 +4 -2
- 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/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 +176 -8
- 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/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/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-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 +170 -0
- package/dist/src/core/agents-md.d.ts +276 -0
- 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 +420 -0
- package/dist/src/core/attest.js +13 -1
- package/dist/src/core/attest.js.map +1 -1
- package/dist/src/core/audit.d.ts +492 -0
- package/dist/src/core/budgets.d.ts +238 -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 +543 -0
- package/dist/src/core/command-class.js +43 -8
- package/dist/src/core/command-class.js.map +1 -1
- 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/dark-session.d.ts +331 -0
- package/dist/src/core/decision-refusal.d.ts +185 -0
- package/dist/src/core/env-file.d.ts +450 -0
- package/dist/src/core/execute.d.ts +858 -0
- package/dist/src/core/execute.js +44 -6
- 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 +1364 -0
- package/dist/src/core/gate.js +68 -13
- package/dist/src/core/gate.js.map +1 -1
- 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 +2 -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 +253 -0
- 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 +278 -0
- 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 +150 -0
- package/dist/src/core/policy-explain.js +31 -3
- package/dist/src/core/policy-explain.js.map +1 -1
- package/dist/src/core/policy-load.d.ts +527 -0
- package/dist/src/core/policy-load.js +15 -3
- package/dist/src/core/policy-load.js.map +1 -1
- package/dist/src/core/policy-match.d.ts +281 -0
- package/dist/src/core/policy-match.js +20 -9
- package/dist/src/core/policy-match.js.map +1 -1
- package/dist/src/core/policy-proposal.d.ts +265 -0
- package/dist/src/core/prompt-layout.d.ts +221 -0
- package/dist/src/core/protected-path-guard.d.ts +453 -0
- package/dist/src/core/protected-path-guard.js +514 -35
- package/dist/src/core/protected-path-guard.js.map +1 -1
- 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 +290 -0
- package/dist/src/core/seal.d.ts +165 -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 +137 -0
- 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 +466 -0
- package/dist/src/daemon/audit.d.ts +87 -0
- package/dist/src/daemon/daemon.d.ts +1180 -0
- 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 +9 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/docs/adapter-api.md +106 -0
- package/docs/cli-reference.md +389 -36
- package/docs/codex-enforced-session.md +30 -0
- package/package.json +12 -2
- package/schema/codex-instance.schema.json +82 -0
- package/schema/event.schema.json +2 -1
- package/schema/fixtures/codex-instance/invalid/unpinned-codex-version.json +40 -0
- package/schema/fixtures/codex-instance/valid/canonical.json +40 -0
- package/schema/policy.schema.json +21 -1
- package/templates/codex/README.md +9 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approval sandbox` — run a command with no way out to the network (APRV-193).
|
|
3
|
+
*
|
|
4
|
+
* ## Why a verb, when `approval run` already sandboxes
|
|
5
|
+
*
|
|
6
|
+
* `approval run` covers the actions the gate SEES: it holds a grant or it does
|
|
7
|
+
* not, it appends `execution.started`, and since APRV-193 it puts an ungranted
|
|
8
|
+
* child in a room with no doors. It does not cover the commands the harness
|
|
9
|
+
* runs on its own — `npm test`, `node scripts/whatever.mjs` — which the hook
|
|
10
|
+
* classifies `files.write.workspace`, allows, and then never touches again,
|
|
11
|
+
* because the hook DECIDES and the harness EXECUTES. Those are the commands that
|
|
12
|
+
* run code an agent wrote a minute ago, and they are the whole of the
|
|
13
|
+
* laundering hole this task exists to close.
|
|
14
|
+
*
|
|
15
|
+
* The hook cannot close it: a `PreToolUse` verdict is allow or deny, and it
|
|
16
|
+
* cannot rewrite the command into a wrapper. So the wrapper is a verb the
|
|
17
|
+
* command is written with, `approval sandbox -- npm test`, and two things make
|
|
18
|
+
* that more than a convention an agent could simply not type:
|
|
19
|
+
*
|
|
20
|
+
* 1. `core/command-class.ts` classifies the wrapper as its INNER argv, so
|
|
21
|
+
* running something safely is no longer punished with `hook-unclassified`
|
|
22
|
+
* (before this task, `sandbox-exec …` was denied while the bare command was
|
|
23
|
+
* allowed — the hook actively penalised the safe spelling), and the wrapper
|
|
24
|
+
* cannot launder anything either, because the class the hook resolves is the
|
|
25
|
+
* inner command's own.
|
|
26
|
+
* 2. `APPROVAL_HOOK_REQUIRE_SANDBOX=1` makes the hook DENY an allowed-class
|
|
27
|
+
* exec that is not written this way, with a message naming the spelling that
|
|
28
|
+
* works. It is off by default and turning it on can only ever refuse more,
|
|
29
|
+
* which is why an environment variable is an acceptable home for it.
|
|
30
|
+
*
|
|
31
|
+
* ## What it does
|
|
32
|
+
*
|
|
33
|
+
* Builds the profile (`core/sandbox.ts`), scrubs the credential-bearing
|
|
34
|
+
* variables out of the child's environment (`core/child-env.ts`, APRV-205),
|
|
35
|
+
* spawns, and exits with the child's own exit code. It appends NOTHING: this
|
|
36
|
+
* verb removes a capability, it does not authorize anything, and a log entry
|
|
37
|
+
* per `npm test` would be the transparency log inheriting a database's problem
|
|
38
|
+
* (SPEC.md §2, and the reason gate-routed editing was rejected on this task).
|
|
39
|
+
*
|
|
40
|
+
* ## What it fails at, stated plainly
|
|
41
|
+
*
|
|
42
|
+
* An agent HARNESS cannot run under this. `claude` and `cursor-agent` talk to a
|
|
43
|
+
* model over the network, and this verb denies exactly that, so
|
|
44
|
+
* `approval sandbox -- claude` is a session that cannot think. Sandboxing a
|
|
45
|
+
* whole session needs an egress allowlist reaching one host, which Seatbelt
|
|
46
|
+
* cannot express by hostname and which the prior art (Claude Code's own sandbox
|
|
47
|
+
* mode) solves with a local proxy. That is a follow-up, and until it exists the
|
|
48
|
+
* unit this verb protects is the COMMAND rather than the session.
|
|
49
|
+
*/
|
|
50
|
+
import type { Streams } from "./main.js";
|
|
51
|
+
export declare function commandSandbox(argv: string[], streams: Streams, cwd: string): number;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bytes `approval init` scaffolds, and the one-line rationale for each.
|
|
3
|
+
*
|
|
4
|
+
* These constants live apart from both `init.ts` and `help.ts` because both
|
|
5
|
+
* need them: the verb writes them and the help text quotes them, and a help text
|
|
6
|
+
* that quoted a stale copy would be the second-worst kind of documentation — the
|
|
7
|
+
* confident kind. One definition, two readers, no cycle.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* SPEC.md §5.1's canonical example, byte for byte.
|
|
11
|
+
*
|
|
12
|
+
* This constant and `schema/fixtures/policy-md/valid/canonical.md` are the same
|
|
13
|
+
* bytes, and `tests/cli-init.test.ts` asserts it: the fixture is frozen (every
|
|
14
|
+
* policy-loading test descends from it) and the spec section it transcribes is
|
|
15
|
+
* what a reader compares the scaffolded file against. A copy that drifted from
|
|
16
|
+
* either would hand a new user a policy the documentation does not describe.
|
|
17
|
+
*
|
|
18
|
+
* It is embedded here rather than read from `schema/` because the published
|
|
19
|
+
* package ships the CLI and the spec, not the test fixtures, and a scaffolding
|
|
20
|
+
* verb that fails on an installed copy is a verb that only ever worked in this
|
|
21
|
+
* checkout.
|
|
22
|
+
*
|
|
23
|
+
* The closing sentence is not in SPEC.md §5.1's fence — it is the fixture's own
|
|
24
|
+
* trailing prose, kept because it says the one thing a first-time reader of this
|
|
25
|
+
* file needs to know: the prose is not the policy.
|
|
26
|
+
*/
|
|
27
|
+
export declare const CANONICAL_POLICY = "# Approval Policy\n\nAgents working in this project handle my life admin. Anything that leaves\nthe machine gets declared, and the classes below say what I sign off on.\n\n```yaml approval-policy\nversion: \"0.1\"\n\ndefaults:\n autonomy: manual # unknown/undeclared classes require sign-off\n channel: telegram\n approval_ttl: 24h # pending requests expire\n on_expiry: reject\n\napprovers:\n alice:\n channels: [telegram, cli]\n\nclasses:\n read.*: { autonomy: autonomous }\n files.write.workspace: { autonomy: autonomous }\n calendar.write.own: { autonomy: supervised }\n communicate.email.draft: { autonomy: autonomous }\n communicate.email.external:\n autonomy: manual\n approvers: [alice]\n financial.spend:\n autonomy: manual\n approvers: [alice]\n limits: { per_action_usd: 25, daily_usd: 100 }\n public.post: { autonomy: manual }\n data.delete: { autonomy: manual }\n account.auth: { autonomy: manual }\n\nbudgets:\n global: { daily_usd: 100, daily_actions: 200 }\n\naudit:\n supervised_sample_rate: 0.10 # fraction of supervised actions escalated\n # for retrospective human review\n\nchannels:\n telegram:\n chat_id_env: APPROVAL_TG_CHAT\n token_env: APPROVAL_TG_TOKEN\n web:\n port: 4680\n```\n\nEverything after the block is prose again and is ignored by the parser.\n";
|
|
28
|
+
/**
|
|
29
|
+
* The comment the merged `.gitignore` lines live under.
|
|
30
|
+
*
|
|
31
|
+
* A marker rather than a bare append, so a second `init` can tell its own lines
|
|
32
|
+
* from the operator's and add only what is missing, and so a human reading the
|
|
33
|
+
* file knows which lines they are allowed to delete.
|
|
34
|
+
*/
|
|
35
|
+
export declare const GITIGNORE_MARKER = "# approval.md";
|
|
36
|
+
/**
|
|
37
|
+
* The ignore lines, and why each one is there.
|
|
38
|
+
*
|
|
39
|
+
* - `.approval/*.sqlite` — the index is a projection (SPEC.md §9.2). It rebuilds
|
|
40
|
+
* from the log with `approval reindex`; committing it would put a cache in the
|
|
41
|
+
* history of the thing it caches.
|
|
42
|
+
* - `.approval/vault.enc` — the encrypted credential store (M7). Encrypted or
|
|
43
|
+
* not, the vault is the one file in the layout whose contents are secrets, and
|
|
44
|
+
* secrets do not go in a repository.
|
|
45
|
+
* - `.approval/env` — the environment source map (APRV-73). Usually it holds
|
|
46
|
+
* only keychain service names, and it is ignored anyway: the format permits a
|
|
47
|
+
* plaintext literal, an operator will eventually paste one in, and the day
|
|
48
|
+
* they do must not be the day a bot token lands in a commit. Ignoring it also
|
|
49
|
+
* states the intent — the environment is per-machine, not per-repository.
|
|
50
|
+
* - `.approval/keys/` — the per-request X25519 private keys of sealed token
|
|
51
|
+
* delivery (APRV-105). Per-machine by construction: the whole design is that
|
|
52
|
+
* the log, which IS shared, carries only ciphertext, and a key committed to a
|
|
53
|
+
* shared history would hand every reader of that history the ability to open
|
|
54
|
+
* an unspent token inside its TTL. Written whether or not a policy has opted
|
|
55
|
+
* into `token_delivery: sealed`, because the line an operator needs is the one
|
|
56
|
+
* that is already there on the day they turn the knob.
|
|
57
|
+
* - `.approval/**\/*.tmp-*` — the atomic-write temp files. Both writers that
|
|
58
|
+
* rename into place (`channels/render-queue.ts`, `core/payload-store.ts`) name
|
|
59
|
+
* their temp `.<basename>.tmp-<pid>-<counter>`, so this pattern is written to
|
|
60
|
+
* match what those two actually produce, at both levels of the tree. A crashed
|
|
61
|
+
* write leaves one behind; nobody should be asked to review it.
|
|
62
|
+
*
|
|
63
|
+
* - `.approval-journal/` — the ungated free-text channel of `approval journal`
|
|
64
|
+
* (APRV-195). Ignored rather than tracked because it is not truth and not
|
|
65
|
+
* evidence: the log is the record of what happened and it is committed, while
|
|
66
|
+
* the journal is what an agent said about working here, which the operator
|
|
67
|
+
* reads locally. Committing it would also turn an outlet into a publication,
|
|
68
|
+
* and an agent writing for a public repository is an agent writing for an
|
|
69
|
+
* audience — the pressure this channel exists to be free of. An operator who
|
|
70
|
+
* wants the history keeps it by deleting the line.
|
|
71
|
+
*
|
|
72
|
+
* `.approval/log/` is deliberately absent: the log is the truth and belongs in
|
|
73
|
+
* the history. So is `.approval/payloads/`, which holds the bytes each approval
|
|
74
|
+
* bound to — evidence defaults to tracked, and the next steps `init` prints say
|
|
75
|
+
* so, along with the one line that reverses the choice.
|
|
76
|
+
*/
|
|
77
|
+
export declare const GITIGNORE_ENTRIES: readonly string[];
|
|
78
|
+
/** The same entries, indented for the help text so the two cannot disagree. */
|
|
79
|
+
export declare const GITIGNORE_ENTRY_LINES: string;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approval setup adapter <name>` — fill the vault for one adapter (APRV-78).
|
|
3
|
+
*
|
|
4
|
+
* SPEC.md §10.4 gives adapters an encrypted vault and `approval vault set` as
|
|
5
|
+
* the way in, and that verb is deliberately austere: one credential, one call,
|
|
6
|
+
* no prompt, the value from stdin or a named variable. It is the right shape
|
|
7
|
+
* for a script and the wrong shape for a person, who has to know that the email
|
|
8
|
+
* adapter wants five values, what each of them is called, which of them are
|
|
9
|
+
* secrets, that the port must be a port and the security setting one of three
|
|
10
|
+
* words, and that the user and the password are both-or-neither. All of that
|
|
11
|
+
* was written down only inside `adapters/email.ts`'s `act`, where nobody
|
|
12
|
+
* setting a machine up can read it.
|
|
13
|
+
*
|
|
14
|
+
* This verb reads the adapter's own manifest instead. The conversation is
|
|
15
|
+
* `cli/setup-flow.ts` and knows nothing about SMTP; the manifest is
|
|
16
|
+
* `EMAIL_CREDENTIAL_SPECS` and knows nothing about vaults or terminals; this
|
|
17
|
+
* file is the ten lines that join them, plus the two things that are genuinely
|
|
18
|
+
* about the pairing: what to do with the passphrase, and how to prove the
|
|
19
|
+
* result without sending anything.
|
|
20
|
+
*
|
|
21
|
+
* ## Where the values go, and where they do NOT
|
|
22
|
+
*
|
|
23
|
+
* **Into the vault, always.** Not the OS keystore, which is where `setup
|
|
24
|
+
* vault|sampling|channel <name>` put their secrets, and not `.approval/env`. The
|
|
25
|
+
* distinction is the one §10.4 draws: `.approval/env` holds what unlocks the
|
|
26
|
+
* machine (the human identity, the passphrase's source, the channel's token),
|
|
27
|
+
* and the vault holds what a gated adapter SPENDS inside a verified-token
|
|
28
|
+
* window. An SMTP password in `.approval/env` would be readable by
|
|
29
|
+
* `approval env` on demand, which is exactly the journey the vault exists to
|
|
30
|
+
* forbid.
|
|
31
|
+
*
|
|
32
|
+
* ## The passphrase is read, never established
|
|
33
|
+
*
|
|
34
|
+
* From the shell environment, under the name the policy declares, through
|
|
35
|
+
* {@link passphraseFrom} — and from nowhere else. **This verb never resolves
|
|
36
|
+
* `.approval/env` itself** (SPEC.md §11.1 invariant 7: no command loads that
|
|
37
|
+
* file implicitly, because a working-tree file any process read on its own
|
|
38
|
+
* would let anything able to write it act as you). It does READ the file, for
|
|
39
|
+
* one thing only: whether a line for the passphrase variable exists, which
|
|
40
|
+
* decides whether the refusal tells you to run `approval setup vault` or just
|
|
41
|
+
* to `eval "$(approval env)"`. A key's PRESENCE is not its value, and
|
|
42
|
+
* `planReplacements` has always read the file for exactly that.
|
|
43
|
+
*
|
|
44
|
+
* ## Verification sends nothing
|
|
45
|
+
*
|
|
46
|
+
* The proof is {@link probeSmtp}: the same session `sendMail` runs, up to and
|
|
47
|
+
* including AUTH, and then QUIT. It proves the host resolves, the port answers,
|
|
48
|
+
* the TLS mode is the one the server offers, and the credential is accepted. It
|
|
49
|
+
* does not prove a message would be delivered, and it puts no message on the
|
|
50
|
+
* wire — a setup verb that emailed somebody to prove itself would be a verb
|
|
51
|
+
* people run once and then avoid, which is `approval doctor`'s argument for
|
|
52
|
+
* calling `getMe` and nothing else.
|
|
53
|
+
*
|
|
54
|
+
* It is OFFERED, defaulting to YES, and a failure does not delete anything: the
|
|
55
|
+
* values stay, the refusal names the SMTP code and the server's first line
|
|
56
|
+
* (redacted), and the undo is printed as `approval vault remove <name>`. Values
|
|
57
|
+
* discarded by a wizard because a laptop was on a captive portal would be five
|
|
58
|
+
* more things to type.
|
|
59
|
+
*
|
|
60
|
+
* A PARTIAL RE-RUN is offered the same proof over the STORED set (APRV-99). It
|
|
61
|
+
* holds only what it just collected, so it reads the rest through
|
|
62
|
+
* {@link readEmailSmtpConfig} over a {@link vaultCredentialProvider}: the exact
|
|
63
|
+
* path `approval adapter email` takes at send time, in this process, printed by
|
|
64
|
+
* nothing. That is not a hole in "there is no verb that reads a credential
|
|
65
|
+
* out" — that rule is about what reaches a terminal, and nothing here does.
|
|
66
|
+
* Rotating an app password is the common case for this verb, and a probe no
|
|
67
|
+
* wider than the send it proves is the difference between a rotation you have
|
|
68
|
+
* checked and one you find out about from a bounce.
|
|
69
|
+
*/
|
|
70
|
+
import type { CredentialSpec } from "../core/credential-spec.js";
|
|
71
|
+
import type { CredentialProvider } from "../adapters/contract.js";
|
|
72
|
+
import { probeSmtp } from "../adapters/smtp.js";
|
|
73
|
+
import type { Streams } from "./main.js";
|
|
74
|
+
import { type Prompter } from "./prompt.js";
|
|
75
|
+
import { type HintContext, type SetupDeps } from "./setup-common.js";
|
|
76
|
+
import { type VerifyOutcome } from "./setup-flow.js";
|
|
77
|
+
/** What a verify hook is handed beyond the values: what the run actually did. */
|
|
78
|
+
export interface VerifyContext {
|
|
79
|
+
written: readonly string[];
|
|
80
|
+
skipped: readonly string[];
|
|
81
|
+
streams: Streams;
|
|
82
|
+
prompter: Prompter;
|
|
83
|
+
probe: typeof probeSmtp;
|
|
84
|
+
/**
|
|
85
|
+
* The API root the AgentMail probe reads (APRV-223), or `undefined` for the
|
|
86
|
+
* public one. Threaded from `SetupDeps.apiBase`, which is how every other
|
|
87
|
+
* setup verb points a probe at a loopback fixture; there is no relaxation
|
|
88
|
+
* here to keep inside a test, because the probe is one HTTPS GET.
|
|
89
|
+
*/
|
|
90
|
+
apiBase?: string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* The adapter's own credential provider, over the vault this run just wrote
|
|
93
|
+
* to (APRV-99). Lazy: a first run never opens it, because a first run holds
|
|
94
|
+
* everything already. A partial re-run opens it to probe the MERGED set, and
|
|
95
|
+
* that read is the one the adapter performs at send time, in this process,
|
|
96
|
+
* printed by nothing.
|
|
97
|
+
*/
|
|
98
|
+
credentials: CredentialProvider;
|
|
99
|
+
}
|
|
100
|
+
/** One adapter, as this verb needs to see it. */
|
|
101
|
+
export interface AdapterSetupEntry {
|
|
102
|
+
/** The manifest, declared by the adapter itself. */
|
|
103
|
+
specs: readonly CredentialSpec[];
|
|
104
|
+
/**
|
|
105
|
+
* The adapter's cross-field rule, or `undefined` when it has none. `kept`
|
|
106
|
+
* names the values already in the store that this run left alone (APRV-98):
|
|
107
|
+
* the flow never reads a value back, but presence is a fact it does know.
|
|
108
|
+
*/
|
|
109
|
+
check?(values: Record<string, string>, kept: readonly string[]): string | null;
|
|
110
|
+
/** One line of what this adapter is, for the title. */
|
|
111
|
+
summary: string;
|
|
112
|
+
/**
|
|
113
|
+
* This adapter's own help, printed for `--help` and beside every usage error
|
|
114
|
+
* from here down (APRV-221). On the entry rather than in a `name === "email"`
|
|
115
|
+
* branch: an adapter's help is the adapter's, and a branch is a place for the
|
|
116
|
+
* next adapter's help to be forgotten.
|
|
117
|
+
*/
|
|
118
|
+
help: string;
|
|
119
|
+
/** The non-interactive path: the exact `vault set` calls, generated. */
|
|
120
|
+
hint(context: HintContext): string;
|
|
121
|
+
/** Prove the stored configuration against the far end, sending nothing. */
|
|
122
|
+
verify(values: Record<string, string>, context: VerifyContext): Promise<VerifyOutcome>;
|
|
123
|
+
/** What to tell the operator to do next. */
|
|
124
|
+
nextSteps: readonly string[];
|
|
125
|
+
}
|
|
126
|
+
/** Every adapter this verb can configure. Keyed by the `adapter <name>` name. */
|
|
127
|
+
export declare const ADAPTER_SETUPS: Record<string, AdapterSetupEntry>;
|
|
128
|
+
/** The known names, sorted, for a usage error and for the help text. */
|
|
129
|
+
export declare function knownAdapterNames(): string[];
|
|
130
|
+
/**
|
|
131
|
+
* `approval setup adapter <name>` — the interactive writer for one adapter's
|
|
132
|
+
* credentials. HUMAN-ONLY.
|
|
133
|
+
*
|
|
134
|
+
* `argv` starts at the adapter's name: `commandSetup` has already eaten
|
|
135
|
+
* `adapter`.
|
|
136
|
+
*/
|
|
137
|
+
export declare function commandSetupAdapter(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): Promise<number>;
|
|
@@ -71,10 +71,11 @@ import { envFilePathFor, readEnvFile } from "../core/env-file.js";
|
|
|
71
71
|
import { passphraseEnvFor, passphraseFrom, vaultExists, vaultPathFor } from "../core/vault.js";
|
|
72
72
|
import { DEFAULT_CREDENTIAL_NAMES, EMAIL_CREDENTIAL_SPECS, checkEmailCredentialSet, readEmailSmtpConfig, } from "../adapters/email.js";
|
|
73
73
|
import { AGENTMAIL_CREDENTIAL_SPECS, AGENTMAIL_SEND_PERMISSIONS, DEFAULT_AGENTMAIL_CREDENTIAL_NAMES, probeAgentmail, readAgentmailConfig, } from "../adapters/agentmail.js";
|
|
74
|
+
import { probeZzz, ZZZ_CREDENTIAL_SPECS, ZZZ_TOKEN_NAME, } from "../adapters/zzz.js";
|
|
74
75
|
import { vaultCredentialProvider } from "../adapters/vault-provider.js";
|
|
75
76
|
import { isSmtpSecurity, probeSmtp } from "../adapters/smtp.js";
|
|
76
77
|
import { EXIT_OK } from "./exit-codes.js";
|
|
77
|
-
import { SETUP_ADAPTER_AGENTMAIL_HELP, SETUP_ADAPTER_EMAIL_HELP, SETUP_ADAPTER_HELP, } from "./help.js";
|
|
78
|
+
import { SETUP_ADAPTER_AGENTMAIL_HELP, SETUP_ADAPTER_EMAIL_HELP, SETUP_ADAPTER_HELP, SETUP_ADAPTER_ZZZ_HELP, } from "./help.js";
|
|
78
79
|
import { refusal as renderRefusal, style } from "./style.js";
|
|
79
80
|
import { confirmUntil } from "./prompt.js";
|
|
80
81
|
import { front, requireHuman, usageError, } from "./setup-common.js";
|
|
@@ -329,12 +330,30 @@ async function verifyAgentmail(values, context) {
|
|
|
329
330
|
}
|
|
330
331
|
return probeAgentmailAndReport(configured.config, redactor([...Object.values(values), ...configured.secrets]), probe, context.apiBase, context.written);
|
|
331
332
|
}
|
|
333
|
+
async function verifyZzz(values, context) {
|
|
334
|
+
if (!confirmUntil(context.streams, context.prompter, "ask zzz.bot to authenticate the stored token with one read-only room-list request? Nothing is posted", true)) {
|
|
335
|
+
return { ok: true, declined: true, detail: "\nstored and unverified: no request was made.\n" };
|
|
336
|
+
}
|
|
337
|
+
const current = values[ZZZ_TOKEN_NAME] === undefined
|
|
338
|
+
? context.credentials.get(ZZZ_TOKEN_NAME)
|
|
339
|
+
: { ok: true, value: values[ZZZ_TOKEN_NAME] };
|
|
340
|
+
if (!current.ok)
|
|
341
|
+
return { ok: false, detail: `${renderRefusal(style(), current.code, current.message)}\n` };
|
|
342
|
+
const result = await probeZzz(current.value, context.apiBase === undefined ? {} : { origins: { production: context.apiBase } });
|
|
343
|
+
if (result.ok) {
|
|
344
|
+
return {
|
|
345
|
+
ok: true,
|
|
346
|
+
detail: "\nverified: zzz.bot accepted the token on one read-only room-list request. No message was posted. This does not prove write scope, room membership, or private-room workflow evidence; those are checked by zzz.bot when the approved message is sent.\n",
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
return { ok: false, detail: `${renderRefusal(style(), result.code, result.message)}\nThe value remains stored; replace it or retry the probe after connectivity is restored.\n` };
|
|
350
|
+
}
|
|
332
351
|
/** Every adapter this verb can configure. Keyed by the `adapter <name>` name. */
|
|
333
352
|
export const ADAPTER_SETUPS = {
|
|
334
353
|
email: {
|
|
335
354
|
specs: EMAIL_CREDENTIAL_SPECS,
|
|
336
355
|
check: (values, kept) => checkEmailCredentialSet(values, DEFAULT_CREDENTIAL_NAMES, kept),
|
|
337
|
-
summary: "the SMTP settings `approval adapter email` reads inside the verified
|
|
356
|
+
summary: "the SMTP settings `approval adapter email` reads inside the verified execution window",
|
|
338
357
|
help: SETUP_ADAPTER_EMAIL_HELP,
|
|
339
358
|
hint: (context) => manifestHint(EMAIL_CREDENTIAL_SPECS, context),
|
|
340
359
|
verify: verifyEmail,
|
|
@@ -343,12 +362,12 @@ export const ADAPTER_SETUPS = {
|
|
|
343
362
|
``,
|
|
344
363
|
` approval vault list --as human:<id>`,
|
|
345
364
|
``,
|
|
346
|
-
`The adapter reads them itself, inside the
|
|
365
|
+
`The adapter reads them itself, inside the verified execution window; nothing else does.`,
|
|
347
366
|
],
|
|
348
367
|
},
|
|
349
368
|
agentmail: {
|
|
350
369
|
specs: AGENTMAIL_CREDENTIAL_SPECS,
|
|
351
|
-
summary: "the AgentMail inbox and sending key `approval adapter agentmail` reads inside the verified
|
|
370
|
+
summary: "the AgentMail inbox and sending key `approval adapter agentmail` reads inside the verified execution window",
|
|
352
371
|
help: SETUP_ADAPTER_AGENTMAIL_HELP,
|
|
353
372
|
hint: (context) => manifestHint(AGENTMAIL_CREDENTIAL_SPECS, context),
|
|
354
373
|
verify: verifyAgentmail,
|
|
@@ -362,6 +381,21 @@ export const ADAPTER_SETUPS = {
|
|
|
362
381
|
`drafts, and \`approval payload agentmail-draft\` snapshots one for a human to read.`,
|
|
363
382
|
],
|
|
364
383
|
},
|
|
384
|
+
zzz: {
|
|
385
|
+
specs: ZZZ_CREDENTIAL_SPECS,
|
|
386
|
+
summary: "the invited zzz.bot agent token `approval adapter zzz` reads inside the verified execution window",
|
|
387
|
+
help: SETUP_ADAPTER_ZZZ_HELP,
|
|
388
|
+
hint: (context) => manifestHint(ZZZ_CREDENTIAL_SPECS, context),
|
|
389
|
+
verify: verifyZzz,
|
|
390
|
+
nextSteps: [
|
|
391
|
+
`Check the credential name (never its value) with:`,
|
|
392
|
+
``,
|
|
393
|
+
` approval vault list --as human:<id>`,
|
|
394
|
+
``,
|
|
395
|
+
`Keep this write-capable token out of the agent environment. For a private room,`,
|
|
396
|
+
`zzz.bot also requires active membership and accepted approval.md workflow evidence.`,
|
|
397
|
+
],
|
|
398
|
+
},
|
|
365
399
|
};
|
|
366
400
|
/** The known names, sorted, for a usage error and for the help text. */
|
|
367
401
|
export function knownAdapterNames() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-adapter.js","sourceRoot":"","sources":["../../../src/cli/setup-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-adapter.js","sourceRoot":"","sources":["../../../src/cli/setup-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approval setup channel <name>` — configure one channel (APRV-79).
|
|
3
|
+
*
|
|
4
|
+
* SPEC.md §4 draws a line this verb's NAME now carries: a **channel** surfaces
|
|
5
|
+
* requests and collects decisions and holds no state; an **adapter** executes
|
|
6
|
+
* side effects and holds credentials. `approval setup adapter <name>` (APRV-78)
|
|
7
|
+
* fills the VAULT from an adapter's manifest. This verb fills the OS keystore
|
|
8
|
+
* and `.approval/env` from a channel's, because what a channel needs is not a
|
|
9
|
+
* credential an action spends inside a token window: it is the transport
|
|
10
|
+
* credential that lets the runtime ask a human anything at all.
|
|
11
|
+
*
|
|
12
|
+
* An older build spelled the Telegram one without the `channel` noun. That form
|
|
13
|
+
* is gone rather than aliased — the dispatch in `cli/setup.ts` answers it at
|
|
14
|
+
* exit 2 with the new one, in {@link RENAMED_NOTICE} — because two spellings of
|
|
15
|
+
* a distinction the SPEC draws on purpose is exactly how the distinction stops
|
|
16
|
+
* being drawn.
|
|
17
|
+
*
|
|
18
|
+
* ## What Telegram's flow keeps, unchanged
|
|
19
|
+
*
|
|
20
|
+
* The conversation is now `cli/setup-flow.ts`'s, the same one `setup adapter`
|
|
21
|
+
* runs, over the manifest `core/telegram-config.ts` declares. Everything that
|
|
22
|
+
* was a decision rather than a phrasing survives it, and each of these is
|
|
23
|
+
* asserted in `tests/cli-setup.test.ts`:
|
|
24
|
+
*
|
|
25
|
+
* - **`getMe` happens before anything is written.** It runs at the END of the
|
|
26
|
+
* token's collection (step five of the flow), not after the write (step
|
|
27
|
+
* seven), so a token the Bot API refuses costs the operator one line of
|
|
28
|
+
* output and leaves `.approval/env` untouched. The chat discovery below it
|
|
29
|
+
* also needs the bot's username, and asking `getMe` for it is the same call.
|
|
30
|
+
* - **No `getUpdates` from this verb carries an offset, ever.** An offset is an
|
|
31
|
+
* ACKNOWLEDGEMENT: it tells the Bot API that everything below it may be
|
|
32
|
+
* discarded, and a decision tap consumed here would never reach the listener
|
|
33
|
+
* that was waiting for it. `allowed_updates` is `["message"]`, so a pending
|
|
34
|
+
* `callback_query` is not even delivered to this process.
|
|
35
|
+
* - **The token is never typed into this process** on a machine with a
|
|
36
|
+
* keystore: the helper's own no-echo prompt collects it and this runtime
|
|
37
|
+
* learns it by reading the item back on stdout.
|
|
38
|
+
* - **The chat id is a literal.** A chat id is not a secret; the token is.
|
|
39
|
+
* - "send the bot a message", the 409 hint, the manual-curl refusal when nothing
|
|
40
|
+
* arrives, and the optional send-a-test-message proof that defaults to NO.
|
|
41
|
+
* What changed in APRV-96 is only WHEN the read happens: the verb long-polls
|
|
42
|
+
* continuously until a message arrives or {@link DISCOVERY_DEADLINE_MS}
|
|
43
|
+
* passes, instead of asking the operator to press Enter between reads.
|
|
44
|
+
*
|
|
45
|
+
* ## Where the two hooks sit, and why
|
|
46
|
+
*
|
|
47
|
+
* The flow asks its questions in one fixed order, and Telegram's shape falls
|
|
48
|
+
* out of it: the token is `collect`, because a human supplies it; the chat id is
|
|
49
|
+
* `discover`, because the SERVICE supplies it and the human's only part is
|
|
50
|
+
* sending a message and picking from what arrived. That is the hook APRV-78
|
|
51
|
+
* reserved and did not call. The proof is `verify`, which runs after the write —
|
|
52
|
+
* later than the old hand-rolled flow ran it, and correct in the same way the
|
|
53
|
+
* adapter's SMTP probe is: what is being proved is the stored configuration.
|
|
54
|
+
*/
|
|
55
|
+
import type { CredentialSpec } from "../core/credential-spec.js";
|
|
56
|
+
import type { PolicyLoadResult } from "../core/policy-load.js";
|
|
57
|
+
import type { Streams } from "./main.js";
|
|
58
|
+
import { type Context, type HintContext, type SetupDeps } from "./setup-common.js";
|
|
59
|
+
import { type FlowHooks } from "./setup-flow.js";
|
|
60
|
+
/**
|
|
61
|
+
* The Telegram-only dependency, kept local to this file ON PURPOSE.
|
|
62
|
+
*
|
|
63
|
+
* `SetupDeps` is `setup-common.ts`'s, shared by every subcommand, and a
|
|
64
|
+
* discovery deadline is not something `setup vault` or `setup adapter email`
|
|
65
|
+
* has any meaning for. Tests inject a short one so the deadline path costs the
|
|
66
|
+
* suite milliseconds rather than a minute and a half; no operator has a reason
|
|
67
|
+
* to change it, so it is not a flag either.
|
|
68
|
+
*/
|
|
69
|
+
export interface ChannelSetupDeps extends SetupDeps {
|
|
70
|
+
/** The chat-discovery deadline in ms. {@link DISCOVERY_DEADLINE_MS} default. */
|
|
71
|
+
discoveryDeadlineMs?: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The refusal for the OLD spelling, as one constant on one line.
|
|
75
|
+
*
|
|
76
|
+
* One line and one identifier, because `tests/setup-rename.test.ts` sweeps
|
|
77
|
+
* `src/`, `docs/`, `examples/`, `README.md` and `SPEC.md` for the bare phrase
|
|
78
|
+
* and exempts exactly the lines that also name `RENAMED_NOTICE`. That is the
|
|
79
|
+
* whole exemption mechanism: a future line that reintroduces the old spelling
|
|
80
|
+
* cannot claim the exemption without saying this constant's name out loud.
|
|
81
|
+
*/
|
|
82
|
+
export declare const RENAMED_NOTICE = "`approval setup telegram` is now `approval setup channel telegram`, and there is no alias. A channel surfaces requests and collects decisions and holds no state; an adapter executes side effects and holds credentials. The two setup verbs fill different stores, so a channel's name belongs under `channel` (the OS keystore and .approval/env) and an adapter's under `adapter` (the vault)";
|
|
83
|
+
/** One channel, as this verb needs to see it. Symmetric with ADAPTER_SETUPS. */
|
|
84
|
+
export interface ChannelSetupEntry {
|
|
85
|
+
/** The manifest, declared by the channel itself, resolved against the policy. */
|
|
86
|
+
specs(load: PolicyLoadResult): readonly CredentialSpec[];
|
|
87
|
+
/** One line of what this channel is, for the title. */
|
|
88
|
+
summary: string;
|
|
89
|
+
/** The prerequisite paragraph, printed under the title. */
|
|
90
|
+
prereq: string;
|
|
91
|
+
/** The non-interactive path: the exact commands, generated. */
|
|
92
|
+
hint(context: HintContext): string;
|
|
93
|
+
/** The channel-specific conversation, as the flow's hooks. */
|
|
94
|
+
hooks(context: Context, deps: SetupDeps, streams: Streams, helpText: string): FlowHooks;
|
|
95
|
+
/** What to tell the operator to do next. */
|
|
96
|
+
nextSteps: readonly string[];
|
|
97
|
+
/** The per-channel help, for `--help` and for every refusal. */
|
|
98
|
+
help: string;
|
|
99
|
+
}
|
|
100
|
+
/** Every channel this verb can configure. Keyed by the `channel <name>` name. */
|
|
101
|
+
export declare const CHANNEL_SETUPS: Record<string, ChannelSetupEntry>;
|
|
102
|
+
/** The known names, sorted, for a usage error and for the help text. */
|
|
103
|
+
export declare function knownChannelNames(): string[];
|
|
104
|
+
/**
|
|
105
|
+
* `approval setup channel <name>` — the interactive writer for one channel's
|
|
106
|
+
* transport credentials. HUMAN-ONLY.
|
|
107
|
+
*
|
|
108
|
+
* The human-only gate is NEW in APRV-79. The Telegram help text had said
|
|
109
|
+
* HUMAN-ONLY since APRV-74 and nothing enforced it: the verb stores a bot
|
|
110
|
+
* credential and writes `.approval/env`, which is exactly what `vault` and
|
|
111
|
+
* `sampling` are gated for, and a help text that claims a control the code does
|
|
112
|
+
* not apply is worse than no claim at all.
|
|
113
|
+
*
|
|
114
|
+
* `argv` starts at the channel's name: `commandSetup` has already eaten
|
|
115
|
+
* `channel`.
|
|
116
|
+
*/
|
|
117
|
+
export declare function commandSetupChannel(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): Promise<number>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approval setup checkpoint` — mint the key a human signs the log with
|
|
3
|
+
* (APRV-257, the ceremony half of APRV-220).
|
|
4
|
+
*
|
|
5
|
+
* APRV-220 built the record, the signature and the verify rule, and left the
|
|
6
|
+
* key to an operator with a Node REPL. This is the ceremony that replaces the
|
|
7
|
+
* REPL, and it is shaped like every other `approval setup` subcommand for the
|
|
8
|
+
* reason that family exists: establishing a secret is an act of the human at
|
|
9
|
+
* the machine, so the verb refuses a non-terminal stdin and prints the scripted
|
|
10
|
+
* alternative instead of accepting a pipe.
|
|
11
|
+
*
|
|
12
|
+
* ## The two halves go to two different places, and that is the whole design
|
|
13
|
+
*
|
|
14
|
+
* The PRIVATE half goes into the vault, under the reserved name
|
|
15
|
+
* `approval.checkpoint.key`. Encrypted at rest under the passphrase
|
|
16
|
+
* `vault.passphrase_env` names, which `core/child-env.ts` strips from every
|
|
17
|
+
* child this runtime spawns (APRV-205), behind a file whose reading classifies
|
|
18
|
+
* `account.credential`. `core/vault.ts`'s header records why it belongs there
|
|
19
|
+
* and not in the OS keystore.
|
|
20
|
+
*
|
|
21
|
+
* The PUBLIC half is PRINTED, with the exact `audit.checkpoint_keys` line to
|
|
22
|
+
* paste, and this verb goes no further. **Nothing an agent runs writes that
|
|
23
|
+
* line**, and nothing this verb runs writes it either: `APPROVAL.md` is
|
|
24
|
+
* attested, an edit de-attests it until a human re-attests, and a setup wizard
|
|
25
|
+
* that silently edited an attested policy would be forging the sign-off. The
|
|
26
|
+
* same rule `setup sampling` already keeps for `audit.sampling_secret_env`.
|
|
27
|
+
*
|
|
28
|
+
* So the key is INERT when this verb finishes, and the verb says so: a
|
|
29
|
+
* checkpoint signed by a key the policy does not list is
|
|
30
|
+
* `checkpoint-key-unknown`, which is a refusal. The ceremony is two steps and
|
|
31
|
+
* the second one is the human's.
|
|
32
|
+
*
|
|
33
|
+
* ## Rotation appends; it never drops
|
|
34
|
+
*
|
|
35
|
+
* `--rotate` mints a second key and prints the list with BOTH in it. Retiring
|
|
36
|
+
* is a separate, deliberate act (`--retire <fingerprint>`), and it is REFUSED
|
|
37
|
+
* for any key that signed a checkpoint in the log, naming the seqs that would
|
|
38
|
+
* stop verifying. That is not caution: removing such a key turns every
|
|
39
|
+
* checkpoint it signed into `checkpoint-key-unknown` for the life of the log,
|
|
40
|
+
* which is the cost APRV-220 accepted knowingly when it made an unlisted key a
|
|
41
|
+
* refusal rather than a shrug. A key that has signed nothing may be dropped,
|
|
42
|
+
* and this verb prints the line that does it.
|
|
43
|
+
*
|
|
44
|
+
* ## Human-only, three times over
|
|
45
|
+
*
|
|
46
|
+
* The terminal check (this family's own rule), the `--as human:<id>` gate
|
|
47
|
+
* (`requireHuman`), and — since APRV-257 — the classification: `approval setup
|
|
48
|
+
* checkpoint` classifies `policy.core` in `core/command-class.ts`, which the
|
|
49
|
+
* reference policy holds human-only, so the Claude Code hook denies an agent
|
|
50
|
+
* running it with `hook-class-human-only` before a process starts. It mints no
|
|
51
|
+
* new class (SPEC.md §11.1 invariant 9): `policy.core` already exists and
|
|
52
|
+
* already covers `gate open`, `gate close` and `log checkpoint`.
|
|
53
|
+
*/
|
|
54
|
+
import type { Streams } from "./main.js";
|
|
55
|
+
import { type SetupDeps } from "./setup-common.js";
|
|
56
|
+
/** `approval setup checkpoint` — mint the checkpoint keypair. HUMAN-ONLY. */
|
|
57
|
+
export declare function commandSetupCheckpoint(argv: string[], streams: Streams, cwd: string, deps?: SetupDeps): number;
|