@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
|
@@ -2,8 +2,8 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
PANES_PRESETS,
|
|
4
4
|
PANES_PRESET_IDS,
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
resolvePanesPresetId
|
|
6
|
+
} from "./chunk-35MSIRKH.js";
|
|
7
7
|
import {
|
|
8
8
|
AdmissionCanceledError,
|
|
9
9
|
WORKER_OUTPUT_MAX_BYTES,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-T56WDKA5.js";
|
|
12
12
|
import {
|
|
13
13
|
parseSkillCommand
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-O3YUNJZ2.js";
|
|
15
15
|
import {
|
|
16
16
|
TOOL_PROFILE_NAMES,
|
|
17
17
|
isToolProfileName
|
|
@@ -25,16 +25,16 @@ import {
|
|
|
25
25
|
import {
|
|
26
26
|
parseCouncilReport,
|
|
27
27
|
parseOracleResult
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-PGF63K6I.js";
|
|
29
29
|
import {
|
|
30
30
|
resolveModelReference
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-BYMNWQ7O.js";
|
|
32
32
|
import {
|
|
33
33
|
BusChannels
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-F4EKGO4N.js";
|
|
35
35
|
import {
|
|
36
36
|
THINKING_LEVELS
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-UXCU4E3T.js";
|
|
38
38
|
import {
|
|
39
39
|
init_esm_shims
|
|
40
40
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -178,24 +178,35 @@ function isLibraryTab(value) {
|
|
|
178
178
|
return LIBRARY_TABS.some((tab) => tab.id === value);
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
// src/interactive/overlays/settings-sections.ts
|
|
182
|
-
init_esm_shims();
|
|
183
|
-
var SETTINGS_SECTIONS = [
|
|
184
|
-
{ id: "safety", label: "Autonomy & Safety", group: "CORE" },
|
|
185
|
-
{ id: "orchestrator", label: "Orchestrator", group: "CORE" },
|
|
186
|
-
{ id: "fleet", label: "Fleet", group: "ROUTING" },
|
|
187
|
-
{ id: "targets", label: "Targets", group: "ROUTING" },
|
|
188
|
-
{ id: "models", label: "Models", group: "ROUTING" },
|
|
189
|
-
{ id: "budget", label: "Budget", group: "RUNTIME" },
|
|
190
|
-
{ id: "compaction", label: "Compaction", group: "RUNTIME" },
|
|
191
|
-
{ id: "retry", label: "Retry", group: "RUNTIME" },
|
|
192
|
-
{ id: "terminal", label: "Terminal", group: "EXPERIENCE" },
|
|
193
|
-
{ id: "watchdog", label: "Watchdog", group: "EXPERIENCE" },
|
|
194
|
-
{ id: "advanced", label: "Advanced", group: "EXPERIENCE" }
|
|
195
|
-
];
|
|
196
|
-
|
|
197
181
|
// src/interactive/slash-spec.ts
|
|
198
182
|
init_esm_shims();
|
|
183
|
+
var COMPLETION_SLOT_NAMES = [
|
|
184
|
+
"agents",
|
|
185
|
+
"agent-profiles",
|
|
186
|
+
"worker-runtimes",
|
|
187
|
+
"targets",
|
|
188
|
+
"models",
|
|
189
|
+
"capabilities",
|
|
190
|
+
"external-agents",
|
|
191
|
+
"rosters",
|
|
192
|
+
"shareable-runs",
|
|
193
|
+
"skills",
|
|
194
|
+
"fleet-contracts",
|
|
195
|
+
"fleet-vars",
|
|
196
|
+
"fleet-var-values",
|
|
197
|
+
"tasks",
|
|
198
|
+
"context-refs",
|
|
199
|
+
"receipts",
|
|
200
|
+
"pane-runs-agents",
|
|
201
|
+
"pane-presets",
|
|
202
|
+
"pane-targets",
|
|
203
|
+
"library-tabs",
|
|
204
|
+
"thinking-levels",
|
|
205
|
+
"settings-areas",
|
|
206
|
+
"settings-groups",
|
|
207
|
+
"help-queries",
|
|
208
|
+
"paths"
|
|
209
|
+
];
|
|
199
210
|
function getFlagValuePlaceholder(flag) {
|
|
200
211
|
if (flag.valueName) return flag.valueName;
|
|
201
212
|
if (flag.values && flag.values.length > 0) {
|
|
@@ -426,6 +437,54 @@ function parseArgs(spec, argsLine) {
|
|
|
426
437
|
...rest !== void 0 ? { rest } : {}
|
|
427
438
|
};
|
|
428
439
|
}
|
|
440
|
+
function completionTokens(text) {
|
|
441
|
+
const tokens = [];
|
|
442
|
+
let index = 0;
|
|
443
|
+
while (index < text.length) {
|
|
444
|
+
while (index < text.length && /\s/.test(text[index] ?? "")) index++;
|
|
445
|
+
if (index >= text.length) break;
|
|
446
|
+
const start = index;
|
|
447
|
+
let quote;
|
|
448
|
+
if (text[index] === '"' || text[index] === "'") {
|
|
449
|
+
quote = text[index];
|
|
450
|
+
index++;
|
|
451
|
+
}
|
|
452
|
+
const contentStart = index;
|
|
453
|
+
let value = "";
|
|
454
|
+
while (index < text.length) {
|
|
455
|
+
const char = text[index] ?? "";
|
|
456
|
+
if (quote) {
|
|
457
|
+
if (char === quote) break;
|
|
458
|
+
} else if (/\s/.test(char)) {
|
|
459
|
+
break;
|
|
460
|
+
} else if (char === '"' || char === "'") {
|
|
461
|
+
const embedded = char;
|
|
462
|
+
index++;
|
|
463
|
+
while (index < text.length && text[index] !== embedded) value += text[index++] ?? "";
|
|
464
|
+
if (text[index] === embedded) index++;
|
|
465
|
+
continue;
|
|
466
|
+
}
|
|
467
|
+
value += char;
|
|
468
|
+
index++;
|
|
469
|
+
}
|
|
470
|
+
const contentEnd = index;
|
|
471
|
+
if (quote && text[index] === quote) index++;
|
|
472
|
+
tokens.push({ value, start, end: index, contentStart, contentEnd, ...quote ? { quote } : {} });
|
|
473
|
+
}
|
|
474
|
+
return tokens;
|
|
475
|
+
}
|
|
476
|
+
function tokenAtCursor(text, cursor) {
|
|
477
|
+
const safeCursor = Math.max(0, Math.min(cursor, text.length));
|
|
478
|
+
const tokens = completionTokens(text);
|
|
479
|
+
const containing = tokens.find((token) => safeCursor >= token.start && safeCursor <= token.end);
|
|
480
|
+
if (containing) {
|
|
481
|
+
return { current: containing, completed: tokens.filter((token) => token.end <= containing.start) };
|
|
482
|
+
}
|
|
483
|
+
return {
|
|
484
|
+
current: { value: "", start: safeCursor, end: safeCursor, contentStart: safeCursor, contentEnd: safeCursor },
|
|
485
|
+
completed: tokens.filter((token) => token.end <= safeCursor)
|
|
486
|
+
};
|
|
487
|
+
}
|
|
429
488
|
function walkCompletedTokens(spec, tokens) {
|
|
430
489
|
const flagSpecs = spec.flags ?? [];
|
|
431
490
|
const positionalSpecs = spec.positionals ?? [];
|
|
@@ -453,28 +512,40 @@ function walkCompletedTokens(spec, tokens) {
|
|
|
453
512
|
}
|
|
454
513
|
function flagCompletions(spec, walk, current) {
|
|
455
514
|
const available = (spec.flags ?? []).filter((flag) => flag.repeatable === true || !walk.usedFlags.has(flag.name));
|
|
456
|
-
const
|
|
515
|
+
const lower = current.toLowerCase();
|
|
516
|
+
const rows = available.filter((flag) => flag.name.toLowerCase().startsWith(lower)).map((flag) => ({ flag, name: flag.name }));
|
|
457
517
|
return rows.map(({ flag, name }) => ({
|
|
458
518
|
token: name,
|
|
459
|
-
...flag.takesValue ? { hint: `<${getFlagValuePlaceholder(flag)}>` } : {}
|
|
519
|
+
...flag.takesValue ? { hint: `<${getFlagValuePlaceholder(flag)}>` } : {},
|
|
520
|
+
hasNextSlot: flag.takesValue === true
|
|
460
521
|
}));
|
|
461
522
|
}
|
|
462
|
-
function completeArgs(spec, argumentText) {
|
|
463
|
-
const
|
|
464
|
-
const
|
|
465
|
-
const
|
|
466
|
-
const
|
|
523
|
+
function completeArgs(spec, argumentText, cursor = argumentText.length) {
|
|
524
|
+
const { current: currentToken, completed: completedTokens } = tokenAtCursor(argumentText, cursor);
|
|
525
|
+
const current = currentToken.value.slice(0, Math.max(0, cursor - currentToken.contentStart));
|
|
526
|
+
const completed = completedTokens.map((token) => token.value);
|
|
527
|
+
const range = {
|
|
528
|
+
tokenStart: currentToken.contentStart,
|
|
529
|
+
tokenEnd: currentToken.contentEnd,
|
|
530
|
+
...currentToken.quote ? { quote: currentToken.quote } : {}
|
|
531
|
+
};
|
|
467
532
|
const completions = [];
|
|
468
533
|
let active = spec;
|
|
469
534
|
let walkTokens = completed;
|
|
535
|
+
let submenu;
|
|
470
536
|
if (spec.subcommands) {
|
|
471
537
|
const first = completed[0];
|
|
472
538
|
if (first === void 0) {
|
|
473
539
|
for (const [name, subSpec] of Object.entries(spec.subcommands)) {
|
|
474
|
-
if (!name.startsWith(current)) continue;
|
|
540
|
+
if (!name.toLowerCase().startsWith(current.toLowerCase())) continue;
|
|
475
541
|
const hint = renderArgsSpec(subSpec);
|
|
476
|
-
completions.push({
|
|
542
|
+
completions.push({
|
|
543
|
+
token: name,
|
|
544
|
+
...hint.length > 0 ? { hint } : {},
|
|
545
|
+
hasNextSlot: hint.length > 0
|
|
546
|
+
});
|
|
477
547
|
}
|
|
548
|
+
submenu = { parent: "", canGoBack: true };
|
|
478
549
|
} else if (spec.subcommands[first]) {
|
|
479
550
|
active = spec.subcommands[first];
|
|
480
551
|
walkTokens = completed.slice(1);
|
|
@@ -482,20 +553,36 @@ function completeArgs(spec, argumentText) {
|
|
|
482
553
|
}
|
|
483
554
|
const walk = walkCompletedTokens(active, walkTokens);
|
|
484
555
|
if (walk.restBegun) {
|
|
485
|
-
return completions.length > 0 ? { completions,
|
|
556
|
+
return completions.length > 0 ? { completions, ...range, ...submenu ? { submenu } : {} } : null;
|
|
486
557
|
}
|
|
487
558
|
if (walk.awaitingValue) {
|
|
488
559
|
for (const value of walk.awaitingValue.values ?? []) {
|
|
489
|
-
if (value.startsWith(current)) completions.push({ token: value });
|
|
560
|
+
if (value.toLowerCase().startsWith(current.toLowerCase())) completions.push({ token: value, hasNextSlot: true });
|
|
561
|
+
}
|
|
562
|
+
if (walk.awaitingValue.completionSlot) {
|
|
563
|
+
completions.push({ token: current, completionSlot: walk.awaitingValue.completionSlot, hasNextSlot: true });
|
|
490
564
|
}
|
|
491
|
-
return completions.length > 0 ? { completions,
|
|
565
|
+
return completions.length > 0 ? { completions, ...range, ...submenu ? { submenu } : {} } : null;
|
|
492
566
|
}
|
|
493
567
|
const atRest = (active.positionals ?? [])[walk.positionalIndex]?.rest === true;
|
|
568
|
+
const positional = (active.positionals ?? [])[walk.positionalIndex];
|
|
569
|
+
for (const value of positional?.values ?? []) {
|
|
570
|
+
if (value.toLowerCase().startsWith(current.toLowerCase())) {
|
|
571
|
+
completions.push({ token: value, hasNextSlot: walk.positionalIndex + 1 < (active.positionals?.length ?? 0) });
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
if (positional?.completionSlot && !current.startsWith("-")) {
|
|
575
|
+
completions.push({
|
|
576
|
+
token: current,
|
|
577
|
+
completionSlot: positional.completionSlot,
|
|
578
|
+
hasNextSlot: walk.positionalIndex + 1 < (active.positionals?.length ?? 0)
|
|
579
|
+
});
|
|
580
|
+
}
|
|
494
581
|
const flagsParseable = !atRest || active.parseFlagsBeforeRest === true;
|
|
495
582
|
if (flagsParseable && (current.length === 0 || current.startsWith("-"))) {
|
|
496
583
|
completions.push(...flagCompletions(active, walk, current));
|
|
497
584
|
}
|
|
498
|
-
return completions.length > 0 ? { completions,
|
|
585
|
+
return completions.length > 0 ? { completions, ...range, ...submenu ? { submenu } : {} } : null;
|
|
499
586
|
}
|
|
500
587
|
function matchFromSpec(entry, trimmed) {
|
|
501
588
|
const matchedPrefix = `/${entry.name}`;
|
|
@@ -547,7 +634,7 @@ function isThinkingEvent(event) {
|
|
|
547
634
|
return assistantEvent?.type === "thinking_delta";
|
|
548
635
|
}
|
|
549
636
|
function toolEventAction(event) {
|
|
550
|
-
if (event.type !== "
|
|
637
|
+
if (event.type !== "clio_coder_tool_start" && event.type !== "clio_coder_tool_finish") return null;
|
|
551
638
|
const payload = isRecord(event.payload) ? event.payload : null;
|
|
552
639
|
const tool = nonEmptyString(payload?.tool);
|
|
553
640
|
if (tool === void 0) return null;
|
|
@@ -708,7 +795,7 @@ function createWorkerProgressFold() {
|
|
|
708
795
|
betweenAssistantMessages = true;
|
|
709
796
|
}
|
|
710
797
|
const action = toolEventAction(event);
|
|
711
|
-
if (action !== null && event.type === "
|
|
798
|
+
if (action !== null && event.type === "clio_coder_tool_start") {
|
|
712
799
|
if (action.toolCallId !== void 0) {
|
|
713
800
|
const duplicate = pendingActionsById.get(action.toolCallId);
|
|
714
801
|
if (duplicate !== void 0) removePendingAction(duplicate);
|
|
@@ -720,7 +807,7 @@ function createWorkerProgressFold() {
|
|
|
720
807
|
touch();
|
|
721
808
|
setPhase("tool");
|
|
722
809
|
changed = true;
|
|
723
|
-
} else if (action !== null && event.type === "
|
|
810
|
+
} else if (action !== null && event.type === "clio_coder_tool_finish") {
|
|
724
811
|
const finished = (action.toolCallId !== void 0 ? pendingActionsById.get(action.toolCallId) : void 0) ?? lastPendingActionForTool(action.tool) ?? action;
|
|
725
812
|
removePendingAction(finished);
|
|
726
813
|
currentAction = pendingActions[pendingActions.length - 1] ?? null;
|
|
@@ -1032,6 +1119,15 @@ function selectWorkerRunToShare(entries, id) {
|
|
|
1032
1119
|
}
|
|
1033
1120
|
|
|
1034
1121
|
// src/interactive/slash-commands.ts
|
|
1122
|
+
var SETTINGS_AREA_IDS = [
|
|
1123
|
+
"chat",
|
|
1124
|
+
"fleet",
|
|
1125
|
+
"targets",
|
|
1126
|
+
"context",
|
|
1127
|
+
"safety",
|
|
1128
|
+
"interface",
|
|
1129
|
+
"integrations"
|
|
1130
|
+
];
|
|
1035
1131
|
function shareReceipt(agentId, receipt, deps) {
|
|
1036
1132
|
if (!deps.submitOperatorNote) {
|
|
1037
1133
|
deps.notice("error", "--share is not wired in this session; the result stayed local");
|
|
@@ -1247,13 +1343,13 @@ function formatUserTaskHandoff(task) {
|
|
|
1247
1343
|
const note = task.note ? ` ${task.note}.` : "";
|
|
1248
1344
|
return `Operator task ${task.id}: ${task.title}.${note} Pick it up with tasks action="pick" id="${task.id}" and work it when appropriate.`;
|
|
1249
1345
|
}
|
|
1250
|
-
var SLASH_COMMAND_GROUPS = ["
|
|
1346
|
+
var SLASH_COMMAND_GROUPS = ["Work", "Inspect", "Configure", "Session"];
|
|
1251
1347
|
var RUN_THINKING_LEVELS = THINKING_LEVELS;
|
|
1252
1348
|
function isRunThinkingLevel(value) {
|
|
1253
1349
|
return RUN_THINKING_LEVELS.some((level) => level === value);
|
|
1254
1350
|
}
|
|
1255
|
-
function
|
|
1256
|
-
return
|
|
1351
|
+
function isSettingsAreaId(value) {
|
|
1352
|
+
return SETTINGS_AREA_IDS.some((area) => area === value);
|
|
1257
1353
|
}
|
|
1258
1354
|
var COMPACT_POSITIONALS = [
|
|
1259
1355
|
{ name: "instructions", required: false, rest: true }
|
|
@@ -1262,17 +1358,6 @@ var RECALL_POSITIONALS = [{ name: "ref", required: true }];
|
|
|
1262
1358
|
function fromArgsOrUsage(name, command) {
|
|
1263
1359
|
return (parsed) => parsed.error ? { kind: "usage-error", command: name, reason: parsed.error } : command;
|
|
1264
1360
|
}
|
|
1265
|
-
function settingsDeepLink(name, section, description, rowId) {
|
|
1266
|
-
return {
|
|
1267
|
-
name,
|
|
1268
|
-
description,
|
|
1269
|
-
group: "Configure",
|
|
1270
|
-
kinds: [],
|
|
1271
|
-
args: {},
|
|
1272
|
-
fromArgs: fromArgsOrUsage(name, { kind: "settings", section, ...rowId ? { rowId } : {} }),
|
|
1273
|
-
handle: () => void 0
|
|
1274
|
-
};
|
|
1275
|
-
}
|
|
1276
1361
|
function usageNotice(entry, subcommand) {
|
|
1277
1362
|
return usageLine(entry, subcommand).trim();
|
|
1278
1363
|
}
|
|
@@ -1282,10 +1367,15 @@ function formatPanesStatus(status) {
|
|
|
1282
1367
|
`panes: mode=${status.mode} ${status.available ? "available" : "unavailable"} (${server})`,
|
|
1283
1368
|
` ${status.reason}`,
|
|
1284
1369
|
...status.socketPath ? [` socket ${status.socketPath}`] : [],
|
|
1285
|
-
` settings: enabled=${status.settings.enabled} notifications=${status.settings.notifications} journal=${status.settings.journal}`,
|
|
1370
|
+
` settings: enabled=${status.settings.enabled} notifications=${status.settings.notifications} layout=${status.settings.layout} journal=${status.settings.journal}`,
|
|
1286
1371
|
` files: enabled=${status.settings.yazi.enabled} mode=${status.settings.yazi.mode} profile=${status.settings.yazi.profile} followCwd=${status.settings.yazi.followCwd}`,
|
|
1287
1372
|
` file pane: mode=${status.yazi.mode} pane=${status.yazi.paneId ?? "none"} cwd=${status.yazi.paneCwd ?? "unknown"} lastLine=${status.yazi.lastLineAt === null ? "never" : new Date(status.yazi.lastLineAt).toISOString()} dropped=${status.yazi.droppedLines}`
|
|
1288
1373
|
];
|
|
1374
|
+
if (status.docks.length > 0) {
|
|
1375
|
+
lines.push(
|
|
1376
|
+
` docks: ${status.docks.map((dock) => `${dock.slot}=${dock.paneId} @${(dock.targetShare * 100).toFixed(0)}%`).join(", ")}`
|
|
1377
|
+
);
|
|
1378
|
+
}
|
|
1289
1379
|
if (status.panes.length === 0) {
|
|
1290
1380
|
lines.push(" no Clio-owned panes");
|
|
1291
1381
|
} else {
|
|
@@ -1303,7 +1393,7 @@ var BUILTIN_SLASH_COMMANDS = [
|
|
|
1303
1393
|
{
|
|
1304
1394
|
name: "quit",
|
|
1305
1395
|
description: "Exit Clio Coder",
|
|
1306
|
-
group: "
|
|
1396
|
+
group: "Session",
|
|
1307
1397
|
kinds: ["quit"],
|
|
1308
1398
|
args: {},
|
|
1309
1399
|
fromArgs: fromArgsOrUsage("quit", { kind: "quit" }),
|
|
@@ -1329,7 +1419,7 @@ var BUILTIN_SLASH_COMMANDS = [
|
|
|
1329
1419
|
{
|
|
1330
1420
|
name: "skill",
|
|
1331
1421
|
description: "Open the Skills Hub or invoke a skill",
|
|
1332
|
-
group: "
|
|
1422
|
+
group: "Work",
|
|
1333
1423
|
kinds: ["skill-selector", "skill-invocation"],
|
|
1334
1424
|
args: {
|
|
1335
1425
|
positionals: [
|
|
@@ -1356,65 +1446,81 @@ var BUILTIN_SLASH_COMMANDS = [
|
|
|
1356
1446
|
}
|
|
1357
1447
|
},
|
|
1358
1448
|
{
|
|
1359
|
-
name: "
|
|
1360
|
-
description: "
|
|
1361
|
-
group: "
|
|
1362
|
-
kinds: ["
|
|
1363
|
-
|
|
1449
|
+
name: "resources",
|
|
1450
|
+
description: "Browse skills, prompts, libraries, and extensions",
|
|
1451
|
+
group: "Inspect",
|
|
1452
|
+
kinds: ["resources"],
|
|
1453
|
+
subcommandDescriptions: {
|
|
1454
|
+
skills: "Browse installed skills",
|
|
1455
|
+
prompts: "Browse prompt templates",
|
|
1456
|
+
library: "Browse resource libraries",
|
|
1457
|
+
extensions: "Browse installed extensions; `reload` commits a new extension generation"
|
|
1458
|
+
},
|
|
1459
|
+
args: {
|
|
1460
|
+
subcommands: {
|
|
1461
|
+
skills: {},
|
|
1462
|
+
prompts: {},
|
|
1463
|
+
library: { positionals: [{ name: "kind", required: false }] },
|
|
1464
|
+
extensions: { positionals: [{ name: "action", required: false, values: ["reload"] }] }
|
|
1465
|
+
}
|
|
1466
|
+
},
|
|
1364
1467
|
fromArgs(parsed) {
|
|
1365
|
-
if (parsed.error) return { kind: "usage-error", command: "
|
|
1468
|
+
if (parsed.error) return { kind: "usage-error", command: "resources", reason: parsed.error };
|
|
1469
|
+
if (parsed.subcommand === void 0 || parsed.subcommand === "skills")
|
|
1470
|
+
return { kind: "resources", family: "skills" };
|
|
1471
|
+
if (parsed.subcommand === "prompts") return { kind: "resources", family: "prompts" };
|
|
1472
|
+
if (parsed.subcommand === "extensions") {
|
|
1473
|
+
const action = parsed.positionals[0];
|
|
1474
|
+
if (action === void 0) return { kind: "resources", family: "extensions" };
|
|
1475
|
+
if (action === "reload") return { kind: "resources", family: "extensions", action: "reload" };
|
|
1476
|
+
return { kind: "usage-error", command: "resources", reason: `Unknown action: ${action} (one of reload)` };
|
|
1477
|
+
}
|
|
1366
1478
|
const tab = parsed.positionals[0];
|
|
1367
|
-
if (tab === void 0) return { kind: "
|
|
1479
|
+
if (tab === void 0) return { kind: "resources" };
|
|
1368
1480
|
if (!isLibraryTab(tab)) {
|
|
1369
1481
|
const known = LIBRARY_TABS.map((entry) => entry.id).join(", ");
|
|
1370
|
-
return { kind: "usage-error", command: "
|
|
1482
|
+
return { kind: "usage-error", command: "resources", reason: `Unknown kind: ${tab} (one of ${known})` };
|
|
1371
1483
|
}
|
|
1372
|
-
return { kind: "
|
|
1484
|
+
return { kind: "resources", tab };
|
|
1373
1485
|
},
|
|
1374
1486
|
handle(command, ctx) {
|
|
1375
|
-
if (command.kind
|
|
1487
|
+
if (command.kind !== "resources") return;
|
|
1488
|
+
if (command.family === "prompts") ctx.openPrompts();
|
|
1489
|
+
else if (command.family === "extensions") {
|
|
1490
|
+
if (command.action === "reload") reloadExtensionsCommand(ctx);
|
|
1491
|
+
else ctx.openExtensions();
|
|
1492
|
+
} else ctx.openSkillsHub?.(command.tab);
|
|
1376
1493
|
}
|
|
1377
1494
|
},
|
|
1378
1495
|
{
|
|
1379
|
-
name: "
|
|
1380
|
-
description: "
|
|
1381
|
-
group: "
|
|
1382
|
-
kinds: ["
|
|
1383
|
-
args: {},
|
|
1384
|
-
fromArgs
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
handle(
|
|
1397
|
-
|
|
1398
|
-
}
|
|
1399
|
-
},
|
|
1400
|
-
{
|
|
1401
|
-
name: "interop",
|
|
1402
|
-
description: "Review other coding agents detected on this machine",
|
|
1403
|
-
group: "Inspect",
|
|
1404
|
-
kinds: ["interop"],
|
|
1405
|
-
args: {},
|
|
1406
|
-
fromArgs: fromArgsOrUsage("interop", { kind: "interop" }),
|
|
1407
|
-
handle(_command, ctx) {
|
|
1408
|
-
ctx.openInterop?.();
|
|
1496
|
+
name: "share",
|
|
1497
|
+
description: "Share a worker result with the main agent",
|
|
1498
|
+
group: "Work",
|
|
1499
|
+
kinds: ["share"],
|
|
1500
|
+
args: { positionals: [{ name: "run-id", required: false }] },
|
|
1501
|
+
fromArgs(parsed) {
|
|
1502
|
+
const retiredArchiveVerb = parsed.positionals[0];
|
|
1503
|
+
if (retiredArchiveVerb === "export" || retiredArchiveVerb === "import") {
|
|
1504
|
+
return {
|
|
1505
|
+
kind: "usage-error",
|
|
1506
|
+
command: "share",
|
|
1507
|
+
reason: `/share ${retiredArchiveVerb} is retired and did not run; use /archive ${retiredArchiveVerb}`
|
|
1508
|
+
};
|
|
1509
|
+
}
|
|
1510
|
+
if (parsed.error) return { kind: "usage-error", command: "share", reason: parsed.error };
|
|
1511
|
+
return { kind: "share", ...parsed.positionals[0] ? { runId: parsed.positionals[0] } : {} };
|
|
1512
|
+
},
|
|
1513
|
+
handle(command, ctx) {
|
|
1514
|
+
if (command.kind === "share") shareWorkerRun(command.runId, ctx);
|
|
1409
1515
|
}
|
|
1410
1516
|
},
|
|
1411
1517
|
{
|
|
1412
|
-
name: "
|
|
1413
|
-
description: "
|
|
1414
|
-
group: "
|
|
1415
|
-
kinds: ["
|
|
1518
|
+
name: "archive",
|
|
1519
|
+
description: "Export or import a full Clio archive",
|
|
1520
|
+
group: "Session",
|
|
1521
|
+
kinds: ["archive-export", "archive-import", "archive-usage"],
|
|
1522
|
+
subcommandDescriptions: { export: "Export a full Clio archive", import: "Import a full Clio archive" },
|
|
1416
1523
|
args: {
|
|
1417
|
-
positionals: [{ name: "runId", required: false }],
|
|
1418
1524
|
subcommands: {
|
|
1419
1525
|
export: {
|
|
1420
1526
|
positionals: [{ name: "path", required: true }]
|
|
@@ -1429,54 +1535,44 @@ var BUILTIN_SLASH_COMMANDS = [
|
|
|
1429
1535
|
const subcommand = parsed.subcommand === "export" || parsed.subcommand === "import" ? parsed.subcommand : void 0;
|
|
1430
1536
|
if (parsed.error) {
|
|
1431
1537
|
return {
|
|
1432
|
-
kind: "
|
|
1433
|
-
action: "usage",
|
|
1538
|
+
kind: "archive-usage",
|
|
1434
1539
|
...subcommand !== void 0 ? { subcommand } : {},
|
|
1435
1540
|
error: parsed.error
|
|
1436
1541
|
};
|
|
1437
1542
|
}
|
|
1438
1543
|
const path = parsed.positionals[0];
|
|
1439
|
-
if (subcommand === "export" && path !== void 0) return { kind: "
|
|
1544
|
+
if (subcommand === "export" && path !== void 0) return { kind: "archive-export", path };
|
|
1440
1545
|
if (subcommand === "import" && path !== void 0) {
|
|
1441
1546
|
return {
|
|
1442
|
-
kind: "
|
|
1443
|
-
action: "import",
|
|
1547
|
+
kind: "archive-import",
|
|
1444
1548
|
path,
|
|
1445
1549
|
dryRun: parsed.flags.has("--dry-run"),
|
|
1446
1550
|
force: parsed.flags.has("--force")
|
|
1447
1551
|
};
|
|
1448
1552
|
}
|
|
1449
|
-
|
|
1450
|
-
return { kind: "share", action: "worker-run", ...path !== void 0 ? { runId: path } : {} };
|
|
1451
|
-
}
|
|
1452
|
-
return { kind: "share", action: "usage", ...subcommand !== void 0 ? { subcommand } : {} };
|
|
1553
|
+
return { kind: "archive-usage", ...subcommand !== void 0 ? { subcommand } : {} };
|
|
1453
1554
|
},
|
|
1454
1555
|
handle(command, ctx) {
|
|
1455
|
-
if (command.kind
|
|
1456
|
-
|
|
1457
|
-
shareWorkerRun(command.runId, ctx);
|
|
1458
|
-
return;
|
|
1459
|
-
}
|
|
1460
|
-
if (command.action === "usage") {
|
|
1461
|
-
const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === "share");
|
|
1556
|
+
if (command.kind === "archive-usage") {
|
|
1557
|
+
const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === "archive");
|
|
1462
1558
|
if (!entry) return;
|
|
1463
1559
|
const usage = usageNotice(entry, command.subcommand);
|
|
1464
1560
|
ctx.notice("info", command.error ? `${command.error}
|
|
1465
1561
|
${usage}` : usage);
|
|
1466
1562
|
return;
|
|
1467
1563
|
}
|
|
1468
|
-
if (command.
|
|
1564
|
+
if (command.kind === "archive-export") {
|
|
1469
1565
|
if (!ctx.exportShareArchive) {
|
|
1470
|
-
ctx.notice("error", "
|
|
1566
|
+
ctx.notice("error", "archive export is not wired");
|
|
1471
1567
|
return;
|
|
1472
1568
|
}
|
|
1473
1569
|
const result = ctx.exportShareArchive(command.path);
|
|
1474
1570
|
ctx.notice("success", `exported ${result.fileCount} item(s) to ${result.path}`);
|
|
1475
1571
|
return;
|
|
1476
1572
|
}
|
|
1477
|
-
if (command.
|
|
1573
|
+
if (command.kind === "archive-import") {
|
|
1478
1574
|
if (!ctx.importShareArchive) {
|
|
1479
|
-
ctx.notice("error", "
|
|
1575
|
+
ctx.notice("error", "archive import is not wired");
|
|
1480
1576
|
return;
|
|
1481
1577
|
}
|
|
1482
1578
|
const plan = ctx.importShareArchive(command.path, { dryRun: command.dryRun, force: command.force });
|
|
@@ -1497,7 +1593,7 @@ ${usage}` : usage);
|
|
|
1497
1593
|
{
|
|
1498
1594
|
name: "run",
|
|
1499
1595
|
description: "Run a fleet agent",
|
|
1500
|
-
group: "
|
|
1596
|
+
group: "Work",
|
|
1501
1597
|
kinds: ["run", "run-usage"],
|
|
1502
1598
|
args: {
|
|
1503
1599
|
parseFlagsBeforeRest: true,
|
|
@@ -1578,7 +1674,7 @@ ${usage}` : usage);
|
|
|
1578
1674
|
{
|
|
1579
1675
|
name: "delegate",
|
|
1580
1676
|
description: "Run an ACP delegation agent",
|
|
1581
|
-
group: "
|
|
1677
|
+
group: "Work",
|
|
1582
1678
|
kinds: ["delegate", "delegate-usage"],
|
|
1583
1679
|
args: {
|
|
1584
1680
|
parseFlagsBeforeRest: true,
|
|
@@ -1625,7 +1721,7 @@ ${usage}` : usage);
|
|
|
1625
1721
|
{
|
|
1626
1722
|
name: "btw",
|
|
1627
1723
|
description: "Ask a side question that never enters the session transcript",
|
|
1628
|
-
group: "
|
|
1724
|
+
group: "Work",
|
|
1629
1725
|
kinds: ["btw", "btw-usage"],
|
|
1630
1726
|
args: {
|
|
1631
1727
|
positionals: [{ name: "question", required: true, rest: true }]
|
|
@@ -1648,7 +1744,7 @@ ${usage}` : usage);
|
|
|
1648
1744
|
{
|
|
1649
1745
|
name: "oracle",
|
|
1650
1746
|
description: "Ask a read-only advisor to challenge a question against this session's settled decisions",
|
|
1651
|
-
group: "
|
|
1747
|
+
group: "Work",
|
|
1652
1748
|
kinds: ["oracle", "oracle-usage"],
|
|
1653
1749
|
args: {
|
|
1654
1750
|
positionals: [{ name: "question", required: true, rest: true }]
|
|
@@ -1674,7 +1770,7 @@ ${usage}` : usage);
|
|
|
1674
1770
|
{
|
|
1675
1771
|
name: "council",
|
|
1676
1772
|
description: "Ask a roster of read-only members the same task, with an optional vote or judge synthesis",
|
|
1677
|
-
group: "
|
|
1773
|
+
group: "Work",
|
|
1678
1774
|
kinds: ["council", "council-usage"],
|
|
1679
1775
|
args: {
|
|
1680
1776
|
parseFlagsBeforeRest: true,
|
|
@@ -1724,16 +1820,24 @@ ${usage}` : usage);
|
|
|
1724
1820
|
},
|
|
1725
1821
|
{
|
|
1726
1822
|
name: "agents",
|
|
1727
|
-
description: "List
|
|
1823
|
+
description: "List agents or connect a detected external agent",
|
|
1728
1824
|
group: "Inspect",
|
|
1729
1825
|
kinds: ["agents"],
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1826
|
+
subcommandDescriptions: {
|
|
1827
|
+
list: "List native and external agents",
|
|
1828
|
+
connect: "Review detected external-agent proposals"
|
|
1829
|
+
},
|
|
1830
|
+
args: { subcommands: { list: {}, connect: {} } },
|
|
1831
|
+
fromArgs(parsed) {
|
|
1832
|
+
if (parsed.error) return { kind: "usage-error", command: "agents", reason: parsed.error };
|
|
1833
|
+
return { kind: "agents", ...parsed.subcommand === "connect" ? { connect: true } : {} };
|
|
1834
|
+
},
|
|
1835
|
+
handle(command, ctx) {
|
|
1836
|
+
if (command.kind !== "agents") return;
|
|
1837
|
+
if (command.connect) ctx.openInterop?.();
|
|
1838
|
+
else ctx.openAgents();
|
|
1734
1839
|
}
|
|
1735
1840
|
},
|
|
1736
|
-
settingsDeepLink("targets", "targets", "Open Settings \u2192 Targets: health, use, connect, probe, remove"),
|
|
1737
1841
|
{
|
|
1738
1842
|
name: "cost",
|
|
1739
1843
|
description: "Show session token and cost totals",
|
|
@@ -1818,9 +1922,9 @@ ${usage}` : usage);
|
|
|
1818
1922
|
},
|
|
1819
1923
|
{
|
|
1820
1924
|
name: "fleet",
|
|
1821
|
-
description: "Open
|
|
1822
|
-
group: "
|
|
1823
|
-
kinds: ["fleet-run", "fleet-run-usage"],
|
|
1925
|
+
description: "Open Fleet Runs or run a fleet contract with an approval preview",
|
|
1926
|
+
group: "Work",
|
|
1927
|
+
kinds: ["fleet", "fleet-run", "fleet-run-usage"],
|
|
1824
1928
|
subcommandDescriptions: { run: "Preview and run a repo-owned fleet contract" },
|
|
1825
1929
|
args: {
|
|
1826
1930
|
subcommands: {
|
|
@@ -1830,15 +1934,9 @@ ${usage}` : usage);
|
|
|
1830
1934
|
}
|
|
1831
1935
|
}
|
|
1832
1936
|
},
|
|
1833
|
-
/**
|
|
1834
|
-
* `/fleet` alone keeps the settings deep link it has always been, and
|
|
1835
|
-
* only `run` parses as a command of its own, so an operator who types
|
|
1836
|
-
* `/fleet` out of habit still lands in Settings → Fleet. Anything else
|
|
1837
|
-
* on the line stays the usage error every other deep link reports.
|
|
1838
|
-
*/
|
|
1839
1937
|
fromArgs(parsed) {
|
|
1840
1938
|
if (parsed.subcommand !== "run") {
|
|
1841
|
-
return parsed.error ? { kind: "usage-error", command: "fleet", reason: parsed.error } : { kind: "
|
|
1939
|
+
return parsed.error ? { kind: "usage-error", command: "fleet", reason: parsed.error } : { kind: "fleet" };
|
|
1842
1940
|
}
|
|
1843
1941
|
if (parsed.error) return { kind: "fleet-run-usage", reason: parsed.error };
|
|
1844
1942
|
const name = parsed.positionals[0] ?? "";
|
|
@@ -1853,6 +1951,11 @@ ${usage}` : usage);
|
|
|
1853
1951
|
return { kind: "fleet-run", name, vars };
|
|
1854
1952
|
},
|
|
1855
1953
|
handle(command, ctx) {
|
|
1954
|
+
if (command.kind === "fleet") {
|
|
1955
|
+
if (ctx.openFleetRuns) ctx.openFleetRuns();
|
|
1956
|
+
else ctx.notice("error", "Fleet Runs is not wired in this session");
|
|
1957
|
+
return;
|
|
1958
|
+
}
|
|
1856
1959
|
if (command.kind === "fleet-run-usage") {
|
|
1857
1960
|
const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === "fleet");
|
|
1858
1961
|
const usage = entry ? usageNotice(entry, "run") : "usage: /fleet run <name> [--var key=value ...]";
|
|
@@ -2036,19 +2139,21 @@ ${usage}` : usage);
|
|
|
2036
2139
|
name: "panes",
|
|
2037
2140
|
description: "Inspect the pane layer, watch a live run in a pane, or open a utility pane",
|
|
2038
2141
|
group: "Inspect",
|
|
2039
|
-
kinds: ["panes", "panes-show", "panes-open", "panes-close", "panes-usage"],
|
|
2142
|
+
kinds: ["panes", "panes-show", "panes-open", "panes-zoom", "panes-close", "panes-usage"],
|
|
2040
2143
|
args: {
|
|
2041
2144
|
subcommands: {
|
|
2042
2145
|
show: { positionals: [{ name: "run-or-agent", required: true }] },
|
|
2043
2146
|
// A rest positional, so an argv pane keeps its own flags: the parser
|
|
2044
2147
|
// would otherwise refuse `--follow` as an unknown flag of `/panes`.
|
|
2045
2148
|
open: { positionals: [{ name: "preset-or-argv", required: true, rest: true }] },
|
|
2149
|
+
zoom: { positionals: [{ name: "target", required: false }] },
|
|
2046
2150
|
close: { positionals: [{ name: "target", required: false }] }
|
|
2047
2151
|
}
|
|
2048
2152
|
},
|
|
2049
2153
|
subcommandDescriptions: {
|
|
2050
2154
|
show: "watch a live run or agent in the watch pane",
|
|
2051
|
-
open: `open a utility pane (${PANES_PRESET_IDS.join(", ")}, or a command)`,
|
|
2155
|
+
open: `open a utility pane (${PANES_PRESET_IDS.join(", ")}, \`files --once\` for one pick, or a command)`,
|
|
2156
|
+
zoom: "toggle zoom on a Clio-owned pane (default: the watch pane)",
|
|
2052
2157
|
close: "close a Clio-owned pane, or all of them"
|
|
2053
2158
|
},
|
|
2054
2159
|
fromArgs(parsed) {
|
|
@@ -2061,12 +2166,16 @@ ${usage}` : usage);
|
|
|
2061
2166
|
if (rest.length === 0) return { kind: "panes-usage", reason: "Missing required argument: preset-or-argv" };
|
|
2062
2167
|
const argv = rest.split(/\s+/).filter((token) => token.length > 0);
|
|
2063
2168
|
const first = argv[0] ?? "";
|
|
2064
|
-
|
|
2065
|
-
if (argv.length ===
|
|
2066
|
-
|
|
2169
|
+
const preset = resolvePanesPresetId(first);
|
|
2170
|
+
if (argv.length === 1 && preset !== null) return { kind: "panes-open", preset };
|
|
2171
|
+
if (argv.length === 2 && preset === "files" && argv[1] === "--once") {
|
|
2172
|
+
return { kind: "panes-open", preset: "files", once: true };
|
|
2067
2173
|
}
|
|
2068
2174
|
return { kind: "panes-open", argv };
|
|
2069
2175
|
}
|
|
2176
|
+
if (parsed.subcommand === "zoom") {
|
|
2177
|
+
return { kind: "panes-zoom", target: parsed.positionals[0] ?? "" };
|
|
2178
|
+
}
|
|
2070
2179
|
if (parsed.subcommand === "close") {
|
|
2071
2180
|
return { kind: "panes-close", target: parsed.positionals[0] ?? "all" };
|
|
2072
2181
|
}
|
|
@@ -2086,7 +2195,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2086
2195
|
if (!panes) {
|
|
2087
2196
|
ctx.notice(
|
|
2088
2197
|
"info",
|
|
2089
|
-
"panes are inactive: this session started without them. Restart with `clio-coder --with-panes`, or set panes.enabled=auto"
|
|
2198
|
+
"panes are inactive: this session started without them. Restart with `clio-coder --with-panes`, or set interface.panes.enabled=auto"
|
|
2090
2199
|
);
|
|
2091
2200
|
return;
|
|
2092
2201
|
}
|
|
@@ -2121,7 +2230,12 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2121
2230
|
...command.once ? { once: true } : {}
|
|
2122
2231
|
});
|
|
2123
2232
|
if (result.status === "opened") {
|
|
2124
|
-
if (result.paneId !== null)
|
|
2233
|
+
if (result.paneId !== null) {
|
|
2234
|
+
ctx.notice(
|
|
2235
|
+
"success",
|
|
2236
|
+
result.existing ? `focused pane ${result.label} (${result.paneId})` : `opened pane ${result.label} (${result.paneId})`
|
|
2237
|
+
);
|
|
2238
|
+
}
|
|
2125
2239
|
} else if (result.status === "missing-binary") {
|
|
2126
2240
|
ctx.io.stdout(`${result.detail}
|
|
2127
2241
|
`);
|
|
@@ -2132,6 +2246,19 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2132
2246
|
});
|
|
2133
2247
|
return;
|
|
2134
2248
|
}
|
|
2249
|
+
if (command.kind === "panes-zoom") {
|
|
2250
|
+
runLocal(async () => {
|
|
2251
|
+
const result = await panes.zoom(command.target);
|
|
2252
|
+
if (result.status === "zoomed") {
|
|
2253
|
+
ctx.notice("success", `toggled zoom on ${result.label} (${result.paneId})`);
|
|
2254
|
+
} else if (result.status === "not-found") {
|
|
2255
|
+
ctx.notice("warn", `no Clio-owned pane matches ${result.target}`);
|
|
2256
|
+
} else {
|
|
2257
|
+
ctx.notice("warn", result.reason);
|
|
2258
|
+
}
|
|
2259
|
+
});
|
|
2260
|
+
return;
|
|
2261
|
+
}
|
|
2135
2262
|
if (command.kind !== "panes-close") return;
|
|
2136
2263
|
runLocal(async () => {
|
|
2137
2264
|
const result = await panes.close(command.target);
|
|
@@ -2146,18 +2273,80 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2146
2273
|
});
|
|
2147
2274
|
}
|
|
2148
2275
|
},
|
|
2276
|
+
{
|
|
2277
|
+
name: "files",
|
|
2278
|
+
description: "Toggle the files pane; picks land in the composer as @ mentions",
|
|
2279
|
+
group: "Inspect",
|
|
2280
|
+
kinds: ["files", "files-usage"],
|
|
2281
|
+
args: { positionals: [{ name: "action", required: false }] },
|
|
2282
|
+
subcommandDescriptions: {
|
|
2283
|
+
open: "open the files pane, or focus it when it is already open",
|
|
2284
|
+
close: "close the files pane",
|
|
2285
|
+
pick: "borrow the files pane for one selection, then close it"
|
|
2286
|
+
},
|
|
2287
|
+
fromArgs(parsed) {
|
|
2288
|
+
if (parsed.error) return { kind: "files-usage", reason: parsed.error };
|
|
2289
|
+
const action = parsed.positionals[0];
|
|
2290
|
+
if (action === void 0) return { kind: "files", action: "toggle" };
|
|
2291
|
+
if (action === "open" || action === "close" || action === "pick" || action === "toggle") {
|
|
2292
|
+
return { kind: "files", action };
|
|
2293
|
+
}
|
|
2294
|
+
return { kind: "files-usage", reason: `Unexpected argument: ${action}` };
|
|
2295
|
+
},
|
|
2296
|
+
handle(command, ctx) {
|
|
2297
|
+
if (command.kind === "files-usage") {
|
|
2298
|
+
ctx.notice("info", `${command.reason}
|
|
2299
|
+
usage: /files [open|close|pick]`);
|
|
2300
|
+
return;
|
|
2301
|
+
}
|
|
2302
|
+
if (command.kind !== "files") return;
|
|
2303
|
+
const panes = ctx.panes;
|
|
2304
|
+
if (!panes) {
|
|
2305
|
+
ctx.notice(
|
|
2306
|
+
"info",
|
|
2307
|
+
"the files pane is inactive: this session started without panes. Restart with `clio-coder --with-panes`, or set interface.panes.enabled=auto"
|
|
2308
|
+
);
|
|
2309
|
+
return;
|
|
2310
|
+
}
|
|
2311
|
+
const runLocal = ctx.runLocalOperation ?? ((operation) => void operation());
|
|
2312
|
+
runLocal(async () => {
|
|
2313
|
+
const result = await panes.files(command.action);
|
|
2314
|
+
if (result.status === "opened") {
|
|
2315
|
+
if (result.paneId !== null) {
|
|
2316
|
+
ctx.notice(
|
|
2317
|
+
"success",
|
|
2318
|
+
result.existing ? `files pane focused (${result.paneId})` : `files pane opened (${result.paneId})`
|
|
2319
|
+
);
|
|
2320
|
+
}
|
|
2321
|
+
} else if (result.status === "closed") {
|
|
2322
|
+
ctx.notice("info", "files pane closed");
|
|
2323
|
+
} else if (result.status === "missing-binary") {
|
|
2324
|
+
ctx.io.stdout(`${result.detail}
|
|
2325
|
+
`);
|
|
2326
|
+
ctx.render();
|
|
2327
|
+
} else {
|
|
2328
|
+
ctx.notice("warn", result.reason);
|
|
2329
|
+
}
|
|
2330
|
+
});
|
|
2331
|
+
}
|
|
2332
|
+
},
|
|
2149
2333
|
{
|
|
2150
2334
|
name: "thinking",
|
|
2151
|
-
description: "Set the chat thinking level
|
|
2335
|
+
description: "Set the chat thinking level",
|
|
2152
2336
|
group: "Configure",
|
|
2153
|
-
kinds: ["thinking-set"],
|
|
2337
|
+
kinds: ["thinking-set", "thinking-picker"],
|
|
2154
2338
|
args: { positionals: [{ name: "level", required: false }] },
|
|
2155
2339
|
fromArgs(parsed) {
|
|
2156
2340
|
if (parsed.error) return { kind: "usage-error", command: "thinking", reason: parsed.error };
|
|
2157
2341
|
const level = parsed.positionals[0];
|
|
2158
|
-
return level ? { kind: "thinking-set", level } : { kind: "
|
|
2342
|
+
return level ? { kind: "thinking-set", level } : { kind: "thinking-picker" };
|
|
2159
2343
|
},
|
|
2160
2344
|
handle(command, ctx) {
|
|
2345
|
+
if (command.kind === "thinking-picker") {
|
|
2346
|
+
if (ctx.openThinkingPicker) ctx.openThinkingPicker();
|
|
2347
|
+
else ctx.notice("error", "thinking picker is not wired in this session");
|
|
2348
|
+
return;
|
|
2349
|
+
}
|
|
2161
2350
|
if (command.kind !== "thinking-set") return;
|
|
2162
2351
|
const result = ctx.setThinkingLevel?.(command.level) ?? { status: "unavailable" };
|
|
2163
2352
|
if (result.status === "applied") {
|
|
@@ -2172,16 +2361,21 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2172
2361
|
},
|
|
2173
2362
|
{
|
|
2174
2363
|
name: "output",
|
|
2175
|
-
description: "Set transcript detail
|
|
2364
|
+
description: "Set transcript detail to minimal, default, or verbose",
|
|
2176
2365
|
group: "Configure",
|
|
2177
|
-
kinds: ["output-set"],
|
|
2366
|
+
kinds: ["output-set", "output-picker"],
|
|
2178
2367
|
args: { positionals: [{ name: "verbosity", required: false }] },
|
|
2179
2368
|
fromArgs(parsed) {
|
|
2180
2369
|
if (parsed.error) return { kind: "usage-error", command: "output", reason: parsed.error };
|
|
2181
2370
|
const verbosity = parsed.positionals[0];
|
|
2182
|
-
return verbosity ? { kind: "output-set", verbosity } : { kind: "
|
|
2371
|
+
return verbosity ? { kind: "output-set", verbosity } : { kind: "output-picker" };
|
|
2183
2372
|
},
|
|
2184
2373
|
handle(command, ctx) {
|
|
2374
|
+
if (command.kind === "output-picker") {
|
|
2375
|
+
if (ctx.openOutputPicker) ctx.openOutputPicker();
|
|
2376
|
+
else ctx.notice("error", "output picker is not wired in this session");
|
|
2377
|
+
return;
|
|
2378
|
+
}
|
|
2185
2379
|
if (command.kind !== "output-set") return;
|
|
2186
2380
|
const result = ctx.setOutputVerbosity?.(command.verbosity) ?? { status: "unavailable" };
|
|
2187
2381
|
if (result.status === "applied") {
|
|
@@ -2237,36 +2431,38 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2237
2431
|
})();
|
|
2238
2432
|
}
|
|
2239
2433
|
},
|
|
2240
|
-
settingsDeepLink(
|
|
2241
|
-
"scoped-models",
|
|
2242
|
-
"models",
|
|
2243
|
-
"Open Settings \u2192 Models: the Alt+J / Alt+K cycle set and favorites",
|
|
2244
|
-
"scope"
|
|
2245
|
-
),
|
|
2246
2434
|
{
|
|
2247
2435
|
name: "settings",
|
|
2248
2436
|
description: "Open interactive settings",
|
|
2249
2437
|
group: "Configure",
|
|
2250
2438
|
kinds: ["settings"],
|
|
2251
|
-
args: {
|
|
2439
|
+
args: {
|
|
2440
|
+
positionals: [
|
|
2441
|
+
{ name: "area", required: false },
|
|
2442
|
+
{ name: "group", required: false }
|
|
2443
|
+
]
|
|
2444
|
+
},
|
|
2252
2445
|
fromArgs(parsed) {
|
|
2253
2446
|
if (parsed.error) return { kind: "usage-error", command: "settings", reason: parsed.error };
|
|
2254
|
-
const
|
|
2255
|
-
if (
|
|
2256
|
-
if (!
|
|
2257
|
-
|
|
2258
|
-
|
|
2447
|
+
const area = parsed.positionals[0];
|
|
2448
|
+
if (area === void 0) return { kind: "settings" };
|
|
2449
|
+
if (!isSettingsAreaId(area)) {
|
|
2450
|
+
return {
|
|
2451
|
+
kind: "usage-error",
|
|
2452
|
+
command: "settings",
|
|
2453
|
+
reason: `Unknown area: ${area} (one of ${SETTINGS_AREA_IDS.join(", ")})`
|
|
2454
|
+
};
|
|
2259
2455
|
}
|
|
2260
|
-
return { kind: "settings",
|
|
2456
|
+
return { kind: "settings", area, ...parsed.positionals[1] ? { group: parsed.positionals[1] } : {} };
|
|
2261
2457
|
},
|
|
2262
2458
|
handle(command, ctx) {
|
|
2263
|
-
if (command.kind === "settings") ctx.openSettings(command.
|
|
2459
|
+
if (command.kind === "settings") ctx.openSettings(command.area, command.group);
|
|
2264
2460
|
}
|
|
2265
2461
|
},
|
|
2266
2462
|
{
|
|
2267
2463
|
name: "resume",
|
|
2268
2464
|
description: "Resume a past session",
|
|
2269
|
-
group: "
|
|
2465
|
+
group: "Session",
|
|
2270
2466
|
kinds: ["resume"],
|
|
2271
2467
|
args: {},
|
|
2272
2468
|
fromArgs: fromArgsOrUsage("resume", { kind: "resume" }),
|
|
@@ -2277,7 +2473,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2277
2473
|
{
|
|
2278
2474
|
name: "new",
|
|
2279
2475
|
description: "Start a fresh session",
|
|
2280
|
-
group: "
|
|
2476
|
+
group: "Session",
|
|
2281
2477
|
kinds: ["new"],
|
|
2282
2478
|
args: {},
|
|
2283
2479
|
fromArgs: fromArgsOrUsage("new", { kind: "new" }),
|
|
@@ -2288,7 +2484,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2288
2484
|
{
|
|
2289
2485
|
name: "handoff",
|
|
2290
2486
|
description: "Hand this session's working state to a fresh session for a stated goal",
|
|
2291
|
-
group: "
|
|
2487
|
+
group: "Session",
|
|
2292
2488
|
kinds: ["handoff", "handoff-usage"],
|
|
2293
2489
|
args: {
|
|
2294
2490
|
positionals: [{ name: "goal", required: true, rest: true }]
|
|
@@ -2311,7 +2507,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2311
2507
|
{
|
|
2312
2508
|
name: "tree",
|
|
2313
2509
|
description: "Open session tree navigator",
|
|
2314
|
-
group: "
|
|
2510
|
+
group: "Session",
|
|
2315
2511
|
kinds: ["tree"],
|
|
2316
2512
|
args: {},
|
|
2317
2513
|
fromArgs: fromArgsOrUsage("tree", { kind: "tree" }),
|
|
@@ -2322,7 +2518,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2322
2518
|
{
|
|
2323
2519
|
name: "fork",
|
|
2324
2520
|
description: "Fork from an assistant turn",
|
|
2325
|
-
group: "
|
|
2521
|
+
group: "Session",
|
|
2326
2522
|
kinds: ["fork"],
|
|
2327
2523
|
args: {},
|
|
2328
2524
|
fromArgs: fromArgsOrUsage("fork", { kind: "fork" }),
|
|
@@ -2333,7 +2529,7 @@ ${usageNotice(entry)}` : usageNotice(entry));
|
|
|
2333
2529
|
{
|
|
2334
2530
|
name: "export",
|
|
2335
2531
|
description: "Export a self-contained HTML transcript by default; a .md path writes Markdown",
|
|
2336
|
-
group: "
|
|
2532
|
+
group: "Session",
|
|
2337
2533
|
kinds: ["export"],
|
|
2338
2534
|
args: {
|
|
2339
2535
|
positionals: [{ name: "path", required: false }]
|
|
@@ -2364,6 +2560,54 @@ for (const entry of BUILTIN_SLASH_COMMANDS) {
|
|
|
2364
2560
|
}
|
|
2365
2561
|
var COMMAND_SHAPED_TOKEN = /^[A-Za-z][A-Za-z0-9:-]*$/u;
|
|
2366
2562
|
var COMMAND_ESCAPE = "\\/";
|
|
2563
|
+
var RETIRED_COMMAND_HINTS = Object.freeze({
|
|
2564
|
+
status: "Use the footer or Alt+U for status; /cost, /context, and /fleet inspect their own domains.",
|
|
2565
|
+
receipts: "Use /view or /view verify <run-id>.",
|
|
2566
|
+
"context-init": "Use /context init.",
|
|
2567
|
+
"context-clear": "Use /context reset for project context or /new for a fresh session.",
|
|
2568
|
+
"context-view": "Use /context.",
|
|
2569
|
+
compact: "Use /context compact [instructions].",
|
|
2570
|
+
skills: "Use /skill or /resources skills.",
|
|
2571
|
+
exit: "Use /quit.",
|
|
2572
|
+
config: "Use /settings.",
|
|
2573
|
+
ctx: "Use /context.",
|
|
2574
|
+
models: "Use /model.",
|
|
2575
|
+
clear: "Use /new for a fresh session or /context reset for project context.",
|
|
2576
|
+
library: "Use /resources library [kind].",
|
|
2577
|
+
prompts: "Use /resources prompts.",
|
|
2578
|
+
extensions: "Use /resources extensions.",
|
|
2579
|
+
interop: "Use /agents connect.",
|
|
2580
|
+
targets: "Use /settings targets.",
|
|
2581
|
+
"scoped-models": "Use /settings chat model-picker."
|
|
2582
|
+
});
|
|
2583
|
+
function retiredCommandHint(token) {
|
|
2584
|
+
if (/^skills?:[^\s]+$/u.test(token)) return "Use /skill <name> [task].";
|
|
2585
|
+
return RETIRED_COMMAND_HINTS[token];
|
|
2586
|
+
}
|
|
2587
|
+
function formatExtensionReloadNotice(outcome) {
|
|
2588
|
+
if (outcome.status !== "committed") {
|
|
2589
|
+
return ["error", `extensions: reload rejected (${outcome.reason}); generation ${outcome.generation} stays active`];
|
|
2590
|
+
}
|
|
2591
|
+
const delta = outcome.changed ? `changed: +${outcome.added.length} -${outcome.removed.length} ~${outcome.modified.length}` : "unchanged";
|
|
2592
|
+
const issueCount = outcome.hooks.fileIssues + outcome.hooks.issues;
|
|
2593
|
+
const hookParts = [`${outcome.hooks.registered} registered`];
|
|
2594
|
+
if (outcome.hooks.dropped > 0) hookParts.push(`${outcome.hooks.dropped} dropped`);
|
|
2595
|
+
if (issueCount > 0) hookParts.push(`${issueCount} issue${issueCount === 1 ? "" : "s"}`);
|
|
2596
|
+
if (outcome.hooks.overridden > 0) hookParts.push(`${outcome.hooks.overridden} overridden`);
|
|
2597
|
+
const level = outcome.hooks.dropped > 0 || issueCount > 0 ? "warn" : "success";
|
|
2598
|
+
return [level, `extensions: generation ${outcome.generation} committed (${delta}); hooks: ${hookParts.join(", ")}`];
|
|
2599
|
+
}
|
|
2600
|
+
function reloadExtensionsCommand(ctx) {
|
|
2601
|
+
if (!ctx.reloadExtensions) {
|
|
2602
|
+
ctx.notice("warn", "extensions: reload is unavailable in this session; restart to pick up installed changes");
|
|
2603
|
+
return;
|
|
2604
|
+
}
|
|
2605
|
+
const outcome = ctx.reloadExtensions();
|
|
2606
|
+
const [level, text] = formatExtensionReloadNotice(outcome);
|
|
2607
|
+
ctx.notice(level, text);
|
|
2608
|
+
for (const line of outcome.lines) ctx.notice("warn", line);
|
|
2609
|
+
if (outcome.status === "committed") ctx.openExtensions();
|
|
2610
|
+
}
|
|
2367
2611
|
function parseSlashCommand(input) {
|
|
2368
2612
|
const trimmed = input.trim();
|
|
2369
2613
|
if (trimmed.length === 0) return { kind: "empty" };
|
|
@@ -2385,6 +2629,12 @@ function dispatchSlashCommand(command, ctx) {
|
|
|
2385
2629
|
return "accepted";
|
|
2386
2630
|
}
|
|
2387
2631
|
if (command.kind === "unknown-command") {
|
|
2632
|
+
const retiredHint = retiredCommandHint(command.token);
|
|
2633
|
+
if (retiredHint) {
|
|
2634
|
+
ctx.notice("error", `/${command.token} is retired and did not run. ${retiredHint}`);
|
|
2635
|
+
ctx.render();
|
|
2636
|
+
return "rejected";
|
|
2637
|
+
}
|
|
2388
2638
|
const expansion = ctx.expandPromptTemplate?.(command.text);
|
|
2389
2639
|
if (expansion?.expanded === true) {
|
|
2390
2640
|
ctx.submitChat(command.text);
|
|
@@ -2407,8 +2657,41 @@ function dispatchSlashCommand(command, ctx) {
|
|
|
2407
2657
|
entry.handle(command, ctx);
|
|
2408
2658
|
return "accepted";
|
|
2409
2659
|
}
|
|
2660
|
+
var COMMAND_ORDER = [
|
|
2661
|
+
"run",
|
|
2662
|
+
"fleet",
|
|
2663
|
+
"delegate",
|
|
2664
|
+
"council",
|
|
2665
|
+
"oracle",
|
|
2666
|
+
"btw",
|
|
2667
|
+
"share",
|
|
2668
|
+
"skill",
|
|
2669
|
+
"agents",
|
|
2670
|
+
"tasks",
|
|
2671
|
+
"context",
|
|
2672
|
+
"memory",
|
|
2673
|
+
"view",
|
|
2674
|
+
"panes",
|
|
2675
|
+
"cost",
|
|
2676
|
+
"decisions",
|
|
2677
|
+
"resources",
|
|
2678
|
+
"help",
|
|
2679
|
+
"model",
|
|
2680
|
+
"thinking",
|
|
2681
|
+
"output",
|
|
2682
|
+
"settings",
|
|
2683
|
+
"new",
|
|
2684
|
+
"resume",
|
|
2685
|
+
"handoff",
|
|
2686
|
+
"fork",
|
|
2687
|
+
"tree",
|
|
2688
|
+
"export",
|
|
2689
|
+
"archive",
|
|
2690
|
+
"quit"
|
|
2691
|
+
];
|
|
2692
|
+
var COMMAND_ORDER_INDEX = new Map(COMMAND_ORDER.map((name, index) => [name, index]));
|
|
2410
2693
|
function commandReference() {
|
|
2411
|
-
return BUILTIN_SLASH_COMMANDS.filter((entry) => entry.hidden !== true).map((entry) => {
|
|
2694
|
+
return BUILTIN_SLASH_COMMANDS.filter((entry) => entry.hidden !== true).slice().sort((a, b) => (COMMAND_ORDER_INDEX.get(a.name) ?? 99) - (COMMAND_ORDER_INDEX.get(b.name) ?? 99)).map((entry) => {
|
|
2412
2695
|
const usage = usageLine(entry).replace(/^\nusage:\s*/, "").replace(/\n$/, "");
|
|
2413
2696
|
return {
|
|
2414
2697
|
name: entry.name,
|
|
@@ -2431,17 +2714,17 @@ export {
|
|
|
2431
2714
|
createWorkerStream,
|
|
2432
2715
|
isWorkerShareNote,
|
|
2433
2716
|
LIBRARY_TABS,
|
|
2434
|
-
|
|
2717
|
+
COMPLETION_SLOT_NAMES,
|
|
2435
2718
|
renderArgsSpec,
|
|
2436
2719
|
completeArgs,
|
|
2720
|
+
SETTINGS_AREA_IDS,
|
|
2437
2721
|
handleRun,
|
|
2438
|
-
formatReceiptVerificationBlock,
|
|
2439
2722
|
formatUserTaskHandoff,
|
|
2440
2723
|
SLASH_COMMAND_GROUPS,
|
|
2441
|
-
formatPanesStatus,
|
|
2442
2724
|
BUILTIN_SLASH_COMMANDS,
|
|
2725
|
+
formatExtensionReloadNotice,
|
|
2443
2726
|
parseSlashCommand,
|
|
2444
2727
|
dispatchSlashCommand,
|
|
2445
2728
|
commandReference
|
|
2446
2729
|
};
|
|
2447
|
-
//# sourceMappingURL=chunk-
|
|
2730
|
+
//# sourceMappingURL=chunk-RLYRBIYQ.js.map
|