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,376 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What every `approval setup` subcommand shares (SPEC.md §5.2, §10.1; APRV-79).
|
|
3
|
+
*
|
|
4
|
+
* `setup` began as one file with four subcommands in it. APRV-78 added
|
|
5
|
+
* `setup adapter <name>` in a file of its own, and it had to reach back into
|
|
6
|
+
* `cli/setup.ts` for the front matter — which made a cycle: `setup.ts` imports
|
|
7
|
+
* the adapter verb to dispatch it, and the adapter verb imports `front`,
|
|
8
|
+
* `requireHuman` and `SetupDeps` back. ESM tolerates that until the day an
|
|
9
|
+
* initialisation order changes and a `const` at module scope is `undefined` in
|
|
10
|
+
* one direction only. APRV-79 adds a THIRD such file (`setup-channel.ts`), so
|
|
11
|
+
* the cycle is broken by extraction rather than tolerated a second time.
|
|
12
|
+
*
|
|
13
|
+
* The rule this file exists to enforce, asserted in `tests/layering.test.ts`:
|
|
14
|
+
*
|
|
15
|
+
* ```
|
|
16
|
+
* setup.ts ──┬─> setup-adapter.ts ──┐
|
|
17
|
+
* └─> setup-channel.ts ──┴─> setup-common.ts (and no arrow back)
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* What lives here is what more than one of those three needs: the dependency
|
|
21
|
+
* bag, the keystore seam, the flag table, the front matter (`--help`, the paths,
|
|
22
|
+
* the policy, the terminal check), the human-only gate, the `.approval/env`
|
|
23
|
+
* refusal mapping, the service names, and the plaintext-literal offer. What does
|
|
24
|
+
* NOT live here is anything one subcommand alone uses: the chat picker is
|
|
25
|
+
* `setup-channel.ts`'s, the manifest hint generator is `setup-adapter.ts`'s, and
|
|
26
|
+
* the generated-secret path (`storeGeneratedSecret`) stays with `vault` and
|
|
27
|
+
* `sampling` in `setup.ts`.
|
|
28
|
+
*
|
|
29
|
+
* The reasoning for each decision this file encodes — why the token is never
|
|
30
|
+
* handled by this process, why a generated value may reach an argv and an
|
|
31
|
+
* operator's own may not, why every subcommand refuses a non-terminal stdin —
|
|
32
|
+
* is in `cli/setup.ts`'s module doc, which is the family's front page. It is not
|
|
33
|
+
* repeated here; this file is the mechanism.
|
|
34
|
+
*/
|
|
35
|
+
import { randomBytes } from "node:crypto";
|
|
36
|
+
import { spawnSync } from "node:child_process";
|
|
37
|
+
import { userInfo } from "node:os";
|
|
38
|
+
import { isAbsolute, resolve as resolvePathSegments } from "node:path";
|
|
39
|
+
import { HUMAN_ACTOR_ENV, resolveHumanActor } from "../core/attest.js";
|
|
40
|
+
import { defaultSourceRunner, envFilePathFor, } from "../core/env-file.js";
|
|
41
|
+
import { LEGACY_SERVICE_SAMPLING_SECRET, LEGACY_SERVICE_TELEGRAM_TOKEN, LEGACY_SERVICE_VAULT_PASSPHRASE, scopedService, } from "../core/instance.js";
|
|
42
|
+
import { loadPolicy } from "../core/policy-load.js";
|
|
43
|
+
import { telegramChatEnvFor, telegramTokenEnvFor } from "../core/telegram-config.js";
|
|
44
|
+
import { passphraseEnvFor } from "../core/vault.js";
|
|
45
|
+
import { TELEGRAM_DEFAULT_API_BASE } from "../channels/telegram.js";
|
|
46
|
+
import { boolFlag, parseFlags, stringFlag } from "./args.js";
|
|
47
|
+
import { EXIT_INTEGRITY, EXIT_IO, EXIT_OK, EXIT_USAGE } from "./exit-codes.js";
|
|
48
|
+
import { DEFAULT_LOG_PATH, resolvePath } from "./paths.js";
|
|
49
|
+
import { createPrompter } from "./prompt.js";
|
|
50
|
+
import { refusal as renderRefusal, style } from "./style.js";
|
|
51
|
+
import { usageErrorText } from "./usage.js";
|
|
52
|
+
/** The three item names the instance owning `logPath` reads and writes. */
|
|
53
|
+
export function servicesFor(logPath) {
|
|
54
|
+
return {
|
|
55
|
+
telegramToken: scopedService(LEGACY_SERVICE_TELEGRAM_TOKEN, logPath),
|
|
56
|
+
vaultPassphrase: scopedService(LEGACY_SERVICE_VAULT_PASSPHRASE, logPath),
|
|
57
|
+
samplingSecret: scopedService(LEGACY_SERVICE_SAMPLING_SECRET, logPath),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The variable a sampling secret goes into when the policy names none. The
|
|
62
|
+
* value is stored either way; what the operator is then told to do is add the
|
|
63
|
+
* `audit.sampling_secret_env` line, because until the POLICY names a variable
|
|
64
|
+
* the sampler stays off (SPEC.md §5.2) and no amount of environment fixes that.
|
|
65
|
+
*/
|
|
66
|
+
export const DEFAULT_SAMPLING_ENV = "APPROVAL_SAMPLING_SECRET";
|
|
67
|
+
/** The long-poll `getUpdates` asks for, in seconds. */
|
|
68
|
+
export const POLL_TIMEOUT_SECONDS = 10;
|
|
69
|
+
/** doctor's probe timeout, for the calls that answer immediately. */
|
|
70
|
+
export const PROBE_TIMEOUT_MS = 10_000;
|
|
71
|
+
/** The flags every subcommand accepts. One table, so none of them drifts. */
|
|
72
|
+
export const FLAGS = {
|
|
73
|
+
"--policy": "string",
|
|
74
|
+
"--dir": "string",
|
|
75
|
+
"--log": "string",
|
|
76
|
+
"--api-base": "string",
|
|
77
|
+
"--as": "string",
|
|
78
|
+
"--json": "boolean",
|
|
79
|
+
"--help": "boolean",
|
|
80
|
+
"-h": "boolean",
|
|
81
|
+
};
|
|
82
|
+
/** Is `binary` on PATH? An ENOENT from a spawn is the honest way to ask. */
|
|
83
|
+
function onPath(binary, probeArgs) {
|
|
84
|
+
const result = spawnSync(binary, probeArgs, { encoding: "utf8", stdio: "ignore" });
|
|
85
|
+
return result.error?.code !== "ENOENT";
|
|
86
|
+
}
|
|
87
|
+
/** A thrown thing, as a sentence. */
|
|
88
|
+
export function detail(cause) {
|
|
89
|
+
return cause instanceof Error ? cause.message : String(cause);
|
|
90
|
+
}
|
|
91
|
+
/** The real one. Nothing in the test suite constructs it. */
|
|
92
|
+
export const defaultKeystoreRunner = {
|
|
93
|
+
kind() {
|
|
94
|
+
if (process.platform === "darwin" && onPath("security", ["help"]))
|
|
95
|
+
return "keychain";
|
|
96
|
+
// `secret-tool` with no arguments prints its usage and exits non-zero,
|
|
97
|
+
// which is all this probe needs: it touches no keyring and unlocks nothing.
|
|
98
|
+
if (onPath("secret-tool", []))
|
|
99
|
+
return "secret-service";
|
|
100
|
+
return "none";
|
|
101
|
+
},
|
|
102
|
+
storeGenerated(service, value) {
|
|
103
|
+
const backend = defaultKeystoreRunner.kind();
|
|
104
|
+
if (backend === "secret-service") {
|
|
105
|
+
// `secret-tool store` reads the secret from stdin. One canonical form,
|
|
106
|
+
// no fallback needed, and the value is never in an argv.
|
|
107
|
+
const stored = spawnSync("secret-tool", ["store", "--label", service, "approval", service], { encoding: "utf8", input: value });
|
|
108
|
+
if (stored.error !== undefined) {
|
|
109
|
+
return { ok: false, message: `secret-tool could not be run: ${detail(stored.error)}` };
|
|
110
|
+
}
|
|
111
|
+
return stored.status === 0
|
|
112
|
+
? { ok: true, viaArgv: false }
|
|
113
|
+
: { ok: false, message: `secret-tool store exited ${String(stored.status)}` };
|
|
114
|
+
}
|
|
115
|
+
if (backend !== "keychain") {
|
|
116
|
+
return { ok: false, message: "no OS keystore is available on this machine" };
|
|
117
|
+
}
|
|
118
|
+
const account = process.env["USER"] ?? userInfo().username;
|
|
119
|
+
const base = ["add-generic-password", "-a", account, "-s", service, "-U"];
|
|
120
|
+
// Attempt one: the value on `security`'s STDIN. Its `-w` with no argument
|
|
121
|
+
// prompts twice (the value and its confirmation), so it is written twice.
|
|
122
|
+
//
|
|
123
|
+
// `detached: true` is load-bearing (APRV-94). `security -w` reads the
|
|
124
|
+
// secret from the CONTROLLING TTY whenever the process has one and ignores
|
|
125
|
+
// stdin entirely, so from a real terminal the pipe below was never read:
|
|
126
|
+
// Apple's "password data for new item:" prompt appeared to the human,
|
|
127
|
+
// whatever they typed was stored, and only the read-back mismatch and the
|
|
128
|
+
// argv fallback rescued the run (Ctrl-C at that prompt stored nothing at
|
|
129
|
+
// all). A detached child starts its own session with no controlling
|
|
130
|
+
// terminal, so `security` has nothing to prompt on and reads the pipe.
|
|
131
|
+
// spawnSync still waits for it; detaching changes the session, not the
|
|
132
|
+
// synchrony. The option is absent from the sync typings (undocumented for
|
|
133
|
+
// spawnSync, honoured by Node's SyncProcessRunner, verified against Node
|
|
134
|
+
// 24 with a scratch item), hence the widened type. A Node that ignored it
|
|
135
|
+
// would land on exactly the pre-APRV-94 path, and the read-back below is
|
|
136
|
+
// what catches that.
|
|
137
|
+
//
|
|
138
|
+
// Exit status is NOT trusted as proof of a correct store. A probe against a
|
|
139
|
+
// scratch keychain (APRV-74 review) showed `security … -w` with piped stdin
|
|
140
|
+
// exiting 0 while leaving no findable item under the service name (that
|
|
141
|
+
// was this same tty behaviour, seen from the other side). So every attempt
|
|
142
|
+
// is followed by a read-back, and success is "the keystore returns exactly
|
|
143
|
+
// the bytes we generated", nothing less.
|
|
144
|
+
const pipedOptions = {
|
|
145
|
+
encoding: "utf8",
|
|
146
|
+
input: `${value}\n${value}\n`,
|
|
147
|
+
detached: true,
|
|
148
|
+
};
|
|
149
|
+
const piped = spawnSync("security", [...base, "-w"], pipedOptions);
|
|
150
|
+
if (piped.error === undefined && piped.status === 0) {
|
|
151
|
+
const back = defaultKeystoreRunner.read(service);
|
|
152
|
+
if (back.ok && back.value === value)
|
|
153
|
+
return { ok: true, viaArgv: false };
|
|
154
|
+
}
|
|
155
|
+
// Attempt two, for GENERATED VALUES ONLY: the argv form. See `cli/setup.ts`
|
|
156
|
+
// for exactly what is being accepted here and why it is not extended to a
|
|
157
|
+
// value the operator brought with them.
|
|
158
|
+
const argv = spawnSync("security", [...base, "-w", value], { encoding: "utf8" });
|
|
159
|
+
if (argv.error !== undefined) {
|
|
160
|
+
return { ok: false, message: `security could not be run: ${detail(argv.error)}` };
|
|
161
|
+
}
|
|
162
|
+
if (argv.status === 0) {
|
|
163
|
+
const back = defaultKeystoreRunner.read(service);
|
|
164
|
+
if (back.ok && back.value === value)
|
|
165
|
+
return { ok: true, viaArgv: true };
|
|
166
|
+
return {
|
|
167
|
+
ok: false,
|
|
168
|
+
message: `security add-generic-password reported success for service ${JSON.stringify(service)} but the read-back did not return the stored value; nothing this run wrote can be trusted, inspect the keychain by hand`,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
ok: false,
|
|
173
|
+
message: `security add-generic-password exited ${String(argv.status)} for service ${JSON.stringify(service)}`,
|
|
174
|
+
};
|
|
175
|
+
},
|
|
176
|
+
storePrompted(service) {
|
|
177
|
+
const backend = defaultKeystoreRunner.kind();
|
|
178
|
+
if (backend === "keychain") {
|
|
179
|
+
const account = process.env["USER"] ?? userInfo().username;
|
|
180
|
+
// `stdio: "inherit"`: Apple's own prompt owns the terminal for the length
|
|
181
|
+
// of this call, and the value it reads is never seen by this process.
|
|
182
|
+
const result = spawnSync("security", ["add-generic-password", "-a", account, "-s", service, "-U", "-w"], { stdio: "inherit" });
|
|
183
|
+
if (result.error !== undefined) {
|
|
184
|
+
return { ok: false, message: `security could not be run: ${detail(result.error)}` };
|
|
185
|
+
}
|
|
186
|
+
return result.status === 0
|
|
187
|
+
? { ok: true, viaArgv: false }
|
|
188
|
+
: { ok: false, message: `security add-generic-password exited ${String(result.status)}` };
|
|
189
|
+
}
|
|
190
|
+
if (backend === "secret-service") {
|
|
191
|
+
const result = spawnSync("secret-tool", ["store", "--label", service, "approval", service], { stdio: "inherit" });
|
|
192
|
+
if (result.error !== undefined) {
|
|
193
|
+
return { ok: false, message: `secret-tool could not be run: ${detail(result.error)}` };
|
|
194
|
+
}
|
|
195
|
+
return result.status === 0
|
|
196
|
+
? { ok: true, viaArgv: false }
|
|
197
|
+
: { ok: false, message: `secret-tool store exited ${String(result.status)}` };
|
|
198
|
+
}
|
|
199
|
+
return { ok: false, message: "no OS keystore is available on this machine" };
|
|
200
|
+
},
|
|
201
|
+
read(service) {
|
|
202
|
+
const backend = defaultKeystoreRunner.kind();
|
|
203
|
+
const outcome = backend === "keychain"
|
|
204
|
+
? defaultSourceRunner.keychain(service)
|
|
205
|
+
: defaultSourceRunner.secretService(service);
|
|
206
|
+
return outcome.ok ? { ok: true, value: outcome.value } : { ok: false, message: outcome.message };
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
/** The `.approval/env` scheme a backend writes. */
|
|
210
|
+
export function schemeFor(kind, service) {
|
|
211
|
+
if (kind === "keychain")
|
|
212
|
+
return `keychain:${service}`;
|
|
213
|
+
if (kind === "secret-service")
|
|
214
|
+
return `secret-service:${service}`;
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
/** The command an operator runs by hand to see that the item is really there. */
|
|
218
|
+
export function retrievalCommand(kind, service) {
|
|
219
|
+
return kind === "keychain"
|
|
220
|
+
? `security find-generic-password -a "$USER" -s ${service} -w`
|
|
221
|
+
: `secret-tool lookup approval ${service}`;
|
|
222
|
+
}
|
|
223
|
+
/** The command an operator runs by hand to STORE the item, with no value in it. */
|
|
224
|
+
export function storageCommand(kind, service) {
|
|
225
|
+
return kind === "secret-service"
|
|
226
|
+
? `secret-tool store --label ${service} approval ${service}`
|
|
227
|
+
: `security add-generic-password -a "$USER" -s ${service} -U -w`;
|
|
228
|
+
}
|
|
229
|
+
export function usageError(streams, json, message, helpText) {
|
|
230
|
+
if (json)
|
|
231
|
+
streams.err(`${JSON.stringify({ error: { code: "usage", message } })}\n`);
|
|
232
|
+
else
|
|
233
|
+
streams.err(usageErrorText(message, helpText));
|
|
234
|
+
return EXIT_USAGE;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* A refused PROMPT, as one line and no help page (APRV-90).
|
|
238
|
+
*
|
|
239
|
+
* The distinction this function exists to draw: {@link usageError} answers a
|
|
240
|
+
* mangled command line, so it names the shape that line should have had, which
|
|
241
|
+
* is the thing the operator got wrong. A prompt that was aborted or answered
|
|
242
|
+
* wrongly five times is not a command line at all — the operator was in a
|
|
243
|
+
* conversation, the question was on screen, and a usage block under it teaches
|
|
244
|
+
* nothing. Same exit code (the frozen table is unchanged), one line of output,
|
|
245
|
+
* and not even the `--help` pointer a usage error carries.
|
|
246
|
+
*/
|
|
247
|
+
export function promptRefusal(streams, message) {
|
|
248
|
+
streams.err(`approval: ${message}\n`);
|
|
249
|
+
return EXIT_USAGE;
|
|
250
|
+
}
|
|
251
|
+
export function absolute(value, cwd) {
|
|
252
|
+
return isAbsolute(value) ? value : resolvePathSegments(cwd, value);
|
|
253
|
+
}
|
|
254
|
+
export function refusalExitCode(refusal) {
|
|
255
|
+
return refusal.code === "env-file-io" || refusal.code === "env-file-mode"
|
|
256
|
+
? EXIT_IO
|
|
257
|
+
: EXIT_INTEGRITY;
|
|
258
|
+
}
|
|
259
|
+
export function emitRefusal(streams, refusal) {
|
|
260
|
+
streams.err(`${renderRefusal(style(), refusal.code, refusal.message)}\n`);
|
|
261
|
+
return refusalExitCode(refusal);
|
|
262
|
+
}
|
|
263
|
+
/** The policy's `audit.sampling_secret_env`, or `null`. */
|
|
264
|
+
export function samplingEnvName(load) {
|
|
265
|
+
if (!load.ok)
|
|
266
|
+
return null;
|
|
267
|
+
const declared = load.policy.audit?.sampling_secret_env;
|
|
268
|
+
return typeof declared === "string" && declared.length > 0 ? declared : null;
|
|
269
|
+
}
|
|
270
|
+
export function hintContextFor(load, envPath, kind, services) {
|
|
271
|
+
return {
|
|
272
|
+
envPath,
|
|
273
|
+
kind,
|
|
274
|
+
services,
|
|
275
|
+
passphraseEnv: passphraseEnvFor(load),
|
|
276
|
+
samplingEnv: samplingEnvName(load) ?? DEFAULT_SAMPLING_ENV,
|
|
277
|
+
tokenEnv: telegramTokenEnvFor(load),
|
|
278
|
+
chatEnv: telegramChatEnvFor(load),
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* `--help`, the paths, the policy, the terminal check.
|
|
283
|
+
*
|
|
284
|
+
* The terminal check has no `process.stdin.isTTY` in it, deliberately: the real
|
|
285
|
+
* prompter refuses to construct without one ({@link createPrompter}), so "there
|
|
286
|
+
* is no prompter" IS "there is no terminal", and a test that injects one has
|
|
287
|
+
* not bypassed a check that a CI job could also bypass — it has supplied the
|
|
288
|
+
* human's side of the conversation, which is the only thing a test can honestly
|
|
289
|
+
* do here.
|
|
290
|
+
*/
|
|
291
|
+
export function front(subcommand, argv, streams, cwd, deps, helpText, nonInteractiveHint,
|
|
292
|
+
/**
|
|
293
|
+
* Flags this subcommand accepts on top of the shared table (APRV-110).
|
|
294
|
+
*
|
|
295
|
+
* `setup service` is the first subcommand whose subject is not a credential,
|
|
296
|
+
* so it needs words the other four have no use for (a platform, a unit label,
|
|
297
|
+
* a log directory). They are passed in rather than added to {@link FLAGS},
|
|
298
|
+
* because a flag every subcommand silently accepts is a flag an operator will
|
|
299
|
+
* eventually pass to the one that ignores it.
|
|
300
|
+
*/
|
|
301
|
+
extraFlags = {}) {
|
|
302
|
+
const json = argv.includes("--json");
|
|
303
|
+
const parsed = parseFlags(argv, { ...FLAGS, ...extraFlags });
|
|
304
|
+
if (!parsed.ok)
|
|
305
|
+
return { kind: "handled", code: usageError(streams, json, parsed.message, helpText) };
|
|
306
|
+
if (boolFlag(parsed.flags, "--help") || boolFlag(parsed.flags, "-h")) {
|
|
307
|
+
streams.out(`${helpText}\n`);
|
|
308
|
+
return { kind: "handled", code: EXIT_OK };
|
|
309
|
+
}
|
|
310
|
+
const logPath = resolvePath(stringFlag(parsed.flags, "--log"), DEFAULT_LOG_PATH, cwd);
|
|
311
|
+
const envPath = envFilePathFor(logPath);
|
|
312
|
+
const policyFlag = stringFlag(parsed.flags, "--policy");
|
|
313
|
+
const dirFlag = stringFlag(parsed.flags, "--dir");
|
|
314
|
+
const load = loadPolicy(policyFlag !== null
|
|
315
|
+
? { file: absolute(policyFlag, cwd) }
|
|
316
|
+
: { dir: dirFlag === null ? cwd : absolute(dirFlag, cwd) });
|
|
317
|
+
const keystore = deps.keystore ?? defaultKeystoreRunner;
|
|
318
|
+
const kind = keystore.kind();
|
|
319
|
+
const services = servicesFor(logPath);
|
|
320
|
+
const prompter = deps.prompter ?? createPrompter(streams);
|
|
321
|
+
if (json || prompter === null) {
|
|
322
|
+
streams.err(`approval: \`approval setup ${subcommand}\` is interactive and ${json
|
|
323
|
+
? "--json was given"
|
|
324
|
+
: "stdin is not a terminal"}. Nothing was written.\n\nIdentity is declared, not proved, so establishing it — and the credentials beside it — is an act of the human at the machine, not something a pipe or a CI job can do. The non-interactive path is explicit, and here it is:\n\n${nonInteractiveHint(hintContextFor(load, envPath, kind, services))}\n\nThen check it with \`approval env --check\`, which prints no values.\n`);
|
|
325
|
+
return { kind: "handled", code: EXIT_USAGE };
|
|
326
|
+
}
|
|
327
|
+
return {
|
|
328
|
+
kind: "run",
|
|
329
|
+
flags: parsed.flags,
|
|
330
|
+
positionals: parsed.positionals,
|
|
331
|
+
prompter,
|
|
332
|
+
keystore,
|
|
333
|
+
backend: kind,
|
|
334
|
+
load,
|
|
335
|
+
logPath,
|
|
336
|
+
envPath,
|
|
337
|
+
services,
|
|
338
|
+
apiBase: deps.apiBase ?? stringFlag(parsed.flags, "--api-base") ?? TELEGRAM_DEFAULT_API_BASE,
|
|
339
|
+
generate: deps.generate ?? (() => randomBytes(32).toString("base64")),
|
|
340
|
+
pollTimeoutSeconds: deps.pollTimeoutSeconds ?? POLL_TIMEOUT_SECONDS,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
/** The human-only rule, spelled exactly as `vault set` spells it. */
|
|
344
|
+
export function requireHuman(flags, streams, helpText, verb) {
|
|
345
|
+
const asFlag = stringFlag(flags, "--as");
|
|
346
|
+
const actor = resolveHumanActor(asFlag === null ? {} : { actor: asFlag });
|
|
347
|
+
if (actor !== null)
|
|
348
|
+
return { ok: true, actor };
|
|
349
|
+
return {
|
|
350
|
+
ok: false,
|
|
351
|
+
code: usageError(streams, false, asFlag === null
|
|
352
|
+
? `no human identity: set ${HUMAN_ACTOR_ENV}=human:<id> or pass --as human:<id>. \`approval setup identity\` is the verb that establishes it, and it is the one subcommand exempt from this check`
|
|
353
|
+
: `--as expects a human identity matching human:<id>, got ${JSON.stringify(asFlag)}; \`approval setup ${verb}\` stores a credential and is human-only`, helpText),
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
// ---------------------------------------------------------------------------
|
|
357
|
+
// The plaintext-literal offer
|
|
358
|
+
// ---------------------------------------------------------------------------
|
|
359
|
+
/**
|
|
360
|
+
* The plaintext-literal offer, for a machine with no keystore.
|
|
361
|
+
*
|
|
362
|
+
* An explicit typed `yes` — not `y`, not Enter — because the whole content of
|
|
363
|
+
* this question is that the operator understood it. The warning is worded to
|
|
364
|
+
* match what `approval env --check` will print at them on every run afterwards,
|
|
365
|
+
* so the two never read as different claims about the same file.
|
|
366
|
+
*/
|
|
367
|
+
export function offerLiteral(streams, prompter, envPath, what) {
|
|
368
|
+
streams.out(`\nThis machine has no OS keystore this runtime can drive: \`security\` (macOS) and\n\`secret-tool\` (Linux, libsecret) are both absent, so there is nowhere to put the\n${what} except ${envPath} itself, in plaintext.\n\nThat is PERMITTED and it is always reported: \`approval env --check\` will list the\nvariable under PLAINTEXT for as long as the line exists. The file is mode 0600 and\n\`approval init\` gitignores it. A rule people route around is not a control — the\nalternative to writing it here is writing it into a shell profile, where nothing in\nthis runtime can see it to tell you.\n\n`);
|
|
369
|
+
const answer = prompter.readLine(`type \`yes\` in full to write it in plaintext: `);
|
|
370
|
+
const typed = (answer ?? "").trim();
|
|
371
|
+
if (typed === "yes")
|
|
372
|
+
return true;
|
|
373
|
+
streams.out("not confirmed: nothing was stored and nothing was written\n");
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
//# sourceMappingURL=setup-common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-common.js","sourceRoot":"","sources":["../../../src/cli/setup-common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAA2C,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,cAAc,GAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAC/B,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAyB,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,yBAAyB,EAAsB,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA2B5C,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO;QACL,aAAa,EAAE,aAAa,CAAC,6BAA6B,EAAE,OAAO,CAAC;QACpE,eAAe,EAAE,aAAa,CAAC,+BAA+B,EAAE,OAAO,CAAC;QACxE,cAAc,EAAE,aAAa,CAAC,8BAA8B,EAAE,OAAO,CAAC;KACvE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,KAAK,GAA6B;IAC7C,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,QAAQ;IACtB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AA8CF,4EAA4E;AAC5E,SAAS,MAAM,CAAC,MAAc,EAAE,SAAmB;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnF,OAAQ,MAAM,CAAC,KAA2C,EAAE,IAAI,KAAK,QAAQ,CAAC;AAChF,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,IAAI;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC;QACrF,uEAAuE;QACvE,4EAA4E;QAC5E,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,OAAe,EAAE,KAAa;QAC3C,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;YACjC,uEAAuE;YACvE,yDAAyD;YACzD,MAAM,MAAM,GAAG,SAAS,CACtB,aAAa,EACb,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAClD,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CACnC,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACzF,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;gBACxB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAClF,CAAC;QACD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;QAC/E,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC,QAAQ,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAE1E,0EAA0E;QAC1E,0EAA0E;QAC1E,EAAE;QACF,sEAAsE;QACtE,2EAA2E;QAC3E,yEAAyE;QACzE,sEAAsE;QACtE,0EAA0E;QAC1E,yEAAyE;QACzE,oEAAoE;QACpE,uEAAuE;QACvE,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,qBAAqB;QACrB,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,yCAAyC;QACzC,MAAM,YAAY,GAA+D;YAC/E,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,GAAG,KAAK,KAAK,KAAK,IAAI;YAC7B,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC3E,CAAC;QAED,4EAA4E;QAC5E,0EAA0E;QAC1E,wCAAwC;QACxC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACpF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,8DAA8D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,yHAAyH;aACxN,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,wCAAwC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;SAC9G,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC,QAAQ,CAAC;YAC3D,0EAA0E;YAC1E,sEAAsE;YACtE,MAAM,MAAM,GAAG,SAAS,CACtB,UAAU,EACV,CAAC,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAClE,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACtF,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;gBACxB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,wCAAwC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9F,CAAC;QACD,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,SAAS,CACtB,aAAa,EACb,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAClD,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACzF,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;gBACxB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAClF,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;IAC/E,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GACX,OAAO,KAAK,UAAU;YACpB,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvC,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACnG,CAAC;CACF,CAAC;AAEF,mDAAmD;AACnD,MAAM,UAAU,SAAS,CAAC,IAAkB,EAAE,OAAe;IAC3D,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,YAAY,OAAO,EAAE,CAAC;IACtD,IAAI,IAAI,KAAK,gBAAgB;QAAE,OAAO,kBAAkB,OAAO,EAAE,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,IAAkB,EAAE,OAAe;IAClE,OAAO,IAAI,KAAK,UAAU;QACxB,CAAC,CAAC,gDAAgD,OAAO,KAAK;QAC9D,CAAC,CAAC,+BAA+B,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,IAAkB,EAAE,OAAe;IAChE,OAAO,IAAI,KAAK,gBAAgB;QAC9B,CAAC,CAAC,6BAA6B,OAAO,aAAa,OAAO,EAAE;QAC5D,CAAC,CAAC,+CAA+C,OAAO,QAAQ,CAAC;AACrE,CAAC;AAiDD,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,IAAa,EACb,OAAe,EACf,QAAgB;IAEhB,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;;QAC/E,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,OAAe;IAC7D,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,IAAI,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,GAAW;IACjD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAuB;IACrD,OAAO,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe;QACvE,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,cAAc,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB,EAAE,OAAuB;IACnE,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AA6CD,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACxD,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAsB,EACtB,OAAe,EACf,IAAkB,EAClB,QAAsB;IAEtB,OAAO;QACL,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,aAAa,EAAE,gBAAgB,CAAC,IAAI,CAAC;QACrC,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,oBAAoB;QAC1D,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC;QACnC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC;KAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CACnB,UAAkB,EAClB,IAAc,EACd,OAAgB,EAChB,GAAW,EACX,IAAe,EACf,QAAgB,EAChB,kBAAoD;AACpD;;;;;;;;GAQG;AACH,UAAU,GAA6B,EAAE;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;IACtG,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,CACrB,UAAU,KAAK,IAAI;QACjB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;QACrC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAC7D,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,qBAAqB,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAE1D,IAAI,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CACT,8BAA8B,UAAU,yBACtC,IAAI;YACF,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,yBACN,6PAA6P,kBAAkB,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,4EAA4E,CAC3Y,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ;QACR,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,OAAO;QACP,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,yBAAyB;QAC5F,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,oBAAoB;KACpE,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAC1B,KAAuC,EACvC,OAAgB,EAChB,QAAgB,EAChB,IAAY;IAEZ,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/C,OAAO;QACL,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,UAAU,CACd,OAAO,EACP,KAAK,EACL,MAAM,KAAK,IAAI;YACb,CAAC,CAAC,0BAA0B,eAAe,uJAAuJ;YAClM,CAAC,CAAC,0DAA0D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,IAAI,0CAA0C,EACxJ,QAAQ,CACT;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,QAAkB,EAClB,OAAe,EACf,IAAY;IAEZ,OAAO,CAAC,GAAG,CACT,2KAA2K,IAAI,WAAW,OAAO,sZAAsZ,CACxlB,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC"}
|