approval-md 0.0.1 → 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/LICENSE +176 -0
- package/NOTICE +5 -0
- package/README.md +940 -4
- package/SPEC.md +476 -34
- package/cli.js +29 -3
- package/dist/src/adapters/agentmail.d.ts +426 -0
- package/dist/src/adapters/agentmail.js +1200 -0
- package/dist/src/adapters/agentmail.js.map +1 -0
- package/dist/src/adapters/conformance.d.ts +149 -0
- package/dist/src/adapters/conformance.js +461 -0
- package/dist/src/adapters/conformance.js.map +1 -0
- package/dist/src/adapters/contract.d.ts +628 -0
- package/dist/src/adapters/contract.js +1035 -0
- package/dist/src/adapters/contract.js.map +1 -0
- package/dist/src/adapters/email.d.ts +324 -0
- package/dist/src/adapters/email.js +749 -0
- package/dist/src/adapters/email.js.map +1 -0
- package/dist/src/adapters/env-passphrase.d.ts +93 -0
- package/dist/src/adapters/env-passphrase.js +132 -0
- package/dist/src/adapters/env-passphrase.js.map +1 -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 +77 -0
- package/dist/src/adapters/registry.js.map +1 -0
- package/dist/src/adapters/smtp.d.ts +213 -0
- package/dist/src/adapters/smtp.js +499 -0
- package/dist/src/adapters/smtp.js.map +1 -0
- package/dist/src/adapters/vault-provider.d.ts +114 -0
- package/dist/src/adapters/vault-provider.js +161 -0
- package/dist/src/adapters/vault-provider.js.map +1 -0
- 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/batch.js +121 -0
- package/dist/src/channels/batch.js.map +1 -0
- package/dist/src/channels/cli.d.ts +193 -0
- package/dist/src/channels/cli.js +468 -0
- package/dist/src/channels/cli.js.map +1 -0
- package/dist/src/channels/conformance.d.ts +92 -0
- package/dist/src/channels/conformance.js +445 -0
- package/dist/src/channels/conformance.js.map +1 -0
- package/dist/src/channels/contract.d.ts +623 -0
- package/dist/src/channels/contract.js +494 -0
- package/dist/src/channels/contract.js.map +1 -0
- package/dist/src/channels/payload-view.d.ts +35 -0
- package/dist/src/channels/payload-view.js +43 -0
- package/dist/src/channels/payload-view.js.map +1 -0
- package/dist/src/channels/render-queue.d.ts +149 -0
- package/dist/src/channels/render-queue.js +564 -0
- package/dist/src/channels/render-queue.js.map +1 -0
- package/dist/src/channels/tagging.d.ts +196 -0
- package/dist/src/channels/tagging.js +723 -0
- package/dist/src/channels/tagging.js.map +1 -0
- package/dist/src/channels/telegram.d.ts +1832 -0
- package/dist/src/channels/telegram.js +3190 -0
- package/dist/src/channels/telegram.js.map +1 -0
- package/dist/src/channels/web.d.ts +341 -0
- package/dist/src/channels/web.js +903 -0
- package/dist/src/channels/web.js.map +1 -0
- package/dist/src/cli/adapter.d.ts +90 -0
- package/dist/src/cli/adapter.js +288 -0
- package/dist/src/cli/adapter.js.map +1 -0
- package/dist/src/cli/amend.d.ts +59 -0
- package/dist/src/cli/amend.js +2171 -0
- package/dist/src/cli/amend.js.map +1 -0
- package/dist/src/cli/args.d.ts +43 -0
- package/dist/src/cli/args.js +86 -0
- package/dist/src/cli/args.js.map +1 -0
- package/dist/src/cli/attest.d.ts +41 -0
- package/dist/src/cli/attest.js +307 -0
- package/dist/src/cli/attest.js.map +1 -0
- package/dist/src/cli/audit-card.d.ts +62 -0
- package/dist/src/cli/audit-card.js +201 -0
- package/dist/src/cli/audit-card.js.map +1 -0
- package/dist/src/cli/audit.d.ts +59 -0
- package/dist/src/cli/audit.js +460 -0
- package/dist/src/cli/audit.js.map +1 -0
- package/dist/src/cli/channel-telegram.d.ts +806 -0
- package/dist/src/cli/channel-telegram.js +2063 -0
- package/dist/src/cli/channel-telegram.js.map +1 -0
- package/dist/src/cli/channel-web.d.ts +131 -0
- package/dist/src/cli/channel-web.js +357 -0
- package/dist/src/cli/channel-web.js.map +1 -0
- package/dist/src/cli/channel.d.ts +71 -0
- package/dist/src/cli/channel.js +438 -0
- package/dist/src/cli/channel.js.map +1 -0
- package/dist/src/cli/checkpoint-tap.d.ts +169 -0
- package/dist/src/cli/checkpoint-tap.js +238 -0
- package/dist/src/cli/checkpoint-tap.js.map +1 -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/coverage.js +343 -0
- package/dist/src/cli/coverage.js.map +1 -0
- package/dist/src/cli/daemon.d.ts +120 -0
- package/dist/src/cli/daemon.js +631 -0
- package/dist/src/cli/daemon.js.map +1 -0
- package/dist/src/cli/doctor.d.ts +129 -0
- package/dist/src/cli/doctor.js +2762 -0
- package/dist/src/cli/doctor.js.map +1 -0
- package/dist/src/cli/env.d.ts +65 -0
- package/dist/src/cli/env.js +302 -0
- package/dist/src/cli/env.js.map +1 -0
- package/dist/src/cli/execute.d.ts +202 -0
- package/dist/src/cli/execute.js +1682 -0
- package/dist/src/cli/execute.js.map +1 -0
- package/dist/src/cli/exit-codes.d.ts +73 -0
- package/dist/src/cli/exit-codes.js +82 -0
- package/dist/src/cli/exit-codes.js.map +1 -0
- package/dist/src/cli/feedback.d.ts +60 -0
- package/dist/src/cli/feedback.js +205 -0
- package/dist/src/cli/feedback.js.map +1 -0
- package/dist/src/cli/gate-window.d.ts +40 -0
- package/dist/src/cli/gate-window.js +294 -0
- package/dist/src/cli/gate-window.js.map +1 -0
- package/dist/src/cli/gate.d.ts +68 -0
- package/dist/src/cli/gate.js +557 -0
- package/dist/src/cli/gate.js.map +1 -0
- package/dist/src/cli/git-scope.d.ts +190 -0
- package/dist/src/cli/git-scope.js +295 -0
- package/dist/src/cli/git-scope.js.map +1 -0
- package/dist/src/cli/gloss-attach.d.ts +85 -0
- package/dist/src/cli/gloss-attach.js +107 -0
- package/dist/src/cli/gloss-attach.js.map +1 -0
- package/dist/src/cli/gloss-codex-child.d.ts +9 -0
- package/dist/src/cli/gloss-codex-child.js +149 -0
- package/dist/src/cli/gloss-codex-child.js.map +1 -0
- package/dist/src/cli/gloss-codex.d.ts +24 -0
- package/dist/src/cli/gloss-codex.js +255 -0
- package/dist/src/cli/gloss-codex.js.map +1 -0
- package/dist/src/cli/gloss-options.d.ts +42 -0
- package/dist/src/cli/gloss-options.js +79 -0
- package/dist/src/cli/gloss-options.js.map +1 -0
- package/dist/src/cli/gloss.d.ts +265 -0
- package/dist/src/cli/gloss.js +362 -0
- package/dist/src/cli/gloss.js.map +1 -0
- package/dist/src/cli/help.d.ts +103 -0
- package/dist/src/cli/help.js +2339 -0
- package/dist/src/cli/help.js.map +1 -0
- 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 +2849 -0
- package/dist/src/cli/hook.js.map +1 -0
- package/dist/src/cli/import.d.ts +35 -0
- package/dist/src/cli/import.js +175 -0
- package/dist/src/cli/import.js.map +1 -0
- package/dist/src/cli/init.d.ts +84 -0
- package/dist/src/cli/init.js +336 -0
- package/dist/src/cli/init.js.map +1 -0
- package/dist/src/cli/instructions.d.ts +23 -0
- package/dist/src/cli/instructions.js +262 -0
- package/dist/src/cli/instructions.js.map +1 -0
- package/dist/src/cli/journal.d.ts +41 -0
- package/dist/src/cli/journal.js +238 -0
- package/dist/src/cli/journal.js.map +1 -0
- package/dist/src/cli/log-advance.d.ts +287 -0
- package/dist/src/cli/log-advance.js +840 -0
- package/dist/src/cli/log-advance.js.map +1 -0
- package/dist/src/cli/log-anchor.d.ts +176 -0
- package/dist/src/cli/log-anchor.js +387 -0
- package/dist/src/cli/log-anchor.js.map +1 -0
- package/dist/src/cli/log-checkpoint.d.ts +22 -0
- package/dist/src/cli/log-checkpoint.js +128 -0
- package/dist/src/cli/log-checkpoint.js.map +1 -0
- package/dist/src/cli/log-sync.d.ts +243 -0
- package/dist/src/cli/log-sync.js +849 -0
- package/dist/src/cli/log-sync.js.map +1 -0
- package/dist/src/cli/log-verbs.d.ts +16 -0
- package/dist/src/cli/log-verbs.js +360 -0
- package/dist/src/cli/log-verbs.js.map +1 -0
- package/dist/src/cli/long-help.d.ts +70 -0
- package/dist/src/cli/long-help.js +148 -0
- package/dist/src/cli/long-help.js.map +1 -0
- package/dist/src/cli/main.d.ts +77 -0
- package/dist/src/cli/main.js +1206 -0
- package/dist/src/cli/main.js.map +1 -0
- package/dist/src/cli/mcp.d.ts +52 -0
- package/dist/src/cli/mcp.js +306 -0
- package/dist/src/cli/mcp.js.map +1 -0
- package/dist/src/cli/paths.d.ts +56 -0
- package/dist/src/cli/paths.js +79 -0
- package/dist/src/cli/paths.js.map +1 -0
- package/dist/src/cli/payload.d.ts +58 -0
- package/dist/src/cli/payload.js +253 -0
- package/dist/src/cli/payload.js.map +1 -0
- package/dist/src/cli/policy.d.ts +43 -0
- package/dist/src/cli/policy.js +229 -0
- package/dist/src/cli/policy.js.map +1 -0
- package/dist/src/cli/preflight.d.ts +363 -0
- package/dist/src/cli/preflight.js +1175 -0
- package/dist/src/cli/preflight.js.map +1 -0
- package/dist/src/cli/progress.d.ts +78 -0
- package/dist/src/cli/progress.js +112 -0
- package/dist/src/cli/progress.js.map +1 -0
- package/dist/src/cli/prompt.d.ts +209 -0
- package/dist/src/cli/prompt.js +312 -0
- package/dist/src/cli/prompt.js.map +1 -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/records.js +66 -0
- package/dist/src/cli/records.js.map +1 -0
- package/dist/src/cli/render.d.ts +22 -0
- package/dist/src/cli/render.js +132 -0
- package/dist/src/cli/render.js.map +1 -0
- package/dist/src/cli/sandbox.d.ts +51 -0
- package/dist/src/cli/sandbox.js +150 -0
- package/dist/src/cli/sandbox.js.map +1 -0
- package/dist/src/cli/scaffold.d.ts +79 -0
- package/dist/src/cli/scaffold.js +137 -0
- package/dist/src/cli/scaffold.js.map +1 -0
- package/dist/src/cli/setup-adapter.d.ts +137 -0
- package/dist/src/cli/setup-adapter.js +509 -0
- package/dist/src/cli/setup-adapter.js.map +1 -0
- package/dist/src/cli/setup-channel.d.ts +117 -0
- package/dist/src/cli/setup-channel.js +635 -0
- package/dist/src/cli/setup-channel.js.map +1 -0
- package/dist/src/cli/setup-checkpoint.d.ts +57 -0
- package/dist/src/cli/setup-checkpoint.js +196 -0
- package/dist/src/cli/setup-checkpoint.js.map +1 -0
- package/dist/src/cli/setup-common.d.ts +275 -0
- package/dist/src/cli/setup-common.js +376 -0
- package/dist/src/cli/setup-common.js.map +1 -0
- package/dist/src/cli/setup-flow.d.ts +287 -0
- package/dist/src/cli/setup-flow.js +476 -0
- package/dist/src/cli/setup-flow.js.map +1 -0
- package/dist/src/cli/setup-service.d.ts +96 -0
- package/dist/src/cli/setup-service.js +308 -0
- package/dist/src/cli/setup-service.js.map +1 -0
- package/dist/src/cli/setup.d.ts +202 -0
- package/dist/src/cli/setup.js +473 -0
- package/dist/src/cli/setup.js.map +1 -0
- package/dist/src/cli/style.d.ts +320 -0
- package/dist/src/cli/style.js +469 -0
- package/dist/src/cli/style.js.map +1 -0
- package/dist/src/cli/token.d.ts +39 -0
- package/dist/src/cli/token.js +274 -0
- package/dist/src/cli/token.js.map +1 -0
- package/dist/src/cli/up.d.ts +155 -0
- package/dist/src/cli/up.js +849 -0
- package/dist/src/cli/up.js.map +1 -0
- package/dist/src/cli/usage.d.ts +37 -0
- package/dist/src/cli/usage.js +91 -0
- package/dist/src/cli/usage.js.map +1 -0
- package/dist/src/cli/values.d.ts +40 -0
- package/dist/src/cli/values.js +189 -0
- package/dist/src/cli/values.js.map +1 -0
- package/dist/src/cli/vault.d.ts +59 -0
- package/dist/src/cli/vault.js +362 -0
- package/dist/src/cli/vault.js.map +1 -0
- package/dist/src/cli/verb-registry.d.ts +76 -0
- package/dist/src/cli/verb-registry.js +2341 -0
- package/dist/src/cli/verb-registry.js.map +1 -0
- package/dist/src/cli/wordmark.d.ts +31 -0
- package/dist/src/cli/wordmark.js +52 -0
- package/dist/src/cli/wordmark.js.map +1 -0
- package/dist/src/codex/doctor.d.ts +13 -0
- package/dist/src/codex/doctor.js +41 -0
- package/dist/src/codex/doctor.js.map +1 -0
- package/dist/src/codex/manifest.d.ts +49 -0
- package/dist/src/codex/manifest.js +103 -0
- package/dist/src/codex/manifest.js.map +1 -0
- package/dist/src/codex/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/advance-cycle.js +200 -0
- package/dist/src/core/advance-cycle.js.map +1 -0
- package/dist/src/core/agents-md.d.ts +276 -0
- package/dist/src/core/agents-md.js +747 -0
- package/dist/src/core/agents-md.js.map +1 -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 +589 -0
- package/dist/src/core/attest.js.map +1 -0
- package/dist/src/core/audit.d.ts +492 -0
- package/dist/src/core/audit.js +882 -0
- package/dist/src/core/audit.js.map +1 -0
- package/dist/src/core/budgets.d.ts +238 -0
- package/dist/src/core/budgets.js +449 -0
- package/dist/src/core/budgets.js.map +1 -0
- package/dist/src/core/checkpoint.d.ts +500 -0
- package/dist/src/core/checkpoint.js +738 -0
- package/dist/src/core/checkpoint.js.map +1 -0
- package/dist/src/core/child-env.d.ts +88 -0
- package/dist/src/core/child-env.js +86 -0
- package/dist/src/core/child-env.js.map +1 -0
- package/dist/src/core/clock.d.ts +52 -0
- package/dist/src/core/clock.js +43 -0
- package/dist/src/core/clock.js.map +1 -0
- package/dist/src/core/command-class.d.ts +543 -0
- package/dist/src/core/command-class.js +2356 -0
- package/dist/src/core/command-class.js.map +1 -0
- package/dist/src/core/coverage-sources/adapter.d.ts +40 -0
- package/dist/src/core/coverage-sources/adapter.js +71 -0
- package/dist/src/core/coverage-sources/adapter.js.map +1 -0
- package/dist/src/core/coverage-sources/gh.d.ts +48 -0
- package/dist/src/core/coverage-sources/gh.js +136 -0
- package/dist/src/core/coverage-sources/gh.js.map +1 -0
- package/dist/src/core/coverage-sources/git.d.ts +101 -0
- package/dist/src/core/coverage-sources/git.js +269 -0
- package/dist/src/core/coverage-sources/git.js.map +1 -0
- package/dist/src/core/coverage.d.ts +217 -0
- package/dist/src/core/coverage.js +337 -0
- package/dist/src/core/coverage.js.map +1 -0
- package/dist/src/core/credential-spec.d.ts +72 -0
- package/dist/src/core/credential-spec.js +23 -0
- package/dist/src/core/credential-spec.js.map +1 -0
- package/dist/src/core/dark-session.d.ts +331 -0
- package/dist/src/core/dark-session.js +714 -0
- package/dist/src/core/dark-session.js.map +1 -0
- package/dist/src/core/decision-refusal.d.ts +185 -0
- package/dist/src/core/decision-refusal.js +265 -0
- package/dist/src/core/decision-refusal.js.map +1 -0
- package/dist/src/core/env-file.d.ts +450 -0
- package/dist/src/core/env-file.js +837 -0
- package/dist/src/core/env-file.js.map +1 -0
- package/dist/src/core/execute.d.ts +858 -0
- package/dist/src/core/execute.js +1271 -0
- package/dist/src/core/execute.js.map +1 -0
- package/dist/src/core/frontmatter.d.ts +78 -0
- package/dist/src/core/frontmatter.js +100 -0
- package/dist/src/core/frontmatter.js.map +1 -0
- package/dist/src/core/gate-window.d.ts +312 -0
- package/dist/src/core/gate-window.js +506 -0
- package/dist/src/core/gate-window.js.map +1 -0
- package/dist/src/core/gate.d.ts +1364 -0
- package/dist/src/core/gate.js +3002 -0
- package/dist/src/core/gate.js.map +1 -0
- package/dist/src/core/git-run.d.ts +73 -0
- package/dist/src/core/git-run.js +93 -0
- package/dist/src/core/git-run.js.map +1 -0
- package/dist/src/core/harness-version.d.ts +157 -0
- package/dist/src/core/harness-version.js +211 -0
- package/dist/src/core/harness-version.js.map +1 -0
- package/dist/src/core/harness-wait.d.ts +55 -0
- package/dist/src/core/harness-wait.js +58 -0
- package/dist/src/core/harness-wait.js.map +1 -0
- package/dist/src/core/head-retry.d.ts +107 -0
- package/dist/src/core/head-retry.js +121 -0
- package/dist/src/core/head-retry.js.map +1 -0
- package/dist/src/core/instance.d.ts +253 -0
- package/dist/src/core/instance.js +319 -0
- package/dist/src/core/instance.js.map +1 -0
- package/dist/src/core/intake-limits.d.ts +247 -0
- package/dist/src/core/intake-limits.js +350 -0
- package/dist/src/core/intake-limits.js.map +1 -0
- package/dist/src/core/jcs.d.ts +52 -0
- package/dist/src/core/jcs.js +132 -0
- package/dist/src/core/jcs.js.map +1 -0
- package/dist/src/core/journal.d.ts +144 -0
- package/dist/src/core/journal.js +200 -0
- package/dist/src/core/journal.js.map +1 -0
- package/dist/src/core/live-draw.d.ts +436 -0
- package/dist/src/core/live-draw.js +703 -0
- package/dist/src/core/live-draw.js.map +1 -0
- package/dist/src/core/log-reconcile.d.ts +89 -0
- package/dist/src/core/log-reconcile.js +136 -0
- package/dist/src/core/log-reconcile.js.map +1 -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/log.js +546 -0
- package/dist/src/core/log.js.map +1 -0
- package/dist/src/core/loop.d.ts +274 -0
- package/dist/src/core/loop.js +487 -0
- package/dist/src/core/loop.js.map +1 -0
- package/dist/src/core/md-fence.d.ts +41 -0
- package/dist/src/core/md-fence.js +74 -0
- package/dist/src/core/md-fence.js.map +1 -0
- package/dist/src/core/money.d.ts +147 -0
- package/dist/src/core/money.js +195 -0
- package/dist/src/core/money.js.map +1 -0
- package/dist/src/core/payload-census.d.ts +74 -0
- package/dist/src/core/payload-census.js +146 -0
- package/dist/src/core/payload-census.js.map +1 -0
- package/dist/src/core/payload-store.d.ts +175 -0
- package/dist/src/core/payload-store.js +340 -0
- package/dist/src/core/payload-store.js.map +1 -0
- package/dist/src/core/payload.d.ts +71 -0
- package/dist/src/core/payload.js +80 -0
- package/dist/src/core/payload.js.map +1 -0
- package/dist/src/core/policy-diff.d.ts +292 -0
- package/dist/src/core/policy-diff.js +588 -0
- package/dist/src/core/policy-diff.js.map +1 -0
- package/dist/src/core/policy-expectations.d.ts +199 -0
- package/dist/src/core/policy-expectations.js +394 -0
- package/dist/src/core/policy-expectations.js.map +1 -0
- package/dist/src/core/policy-explain.d.ts +150 -0
- package/dist/src/core/policy-explain.js +258 -0
- package/dist/src/core/policy-explain.js.map +1 -0
- package/dist/src/core/policy-load.d.ts +527 -0
- package/dist/src/core/policy-load.js +536 -0
- package/dist/src/core/policy-load.js.map +1 -0
- package/dist/src/core/policy-match.d.ts +281 -0
- package/dist/src/core/policy-match.js +478 -0
- package/dist/src/core/policy-match.js.map +1 -0
- package/dist/src/core/policy-proposal.d.ts +265 -0
- package/dist/src/core/policy-proposal.js +458 -0
- package/dist/src/core/policy-proposal.js.map +1 -0
- package/dist/src/core/prompt-layout.d.ts +221 -0
- package/dist/src/core/prompt-layout.js +422 -0
- package/dist/src/core/prompt-layout.js.map +1 -0
- package/dist/src/core/protected-path-guard.d.ts +453 -0
- package/dist/src/core/protected-path-guard.js +1566 -0
- package/dist/src/core/protected-path-guard.js.map +1 -0
- package/dist/src/core/registration.d.ts +25 -0
- package/dist/src/core/registration.js +39 -0
- package/dist/src/core/registration.js.map +1 -0
- package/dist/src/core/reindex.d.ts +99 -0
- package/dist/src/core/reindex.js +336 -0
- package/dist/src/core/reindex.js.map +1 -0
- package/dist/src/core/sampler.d.ts +313 -0
- package/dist/src/core/sampler.js +388 -0
- package/dist/src/core/sampler.js.map +1 -0
- package/dist/src/core/sandbox.d.ts +290 -0
- package/dist/src/core/sandbox.js +424 -0
- package/dist/src/core/sandbox.js.map +1 -0
- package/dist/src/core/seal.d.ts +165 -0
- package/dist/src/core/seal.js +290 -0
- package/dist/src/core/seal.js.map +1 -0
- package/dist/src/core/state.d.ts +505 -0
- package/dist/src/core/state.js +1009 -0
- package/dist/src/core/state.js.map +1 -0
- package/dist/src/core/task-file.d.ts +185 -0
- package/dist/src/core/task-file.js +464 -0
- package/dist/src/core/task-file.js.map +1 -0
- package/dist/src/core/telegram-config.d.ts +93 -0
- package/dist/src/core/telegram-config.js +114 -0
- package/dist/src/core/telegram-config.js.map +1 -0
- package/dist/src/core/token.d.ts +409 -0
- package/dist/src/core/token.js +561 -0
- package/dist/src/core/token.js.map +1 -0
- package/dist/src/core/validate.d.ts +138 -0
- package/dist/src/core/validate.js +0 -0
- package/dist/src/core/validate.js.map +1 -0
- package/dist/src/core/values.d.ts +137 -0
- package/dist/src/core/values.js +153 -0
- package/dist/src/core/values.js.map +1 -0
- package/dist/src/core/vault.d.ts +291 -0
- package/dist/src/core/vault.js +612 -0
- package/dist/src/core/vault.js.map +1 -0
- package/dist/src/core/verified-snapshot.d.ts +204 -0
- package/dist/src/core/verified-snapshot.js +506 -0
- package/dist/src/core/verified-snapshot.js.map +1 -0
- package/dist/src/core/verify.d.ts +336 -0
- package/dist/src/core/verify.js +549 -0
- package/dist/src/core/verify.js.map +1 -0
- package/dist/src/core/version.d.ts +8 -0
- package/dist/src/core/version.js +9 -0
- package/dist/src/core/version.js.map +1 -0
- package/dist/src/core/wysiwys.d.ts +370 -0
- package/dist/src/core/wysiwys.js +728 -0
- package/dist/src/core/wysiwys.js.map +1 -0
- package/dist/src/daemon/advance-child.d.ts +39 -0
- package/dist/src/daemon/advance-child.js +78 -0
- package/dist/src/daemon/advance-child.js.map +1 -0
- package/dist/src/daemon/advance.d.ts +466 -0
- package/dist/src/daemon/advance.js +849 -0
- package/dist/src/daemon/advance.js.map +1 -0
- package/dist/src/daemon/audit.d.ts +87 -0
- package/dist/src/daemon/audit.js +90 -0
- package/dist/src/daemon/audit.js.map +1 -0
- package/dist/src/daemon/daemon.d.ts +1180 -0
- package/dist/src/daemon/daemon.js +1988 -0
- package/dist/src/daemon/daemon.js.map +1 -0
- package/dist/src/daemon/dark-session.d.ts +64 -0
- package/dist/src/daemon/dark-session.js +119 -0
- package/dist/src/daemon/dark-session.js.map +1 -0
- package/dist/src/daemon/draw-child.d.ts +36 -0
- package/dist/src/daemon/draw-child.js +132 -0
- package/dist/src/daemon/draw-child.js.map +1 -0
- package/dist/src/daemon/draw.d.ts +154 -0
- package/dist/src/daemon/draw.js +458 -0
- package/dist/src/daemon/draw.js.map +1 -0
- package/dist/src/daemon/git-evidence.d.ts +173 -0
- package/dist/src/daemon/git-evidence.js +345 -0
- package/dist/src/daemon/git-evidence.js.map +1 -0
- package/dist/src/daemon/projection.d.ts +180 -0
- package/dist/src/daemon/projection.js +233 -0
- package/dist/src/daemon/projection.js.map +1 -0
- package/dist/src/daemon/prune.d.ts +207 -0
- package/dist/src/daemon/prune.js +376 -0
- package/dist/src/daemon/prune.js.map +1 -0
- package/dist/src/mcp/http.d.ts +113 -0
- package/dist/src/mcp/http.js +343 -0
- package/dist/src/mcp/http.js.map +1 -0
- package/dist/src/mcp/server.d.ts +265 -0
- package/dist/src/mcp/server.js +602 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/docs/adapter-api.md +106 -0
- package/docs/cli-reference.md +5716 -0
- package/docs/codex-enforced-session.md +30 -0
- package/package.json +53 -4
- package/schema/.gitkeep +0 -0
- package/schema/LICENSE +117 -0
- package/schema/codex-instance.schema.json +82 -0
- package/schema/envelope.schema.json +137 -0
- package/schema/event.schema.json +1811 -0
- package/schema/fixtures/codex-instance/invalid/unpinned-codex-version.json +40 -0
- package/schema/fixtures/codex-instance/valid/canonical.json +40 -0
- package/schema/fixtures/envelope/invalid/action-missing-idempotency-key.json +15 -0
- package/schema/fixtures/envelope/invalid/action-unknown-class-format.json +14 -0
- package/schema/fixtures/envelope/invalid/confidence-out-of-range.json +11 -0
- package/schema/fixtures/envelope/invalid/est-cost-bare-number.json +14 -0
- package/schema/fixtures/envelope/invalid/est-cost-noncanonical-string.json +14 -0
- package/schema/fixtures/envelope/invalid/malformed-assignee.json +10 -0
- package/schema/fixtures/envelope/invalid/malformed-created-by.json +7 -0
- package/schema/fixtures/envelope/invalid/malformed-max-latency.json +11 -0
- package/schema/fixtures/envelope/invalid/malformed-payload-hash.json +14 -0
- package/schema/fixtures/envelope/invalid/max-cost-bare-number.json +11 -0
- package/schema/fixtures/envelope/invalid/missing-origin.json +3 -0
- package/schema/fixtures/envelope/invalid/negative-est-cost.json +14 -0
- package/schema/fixtures/envelope/invalid/unknown-state.json +7 -0
- package/schema/fixtures/envelope/invalid/unknown-top-level-field.json +8 -0
- package/schema/fixtures/envelope/valid/action-payload-hash.json +17 -0
- package/schema/fixtures/envelope/valid/actions-without-budget.json +18 -0
- package/schema/fixtures/envelope/valid/canonical.json +25 -0
- package/schema/fixtures/envelope/valid/minimal.json +7 -0
- package/schema/fixtures/envelope/valid/multi-action-executed.json +30 -0
- package/schema/fixtures/envelope/valid/record-write-stage.json +22 -0
- package/schema/fixtures/event/invalid/approval-granted-agent-actor.json +15 -0
- package/schema/fixtures/event/invalid/approval-granted-empty-batch-delivery-id.json +17 -0
- package/schema/fixtures/event/invalid/approval-granted-fifth-reaction.json +16 -0
- package/schema/fixtures/event/invalid/approval-granted-missing-actor.json +14 -0
- package/schema/fixtures/event/invalid/approval-requested-missing-action-key.json +14 -0
- package/schema/fixtures/event/invalid/approval-withdrawn-agent-policy-drift.json +15 -0
- package/schema/fixtures/event/invalid/approval-withdrawn-missing-reason.json +15 -0
- package/schema/fixtures/event/invalid/approval-withdrawn-system-actor.json +15 -0
- package/schema/fixtures/event/invalid/audit-decision-refused-human-actor.json +17 -0
- package/schema/fixtures/event/invalid/audit-decision-refused-missing-code.json +16 -0
- package/schema/fixtures/event/invalid/audit-reviewed-agent-actor.json +15 -0
- package/schema/fixtures/event/invalid/audit-reviewed-loved-no-note.json +16 -0
- package/schema/fixtures/event/invalid/audit-reviewed-system-actor.json +15 -0
- package/schema/fixtures/event/invalid/bad-actor-prefix.json +15 -0
- package/schema/fixtures/event/invalid/est-cost-bare-number.json +17 -0
- package/schema/fixtures/event/invalid/execution-completed-fabricated-exit-code.json +16 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-empty-id.json +18 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-extra-field.json +19 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-id-not-string.json +18 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-missing-adapter.json +17 -0
- package/schema/fixtures/event/invalid/execution-failed-open-reported-by.json +16 -0
- package/schema/fixtures/event/invalid/execution-indeterminate-open-reason.json +14 -0
- package/schema/fixtures/event/invalid/execution-reconciled-agent-actor.json +17 -0
- package/schema/fixtures/event/invalid/execution-started-negative-env-stripped.json +16 -0
- package/schema/fixtures/event/invalid/gate-bypassed-missing-opened-seq.json +15 -0
- package/schema/fixtures/event/invalid/gate-closed-non-integer-opened-seq.json +13 -0
- package/schema/fixtures/event/invalid/gate-opened-agent-actor.json +16 -0
- package/schema/fixtures/event/invalid/gate-organ-attested-absolute-path.json +14 -0
- package/schema/fixtures/event/invalid/gate-organ-attested-agent-actor.json +14 -0
- package/schema/fixtures/event/invalid/gate-organ-attested-missing-organ-path.json +13 -0
- package/schema/fixtures/event/invalid/harness-unknown-kind.json +18 -0
- package/schema/fixtures/event/invalid/harness-version-multiline.json +16 -0
- package/schema/fixtures/event/invalid/log-checkpoint-agent-actor.json +17 -0
- package/schema/fixtures/event/invalid/log-checkpoint-missing-signature.json +16 -0
- package/schema/fixtures/event/invalid/log-checkpoint-short-signed-hash.json +17 -0
- package/schema/fixtures/event/invalid/log-checkpoint-unknown-signature-alg.json +17 -0
- package/schema/fixtures/event/invalid/malformed-ts.json +15 -0
- package/schema/fixtures/event/invalid/missing-alg.json +14 -0
- package/schema/fixtures/event/invalid/missing-hash.json +14 -0
- package/schema/fixtures/event/invalid/non-integer-seq.json +15 -0
- package/schema/fixtures/event/invalid/payload-pruned-human-actor.json +14 -0
- package/schema/fixtures/event/invalid/payload-pruned-missing-hash.json +14 -0
- package/schema/fixtures/event/invalid/policy-declined-agent-actor.json +15 -0
- package/schema/fixtures/event/invalid/policy-proposed-missing-diff.json +19 -0
- package/schema/fixtures/event/invalid/policy-proposed-system-actor.json +26 -0
- package/schema/fixtures/event/invalid/short-hash.json +15 -0
- package/schema/fixtures/event/invalid/unknown-alg.json +15 -0
- package/schema/fixtures/event/invalid/unknown-event-type.json +15 -0
- package/schema/fixtures/event/invalid/unknown-top-level-field.json +16 -0
- package/schema/fixtures/event/valid/approval-expired.json +15 -0
- package/schema/fixtures/event/valid/approval-granted-batch.json +19 -0
- package/schema/fixtures/event/valid/approval-granted-reaction.json +16 -0
- package/schema/fixtures/event/valid/approval-granted.json +15 -0
- package/schema/fixtures/event/valid/approval-rejected.json +15 -0
- package/schema/fixtures/event/valid/approval-requested.json +19 -0
- package/schema/fixtures/event/valid/approval-revoked.json +15 -0
- package/schema/fixtures/event/valid/approval-withdrawn-policy-drift.json +17 -0
- package/schema/fixtures/event/valid/approval-withdrawn.json +16 -0
- package/schema/fixtures/event/valid/audit-decision-refused.json +20 -0
- package/schema/fixtures/event/valid/audit-reviewed-reaction.json +17 -0
- package/schema/fixtures/event/valid/audit-reviewed.json +15 -0
- package/schema/fixtures/event/valid/audit-sampled.json +14 -0
- package/schema/fixtures/event/valid/budget-exceeded.json +21 -0
- package/schema/fixtures/event/valid/envelope-drift.json +16 -0
- package/schema/fixtures/event/valid/execution-completed-harness-report.json +16 -0
- package/schema/fixtures/event/valid/execution-completed-provider-ref.json +18 -0
- package/schema/fixtures/event/valid/execution-completed.json +15 -0
- package/schema/fixtures/event/valid/execution-failed-harness-report.json +16 -0
- package/schema/fixtures/event/valid/execution-failed.json +15 -0
- package/schema/fixtures/event/valid/execution-indeterminate.json +15 -0
- package/schema/fixtures/event/valid/execution-reconciled.json +17 -0
- package/schema/fixtures/event/valid/execution-started-env-stripped.json +17 -0
- package/schema/fixtures/event/valid/execution-started.json +14 -0
- package/schema/fixtures/event/valid/gate-bypassed-harness-version.json +18 -0
- package/schema/fixtures/event/valid/gate-bypassed.json +19 -0
- package/schema/fixtures/event/valid/gate-closed.json +14 -0
- package/schema/fixtures/event/valid/gate-opened.json +16 -0
- package/schema/fixtures/event/valid/gate-organ-attested.json +14 -0
- package/schema/fixtures/event/valid/genesis-null-prev.json +14 -0
- package/schema/fixtures/event/valid/log-checkpoint.json +17 -0
- package/schema/fixtures/event/valid/payload-pruned-orphan.json +13 -0
- package/schema/fixtures/event/valid/payload-pruned.json +17 -0
- package/schema/fixtures/event/valid/policy-declined.json +16 -0
- package/schema/fixtures/event/valid/policy-proposed.json +35 -0
- package/schema/fixtures/event/valid/policy-updated.json +14 -0
- package/schema/fixtures/event/valid/reconciliation-required.json +18 -0
- package/schema/fixtures/event/valid/reconciliation-satisfied.json +17 -0
- package/schema/fixtures/event/valid/route-accepted.json +15 -0
- package/schema/fixtures/event/valid/route-proposed.json +16 -0
- package/schema/fixtures/event/valid/spec-example.json +15 -0
- package/schema/fixtures/event/valid/task-registered-harness-version.json +23 -0
- package/schema/fixtures/event/valid/task-registered.json +14 -0
- package/schema/fixtures/hash/known-answer-pre-121.json +74 -0
- package/schema/fixtures/hash/known-answer.json +74 -0
- package/schema/fixtures/policy/invalid/bad-approval-ttl.json +7 -0
- package/schema/fixtures/policy/invalid/bad-web-port.json +4 -0
- package/schema/fixtures/policy/invalid/checkpoint-key-not-base64.json +6 -0
- package/schema/fixtures/policy/invalid/class-rule-missing-autonomy.json +9 -0
- package/schema/fixtures/policy/invalid/empty-class-key.json +6 -0
- package/schema/fixtures/policy/invalid/live-rate-on-human-only.json +7 -0
- package/schema/fixtures/policy/invalid/malformed-class-key.json +6 -0
- package/schema/fixtures/policy/invalid/missing-version.json +8 -0
- package/schema/fixtures/policy/invalid/negative-limit.json +9 -0
- package/schema/fixtures/policy/invalid/non-numeric-limit.json +9 -0
- package/schema/fixtures/policy/invalid/non-positive-max-pending.json +9 -0
- package/schema/fixtures/policy/invalid/on-expiry-grant.json +8 -0
- package/schema/fixtures/policy/invalid/payload-retention-bare-number.json +4 -0
- package/schema/fixtures/policy/invalid/payload-retention-compound.json +4 -0
- package/schema/fixtures/policy/invalid/payload-retention-fractional.json +4 -0
- package/schema/fixtures/policy/invalid/payload-retention-zero.json +4 -0
- package/schema/fixtures/policy/invalid/protected-paths-escape.json +4 -0
- package/schema/fixtures/policy/invalid/protected-paths-glob.json +4 -0
- package/schema/fixtures/policy/invalid/retro-rate-on-human-only.json +7 -0
- package/schema/fixtures/policy/invalid/retro-rate-on-manual.json +7 -0
- package/schema/fixtures/policy/invalid/retro-rate-zero.json +7 -0
- package/schema/fixtures/policy/invalid/sample-rate-too-high.json +5 -0
- package/schema/fixtures/policy/invalid/sampling-secret-env-empty.json +7 -0
- package/schema/fixtures/policy/invalid/sampling-secret-env-not-string.json +6 -0
- package/schema/fixtures/policy/invalid/skew-tolerance-compound.json +6 -0
- package/schema/fixtures/policy/invalid/unknown-autonomy.json +7 -0
- package/schema/fixtures/policy/invalid/unknown-class-rule-key.json +6 -0
- package/schema/fixtures/policy/invalid/unknown-top-level-key.json +7 -0
- package/schema/fixtures/policy/invalid/vault-passphrase-env-empty.json +6 -0
- package/schema/fixtures/policy/invalid/vault-passphrase-literal.json +6 -0
- package/schema/fixtures/policy/invalid/version-not-string.json +4 -0
- package/schema/fixtures/policy/valid/canonical.json +47 -0
- package/schema/fixtures/policy/valid/checkpoint-keys.json +18 -0
- package/schema/fixtures/policy/valid/class-approvers-limits.json +25 -0
- package/schema/fixtures/policy/valid/class-retro-rate.json +17 -0
- package/schema/fixtures/policy/valid/global-budgets.json +19 -0
- package/schema/fixtures/policy/valid/human-only.json +9 -0
- package/schema/fixtures/policy/valid/minimal.json +6 -0
- package/schema/fixtures/policy/valid/protected-paths.json +10 -0
- package/schema/fixtures/policy/valid/record-namespace.json +13 -0
- package/schema/fixtures/policy/valid/request-volume-limits.json +26 -0
- package/schema/fixtures/policy/valid/retention-and-sampling-secret.json +16 -0
- package/schema/fixtures/policy/valid/skew-tolerance.json +15 -0
- package/schema/fixtures/policy/valid/vault-passphrase-env.json +14 -0
- package/schema/fixtures/policy/valid/wildcards.json +15 -0
- package/schema/fixtures/policy-md/invalid/alias-bomb.md +15 -0
- package/schema/fixtures/policy-md/invalid/no-fence.md +7 -0
- package/schema/fixtures/policy-md/invalid/protected-route-not-a-subclass.md +16 -0
- package/schema/fixtures/policy-md/invalid/schema-invalid-autonomy.md +16 -0
- package/schema/fixtures/policy-md/invalid/schema-invalid-read-proof.md +17 -0
- package/schema/fixtures/policy-md/invalid/two-fences.md +19 -0
- package/schema/fixtures/policy-md/invalid/unclosed-fence.md +11 -0
- package/schema/fixtures/policy-md/invalid/wrong-info-string.md +11 -0
- package/schema/fixtures/policy-md/invalid/yaml-syntax-error.md +13 -0
- package/schema/fixtures/policy-md/precedence/both/APPROVAL.md +7 -0
- package/schema/fixtures/policy-md/precedence/both/APPROVALS.md +7 -0
- package/schema/fixtures/policy-md/precedence/fallback-only/APPROVALS.md +7 -0
- package/schema/fixtures/policy-md/valid/canonical.md +50 -0
- package/schema/fixtures/policy-md/valid/daemon-read-proof.md +18 -0
- package/schema/fixtures/policy-md/valid/minimal.md +3 -0
- package/schema/fixtures/policy-md/valid/prose-lookalikes.md +54 -0
- package/schema/fixtures/policy-md/valid/routed-protected-paths.md +49 -0
- package/schema/fixtures/policy-md/valid/with-values.md +79 -0
- package/schema/fixtures/sample-record/invalid/bad-date-time.json +4 -0
- package/schema/fixtures/sample-record/invalid/missing-required-field.json +3 -0
- package/schema/fixtures/sample-record/invalid/unknown-top-level-field.json +5 -0
- package/schema/fixtures/sample-record/invalid/wrong-type.json +4 -0
- package/schema/fixtures/sample-record/valid/minimal.json +4 -0
- package/schema/fixtures/sample-record/valid/with-note.json +5 -0
- package/schema/fixtures/values/invalid/class-shaped.json +9 -0
- package/schema/fixtures/values/invalid/duplicate-entry.json +4 -0
- package/schema/fixtures/values/invalid/non-string-item.json +4 -0
- package/schema/fixtures/values/invalid/over-cap.json +26 -0
- package/schema/fixtures/values/invalid/unknown-key.json +5 -0
- package/schema/fixtures/values/invalid/version-string.json +1 -0
- package/schema/fixtures/values/valid/empty-lists.json +7 -0
- package/schema/fixtures/values/valid/full.json +20 -0
- package/schema/fixtures/values/valid/minimal.json +1 -0
- package/schema/fixtures/values-md/invalid/schema-invalid.md +62 -0
- package/schema/fixtures/values-md/invalid/two-blocks.md +69 -0
- package/schema/fixtures/values-md/invalid/unterminated.md +61 -0
- package/schema/fixtures/values-md/invalid/yaml-error.md +63 -0
- package/schema/fixtures/values-md/valid/absent.md +50 -0
- package/schema/fixtures/values-md/valid/with-values.md +79 -0
- package/schema/policy.schema.json +501 -0
- package/schema/sample-record.schema.json +26 -0
- package/schema/values.schema.json +55 -0
- package/templates/codex/README.md +9 -0
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal presentation: colour, glyphs, headings, tables (APRV-91, APRV-93).
|
|
3
|
+
*
|
|
4
|
+
* The observation behind this file was a real `examples/email-demo.md` run and
|
|
5
|
+
* a `policy amend --dry-run` the operator called dense: two 64-hex hashes on one
|
|
6
|
+
* line, the same absolute path three times, every line the same visual weight,
|
|
7
|
+
* no colour anywhere. Nothing was WRONG; nothing was scannable either.
|
|
8
|
+
*
|
|
9
|
+
* The design rules, from APRV-91's brief:
|
|
10
|
+
*
|
|
11
|
+
* 1. ROLES, NOT COLOURS. Callers ask for `ok` or `key`, never for green or
|
|
12
|
+
* bold, so a theme is one table and a colour-blind reader loses nothing.
|
|
13
|
+
* 2. COLOUR IS REDUNDANT, ALWAYS. Every coloured thing is also carried by a
|
|
14
|
+
* glyph or a word, so the plain-text degradation is lossless. That is not
|
|
15
|
+
* politeness: piped output IS the tested output, and a pipe gets no colour.
|
|
16
|
+
* 3. NEVER COLOUR A COPYABLE VALUE. Hashes, tokens, paths and commands are
|
|
17
|
+
* printed raw so a triple-click yields clean bytes. Colour the LABEL.
|
|
18
|
+
* 4. DECIDED ONCE. {@link style} memoizes the process-wide answer; tests build
|
|
19
|
+
* their own with {@link makeStyle} rather than mutating the environment.
|
|
20
|
+
*
|
|
21
|
+
* NO NEW DEPENDENCY, deliberately: a colour library is thousands of lines to
|
|
22
|
+
* buy the eleven escape sequences below, and this repo justifies every package.
|
|
23
|
+
*
|
|
24
|
+
* `--json` IS AN ABSOLUTE VETO here, above even FORCE_COLOR. The brief lists
|
|
25
|
+
* `--json` alongside the other conditions, but the machine-readable shapes are
|
|
26
|
+
* frozen public API; one escape byte in a JSON stream is a parse error, not a
|
|
27
|
+
* cosmetic regression. So a caller that passes `json: true` cannot get colour by
|
|
28
|
+
* any combination of environment variables.
|
|
29
|
+
*/
|
|
30
|
+
/** The single escape byte every sequence below starts with. */
|
|
31
|
+
const ESC = "\u001b";
|
|
32
|
+
/**
|
|
33
|
+
* Role to SGR parameters. `value` is empty on purpose: the role exists so a
|
|
34
|
+
* caller can SAY "this is a value" at the call site, and the answer is that a
|
|
35
|
+
* value is never dressed (rule 3 above).
|
|
36
|
+
*/
|
|
37
|
+
const SGR = {
|
|
38
|
+
brand: "1;38;5;111",
|
|
39
|
+
ok: "32",
|
|
40
|
+
warn: "33",
|
|
41
|
+
fail: "1;31",
|
|
42
|
+
key: "1",
|
|
43
|
+
value: "",
|
|
44
|
+
muted: "2",
|
|
45
|
+
rule: "2",
|
|
46
|
+
secret: "1;33",
|
|
47
|
+
};
|
|
48
|
+
/** The glyph vocabulary, and its ASCII degradation. */
|
|
49
|
+
const GLYPHS = {
|
|
50
|
+
ok: ["✓", "[ok]"],
|
|
51
|
+
fail: ["✗", "[x]"],
|
|
52
|
+
skip: ["–", "[-]"],
|
|
53
|
+
point: ["▸", ">"],
|
|
54
|
+
bar: ["│", "|"],
|
|
55
|
+
rule: ["─", "-"],
|
|
56
|
+
};
|
|
57
|
+
/** How many characters of a 64-hex digest a human is shown. */
|
|
58
|
+
export const SHORT_HASH_LENGTH = 12;
|
|
59
|
+
/** The natural role of each glyph, so `glyph("ok")` is green without asking. */
|
|
60
|
+
const GLYPH_ROLE = {
|
|
61
|
+
ok: "ok",
|
|
62
|
+
fail: "fail",
|
|
63
|
+
skip: "warn",
|
|
64
|
+
point: "secret",
|
|
65
|
+
bar: "rule",
|
|
66
|
+
rule: "rule",
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* The enable matrix, in precedence order.
|
|
70
|
+
*
|
|
71
|
+
* `json` first because it is frozen API (see the header). Then the explicit
|
|
72
|
+
* flag, then FORCE_COLOR (the escape hatch for CI that renders ANSI), then
|
|
73
|
+
* NO_COLOR and TERM=dumb, and only then the question of what stdout is.
|
|
74
|
+
*/
|
|
75
|
+
function colourEnabled(input, env) {
|
|
76
|
+
if (input.json === true)
|
|
77
|
+
return false;
|
|
78
|
+
if (input.noColor === true)
|
|
79
|
+
return false;
|
|
80
|
+
if (forcedColour(env))
|
|
81
|
+
return true;
|
|
82
|
+
const noColor = env["NO_COLOR"];
|
|
83
|
+
if (noColor !== undefined && noColor !== "")
|
|
84
|
+
return false;
|
|
85
|
+
if (env["TERM"] === "dumb")
|
|
86
|
+
return false;
|
|
87
|
+
return input.tty ?? process.stdout.isTTY === true;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Whether FORCE_COLOR says yes (APRV-102).
|
|
91
|
+
*
|
|
92
|
+
* The convention every other tool honours is that FORCE_COLOR is a LEVEL, not a
|
|
93
|
+
* boolean: `1`, `2` and `3` all mean "colour, at this depth", `true` is common
|
|
94
|
+
* in CI configuration, and only `0` (and, in some tools, `false`) means off. The
|
|
95
|
+
* literal `=== "1"` this replaced meant `FORCE_COLOR=2` in a CI job silently
|
|
96
|
+
* fell through to the TTY question and produced a plain log, which is precisely
|
|
97
|
+
* the case the escape hatch exists for. Depth itself is not modelled: this
|
|
98
|
+
* palette is one 256-colour parameter and eight basic ones.
|
|
99
|
+
*/
|
|
100
|
+
function forcedColour(env) {
|
|
101
|
+
const forced = env["FORCE_COLOR"];
|
|
102
|
+
if (forced === undefined || forced === "")
|
|
103
|
+
return false;
|
|
104
|
+
const normalized = forced.toLowerCase();
|
|
105
|
+
return normalized !== "0" && normalized !== "false";
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Whether glyphs degrade to ASCII.
|
|
109
|
+
*
|
|
110
|
+
* An UNSET locale is treated as UTF-8 capable. That is the deliberate choice:
|
|
111
|
+
* a bare `env -i node cli.js` and every test runner would otherwise flip the
|
|
112
|
+
* glyph column to `[ok]`, changing bytes that are pinned all over the suite for
|
|
113
|
+
* a terminal that is almost certainly fine. Degrade when the locale is SET and
|
|
114
|
+
* says something other than UTF-8, or when asked directly.
|
|
115
|
+
*/
|
|
116
|
+
function asciiOnly(env) {
|
|
117
|
+
if (env["APPROVAL_ASCII"] === "1")
|
|
118
|
+
return true;
|
|
119
|
+
const locale = env["LC_ALL"] ?? env["LANG"];
|
|
120
|
+
if (locale === undefined || locale === "")
|
|
121
|
+
return false;
|
|
122
|
+
return !/utf-?8/iu.test(locale);
|
|
123
|
+
}
|
|
124
|
+
class TerminalStyle {
|
|
125
|
+
enabled;
|
|
126
|
+
ascii;
|
|
127
|
+
constructor(enabled, ascii) {
|
|
128
|
+
this.enabled = enabled;
|
|
129
|
+
this.ascii = ascii;
|
|
130
|
+
}
|
|
131
|
+
paint(role, text) {
|
|
132
|
+
const code = SGR[role];
|
|
133
|
+
if (!this.enabled || code === "" || text === "")
|
|
134
|
+
return text;
|
|
135
|
+
return `${ESC}[${code}m${text}${ESC}[0m`;
|
|
136
|
+
}
|
|
137
|
+
brand(text) {
|
|
138
|
+
return this.paint("brand", text);
|
|
139
|
+
}
|
|
140
|
+
ok(text) {
|
|
141
|
+
return this.paint("ok", text);
|
|
142
|
+
}
|
|
143
|
+
warn(text) {
|
|
144
|
+
return this.paint("warn", text);
|
|
145
|
+
}
|
|
146
|
+
fail(text) {
|
|
147
|
+
return this.paint("fail", text);
|
|
148
|
+
}
|
|
149
|
+
key(text) {
|
|
150
|
+
return this.paint("key", text);
|
|
151
|
+
}
|
|
152
|
+
value(text) {
|
|
153
|
+
return text;
|
|
154
|
+
}
|
|
155
|
+
muted(text) {
|
|
156
|
+
return this.paint("muted", text);
|
|
157
|
+
}
|
|
158
|
+
secret(text) {
|
|
159
|
+
return this.paint("secret", text);
|
|
160
|
+
}
|
|
161
|
+
rawGlyph(name) {
|
|
162
|
+
return GLYPHS[name][this.ascii ? 1 : 0];
|
|
163
|
+
}
|
|
164
|
+
glyph(name) {
|
|
165
|
+
return this.paint(GLYPH_ROLE[name], this.rawGlyph(name));
|
|
166
|
+
}
|
|
167
|
+
heading(text) {
|
|
168
|
+
return this.key(text);
|
|
169
|
+
}
|
|
170
|
+
rule(width = 61) {
|
|
171
|
+
return this.paint("rule", this.rawGlyph("rule").repeat(Math.max(0, width)));
|
|
172
|
+
}
|
|
173
|
+
table(rows, options = {}) {
|
|
174
|
+
// The two-column shape is the n-column one with a glyph column in front:
|
|
175
|
+
// one alignment engine, so a change to how width is measured cannot reach
|
|
176
|
+
// only half of the CLI's tables (APRV-102).
|
|
177
|
+
const glyphed = rows.some((row) => row.glyph !== undefined);
|
|
178
|
+
const gap = options.gap ?? 2;
|
|
179
|
+
const markWidth = Math.max(0, ...rows.map((row) => (row.glyph === undefined ? 0 : this.rawGlyph(row.glyph).length)));
|
|
180
|
+
const grid = rows.map((row) => ({
|
|
181
|
+
cells: [
|
|
182
|
+
...(glyphed
|
|
183
|
+
? [
|
|
184
|
+
row.glyph === undefined
|
|
185
|
+
? ""
|
|
186
|
+
: { text: this.rawGlyph(row.glyph), role: row.role ?? GLYPH_ROLE[row.glyph] },
|
|
187
|
+
]
|
|
188
|
+
: []),
|
|
189
|
+
row.plainLeft === true ? row.left : { text: row.left, role: "key" },
|
|
190
|
+
row.right ?? "",
|
|
191
|
+
],
|
|
192
|
+
...(row.under === undefined ? {} : { under: row.under }),
|
|
193
|
+
}));
|
|
194
|
+
return table(this, grid, {
|
|
195
|
+
indent: options.indent ?? 0,
|
|
196
|
+
// A single space after the glyph, `gap` after the label: the glyph is a
|
|
197
|
+
// mark ON the row rather than a column of its own.
|
|
198
|
+
gaps: glyphed ? [1, gap] : [gap],
|
|
199
|
+
underHang: glyphed ? markWidth + 3 : 2,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function cellOf(cell) {
|
|
204
|
+
return typeof cell === "string" ? { text: cell } : cell;
|
|
205
|
+
}
|
|
206
|
+
function rowOf(row) {
|
|
207
|
+
return Array.isArray(row) ? { cells: row } : row;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* The one aligned-columns renderer in this CLI (APRV-102).
|
|
211
|
+
*
|
|
212
|
+
* Three hand-rolled versions of this arithmetic existed — `style.table`,
|
|
213
|
+
* `execute.ts`'s queue and `hook.ts`'s classify — and they had already drifted
|
|
214
|
+
* on the question that matters: WIDTH IS MEASURED ON THE UNDRESSED TEXT.
|
|
215
|
+
* Escape sequences occupy no terminal columns, so padding computed after
|
|
216
|
+
* painting is wrong by exactly the length of the escapes and the table lines up
|
|
217
|
+
* only in a pipe. Here the cell text is padded and painted separately, so the
|
|
218
|
+
* coloured render is the plain one with escapes inserted and nothing else.
|
|
219
|
+
*
|
|
220
|
+
* Every line is `trimEnd`ed: trailing spaces are invisible in review and very
|
|
221
|
+
* visible in the diff of a pinned transcript.
|
|
222
|
+
*
|
|
223
|
+
* Returned with no trailing newline; the caller owns the stream.
|
|
224
|
+
*/
|
|
225
|
+
export function table(st, rows, options = {}) {
|
|
226
|
+
const indent = " ".repeat(options.indent ?? 0);
|
|
227
|
+
const defaultGap = options.gap ?? 2;
|
|
228
|
+
const gapAt = (boundary) => " ".repeat(options.gaps?.[boundary] ?? defaultGap);
|
|
229
|
+
const header = options.header === undefined
|
|
230
|
+
? null
|
|
231
|
+
: options.header.map((cell) => {
|
|
232
|
+
const normalized = cellOf(cell);
|
|
233
|
+
return { text: normalized.text, role: normalized.role ?? "key" };
|
|
234
|
+
});
|
|
235
|
+
const body = rows.map(rowOf);
|
|
236
|
+
const all = [...(header === null ? [] : [{ cells: header }]), ...body];
|
|
237
|
+
const columns = Math.max(0, ...all.map((row) => row.cells.length));
|
|
238
|
+
const widths = [];
|
|
239
|
+
for (let column = 0; column < columns; column += 1) {
|
|
240
|
+
widths.push(Math.max(0, ...all.map((row) => cellOf(row.cells[column] ?? "").text.length)));
|
|
241
|
+
}
|
|
242
|
+
const renderRow = (cells) => {
|
|
243
|
+
let line = indent;
|
|
244
|
+
for (let column = 0; column < columns; column += 1) {
|
|
245
|
+
const { text, role } = cellOf(cells[column] ?? "");
|
|
246
|
+
const pad = " ".repeat(Math.max(0, (widths[column] ?? 0) - text.length));
|
|
247
|
+
const painted = role === undefined ? text : st.paint(role, text);
|
|
248
|
+
const right = (options.align?.[column] ?? "left") === "right";
|
|
249
|
+
line += right ? `${pad}${painted}` : `${painted}${pad}`;
|
|
250
|
+
if (column < columns - 1)
|
|
251
|
+
line += gapAt(column);
|
|
252
|
+
}
|
|
253
|
+
return line.trimEnd();
|
|
254
|
+
};
|
|
255
|
+
const out = [];
|
|
256
|
+
if (header !== null)
|
|
257
|
+
out.push(renderRow(header));
|
|
258
|
+
const hang = " ".repeat(options.underHang ?? 2);
|
|
259
|
+
for (const row of body) {
|
|
260
|
+
out.push(renderRow(row.cells));
|
|
261
|
+
for (const extra of row.under ?? [])
|
|
262
|
+
out.push(`${indent}${hang}${extra}`.trimEnd());
|
|
263
|
+
}
|
|
264
|
+
return out.join("\n");
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* The one shape a refusal is printed in (APRV-91 #8/#13).
|
|
268
|
+
*
|
|
269
|
+
* ✗ payload-mismatch message.json does not hash to the registered hash
|
|
270
|
+
* fix: approval payload hash message.json
|
|
271
|
+
*
|
|
272
|
+
* Glyph and machine-readable code in `fail`, message plain, and an optional
|
|
273
|
+
* repair on a second line. NEVER followed by a help page: the operator did not
|
|
274
|
+
* mistype anything, so the flags are not the answer and printing them buries
|
|
275
|
+
* the one line that is.
|
|
276
|
+
*
|
|
277
|
+
* The `fix:` LABEL is dressed and the command after it is not, which departs
|
|
278
|
+
* from the brief's "the command in `key`" on purpose. A fix line exists to be
|
|
279
|
+
* copied and run, and rule 3 (never dress a copyable value) is the rule that
|
|
280
|
+
* makes the whole palette safe to trust. The label alone carries the emphasis.
|
|
281
|
+
*
|
|
282
|
+
* Returned as text with no trailing newline, so callers keep control of the
|
|
283
|
+
* stream and of whether a blank line follows.
|
|
284
|
+
*/
|
|
285
|
+
export function refusal(style, code, message, fix) {
|
|
286
|
+
const head = `${style.glyph("fail")} ${style.fail(code)} ${message}`;
|
|
287
|
+
return fix === undefined ? head : `${head}\n ${style.key("fix:")} ${fix}`;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* The one shape a legitimate skip is printed in (APRV-153).
|
|
291
|
+
*
|
|
292
|
+
* – web-port this policy declares no channels.web.port, so no queue page is served
|
|
293
|
+
* to enable: approval policy amend
|
|
294
|
+
*
|
|
295
|
+
* The counterpart of {@link refusal} for a part that is not wrong. The fact it
|
|
296
|
+
* reports is doctor's fact (an optional part, absent by configuration), so it
|
|
297
|
+
* borrows doctor's vocabulary: the skip glyph, the check name in `warn`, the
|
|
298
|
+
* detail plain. `approval up` used to print these through {@link refusal}, and
|
|
299
|
+
* the red ✗ taught an operator that a healthy startup had failed; this shape
|
|
300
|
+
* exists to prevent that mis-reading.
|
|
301
|
+
*
|
|
302
|
+
* The second line is labelled `to enable:` rather than `fix:` because nothing
|
|
303
|
+
* is broken and there is nothing to repair; it is the path to turning the part
|
|
304
|
+
* on. Like a fix line it exists to be copied and run, so the label is dressed
|
|
305
|
+
* and the command after it is not (rule 3).
|
|
306
|
+
*
|
|
307
|
+
* Returned as text with no trailing newline, like {@link refusal}.
|
|
308
|
+
*/
|
|
309
|
+
export function skipNotice(style, check, detail, enable) {
|
|
310
|
+
const head = `${style.glyph("skip")} ${style.warn(check)} ${detail}`;
|
|
311
|
+
return enable === undefined ? head : `${head}\n ${style.key("to enable:")} ${enable}`;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* The notice under a printed execution token, on a surface that is not Telegram.
|
|
315
|
+
*
|
|
316
|
+
* Three facts and an instruction, in the order a reader needs them: it works
|
|
317
|
+
* once, nothing anywhere can give it back, so the copy has to happen now.
|
|
318
|
+
*/
|
|
319
|
+
export const TOKEN_NOTICE = "single-use · stored nowhere · copy it now";
|
|
320
|
+
/** The same, for the Telegram listener, where the extra clause is load-bearing. */
|
|
321
|
+
export const TOKEN_NOTICE_TELEGRAM = "single-use · stored nowhere · not sent to Telegram · copy it now";
|
|
322
|
+
/** How wide the rules around a token panel are drawn. */
|
|
323
|
+
const PANEL_WIDTH = 61;
|
|
324
|
+
/**
|
|
325
|
+
* The execution token, in a rule-boxed panel (APRV-91's brief, APRV-102).
|
|
326
|
+
*
|
|
327
|
+
* ─────────────────────────────────────────────────────────────
|
|
328
|
+
* execution token task-042:chaser
|
|
329
|
+
* 729a25b06567ccc0aed356f3423e39bf12b6252056b7890acde455603010fb11
|
|
330
|
+
* single-use · stored nowhere · copy it now
|
|
331
|
+
* ─────────────────────────────────────────────────────────────
|
|
332
|
+
*
|
|
333
|
+
* Trust surfaces look different from chatter: this is the one value in the whole
|
|
334
|
+
* CLI that exists for exactly as long as the terminal keeps it, so it gets a box
|
|
335
|
+
* and whitespace rather than a prefix on a line of prose.
|
|
336
|
+
*
|
|
337
|
+
* THE TOKEN LINE IS UNCOLOURED AND ALONE. Rule 3 in the header is not a
|
|
338
|
+
* preference here: a triple-click on the token must yield the token, and an
|
|
339
|
+
* escape sequence in the middle of it yields something that cannot be spent.
|
|
340
|
+
* The label carries the emphasis, the notice wears `secret` (bold yellow, never
|
|
341
|
+
* red: red is failure and this is a success), and the rules wear `rule`.
|
|
342
|
+
*
|
|
343
|
+
* One helper rather than one per surface, because `grant`, the Telegram listener
|
|
344
|
+
* and the CLI channel each print this and three copies is three chances for the
|
|
345
|
+
* one that matters to lose its warning.
|
|
346
|
+
*/
|
|
347
|
+
export function tokenPanel(st, actionKey, token, notice = TOKEN_NOTICE) {
|
|
348
|
+
const bar = st.rule(PANEL_WIDTH);
|
|
349
|
+
return [
|
|
350
|
+
bar,
|
|
351
|
+
` ${st.key("execution token")} ${actionKey}`,
|
|
352
|
+
` ${token}`,
|
|
353
|
+
` ${st.secret(notice)}`,
|
|
354
|
+
bar,
|
|
355
|
+
].join("\n");
|
|
356
|
+
}
|
|
357
|
+
/** Build a style. Tests use this; the CLI uses {@link style}. */
|
|
358
|
+
export function makeStyle(input = {}) {
|
|
359
|
+
const env = input.env ?? process.env;
|
|
360
|
+
return new TerminalStyle(colourEnabled(input, env), asciiOnly(env));
|
|
361
|
+
}
|
|
362
|
+
let processStyle = null;
|
|
363
|
+
/**
|
|
364
|
+
* The process-wide style, decided once.
|
|
365
|
+
*
|
|
366
|
+
* `json` and `noColor` are known only after a command line is parsed, so the
|
|
367
|
+
* first caller passes them and later callers get that same answer. A verb that
|
|
368
|
+
* answers in JSON therefore has to ask FIRST, which every JSON branch does by
|
|
369
|
+
* construction: it asks for the style before it prints.
|
|
370
|
+
*/
|
|
371
|
+
export function style(input = {}) {
|
|
372
|
+
processStyle ??= makeStyle(input);
|
|
373
|
+
return processStyle;
|
|
374
|
+
}
|
|
375
|
+
/** Forget the memoized answer. For tests, and for nothing else. */
|
|
376
|
+
export function resetStyle() {
|
|
377
|
+
processStyle = null;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* The first 12 characters of a digest, for human output only.
|
|
381
|
+
*
|
|
382
|
+
* 12 hex characters is 48 bits: ample to tell two hashes in one report apart,
|
|
383
|
+
* which is the entire job here, and short enough that two of them fit on a line
|
|
384
|
+
* with their labels. The FULL value stays in `--json`, which is what anything
|
|
385
|
+
* comparing hashes should be reading. Anything that is not a 64-hex digest is
|
|
386
|
+
* returned untouched, so this is safe to apply to a field that may be null or
|
|
387
|
+
* already short.
|
|
388
|
+
*/
|
|
389
|
+
export function shortHash(hash) {
|
|
390
|
+
return /^[0-9a-f]{64}$/iu.test(hash) ? hash.slice(0, SHORT_HASH_LENGTH) : hash;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* `path` relative to `cwd` when it is inside it, absolute otherwise.
|
|
394
|
+
*
|
|
395
|
+
* The dense-output complaint was largely this: the same 70-character absolute
|
|
396
|
+
* path three times in one report. A path INSIDE the working directory is
|
|
397
|
+
* printed relative because that is how the operator would type it. A path
|
|
398
|
+
* outside stays absolute, because `../../../etc/approval/APPROVAL.md` is worse
|
|
399
|
+
* than the truth in every way.
|
|
400
|
+
*/
|
|
401
|
+
export function relPath(path, cwd) {
|
|
402
|
+
if (path === "" || cwd === "")
|
|
403
|
+
return path;
|
|
404
|
+
const base = cwd.endsWith("/") ? cwd : `${cwd}/`;
|
|
405
|
+
if (path === cwd)
|
|
406
|
+
return ".";
|
|
407
|
+
return path.startsWith(base) ? path.slice(base.length) : path;
|
|
408
|
+
}
|
|
409
|
+
/** How far the body of a runbook is indented under its headline. */
|
|
410
|
+
const RUNBOOK_INDENT = " ";
|
|
411
|
+
/**
|
|
412
|
+
* A refusal the operator has to READ AND ACT ON, rendered as a runbook
|
|
413
|
+
* (APRV-129).
|
|
414
|
+
*
|
|
415
|
+
* ✗ push-rejected the remote refused the push
|
|
416
|
+
* ! [remote rejected] main -> main (protected branch hook declined)
|
|
417
|
+
*
|
|
418
|
+
* YOUR STATE
|
|
419
|
+
* attestation appended at seq 2
|
|
420
|
+
* committed LOCALLY on main, NOT on origin
|
|
421
|
+
*
|
|
422
|
+
* NEXT STEPS
|
|
423
|
+
* 1. git branch policy-amend-2
|
|
424
|
+
* 2. git push -u origin policy-amend-2
|
|
425
|
+
*
|
|
426
|
+
* why a merge commit: … see docs/cli-reference.md
|
|
427
|
+
*
|
|
428
|
+
* The shape comes from the first live `push-rejected`, which said all of this
|
|
429
|
+
* correctly as one paragraph and was read as the single word REJECTED. The
|
|
430
|
+
* register already existed in this file (the token panel, doctor's
|
|
431
|
+
* line-per-check), and this is that register applied to recovery.
|
|
432
|
+
*
|
|
433
|
+
* ONE RUNNABLE COMMAND PER LINE is the load-bearing rule. A step is a command
|
|
434
|
+
* and at most a trailing comment, so the reader can copy down the list without
|
|
435
|
+
* parsing prose for the part that is typed. Rationale is not deleted: it is
|
|
436
|
+
* compressed into `footer` as one line plus a documentation pointer.
|
|
437
|
+
*
|
|
438
|
+
* Structure survives with styling stripped: the headings are their own words,
|
|
439
|
+
* the numbers are literal digits, and the indentation is spaces. NO_COLOR and
|
|
440
|
+
* ASCII mode lose the colour and the glyph spelling, nothing else.
|
|
441
|
+
*
|
|
442
|
+
* Returned as text with no trailing newline, like {@link refusal}.
|
|
443
|
+
*/
|
|
444
|
+
export function runbook(st, code, headline, input) {
|
|
445
|
+
const out = [`${st.glyph("fail")} ${st.fail(code)} ${headline}`];
|
|
446
|
+
for (const line of input.quote ?? [])
|
|
447
|
+
out.push(`${RUNBOOK_INDENT}${st.muted(line)}`);
|
|
448
|
+
const block = (heading, lines) => {
|
|
449
|
+
if (lines.length === 0)
|
|
450
|
+
return;
|
|
451
|
+
out.push("", ` ${st.key(heading)}`);
|
|
452
|
+
for (const line of lines)
|
|
453
|
+
out.push(`${RUNBOOK_INDENT}${line}`);
|
|
454
|
+
};
|
|
455
|
+
block("YOUR STATE", input.state);
|
|
456
|
+
block("NEXT STEPS", input.steps.map((step, index) => {
|
|
457
|
+
// The command is never dressed (rule 3): it is what gets copied.
|
|
458
|
+
const note = step.note === undefined ? "" : ` ${st.muted(`# ${step.note}`)}`;
|
|
459
|
+
return `${index + 1}. ${step.command}${note}`;
|
|
460
|
+
}));
|
|
461
|
+
const footer = input.footer ?? [];
|
|
462
|
+
if (footer.length > 0) {
|
|
463
|
+
out.push("");
|
|
464
|
+
for (const line of footer)
|
|
465
|
+
out.push(` ${line}`);
|
|
466
|
+
}
|
|
467
|
+
return out.join("\n");
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/cli/style.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The token verbs: `approval token` (status) and `approval consume` (plumbing).
|
|
3
|
+
*
|
|
4
|
+
* As everywhere else in this CLI, **no logic lives here.** Minting, verification,
|
|
5
|
+
* the death conditions, and the append are all `core/token.ts`; this file
|
|
6
|
+
* resolves paths and identity, chooses an exit code, and formats output.
|
|
7
|
+
*
|
|
8
|
+
* ## `approval token` reports status; it does not print the token
|
|
9
|
+
*
|
|
10
|
+
* SPEC.md §10.1 lists `approval token <action-key> # print single-use execution
|
|
11
|
+
* token if granted`. Under the settled hash-only design (2026-08-06) the log
|
|
12
|
+
* carries `sha256(token)` and the raw token is returned by the grant call and
|
|
13
|
+
* kept nowhere else — so there is nothing for this verb to fetch. It would have
|
|
14
|
+
* to *store* the secret to print it, which is precisely the property the design
|
|
15
|
+
* exists to avoid.
|
|
16
|
+
*
|
|
17
|
+
* The honest reading, and the one implemented here: the token is printed **by
|
|
18
|
+
* `approval grant`**, once; `approval token` answers "is a live, unspent token
|
|
19
|
+
* outstanding for this action, and what is its digest?". That interpretation is
|
|
20
|
+
* flagged in the task notes for human review — it is a reading of the spec, not
|
|
21
|
+
* a silent amendment of it, and §10.4's normative sentence (adapters MUST
|
|
22
|
+
* require a valid, unexpired, single-use token bound to the idempotency key) is
|
|
23
|
+
* unaffected either way.
|
|
24
|
+
*
|
|
25
|
+
* ## `approval consume` is internal
|
|
26
|
+
*
|
|
27
|
+
* It is the seam APRV-18's `approval run` will wrap: verify, append
|
|
28
|
+
* `execution.started`, hand control to the command. It ships now so the token
|
|
29
|
+
* boundary is testable end to end and so an adapter integration can be driven by
|
|
30
|
+
* hand, and its help text says INTERNAL in the first line.
|
|
31
|
+
*
|
|
32
|
+
* Exit codes are the frozen table, mapped exactly as the gate verbs map them: a
|
|
33
|
+
* refusal ("that token will not execute") is 1, because the command was
|
|
34
|
+
* well-formed and the answer is no; only filesystem facts are 4 and only a
|
|
35
|
+
* crashed write is 3.
|
|
36
|
+
*/
|
|
37
|
+
import type { Streams } from "./main.js";
|
|
38
|
+
export declare function commandToken(argv: string[], streams: Streams, cwd: string): number;
|
|
39
|
+
export declare function commandConsume(argv: string[], streams: Streams, cwd: string): number;
|