@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.
Files changed (751) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/CONTRIBUTING.md +59 -36
  3. package/README.md +407 -375
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-G5WJBNCT.js → acp-TMDQZDIG.js} +14 -14
  6. package/dist/{agents-FMV2Q5G4.js → agents-5N5NG3XG.js} +45 -34
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-3IDSJEIK.js → auth-Z5CCBXKQ.js} +22 -21
  9. package/dist/{builtins-XCZWXSC7.js → builtins-K6TNDT24.js} +6 -6
  10. package/dist/{chunk-GR5G2PVF.js → chunk-2HFQNRV3.js} +15 -10
  11. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  12. package/dist/{chunk-HJJTYUHX.js → chunk-2NHR3NAY.js} +168 -1406
  13. package/dist/chunk-2X4RYJTJ.js +39 -0
  14. package/dist/{chunk-UXMFQ54G.js → chunk-2Z2IKEXI.js} +39 -43
  15. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  16. package/dist/chunk-34BHNEE3.js +1846 -0
  17. package/dist/{chunk-YJX4SHTD.js → chunk-35MSIRKH.js} +9 -4
  18. package/dist/chunk-3EBYEESD.js +314 -0
  19. package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
  20. package/dist/chunk-3KIPBMUA.js +308 -0
  21. package/dist/chunk-3M6DQK6S.js +362 -0
  22. package/dist/{chunk-BPKCPIL7.js → chunk-462T4EGZ.js} +3 -3
  23. package/dist/{chunk-QLFS5GO2.js → chunk-4JDLP6ZS.js} +44 -37
  24. package/dist/{chunk-LDQ2ZF2M.js → chunk-4O6MANBS.js} +6 -6
  25. package/dist/{chunk-O6TL7WWY.js → chunk-54ODD65L.js} +6 -6
  26. package/dist/{chunk-JDG2WCRO.js → chunk-5KW52TEP.js} +5 -5
  27. package/dist/{chunk-NHLBIGRH.js → chunk-5PFYMY2V.js} +41 -18
  28. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  29. package/dist/chunk-77QIVUZB.js +1334 -0
  30. package/dist/{chunk-HWHKMHUA.js → chunk-7BHIY2MW.js} +9 -15
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-VAZSBTKF.js → chunk-AZ4WMN4W.js} +2 -2
  33. package/dist/{chunk-B7OBL7PK.js → chunk-B74PXLU7.js} +21 -11
  34. package/dist/{chunk-CY6FY24N.js → chunk-B7HM5Z7T.js} +15 -15
  35. package/dist/{chunk-ULC6OTWO.js → chunk-BO7Y52RY.js} +88 -27
  36. package/dist/chunk-BTK3SSSK.js +67 -0
  37. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  38. package/dist/{chunk-DQITNCXG.js → chunk-BYMNWQ7O.js} +149 -159
  39. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  40. package/dist/{chunk-Z4TXYIEG.js → chunk-CRFOIAX3.js} +10 -10
  41. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  42. package/dist/{chunk-3BT2XMV4.js → chunk-CYZW7JHJ.js} +53 -60
  43. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  44. package/dist/chunk-D7E7WCDF.js +27 -0
  45. package/dist/{chunk-X3YGUTOB.js → chunk-DYHAXKHD.js} +90 -62
  46. package/dist/{chunk-QBJA7R7N.js → chunk-DZAW46HP.js} +3 -3
  47. package/dist/{chunk-MLKNTWH2.js → chunk-DZEK6CJN.js} +22 -22
  48. package/dist/{chunk-K5C3NCBD.js → chunk-E7GT7O5N.js} +5 -5
  49. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  50. package/dist/chunk-F2I26BDK.js +66 -0
  51. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  52. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  53. package/dist/{chunk-32KWKNSF.js → chunk-FVDGR2ZL.js} +4 -4
  54. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  55. package/dist/{chunk-SJ5ZKQ4S.js → chunk-HIICAHCJ.js} +2 -2
  56. package/dist/chunk-HJWWJ6IL.js +184 -0
  57. package/dist/{chunk-WZR7K7ZX.js → chunk-HKMD33FO.js} +32 -83
  58. package/dist/chunk-HLAFFSEK.js +360 -0
  59. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  60. package/dist/{chunk-KFZI4NIL.js → chunk-I64IFBLB.js} +152 -31
  61. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  62. package/dist/{chunk-BUMFYQFY.js → chunk-I66ZTYNP.js} +543 -267
  63. package/dist/{chunk-2OQE55CK.js → chunk-I7XBWTYH.js} +2 -2
  64. package/dist/{chunk-GKF55TAZ.js → chunk-IDNA72AH.js} +104 -3
  65. package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
  66. package/dist/{chunk-J4W7KFM7.js → chunk-IKSLQ4XV.js} +5439 -3475
  67. package/dist/{chunk-6DB53AJS.js → chunk-IMXMHHMQ.js} +171 -30
  68. package/dist/{chunk-AB44T6BB.js → chunk-JBCS7CRR.js} +8 -7
  69. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  70. package/dist/{chunk-SP2RXXYO.js → chunk-JWJGP5DQ.js} +10 -10
  71. package/dist/{chunk-HZHHCK24.js → chunk-KKOJXO6R.js} +527 -325
  72. package/dist/chunk-KPXDY6QF.js +47 -0
  73. package/dist/{chunk-LQ3DZAMX.js → chunk-LJID3DYZ.js} +8 -2
  74. package/dist/{chunk-7MCTRUCE.js → chunk-M2DAX4F6.js} +2 -2
  75. package/dist/{chunk-VEO4AP2K.js → chunk-M2WXEHER.js} +4 -3
  76. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  77. package/dist/{chunk-YDFRH54B.js → chunk-MCMZMDAC.js} +4 -4
  78. package/dist/{chunk-J5Q24KAG.js → chunk-MNJGS2IN.js} +5 -6
  79. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  80. package/dist/chunk-NDDGJUXD.js +81 -0
  81. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  82. package/dist/chunk-NMJXSHBJ.js +283 -0
  83. package/dist/{chunk-VYMXRQI6.js → chunk-O3YUNJZ2.js} +88 -100
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-Z2RR6MAK.js → chunk-P75RZCJW.js} +28 -6
  86. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  87. package/dist/{chunk-DYJP44XW.js → chunk-PGF63K6I.js} +2 -2
  88. package/dist/chunk-PJX3WQUQ.js +42 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-2JDWVJND.js → chunk-Q4XWMHX6.js} +5 -7
  91. package/dist/{chunk-W5VSYASO.js → chunk-QQLGQY2A.js} +46 -87
  92. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  93. package/dist/{chunk-C2LTL2W6.js → chunk-RLYRBIYQ.js} +463 -180
  94. package/dist/{chunk-4ZG3XFUR.js → chunk-S66XZJOF.js} +14 -23
  95. package/dist/{chunk-I5VEOC6I.js → chunk-SSEYRH53.js} +13 -14
  96. package/dist/chunk-SZAA6XDG.js +30 -0
  97. package/dist/{chunk-CODPRO7Q.js → chunk-TPEQIQIE.js} +7 -7
  98. package/dist/{chunk-QLL7ILRG.js → chunk-UBRFI4HS.js} +1151 -614
  99. package/dist/{chunk-O4XIVISU.js → chunk-UH347SHR.js} +227 -47
  100. package/dist/{chunk-OQBA45DZ.js → chunk-UH632ZYL.js} +2 -2
  101. package/dist/chunk-UXCU4E3T.js +303 -0
  102. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  103. package/dist/{chunk-IQ7KR472.js → chunk-VIA6RFQZ.js} +8 -13
  104. package/dist/{chunk-V5DHCITQ.js → chunk-VKPAQYEB.js} +49 -19
  105. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  106. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  107. package/dist/{chunk-3XML7CDN.js → chunk-W4YEMFBX.js} +3 -3
  108. package/dist/{chunk-U77AMWDL.js → chunk-W6NIE6OW.js} +44 -23
  109. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  110. package/dist/{chunk-QREDIESB.js → chunk-X7IARSHT.js} +15 -9
  111. package/dist/{chunk-3URVFKWK.js → chunk-XE3PCIXH.js} +5 -5
  112. package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
  113. package/dist/{chunk-F4CKPOEQ.js → chunk-XOXV5GKE.js} +119 -38
  114. package/dist/chunk-XQRY4DTA.js +657 -0
  115. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  116. package/dist/{chunk-NQQH3YT7.js → chunk-YJISEZKC.js} +3 -3
  117. package/dist/{chunk-X75E3D2N.js → chunk-ZGNYYXQ6.js} +18 -16
  118. package/dist/{chunk-LY4S7GJC.js → chunk-ZNT2M6TG.js} +20 -18
  119. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  120. package/dist/{chunk-IBEBSCYA.js → chunk-ZW4HH5JJ.js} +43 -34
  121. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  122. package/dist/cli/index.js +38 -37
  123. package/dist/{clio-2JXHBBY5.js → clio-7VB377CC.js} +12 -13
  124. package/dist/{code-nav-3YYRMYNF.js → code-nav-YVLCYA7V.js} +86 -18
  125. package/dist/codewiki/build-worker.js +1 -1
  126. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  127. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  128. package/dist/{config-QZPCMYSO.js → config-4HVOS65E.js} +112 -63
  129. package/dist/{configure-TEGEBYCA.js → configure-PIWO7B24.js} +25 -22
  130. package/dist/{context-E6H5RNMC.js → context-IYEHL3WQ.js} +53 -47
  131. package/dist/{context-GSXUE4CT.js → context-KQYIWPWT.js} +68 -42
  132. package/dist/{context-AV7OEZ4D.js → context-N6ZE3LGJ.js} +11 -11
  133. package/dist/{context-clear-SHIBYK6T.js → context-clear-G4OGZJDS.js} +53 -47
  134. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-BWLF6LJP.js} +12 -11
  135. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-2QQAITS3.js} +67 -58
  136. package/dist/{docs-23KQS3XK.js → docs-PD3EXDKU.js} +20 -25
  137. package/dist/doctor-LHBD36VU.js +773 -0
  138. package/dist/{eval-TFBYQH4H.js → eval-C45FYRJ6.js} +68 -49
  139. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-6DEJPLBF.js} +7 -8
  140. package/dist/{evidence-ERGESKGN.js → evidence-6SHONYAF.js} +50 -44
  141. package/dist/{evolve-VDXTSYCJ.js → evolve-KRKMV72X.js} +49 -43
  142. package/dist/{extensions-7BGBHN57.js → extensions-KPZ2UHBB.js} +8 -6
  143. package/dist/{fleet-2RRVDF2V.js → fleet-IVTCKDHT.js} +93 -79
  144. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EDWL3IT7.js} +10 -9
  145. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-YP3YEFGK.js} +6 -6
  146. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-ZFWKHY2M.js} +19 -15
  147. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-FVUNCBML.js} +50 -45
  148. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-UN5XED4R.js} +5 -9
  149. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-XOWC4HSX.js} +22 -17
  150. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-UN3SODEL.js} +48 -43
  151. package/dist/fleet-view-TWHJKCN6.js +96 -0
  152. package/dist/{init-DN2WWLFE.js → init-T2QORQ3Y.js} +72 -66
  153. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  154. package/dist/{interop-OZBKXAYL.js → interop-IN5I2A66.js} +13 -11
  155. package/dist/{library-YWZG7IMW.js → library-LSCATDLZ.js} +23 -18
  156. package/dist/{memory-I4C4HMLW.js → memory-HYOKAGGJ.js} +51 -45
  157. package/dist/{models-CEYXJBO6.js → models-2GPMFYCM.js} +42 -33
  158. package/dist/{monitor-NZ6GCI3P.js → monitor-E4ASVUJH.js} +56 -50
  159. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-DDMPR3PY.js} +2676 -1507
  160. package/dist/{panes-KY6W3V2E.js → panes-E3RUXOW5.js} +5 -5
  161. package/dist/panes-IXKLOKA2.js +75 -0
  162. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  163. package/dist/{reset-DQ6FGCSH.js → reset-OAQP3W4O.js} +7 -8
  164. package/dist/{resources-BB3MVJMD.js → resources-OTRSN34L.js} +23 -17
  165. package/dist/{run-H2GQDUER.js → run-5DEYH5QK.js} +95 -84
  166. package/dist/{share-GTJN6A5O.js → share-IHWTLO3M.js} +26 -19
  167. package/dist/{skills-L55TEW6R.js → skills-IYMXMKW4.js} +25 -20
  168. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-DROHSJAR.js} +63 -65
  169. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-D7X4L4ZX.js} +21 -16
  170. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-QBM7UZ3B.js} +38 -33
  171. package/dist/{steer-RZGSCY4R.js → steer-Z5DO23FJ.js} +3 -3
  172. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  173. package/dist/{targets-NCPZ644J.js → targets-P2FUC4IL.js} +64 -61
  174. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-YREJ3JX2.js} +15 -10
  175. package/dist/{tools-DAF3DI3C.js → tools-5B7RO6MV.js} +10 -8
  176. package/dist/{trace-FYVW2MQA.js → trace-YMGMUM6A.js} +101 -8
  177. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  178. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  179. package/dist/{upgrade-3XPP6OQL.js → upgrade-PXK3S2YM.js} +36 -61
  180. package/dist/{usage-3NLHGTU2.js → usage-ME5MPXGX.js} +58 -53
  181. package/dist/{verifiers-SSQONKRT.js → verifiers-BVZ7IWOO.js} +10 -9
  182. package/dist/{verify-3U6J7FZI.js → verify-5K7ZKQFC.js} +9 -8
  183. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPARV2K7.js} +2 -3
  184. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-F5W5QTYY.js} +74 -70
  185. package/dist/{with-panes-MKB46MPQ.js → with-panes-BYOJCLAM.js} +78 -246
  186. package/dist/worker/entry.js +83 -63
  187. package/docs/README.md +176 -81
  188. package/docs/{acp.md → architecture/acp.md} +36 -20
  189. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  190. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  191. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
  192. package/docs/architecture/artifact-versions.md +90 -0
  193. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  194. package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
  195. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  196. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  197. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  198. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  199. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  200. package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
  201. package/docs/{observability.md → architecture/observability.md} +26 -13
  202. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  203. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
  204. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
  205. package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
  206. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  207. package/docs/architecture/time-conventions.md +125 -0
  208. package/docs/{trace-store.md → architecture/trace-store.md} +26 -13
  209. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  210. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  211. package/docs/{built-in-agents.md → guide/built-in-agents.md} +70 -46
  212. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +73 -62
  213. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -444
  214. package/docs/guide/configuration-reference.md +1158 -0
  215. package/docs/{environment-variables.md → guide/environment-variables.md} +31 -27
  216. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +8 -3
  217. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  218. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +47 -49
  219. package/docs/{glossary.md → guide/glossary.md} +14 -11
  220. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +45 -14
  221. package/docs/guide/panes-and-files.md +290 -0
  222. package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
  223. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  224. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
  225. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  226. package/docs/{troubleshooting.md → guide/troubleshooting.md} +10 -5
  227. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +13 -10
  228. package/docs/history/release-cut-checklist.md +207 -0
  229. package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
  230. package/docs/process/documentation-coverage.md +100 -0
  231. package/docs/process/documentation-guide.md +187 -0
  232. package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
  233. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  234. package/docs/{evolution.md → process/evolution.md} +2 -2
  235. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +17 -10
  236. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  237. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  238. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  239. package/evals/README.md +5 -0
  240. package/evals/behavioral-corpus-grader.mjs +103 -0
  241. package/evals/behavioral-machinery-baseline.json +2276 -0
  242. package/evals/behavioral-machinery-driver.ts +250 -0
  243. package/evals/behavioral-machinery-support.ts +253 -0
  244. package/evals/behavioral-machinery.yaml +614 -0
  245. package/evals/behavioral-model-negative-control.yaml +68 -0
  246. package/evals/behavioral-model.yaml +216 -0
  247. package/evals/fixtures/behavioral-facts.txt +3 -0
  248. package/evals/fixtures/behavioral-main.ts +7 -0
  249. package/evals/fixtures/decoy/note.txt +2 -0
  250. package/evals/fixtures/private/credentials.txt +1 -0
  251. package/evals/tracked-metrics-baseline.yaml +229 -0
  252. package/evals/tracked-metrics-grader.mjs +129 -0
  253. package/package.json +13 -21
  254. package/skills/README.md +51 -42
  255. package/skills/coding/ast-grep/SKILL.md +9 -3
  256. package/skills/coding/coding-standards/SKILL.md +9 -3
  257. package/skills/coding/prototype/SKILL.md +9 -3
  258. package/skills/coding/tdd/SKILL.md +9 -3
  259. package/skills/context/context-handoff/SKILL.md +13 -4
  260. package/skills/context/context-handoff/evals.md +3 -3
  261. package/skills/context/context-prime/SKILL.md +9 -3
  262. package/skills/context/context-prime/evals.md +2 -2
  263. package/skills/git/file-ticket/SKILL.md +10 -5
  264. package/skills/git/file-ticket/evals.md +2 -2
  265. package/skills/git/fix-issue/SKILL.md +12 -5
  266. package/skills/git/fix-issue/evals.md +4 -4
  267. package/skills/git/resolve-merge-conflicts/SKILL.md +9 -3
  268. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  269. package/skills/git/ship/SKILL.md +10 -4
  270. package/skills/git/ship/evals.md +4 -4
  271. package/skills/git/worktree-create/SKILL.md +8 -3
  272. package/skills/git/worktree-create/evals.md +6 -6
  273. package/skills/git/worktree-merge/SKILL.md +8 -3
  274. package/skills/git/worktree-merge/evals.md +6 -6
  275. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +22 -12
  276. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +5 -4
  277. package/skills/meta/clio-coder-test/SKILL.md +146 -0
  278. package/skills/meta/{clio-test → clio-coder-test}/evals.md +10 -5
  279. package/skills/meta/clio-coder-test/references/harness.md +102 -0
  280. package/skills/meta/clio-coder-test/references/test-map.md +96 -0
  281. package/skills/meta/credentials/SKILL.md +10 -3
  282. package/skills/meta/find-skills/SKILL.md +9 -3
  283. package/skills/meta/herdr/SKILL.md +9 -3
  284. package/skills/meta/skill-craft/SKILL.md +39 -16
  285. package/skills/planning/architecture/SKILL.md +9 -3
  286. package/skills/planning/backlog/SKILL.md +9 -3
  287. package/skills/planning/prd/SKILL.md +9 -3
  288. package/skills/planning/product-intent/SKILL.md +9 -3
  289. package/skills/planning/tech-spec/SKILL.md +9 -3
  290. package/skills/registry.yaml +66 -66
  291. package/skills/research/arxiv-literature/SKILL.md +9 -3
  292. package/skills/research/experiment-protocol/SKILL.md +10 -3
  293. package/skills/research/scientific-debugging/SKILL.md +10 -3
  294. package/skills/research/scientific-debugging/evals.md +2 -2
  295. package/skills/research/scientific-modernization/SKILL.md +10 -3
  296. package/skills/skill-marketplace.json +285 -66
  297. package/skills/workflow/cut-it/SKILL.md +11 -3
  298. package/skills/workflow/design-council/SKILL.md +12 -3
  299. package/skills/workflow/grill-me/SKILL.md +9 -3
  300. package/skills/workflow/workflow-distiller/SKILL.md +9 -3
  301. package/src/cli/acp.ts +2 -2
  302. package/src/cli/args.ts +2 -2
  303. package/src/cli/auth.ts +2 -2
  304. package/src/cli/bootstrap-generate.ts +6 -6
  305. package/src/cli/clio.ts +6 -1
  306. package/src/cli/config-inspect.ts +68 -15
  307. package/src/cli/configure-interop.ts +1 -1
  308. package/src/cli/configure.ts +27 -31
  309. package/src/cli/default-target.ts +1 -1
  310. package/src/cli/docs.ts +28 -20
  311. package/src/cli/doctor-naming.ts +323 -0
  312. package/src/cli/doctor-panes.ts +46 -14
  313. package/src/cli/doctor-toolchain.ts +31 -10
  314. package/src/cli/doctor.ts +15 -1
  315. package/src/cli/eval-inventory.ts +8 -8
  316. package/src/cli/eval.ts +1 -2
  317. package/src/cli/evidence-detail.ts +1 -1
  318. package/src/cli/evidence-inventory.ts +1 -1
  319. package/src/cli/extensions.ts +2 -1
  320. package/src/cli/fleet-decisions.ts +1 -1
  321. package/src/cli/fleet-inspect.ts +1 -1
  322. package/src/cli/fleet-preflight.ts +1 -1
  323. package/src/cli/fleet-verify.ts +1 -1
  324. package/src/cli/fleet-view.ts +40 -23
  325. package/src/cli/fleet.ts +9 -6
  326. package/src/cli/index.ts +2 -1
  327. package/src/cli/internal-dispatch.ts +3 -4
  328. package/src/cli/interop-inspect.ts +2 -2
  329. package/src/cli/models.ts +3 -3
  330. package/src/cli/modes/print.ts +1 -1
  331. package/src/cli/panes.ts +19 -5
  332. package/src/cli/reset.ts +1 -1
  333. package/src/cli/run.ts +13 -17
  334. package/src/cli/share.ts +6 -2
  335. package/src/cli/skills-eval.ts +14 -14
  336. package/src/cli/targets.ts +25 -30
  337. package/src/cli/trace-inspect.ts +1 -1
  338. package/src/cli/trace.ts +96 -4
  339. package/src/cli/uninstall.ts +2 -2
  340. package/src/cli/upgrade.ts +29 -34
  341. package/src/cli/usage.ts +2 -2
  342. package/src/cli/validate-model.ts +1 -1
  343. package/src/cli/verifiers-inspect.ts +1 -1
  344. package/src/cli/wiki-generate.ts +6 -6
  345. package/src/core/artifact-paths.ts +1 -1
  346. package/src/core/bash-exec.ts +132 -87
  347. package/src/core/boot-trace.ts +3 -3
  348. package/src/core/bus-events.ts +51 -6
  349. package/src/core/bus-trace.ts +2 -2
  350. package/src/core/compile-cache.ts +1 -1
  351. package/src/core/config.ts +1066 -886
  352. package/src/core/defaults.ts +326 -530
  353. package/src/core/dispatch-outcome.ts +16 -0
  354. package/src/core/domain-loader.ts +6 -4
  355. package/src/core/event-bus.ts +1 -1
  356. package/src/core/file-references.ts +78 -88
  357. package/src/core/git-commit-attribution.ts +3 -9
  358. package/src/core/guardrails.ts +33 -52
  359. package/src/core/naming-compat.ts +45 -0
  360. package/src/core/naming-events.ts +62 -0
  361. package/src/core/prompt-hint.ts +9 -0
  362. package/src/core/recent-models.ts +1 -7
  363. package/src/core/residency-protection.ts +4 -8
  364. package/src/core/resolve-config-value.ts +1 -1
  365. package/src/core/response-model-id.ts +0 -14
  366. package/src/core/session-routing.ts +84 -74
  367. package/src/core/skill-activation.ts +18 -0
  368. package/src/core/termination.ts +4 -4
  369. package/src/core/timers.ts +2 -12
  370. package/src/domains/agents/builtins/architect.md +2 -3
  371. package/src/domains/agents/builtins/coder.md +3 -2
  372. package/src/domains/agents/builtins/debugger.md +2 -2
  373. package/src/domains/agents/builtins/documenter.md +2 -2
  374. package/src/domains/agents/builtins/git-master.md +1 -1
  375. package/src/domains/agents/builtins/oracle.md +1 -1
  376. package/src/domains/agents/builtins/provenance.md +1 -1
  377. package/src/domains/agents/builtins/researcher.md +1 -1
  378. package/src/domains/agents/builtins/scout.md +1 -1
  379. package/src/domains/agents/builtins/tester.md +2 -2
  380. package/src/domains/agents/builtins/verifier.md +2 -2
  381. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  382. package/src/domains/agents/catalog.ts +14 -26
  383. package/src/domains/agents/contract.ts +2 -0
  384. package/src/domains/agents/extension.ts +26 -4
  385. package/src/domains/agents/registry.ts +7 -7
  386. package/src/domains/agents/result-contract.ts +1 -1
  387. package/src/domains/agents/spec.ts +0 -11
  388. package/src/domains/config/classify.ts +35 -47
  389. package/src/domains/config/extension.ts +5 -5
  390. package/src/domains/config/keybindings.ts +56 -47
  391. package/src/domains/config/watcher.ts +1 -1
  392. package/src/domains/context/codewiki/indexer.ts +1 -1
  393. package/src/domains/context/extension.ts +3 -6
  394. package/src/domains/context/prompt-context.ts +1 -1
  395. package/src/domains/context/wiki/assemble.ts +2 -2
  396. package/src/domains/context/working-set/path-index.ts +1 -0
  397. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  398. package/src/domains/context/working-set/replay/report.ts +1 -1
  399. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  400. package/src/domains/dispatch/active-route-planner.ts +2 -2
  401. package/src/domains/dispatch/agent-candidates.ts +1 -1
  402. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  403. package/src/domains/dispatch/agent-ledger.ts +1 -1
  404. package/src/domains/dispatch/assignment.ts +5 -5
  405. package/src/domains/dispatch/capability-match.ts +10 -0
  406. package/src/domains/dispatch/capacity-lease.ts +2 -5
  407. package/src/domains/dispatch/code-step.ts +1 -1
  408. package/src/domains/dispatch/contract.ts +2 -2
  409. package/src/domains/dispatch/extension.ts +169 -82
  410. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  411. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  412. package/src/domains/dispatch/fleet-run.ts +0 -7
  413. package/src/domains/dispatch/gate-decisions.ts +25 -14
  414. package/src/domains/dispatch/host-verification.ts +435 -39
  415. package/src/domains/dispatch/intent-requirements.ts +10 -0
  416. package/src/domains/dispatch/intent.ts +18 -1
  417. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  418. package/src/domains/dispatch/path-scope.ts +220 -70
  419. package/src/domains/dispatch/placement.ts +2 -2
  420. package/src/domains/dispatch/receipt-findings.ts +1 -1
  421. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  422. package/src/domains/dispatch/reservation-store.ts +0 -23
  423. package/src/domains/dispatch/route-decision.ts +1 -1
  424. package/src/domains/dispatch/route-history.ts +1 -1
  425. package/src/domains/dispatch/route-policy.ts +1 -1
  426. package/src/domains/dispatch/route-readiness.ts +0 -28
  427. package/src/domains/dispatch/run-event-journal.ts +9 -19
  428. package/src/domains/dispatch/state.ts +2 -3
  429. package/src/domains/dispatch/tool-stats.ts +1 -1
  430. package/src/domains/dispatch/transport.ts +47 -40
  431. package/src/domains/dispatch/types.ts +58 -6
  432. package/src/domains/dispatch/worker-protocol.ts +2 -2
  433. package/src/domains/eval/artifacts/store.ts +10 -4
  434. package/src/domains/eval/compare/thresholds.ts +0 -8
  435. package/src/domains/eval/execution-provenance.ts +1 -1
  436. package/src/domains/eval/metrics/token-stream.ts +0 -7
  437. package/src/domains/eval/report.ts +1 -1
  438. package/src/domains/eval/runner.ts +1 -1
  439. package/src/domains/eval/runners/clio-run.ts +7 -6
  440. package/src/domains/eval/runners/external-command.ts +4 -3
  441. package/src/domains/eval/schema/artifact.ts +1 -1
  442. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  443. package/src/domains/eval/schema/behavioral.ts +7 -6
  444. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  445. package/src/domains/eval/schema/naming.ts +10 -0
  446. package/src/domains/eval/schema/suite.ts +2 -2
  447. package/src/domains/eval/schema/validate.ts +9 -5
  448. package/src/domains/eval/schema/verdict.ts +4 -2
  449. package/src/domains/eval/store.ts +20 -3
  450. package/src/domains/eval/suites/run.ts +12 -6
  451. package/src/domains/eval/types.ts +1 -1
  452. package/src/domains/eval/workspaces/git.ts +1 -1
  453. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  454. package/src/domains/evidence/build.ts +13 -5
  455. package/src/domains/evidence/trust-status.ts +10 -1
  456. package/src/domains/extensions/contract.ts +15 -1
  457. package/src/domains/extensions/discovery.ts +238 -41
  458. package/src/domains/extensions/extension.ts +105 -6
  459. package/src/domains/extensions/index.ts +24 -0
  460. package/src/domains/extensions/integrity.ts +189 -0
  461. package/src/domains/extensions/manager.ts +17 -1
  462. package/src/domains/extensions/resource-path.ts +27 -0
  463. package/src/domains/extensions/resources.ts +18 -38
  464. package/src/domains/extensions/snapshot-store.ts +39 -0
  465. package/src/domains/extensions/snapshot.ts +180 -0
  466. package/src/domains/extensions/state.ts +385 -57
  467. package/src/domains/extensions/types.ts +118 -1
  468. package/src/domains/interop/consent.ts +7 -7
  469. package/src/domains/interop/extension.ts +1 -1
  470. package/src/domains/lifecycle/doctor.ts +27 -21
  471. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  472. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  473. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  474. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  475. package/src/domains/lifecycle/migrations/index.ts +22 -1
  476. package/src/domains/lifecycle/naming-history.ts +153 -0
  477. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  478. package/src/domains/lifecycle/naming-resources.ts +276 -0
  479. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  480. package/src/domains/lifecycle/naming-yazi.ts +86 -0
  481. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  482. package/src/domains/memory/task-memory-handoff.ts +6 -3
  483. package/src/domains/middleware/contract.ts +26 -0
  484. package/src/domains/middleware/extension.ts +24 -24
  485. package/src/domains/middleware/hook-receipts.ts +27 -4
  486. package/src/domains/middleware/hooks-io.ts +65 -32
  487. package/src/domains/middleware/hooks.ts +64 -0
  488. package/src/domains/middleware/index.ts +35 -4
  489. package/src/domains/middleware/marketplace-offer.ts +339 -0
  490. package/src/domains/middleware/registrations.ts +326 -0
  491. package/src/domains/middleware/runtime.ts +30 -2
  492. package/src/domains/middleware/snapshot.ts +20 -7
  493. package/src/domains/mux/contract.ts +195 -25
  494. package/src/domains/mux/detect.ts +23 -6
  495. package/src/domains/mux/dock-controller.ts +365 -0
  496. package/src/domains/mux/extension.ts +7 -1
  497. package/src/domains/mux/index.ts +21 -1
  498. package/src/domains/mux/operations.ts +72 -5
  499. package/src/domains/mux/protocol.ts +19 -6
  500. package/src/domains/mux/socket-client.ts +167 -19
  501. package/src/domains/mux/types.ts +49 -6
  502. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  503. package/src/domains/mux/yazi/event-stream.ts +6 -4
  504. package/src/domains/mux/yazi/profile.ts +1 -1
  505. package/src/domains/mux/yazi/session.ts +79 -7
  506. package/src/domains/mux/yazi/theme.ts +117 -17
  507. package/src/domains/observability/contract.ts +10 -11
  508. package/src/domains/observability/extension.ts +12 -4
  509. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  510. package/src/domains/observability/projection.ts +15 -91
  511. package/src/domains/observability/trace-store.ts +65 -19
  512. package/src/domains/prompts/compiler.ts +75 -55
  513. package/src/domains/prompts/contract.ts +15 -3
  514. package/src/domains/prompts/extension.ts +100 -12
  515. package/src/domains/prompts/fragments/identity/clio-worker.md +2 -4
  516. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  517. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  518. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  519. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  520. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  521. package/src/domains/prompts/fragments/operating/skills.md +11 -18
  522. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  523. package/src/domains/providers/extension.ts +5 -5
  524. package/src/domains/providers/index.ts +1 -1
  525. package/src/domains/providers/knowledge-base-path.ts +1 -1
  526. package/src/domains/providers/model-runtime-capabilities.ts +99 -23
  527. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  528. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +671 -106
  529. package/src/domains/providers/plugins.ts +1 -1
  530. package/src/domains/providers/resolver.ts +1 -1
  531. package/src/domains/providers/runtime-resolution.ts +31 -0
  532. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  533. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  534. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  535. package/src/domains/providers/runtimes/common/probe-helpers.ts +9 -4
  536. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  537. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  538. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  539. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  540. package/src/domains/providers/types/cost-provenance.ts +19 -0
  541. package/src/domains/providers/types/knowledge-base.ts +13 -0
  542. package/src/domains/providers/types/local-model-quirks.ts +87 -39
  543. package/src/domains/providers/types/target-descriptor.ts +3 -3
  544. package/src/domains/resources/extension.ts +1 -1
  545. package/src/domains/resources/library.ts +6 -6
  546. package/src/domains/resources/prompts/loader.ts +1 -1
  547. package/src/domains/resources/skills/content-hash.ts +7 -6
  548. package/src/domains/resources/skills/evals.ts +1 -1
  549. package/src/domains/resources/skills/install.ts +36 -12
  550. package/src/domains/resources/skills/loader.ts +41 -18
  551. package/src/domains/resources/skills/marketplace.ts +21 -2
  552. package/src/domains/resources/skills/promotion.ts +214 -0
  553. package/src/domains/safety/audit.ts +2 -2
  554. package/src/domains/safety/call-target.ts +1 -1
  555. package/src/domains/safety/finish-contract.ts +2 -1
  556. package/src/domains/safety/loop-detector.ts +7 -4
  557. package/src/domains/safety/run-effects.ts +1 -1
  558. package/src/domains/scheduling/extension.ts +4 -4
  559. package/src/domains/session/archive-readers.ts +9 -1
  560. package/src/domains/session/compaction/branch-summary.ts +4 -0
  561. package/src/domains/session/compaction/compact.ts +1 -1
  562. package/src/domains/session/compaction/tokens.ts +4 -0
  563. package/src/domains/session/context-accounting.ts +1 -1
  564. package/src/domains/session/decision-board.ts +1 -1
  565. package/src/domains/session/extension.ts +1 -1
  566. package/src/domains/session/handoff.ts +2 -2
  567. package/src/domains/session/prompt-manifest.ts +0 -5
  568. package/src/domains/session/protected-artifact-journal.ts +12 -6
  569. package/src/domains/session/retry.ts +1 -1
  570. package/src/domains/session/task-board.ts +10 -9
  571. package/src/domains/share/archive.ts +249 -43
  572. package/src/domains/toolchain/install.ts +1 -1
  573. package/src/engine/acp/adapter.ts +3 -3
  574. package/src/engine/acp/event-mapper.ts +3 -3
  575. package/src/engine/acp/server.ts +89 -35
  576. package/src/engine/acp/tool-mediator.ts +2 -2
  577. package/src/engine/acp/types.ts +1 -1
  578. package/src/engine/alcf-oauth.ts +5 -5
  579. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  580. package/src/engine/api-registry.ts +1 -1
  581. package/src/engine/apis/llamacpp-residency.ts +4 -23
  582. package/src/engine/apis/lmstudio.ts +4 -9
  583. package/src/engine/apis/ollama-native.ts +9 -9
  584. package/src/engine/apis/openai-completions.ts +30 -27
  585. package/src/engine/apis/output-budget.ts +8 -18
  586. package/src/engine/apis/residency.ts +10 -35
  587. package/src/engine/claude/sdk-module.ts +1 -12
  588. package/src/engine/claude/sdk-runtime.ts +6 -6
  589. package/src/engine/claude/subprocess-runtime.ts +1 -1
  590. package/src/engine/claude/tool-safety.ts +4 -4
  591. package/src/engine/gemma-channel-filter.ts +19 -0
  592. package/src/engine/loop-guard.ts +92 -17
  593. package/src/engine/session.ts +14 -7
  594. package/src/engine/tui-primitives.ts +1 -1
  595. package/src/engine/worker-events.ts +6 -6
  596. package/src/engine/worker-runtime.ts +54 -24
  597. package/src/engine/worker-tools.ts +3 -1
  598. package/src/entry/extension-hook-sources.ts +28 -0
  599. package/src/entry/extension-reload.ts +309 -0
  600. package/src/entry/orchestrator.ts +163 -120
  601. package/src/interactive/application-controller.ts +23 -22
  602. package/src/interactive/bus-notices.ts +10 -3
  603. package/src/interactive/chat-loop-messages.ts +3 -13
  604. package/src/interactive/chat-loop.ts +18 -9
  605. package/src/interactive/chat-panel.ts +37 -14
  606. package/src/interactive/chat-renderer.ts +71 -7
  607. package/src/interactive/clio-editor.ts +105 -1
  608. package/src/interactive/context-activity.ts +8 -6
  609. package/src/interactive/context-meter.ts +3 -6
  610. package/src/interactive/context-overlay.ts +1 -1
  611. package/src/interactive/cost-overlay.ts +1 -1
  612. package/src/interactive/council-grid.ts +2 -2
  613. package/src/interactive/dispatch-board.ts +36 -44
  614. package/src/interactive/editor-bash.ts +21 -0
  615. package/src/interactive/editor-steer.ts +9 -4
  616. package/src/interactive/editor-submit.ts +24 -18
  617. package/src/interactive/external-editor.ts +1 -1
  618. package/src/interactive/file-reference-completion.ts +360 -0
  619. package/src/interactive/footer/dashboard.ts +15 -17
  620. package/src/interactive/footer/notifications.ts +14 -8
  621. package/src/interactive/footer/widgets.ts +15 -44
  622. package/src/interactive/interactive-application.ts +116 -61
  623. package/src/interactive/interactive-event-projection.ts +1 -1
  624. package/src/interactive/interactive-input-runtime.ts +6 -2
  625. package/src/interactive/interactive-presentation.ts +22 -17
  626. package/src/interactive/interactive-shell.ts +2 -2
  627. package/src/interactive/interactive-slash-runtime.ts +65 -17
  628. package/src/interactive/interactive-subscriptions.ts +1 -1
  629. package/src/interactive/interactive-tickers.ts +1 -1
  630. package/src/interactive/keybinding-manager.ts +4 -4
  631. package/src/interactive/layout.ts +1 -1
  632. package/src/interactive/memory-overlay.ts +2 -2
  633. package/src/interactive/modal-marker.ts +2 -21
  634. package/src/interactive/mutation-preview.ts +1 -1
  635. package/src/interactive/overlay-frame.ts +4 -12
  636. package/src/interactive/overlay-general-openers.ts +6 -2
  637. package/src/interactive/overlay-key-routing.ts +7 -7
  638. package/src/interactive/overlay-lifecycle.ts +1 -1
  639. package/src/interactive/overlay-model-selectors.ts +3 -3
  640. package/src/interactive/overlays/agents.ts +2 -2
  641. package/src/interactive/overlays/ask-user.ts +25 -11
  642. package/src/interactive/overlays/context-reset.ts +28 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  644. package/src/interactive/overlays/decisions.ts +4 -2
  645. package/src/interactive/overlays/extensions.ts +9 -1
  646. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  647. package/src/interactive/overlays/handoff-review.ts +2 -2
  648. package/src/interactive/overlays/help-reference.ts +13 -0
  649. package/src/interactive/overlays/interop.ts +1 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  651. package/src/interactive/overlays/message-picker.ts +1 -1
  652. package/src/interactive/overlays/model-selector.ts +39 -31
  653. package/src/interactive/overlays/prompts.ts +10 -4
  654. package/src/interactive/overlays/session-selector.ts +2 -2
  655. package/src/interactive/overlays/settings.ts +360 -303
  656. package/src/interactive/overlays/side-question.ts +2 -2
  657. package/src/interactive/overlays/skills-hub.ts +8 -8
  658. package/src/interactive/overlays/tree-selector.ts +2 -2
  659. package/src/interactive/panes-runtime.ts +145 -43
  660. package/src/interactive/permission-overlay.ts +2 -2
  661. package/src/interactive/prompt-cache-identity.ts +88 -0
  662. package/src/interactive/renderers/retry-status.ts +12 -4
  663. package/src/interactive/renderers/tool-execution.ts +4 -4
  664. package/src/interactive/session-transcript.ts +3 -3
  665. package/src/interactive/slash-autocomplete.ts +454 -165
  666. package/src/interactive/slash-commands.ts +401 -190
  667. package/src/interactive/slash-spec.ts +160 -17
  668. package/src/interactive/status/controller.ts +2 -2
  669. package/src/interactive/stream-pacing-policy.ts +1 -24
  670. package/src/interactive/tasks-overlay.ts +20 -13
  671. package/src/interactive/terminal-lease.ts +6 -7
  672. package/src/interactive/turn-context.ts +41 -26
  673. package/src/interactive/turn-persistence.ts +2 -2
  674. package/src/interactive/turn-prewarm.ts +2 -2
  675. package/src/interactive/turn-runtime.ts +8 -8
  676. package/src/interactive/turn-state.ts +1 -1
  677. package/src/interactive/view/artifacts.ts +12 -9
  678. package/src/interactive/view/view-overlay.ts +13 -10
  679. package/src/interactive/watch-pane.ts +38 -10
  680. package/src/interactive/welcome-dashboard.ts +15 -15
  681. package/src/interactive/worker-progress.ts +4 -4
  682. package/src/interactive/worker-receipts.ts +1 -1
  683. package/src/interactive/worker-stream.ts +1 -4
  684. package/src/interactive/yazi-bridge.ts +72 -11
  685. package/src/tools/agent-tools.ts +30 -1
  686. package/src/tools/artifact.ts +2 -2
  687. package/src/tools/ask-user.ts +6 -6
  688. package/src/tools/bash.ts +2 -2
  689. package/src/tools/bootstrap.ts +4 -0
  690. package/src/tools/builtin-tool-catalog.ts +52 -22
  691. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  692. package/src/tools/codewiki/code-nav.ts +99 -13
  693. package/src/tools/compete-worktrees.ts +27 -17
  694. package/src/tools/context/docs-engine.ts +20 -7
  695. package/src/tools/context/index.ts +44 -13
  696. package/src/tools/core-bootstrap.ts +28 -6
  697. package/src/tools/credential-present.ts +1 -2
  698. package/src/tools/dispatch-admission.ts +4 -2
  699. package/src/tools/dispatch-arguments.ts +6 -2
  700. package/src/tools/dispatch-plan.ts +48 -15
  701. package/src/tools/dispatch-run-events.ts +13 -11
  702. package/src/tools/dispatch-runner.ts +11 -6
  703. package/src/tools/dispatch-schema.ts +338 -0
  704. package/src/tools/dispatch-types.ts +3 -0
  705. package/src/tools/dispatch.ts +9 -254
  706. package/src/tools/find.ts +1 -6
  707. package/src/tools/ledger.ts +3 -5
  708. package/src/tools/monitor-surface.ts +5 -13
  709. package/src/tools/monitor.ts +4 -4
  710. package/src/tools/observation.ts +4 -5
  711. package/src/tools/observers.ts +0 -33
  712. package/src/tools/panes-surface.ts +4 -11
  713. package/src/tools/panes.ts +4 -2
  714. package/src/tools/policy.ts +15 -2
  715. package/src/tools/read.ts +5 -6
  716. package/src/tools/registry.ts +30 -7
  717. package/src/tools/result-shaping.ts +18 -14
  718. package/src/tools/steer-surface.ts +1 -1
  719. package/src/tools/task-worktree.ts +28 -7
  720. package/src/tools/tasks.ts +1 -1
  721. package/src/tools/truncate.ts +6 -5
  722. package/src/tools/verify/authoring.ts +3 -6
  723. package/src/tools/verify/frontend.ts +1 -1
  724. package/src/tools/verify/surface.ts +6 -12
  725. package/src/tools/web-fetch-surface.ts +1 -3
  726. package/src/tools/web-fetch.ts +1 -1
  727. package/src/worker/entry.ts +4 -3
  728. package/src/worker/protocol.ts +16 -14
  729. package/src/worker/spec-contract.ts +2 -2
  730. package/src/worker/stdin-demux.ts +2 -2
  731. package/dist/chunk-36EJLSQQ.js +0 -814
  732. package/dist/chunk-GXNLGKAB.js +0 -571
  733. package/dist/chunk-K7VKOLQQ.js +0 -15
  734. package/dist/chunk-PMZCIOCJ.js +0 -25
  735. package/dist/chunk-SUCTJL45.js +0 -45
  736. package/dist/chunk-SUW5DORT.js +0 -819
  737. package/dist/chunk-TZ3SGWZZ.js +0 -48
  738. package/dist/chunk-UOV2BYIW.js +0 -107
  739. package/dist/chunk-VFA6GDY5.js +0 -1625
  740. package/dist/doctor-QOA5FNY5.js +0 -313
  741. package/dist/fleet-view-ZCON35AG.js +0 -102
  742. package/dist/panes-HMABYVO4.js +0 -58
  743. package/docs/artifact-versions.md +0 -67
  744. package/docs/documentation-coverage.md +0 -46
  745. package/docs/documentation-guide.md +0 -167
  746. package/docs/release-cut-checklist.md +0 -193
  747. package/docs/time-conventions.md +0 -101
  748. package/skills/meta/clio-test/SKILL.md +0 -133
  749. package/skills/meta/clio-test/references/harness.md +0 -126
  750. package/skills/meta/clio-test/references/test-map.md +0 -69
  751. 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["orchestrator"]["thinkingLevel"];
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.orchestrator),
63
- background: targetFrom(saved.background),
64
- workersDefault: targetFrom(saved.workers.default),
65
- scope: [...(saved.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.orchestrator.target = routing.orchestrator.target;
77
- view.orchestrator.model = routing.orchestrator.model;
78
- view.orchestrator.thinkingLevel = routing.orchestrator.thinkingLevel;
79
- view.background.target = routing.background.target;
80
- view.background.model = routing.background.model;
81
- view.background.thinkingLevel = routing.background.thinkingLevel;
82
- view.workers.default.target = routing.workersDefault.target;
83
- view.workers.default.model = routing.workersDefault.model;
84
- view.workers.default.thinkingLevel = routing.workersDefault.thinkingLevel;
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.orchestrator, patch.orchestrator);
163
- if (patch.background) Object.assign(settings.background, patch.background);
164
- if (patch.workersDefault) Object.assign(settings.workers.default, patch.workersDefault);
165
- if (patch.scope) settings.scope = [...patch.scope];
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 "orchestrator.target":
180
- return { orchestrator: { target: settings.orchestrator.target, model: settings.orchestrator.model } };
181
- case "orchestrator.model":
182
- return { orchestrator: { model: settings.orchestrator.model } };
183
- case "orchestrator.thinkingLevel":
184
- return { orchestrator: { thinkingLevel: settings.orchestrator.thinkingLevel } };
185
- case "background.target":
186
- return { background: { target: settings.background.target, model: settings.background.model } };
187
- case "background.model":
188
- return { background: { model: settings.background.model } };
189
- case "background.thinkingLevel":
190
- return { background: { thinkingLevel: settings.background.thinkingLevel } };
191
- case "workers.default.target":
192
- return { workersDefault: { target: settings.workers.default.target, model: settings.workers.default.model } };
193
- case "workers.default.model":
194
- return { workersDefault: { model: settings.workers.default.model } };
195
- case "workers.default.thinkingLevel":
196
- return { workersDefault: { thinkingLevel: settings.workers.default.thinkingLevel } };
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.orchestrator, next.orchestrator);
231
+ const orchestrator = diffTarget(prev.chat, next.chat);
228
232
  if (orchestrator) patch.orchestrator = orchestrator;
229
- const background = diffTarget(prev.background, next.background);
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.workers.default, next.workers.default);
238
+ const workersDefault = diffTarget(prev.fleet.default, next.fleet.default);
232
239
  if (workersDefault) patch.workersDefault = workersDefault;
233
- if (!scopeEquals(prev.scope ?? [], next.scope ?? [])) patch.scope = [...(next.scope ?? [])];
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.orchestrator.target = source.orchestrator.target;
245
- target.orchestrator.model = source.orchestrator.model;
246
- target.orchestrator.thinkingLevel = source.orchestrator.thinkingLevel;
247
- target.background.target = source.background.target;
248
- target.background.model = source.background.model;
249
- target.background.thinkingLevel = source.background.thinkingLevel;
250
- target.workers.default.target = source.workers.default.target;
251
- target.workers.default.model = source.workers.default.model;
252
- target.workers.default.thinkingLevel = source.workers.default.thinkingLevel;
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: "orchestrator.target", label: "chat target", read: (s) => s.orchestrator.target ?? null },
262
- { field: "orchestrator.model", label: "chat model", read: (s) => s.orchestrator.model ?? null },
263
- { field: "orchestrator.thinkingLevel", label: "chat thinking", read: (s) => s.orchestrator.thinkingLevel ?? "off" },
264
- { field: "background.target", label: "background target", read: (s) => s.background.target ?? null },
265
- { field: "background.model", label: "background model", read: (s) => s.background.model ?? null },
266
- { field: "background.thinkingLevel", label: "background thinking", read: (s) => s.background.thinkingLevel ?? "off" },
267
- { field: "workers.default.target", label: "fleet target", read: (s) => s.workers.default.target ?? null },
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: "workers.default.thinkingLevel",
276
+ field: "fleet.default.thinkingLevel",
271
277
  label: "fleet thinking",
272
- read: (s) => s.workers.default.thinkingLevel ?? "off",
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
- export function externalRoutingDivergence(
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.orchestrator.target;
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;
@@ -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
- export function wrapToWidth(text: string, width: number): string[] {
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
  }
@@ -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. Every occurrence is counted; nothing is written to stderr,
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
- const elapsed = end - start;
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 coding changes across boundaries, contracts, migrations, and validation gates; slices an existing plan into an executable dependency-ordered sprint via its bound cut-it skill.
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
- Before broad exploration, check `code_nav mode=wiki` and read `.clio-coder/wiki/quickstart.md` when a wiki exists.
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 behavior-preserving refactors.
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 the task is navigation-heavy and a codewiki exists, prefer `code_nav` (symbol, deps, dependents) over broad reads to locate definitions and call sites.
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, or runtime behavior without making edits.
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 a codewiki exists, prefer `code_nav` (symbol, deps, dependents) over broad reads to trace the failing path.
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-facing docs, examples, and concise operational runbooks.
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: Executes 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.
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 a codewiki exists.
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: Shadow evidence, receipt, diff, and telemetry reader for source-backed handoffs.
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: Shadow external-source researcher for coding decisions, official docs, standards, release notes, and academic papers.
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: Use for any broad repository reconnaissance, codebase orientation, structure/entry-point mapping, or multi-file symbol hunting; returns cited findings fast without spending main-context tool calls.
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 tests for regressions and missing coverage.
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 a codewiki exists, prefer `code_nav` (symbol, dependents) over broad reads to find the code under test and its callers.
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: Independently runs and reports test, lint, build, review, and release gates.
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 a codewiki exists, prefer `code_nav` (symbol, dependents) over broad reads to scope what a diff touches.
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 one repository wiki, or researches and writes one wiki page, against a supplied plan.
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 { AgentRecipe } from "./recipe.js";
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 delegation rule above says what to
43
- * hand off; this says what handing off costs you.
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
- `Workers you reach with \`dispatch\`, by \`agent\` id (default ${DEFAULT_DISPATCH_AGENT_ID}). Capability class is what a worker may do: a read-only worker cannot edit.`,
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.delegation.agents[], which never exist as recipe files; rendering
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;