@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
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared mapping from a `DispatchFailed` payload's `reason` field to the
3
+ * terminal status it implies. Both the observability projection's run
4
+ * summary (src/domains/observability/projection.ts) and the interactive
5
+ * dispatch board (src/interactive/dispatch-board.ts) derive a run's status
6
+ * from the same DispatchCompleted/DispatchFailed bus events; before this
7
+ * module existed they each carried their own copy of this exact mapping,
8
+ * kept in sync only by a comment asking the next editor to remember to.
9
+ */
10
+ export type DispatchFailureStatus = "dead" | "aborted" | "failed";
11
+
12
+ export function resolveDispatchFailureStatus(reason: unknown): DispatchFailureStatus {
13
+ if (reason === "dead" || reason === "stalled") return "dead";
14
+ if (reason === "interrupted" || reason === "canceled") return "aborted";
15
+ return "failed";
16
+ }
@@ -95,7 +95,7 @@ export async function loadDomains(
95
95
  // render the failure, so the structured line must land first.
96
96
  const message = error instanceof Error ? error.message : String(error);
97
97
  (options.diagnostic ?? ((text: string) => process.stderr.write(text)))(
98
- `[clio:domain] load failed: ${name}: ${message}\n`,
98
+ `[clio-coder:domain] load failed: ${name}: ${message}\n`,
99
99
  );
100
100
  throw new DomainLoadError(name, error);
101
101
  }
@@ -111,15 +111,17 @@ export async function loadDomains(
111
111
  const t0 = debug ? process.hrtime.bigint() : 0n;
112
112
  const completed = await runWithBudget(stopFn, budgetMs, (err) => {
113
113
  const message = err instanceof Error ? err.message : String(err);
114
- writeShutdownNotice(`[clio:domain-loader] ${name}.stop() failed: ${message}`);
114
+ writeShutdownNotice(`[clio-coder:domain-loader] ${name}.stop() failed: ${message}`);
115
115
  if (debug && err instanceof Error && err.stack) process.stderr.write(`${err.stack}\n`);
116
116
  });
117
117
  if (!completed) {
118
- writeShutdownNotice(`[clio:domain-loader] ${name}.stop() exceeded ${budgetMs}ms budget; abandoning`);
118
+ writeShutdownNotice(`[clio-coder:domain-loader] ${name}.stop() exceeded ${budgetMs}ms budget; abandoning`);
119
119
  }
120
120
  if (debug) {
121
121
  const dt = Number(process.hrtime.bigint() - t0) / 1e6;
122
- process.stderr.write(`[clio:shutdown] domain.${name} ${dt.toFixed(1)}ms${completed ? "" : " (timed out)"}\n`);
122
+ process.stderr.write(
123
+ `[clio-coder:shutdown] domain.${name} ${dt.toFixed(1)}ms${completed ? "" : " (timed out)"}\n`,
124
+ );
123
125
  }
124
126
  }
125
127
  };
@@ -40,7 +40,7 @@ type StoredListener = (payload: never) => void | Promise<void>;
40
40
 
41
41
  function reportListenerError(channel: string, error: unknown): void {
42
42
  const message = error instanceof Error ? (error.stack ?? error.message) : String(error);
43
- console.error(`[clio:event-bus] Listener crashed on ${channel}: ${message}`);
43
+ console.error(`[clio-coder:event-bus] Listener crashed on ${channel}: ${message}`);
44
44
  }
45
45
 
46
46
  export function createSafeEventBus(): SafeEventBus {
@@ -25,9 +25,70 @@ export interface FileReferenceOptions {
25
25
  autoResizeImages?: boolean;
26
26
  }
27
27
 
28
- const FILE_REF = /(^|\s)@(\S+)/g;
29
28
  const DEFAULT_IMAGE_MAX_BASE64_BYTES = 4.5 * 1024 * 1024;
30
29
 
30
+ interface InlineFileReference {
31
+ start: number;
32
+ end: number;
33
+ raw: string;
34
+ fileArg: string;
35
+ quoted: boolean;
36
+ }
37
+
38
+ function decodeQuotedFileArg(input: string, start: number, quote: '"' | "'"): { value: string; end: number } | null {
39
+ let value = "";
40
+ let escaped = false;
41
+ for (let index = start; index < input.length; index += 1) {
42
+ const character = input[index] ?? "";
43
+ if (escaped) {
44
+ value += character;
45
+ escaped = false;
46
+ continue;
47
+ }
48
+ if (character === "\\") {
49
+ escaped = true;
50
+ continue;
51
+ }
52
+ if (character === quote) return { value, end: index + 1 };
53
+ value += character;
54
+ }
55
+ return null;
56
+ }
57
+
58
+ /** Scanner shared by sync and async expansion; quoted references may contain spaces. */
59
+ function inlineFileReferences(input: string): InlineFileReference[] {
60
+ const references: InlineFileReference[] = [];
61
+ for (let start = 0; start < input.length; start += 1) {
62
+ if (input[start] !== "@" || (start > 0 && !/\s/u.test(input[start - 1] ?? ""))) continue;
63
+ const next = input[start + 1];
64
+ if (next === '"' || next === "'") {
65
+ const decoded = decodeQuotedFileArg(input, start + 2, next);
66
+ if (!decoded || decoded.value.length === 0) continue;
67
+ references.push({
68
+ start,
69
+ end: decoded.end,
70
+ raw: input.slice(start, decoded.end),
71
+ fileArg: decoded.value,
72
+ quoted: true,
73
+ });
74
+ start = decoded.end - 1;
75
+ continue;
76
+ }
77
+ let end = start + 1;
78
+ while (end < input.length && !/\s/u.test(input[end] ?? "")) end += 1;
79
+ if (end === start + 1) continue;
80
+ references.push({
81
+ start,
82
+ end,
83
+ raw: input.slice(start, end),
84
+ fileArg: input.slice(start + 1, end),
85
+ quoted: false,
86
+ });
87
+ start = end - 1;
88
+ }
89
+ return references;
90
+ }
91
+
31
92
  function renderTextFile(filePath: string, content: string): string {
32
93
  return `<file name="${filePath}">\n${content}\n</file>\n`;
33
94
  }
@@ -64,42 +125,6 @@ function detectSupportedImageMimeType(bytes: Buffer): string | null {
64
125
  return null;
65
126
  }
66
127
 
67
- function readFileReference(fileArg: string, options: FileReferenceOptions): FileReferenceResult {
68
- const filePath = expandConfigPath(fileArg, options.cwd === undefined ? undefined : { cwd: options.cwd });
69
- if (!existsSync(filePath)) {
70
- if (options.missing === "leave") return result(`@${fileArg}`);
71
- return result("", [{ type: "error", message: `file not found: ${filePath}`, path: filePath }]);
72
- }
73
- let stat: ReturnType<typeof statSync>;
74
- try {
75
- stat = statSync(filePath);
76
- } catch (err) {
77
- const reason = err instanceof Error ? err.message : String(err);
78
- return result("", [{ type: "error", message: `file could not be stat'ed: ${reason}`, path: filePath }]);
79
- }
80
- if (!stat.isFile()) {
81
- return result("", [{ type: "error", message: `not a file: ${filePath}`, path: filePath }]);
82
- }
83
- if (stat.size === 0) return result("", [], [], [filePath]);
84
- try {
85
- const bytes = readFileSync(filePath);
86
- const imageMimeType = detectSupportedImageMimeType(bytes);
87
- if (imageMimeType) {
88
- if (options.includeImages !== true) return result(`@${fileArg}`);
89
- return result(
90
- renderImageFile(filePath),
91
- [],
92
- [{ type: "image", mimeType: imageMimeType, data: bytes.toString("base64") }],
93
- [filePath],
94
- );
95
- }
96
- return result(renderTextFile(filePath, bytes.toString("utf8")), [], [], [filePath]);
97
- } catch (err) {
98
- const reason = err instanceof Error ? err.message : String(err);
99
- return result("", [{ type: "error", message: `file could not be read: ${reason}`, path: filePath }]);
100
- }
101
- }
102
-
103
128
  async function readFileReferenceAsync(fileArg: string, options: FileReferenceOptions): Promise<FileReferenceResult> {
104
129
  const filePath = expandConfigPath(fileArg, options.cwd === undefined ? undefined : { cwd: options.cwd });
105
130
  if (!existsSync(filePath)) {
@@ -191,39 +216,6 @@ function splitTrailingPunctuation(token: string): { fileArg: string; suffix: str
191
216
  return { fileArg: candidate, suffix };
192
217
  }
193
218
 
194
- export function expandInlineFileReferences(input: string, options: FileReferenceOptions = {}): FileReferenceResult {
195
- const diagnostics: FileReferenceDiagnostic[] = [];
196
- const images: ImageContent[] = [];
197
- const referencedPaths: string[] = [];
198
- const text = input.replace(FILE_REF, (match: string, prefix: string, token: string) => {
199
- const direct = readFileReference(token, {
200
- ...options,
201
- missing: "leave",
202
- includeImages: options.includeImages === true,
203
- });
204
- if (direct.text !== `@${token}`) {
205
- diagnostics.push(...direct.diagnostics);
206
- images.push(...direct.images);
207
- referencedPaths.push(...direct.referencedPaths);
208
- return `${prefix}${direct.text}`;
209
- }
210
-
211
- const { fileArg, suffix } = splitTrailingPunctuation(token);
212
- if (fileArg === token) return match;
213
- const stripped = readFileReference(fileArg, {
214
- ...options,
215
- missing: "leave",
216
- includeImages: options.includeImages === true,
217
- });
218
- if (stripped.text === `@${fileArg}`) return match;
219
- diagnostics.push(...stripped.diagnostics);
220
- images.push(...stripped.images);
221
- referencedPaths.push(...stripped.referencedPaths);
222
- return `${prefix}${stripped.text}${suffix}`;
223
- });
224
- return { text, images, diagnostics, referencedPaths };
225
- }
226
-
227
219
  export async function expandInlineFileReferencesAsync(
228
220
  input: string,
229
221
  options: FileReferenceOptions = {},
@@ -233,31 +225,29 @@ export async function expandInlineFileReferencesAsync(
233
225
  const referencedPaths: string[] = [];
234
226
  let text = "";
235
227
  let lastIndex = 0;
236
- for (const match of input.matchAll(FILE_REF)) {
237
- const index = match.index ?? 0;
238
- const full = match[0] ?? "";
239
- const prefix = match[1] ?? "";
240
- const token = match[2] ?? "";
241
- text += input.slice(lastIndex, index);
228
+ for (const reference of inlineFileReferences(input)) {
229
+ text += input.slice(lastIndex, reference.start);
242
230
 
243
- const direct = await readFileReferenceAsync(token, {
231
+ const direct = await readFileReferenceAsync(reference.fileArg, {
244
232
  ...options,
245
233
  missing: "leave",
246
234
  includeImages: options.includeImages === true,
247
235
  });
248
- if (direct.text !== `@${token}`) {
236
+ if (direct.text !== `@${reference.fileArg}`) {
249
237
  diagnostics.push(...direct.diagnostics);
250
238
  images.push(...direct.images);
251
239
  referencedPaths.push(...direct.referencedPaths);
252
- text += `${prefix}${direct.text}`;
253
- lastIndex = index + full.length;
240
+ text += direct.text;
241
+ lastIndex = reference.end;
254
242
  continue;
255
243
  }
256
244
 
257
- const { fileArg, suffix } = splitTrailingPunctuation(token);
258
- if (fileArg === token) {
259
- text += full;
260
- lastIndex = index + full.length;
245
+ const { fileArg, suffix } = reference.quoted
246
+ ? { fileArg: reference.fileArg, suffix: "" }
247
+ : splitTrailingPunctuation(reference.fileArg);
248
+ if (fileArg === reference.fileArg) {
249
+ text += reference.raw;
250
+ lastIndex = reference.end;
261
251
  continue;
262
252
  }
263
253
 
@@ -267,15 +257,15 @@ export async function expandInlineFileReferencesAsync(
267
257
  includeImages: options.includeImages === true,
268
258
  });
269
259
  if (stripped.text === `@${fileArg}`) {
270
- text += full;
271
- lastIndex = index + full.length;
260
+ text += reference.raw;
261
+ lastIndex = reference.end;
272
262
  continue;
273
263
  }
274
264
  diagnostics.push(...stripped.diagnostics);
275
265
  images.push(...stripped.images);
276
266
  referencedPaths.push(...stripped.referencedPaths);
277
- text += `${prefix}${stripped.text}${suffix}`;
278
- lastIndex = index + full.length;
267
+ text += `${stripped.text}${suffix}`;
268
+ lastIndex = reference.end;
279
269
  }
280
270
  text += input.slice(lastIndex);
281
271
  return { text, images, diagnostics, referencedPaths };
@@ -63,7 +63,7 @@ export interface ManagedCommitAttributionEnvironment {
63
63
  export function reportCommitAttributionDiagnostic(diagnostic: string | null): void {
64
64
  if (diagnostic === null || reportedDiagnostics.has(diagnostic)) return;
65
65
  reportedDiagnostics.add(diagnostic);
66
- process.stderr.write(`[clio:attribution] ${diagnostic}\n`);
66
+ process.stderr.write(`[clio-coder:attribution] ${diagnostic}\n`);
67
67
  }
68
68
 
69
69
  export function setGitCommitAttributionEnabled(enabled: boolean): void {
@@ -74,12 +74,6 @@ export function gitCommitAttributionEnabled(source: NodeJS.ProcessEnv = process.
74
74
  return source[CLIO_GIT_COMMITS_ENABLED_ENV] !== "0";
75
75
  }
76
76
 
77
- /** Forget cached repository probes and the installed managed hooks directory. */
78
- export function resetGitCommitAttributionCachesForTests(): void {
79
- probeCache.clear();
80
- installedHooksDirectory = null;
81
- }
82
-
83
77
  function boundedDiagnostic(message: string): string {
84
78
  const folded = message.replace(/\s+/gu, " ").trim();
85
79
  return folded.length <= DIAGNOSTIC_MAX_CHARS ? folded : `${folded.slice(0, DIAGNOSTIC_MAX_CHARS - 3)}...`;
@@ -171,7 +165,7 @@ hook_name=$(basename "$0")
171
165
  base_count=$${CONFIG_BASE_COUNT_ENV}
172
166
  case "$base_count" in
173
167
  '' | *[!0-9]*)
174
- printf '%s\\n' '[clio:attribution] invalid managed hook environment' >&2
168
+ printf '%s\\n' '[clio-coder:attribution] invalid managed hook environment' >&2
175
169
  exit 0
176
170
  ;;
177
171
  0) unset GIT_CONFIG_COUNT ;;
@@ -241,7 +235,7 @@ has_trailer() {
241
235
  append_trailer() {
242
236
  if has_trailer "$1"; then return 0; fi
243
237
  git interpret-trailers --in-place --if-exists=addIfDifferent --trailer "$1" "$message_file" ||
244
- printf '%s\\n' '[clio:attribution] git interpret-trailers failed; commit left as written' >&2
238
+ printf '%s\\n' '[clio-coder:attribution] git interpret-trailers failed; commit left as written' >&2
245
239
  }
246
240
 
247
241
  if [ "$${ASSISTED_ENV}" = '1' ] || [ "$${AUTHORED_ENV}" = '1' ]; then
@@ -2,17 +2,11 @@
2
2
  * Guardrail policy values: the numeric backstops that bound runaway agent
3
3
  * behavior (tool-call budgets, tool output byte caps, dispatch ledger size).
4
4
  *
5
- * These are durable operator policy, the same species as
6
- * `compaction.threshold`, so their primary home is the `guardrails:` section
7
- * of settings.yaml. The composition roots (orchestrator entry and worker
8
- * runtime) wire that section in via {@link configureGuardrails}; consumers
9
- * resolve values through {@link resolveGuardrail}, which layers a per-process
10
- * env override on top for CI and one-off experiments:
11
- *
12
- * env var > settings.yaml guardrails > built-in default
13
- *
14
- * Every value is a positive safe integer; invalid overrides fall through to
15
- * the next layer rather than erroring.
5
+ * These are durable operator policy, so their only configurable home is the
6
+ * canonical version 2 settings tree. Composition roots project that tree into
7
+ * this process through {@link configureGuardrails}; hot-path consumers resolve
8
+ * the current projection through {@link resolveGuardrail} without reading
9
+ * settings.yaml themselves.
16
10
  */
17
11
 
18
12
  export interface GuardrailValues {
@@ -66,24 +60,29 @@ export const GUARDRAIL_DEFAULTS: GuardrailValues = {
66
60
  internalDispatchTimeoutMs: 15 * 60 * 1000,
67
61
  };
68
62
 
69
- /** Per-process env overrides, one per guardrail. */
70
- export const GUARDRAIL_ENV_VARS: Readonly<Record<keyof GuardrailValues, string>> = {
71
- turnToolCallBudget: "CLIO_CODER_TURN_TOOL_CALL_BUDGET",
72
- workerToolCallCap: "CLIO_CODER_WORKER_TOOL_CALL_CAP",
73
- maxDispatchRuns: "CLIO_CODER_MAX_DISPATCH_RUNS",
74
- readMaxBytes: "CLIO_CODER_READ_MAX_BYTES",
75
- observationTurnBudgetBytes: "CLIO_CODER_OBSERVATION_TURN_BUDGET_BYTES",
76
- internalDispatchTimeoutMs: "CLIO_CODER_INTERNAL_DISPATCH_TIMEOUT_MS",
77
- };
78
-
79
- /**
80
- * Older env spellings that still read. `CLIO_CODER_MAX_RUNS` was the only
81
- * guardrail whose variable was not the SCREAMING_SNAKE of its key, and CI
82
- * environments already set it, so it keeps working behind the canonical name.
83
- */
84
- const GUARDRAIL_ENV_ALIASES: Readonly<Partial<Record<keyof GuardrailValues, string>>> = {
85
- maxDispatchRuns: "CLIO_CODER_MAX_RUNS",
86
- };
63
+ /** Project canonical v2 settings leaves onto the process-local guardrail registry. */
64
+ export function guardrailValuesFromSettings(settings: {
65
+ safety: {
66
+ limits: {
67
+ chatToolCallsPerTurn: number;
68
+ readBytesPerCall: number;
69
+ observationBytesPerTurn: number;
70
+ };
71
+ };
72
+ fleet: {
73
+ limits: { toolCallsPerRun: number; internalRunTimeoutMs: number };
74
+ history: { maxRuns: number };
75
+ };
76
+ }): GuardrailValues {
77
+ return {
78
+ turnToolCallBudget: settings.safety.limits.chatToolCallsPerTurn,
79
+ workerToolCallCap: settings.fleet.limits.toolCallsPerRun,
80
+ maxDispatchRuns: settings.fleet.history.maxRuns,
81
+ readMaxBytes: settings.safety.limits.readBytesPerCall,
82
+ observationTurnBudgetBytes: settings.safety.limits.observationBytesPerTurn,
83
+ internalDispatchTimeoutMs: settings.fleet.limits.internalRunTimeoutMs,
84
+ };
85
+ }
87
86
 
88
87
  /**
89
88
  * One-shot annotation attached to the first tool result inside the reserve
@@ -112,10 +111,6 @@ export function workerSynthesisReserveBlockReason(tool: string, remaining: numbe
112
111
  );
113
112
  }
114
113
 
115
- export function isWorkerSynthesisReserveBlockReason(reason: string): boolean {
116
- return /^workerToolCallReserve: only [1-9]\d* of [1-9]\d* tool calls remain/.test(reason);
117
- }
118
-
119
114
  export function workerToolCallCapExceededReason(cap: number): string {
120
115
  return `workerToolCallCap reached (${cap}); abort run`;
121
116
  }
@@ -158,28 +153,14 @@ export function mentionsWorkerToolCallCap(text: string | null | undefined): bool
158
153
  let configured: Partial<GuardrailValues> = {};
159
154
 
160
155
  /**
161
- * Install the settings.yaml `guardrails:` section. Called once per process by
162
- * the composition roots; later calls replace the whole layer (used by tests).
156
+ * Install the effective settings projection. Later calls replace the whole
157
+ * layer when a session override or configuration reload changes the view.
163
158
  */
164
159
  export function configureGuardrails(values: Partial<GuardrailValues> | undefined): void {
165
160
  configured = { ...(values ?? {}) };
166
161
  }
167
162
 
168
- function parsePositiveSafeInt(raw: string | undefined): number | undefined {
169
- if (raw === undefined) return undefined;
170
- const normalized = raw.trim();
171
- if (!/^[1-9]\d*$/.test(normalized)) return undefined;
172
- const parsed = Number(normalized);
173
- return Number.isSafeInteger(parsed) ? parsed : undefined;
174
- }
175
-
176
- /** Resolve one guardrail: env override > configured settings > default. */
177
- export function resolveGuardrail(key: keyof GuardrailValues, env: NodeJS.ProcessEnv = process.env): number {
178
- const alias = GUARDRAIL_ENV_ALIASES[key];
179
- return (
180
- parsePositiveSafeInt(env[GUARDRAIL_ENV_VARS[key]]) ??
181
- (alias ? parsePositiveSafeInt(env[alias]) : undefined) ??
182
- configured[key] ??
183
- GUARDRAIL_DEFAULTS[key]
184
- );
163
+ /** Resolve one guardrail from the effective settings projection or its default. */
164
+ export function resolveGuardrail(key: keyof GuardrailValues): number {
165
+ return configured[key] ?? GUARDRAIL_DEFAULTS[key];
185
166
  }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Released naming aliases retained for the v0.5 and v0.6 compatibility window.
3
+ * Canonical writers must never call this helper; it exists only at read and
4
+ * protocol boundaries where an older Clio Coder installation can still be the
5
+ * producer.
6
+ */
7
+
8
+ const warned = new Set<string>();
9
+
10
+ export const LEGACY_NAMING_COMPATIBILITY_RETIREMENT = "v0.7.0";
11
+
12
+ /** Emit one deprecation diagnostic per legacy/canonical pair in this process. */
13
+ export function warnLegacyNaming(legacy: string, canonical: string): void {
14
+ const key = `${legacy}\0${canonical}`;
15
+ if (warned.has(key)) return;
16
+ warned.add(key);
17
+ process.emitWarning(
18
+ `'${legacy}' is a deprecated Clio Coder identifier; use '${canonical}'. ` +
19
+ `Legacy naming compatibility is scheduled for removal in ${LEGACY_NAMING_COMPATIBILITY_RETIREMENT}.`,
20
+ { code: "CLIO_CODER_LEGACY_NAMING", type: "DeprecationWarning" },
21
+ );
22
+ }
23
+
24
+ /** Prefer a canonical environment variable and temporarily fall back to its released alias. */
25
+ export function readNamingEnvironment(
26
+ environment: NodeJS.ProcessEnv,
27
+ canonical: string,
28
+ legacy: string,
29
+ ): string | undefined {
30
+ const current = environment[canonical]?.trim();
31
+ if (current) return current;
32
+ const fallback = environment[legacy]?.trim();
33
+ if (!fallback) return undefined;
34
+ warnLegacyNaming(legacy, canonical);
35
+ return fallback;
36
+ }
37
+
38
+ /** Parent-to-child bridge used only during the two-minor compatibility window. */
39
+ export function namingCompatibilityEnvironment(
40
+ canonical: string,
41
+ legacy: string,
42
+ value: string,
43
+ ): Record<string, string> {
44
+ return { [canonical]: value, [legacy]: value };
45
+ }
@@ -0,0 +1,62 @@
1
+ const CLIO_CODER_EVENT_SUFFIXES = new Set([
2
+ "permission_escalated",
3
+ "permission_resolved",
4
+ "plan_update",
5
+ "run_outcome",
6
+ "safety_decision",
7
+ "skill_activation",
8
+ "steer_received",
9
+ "tool_activity",
10
+ "tool_finish",
11
+ "tool_start",
12
+ "usage",
13
+ "verification",
14
+ "write_record_downgraded",
15
+ ]);
16
+
17
+ /** Canonicalize one released snake-case event id without accepting arbitrary prefixes. */
18
+ export function normalizeClioCoderEventType(type: string): string {
19
+ if (!type.startsWith("clio_") || type.startsWith("clio_coder_")) return type;
20
+ const suffix = type.slice("clio_".length);
21
+ return CLIO_CODER_EVENT_SUFFIXES.has(suffix) ? `clio_coder_${suffix}` : type;
22
+ }
23
+
24
+ /** Clone one decoded event only when its top-level discriminator is legacy. */
25
+ export function normalizeClioCoderEventRecord(record: Record<string, unknown>): Record<string, unknown> {
26
+ if (typeof record.type !== "string") return record;
27
+ const type = normalizeClioCoderEventType(record.type);
28
+ return type === record.type ? record : { ...record, type };
29
+ }
30
+
31
+ /**
32
+ * Normalize legacy event discriminators in an in-memory decoded history tree.
33
+ * This never writes the source session/eval/evidence file.
34
+ */
35
+ export function normalizeClioCoderEventTree(value: unknown): unknown {
36
+ if (Array.isArray(value)) {
37
+ let changed = false;
38
+ const next = value.map((entry) => {
39
+ const normalized = normalizeClioCoderEventTree(entry);
40
+ if (normalized !== entry) changed = true;
41
+ return normalized;
42
+ });
43
+ return changed ? next : value;
44
+ }
45
+ if (typeof value !== "object" || value === null) return value;
46
+ const record = value as Record<string, unknown>;
47
+ let changed = false;
48
+ const next: Record<string, unknown> = {};
49
+ for (const [key, entry] of Object.entries(record)) {
50
+ const normalized = normalizeClioCoderEventTree(entry);
51
+ next[key] = normalized;
52
+ if (normalized !== entry) changed = true;
53
+ }
54
+ if (typeof record.type === "string") {
55
+ const type = normalizeClioCoderEventType(record.type);
56
+ if (type !== record.type) {
57
+ next.type = type;
58
+ changed = true;
59
+ }
60
+ }
61
+ return changed ? next : value;
62
+ }
@@ -0,0 +1,9 @@
1
+ /** Collapse descriptor-authored prompt guidance to one byte-stable line. */
2
+ export function normalizePromptHint(text: string | undefined): string | undefined {
3
+ if (!text) return undefined;
4
+ const normalized = text
5
+ .replace(/[\r\n]+/gu, " ")
6
+ .replace(/\s+/gu, " ")
7
+ .trim();
8
+ return normalized.length > 0 ? normalized : undefined;
9
+ }
@@ -14,7 +14,7 @@ import { join } from "node:path";
14
14
  import { safeResourceWrite } from "./safe-resource-write.js";
15
15
  import { clioStateDir, stateRootRemoved } from "./xdg.js";
16
16
 
17
- export function recentModelsPath(): string {
17
+ function recentModelsPath(): string {
18
18
  return join(clioStateDir(), "recent-models.json");
19
19
  }
20
20
 
@@ -83,9 +83,3 @@ export function rememberRecentModel(ref: string, limit: number): string[] {
83
83
  }
84
84
  return next;
85
85
  }
86
-
87
- /** Test hook: clear the in-process cache after CLIO_* dir overrides change. */
88
- export function resetRecentModelsCache(): void {
89
- cache = null;
90
- cachePath = null;
91
- }
@@ -43,14 +43,10 @@ export function protectedResidencyModels(settings: ClioSettings): ProtectedModel
43
43
  if (!trimmed || byId.has(trimmed)) return;
44
44
  byId.set(trimmed, role);
45
45
  };
46
- add(settings.orchestrator.model, "chat");
47
- add(settings.background.model, "memory");
48
- add(settings.workers.default.model, "worker");
49
- for (const profile of Object.values(settings.workers.profiles ?? {})) add(profile.model, "worker");
46
+ add(settings.chat.model, "chat");
47
+ add(settings.context.memory.model, "memory");
48
+ add(settings.fleet.default.model, "worker");
49
+ for (const profile of Object.values(settings.fleet.profiles ?? {})) add(profile.model, "worker");
50
50
  for (const target of settings.targets) add(target.defaultModel, "target-default");
51
51
  return [...byId].map(([modelId, role]) => ({ modelId, role }));
52
52
  }
53
-
54
- export function protectedResidencyModelIds(settings: ClioSettings): string[] {
55
- return protectedResidencyModels(settings).map((ref) => ref.modelId);
56
- }
@@ -50,7 +50,7 @@ function warnStaticCommand(config: string, options?: ResolveConfigValueOptions):
50
50
  });
51
51
  }
52
52
 
53
- export function expandConfigValue(value: string, options?: ResolveConfigValueOptions): string {
53
+ function expandConfigValue(value: string, options?: ResolveConfigValueOptions): string {
54
54
  const sourceEnv = env(options);
55
55
  return value.replace(/\$(\w+)|\$\{([^}]+)\}/g, (match, bare: string | undefined, braced: string | undefined) => {
56
56
  const key = bare ?? braced;
@@ -101,20 +101,6 @@ export function responseModelIdObservationFromRecord(
101
101
  return { state: "legacy-difference-only", differingModelId: nonEmptyString(record.responseModel) };
102
102
  }
103
103
 
104
- /** Human vocabulary shared by usage, footer, and receipt projections. */
105
- export function responseModelIdObservationLabel(observation: ResponseModelIdObservation): string {
106
- switch (observation.state) {
107
- case "reported":
108
- return "reported";
109
- case "not-reported":
110
- return "not reported";
111
- case "not-observed":
112
- return "not observed";
113
- case "legacy-difference-only":
114
- return "legacy difference-only";
115
- }
116
- }
117
-
118
104
  /** Model id used for accounting without claiming more than the observation supports. */
119
105
  export function attributedModelId(
120
106
  observation: ResponseModelIdObservation,