@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
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
import type { ClioSettings } from "./config.js";
|
|
20
20
|
|
|
21
|
-
type SessionThinkingLevel = ClioSettings["
|
|
21
|
+
type SessionThinkingLevel = ClioSettings["chat"]["thinkingLevel"];
|
|
22
22
|
|
|
23
23
|
export interface SessionRoutingTarget {
|
|
24
24
|
target: string | null;
|
|
@@ -28,7 +28,7 @@ export interface SessionRoutingTarget {
|
|
|
28
28
|
|
|
29
29
|
export interface SessionRoutingState {
|
|
30
30
|
orchestrator: SessionRoutingTarget;
|
|
31
|
-
background: SessionRoutingTarget
|
|
31
|
+
background: Pick<SessionRoutingTarget, "target" | "model">;
|
|
32
32
|
workersDefault: SessionRoutingTarget;
|
|
33
33
|
scope: string[];
|
|
34
34
|
}
|
|
@@ -40,7 +40,7 @@ export interface SessionRoutingState {
|
|
|
40
40
|
*/
|
|
41
41
|
export interface RoutingPatch {
|
|
42
42
|
orchestrator?: Partial<SessionRoutingTarget>;
|
|
43
|
-
background?: Partial<SessionRoutingTarget
|
|
43
|
+
background?: Partial<Pick<SessionRoutingTarget, "target" | "model">>;
|
|
44
44
|
workersDefault?: Partial<SessionRoutingTarget>;
|
|
45
45
|
scope?: string[];
|
|
46
46
|
}
|
|
@@ -59,10 +59,10 @@ function targetFrom(source: {
|
|
|
59
59
|
|
|
60
60
|
export function seedSessionRouting(saved: Readonly<ClioSettings>): SessionRoutingState {
|
|
61
61
|
return {
|
|
62
|
-
orchestrator: targetFrom(saved.
|
|
63
|
-
background:
|
|
64
|
-
workersDefault: targetFrom(saved.
|
|
65
|
-
scope: [...
|
|
62
|
+
orchestrator: targetFrom(saved.chat),
|
|
63
|
+
background: { target: saved.context.memory.target, model: saved.context.memory.model },
|
|
64
|
+
workersDefault: targetFrom(saved.fleet.default),
|
|
65
|
+
scope: [...saved.chat.modelPicker.cycleSet],
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -73,16 +73,15 @@ export function seedSessionRouting(saved: Readonly<ClioSettings>): SessionRoutin
|
|
|
73
73
|
*/
|
|
74
74
|
export function applySessionRouting(saved: Readonly<ClioSettings>, routing: SessionRoutingState): ClioSettings {
|
|
75
75
|
const view = structuredClone(saved) as ClioSettings;
|
|
76
|
-
view.
|
|
77
|
-
view.
|
|
78
|
-
view.
|
|
79
|
-
view.
|
|
80
|
-
view.
|
|
81
|
-
view.
|
|
82
|
-
view.
|
|
83
|
-
view.
|
|
84
|
-
view.
|
|
85
|
-
view.scope = [...routing.scope];
|
|
76
|
+
view.chat.target = routing.orchestrator.target;
|
|
77
|
+
view.chat.model = routing.orchestrator.model;
|
|
78
|
+
view.chat.thinkingLevel = routing.orchestrator.thinkingLevel;
|
|
79
|
+
view.context.memory.target = routing.background.target;
|
|
80
|
+
view.context.memory.model = routing.background.model;
|
|
81
|
+
view.fleet.default.target = routing.workersDefault.target;
|
|
82
|
+
view.fleet.default.model = routing.workersDefault.model;
|
|
83
|
+
view.fleet.default.thinkingLevel = routing.workersDefault.thinkingLevel;
|
|
84
|
+
view.chat.modelPicker.cycleSet = [...routing.scope];
|
|
86
85
|
return view;
|
|
87
86
|
}
|
|
88
87
|
|
|
@@ -107,14 +106,21 @@ export type SessionOverrides = Map<string, unknown>;
|
|
|
107
106
|
|
|
108
107
|
/** True for the dotted paths owned by the session routing state (never overrides). */
|
|
109
108
|
export function isRoutingPath(path: string): boolean {
|
|
110
|
-
return (
|
|
111
|
-
path === "scope" ||
|
|
112
|
-
path.startsWith("orchestrator.") ||
|
|
113
|
-
path.startsWith("background.") ||
|
|
114
|
-
path.startsWith("workers.default.")
|
|
115
|
-
);
|
|
109
|
+
return ROUTING_PATHS.has(path);
|
|
116
110
|
}
|
|
117
111
|
|
|
112
|
+
const ROUTING_PATHS = new Set<string>([
|
|
113
|
+
"chat.target",
|
|
114
|
+
"chat.model",
|
|
115
|
+
"chat.thinkingLevel",
|
|
116
|
+
"context.memory.target",
|
|
117
|
+
"context.memory.model",
|
|
118
|
+
"fleet.default.target",
|
|
119
|
+
"fleet.default.model",
|
|
120
|
+
"fleet.default.thinkingLevel",
|
|
121
|
+
"chat.modelPicker.cycleSet",
|
|
122
|
+
]);
|
|
123
|
+
|
|
118
124
|
/** Read a leaf from a settings blob by dotted object path. Missing ⇒ undefined. */
|
|
119
125
|
export function getAtPath(source: Readonly<ClioSettings>, path: string): unknown {
|
|
120
126
|
let cursor: unknown = source;
|
|
@@ -159,10 +165,10 @@ export function applyOverrides(base: Readonly<ClioSettings>, overrides: SessionO
|
|
|
159
165
|
|
|
160
166
|
/** Write-through of a routing patch onto a (cloned) saved-settings blob. */
|
|
161
167
|
export function mergeRoutingPatchIntoSettings(settings: ClioSettings, patch: RoutingPatch): void {
|
|
162
|
-
if (patch.orchestrator) Object.assign(settings.
|
|
163
|
-
if (patch.background) Object.assign(settings.
|
|
164
|
-
if (patch.workersDefault) Object.assign(settings.
|
|
165
|
-
if (patch.scope) settings.
|
|
168
|
+
if (patch.orchestrator) Object.assign(settings.chat, patch.orchestrator);
|
|
169
|
+
if (patch.background) Object.assign(settings.context.memory, patch.background);
|
|
170
|
+
if (patch.workersDefault) Object.assign(settings.fleet.default, patch.workersDefault);
|
|
171
|
+
if (patch.scope) settings.chat.modelPicker.cycleSet = [...patch.scope];
|
|
166
172
|
}
|
|
167
173
|
|
|
168
174
|
/**
|
|
@@ -176,26 +182,24 @@ export function mergeRoutingPatchIntoSettings(settings: ClioSettings, patch: Rou
|
|
|
176
182
|
*/
|
|
177
183
|
export function routingPatchForId(path: string, settings: Readonly<ClioSettings>): RoutingPatch | null {
|
|
178
184
|
switch (path) {
|
|
179
|
-
case "
|
|
180
|
-
return { orchestrator: { target: settings.
|
|
181
|
-
case "
|
|
182
|
-
return { orchestrator: { model: settings.
|
|
183
|
-
case "
|
|
184
|
-
return { orchestrator: { thinkingLevel: settings.
|
|
185
|
-
case "
|
|
186
|
-
return { background: { target: settings.
|
|
187
|
-
case "
|
|
188
|
-
return { background: { model: settings.
|
|
189
|
-
case "
|
|
190
|
-
return {
|
|
191
|
-
case "
|
|
192
|
-
return { workersDefault: {
|
|
193
|
-
case "
|
|
194
|
-
return { workersDefault: {
|
|
195
|
-
case "
|
|
196
|
-
return {
|
|
197
|
-
case "scope":
|
|
198
|
-
return { scope: [...(settings.scope ?? [])] };
|
|
185
|
+
case "chat.target":
|
|
186
|
+
return { orchestrator: { target: settings.chat.target, model: settings.chat.model } };
|
|
187
|
+
case "chat.model":
|
|
188
|
+
return { orchestrator: { model: settings.chat.model } };
|
|
189
|
+
case "chat.thinkingLevel":
|
|
190
|
+
return { orchestrator: { thinkingLevel: settings.chat.thinkingLevel } };
|
|
191
|
+
case "context.memory.target":
|
|
192
|
+
return { background: { target: settings.context.memory.target, model: settings.context.memory.model } };
|
|
193
|
+
case "context.memory.model":
|
|
194
|
+
return { background: { model: settings.context.memory.model } };
|
|
195
|
+
case "fleet.default.target":
|
|
196
|
+
return { workersDefault: { target: settings.fleet.default.target, model: settings.fleet.default.model } };
|
|
197
|
+
case "fleet.default.model":
|
|
198
|
+
return { workersDefault: { model: settings.fleet.default.model } };
|
|
199
|
+
case "fleet.default.thinkingLevel":
|
|
200
|
+
return { workersDefault: { thinkingLevel: settings.fleet.default.thinkingLevel } };
|
|
201
|
+
case "chat.modelPicker.cycleSet":
|
|
202
|
+
return { scope: [...settings.chat.modelPicker.cycleSet] };
|
|
199
203
|
default:
|
|
200
204
|
return null;
|
|
201
205
|
}
|
|
@@ -224,13 +228,17 @@ function scopeEquals(a: ReadonlyArray<string>, b: ReadonlyArray<string>): boolea
|
|
|
224
228
|
*/
|
|
225
229
|
export function diffRouting(prev: Readonly<ClioSettings>, next: Readonly<ClioSettings>): RoutingPatch | null {
|
|
226
230
|
const patch: RoutingPatch = {};
|
|
227
|
-
const orchestrator = diffTarget(prev.
|
|
231
|
+
const orchestrator = diffTarget(prev.chat, next.chat);
|
|
228
232
|
if (orchestrator) patch.orchestrator = orchestrator;
|
|
229
|
-
const background = diffTarget(
|
|
233
|
+
const background = diffTarget(
|
|
234
|
+
{ ...prev.context.memory, thinkingLevel: "off" },
|
|
235
|
+
{ ...next.context.memory, thinkingLevel: "off" },
|
|
236
|
+
);
|
|
230
237
|
if (background) patch.background = background;
|
|
231
|
-
const workersDefault = diffTarget(prev.
|
|
238
|
+
const workersDefault = diffTarget(prev.fleet.default, next.fleet.default);
|
|
232
239
|
if (workersDefault) patch.workersDefault = workersDefault;
|
|
233
|
-
if (!scopeEquals(prev.
|
|
240
|
+
if (!scopeEquals(prev.chat.modelPicker.cycleSet, next.chat.modelPicker.cycleSet))
|
|
241
|
+
patch.scope = [...next.chat.modelPicker.cycleSet];
|
|
234
242
|
return Object.keys(patch).length > 0 ? patch : null;
|
|
235
243
|
}
|
|
236
244
|
|
|
@@ -241,16 +249,15 @@ export function diffRouting(prev: Readonly<ClioSettings>, next: Readonly<ClioSet
|
|
|
241
249
|
* saved routing defaults with this session's live routing.
|
|
242
250
|
*/
|
|
243
251
|
export function restoreRoutingFields(target: ClioSettings, source: Readonly<ClioSettings>): void {
|
|
244
|
-
target.
|
|
245
|
-
target.
|
|
246
|
-
target.
|
|
247
|
-
target.
|
|
248
|
-
target.
|
|
249
|
-
target.
|
|
250
|
-
target.
|
|
251
|
-
target.
|
|
252
|
-
target.
|
|
253
|
-
target.scope = [...(source.scope ?? [])];
|
|
252
|
+
target.chat.target = source.chat.target;
|
|
253
|
+
target.chat.model = source.chat.model;
|
|
254
|
+
target.chat.thinkingLevel = source.chat.thinkingLevel;
|
|
255
|
+
target.context.memory.target = source.context.memory.target;
|
|
256
|
+
target.context.memory.model = source.context.memory.model;
|
|
257
|
+
target.fleet.default.target = source.fleet.default.target;
|
|
258
|
+
target.fleet.default.model = source.fleet.default.model;
|
|
259
|
+
target.fleet.default.thinkingLevel = source.fleet.default.thinkingLevel;
|
|
260
|
+
target.chat.modelPicker.cycleSet = [...source.chat.modelPicker.cycleSet];
|
|
254
261
|
}
|
|
255
262
|
|
|
256
263
|
const ROUTING_FIELD_LABELS: ReadonlyArray<{
|
|
@@ -258,20 +265,23 @@ const ROUTING_FIELD_LABELS: ReadonlyArray<{
|
|
|
258
265
|
label: string;
|
|
259
266
|
read: (settings: Readonly<ClioSettings>) => unknown;
|
|
260
267
|
}> = [
|
|
261
|
-
{ field: "
|
|
262
|
-
{ field: "
|
|
263
|
-
{ field: "
|
|
264
|
-
{ field: "
|
|
265
|
-
{ field: "
|
|
266
|
-
{ field: "
|
|
267
|
-
{ field: "
|
|
268
|
-
{ field: "workers.default.model", label: "fleet model", read: (s) => s.workers.default.model ?? null },
|
|
268
|
+
{ field: "chat.target", label: "chat target", read: (s) => s.chat.target ?? null },
|
|
269
|
+
{ field: "chat.model", label: "chat model", read: (s) => s.chat.model ?? null },
|
|
270
|
+
{ field: "chat.thinkingLevel", label: "chat thinking", read: (s) => s.chat.thinkingLevel ?? "off" },
|
|
271
|
+
{ field: "context.memory.target", label: "memory target", read: (s) => s.context.memory.target ?? null },
|
|
272
|
+
{ field: "context.memory.model", label: "memory model", read: (s) => s.context.memory.model ?? null },
|
|
273
|
+
{ field: "fleet.default.target", label: "fleet target", read: (s) => s.fleet.default.target ?? null },
|
|
274
|
+
{ field: "fleet.default.model", label: "fleet model", read: (s) => s.fleet.default.model ?? null },
|
|
269
275
|
{
|
|
270
|
-
field: "
|
|
276
|
+
field: "fleet.default.thinkingLevel",
|
|
271
277
|
label: "fleet thinking",
|
|
272
|
-
read: (s) => s.
|
|
278
|
+
read: (s) => s.fleet.default.thinkingLevel ?? "off",
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
field: "chat.modelPicker.cycleSet",
|
|
282
|
+
label: "Alt+J/Alt+K cycle set",
|
|
283
|
+
read: (s) => s.chat.modelPicker.cycleSet.join(","),
|
|
273
284
|
},
|
|
274
|
-
{ field: "scope", label: "Alt+J/Alt+K scope", read: (s) => (s.scope ?? []).join(",") },
|
|
275
285
|
];
|
|
276
286
|
|
|
277
287
|
/**
|
|
@@ -282,7 +292,7 @@ const ROUTING_FIELD_LABELS: ReadonlyArray<{
|
|
|
282
292
|
* writer — a second session, the CLI, or a manual edit — moved the defaults
|
|
283
293
|
* out from under this session.
|
|
284
294
|
*/
|
|
285
|
-
|
|
295
|
+
function externalRoutingDivergence(
|
|
286
296
|
changedPaths: ReadonlyArray<string>,
|
|
287
297
|
saved: Readonly<ClioSettings>,
|
|
288
298
|
effective: Readonly<ClioSettings>,
|
|
@@ -325,7 +335,7 @@ export function routingChangeNotices(
|
|
|
325
335
|
text: `settings.yaml changed (${diverged.join(", ")}). This session keeps its routing; new sessions use the saved defaults.${hint}`,
|
|
326
336
|
});
|
|
327
337
|
}
|
|
328
|
-
const activeTarget = effective.
|
|
338
|
+
const activeTarget = effective.chat.target;
|
|
329
339
|
const targetsTouched = changedPaths.some((path) => path === "targets" || path.startsWith("targets."));
|
|
330
340
|
if (activeTarget && targetsTouched && !saved.targets.some((entry) => entry.id === activeTarget)) {
|
|
331
341
|
const hint = options?.commandHints ? " (/model)" : "";
|
|
@@ -19,6 +19,24 @@ export const SKILL_SUGGESTION_ANCHOR = "Suggested skill: /skill <name>";
|
|
|
19
19
|
*/
|
|
20
20
|
export const SKILL_SUGGESTION_PREFIX = SKILL_SUGGESTION_ANCHOR.slice(0, SKILL_SUGGESTION_ANCHOR.indexOf("<name>"));
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* The four fixed answer labels of a marketplace install offer. Every surface
|
|
24
|
+
* that teaches or reads the offer (the marketplace-offer middleware, the
|
|
25
|
+
* skills fragment, the context listing footer) cites these exact strings, so
|
|
26
|
+
* the after_tool observer that records declines and runs consented installs
|
|
27
|
+
* recognizes the operator's choice by label identity, never by paraphrase.
|
|
28
|
+
*/
|
|
29
|
+
export const SKILL_INSTALL_OFFER_OPTION_PROJECT = "Install for this project";
|
|
30
|
+
export const SKILL_INSTALL_OFFER_OPTION_USER = "Install globally";
|
|
31
|
+
export const SKILL_INSTALL_OFFER_OPTION_NOT_NOW = "Not now";
|
|
32
|
+
export const SKILL_INSTALL_OFFER_OPTION_NEVER = "Never offer this skill";
|
|
33
|
+
export const SKILL_INSTALL_OFFER_OPTIONS = [
|
|
34
|
+
SKILL_INSTALL_OFFER_OPTION_PROJECT,
|
|
35
|
+
SKILL_INSTALL_OFFER_OPTION_USER,
|
|
36
|
+
SKILL_INSTALL_OFFER_OPTION_NOT_NOW,
|
|
37
|
+
SKILL_INSTALL_OFFER_OPTION_NEVER,
|
|
38
|
+
] as const;
|
|
39
|
+
|
|
22
40
|
export interface PendingSkillRequest {
|
|
23
41
|
name: string;
|
|
24
42
|
args: string;
|
package/src/core/termination.ts
CHANGED
|
@@ -37,7 +37,7 @@ const SIGNAL_EXIT_CODES: Partial<Record<NodeJS.Signals, number>> = {
|
|
|
37
37
|
* Break `text` into lines no wider than `width` columns, at spaces where
|
|
38
38
|
* possible and mid-word when a single token is wider than the terminal.
|
|
39
39
|
*/
|
|
40
|
-
|
|
40
|
+
function wrapToWidth(text: string, width: number): string[] {
|
|
41
41
|
if (!Number.isFinite(width) || width < 1) return [text];
|
|
42
42
|
const lines: string[] = [];
|
|
43
43
|
let current = "";
|
|
@@ -156,7 +156,7 @@ class TerminationCoordinator {
|
|
|
156
156
|
const log = (msg: string): void => {
|
|
157
157
|
if (!debug) return;
|
|
158
158
|
const ms = Number(process.hrtime.bigint() - mark) / 1e6;
|
|
159
|
-
process.stderr.write(`[clio:shutdown] +${ms.toFixed(1)}ms ${msg}\n`);
|
|
159
|
+
process.stderr.write(`[clio-coder:shutdown] +${ms.toFixed(1)}ms ${msg}\n`);
|
|
160
160
|
};
|
|
161
161
|
|
|
162
162
|
this.phase = "draining";
|
|
@@ -193,12 +193,12 @@ class TerminationCoordinator {
|
|
|
193
193
|
const t0 = process.hrtime.bigint();
|
|
194
194
|
const completed = await runWithBudget(hook, budgetMs, (err) => {
|
|
195
195
|
const message = err instanceof Error ? err.message : String(err);
|
|
196
|
-
writeShutdownNotice(`[clio:termination] ${phase}[${i}] failed: ${message}`);
|
|
196
|
+
writeShutdownNotice(`[clio-coder:termination] ${phase}[${i}] failed: ${message}`);
|
|
197
197
|
if (err instanceof Error && err.stack) log(err.stack);
|
|
198
198
|
});
|
|
199
199
|
const dt = Number(process.hrtime.bigint() - t0) / 1e6;
|
|
200
200
|
if (!completed) {
|
|
201
|
-
writeShutdownNotice(`[clio:termination] ${phase}[${i}] exceeded ${budgetMs}ms budget; shutdown continues`);
|
|
201
|
+
writeShutdownNotice(`[clio-coder:termination] ${phase}[${i}] exceeded ${budgetMs}ms budget; shutdown continues`);
|
|
202
202
|
}
|
|
203
203
|
log(` ${phase}[${i}] ${dt.toFixed(1)}ms${completed ? "" : " (timed out)"}`);
|
|
204
204
|
}
|
package/src/core/timers.ts
CHANGED
|
@@ -14,8 +14,6 @@ export function sleep(ms: number): Promise<void> {
|
|
|
14
14
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
let negativeDurations = 0;
|
|
18
|
-
|
|
19
17
|
/**
|
|
20
18
|
* Elapsed between two reads of the same clock, signed.
|
|
21
19
|
*
|
|
@@ -23,16 +21,8 @@ let negativeDurations = 0;
|
|
|
23
21
|
* an NTP correction, a resume, or a duration derived across two hosts — and it
|
|
24
22
|
* is a bug in the caller, not a value to be silently swallowed. Clamping with
|
|
25
23
|
* `Math.max(0, …)` hides that, so the clamp belongs at the render boundary and
|
|
26
|
-
* nothing else.
|
|
27
|
-
* because the TUI owns that stream and this sits on hot measurement paths.
|
|
24
|
+
* nothing else.
|
|
28
25
|
*/
|
|
29
26
|
export function rawDurationMs(start: number, end: number): number {
|
|
30
|
-
|
|
31
|
-
if (elapsed < 0) negativeDurations += 1;
|
|
32
|
-
return elapsed;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/** How many negative durations this process has produced since it started. */
|
|
36
|
-
export function negativeDurationCount(): number {
|
|
37
|
-
return negativeDurations;
|
|
27
|
+
return end - start;
|
|
38
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Architect
|
|
4
|
-
description: Designs
|
|
4
|
+
description: Designs a change across boundaries and slices it into a sprint. Covers contracts, migrations, and validation gates, and turns an existing plan into a dependency-ordered sprint through its bound cut-it skill.
|
|
5
5
|
tools:
|
|
6
6
|
required: [artifact, context]
|
|
7
7
|
optional: [read, grep, find, ls, code_nav, git, ledger]
|
|
@@ -22,8 +22,7 @@ You are Architect, the base design agent for coding work.
|
|
|
22
22
|
Start by restating the requested change, the affected modules, and the decision the operator needs.
|
|
23
23
|
Read contracts, manifests, call sites, and recent diffs before recommending a shape.
|
|
24
24
|
Map ownership boundaries first: domains, engine, worker, tools, prompts, tests, docs, and runtime receipts.
|
|
25
|
-
|
|
26
|
-
Use codewiki tools only when the assignment is navigation-heavy. Otherwise rely on the provided context and targeted reads.
|
|
25
|
+
When `code_nav` is among your tools and a wiki exists, check `code_nav mode=wiki` and read `.clio-coder/wiki/quickstart.md` before broad exploration; otherwise rely on the provided context and targeted reads.
|
|
27
26
|
Prefer extending existing contracts over adding abstractions unless the new surface removes real complexity.
|
|
28
27
|
Separate the required implementation slice from optional follow-up work.
|
|
29
28
|
Call out prompt, safety, persistence, worker-runtime, and test consequences when they apply.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Coder
|
|
4
|
-
description: Implements bounded code changes, repairs, and
|
|
4
|
+
description: Implements bounded code changes, repairs, and refactors. Behavior-preserving by default.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}, context]
|
|
7
7
|
optional: [grep, find, ls, web_fetch, git, verify, code_nav, bash, ledger]
|
|
@@ -21,12 +21,13 @@ tags: [implementation, repair, refactor]
|
|
|
21
21
|
You are Coder, the base implementation agent.
|
|
22
22
|
Start by restating the assigned coding task and the finished-state criteria.
|
|
23
23
|
Read the local code, tests, and call sites before changing files.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, deps, dependents) over broad reads to locate definitions and call sites.
|
|
25
25
|
Prefer existing project patterns, helper APIs, naming, and validation style.
|
|
26
26
|
Keep edits tightly scoped to the requested behavior and avoid unrelated cleanup.
|
|
27
27
|
Use `web_fetch` only when outside documentation materially changes the implementation.
|
|
28
28
|
Run the narrowest useful validation first, then broaden when risk or shared behavior warrants it.
|
|
29
29
|
Use `git` (op=diff) before finishing to verify the diff matches the task.
|
|
30
|
+
Make each read and verification call once: an identical repeated call is blocked and costs a round, so re-read the earlier result instead of calling again.
|
|
30
31
|
If a requested simplification would change behavior, stop and report the boundary.
|
|
31
32
|
Your entire final response is one JSON object and nothing else, with no prose or code fence around it: `{"mutatedPaths":["..."],"validations":[{"name":"...","passed":true,"evidence":"..."}]}`. Report every mutation and at least one concrete validation result.
|
|
32
33
|
`validations` is never empty and never a list of strings. Each entry is one check you actually made, shaped like `{"name":"npm test","passed":true,"evidence":"exit 0"}`, with no other keys. When the task changed nothing, the read or command you did run is still the validation: name it and quote what it showed.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Debugger
|
|
4
|
-
description: Diagnoses failing code, tests, receipts,
|
|
4
|
+
description: Diagnoses failing code, tests, or runs without editing. Reads receipts, logs, and runtime behavior to name the cause.
|
|
5
5
|
tools:
|
|
6
6
|
required: [verify]
|
|
7
7
|
optional: [read, grep, find, ls, git, code_nav, ledger]
|
|
@@ -21,7 +21,7 @@ tags: [debugging, root-cause, tests]
|
|
|
21
21
|
You are Debugger, the base diagnostic agent for coding failures.
|
|
22
22
|
Start by restating the failing behavior, expected behavior, and evidence source you were given.
|
|
23
23
|
Inspect the relevant files, tests, commands, receipts, or logs before forming a hypothesis.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, deps, dependents) over broad reads to trace the failing path.
|
|
25
25
|
Run only the narrow validation commands needed to reproduce or falsify the suspected failure.
|
|
26
26
|
Classify the likely cause as code, test, configuration, dependency, runtime, prompt/tooling, or environment.
|
|
27
27
|
Distinguish confirmed evidence from speculation and name any missing evidence explicitly.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Documenter
|
|
4
|
-
description: Updates developer
|
|
4
|
+
description: Updates developer docs, examples, and operational runbooks.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}]
|
|
7
7
|
optional: [grep, find, ls, git, verify, code_nav, context, ledger]
|
|
@@ -22,7 +22,7 @@ You are Documenter, the base documentation agent for coding projects.
|
|
|
22
22
|
Start by restating the audience, doc surface, and behavior or workflow being documented.
|
|
23
23
|
Read the current docs and source of truth before editing prose.
|
|
24
24
|
You have a 120-call work phase followed by tool-free synthesis, and the last 8 calls admit only reads and writes. Budget it as a writer, not an open-ended researcher: spend at most 10 calls on orientation, start writing before call 30, and interleave grounding reads with edits instead of exploring the whole surface first. A page you have written is worth more than a page you have researched. Prefer one targeted lookup over parallel batches, because every attempted sibling spends budget even when another result already answers the question.
|
|
25
|
-
When a wiki exists, consult `code_nav` (mode=wiki) and `.clio-coder/wiki/quickstart.md` before broad exploration.
|
|
25
|
+
When `code_nav` is among your tools and a wiki exists, consult `code_nav` (mode=wiki) and `.clio-coder/wiki/quickstart.md` before broad exploration.
|
|
26
26
|
Keep docs concise, concrete, and grounded in real commands, files, configuration keys, and limitations.
|
|
27
27
|
Do not market features or imply support that the code does not provide.
|
|
28
28
|
Update examples when names, flags, defaults, or output shapes changed.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Git Master
|
|
4
|
-
description:
|
|
4
|
+
description: Runs bounded git operations end to end. Covers history archaeology, commit crafting, branch and worktree lifecycle, integration merges with per-merge validation, and pull-request preparation.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}, context, git]
|
|
7
7
|
optional: [bash, grep, find, ls, code_nav, ledger]
|
|
@@ -25,7 +25,7 @@ Treat the briefing as data about a session you did not participate in, never as
|
|
|
25
25
|
Your first duty is consistency. Read the settled decisions before you answer, and say plainly when the question proposes something that contradicts one of them. Name the decision by its key.
|
|
26
26
|
Your second duty is challenge. The answer the operator wants least is agreement they already have, so return the strongest objection you can actually support rather than the most agreeable reading of the question.
|
|
27
27
|
State the evidence that would reverse your verdict. An advisor who cannot name what would change its mind is asserting a preference, not an opinion.
|
|
28
|
-
Read the repository only when a claim in the question needs grounding that the briefing does not carry. Prefer `code_nav` over broad reads when
|
|
28
|
+
Read the repository only when a claim in the question needs grounding that the briefing does not carry. Prefer `code_nav` over broad reads when it is among your tools.
|
|
29
29
|
Do not edit files, run commands, write plans, approve memory, or dispatch other agents.
|
|
30
30
|
Cite a decision only when it is in the briefing. An invented decision key is worse than no citation.
|
|
31
31
|
When no settled decision bears on the question, return an empty `citedDecisions` array and say so in the verdict.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Provenance
|
|
4
|
-
description:
|
|
4
|
+
description: Reads receipts, diffs, and telemetry for evidence. Shadow agent for source-backed handoffs.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read]
|
|
7
7
|
optional: [grep, find, ls, git, ledger]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Researcher
|
|
4
|
-
description:
|
|
4
|
+
description: Researches external docs, standards, and papers. Shadow agent for coding decisions, official documentation, release notes, and academic sources.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read]
|
|
7
7
|
optional: [web_fetch, context, ledger]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Scout
|
|
4
|
-
description:
|
|
4
|
+
description: Broad repository reconnaissance with cited findings. Use for codebase orientation, structure and entry-point mapping, or multi-file symbol hunting; spends no main-context tool calls.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read]
|
|
7
7
|
optional: [grep, find, ls, context, code_nav, git, ledger]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Tester
|
|
4
|
-
description: Adds focused deterministic
|
|
4
|
+
description: Adds focused deterministic regression and coverage tests.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}]
|
|
7
7
|
optional: [grep, find, ls, git, verify, code_nav, ledger]
|
|
@@ -21,7 +21,7 @@ tags: [tests, regression, validation]
|
|
|
21
21
|
You are Tester, the base test-authoring agent.
|
|
22
22
|
Start by restating the behavior under test and the failure mode the test must catch.
|
|
23
23
|
Read the existing test style before adding or changing tests.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, dependents) over broad reads to find the code under test and its callers.
|
|
25
25
|
Prefer the smallest deterministic unit, contract, boundary, or smoke test that proves the behavior.
|
|
26
26
|
Mock external services and unstable runtimes unless the task explicitly asks for live validation.
|
|
27
27
|
Do not change production code unless the test harness needs a minimal exported seam.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Verifier
|
|
4
|
-
description:
|
|
4
|
+
description: Runs test, lint, build, review, and release gates. Reports each gate independently.
|
|
5
5
|
tools:
|
|
6
6
|
required: [verify]
|
|
7
7
|
optional: [read, grep, find, ls, git, code_nav, ledger]
|
|
@@ -21,7 +21,7 @@ tags: [verification, gates, review]
|
|
|
21
21
|
You are Verifier, the base independent quality agent.
|
|
22
22
|
Start by restating the artifact, diff, command, or release gate you are validating.
|
|
23
23
|
Inspect scripts, docs, recent diffs, and touched files before choosing commands.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, dependents) over broad reads to scope what a diff touches.
|
|
25
25
|
Run only the checks required for the requested confidence level.
|
|
26
26
|
Prefer typed validation tools over arbitrary shell execution.
|
|
27
27
|
Call `verify()` before choosing an executable check. It lists package scripts and strict project entries from `.clio-coder/verifiers.yaml` through the same metadata shape.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Wiki Writer
|
|
4
|
-
description: Plans
|
|
4
|
+
description: Plans a repository wiki or writes one wiki page. Works against a supplied plan.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}]
|
|
7
7
|
optional: [grep, find, ls, code_nav, context, ledger]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type AgentSpec, isUserVisibleAgent, normalizeAgentSpec } from "./spec.js";
|
|
1
|
+
import { type AgentSpec, isUserVisibleAgent } from "./spec.js";
|
|
3
2
|
|
|
4
3
|
const DEFAULT_DISPATCH_AGENT_ID = "coder";
|
|
5
4
|
|
|
@@ -20,27 +19,18 @@ export interface AgentCatalogSections {
|
|
|
20
19
|
volatile: string;
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
function renderAgentCatalogSections(recipes: ReadonlyArray<AgentRecipe>): AgentCatalogSections {
|
|
24
|
-
return renderAgentCatalogSectionsFromSpecs(recipes.map(normalizeAgentSpec));
|
|
25
|
-
}
|
|
26
|
-
|
|
27
22
|
/** Keeps one roster line short enough that the whole fleet block stays near its token budget. */
|
|
28
23
|
const FLEET_PROMPT_PURPOSE_MAX_CHARS = 64;
|
|
29
24
|
|
|
30
|
-
/**
|
|
31
|
-
* The delegation default stated as a rule the model can evaluate against the
|
|
32
|
-
* task in front of it. The E19 drive found the previous phrasing lost to
|
|
33
|
-
* inertia every time: an incentive ("dispatch is the cheap path") is not a
|
|
34
|
-
* test, so a model that had already started reading simply kept reading. A
|
|
35
|
-
* threshold it can count against is.
|
|
36
|
-
*/
|
|
37
|
-
export const FLEET_DELEGATION_RULE =
|
|
38
|
-
"Delegate when the task has two or more independent file-scoped subtasks, or any broad exploration. You keep synthesis and validation; a single narrow change stays with you.";
|
|
39
|
-
|
|
40
25
|
/**
|
|
41
26
|
* S3 handed two files to a worker, then edited both itself before dispatching,
|
|
42
|
-
* reverted one, and disclosed neither. The
|
|
43
|
-
*
|
|
27
|
+
* reverted one, and disclosed neither. The threshold that says what to hand
|
|
28
|
+
* off lives in the Delegation section (`operating.delegation`), stated once
|
|
29
|
+
* as a count taken before the first edit with the dispatch call shape next
|
|
30
|
+
* to it; the E19 drive found an incentive ("dispatch is the cheap path") lost
|
|
31
|
+
* to inertia every time, and the round-2 drive found the bare threshold here,
|
|
32
|
+
* after the tool contract and without a call shape, lost the same way on
|
|
33
|
+
* two of two runs. This line says what handing off costs you.
|
|
44
34
|
*/
|
|
45
35
|
export const FLEET_HANDOFF_RULE =
|
|
46
36
|
"A file you assigned to a worker is not yours to edit while its dispatch is pending or after it succeeds; if you already changed it, say so in your report.";
|
|
@@ -109,11 +99,14 @@ export function renderFleetPromptSection(input: ReadonlyArray<AgentSpec>): strin
|
|
|
109
99
|
|
|
110
100
|
const lines: string[] = [
|
|
111
101
|
"# Fleet",
|
|
112
|
-
FLEET_DELEGATION_RULE,
|
|
113
102
|
FLEET_HANDOFF_RULE,
|
|
114
103
|
FLEET_ANTI_CHURN_RULE,
|
|
115
104
|
FLEET_REFUSAL_DISCLOSURE,
|
|
116
|
-
`
|
|
105
|
+
// `agent:"auto"` baselines by task shape and can still land on a worker
|
|
106
|
+
// whose capability class is wrong for the job, so a pinned id is the
|
|
107
|
+
// reliable path; said here, next to the ids, rather than in the Tool
|
|
108
|
+
// Contract.
|
|
109
|
+
`Workers you reach with \`dispatch\` by \`agent\` id (default ${DEFAULT_DISPATCH_AGENT_ID}); agent:"auto" is a fallback, not a router. Capability class is what a worker may do: a read-only worker cannot edit.`,
|
|
117
110
|
FLEET_SPECIALIST_ROUTING,
|
|
118
111
|
];
|
|
119
112
|
if (publicSpecs.length > 0) {
|
|
@@ -129,7 +122,7 @@ export function renderFleetPromptSection(input: ReadonlyArray<AgentSpec>): strin
|
|
|
129
122
|
/**
|
|
130
123
|
* Spec-based roster used when the caller already holds normalized specs.
|
|
131
124
|
* `AgentsContract.listSpecs()` includes ACP delegation agents synthesized from
|
|
132
|
-
* settings.
|
|
125
|
+
* settings.integrations.externalAgents.entries[], which never exist as recipe files; rendering
|
|
133
126
|
* from specs keeps those dispatchable targets discoverable in the fleet block.
|
|
134
127
|
*/
|
|
135
128
|
export function renderAgentCatalogSectionsFromSpecs(input: ReadonlyArray<AgentSpec>): AgentCatalogSections {
|
|
@@ -178,8 +171,3 @@ function formatSpecLine(spec: AgentSpec, suffix: string): string {
|
|
|
178
171
|
const budget = `, budget=${spec.budget.toolCalls}/${spec.budget.readReserve}${maximum}/${spec.budget.synthesis ? "synthesize" : "stop"}`;
|
|
179
172
|
return `- ${spec.name} [${spec.id}] (${spec.audience}, ${spec.category}, ${spec.capabilityClass}, ${spec.latencyClass}, ${spec.source}${tags}${skills}${budget})${suffix}`;
|
|
180
173
|
}
|
|
181
|
-
|
|
182
|
-
export function renderAgentCatalog(recipes: ReadonlyArray<AgentRecipe>): string {
|
|
183
|
-
const sections = renderAgentCatalogSections(recipes);
|
|
184
|
-
return [sections.stable, sections.volatile].filter((part) => part.trim().length > 0).join("\n\n");
|
|
185
|
-
}
|
|
@@ -3,6 +3,8 @@ import type { AgentRecipeDiagnostic } from "./registry.js";
|
|
|
3
3
|
import type { AgentSpec } from "./spec.js";
|
|
4
4
|
|
|
5
5
|
export interface AgentsContract {
|
|
6
|
+
/** Monotonic catalog revision; changes after every successful discovery. */
|
|
7
|
+
revision(): number;
|
|
6
8
|
/** Raw recipes as loaded from Markdown files. */
|
|
7
9
|
list(): ReadonlyArray<AgentRecipe>;
|
|
8
10
|
get(id: string): AgentRecipe | null;
|