@iowarp/clio-coder 0.3.0 → 0.3.2
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/CHANGELOG.md +123 -2
- package/CONTRIBUTING.md +23 -23
- package/README.md +295 -627
- package/dist/acp-BIYHVZIM.js +128 -0
- package/dist/{agents-Q4MYPMUW.js → agents-YT6SSRIT.js} +52 -27
- package/dist/assets/codewiki.json +1 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/LICENSE +21 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/cgmanifest.json +16 -0
- package/dist/assets/grammars/notices/tree-sitter-wasms/LICENSE +24 -0
- package/dist/assets/grammars/tree-sitter-c-sharp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-c.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-cpp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-go.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-java.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-python.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-ruby.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-rust.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter.wasm +0 -0
- package/dist/{auth-O6HYIJ6J.js → auth-5TWEIYDN.js} +30 -15
- package/dist/chunk-2EHAIA3X.js +481 -0
- package/dist/{chunk-ME6DNWIU.js → chunk-2IR2NMPA.js} +12 -4
- package/dist/chunk-2SFS6XQE.js +122 -0
- package/dist/{chunk-KKKPTZLM.js → chunk-2STGEDFV.js} +8 -1
- package/dist/chunk-2VTFPG5O.js +48 -0
- package/dist/chunk-3I7MS7N2.js +40 -0
- package/dist/chunk-3R73A4XB.js +69 -0
- package/dist/{chunk-JPOWPFCU.js → chunk-3ZXDFGR5.js} +52 -23
- package/dist/chunk-4BJ5BYCE.js +61 -0
- package/dist/{chunk-26BZQOAD.js → chunk-4BPJXDWC.js} +161 -260
- package/dist/chunk-4KLWL3UC.js +18 -0
- package/dist/{chunk-5LDRNKX2.js → chunk-4VP4KH3K.js} +161 -262
- package/dist/chunk-4ZG3XFUR.js +77 -0
- package/dist/chunk-5B2AEOW5.js +5407 -0
- package/dist/chunk-5TSRNF4G.js +510 -0
- package/dist/{chunk-WD6AJM35.js → chunk-5UUP6MWO.js} +48 -69
- package/dist/{chunk-X3BR7HWV.js → chunk-5WIGXA4T.js} +7 -1
- package/dist/chunk-65DEGPJ6.js +52 -0
- package/dist/chunk-6EJMN2Y3.js +17 -0
- package/dist/chunk-6EJV5X2W.js +16405 -0
- package/dist/chunk-6N5PTWMY.js +136 -0
- package/dist/chunk-6XLNIQDB.js +27 -0
- package/dist/{chunk-XNISANGE.js → chunk-77VKQEHF.js} +171 -74
- package/dist/chunk-7CR24IG7.js +242 -0
- package/dist/{chunk-UWIJNAOB.js → chunk-7EYHLWU7.js} +907 -638
- package/dist/chunk-7MNJORFF.js +22 -0
- package/dist/{chunk-JWHCJDCI.js → chunk-A3CYT5EX.js} +257 -79
- package/dist/chunk-AGYYIBLL.js +1069 -0
- package/dist/chunk-AO4RKG4M.js +277 -0
- package/dist/chunk-APJ265NV.js +7410 -0
- package/dist/chunk-ARBGF5F7.js +174 -0
- package/dist/{chunk-TFSSEXL6.js → chunk-BMEMKKIT.js} +14 -4
- package/dist/{chunk-X3NE4WVW.js → chunk-BNAZZHFG.js} +7 -1
- package/dist/chunk-CBCAPZAA.js +229 -0
- package/dist/{chunk-QV47YRF4.js → chunk-CGKSTWHD.js} +7 -1
- package/dist/chunk-CMZWFGD2.js +352 -0
- package/dist/chunk-ECH6PKUQ.js +39 -0
- package/dist/{chunk-67MTHP2E.js → chunk-ED4KHGC3.js} +13 -5
- package/dist/chunk-EKMEHE4H.js +340 -0
- package/dist/{chunk-O4EJEDHO.js → chunk-EPVUXGXG.js} +50 -35
- package/dist/chunk-FCSXB6T2.js +338 -0
- package/dist/chunk-FJ3H4MN5.js +48 -0
- package/dist/chunk-FQ4SKYE4.js +29 -0
- package/dist/chunk-G2DE3C7R.js +644 -0
- package/dist/chunk-G4BMMOKF.js +182 -0
- package/dist/{chunk-7BHLZB3A.js → chunk-GGXXDWE4.js} +190 -1218
- package/dist/chunk-HC4CLZ2Y.js +68 -0
- package/dist/{chunk-E3NYWENM.js → chunk-HFSBBKSQ.js} +55 -61
- package/dist/chunk-HKIYEGME.js +30 -0
- package/dist/chunk-I4HZDVNP.js +73 -0
- package/dist/chunk-IGLFWIYI.js +161 -0
- package/dist/chunk-IHXBNWMM.js +137 -0
- package/dist/chunk-IKCO5N3L.js +162 -0
- package/dist/chunk-IR4CFBFN.js +56 -0
- package/dist/{chunk-DXQNI4PC.js → chunk-IWHMRKLL.js} +8 -1
- package/dist/{chunk-VOO7NYPP.js → chunk-J5HN4RYU.js} +27 -9
- package/dist/{chunk-4UQA7NCT.js → chunk-J5Q24KAG.js} +7 -2
- package/dist/{chunk-KBR4MZZR.js → chunk-JVCV3ICN.js} +7 -1
- package/dist/chunk-KJ5LWLOE.js +1077 -0
- package/dist/chunk-LBMZMYH2.js +285 -0
- package/dist/{chunk-3DANZDGR.js → chunk-LBNRH5WM.js} +100 -161
- package/dist/{chunk-TKHQ4DGZ.js → chunk-LZSJBIVT.js} +7358 -7414
- package/dist/{chunk-UGYAX5YI.js → chunk-M6SHUN7Q.js} +13 -8
- package/dist/chunk-MAW544W2.js +1882 -0
- package/dist/chunk-MBS4V7ZP.js +217 -0
- package/dist/{chunk-2J63S4SF.js → chunk-MFFY33HR.js} +167 -140
- package/dist/chunk-MNA4JGU4.js +255 -0
- package/dist/chunk-MQSRRFWA.js +3428 -0
- package/dist/{chunk-RQDWMVRB.js → chunk-MVVUPGPW.js} +138 -137
- package/dist/chunk-OAO4GE4M.js +619 -0
- package/dist/chunk-OHHN2SO4.js +5135 -0
- package/dist/chunk-OKGUZO2U.js +34 -0
- package/dist/{chunk-BBUH4VAA.js → chunk-OOJYHWRB.js} +60 -361
- package/dist/{chunk-D5YD55AR.js → chunk-OQ33BKR3.js} +12 -1
- package/dist/chunk-OQE5J4C6.js +73 -0
- package/dist/{chunk-AMFR5YA3.js → chunk-ORBHGJC5.js} +26 -12
- package/dist/chunk-POHLU5DW.js +1186 -0
- package/dist/chunk-QKMUKYO7.js +4961 -0
- package/dist/{chunk-7RBKDI66.js → chunk-QTYWRVRA.js} +104 -12
- package/dist/{chunk-5N2FG33Q.js → chunk-R346GLFC.js} +7 -1
- package/dist/chunk-SRF2PJNW.js +184 -0
- package/dist/chunk-SST6Z5JA.js +80 -0
- package/dist/{chunk-XV4ZJ6ZM.js → chunk-STBPMHSX.js} +473 -1194
- package/dist/{chunk-HBU5MTAM.js → chunk-SVNXH4L2.js} +7 -1
- package/dist/chunk-T6YILFSB.js +80 -0
- package/dist/chunk-TXOTCRLG.js +15 -0
- package/dist/chunk-TZTZS7QK.js +227 -0
- package/dist/chunk-UOV2BYIW.js +107 -0
- package/dist/{chunk-527KG6XR.js → chunk-V4RXGQ5Q.js} +72 -185
- package/dist/chunk-VAKQQHWR.js +434 -0
- package/dist/chunk-VG7TBQIY.js +128 -0
- package/dist/chunk-VJWL6YS5.js +244 -0
- package/dist/chunk-WEH5XRJQ.js +32 -0
- package/dist/{chunk-VPAWTYLY.js → chunk-WEPFGWHJ.js} +7 -1
- package/dist/chunk-WMSVI4G2.js +2095 -0
- package/dist/chunk-WVO7V2QY.js +797 -0
- package/dist/chunk-X4RCMKVQ.js +641 -0
- package/dist/chunk-X75S7HFS.js +374 -0
- package/dist/chunk-XN3L4EYL.js +46 -0
- package/dist/{chunk-HMYNFFY4.js → chunk-XPLRXC72.js} +7 -2
- package/dist/{chunk-PIDUD6M2.js → chunk-YCWGATWI.js} +12 -5
- package/dist/chunk-YHZX5GEU.js +193 -0
- package/dist/chunk-YXLYO42X.js +91 -0
- package/dist/{chunk-UHTSULZS.js → chunk-ZDOOVTXZ.js} +38 -73
- package/dist/chunk-ZI647VB5.js +37 -0
- package/dist/{chunk-CLJ5HLUD.js → chunk-ZWLZP4ZT.js} +25 -6
- package/dist/cli/index.js +70 -56
- package/dist/clio-4LY5K2AC.js +25 -0
- package/dist/code-nav-7AX6FYE6.js +600 -0
- package/dist/codewiki/build-worker.js +66 -0
- package/dist/compile-cache-CVJMMODC.js +18 -0
- package/dist/{components-JVHMUBEB.js → components-KELWS457.js} +31 -9
- package/dist/{config-ZFCDBMDC.js → config-GTLUW2PR.js} +104 -56
- package/dist/configure-R6A64DHX.js +42 -0
- package/dist/context-5VKGUVJJ.js +866 -0
- package/dist/{context-CDXTP2MP.js → context-JFZEJ7W5.js} +21 -13
- package/dist/{context-E3KIFVXI.js → context-RW5HC47S.js} +77 -36
- package/dist/{context-clear-3F4PLXOS.js → context-clear-6ZHBAZZT.js} +64 -30
- package/dist/{context-index-Q7YSYTR3.js → context-index-BZ4UYMTC.js} +36 -24
- package/dist/dispatch-runner-VKBRCWQC.js +1997 -0
- package/dist/{docs-YIETIWZI.js → docs-2C2LTVT2.js} +32 -13
- package/dist/doctor-KI767GSN.js +87 -0
- package/dist/{eval-B3KZZESM.js → eval-XSSNATB4.js} +93 -27
- package/dist/{evidence-V67CHM35.js → evidence-UA6AWDQQ.js} +55 -27
- package/dist/{evolve-YDZSUQYA.js → evolve-QNTFGV6Z.js} +59 -26
- package/dist/{extensions-SRG7XCAH.js → extensions-QVDOHDGJ.js} +23 -8
- package/dist/{fleet-CA2CRTVG.js → fleet-Q7UOMUSG.js} +173 -56
- package/dist/fleet-preflight-DDN536IT.js +26 -0
- package/dist/{init-2OZDJE2D.js → init-WBB65ZHQ.js} +79 -34
- package/dist/{memory-3PIQQAKX.js → memory-MD3O64RI.js} +57 -28
- package/dist/{models-DY35XI7Y.js → models-BZU34YWD.js} +49 -24
- package/dist/monitor-MEQA5C3I.js +661 -0
- package/dist/{chunk-PS4PFJQP.js → orchestrator-CGFKEP27.js} +22837 -18564
- package/dist/{paths-5OMXW7Z4.js → paths-UXLN5YYZ.js} +17 -6
- package/dist/preload-P6DGH2PZ.js +13 -0
- package/dist/{reset-PIFYNOS3.js → reset-L2FQEE3E.js} +25 -13
- package/dist/{run-3VSPP24F.js → run-IV4Q6RLN.js} +115 -63
- package/dist/{share-D36RQCXM.js → share-S5BZQC5I.js} +23 -10
- package/dist/{skills-F2MRLELY.js → skills-LQEKRDTN.js} +42 -15
- package/dist/{skills-eval-E2ZTW4PL.js → skills-eval-3DC4HEWS.js} +90 -45
- package/dist/steer-GGWFUJUD.js +77 -0
- package/dist/{targets-DZMEZAH4.js → targets-C4SSGQOB.js} +78 -60
- package/dist/terminal-lease-IT5JW2NR.js +395 -0
- package/dist/{trace-7NYCUI2J.js → trace-PNCASAXC.js} +48 -17
- package/dist/tree-sitter-HGKH6LG4.js +4673 -0
- package/dist/{uninstall-AD3JWHBB.js → uninstall-FZCQCDKC.js} +19 -8
- package/dist/{upgrade-WYYBKGDY.js → upgrade-7TT7SQ3G.js} +66 -24
- package/dist/{usage-ULIDAGFF.js → usage-GV4PKT3M.js} +71 -32
- package/dist/verify-G6V4D2G7.js +716 -0
- package/dist/version-KGEG7EPO.js +21 -0
- package/dist/web-fetch-2YHJ3KTG.js +638 -0
- package/dist/{wiki-generate-PKFIX6OB.js → wiki-generate-DQF6Z66B.js} +98 -48
- package/dist/worker/entry.js +297 -54
- package/dist/workspace-G4ZWUIPR.js +22 -0
- package/docs/README.md +29 -21
- package/docs/acp.md +191 -16
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +157 -7
- package/docs/artifact-placement.md +101 -0
- package/docs/artifact-versions.md +1 -1
- package/docs/built-in-agents.md +4 -2
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +224 -97
- package/docs/config-knobs-audit.md +1 -3
- package/docs/configuration-and-targets.md +236 -38
- package/docs/context-engine.md +34 -7
- package/docs/development-pipeline.md +102 -0
- package/docs/dispatch-architecture-rationale.md +1 -1
- package/docs/documentation-coverage.md +4 -4
- package/docs/documentation-guide.md +3 -3
- package/docs/environment-variables.md +15 -6
- package/docs/eval-runner.md +3 -3
- package/docs/evals-internal.md +2 -2
- package/docs/evidence-and-memory.md +10 -2
- package/docs/evolution.md +2 -2
- package/docs/exit-codes-and-output.md +15 -9
- package/docs/extensions-and-sharing.md +25 -18
- package/docs/fleet-demo-runbook.md +22 -23
- package/docs/fleet-dispatch.md +117 -16
- package/docs/git-commit-provenance.md +120 -0
- package/docs/glossary.md +107 -15
- package/docs/installation-and-lifecycle.md +75 -17
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +46 -15
- package/docs/observability.md +8 -5
- package/docs/performance-methodology.md +491 -0
- package/docs/pi-boundary.md +72 -0
- package/docs/proactive-memory.md +14 -14
- package/docs/prompt-envelope-and-tools.md +25 -4
- package/docs/provider-adapter-cookbook.md +57 -4
- package/docs/release-cut-checklist.md +129 -111
- package/docs/safety-model.md +28 -8
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +55 -12
- package/docs/skills-marketplace.md +12 -8
- package/docs/time-conventions.md +101 -0
- package/docs/tool-usage.md +6 -5
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +10 -7
- package/docs/tui-design.md +121 -28
- package/docs/worker-dispatch-mechanics.md +3 -3
- package/package.json +33 -36
- package/skills/README.md +5 -6
- package/skills/coding/ast-grep/SKILL.md +136 -0
- package/skills/coding/ast-grep/evals.md +56 -0
- package/skills/coding/ast-grep/references/rule_reference.md +297 -0
- package/skills/coding/coding-standards/SKILL.md +113 -0
- package/skills/coding/coding-standards/evals.md +34 -0
- package/skills/coding/prototype/SKILL.md +86 -0
- package/skills/coding/prototype/evals.md +42 -0
- package/skills/coding/prototype/references/LOGIC.md +67 -0
- package/skills/coding/prototype/references/UI.md +112 -0
- package/skills/coding/tdd/SKILL.md +101 -0
- package/skills/coding/tdd/evals.md +41 -0
- package/skills/coding/tdd/references/mocking.md +59 -0
- package/skills/coding/tdd/references/tests.md +77 -0
- package/skills/context/context-handoff/SKILL.md +126 -0
- package/skills/context/context-handoff/evals.md +57 -0
- package/skills/context/context-handoff/scripts/new-handoff.sh +26 -0
- package/skills/context/context-prime/SKILL.md +95 -0
- package/skills/context/context-prime/evals.md +54 -0
- package/skills/git/file-ticket/SKILL.md +107 -0
- package/skills/git/file-ticket/evals.md +54 -0
- package/skills/git/fix-issue/SKILL.md +106 -0
- package/skills/git/fix-issue/evals.md +71 -0
- package/skills/git/ship/SKILL.md +92 -0
- package/skills/git/ship/evals.md +72 -0
- package/skills/meta/clio-dev/SKILL.md +91 -0
- package/skills/meta/clio-dev/evals.md +45 -0
- package/skills/meta/clio-test/SKILL.md +130 -0
- package/skills/meta/clio-test/evals.md +43 -0
- package/skills/meta/clio-test/references/harness.md +97 -0
- package/skills/meta/clio-test/references/test-map.md +59 -0
- package/skills/meta/credentials/SKILL.md +125 -0
- package/skills/meta/credentials/evals.md +104 -0
- package/skills/meta/find-skills/SKILL.md +72 -0
- package/skills/meta/find-skills/evals.md +47 -0
- package/skills/meta/herdr/SKILL.md +127 -0
- package/skills/meta/herdr/evals.md +38 -0
- package/skills/meta/skill-craft/SKILL.md +102 -0
- package/skills/meta/skill-craft/evals.md +41 -0
- package/skills/planning/architecture/SKILL.md +129 -0
- package/skills/planning/architecture/evals.md +36 -0
- package/skills/planning/backlog/SKILL.md +90 -0
- package/skills/planning/backlog/evals.md +43 -0
- package/skills/planning/prd/SKILL.md +82 -0
- package/skills/planning/prd/evals.md +49 -0
- package/skills/planning/product-intent/SKILL.md +112 -0
- package/skills/planning/product-intent/evals.md +36 -0
- package/skills/planning/tech-spec/SKILL.md +115 -0
- package/skills/planning/tech-spec/evals.md +47 -0
- package/skills/registry.yaml +136 -0
- package/skills/research/arxiv-literature/SKILL.md +104 -0
- package/skills/research/arxiv-literature/evals.md +58 -0
- package/skills/research/experiment-protocol/SKILL.md +122 -0
- package/skills/research/experiment-protocol/evals.md +91 -0
- package/skills/research/scientific-debugging/SKILL.md +119 -0
- package/skills/research/scientific-debugging/evals.md +138 -0
- package/skills/research/scientific-modernization/SKILL.md +138 -0
- package/skills/research/scientific-modernization/evals.md +84 -0
- package/skills/skill-marketplace.json +12 -20
- package/skills/workflow/design-council/SKILL.md +139 -0
- package/skills/workflow/design-council/evals.md +97 -0
- package/skills/workflow/grill-me/SKILL.md +186 -0
- package/skills/workflow/grill-me/evals.md +78 -0
- package/skills/workflow/workflow-distiller/SKILL.md +136 -0
- package/skills/workflow/workflow-distiller/evals.md +107 -0
- package/src/cli/acp.ts +115 -0
- package/src/cli/agents.ts +60 -0
- package/src/cli/args.ts +280 -0
- package/src/cli/argv.ts +170 -0
- package/src/cli/ask.ts +34 -0
- package/src/cli/auth.ts +468 -0
- package/src/cli/bootstrap-generate.ts +498 -0
- package/src/cli/clio.ts +96 -0
- package/src/cli/components.ts +195 -0
- package/src/cli/config-inspect.ts +336 -0
- package/src/cli/config.ts +72 -0
- package/src/cli/configure-interop.ts +67 -0
- package/src/cli/configure-layout.ts +172 -0
- package/src/cli/configure.ts +1525 -0
- package/src/cli/context-clear.ts +76 -0
- package/src/cli/context-index.ts +100 -0
- package/src/cli/context.ts +321 -0
- package/src/cli/default-target.ts +55 -0
- package/src/cli/docs.ts +346 -0
- package/src/cli/doctor.ts +54 -0
- package/src/cli/eval.ts +315 -0
- package/src/cli/evidence.ts +225 -0
- package/src/cli/evolve.ts +219 -0
- package/src/cli/extensions.ts +214 -0
- package/src/cli/fleet.ts +868 -0
- package/src/cli/index.ts +338 -0
- package/src/cli/init.ts +219 -0
- package/src/cli/initial-message.ts +47 -0
- package/src/cli/internal-dispatch.ts +55 -0
- package/src/cli/memory.ts +182 -0
- package/src/cli/models.ts +257 -0
- package/src/cli/modes/json-stream.ts +121 -0
- package/src/cli/modes/jsonl.ts +9 -0
- package/src/cli/modes/print.ts +604 -0
- package/src/cli/oauth-manual-input.ts +72 -0
- package/src/cli/oauth-select.ts +36 -0
- package/src/cli/output-guard.ts +48 -0
- package/src/cli/paths.ts +44 -0
- package/src/cli/provider-target.ts +113 -0
- package/src/cli/removal.ts +72 -0
- package/src/cli/reset.ts +253 -0
- package/src/cli/run.ts +497 -0
- package/src/cli/share.ts +243 -0
- package/src/cli/shared.ts +60 -0
- package/src/cli/skills-eval.ts +1240 -0
- package/src/cli/skills.ts +485 -0
- package/src/cli/steer-channel.ts +86 -0
- package/src/cli/targets.ts +1154 -0
- package/src/cli/text-layout.ts +112 -0
- package/src/cli/trace.ts +322 -0
- package/src/cli/uninstall.ts +405 -0
- package/src/cli/upgrade.ts +286 -0
- package/src/cli/usage.ts +876 -0
- package/src/cli/validate-model.ts +28 -0
- package/src/cli/version.ts +7 -0
- package/src/cli/wiki-generate.ts +510 -0
- package/src/core/agent-environment.ts +7 -0
- package/src/core/artifact-paths.ts +43 -0
- package/src/core/bash-exec.ts +313 -0
- package/src/core/boot-trace.ts +42 -0
- package/src/core/bus-events.ts +744 -0
- package/src/core/bus-trace.ts +53 -0
- package/src/core/c-header-language.ts +265 -0
- package/src/core/clio-repo.ts +78 -0
- package/src/core/commit-attribution.ts +157 -0
- package/src/core/compile-cache.ts +159 -0
- package/src/core/config.ts +1722 -0
- package/src/core/context-floor.ts +33 -0
- package/src/core/defaults.ts +659 -0
- package/src/core/domain-loader.ts +177 -0
- package/src/core/event-bus.ts +94 -0
- package/src/core/file-references.ts +282 -0
- package/src/core/git-commit-attribution.ts +362 -0
- package/src/core/guardrails.ts +185 -0
- package/src/core/headless-permission.ts +21 -0
- package/src/core/incomplete-installation.ts +45 -0
- package/src/core/init.ts +223 -0
- package/src/core/json-payload.ts +58 -0
- package/src/core/package-root.ts +54 -0
- package/src/core/path-canonical.ts +37 -0
- package/src/core/process-identity.ts +41 -0
- package/src/core/recent-models.ts +91 -0
- package/src/core/residency-protection.ts +56 -0
- package/src/core/resolve-config-value.ts +88 -0
- package/src/core/response-schema.ts +279 -0
- package/src/core/run-overrides.ts +77 -0
- package/src/core/safe-exec.ts +205 -0
- package/src/core/safe-id.ts +37 -0
- package/src/core/safe-resource-write.ts +162 -0
- package/src/core/session-routing.ts +339 -0
- package/src/core/settings-layers.ts +354 -0
- package/src/core/shared-bus.ts +8 -0
- package/src/core/shell-quote.ts +26 -0
- package/src/core/skill-activation.ts +190 -0
- package/src/core/startup-timer.ts +37 -0
- package/src/core/state-file-lock.ts +219 -0
- package/src/core/termination.ts +275 -0
- package/src/core/timers.ts +38 -0
- package/src/core/tool-names.ts +65 -0
- package/src/core/verification-scripts.ts +13 -0
- package/src/core/workspace-files.ts +492 -0
- package/src/core/xdg.ts +177 -0
- package/src/domains/agents/builtins/architect.md +4 -4
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +3 -3
- package/src/domains/agents/builtins/provenance.md +1 -1
- package/src/domains/agents/builtins/researcher.md +1 -1
- package/src/domains/agents/builtins/scout.md +1 -1
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +1 -1
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/catalog.ts +172 -0
- package/src/domains/agents/contract.ts +16 -0
- package/src/domains/agents/extension.ts +110 -0
- package/src/domains/agents/fleet-commands.ts +154 -0
- package/src/domains/agents/fleet-contract.ts +797 -0
- package/src/domains/agents/frontmatter.ts +40 -0
- package/src/domains/agents/index.ts +102 -0
- package/src/domains/agents/manifest.ts +6 -0
- package/src/domains/agents/recipe-schema.ts +202 -0
- package/src/domains/agents/recipe.ts +125 -0
- package/src/domains/agents/registry.ts +111 -0
- package/src/domains/agents/result-contract.ts +1265 -0
- package/src/domains/agents/spec.ts +371 -0
- package/src/domains/agents/write-boundary.ts +109 -0
- package/src/domains/components/diff.ts +99 -0
- package/src/domains/components/hash.ts +21 -0
- package/src/domains/components/index.ts +3 -0
- package/src/domains/components/scan.ts +304 -0
- package/src/domains/components/snapshot.ts +108 -0
- package/src/domains/components/types.ts +82 -0
- package/src/domains/config/agent-namespace.ts +13 -0
- package/src/domains/config/classify.ts +106 -0
- package/src/domains/config/contract.ts +22 -0
- package/src/domains/config/extension.ts +142 -0
- package/src/domains/config/index.ts +23 -0
- package/src/domains/config/keybindings.ts +200 -0
- package/src/domains/config/manifest.ts +6 -0
- package/src/domains/config/watcher.ts +41 -0
- package/src/domains/context/adoption.ts +880 -0
- package/src/domains/context/bootstrap-prompt.ts +273 -0
- package/src/domains/context/bootstrap.ts +1502 -0
- package/src/domains/context/clear.ts +91 -0
- package/src/domains/context/clio-md.ts +429 -0
- package/src/domains/context/codewiki/artifact.ts +400 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +24 -0
- package/src/domains/context/codewiki/build-worker.ts +54 -0
- package/src/domains/context/codewiki/cmake.ts +356 -0
- package/src/domains/context/codewiki/cooperative.ts +46 -0
- package/src/domains/context/codewiki/coordinator.ts +182 -0
- package/src/domains/context/codewiki/digest.ts +135 -0
- package/src/domains/context/codewiki/grammar-assets.ts +33 -0
- package/src/domains/context/codewiki/indexer.ts +1529 -0
- package/src/domains/context/codewiki/paths.ts +67 -0
- package/src/domains/context/codewiki/schema.ts +80 -0
- package/src/domains/context/codewiki/tree-sitter.ts +771 -0
- package/src/domains/context/contract.ts +68 -0
- package/src/domains/context/excluded-dirs.ts +1 -0
- package/src/domains/context/extension.ts +358 -0
- package/src/domains/context/fingerprint.ts +198 -0
- package/src/domains/context/index.ts +154 -0
- package/src/domains/context/init-options.ts +69 -0
- package/src/domains/context/manifest.ts +6 -0
- package/src/domains/context/operator-profile.ts +157 -0
- package/src/domains/context/project-metadata.ts +529 -0
- package/src/domains/context/project-rules.ts +227 -0
- package/src/domains/context/prompt-context.ts +61 -0
- package/src/domains/context/refresh.ts +178 -0
- package/src/domains/context/runtime.ts +17 -0
- package/src/domains/context/sibling-files.ts +10 -0
- package/src/domains/context/state.ts +237 -0
- package/src/domains/context/wiki/assemble.ts +303 -0
- package/src/domains/context/wiki/frontmatter.ts +210 -0
- package/src/domains/context/wiki/generate.ts +595 -0
- package/src/domains/context/wiki/layout.ts +111 -0
- package/src/domains/context/wiki/meta.ts +221 -0
- package/src/domains/context/wiki/plan-store.ts +217 -0
- package/src/domains/context/wiki/plan.ts +250 -0
- package/src/domains/context/wiki/prompts.ts +283 -0
- package/src/domains/context/wiki/staleness.ts +198 -0
- package/src/domains/dispatch/active-route-planner.ts +168 -0
- package/src/domains/dispatch/admission-queue.ts +150 -0
- package/src/domains/dispatch/admission.ts +334 -0
- package/src/domains/dispatch/agent-candidates.ts +307 -0
- package/src/domains/dispatch/agent-ledger-hub.ts +71 -0
- package/src/domains/dispatch/agent-ledger-store.ts +257 -0
- package/src/domains/dispatch/agent-ledger.ts +212 -0
- package/src/domains/dispatch/agent-plan-adapter.ts +85 -0
- package/src/domains/dispatch/assignment-events.ts +132 -0
- package/src/domains/dispatch/assignment-reconcile.ts +76 -0
- package/src/domains/dispatch/assignment-store.ts +162 -0
- package/src/domains/dispatch/assignment.ts +278 -0
- package/src/domains/dispatch/backoff.ts +59 -0
- package/src/domains/dispatch/batch-store.ts +134 -0
- package/src/domains/dispatch/batch-tracker.ts +66 -0
- package/src/domains/dispatch/capability-match.ts +155 -0
- package/src/domains/dispatch/capacity-lease.ts +413 -0
- package/src/domains/dispatch/code-step-store.ts +52 -0
- package/src/domains/dispatch/code-step.ts +387 -0
- package/src/domains/dispatch/contract.ts +278 -0
- package/src/domains/dispatch/dedup.ts +133 -0
- package/src/domains/dispatch/event-pump.ts +251 -0
- package/src/domains/dispatch/execution-handoff.ts +29 -0
- package/src/domains/dispatch/execution-plan.ts +328 -0
- package/src/domains/dispatch/execution-role.ts +277 -0
- package/src/domains/dispatch/execution-scheduler.ts +583 -0
- package/src/domains/dispatch/extension.ts +6006 -0
- package/src/domains/dispatch/failure-classification.ts +147 -0
- package/src/domains/dispatch/fleet-commit-attribution.ts +56 -0
- package/src/domains/dispatch/fleet-plan.ts +225 -0
- package/src/domains/dispatch/fleet-preflight.ts +394 -0
- package/src/domains/dispatch/gate-decisions.ts +1040 -0
- package/src/domains/dispatch/gate-role-prompts.ts +58 -0
- package/src/domains/dispatch/heartbeat.ts +27 -0
- package/src/domains/dispatch/index.ts +137 -0
- package/src/domains/dispatch/joint-route-adapter.ts +114 -0
- package/src/domains/dispatch/joint-route-resolver.ts +283 -0
- package/src/domains/dispatch/manifest.ts +6 -0
- package/src/domains/dispatch/orphan-recovery.ts +266 -0
- package/src/domains/dispatch/outcome.ts +109 -0
- package/src/domains/dispatch/phase-timing.ts +47 -0
- package/src/domains/dispatch/placement.ts +202 -0
- package/src/domains/dispatch/receipt-findings.ts +255 -0
- package/src/domains/dispatch/receipt-integrity.ts +383 -0
- package/src/domains/dispatch/recovery-candidates.ts +74 -0
- package/src/domains/dispatch/reproducibility.ts +48 -0
- package/src/domains/dispatch/reservation-store.ts +501 -0
- package/src/domains/dispatch/route-approval.ts +177 -0
- package/src/domains/dispatch/route-candidates.ts +57 -0
- package/src/domains/dispatch/route-decision.ts +1079 -0
- package/src/domains/dispatch/route-facts.ts +187 -0
- package/src/domains/dispatch/route-history.ts +238 -0
- package/src/domains/dispatch/route-observer.ts +488 -0
- package/src/domains/dispatch/route-policy.ts +327 -0
- package/src/domains/dispatch/route-quality.ts +256 -0
- package/src/domains/dispatch/route-readiness.ts +120 -0
- package/src/domains/dispatch/routing-intent.ts +287 -0
- package/src/domains/dispatch/run-identity.ts +56 -0
- package/src/domains/dispatch/scout-transition.ts +130 -0
- package/src/domains/dispatch/state.ts +302 -0
- package/src/domains/dispatch/tool-stats.ts +132 -0
- package/src/domains/dispatch/transport.ts +210 -0
- package/src/domains/dispatch/types.ts +799 -0
- package/src/domains/dispatch/validation-grounding.ts +154 -0
- package/src/domains/dispatch/validation.ts +721 -0
- package/src/domains/dispatch/worker-protocol.ts +275 -0
- package/src/domains/dispatch/worker-spawn.ts +585 -0
- package/src/domains/dispatch/write-boundary-enforcer.ts +97 -0
- package/src/domains/dispatch/write-boundary.ts +426 -0
- package/src/domains/eval/artifacts/redact.ts +42 -0
- package/src/domains/eval/artifacts/store.ts +173 -0
- package/src/domains/eval/compare/compare.ts +33 -0
- package/src/domains/eval/compare/gates.ts +66 -0
- package/src/domains/eval/compare/thresholds.ts +92 -0
- package/src/domains/eval/harness-metrics.ts +62 -0
- package/src/domains/eval/index.ts +66 -0
- package/src/domains/eval/metrics/chaos-stream.ts +93 -0
- package/src/domains/eval/metrics/context.ts +34 -0
- package/src/domains/eval/metrics/coverage.ts +21 -0
- package/src/domains/eval/metrics/evidence.ts +182 -0
- package/src/domains/eval/metrics/fleet-loop-stream.ts +196 -0
- package/src/domains/eval/metrics/invariants.ts +736 -0
- package/src/domains/eval/metrics/latency.ts +4 -0
- package/src/domains/eval/metrics/token-stream.ts +139 -0
- package/src/domains/eval/metrics/tokens.ts +51 -0
- package/src/domains/eval/metrics/tool-calls.ts +7 -0
- package/src/domains/eval/proactive-memory.ts +279 -0
- package/src/domains/eval/provenance.ts +35 -0
- package/src/domains/eval/report.ts +234 -0
- package/src/domains/eval/reports/json.ts +5 -0
- package/src/domains/eval/reports/junit.ts +23 -0
- package/src/domains/eval/reports/markdown.ts +20 -0
- package/src/domains/eval/reports/swe-jsonl.ts +16 -0
- package/src/domains/eval/reports/text.ts +25 -0
- package/src/domains/eval/run-compare.ts +274 -0
- package/src/domains/eval/runner.ts +244 -0
- package/src/domains/eval/runners/clio-run.ts +148 -0
- package/src/domains/eval/runners/context-index.ts +56 -0
- package/src/domains/eval/runners/context-init.ts +203 -0
- package/src/domains/eval/runners/external-command.ts +350 -0
- package/src/domains/eval/runtime-paths.ts +171 -0
- package/src/domains/eval/schema/artifact.ts +75 -0
- package/src/domains/eval/schema/suite.ts +235 -0
- package/src/domains/eval/schema/validate.ts +339 -0
- package/src/domains/eval/store.ts +392 -0
- package/src/domains/eval/suites/load.ts +74 -0
- package/src/domains/eval/suites/matrix.ts +19 -0
- package/src/domains/eval/suites/resolve.ts +44 -0
- package/src/domains/eval/suites/run.ts +325 -0
- package/src/domains/eval/task-file.ts +186 -0
- package/src/domains/eval/types.ts +140 -0
- package/src/domains/eval/verifiers/command.ts +27 -0
- package/src/domains/eval/verifiers/file-exists.ts +6 -0
- package/src/domains/eval/verifiers/patch.ts +22 -0
- package/src/domains/eval/workspaces/git.ts +41 -0
- package/src/domains/eval/workspaces/local.ts +17 -0
- package/src/domains/eval/workspaces/temp-copy.ts +29 -0
- package/src/domains/evidence/build.ts +1754 -0
- package/src/domains/evidence/eval.ts +605 -0
- package/src/domains/evidence/failure-attribution.ts +54 -0
- package/src/domains/evidence/finish-contract-map.ts +42 -0
- package/src/domains/evidence/index.ts +55 -0
- package/src/domains/evidence/provenance.ts +200 -0
- package/src/domains/evidence/redact.ts +81 -0
- package/src/domains/evidence/store.ts +291 -0
- package/src/domains/evidence/types.ts +325 -0
- package/src/domains/evolution/SELF_EDIT_GATE.md +91 -0
- package/src/domains/evolution/index.ts +26 -0
- package/src/domains/evolution/manifest.ts +154 -0
- package/src/domains/evolution/validate.ts +304 -0
- package/src/domains/extensions/contract.ts +22 -0
- package/src/domains/extensions/discovery.ts +193 -0
- package/src/domains/extensions/extension.ts +46 -0
- package/src/domains/extensions/index.ts +34 -0
- package/src/domains/extensions/manager.ts +30 -0
- package/src/domains/extensions/manifest.ts +6 -0
- package/src/domains/extensions/resources.ts +38 -0
- package/src/domains/extensions/state.ts +224 -0
- package/src/domains/extensions/types.ts +83 -0
- package/src/domains/interop/consent.ts +185 -0
- package/src/domains/interop/contract.ts +29 -0
- package/src/domains/interop/detect.ts +173 -0
- package/src/domains/interop/extension.ts +59 -0
- package/src/domains/interop/index.ts +34 -0
- package/src/domains/interop/manifest.ts +6 -0
- package/src/domains/interop/registry.ts +139 -0
- package/src/domains/interop/state.ts +92 -0
- package/src/domains/interop/types.ts +109 -0
- package/src/domains/lifecycle/contract.ts +11 -0
- package/src/domains/lifecycle/doctor.ts +536 -0
- package/src/domains/lifecycle/extension.ts +23 -0
- package/src/domains/lifecycle/index.ts +21 -0
- package/src/domains/lifecycle/install-method.ts +51 -0
- package/src/domains/lifecycle/manifest.ts +6 -0
- package/src/domains/lifecycle/migrations/2026-08-18-lmstudio-runtime-id.ts +52 -0
- package/src/domains/lifecycle/migrations/index.ts +114 -0
- package/src/domains/lifecycle/state.ts +93 -0
- package/src/domains/lifecycle/upgrade-notice.ts +35 -0
- package/src/domains/lifecycle/version.ts +35 -0
- package/src/domains/memory/index.ts +128 -0
- package/src/domains/memory/operations.ts +143 -0
- package/src/domains/memory/prompt-section.ts +86 -0
- package/src/domains/memory/proposal.ts +180 -0
- package/src/domains/memory/store.ts +163 -0
- package/src/domains/memory/task-bank.ts +229 -0
- package/src/domains/memory/task-memory-handoff.ts +222 -0
- package/src/domains/memory/task-memory-policy.ts +602 -0
- package/src/domains/memory/task-memory-status.ts +58 -0
- package/src/domains/memory/task-memory-telemetry.ts +346 -0
- package/src/domains/memory/task-memory-trace.ts +89 -0
- package/src/domains/memory/types.ts +74 -0
- package/src/domains/memory/validate.ts +297 -0
- package/src/domains/middleware/budget.ts +216 -0
- package/src/domains/middleware/contract.ts +35 -0
- package/src/domains/middleware/dispatch-nudge.ts +469 -0
- package/src/domains/middleware/extension.ts +129 -0
- package/src/domains/middleware/hook-receipts.ts +70 -0
- package/src/domains/middleware/hooks-io.ts +186 -0
- package/src/domains/middleware/hooks.ts +432 -0
- package/src/domains/middleware/index.ts +154 -0
- package/src/domains/middleware/manifest.ts +6 -0
- package/src/domains/middleware/memory-intervention.ts +701 -0
- package/src/domains/middleware/rules.ts +42 -0
- package/src/domains/middleware/runtime.ts +333 -0
- package/src/domains/middleware/skills-reminder.ts +202 -0
- package/src/domains/middleware/snapshot.ts +71 -0
- package/src/domains/middleware/stalled-turn.ts +71 -0
- package/src/domains/middleware/task-board-reminder.ts +87 -0
- package/src/domains/middleware/task-nudge.ts +77 -0
- package/src/domains/middleware/tool-choice-control.ts +42 -0
- package/src/domains/middleware/types.ts +131 -0
- package/src/domains/middleware/validate.ts +329 -0
- package/src/domains/observability/accountability.ts +67 -0
- package/src/domains/observability/contract.ts +168 -0
- package/src/domains/observability/cost.ts +206 -0
- package/src/domains/observability/evidence-index.ts +123 -0
- package/src/domains/observability/extension.ts +281 -0
- package/src/domains/observability/index.ts +78 -0
- package/src/domains/observability/manifest.ts +10 -0
- package/src/domains/observability/metrics.ts +37 -0
- package/src/domains/observability/projection.ts +477 -0
- package/src/domains/observability/telemetry.ts +89 -0
- package/src/domains/observability/trace-store.ts +1454 -0
- package/src/domains/prompts/compiler.ts +614 -0
- package/src/domains/prompts/contract.ts +46 -0
- package/src/domains/prompts/extension.ts +336 -0
- package/src/domains/prompts/fragment-loader.ts +138 -0
- package/src/domains/prompts/fragments/identity/clio.md +5 -6
- package/src/domains/prompts/fragments/identity/docs-routing.md +10 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +19 -0
- package/src/domains/prompts/fragments/operating/contract.md +4 -41
- package/src/domains/prompts/fragments/operating/delegation.md +42 -0
- package/src/domains/prompts/fragments/operating/skills.md +26 -0
- package/src/domains/prompts/fragments/operating/worker.md +16 -0
- package/src/domains/prompts/fragments/safety/auto-edit.md +5 -5
- package/src/domains/prompts/fragments/safety/full-auto.md +3 -3
- package/src/domains/prompts/fragments/safety/read-only.md +4 -4
- package/src/domains/prompts/fragments/safety/suggest.md +2 -2
- package/src/domains/prompts/fragments/wiki/page.md +10 -0
- package/src/domains/prompts/fragments/wiki/plan.md +10 -0
- package/src/domains/prompts/hash.ts +73 -0
- package/src/domains/prompts/index.ts +32 -0
- package/src/domains/prompts/manifest.ts +8 -0
- package/src/domains/prompts/memory-intervention.ts +57 -0
- package/src/domains/prompts/preload.ts +82 -0
- package/src/domains/providers/auth/api-key.ts +47 -0
- package/src/domains/providers/auth/backend-file.ts +79 -0
- package/src/domains/providers/auth/backend-memory.ts +72 -0
- package/src/domains/providers/auth/boot-status.ts +65 -0
- package/src/domains/providers/auth/index.ts +37 -0
- package/src/domains/providers/auth/oauth.ts +37 -0
- package/src/domains/providers/auth/storage.ts +726 -0
- package/src/domains/providers/capabilities.ts +58 -0
- package/src/domains/providers/catalog.ts +162 -0
- package/src/domains/providers/contract.ts +162 -0
- package/src/domains/providers/credentials.ts +20 -0
- package/src/domains/providers/eligibility.ts +24 -0
- package/src/domains/providers/errors.ts +64 -0
- package/src/domains/providers/extension.ts +548 -0
- package/src/domains/providers/index.ts +142 -0
- package/src/domains/providers/knowledge-base-path.ts +102 -0
- package/src/domains/providers/manifest.ts +6 -0
- package/src/domains/providers/model-capabilities.ts +136 -0
- package/src/domains/providers/model-discovery.ts +144 -0
- package/src/domains/providers/model-family.ts +32 -0
- package/src/domains/providers/model-runtime-capabilities.ts +723 -0
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +120 -37
- package/src/domains/providers/plugins.ts +61 -0
- package/src/domains/providers/probe/fingerprint.ts +64 -0
- package/src/domains/providers/probe/http.ts +114 -0
- package/src/domains/providers/probe/reasoning.ts +111 -0
- package/src/domains/providers/registry.ts +187 -0
- package/src/domains/providers/resolver.ts +156 -0
- package/src/domains/providers/runtime-resolution.ts +720 -0
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +90 -0
- package/src/domains/providers/runtimes/boot-manifest.ts +55 -0
- package/src/domains/providers/runtimes/builtins.ts +78 -0
- package/src/domains/providers/runtimes/claude/claude-code.ts +38 -0
- package/src/domains/providers/runtimes/claude/claude-sdk.ts +38 -0
- package/src/domains/providers/runtimes/claude/common.ts +55 -0
- package/src/domains/providers/runtimes/cloud/alcf.ts +171 -0
- package/src/domains/providers/runtimes/cloud/anthropic-max.ts +71 -0
- package/src/domains/providers/runtimes/cloud/anthropic.ts +43 -0
- package/src/domains/providers/runtimes/cloud/bedrock.ts +35 -0
- package/src/domains/providers/runtimes/cloud/deepseek.ts +50 -0
- package/src/domains/providers/runtimes/cloud/google.ts +41 -0
- package/src/domains/providers/runtimes/cloud/groq.ts +46 -0
- package/src/domains/providers/runtimes/cloud/mistral.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openai-codex.ts +49 -0
- package/src/domains/providers/runtimes/cloud/openai.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openrouter.ts +111 -0
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +423 -0
- package/src/domains/providers/runtimes/common/local-synth.ts +164 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +474 -0
- package/src/domains/providers/runtimes/local-native/lemonade-anthropic.ts +27 -0
- package/src/domains/providers/runtimes/local-native/lemonade-openai.ts +26 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +88 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +207 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +180 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +126 -0
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +98 -0
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +241 -0
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +117 -0
- package/src/domains/providers/runtimes/local-native/sglang.ts +26 -0
- package/src/domains/providers/runtimes/local-native/vllm.ts +27 -0
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +104 -0
- package/src/domains/providers/runtimes/protocol/anthropic-messages.ts +28 -0
- package/src/domains/providers/runtimes/protocol/bedrock.ts +26 -0
- package/src/domains/providers/runtimes/protocol/google.ts +27 -0
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +145 -0
- package/src/domains/providers/support.ts +241 -0
- package/src/domains/providers/thinking-control-policy.ts +85 -0
- package/src/domains/providers/types/capability-flags.ts +114 -0
- package/src/domains/providers/types/cost-provenance.ts +7 -0
- package/src/domains/providers/types/inference.ts +41 -0
- package/src/domains/providers/types/knowledge-base.ts +156 -0
- package/src/domains/providers/types/local-model-quirks.ts +216 -0
- package/src/domains/providers/types/runtime-descriptor.ts +181 -0
- package/src/domains/providers/types/target-descriptor.ts +60 -0
- package/src/domains/resources/collision.ts +92 -0
- package/src/domains/resources/common-loader.ts +140 -0
- package/src/domains/resources/contract.ts +24 -0
- package/src/domains/resources/extension.ts +59 -0
- package/src/domains/resources/index.ts +74 -0
- package/src/domains/resources/loader.ts +85 -0
- package/src/domains/resources/manifest.ts +6 -0
- package/src/domains/resources/prompts/loader.ts +246 -0
- package/src/domains/resources/prompts/substitute.ts +1 -0
- package/src/domains/resources/skills/content-hash.ts +107 -0
- package/src/domains/resources/skills/evals.ts +175 -0
- package/src/domains/resources/skills/install.ts +427 -0
- package/src/domains/resources/skills/loader.ts +985 -0
- package/src/domains/resources/skills/marketplace.ts +301 -0
- package/src/domains/resources/skills/provenance-pin.ts +115 -0
- package/src/domains/safety/action-classifier.ts +270 -0
- package/src/domains/safety/approval-axis.ts +23 -0
- package/src/domains/safety/audit.ts +493 -0
- package/src/domains/safety/autonomy.ts +174 -0
- package/src/domains/safety/call-target.ts +59 -0
- package/src/domains/safety/contract.ts +65 -0
- package/src/domains/safety/damage-control.ts +44 -0
- package/src/domains/safety/default-path-policy.ts +117 -0
- package/src/domains/safety/extension.ts +383 -0
- package/src/domains/safety/finish-contract-registration.ts +128 -0
- package/src/domains/safety/finish-contract.ts +554 -0
- package/src/domains/safety/index.ts +44 -0
- package/src/domains/safety/loop-detector.ts +143 -0
- package/src/domains/safety/manifest.ts +6 -0
- package/src/domains/safety/path-policy.ts +164 -0
- package/src/domains/safety/policy-engine.ts +994 -0
- package/src/domains/safety/project-policy.ts +391 -0
- package/src/domains/safety/protected-artifacts-registration.ts +189 -0
- package/src/domains/safety/protected-artifacts.ts +993 -0
- package/src/domains/safety/rejection-feedback.ts +102 -0
- package/src/domains/safety/rigor.ts +72 -0
- package/src/domains/safety/rule-compiler.ts +48 -0
- package/src/domains/safety/rule-pack-loader.ts +92 -0
- package/src/domains/safety/run-effects.ts +197 -0
- package/src/domains/safety/scope.ts +61 -0
- package/src/domains/scheduling/budget.ts +35 -0
- package/src/domains/scheduling/cluster.ts +175 -0
- package/src/domains/scheduling/contract.ts +30 -0
- package/src/domains/scheduling/extension.ts +91 -0
- package/src/domains/scheduling/index.ts +12 -0
- package/src/domains/scheduling/manifest.ts +6 -0
- package/src/domains/session/archive-readers.ts +208 -0
- package/src/domains/session/checkpoint.ts +38 -0
- package/src/domains/session/compaction/auto.ts +89 -0
- package/src/domains/session/compaction/branch-summary.ts +187 -0
- package/src/domains/session/compaction/compact.ts +493 -0
- package/src/domains/session/compaction/cut-point.ts +172 -0
- package/src/domains/session/compaction/defaults.ts +34 -0
- package/src/domains/session/compaction/mask-observations.ts +265 -0
- package/src/domains/session/compaction/session-entries.ts +18 -0
- package/src/domains/session/compaction/tokens.ts +148 -0
- package/src/domains/session/context-accounting.ts +583 -0
- package/src/domains/session/context-ledger.ts +362 -0
- package/src/domains/session/contract.ts +159 -0
- package/src/domains/session/cwd-fallback.ts +65 -0
- package/src/domains/session/decision-board.ts +190 -0
- package/src/domains/session/entries.ts +572 -0
- package/src/domains/session/extension.ts +403 -0
- package/src/domains/session/history.ts +172 -0
- package/src/domains/session/index.ts +84 -0
- package/src/domains/session/manager.ts +128 -0
- package/src/domains/session/manifest.ts +6 -0
- package/src/domains/session/migrations/index.ts +27 -0
- package/src/domains/session/prompt-manifest.ts +173 -0
- package/src/domains/session/protected-artifact-journal.ts +241 -0
- package/src/domains/session/protected-artifacts.ts +90 -0
- package/src/domains/session/retry.ts +230 -0
- package/src/domains/session/session-artifacts.ts +107 -0
- package/src/domains/session/task-board.ts +569 -0
- package/src/domains/session/tree/active-path.ts +137 -0
- package/src/domains/session/tree/fork.ts +159 -0
- package/src/domains/session/tree/manager.ts +128 -0
- package/src/domains/session/tree/navigator.ts +177 -0
- package/src/domains/session/tree/preview.ts +259 -0
- package/src/domains/session/usage.ts +148 -0
- package/src/domains/session/workspace/git-probe.ts +167 -0
- package/src/domains/session/workspace/index.ts +4 -0
- package/src/domains/session/workspace/project-type.ts +217 -0
- package/src/domains/session/workspace/snapshot.ts +74 -0
- package/src/domains/share/archive.ts +684 -0
- package/src/domains/share/contract.ts +9 -0
- package/src/domains/share/extension.ts +26 -0
- package/src/domains/share/index.ts +28 -0
- package/src/domains/share/manifest.ts +6 -0
- package/src/domains/user-tasks/store.ts +297 -0
- package/src/engine/acp/adapter.ts +397 -0
- package/src/engine/acp/errors.ts +128 -0
- package/src/engine/acp/event-mapper.ts +154 -0
- package/src/engine/acp/server.ts +2238 -0
- package/src/engine/acp/tool-mediator.ts +686 -0
- package/src/engine/acp/transport.ts +775 -0
- package/src/engine/acp/types.ts +196 -0
- package/src/engine/agent.ts +29 -0
- package/src/engine/ai.ts +207 -0
- package/src/engine/alcf-oauth.ts +205 -0
- package/src/engine/antigravity/subprocess-runtime.ts +205 -0
- package/src/engine/api-registry.ts +223 -0
- package/src/engine/apis/degraded-inference.ts +95 -0
- package/src/engine/apis/index.ts +16 -0
- package/src/engine/apis/llamacpp-residency.ts +292 -0
- package/src/engine/apis/lmstudio-residency.ts +76 -0
- package/src/engine/apis/lmstudio.ts +243 -0
- package/src/engine/apis/ollama-native.ts +528 -0
- package/src/engine/apis/openai-completions.ts +795 -0
- package/src/engine/apis/output-budget.ts +99 -0
- package/src/engine/apis/residency-lock.ts +29 -0
- package/src/engine/apis/residency.ts +776 -0
- package/src/engine/apis/resident-models.ts +42 -0
- package/src/engine/apis/sampling-overrides.ts +38 -0
- package/src/engine/apis/types.ts +16 -0
- package/src/engine/claude/sdk-runtime.ts +685 -0
- package/src/engine/claude/session-id.ts +5 -0
- package/src/engine/claude/subprocess-runtime.ts +316 -0
- package/src/engine/claude/tool-safety.ts +400 -0
- package/src/engine/env-api-keys.ts +98 -0
- package/src/engine/external-subprocess.ts +23 -0
- package/src/engine/gemma-channel-filter.ts +223 -0
- package/src/engine/harmony-response.ts +165 -0
- package/src/engine/instrumented-tui.ts +192 -0
- package/src/engine/loop-guard.ts +1127 -0
- package/src/engine/messages.ts +14 -0
- package/src/engine/models.ts +42 -0
- package/src/engine/oauth.ts +196 -0
- package/src/engine/pi-mono-names.ts +13 -0
- package/src/engine/prompt-templates.ts +1 -0
- package/src/engine/provider-payload.ts +272 -0
- package/src/engine/select-list.ts +53 -0
- package/src/engine/session.ts +834 -0
- package/src/engine/strip-tokenizer-sentinels.ts +125 -0
- package/src/engine/truncate.ts +9 -0
- package/src/engine/tui.ts +111 -0
- package/src/engine/types.ts +63 -0
- package/src/engine/worker-events.ts +100 -0
- package/src/engine/worker-runtime-capabilities.ts +5 -0
- package/src/engine/worker-runtime.ts +1022 -0
- package/src/engine/worker-tools.ts +208 -0
- package/src/entry/boot-options.ts +50 -0
- package/src/entry/orchestrator.ts +2011 -0
- package/src/interactive/application-controller.ts +433 -0
- package/src/interactive/bus-notices.ts +265 -0
- package/src/interactive/chat-loop-messages.ts +626 -0
- package/src/interactive/chat-loop-policy.ts +18 -0
- package/src/interactive/chat-loop.ts +1090 -0
- package/src/interactive/chat-panel.ts +1820 -0
- package/src/interactive/chat-renderer.ts +1228 -0
- package/src/interactive/clio-editor.ts +161 -0
- package/src/interactive/command-fallbacks.ts +23 -0
- package/src/interactive/command-output.ts +85 -0
- package/src/interactive/context-activity.ts +203 -0
- package/src/interactive/context-meter.ts +223 -0
- package/src/interactive/context-overlay.ts +246 -0
- package/src/interactive/cost-overlay.ts +279 -0
- package/src/interactive/dispatch-board.ts +1319 -0
- package/src/interactive/dispatch-steering.ts +86 -0
- package/src/interactive/editor-bash.ts +46 -0
- package/src/interactive/editor-steer.ts +51 -0
- package/src/interactive/editor-submit.ts +507 -0
- package/src/interactive/export-html/ansi-to-html.ts +161 -0
- package/src/interactive/export-html/index.ts +51 -0
- package/src/interactive/export-html/template.ts +45 -0
- package/src/interactive/export-html/tool-renderer.ts +54 -0
- package/src/interactive/external-editor.ts +67 -0
- package/src/interactive/follow-up-queue-panel.ts +75 -0
- package/src/interactive/footer/dashboard.ts +538 -0
- package/src/interactive/footer/notifications.ts +275 -0
- package/src/interactive/footer/widgets.ts +1264 -0
- package/src/interactive/footer-panel.ts +187 -0
- package/src/interactive/format-time.ts +97 -0
- package/src/interactive/index.ts +11 -0
- package/src/interactive/interactive-application.ts +939 -0
- package/src/interactive/interactive-event-projection.ts +385 -0
- package/src/interactive/interactive-input-runtime.ts +307 -0
- package/src/interactive/interactive-presentation.ts +584 -0
- package/src/interactive/interactive-shell.ts +388 -0
- package/src/interactive/interactive-slash-runtime.ts +554 -0
- package/src/interactive/interactive-subscriptions.ts +111 -0
- package/src/interactive/interactive-tickers.ts +183 -0
- package/src/interactive/keybinding-manager.ts +496 -0
- package/src/interactive/layout.ts +57 -0
- package/src/interactive/leader-key.ts +143 -0
- package/src/interactive/loop-guard-interrupt.ts +101 -0
- package/src/interactive/memory-overlay.ts +280 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +110 -0
- package/src/interactive/overlay-auth-lifecycle.ts +308 -0
- package/src/interactive/overlay-frame.ts +502 -0
- package/src/interactive/overlay-general-openers.ts +274 -0
- package/src/interactive/overlay-key-routing.ts +216 -0
- package/src/interactive/overlay-lifecycle.ts +426 -0
- package/src/interactive/overlay-model-selectors.ts +127 -0
- package/src/interactive/overlay-permission-lifecycle.ts +345 -0
- package/src/interactive/overlay-resource-openers.ts +112 -0
- package/src/interactive/overlay-session-lifecycle.ts +327 -0
- package/src/interactive/overlay-transitions.ts +57 -0
- package/src/interactive/overlays/agents.ts +69 -0
- package/src/interactive/overlays/ask-user.ts +921 -0
- package/src/interactive/overlays/auth-dialog.ts +221 -0
- package/src/interactive/overlays/context-reset.ts +108 -0
- package/src/interactive/overlays/cwd-fallback.ts +141 -0
- package/src/interactive/overlays/decisions.ts +300 -0
- package/src/interactive/overlays/extensions.ts +54 -0
- package/src/interactive/overlays/help-reference.ts +145 -0
- package/src/interactive/overlays/interop.ts +139 -0
- package/src/interactive/overlays/keybinding-detail.ts +90 -0
- package/src/interactive/overlays/list-overlay.ts +606 -0
- package/src/interactive/overlays/message-picker.ts +155 -0
- package/src/interactive/overlays/model-selector.ts +1109 -0
- package/src/interactive/overlays/prompts.ts +72 -0
- package/src/interactive/overlays/session-selector-search.ts +31 -0
- package/src/interactive/overlays/session-selector.ts +284 -0
- package/src/interactive/overlays/settings.ts +3451 -0
- package/src/interactive/overlays/skills-hub.ts +237 -0
- package/src/interactive/overlays/tree-selector.ts +422 -0
- package/src/interactive/permission-overlay.ts +170 -0
- package/src/interactive/render-trace.ts +534 -0
- package/src/interactive/renderers/branch-summary.ts +86 -0
- package/src/interactive/renderers/code-ink.ts +420 -0
- package/src/interactive/renderers/compaction-summary.ts +112 -0
- package/src/interactive/renderers/diff.ts +137 -0
- package/src/interactive/renderers/mermaid.ts +53 -0
- package/src/interactive/renderers/notice.ts +28 -0
- package/src/interactive/renderers/retry-status.ts +31 -0
- package/src/interactive/renderers/structured.ts +89 -0
- package/src/interactive/renderers/tool-execution.ts +1357 -0
- package/src/interactive/renderers/worker-entry.ts +280 -0
- package/src/interactive/session-last-turn.ts +186 -0
- package/src/interactive/session-switch-settlement.ts +10 -0
- package/src/interactive/session-transcript.ts +105 -0
- package/src/interactive/session-usage-reseed.ts +74 -0
- package/src/interactive/slash-autocomplete.ts +256 -0
- package/src/interactive/slash-commands.ts +1407 -0
- package/src/interactive/slash-spec.ts +424 -0
- package/src/interactive/status/controller.ts +260 -0
- package/src/interactive/status/index.ts +23 -0
- package/src/interactive/status/state-machine.ts +530 -0
- package/src/interactive/status/summary.ts +170 -0
- package/src/interactive/status/types.ts +121 -0
- package/src/interactive/status/verbs.ts +163 -0
- package/src/interactive/status/watchdog.ts +24 -0
- package/src/interactive/stdout-backpressure.ts +99 -0
- package/src/interactive/stream-pacer.ts +530 -0
- package/src/interactive/stream-pacing-policy.ts +66 -0
- package/src/interactive/tasks-overlay.ts +540 -0
- package/src/interactive/terminal-lease.ts +485 -0
- package/src/interactive/theme/components.ts +55 -0
- package/src/interactive/theme/glyphs.ts +70 -0
- package/src/interactive/theme/index.ts +15 -0
- package/src/interactive/theme/labels.ts +88 -0
- package/src/interactive/theme/rules.ts +138 -0
- package/src/interactive/theme/segments.ts +88 -0
- package/src/interactive/theme/tokens.ts +121 -0
- package/src/interactive/thinking-level-policy.ts +6 -0
- package/src/interactive/tool-prose-loop.ts +122 -0
- package/src/interactive/tool-prose-registration.ts +48 -0
- package/src/interactive/turn-context.ts +855 -0
- package/src/interactive/turn-middleware.ts +283 -0
- package/src/interactive/turn-persistence.ts +458 -0
- package/src/interactive/turn-queues.ts +181 -0
- package/src/interactive/turn-recovery.ts +323 -0
- package/src/interactive/turn-runtime.ts +869 -0
- package/src/interactive/turn-state.ts +133 -0
- package/src/interactive/view/artifacts.ts +1452 -0
- package/src/interactive/view/view-overlay.ts +735 -0
- package/src/interactive/welcome-dashboard.ts +537 -0
- package/src/interactive/worker-receipts.ts +143 -0
- package/src/interactive/worker-replay.ts +111 -0
- package/src/interactive/worker-share.ts +100 -0
- package/src/interactive/worker-stream.ts +446 -0
- package/src/interactive/workspace-facts.ts +141 -0
- package/src/tools/agent-tools.ts +402 -0
- package/src/tools/artifact.ts +103 -0
- package/src/tools/ask-user.ts +666 -0
- package/src/tools/bash.ts +204 -0
- package/src/tools/bootstrap.ts +77 -0
- package/src/tools/builtin-tool-catalog.ts +265 -0
- package/src/tools/codewiki/code-nav-surface.ts +29 -0
- package/src/tools/codewiki/code-nav.ts +549 -0
- package/src/tools/codewiki/shared.ts +118 -0
- package/src/tools/compete-worktrees.ts +898 -0
- package/src/tools/context/docs-engine.ts +630 -0
- package/src/tools/context/index.ts +514 -0
- package/src/tools/context/surface.ts +19 -0
- package/src/tools/core-bootstrap.ts +168 -0
- package/src/tools/credential-present.ts +151 -0
- package/src/tools/dispatch-admission.ts +533 -0
- package/src/tools/dispatch-arguments.ts +228 -0
- package/src/tools/dispatch-background.ts +54 -0
- package/src/tools/dispatch-event-text.ts +6 -0
- package/src/tools/dispatch-plan.ts +746 -0
- package/src/tools/dispatch-run-events.ts +238 -0
- package/src/tools/dispatch-runner.ts +2370 -0
- package/src/tools/dispatch-scout-admission.ts +295 -0
- package/src/tools/dispatch-scout.ts +461 -0
- package/src/tools/dispatch-types.ts +77 -0
- package/src/tools/dispatch.ts +244 -0
- package/src/tools/edit-diff.ts +534 -0
- package/src/tools/edit.ts +128 -0
- package/src/tools/executables.ts +22 -0
- package/src/tools/file-mutation-queue.ts +35 -0
- package/src/tools/find.ts +294 -0
- package/src/tools/grep.ts +495 -0
- package/src/tools/ignore-policy.ts +169 -0
- package/src/tools/lazy-tool.ts +60 -0
- package/src/tools/ledger.ts +206 -0
- package/src/tools/ls.ts +110 -0
- package/src/tools/monitor-surface.ts +36 -0
- package/src/tools/monitor.ts +767 -0
- package/src/tools/network-policy.ts +29 -0
- package/src/tools/observation.ts +421 -0
- package/src/tools/observers.ts +99 -0
- package/src/tools/path-utils.ts +79 -0
- package/src/tools/policy.ts +154 -0
- package/src/tools/profiles.ts +108 -0
- package/src/tools/read.ts +173 -0
- package/src/tools/registry.ts +1169 -0
- package/src/tools/result-shaping.ts +204 -0
- package/src/tools/safe-exec.ts +128 -0
- package/src/tools/spawn-hygiene.ts +182 -0
- package/src/tools/steer-surface.ts +17 -0
- package/src/tools/steer.ts +77 -0
- package/src/tools/tasks.ts +265 -0
- package/src/tools/truncate-utf8.ts +17 -0
- package/src/tools/truncate.ts +43 -0
- package/src/tools/verify/frontend.ts +687 -0
- package/src/tools/verify/index.ts +31 -0
- package/src/tools/verify/scripts.ts +108 -0
- package/src/tools/verify/surface.ts +46 -0
- package/src/tools/web-fetch-surface.ts +23 -0
- package/src/tools/web-fetch.ts +759 -0
- package/src/tools/worker-evidence.ts +215 -0
- package/src/tools/write.ts +57 -0
- package/src/utils/exif-orientation.ts +192 -0
- package/src/utils/git.ts +24 -0
- package/src/utils/image-resize.ts +148 -0
- package/src/utils/photon.ts +103 -0
- package/src/worker/control-lane.ts +22 -0
- package/src/worker/entry.ts +294 -0
- package/src/worker/event-projection.ts +56 -0
- package/src/worker/heartbeat.ts +24 -0
- package/src/worker/ledger-mirror.ts +95 -0
- package/src/worker/ndjson.ts +40 -0
- package/src/worker/protocol.ts +529 -0
- package/src/worker/resource-facts.ts +79 -0
- package/src/worker/runtime-registry.ts +12 -0
- package/src/worker/spec-contract.ts +675 -0
- package/src/worker/stdin-demux.ts +316 -0
- package/dist/acp-UMLFVA3F.js +0 -92
- package/dist/chunk-262G75JS.js +0 -35
- package/dist/chunk-6CWDTGUC.js +0 -20
- package/dist/chunk-BYEU76JP.js +0 -899
- package/dist/chunk-GNGDQYDU.js +0 -34688
- package/dist/chunk-GOTUR54M.js +0 -9
- package/dist/chunk-NI4DEJMC.js +0 -88
- package/dist/chunk-TPOCL34A.js +0 -2876
- package/dist/chunk-UU3R62TT.js +0 -128
- package/dist/clio-KIQ5SNDS.js +0 -53
- package/dist/configure-G4E3A2PG.js +0 -27
- package/dist/doctor-M5HJJZOL.js +0 -61
- package/dist/domains/agents/builtins/architect.md +0 -33
- package/dist/domains/agents/builtins/coder.md +0 -31
- package/dist/domains/agents/builtins/context-bootstrap.md +0 -38
- package/dist/domains/agents/builtins/debugger.md +0 -30
- package/dist/domains/agents/builtins/documenter.md +0 -31
- package/dist/domains/agents/builtins/git-master.md +0 -30
- package/dist/domains/agents/builtins/provenance.md +0 -30
- package/dist/domains/agents/builtins/researcher.md +0 -71
- package/dist/domains/agents/builtins/scout.md +0 -42
- package/dist/domains/agents/builtins/tester.md +0 -31
- package/dist/domains/agents/builtins/verifier.md +0 -30
- package/dist/domains/agents/builtins/wiki-writer.md +0 -41
- package/dist/fleet-preflight-CLIAX7YR.js +0 -21
- package/dist/preload-KZVHET2B.js +0 -11
- package/dist/version-ROZ6CZKH.js +0 -16
- package/docs/html/agents_blueprint.html +0 -936
- package/docs/html/alcf_blueprint.html +0 -324
- package/docs/html/architecture_blueprint.html +0 -850
- package/docs/html/commands_blueprint.html +0 -794
- package/docs/html/config_knobs_audit_blueprint.html +0 -178
- package/docs/html/configuration_blueprint.html +0 -1080
- package/docs/html/context_blueprint.html +0 -603
- package/docs/html/documentation_blueprint.html +0 -832
- package/docs/html/environment_blueprint.html +0 -404
- package/docs/html/eval_blueprint.html +0 -743
- package/docs/html/evals_internal_blueprint.html +0 -190
- package/docs/html/evolution_blueprint.html +0 -674
- package/docs/html/extensions_blueprint.html +0 -2065
- package/docs/html/fleet_dispatch_blueprint.html +0 -286
- package/docs/html/index.html +0 -919
- package/docs/html/lifecycle_blueprint.html +0 -723
- package/docs/html/memory_blueprint.html +0 -699
- package/docs/html/middleware_blueprint.html +0 -664
- package/docs/html/models_blueprint.html +0 -2366
- package/docs/html/observability_blueprint.html +0 -683
- package/docs/html/provider_adapter_blueprint.html +0 -245
- package/docs/html/safety_blueprint.html +0 -1386
- package/docs/html/shared.css +0 -571
- package/docs/html/shared.js +0 -143
- package/docs/html/skills_blueprint.html +0 -671
- package/docs/html/soak_blueprint.html +0 -182
- package/docs/html/tool_usage_blueprint.html +0 -350
- package/docs/html/tools_blueprint.html +0 -2249
- package/docs/html/trace_blueprint.html +0 -235
- package/docs/html/tui_design_blueprint.html +0 -314
- package/docs/html/validation_blueprint.html +0 -961
- package/docs/html/worker_dispatch_blueprint.html +0 -231
- package/skills/git/commit-crafting/SKILL.md +0 -79
- package/skills/git/commit-crafting/evals.md +0 -92
- package/skills/git/create-pr/SKILL.md +0 -116
- package/skills/git/create-pr/evals.md +0 -114
- package/skills/git/investigate-issue/SKILL.md +0 -139
- package/skills/git/investigate-issue/evals.md +0 -94
- package/skills/git/review-changes/SKILL.md +0 -103
- package/skills/git/review-changes/evals.md +0 -85
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic code-step runner.
|
|
3
|
+
*
|
|
4
|
+
* A known command is not a judgement call. Anything whose invocation can be
|
|
5
|
+
* written down runs here as a subprocess: it costs nothing, finishes in
|
|
6
|
+
* milliseconds, and returns the same answer every time. What comes back is a
|
|
7
|
+
* typed `code-report`, sealed like an agent's terminal result, so a red suite
|
|
8
|
+
* reaches the next builder through the same door an agent's report would have
|
|
9
|
+
* used.
|
|
10
|
+
*
|
|
11
|
+
* Unattended by construction: argv from the repo registry, fixed cwd, closed
|
|
12
|
+
* environment allowlist, bounded timeout, byte-capped capture, no stdin, no
|
|
13
|
+
* permission prompt, no shell.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { execFileSync, spawn } from "node:child_process";
|
|
17
|
+
import { createHash } from "node:crypto";
|
|
18
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
19
|
+
import { isAbsolute, join, resolve } from "node:path";
|
|
20
|
+
import { AI_AGENT_NAME } from "../../core/agent-environment.js";
|
|
21
|
+
import type { CommitAttributionEvidence } from "../../core/commit-attribution.js";
|
|
22
|
+
import {
|
|
23
|
+
gitCommitAttributionEnabled,
|
|
24
|
+
reportCommitAttributionDiagnostic,
|
|
25
|
+
withManagedGitCommitAttributionEnvironment,
|
|
26
|
+
} from "../../core/git-commit-attribution.js";
|
|
27
|
+
import { FLEET_COMMAND_BASE_ENV, type FleetCommand } from "../agents/fleet-commands.js";
|
|
28
|
+
import type { CodeReportResult } from "../agents/result-contract.js";
|
|
29
|
+
|
|
30
|
+
/** Bytes of command output retained for the artifact log. */
|
|
31
|
+
export const CODE_STEP_CAPTURE_MAX_BYTES = 1_048_576;
|
|
32
|
+
/**
|
|
33
|
+
* Bytes of command output carried inside the report itself. Enough for a
|
|
34
|
+
* builder to act on without opening the artifact, bounded so a runaway stack
|
|
35
|
+
* trace cannot swamp the next agent's context window.
|
|
36
|
+
*/
|
|
37
|
+
export const CODE_STEP_EXCERPT_MAX_BYTES = 8_000;
|
|
38
|
+
|
|
39
|
+
export const CODE_STEP_TIMEOUT_EXIT_CODE = 124;
|
|
40
|
+
export const CODE_STEP_SPAWN_FAILURE_EXIT_CODE = 127;
|
|
41
|
+
/** A commit step asked to record a tree with nothing in it. */
|
|
42
|
+
export const CODE_STEP_EMPTY_DIFF_EXIT_CODE = 125;
|
|
43
|
+
export const CODE_STEP_EMPTY_DIFF_MESSAGE = "nothing to commit: the workspace has no changes to record";
|
|
44
|
+
|
|
45
|
+
export const CODE_STEP_TRUNCATION_MARKER = "\n[... output truncated, see artifact ...]\n";
|
|
46
|
+
|
|
47
|
+
export interface CodeStepRunInput {
|
|
48
|
+
stepId: string;
|
|
49
|
+
command: FleetCommand;
|
|
50
|
+
/** Absolute workspace root the command's relative cwd resolves against. */
|
|
51
|
+
workspaceRoot: string;
|
|
52
|
+
/** Absolute directory the command log is written to; omitted means no artifact. */
|
|
53
|
+
artifactDir?: string;
|
|
54
|
+
/** Full process environment the allowlist is drawn from. Defaults to the orchestrator's. */
|
|
55
|
+
env?: NodeJS.ProcessEnv;
|
|
56
|
+
/**
|
|
57
|
+
* Values for the registry's whole-token `{{name}}` argv placeholders. This
|
|
58
|
+
* is how an agent's commit message reaches `git commit` without the agent
|
|
59
|
+
* authoring a command: the repository declares the invocation, code fills
|
|
60
|
+
* one declared slot, and the value is a single argv element that no shell
|
|
61
|
+
* ever sees.
|
|
62
|
+
*/
|
|
63
|
+
substitutions?: Readonly<Record<string, string>>;
|
|
64
|
+
/**
|
|
65
|
+
* Refuse to run against a clean tree. A commit that would record nothing is
|
|
66
|
+
* a failure, not a no-op: it means the step it describes produced nothing.
|
|
67
|
+
*/
|
|
68
|
+
requireWorkspaceChanges?: boolean;
|
|
69
|
+
/** Trusted attribution facts for a commit command; omitted uses Clio-authored child-process defaults. */
|
|
70
|
+
commitAttribution?: {
|
|
71
|
+
enabled: boolean;
|
|
72
|
+
evidence: Readonly<CommitAttributionEvidence>;
|
|
73
|
+
};
|
|
74
|
+
signal?: AbortSignal;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Receipt-equivalent provenance for one deterministic run. It records exactly
|
|
79
|
+
* what ran, where, for how long, and what came back, without inventing any of
|
|
80
|
+
* the model-run facts (tokens, cost, route) a code step does not have.
|
|
81
|
+
*/
|
|
82
|
+
export interface CodeStepRecord {
|
|
83
|
+
version: 1;
|
|
84
|
+
runId: string;
|
|
85
|
+
stepId: string;
|
|
86
|
+
commandId: string;
|
|
87
|
+
argv: ReadonlyArray<string>;
|
|
88
|
+
cwd: string;
|
|
89
|
+
envNames: ReadonlyArray<string>;
|
|
90
|
+
timeoutMs: number;
|
|
91
|
+
startedAt: string;
|
|
92
|
+
endedAt: string;
|
|
93
|
+
durationMs: number;
|
|
94
|
+
exitCode: number;
|
|
95
|
+
signal: string | null;
|
|
96
|
+
timedOut: boolean;
|
|
97
|
+
/** Bytes the command produced before any cap was applied. */
|
|
98
|
+
outputBytes: number;
|
|
99
|
+
outputTruncated: boolean;
|
|
100
|
+
/** SHA-256 over the captured (post-cap) output, so the artifact is checkable. */
|
|
101
|
+
outputDigest: string;
|
|
102
|
+
artifactPaths: ReadonlyArray<string>;
|
|
103
|
+
/** SHA-256 over the canonical report, the code step's stand-in for a receipt digest. */
|
|
104
|
+
reportDigest: string;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface CodeStepOutcome {
|
|
108
|
+
report: CodeReportResult;
|
|
109
|
+
record: CodeStepRecord;
|
|
110
|
+
/** Canonical JSON of the report; this is the text that crosses plan edges. */
|
|
111
|
+
output: string;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Stable stringification of the report, so its digest is reproducible. */
|
|
115
|
+
export function canonicalCodeReport(report: CodeReportResult): string {
|
|
116
|
+
return JSON.stringify({
|
|
117
|
+
passed: report.passed,
|
|
118
|
+
exitCode: report.exitCode,
|
|
119
|
+
checks: report.checks.map((check) => ({ name: check.name, passed: check.passed, evidence: check.evidence })),
|
|
120
|
+
artifactPaths: [...report.artifactPaths],
|
|
121
|
+
outputExcerpt: report.outputExcerpt,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function codeReportDigest(report: CodeReportResult): string {
|
|
126
|
+
return createHash("sha256").update(canonicalCodeReport(report), "utf8").digest("hex");
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function sha256(value: string): string {
|
|
130
|
+
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/** Keep the tail: a failing command explains itself at the end, not the start. */
|
|
134
|
+
function tailUtf8(value: Buffer, limit: number, marker: string): { text: string; truncated: boolean } {
|
|
135
|
+
if (value.length <= limit) return { text: value.toString("utf8"), truncated: false };
|
|
136
|
+
return { text: marker + value.subarray(value.length - limit).toString("utf8"), truncated: true };
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function resolveCwd(command: FleetCommand, workspaceRoot: string): string {
|
|
140
|
+
const root = resolve(workspaceRoot);
|
|
141
|
+
if (command.cwd === "") return root;
|
|
142
|
+
const target = resolve(root, command.cwd);
|
|
143
|
+
if (!target.startsWith(root)) throw new Error(`code step: command '${command.id}' cwd escapes the workspace`);
|
|
144
|
+
return target;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** Closed environment: the base allowlist plus whatever this command declared. */
|
|
148
|
+
export function codeStepEnv(command: FleetCommand, source: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
|
|
149
|
+
const names = [...FLEET_COMMAND_BASE_ENV, ...command.env];
|
|
150
|
+
const env: NodeJS.ProcessEnv = {};
|
|
151
|
+
for (const name of names) {
|
|
152
|
+
const value = source[name];
|
|
153
|
+
if (value !== undefined) env[name] = value;
|
|
154
|
+
}
|
|
155
|
+
env.AI_AGENT = AI_AGENT_NAME;
|
|
156
|
+
return env;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const ARGV_PLACEHOLDER = /^\{\{\s*([A-Za-z][A-Za-z0-9_]*)\s*\}\}$/u;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Bind a registered command's argv.
|
|
163
|
+
*
|
|
164
|
+
* Substitution is whole-token only. `{{commitMessage}}` is one argv element and
|
|
165
|
+
* becomes exactly one argv element; a token that merely embeds a placeholder is
|
|
166
|
+
* refused, so a supplied value can never grow a flag or split into two
|
|
167
|
+
* arguments. An unbound placeholder is an error rather than an empty string:
|
|
168
|
+
* committing with an empty message is the failure this check exists to stop.
|
|
169
|
+
*/
|
|
170
|
+
export function resolveCommandArgv(
|
|
171
|
+
command: FleetCommand,
|
|
172
|
+
substitutions: Readonly<Record<string, string>> = {},
|
|
173
|
+
): string[] {
|
|
174
|
+
return command.argv.map((token) => {
|
|
175
|
+
const match = ARGV_PLACEHOLDER.exec(token);
|
|
176
|
+
if (match === null) {
|
|
177
|
+
if (token.includes("{{")) {
|
|
178
|
+
throw new Error(`code step: command '${command.id}' argv token '${token}' embeds a placeholder`);
|
|
179
|
+
}
|
|
180
|
+
return token;
|
|
181
|
+
}
|
|
182
|
+
const name = match[1] ?? "";
|
|
183
|
+
const value = substitutions[name];
|
|
184
|
+
if (value === undefined || value.length === 0) {
|
|
185
|
+
throw new Error(`code step: command '${command.id}' has no value for placeholder '{{${name}}}'`);
|
|
186
|
+
}
|
|
187
|
+
return value;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** Whether the checkout has anything a commit could record. */
|
|
192
|
+
export function workspaceHasChanges(root: string): boolean {
|
|
193
|
+
const status = execFileSync("git", ["-C", root, "status", "--porcelain", "-uall"], {
|
|
194
|
+
encoding: "utf8",
|
|
195
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
196
|
+
timeout: 30_000,
|
|
197
|
+
});
|
|
198
|
+
return status.trim().length > 0;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function newCodeRunId(): string {
|
|
202
|
+
return `code-${createHash("sha256")
|
|
203
|
+
.update(`${process.pid}:${Date.now()}:${Math.random()}`)
|
|
204
|
+
.digest("hex")
|
|
205
|
+
.slice(0, 12)}`;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
interface SpawnOutcome {
|
|
209
|
+
exitCode: number;
|
|
210
|
+
signal: string | null;
|
|
211
|
+
timedOut: boolean;
|
|
212
|
+
captured: Buffer;
|
|
213
|
+
outputBytes: number;
|
|
214
|
+
spawnError: string | null;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
async function spawnCommand(input: CodeStepRunInput, cwd: string, argv: ReadonlyArray<string>): Promise<SpawnOutcome> {
|
|
218
|
+
const command = input.command;
|
|
219
|
+
const [executable, ...args] = argv;
|
|
220
|
+
if (executable === undefined) throw new Error(`code step: command '${command.id}' has no executable`);
|
|
221
|
+
return await new Promise<SpawnOutcome>((resolvePromise) => {
|
|
222
|
+
const attribution = withManagedGitCommitAttributionEnvironment(codeStepEnv(command, input.env ?? process.env), {
|
|
223
|
+
cwd,
|
|
224
|
+
enabled: input.commitAttribution?.enabled ?? gitCommitAttributionEnabled(process.env),
|
|
225
|
+
...(input.commitAttribution?.evidence === undefined ? {} : { evidence: input.commitAttribution.evidence }),
|
|
226
|
+
});
|
|
227
|
+
reportCommitAttributionDiagnostic(attribution.diagnostic);
|
|
228
|
+
const chunks: Buffer[] = [];
|
|
229
|
+
let outputBytes = 0;
|
|
230
|
+
let captured = 0;
|
|
231
|
+
let settled = false;
|
|
232
|
+
let timedOut = false;
|
|
233
|
+
let spawnError: string | null = null;
|
|
234
|
+
const child = spawn(executable, args, {
|
|
235
|
+
cwd,
|
|
236
|
+
env: attribution.env,
|
|
237
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
238
|
+
// The command leads its own process group, so a timeout kills the
|
|
239
|
+
// whole tree rather than orphaning a test runner's children.
|
|
240
|
+
detached: process.platform !== "win32",
|
|
241
|
+
});
|
|
242
|
+
const collect = (chunk: Buffer): void => {
|
|
243
|
+
outputBytes += chunk.length;
|
|
244
|
+
if (captured >= CODE_STEP_CAPTURE_MAX_BYTES) return;
|
|
245
|
+
const room = CODE_STEP_CAPTURE_MAX_BYTES - captured;
|
|
246
|
+
const slice = chunk.length <= room ? chunk : chunk.subarray(0, room);
|
|
247
|
+
chunks.push(slice);
|
|
248
|
+
captured += slice.length;
|
|
249
|
+
};
|
|
250
|
+
child.stdout?.on("data", collect);
|
|
251
|
+
child.stderr?.on("data", collect);
|
|
252
|
+
const kill = (): void => {
|
|
253
|
+
if (child.pid === undefined) return;
|
|
254
|
+
try {
|
|
255
|
+
if (process.platform === "win32") child.kill("SIGKILL");
|
|
256
|
+
else process.kill(-child.pid, "SIGKILL");
|
|
257
|
+
} catch {
|
|
258
|
+
child.kill("SIGKILL");
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
const timer = setTimeout(() => {
|
|
262
|
+
timedOut = true;
|
|
263
|
+
kill();
|
|
264
|
+
}, command.timeoutMs);
|
|
265
|
+
const onAbort = (): void => {
|
|
266
|
+
kill();
|
|
267
|
+
};
|
|
268
|
+
input.signal?.addEventListener("abort", onAbort, { once: true });
|
|
269
|
+
const finish = (exitCode: number, signal: string | null): void => {
|
|
270
|
+
if (settled) return;
|
|
271
|
+
settled = true;
|
|
272
|
+
clearTimeout(timer);
|
|
273
|
+
input.signal?.removeEventListener("abort", onAbort);
|
|
274
|
+
resolvePromise({
|
|
275
|
+
exitCode,
|
|
276
|
+
signal,
|
|
277
|
+
timedOut,
|
|
278
|
+
captured: Buffer.concat(chunks),
|
|
279
|
+
outputBytes,
|
|
280
|
+
spawnError,
|
|
281
|
+
});
|
|
282
|
+
};
|
|
283
|
+
child.on("error", (error) => {
|
|
284
|
+
// A missing binary lands here. Exit 127 with the real message beats a
|
|
285
|
+
// preflight probe that guesses.
|
|
286
|
+
spawnError = error instanceof Error ? error.message : String(error);
|
|
287
|
+
finish(CODE_STEP_SPAWN_FAILURE_EXIT_CODE, null);
|
|
288
|
+
});
|
|
289
|
+
child.on("close", (code, signal) => {
|
|
290
|
+
if (timedOut) return finish(CODE_STEP_TIMEOUT_EXIT_CODE, signal);
|
|
291
|
+
if (code !== null) return finish(code, signal);
|
|
292
|
+
finish(signal === null ? 1 : 128, signal);
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Run one registered command and return its typed report plus the provenance
|
|
299
|
+
* record. Never throws for a failing command: a red suite is a successful run
|
|
300
|
+
* of the runner and a conformant report, and the plan decides what that means.
|
|
301
|
+
*/
|
|
302
|
+
export async function runCodeStep(input: CodeStepRunInput): Promise<CodeStepOutcome> {
|
|
303
|
+
const command = input.command;
|
|
304
|
+
if (input.artifactDir !== undefined && !isAbsolute(input.artifactDir)) {
|
|
305
|
+
throw new Error("code step: artifactDir must be absolute");
|
|
306
|
+
}
|
|
307
|
+
const cwd = resolveCwd(command, input.workspaceRoot);
|
|
308
|
+
const runId = newCodeRunId();
|
|
309
|
+
const argv = resolveCommandArgv(command, input.substitutions);
|
|
310
|
+
const startedAtMs = Date.now();
|
|
311
|
+
const clock = process.hrtime.bigint();
|
|
312
|
+
const startedAt = new Date(startedAtMs).toISOString();
|
|
313
|
+
const emptyWorkspace = input.requireWorkspaceChanges === true && !workspaceHasChanges(cwd);
|
|
314
|
+
const spawned = emptyWorkspace
|
|
315
|
+
? {
|
|
316
|
+
exitCode: CODE_STEP_EMPTY_DIFF_EXIT_CODE,
|
|
317
|
+
signal: null,
|
|
318
|
+
timedOut: false,
|
|
319
|
+
captured: Buffer.from(`${CODE_STEP_EMPTY_DIFF_MESSAGE}\n`, "utf8"),
|
|
320
|
+
outputBytes: 0,
|
|
321
|
+
spawnError: null,
|
|
322
|
+
}
|
|
323
|
+
: await spawnCommand(input, cwd, argv);
|
|
324
|
+
const durationMs = Number((process.hrtime.bigint() - clock) / 1_000_000n);
|
|
325
|
+
const endedAt = new Date(startedAtMs + durationMs).toISOString();
|
|
326
|
+
const capturedText =
|
|
327
|
+
spawned.captured.toString("utf8") + (spawned.spawnError === null ? "" : `\n${spawned.spawnError}\n`);
|
|
328
|
+
const printed = Buffer.from(capturedText, "utf8");
|
|
329
|
+
const excerpt = tailUtf8(printed, CODE_STEP_EXCERPT_MAX_BYTES, CODE_STEP_TRUNCATION_MARKER);
|
|
330
|
+
const rendered = argv.join(" ");
|
|
331
|
+
const passed = spawned.exitCode === 0;
|
|
332
|
+
const evidence = emptyWorkspace
|
|
333
|
+
? CODE_STEP_EMPTY_DIFF_MESSAGE
|
|
334
|
+
: spawned.timedOut
|
|
335
|
+
? `timed out after ${command.timeoutMs}ms (exit ${spawned.exitCode})`
|
|
336
|
+
: `exit ${spawned.exitCode} in ${durationMs}ms`;
|
|
337
|
+
|
|
338
|
+
const artifactPaths: string[] = [];
|
|
339
|
+
if (input.artifactDir !== undefined) {
|
|
340
|
+
const artifactPath = join(input.artifactDir, `${input.stepId}.log`);
|
|
341
|
+
mkdirSync(input.artifactDir, { recursive: true });
|
|
342
|
+
writeFileSync(
|
|
343
|
+
artifactPath,
|
|
344
|
+
[
|
|
345
|
+
`$ ${rendered}`,
|
|
346
|
+
`cwd: ${cwd}`,
|
|
347
|
+
`exit: ${spawned.exitCode}`,
|
|
348
|
+
`duration_ms: ${durationMs}`,
|
|
349
|
+
`timed_out: ${spawned.timedOut}`,
|
|
350
|
+
"",
|
|
351
|
+
capturedText,
|
|
352
|
+
].join("\n"),
|
|
353
|
+
"utf8",
|
|
354
|
+
);
|
|
355
|
+
artifactPaths.push(artifactPath);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
const report: CodeReportResult = {
|
|
359
|
+
passed,
|
|
360
|
+
exitCode: spawned.exitCode,
|
|
361
|
+
checks: [{ name: command.id, passed, evidence: `\`${rendered}\` ${evidence}` }],
|
|
362
|
+
artifactPaths,
|
|
363
|
+
outputExcerpt: excerpt.text,
|
|
364
|
+
};
|
|
365
|
+
const record: CodeStepRecord = {
|
|
366
|
+
version: 1,
|
|
367
|
+
runId,
|
|
368
|
+
stepId: input.stepId,
|
|
369
|
+
commandId: command.id,
|
|
370
|
+
argv: [...argv],
|
|
371
|
+
cwd,
|
|
372
|
+
envNames: [...FLEET_COMMAND_BASE_ENV, ...command.env],
|
|
373
|
+
timeoutMs: command.timeoutMs,
|
|
374
|
+
startedAt,
|
|
375
|
+
endedAt,
|
|
376
|
+
durationMs,
|
|
377
|
+
exitCode: spawned.exitCode,
|
|
378
|
+
signal: spawned.signal,
|
|
379
|
+
timedOut: spawned.timedOut,
|
|
380
|
+
outputBytes: spawned.outputBytes,
|
|
381
|
+
outputTruncated: spawned.outputBytes > spawned.captured.length || excerpt.truncated,
|
|
382
|
+
outputDigest: sha256(capturedText),
|
|
383
|
+
artifactPaths,
|
|
384
|
+
reportDigest: codeReportDigest(report),
|
|
385
|
+
};
|
|
386
|
+
return { report, record, output: canonicalCodeReport(report) };
|
|
387
|
+
}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import type { SafeEventBus } from "../../core/event-bus.js";
|
|
2
|
+
import type { ResultContract } from "../agents/result-contract.js";
|
|
3
|
+
import type { AgentAutomationAuthority, AgentSpec } from "../agents/spec.js";
|
|
4
|
+
import type { CostProvenance } from "../providers/index.js";
|
|
5
|
+
import type { ProtectedArtifactState } from "../safety/protected-artifacts.js";
|
|
6
|
+
import type { AssignmentId, DispatchAssignment } from "./assignment.js";
|
|
7
|
+
import type { DurableAssignmentRecord } from "./assignment-store.js";
|
|
8
|
+
import type { DetachedBatchRecord, RegisterDetachedBatchInput } from "./batch-store.js";
|
|
9
|
+
import type { ExecutionRole } from "./execution-role.js";
|
|
10
|
+
import type { DispatchReservationRecord, ReservationTopology } from "./reservation-store.js";
|
|
11
|
+
import type { ApprovedAssignmentRoute } from "./route-approval.js";
|
|
12
|
+
import type { RouteDecisionV1 } from "./route-decision.js";
|
|
13
|
+
import type { RunEnvelope, RunLineage, RunNodeIdentity, RunPhaseDurations, RunReceipt, RunStatus } from "./types.js";
|
|
14
|
+
import type { DispatchFailoverCandidate, JobSpec } from "./validation.js";
|
|
15
|
+
|
|
16
|
+
export interface DispatchRequest extends JobSpec {
|
|
17
|
+
/**
|
|
18
|
+
* Semantic role this request's first attempt runs under. Derived once by
|
|
19
|
+
* `execution-role.ts` at request construction, never authored by a model, and
|
|
20
|
+
* never inferred later: it is what separates builder, gate, reconnaissance,
|
|
21
|
+
* and recovery route statistics from each other.
|
|
22
|
+
*/
|
|
23
|
+
executionRole: ExecutionRole;
|
|
24
|
+
/** Concrete baseline plus trusted auto authority; the literal id "auto" never crosses this boundary. */
|
|
25
|
+
agentSelection?: {
|
|
26
|
+
version: 1;
|
|
27
|
+
mode: "auto";
|
|
28
|
+
baselineAgentId: string;
|
|
29
|
+
approvedAuthorities: ReadonlyArray<AgentAutomationAuthority>;
|
|
30
|
+
authorityBasis: "operator-plan-approval" | "full-auto-policy";
|
|
31
|
+
};
|
|
32
|
+
systemPrompt?: string;
|
|
33
|
+
/** Trusted side-store lease reference; never serialized into a worker spec or receipt. */
|
|
34
|
+
reservation?: { ownerId: string; memberId: string };
|
|
35
|
+
/** Registry-authenticated active approval; never accepted from model JSON. */
|
|
36
|
+
routeApproval?: ApprovedAssignmentRoute;
|
|
37
|
+
/** Resolver-authored active decision for this approved recovery attempt. */
|
|
38
|
+
routeAttemptDecision?: ApprovedAssignmentRoute["decision"];
|
|
39
|
+
/**
|
|
40
|
+
* The agent ledger this run coordinates on. Set by the dispatch modes that
|
|
41
|
+
* run two or more concurrent peers; absent everywhere else, and its absence
|
|
42
|
+
* strips the ledger tool from this run's admitted surface.
|
|
43
|
+
*/
|
|
44
|
+
ledger?: { id: string; sequence: number };
|
|
45
|
+
/** Absolute root-assignment deadline derived once from the approved duration. */
|
|
46
|
+
assignmentDeadlineAt?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Tool call the caller was executing when it built this request. Stamped by
|
|
49
|
+
* the dispatch tool from its own invocation id and republished on
|
|
50
|
+
* DispatchStarted so a transcript can nest the worker under the tool segment
|
|
51
|
+
* that spawned it. It is deliberately NOT part of JobSpec: model JSON must
|
|
52
|
+
* never be able to claim parentage of a tool call it did not make, so the
|
|
53
|
+
* validation projection strips it like the reservation and ledger refs.
|
|
54
|
+
*/
|
|
55
|
+
parentToolCallId?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Internal, non-serializable admission hook for transactional resource owners. */
|
|
59
|
+
export interface DispatchAdmissionObserver {
|
|
60
|
+
onAdmitted(run: { runId: string; pid: number | null; runtimeKind: RunEnvelope["runtimeKind"] }): void;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Side-effect-free effective routing used to construct a dispatch approval artifact. */
|
|
64
|
+
export interface DispatchPlanTaskResolution {
|
|
65
|
+
agentId: string;
|
|
66
|
+
/** Stable identity of the recipe surface this route would execute. */
|
|
67
|
+
specFingerprint: string;
|
|
68
|
+
targetId: string;
|
|
69
|
+
wireModelId: string;
|
|
70
|
+
runtimeId: string;
|
|
71
|
+
node: RunNodeIdentity;
|
|
72
|
+
/** Effective thinking control for this route; null when the runtime has none. */
|
|
73
|
+
thinkingLevel: string | null;
|
|
74
|
+
/** Effective tool surface after the runtime narrows it; part of route identity. */
|
|
75
|
+
toolSignature: string;
|
|
76
|
+
endpointIdentityHash: string;
|
|
77
|
+
settingsFingerprint: string;
|
|
78
|
+
/** Conservative effective-pricing estimate; unknown pricing is never zero. */
|
|
79
|
+
costUpperBoundUsd: number;
|
|
80
|
+
/** False when the numeric estimate is only the unknown-pricing admission sentinel. */
|
|
81
|
+
costUpperBoundKnown: boolean;
|
|
82
|
+
/** Required plan projection: null means this task remains shadow/fixed. */
|
|
83
|
+
routeApproval: ApprovedAssignmentRoute | null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface DispatchAgentPlanResolution {
|
|
87
|
+
resolution: DispatchPlanTaskResolution;
|
|
88
|
+
decision: RouteDecisionV1;
|
|
89
|
+
agentSpec: AgentSpec;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface DispatchAgentPlanInput {
|
|
93
|
+
request: DispatchRequest;
|
|
94
|
+
expectedResultContract: ResultContract["kind"];
|
|
95
|
+
requestedAuthority: AgentAutomationAuthority;
|
|
96
|
+
authorization: "operator-plan-approval" | "full-auto-policy";
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Read-only operator snapshot of orchestrator state. Drawn from in-memory
|
|
101
|
+
* dispatch state plus the ledger mirror; performs no I/O and is never
|
|
102
|
+
* required for correctness. Consumers wrap their own rendering errors.
|
|
103
|
+
*/
|
|
104
|
+
export interface DispatchSnapshot {
|
|
105
|
+
generatedAt: string;
|
|
106
|
+
running: Array<{
|
|
107
|
+
runId: string;
|
|
108
|
+
agentId: string;
|
|
109
|
+
task?: string;
|
|
110
|
+
runtimeKind: string;
|
|
111
|
+
outcomePhase: string;
|
|
112
|
+
heartbeat: "alive" | "stale" | "dead" | "n/a";
|
|
113
|
+
lineage: RunLineage;
|
|
114
|
+
startedAt: string;
|
|
115
|
+
/** Execution-only elapsed time retained for runtime monitoring. */
|
|
116
|
+
elapsedMs: number;
|
|
117
|
+
/** Routing-system phases, including total user-observed time. */
|
|
118
|
+
timing?: RunPhaseDurations;
|
|
119
|
+
tokens: { input: number; output: number; total: number };
|
|
120
|
+
costUsd: number;
|
|
121
|
+
costProvenance?: CostProvenance;
|
|
122
|
+
/** Fleet node this run was placed on; null means the local node. */
|
|
123
|
+
node: RunNodeIdentity | null;
|
|
124
|
+
}>;
|
|
125
|
+
retrying: Array<{ runId: string; agentId: string; task?: string; attempt: number; dueAt: string; reason: string }>;
|
|
126
|
+
totals: {
|
|
127
|
+
inputTokens: number;
|
|
128
|
+
outputTokens: number;
|
|
129
|
+
totalTokens: number;
|
|
130
|
+
costUsd: number;
|
|
131
|
+
/** Structural mirror of observability's CostAggregate; `calls` is what separates unpriced from priced-at-zero. */
|
|
132
|
+
cost?: { knownUsd: number; hasEstimated: boolean; hasUnknown: boolean; allKnownFree: boolean; calls: number };
|
|
133
|
+
runtimeSeconds: number;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Why a run is being aborted. Absent means an operator/user cancel. A caller
|
|
139
|
+
* that time-boxes a run (dispatch `timeout_ms`) passes the timeout cause so the
|
|
140
|
+
* receipt names the timeout instead of laundering it into "operator abort".
|
|
141
|
+
*/
|
|
142
|
+
export interface AbortReason {
|
|
143
|
+
cause: "timeout";
|
|
144
|
+
detail: string;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Durable detached-batch surface. A detached dispatch's grouping and
|
|
149
|
+
* collection state persist under the state dir (`batches.json`) so a barrier
|
|
150
|
+
* collect works after session exit and completion nudges stay suppressed once
|
|
151
|
+
* a batch is collected. Optional so lightweight contract fakes need not
|
|
152
|
+
* implement it; the real dispatch extension always does.
|
|
153
|
+
*/
|
|
154
|
+
export interface DetachedBatchesContract {
|
|
155
|
+
register(input: RegisterDetachedBatchInput): Promise<DetachedBatchRecord>;
|
|
156
|
+
get(batchId: string): DetachedBatchRecord | null;
|
|
157
|
+
list(opts?: { includeCollected?: boolean }): ReadonlyArray<DetachedBatchRecord>;
|
|
158
|
+
markCollected(batchId: string): Promise<DetachedBatchRecord | null>;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export interface DispatchContract {
|
|
162
|
+
/** True when the domain event pump publishes DispatchProgress itself. */
|
|
163
|
+
readonly publishesProgress?: boolean;
|
|
164
|
+
/** Whether `bus` is the same bus already owned by the domain progress pump. */
|
|
165
|
+
ownsProgressBus?(bus: SafeEventBus | undefined): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Resolve effective agent/target/model/node without launching or acquiring a
|
|
168
|
+
* slot. Callers pin this result into the approved request; later placement
|
|
169
|
+
* failure aborts rather than choosing a different unapproved node.
|
|
170
|
+
*/
|
|
171
|
+
preview?(req: DispatchRequest): DispatchPlanTaskResolution;
|
|
172
|
+
/** One shared joint-resolver proposal for a typed Scout successor; never a second agent selector. */
|
|
173
|
+
planAgentSelection(input: DispatchAgentPlanInput): DispatchAgentPlanResolution;
|
|
174
|
+
/**
|
|
175
|
+
* Bounded, deterministic route envelope a plan may approve for this request:
|
|
176
|
+
* the resolved route first, then hard-constraint-eligible alternates. Plan
|
|
177
|
+
* approval seals this list so failover stays inside what the operator saw.
|
|
178
|
+
*/
|
|
179
|
+
routeCandidates?(req: DispatchRequest): ReadonlyArray<DispatchFailoverCandidate>;
|
|
180
|
+
/** Durable transactional reservations prepared before a plan can be approved. */
|
|
181
|
+
readonly reservations?: {
|
|
182
|
+
prepare(input: {
|
|
183
|
+
topology: ReservationTopology;
|
|
184
|
+
tasks: ReadonlyArray<{ memberId: string; wave: number; resolution: DispatchPlanTaskResolution }>;
|
|
185
|
+
}): DispatchReservationRecord;
|
|
186
|
+
rollback(ownerId: string): DispatchReservationRecord | null;
|
|
187
|
+
rollbackUnconsumed(ownerId: string): DispatchReservationRecord | null;
|
|
188
|
+
get(ownerId: string): DispatchReservationRecord | null;
|
|
189
|
+
};
|
|
190
|
+
/** Session scheduling ceiling captured in the same immutable approval artifact. */
|
|
191
|
+
costCeilingUsd?(): number;
|
|
192
|
+
/** Current trusted hard-block state for coordinator-side merge validation. */
|
|
193
|
+
protectedArtifactState?(): ProtectedArtifactState;
|
|
194
|
+
/** Validate + admit + spawn a native worker. Returns run id + promise. */
|
|
195
|
+
dispatch(
|
|
196
|
+
req: DispatchRequest,
|
|
197
|
+
observer?: DispatchAdmissionObserver,
|
|
198
|
+
): Promise<{
|
|
199
|
+
runId: string;
|
|
200
|
+
events: AsyncIterableIterator<unknown>;
|
|
201
|
+
finalPromise: Promise<RunReceipt>;
|
|
202
|
+
}>;
|
|
203
|
+
|
|
204
|
+
/** Spawn a group of dispatches and expose one merged batch event stream. */
|
|
205
|
+
dispatchBatch(reqs: ReadonlyArray<DispatchRequest>): Promise<{
|
|
206
|
+
batchId: string;
|
|
207
|
+
/** Logical work ids, one per request in admission order. */
|
|
208
|
+
assignmentIds: ReadonlyArray<string>;
|
|
209
|
+
events: AsyncIterableIterator<unknown>;
|
|
210
|
+
finalPromise: Promise<ReadonlyArray<RunReceipt>>;
|
|
211
|
+
}>;
|
|
212
|
+
|
|
213
|
+
/** List runs from the ledger. */
|
|
214
|
+
listRuns(status?: RunStatus): ReadonlyArray<RunEnvelope>;
|
|
215
|
+
|
|
216
|
+
/** Get a specific immutable attempt envelope. */
|
|
217
|
+
getRun(runId: string): RunEnvelope | null;
|
|
218
|
+
|
|
219
|
+
/** In-memory logical assignment state and complete finalized-attempt history. */
|
|
220
|
+
readonly assignments?: {
|
|
221
|
+
/** Live assignment, including its terminal promise and detailed attempt refs. */
|
|
222
|
+
get(id: AssignmentId | string): DispatchAssignment | null;
|
|
223
|
+
/** Durable status/history, available after process restart. */
|
|
224
|
+
getStored(id: AssignmentId | string): DurableAssignmentRecord | null;
|
|
225
|
+
/**
|
|
226
|
+
* Resolve once every in-flight durable assignment write has landed. A
|
|
227
|
+
* detached caller awaits this so its assignment records exist before it
|
|
228
|
+
* returns; immediate collection then sees the assignment rather than
|
|
229
|
+
* falling back to a bare first-attempt run row.
|
|
230
|
+
*/
|
|
231
|
+
flushWrites?(): Promise<void>;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Abort a logical assignment or an individual running attempt. Assignment ids
|
|
236
|
+
* address the current attempt and suppress pending/future retries. Absent
|
|
237
|
+
* `reason` means an operator/user cancel, sealed
|
|
238
|
+
* as `outcome=canceled, outcomeDetail="operator abort"`. Pass a reason to
|
|
239
|
+
* record a non-operator cause (e.g. a dispatch `timeout_ms`) in the receipt's
|
|
240
|
+
* outcomeDetail so a time-boxed kill is distinguishable from an operator
|
|
241
|
+
* cancel; the outcome stays `canceled`.
|
|
242
|
+
*/
|
|
243
|
+
abort(runId: string, reason?: AbortReason): void;
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Queue operator guidance on a running HTTP or SDK worker. A logical
|
|
247
|
+
* assignment id addresses its current attempt. The text is sent as a JSON
|
|
248
|
+
* line on the worker's open stdin and injected into its transcript at the
|
|
249
|
+
* next loop boundary; the worker acknowledges runtime acceptance with a
|
|
250
|
+
* `clio_steer_received` event. Throws with an operator-facing message when
|
|
251
|
+
* the run is unknown or inactive, when the runtime is a single-shot
|
|
252
|
+
* subprocess or ACP delegation, or when the worker's stdin is already gone.
|
|
253
|
+
*/
|
|
254
|
+
steer(runId: string, text: string): void;
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Apply an operator's decision to a parked permission escalation on a
|
|
258
|
+
* running native worker. A logical assignment id addresses its current attempt (onPermission="escalate"). Writes a
|
|
259
|
+
* `permission_decision` JSON line on the worker's open stdin; the worker
|
|
260
|
+
* releases or denies the parked tool call and acks with a
|
|
261
|
+
* `clio_permission_resolved` event. Human-only: no model-facing tool can
|
|
262
|
+
* reach this. Throws with an operator-facing message when the run is
|
|
263
|
+
* unknown or no longer active, when the run kind has no stdin channel
|
|
264
|
+
* (acp-delegation), or when the worker's stdin is already gone. Mirrors
|
|
265
|
+
* steer's validation and error wording. Optional so lightweight contract
|
|
266
|
+
* fakes need not implement it; the real dispatch extension always does.
|
|
267
|
+
*/
|
|
268
|
+
resolveWorkerPermission?(runId: string, requestId: string, decision: "approve" | "deny"): void;
|
|
269
|
+
|
|
270
|
+
/** Durable detached-batch records for async fan-out + collect. */
|
|
271
|
+
detached?: DetachedBatchesContract;
|
|
272
|
+
|
|
273
|
+
/** Read-only runtime snapshot for operator surfaces. */
|
|
274
|
+
snapshot(): DispatchSnapshot;
|
|
275
|
+
|
|
276
|
+
/** Drain active runs on shutdown (SIGTERM + grace + SIGKILL). */
|
|
277
|
+
drain(): Promise<void>;
|
|
278
|
+
}
|