@iowarp/clio-coder 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +123 -2
- package/CONTRIBUTING.md +23 -23
- package/README.md +295 -627
- package/dist/acp-BIYHVZIM.js +128 -0
- package/dist/{agents-Q4MYPMUW.js → agents-YT6SSRIT.js} +52 -27
- package/dist/assets/codewiki.json +1 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/LICENSE +21 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/cgmanifest.json +16 -0
- package/dist/assets/grammars/notices/tree-sitter-wasms/LICENSE +24 -0
- package/dist/assets/grammars/tree-sitter-c-sharp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-c.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-cpp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-go.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-java.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-python.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-ruby.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-rust.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter.wasm +0 -0
- package/dist/{auth-O6HYIJ6J.js → auth-5TWEIYDN.js} +30 -15
- package/dist/chunk-2EHAIA3X.js +481 -0
- package/dist/{chunk-ME6DNWIU.js → chunk-2IR2NMPA.js} +12 -4
- package/dist/chunk-2SFS6XQE.js +122 -0
- package/dist/{chunk-KKKPTZLM.js → chunk-2STGEDFV.js} +8 -1
- package/dist/chunk-2VTFPG5O.js +48 -0
- package/dist/chunk-3I7MS7N2.js +40 -0
- package/dist/chunk-3R73A4XB.js +69 -0
- package/dist/{chunk-JPOWPFCU.js → chunk-3ZXDFGR5.js} +52 -23
- package/dist/chunk-4BJ5BYCE.js +61 -0
- package/dist/{chunk-26BZQOAD.js → chunk-4BPJXDWC.js} +161 -260
- package/dist/chunk-4KLWL3UC.js +18 -0
- package/dist/{chunk-5LDRNKX2.js → chunk-4VP4KH3K.js} +161 -262
- package/dist/chunk-4ZG3XFUR.js +77 -0
- package/dist/chunk-5B2AEOW5.js +5407 -0
- package/dist/chunk-5TSRNF4G.js +510 -0
- package/dist/{chunk-WD6AJM35.js → chunk-5UUP6MWO.js} +48 -69
- package/dist/{chunk-X3BR7HWV.js → chunk-5WIGXA4T.js} +7 -1
- package/dist/chunk-65DEGPJ6.js +52 -0
- package/dist/chunk-6EJMN2Y3.js +17 -0
- package/dist/chunk-6EJV5X2W.js +16405 -0
- package/dist/chunk-6N5PTWMY.js +136 -0
- package/dist/chunk-6XLNIQDB.js +27 -0
- package/dist/{chunk-XNISANGE.js → chunk-77VKQEHF.js} +171 -74
- package/dist/chunk-7CR24IG7.js +242 -0
- package/dist/{chunk-UWIJNAOB.js → chunk-7EYHLWU7.js} +907 -638
- package/dist/chunk-7MNJORFF.js +22 -0
- package/dist/{chunk-JWHCJDCI.js → chunk-A3CYT5EX.js} +257 -79
- package/dist/chunk-AGYYIBLL.js +1069 -0
- package/dist/chunk-AO4RKG4M.js +277 -0
- package/dist/chunk-APJ265NV.js +7410 -0
- package/dist/chunk-ARBGF5F7.js +174 -0
- package/dist/{chunk-TFSSEXL6.js → chunk-BMEMKKIT.js} +14 -4
- package/dist/{chunk-X3NE4WVW.js → chunk-BNAZZHFG.js} +7 -1
- package/dist/chunk-CBCAPZAA.js +229 -0
- package/dist/{chunk-QV47YRF4.js → chunk-CGKSTWHD.js} +7 -1
- package/dist/chunk-CMZWFGD2.js +352 -0
- package/dist/chunk-ECH6PKUQ.js +39 -0
- package/dist/{chunk-67MTHP2E.js → chunk-ED4KHGC3.js} +13 -5
- package/dist/chunk-EKMEHE4H.js +340 -0
- package/dist/{chunk-O4EJEDHO.js → chunk-EPVUXGXG.js} +50 -35
- package/dist/chunk-FCSXB6T2.js +338 -0
- package/dist/chunk-FJ3H4MN5.js +48 -0
- package/dist/chunk-FQ4SKYE4.js +29 -0
- package/dist/chunk-G2DE3C7R.js +644 -0
- package/dist/chunk-G4BMMOKF.js +182 -0
- package/dist/{chunk-7BHLZB3A.js → chunk-GGXXDWE4.js} +190 -1218
- package/dist/chunk-HC4CLZ2Y.js +68 -0
- package/dist/{chunk-E3NYWENM.js → chunk-HFSBBKSQ.js} +55 -61
- package/dist/chunk-HKIYEGME.js +30 -0
- package/dist/chunk-I4HZDVNP.js +73 -0
- package/dist/chunk-IGLFWIYI.js +161 -0
- package/dist/chunk-IHXBNWMM.js +137 -0
- package/dist/chunk-IKCO5N3L.js +162 -0
- package/dist/chunk-IR4CFBFN.js +56 -0
- package/dist/{chunk-DXQNI4PC.js → chunk-IWHMRKLL.js} +8 -1
- package/dist/{chunk-VOO7NYPP.js → chunk-J5HN4RYU.js} +27 -9
- package/dist/{chunk-4UQA7NCT.js → chunk-J5Q24KAG.js} +7 -2
- package/dist/{chunk-KBR4MZZR.js → chunk-JVCV3ICN.js} +7 -1
- package/dist/chunk-KJ5LWLOE.js +1077 -0
- package/dist/chunk-LBMZMYH2.js +285 -0
- package/dist/{chunk-3DANZDGR.js → chunk-LBNRH5WM.js} +100 -161
- package/dist/{chunk-TKHQ4DGZ.js → chunk-LZSJBIVT.js} +7358 -7414
- package/dist/{chunk-UGYAX5YI.js → chunk-M6SHUN7Q.js} +13 -8
- package/dist/chunk-MAW544W2.js +1882 -0
- package/dist/chunk-MBS4V7ZP.js +217 -0
- package/dist/{chunk-2J63S4SF.js → chunk-MFFY33HR.js} +167 -140
- package/dist/chunk-MNA4JGU4.js +255 -0
- package/dist/chunk-MQSRRFWA.js +3428 -0
- package/dist/{chunk-RQDWMVRB.js → chunk-MVVUPGPW.js} +138 -137
- package/dist/chunk-OAO4GE4M.js +619 -0
- package/dist/chunk-OHHN2SO4.js +5135 -0
- package/dist/chunk-OKGUZO2U.js +34 -0
- package/dist/{chunk-BBUH4VAA.js → chunk-OOJYHWRB.js} +60 -361
- package/dist/{chunk-D5YD55AR.js → chunk-OQ33BKR3.js} +12 -1
- package/dist/chunk-OQE5J4C6.js +73 -0
- package/dist/{chunk-AMFR5YA3.js → chunk-ORBHGJC5.js} +26 -12
- package/dist/chunk-POHLU5DW.js +1186 -0
- package/dist/chunk-QKMUKYO7.js +4961 -0
- package/dist/{chunk-7RBKDI66.js → chunk-QTYWRVRA.js} +104 -12
- package/dist/{chunk-5N2FG33Q.js → chunk-R346GLFC.js} +7 -1
- package/dist/chunk-SRF2PJNW.js +184 -0
- package/dist/chunk-SST6Z5JA.js +80 -0
- package/dist/{chunk-XV4ZJ6ZM.js → chunk-STBPMHSX.js} +473 -1194
- package/dist/{chunk-HBU5MTAM.js → chunk-SVNXH4L2.js} +7 -1
- package/dist/chunk-T6YILFSB.js +80 -0
- package/dist/chunk-TXOTCRLG.js +15 -0
- package/dist/chunk-TZTZS7QK.js +227 -0
- package/dist/chunk-UOV2BYIW.js +107 -0
- package/dist/{chunk-527KG6XR.js → chunk-V4RXGQ5Q.js} +72 -185
- package/dist/chunk-VAKQQHWR.js +434 -0
- package/dist/chunk-VG7TBQIY.js +128 -0
- package/dist/chunk-VJWL6YS5.js +244 -0
- package/dist/chunk-WEH5XRJQ.js +32 -0
- package/dist/{chunk-VPAWTYLY.js → chunk-WEPFGWHJ.js} +7 -1
- package/dist/chunk-WMSVI4G2.js +2095 -0
- package/dist/chunk-WVO7V2QY.js +797 -0
- package/dist/chunk-X4RCMKVQ.js +641 -0
- package/dist/chunk-X75S7HFS.js +374 -0
- package/dist/chunk-XN3L4EYL.js +46 -0
- package/dist/{chunk-HMYNFFY4.js → chunk-XPLRXC72.js} +7 -2
- package/dist/{chunk-PIDUD6M2.js → chunk-YCWGATWI.js} +12 -5
- package/dist/chunk-YHZX5GEU.js +193 -0
- package/dist/chunk-YXLYO42X.js +91 -0
- package/dist/{chunk-UHTSULZS.js → chunk-ZDOOVTXZ.js} +38 -73
- package/dist/chunk-ZI647VB5.js +37 -0
- package/dist/{chunk-CLJ5HLUD.js → chunk-ZWLZP4ZT.js} +25 -6
- package/dist/cli/index.js +70 -56
- package/dist/clio-4LY5K2AC.js +25 -0
- package/dist/code-nav-7AX6FYE6.js +600 -0
- package/dist/codewiki/build-worker.js +66 -0
- package/dist/compile-cache-CVJMMODC.js +18 -0
- package/dist/{components-JVHMUBEB.js → components-KELWS457.js} +31 -9
- package/dist/{config-ZFCDBMDC.js → config-GTLUW2PR.js} +104 -56
- package/dist/configure-R6A64DHX.js +42 -0
- package/dist/context-5VKGUVJJ.js +866 -0
- package/dist/{context-CDXTP2MP.js → context-JFZEJ7W5.js} +21 -13
- package/dist/{context-E3KIFVXI.js → context-RW5HC47S.js} +77 -36
- package/dist/{context-clear-3F4PLXOS.js → context-clear-6ZHBAZZT.js} +64 -30
- package/dist/{context-index-Q7YSYTR3.js → context-index-BZ4UYMTC.js} +36 -24
- package/dist/dispatch-runner-VKBRCWQC.js +1997 -0
- package/dist/{docs-YIETIWZI.js → docs-2C2LTVT2.js} +32 -13
- package/dist/doctor-KI767GSN.js +87 -0
- package/dist/{eval-B3KZZESM.js → eval-XSSNATB4.js} +93 -27
- package/dist/{evidence-V67CHM35.js → evidence-UA6AWDQQ.js} +55 -27
- package/dist/{evolve-YDZSUQYA.js → evolve-QNTFGV6Z.js} +59 -26
- package/dist/{extensions-SRG7XCAH.js → extensions-QVDOHDGJ.js} +23 -8
- package/dist/{fleet-CA2CRTVG.js → fleet-Q7UOMUSG.js} +173 -56
- package/dist/fleet-preflight-DDN536IT.js +26 -0
- package/dist/{init-2OZDJE2D.js → init-WBB65ZHQ.js} +79 -34
- package/dist/{memory-3PIQQAKX.js → memory-MD3O64RI.js} +57 -28
- package/dist/{models-DY35XI7Y.js → models-BZU34YWD.js} +49 -24
- package/dist/monitor-MEQA5C3I.js +661 -0
- package/dist/{chunk-PS4PFJQP.js → orchestrator-CGFKEP27.js} +22837 -18564
- package/dist/{paths-5OMXW7Z4.js → paths-UXLN5YYZ.js} +17 -6
- package/dist/preload-P6DGH2PZ.js +13 -0
- package/dist/{reset-PIFYNOS3.js → reset-L2FQEE3E.js} +25 -13
- package/dist/{run-3VSPP24F.js → run-IV4Q6RLN.js} +115 -63
- package/dist/{share-D36RQCXM.js → share-S5BZQC5I.js} +23 -10
- package/dist/{skills-F2MRLELY.js → skills-LQEKRDTN.js} +42 -15
- package/dist/{skills-eval-E2ZTW4PL.js → skills-eval-3DC4HEWS.js} +90 -45
- package/dist/steer-GGWFUJUD.js +77 -0
- package/dist/{targets-DZMEZAH4.js → targets-C4SSGQOB.js} +78 -60
- package/dist/terminal-lease-IT5JW2NR.js +395 -0
- package/dist/{trace-7NYCUI2J.js → trace-PNCASAXC.js} +48 -17
- package/dist/tree-sitter-HGKH6LG4.js +4673 -0
- package/dist/{uninstall-AD3JWHBB.js → uninstall-FZCQCDKC.js} +19 -8
- package/dist/{upgrade-WYYBKGDY.js → upgrade-7TT7SQ3G.js} +66 -24
- package/dist/{usage-ULIDAGFF.js → usage-GV4PKT3M.js} +71 -32
- package/dist/verify-G6V4D2G7.js +716 -0
- package/dist/version-KGEG7EPO.js +21 -0
- package/dist/web-fetch-2YHJ3KTG.js +638 -0
- package/dist/{wiki-generate-PKFIX6OB.js → wiki-generate-DQF6Z66B.js} +98 -48
- package/dist/worker/entry.js +297 -54
- package/dist/workspace-G4ZWUIPR.js +22 -0
- package/docs/README.md +29 -21
- package/docs/acp.md +191 -16
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +157 -7
- package/docs/artifact-placement.md +101 -0
- package/docs/artifact-versions.md +1 -1
- package/docs/built-in-agents.md +4 -2
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +224 -97
- package/docs/config-knobs-audit.md +1 -3
- package/docs/configuration-and-targets.md +236 -38
- package/docs/context-engine.md +34 -7
- package/docs/development-pipeline.md +102 -0
- package/docs/dispatch-architecture-rationale.md +1 -1
- package/docs/documentation-coverage.md +4 -4
- package/docs/documentation-guide.md +3 -3
- package/docs/environment-variables.md +15 -6
- package/docs/eval-runner.md +3 -3
- package/docs/evals-internal.md +2 -2
- package/docs/evidence-and-memory.md +10 -2
- package/docs/evolution.md +2 -2
- package/docs/exit-codes-and-output.md +15 -9
- package/docs/extensions-and-sharing.md +25 -18
- package/docs/fleet-demo-runbook.md +22 -23
- package/docs/fleet-dispatch.md +117 -16
- package/docs/git-commit-provenance.md +120 -0
- package/docs/glossary.md +107 -15
- package/docs/installation-and-lifecycle.md +75 -17
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +46 -15
- package/docs/observability.md +8 -5
- package/docs/performance-methodology.md +491 -0
- package/docs/pi-boundary.md +72 -0
- package/docs/proactive-memory.md +14 -14
- package/docs/prompt-envelope-and-tools.md +25 -4
- package/docs/provider-adapter-cookbook.md +57 -4
- package/docs/release-cut-checklist.md +129 -111
- package/docs/safety-model.md +28 -8
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +55 -12
- package/docs/skills-marketplace.md +12 -8
- package/docs/time-conventions.md +101 -0
- package/docs/tool-usage.md +6 -5
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +10 -7
- package/docs/tui-design.md +121 -28
- package/docs/worker-dispatch-mechanics.md +3 -3
- package/package.json +33 -36
- package/skills/README.md +5 -6
- package/skills/coding/ast-grep/SKILL.md +136 -0
- package/skills/coding/ast-grep/evals.md +56 -0
- package/skills/coding/ast-grep/references/rule_reference.md +297 -0
- package/skills/coding/coding-standards/SKILL.md +113 -0
- package/skills/coding/coding-standards/evals.md +34 -0
- package/skills/coding/prototype/SKILL.md +86 -0
- package/skills/coding/prototype/evals.md +42 -0
- package/skills/coding/prototype/references/LOGIC.md +67 -0
- package/skills/coding/prototype/references/UI.md +112 -0
- package/skills/coding/tdd/SKILL.md +101 -0
- package/skills/coding/tdd/evals.md +41 -0
- package/skills/coding/tdd/references/mocking.md +59 -0
- package/skills/coding/tdd/references/tests.md +77 -0
- package/skills/context/context-handoff/SKILL.md +126 -0
- package/skills/context/context-handoff/evals.md +57 -0
- package/skills/context/context-handoff/scripts/new-handoff.sh +26 -0
- package/skills/context/context-prime/SKILL.md +95 -0
- package/skills/context/context-prime/evals.md +54 -0
- package/skills/git/file-ticket/SKILL.md +107 -0
- package/skills/git/file-ticket/evals.md +54 -0
- package/skills/git/fix-issue/SKILL.md +106 -0
- package/skills/git/fix-issue/evals.md +71 -0
- package/skills/git/ship/SKILL.md +92 -0
- package/skills/git/ship/evals.md +72 -0
- package/skills/meta/clio-dev/SKILL.md +91 -0
- package/skills/meta/clio-dev/evals.md +45 -0
- package/skills/meta/clio-test/SKILL.md +130 -0
- package/skills/meta/clio-test/evals.md +43 -0
- package/skills/meta/clio-test/references/harness.md +97 -0
- package/skills/meta/clio-test/references/test-map.md +59 -0
- package/skills/meta/credentials/SKILL.md +125 -0
- package/skills/meta/credentials/evals.md +104 -0
- package/skills/meta/find-skills/SKILL.md +72 -0
- package/skills/meta/find-skills/evals.md +47 -0
- package/skills/meta/herdr/SKILL.md +127 -0
- package/skills/meta/herdr/evals.md +38 -0
- package/skills/meta/skill-craft/SKILL.md +102 -0
- package/skills/meta/skill-craft/evals.md +41 -0
- package/skills/planning/architecture/SKILL.md +129 -0
- package/skills/planning/architecture/evals.md +36 -0
- package/skills/planning/backlog/SKILL.md +90 -0
- package/skills/planning/backlog/evals.md +43 -0
- package/skills/planning/prd/SKILL.md +82 -0
- package/skills/planning/prd/evals.md +49 -0
- package/skills/planning/product-intent/SKILL.md +112 -0
- package/skills/planning/product-intent/evals.md +36 -0
- package/skills/planning/tech-spec/SKILL.md +115 -0
- package/skills/planning/tech-spec/evals.md +47 -0
- package/skills/registry.yaml +136 -0
- package/skills/research/arxiv-literature/SKILL.md +104 -0
- package/skills/research/arxiv-literature/evals.md +58 -0
- package/skills/research/experiment-protocol/SKILL.md +122 -0
- package/skills/research/experiment-protocol/evals.md +91 -0
- package/skills/research/scientific-debugging/SKILL.md +119 -0
- package/skills/research/scientific-debugging/evals.md +138 -0
- package/skills/research/scientific-modernization/SKILL.md +138 -0
- package/skills/research/scientific-modernization/evals.md +84 -0
- package/skills/skill-marketplace.json +12 -20
- package/skills/workflow/design-council/SKILL.md +139 -0
- package/skills/workflow/design-council/evals.md +97 -0
- package/skills/workflow/grill-me/SKILL.md +186 -0
- package/skills/workflow/grill-me/evals.md +78 -0
- package/skills/workflow/workflow-distiller/SKILL.md +136 -0
- package/skills/workflow/workflow-distiller/evals.md +107 -0
- package/src/cli/acp.ts +115 -0
- package/src/cli/agents.ts +60 -0
- package/src/cli/args.ts +280 -0
- package/src/cli/argv.ts +170 -0
- package/src/cli/ask.ts +34 -0
- package/src/cli/auth.ts +468 -0
- package/src/cli/bootstrap-generate.ts +498 -0
- package/src/cli/clio.ts +96 -0
- package/src/cli/components.ts +195 -0
- package/src/cli/config-inspect.ts +336 -0
- package/src/cli/config.ts +72 -0
- package/src/cli/configure-interop.ts +67 -0
- package/src/cli/configure-layout.ts +172 -0
- package/src/cli/configure.ts +1525 -0
- package/src/cli/context-clear.ts +76 -0
- package/src/cli/context-index.ts +100 -0
- package/src/cli/context.ts +321 -0
- package/src/cli/default-target.ts +55 -0
- package/src/cli/docs.ts +346 -0
- package/src/cli/doctor.ts +54 -0
- package/src/cli/eval.ts +315 -0
- package/src/cli/evidence.ts +225 -0
- package/src/cli/evolve.ts +219 -0
- package/src/cli/extensions.ts +214 -0
- package/src/cli/fleet.ts +868 -0
- package/src/cli/index.ts +338 -0
- package/src/cli/init.ts +219 -0
- package/src/cli/initial-message.ts +47 -0
- package/src/cli/internal-dispatch.ts +55 -0
- package/src/cli/memory.ts +182 -0
- package/src/cli/models.ts +257 -0
- package/src/cli/modes/json-stream.ts +121 -0
- package/src/cli/modes/jsonl.ts +9 -0
- package/src/cli/modes/print.ts +604 -0
- package/src/cli/oauth-manual-input.ts +72 -0
- package/src/cli/oauth-select.ts +36 -0
- package/src/cli/output-guard.ts +48 -0
- package/src/cli/paths.ts +44 -0
- package/src/cli/provider-target.ts +113 -0
- package/src/cli/removal.ts +72 -0
- package/src/cli/reset.ts +253 -0
- package/src/cli/run.ts +497 -0
- package/src/cli/share.ts +243 -0
- package/src/cli/shared.ts +60 -0
- package/src/cli/skills-eval.ts +1240 -0
- package/src/cli/skills.ts +485 -0
- package/src/cli/steer-channel.ts +86 -0
- package/src/cli/targets.ts +1154 -0
- package/src/cli/text-layout.ts +112 -0
- package/src/cli/trace.ts +322 -0
- package/src/cli/uninstall.ts +405 -0
- package/src/cli/upgrade.ts +286 -0
- package/src/cli/usage.ts +876 -0
- package/src/cli/validate-model.ts +28 -0
- package/src/cli/version.ts +7 -0
- package/src/cli/wiki-generate.ts +510 -0
- package/src/core/agent-environment.ts +7 -0
- package/src/core/artifact-paths.ts +43 -0
- package/src/core/bash-exec.ts +313 -0
- package/src/core/boot-trace.ts +42 -0
- package/src/core/bus-events.ts +744 -0
- package/src/core/bus-trace.ts +53 -0
- package/src/core/c-header-language.ts +265 -0
- package/src/core/clio-repo.ts +78 -0
- package/src/core/commit-attribution.ts +157 -0
- package/src/core/compile-cache.ts +159 -0
- package/src/core/config.ts +1722 -0
- package/src/core/context-floor.ts +33 -0
- package/src/core/defaults.ts +659 -0
- package/src/core/domain-loader.ts +177 -0
- package/src/core/event-bus.ts +94 -0
- package/src/core/file-references.ts +282 -0
- package/src/core/git-commit-attribution.ts +362 -0
- package/src/core/guardrails.ts +185 -0
- package/src/core/headless-permission.ts +21 -0
- package/src/core/incomplete-installation.ts +45 -0
- package/src/core/init.ts +223 -0
- package/src/core/json-payload.ts +58 -0
- package/src/core/package-root.ts +54 -0
- package/src/core/path-canonical.ts +37 -0
- package/src/core/process-identity.ts +41 -0
- package/src/core/recent-models.ts +91 -0
- package/src/core/residency-protection.ts +56 -0
- package/src/core/resolve-config-value.ts +88 -0
- package/src/core/response-schema.ts +279 -0
- package/src/core/run-overrides.ts +77 -0
- package/src/core/safe-exec.ts +205 -0
- package/src/core/safe-id.ts +37 -0
- package/src/core/safe-resource-write.ts +162 -0
- package/src/core/session-routing.ts +339 -0
- package/src/core/settings-layers.ts +354 -0
- package/src/core/shared-bus.ts +8 -0
- package/src/core/shell-quote.ts +26 -0
- package/src/core/skill-activation.ts +190 -0
- package/src/core/startup-timer.ts +37 -0
- package/src/core/state-file-lock.ts +219 -0
- package/src/core/termination.ts +275 -0
- package/src/core/timers.ts +38 -0
- package/src/core/tool-names.ts +65 -0
- package/src/core/verification-scripts.ts +13 -0
- package/src/core/workspace-files.ts +492 -0
- package/src/core/xdg.ts +177 -0
- package/src/domains/agents/builtins/architect.md +4 -4
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +3 -3
- package/src/domains/agents/builtins/provenance.md +1 -1
- package/src/domains/agents/builtins/researcher.md +1 -1
- package/src/domains/agents/builtins/scout.md +1 -1
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +1 -1
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/catalog.ts +172 -0
- package/src/domains/agents/contract.ts +16 -0
- package/src/domains/agents/extension.ts +110 -0
- package/src/domains/agents/fleet-commands.ts +154 -0
- package/src/domains/agents/fleet-contract.ts +797 -0
- package/src/domains/agents/frontmatter.ts +40 -0
- package/src/domains/agents/index.ts +102 -0
- package/src/domains/agents/manifest.ts +6 -0
- package/src/domains/agents/recipe-schema.ts +202 -0
- package/src/domains/agents/recipe.ts +125 -0
- package/src/domains/agents/registry.ts +111 -0
- package/src/domains/agents/result-contract.ts +1265 -0
- package/src/domains/agents/spec.ts +371 -0
- package/src/domains/agents/write-boundary.ts +109 -0
- package/src/domains/components/diff.ts +99 -0
- package/src/domains/components/hash.ts +21 -0
- package/src/domains/components/index.ts +3 -0
- package/src/domains/components/scan.ts +304 -0
- package/src/domains/components/snapshot.ts +108 -0
- package/src/domains/components/types.ts +82 -0
- package/src/domains/config/agent-namespace.ts +13 -0
- package/src/domains/config/classify.ts +106 -0
- package/src/domains/config/contract.ts +22 -0
- package/src/domains/config/extension.ts +142 -0
- package/src/domains/config/index.ts +23 -0
- package/src/domains/config/keybindings.ts +200 -0
- package/src/domains/config/manifest.ts +6 -0
- package/src/domains/config/watcher.ts +41 -0
- package/src/domains/context/adoption.ts +880 -0
- package/src/domains/context/bootstrap-prompt.ts +273 -0
- package/src/domains/context/bootstrap.ts +1502 -0
- package/src/domains/context/clear.ts +91 -0
- package/src/domains/context/clio-md.ts +429 -0
- package/src/domains/context/codewiki/artifact.ts +400 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +24 -0
- package/src/domains/context/codewiki/build-worker.ts +54 -0
- package/src/domains/context/codewiki/cmake.ts +356 -0
- package/src/domains/context/codewiki/cooperative.ts +46 -0
- package/src/domains/context/codewiki/coordinator.ts +182 -0
- package/src/domains/context/codewiki/digest.ts +135 -0
- package/src/domains/context/codewiki/grammar-assets.ts +33 -0
- package/src/domains/context/codewiki/indexer.ts +1529 -0
- package/src/domains/context/codewiki/paths.ts +67 -0
- package/src/domains/context/codewiki/schema.ts +80 -0
- package/src/domains/context/codewiki/tree-sitter.ts +771 -0
- package/src/domains/context/contract.ts +68 -0
- package/src/domains/context/excluded-dirs.ts +1 -0
- package/src/domains/context/extension.ts +358 -0
- package/src/domains/context/fingerprint.ts +198 -0
- package/src/domains/context/index.ts +154 -0
- package/src/domains/context/init-options.ts +69 -0
- package/src/domains/context/manifest.ts +6 -0
- package/src/domains/context/operator-profile.ts +157 -0
- package/src/domains/context/project-metadata.ts +529 -0
- package/src/domains/context/project-rules.ts +227 -0
- package/src/domains/context/prompt-context.ts +61 -0
- package/src/domains/context/refresh.ts +178 -0
- package/src/domains/context/runtime.ts +17 -0
- package/src/domains/context/sibling-files.ts +10 -0
- package/src/domains/context/state.ts +237 -0
- package/src/domains/context/wiki/assemble.ts +303 -0
- package/src/domains/context/wiki/frontmatter.ts +210 -0
- package/src/domains/context/wiki/generate.ts +595 -0
- package/src/domains/context/wiki/layout.ts +111 -0
- package/src/domains/context/wiki/meta.ts +221 -0
- package/src/domains/context/wiki/plan-store.ts +217 -0
- package/src/domains/context/wiki/plan.ts +250 -0
- package/src/domains/context/wiki/prompts.ts +283 -0
- package/src/domains/context/wiki/staleness.ts +198 -0
- package/src/domains/dispatch/active-route-planner.ts +168 -0
- package/src/domains/dispatch/admission-queue.ts +150 -0
- package/src/domains/dispatch/admission.ts +334 -0
- package/src/domains/dispatch/agent-candidates.ts +307 -0
- package/src/domains/dispatch/agent-ledger-hub.ts +71 -0
- package/src/domains/dispatch/agent-ledger-store.ts +257 -0
- package/src/domains/dispatch/agent-ledger.ts +212 -0
- package/src/domains/dispatch/agent-plan-adapter.ts +85 -0
- package/src/domains/dispatch/assignment-events.ts +132 -0
- package/src/domains/dispatch/assignment-reconcile.ts +76 -0
- package/src/domains/dispatch/assignment-store.ts +162 -0
- package/src/domains/dispatch/assignment.ts +278 -0
- package/src/domains/dispatch/backoff.ts +59 -0
- package/src/domains/dispatch/batch-store.ts +134 -0
- package/src/domains/dispatch/batch-tracker.ts +66 -0
- package/src/domains/dispatch/capability-match.ts +155 -0
- package/src/domains/dispatch/capacity-lease.ts +413 -0
- package/src/domains/dispatch/code-step-store.ts +52 -0
- package/src/domains/dispatch/code-step.ts +387 -0
- package/src/domains/dispatch/contract.ts +278 -0
- package/src/domains/dispatch/dedup.ts +133 -0
- package/src/domains/dispatch/event-pump.ts +251 -0
- package/src/domains/dispatch/execution-handoff.ts +29 -0
- package/src/domains/dispatch/execution-plan.ts +328 -0
- package/src/domains/dispatch/execution-role.ts +277 -0
- package/src/domains/dispatch/execution-scheduler.ts +583 -0
- package/src/domains/dispatch/extension.ts +6006 -0
- package/src/domains/dispatch/failure-classification.ts +147 -0
- package/src/domains/dispatch/fleet-commit-attribution.ts +56 -0
- package/src/domains/dispatch/fleet-plan.ts +225 -0
- package/src/domains/dispatch/fleet-preflight.ts +394 -0
- package/src/domains/dispatch/gate-decisions.ts +1040 -0
- package/src/domains/dispatch/gate-role-prompts.ts +58 -0
- package/src/domains/dispatch/heartbeat.ts +27 -0
- package/src/domains/dispatch/index.ts +137 -0
- package/src/domains/dispatch/joint-route-adapter.ts +114 -0
- package/src/domains/dispatch/joint-route-resolver.ts +283 -0
- package/src/domains/dispatch/manifest.ts +6 -0
- package/src/domains/dispatch/orphan-recovery.ts +266 -0
- package/src/domains/dispatch/outcome.ts +109 -0
- package/src/domains/dispatch/phase-timing.ts +47 -0
- package/src/domains/dispatch/placement.ts +202 -0
- package/src/domains/dispatch/receipt-findings.ts +255 -0
- package/src/domains/dispatch/receipt-integrity.ts +383 -0
- package/src/domains/dispatch/recovery-candidates.ts +74 -0
- package/src/domains/dispatch/reproducibility.ts +48 -0
- package/src/domains/dispatch/reservation-store.ts +501 -0
- package/src/domains/dispatch/route-approval.ts +177 -0
- package/src/domains/dispatch/route-candidates.ts +57 -0
- package/src/domains/dispatch/route-decision.ts +1079 -0
- package/src/domains/dispatch/route-facts.ts +187 -0
- package/src/domains/dispatch/route-history.ts +238 -0
- package/src/domains/dispatch/route-observer.ts +488 -0
- package/src/domains/dispatch/route-policy.ts +327 -0
- package/src/domains/dispatch/route-quality.ts +256 -0
- package/src/domains/dispatch/route-readiness.ts +120 -0
- package/src/domains/dispatch/routing-intent.ts +287 -0
- package/src/domains/dispatch/run-identity.ts +56 -0
- package/src/domains/dispatch/scout-transition.ts +130 -0
- package/src/domains/dispatch/state.ts +302 -0
- package/src/domains/dispatch/tool-stats.ts +132 -0
- package/src/domains/dispatch/transport.ts +210 -0
- package/src/domains/dispatch/types.ts +799 -0
- package/src/domains/dispatch/validation-grounding.ts +154 -0
- package/src/domains/dispatch/validation.ts +721 -0
- package/src/domains/dispatch/worker-protocol.ts +275 -0
- package/src/domains/dispatch/worker-spawn.ts +585 -0
- package/src/domains/dispatch/write-boundary-enforcer.ts +97 -0
- package/src/domains/dispatch/write-boundary.ts +426 -0
- package/src/domains/eval/artifacts/redact.ts +42 -0
- package/src/domains/eval/artifacts/store.ts +173 -0
- package/src/domains/eval/compare/compare.ts +33 -0
- package/src/domains/eval/compare/gates.ts +66 -0
- package/src/domains/eval/compare/thresholds.ts +92 -0
- package/src/domains/eval/harness-metrics.ts +62 -0
- package/src/domains/eval/index.ts +66 -0
- package/src/domains/eval/metrics/chaos-stream.ts +93 -0
- package/src/domains/eval/metrics/context.ts +34 -0
- package/src/domains/eval/metrics/coverage.ts +21 -0
- package/src/domains/eval/metrics/evidence.ts +182 -0
- package/src/domains/eval/metrics/fleet-loop-stream.ts +196 -0
- package/src/domains/eval/metrics/invariants.ts +736 -0
- package/src/domains/eval/metrics/latency.ts +4 -0
- package/src/domains/eval/metrics/token-stream.ts +139 -0
- package/src/domains/eval/metrics/tokens.ts +51 -0
- package/src/domains/eval/metrics/tool-calls.ts +7 -0
- package/src/domains/eval/proactive-memory.ts +279 -0
- package/src/domains/eval/provenance.ts +35 -0
- package/src/domains/eval/report.ts +234 -0
- package/src/domains/eval/reports/json.ts +5 -0
- package/src/domains/eval/reports/junit.ts +23 -0
- package/src/domains/eval/reports/markdown.ts +20 -0
- package/src/domains/eval/reports/swe-jsonl.ts +16 -0
- package/src/domains/eval/reports/text.ts +25 -0
- package/src/domains/eval/run-compare.ts +274 -0
- package/src/domains/eval/runner.ts +244 -0
- package/src/domains/eval/runners/clio-run.ts +148 -0
- package/src/domains/eval/runners/context-index.ts +56 -0
- package/src/domains/eval/runners/context-init.ts +203 -0
- package/src/domains/eval/runners/external-command.ts +350 -0
- package/src/domains/eval/runtime-paths.ts +171 -0
- package/src/domains/eval/schema/artifact.ts +75 -0
- package/src/domains/eval/schema/suite.ts +235 -0
- package/src/domains/eval/schema/validate.ts +339 -0
- package/src/domains/eval/store.ts +392 -0
- package/src/domains/eval/suites/load.ts +74 -0
- package/src/domains/eval/suites/matrix.ts +19 -0
- package/src/domains/eval/suites/resolve.ts +44 -0
- package/src/domains/eval/suites/run.ts +325 -0
- package/src/domains/eval/task-file.ts +186 -0
- package/src/domains/eval/types.ts +140 -0
- package/src/domains/eval/verifiers/command.ts +27 -0
- package/src/domains/eval/verifiers/file-exists.ts +6 -0
- package/src/domains/eval/verifiers/patch.ts +22 -0
- package/src/domains/eval/workspaces/git.ts +41 -0
- package/src/domains/eval/workspaces/local.ts +17 -0
- package/src/domains/eval/workspaces/temp-copy.ts +29 -0
- package/src/domains/evidence/build.ts +1754 -0
- package/src/domains/evidence/eval.ts +605 -0
- package/src/domains/evidence/failure-attribution.ts +54 -0
- package/src/domains/evidence/finish-contract-map.ts +42 -0
- package/src/domains/evidence/index.ts +55 -0
- package/src/domains/evidence/provenance.ts +200 -0
- package/src/domains/evidence/redact.ts +81 -0
- package/src/domains/evidence/store.ts +291 -0
- package/src/domains/evidence/types.ts +325 -0
- package/src/domains/evolution/SELF_EDIT_GATE.md +91 -0
- package/src/domains/evolution/index.ts +26 -0
- package/src/domains/evolution/manifest.ts +154 -0
- package/src/domains/evolution/validate.ts +304 -0
- package/src/domains/extensions/contract.ts +22 -0
- package/src/domains/extensions/discovery.ts +193 -0
- package/src/domains/extensions/extension.ts +46 -0
- package/src/domains/extensions/index.ts +34 -0
- package/src/domains/extensions/manager.ts +30 -0
- package/src/domains/extensions/manifest.ts +6 -0
- package/src/domains/extensions/resources.ts +38 -0
- package/src/domains/extensions/state.ts +224 -0
- package/src/domains/extensions/types.ts +83 -0
- package/src/domains/interop/consent.ts +185 -0
- package/src/domains/interop/contract.ts +29 -0
- package/src/domains/interop/detect.ts +173 -0
- package/src/domains/interop/extension.ts +59 -0
- package/src/domains/interop/index.ts +34 -0
- package/src/domains/interop/manifest.ts +6 -0
- package/src/domains/interop/registry.ts +139 -0
- package/src/domains/interop/state.ts +92 -0
- package/src/domains/interop/types.ts +109 -0
- package/src/domains/lifecycle/contract.ts +11 -0
- package/src/domains/lifecycle/doctor.ts +536 -0
- package/src/domains/lifecycle/extension.ts +23 -0
- package/src/domains/lifecycle/index.ts +21 -0
- package/src/domains/lifecycle/install-method.ts +51 -0
- package/src/domains/lifecycle/manifest.ts +6 -0
- package/src/domains/lifecycle/migrations/2026-08-18-lmstudio-runtime-id.ts +52 -0
- package/src/domains/lifecycle/migrations/index.ts +114 -0
- package/src/domains/lifecycle/state.ts +93 -0
- package/src/domains/lifecycle/upgrade-notice.ts +35 -0
- package/src/domains/lifecycle/version.ts +35 -0
- package/src/domains/memory/index.ts +128 -0
- package/src/domains/memory/operations.ts +143 -0
- package/src/domains/memory/prompt-section.ts +86 -0
- package/src/domains/memory/proposal.ts +180 -0
- package/src/domains/memory/store.ts +163 -0
- package/src/domains/memory/task-bank.ts +229 -0
- package/src/domains/memory/task-memory-handoff.ts +222 -0
- package/src/domains/memory/task-memory-policy.ts +602 -0
- package/src/domains/memory/task-memory-status.ts +58 -0
- package/src/domains/memory/task-memory-telemetry.ts +346 -0
- package/src/domains/memory/task-memory-trace.ts +89 -0
- package/src/domains/memory/types.ts +74 -0
- package/src/domains/memory/validate.ts +297 -0
- package/src/domains/middleware/budget.ts +216 -0
- package/src/domains/middleware/contract.ts +35 -0
- package/src/domains/middleware/dispatch-nudge.ts +469 -0
- package/src/domains/middleware/extension.ts +129 -0
- package/src/domains/middleware/hook-receipts.ts +70 -0
- package/src/domains/middleware/hooks-io.ts +186 -0
- package/src/domains/middleware/hooks.ts +432 -0
- package/src/domains/middleware/index.ts +154 -0
- package/src/domains/middleware/manifest.ts +6 -0
- package/src/domains/middleware/memory-intervention.ts +701 -0
- package/src/domains/middleware/rules.ts +42 -0
- package/src/domains/middleware/runtime.ts +333 -0
- package/src/domains/middleware/skills-reminder.ts +202 -0
- package/src/domains/middleware/snapshot.ts +71 -0
- package/src/domains/middleware/stalled-turn.ts +71 -0
- package/src/domains/middleware/task-board-reminder.ts +87 -0
- package/src/domains/middleware/task-nudge.ts +77 -0
- package/src/domains/middleware/tool-choice-control.ts +42 -0
- package/src/domains/middleware/types.ts +131 -0
- package/src/domains/middleware/validate.ts +329 -0
- package/src/domains/observability/accountability.ts +67 -0
- package/src/domains/observability/contract.ts +168 -0
- package/src/domains/observability/cost.ts +206 -0
- package/src/domains/observability/evidence-index.ts +123 -0
- package/src/domains/observability/extension.ts +281 -0
- package/src/domains/observability/index.ts +78 -0
- package/src/domains/observability/manifest.ts +10 -0
- package/src/domains/observability/metrics.ts +37 -0
- package/src/domains/observability/projection.ts +477 -0
- package/src/domains/observability/telemetry.ts +89 -0
- package/src/domains/observability/trace-store.ts +1454 -0
- package/src/domains/prompts/compiler.ts +614 -0
- package/src/domains/prompts/contract.ts +46 -0
- package/src/domains/prompts/extension.ts +336 -0
- package/src/domains/prompts/fragment-loader.ts +138 -0
- package/src/domains/prompts/fragments/identity/clio.md +5 -6
- package/src/domains/prompts/fragments/identity/docs-routing.md +10 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +19 -0
- package/src/domains/prompts/fragments/operating/contract.md +4 -41
- package/src/domains/prompts/fragments/operating/delegation.md +42 -0
- package/src/domains/prompts/fragments/operating/skills.md +26 -0
- package/src/domains/prompts/fragments/operating/worker.md +16 -0
- package/src/domains/prompts/fragments/safety/auto-edit.md +5 -5
- package/src/domains/prompts/fragments/safety/full-auto.md +3 -3
- package/src/domains/prompts/fragments/safety/read-only.md +4 -4
- package/src/domains/prompts/fragments/safety/suggest.md +2 -2
- package/src/domains/prompts/fragments/wiki/page.md +10 -0
- package/src/domains/prompts/fragments/wiki/plan.md +10 -0
- package/src/domains/prompts/hash.ts +73 -0
- package/src/domains/prompts/index.ts +32 -0
- package/src/domains/prompts/manifest.ts +8 -0
- package/src/domains/prompts/memory-intervention.ts +57 -0
- package/src/domains/prompts/preload.ts +82 -0
- package/src/domains/providers/auth/api-key.ts +47 -0
- package/src/domains/providers/auth/backend-file.ts +79 -0
- package/src/domains/providers/auth/backend-memory.ts +72 -0
- package/src/domains/providers/auth/boot-status.ts +65 -0
- package/src/domains/providers/auth/index.ts +37 -0
- package/src/domains/providers/auth/oauth.ts +37 -0
- package/src/domains/providers/auth/storage.ts +726 -0
- package/src/domains/providers/capabilities.ts +58 -0
- package/src/domains/providers/catalog.ts +162 -0
- package/src/domains/providers/contract.ts +162 -0
- package/src/domains/providers/credentials.ts +20 -0
- package/src/domains/providers/eligibility.ts +24 -0
- package/src/domains/providers/errors.ts +64 -0
- package/src/domains/providers/extension.ts +548 -0
- package/src/domains/providers/index.ts +142 -0
- package/src/domains/providers/knowledge-base-path.ts +102 -0
- package/src/domains/providers/manifest.ts +6 -0
- package/src/domains/providers/model-capabilities.ts +136 -0
- package/src/domains/providers/model-discovery.ts +144 -0
- package/src/domains/providers/model-family.ts +32 -0
- package/src/domains/providers/model-runtime-capabilities.ts +723 -0
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +120 -37
- package/src/domains/providers/plugins.ts +61 -0
- package/src/domains/providers/probe/fingerprint.ts +64 -0
- package/src/domains/providers/probe/http.ts +114 -0
- package/src/domains/providers/probe/reasoning.ts +111 -0
- package/src/domains/providers/registry.ts +187 -0
- package/src/domains/providers/resolver.ts +156 -0
- package/src/domains/providers/runtime-resolution.ts +720 -0
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +90 -0
- package/src/domains/providers/runtimes/boot-manifest.ts +55 -0
- package/src/domains/providers/runtimes/builtins.ts +78 -0
- package/src/domains/providers/runtimes/claude/claude-code.ts +38 -0
- package/src/domains/providers/runtimes/claude/claude-sdk.ts +38 -0
- package/src/domains/providers/runtimes/claude/common.ts +55 -0
- package/src/domains/providers/runtimes/cloud/alcf.ts +171 -0
- package/src/domains/providers/runtimes/cloud/anthropic-max.ts +71 -0
- package/src/domains/providers/runtimes/cloud/anthropic.ts +43 -0
- package/src/domains/providers/runtimes/cloud/bedrock.ts +35 -0
- package/src/domains/providers/runtimes/cloud/deepseek.ts +50 -0
- package/src/domains/providers/runtimes/cloud/google.ts +41 -0
- package/src/domains/providers/runtimes/cloud/groq.ts +46 -0
- package/src/domains/providers/runtimes/cloud/mistral.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openai-codex.ts +49 -0
- package/src/domains/providers/runtimes/cloud/openai.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openrouter.ts +111 -0
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +423 -0
- package/src/domains/providers/runtimes/common/local-synth.ts +164 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +474 -0
- package/src/domains/providers/runtimes/local-native/lemonade-anthropic.ts +27 -0
- package/src/domains/providers/runtimes/local-native/lemonade-openai.ts +26 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +88 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +207 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +180 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +126 -0
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +98 -0
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +241 -0
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +117 -0
- package/src/domains/providers/runtimes/local-native/sglang.ts +26 -0
- package/src/domains/providers/runtimes/local-native/vllm.ts +27 -0
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +104 -0
- package/src/domains/providers/runtimes/protocol/anthropic-messages.ts +28 -0
- package/src/domains/providers/runtimes/protocol/bedrock.ts +26 -0
- package/src/domains/providers/runtimes/protocol/google.ts +27 -0
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +145 -0
- package/src/domains/providers/support.ts +241 -0
- package/src/domains/providers/thinking-control-policy.ts +85 -0
- package/src/domains/providers/types/capability-flags.ts +114 -0
- package/src/domains/providers/types/cost-provenance.ts +7 -0
- package/src/domains/providers/types/inference.ts +41 -0
- package/src/domains/providers/types/knowledge-base.ts +156 -0
- package/src/domains/providers/types/local-model-quirks.ts +216 -0
- package/src/domains/providers/types/runtime-descriptor.ts +181 -0
- package/src/domains/providers/types/target-descriptor.ts +60 -0
- package/src/domains/resources/collision.ts +92 -0
- package/src/domains/resources/common-loader.ts +140 -0
- package/src/domains/resources/contract.ts +24 -0
- package/src/domains/resources/extension.ts +59 -0
- package/src/domains/resources/index.ts +74 -0
- package/src/domains/resources/loader.ts +85 -0
- package/src/domains/resources/manifest.ts +6 -0
- package/src/domains/resources/prompts/loader.ts +246 -0
- package/src/domains/resources/prompts/substitute.ts +1 -0
- package/src/domains/resources/skills/content-hash.ts +107 -0
- package/src/domains/resources/skills/evals.ts +175 -0
- package/src/domains/resources/skills/install.ts +427 -0
- package/src/domains/resources/skills/loader.ts +985 -0
- package/src/domains/resources/skills/marketplace.ts +301 -0
- package/src/domains/resources/skills/provenance-pin.ts +115 -0
- package/src/domains/safety/action-classifier.ts +270 -0
- package/src/domains/safety/approval-axis.ts +23 -0
- package/src/domains/safety/audit.ts +493 -0
- package/src/domains/safety/autonomy.ts +174 -0
- package/src/domains/safety/call-target.ts +59 -0
- package/src/domains/safety/contract.ts +65 -0
- package/src/domains/safety/damage-control.ts +44 -0
- package/src/domains/safety/default-path-policy.ts +117 -0
- package/src/domains/safety/extension.ts +383 -0
- package/src/domains/safety/finish-contract-registration.ts +128 -0
- package/src/domains/safety/finish-contract.ts +554 -0
- package/src/domains/safety/index.ts +44 -0
- package/src/domains/safety/loop-detector.ts +143 -0
- package/src/domains/safety/manifest.ts +6 -0
- package/src/domains/safety/path-policy.ts +164 -0
- package/src/domains/safety/policy-engine.ts +994 -0
- package/src/domains/safety/project-policy.ts +391 -0
- package/src/domains/safety/protected-artifacts-registration.ts +189 -0
- package/src/domains/safety/protected-artifacts.ts +993 -0
- package/src/domains/safety/rejection-feedback.ts +102 -0
- package/src/domains/safety/rigor.ts +72 -0
- package/src/domains/safety/rule-compiler.ts +48 -0
- package/src/domains/safety/rule-pack-loader.ts +92 -0
- package/src/domains/safety/run-effects.ts +197 -0
- package/src/domains/safety/scope.ts +61 -0
- package/src/domains/scheduling/budget.ts +35 -0
- package/src/domains/scheduling/cluster.ts +175 -0
- package/src/domains/scheduling/contract.ts +30 -0
- package/src/domains/scheduling/extension.ts +91 -0
- package/src/domains/scheduling/index.ts +12 -0
- package/src/domains/scheduling/manifest.ts +6 -0
- package/src/domains/session/archive-readers.ts +208 -0
- package/src/domains/session/checkpoint.ts +38 -0
- package/src/domains/session/compaction/auto.ts +89 -0
- package/src/domains/session/compaction/branch-summary.ts +187 -0
- package/src/domains/session/compaction/compact.ts +493 -0
- package/src/domains/session/compaction/cut-point.ts +172 -0
- package/src/domains/session/compaction/defaults.ts +34 -0
- package/src/domains/session/compaction/mask-observations.ts +265 -0
- package/src/domains/session/compaction/session-entries.ts +18 -0
- package/src/domains/session/compaction/tokens.ts +148 -0
- package/src/domains/session/context-accounting.ts +583 -0
- package/src/domains/session/context-ledger.ts +362 -0
- package/src/domains/session/contract.ts +159 -0
- package/src/domains/session/cwd-fallback.ts +65 -0
- package/src/domains/session/decision-board.ts +190 -0
- package/src/domains/session/entries.ts +572 -0
- package/src/domains/session/extension.ts +403 -0
- package/src/domains/session/history.ts +172 -0
- package/src/domains/session/index.ts +84 -0
- package/src/domains/session/manager.ts +128 -0
- package/src/domains/session/manifest.ts +6 -0
- package/src/domains/session/migrations/index.ts +27 -0
- package/src/domains/session/prompt-manifest.ts +173 -0
- package/src/domains/session/protected-artifact-journal.ts +241 -0
- package/src/domains/session/protected-artifacts.ts +90 -0
- package/src/domains/session/retry.ts +230 -0
- package/src/domains/session/session-artifacts.ts +107 -0
- package/src/domains/session/task-board.ts +569 -0
- package/src/domains/session/tree/active-path.ts +137 -0
- package/src/domains/session/tree/fork.ts +159 -0
- package/src/domains/session/tree/manager.ts +128 -0
- package/src/domains/session/tree/navigator.ts +177 -0
- package/src/domains/session/tree/preview.ts +259 -0
- package/src/domains/session/usage.ts +148 -0
- package/src/domains/session/workspace/git-probe.ts +167 -0
- package/src/domains/session/workspace/index.ts +4 -0
- package/src/domains/session/workspace/project-type.ts +217 -0
- package/src/domains/session/workspace/snapshot.ts +74 -0
- package/src/domains/share/archive.ts +684 -0
- package/src/domains/share/contract.ts +9 -0
- package/src/domains/share/extension.ts +26 -0
- package/src/domains/share/index.ts +28 -0
- package/src/domains/share/manifest.ts +6 -0
- package/src/domains/user-tasks/store.ts +297 -0
- package/src/engine/acp/adapter.ts +397 -0
- package/src/engine/acp/errors.ts +128 -0
- package/src/engine/acp/event-mapper.ts +154 -0
- package/src/engine/acp/server.ts +2238 -0
- package/src/engine/acp/tool-mediator.ts +686 -0
- package/src/engine/acp/transport.ts +775 -0
- package/src/engine/acp/types.ts +196 -0
- package/src/engine/agent.ts +29 -0
- package/src/engine/ai.ts +207 -0
- package/src/engine/alcf-oauth.ts +205 -0
- package/src/engine/antigravity/subprocess-runtime.ts +205 -0
- package/src/engine/api-registry.ts +223 -0
- package/src/engine/apis/degraded-inference.ts +95 -0
- package/src/engine/apis/index.ts +16 -0
- package/src/engine/apis/llamacpp-residency.ts +292 -0
- package/src/engine/apis/lmstudio-residency.ts +76 -0
- package/src/engine/apis/lmstudio.ts +243 -0
- package/src/engine/apis/ollama-native.ts +528 -0
- package/src/engine/apis/openai-completions.ts +795 -0
- package/src/engine/apis/output-budget.ts +99 -0
- package/src/engine/apis/residency-lock.ts +29 -0
- package/src/engine/apis/residency.ts +776 -0
- package/src/engine/apis/resident-models.ts +42 -0
- package/src/engine/apis/sampling-overrides.ts +38 -0
- package/src/engine/apis/types.ts +16 -0
- package/src/engine/claude/sdk-runtime.ts +685 -0
- package/src/engine/claude/session-id.ts +5 -0
- package/src/engine/claude/subprocess-runtime.ts +316 -0
- package/src/engine/claude/tool-safety.ts +400 -0
- package/src/engine/env-api-keys.ts +98 -0
- package/src/engine/external-subprocess.ts +23 -0
- package/src/engine/gemma-channel-filter.ts +223 -0
- package/src/engine/harmony-response.ts +165 -0
- package/src/engine/instrumented-tui.ts +192 -0
- package/src/engine/loop-guard.ts +1127 -0
- package/src/engine/messages.ts +14 -0
- package/src/engine/models.ts +42 -0
- package/src/engine/oauth.ts +196 -0
- package/src/engine/pi-mono-names.ts +13 -0
- package/src/engine/prompt-templates.ts +1 -0
- package/src/engine/provider-payload.ts +272 -0
- package/src/engine/select-list.ts +53 -0
- package/src/engine/session.ts +834 -0
- package/src/engine/strip-tokenizer-sentinels.ts +125 -0
- package/src/engine/truncate.ts +9 -0
- package/src/engine/tui.ts +111 -0
- package/src/engine/types.ts +63 -0
- package/src/engine/worker-events.ts +100 -0
- package/src/engine/worker-runtime-capabilities.ts +5 -0
- package/src/engine/worker-runtime.ts +1022 -0
- package/src/engine/worker-tools.ts +208 -0
- package/src/entry/boot-options.ts +50 -0
- package/src/entry/orchestrator.ts +2011 -0
- package/src/interactive/application-controller.ts +433 -0
- package/src/interactive/bus-notices.ts +265 -0
- package/src/interactive/chat-loop-messages.ts +626 -0
- package/src/interactive/chat-loop-policy.ts +18 -0
- package/src/interactive/chat-loop.ts +1090 -0
- package/src/interactive/chat-panel.ts +1820 -0
- package/src/interactive/chat-renderer.ts +1228 -0
- package/src/interactive/clio-editor.ts +161 -0
- package/src/interactive/command-fallbacks.ts +23 -0
- package/src/interactive/command-output.ts +85 -0
- package/src/interactive/context-activity.ts +203 -0
- package/src/interactive/context-meter.ts +223 -0
- package/src/interactive/context-overlay.ts +246 -0
- package/src/interactive/cost-overlay.ts +279 -0
- package/src/interactive/dispatch-board.ts +1319 -0
- package/src/interactive/dispatch-steering.ts +86 -0
- package/src/interactive/editor-bash.ts +46 -0
- package/src/interactive/editor-steer.ts +51 -0
- package/src/interactive/editor-submit.ts +507 -0
- package/src/interactive/export-html/ansi-to-html.ts +161 -0
- package/src/interactive/export-html/index.ts +51 -0
- package/src/interactive/export-html/template.ts +45 -0
- package/src/interactive/export-html/tool-renderer.ts +54 -0
- package/src/interactive/external-editor.ts +67 -0
- package/src/interactive/follow-up-queue-panel.ts +75 -0
- package/src/interactive/footer/dashboard.ts +538 -0
- package/src/interactive/footer/notifications.ts +275 -0
- package/src/interactive/footer/widgets.ts +1264 -0
- package/src/interactive/footer-panel.ts +187 -0
- package/src/interactive/format-time.ts +97 -0
- package/src/interactive/index.ts +11 -0
- package/src/interactive/interactive-application.ts +939 -0
- package/src/interactive/interactive-event-projection.ts +385 -0
- package/src/interactive/interactive-input-runtime.ts +307 -0
- package/src/interactive/interactive-presentation.ts +584 -0
- package/src/interactive/interactive-shell.ts +388 -0
- package/src/interactive/interactive-slash-runtime.ts +554 -0
- package/src/interactive/interactive-subscriptions.ts +111 -0
- package/src/interactive/interactive-tickers.ts +183 -0
- package/src/interactive/keybinding-manager.ts +496 -0
- package/src/interactive/layout.ts +57 -0
- package/src/interactive/leader-key.ts +143 -0
- package/src/interactive/loop-guard-interrupt.ts +101 -0
- package/src/interactive/memory-overlay.ts +280 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +110 -0
- package/src/interactive/overlay-auth-lifecycle.ts +308 -0
- package/src/interactive/overlay-frame.ts +502 -0
- package/src/interactive/overlay-general-openers.ts +274 -0
- package/src/interactive/overlay-key-routing.ts +216 -0
- package/src/interactive/overlay-lifecycle.ts +426 -0
- package/src/interactive/overlay-model-selectors.ts +127 -0
- package/src/interactive/overlay-permission-lifecycle.ts +345 -0
- package/src/interactive/overlay-resource-openers.ts +112 -0
- package/src/interactive/overlay-session-lifecycle.ts +327 -0
- package/src/interactive/overlay-transitions.ts +57 -0
- package/src/interactive/overlays/agents.ts +69 -0
- package/src/interactive/overlays/ask-user.ts +921 -0
- package/src/interactive/overlays/auth-dialog.ts +221 -0
- package/src/interactive/overlays/context-reset.ts +108 -0
- package/src/interactive/overlays/cwd-fallback.ts +141 -0
- package/src/interactive/overlays/decisions.ts +300 -0
- package/src/interactive/overlays/extensions.ts +54 -0
- package/src/interactive/overlays/help-reference.ts +145 -0
- package/src/interactive/overlays/interop.ts +139 -0
- package/src/interactive/overlays/keybinding-detail.ts +90 -0
- package/src/interactive/overlays/list-overlay.ts +606 -0
- package/src/interactive/overlays/message-picker.ts +155 -0
- package/src/interactive/overlays/model-selector.ts +1109 -0
- package/src/interactive/overlays/prompts.ts +72 -0
- package/src/interactive/overlays/session-selector-search.ts +31 -0
- package/src/interactive/overlays/session-selector.ts +284 -0
- package/src/interactive/overlays/settings.ts +3451 -0
- package/src/interactive/overlays/skills-hub.ts +237 -0
- package/src/interactive/overlays/tree-selector.ts +422 -0
- package/src/interactive/permission-overlay.ts +170 -0
- package/src/interactive/render-trace.ts +534 -0
- package/src/interactive/renderers/branch-summary.ts +86 -0
- package/src/interactive/renderers/code-ink.ts +420 -0
- package/src/interactive/renderers/compaction-summary.ts +112 -0
- package/src/interactive/renderers/diff.ts +137 -0
- package/src/interactive/renderers/mermaid.ts +53 -0
- package/src/interactive/renderers/notice.ts +28 -0
- package/src/interactive/renderers/retry-status.ts +31 -0
- package/src/interactive/renderers/structured.ts +89 -0
- package/src/interactive/renderers/tool-execution.ts +1357 -0
- package/src/interactive/renderers/worker-entry.ts +280 -0
- package/src/interactive/session-last-turn.ts +186 -0
- package/src/interactive/session-switch-settlement.ts +10 -0
- package/src/interactive/session-transcript.ts +105 -0
- package/src/interactive/session-usage-reseed.ts +74 -0
- package/src/interactive/slash-autocomplete.ts +256 -0
- package/src/interactive/slash-commands.ts +1407 -0
- package/src/interactive/slash-spec.ts +424 -0
- package/src/interactive/status/controller.ts +260 -0
- package/src/interactive/status/index.ts +23 -0
- package/src/interactive/status/state-machine.ts +530 -0
- package/src/interactive/status/summary.ts +170 -0
- package/src/interactive/status/types.ts +121 -0
- package/src/interactive/status/verbs.ts +163 -0
- package/src/interactive/status/watchdog.ts +24 -0
- package/src/interactive/stdout-backpressure.ts +99 -0
- package/src/interactive/stream-pacer.ts +530 -0
- package/src/interactive/stream-pacing-policy.ts +66 -0
- package/src/interactive/tasks-overlay.ts +540 -0
- package/src/interactive/terminal-lease.ts +485 -0
- package/src/interactive/theme/components.ts +55 -0
- package/src/interactive/theme/glyphs.ts +70 -0
- package/src/interactive/theme/index.ts +15 -0
- package/src/interactive/theme/labels.ts +88 -0
- package/src/interactive/theme/rules.ts +138 -0
- package/src/interactive/theme/segments.ts +88 -0
- package/src/interactive/theme/tokens.ts +121 -0
- package/src/interactive/thinking-level-policy.ts +6 -0
- package/src/interactive/tool-prose-loop.ts +122 -0
- package/src/interactive/tool-prose-registration.ts +48 -0
- package/src/interactive/turn-context.ts +855 -0
- package/src/interactive/turn-middleware.ts +283 -0
- package/src/interactive/turn-persistence.ts +458 -0
- package/src/interactive/turn-queues.ts +181 -0
- package/src/interactive/turn-recovery.ts +323 -0
- package/src/interactive/turn-runtime.ts +869 -0
- package/src/interactive/turn-state.ts +133 -0
- package/src/interactive/view/artifacts.ts +1452 -0
- package/src/interactive/view/view-overlay.ts +735 -0
- package/src/interactive/welcome-dashboard.ts +537 -0
- package/src/interactive/worker-receipts.ts +143 -0
- package/src/interactive/worker-replay.ts +111 -0
- package/src/interactive/worker-share.ts +100 -0
- package/src/interactive/worker-stream.ts +446 -0
- package/src/interactive/workspace-facts.ts +141 -0
- package/src/tools/agent-tools.ts +402 -0
- package/src/tools/artifact.ts +103 -0
- package/src/tools/ask-user.ts +666 -0
- package/src/tools/bash.ts +204 -0
- package/src/tools/bootstrap.ts +77 -0
- package/src/tools/builtin-tool-catalog.ts +265 -0
- package/src/tools/codewiki/code-nav-surface.ts +29 -0
- package/src/tools/codewiki/code-nav.ts +549 -0
- package/src/tools/codewiki/shared.ts +118 -0
- package/src/tools/compete-worktrees.ts +898 -0
- package/src/tools/context/docs-engine.ts +630 -0
- package/src/tools/context/index.ts +514 -0
- package/src/tools/context/surface.ts +19 -0
- package/src/tools/core-bootstrap.ts +168 -0
- package/src/tools/credential-present.ts +151 -0
- package/src/tools/dispatch-admission.ts +533 -0
- package/src/tools/dispatch-arguments.ts +228 -0
- package/src/tools/dispatch-background.ts +54 -0
- package/src/tools/dispatch-event-text.ts +6 -0
- package/src/tools/dispatch-plan.ts +746 -0
- package/src/tools/dispatch-run-events.ts +238 -0
- package/src/tools/dispatch-runner.ts +2370 -0
- package/src/tools/dispatch-scout-admission.ts +295 -0
- package/src/tools/dispatch-scout.ts +461 -0
- package/src/tools/dispatch-types.ts +77 -0
- package/src/tools/dispatch.ts +244 -0
- package/src/tools/edit-diff.ts +534 -0
- package/src/tools/edit.ts +128 -0
- package/src/tools/executables.ts +22 -0
- package/src/tools/file-mutation-queue.ts +35 -0
- package/src/tools/find.ts +294 -0
- package/src/tools/grep.ts +495 -0
- package/src/tools/ignore-policy.ts +169 -0
- package/src/tools/lazy-tool.ts +60 -0
- package/src/tools/ledger.ts +206 -0
- package/src/tools/ls.ts +110 -0
- package/src/tools/monitor-surface.ts +36 -0
- package/src/tools/monitor.ts +767 -0
- package/src/tools/network-policy.ts +29 -0
- package/src/tools/observation.ts +421 -0
- package/src/tools/observers.ts +99 -0
- package/src/tools/path-utils.ts +79 -0
- package/src/tools/policy.ts +154 -0
- package/src/tools/profiles.ts +108 -0
- package/src/tools/read.ts +173 -0
- package/src/tools/registry.ts +1169 -0
- package/src/tools/result-shaping.ts +204 -0
- package/src/tools/safe-exec.ts +128 -0
- package/src/tools/spawn-hygiene.ts +182 -0
- package/src/tools/steer-surface.ts +17 -0
- package/src/tools/steer.ts +77 -0
- package/src/tools/tasks.ts +265 -0
- package/src/tools/truncate-utf8.ts +17 -0
- package/src/tools/truncate.ts +43 -0
- package/src/tools/verify/frontend.ts +687 -0
- package/src/tools/verify/index.ts +31 -0
- package/src/tools/verify/scripts.ts +108 -0
- package/src/tools/verify/surface.ts +46 -0
- package/src/tools/web-fetch-surface.ts +23 -0
- package/src/tools/web-fetch.ts +759 -0
- package/src/tools/worker-evidence.ts +215 -0
- package/src/tools/write.ts +57 -0
- package/src/utils/exif-orientation.ts +192 -0
- package/src/utils/git.ts +24 -0
- package/src/utils/image-resize.ts +148 -0
- package/src/utils/photon.ts +103 -0
- package/src/worker/control-lane.ts +22 -0
- package/src/worker/entry.ts +294 -0
- package/src/worker/event-projection.ts +56 -0
- package/src/worker/heartbeat.ts +24 -0
- package/src/worker/ledger-mirror.ts +95 -0
- package/src/worker/ndjson.ts +40 -0
- package/src/worker/protocol.ts +529 -0
- package/src/worker/resource-facts.ts +79 -0
- package/src/worker/runtime-registry.ts +12 -0
- package/src/worker/spec-contract.ts +675 -0
- package/src/worker/stdin-demux.ts +316 -0
- package/dist/acp-UMLFVA3F.js +0 -92
- package/dist/chunk-262G75JS.js +0 -35
- package/dist/chunk-6CWDTGUC.js +0 -20
- package/dist/chunk-BYEU76JP.js +0 -899
- package/dist/chunk-GNGDQYDU.js +0 -34688
- package/dist/chunk-GOTUR54M.js +0 -9
- package/dist/chunk-NI4DEJMC.js +0 -88
- package/dist/chunk-TPOCL34A.js +0 -2876
- package/dist/chunk-UU3R62TT.js +0 -128
- package/dist/clio-KIQ5SNDS.js +0 -53
- package/dist/configure-G4E3A2PG.js +0 -27
- package/dist/doctor-M5HJJZOL.js +0 -61
- package/dist/domains/agents/builtins/architect.md +0 -33
- package/dist/domains/agents/builtins/coder.md +0 -31
- package/dist/domains/agents/builtins/context-bootstrap.md +0 -38
- package/dist/domains/agents/builtins/debugger.md +0 -30
- package/dist/domains/agents/builtins/documenter.md +0 -31
- package/dist/domains/agents/builtins/git-master.md +0 -30
- package/dist/domains/agents/builtins/provenance.md +0 -30
- package/dist/domains/agents/builtins/researcher.md +0 -71
- package/dist/domains/agents/builtins/scout.md +0 -42
- package/dist/domains/agents/builtins/tester.md +0 -31
- package/dist/domains/agents/builtins/verifier.md +0 -30
- package/dist/domains/agents/builtins/wiki-writer.md +0 -41
- package/dist/fleet-preflight-CLIAX7YR.js +0 -21
- package/dist/preload-KZVHET2B.js +0 -11
- package/dist/version-ROZ6CZKH.js +0 -16
- package/docs/html/agents_blueprint.html +0 -936
- package/docs/html/alcf_blueprint.html +0 -324
- package/docs/html/architecture_blueprint.html +0 -850
- package/docs/html/commands_blueprint.html +0 -794
- package/docs/html/config_knobs_audit_blueprint.html +0 -178
- package/docs/html/configuration_blueprint.html +0 -1080
- package/docs/html/context_blueprint.html +0 -603
- package/docs/html/documentation_blueprint.html +0 -832
- package/docs/html/environment_blueprint.html +0 -404
- package/docs/html/eval_blueprint.html +0 -743
- package/docs/html/evals_internal_blueprint.html +0 -190
- package/docs/html/evolution_blueprint.html +0 -674
- package/docs/html/extensions_blueprint.html +0 -2065
- package/docs/html/fleet_dispatch_blueprint.html +0 -286
- package/docs/html/index.html +0 -919
- package/docs/html/lifecycle_blueprint.html +0 -723
- package/docs/html/memory_blueprint.html +0 -699
- package/docs/html/middleware_blueprint.html +0 -664
- package/docs/html/models_blueprint.html +0 -2366
- package/docs/html/observability_blueprint.html +0 -683
- package/docs/html/provider_adapter_blueprint.html +0 -245
- package/docs/html/safety_blueprint.html +0 -1386
- package/docs/html/shared.css +0 -571
- package/docs/html/shared.js +0 -143
- package/docs/html/skills_blueprint.html +0 -671
- package/docs/html/soak_blueprint.html +0 -182
- package/docs/html/tool_usage_blueprint.html +0 -350
- package/docs/html/tools_blueprint.html +0 -2249
- package/docs/html/trace_blueprint.html +0 -235
- package/docs/html/tui_design_blueprint.html +0 -314
- package/docs/html/validation_blueprint.html +0 -961
- package/docs/html/worker_dispatch_blueprint.html +0 -231
- package/skills/git/commit-crafting/SKILL.md +0 -79
- package/skills/git/commit-crafting/evals.md +0 -92
- package/skills/git/create-pr/SKILL.md +0 -116
- package/skills/git/create-pr/evals.md +0 -114
- package/skills/git/investigate-issue/SKILL.md +0 -139
- package/skills/git/investigate-issue/evals.md +0 -94
- package/skills/git/review-changes/SKILL.md +0 -103
- package/skills/git/review-changes/evals.md +0 -85
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { resolvePackageRoot } from "../../core/package-root.js";
|
|
3
|
+
import type { ToolName } from "../../core/tool-names.js";
|
|
4
|
+
import type { AutonomyLevel } from "../safety/autonomy.js";
|
|
5
|
+
import { ceilChars } from "../session/context-accounting.js";
|
|
6
|
+
import type { FragmentTable, LoadedFragment } from "./fragment-loader.js";
|
|
7
|
+
import { sha256 } from "./hash.js";
|
|
8
|
+
import type { ProjectPreloadClass } from "./preload.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Session-prompt compiler. The system prompt is compiled once per session
|
|
12
|
+
* from inputs that are constant for the session's lifetime (identity,
|
|
13
|
+
* operating contract, safety level, provider/model, project context, tool
|
|
14
|
+
* surface). Volatile runtime state (thinking level, send heuristics,
|
|
15
|
+
* per-turn requests) never renders into the prompt: the prompt prefix must
|
|
16
|
+
* stay byte-stable so local prefix caches survive across turns and sessions.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** One per-tool guidance sentence sourced from the tool registry's metadata. */
|
|
20
|
+
export interface ToolPromptHint {
|
|
21
|
+
tool: string;
|
|
22
|
+
hint: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface SessionPromptInputs {
|
|
26
|
+
provider?: string | null;
|
|
27
|
+
model?: string | null;
|
|
28
|
+
contextWindow?: number | null;
|
|
29
|
+
providerSupportsTools?: boolean | null;
|
|
30
|
+
/** Model-stable thinking guidance from local-model quirks (changes only on model change). */
|
|
31
|
+
thinkingGuidance?: string | null;
|
|
32
|
+
/** Canonical names on the frozen direct-tool surface, rendered as a compact harness inventory. */
|
|
33
|
+
toolNames?: ReadonlyArray<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Per-tool prompt hints derived once from the frozen surface at compile
|
|
36
|
+
* time (registry metadata `promptHint`). Rendered into the Tool Contract
|
|
37
|
+
* sorted by tool name so the compiled text is byte-stable per surface.
|
|
38
|
+
*/
|
|
39
|
+
toolPromptHints?: ReadonlyArray<ToolPromptHint>;
|
|
40
|
+
/**
|
|
41
|
+
* Compact fleet roster (`renderFleetPromptSection`) for the sessions that
|
|
42
|
+
* carry the dispatch tool. Rendered only when `dispatch` is on the frozen
|
|
43
|
+
* surface: a roster without the tool to reach it is noise, and the tool
|
|
44
|
+
* without the roster is a guess.
|
|
45
|
+
*/
|
|
46
|
+
fleetRoster?: string;
|
|
47
|
+
contextFiles?: string;
|
|
48
|
+
memorySection?: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface CompileInputs {
|
|
52
|
+
identity: string;
|
|
53
|
+
operatingContract: string;
|
|
54
|
+
safety: string;
|
|
55
|
+
sessionInputs: SessionPromptInputs;
|
|
56
|
+
additionalFragments?: ReadonlyArray<RenderedPromptFragment>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Stable inputs for one mediated fleet worker's canonical system prompt. */
|
|
60
|
+
export interface WorkerPromptInputs {
|
|
61
|
+
/** The autonomy level already clamped by dispatch admission. */
|
|
62
|
+
autonomy: AutonomyLevel;
|
|
63
|
+
/**
|
|
64
|
+
* Whether the selected target can attach canonical Clio tool schemas.
|
|
65
|
+
* `null` means the delegated target's inventory is not observable.
|
|
66
|
+
*/
|
|
67
|
+
providerSupportsTools: boolean | null;
|
|
68
|
+
/** Final canonical names used to attach worker schemas. */
|
|
69
|
+
toolNames: ReadonlyArray<ToolName>;
|
|
70
|
+
/** Registry-owned guidance for the final canonical toolkit. */
|
|
71
|
+
toolPromptHints: ReadonlyArray<ToolPromptHint>;
|
|
72
|
+
/** Whether canonical `context` is present in the final attached schema surface. */
|
|
73
|
+
hasCanonicalContext: boolean;
|
|
74
|
+
/** True only when dispatch has explicitly harness-activated recipe-bound skills. */
|
|
75
|
+
hasBoundSkills: boolean;
|
|
76
|
+
/** Effective approval routing for this worker run. */
|
|
77
|
+
onPermission: "deny" | "fail" | "escalate";
|
|
78
|
+
/** One stable persona: the recipe body or bounded override, including bound-skill mechanics. */
|
|
79
|
+
persona: RenderedPromptFragment;
|
|
80
|
+
/**
|
|
81
|
+
* The session's `additionalFragments` channel, mirrored for a worker: active
|
|
82
|
+
* project rules scoped to this run's working context and the operator
|
|
83
|
+
* profile, when either renders non-empty. Rendered last, after persona, the
|
|
84
|
+
* same order `compile()` uses for its own `additionalFragments`.
|
|
85
|
+
*/
|
|
86
|
+
additionalFragments?: ReadonlyArray<RenderedPromptFragment>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface FragmentManifestEntry {
|
|
90
|
+
id: string;
|
|
91
|
+
relPath: string;
|
|
92
|
+
contentHash: string;
|
|
93
|
+
dynamic: boolean;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface RenderedPromptFragment {
|
|
97
|
+
id: string;
|
|
98
|
+
relPath: string;
|
|
99
|
+
body: string;
|
|
100
|
+
contentHash: string;
|
|
101
|
+
dynamic: boolean;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface PromptSection {
|
|
105
|
+
id: string;
|
|
106
|
+
tokenEstimate: number;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface CompiledSessionPrompt {
|
|
110
|
+
systemPrompt: string;
|
|
111
|
+
systemPromptHash: string;
|
|
112
|
+
tokenEstimate: number;
|
|
113
|
+
sections: ReadonlyArray<PromptSection>;
|
|
114
|
+
fragmentManifest: ReadonlyArray<FragmentManifestEntry>;
|
|
115
|
+
/**
|
|
116
|
+
* How the project context entered this prompt (full preload, synopsis, or
|
|
117
|
+
* none). Set by the prompts extension, which owns project-context
|
|
118
|
+
* selection; the pure compiler leaves it absent.
|
|
119
|
+
*/
|
|
120
|
+
projectPreload?: ProjectPreloadClass | null;
|
|
121
|
+
/**
|
|
122
|
+
* Absolute paths of the effective project handbooks that produced the
|
|
123
|
+
* project context, ancestor to nearest. Set by the prompts extension
|
|
124
|
+
* alongside `projectPreload`; the pure compiler leaves it absent.
|
|
125
|
+
*/
|
|
126
|
+
projectHandbookFiles?: string[];
|
|
127
|
+
/**
|
|
128
|
+
* Repo-relative `.clio-coder/rules/**` ids selected into this compile, in
|
|
129
|
+
* load order. Set only by `compileWorkerPrompt`, which owns rule
|
|
130
|
+
* selection; the pure compiler and `compileSessionPrompt` leave it absent.
|
|
131
|
+
*/
|
|
132
|
+
rulesApplied?: string[];
|
|
133
|
+
/**
|
|
134
|
+
* Whether the operator profile rendered non-empty content into this
|
|
135
|
+
* compile. Set only by `compileWorkerPrompt`.
|
|
136
|
+
*/
|
|
137
|
+
operatorProfileApplied?: boolean;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export const FLEET_ROUTING_GUIDANCE_MAX_BYTES = 320;
|
|
141
|
+
// Points at the Fleet section rather than describing routing in the abstract:
|
|
142
|
+
// `agent:"auto"` baselines by task shape and can still land on a worker whose
|
|
143
|
+
// capability class is wrong for the job, so a pinned id is the reliable path.
|
|
144
|
+
export const FLEET_ROUTING_GUIDANCE =
|
|
145
|
+
'Fleet routing: pin the `agent` id from the Fleet section; agent:"auto" baselines from the task text and is a fallback, not a router.';
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Worker-side mirror of the parent's `SPOT_CHECK_GUIDANCE`. The parent sentence
|
|
149
|
+
* demonstrably works: in the E19 drive it is what caught a verifier reporting a
|
|
150
|
+
* quality pass on a typecheck script that does not exist. The same failure
|
|
151
|
+
* happens one level down, where a worker seals a fabricated report or a
|
|
152
|
+
* fabricated `npm test`, so the worker gets the mirror image of that rule. It
|
|
153
|
+
* lives in the shared worker scaffold rather than in each recipe: every
|
|
154
|
+
* dispatched persona inherits this block, and a rule copied into twelve files
|
|
155
|
+
* drifts in eleven of them.
|
|
156
|
+
*/
|
|
157
|
+
export const WORKER_CLAIM_GUIDANCE =
|
|
158
|
+
'Never claim a completion, a validation, or a file change that no tool call in this run supports. If you did not run it or write it here, say "not verified" and report what you did do.';
|
|
159
|
+
|
|
160
|
+
function lookupFragment(table: FragmentTable, id: string, role: string): LoadedFragment {
|
|
161
|
+
const frag = table.byId.get(id);
|
|
162
|
+
if (!frag) {
|
|
163
|
+
throw new Error(`prompts/compiler: ${role} fragment id "${id}" not found`);
|
|
164
|
+
}
|
|
165
|
+
return frag;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* One-sentence autonomy directive. Shared: the session prompt's safety
|
|
170
|
+
* section and the dispatch worker safety-posture message must describe the
|
|
171
|
+
* same enforced behavior, so neither side duplicates this switch.
|
|
172
|
+
*/
|
|
173
|
+
export function safetyOneLiner(level: string): string {
|
|
174
|
+
switch (level) {
|
|
175
|
+
case "read-only":
|
|
176
|
+
return "inspect and answer; mutating calls are auto-denied, so propose changes instead.";
|
|
177
|
+
case "suggest":
|
|
178
|
+
return "every non-read action parks for one-shot operator approval before it runs.";
|
|
179
|
+
case "auto-edit":
|
|
180
|
+
return "workspace edits and recognized commands run; other bash asks for approval.";
|
|
181
|
+
case "full-auto":
|
|
182
|
+
return "act without asking; system_modify still asks and git_destructive is blocked by the safety net.";
|
|
183
|
+
default:
|
|
184
|
+
return "follow the active safety contract.";
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* What "approval-required" resolves to for the session: one operator
|
|
190
|
+
* confirmation per parked call. The level fragments say which calls park;
|
|
191
|
+
* this line says what parking means, and it is role text because a worker's
|
|
192
|
+
* parked call resolves through its `onPermission` routing instead.
|
|
193
|
+
*/
|
|
194
|
+
export const SESSION_APPROVAL_SEMANTICS =
|
|
195
|
+
"Approval-required calls pause for one operator confirmation, which grants only the parked action; cancellation cancels the parked call cleanly.";
|
|
196
|
+
|
|
197
|
+
function renderSafetySection(safetyFragment: LoadedFragment, level: string): string {
|
|
198
|
+
const oneLine = `Autonomy: ${level}. ${safetyOneLiner(level)}`;
|
|
199
|
+
const body = safetyFragment.body.trim();
|
|
200
|
+
return body.length > 0 ? `${oneLine}\n${SESSION_APPROVAL_SEMANTICS}\n\n${body}` : oneLine;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function renderRuntimeBlock(inputs: SessionPromptInputs): string {
|
|
204
|
+
const lines: string[] = ["# Runtime"];
|
|
205
|
+
const provider = inputs.provider ?? "";
|
|
206
|
+
const model = inputs.model ?? "";
|
|
207
|
+
if (provider.length > 0) lines.push(`Provider: ${provider}`);
|
|
208
|
+
if (model.length > 0) lines.push(`Model: ${model}`);
|
|
209
|
+
if (typeof inputs.contextWindow === "number" && inputs.contextWindow > 0) {
|
|
210
|
+
lines.push(`Context window: ${inputs.contextWindow}`);
|
|
211
|
+
}
|
|
212
|
+
const guidance = inputs.thinkingGuidance?.trim();
|
|
213
|
+
if (guidance && guidance.length > 0) {
|
|
214
|
+
lines.push("");
|
|
215
|
+
lines.push(guidance);
|
|
216
|
+
}
|
|
217
|
+
return lines.join("\n");
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Whether the session's frozen surface can reach fleet workers. Read from the
|
|
222
|
+
* tool names and the registry's hints, never from settings: the Fleet section
|
|
223
|
+
* and the Tool Contract's dispatch clauses must appear together or not at all.
|
|
224
|
+
*/
|
|
225
|
+
function sessionCanDispatch(inputs: SessionPromptInputs): boolean {
|
|
226
|
+
if (inputs.providerSupportsTools === false) return false;
|
|
227
|
+
return toolSurfaceHasTool(inputs.toolNames, inputs.toolPromptHints, "dispatch");
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Whether `context` is on the session's surface. The Skills passage, the docs
|
|
232
|
+
* routing directive, and the Tool Contract's skills clause follow the same
|
|
233
|
+
* rule as dispatch: text that teaches a call to `context` renders only when
|
|
234
|
+
* `context` is there to be called.
|
|
235
|
+
*/
|
|
236
|
+
function sessionHasContext(inputs: SessionPromptInputs): boolean {
|
|
237
|
+
if (inputs.providerSupportsTools === false) return false;
|
|
238
|
+
return toolSurfaceHasTool(inputs.toolNames, inputs.toolPromptHints, "context");
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/** One lookup for every "is this tool on the surface" predicate, over names and hints alike. */
|
|
242
|
+
function toolSurfaceHasTool(
|
|
243
|
+
toolNames: ReadonlyArray<string> | undefined,
|
|
244
|
+
toolPromptHints: ReadonlyArray<ToolPromptHint> | undefined,
|
|
245
|
+
tool: string,
|
|
246
|
+
): boolean {
|
|
247
|
+
const names = new Set((toolNames ?? []).map((name) => name.trim()));
|
|
248
|
+
const hinted = new Set((toolPromptHints ?? []).map((entry) => entry.tool.trim()));
|
|
249
|
+
return names.has(tool) || hinted.has(tool);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function renderFleetBlock(inputs: SessionPromptInputs): string {
|
|
253
|
+
if (!sessionCanDispatch(inputs)) return "";
|
|
254
|
+
return inputs.fleetRoster?.trim() ?? "";
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function renderToolContractBlock(inputs: SessionPromptInputs): string {
|
|
258
|
+
if (inputs.providerSupportsTools === false) {
|
|
259
|
+
return [
|
|
260
|
+
"# Tool Contract",
|
|
261
|
+
"Provider tool calls: unavailable.",
|
|
262
|
+
"This target cannot call tools; answer from the visible user request and compact context only.",
|
|
263
|
+
].join("\n");
|
|
264
|
+
}
|
|
265
|
+
const names = [
|
|
266
|
+
...new Set((inputs.toolNames ?? []).map((name) => name.trim()).filter((name) => name.length > 0)),
|
|
267
|
+
].sort();
|
|
268
|
+
const canDispatch = sessionCanDispatch(inputs);
|
|
269
|
+
const canListSkills = sessionHasContext(inputs);
|
|
270
|
+
const inventoryGuidance = [
|
|
271
|
+
// Asked twice in one session which tools it had, a live model gave two
|
|
272
|
+
// different answers and invented `web_find`. The authoritative list is one
|
|
273
|
+
// line above; pointing at it beats letting the model recall the schemas.
|
|
274
|
+
"When answering capability-inventory questions, copy the Direct tools line above verbatim rather than recalling the attached schemas, and make no calls",
|
|
275
|
+
...(canDispatch ? ["add dispatch(list:true) only if agents or the fleet are requested"] : []),
|
|
276
|
+
...(canListSkills
|
|
277
|
+
? ['add context(scope="skills") only if skills are requested (it lists installed and marketplace skills)']
|
|
278
|
+
: []),
|
|
279
|
+
].join("; ");
|
|
280
|
+
const lines = [
|
|
281
|
+
"# Tool Contract",
|
|
282
|
+
"The attached schemas are the session's complete direct-tool surface; follow each schema exactly.",
|
|
283
|
+
...(names.length > 0 ? [`Direct tools: ${names.map((name) => `\`${name}\``).join(", ")}.`] : []),
|
|
284
|
+
"Harness model: direct tools are attached schemas; fleet agents are workers behind dispatch; skills are operator-activated workflows reached through context. Keep these capability sets distinct.",
|
|
285
|
+
`${inventoryGuidance}.`,
|
|
286
|
+
"Call tools only for concrete inspection or changes the task requires. If the user asks for a tool-free answer, simply answer without calling tools.",
|
|
287
|
+
// The tool-specific instantiation of the operating contract's "narrow
|
|
288
|
+
// work: inspect directly" rule; the contract cannot name tools.
|
|
289
|
+
// Delegation, the tasks board, and skills are not restated here: the
|
|
290
|
+
// Delegation and Skills passages and the registry hints carry them, and
|
|
291
|
+
// each renders exactly when its tool does.
|
|
292
|
+
'For narrow file or symbol orientation, prefer context(scope="workspace"), code_nav, grep, and read instead of assuming source-tree details were preloaded.',
|
|
293
|
+
"Validate with verify or git diff before final claims.",
|
|
294
|
+
'When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema, adjust the arguments, or query context(scope="docs") for that tool\'s usage.',
|
|
295
|
+
];
|
|
296
|
+
// One hint per tool, sorted by tool name: deterministic bytes regardless
|
|
297
|
+
// of surface or registration order, and removing a tool from the surface
|
|
298
|
+
// removes its hint with no compiler edit.
|
|
299
|
+
const seen = new Set<string>();
|
|
300
|
+
const hints = [...(inputs.toolPromptHints ?? [])]
|
|
301
|
+
.map((entry) => ({ tool: entry.tool.trim(), hint: entry.hint.trim() }))
|
|
302
|
+
.filter((entry) => entry.tool.length > 0 && entry.hint.length > 0)
|
|
303
|
+
.sort((a, b) => (a.tool < b.tool ? -1 : a.tool > b.tool ? 1 : 0));
|
|
304
|
+
if (hints.some((entry) => entry.tool === "dispatch")) lines.push(FLEET_ROUTING_GUIDANCE);
|
|
305
|
+
for (const entry of hints) {
|
|
306
|
+
if (seen.has(entry.tool)) continue;
|
|
307
|
+
seen.add(entry.tool);
|
|
308
|
+
lines.push(entry.hint);
|
|
309
|
+
}
|
|
310
|
+
return lines.join("\n");
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
function canonicalWorkerTools(inputs: WorkerPromptInputs): string[] {
|
|
314
|
+
return [...new Set(inputs.toolNames.map((name) => name.trim()).filter((name) => name.length > 0))].sort();
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
function workerPermissionSentence(mode: WorkerPromptInputs["onPermission"]): string {
|
|
318
|
+
switch (mode) {
|
|
319
|
+
case "escalate":
|
|
320
|
+
return "Approval-required calls pause for a bounded operator decision before execution.";
|
|
321
|
+
case "deny":
|
|
322
|
+
return "Approval-required calls are denied immediately; they are not parked for an operator.";
|
|
323
|
+
case "fail":
|
|
324
|
+
return "An approval-required call fails and ends the worker run; it is not parked for an operator.";
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* The constitutional contract renders byte-identical for session and worker.
|
|
330
|
+
* Role text is separate: the coordinator's `operating.delegation` and
|
|
331
|
+
* `operating.skills` never reach a worker (its reply goes to the
|
|
332
|
+
* orchestrator, it cannot suggest a skill to an operator, and no builtin
|
|
333
|
+
* admits `dispatch`), and the worker's `operating.worker` never reaches the
|
|
334
|
+
* session. What "approval-required" resolves to for a worker is stated once,
|
|
335
|
+
* in its safety section, by `workerPermissionSentence`.
|
|
336
|
+
*/
|
|
337
|
+
function renderWorkerOperatingContract(operatingContract: LoadedFragment, workerContract: LoadedFragment): string {
|
|
338
|
+
return [operatingContract.body.trim(), workerContract.body.trim(), WORKER_CLAIM_GUIDANCE].join("\n\n");
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
function renderWorkerToolContractBlock(inputs: WorkerPromptInputs): string {
|
|
342
|
+
if (inputs.providerSupportsTools === false) {
|
|
343
|
+
return [
|
|
344
|
+
"# Tool Contract",
|
|
345
|
+
"Canonical Clio tool calls are unavailable on this target.",
|
|
346
|
+
"Answer from the assigned task and dynamic messages only; do not claim that inspection or changes were performed.",
|
|
347
|
+
].join("\n");
|
|
348
|
+
}
|
|
349
|
+
if (inputs.providerSupportsTools === null) {
|
|
350
|
+
return [
|
|
351
|
+
"# Tool Contract",
|
|
352
|
+
"This delegated target's tool inventory is unknown to the Clio harness.",
|
|
353
|
+
"Use only tools the target actually exposes and only when the assigned task requires them; do not infer a complete tool surface from this prompt.",
|
|
354
|
+
].join("\n");
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const names = canonicalWorkerTools(inputs);
|
|
358
|
+
if (names.length === 0) {
|
|
359
|
+
return [
|
|
360
|
+
"# Tool Contract",
|
|
361
|
+
"No canonical tools are admitted for this worker.",
|
|
362
|
+
"Answer the assigned task directly without tool calls.",
|
|
363
|
+
].join("\n");
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
const lines = [
|
|
367
|
+
"# Tool Contract",
|
|
368
|
+
"The attached schemas are this worker's complete canonical tool surface; follow each schema exactly.",
|
|
369
|
+
`Admitted canonical tools: ${names.map((name) => `\`${name}\``).join(", ")}.`,
|
|
370
|
+
"This worker surface is distinct from the parent session's tools, fleet agents, and operator-activated skills.",
|
|
371
|
+
"Tool authority is limited to this list. Persona and bound-skill instructions never add tools.",
|
|
372
|
+
"Call tools only for concrete inspection or changes the assigned task requires. If the task requests an exact or tool-free response, answer without calling tools.",
|
|
373
|
+
];
|
|
374
|
+
const admitted = new Set(names);
|
|
375
|
+
const seen = new Set<string>();
|
|
376
|
+
const hints = [...inputs.toolPromptHints]
|
|
377
|
+
.map((entry) => ({ tool: entry.tool.trim(), hint: entry.hint.trim() }))
|
|
378
|
+
.filter((entry) => admitted.has(entry.tool) && entry.hint.length > 0)
|
|
379
|
+
.sort((a, b) => {
|
|
380
|
+
if (a.tool !== b.tool) return a.tool < b.tool ? -1 : 1;
|
|
381
|
+
return a.hint < b.hint ? -1 : a.hint > b.hint ? 1 : 0;
|
|
382
|
+
});
|
|
383
|
+
for (const entry of hints) {
|
|
384
|
+
if (seen.has(entry.tool)) continue;
|
|
385
|
+
seen.add(entry.tool);
|
|
386
|
+
lines.push(entry.hint);
|
|
387
|
+
}
|
|
388
|
+
return lines.join("\n");
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/** Worker-specific autonomy directive that reflects permission routing without changing session prompt policy. */
|
|
392
|
+
export function workerSafetyOneLiner(level: AutonomyLevel, mode: WorkerPromptInputs["onPermission"]): string {
|
|
393
|
+
if (level === "read-only") return safetyOneLiner(level);
|
|
394
|
+
const posture = workerPermissionSentence(mode);
|
|
395
|
+
switch (level) {
|
|
396
|
+
case "suggest":
|
|
397
|
+
return `read calls run freely; every non-read action requires approval. ${posture}`;
|
|
398
|
+
case "auto-edit":
|
|
399
|
+
return `workspace edits and recognized commands run; other commands require approval. ${posture}`;
|
|
400
|
+
case "full-auto":
|
|
401
|
+
return `act without asking except for safety-classified approval-required calls. ${posture}`;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* The worker reads the same `safety.<level>` fragment the session does; the
|
|
407
|
+
* one-liner (with the run's permission routing) is the only role text. The
|
|
408
|
+
* level fragments speak in action classes and never name a tool, so nothing
|
|
409
|
+
* here can be false for a surface that lacks one; the earlier inline copy of
|
|
410
|
+
* the levels claimed a full-auto worker's "dispatches" ran when no builtin
|
|
411
|
+
* admits dispatch.
|
|
412
|
+
*/
|
|
413
|
+
function renderWorkerSafetySection(safetyFragment: LoadedFragment, inputs: WorkerPromptInputs): string {
|
|
414
|
+
const oneLine = `Autonomy: ${inputs.autonomy}. ${workerSafetyOneLiner(inputs.autonomy, inputs.onPermission)}`;
|
|
415
|
+
const body = safetyFragment.body.trim();
|
|
416
|
+
return body.length > 0 ? `${oneLine}\n\n${body}` : oneLine;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
function renderRetrievalHintsBlock(inputs: SessionPromptInputs): string {
|
|
420
|
+
if (inputs.providerSupportsTools === false) {
|
|
421
|
+
return [
|
|
422
|
+
"# Retrieval Hints",
|
|
423
|
+
"Repository details are intentionally compact because this target has no tool channel.",
|
|
424
|
+
"Use only facts present in the current turn and say what file-specific context would be needed for precise code work.",
|
|
425
|
+
].join("\n");
|
|
426
|
+
}
|
|
427
|
+
// Where to look for skills and when to delegate exploration live in the
|
|
428
|
+
// Skills and Delegation passages; this block only says what is and is not
|
|
429
|
+
// preloaded.
|
|
430
|
+
return [
|
|
431
|
+
"# Retrieval Hints",
|
|
432
|
+
"Compact CLIO-CODER.md project instructions may be preloaded above; everything else about the repository must be fetched, not assumed.",
|
|
433
|
+
"Never invent file paths, automatic tool behavior, or mutable repo details from the system prompt.",
|
|
434
|
+
].join("\n");
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
function renderProjectBlock(contextFiles: string | undefined): string {
|
|
438
|
+
const trimmedFiles = contextFiles?.trim() ?? "";
|
|
439
|
+
return trimmedFiles.length === 0 ? "" : `# Project\n\n${trimmedFiles}`;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
function renderMemoryBlock(memorySection: string | undefined): string {
|
|
443
|
+
const trimmed = memorySection?.trim() ?? "";
|
|
444
|
+
return trimmed.length === 0 ? "" : `# Memory\n\n${trimmed}`;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
function estimatePromptTokens(text: string): number {
|
|
448
|
+
return ceilChars(text.trim().length);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Compile the session system prompt. Identity and the operating contract
|
|
453
|
+
* render verbatim from disk fragments; safety renders a one-line directive
|
|
454
|
+
* plus the safety fragment body; everything else renders inline from typed
|
|
455
|
+
* SessionPromptInputs. Output is one string, one sha256, one token estimate,
|
|
456
|
+
* and a flat section breakdown for the /context overlay.
|
|
457
|
+
*/
|
|
458
|
+
export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSessionPrompt {
|
|
459
|
+
const identity = lookupFragment(table, inputs.identity, "identity");
|
|
460
|
+
const operatingContract = lookupFragment(table, inputs.operatingContract, "operating contract");
|
|
461
|
+
const safety = lookupFragment(table, inputs.safety, "safety");
|
|
462
|
+
const autonomyLevel = safety.id.startsWith("safety.") ? safety.id.slice("safety.".length) : safety.id;
|
|
463
|
+
const session = inputs.sessionInputs;
|
|
464
|
+
|
|
465
|
+
const parts: string[] = [];
|
|
466
|
+
const sections: PromptSection[] = [];
|
|
467
|
+
const push = (id: string, body: string): void => {
|
|
468
|
+
const trimmed = body.trim();
|
|
469
|
+
if (trimmed.length === 0) return;
|
|
470
|
+
parts.push(trimmed);
|
|
471
|
+
sections.push({ id, tokenEstimate: estimatePromptTokens(trimmed) });
|
|
472
|
+
};
|
|
473
|
+
|
|
474
|
+
let identityBody = identity.body;
|
|
475
|
+
const selfAwareness = identity.id === "identity.clio" ? table.byId.get("identity.self-awareness") : undefined;
|
|
476
|
+
// The routing directive teaches a call to `context`, so like the Skills
|
|
477
|
+
// passage it renders only when `context` is on the surface. The paths and
|
|
478
|
+
// the code-outranks-docs rule name no tool and stay unconditional.
|
|
479
|
+
const docsRouting = selfAwareness && sessionHasContext(session) ? table.byId.get("identity.docs-routing") : undefined;
|
|
480
|
+
if (selfAwareness) {
|
|
481
|
+
const packageRoot = resolvePackageRoot();
|
|
482
|
+
const rendered = selfAwareness.body
|
|
483
|
+
.replace("{CLIO_DOCS_PATH}", join(packageRoot, "docs"))
|
|
484
|
+
.replace("{CLIO_SRC_PATH}", join(packageRoot, "src"))
|
|
485
|
+
.replace("{CLIO_CODEWIKI_PATH}", join(packageRoot, "dist", "assets", "codewiki.json"));
|
|
486
|
+
identityBody = [identity.body.trim(), rendered.trim(), ...(docsRouting ? [docsRouting.body.trim()] : [])].join(
|
|
487
|
+
"\n\n",
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
// Role text gated on the surface, following the Fleet-block rule: text
|
|
492
|
+
// about a tool renders only when the tool is there to be called.
|
|
493
|
+
const delegation = sessionCanDispatch(session) ? table.byId.get("operating.delegation") : undefined;
|
|
494
|
+
const skills = sessionHasContext(session) ? table.byId.get("operating.skills") : undefined;
|
|
495
|
+
|
|
496
|
+
push("identity", identityBody);
|
|
497
|
+
push("operating-contract", operatingContract.body);
|
|
498
|
+
if (delegation) push("delegation", delegation.body);
|
|
499
|
+
if (skills) push("skills", skills.body);
|
|
500
|
+
push("safety", renderSafetySection(safety, autonomyLevel));
|
|
501
|
+
push("runtime", renderRuntimeBlock(session));
|
|
502
|
+
push("tool-contract", renderToolContractBlock(session));
|
|
503
|
+
push("fleet", renderFleetBlock(session));
|
|
504
|
+
push("retrieval-hints", renderRetrievalHintsBlock(session));
|
|
505
|
+
push("memory", renderMemoryBlock(session.memorySection));
|
|
506
|
+
push("project-context", renderProjectBlock(session.contextFiles));
|
|
507
|
+
for (const fragment of inputs.additionalFragments ?? []) {
|
|
508
|
+
push(fragment.id, fragment.body);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
const systemPrompt = parts.join("\n\n");
|
|
512
|
+
const baseFragments = [
|
|
513
|
+
identity,
|
|
514
|
+
...(selfAwareness ? [selfAwareness] : []),
|
|
515
|
+
...(docsRouting ? [docsRouting] : []),
|
|
516
|
+
operatingContract,
|
|
517
|
+
...(delegation ? [delegation] : []),
|
|
518
|
+
...(skills ? [skills] : []),
|
|
519
|
+
safety,
|
|
520
|
+
];
|
|
521
|
+
const fragmentManifest: FragmentManifestEntry[] = baseFragments.map((f) => ({
|
|
522
|
+
id: f.id,
|
|
523
|
+
relPath: f.relPath,
|
|
524
|
+
contentHash: f.contentHash,
|
|
525
|
+
dynamic: f.dynamic,
|
|
526
|
+
}));
|
|
527
|
+
for (const fragment of inputs.additionalFragments ?? []) {
|
|
528
|
+
fragmentManifest.push({
|
|
529
|
+
id: fragment.id,
|
|
530
|
+
relPath: fragment.relPath,
|
|
531
|
+
contentHash: fragment.contentHash,
|
|
532
|
+
dynamic: fragment.dynamic,
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
return {
|
|
537
|
+
systemPrompt,
|
|
538
|
+
systemPromptHash: sha256(systemPrompt),
|
|
539
|
+
tokenEstimate: estimatePromptTokens(systemPrompt),
|
|
540
|
+
sections,
|
|
541
|
+
fragmentManifest,
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Compile the canonical stable prompt for one mediated fleet worker.
|
|
547
|
+
* Dynamic task, project, memory, pipeline, and per-run posture messages do
|
|
548
|
+
* not belong here; those ride in dispatch's `dynamicPromptMessages`. The one
|
|
549
|
+
* exception is `additionalFragments`: the operator-editable layer (project
|
|
550
|
+
* rules scoped to this run, the operator profile) that mirrors the session's
|
|
551
|
+
* own `additionalFragments` channel, so a worker whose task touches a ruled
|
|
552
|
+
* path reads the same rule the session would. The section order is a
|
|
553
|
+
* protocol invariant.
|
|
554
|
+
*/
|
|
555
|
+
export function compileWorker(table: FragmentTable, inputs: WorkerPromptInputs): CompiledSessionPrompt {
|
|
556
|
+
if (inputs.persona.dynamic) {
|
|
557
|
+
throw new Error("prompts/compiler: worker persona must be a stable fragment");
|
|
558
|
+
}
|
|
559
|
+
if (inputs.persona.body.trim().length === 0) {
|
|
560
|
+
throw new Error("prompts/compiler: worker persona must not be empty");
|
|
561
|
+
}
|
|
562
|
+
const contextIsAttached = inputs.providerSupportsTools === true && canonicalWorkerTools(inputs).includes("context");
|
|
563
|
+
if (inputs.hasCanonicalContext !== contextIsAttached) {
|
|
564
|
+
throw new Error("prompts/compiler: hasCanonicalContext must match the final attached canonical tool surface");
|
|
565
|
+
}
|
|
566
|
+
if (inputs.hasBoundSkills && !inputs.hasCanonicalContext) {
|
|
567
|
+
throw new Error("prompts/compiler: bound skills require canonical context in the final attached tool surface");
|
|
568
|
+
}
|
|
569
|
+
const identity = lookupFragment(table, "identity.clio-worker", "worker identity");
|
|
570
|
+
const operatingContract = lookupFragment(table, "operating.contract", "operating contract");
|
|
571
|
+
const workerContract = lookupFragment(table, "operating.worker", "worker contract");
|
|
572
|
+
const safety = lookupFragment(table, `safety.${inputs.autonomy}`, "safety");
|
|
573
|
+
|
|
574
|
+
const parts: string[] = [];
|
|
575
|
+
const sections: PromptSection[] = [];
|
|
576
|
+
const push = (id: string, body: string): void => {
|
|
577
|
+
const trimmed = body.trim();
|
|
578
|
+
if (trimmed.length === 0) return;
|
|
579
|
+
parts.push(trimmed);
|
|
580
|
+
sections.push({ id, tokenEstimate: estimatePromptTokens(trimmed) });
|
|
581
|
+
};
|
|
582
|
+
|
|
583
|
+
push("identity", identity.body);
|
|
584
|
+
push("operating-contract", renderWorkerOperatingContract(operatingContract, workerContract));
|
|
585
|
+
push("tool-contract", renderWorkerToolContractBlock(inputs));
|
|
586
|
+
push("safety", renderWorkerSafetySection(safety, inputs));
|
|
587
|
+
push("persona", inputs.persona.body);
|
|
588
|
+
for (const fragment of inputs.additionalFragments ?? []) {
|
|
589
|
+
push(fragment.id, fragment.body);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
const systemPrompt = parts.join("\n\n");
|
|
593
|
+
const fragmentManifest: FragmentManifestEntry[] = [
|
|
594
|
+
identity,
|
|
595
|
+
operatingContract,
|
|
596
|
+
workerContract,
|
|
597
|
+
safety,
|
|
598
|
+
inputs.persona,
|
|
599
|
+
...(inputs.additionalFragments ?? []),
|
|
600
|
+
].map((fragment) => ({
|
|
601
|
+
id: fragment.id,
|
|
602
|
+
relPath: fragment.relPath,
|
|
603
|
+
contentHash: fragment.contentHash,
|
|
604
|
+
dynamic: fragment.dynamic,
|
|
605
|
+
}));
|
|
606
|
+
|
|
607
|
+
return {
|
|
608
|
+
systemPrompt,
|
|
609
|
+
systemPromptHash: sha256(systemPrompt),
|
|
610
|
+
tokenEstimate: estimatePromptTokens(systemPrompt),
|
|
611
|
+
sections,
|
|
612
|
+
fragmentManifest,
|
|
613
|
+
};
|
|
614
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { CompiledSessionPrompt, SessionPromptInputs, WorkerPromptInputs } from "./compiler.js";
|
|
2
|
+
|
|
3
|
+
export interface CompileSessionPromptInput {
|
|
4
|
+
sessionInputs: SessionPromptInputs;
|
|
5
|
+
autonomy?: string;
|
|
6
|
+
cwd?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Files already present in the session's working context. Project rules with
|
|
9
|
+
* `paths:` frontmatter are selected from this set.
|
|
10
|
+
*/
|
|
11
|
+
workingContextPaths?: ReadonlyArray<string>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface CompileWorkerPromptInput extends WorkerPromptInputs {
|
|
15
|
+
/** Working directory the rule loader and repo-awareness checks run against; defaults to `process.cwd()`. */
|
|
16
|
+
cwd?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Best-effort paths this worker's run actually touches (from `writeRoots`
|
|
19
|
+
* and path-like tokens in the task/briefing text), used the same way the
|
|
20
|
+
* session's `workingContextPaths` selects path-scoped project rules. There
|
|
21
|
+
* is no structured path field on the model-facing dispatch tool, so this is
|
|
22
|
+
* inference, not a guarantee: a rule can be missed, never fabricated.
|
|
23
|
+
*/
|
|
24
|
+
workingContextPaths?: ReadonlyArray<string>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface PromptsContract {
|
|
28
|
+
/**
|
|
29
|
+
* Compile the session system prompt. Called once per session (and again
|
|
30
|
+
* only on explicit, logged events: model/target change, autonomy-level
|
|
31
|
+
* change, fragment reload, session switch). Inputs must be constant for
|
|
32
|
+
* the session's lifetime.
|
|
33
|
+
*/
|
|
34
|
+
compileSessionPrompt(input: CompileSessionPromptInput): Promise<CompiledSessionPrompt>;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Compile the canonical stable harness for one mediated fleet worker. The
|
|
38
|
+
* result's `rulesApplied` and `operatorProfileApplied` are the receipt
|
|
39
|
+
* provenance for this run's customization layer: dispatch reads them
|
|
40
|
+
* straight off this return rather than re-deriving them.
|
|
41
|
+
*/
|
|
42
|
+
compileWorkerPrompt(input: CompileWorkerPromptInput): Promise<CompiledSessionPrompt>;
|
|
43
|
+
|
|
44
|
+
/** Reload fragment table (triggered by config.hotReload). */
|
|
45
|
+
reload(): void;
|
|
46
|
+
}
|