@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
@@ -2,6 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { realpathSync } from "node:fs";
3
3
  import { isAbsolute, resolve as resolvePath } from "node:path";
4
4
  import {
5
+ type AccountabilityEvidenceReadyPayload,
5
6
  BusChannels,
6
7
  type DispatchCompletedPayload,
7
8
  type DispatchEnqueuedPayload,
@@ -77,10 +78,10 @@ export interface AcpSafeSettingsSnapshot extends AcpRoutingSnapshot {
77
78
  }
78
79
 
79
80
  export type AcpSafeSettingsPatch = Partial<{
80
- "orchestrator.target": string | null;
81
- "orchestrator.model": string | null;
82
- "orchestrator.thinkingLevel": AcpThinkingLevel;
83
- autonomy: AutonomyLevel;
81
+ "chat.target": string | null;
82
+ "chat.model": string | null;
83
+ "chat.thinkingLevel": AcpThinkingLevel;
84
+ "safety.autonomy": AutonomyLevel;
84
85
  }>;
85
86
 
86
87
  export interface AcpSettingsControl {
@@ -209,6 +210,8 @@ interface AcpServerUsage {
209
210
  cacheRead: number;
210
211
  cacheWrite: number;
211
212
  reasoning: number;
213
+ totalTokens: number;
214
+ costUsd: number;
212
215
  }
213
216
 
214
217
  function isRecord(value: unknown): value is Record<string, unknown> {
@@ -333,7 +336,10 @@ const ACP_MAX_REPLAY_TOOL_CALLS = 8192;
333
336
  * the list is the allowlist, and a client's requested kinds are intersected
334
337
  * with it rather than trusted. `safety.loopBlocked` was the first member; the
335
338
  * dispatch lifecycle joined it so a client can draw a live fleet board from
336
- * reported facts instead of inferring one from tool titles or timing.
339
+ * reported facts instead of inferring one from tool titles or timing;
340
+ * `accountability.evidenceReady` follows a run's terminal event once its
341
+ * evidence bundle has landed, so the board can show first-pass success and a
342
+ * finding count without reading Clio's state tree.
337
343
  */
338
344
  const ACP_FORWARDABLE_EVENT_KINDS = [
339
345
  "safety.loopBlocked",
@@ -342,6 +348,7 @@ const ACP_FORWARDABLE_EVENT_KINDS = [
342
348
  "dispatch.progress",
343
349
  "dispatch.completed",
344
350
  "dispatch.failed",
351
+ "accountability.evidenceReady",
345
352
  ] as const;
346
353
 
347
354
  type AcpForwardableEventKind = (typeof ACP_FORWARDABLE_EVENT_KINDS)[number];
@@ -359,6 +366,9 @@ const ACP_MAX_DISPATCH_TASK_PREVIEW_BYTES = 160;
359
366
 
360
367
  /** Wire bound for the short identifiers a dispatch event carries. */
361
368
  const ACP_MAX_DISPATCH_ID_BYTES = 128;
369
+ /** Evidence tags are a closed vocabulary of short identifiers; anything wider is not a tag. */
370
+ const ACP_MAX_EVIDENCE_TAGS = 32;
371
+ const ACP_MAX_EVIDENCE_TAG_BYTES = 64;
362
372
 
363
373
  /**
364
374
  * Progress events forwarded per run before the stream is capped. One run
@@ -521,8 +531,8 @@ function utf8Bytes(value: string): number {
521
531
  return Buffer.byteLength(value, "utf8");
522
532
  }
523
533
 
524
- function emptyUsage(): AcpServerUsage {
525
- return { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, reasoning: 0 };
534
+ export function emptyUsage(): AcpServerUsage {
535
+ return { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, reasoning: 0, totalTokens: 0, costUsd: 0 };
526
536
  }
527
537
 
528
538
  function createActivePromptState(): ActivePrompt {
@@ -552,15 +562,33 @@ function finite(value: unknown): number {
552
562
  return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : 0;
553
563
  }
554
564
 
555
- function mergeUsage(into: AcpServerUsage, usage: unknown): void {
565
+ /** Only field `sumRunUsage` (chat-loop-messages.ts) reads for a dollar figure; matched here so ACP never re-derives cost through a separate path. */
566
+ function costTotal(usage: Record<string, unknown>): number {
567
+ const cost = usage.cost;
568
+ return isRecord(cost) ? finite(cost.total) : 0;
569
+ }
570
+
571
+ export function mergeUsage(into: AcpServerUsage, usage: unknown): void {
556
572
  if (!isRecord(usage)) return;
557
- into.input +=
573
+ const input =
558
574
  finite(usage.input) + finite(usage.inputTokens) + finite(usage.input_tokens) + finite(usage.prompt_tokens);
559
- into.output +=
575
+ const output =
560
576
  finite(usage.output) + finite(usage.outputTokens) + finite(usage.output_tokens) + finite(usage.completion_tokens);
561
- into.cacheRead += finite(usage.cacheRead) + finite(usage.cacheReadTokens) + finite(usage.cache_read_tokens);
562
- into.cacheWrite += finite(usage.cacheWrite) + finite(usage.cacheWriteTokens) + finite(usage.cache_write_tokens);
563
- into.reasoning += finite(usage.reasoning) + finite(usage.reasoningTokens) + finite(usage.reasoning_tokens);
577
+ const cacheRead = finite(usage.cacheRead) + finite(usage.cacheReadTokens) + finite(usage.cache_read_tokens);
578
+ const cacheWrite = finite(usage.cacheWrite) + finite(usage.cacheWriteTokens) + finite(usage.cache_write_tokens);
579
+ const reasoning = finite(usage.reasoning) + finite(usage.reasoningTokens) + finite(usage.reasoning_tokens);
580
+ into.input += input;
581
+ into.output += output;
582
+ into.cacheRead += cacheRead;
583
+ into.cacheWrite += cacheWrite;
584
+ into.reasoning += reasoning;
585
+ // Same fallback sumRunUsage uses: prefer the provider's own total, otherwise
586
+ // sum the four merged categories for this message (reasoning excluded,
587
+ // matching sumRunUsage, since a provider that reports reasoning separately
588
+ // still counts it inside output for billing).
589
+ const explicitTotal = finite(usage.totalTokens) + finite(usage.total_tokens);
590
+ into.totalTokens += explicitTotal > 0 ? explicitTotal : input + output + cacheRead + cacheWrite;
591
+ into.costUsd += costTotal(usage);
564
592
  }
565
593
 
566
594
  function mergeMessageUsage(into: AcpServerUsage, message: unknown, seen?: WeakSet<object>): void {
@@ -676,21 +704,26 @@ function eventTextDelta(event: AcpEventRecord): string {
676
704
  }
677
705
 
678
706
  /**
679
- * The next unused `clio-tool-<n>`. The counter alone is not enough: an engine
680
- * that names its own calls `clio-tool-1` would otherwise collide with an alias
707
+ * The next unused `clio-coder-tool-<n>`. The counter alone is not enough: an engine
708
+ * that names its own calls `clio-coder-tool-1` would otherwise collide with an alias
681
709
  * this server minted, and two different calls sharing one wire id is the exact
682
710
  * failure aliasing exists to prevent.
683
711
  */
684
712
  function nextAliasToolCallId(active: ActivePrompt): string {
685
713
  for (;;) {
686
714
  active.toolCallSequence += 1;
687
- const alias = `clio-tool-${active.toolCallSequence}`;
715
+ const alias = `clio-coder-tool-${active.toolCallSequence}`;
688
716
  if (active.usedWireIds.has(alias)) continue;
689
717
  active.usedWireIds.add(alias);
690
718
  return alias;
691
719
  }
692
720
  }
693
721
 
722
+ function normalizeReleasedAliasToolCallId(engineId: string): string {
723
+ const legacy = /^clio-tool-([1-9]\d*)$/u.exec(engineId);
724
+ return legacy === null ? engineId : `clio-coder-tool-${legacy[1]}`;
725
+ }
726
+
694
727
  /** Records `wireId` as the newest wire id this engine id speaks under. */
695
728
  function pushWireId(active: ActivePrompt, engineId: string, wireId: string): string {
696
729
  const existing = active.toolCallWireIds.get(engineId);
@@ -705,9 +738,10 @@ function pushWireId(active: ActivePrompt, engineId: string, wireId: string): str
705
738
  * call travels under a per-prompt alias.
706
739
  */
707
740
  function mintWireId(active: ActivePrompt, engineId: string): string {
708
- const usable = utf8Bytes(engineId) <= ACP_MAX_TOOL_CALL_ID_BYTES && !active.usedWireIds.has(engineId);
709
- if (usable) active.usedWireIds.add(engineId);
710
- return pushWireId(active, engineId, usable ? engineId : nextAliasToolCallId(active));
741
+ const candidate = normalizeReleasedAliasToolCallId(engineId);
742
+ const usable = utf8Bytes(candidate) <= ACP_MAX_TOOL_CALL_ID_BYTES && !active.usedWireIds.has(candidate);
743
+ if (usable) active.usedWireIds.add(candidate);
744
+ return pushWireId(active, engineId, usable ? candidate : nextAliasToolCallId(active));
711
745
  }
712
746
 
713
747
  /**
@@ -975,14 +1009,14 @@ function handleChatEvent(
975
1009
  if (last !== undefined) applyStopReason(active, last);
976
1010
  return;
977
1011
  }
978
- // Clio lifecycle events (agent_start, retry_status, clio_plan_update) have
1012
+ // Clio lifecycle events (agent_start, retry_status, clio_coder_plan_update) have
979
1013
  // no ACP v1 SessionUpdate equivalent. The prompt turn is bounded by the
980
1014
  // session/prompt response, so emitting non-spec `progress` updates would
981
1015
  // break strict clients. They are intentionally dropped. The same protocol
982
1016
  // gap applies to routing advisories (external settings divergence, active
983
1017
  // target removed): ACP v1 has no agent-initiated advisory channel, so the
984
1018
  // orchestrator records those as `custom` session-ledger entries
985
- // (customType "clio.routing-notice") instead of inventing update kinds.
1019
+ // (customType "clio-coder.routing-notice") instead of inventing update kinds.
986
1020
  }
987
1021
 
988
1022
  const ACP_MAX_SESSION_ID_BYTES = 128;
@@ -1259,12 +1293,7 @@ function sessionResultMeta(
1259
1293
  };
1260
1294
  }
1261
1295
 
1262
- const ACP_SAFE_SETTINGS_KEYS = [
1263
- "orchestrator.target",
1264
- "orchestrator.model",
1265
- "orchestrator.thinkingLevel",
1266
- "autonomy",
1267
- ] as const;
1296
+ const ACP_SAFE_SETTINGS_KEYS = ["chat.target", "chat.model", "chat.thinkingLevel", "safety.autonomy"] as const;
1268
1297
  const ACP_THINKING_LEVELS = new Set<AcpThinkingLevel>(["off", "minimal", "low", "medium", "high", "xhigh", "max"]);
1269
1298
  const ACP_AUTONOMY_LEVELS = new Set<AutonomyLevel>(["read-only", "suggest", "auto-edit", "full-auto"]);
1270
1299
  const ACP_MAX_TARGETS = 64;
@@ -1288,12 +1317,12 @@ function safeSettingsProjection(snapshot: AcpSafeSettingsSnapshot): Record<strin
1288
1317
  const autonomy = ACP_AUTONOMY_LEVELS.has(snapshot.autonomy) ? snapshot.autonomy : DEFAULT_AUTONOMY_LEVEL;
1289
1318
  return {
1290
1319
  settings: {
1291
- orchestrator: {
1320
+ chat: {
1292
1321
  target: safeConfiguredIdentifier(snapshot.target, ACP_MAX_TARGET_ID_BYTES),
1293
1322
  model: safeConfiguredIdentifier(snapshot.model, ACP_MAX_MODEL_ID_BYTES),
1294
1323
  thinkingLevel,
1295
1324
  },
1296
- autonomy,
1325
+ safety: { autonomy },
1297
1326
  },
1298
1327
  editable: [...ACP_SAFE_SETTINGS_KEYS],
1299
1328
  };
@@ -1856,6 +1885,29 @@ export async function serveClioAcpAgent(options: ClioAcpServerOptions): Promise<
1856
1885
  });
1857
1886
  }),
1858
1887
  );
1888
+ unsubscribeEvents.push(
1889
+ bus.on(BusChannels.AccountabilityEvidenceReady, (payload: AccountabilityEvidenceReadyPayload) => {
1890
+ // Arrives after dispatch.completed or dispatch.failed for the same run,
1891
+ // so it is terminal too: nothing about that run follows it. The
1892
+ // bundle's prose (findings, overview) stays behind; only the summary
1893
+ // counters the projection itself carries cross, and the tags are
1894
+ // filtered to bounded identifiers rather than truncated into new ones.
1895
+ const runId = safeStoredIdentifier(payload.runId, ACP_MAX_DISPATCH_ID_BYTES);
1896
+ const evidenceId = safeStoredIdentifier(payload.evidenceId, ACP_MAX_DISPATCH_ID_BYTES);
1897
+ if (runId === null || evidenceId === null) return;
1898
+ const tags = (Array.isArray(payload.tags) ? payload.tags : [])
1899
+ .map((tag) => safeStoredIdentifier(tag, ACP_MAX_EVIDENCE_TAG_BYTES))
1900
+ .filter((tag): tag is string => tag !== null)
1901
+ .slice(0, ACP_MAX_EVIDENCE_TAGS);
1902
+ forwardEvent("accountability.evidenceReady", null, true, {
1903
+ runId,
1904
+ evidenceId,
1905
+ firstPassSuccess: payload.firstPassSuccess === true,
1906
+ findingCount: safeCount(payload.findingCount),
1907
+ tags,
1908
+ });
1909
+ }),
1910
+ );
1859
1911
  }
1860
1912
  const unsubscribeEventStream = (): void => {
1861
1913
  for (const unsubscribe of unsubscribeEvents) unsubscribe();
@@ -2318,7 +2370,7 @@ export async function serveClioAcpAgent(options: ClioAcpServerOptions): Promise<
2318
2370
  throw new AcpRequestError(-32602, "patch contains an unknown setting", { code: "invalid_params" });
2319
2371
  }
2320
2372
  switch (key) {
2321
- case "orchestrator.target": {
2373
+ case "chat.target": {
2322
2374
  if (value === null) {
2323
2375
  patch[key] = null;
2324
2376
  break;
@@ -2333,16 +2385,16 @@ export async function serveClioAcpAgent(options: ClioAcpServerOptions): Promise<
2333
2385
  patch[key] = target;
2334
2386
  break;
2335
2387
  }
2336
- case "orchestrator.model":
2388
+ case "chat.model":
2337
2389
  patch[key] = value === null ? null : requireBoundedClientString(value, key, ACP_MAX_MODEL_ID_BYTES);
2338
2390
  break;
2339
- case "orchestrator.thinkingLevel":
2391
+ case "chat.thinkingLevel":
2340
2392
  if (typeof value !== "string" || !ACP_THINKING_LEVELS.has(value as AcpThinkingLevel)) {
2341
2393
  throw new AcpRequestError(-32602, "invalid thinking level", { code: "invalid_params" });
2342
2394
  }
2343
2395
  patch[key] = value as AcpThinkingLevel;
2344
2396
  break;
2345
- case "autonomy":
2397
+ case "safety.autonomy":
2346
2398
  if (typeof value !== "string" || !ACP_AUTONOMY_LEVELS.has(value as AutonomyLevel)) {
2347
2399
  throw new AcpRequestError(-32602, "invalid autonomy level", { code: "invalid_params" });
2348
2400
  }
@@ -2351,8 +2403,8 @@ export async function serveClioAcpAgent(options: ClioAcpServerOptions): Promise<
2351
2403
  }
2352
2404
  }
2353
2405
  const current = options.settings.read();
2354
- const nextTarget = patch["orchestrator.target"] === undefined ? current.target : patch["orchestrator.target"];
2355
- const nextModel = patch["orchestrator.model"] === undefined ? current.model : patch["orchestrator.model"];
2406
+ const nextTarget = patch["chat.target"] === undefined ? current.target : patch["chat.target"];
2407
+ const nextModel = patch["chat.model"] === undefined ? current.model : patch["chat.model"];
2356
2408
  if (nextTarget === null && nextModel !== null) {
2357
2409
  throw new AcpRequestError(-32602, "model requires a configured target", { code: "invalid_params" });
2358
2410
  }
@@ -2606,6 +2658,8 @@ function promptResponse(stopReason: string, active: ActivePrompt): AcpPromptResp
2606
2658
  cacheRead: active.usage.cacheRead,
2607
2659
  cacheWrite: active.usage.cacheWrite,
2608
2660
  reasoning: active.usage.reasoning,
2661
+ totalTokens: active.usage.totalTokens,
2662
+ costUsd: active.usage.costUsd,
2609
2663
  },
2610
2664
  },
2611
2665
  };
@@ -27,7 +27,7 @@ interface MediatorInput {
27
27
  toolGovernance: DelegationToolGovernance;
28
28
  /**
29
29
  * Session autonomy level (sd-01 §2.5). Applied after the safety net under
30
- * clio-policy governance; `ask` dispositions resolve as non-stall denials
30
+ * clio-coder-policy governance; `ask` dispositions resolve as non-stall denials
31
31
  * because a delegation has no operator to answer a prompt.
32
32
  */
33
33
  autonomy?: AutonomyLevel;
@@ -579,7 +579,7 @@ export class AcpToolMediator {
579
579
  let safetyDecision: SafetyDecision | undefined;
580
580
 
581
581
  if (mapped.validationError !== undefined) {
582
- if (this.input.toolGovernance === "clio-policy") {
582
+ if (this.input.toolGovernance === "clio-coder-policy") {
583
583
  const invalidSafetyDecisions = mapped.evaluations.map((evaluation) =>
584
584
  this.input.safety.evaluate({ tool: evaluation.tool, args: evaluation.args }),
585
585
  );
@@ -34,7 +34,7 @@ export const ACP_MAX_CHUNK_BYTES = 16384;
34
34
  * Upper bound on a `toolCallId` this server puts on the wire, in UTF-8 bytes
35
35
  * (CONTRACT C001 §3). Identity is one call per id in both directions: an engine
36
36
  * id over this bound, missing, or already claimed by another call this turn
37
- * travels under a `clio-tool-<n>` alias, and an engine id starting a second call
37
+ * travels under a `clio-coder-tool-<n>` alias, and an engine id starting a second call
38
38
  * mints a fresh alias rather than reusing the first call's wire id. A permission
39
39
  * request binds only to an id the client already received a `tool_call` for and
40
40
  * has not yet seen finish; nothing is minted on that path.
@@ -40,7 +40,7 @@ function randomState(): string {
40
40
  return base64Url(bytes);
41
41
  }
42
42
 
43
- export function buildAuthorizeUrl(params: { challenge: string; state: string }): string {
43
+ function buildAuthorizeUrl(params: { challenge: string; state: string }): string {
44
44
  const query = new URLSearchParams({
45
45
  client_id: AUTH_CLIENT_ID,
46
46
  response_type: "code",
@@ -55,7 +55,7 @@ export function buildAuthorizeUrl(params: { challenge: string; state: string }):
55
55
  return `${AUTHORIZE_URL}?${query.toString()}`;
56
56
  }
57
57
 
58
- export function parseAuthorizationInput(input: string): string {
58
+ function parseAuthorizationInput(input: string): string {
59
59
  const value = input.trim();
60
60
  if (!value) return "";
61
61
  try {
@@ -89,7 +89,7 @@ function isRecord(value: unknown): value is Record<string, unknown> {
89
89
  return typeof value === "object" && value !== null;
90
90
  }
91
91
 
92
- export function selectGatewayGrant(payload: GlobusTokenResponse): GlobusTokenGrant {
92
+ function selectGatewayGrant(payload: GlobusTokenResponse): GlobusTokenGrant {
93
93
  const grants: GlobusTokenGrant[] = [payload, ...(Array.isArray(payload.other_tokens) ? payload.other_tokens : [])];
94
94
  const byResourceServer = grants.find((grant) => grant.resource_server === GATEWAY_CLIENT_ID);
95
95
  if (byResourceServer) return byResourceServer;
@@ -103,7 +103,7 @@ export function selectGatewayGrant(payload: GlobusTokenResponse): GlobusTokenGra
103
103
  );
104
104
  }
105
105
 
106
- export function grantToCredentials(grant: GlobusTokenGrant, previousRefresh?: string): OAuthCredentials {
106
+ function grantToCredentials(grant: GlobusTokenGrant, previousRefresh?: string): OAuthCredentials {
107
107
  const access = grant.access_token;
108
108
  if (typeof access !== "string" || access.length === 0) {
109
109
  throw new Error("Globus token response is missing an access token for the ALCF gateway.");
@@ -172,7 +172,7 @@ async function refreshGatewayToken(refreshToken: string, signal: AbortSignal): P
172
172
  return grantToCredentials(selectGatewayGrant(payload), refreshToken);
173
173
  }
174
174
 
175
- export async function loginAlcf(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials> {
175
+ async function loginAlcf(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials> {
176
176
  const { verifier, challenge } = await generatePkce();
177
177
  const url = buildAuthorizeUrl({ challenge, state: randomState() });
178
178
  callbacks.onAuth({
@@ -63,7 +63,7 @@ export function antigravitySubprocessConfigForAutonomy(
63
63
  return { extraArgs: [], dangerousBypass: false, externalMode: "agy-settings-default" };
64
64
  }
65
65
 
66
- export function buildAntigravityPrompt(input: WorkerRunInput): string {
66
+ function buildAntigravityPrompt(input: WorkerRunInput): string {
67
67
  const parts: string[] = [];
68
68
  const systemPrompt = input.systemPrompt.trim();
69
69
  if (systemPrompt.length > 0) parts.push(systemPrompt);
@@ -75,7 +75,7 @@ export function buildAntigravityPrompt(input: WorkerRunInput): string {
75
75
  return parts.join("\n\n");
76
76
  }
77
77
 
78
- export function buildAgyArgs(input: WorkerRunInput): string[] {
78
+ function buildAgyArgs(input: WorkerRunInput): string[] {
79
79
  assertToolProfileEnforceable(input.toolProfile, "antigravity-code");
80
80
  const permission = antigravitySubprocessConfigForAutonomy(input.autonomy);
81
81
  const args = ["--print", ...permission.extraArgs];
@@ -78,7 +78,7 @@ function unregisterEngineApiProviders(sourceId: string): void {
78
78
  compatUniverse?.unregisterApiProviders(sourceId);
79
79
  }
80
80
 
81
- export function getEngineApiProvider(api: Api): EngineRegisteredApiProvider | undefined {
81
+ function getEngineApiProvider(api: Api): EngineRegisteredApiProvider | undefined {
82
82
  return registry.get(api)?.provider;
83
83
  }
84
84
 
@@ -5,8 +5,6 @@ import {
5
5
  type ResidencyAdapter,
6
6
  ResidencyPreconditionError,
7
7
  reconcileResidency,
8
- resetResidencyState,
9
- residencyManaged,
10
8
  residentTagProtected,
11
9
  } from "./residency.js";
12
10
 
@@ -28,8 +26,8 @@ export interface LlamaCppResidencyInput {
28
26
  runtimeId: string;
29
27
  keepModelId: string;
30
28
  /**
31
- * Combined env + target lifecycle opt-out verdict from the caller
32
- * (residencyManagedFor). Defaults to the env-only switch.
29
+ * Target lifecycle verdict from the caller (residencyManagedFor). Defaults
30
+ * to managed for direct adapter callers.
33
31
  */
34
32
  managed?: boolean;
35
33
  fetchImpl?: typeof fetch;
@@ -72,11 +70,6 @@ interface LlamaCppRouterProps {
72
70
  maxInstances?: number;
73
71
  }
74
72
 
75
- /** Test-only: clear the reconciler's TTL cache and Clio-loaded registry. */
76
- export function resetLlamaCppResidencyState(): void {
77
- resetResidencyState();
78
- }
79
-
80
73
  function isRecord(value: unknown): value is Record<string, unknown> {
81
74
  return value !== null && typeof value === "object" && !Array.isArray(value);
82
75
  }
@@ -107,19 +100,7 @@ function residentModel(model: LlamaCppRouterModel): boolean {
107
100
  return isResidentState(model.state);
108
101
  }
109
102
 
110
- /** Extract resident (loaded, loading, or sleeping) model records from a /v1/models payload. */
111
- export function parseLlamaCppResidentModels(payload: unknown): LlamaCppResidentModel[] {
112
- return parseRouterModels(payload)
113
- .filter(residentModel)
114
- .map((entry) => ({ id: entry.id, tags: entry.tags }));
115
- }
116
-
117
- /** Extract resident (loaded or loading) model ids from a /v1/models payload. */
118
- export function parseLlamaCppResident(payload: unknown): string[] {
119
- return parseLlamaCppResidentModels(payload).map((entry) => entry.id);
120
- }
121
-
122
- export function parseLlamaCppRouterProps(payload: unknown): LlamaCppRouterProps {
103
+ function parseLlamaCppRouterProps(payload: unknown): LlamaCppRouterProps {
123
104
  if (!isRecord(payload)) return {};
124
105
  const maxInstances = payload.max_instances;
125
106
  return typeof maxInstances === "number" && Number.isFinite(maxInstances) && maxInstances > 0
@@ -302,7 +283,7 @@ export async function ensureLlamaCppResidency(input: LlamaCppResidencyInput): Pr
302
283
  targetId: input.targetId,
303
284
  runtimeId: input.runtimeId,
304
285
  keepModelId: input.keepModelId,
305
- managed: input.managed ?? residencyManaged(),
286
+ managed: input.managed ?? true,
306
287
  strategy: "router",
307
288
  listResident: async () => {
308
289
  const models = await fetchRouterModels(input, fetchImpl);
@@ -16,10 +16,10 @@ import { emitResidencyMutation, emitResidencyNotice, reconcileResidency, residen
16
16
  import { withResidencyLock } from "./residency-lock.js";
17
17
 
18
18
  interface LmStudioModelMetadata {
19
- clio?: {
19
+ clioCoder?: {
20
20
  targetId: string;
21
21
  runtimeId: string;
22
- lifecycle?: "user-managed" | "clio-managed";
22
+ lifecycle?: "user-managed" | "clio-coder-managed";
23
23
  lmstudio?: TargetDescriptor["lmstudio"];
24
24
  lmstudioDefaultModel?: string;
25
25
  };
@@ -42,8 +42,8 @@ function responseInstanceId(data: unknown): string | undefined {
42
42
  return typeof id === "string" && id.trim().length > 0 ? id.trim() : undefined;
43
43
  }
44
44
 
45
- function metadata(model: Model<Api>): NonNullable<LmStudioModelMetadata["clio"]> | undefined {
46
- return (model as Model<Api> & LmStudioModelMetadata).clio;
45
+ function metadata(model: Model<Api>): NonNullable<LmStudioModelMetadata["clioCoder"]> | undefined {
46
+ return (model as Model<Api> & LmStudioModelMetadata).clioCoder;
47
47
  }
48
48
 
49
49
  function targetForModel(model: Model<"openai-completions">): TargetDescriptor | null {
@@ -145,11 +145,6 @@ function emitResidencyNoticeOnce(key: string, notice: Parameters<typeof emitResi
145
145
  emitResidencyNotice(notice);
146
146
  }
147
147
 
148
- /** Test seam: forget which residency facts were announced. */
149
- export function resetAnnouncedResidencyFacts(): void {
150
- announcedResidencyFacts.clear();
151
- }
152
-
153
148
  export async function ensureLmStudioResidency(
154
149
  model: Model<"openai-completions">,
155
150
  options: { apiKey?: string; signal?: AbortSignal } = {},
@@ -32,7 +32,7 @@ import {
32
32
  } from "../../domains/providers/index.js";
33
33
  import type { LocalModelQuirks, SamplingProfile } from "../../domains/providers/types/local-model-quirks.js";
34
34
  import { calculateEngineCost } from "../ai.js";
35
- import { createGemmaChannelFilter } from "../gemma-channel-filter.js";
35
+ import { createGemmaChannelFilter, usesGemmaChannelMarkers } from "../gemma-channel-filter.js";
36
36
  import { createSentinelStripper } from "../strip-tokenizer-sentinels.js";
37
37
  import { remainingContextMaxTokens } from "./output-budget.js";
38
38
  import { type ResidencyAdapter, reconcileResidency, residencyManagedFor } from "./residency.js";
@@ -43,11 +43,11 @@ import type { EngineApiProvider } from "./types.js";
43
43
  const REASONING_CHARS_PER_TOKEN = 4;
44
44
 
45
45
  interface ClioRuntimeMetadata {
46
- clio?: {
46
+ clioCoder?: {
47
47
  targetId: string;
48
48
  runtimeId: string;
49
49
  /** Present only when settings set the target lifecycle explicitly. */
50
- lifecycle?: "user-managed" | "clio-managed";
50
+ lifecycle?: "user-managed" | "clio-coder-managed";
51
51
  gateway?: boolean;
52
52
  family?: string;
53
53
  quirks?: LocalModelQuirks;
@@ -55,11 +55,11 @@ interface ClioRuntimeMetadata {
55
55
  }
56
56
 
57
57
  function clioQuirks(model: Model<"ollama-native">): LocalModelQuirks | undefined {
58
- return (model as Model<"ollama-native"> & ClioRuntimeMetadata).clio?.quirks;
58
+ return (model as Model<"ollama-native"> & ClioRuntimeMetadata).clioCoder?.quirks;
59
59
  }
60
60
 
61
61
  function ollamaTargetId(model: Model<"ollama-native">): string {
62
- return (model as Model<"ollama-native"> & ClioRuntimeMetadata).clio?.targetId ?? model.provider;
62
+ return (model as Model<"ollama-native"> & ClioRuntimeMetadata).clioCoder?.targetId ?? model.provider;
63
63
  }
64
64
 
65
65
  /**
@@ -74,7 +74,7 @@ function ollamaTargetId(model: Model<"ollama-native">): string {
74
74
  async function reconcileOllamaResidency(model: Model<"ollama-native">, headers: Record<string, string>): Promise<void> {
75
75
  const baseUrl = model.baseUrl;
76
76
  if (!baseUrl) return;
77
- const metadata = (model as Model<"ollama-native"> & ClioRuntimeMetadata).clio;
77
+ const metadata = (model as Model<"ollama-native"> & ClioRuntimeMetadata).clioCoder;
78
78
  const adapter: ResidencyAdapter = {
79
79
  targetKey: residencyTargetKey("ollama-native", baseUrl),
80
80
  targetId: ollamaTargetId(model),
@@ -159,7 +159,7 @@ function userToOllama(content: string | (TextContent | ImageContent)[]): OllamaM
159
159
  return out;
160
160
  }
161
161
 
162
- export function assistantToOllama(content: AssistantMessage["content"]): OllamaMessage {
162
+ function assistantToOllama(content: AssistantMessage["content"]): OllamaMessage {
163
163
  const textParts: string[] = [];
164
164
  const toolCalls: OllamaToolCall[] = [];
165
165
  const thinkingParts: string[] = [];
@@ -270,7 +270,7 @@ function ollamaEvictClient(baseUrl: string, headers?: Record<string, string>): O
270
270
  * Map an Ollama `/api/ps` response to the runtime-agnostic resident shape,
271
271
  * preserving the GPU/total footprint when the server reports it.
272
272
  */
273
- export async function listResidentOllamaModels(client: OllamaEvictClient): Promise<ResidentModelInfo[]> {
273
+ async function listResidentOllamaModels(client: OllamaEvictClient): Promise<ResidentModelInfo[]> {
274
274
  const resident = await client.ps();
275
275
  return resident.models.map((entry) => {
276
276
  const primary = entry.model || entry.name;
@@ -384,7 +384,7 @@ function runStream(
384
384
  let doneReason: string | undefined;
385
385
  const sentinelStripper = createSentinelStripper();
386
386
  const resolved = resolveModelRuntimeCapabilitiesForModel(model, thinkingLevel);
387
- const channelFilter = resolved.family === "gemma-4" ? createGemmaChannelFilter() : null;
387
+ const channelFilter = usesGemmaChannelMarkers(resolved.modelId) ? createGemmaChannelFilter() : null;
388
388
  const closeActiveThinking = () => {
389
389
  if (!activeThinking) return;
390
390
  stream.push({