@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
|
@@ -46,6 +46,7 @@ import type { createMuxBridge } from "./mux-bridge.js";
|
|
|
46
46
|
import { createOverlayLifecycle, type OverlayLifecycleController, type OverlayState } from "./overlay-lifecycle.js";
|
|
47
47
|
import { interopOverlaySurface } from "./overlays/interop.js";
|
|
48
48
|
import { paneWatchDecision } from "./pane-policy.js";
|
|
49
|
+
import { describePanesLeftBehind } from "./panes-runtime.js";
|
|
49
50
|
import { writeInputWedgeDump } from "./render-trace.js";
|
|
50
51
|
import { settleChatBeforeSessionSwitch } from "./session-switch-settlement.js";
|
|
51
52
|
import { createSessionTranscript } from "./session-transcript.js";
|
|
@@ -53,9 +54,11 @@ import type {
|
|
|
53
54
|
ContextClearCommandOptions,
|
|
54
55
|
InitCommandOptions,
|
|
55
56
|
RunIo,
|
|
57
|
+
SettingsAreaId,
|
|
58
|
+
SlashCommandContext,
|
|
56
59
|
TaskMemorySeedCommandResult,
|
|
57
60
|
} from "./slash-commands.js";
|
|
58
|
-
import { processAutoPacingAllowed
|
|
61
|
+
import { processAutoPacingAllowed } from "./stream-pacing-policy.js";
|
|
59
62
|
import type { TerminalLease } from "./terminal-lease.js";
|
|
60
63
|
import type { createWatchPaneController } from "./watch-pane.js";
|
|
61
64
|
import { createWorkspaceFacts } from "./workspace-facts.js";
|
|
@@ -91,20 +94,6 @@ export {
|
|
|
91
94
|
type SlashCommandKind,
|
|
92
95
|
} from "./slash-commands.js";
|
|
93
96
|
|
|
94
|
-
export function shouldAnnouncePermissionRequest(
|
|
95
|
-
seenRequestIds: Set<string>,
|
|
96
|
-
requestId: string,
|
|
97
|
-
maxSize = 2048,
|
|
98
|
-
): boolean {
|
|
99
|
-
if (seenRequestIds.has(requestId)) return false;
|
|
100
|
-
seenRequestIds.add(requestId);
|
|
101
|
-
if (seenRequestIds.size > maxSize) {
|
|
102
|
-
const oldest = seenRequestIds.values().next().value;
|
|
103
|
-
if (oldest !== undefined) seenRequestIds.delete(oldest);
|
|
104
|
-
}
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
97
|
export function isLiveWorkerEscalationRequest(payload: PermissionRequestedPayload): boolean {
|
|
109
98
|
if (typeof payload.requestId !== "string") return false;
|
|
110
99
|
if (payload.escalation !== true) return false;
|
|
@@ -134,6 +123,8 @@ export interface InteractiveDeps {
|
|
|
134
123
|
initialNotices?: ReadonlyArray<string>;
|
|
135
124
|
resources?: ResourcesContract;
|
|
136
125
|
extensions?: ExtensionsContract;
|
|
126
|
+
/** `/resources extensions reload` seam; the composition root supplies the coordinator. */
|
|
127
|
+
reloadExtensions?: SlashCommandContext["reloadExtensions"];
|
|
137
128
|
interop?: InteropContract;
|
|
138
129
|
share?: ShareContract;
|
|
139
130
|
/**
|
|
@@ -243,7 +234,7 @@ export interface InteractiveDeps {
|
|
|
243
234
|
onForkSession?: (parentTurnId: string) => void;
|
|
244
235
|
/**
|
|
245
236
|
* Run `/context compact` for the current session. Resolves the compaction model
|
|
246
|
-
* (settings.compaction.model with fallback to the
|
|
237
|
+
* (settings.context.compaction.model with fallback to the chat target),
|
|
247
238
|
* reads session entries, streams a summary via the session compaction
|
|
248
239
|
* engine, and persists a compactionSummary entry.
|
|
249
240
|
*/
|
|
@@ -282,7 +273,7 @@ export interface InteractiveSubmitExpansion {
|
|
|
282
273
|
pendingSkillRequests: PendingSkillRequest[];
|
|
283
274
|
}
|
|
284
275
|
|
|
285
|
-
|
|
276
|
+
async function expandInteractiveSubmitAsync(
|
|
286
277
|
text: string,
|
|
287
278
|
resources: ResourcesContract | undefined,
|
|
288
279
|
cwd = process.cwd(),
|
|
@@ -314,7 +305,7 @@ function availableInteractiveThinkingLevels(deps: InteractiveDeps): ReadonlyArra
|
|
|
314
305
|
export interface KeyBindingDeps {
|
|
315
306
|
/**
|
|
316
307
|
* Keybinding lookup injected by startInteractive. Defaults come from
|
|
317
|
-
* CLIO_KEYBINDINGS; user overrides from settings.keybindings. Tests may
|
|
308
|
+
* CLIO_KEYBINDINGS; user overrides from settings.interface.keybindings. Tests may
|
|
318
309
|
* substitute a narrower matcher via createKeybindingManagerForTesting.
|
|
319
310
|
*/
|
|
320
311
|
matches: (data: string, id: ClioKeybinding) => boolean;
|
|
@@ -324,6 +315,8 @@ export interface KeyBindingDeps {
|
|
|
324
315
|
requestShutdown: () => void;
|
|
325
316
|
toggleStatus: () => void;
|
|
326
317
|
toggleDispatchBoard: () => void;
|
|
318
|
+
/** `/files` as a key: open the files pane when closed, close it when open. */
|
|
319
|
+
toggleFilesPane: () => void;
|
|
327
320
|
openTasks: () => void;
|
|
328
321
|
openDecisions: () => void;
|
|
329
322
|
backgroundDispatch: () => void;
|
|
@@ -365,73 +358,76 @@ export function resolveCtrlCAction(deps: CtrlCActionDeps): CtrlCAction {
|
|
|
365
358
|
return "arm-shutdown";
|
|
366
359
|
}
|
|
367
360
|
|
|
368
|
-
|
|
361
|
+
function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
|
|
369
362
|
switch (id) {
|
|
370
|
-
case "clio.notifications.dismiss":
|
|
363
|
+
case "clio-coder.notifications.dismiss":
|
|
371
364
|
deps.dismissNotifications();
|
|
372
365
|
return true;
|
|
373
|
-
case "clio.tool.expand":
|
|
366
|
+
case "clio-coder.tool.expand":
|
|
374
367
|
deps.toggleToolExpansion();
|
|
375
368
|
return true;
|
|
376
|
-
case "clio.tool.expandAll":
|
|
369
|
+
case "clio-coder.tool.expandAll":
|
|
377
370
|
deps.toggleAllToolExpansion();
|
|
378
371
|
return true;
|
|
379
|
-
case "clio.tool.liveOutput":
|
|
372
|
+
case "clio-coder.tool.liveOutput":
|
|
380
373
|
deps.toggleLiveToolOutput();
|
|
381
374
|
return true;
|
|
382
|
-
case "clio.editor.external":
|
|
375
|
+
case "clio-coder.editor.external":
|
|
383
376
|
deps.openExternalEditor();
|
|
384
377
|
return true;
|
|
385
|
-
case "clio.message.followUp":
|
|
378
|
+
case "clio-coder.message.followUp":
|
|
386
379
|
deps.queueFollowUp();
|
|
387
380
|
return true;
|
|
388
|
-
case "clio.message.interrupt":
|
|
381
|
+
case "clio-coder.message.interrupt":
|
|
389
382
|
deps.interruptWithMessage();
|
|
390
383
|
return true;
|
|
391
|
-
case "clio.message.dequeue":
|
|
384
|
+
case "clio-coder.message.dequeue":
|
|
392
385
|
deps.restoreQueuedFollowUps();
|
|
393
386
|
return true;
|
|
394
|
-
case "clio.thinking.expand":
|
|
387
|
+
case "clio-coder.thinking.expand":
|
|
395
388
|
deps.toggleThinkingExpansion();
|
|
396
389
|
return true;
|
|
397
|
-
case "clio.thinking.expandAll":
|
|
390
|
+
case "clio-coder.thinking.expandAll":
|
|
398
391
|
deps.toggleAllThinkingExpansion();
|
|
399
392
|
return true;
|
|
400
|
-
case "clio.status.toggle":
|
|
393
|
+
case "clio-coder.status.toggle":
|
|
401
394
|
deps.toggleStatus();
|
|
402
395
|
return true;
|
|
403
|
-
case "clio.thinking.cycle":
|
|
396
|
+
case "clio-coder.thinking.cycle":
|
|
404
397
|
deps.cycleThinking();
|
|
405
398
|
return true;
|
|
406
|
-
case "clio.session.tree":
|
|
399
|
+
case "clio-coder.session.tree":
|
|
407
400
|
deps.openTree();
|
|
408
401
|
return true;
|
|
409
|
-
case "clio.dispatchBoard.toggle":
|
|
402
|
+
case "clio-coder.dispatchBoard.toggle":
|
|
410
403
|
deps.toggleDispatchBoard();
|
|
411
404
|
return true;
|
|
412
|
-
case "clio.
|
|
405
|
+
case "clio-coder.files.toggle":
|
|
406
|
+
deps.toggleFilesPane();
|
|
407
|
+
return true;
|
|
408
|
+
case "clio-coder.tasks.open":
|
|
413
409
|
deps.openTasks();
|
|
414
410
|
return true;
|
|
415
|
-
case "clio.decisions.open":
|
|
411
|
+
case "clio-coder.decisions.open":
|
|
416
412
|
deps.openDecisions();
|
|
417
413
|
return true;
|
|
418
|
-
case "clio.dispatch.background":
|
|
414
|
+
case "clio-coder.dispatch.background":
|
|
419
415
|
deps.backgroundDispatch();
|
|
420
416
|
return true;
|
|
421
|
-
case "clio.model.select":
|
|
417
|
+
case "clio-coder.model.select":
|
|
422
418
|
deps.openModelSelector();
|
|
423
419
|
return true;
|
|
424
|
-
case "clio.model.cycleBackward":
|
|
420
|
+
case "clio-coder.model.cycleBackward":
|
|
425
421
|
deps.cycleScopedModelBackward();
|
|
426
422
|
return true;
|
|
427
|
-
case "clio.model.cycleForward":
|
|
423
|
+
case "clio-coder.model.cycleForward":
|
|
428
424
|
deps.cycleScopedModelForward();
|
|
429
425
|
return true;
|
|
430
|
-
case "clio.exit":
|
|
426
|
+
case "clio-coder.exit":
|
|
431
427
|
if (deps.canExit && !deps.canExit()) return false;
|
|
432
428
|
deps.requestShutdown();
|
|
433
429
|
return true;
|
|
434
|
-
case "clio.leader":
|
|
430
|
+
case "clio-coder.leader":
|
|
435
431
|
return false;
|
|
436
432
|
}
|
|
437
433
|
}
|
|
@@ -439,20 +435,21 @@ export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDe
|
|
|
439
435
|
/** Pure key router: returns true when the input was consumed. */
|
|
440
436
|
export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean {
|
|
441
437
|
const order: ClioKeybinding[] = [
|
|
442
|
-
"clio.status.toggle",
|
|
443
|
-
"clio.thinking.cycle",
|
|
444
|
-
"clio.session.tree",
|
|
445
|
-
"clio.dispatchBoard.toggle",
|
|
446
|
-
"clio.
|
|
447
|
-
"clio.
|
|
448
|
-
"clio.
|
|
449
|
-
"clio.
|
|
438
|
+
"clio-coder.status.toggle",
|
|
439
|
+
"clio-coder.thinking.cycle",
|
|
440
|
+
"clio-coder.session.tree",
|
|
441
|
+
"clio-coder.dispatchBoard.toggle",
|
|
442
|
+
"clio-coder.files.toggle",
|
|
443
|
+
"clio-coder.tasks.open",
|
|
444
|
+
"clio-coder.decisions.open",
|
|
445
|
+
"clio-coder.dispatch.background",
|
|
446
|
+
"clio-coder.model.select",
|
|
450
447
|
// Match cycleBackward before cycleForward so a user rebind where one key
|
|
451
448
|
// is a prefix of the other resolves to the more specific binding first.
|
|
452
449
|
// The defaults (alt+k / alt+j) do not prefix-match each other.
|
|
453
|
-
"clio.model.cycleBackward",
|
|
454
|
-
"clio.model.cycleForward",
|
|
455
|
-
"clio.exit",
|
|
450
|
+
"clio-coder.model.cycleBackward",
|
|
451
|
+
"clio-coder.model.cycleForward",
|
|
452
|
+
"clio-coder.exit",
|
|
456
453
|
];
|
|
457
454
|
for (const id of order) {
|
|
458
455
|
if (deps.matches(data, id)) return dispatchInteractiveAction(id, deps);
|
|
@@ -461,13 +458,13 @@ export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean
|
|
|
461
458
|
}
|
|
462
459
|
|
|
463
460
|
export async function createInteractiveApplication(deps: InteractiveDeps): Promise<number> {
|
|
464
|
-
const initialSmoothStreaming =
|
|
461
|
+
const initialSmoothStreaming = deps.getSettings?.().interface.smoothStreaming ?? "off";
|
|
465
462
|
const initialAutoPacingAllowed = processAutoPacingAllowed(false);
|
|
466
463
|
const lease = deps.terminalLease;
|
|
467
464
|
const shell =
|
|
468
465
|
lease?.shell ??
|
|
469
466
|
createProcessInteractiveShell({
|
|
470
|
-
tuiMode: deps.getSettings?.().
|
|
467
|
+
tuiMode: deps.getSettings?.().interface.mode ?? "regular",
|
|
471
468
|
streamPacingActive:
|
|
472
469
|
initialSmoothStreaming === "on" || (initialSmoothStreaming === "auto" && initialAutoPacingAllowed),
|
|
473
470
|
...(deps.onFirstFrameCommit ? { onFirstFrameCommit: deps.onFirstFrameCommit } : {}),
|
|
@@ -619,10 +616,10 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
619
616
|
getDraft: () => editor.getText(),
|
|
620
617
|
setDraft: (text) => editor.setText(text),
|
|
621
618
|
requestRender: () => tui.requestRender(),
|
|
622
|
-
notice: (level, text) => notify(level, text, `
|
|
619
|
+
notice: (level, text) => notify(level, text, `files:${level}`),
|
|
623
620
|
getCwd: () => process.cwd(),
|
|
624
621
|
getSettings: () =>
|
|
625
|
-
deps.getSettings?.().panes.
|
|
622
|
+
deps.getSettings?.().interface.panes.files ?? {
|
|
626
623
|
mode: "companion",
|
|
627
624
|
profile: "managed",
|
|
628
625
|
followCwd: true,
|
|
@@ -643,7 +640,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
643
640
|
// `CLIO_CODER_INTERACTIVE=1` forced the interactive surface on.
|
|
644
641
|
const desktopNotifications = createInteractiveDesktopNotifications({
|
|
645
642
|
write: (data) => terminal.write(data),
|
|
646
|
-
enabled: () => deps.getSettings?.().
|
|
643
|
+
enabled: () => deps.getSettings?.().interface.desktopNotifications ?? false,
|
|
647
644
|
interactiveTty: () => process.stdout.isTTY === true,
|
|
648
645
|
getOpenBatches: () => openDetachedBatchViews(deps.dispatch),
|
|
649
646
|
});
|
|
@@ -685,7 +682,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
685
682
|
appendTranscriptNotice: (level, text) => appendNotice(level, text, busNoticeSink),
|
|
686
683
|
refreshSettingsOverlay: () => overlayLifecycle.refreshSettingsOverlay(),
|
|
687
684
|
onConfigHotReload: (settings) => {
|
|
688
|
-
const mode =
|
|
685
|
+
const mode = settings.interface.smoothStreaming;
|
|
689
686
|
const autoAllowed = processAutoPacingAllowed(shell.hasObservedBackpressure());
|
|
690
687
|
chatRenderer.setSmoothStreamingMode(mode);
|
|
691
688
|
shell.setStreamPacingActive(mode === "on" || (mode === "auto" && autoAllowed));
|
|
@@ -715,6 +712,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
715
712
|
settleVisibleFrame: (reason) => chatRenderer.flushAndCommit(reason),
|
|
716
713
|
...(deps.resources ? { resources: deps.resources } : {}),
|
|
717
714
|
...(deps.extensions ? { extensions: deps.extensions } : {}),
|
|
715
|
+
...(deps.reloadExtensions ? { reloadExtensions: deps.reloadExtensions } : {}),
|
|
718
716
|
...(interopSurface ? { interop: interopSurface } : {}),
|
|
719
717
|
...(deps.agents ? { agents: deps.agents } : {}),
|
|
720
718
|
...(deps.share ? { share: deps.share } : {}),
|
|
@@ -742,6 +740,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
742
740
|
openSideQuestion: (question) => openSideQuestionOverlayState(question),
|
|
743
741
|
startHandoff: (goal) => startHandoffState(goal),
|
|
744
742
|
startFleetRun: (name, vars) => startFleetRunState(name, vars),
|
|
743
|
+
openFleetRuns: () => toggleDispatchBoardOverlay(),
|
|
745
744
|
...(toolRegistry ? { runCouncilDispatch: (args) => dispatchCouncilThroughRegistry(toolRegistry, args) } : {}),
|
|
746
745
|
openContextView: () => openContextViewOverlayState(),
|
|
747
746
|
openTasks: () => openTasksOverlayState(),
|
|
@@ -752,7 +751,22 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
752
751
|
...(deps.panes ? { panes: deps.panes } : {}),
|
|
753
752
|
openModel: () => openModelOverlayState(),
|
|
754
753
|
openModelScope: (ref) => openModelScopeState(ref),
|
|
755
|
-
openSettings: (
|
|
754
|
+
openSettings: (area, group) => {
|
|
755
|
+
if (!area) return openSettingsOverlayState();
|
|
756
|
+
// Compatibility adapter until the seven-area Settings shell replaces
|
|
757
|
+
// the legacy section ids. Slash grammar never exposes these old names.
|
|
758
|
+
if (area === "chat" && group === "model-picker") return openSettingsOverlayState("models", "scope");
|
|
759
|
+
const section = {
|
|
760
|
+
chat: "orchestrator",
|
|
761
|
+
fleet: "fleet",
|
|
762
|
+
targets: "targets",
|
|
763
|
+
context: "compaction",
|
|
764
|
+
safety: "safety",
|
|
765
|
+
interface: "terminal",
|
|
766
|
+
integrations: "advanced",
|
|
767
|
+
} satisfies Record<SettingsAreaId, Parameters<typeof openSettingsOverlayState>[0]>;
|
|
768
|
+
openSettingsOverlayState(section[area]);
|
|
769
|
+
},
|
|
756
770
|
openResume: () => openResumeOverlayState(),
|
|
757
771
|
startNewSession: () => startNewSession(),
|
|
758
772
|
openTree: () => openTreeOverlayState(),
|
|
@@ -870,6 +884,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
870
884
|
openPromptsOverlayState,
|
|
871
885
|
openExtensionsOverlayState,
|
|
872
886
|
openInteropOverlayState,
|
|
887
|
+
toggleDispatchBoardOverlay,
|
|
873
888
|
} = overlayLifecycle;
|
|
874
889
|
|
|
875
890
|
const dispatchSteering = createDispatchSteering({
|
|
@@ -947,7 +962,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
947
962
|
? deps.createMuxBridge({
|
|
948
963
|
bus: deps.bus,
|
|
949
964
|
mux,
|
|
950
|
-
notificationsPolicy: () => deps.getSettings?.().panes.notifications ?? "failures",
|
|
965
|
+
notificationsPolicy: () => deps.getSettings?.().interface.panes.notifications ?? "failures",
|
|
951
966
|
log: (level, message) => {
|
|
952
967
|
if (level === "warning") notify("warning", message, "mux:bridge");
|
|
953
968
|
},
|
|
@@ -959,9 +974,25 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
959
974
|
// tool drive the same controller through the shared operations object.
|
|
960
975
|
const watchPane =
|
|
961
976
|
mux && mux.mode !== "none" && deps.createWatchPane
|
|
962
|
-
? deps.createWatchPane({
|
|
977
|
+
? deps.createWatchPane({
|
|
978
|
+
mux,
|
|
979
|
+
getCwd: () => process.cwd(),
|
|
980
|
+
getWorkersRatio: () => deps.getSettings?.().interface.panes.workers.ratio ?? 0.34,
|
|
981
|
+
})
|
|
963
982
|
: null;
|
|
964
983
|
const detachWatchPane = watchPane ? deps.attachWatchPane?.(watchPane) : undefined;
|
|
984
|
+
// Boot composition per `interface.panes.layout`: `workers` opens the workers
|
|
985
|
+
// dock parked on "no selection"; `cockpit` adds the files dock. Fire and
|
|
986
|
+
// forget, and only against a live pane host: a boot must never fall through
|
|
987
|
+
// to the in-terminal chooser or block the first paint on socket traffic.
|
|
988
|
+
{
|
|
989
|
+
const bootSettings = deps.getSettings?.();
|
|
990
|
+
const layout = bootSettings?.interface.panes.layout ?? "off";
|
|
991
|
+
if (layout !== "off" && mux?.available()) {
|
|
992
|
+
void watchPane?.ensureOpen();
|
|
993
|
+
if (layout === "cockpit" && bootSettings?.interface.panes.files.enabled) void yaziBridge?.open();
|
|
994
|
+
}
|
|
995
|
+
}
|
|
965
996
|
const selectedWatchableRun = (): { runId: string; agentId: string } | null => {
|
|
966
997
|
if (!watchPane) return null;
|
|
967
998
|
const row = dispatchBoard.selectedRow();
|
|
@@ -1036,6 +1067,25 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1036
1067
|
if (deps.onCycleScopedModelBackward?.() === false) announceEmptyScopedSet();
|
|
1037
1068
|
},
|
|
1038
1069
|
backgroundActiveDispatch,
|
|
1070
|
+
toggleFilesPane: () => {
|
|
1071
|
+
const panes = deps.panes;
|
|
1072
|
+
if (!panes) {
|
|
1073
|
+
notify(
|
|
1074
|
+
"info",
|
|
1075
|
+
"the files pane is inactive: this session started without panes. Restart with `clio-coder --with-panes`, or set interface.panes.enabled=auto",
|
|
1076
|
+
"files:info",
|
|
1077
|
+
);
|
|
1078
|
+
return;
|
|
1079
|
+
}
|
|
1080
|
+
void panes.files("toggle").then((result) => {
|
|
1081
|
+
if (result.status === "opened") {
|
|
1082
|
+
if (result.paneId !== null)
|
|
1083
|
+
notify("success", `files pane ${result.existing ? "focused" : "opened"}`, "files:open");
|
|
1084
|
+
} else if (result.status === "closed") notify("info", "files pane closed", "files:close");
|
|
1085
|
+
else if (result.status === "missing-binary") notify("warning", result.detail, "files:missing");
|
|
1086
|
+
else notify("warning", result.reason, "files:refused");
|
|
1087
|
+
});
|
|
1088
|
+
},
|
|
1039
1089
|
},
|
|
1040
1090
|
overlay: overlayLifecycle,
|
|
1041
1091
|
refreshFooter: () => footer.refresh(),
|
|
@@ -1117,6 +1167,11 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1117
1167
|
},
|
|
1118
1168
|
cancelParkedCalls: (reason) => deps.toolRegistry?.cancelParkedCalls(reason),
|
|
1119
1169
|
onShutdown: async () => {
|
|
1170
|
+
// The terminal is already stopped here and the domains have not, so this
|
|
1171
|
+
// is the one moment a plain line about the pane host can both be read
|
|
1172
|
+
// and still see the registry that shutdown is about to forget.
|
|
1173
|
+
const leftBehind = mux && mux.mode !== "none" && mux.available() ? describePanesLeftBehind(mux) : null;
|
|
1174
|
+
if (leftBehind !== null) process.stderr.write(`${leftBehind}\n`);
|
|
1120
1175
|
try {
|
|
1121
1176
|
if (dumpInputWedgeOnTerminate) process.off("SIGTERM", dumpInputWedgeOnTerminate);
|
|
1122
1177
|
await deps.onShutdown();
|
|
@@ -218,7 +218,7 @@ export function createInteractiveEventProjection(deps: InteractiveEventProjectio
|
|
|
218
218
|
|
|
219
219
|
remainingUnsubscribers.push(
|
|
220
220
|
deps.chat.onEvent((event) => {
|
|
221
|
-
const showProgress = deps.getSettings?.().
|
|
221
|
+
const showProgress = deps.getSettings?.().interface.terminalProgress ?? false;
|
|
222
222
|
if (event.type === "agent_start" && showProgress) deps.startTerminalProgress();
|
|
223
223
|
else if (event.type === "agent_end") {
|
|
224
224
|
deps.stopTerminalProgress();
|
|
@@ -21,6 +21,7 @@ export interface InteractiveInputKeyActionDeps {
|
|
|
21
21
|
requestShutdown: () => void;
|
|
22
22
|
toggleStatus: () => void;
|
|
23
23
|
toggleDispatchBoard: () => void;
|
|
24
|
+
toggleFilesPane: () => void;
|
|
24
25
|
openTasks: () => void;
|
|
25
26
|
openDecisions: () => void;
|
|
26
27
|
backgroundDispatch: () => void;
|
|
@@ -54,6 +55,8 @@ export interface InteractiveInputRuntimeDeps {
|
|
|
54
55
|
cycleScopedModelBackward(): void;
|
|
55
56
|
/** Convert the newest attached dispatch into a detached batch and notice the outcome. */
|
|
56
57
|
backgroundActiveDispatch(): void;
|
|
58
|
+
/** Toggle the files pane; the application decides what "inactive" says. */
|
|
59
|
+
toggleFilesPane(): void;
|
|
57
60
|
};
|
|
58
61
|
overlay: {
|
|
59
62
|
getState(): OverlayState;
|
|
@@ -154,6 +157,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
154
157
|
openTasks: deps.overlay.openTasksOverlayState,
|
|
155
158
|
openDecisions: deps.overlay.openDecisionsOverlayState,
|
|
156
159
|
backgroundDispatch: deps.actions.backgroundActiveDispatch,
|
|
160
|
+
toggleFilesPane: deps.actions.toggleFilesPane,
|
|
157
161
|
openModelSelector: deps.overlay.openModelOverlayState,
|
|
158
162
|
openTree: deps.overlay.openTreeOverlayState,
|
|
159
163
|
cycleScopedModelForward: () => {
|
|
@@ -185,7 +189,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
185
189
|
restoreQueuedFollowUps: deps.editorSubmit.restoreQueuedFollowUpsToEditor,
|
|
186
190
|
});
|
|
187
191
|
const leaderKeys = createLeaderKeyController({
|
|
188
|
-
matchesLeader: (input) => deps.keybindings.matches(input, "clio.leader"),
|
|
192
|
+
matchesLeader: (input) => deps.keybindings.matches(input, "clio-coder.leader"),
|
|
189
193
|
leaderTargets: () => deps.keybindings.leaderTargets(),
|
|
190
194
|
dispatchAction: (id) => deps.dispatchAction(id, keyActionDeps()),
|
|
191
195
|
isRelease: isKeyRelease,
|
|
@@ -302,7 +306,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
302
306
|
deps.reportShutdownFailure ??
|
|
303
307
|
((step, error) => {
|
|
304
308
|
process.stderr.write(
|
|
305
|
-
`[clio:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
309
|
+
`[clio-coder:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
306
310
|
);
|
|
307
311
|
}),
|
|
308
312
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { performance } from "node:perf_hooks";
|
|
2
2
|
import type { ClioSettings } from "../core/config.js";
|
|
3
|
+
import { DEFAULT_SETTINGS } from "../core/defaults.js";
|
|
3
4
|
import type { SafeEventBus } from "../core/event-bus.js";
|
|
4
5
|
import type { ContextState } from "../domains/context/index.js";
|
|
5
6
|
import type { DispatchContract } from "../domains/dispatch/contract.js";
|
|
@@ -36,7 +37,7 @@ import { createSlashCommandAutocompleteProvider } from "./slash-autocomplete.js"
|
|
|
36
37
|
import { parseSlashCommand, type RunIo } from "./slash-commands.js";
|
|
37
38
|
import { createStatusController, type StatusController, type TurnSummary } from "./status/index.js";
|
|
38
39
|
import type { SmoothStreamingMode } from "./stream-pacer.js";
|
|
39
|
-
import { processAutoPacingAllowed
|
|
40
|
+
import { processAutoPacingAllowed } from "./stream-pacing-policy.js";
|
|
40
41
|
import { formatTargetLabel } from "./theme/index.js";
|
|
41
42
|
import { createWelcomeDashboard, type WelcomeDashboardComponent } from "./welcome-dashboard.js";
|
|
42
43
|
import { readWorkerReceiptFacts } from "./worker-receipts.js";
|
|
@@ -209,7 +210,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
209
210
|
const getCwd = deps.getCwd ?? (() => process.cwd());
|
|
210
211
|
const now = deps.now ?? performance.now.bind(performance);
|
|
211
212
|
const requestRender = (): void => deps.tui.requestRender();
|
|
212
|
-
const settings = deps.getSettings?.() ?? (
|
|
213
|
+
const settings = deps.getSettings?.() ?? structuredClone(DEFAULT_SETTINGS);
|
|
213
214
|
const keybindings = deps.keybindings ?? factories.createKeybindings(settings);
|
|
214
215
|
const { getExtensionStats, getLiveWorkspaceSnapshot, getWorkspaceSnapshot, refreshLiveWorkspaceGit } =
|
|
215
216
|
deps.workspaceFacts;
|
|
@@ -229,15 +230,15 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
229
230
|
const renderTrace = getActiveRenderTrace();
|
|
230
231
|
const chatPanel = factories.createChatPanel({
|
|
231
232
|
getToolExpandKey: () => {
|
|
232
|
-
const first = keybindings.getKeys("clio.tool.expand")[0];
|
|
233
|
+
const first = keybindings.getKeys("clio-coder.tool.expand")[0];
|
|
233
234
|
return typeof first === "string" && first.length > 0 ? first : undefined;
|
|
234
235
|
},
|
|
235
|
-
getOutputVerbosity: () => deps.getSettings?.().
|
|
236
|
+
getOutputVerbosity: () => deps.getSettings?.().interface.outputDetail ?? "default",
|
|
236
237
|
...(renderTrace ? { onRenderMetrics: (metrics) => renderTrace.recordPanelRender(metrics) } : {}),
|
|
237
238
|
});
|
|
238
239
|
const followUpQueuePanel = factories.createFollowUpQueuePanel({
|
|
239
240
|
getDequeueKey: () => {
|
|
240
|
-
const first = keybindings.getKeys("clio.message.dequeue")[0];
|
|
241
|
+
const first = keybindings.getKeys("clio-coder.message.dequeue")[0];
|
|
241
242
|
return typeof first === "string" && first.length > 0 ? first : undefined;
|
|
242
243
|
},
|
|
243
244
|
});
|
|
@@ -320,8 +321,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
320
321
|
outputTokens,
|
|
321
322
|
durationMs,
|
|
322
323
|
ttftMs: Math.max(0, liveThroughput.firstDeltaAt - liveThroughput.startedAt),
|
|
323
|
-
providerId: settings?.
|
|
324
|
-
modelId: settings?.
|
|
324
|
+
providerId: settings?.chat?.target ?? "",
|
|
325
|
+
modelId: settings?.chat?.model ?? "",
|
|
325
326
|
recordedAt: Date.now(),
|
|
326
327
|
};
|
|
327
328
|
};
|
|
@@ -337,7 +338,11 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
337
338
|
};
|
|
338
339
|
const dismissContextBootstrapNotices = (): void => {
|
|
339
340
|
for (const notice of notifications.list()) {
|
|
340
|
-
if (
|
|
341
|
+
if (
|
|
342
|
+
/^(?:clio-coder|clio): (No CLIO(?:-CODER)?\.md detected|malformed CLIO(?:-CODER)?\.md ignored|Imported agent context changed)/.test(
|
|
343
|
+
notice.text,
|
|
344
|
+
)
|
|
345
|
+
) {
|
|
341
346
|
notifications.dismiss(notice.id);
|
|
342
347
|
}
|
|
343
348
|
}
|
|
@@ -390,7 +395,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
390
395
|
},
|
|
391
396
|
getLastTurnSummary: () => lastTurnSummary,
|
|
392
397
|
getNotifications: () => notifications.list(),
|
|
393
|
-
dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio.notifications.dismiss")[0]),
|
|
398
|
+
dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio-coder.notifications.dismiss")[0]),
|
|
394
399
|
};
|
|
395
400
|
footer = factories.buildFooter(footerDeps);
|
|
396
401
|
const unsubscribeObservability = deps.observability.subscribe((snapshot) => {
|
|
@@ -403,18 +408,18 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
403
408
|
getModelLabel: () => {
|
|
404
409
|
const current = deps.getSettings?.();
|
|
405
410
|
// The rail is the narrowest of the three, so it drops the spaces.
|
|
406
|
-
return formatTargetLabel(current?.
|
|
411
|
+
return formatTargetLabel(current?.chat?.target, current?.chat?.model, { separator: "·" });
|
|
407
412
|
},
|
|
408
413
|
getThinkingLabel: () => {
|
|
409
414
|
const current = deps.getSettings?.();
|
|
410
415
|
return (
|
|
411
416
|
resolveModelRuntimeCapabilitiesForProviders(
|
|
412
417
|
deps.providers,
|
|
413
|
-
current?.
|
|
414
|
-
current?.
|
|
415
|
-
current?.
|
|
418
|
+
current?.chat?.target,
|
|
419
|
+
current?.chat?.model,
|
|
420
|
+
current?.chat?.thinkingLevel ?? "off",
|
|
416
421
|
)?.thinking.display ??
|
|
417
|
-
current?.
|
|
422
|
+
current?.chat?.thinkingLevel ??
|
|
418
423
|
"off"
|
|
419
424
|
);
|
|
420
425
|
},
|
|
@@ -447,7 +452,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
447
452
|
? {
|
|
448
453
|
streamIngress: deps.resolveStreamIngress,
|
|
449
454
|
getSmoothStreamingMode: () => {
|
|
450
|
-
const mode =
|
|
455
|
+
const mode = deps.getSettings?.().interface.smoothStreaming ?? "off";
|
|
451
456
|
const autoAllowed = processAutoPacingAllowed(deps.hasObservedBackpressure?.() ?? false);
|
|
452
457
|
deps.onSmoothStreamingMode?.(mode, mode === "on" || (mode === "auto" && autoAllowed));
|
|
453
458
|
return mode;
|
|
@@ -487,8 +492,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
487
492
|
footer: footer.view,
|
|
488
493
|
},
|
|
489
494
|
{
|
|
490
|
-
mode: settings.
|
|
491
|
-
fullscreenScrollbar: settings.
|
|
495
|
+
mode: settings.interface?.mode ?? "regular",
|
|
496
|
+
fullscreenScrollbar: settings.interface?.fullscreenScrollbar ?? "auto",
|
|
492
497
|
},
|
|
493
498
|
);
|
|
494
499
|
deps.mount?.(root, editor);
|
|
@@ -70,7 +70,7 @@ const KEEP_ALIVE_INTERVAL_MS = 1 << 30;
|
|
|
70
70
|
* before the keep-alive anchor. Keeping that seam explicit prevents an
|
|
71
71
|
* extraction from silently changing initialization order.
|
|
72
72
|
*/
|
|
73
|
-
|
|
73
|
+
function createInteractiveShell<TTerminal extends Terminal, TTui extends InteractiveShellTui>(
|
|
74
74
|
deps: InteractiveShellDeps<TTerminal, TTui>,
|
|
75
75
|
): InteractiveShell<TTerminal, TTui> {
|
|
76
76
|
const terminal = deps.createTerminal();
|
|
@@ -175,7 +175,7 @@ export function getActiveRenderTrace(): RenderTrace | null {
|
|
|
175
175
|
* model state. After the finite pre-render bound, exactly one caller-supplied
|
|
176
176
|
* final frame is still issued; a post-render drain wait is likewise bounded.
|
|
177
177
|
*/
|
|
178
|
-
|
|
178
|
+
async function settleLatestInteractiveFrame(
|
|
179
179
|
gate: Pick<StdoutBackpressureGate, "whenWritable"> | null,
|
|
180
180
|
timeoutMs: number,
|
|
181
181
|
renderFrame: () => Promise<number>,
|