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,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attaching the model gloss to a request, for every channel that renders one
|
|
3
|
+
* (APRV-144, APRV-164, APRV-197).
|
|
4
|
+
*
|
|
5
|
+
* `cli/gloss.ts` decides how a sentence is obtained; this decides which
|
|
6
|
+
* material is worth asking about and where the answer is hung. It lived inside
|
|
7
|
+
* `cli/channel-telegram.ts` until APRV-197, when a second surface needed it:
|
|
8
|
+
* Carter, deciding requests on the CLI channel, read the raw claimed summary
|
|
9
|
+
* and nothing else, because the only code that had ever attached a gloss was
|
|
10
|
+
* the Telegram listener. One reading aid implemented twice would be two reading
|
|
11
|
+
* aids that drift, so the listener and the terminal walker now call the same
|
|
12
|
+
* function over the same payload views.
|
|
13
|
+
*
|
|
14
|
+
* The safety argument is unchanged and belongs here rather than at either call
|
|
15
|
+
* site. This runs at RENDER time, on a `ChannelRequest` the tagger has already
|
|
16
|
+
* finished building: the gate resolved the class, the budgets and the payload
|
|
17
|
+
* binding without this field existing, the payload hash was computed over bytes
|
|
18
|
+
* that do not contain it, and the log will record a decision that never
|
|
19
|
+
* mentions it. Nothing anywhere branches on the content of a gloss; the only
|
|
20
|
+
* thing that turns on it is whether one more line appears.
|
|
21
|
+
*
|
|
22
|
+
* What APRV-197 adds is an {@link GlossOutcome}. Absence used to be silent by
|
|
23
|
+
* design, and that was right for one request and wrong for a thousand: with the
|
|
24
|
+
* timeout set where APRV-144 set it, the subprocess missed EVERY time and the
|
|
25
|
+
* result was indistinguishable from the feature never having shipped. The
|
|
26
|
+
* outcome is returned so a caller can count, and count is all it is for — no
|
|
27
|
+
* caller retries, waits longer, or renders anything different because of it.
|
|
28
|
+
*/
|
|
29
|
+
import { changePayloadView, commandPayloadView, emailPayloadFields, } from "../channels/payload-view.js";
|
|
30
|
+
import { claimed } from "../channels/contract.js";
|
|
31
|
+
import { glossAuthor, glossFor, GLOSS_EDIT_INSTRUCTION, GLOSS_EMAIL_INSTRUCTION, GLOSS_INSTRUCTION, } from "./gloss.js";
|
|
32
|
+
/**
|
|
33
|
+
* The request, plus a model's one-sentence gloss of its payload when one can be
|
|
34
|
+
* had.
|
|
35
|
+
*
|
|
36
|
+
* Every payload kind the renderer can read gets one (APRV-164): a command, a
|
|
37
|
+
* file change, an email. The kind is derived exactly as the WYSIWYS rendering
|
|
38
|
+
* derives it, from the structure of the bytes, so the sentence is about the
|
|
39
|
+
* material the approver is being shown and the two can never be about different
|
|
40
|
+
* payloads. An opaque payload gets none.
|
|
41
|
+
*
|
|
42
|
+
* Returns the request UNCHANGED for every flavour of "no answer". Losing the
|
|
43
|
+
* gloss costs one line on a prompt, which is why no failure here is allowed to
|
|
44
|
+
* cost anything more.
|
|
45
|
+
*/
|
|
46
|
+
export function attachGloss(request, run) {
|
|
47
|
+
const asked = glossMaterial(request.fullPayload.value?.value);
|
|
48
|
+
if (asked === null)
|
|
49
|
+
return { request, outcome: "opaque" };
|
|
50
|
+
const result = glossFor(asked.instruction, asked.material, run);
|
|
51
|
+
if (result === null)
|
|
52
|
+
return { request, outcome: "absent" };
|
|
53
|
+
return {
|
|
54
|
+
request: { ...request, gloss: claimed(result.text, glossAuthor(result)) },
|
|
55
|
+
outcome: "attached",
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The instruction and the material for one payload, or `null` for an opaque one.
|
|
60
|
+
*
|
|
61
|
+
* The material is assembled from the same structural views the canonical
|
|
62
|
+
* rendering is built from, and it is deliberately plain: labelled lines and the
|
|
63
|
+
* text itself, in the order the prompt shows them. Nothing here reads a
|
|
64
|
+
* self-declared kind field, for the reason `core/wysiwys.ts` gives at length —
|
|
65
|
+
* a payload that chose its own presentation would have chosen its own gloss too.
|
|
66
|
+
*/
|
|
67
|
+
export function glossMaterial(value) {
|
|
68
|
+
const command = commandPayloadView(value);
|
|
69
|
+
if (command !== null) {
|
|
70
|
+
// Byte for byte what APRV-144 sent: the command alone, under the command
|
|
71
|
+
// instruction. A prompt that drifted here would change a shipped behaviour
|
|
72
|
+
// for no reason beyond the refactor that touched it.
|
|
73
|
+
return { instruction: GLOSS_INSTRUCTION, material: command.command };
|
|
74
|
+
}
|
|
75
|
+
const change = changePayloadView(value);
|
|
76
|
+
if (change !== null) {
|
|
77
|
+
const labels = change.labels.map((field) => `${field.label}: ${field.text}`);
|
|
78
|
+
const body = change.before === null
|
|
79
|
+
? ["new content:", change.after]
|
|
80
|
+
: ["before:", change.before, "after:", change.after];
|
|
81
|
+
return { instruction: GLOSS_EDIT_INSTRUCTION, material: [...labels, ...body].join("\n") };
|
|
82
|
+
}
|
|
83
|
+
const email = emailPayloadFields(value);
|
|
84
|
+
if (email !== null) {
|
|
85
|
+
return {
|
|
86
|
+
instruction: GLOSS_EMAIL_INSTRUCTION,
|
|
87
|
+
material: email.map((field) => `${field.label}: ${field.text}`).join("\n"),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The stderr line that turns chronic silence into a visible fault (APRV-197 #3).
|
|
94
|
+
*
|
|
95
|
+
* One line, at the end of a walk or a dispatch cycle, and only when a model was
|
|
96
|
+
* actually asked and did not answer. It names the ceiling because that is the
|
|
97
|
+
* number an operator can act on, and it says the decision is unaffected because
|
|
98
|
+
* the first thing a reader of an approval tool's stderr needs to know is
|
|
99
|
+
* whether the thing they just approved was compromised by this. It was not:
|
|
100
|
+
* nothing downstream of a gloss exists.
|
|
101
|
+
*/
|
|
102
|
+
export function glossAbsenceLine(surface, absent, asked, timeoutMs) {
|
|
103
|
+
return (`approval: ${surface}: ${absent} of ${asked} request(s) got no model gloss ` +
|
|
104
|
+
`(the \`claude -p\` subprocess was missing, failed, or exceeded ${timeoutMs}ms) — ` +
|
|
105
|
+
"the prompts are unaffected; a gloss is a reading aid the runtime never reads\n");
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=gloss-attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gloss-attach.js","sourceRoot":"","sources":["../../../src/cli/gloss-attach.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-group supervisor for the synchronous Codex gloss runner (APRV-254).
|
|
3
|
+
*
|
|
4
|
+
* The public runner waits synchronously because GlossRunner is synchronous.
|
|
5
|
+
* This small child can still supervise Codex asynchronously, which lets it
|
|
6
|
+
* terminate the complete detached process group when the CLI times out or
|
|
7
|
+
* exceeds its output allowance. It never prints stderr or process errors.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-group supervisor for the synchronous Codex gloss runner (APRV-254).
|
|
3
|
+
*
|
|
4
|
+
* The public runner waits synchronously because GlossRunner is synchronous.
|
|
5
|
+
* This small child can still supervise Codex asynchronously, which lets it
|
|
6
|
+
* terminate the complete detached process group when the CLI times out or
|
|
7
|
+
* exceeds its output allowance. It never prints stderr or process errors.
|
|
8
|
+
*/
|
|
9
|
+
import { spawn } from "node:child_process";
|
|
10
|
+
const OUTPUT_LIMIT_BYTES = 64 * 1024;
|
|
11
|
+
const EXIT_TIMEOUT = 124;
|
|
12
|
+
const EXIT_OUTPUT_LIMIT = 125;
|
|
13
|
+
const EXIT_SPAWN = 126;
|
|
14
|
+
function positiveInteger(raw) {
|
|
15
|
+
if (raw === undefined || !/^\d+$/u.test(raw))
|
|
16
|
+
return null;
|
|
17
|
+
const value = Number(raw);
|
|
18
|
+
return Number.isSafeInteger(value) && value > 0 ? value : null;
|
|
19
|
+
}
|
|
20
|
+
const executable = process.argv[2];
|
|
21
|
+
const timeoutMs = positiveInteger(process.argv[3]);
|
|
22
|
+
const cwd = process.argv[4];
|
|
23
|
+
const instruction = process.argv[5];
|
|
24
|
+
const argsJson = process.argv[6];
|
|
25
|
+
if (executable === undefined ||
|
|
26
|
+
timeoutMs === null ||
|
|
27
|
+
cwd === undefined ||
|
|
28
|
+
instruction === undefined ||
|
|
29
|
+
argsJson === undefined) {
|
|
30
|
+
process.exit(EXIT_SPAWN);
|
|
31
|
+
}
|
|
32
|
+
let prefixArgs;
|
|
33
|
+
try {
|
|
34
|
+
const parsed = JSON.parse(argsJson);
|
|
35
|
+
if (!Array.isArray(parsed) || parsed.some((value) => typeof value !== "string")) {
|
|
36
|
+
process.exit(EXIT_SPAWN);
|
|
37
|
+
}
|
|
38
|
+
prefixArgs = parsed;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
process.exit(EXIT_SPAWN);
|
|
42
|
+
}
|
|
43
|
+
let child = null;
|
|
44
|
+
let terminal = false;
|
|
45
|
+
function killTree() {
|
|
46
|
+
const pid = child?.pid;
|
|
47
|
+
if (pid === undefined)
|
|
48
|
+
return;
|
|
49
|
+
try {
|
|
50
|
+
if (process.platform === "win32") {
|
|
51
|
+
const killer = spawn("taskkill", ["/pid", String(pid), "/t", "/f"], {
|
|
52
|
+
stdio: "ignore",
|
|
53
|
+
windowsHide: true,
|
|
54
|
+
});
|
|
55
|
+
killer.unref();
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
process.kill(-pid, "SIGKILL");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
try {
|
|
63
|
+
child?.kill("SIGKILL");
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// The process has already exited.
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function finish(code) {
|
|
71
|
+
if (terminal)
|
|
72
|
+
return;
|
|
73
|
+
terminal = true;
|
|
74
|
+
clearTimeout(timer);
|
|
75
|
+
if (code !== 0)
|
|
76
|
+
killTree();
|
|
77
|
+
process.exitCode = code;
|
|
78
|
+
}
|
|
79
|
+
process.on("SIGTERM", () => {
|
|
80
|
+
killTree();
|
|
81
|
+
process.exit(EXIT_TIMEOUT);
|
|
82
|
+
});
|
|
83
|
+
process.on("SIGINT", () => {
|
|
84
|
+
killTree();
|
|
85
|
+
process.exit(EXIT_TIMEOUT);
|
|
86
|
+
});
|
|
87
|
+
const chunks = [];
|
|
88
|
+
let outputBytes = 0;
|
|
89
|
+
let overflow = false;
|
|
90
|
+
try {
|
|
91
|
+
child = spawn(executable, [...prefixArgs, instruction], {
|
|
92
|
+
cwd,
|
|
93
|
+
detached: process.platform !== "win32",
|
|
94
|
+
env: process.env,
|
|
95
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
96
|
+
windowsHide: true,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
process.exit(EXIT_SPAWN);
|
|
101
|
+
}
|
|
102
|
+
const timer = setTimeout(() => {
|
|
103
|
+
killTree();
|
|
104
|
+
finish(EXIT_TIMEOUT);
|
|
105
|
+
}, timeoutMs);
|
|
106
|
+
timer.unref();
|
|
107
|
+
child.on("error", () => finish(EXIT_SPAWN));
|
|
108
|
+
child.stdin?.on("error", () => finish(EXIT_SPAWN));
|
|
109
|
+
child.stdout?.on("data", (chunk) => {
|
|
110
|
+
if (overflow)
|
|
111
|
+
return;
|
|
112
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
113
|
+
outputBytes += bytes.byteLength;
|
|
114
|
+
if (outputBytes > OUTPUT_LIMIT_BYTES) {
|
|
115
|
+
overflow = true;
|
|
116
|
+
killTree();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
chunks.push(bytes);
|
|
120
|
+
});
|
|
121
|
+
child.on("close", (code, signal) => {
|
|
122
|
+
if (terminal)
|
|
123
|
+
return;
|
|
124
|
+
if (overflow) {
|
|
125
|
+
finish(EXIT_OUTPUT_LIMIT);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (signal !== null || code === null) {
|
|
129
|
+
finish(EXIT_SPAWN);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (code !== 0) {
|
|
133
|
+
finish(code > 0 && code < 124 ? code : 123);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// A launcher may exit successfully while leaving native descendants alive.
|
|
137
|
+
// The detached group belongs solely to this one-shot invocation.
|
|
138
|
+
killTree();
|
|
139
|
+
const output = Buffer.concat(chunks);
|
|
140
|
+
process.stdout.write(output, (error) => finish(error == null ? 0 : EXIT_SPAWN));
|
|
141
|
+
});
|
|
142
|
+
let input = Buffer.alloc(0);
|
|
143
|
+
process.stdin.on("data", (chunk) => {
|
|
144
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
145
|
+
input = Buffer.concat([input, bytes]);
|
|
146
|
+
});
|
|
147
|
+
process.stdin.on("end", () => child?.stdin?.end(input));
|
|
148
|
+
process.stdin.resume();
|
|
149
|
+
//# sourceMappingURL=gloss-codex-child.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gloss-codex-child.js","sourceRoot":"","sources":["../../../src/cli/gloss-codex-child.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Provider-specific Codex CLI runner for optional model glosses (APRV-254). */
|
|
2
|
+
import { type GlossRunner } from "./gloss.js";
|
|
3
|
+
export type CodexGlossUnavailableReason = "invalid-model" | "invalid-prompt" | "unsupported-platform" | "spawn-error" | "timeout" | "output-too-large" | "nonzero-exit" | "invalid-output" | "unsafe-output" | "cleanup-failed";
|
|
4
|
+
export interface CodexGlossRunnerOptions {
|
|
5
|
+
/** Test seam. Production callers omit this and run the installed `codex`. */
|
|
6
|
+
readonly executable?: string;
|
|
7
|
+
/** Test seam. Production callers always receive the shared 20-second cap. */
|
|
8
|
+
readonly timeoutMs?: number;
|
|
9
|
+
/** Receives only a fixed reason code, never subprocess output. */
|
|
10
|
+
readonly diagnostic?: (reason: CodexGlossUnavailableReason) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Build a synchronous Codex gloss runner using the CLI's saved authentication.
|
|
14
|
+
*
|
|
15
|
+
* The invocation starts in a new empty directory with a named read-only
|
|
16
|
+
* permission profile, command network disabled, project instructions
|
|
17
|
+
* suppressed, host skill discovery skipped, and selected known
|
|
18
|
+
* tool/integration features disabled.
|
|
19
|
+
* Codex 0.152.1 has no universal deny-all tool switch: host-managed and global
|
|
20
|
+
* base instructions still apply, the under-development discovery switch is
|
|
21
|
+
* version-specific, and the CLI owns any auth-state maintenance.
|
|
22
|
+
* The caller must present that practical isolation boundary to the operator.
|
|
23
|
+
*/
|
|
24
|
+
export declare function codexGlossRunnerFor(model: string, passphraseEnv?: string | null, options?: CodexGlossRunnerOptions): GlossRunner;
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/** Provider-specific Codex CLI runner for optional model glosses (APRV-254). */
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { childEnvironment } from "../core/child-env.js";
|
|
8
|
+
import { GLOSS_EDIT_INSTRUCTION, GLOSS_EMAIL_INSTRUCTION, GLOSS_INSTRUCTION, GLOSS_MAX_INPUT_CHARS, GLOSS_TRUNCATION_NOTE, GLOSS_TIMEOUT_MS, normalizeGlossModelId, } from "./gloss.js";
|
|
9
|
+
const OUTPUT_LIMIT_BYTES = 64 * 1024;
|
|
10
|
+
const HELPER_PATH = fileURLToPath(new URL("./gloss-codex-child.js", import.meta.url));
|
|
11
|
+
const SUPERVISOR_GRACE_MS = 250;
|
|
12
|
+
const CODEX_ENABLED_FEATURES = ["skip_host_skill_discovery"];
|
|
13
|
+
const CODEX_DISABLED_FEATURES = [
|
|
14
|
+
"apps",
|
|
15
|
+
"auth_elicitation",
|
|
16
|
+
"browser_use",
|
|
17
|
+
"browser_use_external",
|
|
18
|
+
"browser_use_full_cdp_access",
|
|
19
|
+
"code_mode",
|
|
20
|
+
"code_mode_host",
|
|
21
|
+
"computer_use",
|
|
22
|
+
"goals",
|
|
23
|
+
"hooks",
|
|
24
|
+
"image_generation",
|
|
25
|
+
"in_app_browser",
|
|
26
|
+
"in_app_local_automation",
|
|
27
|
+
"memories",
|
|
28
|
+
"multi_agent",
|
|
29
|
+
"multi_agent_v2",
|
|
30
|
+
"plugins",
|
|
31
|
+
"remote_plugin",
|
|
32
|
+
"skill_mcp_dependency_install",
|
|
33
|
+
"skill_search",
|
|
34
|
+
"shell_tool",
|
|
35
|
+
"sleep_tool",
|
|
36
|
+
"tool_call_mcp_elicitation",
|
|
37
|
+
"tool_suggest",
|
|
38
|
+
"unified_exec",
|
|
39
|
+
"view_image",
|
|
40
|
+
"workspace_dependencies",
|
|
41
|
+
];
|
|
42
|
+
const CODEX_CONFIG = [
|
|
43
|
+
'project_doc_max_bytes=0',
|
|
44
|
+
'project_doc_fallback_filenames=[]',
|
|
45
|
+
'project_root_markers=[]',
|
|
46
|
+
// Enabling skip_host_skill_discovery otherwise emits Codex's known
|
|
47
|
+
// under-development-feature notice as an error item before the turn. This
|
|
48
|
+
// suppresses that startup notice only; every emitted JSONL error remains a
|
|
49
|
+
// hard failure in parseSuccessfulAnswer.
|
|
50
|
+
'suppress_unstable_features_warning=true',
|
|
51
|
+
'approval_policy="never"',
|
|
52
|
+
'default_permissions="gloss"',
|
|
53
|
+
'permissions.gloss.filesystem={":minimal"="read",":workspace_roots"={"."="read"}}',
|
|
54
|
+
'permissions.gloss.network.enabled=false',
|
|
55
|
+
'web_search="disabled"',
|
|
56
|
+
'mcp_servers={}',
|
|
57
|
+
'hooks={}',
|
|
58
|
+
'plugins={}',
|
|
59
|
+
'history.persistence="none"',
|
|
60
|
+
'check_for_update_on_startup=false',
|
|
61
|
+
'analytics.enabled=false',
|
|
62
|
+
'otel.exporter="none"',
|
|
63
|
+
'notify=[]',
|
|
64
|
+
];
|
|
65
|
+
const KNOWN_INSTRUCTIONS = new Set([
|
|
66
|
+
GLOSS_INSTRUCTION,
|
|
67
|
+
GLOSS_EDIT_INSTRUCTION,
|
|
68
|
+
GLOSS_EMAIL_INSTRUCTION,
|
|
69
|
+
]);
|
|
70
|
+
function report(options, reason) {
|
|
71
|
+
try {
|
|
72
|
+
options.diagnostic?.(reason);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Diagnostics cannot make a reading aid load-bearing.
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
function splitPrompt(prompt) {
|
|
80
|
+
const separator = prompt.indexOf("\n\n");
|
|
81
|
+
if (separator < 0)
|
|
82
|
+
return null;
|
|
83
|
+
const instruction = prompt.slice(0, separator);
|
|
84
|
+
if (!KNOWN_INSTRUCTIONS.has(instruction))
|
|
85
|
+
return null;
|
|
86
|
+
const material = prompt.slice(separator + 2);
|
|
87
|
+
const largestCappedMaterial = GLOSS_MAX_INPUT_CHARS + GLOSS_TRUNCATION_NOTE.length + 2;
|
|
88
|
+
if (material.length > largestCappedMaterial)
|
|
89
|
+
return null;
|
|
90
|
+
return { instruction, material };
|
|
91
|
+
}
|
|
92
|
+
function codexArgs(model, cwd) {
|
|
93
|
+
const args = [
|
|
94
|
+
"exec",
|
|
95
|
+
"--strict-config",
|
|
96
|
+
"--ignore-user-config",
|
|
97
|
+
"--ignore-rules",
|
|
98
|
+
"--ephemeral",
|
|
99
|
+
"--skip-git-repo-check",
|
|
100
|
+
"--json",
|
|
101
|
+
"-C",
|
|
102
|
+
cwd,
|
|
103
|
+
"-m",
|
|
104
|
+
model,
|
|
105
|
+
];
|
|
106
|
+
for (const config of CODEX_CONFIG)
|
|
107
|
+
args.push("-c", config);
|
|
108
|
+
for (const feature of CODEX_ENABLED_FEATURES)
|
|
109
|
+
args.push("--enable", feature);
|
|
110
|
+
for (const feature of CODEX_DISABLED_FEATURES)
|
|
111
|
+
args.push("--disable", feature);
|
|
112
|
+
return args;
|
|
113
|
+
}
|
|
114
|
+
function object(value) {
|
|
115
|
+
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
116
|
+
? value
|
|
117
|
+
: null;
|
|
118
|
+
}
|
|
119
|
+
function parseSuccessfulAnswer(stdout, model) {
|
|
120
|
+
let completedTurns = 0;
|
|
121
|
+
let answer = null;
|
|
122
|
+
let terminal = false;
|
|
123
|
+
const lines = stdout.split(/\r?\n/u).filter((line) => line.trim().length > 0);
|
|
124
|
+
if (lines.length === 0)
|
|
125
|
+
return null;
|
|
126
|
+
for (const line of lines) {
|
|
127
|
+
let event;
|
|
128
|
+
try {
|
|
129
|
+
event = object(JSON.parse(line));
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
if (event === null || typeof event.type !== "string")
|
|
135
|
+
return null;
|
|
136
|
+
if (terminal)
|
|
137
|
+
return null;
|
|
138
|
+
if (event.type === "thread.started" || event.type === "turn.started")
|
|
139
|
+
continue;
|
|
140
|
+
if (event.type === "error" || event.type === "turn.failed")
|
|
141
|
+
return null;
|
|
142
|
+
if (event.type === "turn.completed") {
|
|
143
|
+
completedTurns += 1;
|
|
144
|
+
terminal = true;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (event.type !== "item.started" &&
|
|
148
|
+
event.type !== "item.updated" &&
|
|
149
|
+
event.type !== "item.completed") {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
const item = object(event.item);
|
|
153
|
+
if (item === null || (item.type !== "reasoning" && item.type !== "agent_message")) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
if (event.type === "item.completed" && item.type === "agent_message") {
|
|
157
|
+
if (typeof item.text !== "string" || item.text.trim().length === 0)
|
|
158
|
+
return null;
|
|
159
|
+
answer = item.text;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return completedTurns === 1 && answer !== null
|
|
163
|
+
? { text: answer, provenance: { provider: "codex", requestedModel: model } }
|
|
164
|
+
: null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Build a synchronous Codex gloss runner using the CLI's saved authentication.
|
|
168
|
+
*
|
|
169
|
+
* The invocation starts in a new empty directory with a named read-only
|
|
170
|
+
* permission profile, command network disabled, project instructions
|
|
171
|
+
* suppressed, host skill discovery skipped, and selected known
|
|
172
|
+
* tool/integration features disabled.
|
|
173
|
+
* Codex 0.152.1 has no universal deny-all tool switch: host-managed and global
|
|
174
|
+
* base instructions still apply, the under-development discovery switch is
|
|
175
|
+
* version-specific, and the CLI owns any auth-state maintenance.
|
|
176
|
+
* The caller must present that practical isolation boundary to the operator.
|
|
177
|
+
*/
|
|
178
|
+
export function codexGlossRunnerFor(model, passphraseEnv = null, options = {}) {
|
|
179
|
+
const requestedModel = normalizeGlossModelId(model);
|
|
180
|
+
return (prompt) => {
|
|
181
|
+
if (requestedModel === null)
|
|
182
|
+
return report(options, "invalid-model");
|
|
183
|
+
if (process.platform === "win32")
|
|
184
|
+
return report(options, "unsupported-platform");
|
|
185
|
+
const parts = splitPrompt(prompt);
|
|
186
|
+
if (parts === null)
|
|
187
|
+
return report(options, "invalid-prompt");
|
|
188
|
+
const configuredTimeout = options.timeoutMs ?? GLOSS_TIMEOUT_MS;
|
|
189
|
+
const timeoutMs = Number.isSafeInteger(configuredTimeout) && configuredTimeout > 0
|
|
190
|
+
? configuredTimeout
|
|
191
|
+
: GLOSS_TIMEOUT_MS;
|
|
192
|
+
let cwd;
|
|
193
|
+
try {
|
|
194
|
+
cwd = mkdtempSync(join(tmpdir(), "approval-md-codex-gloss-"));
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
return report(options, "spawn-error");
|
|
198
|
+
}
|
|
199
|
+
let answer = null;
|
|
200
|
+
let reason = null;
|
|
201
|
+
try {
|
|
202
|
+
const childDeadline = Math.max(1, timeoutMs - Math.min(SUPERVISOR_GRACE_MS, Math.floor(timeoutMs / 4)));
|
|
203
|
+
const result = spawnSync(process.execPath, [
|
|
204
|
+
HELPER_PATH,
|
|
205
|
+
options.executable ?? "codex",
|
|
206
|
+
String(childDeadline),
|
|
207
|
+
cwd,
|
|
208
|
+
parts.instruction,
|
|
209
|
+
JSON.stringify(codexArgs(requestedModel, cwd)),
|
|
210
|
+
], {
|
|
211
|
+
encoding: "utf8",
|
|
212
|
+
env: childEnvironment({ passphraseEnv }).env,
|
|
213
|
+
input: parts.material,
|
|
214
|
+
timeout: timeoutMs,
|
|
215
|
+
killSignal: "SIGTERM",
|
|
216
|
+
maxBuffer: OUTPUT_LIMIT_BYTES,
|
|
217
|
+
});
|
|
218
|
+
if (result.error !== undefined) {
|
|
219
|
+
const code = result.error.code;
|
|
220
|
+
reason = code === "ETIMEDOUT" ? "timeout" : code === "ENOBUFS" ? "output-too-large" : "spawn-error";
|
|
221
|
+
}
|
|
222
|
+
else if (result.status === 124) {
|
|
223
|
+
reason = "timeout";
|
|
224
|
+
}
|
|
225
|
+
else if (result.status === 125) {
|
|
226
|
+
reason = "output-too-large";
|
|
227
|
+
}
|
|
228
|
+
else if (result.status === 126) {
|
|
229
|
+
reason = "spawn-error";
|
|
230
|
+
}
|
|
231
|
+
else if (result.status !== 0) {
|
|
232
|
+
reason = "nonzero-exit";
|
|
233
|
+
}
|
|
234
|
+
else if (typeof result.stdout !== "string") {
|
|
235
|
+
reason = "invalid-output";
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
answer = parseSuccessfulAnswer(result.stdout, requestedModel);
|
|
239
|
+
if (answer === null)
|
|
240
|
+
reason = "unsafe-output";
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
reason = "spawn-error";
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
rmSync(cwd, { recursive: true, force: true });
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return report(options, "cleanup-failed");
|
|
251
|
+
}
|
|
252
|
+
return reason === null ? answer : report(options, reason);
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=gloss-codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gloss-codex.js","sourceRoot":"","sources":["../../../src/cli/gloss-codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** Shared provider selection for the three optional gloss surfaces (APRV-255). */
|
|
2
|
+
import { type ParsedFlags } from "./args.js";
|
|
3
|
+
import { codexGlossRunnerFor, type CodexGlossUnavailableReason } from "./gloss-codex.js";
|
|
4
|
+
import { type GlossProvider, type GlossRunner } from "./gloss.js";
|
|
5
|
+
/** A validated operator selection. It is safe to hand directly to a runner factory. */
|
|
6
|
+
export interface GlossOptions {
|
|
7
|
+
readonly enabled: boolean;
|
|
8
|
+
readonly provider: GlossProvider;
|
|
9
|
+
readonly model: string;
|
|
10
|
+
}
|
|
11
|
+
export type GlossOptionsResult = {
|
|
12
|
+
readonly ok: true;
|
|
13
|
+
readonly options: GlossOptions;
|
|
14
|
+
} | {
|
|
15
|
+
readonly ok: false;
|
|
16
|
+
readonly message: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the flags shared by `up`, Telegram listen and the terminal channel.
|
|
20
|
+
*
|
|
21
|
+
* The caller supplies its historical default: Telegram and `up` pass `true`,
|
|
22
|
+
* while the terminal channel passes `false`. `--no-gloss` wins a tie so an
|
|
23
|
+
* explicit request to remove a model from the path can never accidentally
|
|
24
|
+
* spawn one. Provider and model values are validated even when disabled;
|
|
25
|
+
* otherwise a typo could wait unnoticed until a later invocation adds
|
|
26
|
+
* `--gloss`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseGlossOptions(flags: ParsedFlags, enabledByDefault: boolean): GlossOptionsResult;
|
|
29
|
+
type ClaudeRunnerFactory = (passphraseEnv: string | null, model: string) => GlossRunner;
|
|
30
|
+
type CodexRunnerFactory = typeof codexGlossRunnerFor;
|
|
31
|
+
/** Fixed reason codes only; subprocess output must never reach this callback. */
|
|
32
|
+
export type GlossDiagnostic = (reason: CodexGlossUnavailableReason) => void;
|
|
33
|
+
export interface GlossRunnerFactoryOptions {
|
|
34
|
+
readonly passphraseEnv?: string | null;
|
|
35
|
+
readonly diagnostic?: GlossDiagnostic;
|
|
36
|
+
/** Test seams. Production callers use the provider implementations above. */
|
|
37
|
+
readonly claudeRunnerFor?: ClaudeRunnerFactory;
|
|
38
|
+
readonly codexRunnerFor?: CodexRunnerFactory;
|
|
39
|
+
}
|
|
40
|
+
/** Construct exactly the selected runner, or no runner when glossing is disabled. */
|
|
41
|
+
export declare function glossRunnerFromOptions(selection: GlossOptions, factoryOptions?: GlossRunnerFactoryOptions): GlossRunner | undefined;
|
|
42
|
+
export {};
|