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,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The startup preflight (APRV-215): is the code about to run the code that is
|
|
3
|
+
* on origin, and is the build behind it the one the sources describe?
|
|
4
|
+
*
|
|
5
|
+
* ## The four manual steps this replaces
|
|
6
|
+
*
|
|
7
|
+
* Deploying the APRV-212 fix in the primary checkout took `git fetch`, a
|
|
8
|
+
* judgment call about whether the ten upstream commits touched
|
|
9
|
+
* `.approval/log/events.jsonl` while the working log was dirty, `git pull
|
|
10
|
+
* --ff-only`, and `npm run build`. Three of those are typing; the second is the
|
|
11
|
+
* one a human cannot make from `git status` alone, because `git status` does not
|
|
12
|
+
* say what the *upstream range* changed. Carter's standing view is that manual
|
|
13
|
+
* git steps for the human are a defect rather than a runbook, so the judgment
|
|
14
|
+
* moves here and the typing moves with it.
|
|
15
|
+
*
|
|
16
|
+
* ## What it is allowed to do
|
|
17
|
+
*
|
|
18
|
+
* Read git, and at most three writes: a `--ff-only` merge, `npm run build`,
|
|
19
|
+
* and, when the merge refused over an untracked file under `backlog/tasks/`
|
|
20
|
+
* that main already contains, clearing that file out of the way (APRV-300, and
|
|
21
|
+
* the rules it obeys are in {@link reconcileUntrackedTaskFiles}).
|
|
22
|
+
*
|
|
23
|
+
* It never resets, never stashes, never checks anything out, and never touches
|
|
24
|
+
* the working log. That list is not conservatism for its own sake — it is fork 2
|
|
25
|
+
* of 2026-08-20 (APRV-104's notes, and the reason `approval log sync` exists at
|
|
26
|
+
* all): a working `events.jsonl` rewound through git underneath a live appender
|
|
27
|
+
* is two chains where there was one. `--ff-only` cannot rewind a file that
|
|
28
|
+
* upstream did not change, and when upstream DID change it while the working
|
|
29
|
+
* copy is dirty, this module refuses and names `approval log sync`, which is the
|
|
30
|
+
* verb that knows how to do it safely.
|
|
31
|
+
*
|
|
32
|
+
* ## Refusals, not repairs
|
|
33
|
+
*
|
|
34
|
+
* Four codes, each firing for exactly one condition. The first three are
|
|
35
|
+
* evaluated in this order, before anything is written:
|
|
36
|
+
*
|
|
37
|
+
* - `up-preflight-behind-ahead` — `origin/<branch>..HEAD` is non-empty. Local
|
|
38
|
+
* commits exist that the remote does not have. A fast-forward is not the
|
|
39
|
+
* operation for that state, and guessing which side to keep is a decision.
|
|
40
|
+
* - `up-preflight-log-diverged` — the upstream range changes the working log or
|
|
41
|
+
* the queue projection, and the working copy has uncommitted changes to them.
|
|
42
|
+
* This is the case the human could not judge by eye, and it is `approval log
|
|
43
|
+
* sync`'s whole subject.
|
|
44
|
+
* - `up-preflight-dirty-protected` — some OTHER path the upstream range changes
|
|
45
|
+
* is locally modified, so `git merge --ff-only` would refuse to overwrite it.
|
|
46
|
+
* Named separately because the repair is different: look at the edit and
|
|
47
|
+
* decide, or start on the current build with `--no-preflight`.
|
|
48
|
+
*
|
|
49
|
+
* The fourth is answered after the merge has already refused, and only for the
|
|
50
|
+
* one path shape where two checkouts routinely author one file (APRV-300):
|
|
51
|
+
*
|
|
52
|
+
* - `up-preflight-task-file-conflict` — an untracked file under
|
|
53
|
+
* `backlog/tasks/` stopped the fast-forward, and it holds lines the incoming
|
|
54
|
+
* copy does not. See {@link reconcileUntrackedTaskFiles} for what happens
|
|
55
|
+
* when it holds none, and why that is a claim rather than an assumption.
|
|
56
|
+
*
|
|
57
|
+
* `git reset --hard` appears in none of them, and never will: it is the command
|
|
58
|
+
* that turns "your checkout is confusing" into "your work is gone".
|
|
59
|
+
*
|
|
60
|
+
* A fourth refusal reports a write that failed rather than a judgment:
|
|
61
|
+
* `up-preflight-failed` carries the step and, for the build, the exit code
|
|
62
|
+
* `npm run build` came back with. The runtime does not start after it, because the whole point
|
|
63
|
+
* of the rebuild is that a daemon and a hook running compiled-away code is the
|
|
64
|
+
* defect being fixed (APRV-301); `--no-build` is how an operator says they
|
|
65
|
+
* meant to run the stale build anyway.
|
|
66
|
+
*
|
|
67
|
+
* ## A fetch that fails is weather
|
|
68
|
+
*
|
|
69
|
+
* A laptop on a train has no origin to compare against. That is not a reason to
|
|
70
|
+
* refuse to run a gate — the log is local, the policy is local, and the human is
|
|
71
|
+
* holding the phone. A failed fetch is reported as a warning and the runtime
|
|
72
|
+
* starts on the build it has, saying so.
|
|
73
|
+
*
|
|
74
|
+
* ## Two callers, one judgment
|
|
75
|
+
*
|
|
76
|
+
* `approval up` (and therefore `approval daemon run --with-channels`) acts on
|
|
77
|
+
* it; `approval doctor`'s `main-behind-origin` row reports it. Doctor passes
|
|
78
|
+
* `fetch: false`, because a report is not allowed to make a network call the
|
|
79
|
+
* operator did not ask for, and says out loud that its answer is only as fresh
|
|
80
|
+
* as the last fetch.
|
|
81
|
+
*/
|
|
82
|
+
import type { DoctorCheck } from "./doctor.js";
|
|
83
|
+
import { type RunbookStep } from "./style.js";
|
|
84
|
+
/**
|
|
85
|
+
* The installation root: the directory holding `cli.js`, `src/`, `dist/`.
|
|
86
|
+
*
|
|
87
|
+
* Derived from this module's own location rather than from `cwd`, because the
|
|
88
|
+
* question is "is the code I am running stale", and the answer must not change
|
|
89
|
+
* when the operator runs the CLI from somewhere else. Compiled, this file is
|
|
90
|
+
* `<root>/dist/src/cli/preflight.js`, hence three levels up.
|
|
91
|
+
*/
|
|
92
|
+
export declare function installationRoot(): string;
|
|
93
|
+
/** Thrown out of the source walk so a real I/O denial can become exit 4. */
|
|
94
|
+
export declare class ScanError extends Error {
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Is the built CLI at least as new as the sources it was built from?
|
|
98
|
+
*
|
|
99
|
+
* The marker is `dist/src/cli/main.js` — the exact file `cli.js` loads, so the
|
|
100
|
+
* thing being timestamped is the thing that will actually run. It is compared
|
|
101
|
+
* against the newest mtime under `src/` and of `tsconfig.json` (a compiler
|
|
102
|
+
* option change invalidates a build as surely as an edit does).
|
|
103
|
+
*
|
|
104
|
+
* Three shapes are distinguished because their repairs differ:
|
|
105
|
+
*
|
|
106
|
+
* - `cli.js` present, `dist/` absent — the placeholder-binary shape from the
|
|
107
|
+
* ceremony. The loader exists, so the checkout *looks* installed; nothing
|
|
108
|
+
* behind it does.
|
|
109
|
+
* - marker older than sources — the stale-checkout shape. Verbs that exist in
|
|
110
|
+
* `src/` are missing from the binary.
|
|
111
|
+
* - no `src/` at all — a published install, where freshness is not a question
|
|
112
|
+
* that can be asked. `skip`, not a silent pass.
|
|
113
|
+
*
|
|
114
|
+
* Note the self-reference: doctor itself runs *from* `dist`, so a completely
|
|
115
|
+
* absent `dist` means `cli.js` already refused and this code never ran. The
|
|
116
|
+
* check is still implemented for that shape because `--root` can point it at
|
|
117
|
+
* another tree, and because "the binary you ran is not the tree you edited" is
|
|
118
|
+
* exactly the confusion it exists to name.
|
|
119
|
+
*/
|
|
120
|
+
export declare function checkBuildFreshness(root: string): DoctorCheck;
|
|
121
|
+
/**
|
|
122
|
+
* Is `root`'s build older than `root`'s sources?
|
|
123
|
+
*
|
|
124
|
+
* `null` when the question does not apply — a published install with no `src/`,
|
|
125
|
+
* or a tree that is not an installation at all. A caller that wants the full
|
|
126
|
+
* three-way answer asks {@link checkBuildFreshness}; this is the boolean the
|
|
127
|
+
* preflight acts on, and "cannot tell" must not read as "stale" or the preflight
|
|
128
|
+
* would rebuild a tree it has no business compiling.
|
|
129
|
+
*/
|
|
130
|
+
export declare function distStale(root: string): boolean | null;
|
|
131
|
+
/** What the preflight did, or would have done. Frozen: it is a `--json` field. */
|
|
132
|
+
export type PreflightAction =
|
|
133
|
+
/** Already at the remote tip with a build no older than the sources. */
|
|
134
|
+
"none"
|
|
135
|
+
/** Only the build was behind. */
|
|
136
|
+
| "rebuild"
|
|
137
|
+
/** Only the checkout was behind. */
|
|
138
|
+
| "fast-forward"
|
|
139
|
+
/** Both. The ordinary shape after a few days away. */
|
|
140
|
+
| "fast-forward+rebuild"
|
|
141
|
+
/** The build was older than the sources and `--no-build` said to leave it. */
|
|
142
|
+
| "build-skipped"
|
|
143
|
+
/** The checkout was behind, the build is now stale, and `--no-build` said so. */
|
|
144
|
+
| "fast-forward+build-skipped"
|
|
145
|
+
/** A refusal: nothing was touched. */
|
|
146
|
+
| "refused"
|
|
147
|
+
/** `--no-preflight`, or a checkout git cannot answer questions about. */
|
|
148
|
+
| "skipped"
|
|
149
|
+
/** The fetch did not reach the remote. Weather, not a fault. */
|
|
150
|
+
| "fetch-failed";
|
|
151
|
+
/** The machine-readable refusal codes. Frozen public API, distinct by repair. */
|
|
152
|
+
export declare const PREFLIGHT_REFUSAL_CODES: readonly ["up-preflight-behind-ahead", "up-preflight-log-diverged", "up-preflight-dirty-protected", "up-preflight-task-file-conflict"];
|
|
153
|
+
export type PreflightRefusalCode = (typeof PREFLIGHT_REFUSAL_CODES)[number];
|
|
154
|
+
/** The facts, exactly as they are carried on the `--json` stream. */
|
|
155
|
+
export interface PreflightFacts {
|
|
156
|
+
behind_by: number;
|
|
157
|
+
ahead_by: number;
|
|
158
|
+
log_touched: boolean;
|
|
159
|
+
dist_stale: boolean;
|
|
160
|
+
action: PreflightAction;
|
|
161
|
+
/**
|
|
162
|
+
* True when the preflight rebuilt and the runtime therefore re-executed into
|
|
163
|
+
* the fresh build rather than carrying on in the process that dated it.
|
|
164
|
+
*
|
|
165
|
+
* Always false from {@link inspectPreflight}: inspection builds nothing, so
|
|
166
|
+
* it can never be the reason a process was replaced. Doctor's row reads that
|
|
167
|
+
* answer and never this one.
|
|
168
|
+
*/
|
|
169
|
+
reexec: boolean;
|
|
170
|
+
}
|
|
171
|
+
/** A refusal, in the APRV-129 runbook's own vocabulary. */
|
|
172
|
+
export interface PreflightRefusal {
|
|
173
|
+
code: PreflightRefusalCode;
|
|
174
|
+
headline: string;
|
|
175
|
+
state: string[];
|
|
176
|
+
steps: RunbookStep[];
|
|
177
|
+
footer: string[];
|
|
178
|
+
/** The one command a machine caller should run next, unadorned. */
|
|
179
|
+
next: string;
|
|
180
|
+
}
|
|
181
|
+
/** What {@link inspectPreflight} answers. */
|
|
182
|
+
export type PreflightReport = {
|
|
183
|
+
ok: true;
|
|
184
|
+
facts: PreflightFacts;
|
|
185
|
+
/** One sentence, for the human line and for doctor's `detail`. */
|
|
186
|
+
detail: string;
|
|
187
|
+
/** A fetch that did not reach the remote, or `null`. */
|
|
188
|
+
warning: string | null;
|
|
189
|
+
/** The commit a fast-forward would move to, when there is one. */
|
|
190
|
+
target: string | null;
|
|
191
|
+
/** Where the judgment was made. `null` when there was no repository. */
|
|
192
|
+
root: string | null;
|
|
193
|
+
} | {
|
|
194
|
+
ok: false;
|
|
195
|
+
facts: PreflightFacts;
|
|
196
|
+
refusal: PreflightRefusal;
|
|
197
|
+
root: string;
|
|
198
|
+
};
|
|
199
|
+
export interface PreflightInput {
|
|
200
|
+
/** The working log, which also names the repository (as doctor's log-drift does). */
|
|
201
|
+
logPath: string;
|
|
202
|
+
/** The queue projection, the second path a fast-forward must not clobber. */
|
|
203
|
+
queuePath: string;
|
|
204
|
+
/** The installation whose `dist/` is dated against its `src/`. */
|
|
205
|
+
root: string;
|
|
206
|
+
/** Ask the remote, or judge against the last fetch. Doctor passes `false`. */
|
|
207
|
+
fetch: boolean;
|
|
208
|
+
/** Defaults to `origin`. */
|
|
209
|
+
remote?: string;
|
|
210
|
+
/** Defaults to the checked-out branch, or `main` on a detached HEAD. */
|
|
211
|
+
branch?: string;
|
|
212
|
+
/**
|
|
213
|
+
* Run the package's build when `dist/` is older than the sources. Defaults to
|
|
214
|
+
* `true`, which is the whole point of the preflight; `false` is `--no-build`.
|
|
215
|
+
*
|
|
216
|
+
* Opting out changes what the preflight DOES, never what it SAYS: the
|
|
217
|
+
* fast-forward still happens, `dist_stale` still reports the truth, and the
|
|
218
|
+
* action settles on `build-skipped` so neither the human line nor a machine
|
|
219
|
+
* caller can read "started" as "started on the code that was merged".
|
|
220
|
+
*
|
|
221
|
+
* {@link inspectPreflight} ignores it, because inspection builds nothing.
|
|
222
|
+
*/
|
|
223
|
+
build?: boolean;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* The whole judgment, and not one byte of action.
|
|
227
|
+
*
|
|
228
|
+
* Every write the preflight is allowed to make lives in {@link runPreflight};
|
|
229
|
+
* this function reads. That split is what lets doctor report the same facts
|
|
230
|
+
* without any risk of doctor repairing something, which doctor has never done.
|
|
231
|
+
*/
|
|
232
|
+
export declare function inspectPreflight(input: PreflightInput): PreflightReport;
|
|
233
|
+
/** What {@link runPreflight} did, with the facts as they ended up. */
|
|
234
|
+
export type PreflightOutcome = {
|
|
235
|
+
ok: true;
|
|
236
|
+
facts: PreflightFacts;
|
|
237
|
+
detail: string;
|
|
238
|
+
warning: string | null;
|
|
239
|
+
/** Present when a rebuild happened: the caller must become this child. */
|
|
240
|
+
reexec?: ReexecPlan;
|
|
241
|
+
} | {
|
|
242
|
+
ok: false;
|
|
243
|
+
facts: PreflightFacts;
|
|
244
|
+
refusal: PreflightRefusal;
|
|
245
|
+
}
|
|
246
|
+
/** A write the preflight attempted and could not complete. Also a refusal. */
|
|
247
|
+
| {
|
|
248
|
+
ok: false;
|
|
249
|
+
facts: PreflightFacts;
|
|
250
|
+
failed: {
|
|
251
|
+
step: string;
|
|
252
|
+
message: string;
|
|
253
|
+
};
|
|
254
|
+
};
|
|
255
|
+
/**
|
|
256
|
+
* Inspect, then perform at most a fast-forward and a build.
|
|
257
|
+
*
|
|
258
|
+
* `npm run build` is spawned rather than shelled, with the checkout as its cwd,
|
|
259
|
+
* so nothing here depends on the operator's shell or on `npm` being on a
|
|
260
|
+
* particular PATH entry. Its output is discarded and its exit status is the
|
|
261
|
+
* whole answer: a build that fails is a failed preflight, and the runtime does
|
|
262
|
+
* not start on a half-compiled tree.
|
|
263
|
+
*/
|
|
264
|
+
export declare function runPreflight(input: PreflightInput, spawnBuild?: (root: string) => {
|
|
265
|
+
ok: boolean;
|
|
266
|
+
message: string;
|
|
267
|
+
}): PreflightOutcome;
|
|
268
|
+
/** Where the fresh build lives, and what to run it with. */
|
|
269
|
+
export interface ReexecPlan {
|
|
270
|
+
/** `<root>/dist/src/cli/main.js` — resolved from the CHECKOUT, never from `import.meta`. */
|
|
271
|
+
entry: string;
|
|
272
|
+
/** This process's own argv, plus `--no-preflight` so the child cannot loop. */
|
|
273
|
+
argv: string[];
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Run the fresh build in a child process and become its exit code.
|
|
277
|
+
*
|
|
278
|
+
* `stdio: "inherit"` so the child owns the terminal exactly as the parent would
|
|
279
|
+
* have: the daemon's lines, the token panel, a channel's prompts and an
|
|
280
|
+
* operator's ctrl-c all behave as though no re-exec happened. SIGINT and
|
|
281
|
+
* SIGTERM are forwarded rather than handled, because the child is the writer
|
|
282
|
+
* and the shutdown sequence that matters is its own.
|
|
283
|
+
*
|
|
284
|
+
* A child killed by the signal we forwarded exits 0: the operator asked the
|
|
285
|
+
* runtime to stop and it stopped, which is a clean stop under any spelling.
|
|
286
|
+
* Any other signal is reported as an I/O failure, because a writer that
|
|
287
|
+
* vanished is a fact about the machine rather than a decision of the runtime.
|
|
288
|
+
*/
|
|
289
|
+
export declare function reexecFreshBuild(plan: ReexecPlan, cwd: string): Promise<number>;
|
|
290
|
+
/**
|
|
291
|
+
* The preflight's two lines on the event stream.
|
|
292
|
+
*
|
|
293
|
+
* They live here rather than in `cli/up.ts` because `approval daemon run` runs
|
|
294
|
+
* the same preflight and must print the same lines, and `daemon.ts` cannot
|
|
295
|
+
* import `up.ts` (the cycle APRV-110 already routes around with a dynamic
|
|
296
|
+
* import). `UpEvent` includes this union, so the `--json` stream stays one union
|
|
297
|
+
* of additive shapes with no field added to any shape that already existed.
|
|
298
|
+
*/
|
|
299
|
+
export type PreflightEvent = ({
|
|
300
|
+
event: "preflight";
|
|
301
|
+
commit: string | null;
|
|
302
|
+
detail: string;
|
|
303
|
+
} & PreflightFacts) | {
|
|
304
|
+
event: "preflight_warning";
|
|
305
|
+
message: string;
|
|
306
|
+
};
|
|
307
|
+
/** One preflight line as a human sentence, and where it belongs. */
|
|
308
|
+
export declare function describePreflightEvent(event: PreflightEvent): {
|
|
309
|
+
text: string;
|
|
310
|
+
stderr: boolean;
|
|
311
|
+
};
|
|
312
|
+
/** How a caller emits one line. `up` and `daemon run` route theirs identically. */
|
|
313
|
+
export type PreflightEmit = (event: PreflightEvent) => void;
|
|
314
|
+
export interface StartupPreflightInput {
|
|
315
|
+
logPath: string;
|
|
316
|
+
queuePath: string;
|
|
317
|
+
/** The installation whose `dist/` is dated. `null` means "ask this build". */
|
|
318
|
+
root: string | null;
|
|
319
|
+
remote: string | null;
|
|
320
|
+
branch: string | null;
|
|
321
|
+
/** `false` is `--no-build`: fast-forward, but leave a stale `dist/` alone. */
|
|
322
|
+
build: boolean;
|
|
323
|
+
emit: PreflightEmit;
|
|
324
|
+
/** Where a refusal is written. One line under `--json`, a runbook otherwise. */
|
|
325
|
+
refuse: (text: string) => void;
|
|
326
|
+
json: boolean;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Run the preflight, print what it did, and answer whether the caller may start.
|
|
330
|
+
*
|
|
331
|
+
* `ok: false` carries nothing but the fact: everything a human or a machine
|
|
332
|
+
* needs has already been written by `refuse`, and the caller's only remaining
|
|
333
|
+
* job is to return the exit code.
|
|
334
|
+
*/
|
|
335
|
+
export declare function startupPreflight(input: StartupPreflightInput): {
|
|
336
|
+
ok: boolean;
|
|
337
|
+
reexec: ReexecPlan | null;
|
|
338
|
+
};
|
|
339
|
+
/**
|
|
340
|
+
* A preflight refusal, on both surfaces (APRV-129).
|
|
341
|
+
*
|
|
342
|
+
* The human surface is the runbook: the code, the state, one runnable command
|
|
343
|
+
* per numbered line, and the rationale compressed into the footer. The machine
|
|
344
|
+
* surface is one object carrying the stable code and the same facts the success
|
|
345
|
+
* path carries, so a supervisor can branch on `error.code` without reading a
|
|
346
|
+
* word of it.
|
|
347
|
+
*/
|
|
348
|
+
export declare function renderPreflightRefusal(outcome: PreflightOutcome & {
|
|
349
|
+
ok: false;
|
|
350
|
+
}, json: boolean): string;
|
|
351
|
+
/**
|
|
352
|
+
* `main-behind-origin`, doctor's twenty-first row.
|
|
353
|
+
*
|
|
354
|
+
* It makes no network call (`fetch: false`), for the reason every doctor row
|
|
355
|
+
* makes none it was not asked for: doctor is a report, and a report that reached
|
|
356
|
+
* the network to be more accurate would be doing something on its own account.
|
|
357
|
+
* So the answer is as fresh as the last fetch, and the detail says so.
|
|
358
|
+
*
|
|
359
|
+
* `fix` strings stay inside `FIX_COMMAND_PREFIXES`: they name `approval` verbs,
|
|
360
|
+
* never `git`. That constraint predates this row and is the right one — a repair
|
|
361
|
+
* line telling an operator to reset a branch would be doctor making a decision.
|
|
362
|
+
*/
|
|
363
|
+
export declare function checkMainBehindOrigin(logPath: string, queuePath: string, root: string): DoctorCheck;
|