@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
package/src/cli/index.ts
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The process table is the only place an integrator can identify a running Clio
|
|
3
|
+
// Coder without sniffing script paths, and the bin name never reaches it because
|
|
4
|
+
// the entry is a node script. Set it before anything can fail so `--version` and
|
|
5
|
+
// a crashed boot are both legible to `ps`, `pgrep -f`, and htop.
|
|
6
|
+
process.title = "clio-coder";
|
|
7
|
+
|
|
8
|
+
import { AI_AGENT_NAME } from "../core/agent-environment.js";
|
|
9
|
+
|
|
10
|
+
// Pi and other agent-aware developer tools use this generic marker to
|
|
11
|
+
// attribute subprocess activity without knowing Clio-specific variables.
|
|
12
|
+
// Set it unconditionally so every child inherits the actual spawning agent.
|
|
13
|
+
process.env.AI_AGENT = AI_AGENT_NAME;
|
|
14
|
+
|
|
15
|
+
// Only argument parsing and boot tracing load statically. Every subcommand is
|
|
16
|
+
// imported dynamically through the command registry (see `dispatch`), so a bare `clio`
|
|
17
|
+
// (interactive) or `clio-coder --version` pays for its own module graph and nothing
|
|
18
|
+
// else — this is the highest-value cut of the cold module-load tax. Code
|
|
19
|
+
// splitting (tsup.config.ts) keeps each command's transitive heavy externals in
|
|
20
|
+
// its own chunk.
|
|
21
|
+
import { traceBoot } from "../core/boot-trace.js";
|
|
22
|
+
import { incompleteInstallationAdvice } from "../core/incomplete-installation.js";
|
|
23
|
+
import { extractGlobalFlags, parseFlags, printError } from "./argv.js";
|
|
24
|
+
|
|
25
|
+
const HELP = `Clio Coder command line
|
|
26
|
+
|
|
27
|
+
Coding agent for HPC and scientific-software work, part of IOWarp's CLIO ecosystem of agentic
|
|
28
|
+
science. CLIO stands for Context Layer for Input/Output, named for the Greek muse of history.
|
|
29
|
+
|
|
30
|
+
Usage:
|
|
31
|
+
clio-coder start interactive repository chat
|
|
32
|
+
clio-coder acp serve Clio as an ACP v1 agent over stdio
|
|
33
|
+
clio-coder run [flags] <task> run one headless main-agent turn
|
|
34
|
+
clio-coder --version, -v print the Clio Coder version
|
|
35
|
+
clio-coder --api-key <key> override the active target API key for this run
|
|
36
|
+
clio-coder --no-context-files, -nc skip CLIO-CODER.md project-context injection
|
|
37
|
+
clio-coder configure interactive first-run/configuration wizard
|
|
38
|
+
clio-coder targets list configured targets, health, auth, and capabilities
|
|
39
|
+
clio-coder targets add add a target interactively or via flags
|
|
40
|
+
clio-coder targets use <id> set chat and fleet defaults to a target
|
|
41
|
+
clio-coder targets profile set a named fleet profile
|
|
42
|
+
clio-coder targets remove <id> remove a target
|
|
43
|
+
clio-coder targets rename <old> <new> rename a target
|
|
44
|
+
clio-coder models [search] list models for configured targets
|
|
45
|
+
clio-coder auth list|status|login|logout [target-or-runtime]
|
|
46
|
+
clio-coder doctor [--fix] diagnose state; --fix creates or repairs it
|
|
47
|
+
clio-coder paths [--json] print resolved config/data/cache directories
|
|
48
|
+
clio-coder reset recover or wipe Clio Coder state
|
|
49
|
+
clio-coder context show project context status (CLIO-CODER.md, preload, codewiki)
|
|
50
|
+
clio-coder context init [--yes] [--preview|--heuristic] explore the repo and bootstrap CLIO-CODER.md and codewiki
|
|
51
|
+
clio-coder context refresh [--wiki] re-index the codewiki and optionally update the Markdown wiki
|
|
52
|
+
clio-coder context wiki [--update] [--status] [--depth auto|simple|medium|detailed] [--target <id>] [--model <id>]
|
|
53
|
+
clio-coder context reset [--all] [--yes] clear accumulated project context artifacts
|
|
54
|
+
clio-coder context index [--json] build the codewiki index without model calls
|
|
55
|
+
clio-coder uninstall remove all Clio Coder state; --remove-binary also unlinks the launcher
|
|
56
|
+
clio-coder upgrade upgrade Clio Coder and run pending migrations
|
|
57
|
+
clio-coder agents list discovered agent recipes
|
|
58
|
+
clio-coder fleet list|run|status|drain|resume fleet contracts, status, and admission control
|
|
59
|
+
clio-coder evidence build, list, or inspect evidence artifacts
|
|
60
|
+
clio-coder eval run, report, or compare local eval task files
|
|
61
|
+
clio-coder memory list, propose, approve, reject, or prune memory
|
|
62
|
+
clio-coder usage report cross-session usage facts and opportunities (experimental)
|
|
63
|
+
clio-coder trace query or view the durable dispatch trace mirror
|
|
64
|
+
clio-coder extensions install, list, enable, disable, or remove extension packages
|
|
65
|
+
clio-coder skills list, inspect, validate, or install skills
|
|
66
|
+
clio-coder docs [topic] serve the HTML docs of a source checkout on 127.0.0.1 (--no-open to skip browser)
|
|
67
|
+
clio-coder dev <command> harness instruments; run 'clio-coder dev' for the list
|
|
68
|
+
clio-coder --help, -h this message
|
|
69
|
+
clio-coder --help --all this message plus every command under 'clio-coder dev'
|
|
70
|
+
`;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Commands that answer a question about the harness rather than about the
|
|
74
|
+
* user's own work.
|
|
75
|
+
*
|
|
76
|
+
* Nothing here is removed or deprecated. An agent driving Clio over bash can
|
|
77
|
+
* reach a wider surface than a person reading a help screen can hold, so the
|
|
78
|
+
* capability stays and only the default listing shrinks: every name below still
|
|
79
|
+
* resolves at the top level, and `clio-coder --help --all` prints all of it.
|
|
80
|
+
*/
|
|
81
|
+
const DEV_COMMANDS: ReadonlyArray<{ name: string; summary: string }> = [
|
|
82
|
+
{ name: "components", summary: "list, snapshot, or diff harness components" },
|
|
83
|
+
{ name: "evolve", summary: "create, validate, or summarize change manifests" },
|
|
84
|
+
{ name: "share", summary: "export or import Clio project/resource archives" },
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
const DEV_HELP = `Clio Coder harness instruments
|
|
88
|
+
|
|
89
|
+
Usage:
|
|
90
|
+
${DEV_COMMANDS.map((entry) => ` clio-coder dev ${entry.name.padEnd(20)}${entry.summary}`).join("\n")}
|
|
91
|
+
|
|
92
|
+
Each also resolves without the 'dev' prefix, so existing scripts and agent
|
|
93
|
+
callers keep working. The prefix exists so the default help stays the set of
|
|
94
|
+
commands a person needs to read.
|
|
95
|
+
`;
|
|
96
|
+
|
|
97
|
+
function helpText(all: boolean): string {
|
|
98
|
+
return all ? `${HELP}\n${DEV_HELP}` : HELP;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Engines floor from package.json; npm only warns on EBADENGINE, so the CLI
|
|
102
|
+
* states the requirement itself instead of failing with an arbitrary syntax
|
|
103
|
+
* or API error on old Node versions. */
|
|
104
|
+
const MIN_NODE = [22, 19, 0] as const;
|
|
105
|
+
|
|
106
|
+
interface CliBootOptions {
|
|
107
|
+
apiKey?: string;
|
|
108
|
+
noContextFiles?: boolean;
|
|
109
|
+
noSkills?: boolean;
|
|
110
|
+
skillPaths?: string[];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
type CommandHandler = (subArgs: string[], bootOptions: CliBootOptions) => Promise<number>;
|
|
114
|
+
|
|
115
|
+
function nodeVersionError(): string | null {
|
|
116
|
+
const parts = process.versions.node.split(".").map((part) => Number.parseInt(part, 10));
|
|
117
|
+
for (let i = 0; i < MIN_NODE.length; i += 1) {
|
|
118
|
+
const actual = parts[i] ?? 0;
|
|
119
|
+
const wanted = MIN_NODE[i] ?? 0;
|
|
120
|
+
if (actual > wanted) return null;
|
|
121
|
+
if (actual < wanted) {
|
|
122
|
+
return `clio-coder requires Node.js >=${MIN_NODE.join(".")}; this is ${process.versions.node}. Upgrade Node and retry.`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async function main(argv: string[]): Promise<number> {
|
|
129
|
+
// First application statement after the static import graph resolved: the
|
|
130
|
+
// elapsed here is the cold module-load tax (see CLIO_CODER_TRACE_BOOT).
|
|
131
|
+
traceBoot("cli entry");
|
|
132
|
+
const versionError = nodeVersionError();
|
|
133
|
+
if (versionError !== null) {
|
|
134
|
+
printError(versionError);
|
|
135
|
+
return 1;
|
|
136
|
+
}
|
|
137
|
+
const {
|
|
138
|
+
apiKey,
|
|
139
|
+
noContextFiles,
|
|
140
|
+
noSkills,
|
|
141
|
+
skillPaths,
|
|
142
|
+
rest,
|
|
143
|
+
error: globalFlagError,
|
|
144
|
+
} = extractGlobalFlags(argv, isCommandToken);
|
|
145
|
+
if (globalFlagError) {
|
|
146
|
+
printError(globalFlagError);
|
|
147
|
+
return 2;
|
|
148
|
+
}
|
|
149
|
+
const { flags, positional } = parseFlags(rest);
|
|
150
|
+
const subcommand = positional[0];
|
|
151
|
+
const subcommandIndex = rest.findIndex((arg) => !arg.startsWith("-"));
|
|
152
|
+
const firstArg = rest[0];
|
|
153
|
+
if (firstArg === "--help" || firstArg === "-h" || ((flags.has("help") || flags.has("h")) && !subcommand)) {
|
|
154
|
+
process.stdout.write(helpText(flags.has("all")));
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
if (flags.has("version") || flags.has("v")) {
|
|
158
|
+
const { runVersionCommand } = await import("./version.js");
|
|
159
|
+
return runVersionCommand();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const subArgs = subcommandIndex === -1 ? [] : rest.slice(subcommandIndex + 1);
|
|
163
|
+
const bootOptions = {
|
|
164
|
+
...(apiKey === undefined ? {} : { apiKey }),
|
|
165
|
+
...(noContextFiles ? { noContextFiles: true } : {}),
|
|
166
|
+
...(noSkills ? { noSkills: true } : {}),
|
|
167
|
+
...(skillPaths.length > 0 ? { skillPaths } : {}),
|
|
168
|
+
};
|
|
169
|
+
if (!subcommand) {
|
|
170
|
+
await enableBootCompileCache();
|
|
171
|
+
const { runClioCommand } = await import("./clio.js");
|
|
172
|
+
return runClioCommand(bootOptions);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return dispatch(subcommand, subArgs, bootOptions);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Cache the boot-path module graphs' bytecode. Only the three long-lived
|
|
180
|
+
* entrypoints that already write state enable it (interactive, `run`, `acp`);
|
|
181
|
+
* read-only and dry-run commands such as `paths` and bare `doctor` document
|
|
182
|
+
* that they create nothing, and enabling the cache creates its directory, so
|
|
183
|
+
* a dispatch-wide enable would break that promise on every initialized home.
|
|
184
|
+
* A help invocation of a boot command is itself zero-side-effect, so the
|
|
185
|
+
* guard runs before enablement, not after the module's own help check.
|
|
186
|
+
*/
|
|
187
|
+
async function enableBootCompileCache(subArgs: ReadonlyArray<string> = []): Promise<void> {
|
|
188
|
+
if (subArgs.includes("--help") || subArgs.includes("-h")) return;
|
|
189
|
+
const { enableClioCompileCache } = await import("../core/compile-cache.js");
|
|
190
|
+
enableClioCompileCache();
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* The dispatcher is also the command-recognition source used by top-level
|
|
195
|
+
* value flags. Every dynamic import stays a literal so tsup can split command
|
|
196
|
+
* graphs, while adding a command in one place cannot leave --api-key/--skill
|
|
197
|
+
* free to swallow it as a value.
|
|
198
|
+
*/
|
|
199
|
+
const extensionsCommand: CommandHandler = async (subArgs) =>
|
|
200
|
+
(await import("./extensions.js")).runExtensionsCommand(subArgs);
|
|
201
|
+
|
|
202
|
+
const COMMAND_HANDLERS = new Map<string, CommandHandler>([
|
|
203
|
+
[
|
|
204
|
+
"acp",
|
|
205
|
+
async (subArgs, bootOptions) => {
|
|
206
|
+
await enableBootCompileCache(subArgs);
|
|
207
|
+
return (await import("./acp.js")).runAcpCommand(subArgs, bootOptions);
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
["auth", async (subArgs) => (await import("./auth.js")).runAuthCommand(subArgs)],
|
|
211
|
+
["config", async (subArgs) => (await import("./config.js")).runConfigCommand(subArgs)],
|
|
212
|
+
["configure", async (subArgs) => (await import("./configure.js")).runConfigureCommand(subArgs)],
|
|
213
|
+
["targets", async (subArgs) => (await import("./targets.js")).runTargetsCommand(subArgs)],
|
|
214
|
+
["models", async (subArgs) => (await import("./models.js")).runModelsCommand(subArgs)],
|
|
215
|
+
["agents", async (subArgs) => (await import("./agents.js")).runAgentsCommand(subArgs)],
|
|
216
|
+
["components", async (subArgs) => (await import("./components.js")).runComponentsCommand(subArgs)],
|
|
217
|
+
["evidence", async (subArgs) => (await import("./evidence.js")).runEvidenceCommand(subArgs)],
|
|
218
|
+
["eval", async (subArgs) => (await import("./eval.js")).runEvalCommand(subArgs)],
|
|
219
|
+
["memory", async (subArgs) => (await import("./memory.js")).runMemoryCommand(subArgs)],
|
|
220
|
+
["usage", async (subArgs) => (await import("./usage.js")).runUsageCommand(subArgs)],
|
|
221
|
+
["trace", async (subArgs) => (await import("./trace.js")).runTraceCommand(subArgs)],
|
|
222
|
+
["evolve", async (subArgs) => (await import("./evolve.js")).runEvolveCommand(subArgs)],
|
|
223
|
+
[
|
|
224
|
+
"dev",
|
|
225
|
+
async (subArgs, bootOptions) => {
|
|
226
|
+
const devSubcommand = subArgs[0];
|
|
227
|
+
// `clio-coder dev` is what the top-level help tells the user to run for this
|
|
228
|
+
// listing, so printing the listing is the command succeeding, not a
|
|
229
|
+
// usage error.
|
|
230
|
+
if (devSubcommand === undefined || devSubcommand === "--help" || devSubcommand === "-h") {
|
|
231
|
+
process.stdout.write(DEV_HELP);
|
|
232
|
+
return 0;
|
|
233
|
+
}
|
|
234
|
+
if (!DEV_COMMANDS.some((entry) => entry.name === devSubcommand)) {
|
|
235
|
+
printError(`unknown dev command: ${devSubcommand}`);
|
|
236
|
+
process.stdout.write(DEV_HELP);
|
|
237
|
+
return 2;
|
|
238
|
+
}
|
|
239
|
+
return dispatch(devSubcommand, subArgs.slice(1), bootOptions);
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
["extensions", extensionsCommand],
|
|
243
|
+
["ext", extensionsCommand],
|
|
244
|
+
["fleet", async (subArgs) => (await import("./fleet.js")).runFleetCommand(subArgs)],
|
|
245
|
+
["skills", async (subArgs) => (await import("./skills.js")).runSkillsCommand(subArgs)],
|
|
246
|
+
["docs", async (subArgs) => (await import("./docs.js")).runDocsCommand(subArgs)],
|
|
247
|
+
["share", async (subArgs) => (await import("./share.js")).runShareCommand(subArgs)],
|
|
248
|
+
["export", async (subArgs) => (await import("./share.js")).runExportCommand(subArgs)],
|
|
249
|
+
["import", async (subArgs) => (await import("./share.js")).runImportCommand(subArgs)],
|
|
250
|
+
["context", async (subArgs) => (await import("./context.js")).runContextCommand(subArgs)],
|
|
251
|
+
[
|
|
252
|
+
"run",
|
|
253
|
+
async (subArgs, bootOptions) => {
|
|
254
|
+
await enableBootCompileCache(subArgs);
|
|
255
|
+
return (await import("./run.js")).runClioRun(subArgs, bootOptions);
|
|
256
|
+
},
|
|
257
|
+
],
|
|
258
|
+
["doctor", async (subArgs) => (await import("./doctor.js")).runDoctorCommand(subArgs)],
|
|
259
|
+
["paths", async (subArgs) => (await import("./paths.js")).runPathsCommand(subArgs)],
|
|
260
|
+
["reset", async (subArgs) => (await import("./reset.js")).runResetCommand(subArgs)],
|
|
261
|
+
["uninstall", async (subArgs) => (await import("./uninstall.js")).runUninstallCommand(subArgs)],
|
|
262
|
+
["upgrade", async (subArgs) => (await import("./upgrade.js")).runUpgradeCommand(subArgs)],
|
|
263
|
+
["version", async () => (await import("./version.js")).runVersionCommand()],
|
|
264
|
+
[
|
|
265
|
+
"worker",
|
|
266
|
+
async () => {
|
|
267
|
+
// Internal: the native worker stream server (WorkerSpec on stdin,
|
|
268
|
+
// NDJSON on stdout). The entry module runs main() on import and owns
|
|
269
|
+
// process exit; this settles only on a pre-run import failure.
|
|
270
|
+
// This is how SSH placement launches a worker on the remote install,
|
|
271
|
+
// where no local spawn boundary injected NODE_COMPILE_CACHE, so the
|
|
272
|
+
// worker graph enables the remote cache itself before it loads. The
|
|
273
|
+
// enable is in-process only: no environment variable is set, so the
|
|
274
|
+
// worker's own children inherit nothing. Nothing on this path
|
|
275
|
+
// injected the provenance pair either, so any marker present is
|
|
276
|
+
// foreign; strip it (and only it) so the entry's consume can never
|
|
277
|
+
// match and delete an operator's own NODE_COMPILE_CACHE.
|
|
278
|
+
Reflect.deleteProperty(process.env, "CLIO_CODER_INJECTED_COMPILE_CACHE");
|
|
279
|
+
await enableBootCompileCache();
|
|
280
|
+
await import("../worker/entry.js");
|
|
281
|
+
return 0;
|
|
282
|
+
},
|
|
283
|
+
],
|
|
284
|
+
]);
|
|
285
|
+
|
|
286
|
+
// Retired commands are not dispatchable, but remain command-shaped tombstones
|
|
287
|
+
// so top-level value flags cannot consume them and accidentally boot another mode.
|
|
288
|
+
const RETIRED_SUBCOMMANDS = new Set<string>(["context-init", "context-index", "context-clear"]);
|
|
289
|
+
|
|
290
|
+
function isCommandToken(token: string): boolean {
|
|
291
|
+
return COMMAND_HANDLERS.has(token) || RETIRED_SUBCOMMANDS.has(token);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Turn a missing command chunk into a repair instruction.
|
|
296
|
+
*
|
|
297
|
+
* Every subcommand is a dynamic import of a code-split chunk beside this
|
|
298
|
+
* entry, so an install that was interrupted between unpacking the entry and
|
|
299
|
+
* unpacking the rest produces a `clio` that starts, parses flags, prints
|
|
300
|
+
* `--version`, and then dies on `Cannot find module` the moment it is asked to
|
|
301
|
+
* do anything. That message names an internal build artifact nobody outside
|
|
302
|
+
* this repository can act on. The filter on our own output directory keeps a
|
|
303
|
+
* module error raised by a user's extension or hook reporting itself normally.
|
|
304
|
+
*/
|
|
305
|
+
/**
|
|
306
|
+
* Route a subcommand to its registered handler, importing only that command's
|
|
307
|
+
* module. Unknown names fail before loading any command graph.
|
|
308
|
+
*/
|
|
309
|
+
async function dispatch(subcommand: string, subArgs: string[], bootOptions: CliBootOptions): Promise<number> {
|
|
310
|
+
const handler = COMMAND_HANDLERS.get(subcommand);
|
|
311
|
+
if (handler) {
|
|
312
|
+
try {
|
|
313
|
+
return await handler(subArgs, bootOptions);
|
|
314
|
+
} catch (err) {
|
|
315
|
+
const advice = incompleteInstallationAdvice(err);
|
|
316
|
+
if (advice === null) throw err;
|
|
317
|
+
printError(advice);
|
|
318
|
+
return 1;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
printError(`unknown subcommand: ${subcommand}`);
|
|
322
|
+
// The usage that explains a rejection belongs with the rejection on stderr.
|
|
323
|
+
// Writing it to stdout meant a mistyped command still produced a full page on
|
|
324
|
+
// the stream the caller was capturing for output, next to an error on the one
|
|
325
|
+
// it was probably not reading. `clio-coder --help` is the request for this
|
|
326
|
+
// text, and it still answers on stdout with exit 0.
|
|
327
|
+
process.stderr.write(helpText(false));
|
|
328
|
+
return 2;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
main(process.argv.slice(2))
|
|
332
|
+
.then((code) => {
|
|
333
|
+
process.exitCode = code;
|
|
334
|
+
})
|
|
335
|
+
.catch((err) => {
|
|
336
|
+
printError(err instanceof Error ? err.message : String(err));
|
|
337
|
+
process.exitCode = 1;
|
|
338
|
+
});
|
package/src/cli/init.ts
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { stdin as input, stdout as output } from "node:process";
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { runBootstrap } from "../domains/context/index.js";
|
|
4
|
+
import {
|
|
5
|
+
bootstrapInputFromInitOptions,
|
|
6
|
+
CONTEXT_INIT_FLAG_TABLE,
|
|
7
|
+
type ContextInitOptions,
|
|
8
|
+
validateInitOptions,
|
|
9
|
+
} from "../domains/context/init-options.js";
|
|
10
|
+
import { type ThinkingLevel, VALID_THINKING_LEVELS } from "../domains/providers/index.js";
|
|
11
|
+
import { modelBootstrapGenerate } from "./bootstrap-generate.js";
|
|
12
|
+
|
|
13
|
+
const HELP = `Usage:
|
|
14
|
+
clio-coder context init [--preview] [--heuristic] [--yes] [--json] [--adopt] [--global] [--propose|--apply|--rewrite]
|
|
15
|
+
[--target <id> [--model <id>] [--thinking <level>]]
|
|
16
|
+
|
|
17
|
+
Explore the repository and bootstrap the project context in one pass: CLIO-CODER.md,
|
|
18
|
+
the codewiki index, and the .clio-coder state. The configured Clio
|
|
19
|
+
target drafts CLIO-CODER.md grounded in the existing handbook, codewiki structure, and
|
|
20
|
+
sibling agent context. Existing CLIO-CODER.md files are preserved by default; use
|
|
21
|
+
--propose for an ignored draft, --apply to update the handbook using it as source,
|
|
22
|
+
or --rewrite to replace it with a fresh draft that ignores the current CLIO-CODER.md.
|
|
23
|
+
|
|
24
|
+
Options:
|
|
25
|
+
--preview show the plan without writing any files
|
|
26
|
+
--heuristic skip model exploration; use the deterministic generator (offline)
|
|
27
|
+
--adopt refresh only the managed Imported agent context section
|
|
28
|
+
--global include global sibling agent context from user home directory
|
|
29
|
+
--propose write an ignored .clio-coder/proposals/CLIO-CODER-*.md draft when CLIO-CODER.md exists
|
|
30
|
+
--apply replace an existing CLIO-CODER.md with a draft grounded in the existing handbook
|
|
31
|
+
--rewrite replace an existing CLIO-CODER.md with a fresh draft that ignores it as source
|
|
32
|
+
--json emit one machine-readable result object on stdout
|
|
33
|
+
--yes, -y update .gitignore without prompting
|
|
34
|
+
--target <id> override the configured Scout target for this noninteractive run
|
|
35
|
+
--model <id> override the Scout wire model (requires --target)
|
|
36
|
+
--thinking <n> override Scout thinking: ${VALID_THINKING_LEVELS.join("|")} (requires --target)
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
function hasFlag(args: ReadonlyArray<string>, name: string): boolean {
|
|
40
|
+
return args.includes(name);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function parseContextInitArgs(args: ReadonlyArray<string>): {
|
|
44
|
+
options: ContextInitOptions;
|
|
45
|
+
json: boolean;
|
|
46
|
+
target?: string;
|
|
47
|
+
model?: string;
|
|
48
|
+
thinkingLevel?: ThinkingLevel;
|
|
49
|
+
error: string | null;
|
|
50
|
+
} {
|
|
51
|
+
const options: ContextInitOptions = {};
|
|
52
|
+
let json = false;
|
|
53
|
+
let target: string | undefined;
|
|
54
|
+
let model: string | undefined;
|
|
55
|
+
let thinkingLevel: ThinkingLevel | undefined;
|
|
56
|
+
const thinkingLevels = new Set<ThinkingLevel>(VALID_THINKING_LEVELS);
|
|
57
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
58
|
+
const arg = args[index] as string;
|
|
59
|
+
if (arg === "--help" || arg === "-h" || arg === "--yes" || arg === "-y") continue;
|
|
60
|
+
if (arg === "--json") {
|
|
61
|
+
json = true;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (arg === "--target" || arg === "--model" || arg === "--thinking") {
|
|
65
|
+
const value = args[index + 1];
|
|
66
|
+
if (!value || value.startsWith("-")) return { options, json, error: `${arg} requires a value` };
|
|
67
|
+
index += 1;
|
|
68
|
+
if (arg === "--target") target = value;
|
|
69
|
+
else if (arg === "--model") model = value;
|
|
70
|
+
else {
|
|
71
|
+
if (!thinkingLevels.has(value as ThinkingLevel)) {
|
|
72
|
+
return { options, json, error: `--thinking must be one of: ${[...thinkingLevels].join("|")}` };
|
|
73
|
+
}
|
|
74
|
+
thinkingLevel = value as ThinkingLevel;
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const row = CONTEXT_INIT_FLAG_TABLE.find((candidate) => candidate.flag === arg || candidate.aliases?.includes(arg));
|
|
79
|
+
if (!row) {
|
|
80
|
+
return { options, json, error: arg.startsWith("-") ? `unknown flag ${arg}` : `unexpected argument ${arg}` };
|
|
81
|
+
}
|
|
82
|
+
options[row.field] = true;
|
|
83
|
+
}
|
|
84
|
+
if (!target && (model || thinkingLevel)) {
|
|
85
|
+
return { options, json, error: "--model and --thinking require --target" };
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
options,
|
|
89
|
+
json,
|
|
90
|
+
...(target ? { target } : {}),
|
|
91
|
+
...(model ? { model } : {}),
|
|
92
|
+
...(thinkingLevel ? { thinkingLevel } : {}),
|
|
93
|
+
error: null,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
interface InitPhaseTiming {
|
|
98
|
+
startedAt: number;
|
|
99
|
+
completedMs?: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async function confirmGitignore(assumeYes: boolean): Promise<boolean> {
|
|
103
|
+
if (assumeYes) return true;
|
|
104
|
+
if (!input.isTTY) return false;
|
|
105
|
+
const rl = createInterface({ input, output });
|
|
106
|
+
try {
|
|
107
|
+
const answer = await rl.question("Update .gitignore for Clio context artifacts? [y/N] ");
|
|
108
|
+
return answer.trim().toLowerCase() === "y" || answer.trim().toLowerCase() === "yes";
|
|
109
|
+
} finally {
|
|
110
|
+
rl.close();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export async function runInitCommand(args: string[]): Promise<number> {
|
|
115
|
+
if (hasFlag(args, "--help") || hasFlag(args, "-h")) {
|
|
116
|
+
process.stdout.write(HELP);
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
const assumeYes = hasFlag(args, "--yes") || hasFlag(args, "-y");
|
|
120
|
+
const parsed = parseContextInitArgs(args);
|
|
121
|
+
if (parsed.error) {
|
|
122
|
+
process.stderr.write(`clio-coder context init: ${parsed.error}\n`);
|
|
123
|
+
process.stdout.write(HELP);
|
|
124
|
+
return 2;
|
|
125
|
+
}
|
|
126
|
+
const validationError = validateInitOptions(parsed.options);
|
|
127
|
+
if (validationError) {
|
|
128
|
+
process.stderr.write(`${validationError}\n`);
|
|
129
|
+
process.stdout.write(HELP);
|
|
130
|
+
return 2;
|
|
131
|
+
}
|
|
132
|
+
const bootstrapOptions = bootstrapInputFromInitOptions(parsed.options);
|
|
133
|
+
// Model-driven exploration is the default. --heuristic
|
|
134
|
+
// forces the deterministic generator; preview never spawns a model.
|
|
135
|
+
const useModel = parsed.options.heuristic !== true && parsed.options.preview !== true;
|
|
136
|
+
const startedAt = performance.now();
|
|
137
|
+
const phaseTimings = new Map<string, InitPhaseTiming>();
|
|
138
|
+
try {
|
|
139
|
+
const result = await runBootstrap({
|
|
140
|
+
cwd: process.cwd(),
|
|
141
|
+
io: {
|
|
142
|
+
stdout: (s) => {
|
|
143
|
+
if (!parsed.json) process.stdout.write(s);
|
|
144
|
+
},
|
|
145
|
+
stderr: (s) => process.stderr.write(s),
|
|
146
|
+
},
|
|
147
|
+
onProgress: (event) => {
|
|
148
|
+
const now = performance.now();
|
|
149
|
+
const timing = phaseTimings.get(event.phase);
|
|
150
|
+
if (event.status === "started") phaseTimings.set(event.phase, { startedAt: now });
|
|
151
|
+
else if (event.status === "completed" && timing) timing.completedMs = Math.max(0, now - timing.startedAt);
|
|
152
|
+
},
|
|
153
|
+
confirmGitignore: () => confirmGitignore(assumeYes),
|
|
154
|
+
...bootstrapOptions,
|
|
155
|
+
...(useModel
|
|
156
|
+
? {
|
|
157
|
+
generate: modelBootstrapGenerate({
|
|
158
|
+
...(parsed.target
|
|
159
|
+
? {
|
|
160
|
+
route: {
|
|
161
|
+
target: parsed.target,
|
|
162
|
+
...(parsed.model ? { model: parsed.model } : {}),
|
|
163
|
+
...(parsed.thinkingLevel ? { thinkingLevel: parsed.thinkingLevel } : {}),
|
|
164
|
+
},
|
|
165
|
+
}
|
|
166
|
+
: {}),
|
|
167
|
+
onFallback: (err, mode) =>
|
|
168
|
+
process.stderr.write(
|
|
169
|
+
`clio-coder context init: model exploration unavailable, using ${mode === "existing" ? "existing CLIO-CODER.md" : "heuristic"} (${err.message})\n`,
|
|
170
|
+
),
|
|
171
|
+
}),
|
|
172
|
+
modelId: "configured-clio-target",
|
|
173
|
+
}
|
|
174
|
+
: {}),
|
|
175
|
+
});
|
|
176
|
+
if (parsed.json) {
|
|
177
|
+
process.stdout.write(
|
|
178
|
+
`${JSON.stringify({
|
|
179
|
+
version: 1,
|
|
180
|
+
action: result.summary.action,
|
|
181
|
+
projectType: result.projectType,
|
|
182
|
+
codewikiEntries: result.summary.codewikiEntries,
|
|
183
|
+
clioMdPath: result.clioMdPath,
|
|
184
|
+
statePath: result.statePath,
|
|
185
|
+
preload: result.preload,
|
|
186
|
+
adoption: result.summary.adoption,
|
|
187
|
+
generation: result.telemetry.generation,
|
|
188
|
+
timings: {
|
|
189
|
+
wallMs: Math.max(0, performance.now() - startedAt),
|
|
190
|
+
...(phaseTimings.get("codewiki")?.completedMs !== undefined
|
|
191
|
+
? { codewikiMs: phaseTimings.get("codewiki")?.completedMs }
|
|
192
|
+
: {}),
|
|
193
|
+
...(phaseTimings.get("generate")?.completedMs !== undefined
|
|
194
|
+
? { generationMs: phaseTimings.get("generate")?.completedMs }
|
|
195
|
+
: {}),
|
|
196
|
+
},
|
|
197
|
+
})}\n`,
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
// `--rewrite` asks for a draft that ignores the current CLIO-CODER.md. When the
|
|
201
|
+
// model pass fails, the fallback rebuilds the handbook from that very
|
|
202
|
+
// file and the write is reported as a refresh, so a caller scripting the
|
|
203
|
+
// exit code is told a rewrite happened that did not. Name what was
|
|
204
|
+
// written, name the two ways forward, and fail. The plain heuristic
|
|
205
|
+
// fallback still exits 0: it is a legitimate degraded mode, and the
|
|
206
|
+
// warning line above already names it.
|
|
207
|
+
if (parsed.options.rewriteClioMd === true && result.telemetry.generation.mode === "existing") {
|
|
208
|
+
process.stderr.write(
|
|
209
|
+
"clio-coder context init: --rewrite did not rewrite CLIO-CODER.md; the model draft failed and the fallback rebuilt the handbook from the existing file.\n" +
|
|
210
|
+
" rerun `clio-coder context init --rewrite` once the bootstrap target answers, or `clio-coder context init --rewrite --heuristic` to replace it with the deterministic draft.\n",
|
|
211
|
+
);
|
|
212
|
+
return 1;
|
|
213
|
+
}
|
|
214
|
+
return 0;
|
|
215
|
+
} catch (err) {
|
|
216
|
+
process.stderr.write(`clio-coder context init failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
217
|
+
return 1;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ImageContent } from "../engine/types.js";
|
|
2
|
+
|
|
3
|
+
export interface InitialMessageInput {
|
|
4
|
+
messages: ReadonlyArray<string>;
|
|
5
|
+
stdinContent?: string;
|
|
6
|
+
fileText?: string;
|
|
7
|
+
fileImages?: ImageContent[];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface InitialMessageResult {
|
|
11
|
+
initialMessage?: string;
|
|
12
|
+
initialImages?: ImageContent[];
|
|
13
|
+
remainingMessages: string[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export async function readPipedStdin(): Promise<string | undefined> {
|
|
17
|
+
if (process.stdin.isTTY) return undefined;
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
let data = "";
|
|
20
|
+
process.stdin.setEncoding("utf8");
|
|
21
|
+
process.stdin.on("data", (chunk) => {
|
|
22
|
+
data += chunk;
|
|
23
|
+
});
|
|
24
|
+
process.stdin.on("end", () => {
|
|
25
|
+
resolve(data.length > 0 ? data : undefined);
|
|
26
|
+
});
|
|
27
|
+
process.stdin.resume();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function shouldReadPipedStdin(messages: ReadonlyArray<string>): boolean {
|
|
32
|
+
return messages.length === 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function buildInitialMessage(input: InitialMessageInput): InitialMessageResult {
|
|
36
|
+
const parts: string[] = [];
|
|
37
|
+
if (input.stdinContent !== undefined) parts.push(input.stdinContent);
|
|
38
|
+
if (input.fileText) parts.push(input.fileText);
|
|
39
|
+
|
|
40
|
+
const [first, ...rest] = input.messages;
|
|
41
|
+
if (first !== undefined) parts.push(first);
|
|
42
|
+
|
|
43
|
+
const result: InitialMessageResult = { remainingMessages: rest };
|
|
44
|
+
if (parts.length > 0) result.initialMessage = parts.join("");
|
|
45
|
+
if (input.fileImages && input.fileImages.length > 0) result.initialImages = [...input.fileImages];
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wall-clock deadline for internal generator dispatches (the wiki documenter
|
|
3
|
+
* and the bootstrap scout). These runs are unattended and headless: the worker
|
|
4
|
+
* tool-call cap bounds tool spam and the heartbeat watchdog bounds silence,
|
|
5
|
+
* but a model that keeps streaming tokens without finishing satisfies both
|
|
6
|
+
* indefinitely, so the caller must bound wall-clock time itself. The deadline
|
|
7
|
+
* aborts through the dispatch contract's timeout convention (AbortReason
|
|
8
|
+
* cause "timeout") so the run's receipt records the real cause instead of an
|
|
9
|
+
* operator cancel.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { GUARDRAIL_ENV_VARS, resolveGuardrail } from "../core/guardrails.js";
|
|
13
|
+
import type { DispatchContract } from "../domains/dispatch/contract.js";
|
|
14
|
+
|
|
15
|
+
export interface InternalDispatchDeadline {
|
|
16
|
+
/** True once the deadline fired and the run was aborted. */
|
|
17
|
+
timedOut(): boolean;
|
|
18
|
+
/** Cancel the pending timer; call from a finally block. */
|
|
19
|
+
clear(): void;
|
|
20
|
+
/** Operator-facing failure message for a fired deadline. */
|
|
21
|
+
message(): string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function armInternalDispatchDeadline(
|
|
25
|
+
dispatch: DispatchContract,
|
|
26
|
+
runId: string,
|
|
27
|
+
label: string,
|
|
28
|
+
env: NodeJS.ProcessEnv = process.env,
|
|
29
|
+
maxTimeoutMs?: number,
|
|
30
|
+
): InternalDispatchDeadline {
|
|
31
|
+
const configuredTimeoutMs = resolveGuardrail("internalDispatchTimeoutMs", env);
|
|
32
|
+
const timeoutMs =
|
|
33
|
+
maxTimeoutMs === undefined ? configuredTimeoutMs : Math.min(configuredTimeoutMs, Math.max(1, maxTimeoutMs));
|
|
34
|
+
const productCapped = timeoutMs < configuredTimeoutMs;
|
|
35
|
+
let fired = false;
|
|
36
|
+
const timer = setTimeout(() => {
|
|
37
|
+
fired = true;
|
|
38
|
+
try {
|
|
39
|
+
dispatch.abort(runId, { cause: "timeout", detail: `${label} timed out after ${timeoutMs}ms` });
|
|
40
|
+
} catch {
|
|
41
|
+
// The run may have finalized between the timer firing and the abort.
|
|
42
|
+
}
|
|
43
|
+
}, timeoutMs);
|
|
44
|
+
// The timer must hold the event loop: its firing is what aborts a runaway
|
|
45
|
+
// run. Callers clear it in a finally block, so it never outlives the run.
|
|
46
|
+
return {
|
|
47
|
+
timedOut: () => fired,
|
|
48
|
+
clear: () => clearTimeout(timer),
|
|
49
|
+
message: () =>
|
|
50
|
+
productCapped
|
|
51
|
+
? `${label} exceeded its ${Math.round(timeoutMs / 1000)}s latency ceiling and was aborted.`
|
|
52
|
+
: `${label} timed out after ${Math.round(timeoutMs / 1000)}s and was aborted. ` +
|
|
53
|
+
`Raise guardrails.internalDispatchTimeoutMs (env ${GUARDRAIL_ENV_VARS.internalDispatchTimeoutMs}) for slower targets.`,
|
|
54
|
+
};
|
|
55
|
+
}
|