@iowarp/clio-coder 0.4.0 → 0.4.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 +131 -0
- package/CONTRIBUTING.md +59 -36
- package/README.md +407 -375
- package/SECURITY.md +2 -1
- package/dist/{acp-G5WJBNCT.js → acp-TMDQZDIG.js} +14 -14
- package/dist/{agents-FMV2Q5G4.js → agents-5N5NG3XG.js} +45 -34
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-3IDSJEIK.js → auth-Z5CCBXKQ.js} +22 -21
- package/dist/{builtins-XCZWXSC7.js → builtins-K6TNDT24.js} +6 -6
- package/dist/{chunk-GR5G2PVF.js → chunk-2HFQNRV3.js} +15 -10
- package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
- package/dist/{chunk-HJJTYUHX.js → chunk-2NHR3NAY.js} +168 -1406
- package/dist/chunk-2X4RYJTJ.js +39 -0
- package/dist/{chunk-UXMFQ54G.js → chunk-2Z2IKEXI.js} +39 -43
- package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
- package/dist/chunk-34BHNEE3.js +1846 -0
- package/dist/{chunk-YJX4SHTD.js → chunk-35MSIRKH.js} +9 -4
- package/dist/chunk-3EBYEESD.js +314 -0
- package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
- package/dist/chunk-3KIPBMUA.js +308 -0
- package/dist/chunk-3M6DQK6S.js +362 -0
- package/dist/{chunk-BPKCPIL7.js → chunk-462T4EGZ.js} +3 -3
- package/dist/{chunk-QLFS5GO2.js → chunk-4JDLP6ZS.js} +44 -37
- package/dist/{chunk-LDQ2ZF2M.js → chunk-4O6MANBS.js} +6 -6
- package/dist/{chunk-O6TL7WWY.js → chunk-54ODD65L.js} +6 -6
- package/dist/{chunk-JDG2WCRO.js → chunk-5KW52TEP.js} +5 -5
- package/dist/{chunk-NHLBIGRH.js → chunk-5PFYMY2V.js} +41 -18
- package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
- package/dist/chunk-77QIVUZB.js +1334 -0
- package/dist/{chunk-HWHKMHUA.js → chunk-7BHIY2MW.js} +9 -15
- package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
- package/dist/{chunk-VAZSBTKF.js → chunk-AZ4WMN4W.js} +2 -2
- package/dist/{chunk-B7OBL7PK.js → chunk-B74PXLU7.js} +21 -11
- package/dist/{chunk-CY6FY24N.js → chunk-B7HM5Z7T.js} +15 -15
- package/dist/{chunk-ULC6OTWO.js → chunk-BO7Y52RY.js} +88 -27
- package/dist/chunk-BTK3SSSK.js +67 -0
- package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
- package/dist/{chunk-DQITNCXG.js → chunk-BYMNWQ7O.js} +149 -159
- package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
- package/dist/{chunk-Z4TXYIEG.js → chunk-CRFOIAX3.js} +10 -10
- package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
- package/dist/{chunk-3BT2XMV4.js → chunk-CYZW7JHJ.js} +53 -60
- package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
- package/dist/chunk-D7E7WCDF.js +27 -0
- package/dist/{chunk-X3YGUTOB.js → chunk-DYHAXKHD.js} +90 -62
- package/dist/{chunk-QBJA7R7N.js → chunk-DZAW46HP.js} +3 -3
- package/dist/{chunk-MLKNTWH2.js → chunk-DZEK6CJN.js} +22 -22
- package/dist/{chunk-K5C3NCBD.js → chunk-E7GT7O5N.js} +5 -5
- package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
- package/dist/chunk-F2I26BDK.js +66 -0
- package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
- package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
- package/dist/{chunk-32KWKNSF.js → chunk-FVDGR2ZL.js} +4 -4
- package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
- package/dist/{chunk-SJ5ZKQ4S.js → chunk-HIICAHCJ.js} +2 -2
- package/dist/chunk-HJWWJ6IL.js +184 -0
- package/dist/{chunk-WZR7K7ZX.js → chunk-HKMD33FO.js} +32 -83
- package/dist/chunk-HLAFFSEK.js +360 -0
- package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
- package/dist/{chunk-KFZI4NIL.js → chunk-I64IFBLB.js} +152 -31
- package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
- package/dist/{chunk-BUMFYQFY.js → chunk-I66ZTYNP.js} +543 -267
- package/dist/{chunk-2OQE55CK.js → chunk-I7XBWTYH.js} +2 -2
- package/dist/{chunk-GKF55TAZ.js → chunk-IDNA72AH.js} +104 -3
- package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
- package/dist/{chunk-J4W7KFM7.js → chunk-IKSLQ4XV.js} +5439 -3475
- package/dist/{chunk-6DB53AJS.js → chunk-IMXMHHMQ.js} +171 -30
- package/dist/{chunk-AB44T6BB.js → chunk-JBCS7CRR.js} +8 -7
- package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
- package/dist/{chunk-SP2RXXYO.js → chunk-JWJGP5DQ.js} +10 -10
- package/dist/{chunk-HZHHCK24.js → chunk-KKOJXO6R.js} +527 -325
- package/dist/chunk-KPXDY6QF.js +47 -0
- package/dist/{chunk-LQ3DZAMX.js → chunk-LJID3DYZ.js} +8 -2
- package/dist/{chunk-7MCTRUCE.js → chunk-M2DAX4F6.js} +2 -2
- package/dist/{chunk-VEO4AP2K.js → chunk-M2WXEHER.js} +4 -3
- package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
- package/dist/{chunk-YDFRH54B.js → chunk-MCMZMDAC.js} +4 -4
- package/dist/{chunk-J5Q24KAG.js → chunk-MNJGS2IN.js} +5 -6
- package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
- package/dist/chunk-NDDGJUXD.js +81 -0
- package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
- package/dist/chunk-NMJXSHBJ.js +283 -0
- package/dist/{chunk-VYMXRQI6.js → chunk-O3YUNJZ2.js} +88 -100
- package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
- package/dist/{chunk-Z2RR6MAK.js → chunk-P75RZCJW.js} +28 -6
- package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
- package/dist/{chunk-DYJP44XW.js → chunk-PGF63K6I.js} +2 -2
- package/dist/chunk-PJX3WQUQ.js +42 -0
- package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
- package/dist/{chunk-2JDWVJND.js → chunk-Q4XWMHX6.js} +5 -7
- package/dist/{chunk-W5VSYASO.js → chunk-QQLGQY2A.js} +46 -87
- package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
- package/dist/{chunk-C2LTL2W6.js → chunk-RLYRBIYQ.js} +463 -180
- package/dist/{chunk-4ZG3XFUR.js → chunk-S66XZJOF.js} +14 -23
- package/dist/{chunk-I5VEOC6I.js → chunk-SSEYRH53.js} +13 -14
- package/dist/chunk-SZAA6XDG.js +30 -0
- package/dist/{chunk-CODPRO7Q.js → chunk-TPEQIQIE.js} +7 -7
- package/dist/{chunk-QLL7ILRG.js → chunk-UBRFI4HS.js} +1151 -614
- package/dist/{chunk-O4XIVISU.js → chunk-UH347SHR.js} +227 -47
- package/dist/{chunk-OQBA45DZ.js → chunk-UH632ZYL.js} +2 -2
- package/dist/chunk-UXCU4E3T.js +303 -0
- package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
- package/dist/{chunk-IQ7KR472.js → chunk-VIA6RFQZ.js} +8 -13
- package/dist/{chunk-V5DHCITQ.js → chunk-VKPAQYEB.js} +49 -19
- package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
- package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
- package/dist/{chunk-3XML7CDN.js → chunk-W4YEMFBX.js} +3 -3
- package/dist/{chunk-U77AMWDL.js → chunk-W6NIE6OW.js} +44 -23
- package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
- package/dist/{chunk-QREDIESB.js → chunk-X7IARSHT.js} +15 -9
- package/dist/{chunk-3URVFKWK.js → chunk-XE3PCIXH.js} +5 -5
- package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
- package/dist/{chunk-F4CKPOEQ.js → chunk-XOXV5GKE.js} +119 -38
- package/dist/chunk-XQRY4DTA.js +657 -0
- package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
- package/dist/{chunk-NQQH3YT7.js → chunk-YJISEZKC.js} +3 -3
- package/dist/{chunk-X75E3D2N.js → chunk-ZGNYYXQ6.js} +18 -16
- package/dist/{chunk-LY4S7GJC.js → chunk-ZNT2M6TG.js} +20 -18
- package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
- package/dist/{chunk-IBEBSCYA.js → chunk-ZW4HH5JJ.js} +43 -34
- package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
- package/dist/cli/index.js +38 -37
- package/dist/{clio-2JXHBBY5.js → clio-7VB377CC.js} +12 -13
- package/dist/{code-nav-3YYRMYNF.js → code-nav-YVLCYA7V.js} +86 -18
- package/dist/codewiki/build-worker.js +1 -1
- package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
- package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
- package/dist/{config-QZPCMYSO.js → config-4HVOS65E.js} +112 -63
- package/dist/{configure-TEGEBYCA.js → configure-PIWO7B24.js} +25 -22
- package/dist/{context-E6H5RNMC.js → context-IYEHL3WQ.js} +53 -47
- package/dist/{context-GSXUE4CT.js → context-KQYIWPWT.js} +68 -42
- package/dist/{context-AV7OEZ4D.js → context-N6ZE3LGJ.js} +11 -11
- package/dist/{context-clear-SHIBYK6T.js → context-clear-G4OGZJDS.js} +53 -47
- package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-BWLF6LJP.js} +12 -11
- package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-2QQAITS3.js} +67 -58
- package/dist/{docs-23KQS3XK.js → docs-PD3EXDKU.js} +20 -25
- package/dist/doctor-LHBD36VU.js +773 -0
- package/dist/{eval-TFBYQH4H.js → eval-C45FYRJ6.js} +68 -49
- package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-6DEJPLBF.js} +7 -8
- package/dist/{evidence-ERGESKGN.js → evidence-6SHONYAF.js} +50 -44
- package/dist/{evolve-VDXTSYCJ.js → evolve-KRKMV72X.js} +49 -43
- package/dist/{extensions-7BGBHN57.js → extensions-KPZ2UHBB.js} +8 -6
- package/dist/{fleet-2RRVDF2V.js → fleet-IVTCKDHT.js} +93 -79
- package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EDWL3IT7.js} +10 -9
- package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-YP3YEFGK.js} +6 -6
- package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-ZFWKHY2M.js} +19 -15
- package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-FVUNCBML.js} +50 -45
- package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-UN5XED4R.js} +5 -9
- package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-XOWC4HSX.js} +22 -17
- package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-UN3SODEL.js} +48 -43
- package/dist/fleet-view-TWHJKCN6.js +96 -0
- package/dist/{init-DN2WWLFE.js → init-T2QORQ3Y.js} +72 -66
- package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
- package/dist/{interop-OZBKXAYL.js → interop-IN5I2A66.js} +13 -11
- package/dist/{library-YWZG7IMW.js → library-LSCATDLZ.js} +23 -18
- package/dist/{memory-I4C4HMLW.js → memory-HYOKAGGJ.js} +51 -45
- package/dist/{models-CEYXJBO6.js → models-2GPMFYCM.js} +42 -33
- package/dist/{monitor-NZ6GCI3P.js → monitor-E4ASVUJH.js} +56 -50
- package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-DDMPR3PY.js} +2676 -1507
- package/dist/{panes-KY6W3V2E.js → panes-E3RUXOW5.js} +5 -5
- package/dist/panes-IXKLOKA2.js +75 -0
- package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
- package/dist/{reset-DQ6FGCSH.js → reset-OAQP3W4O.js} +7 -8
- package/dist/{resources-BB3MVJMD.js → resources-OTRSN34L.js} +23 -17
- package/dist/{run-H2GQDUER.js → run-5DEYH5QK.js} +95 -84
- package/dist/{share-GTJN6A5O.js → share-IHWTLO3M.js} +26 -19
- package/dist/{skills-L55TEW6R.js → skills-IYMXMKW4.js} +25 -20
- package/dist/{skills-eval-XVXPH2JI.js → skills-eval-DROHSJAR.js} +63 -65
- package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-D7X4L4ZX.js} +21 -16
- package/dist/{slash-commands-ZSGASKJC.js → slash-commands-QBM7UZ3B.js} +38 -33
- package/dist/{steer-RZGSCY4R.js → steer-Z5DO23FJ.js} +3 -3
- package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
- package/dist/{targets-NCPZ644J.js → targets-P2FUC4IL.js} +64 -61
- package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-YREJ3JX2.js} +15 -10
- package/dist/{tools-DAF3DI3C.js → tools-5B7RO6MV.js} +10 -8
- package/dist/{trace-FYVW2MQA.js → trace-YMGMUM6A.js} +101 -8
- package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
- package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
- package/dist/{upgrade-3XPP6OQL.js → upgrade-PXK3S2YM.js} +36 -61
- package/dist/{usage-3NLHGTU2.js → usage-ME5MPXGX.js} +58 -53
- package/dist/{verifiers-SSQONKRT.js → verifiers-BVZ7IWOO.js} +10 -9
- package/dist/{verify-3U6J7FZI.js → verify-5K7ZKQFC.js} +9 -8
- package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPARV2K7.js} +2 -3
- package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-F5W5QTYY.js} +74 -70
- package/dist/{with-panes-MKB46MPQ.js → with-panes-BYOJCLAM.js} +78 -246
- package/dist/worker/entry.js +83 -63
- package/docs/README.md +176 -81
- package/docs/{acp.md → architecture/acp.md} +36 -20
- package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
- package/docs/{architecture.md → architecture/architecture.md} +43 -22
- package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
- package/docs/architecture/artifact-versions.md +90 -0
- package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
- package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
- package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
- package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
- package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
- package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
- package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
- package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
- package/docs/{observability.md → architecture/observability.md} +26 -13
- package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
- package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
- package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
- package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
- package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
- package/docs/architecture/time-conventions.md +125 -0
- package/docs/{trace-store.md → architecture/trace-store.md} +26 -13
- package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
- package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
- package/docs/{built-in-agents.md → guide/built-in-agents.md} +70 -46
- package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +73 -62
- package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -444
- package/docs/guide/configuration-reference.md +1158 -0
- package/docs/{environment-variables.md → guide/environment-variables.md} +31 -27
- package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +8 -3
- package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
- package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +47 -49
- package/docs/{glossary.md → guide/glossary.md} +14 -11
- package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +45 -14
- package/docs/guide/panes-and-files.md +290 -0
- package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
- package/docs/{resource-library.md → guide/resource-library.md} +13 -4
- package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
- package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
- package/docs/{troubleshooting.md → guide/troubleshooting.md} +10 -5
- package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +13 -10
- package/docs/history/release-cut-checklist.md +207 -0
- package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
- package/docs/process/documentation-coverage.md +100 -0
- package/docs/process/documentation-guide.md +187 -0
- package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
- package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
- package/docs/{evolution.md → process/evolution.md} +2 -2
- package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +17 -10
- package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
- package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
- package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
- package/evals/README.md +5 -0
- package/evals/behavioral-corpus-grader.mjs +103 -0
- package/evals/behavioral-machinery-baseline.json +2276 -0
- package/evals/behavioral-machinery-driver.ts +250 -0
- package/evals/behavioral-machinery-support.ts +253 -0
- package/evals/behavioral-machinery.yaml +614 -0
- package/evals/behavioral-model-negative-control.yaml +68 -0
- package/evals/behavioral-model.yaml +216 -0
- package/evals/fixtures/behavioral-facts.txt +3 -0
- package/evals/fixtures/behavioral-main.ts +7 -0
- package/evals/fixtures/decoy/note.txt +2 -0
- package/evals/fixtures/private/credentials.txt +1 -0
- package/evals/tracked-metrics-baseline.yaml +229 -0
- package/evals/tracked-metrics-grader.mjs +129 -0
- package/package.json +13 -21
- package/skills/README.md +51 -42
- package/skills/coding/ast-grep/SKILL.md +9 -3
- package/skills/coding/coding-standards/SKILL.md +9 -3
- package/skills/coding/prototype/SKILL.md +9 -3
- package/skills/coding/tdd/SKILL.md +9 -3
- package/skills/context/context-handoff/SKILL.md +13 -4
- package/skills/context/context-handoff/evals.md +3 -3
- package/skills/context/context-prime/SKILL.md +9 -3
- package/skills/context/context-prime/evals.md +2 -2
- package/skills/git/file-ticket/SKILL.md +10 -5
- package/skills/git/file-ticket/evals.md +2 -2
- package/skills/git/fix-issue/SKILL.md +12 -5
- package/skills/git/fix-issue/evals.md +4 -4
- package/skills/git/resolve-merge-conflicts/SKILL.md +9 -3
- package/skills/git/resolve-merge-conflicts/evals.md +2 -2
- package/skills/git/ship/SKILL.md +10 -4
- package/skills/git/ship/evals.md +4 -4
- package/skills/git/worktree-create/SKILL.md +8 -3
- package/skills/git/worktree-create/evals.md +6 -6
- package/skills/git/worktree-merge/SKILL.md +8 -3
- package/skills/git/worktree-merge/evals.md +6 -6
- package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +22 -12
- package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +5 -4
- package/skills/meta/clio-coder-test/SKILL.md +146 -0
- package/skills/meta/{clio-test → clio-coder-test}/evals.md +10 -5
- package/skills/meta/clio-coder-test/references/harness.md +102 -0
- package/skills/meta/clio-coder-test/references/test-map.md +96 -0
- package/skills/meta/credentials/SKILL.md +10 -3
- package/skills/meta/find-skills/SKILL.md +9 -3
- package/skills/meta/herdr/SKILL.md +9 -3
- package/skills/meta/skill-craft/SKILL.md +39 -16
- package/skills/planning/architecture/SKILL.md +9 -3
- package/skills/planning/backlog/SKILL.md +9 -3
- package/skills/planning/prd/SKILL.md +9 -3
- package/skills/planning/product-intent/SKILL.md +9 -3
- package/skills/planning/tech-spec/SKILL.md +9 -3
- package/skills/registry.yaml +66 -66
- package/skills/research/arxiv-literature/SKILL.md +9 -3
- package/skills/research/experiment-protocol/SKILL.md +10 -3
- package/skills/research/scientific-debugging/SKILL.md +10 -3
- package/skills/research/scientific-debugging/evals.md +2 -2
- package/skills/research/scientific-modernization/SKILL.md +10 -3
- package/skills/skill-marketplace.json +285 -66
- package/skills/workflow/cut-it/SKILL.md +11 -3
- package/skills/workflow/design-council/SKILL.md +12 -3
- package/skills/workflow/grill-me/SKILL.md +9 -3
- package/skills/workflow/workflow-distiller/SKILL.md +9 -3
- package/src/cli/acp.ts +2 -2
- package/src/cli/args.ts +2 -2
- package/src/cli/auth.ts +2 -2
- package/src/cli/bootstrap-generate.ts +6 -6
- package/src/cli/clio.ts +6 -1
- package/src/cli/config-inspect.ts +68 -15
- package/src/cli/configure-interop.ts +1 -1
- package/src/cli/configure.ts +27 -31
- package/src/cli/default-target.ts +1 -1
- package/src/cli/docs.ts +28 -20
- package/src/cli/doctor-naming.ts +323 -0
- package/src/cli/doctor-panes.ts +46 -14
- package/src/cli/doctor-toolchain.ts +31 -10
- package/src/cli/doctor.ts +15 -1
- package/src/cli/eval-inventory.ts +8 -8
- package/src/cli/eval.ts +1 -2
- package/src/cli/evidence-detail.ts +1 -1
- package/src/cli/evidence-inventory.ts +1 -1
- package/src/cli/extensions.ts +2 -1
- package/src/cli/fleet-decisions.ts +1 -1
- package/src/cli/fleet-inspect.ts +1 -1
- package/src/cli/fleet-preflight.ts +1 -1
- package/src/cli/fleet-verify.ts +1 -1
- package/src/cli/fleet-view.ts +40 -23
- package/src/cli/fleet.ts +9 -6
- package/src/cli/index.ts +2 -1
- package/src/cli/internal-dispatch.ts +3 -4
- package/src/cli/interop-inspect.ts +2 -2
- package/src/cli/models.ts +3 -3
- package/src/cli/modes/print.ts +1 -1
- package/src/cli/panes.ts +19 -5
- package/src/cli/reset.ts +1 -1
- package/src/cli/run.ts +13 -17
- package/src/cli/share.ts +6 -2
- package/src/cli/skills-eval.ts +14 -14
- package/src/cli/targets.ts +25 -30
- package/src/cli/trace-inspect.ts +1 -1
- package/src/cli/trace.ts +96 -4
- package/src/cli/uninstall.ts +2 -2
- package/src/cli/upgrade.ts +29 -34
- package/src/cli/usage.ts +2 -2
- package/src/cli/validate-model.ts +1 -1
- package/src/cli/verifiers-inspect.ts +1 -1
- package/src/cli/wiki-generate.ts +6 -6
- package/src/core/artifact-paths.ts +1 -1
- package/src/core/bash-exec.ts +132 -87
- package/src/core/boot-trace.ts +3 -3
- package/src/core/bus-events.ts +51 -6
- package/src/core/bus-trace.ts +2 -2
- package/src/core/compile-cache.ts +1 -1
- package/src/core/config.ts +1066 -886
- package/src/core/defaults.ts +326 -530
- package/src/core/dispatch-outcome.ts +16 -0
- package/src/core/domain-loader.ts +6 -4
- package/src/core/event-bus.ts +1 -1
- package/src/core/file-references.ts +78 -88
- package/src/core/git-commit-attribution.ts +3 -9
- package/src/core/guardrails.ts +33 -52
- package/src/core/naming-compat.ts +45 -0
- package/src/core/naming-events.ts +62 -0
- package/src/core/prompt-hint.ts +9 -0
- package/src/core/recent-models.ts +1 -7
- package/src/core/residency-protection.ts +4 -8
- package/src/core/resolve-config-value.ts +1 -1
- package/src/core/response-model-id.ts +0 -14
- package/src/core/session-routing.ts +84 -74
- package/src/core/skill-activation.ts +18 -0
- package/src/core/termination.ts +4 -4
- package/src/core/timers.ts +2 -12
- package/src/domains/agents/builtins/architect.md +2 -3
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +2 -2
- package/src/domains/agents/builtins/documenter.md +2 -2
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/oracle.md +1 -1
- 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 +2 -2
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/catalog.ts +14 -26
- package/src/domains/agents/contract.ts +2 -0
- package/src/domains/agents/extension.ts +26 -4
- package/src/domains/agents/registry.ts +7 -7
- package/src/domains/agents/result-contract.ts +1 -1
- package/src/domains/agents/spec.ts +0 -11
- package/src/domains/config/classify.ts +35 -47
- package/src/domains/config/extension.ts +5 -5
- package/src/domains/config/keybindings.ts +56 -47
- package/src/domains/config/watcher.ts +1 -1
- package/src/domains/context/codewiki/indexer.ts +1 -1
- package/src/domains/context/extension.ts +3 -6
- package/src/domains/context/prompt-context.ts +1 -1
- package/src/domains/context/wiki/assemble.ts +2 -2
- package/src/domains/context/working-set/path-index.ts +1 -0
- package/src/domains/context/working-set/replay/metrics.ts +0 -4
- package/src/domains/context/working-set/replay/report.ts +1 -1
- package/src/domains/context/working-set/replay/synthetic.ts +2 -2
- package/src/domains/dispatch/active-route-planner.ts +2 -2
- package/src/domains/dispatch/agent-candidates.ts +1 -1
- package/src/domains/dispatch/agent-ledger-store.ts +1 -1
- package/src/domains/dispatch/agent-ledger.ts +1 -1
- package/src/domains/dispatch/assignment.ts +5 -5
- package/src/domains/dispatch/capability-match.ts +10 -0
- package/src/domains/dispatch/capacity-lease.ts +2 -5
- package/src/domains/dispatch/code-step.ts +1 -1
- package/src/domains/dispatch/contract.ts +2 -2
- package/src/domains/dispatch/extension.ts +169 -82
- package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
- package/src/domains/dispatch/fleet-preflight.ts +8 -17
- package/src/domains/dispatch/fleet-run.ts +0 -7
- package/src/domains/dispatch/gate-decisions.ts +25 -14
- package/src/domains/dispatch/host-verification.ts +435 -39
- package/src/domains/dispatch/intent-requirements.ts +10 -0
- package/src/domains/dispatch/intent.ts +18 -1
- package/src/domains/dispatch/joint-route-resolver.ts +1 -1
- package/src/domains/dispatch/path-scope.ts +220 -70
- package/src/domains/dispatch/placement.ts +2 -2
- package/src/domains/dispatch/receipt-findings.ts +1 -1
- package/src/domains/dispatch/receipt-integrity.ts +20 -8
- package/src/domains/dispatch/reservation-store.ts +0 -23
- package/src/domains/dispatch/route-decision.ts +1 -1
- package/src/domains/dispatch/route-history.ts +1 -1
- package/src/domains/dispatch/route-policy.ts +1 -1
- package/src/domains/dispatch/route-readiness.ts +0 -28
- package/src/domains/dispatch/run-event-journal.ts +9 -19
- package/src/domains/dispatch/state.ts +2 -3
- package/src/domains/dispatch/tool-stats.ts +1 -1
- package/src/domains/dispatch/transport.ts +47 -40
- package/src/domains/dispatch/types.ts +58 -6
- package/src/domains/dispatch/worker-protocol.ts +2 -2
- package/src/domains/eval/artifacts/store.ts +10 -4
- package/src/domains/eval/compare/thresholds.ts +0 -8
- package/src/domains/eval/execution-provenance.ts +1 -1
- package/src/domains/eval/metrics/token-stream.ts +0 -7
- package/src/domains/eval/report.ts +1 -1
- package/src/domains/eval/runner.ts +1 -1
- package/src/domains/eval/runners/clio-run.ts +7 -6
- package/src/domains/eval/runners/external-command.ts +4 -3
- package/src/domains/eval/schema/artifact.ts +1 -1
- package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
- package/src/domains/eval/schema/behavioral.ts +7 -6
- package/src/domains/eval/schema/execution-envelope.ts +4 -2
- package/src/domains/eval/schema/naming.ts +10 -0
- package/src/domains/eval/schema/suite.ts +2 -2
- package/src/domains/eval/schema/validate.ts +9 -5
- package/src/domains/eval/schema/verdict.ts +4 -2
- package/src/domains/eval/store.ts +20 -3
- package/src/domains/eval/suites/run.ts +12 -6
- package/src/domains/eval/types.ts +1 -1
- package/src/domains/eval/workspaces/git.ts +1 -1
- package/src/domains/eval/workspaces/temp-copy.ts +1 -1
- package/src/domains/evidence/build.ts +13 -5
- package/src/domains/evidence/trust-status.ts +10 -1
- package/src/domains/extensions/contract.ts +15 -1
- package/src/domains/extensions/discovery.ts +238 -41
- package/src/domains/extensions/extension.ts +105 -6
- package/src/domains/extensions/index.ts +24 -0
- package/src/domains/extensions/integrity.ts +189 -0
- package/src/domains/extensions/manager.ts +17 -1
- package/src/domains/extensions/resource-path.ts +27 -0
- package/src/domains/extensions/resources.ts +18 -38
- package/src/domains/extensions/snapshot-store.ts +39 -0
- package/src/domains/extensions/snapshot.ts +180 -0
- package/src/domains/extensions/state.ts +385 -57
- package/src/domains/extensions/types.ts +118 -1
- package/src/domains/interop/consent.ts +7 -7
- package/src/domains/interop/extension.ts +1 -1
- package/src/domains/lifecycle/doctor.ts +27 -21
- package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
- package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
- package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
- package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
- package/src/domains/lifecycle/migrations/index.ts +22 -1
- package/src/domains/lifecycle/naming-history.ts +153 -0
- package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
- package/src/domains/lifecycle/naming-resources.ts +276 -0
- package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
- package/src/domains/lifecycle/naming-yazi.ts +86 -0
- package/src/domains/lifecycle/upgrade-notice.ts +1 -1
- package/src/domains/memory/task-memory-handoff.ts +6 -3
- package/src/domains/middleware/contract.ts +26 -0
- package/src/domains/middleware/extension.ts +24 -24
- package/src/domains/middleware/hook-receipts.ts +27 -4
- package/src/domains/middleware/hooks-io.ts +65 -32
- package/src/domains/middleware/hooks.ts +64 -0
- package/src/domains/middleware/index.ts +35 -4
- package/src/domains/middleware/marketplace-offer.ts +339 -0
- package/src/domains/middleware/registrations.ts +326 -0
- package/src/domains/middleware/runtime.ts +30 -2
- package/src/domains/middleware/snapshot.ts +20 -7
- package/src/domains/mux/contract.ts +195 -25
- package/src/domains/mux/detect.ts +23 -6
- package/src/domains/mux/dock-controller.ts +365 -0
- package/src/domains/mux/extension.ts +7 -1
- package/src/domains/mux/index.ts +21 -1
- package/src/domains/mux/operations.ts +72 -5
- package/src/domains/mux/protocol.ts +19 -6
- package/src/domains/mux/socket-client.ts +167 -19
- package/src/domains/mux/types.ts +49 -6
- package/src/domains/mux/yazi/assets/yazi.toml +2 -2
- package/src/domains/mux/yazi/event-stream.ts +6 -4
- package/src/domains/mux/yazi/profile.ts +1 -1
- package/src/domains/mux/yazi/session.ts +79 -7
- package/src/domains/mux/yazi/theme.ts +117 -17
- package/src/domains/observability/contract.ts +10 -11
- package/src/domains/observability/extension.ts +12 -4
- package/src/domains/observability/out-of-turn-usage.ts +2 -2
- package/src/domains/observability/projection.ts +15 -91
- package/src/domains/observability/trace-store.ts +65 -19
- package/src/domains/prompts/compiler.ts +75 -55
- package/src/domains/prompts/contract.ts +15 -3
- package/src/domains/prompts/extension.ts +100 -12
- package/src/domains/prompts/fragments/identity/clio-worker.md +2 -4
- package/src/domains/prompts/fragments/identity/clio.md +6 -12
- package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
- package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
- package/src/domains/prompts/fragments/operating/contract.md +7 -15
- package/src/domains/prompts/fragments/operating/delegation.md +32 -34
- package/src/domains/prompts/fragments/operating/skills.md +11 -18
- package/src/domains/prompts/fragments/operating/worker.md +1 -8
- package/src/domains/providers/extension.ts +5 -5
- package/src/domains/providers/index.ts +1 -1
- package/src/domains/providers/knowledge-base-path.ts +1 -1
- package/src/domains/providers/model-runtime-capabilities.ts +99 -23
- package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
- package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +671 -106
- package/src/domains/providers/plugins.ts +1 -1
- package/src/domains/providers/resolver.ts +1 -1
- package/src/domains/providers/runtime-resolution.ts +31 -0
- package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
- package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
- package/src/domains/providers/runtimes/common/probe-helpers.ts +9 -4
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
- package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
- package/src/domains/providers/types/cost-provenance.ts +19 -0
- package/src/domains/providers/types/knowledge-base.ts +13 -0
- package/src/domains/providers/types/local-model-quirks.ts +87 -39
- package/src/domains/providers/types/target-descriptor.ts +3 -3
- package/src/domains/resources/extension.ts +1 -1
- package/src/domains/resources/library.ts +6 -6
- package/src/domains/resources/prompts/loader.ts +1 -1
- package/src/domains/resources/skills/content-hash.ts +7 -6
- package/src/domains/resources/skills/evals.ts +1 -1
- package/src/domains/resources/skills/install.ts +36 -12
- package/src/domains/resources/skills/loader.ts +41 -18
- package/src/domains/resources/skills/marketplace.ts +21 -2
- package/src/domains/resources/skills/promotion.ts +214 -0
- package/src/domains/safety/audit.ts +2 -2
- package/src/domains/safety/call-target.ts +1 -1
- package/src/domains/safety/finish-contract.ts +2 -1
- package/src/domains/safety/loop-detector.ts +7 -4
- package/src/domains/safety/run-effects.ts +1 -1
- package/src/domains/scheduling/extension.ts +4 -4
- package/src/domains/session/archive-readers.ts +9 -1
- package/src/domains/session/compaction/branch-summary.ts +4 -0
- package/src/domains/session/compaction/compact.ts +1 -1
- package/src/domains/session/compaction/tokens.ts +4 -0
- package/src/domains/session/context-accounting.ts +1 -1
- package/src/domains/session/decision-board.ts +1 -1
- package/src/domains/session/extension.ts +1 -1
- package/src/domains/session/handoff.ts +2 -2
- package/src/domains/session/prompt-manifest.ts +0 -5
- package/src/domains/session/protected-artifact-journal.ts +12 -6
- package/src/domains/session/retry.ts +1 -1
- package/src/domains/session/task-board.ts +10 -9
- package/src/domains/share/archive.ts +249 -43
- package/src/domains/toolchain/install.ts +1 -1
- package/src/engine/acp/adapter.ts +3 -3
- package/src/engine/acp/event-mapper.ts +3 -3
- package/src/engine/acp/server.ts +89 -35
- package/src/engine/acp/tool-mediator.ts +2 -2
- package/src/engine/acp/types.ts +1 -1
- package/src/engine/alcf-oauth.ts +5 -5
- package/src/engine/antigravity/subprocess-runtime.ts +2 -2
- package/src/engine/api-registry.ts +1 -1
- package/src/engine/apis/llamacpp-residency.ts +4 -23
- package/src/engine/apis/lmstudio.ts +4 -9
- package/src/engine/apis/ollama-native.ts +9 -9
- package/src/engine/apis/openai-completions.ts +30 -27
- package/src/engine/apis/output-budget.ts +8 -18
- package/src/engine/apis/residency.ts +10 -35
- package/src/engine/claude/sdk-module.ts +1 -12
- package/src/engine/claude/sdk-runtime.ts +6 -6
- package/src/engine/claude/subprocess-runtime.ts +1 -1
- package/src/engine/claude/tool-safety.ts +4 -4
- package/src/engine/gemma-channel-filter.ts +19 -0
- package/src/engine/loop-guard.ts +92 -17
- package/src/engine/session.ts +14 -7
- package/src/engine/tui-primitives.ts +1 -1
- package/src/engine/worker-events.ts +6 -6
- package/src/engine/worker-runtime.ts +54 -24
- package/src/engine/worker-tools.ts +3 -1
- package/src/entry/extension-hook-sources.ts +28 -0
- package/src/entry/extension-reload.ts +309 -0
- package/src/entry/orchestrator.ts +163 -120
- package/src/interactive/application-controller.ts +23 -22
- package/src/interactive/bus-notices.ts +10 -3
- package/src/interactive/chat-loop-messages.ts +3 -13
- package/src/interactive/chat-loop.ts +18 -9
- package/src/interactive/chat-panel.ts +37 -14
- package/src/interactive/chat-renderer.ts +71 -7
- package/src/interactive/clio-editor.ts +105 -1
- package/src/interactive/context-activity.ts +8 -6
- package/src/interactive/context-meter.ts +3 -6
- package/src/interactive/context-overlay.ts +1 -1
- package/src/interactive/cost-overlay.ts +1 -1
- package/src/interactive/council-grid.ts +2 -2
- package/src/interactive/dispatch-board.ts +36 -44
- package/src/interactive/editor-bash.ts +21 -0
- package/src/interactive/editor-steer.ts +9 -4
- package/src/interactive/editor-submit.ts +24 -18
- package/src/interactive/external-editor.ts +1 -1
- package/src/interactive/file-reference-completion.ts +360 -0
- package/src/interactive/footer/dashboard.ts +15 -17
- package/src/interactive/footer/notifications.ts +14 -8
- package/src/interactive/footer/widgets.ts +15 -44
- package/src/interactive/interactive-application.ts +116 -61
- package/src/interactive/interactive-event-projection.ts +1 -1
- package/src/interactive/interactive-input-runtime.ts +6 -2
- package/src/interactive/interactive-presentation.ts +22 -17
- package/src/interactive/interactive-shell.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +65 -17
- package/src/interactive/interactive-subscriptions.ts +1 -1
- package/src/interactive/interactive-tickers.ts +1 -1
- package/src/interactive/keybinding-manager.ts +4 -4
- package/src/interactive/layout.ts +1 -1
- package/src/interactive/memory-overlay.ts +2 -2
- package/src/interactive/modal-marker.ts +2 -21
- package/src/interactive/mutation-preview.ts +1 -1
- package/src/interactive/overlay-frame.ts +4 -12
- package/src/interactive/overlay-general-openers.ts +6 -2
- package/src/interactive/overlay-key-routing.ts +7 -7
- package/src/interactive/overlay-lifecycle.ts +1 -1
- package/src/interactive/overlay-model-selectors.ts +3 -3
- package/src/interactive/overlays/agents.ts +2 -2
- package/src/interactive/overlays/ask-user.ts +25 -11
- package/src/interactive/overlays/context-reset.ts +28 -4
- package/src/interactive/overlays/cwd-fallback.ts +28 -4
- package/src/interactive/overlays/decisions.ts +4 -2
- package/src/interactive/overlays/extensions.ts +9 -1
- package/src/interactive/overlays/fleet-run-approval.ts +3 -3
- package/src/interactive/overlays/handoff-review.ts +2 -2
- package/src/interactive/overlays/help-reference.ts +13 -0
- package/src/interactive/overlays/interop.ts +1 -1
- package/src/interactive/overlays/library-install-confirm.ts +1 -1
- package/src/interactive/overlays/message-picker.ts +1 -1
- package/src/interactive/overlays/model-selector.ts +39 -31
- package/src/interactive/overlays/prompts.ts +10 -4
- package/src/interactive/overlays/session-selector.ts +2 -2
- package/src/interactive/overlays/settings.ts +360 -303
- package/src/interactive/overlays/side-question.ts +2 -2
- package/src/interactive/overlays/skills-hub.ts +8 -8
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/panes-runtime.ts +145 -43
- package/src/interactive/permission-overlay.ts +2 -2
- package/src/interactive/prompt-cache-identity.ts +88 -0
- package/src/interactive/renderers/retry-status.ts +12 -4
- package/src/interactive/renderers/tool-execution.ts +4 -4
- package/src/interactive/session-transcript.ts +3 -3
- package/src/interactive/slash-autocomplete.ts +454 -165
- package/src/interactive/slash-commands.ts +401 -190
- package/src/interactive/slash-spec.ts +160 -17
- package/src/interactive/status/controller.ts +2 -2
- package/src/interactive/stream-pacing-policy.ts +1 -24
- package/src/interactive/tasks-overlay.ts +20 -13
- package/src/interactive/terminal-lease.ts +6 -7
- package/src/interactive/turn-context.ts +41 -26
- package/src/interactive/turn-persistence.ts +2 -2
- package/src/interactive/turn-prewarm.ts +2 -2
- package/src/interactive/turn-runtime.ts +8 -8
- package/src/interactive/turn-state.ts +1 -1
- package/src/interactive/view/artifacts.ts +12 -9
- package/src/interactive/view/view-overlay.ts +13 -10
- package/src/interactive/watch-pane.ts +38 -10
- package/src/interactive/welcome-dashboard.ts +15 -15
- package/src/interactive/worker-progress.ts +4 -4
- package/src/interactive/worker-receipts.ts +1 -1
- package/src/interactive/worker-stream.ts +1 -4
- package/src/interactive/yazi-bridge.ts +72 -11
- package/src/tools/agent-tools.ts +30 -1
- package/src/tools/artifact.ts +2 -2
- package/src/tools/ask-user.ts +6 -6
- package/src/tools/bash.ts +2 -2
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +52 -22
- package/src/tools/codewiki/code-nav-surface.ts +6 -0
- package/src/tools/codewiki/code-nav.ts +99 -13
- package/src/tools/compete-worktrees.ts +27 -17
- package/src/tools/context/docs-engine.ts +20 -7
- package/src/tools/context/index.ts +44 -13
- package/src/tools/core-bootstrap.ts +28 -6
- package/src/tools/credential-present.ts +1 -2
- package/src/tools/dispatch-admission.ts +4 -2
- package/src/tools/dispatch-arguments.ts +6 -2
- package/src/tools/dispatch-plan.ts +48 -15
- package/src/tools/dispatch-run-events.ts +13 -11
- package/src/tools/dispatch-runner.ts +11 -6
- package/src/tools/dispatch-schema.ts +338 -0
- package/src/tools/dispatch-types.ts +3 -0
- package/src/tools/dispatch.ts +9 -254
- package/src/tools/find.ts +1 -6
- package/src/tools/ledger.ts +3 -5
- package/src/tools/monitor-surface.ts +5 -13
- package/src/tools/monitor.ts +4 -4
- package/src/tools/observation.ts +4 -5
- package/src/tools/observers.ts +0 -33
- package/src/tools/panes-surface.ts +4 -11
- package/src/tools/panes.ts +4 -2
- package/src/tools/policy.ts +15 -2
- package/src/tools/read.ts +5 -6
- package/src/tools/registry.ts +30 -7
- package/src/tools/result-shaping.ts +18 -14
- package/src/tools/steer-surface.ts +1 -1
- package/src/tools/task-worktree.ts +28 -7
- package/src/tools/tasks.ts +1 -1
- package/src/tools/truncate.ts +6 -5
- package/src/tools/verify/authoring.ts +3 -6
- package/src/tools/verify/frontend.ts +1 -1
- package/src/tools/verify/surface.ts +6 -12
- package/src/tools/web-fetch-surface.ts +1 -3
- package/src/tools/web-fetch.ts +1 -1
- package/src/worker/entry.ts +4 -3
- package/src/worker/protocol.ts +16 -14
- package/src/worker/spec-contract.ts +2 -2
- package/src/worker/stdin-demux.ts +2 -2
- package/dist/chunk-36EJLSQQ.js +0 -814
- package/dist/chunk-GXNLGKAB.js +0 -571
- package/dist/chunk-K7VKOLQQ.js +0 -15
- package/dist/chunk-PMZCIOCJ.js +0 -25
- package/dist/chunk-SUCTJL45.js +0 -45
- package/dist/chunk-SUW5DORT.js +0 -819
- package/dist/chunk-TZ3SGWZZ.js +0 -48
- package/dist/chunk-UOV2BYIW.js +0 -107
- package/dist/chunk-VFA6GDY5.js +0 -1625
- package/dist/doctor-QOA5FNY5.js +0 -313
- package/dist/fleet-view-ZCON35AG.js +0 -102
- package/dist/panes-HMABYVO4.js +0 -58
- package/docs/artifact-versions.md +0 -67
- package/docs/documentation-coverage.md +0 -46
- package/docs/documentation-guide.md +0 -167
- package/docs/release-cut-checklist.md +0 -193
- package/docs/time-conventions.md +0 -101
- package/skills/meta/clio-test/SKILL.md +0 -133
- package/skills/meta/clio-test/references/harness.md +0 -126
- package/skills/meta/clio-test/references/test-map.md +0 -69
- package/src/engine/apis/degraded-inference.ts +0 -95
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BusChannels } from "../../core/bus-events.js";
|
|
1
2
|
import type { DomainBundle, DomainContext, DomainExtension } from "../../core/domain-loader.js";
|
|
2
3
|
import { assertAgentIdNamespace } from "../config/agent-namespace.js";
|
|
3
4
|
import type { ConfigContract } from "../config/contract.js";
|
|
@@ -10,25 +11,46 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
10
11
|
let recipes: ReadonlyArray<AgentRecipe> = [];
|
|
11
12
|
let specs: ReadonlyArray<AgentSpec> = [];
|
|
12
13
|
let diagnostics: ReadonlyArray<AgentRecipeDiagnostic> = [];
|
|
14
|
+
let revision = 0;
|
|
13
15
|
|
|
14
16
|
function discover(): void {
|
|
15
17
|
const nextDiagnostics: AgentRecipeDiagnostic[] = [];
|
|
16
18
|
const merged = discoverAgentRecipes(process.cwd(), nextDiagnostics);
|
|
17
19
|
const config = _context.getContract<ConfigContract>("config");
|
|
18
|
-
assertAgentIdNamespace(merged, config?.get()?.
|
|
20
|
+
assertAgentIdNamespace(merged, config?.get()?.integrations.externalAgents?.entries ?? []);
|
|
19
21
|
recipes = merged;
|
|
20
22
|
specs = recipes.map(normalizeAgentSpec);
|
|
21
23
|
diagnostics = nextDiagnostics;
|
|
24
|
+
revision += 1;
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
let unsubscribeExtensionsReload: (() => void) | null = null;
|
|
24
28
|
const extension: DomainExtension = {
|
|
25
29
|
async start() {
|
|
26
30
|
discover();
|
|
31
|
+
// Recipes are cached at start; extension agent roots come from the
|
|
32
|
+
// committed extension generation, so a changed generation rediscovers.
|
|
33
|
+
unsubscribeExtensionsReload = _context.bus.on(BusChannels.ExtensionsReloaded, (payload: unknown) => {
|
|
34
|
+
if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
|
|
35
|
+
try {
|
|
36
|
+
discover();
|
|
37
|
+
} catch (error) {
|
|
38
|
+
process.stderr.write(
|
|
39
|
+
`[clio-coder:agents] rediscovery after extension reload failed: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
async stop() {
|
|
45
|
+
unsubscribeExtensionsReload?.();
|
|
46
|
+
unsubscribeExtensionsReload = null;
|
|
27
47
|
},
|
|
28
|
-
async stop() {},
|
|
29
48
|
};
|
|
30
49
|
|
|
31
50
|
const contract: AgentsContract = {
|
|
51
|
+
revision() {
|
|
52
|
+
return revision;
|
|
53
|
+
},
|
|
32
54
|
list() {
|
|
33
55
|
return recipes;
|
|
34
56
|
},
|
|
@@ -40,7 +62,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
40
62
|
},
|
|
41
63
|
listSpecs() {
|
|
42
64
|
const config = _context.getContract<ConfigContract>("config");
|
|
43
|
-
const delegationAgents = config?.get()?.
|
|
65
|
+
const delegationAgents = config?.get()?.integrations.externalAgents?.entries ?? [];
|
|
44
66
|
const delegationSpecs = delegationAgents.map((agent) => ({
|
|
45
67
|
version: 1 as const,
|
|
46
68
|
id: agent.id,
|
|
@@ -67,7 +89,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
67
89
|
const found = specs.find((r) => r.id === id);
|
|
68
90
|
if (found) return found;
|
|
69
91
|
const config = _context.getContract<ConfigContract>("config");
|
|
70
|
-
const agent = config?.get()?.
|
|
92
|
+
const agent = config?.get()?.integrations.externalAgents?.entries?.find((entry) => entry.id === id);
|
|
71
93
|
if (agent) {
|
|
72
94
|
return {
|
|
73
95
|
version: 1 as const,
|
|
@@ -94,7 +94,7 @@ export function loadRecipesFromDir(
|
|
|
94
94
|
if (source.source === "builtin") throw error;
|
|
95
95
|
const message = error instanceof Error ? error.message : String(error);
|
|
96
96
|
diagnostics.push({ source: source.source, filepath, message });
|
|
97
|
-
process.stderr.write(`[clio:agents] quarantine path=${filepath} source=${source.source} reason=${message}\n`);
|
|
97
|
+
process.stderr.write(`[clio-coder:agents] quarantine path=${filepath} source=${source.source} reason=${message}\n`);
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -102,7 +102,7 @@ export function loadRecipesFromDir(
|
|
|
102
102
|
return recipes;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
function mergeRecipes(...sources: ReadonlyArray<ReadonlyArray<AgentRecipe>>): ReadonlyArray<AgentRecipe> {
|
|
106
106
|
const byId = new Map<string, AgentRecipe>();
|
|
107
107
|
const builtinById = new Map<string, AgentRecipe>();
|
|
108
108
|
for (const group of sources) {
|
|
@@ -113,23 +113,23 @@ export function mergeRecipes(...sources: ReadonlyArray<ReadonlyArray<AgentRecipe
|
|
|
113
113
|
for (const group of sources) {
|
|
114
114
|
for (const recipe of group) {
|
|
115
115
|
if (recipe.source !== "builtin" && RESERVED_CUSTOM_AGENT_IDS.has(recipe.id)) {
|
|
116
|
-
process.stderr.write(`[clio:agents] ignore id=${recipe.id} by=${recipe.source} reason=reserved-agent-id\n`);
|
|
116
|
+
process.stderr.write(`[clio-coder:agents] ignore id=${recipe.id} by=${recipe.source} reason=reserved-agent-id\n`);
|
|
117
117
|
continue;
|
|
118
118
|
}
|
|
119
119
|
const builtin = builtinById.get(recipe.id);
|
|
120
120
|
if (recipe.source === "extension" && builtin) {
|
|
121
|
-
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=extension reason=reserved-builtin\n`);
|
|
121
|
+
process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=extension reason=reserved-builtin\n`);
|
|
122
122
|
continue;
|
|
123
123
|
}
|
|
124
124
|
if (recipe.source === "user" && builtin && isShadowAgent(normalizeAgentSpec(builtin))) {
|
|
125
|
-
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=user reason=reserved-shadow\n`);
|
|
125
|
+
process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=user reason=reserved-shadow\n`);
|
|
126
126
|
continue;
|
|
127
127
|
}
|
|
128
128
|
if (recipe.source === "project" && builtin) {
|
|
129
|
-
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=project reason=reserved-builtin\n`);
|
|
129
|
+
process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=project reason=reserved-builtin\n`);
|
|
130
130
|
continue;
|
|
131
131
|
}
|
|
132
|
-
if (byId.has(recipe.id)) process.stderr.write(`[clio:agents] override id=${recipe.id} by=${recipe.source}\n`);
|
|
132
|
+
if (byId.has(recipe.id)) process.stderr.write(`[clio-coder:agents] override id=${recipe.id} by=${recipe.source}\n`);
|
|
133
133
|
byId.set(recipe.id, recipe);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -1601,7 +1601,7 @@ export interface ResultContractRepairInput {
|
|
|
1601
1601
|
* One repair directive. It states the validator's reason and exact shape. Tool
|
|
1602
1602
|
* use remains closed unless dispatch preauthorized a larger revision phase.
|
|
1603
1603
|
*/
|
|
1604
|
-
|
|
1604
|
+
function resultContractRepairMessage(input: ResultContractRepairInput): string {
|
|
1605
1605
|
const last = input.attempt >= RESULT_CONTRACT_REPAIR_LIMIT;
|
|
1606
1606
|
const lines = [
|
|
1607
1607
|
last
|
|
@@ -137,17 +137,6 @@ export function isAgentProduct(value: unknown): value is AgentProduct {
|
|
|
137
137
|
return includes(AGENT_PRODUCTS, value);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
/**
|
|
141
|
-
* Default tier per capability class. Reproduces the historical dispatch
|
|
142
|
-
* allowlist byte-for-byte: workers that act on the workspace get the bounded
|
|
143
|
-
* projection; read-only, orchestration, and internal classes get none.
|
|
144
|
-
*/
|
|
145
|
-
export function defaultProjectContextTier(capability: AgentCapabilityClass): AgentProjectContextTier {
|
|
146
|
-
return capability === "workspace-edit" || capability === "verification" || capability === "artifact-write"
|
|
147
|
-
? "bounded"
|
|
148
|
-
: "none";
|
|
149
|
-
}
|
|
150
|
-
|
|
151
140
|
function actionClassesForTools(tools: ReadonlyArray<ToolName>): ReadonlySet<ActionClass> {
|
|
152
141
|
const actions = new Set<ActionClass>();
|
|
153
142
|
for (const tool of tools) actions.add(classify({ tool }).actionClass);
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type { ClioSettings } from "../../core/config.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Classifies a settings change into one of three buckets
|
|
5
|
-
* - hotReload
|
|
6
|
-
*
|
|
7
|
-
* -
|
|
8
|
-
* next turn starts.
|
|
9
|
-
* - restartRequired : provider credentials, active provider list, runtime enable/disable,
|
|
10
|
-
* engine settings. Needs a restart nudge.
|
|
4
|
+
* Classifies a version-2 settings change into one of three effect buckets:
|
|
5
|
+
* - hotReload: a live reader observes the value without rebuilding runtime state.
|
|
6
|
+
* - nextTurn: the next request, dispatch, or explicit open observes the value.
|
|
7
|
+
* - restartRequired: process or pane-host setup must be rebuilt.
|
|
11
8
|
*
|
|
12
9
|
* Output is an exhaustive per-bucket list. A single patch can touch multiple buckets;
|
|
13
10
|
* the caller emits the event(s) for every non-empty bucket.
|
|
@@ -22,59 +19,50 @@ export interface ConfigDiff {
|
|
|
22
19
|
}
|
|
23
20
|
|
|
24
21
|
const HOT_RELOAD_FIELDS = new Set<string>([
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
22
|
+
"interface.keybindings",
|
|
23
|
+
"safety.autonomy",
|
|
24
|
+
"chat.modelPicker",
|
|
25
|
+
"interface.smoothStreaming",
|
|
26
|
+
"interface.panes.notifications",
|
|
27
|
+
"integrations.git.commitAttribution",
|
|
31
28
|
// The bridge reads these on every explicit open; no mux re-detection is
|
|
32
29
|
// needed because the host capability rung remains `panes.enabled`.
|
|
33
|
-
"panes.
|
|
30
|
+
"interface.panes.files",
|
|
34
31
|
// The watchdog registration reads its settings live on every trigger, so
|
|
35
32
|
// enabling it, retargeting it, or changing its cadence takes effect on the
|
|
36
33
|
// next turn boundary without a restart or a session-routing patch.
|
|
37
|
-
"
|
|
34
|
+
"safety.review",
|
|
38
35
|
]);
|
|
39
36
|
|
|
40
37
|
const NEXT_TURN_FIELDS = new Set<string>([
|
|
41
|
-
"identity",
|
|
42
38
|
"targets",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"workers.agentBindings",
|
|
55
|
-
"workers.maxRetries",
|
|
56
|
-
"workers.onPermission",
|
|
57
|
-
"fleet",
|
|
58
|
-
"routing",
|
|
59
|
-
"scope",
|
|
60
|
-
"budget.sessionCeilingUsd",
|
|
61
|
-
"defaults",
|
|
62
|
-
"terminal",
|
|
63
|
-
"skills",
|
|
64
|
-
"delegation",
|
|
65
|
-
"compaction",
|
|
39
|
+
"chat",
|
|
40
|
+
"fleet.default",
|
|
41
|
+
"fleet.profiles",
|
|
42
|
+
"fleet.rosters",
|
|
43
|
+
"fleet.agentProfiles",
|
|
44
|
+
"fleet.adaptiveRouting",
|
|
45
|
+
"fleet.nodes",
|
|
46
|
+
"fleet.permissions",
|
|
47
|
+
"fleet.retry",
|
|
48
|
+
"fleet.limits",
|
|
49
|
+
"fleet.history",
|
|
66
50
|
"context",
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
"
|
|
51
|
+
"safety.limits",
|
|
52
|
+
"interface.outputDetail",
|
|
53
|
+
"interface.terminalProgress",
|
|
54
|
+
"interface.desktopNotifications",
|
|
55
|
+
"integrations.projectResources",
|
|
56
|
+
"integrations.externalAgents",
|
|
57
|
+
"integrations.library",
|
|
71
58
|
]);
|
|
72
59
|
|
|
73
60
|
const RESTART_REQUIRED_FIELDS = new Set<string>([
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
61
|
+
"fleet.concurrency",
|
|
62
|
+
"interface.mode",
|
|
63
|
+
"interface.fullscreenScrollbar",
|
|
64
|
+
"interface.panes.enabled",
|
|
65
|
+
"integrations.runtimePlugins",
|
|
78
66
|
]);
|
|
79
67
|
|
|
80
68
|
function matchesPrefix(path: string, fields: Set<string>): boolean {
|
|
@@ -29,7 +29,7 @@ export function createConfigBundle(
|
|
|
29
29
|
|
|
30
30
|
function assertAgentNamespace(settings: Readonly<ClioSettings>): void {
|
|
31
31
|
const agents = context.getContract<NativeAgentNamespace>("agents");
|
|
32
|
-
if (agents) assertAgentIdNamespace(agents.list(), settings.
|
|
32
|
+
if (agents) assertAgentIdNamespace(agents.list(), settings.integrations.externalAgents.entries);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
function dispatch(kind: ChangeKind, payload: ConfigChangePayload): void {
|
|
@@ -45,7 +45,7 @@ export function createConfigBundle(
|
|
|
45
45
|
try {
|
|
46
46
|
listener(payload);
|
|
47
47
|
} catch (err) {
|
|
48
|
-
console.error(`[clio:config] listener for ${kind} threw:`, err);
|
|
48
|
+
console.error(`[clio-coder:config] listener for ${kind} threw:`, err);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -84,7 +84,7 @@ export function createConfigBundle(
|
|
|
84
84
|
}
|
|
85
85
|
publishReloadFailure(null);
|
|
86
86
|
snapshot = next;
|
|
87
|
-
setGitCommitAttributionEnabled(next.
|
|
87
|
+
setGitCommitAttributionEnabled(next.integrations.git.commitAttribution);
|
|
88
88
|
if (!prev) return;
|
|
89
89
|
const diff = diffSettings(prev, next);
|
|
90
90
|
if (diff.hotReload.length > 0) dispatch("hotReload", { diff, settings: next });
|
|
@@ -96,7 +96,7 @@ export function createConfigBundle(
|
|
|
96
96
|
async start() {
|
|
97
97
|
if (initialSettings) snapshot = structuredClone(initialSettings);
|
|
98
98
|
else snapshot = readStrictLayeredSettings(process.cwd()).settings;
|
|
99
|
-
setGitCommitAttributionEnabled(snapshot.
|
|
99
|
+
setGitCommitAttributionEnabled(snapshot.integrations.git.commitAttribution);
|
|
100
100
|
watcher = startConfigWatcher(() => onWatcherFire());
|
|
101
101
|
},
|
|
102
102
|
async stop() {
|
|
@@ -124,7 +124,7 @@ export function createConfigBundle(
|
|
|
124
124
|
// a route may name a target supplied only by this workspace.
|
|
125
125
|
const normalized = updateLayeredSettings(process.cwd(), mutate);
|
|
126
126
|
snapshot = normalized;
|
|
127
|
-
setGitCommitAttributionEnabled(normalized.
|
|
127
|
+
setGitCommitAttributionEnabled(normalized.integrations.git.commitAttribution);
|
|
128
128
|
const diff = diffSettings(previous, normalized);
|
|
129
129
|
if (diff.hotReload.length > 0) dispatch("hotReload", { diff, settings: normalized });
|
|
130
130
|
if (diff.nextTurn.length > 0) dispatch("nextTurn", { diff, settings: normalized });
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* can resolve both against user overrides stored in `settings.yaml`.
|
|
5
5
|
*
|
|
6
6
|
* The `Keybindings` interface in pi-tui is extensible via declaration merging.
|
|
7
|
-
* Adding `clio.*` ids here makes them typed everywhere the manager is
|
|
8
|
-
* pass a wrong id to `matches("clio.typo", ...)` and the compiler
|
|
7
|
+
* Adding `clio-coder.*` ids here makes them typed everywhere the manager is
|
|
8
|
+
* used: pass a wrong id to `matches("clio-coder.typo", ...)` and the compiler
|
|
9
|
+
* complains.
|
|
9
10
|
*/
|
|
10
11
|
|
|
11
12
|
import type { KeybindingDefinitions } from "../../engine/tui.js";
|
|
@@ -18,28 +19,29 @@ import { TUI_KEYBINDINGS } from "../../engine/tui.js";
|
|
|
18
19
|
* live in `resolveCtrlCAction` and are not a simple keybinding.
|
|
19
20
|
*/
|
|
20
21
|
export interface ClioAppKeybindings {
|
|
21
|
-
"clio.thinking.cycle": true;
|
|
22
|
-
"clio.exit": true;
|
|
23
|
-
"clio.status.toggle": true;
|
|
24
|
-
"clio.session.tree": true;
|
|
25
|
-
"clio.dispatchBoard.toggle": true;
|
|
26
|
-
"clio.
|
|
27
|
-
"clio.
|
|
28
|
-
"clio.
|
|
29
|
-
"clio.
|
|
30
|
-
"clio.model.
|
|
31
|
-
"clio.model.
|
|
32
|
-
"clio.
|
|
33
|
-
"clio.tool.
|
|
34
|
-
"clio.tool.
|
|
35
|
-
"clio.
|
|
36
|
-
"clio.thinking.
|
|
37
|
-
"clio.
|
|
38
|
-
"clio.
|
|
39
|
-
"clio.message.
|
|
40
|
-
"clio.message.
|
|
41
|
-
"clio.
|
|
42
|
-
"clio.
|
|
22
|
+
"clio-coder.thinking.cycle": true;
|
|
23
|
+
"clio-coder.exit": true;
|
|
24
|
+
"clio-coder.status.toggle": true;
|
|
25
|
+
"clio-coder.session.tree": true;
|
|
26
|
+
"clio-coder.dispatchBoard.toggle": true;
|
|
27
|
+
"clio-coder.files.toggle": true;
|
|
28
|
+
"clio-coder.tasks.open": true;
|
|
29
|
+
"clio-coder.decisions.open": true;
|
|
30
|
+
"clio-coder.dispatch.background": true;
|
|
31
|
+
"clio-coder.model.select": true;
|
|
32
|
+
"clio-coder.model.cycleForward": true;
|
|
33
|
+
"clio-coder.model.cycleBackward": true;
|
|
34
|
+
"clio-coder.tool.expand": true;
|
|
35
|
+
"clio-coder.tool.expandAll": true;
|
|
36
|
+
"clio-coder.tool.liveOutput": true;
|
|
37
|
+
"clio-coder.thinking.expand": true;
|
|
38
|
+
"clio-coder.thinking.expandAll": true;
|
|
39
|
+
"clio-coder.editor.external": true;
|
|
40
|
+
"clio-coder.message.followUp": true;
|
|
41
|
+
"clio-coder.message.interrupt": true;
|
|
42
|
+
"clio-coder.message.dequeue": true;
|
|
43
|
+
"clio-coder.notifications.dismiss": true;
|
|
44
|
+
"clio-coder.leader": true;
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
export type ClioKeybinding = keyof ClioAppKeybindings;
|
|
@@ -47,7 +49,7 @@ export type ClioKeybinding = keyof ClioAppKeybindings;
|
|
|
47
49
|
/**
|
|
48
50
|
* Declaration merge: pi-tui's `Keybindings` interface is open so downstream
|
|
49
51
|
* packages register their action ids. After this block, `KeybindingsManager`
|
|
50
|
-
* returned from `createKeybindingManager` accepts `clio.*` ids with full
|
|
52
|
+
* returned from `createKeybindingManager` accepts `clio-coder.*` ids with full
|
|
51
53
|
* TypeScript checking.
|
|
52
54
|
*/
|
|
53
55
|
declare module "@earendil-works/pi-tui" {
|
|
@@ -69,37 +71,44 @@ declare module "@earendil-works/pi-tui" {
|
|
|
69
71
|
* net for user rebinds.
|
|
70
72
|
*/
|
|
71
73
|
export const CLIO_APP_KEYBINDINGS = {
|
|
72
|
-
"clio.thinking.cycle": {
|
|
74
|
+
"clio-coder.thinking.cycle": {
|
|
73
75
|
defaultKeys: "shift+tab",
|
|
74
76
|
description: "Cycle orchestrator thinking level",
|
|
75
77
|
},
|
|
76
|
-
"clio.exit": {
|
|
78
|
+
"clio-coder.exit": {
|
|
77
79
|
defaultKeys: "ctrl+d",
|
|
78
80
|
description: "Exit when the editor is empty",
|
|
79
81
|
},
|
|
80
|
-
"clio.status.toggle": {
|
|
82
|
+
"clio-coder.status.toggle": {
|
|
81
83
|
defaultKeys: "alt+u",
|
|
82
84
|
description: "Toggle the footer dashboard (compact / expanded)",
|
|
83
85
|
},
|
|
84
|
-
"clio.session.tree": {
|
|
86
|
+
"clio-coder.session.tree": {
|
|
85
87
|
defaultKeys: "alt+t",
|
|
86
88
|
description: "Open the /tree navigator",
|
|
87
89
|
},
|
|
88
|
-
"clio.dispatchBoard.toggle": {
|
|
90
|
+
"clio-coder.dispatchBoard.toggle": {
|
|
89
91
|
defaultKeys: "alt+w",
|
|
90
92
|
description: "Toggle the dispatch (workers) board overlay",
|
|
91
93
|
},
|
|
92
|
-
"clio.
|
|
94
|
+
"clio-coder.files.toggle": {
|
|
95
|
+
// Alt+F is a pi-tui editor reserve (word-forward), so the files pane
|
|
96
|
+
// takes the next letter that reads as "explorer" and stays inside the
|
|
97
|
+
// Alt+<letter> scheme, which also earns it the Ctrl+G leader fallback.
|
|
98
|
+
defaultKeys: "alt+e",
|
|
99
|
+
description: "Toggle the files pane beside the session (a --with-panes session inside herdr)",
|
|
100
|
+
},
|
|
101
|
+
"clio-coder.tasks.open": {
|
|
93
102
|
// Approved application-boundary override of pi-tui editor word-back.
|
|
94
103
|
defaultKeys: "alt+b",
|
|
95
104
|
description: "Open the composite session and operator task board",
|
|
96
105
|
},
|
|
97
|
-
"clio.decisions.open": {
|
|
106
|
+
"clio-coder.decisions.open": {
|
|
98
107
|
// Approved application-boundary override of pi-tui editor word-delete.
|
|
99
108
|
defaultKeys: "alt+d",
|
|
100
109
|
description: "Open the settled interview decision board",
|
|
101
110
|
},
|
|
102
|
-
"clio.dispatch.background": {
|
|
111
|
+
"clio-coder.dispatch.background": {
|
|
103
112
|
// Ctrl+B alone is pi-tui's editor cursor-left, so the Claude Code chord
|
|
104
113
|
// cannot be the primary here. Alt+S ("send to background") keeps the app
|
|
105
114
|
// scheme and earns the Ctrl+G leader fallback, which only alt+<letter>
|
|
@@ -107,56 +116,56 @@ export const CLIO_APP_KEYBINDINGS = {
|
|
|
107
116
|
defaultKeys: ["alt+s", "ctrl+alt+b"],
|
|
108
117
|
description: "Send the running attached dispatch to the background as a detached batch",
|
|
109
118
|
},
|
|
110
|
-
"clio.model.select": {
|
|
119
|
+
"clio-coder.model.select": {
|
|
111
120
|
defaultKeys: "alt+l",
|
|
112
121
|
description: "Open the model + targets selector",
|
|
113
122
|
},
|
|
114
|
-
"clio.model.cycleForward": {
|
|
123
|
+
"clio-coder.model.cycleForward": {
|
|
115
124
|
defaultKeys: "alt+j",
|
|
116
125
|
description: "Cycle to next scoped model",
|
|
117
126
|
},
|
|
118
|
-
"clio.model.cycleBackward": {
|
|
127
|
+
"clio-coder.model.cycleBackward": {
|
|
119
128
|
defaultKeys: "alt+k",
|
|
120
129
|
description: "Cycle to previous scoped model",
|
|
121
130
|
},
|
|
122
|
-
"clio.tool.expand": {
|
|
131
|
+
"clio-coder.tool.expand": {
|
|
123
132
|
defaultKeys: "alt+o",
|
|
124
133
|
description:
|
|
125
134
|
"Fold or unfold the newest tool call or worker block between its one-line summary and full details, overriding the /output level for that block",
|
|
126
135
|
},
|
|
127
|
-
"clio.tool.expandAll": {
|
|
136
|
+
"clio-coder.tool.expandAll": {
|
|
128
137
|
// Alt+Shift+letter is commonly consumed by OS keyboard-layout switching.
|
|
129
138
|
// Keep it discoverable, but pair it with the legacy-safe Ctrl+Alt form.
|
|
130
139
|
defaultKeys: ["ctrl+alt+o", "alt+shift+o"],
|
|
131
140
|
description:
|
|
132
141
|
"Fold or unfold every tool call and worker block at once, overriding the /output level; changing /output clears the overrides",
|
|
133
142
|
},
|
|
134
|
-
"clio.tool.liveOutput": {
|
|
143
|
+
"clio-coder.tool.liveOutput": {
|
|
135
144
|
defaultKeys: "alt+p",
|
|
136
145
|
description: "Toggle streaming partial tool output in expanded tool bodies",
|
|
137
146
|
},
|
|
138
|
-
"clio.thinking.expand": {
|
|
147
|
+
"clio-coder.thinking.expand": {
|
|
139
148
|
defaultKeys: "alt+r",
|
|
140
149
|
description:
|
|
141
150
|
"Toggle the latest thinking block between hidden marker and full body (no effect while /output verbose pins it open)",
|
|
142
151
|
},
|
|
143
|
-
"clio.thinking.expandAll": {
|
|
152
|
+
"clio-coder.thinking.expandAll": {
|
|
144
153
|
// Ctrl+Alt+R is the fallback for terminals/OSes that do not forward
|
|
145
154
|
// Alt+Shift+R as a distinct key event.
|
|
146
155
|
defaultKeys: ["ctrl+alt+r", "alt+shift+r"],
|
|
147
156
|
description:
|
|
148
157
|
"Toggle all thinking blocks between hidden markers and full bodies, overriding the /output level; changing /output clears the overrides",
|
|
149
158
|
},
|
|
150
|
-
"clio.editor.external": {
|
|
159
|
+
"clio-coder.editor.external": {
|
|
151
160
|
defaultKeys: "alt+g",
|
|
152
161
|
description: "Open the current input in an external editor",
|
|
153
162
|
},
|
|
154
|
-
"clio.message.followUp": {
|
|
163
|
+
"clio-coder.message.followUp": {
|
|
155
164
|
defaultKeys: "alt+enter",
|
|
156
165
|
description:
|
|
157
166
|
"End of turn: queue the current input for delivery when the active run settles (Enter delivers it at the next slot, between tool batches)",
|
|
158
167
|
},
|
|
159
|
-
"clio.message.interrupt": {
|
|
168
|
+
"clio-coder.message.interrupt": {
|
|
160
169
|
// Alt+I keeps the app scheme and earns the Ctrl+G leader fallback. A
|
|
161
170
|
// Ctrl+Enter chord was rejected because legacy terminals send it as a
|
|
162
171
|
// plain Enter, which would turn every send into a cancel.
|
|
@@ -164,15 +173,15 @@ export const CLIO_APP_KEYBINDINGS = {
|
|
|
164
173
|
description:
|
|
165
174
|
"Interrupt: cancel the active run and deliver the current input now (refused while an attached dispatch runs or a permission ask is parked; the input then queues for the next slot)",
|
|
166
175
|
},
|
|
167
|
-
"clio.message.dequeue": {
|
|
176
|
+
"clio-coder.message.dequeue": {
|
|
168
177
|
defaultKeys: "alt+up",
|
|
169
178
|
description: "Restore queued steering and follow-up messages to the editor",
|
|
170
179
|
},
|
|
171
|
-
"clio.notifications.dismiss": {
|
|
180
|
+
"clio-coder.notifications.dismiss": {
|
|
172
181
|
defaultKeys: "alt+x",
|
|
173
182
|
description: "Dismiss footer notifications",
|
|
174
183
|
},
|
|
175
|
-
"clio.leader": {
|
|
184
|
+
"clio-coder.leader": {
|
|
176
185
|
defaultKeys: "ctrl+g",
|
|
177
186
|
description: "Start portable leader-key fallback for Alt shortcuts",
|
|
178
187
|
},
|
|
@@ -752,7 +752,7 @@ function mergeTreeSitterWithRegexImports(
|
|
|
752
752
|
};
|
|
753
753
|
}
|
|
754
754
|
|
|
755
|
-
|
|
755
|
+
function fallbackExtraction(language: CodewikiLanguage, relPath: string, text: string): LanguageExtraction {
|
|
756
756
|
return extractWithExtractors(fallbackExtractors, language, relPath, text);
|
|
757
757
|
}
|
|
758
758
|
|
|
@@ -59,9 +59,6 @@ function persistState(
|
|
|
59
59
|
* because nothing inside it awaited.
|
|
60
60
|
*/
|
|
61
61
|
async function ensureCodewikiFresh(cwd: string): Promise<void> {
|
|
62
|
-
// The bootstrap model-generation child runs a headless session purely to draft
|
|
63
|
-
// CLIO-CODER.md; it must not re-index while the parent context-init owns the rebuild.
|
|
64
|
-
if (process.env.CLIO_CODER_BOOTSTRAP_GENERATE_CHILD === "1") return;
|
|
65
62
|
const state = readClioState(cwd);
|
|
66
63
|
if (!state && !existsSync(codewikiPath(cwd))) return;
|
|
67
64
|
const indexedAt = new Date().toISOString();
|
|
@@ -146,15 +143,15 @@ function collectStartupHints(cwd: string, options: ContextBundleOptions = {}): s
|
|
|
146
143
|
projectType !== "unknown" &&
|
|
147
144
|
options.noContextFiles !== true
|
|
148
145
|
) {
|
|
149
|
-
hints.push("clio: No CLIO-CODER.md detected. Run /context init to explore the repo and bootstrap context.");
|
|
146
|
+
hints.push("clio-coder: No CLIO-CODER.md detected. Run /context init to explore the repo and bootstrap context.");
|
|
150
147
|
}
|
|
151
148
|
for (const issue of clio.errors) {
|
|
152
|
-
hints.push(`clio: malformed ${issue.path} ignored: ${issue.error}`);
|
|
149
|
+
hints.push(`clio-coder: malformed ${issue.path} ignored: ${issue.error}`);
|
|
153
150
|
}
|
|
154
151
|
const state = readClioState(cwd);
|
|
155
152
|
if (!state) return hints;
|
|
156
153
|
if (state.contextSources !== undefined && adoptionSourcesChanged(state.contextSources, { cwd })) {
|
|
157
|
-
hints.push("clio: Imported agent context changed. Run /context init --adopt to refresh.");
|
|
154
|
+
hints.push("clio-coder: Imported agent context changed. Run /context init --adopt to refresh.");
|
|
158
155
|
}
|
|
159
156
|
return hints;
|
|
160
157
|
}
|
|
@@ -32,7 +32,7 @@ export function renderPromptContext(cwd: string): ProjectPromptContext {
|
|
|
32
32
|
const clioMd: ParsedClioMd | null = loadedClioMd.value;
|
|
33
33
|
for (const file of loadedClioMd.files) pieces.push(renderProjectContextFragment(file.value, file.path));
|
|
34
34
|
for (const issue of loadedClioMd.errors) {
|
|
35
|
-
warnings.push(`clio: malformed ${issue.path} ignored: ${issue.error}`);
|
|
35
|
+
warnings.push(`clio-coder: malformed ${issue.path} ignored: ${issue.error}`);
|
|
36
36
|
}
|
|
37
37
|
// Said where the handbook would have been: a model that sees no project
|
|
38
38
|
// context spends its first tool call reading CLIO-CODER.md and gets
|
|
@@ -39,7 +39,7 @@ const SOURCE_CITATION =
|
|
|
39
39
|
const INTERNAL_LINK = /\[[^\]]*\]\((?![a-z][a-z\d+.-]*:|\/\/|#)([^)\s]+\.md)(?:#[^)\s]*)?\)/gi;
|
|
40
40
|
|
|
41
41
|
/** Marker line carrying a page's unrepaired references; regenerated every pass. */
|
|
42
|
-
const REPAIR_NOTE = /^<!-- clio:wiki .*-->$/gm;
|
|
42
|
+
const REPAIR_NOTE = /^<!-- (?:clio-coder|clio):wiki .*-->$/gm;
|
|
43
43
|
|
|
44
44
|
export interface WikiPageIssue {
|
|
45
45
|
page: string;
|
|
@@ -79,7 +79,7 @@ function renderRepairNote(issues: ReadonlyArray<WikiPageIssue>): string {
|
|
|
79
79
|
const parts: string[] = [];
|
|
80
80
|
if (links.length > 0) parts.push(`unresolved links: ${[...new Set(links)].join(", ")}`);
|
|
81
81
|
if (citations.length > 0) parts.push(`unresolved sources: ${[...new Set(citations)].join(", ")}`);
|
|
82
|
-
return parts.length === 0 ? "" : `\n<!-- clio:wiki ${parts.join("; ")} -->\n`;
|
|
82
|
+
return parts.length === 0 ? "" : `\n<!-- clio-coder:wiki ${parts.join("; ")} -->\n`;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
/**
|
|
@@ -241,6 +241,7 @@ function observedPath(op: PathOp, args: Record<string, unknown> | null, cwd: str
|
|
|
241
241
|
return explicit === null ? "" : canonicalize(explicit, cwd);
|
|
242
242
|
}
|
|
243
243
|
if (op === "code_nav") {
|
|
244
|
+
if (stringField(args, "source") === "clio") return "";
|
|
244
245
|
const mode = stringField(args, "mode");
|
|
245
246
|
if (mode === null || !CODE_NAV_PATH_MODES.has(mode)) return "";
|
|
246
247
|
const query = stringField(args, "query");
|
|
@@ -144,10 +144,6 @@ function measure(input: ReplayMeasurement): MeasuredTrace {
|
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
export function measureReplayTrace(input: ReplayMeasurement): ReplayMetrics {
|
|
148
|
-
return measure(input).metrics;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
147
|
function mean(values: ReadonlyArray<number>): number {
|
|
152
148
|
return values.length === 0 ? 0 : values.reduce((sum, value) => sum + value, 0) / values.length;
|
|
153
149
|
}
|
|
@@ -49,7 +49,7 @@ function metricObject(metrics: ReplayMetrics, turnsToFirstSummaryCount: number):
|
|
|
49
49
|
export function renderReplayJson(input: ReplayReportInput): string {
|
|
50
50
|
const filtered = Object.fromEntries(Object.entries(input.cascade.filtered).sort(([a], [b]) => a.localeCompare(b)));
|
|
51
51
|
const artifact = {
|
|
52
|
-
schema: "clio-context-replay-v2",
|
|
52
|
+
schema: "clio-coder-context-replay-v2",
|
|
53
53
|
config: {
|
|
54
54
|
policies: [...input.config.policies],
|
|
55
55
|
budgets: [...input.config.budgets],
|
|
@@ -93,7 +93,7 @@ export const SYNTHETIC_CORPORA: ReadonlyArray<SyntheticCorpusSpec> = [
|
|
|
93
93
|
},
|
|
94
94
|
];
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
function syntheticCorpus(id: string): SyntheticCorpusSpec | undefined {
|
|
97
97
|
return SYNTHETIC_CORPORA.find((spec) => spec.id === id);
|
|
98
98
|
}
|
|
99
99
|
|
|
@@ -258,7 +258,7 @@ function testOutput(files: ReadonlyArray<RepoFile>, failing: RepoFile | null): s
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
/** Generate one trace of the corpus. `index` selects the trace; the spec's seed and index fix every byte. */
|
|
261
|
-
|
|
261
|
+
function generateSyntheticTrace(spec: SyntheticCorpusSpec, index: number): Trace {
|
|
262
262
|
const rnd = mulberry32(spec.seed * 1000 + index);
|
|
263
263
|
const between = (low: number, high: number): number => low + Math.floor(rnd() * (high - low + 1));
|
|
264
264
|
const pick = <T>(items: ReadonlyArray<T>): T => items[Math.floor(rnd() * items.length)] as T;
|