@iowarp/clio-coder 0.3.9 → 0.4.1

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 (733) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/NOTICE +33 -0
  3. package/README.md +121 -16
  4. package/dist/{acp-7LOELQFP.js → acp-ZILU3AUO.js} +19 -18
  5. package/dist/{agents-FIBG2SHA.js → agents-HYWGBGQR.js} +53 -39
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-N3QT7CBO.js} +24 -21
  8. package/dist/{builtins-AD25UL3C.js → builtins-UJLMOVOV.js} +6 -6
  9. package/dist/{chunk-I4HZDVNP.js → chunk-2LEAKD4C.js} +2 -3
  10. package/dist/{chunk-465CC7FK.js → chunk-2NM363SV.js} +60 -64
  11. package/dist/{chunk-4H6ULJ3H.js → chunk-2VG7KLYV.js} +1046 -1370
  12. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  13. package/dist/{chunk-NZU6YDNV.js → chunk-3I5NY75V.js} +5 -5
  14. package/dist/{chunk-47CMYGET.js → chunk-3QSOM6PA.js} +2 -2
  15. package/dist/chunk-42FMPA75.js +101 -0
  16. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  17. package/dist/{chunk-IHKBWSXF.js → chunk-5QIAJV2D.js} +3 -3
  18. package/dist/chunk-5YHDIDBP.js +97 -0
  19. package/dist/chunk-6CCS4G3W.js +1529 -0
  20. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  21. package/dist/{chunk-BVDVID7E.js → chunk-6FN3E6KX.js} +6 -6
  22. package/dist/{chunk-DG4M6ZUE.js → chunk-6HMJX2VU.js} +59 -59
  23. package/dist/{chunk-3MRC2YSQ.js → chunk-6I5ILFOF.js} +3 -2
  24. package/dist/chunk-6NJQITNH.js +1412 -0
  25. package/dist/chunk-6VC4OV3Z.js +365 -0
  26. package/dist/{chunk-LU7P4LHA.js → chunk-72GZI5EV.js} +2 -2
  27. package/dist/{chunk-5T7RBWN2.js → chunk-74YWRRU5.js} +9 -8
  28. package/dist/{chunk-VPTUJU4P.js → chunk-7EPLI7VL.js} +2 -2
  29. package/dist/{chunk-CA42X6KT.js → chunk-7OBGU7UB.js} +7 -7
  30. package/dist/{chunk-56KB5IJP.js → chunk-7PWAODYW.js} +3 -3
  31. package/dist/chunk-7RY5VZPH.js +573 -0
  32. package/dist/{chunk-OEDBCISO.js → chunk-ABLSQ6JX.js} +3 -3
  33. package/dist/{chunk-5HFBWUMU.js → chunk-AFKWHWXF.js} +13 -23
  34. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  35. package/dist/{chunk-WXCJ7VME.js → chunk-AKB4GYDL.js} +7 -7
  36. package/dist/chunk-AP73CFDC.js +308 -0
  37. package/dist/{chunk-4LJX2PUC.js → chunk-BBTJOK6Y.js} +5 -5
  38. package/dist/{chunk-QQ7EKM72.js → chunk-BDPT6GTK.js} +13 -61
  39. package/dist/chunk-BJGUKIG4.js +302 -0
  40. package/dist/chunk-BMS5RKQY.js +27 -0
  41. package/dist/{chunk-TD7UE2L5.js → chunk-BTGG6BG2.js} +81 -40
  42. package/dist/chunk-BTK3SSSK.js +67 -0
  43. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  44. package/dist/chunk-BWW4HLO4.js +301 -0
  45. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  46. package/dist/{chunk-HJB5IUKP.js → chunk-C537JADH.js} +18 -18
  47. package/dist/{chunk-774ILSRL.js → chunk-CDNVLKUX.js} +5 -4
  48. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  49. package/dist/{chunk-AEYBF3TB.js → chunk-CWVRRIEI.js} +2 -2
  50. package/dist/chunk-D4CJV46V.js +462 -0
  51. package/dist/chunk-D7E7WCDF.js +27 -0
  52. package/dist/{chunk-5PVQ4SRS.js → chunk-E67WX76H.js} +10 -126
  53. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  54. package/dist/chunk-EIMVLWB3.js +1842 -0
  55. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  56. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  57. package/dist/{chunk-3DUR4WUA.js → chunk-FYUN5KZ3.js} +25 -25
  58. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  59. package/dist/chunk-GIZNH63R.js +40 -0
  60. package/dist/chunk-GPPB3JBE.js +688 -0
  61. package/dist/{chunk-B5XRQOLB.js → chunk-GVQJ5CCZ.js} +17 -11
  62. package/dist/chunk-HHV2GANA.js +88 -0
  63. package/dist/chunk-HJWWJ6IL.js +184 -0
  64. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  65. package/dist/chunk-HRQMFLJP.js +75 -0
  66. package/dist/{chunk-AD7Y7STJ.js → chunk-HUAS7ITX.js} +107 -97
  67. package/dist/{chunk-O6I4CIEU.js → chunk-I66EAJFY.js} +6 -6
  68. package/dist/{chunk-S4COXYBG.js → chunk-IG7BCQBA.js} +129 -106
  69. package/dist/{chunk-N3PBVRTZ.js → chunk-IXJT6DCX.js} +9 -7
  70. package/dist/chunk-J4HBWF6Y.js +2635 -0
  71. package/dist/chunk-J5LZHVIT.js +284 -0
  72. package/dist/{chunk-GAYUJ7LE.js → chunk-JA5QWE4Z.js} +544 -227
  73. package/dist/{chunk-B5CSFE7B.js → chunk-JIEGK6UF.js} +6 -174
  74. package/dist/{chunk-VKBMFOYV.js → chunk-JZWT5J3Y.js} +23 -27
  75. package/dist/chunk-K6BF4U2H.js +1785 -0
  76. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  77. package/dist/{chunk-YSEHGPCT.js → chunk-MA3H6DM5.js} +6 -6
  78. package/dist/{chunk-EBOC7MT3.js → chunk-MOPSG2X7.js} +9 -9
  79. package/dist/{chunk-KV2AOLDF.js → chunk-MQXIVJ35.js} +18 -29
  80. package/dist/{chunk-P3JGPQFL.js → chunk-N5UK64DP.js} +4 -4
  81. package/dist/chunk-NDDGJUXD.js +81 -0
  82. package/dist/chunk-NEKRRTYW.js +56 -0
  83. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-T3Z6VAAF.js → chunk-OJTRZGR3.js} +53 -92
  86. package/dist/{chunk-5DQRIYDZ.js → chunk-PBP4B7XR.js} +3 -3
  87. package/dist/{chunk-NQ6UCCOD.js → chunk-PJJ6MY27.js} +8 -8
  88. package/dist/chunk-PMZCIOCJ.js +25 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-7C6RYZGQ.js → chunk-PVAMAVBB.js} +5 -4
  91. package/dist/chunk-QDC3K2U3.js +262 -0
  92. package/dist/{chunk-JEQQR47K.js → chunk-QKIFBZKT.js} +173 -14
  93. package/dist/{chunk-R7LNVMCS.js → chunk-QMXC4JB7.js} +70 -78
  94. package/dist/chunk-QSNYB6ZV.js +195 -0
  95. package/dist/chunk-QTFGO774.js +644 -0
  96. package/dist/{chunk-ODFEOB4F.js → chunk-R23Z6K6I.js} +27 -9
  97. package/dist/{chunk-3UUY7R3Z.js → chunk-R32CLGZ6.js} +14 -14
  98. package/dist/chunk-R346GLFC.js +31 -0
  99. package/dist/chunk-RKSR6VSF.js +132 -0
  100. package/dist/{chunk-N5XKWMDW.js → chunk-SCYB3HA4.js} +73 -27
  101. package/dist/{chunk-PZ4I4JE2.js → chunk-SINK3QR6.js} +135 -125
  102. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  103. package/dist/chunk-T56WDKA5.js +183 -0
  104. package/dist/{chunk-ECUO3KDP.js → chunk-TD3PGPQA.js} +87 -26
  105. package/dist/{chunk-HKO36JWF.js → chunk-THYWACCR.js} +31 -3
  106. package/dist/{chunk-LXPJXFM5.js → chunk-TVH4ONAM.js} +18 -12
  107. package/dist/chunk-TVHHYFHE.js +255 -0
  108. package/dist/chunk-U2WB7TZS.js +271 -0
  109. package/dist/{chunk-NNNWO6F2.js → chunk-UAPGZHYC.js} +237 -33
  110. package/dist/{chunk-MIX5N5AC.js → chunk-UEDMSP56.js} +415 -160
  111. package/dist/{chunk-WIE7ZOSW.js → chunk-UXN6JT4W.js} +3 -3
  112. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  113. package/dist/{chunk-MV2VUEJC.js → chunk-VEGN6WIQ.js} +2 -2
  114. package/dist/chunk-VKFQTNDV.js +66 -0
  115. package/dist/{chunk-FALJGAWU.js → chunk-VKRH2TCS.js} +2 -2
  116. package/dist/{chunk-A2NJGIB3.js → chunk-VN3SHNBN.js} +2 -2
  117. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  118. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  119. package/dist/{chunk-EQ63NRB7.js → chunk-WNP7O5WZ.js} +3 -3
  120. package/dist/chunk-WR6U3OVP.js +45 -0
  121. package/dist/{chunk-TEO2TLVN.js → chunk-XKA2ICR3.js} +1051 -1196
  122. package/dist/{chunk-3V5AYSEQ.js → chunk-Y45G3AXC.js} +72 -65
  123. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  124. package/dist/chunk-YAKGTXEV.js +17 -0
  125. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  126. package/dist/{chunk-YW7UVM5V.js → chunk-ZAZB4JMW.js} +55 -11
  127. package/dist/{chunk-HCBCAYZU.js → chunk-ZJLUDYFY.js} +11 -11
  128. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  129. package/dist/{chunk-IFBNV6H6.js → chunk-ZW55JB7N.js} +3 -3
  130. package/dist/cli/index.js +48 -37
  131. package/dist/clio-IT3G3VQH.js +25 -0
  132. package/dist/{code-nav-LMW275PA.js → code-nav-RK6S7F6E.js} +8 -8
  133. package/dist/codewiki/build-worker.js +1 -1
  134. package/dist/{compile-cache-CVJMMODC.js → compile-cache-OQAVB7Y5.js} +3 -5
  135. package/dist/{components-ZFA3SAER.js → components-UBWCQSRW.js} +6 -6
  136. package/dist/{config-RXS5T3JT.js → config-3QZRWZJF.js} +73 -61
  137. package/dist/configure-FL7Y3KJF.js +54 -0
  138. package/dist/{context-MVOORGMF.js → context-5HE7ODYK.js} +61 -49
  139. package/dist/{context-I3BTOTCS.js → context-KYQFRVDC.js} +11 -11
  140. package/dist/{context-PALKKQYL.js → context-XNHL75JV.js} +43 -28
  141. package/dist/{context-clear-N2WOYZ2K.js → context-clear-N545L53A.js} +60 -48
  142. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-QHKXSV2F.js} +15 -13
  143. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-RGIE5PCT.js} +109 -72
  144. package/dist/{docs-7LQ23DLM.js → docs-5NAF6AU7.js} +7 -13
  145. package/dist/doctor-ZGPEGHIP.js +772 -0
  146. package/dist/{eval-IJ5VEZDJ.js → eval-GXLL44RD.js} +106 -86
  147. package/dist/eval-inventory-HBWSWQOK.js +315 -0
  148. package/dist/{evidence-L5APPXNV.js → evidence-HWLBRH3Q.js} +209 -51
  149. package/dist/{evolve-RGNKFJ52.js → evolve-FTZBMNVW.js} +57 -45
  150. package/dist/{extensions-7WYWUX5A.js → extensions-VHRBEID7.js} +7 -7
  151. package/dist/{fleet-6CNVBZZP.js → fleet-CKZHJWZJ.js} +215 -114
  152. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-EXDXBMV6.js} +13 -12
  153. package/dist/fleet-decisions-OTHB6KRL.js +157 -0
  154. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-YTEZUCUT.js} +20 -17
  155. package/dist/fleet-inspect-SS6YMDCK.js +445 -0
  156. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-PBY4VYOM.js} +6 -9
  157. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-KMEM5L3S.js} +25 -20
  158. package/dist/fleet-verify-QD5M7E7Q.js +178 -0
  159. package/dist/fleet-view-WAMJYNDT.js +94 -0
  160. package/dist/{init-VBN2ACVA.js → init-5XQRBOFV.js} +79 -66
  161. package/dist/install-NKNG7KD4.js +13 -0
  162. package/dist/interop-34TVO25M.js +116 -0
  163. package/dist/{library-JHGUMLY2.js → library-3QY6KF57.js} +25 -21
  164. package/dist/{memory-K4OQIYWG.js → memory-L4UTIIIW.js} +59 -47
  165. package/dist/{models-2NCZUWDD.js → models-ZVX3QOWE.js} +47 -37
  166. package/dist/{monitor-MMVTJABD.js → monitor-CEKVSYTS.js} +67 -57
  167. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-77BAP6BC.js} +7633 -7699
  168. package/dist/panes-7STHOAUJ.js +103 -0
  169. package/dist/panes-SHAUIRXY.js +60 -0
  170. package/dist/{paths-DBXMZMDU.js → paths-L7LGY6RN.js} +6 -6
  171. package/dist/{reset-DD5JGOY3.js → reset-EOLM7GVE.js} +15 -14
  172. package/dist/resources-74GKTLSF.js +115 -0
  173. package/dist/{run-QEGNX7FL.js → run-HBAUJNNZ.js} +139 -98
  174. package/dist/{share-JKD3BQMW.js → share-G3APVLVP.js} +25 -21
  175. package/dist/{skills-LMQIKDOZ.js → skills-35HHUKCR.js} +37 -27
  176. package/dist/{skills-eval-I7X2774U.js → skills-eval-QN4HSHDC.js} +80 -73
  177. package/dist/skills-inventory-J357J34F.js +129 -0
  178. package/dist/slash-commands-JZZCQA32.js +79 -0
  179. package/dist/{steer-CF5TDANS.js → steer-XAVHJM22.js} +4 -4
  180. package/dist/{support-I7LOJLIF.js → support-U7QOWY26.js} +7 -7
  181. package/dist/{targets-RUSR6B5Z.js → targets-DSM6CY3M.js} +67 -59
  182. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-JOPFUVEM.js} +15 -10
  183. package/dist/tools-MKNWVPBH.js +29 -0
  184. package/dist/{trace-ODOQIVIW.js → trace-ECQ7TIYZ.js} +194 -7
  185. package/dist/tui-primitives-K5PASC3O.js +17 -0
  186. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-N34PCTGJ.js} +6 -8
  187. package/dist/{upgrade-XANW3FXB.js → upgrade-H7TOM7YL.js} +37 -62
  188. package/dist/{usage-4H7ZRXQT.js → usage-X52N3IDJ.js} +70 -59
  189. package/dist/{verifiers-UZXNBZEB.js → verifiers-EJTVVSMA.js} +174 -14
  190. package/dist/{verify-BVKWTNDL.js → verify-YJL6XET2.js} +12 -11
  191. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-MPIFL3LL.js} +3 -4
  192. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-4NDZTQ4B.js} +86 -75
  193. package/dist/with-panes-OBOBFIIR.js +818 -0
  194. package/dist/worker/entry.js +131 -91
  195. package/docs/README.md +3 -2
  196. package/docs/acp.md +25 -4
  197. package/docs/alcf-provider.md +1 -1
  198. package/docs/architecture.md +2 -2
  199. package/docs/artifact-versions.md +4 -1
  200. package/docs/built-in-agents.md +40 -32
  201. package/docs/capacity-and-scheduling.md +43 -5
  202. package/docs/commands-and-modes.md +39 -4
  203. package/docs/config-knobs-audit.md +3 -0
  204. package/docs/configuration-and-targets.md +138 -167
  205. package/docs/context-engine.md +1 -1
  206. package/docs/development-pipeline.md +19 -0
  207. package/docs/dispatch-typed-intent.md +385 -0
  208. package/docs/documentation-coverage.md +2 -2
  209. package/docs/documentation-guide.md +1 -1
  210. package/docs/environment-variables.md +3 -1
  211. package/docs/eval-runner.md +1 -1
  212. package/docs/evals-internal.md +1 -1
  213. package/docs/evidence-and-memory.md +2 -2
  214. package/docs/evolution.md +1 -1
  215. package/docs/exit-codes-and-output.md +3 -1
  216. package/docs/extensions-and-sharing.md +25 -1
  217. package/docs/fleet-demo-runbook.md +6 -3
  218. package/docs/fleet-dispatch.md +30 -7
  219. package/docs/installation-and-lifecycle.md +16 -3
  220. package/docs/middleware-and-components.md +1 -1
  221. package/docs/model-catalog.md +10 -1
  222. package/docs/observability.md +3 -3
  223. package/docs/proactive-memory.md +1 -1
  224. package/docs/prompt-envelope-and-tools.md +1 -1
  225. package/docs/provider-adapter-cookbook.md +1 -1
  226. package/docs/release-cut-checklist.md +164 -177
  227. package/docs/safety-model.md +2 -2
  228. package/docs/scientific-validation.md +3 -3
  229. package/docs/session-lifecycle.md +1 -1
  230. package/docs/skills-marketplace.md +1 -1
  231. package/docs/tool-usage.md +18 -8
  232. package/docs/trace-store.md +16 -11
  233. package/docs/troubleshooting.md +2 -2
  234. package/docs/tui-design.md +1 -1
  235. package/docs/worker-dispatch-mechanics.md +1 -1
  236. package/evals/README.md +5 -0
  237. package/evals/behavioral-corpus-grader.mjs +103 -0
  238. package/evals/behavioral-machinery-baseline.json +2276 -0
  239. package/evals/behavioral-machinery-driver.ts +250 -0
  240. package/evals/behavioral-machinery-support.ts +253 -0
  241. package/evals/behavioral-machinery.yaml +614 -0
  242. package/evals/behavioral-model-negative-control.yaml +68 -0
  243. package/evals/behavioral-model.yaml +216 -0
  244. package/evals/fixtures/behavioral-facts.txt +3 -0
  245. package/evals/fixtures/behavioral-main.ts +7 -0
  246. package/evals/fixtures/decoy/note.txt +2 -0
  247. package/evals/fixtures/private/credentials.txt +1 -0
  248. package/evals/tracked-metrics-baseline.yaml +229 -0
  249. package/evals/tracked-metrics-grader.mjs +129 -0
  250. package/package.json +8 -16
  251. package/skills/README.md +6 -6
  252. package/skills/coding/ast-grep/SKILL.md +8 -2
  253. package/skills/coding/coding-standards/SKILL.md +8 -2
  254. package/skills/coding/prototype/SKILL.md +8 -2
  255. package/skills/coding/tdd/SKILL.md +8 -2
  256. package/skills/context/context-handoff/SKILL.md +12 -3
  257. package/skills/context/context-handoff/evals.md +3 -3
  258. package/skills/context/context-prime/SKILL.md +8 -2
  259. package/skills/context/context-prime/evals.md +2 -2
  260. package/skills/git/file-ticket/SKILL.md +9 -4
  261. package/skills/git/file-ticket/evals.md +2 -2
  262. package/skills/git/fix-issue/SKILL.md +12 -5
  263. package/skills/git/fix-issue/evals.md +4 -4
  264. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  265. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  266. package/skills/git/ship/SKILL.md +9 -3
  267. package/skills/git/ship/evals.md +4 -4
  268. package/skills/git/worktree-create/SKILL.md +7 -2
  269. package/skills/git/worktree-create/evals.md +6 -6
  270. package/skills/git/worktree-merge/SKILL.md +7 -2
  271. package/skills/git/worktree-merge/evals.md +6 -6
  272. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  273. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  274. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  275. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  276. package/skills/meta/credentials/SKILL.md +9 -2
  277. package/skills/meta/find-skills/SKILL.md +8 -2
  278. package/skills/meta/herdr/SKILL.md +8 -2
  279. package/skills/meta/skill-craft/SKILL.md +21 -4
  280. package/skills/planning/architecture/SKILL.md +9 -3
  281. package/skills/planning/backlog/SKILL.md +8 -2
  282. package/skills/planning/prd/SKILL.md +8 -2
  283. package/skills/planning/product-intent/SKILL.md +8 -2
  284. package/skills/planning/tech-spec/SKILL.md +9 -3
  285. package/skills/registry.yaml +66 -66
  286. package/skills/research/arxiv-literature/SKILL.md +8 -2
  287. package/skills/research/experiment-protocol/SKILL.md +9 -2
  288. package/skills/research/scientific-debugging/SKILL.md +9 -2
  289. package/skills/research/scientific-debugging/evals.md +2 -2
  290. package/skills/research/scientific-modernization/SKILL.md +9 -2
  291. package/skills/skill-marketplace.json +257 -38
  292. package/skills/workflow/cut-it/SKILL.md +10 -2
  293. package/skills/workflow/design-council/SKILL.md +11 -2
  294. package/skills/workflow/grill-me/SKILL.md +8 -2
  295. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  296. package/src/cli/acp.ts +8 -4
  297. package/src/cli/argv.ts +25 -0
  298. package/src/cli/auth.ts +2 -2
  299. package/src/cli/bootstrap-generate.ts +5 -5
  300. package/src/cli/clio.ts +6 -1
  301. package/src/cli/config-inspect.ts +3 -3
  302. package/src/cli/configure-interop.ts +1 -1
  303. package/src/cli/configure.ts +50 -48
  304. package/src/cli/default-target.ts +1 -1
  305. package/src/cli/docs.ts +6 -6
  306. package/src/cli/doctor-naming.ts +323 -0
  307. package/src/cli/doctor-panes.ts +156 -0
  308. package/src/cli/doctor-toolchain.ts +78 -0
  309. package/src/cli/doctor.ts +34 -1
  310. package/src/cli/eval-inventory.ts +436 -0
  311. package/src/cli/eval.ts +13 -0
  312. package/src/cli/evidence-detail.ts +88 -0
  313. package/src/cli/evidence-inventory.ts +183 -0
  314. package/src/cli/evidence.ts +30 -5
  315. package/src/cli/fleet-decisions.ts +69 -0
  316. package/src/cli/fleet-inspect.ts +334 -0
  317. package/src/cli/fleet-preflight.ts +1 -1
  318. package/src/cli/fleet-verify.ts +133 -0
  319. package/src/cli/fleet-view.ts +827 -0
  320. package/src/cli/fleet.ts +154 -40
  321. package/src/cli/index.ts +14 -2
  322. package/src/cli/interop-inspect.ts +128 -0
  323. package/src/cli/interop.ts +34 -0
  324. package/src/cli/models.ts +3 -3
  325. package/src/cli/modes/print.ts +1 -1
  326. package/src/cli/panes.ts +35 -0
  327. package/src/cli/reset.ts +6 -3
  328. package/src/cli/run.ts +67 -13
  329. package/src/cli/share.ts +1 -1
  330. package/src/cli/skills-eval.ts +11 -11
  331. package/src/cli/skills-inventory.ts +185 -0
  332. package/src/cli/skills.ts +16 -13
  333. package/src/cli/targets.ts +23 -24
  334. package/src/cli/tools.ts +321 -0
  335. package/src/cli/trace-inspect.ts +252 -0
  336. package/src/cli/trace.ts +64 -2
  337. package/src/cli/uninstall.ts +2 -2
  338. package/src/cli/upgrade.ts +29 -34
  339. package/src/cli/usage.ts +2 -2
  340. package/src/cli/validate-model.ts +1 -1
  341. package/src/cli/verifiers-inspect.ts +347 -0
  342. package/src/cli/verifiers.ts +9 -0
  343. package/src/cli/wiki-generate.ts +5 -5
  344. package/src/core/bash-exec.ts +1 -1
  345. package/src/core/boot-trace.ts +3 -3
  346. package/src/core/bus-events.ts +4 -0
  347. package/src/core/bus-trace.ts +2 -2
  348. package/src/core/compile-cache.ts +1 -1
  349. package/src/core/config.ts +1070 -845
  350. package/src/core/defaults.ts +342 -463
  351. package/src/core/domain-loader.ts +6 -4
  352. package/src/core/event-bus.ts +1 -1
  353. package/src/core/file-references.ts +78 -88
  354. package/src/core/git-commit-attribution.ts +3 -9
  355. package/src/core/guardrails.ts +24 -4
  356. package/src/core/naming-compat.ts +45 -0
  357. package/src/core/naming-events.ts +62 -0
  358. package/src/core/recent-models.ts +1 -7
  359. package/src/core/residency-protection.ts +4 -8
  360. package/src/core/resolve-config-value.ts +1 -1
  361. package/src/core/response-model-id.ts +0 -14
  362. package/src/core/response-schema.ts +44 -4
  363. package/src/core/session-routing.ts +84 -74
  364. package/src/core/skill-activation.ts +18 -0
  365. package/src/core/termination.ts +4 -4
  366. package/src/core/theme-token-hex.ts +43 -0
  367. package/src/core/timers.ts +2 -12
  368. package/src/core/tool-names.ts +2 -1
  369. package/src/core/xdg.ts +1 -1
  370. package/src/domains/agents/catalog.ts +2 -12
  371. package/src/domains/agents/extension.ts +3 -3
  372. package/src/domains/agents/fleets/build-review.md +0 -3
  373. package/src/domains/agents/fleets/build-test.md +0 -3
  374. package/src/domains/agents/registry.ts +7 -7
  375. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  376. package/src/domains/agents/result-contract.ts +165 -36
  377. package/src/domains/agents/spec.ts +0 -11
  378. package/src/domains/config/classify.ts +37 -46
  379. package/src/domains/config/extension.ts +5 -5
  380. package/src/domains/config/keybindings.ts +48 -47
  381. package/src/domains/config/watcher.ts +1 -1
  382. package/src/domains/context/codewiki/indexer.ts +1 -1
  383. package/src/domains/context/extension.ts +3 -3
  384. package/src/domains/context/prompt-context.ts +1 -1
  385. package/src/domains/context/wiki/assemble.ts +2 -2
  386. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  387. package/src/domains/context/working-set/replay/report.ts +1 -1
  388. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  389. package/src/domains/dispatch/active-route-planner.ts +2 -2
  390. package/src/domains/dispatch/admission-error.ts +9 -0
  391. package/src/domains/dispatch/admission.ts +22 -21
  392. package/src/domains/dispatch/agent-candidates.ts +1 -1
  393. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  394. package/src/domains/dispatch/agent-ledger.ts +1 -1
  395. package/src/domains/dispatch/assignment.ts +5 -5
  396. package/src/domains/dispatch/capacity-lease.ts +23 -6
  397. package/src/domains/dispatch/code-step.ts +1 -1
  398. package/src/domains/dispatch/contract.ts +2 -2
  399. package/src/domains/dispatch/council-topology.ts +398 -0
  400. package/src/domains/dispatch/extension.ts +287 -111
  401. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  402. package/src/domains/dispatch/fleet-plan.ts +7 -2
  403. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  404. package/src/domains/dispatch/fleet-run.ts +59 -3
  405. package/src/domains/dispatch/gate-decisions.ts +36 -15
  406. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  407. package/src/domains/dispatch/gate-topology.ts +289 -0
  408. package/src/domains/dispatch/index.ts +19 -0
  409. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  410. package/src/domains/dispatch/intent.ts +85 -1
  411. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  412. package/src/domains/dispatch/path-scope.ts +0 -61
  413. package/src/domains/dispatch/placement.ts +2 -2
  414. package/src/domains/dispatch/receipt-findings.ts +1 -1
  415. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  416. package/src/domains/dispatch/reservation-store.ts +24 -27
  417. package/src/domains/dispatch/route-decision.ts +1 -1
  418. package/src/domains/dispatch/route-history.ts +1 -1
  419. package/src/domains/dispatch/route-policy.ts +1 -1
  420. package/src/domains/dispatch/route-readiness.ts +0 -28
  421. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  422. package/src/domains/dispatch/run-event-journal.ts +599 -0
  423. package/src/domains/dispatch/state.ts +45 -1
  424. package/src/domains/dispatch/tool-stats.ts +1 -1
  425. package/src/domains/dispatch/transport.ts +2 -19
  426. package/src/domains/dispatch/types.ts +16 -3
  427. package/src/domains/dispatch/validation.ts +33 -8
  428. package/src/domains/dispatch/worker-protocol.ts +2 -2
  429. package/src/domains/eval/artifacts/store.ts +5 -4
  430. package/src/domains/eval/compare/compare.ts +3 -16
  431. package/src/domains/eval/compare/thresholds.ts +0 -8
  432. package/src/domains/eval/execution-provenance.ts +1 -1
  433. package/src/domains/eval/inventory.ts +113 -0
  434. package/src/domains/eval/metrics/token-stream.ts +0 -7
  435. package/src/domains/eval/report.ts +1 -1
  436. package/src/domains/eval/runner.ts +1 -1
  437. package/src/domains/eval/runners/clio-run.ts +7 -6
  438. package/src/domains/eval/runners/external-command.ts +4 -3
  439. package/src/domains/eval/schema/artifact.ts +1 -1
  440. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  441. package/src/domains/eval/schema/behavioral.ts +7 -6
  442. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  443. package/src/domains/eval/schema/naming.ts +10 -0
  444. package/src/domains/eval/schema/serving.ts +31 -0
  445. package/src/domains/eval/schema/suite.ts +2 -2
  446. package/src/domains/eval/schema/validate.ts +9 -5
  447. package/src/domains/eval/schema/verdict.ts +4 -2
  448. package/src/domains/eval/store.ts +12 -2
  449. package/src/domains/eval/suites/run.ts +12 -6
  450. package/src/domains/eval/types.ts +1 -1
  451. package/src/domains/eval/workspaces/git.ts +1 -1
  452. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  453. package/src/domains/evidence/build.ts +13 -5
  454. package/src/domains/evidence/store.ts +6 -0
  455. package/src/domains/interop/consent.ts +7 -7
  456. package/src/domains/interop/extension.ts +1 -1
  457. package/src/domains/lifecycle/doctor.ts +27 -21
  458. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  459. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  460. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  461. package/src/domains/lifecycle/migrations/index.ts +20 -1
  462. package/src/domains/lifecycle/naming-history.ts +153 -0
  463. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  464. package/src/domains/lifecycle/naming-resources.ts +261 -0
  465. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  466. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  467. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  468. package/src/domains/memory/index.ts +0 -1
  469. package/src/domains/memory/task-memory-handoff.ts +6 -3
  470. package/src/domains/memory/task-memory-policy.ts +6 -10
  471. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  472. package/src/domains/middleware/index.ts +7 -0
  473. package/src/domains/middleware/marketplace-offer.ts +339 -0
  474. package/src/domains/middleware/memory-intervention.ts +33 -21
  475. package/src/domains/middleware/runtime.ts +2 -2
  476. package/src/domains/mux/contract.ts +566 -0
  477. package/src/domains/mux/detect.ts +182 -0
  478. package/src/domains/mux/dock-controller.ts +365 -0
  479. package/src/domains/mux/extension.ts +53 -0
  480. package/src/domains/mux/index.ts +116 -0
  481. package/src/domains/mux/manifest.ts +6 -0
  482. package/src/domains/mux/operations.ts +192 -0
  483. package/src/domains/mux/pane-registry.ts +90 -0
  484. package/src/domains/mux/protocol.ts +62 -0
  485. package/src/domains/mux/socket-client.ts +964 -0
  486. package/src/domains/mux/types.ts +265 -0
  487. package/src/domains/mux/viewer-command.ts +59 -0
  488. package/src/domains/mux/yazi/assets/init.lua +2 -0
  489. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  490. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  491. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  492. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  493. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  494. package/src/domains/mux/yazi/event-stream.ts +182 -0
  495. package/src/domains/mux/yazi/profile.ts +299 -0
  496. package/src/domains/mux/yazi/session.ts +251 -0
  497. package/src/domains/mux/yazi/theme.ts +30 -0
  498. package/src/domains/observability/cost.ts +21 -0
  499. package/src/domains/observability/extension.ts +1 -1
  500. package/src/domains/observability/index.ts +2 -0
  501. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  502. package/src/domains/observability/projection.ts +1 -1
  503. package/src/domains/observability/trace-store.ts +63 -11
  504. package/src/domains/prompts/compiler.ts +2 -2
  505. package/src/domains/prompts/extension.ts +3 -3
  506. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  507. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  508. package/src/domains/providers/endpoint-capacity.ts +154 -22
  509. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  510. package/src/domains/providers/extension.ts +25 -8
  511. package/src/domains/providers/index.ts +22 -0
  512. package/src/domains/providers/knowledge-base-path.ts +1 -1
  513. package/src/domains/providers/model-runtime-capabilities.ts +46 -2
  514. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  515. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  516. package/src/domains/providers/plugins.ts +1 -1
  517. package/src/domains/providers/resolver.ts +1 -1
  518. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  519. package/src/domains/providers/runtimes/builtins.ts +2 -0
  520. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  521. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  522. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  523. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  524. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  525. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  526. package/src/domains/providers/runtimes/protocol/litellm.ts +285 -0
  527. package/src/domains/providers/support.ts +1 -0
  528. package/src/domains/providers/target-model-cache.ts +124 -0
  529. package/src/domains/providers/types/knowledge-base.ts +13 -0
  530. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  531. package/src/domains/providers/types/target-descriptor.ts +3 -3
  532. package/src/domains/resources/extension.ts +1 -1
  533. package/src/domains/resources/index.ts +3 -0
  534. package/src/domains/resources/library.ts +6 -6
  535. package/src/domains/resources/prompts/loader.ts +1 -1
  536. package/src/domains/resources/skills/content-hash.ts +7 -6
  537. package/src/domains/resources/skills/evals.ts +1 -1
  538. package/src/domains/resources/skills/install.ts +36 -12
  539. package/src/domains/resources/skills/loader.ts +72 -13
  540. package/src/domains/resources/skills/marketplace.ts +21 -2
  541. package/src/domains/resources/skills/promotion.ts +214 -0
  542. package/src/domains/safety/action-classifier.ts +6 -0
  543. package/src/domains/safety/audit.ts +2 -2
  544. package/src/domains/safety/finish-contract.ts +2 -1
  545. package/src/domains/safety/run-effects.ts +1 -1
  546. package/src/domains/scheduling/extension.ts +4 -4
  547. package/src/domains/session/archive-readers.ts +9 -1
  548. package/src/domains/session/compaction/branch-summary.ts +4 -0
  549. package/src/domains/session/compaction/compact.ts +1 -1
  550. package/src/domains/session/compaction/tokens.ts +4 -0
  551. package/src/domains/session/context-accounting.ts +1 -1
  552. package/src/domains/session/decision-board.ts +1 -1
  553. package/src/domains/session/extension.ts +1 -1
  554. package/src/domains/session/handoff.ts +2 -2
  555. package/src/domains/session/prompt-manifest.ts +0 -5
  556. package/src/domains/session/protected-artifact-journal.ts +12 -6
  557. package/src/domains/session/retry.ts +1 -1
  558. package/src/domains/share/archive.ts +85 -36
  559. package/src/domains/toolchain/archive.ts +175 -0
  560. package/src/domains/toolchain/contract.ts +28 -0
  561. package/src/domains/toolchain/extension.ts +47 -0
  562. package/src/domains/toolchain/index.ts +39 -0
  563. package/src/domains/toolchain/install.ts +327 -0
  564. package/src/domains/toolchain/manifest.ts +8 -0
  565. package/src/domains/toolchain/paths.ts +34 -0
  566. package/src/domains/toolchain/registry.ts +265 -0
  567. package/src/domains/toolchain/remove.ts +218 -0
  568. package/src/domains/toolchain/resolve.ts +182 -0
  569. package/src/domains/toolchain/types.ts +113 -0
  570. package/src/domains/toolchain/version.ts +88 -0
  571. package/src/engine/acp/adapter.ts +3 -3
  572. package/src/engine/acp/event-mapper.ts +3 -3
  573. package/src/engine/acp/server.ts +440 -96
  574. package/src/engine/acp/tool-mediator.ts +2 -2
  575. package/src/engine/acp/types.ts +20 -2
  576. package/src/engine/alcf-oauth.ts +5 -5
  577. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  578. package/src/engine/api-registry.ts +1 -1
  579. package/src/engine/apis/llamacpp-residency.ts +1 -19
  580. package/src/engine/apis/lmstudio.ts +1 -6
  581. package/src/engine/apis/ollama-native.ts +3 -3
  582. package/src/engine/apis/openai-completions.ts +2 -2
  583. package/src/engine/apis/residency.ts +3 -9
  584. package/src/engine/claude/sdk-module.ts +87 -0
  585. package/src/engine/claude/sdk-runtime.ts +25 -17
  586. package/src/engine/claude/subprocess-runtime.ts +1 -1
  587. package/src/engine/claude/tool-safety.ts +4 -4
  588. package/src/engine/loop-guard.ts +0 -5
  589. package/src/engine/session.ts +14 -7
  590. package/src/engine/tui-primitives.ts +21 -0
  591. package/src/engine/tui.ts +1 -0
  592. package/src/engine/worker-events.ts +6 -6
  593. package/src/engine/worker-runtime.ts +16 -26
  594. package/src/entry/boot-options.ts +2 -0
  595. package/src/entry/orchestrator.ts +207 -90
  596. package/src/entry/panes-activation.ts +31 -0
  597. package/src/entry/with-panes.ts +20 -0
  598. package/src/interactive/application-controller.ts +21 -21
  599. package/src/interactive/bus-notices.ts +2 -2
  600. package/src/interactive/chat-loop.ts +8 -8
  601. package/src/interactive/chat-panel.ts +1 -1
  602. package/src/interactive/clio-editor.ts +105 -1
  603. package/src/interactive/context-activity.ts +8 -6
  604. package/src/interactive/context-meter.ts +3 -6
  605. package/src/interactive/context-overlay.ts +2 -1
  606. package/src/interactive/cost-overlay.ts +3 -1
  607. package/src/interactive/council-grid.ts +3 -5
  608. package/src/interactive/council.ts +11 -0
  609. package/src/interactive/dispatch-board.ts +56 -49
  610. package/src/interactive/editor-bash.ts +21 -0
  611. package/src/interactive/editor-steer.ts +9 -4
  612. package/src/interactive/editor-submit.ts +24 -18
  613. package/src/interactive/external-editor.ts +1 -1
  614. package/src/interactive/file-reference-completion.ts +360 -0
  615. package/src/interactive/footer/dashboard.ts +15 -17
  616. package/src/interactive/footer/notifications.ts +14 -8
  617. package/src/interactive/footer/widgets.ts +2 -44
  618. package/src/interactive/interactive-application.ts +229 -62
  619. package/src/interactive/interactive-event-projection.ts +1 -1
  620. package/src/interactive/interactive-input-runtime.ts +9 -2
  621. package/src/interactive/interactive-presentation.ts +21 -16
  622. package/src/interactive/interactive-shell.ts +2 -2
  623. package/src/interactive/interactive-slash-runtime.ts +99 -23
  624. package/src/interactive/interactive-subscriptions.ts +1 -1
  625. package/src/interactive/interactive-tickers.ts +1 -1
  626. package/src/interactive/keybinding-manager.ts +4 -4
  627. package/src/interactive/layout.ts +1 -1
  628. package/src/interactive/memory-overlay.ts +3 -2
  629. package/src/interactive/modal-marker.ts +151 -0
  630. package/src/interactive/mutation-preview.ts +1 -1
  631. package/src/interactive/mux-bridge.ts +214 -0
  632. package/src/interactive/overlay-frame.ts +62 -14
  633. package/src/interactive/overlay-general-openers.ts +7 -2
  634. package/src/interactive/overlay-key-routing.ts +21 -10
  635. package/src/interactive/overlay-lifecycle.ts +20 -4
  636. package/src/interactive/overlay-model-selectors.ts +43 -6
  637. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  638. package/src/interactive/overlay-transitions.ts +18 -4
  639. package/src/interactive/overlays/agents.ts +3 -2
  640. package/src/interactive/overlays/ask-user.ts +161 -41
  641. package/src/interactive/overlays/auth-dialog.ts +1 -0
  642. package/src/interactive/overlays/context-reset.ts +29 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +29 -4
  644. package/src/interactive/overlays/decisions.ts +15 -13
  645. package/src/interactive/overlays/extensions.ts +1 -0
  646. package/src/interactive/overlays/fleet-run-approval.ts +4 -3
  647. package/src/interactive/overlays/handoff-review.ts +3 -2
  648. package/src/interactive/overlays/help-reference.ts +2 -0
  649. package/src/interactive/overlays/interop.ts +2 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +2 -1
  651. package/src/interactive/overlays/library-tabs.ts +28 -0
  652. package/src/interactive/overlays/list-overlay.ts +10 -1
  653. package/src/interactive/overlays/message-picker.ts +2 -1
  654. package/src/interactive/overlays/model-scope.ts +86 -0
  655. package/src/interactive/overlays/model-selector.ts +40 -31
  656. package/src/interactive/overlays/prompts.ts +11 -4
  657. package/src/interactive/overlays/session-selector.ts +3 -2
  658. package/src/interactive/overlays/settings-sections.ts +30 -0
  659. package/src/interactive/overlays/settings.ts +849 -268
  660. package/src/interactive/overlays/side-question.ts +3 -2
  661. package/src/interactive/overlays/skills-hub.ts +11 -19
  662. package/src/interactive/overlays/tree-selector.ts +3 -2
  663. package/src/interactive/pane-policy.ts +46 -0
  664. package/src/interactive/panes-runtime.ts +318 -0
  665. package/src/interactive/permission-overlay.ts +2 -2
  666. package/src/interactive/renderers/compaction-summary.ts +29 -0
  667. package/src/interactive/renderers/retry-status.ts +12 -4
  668. package/src/interactive/renderers/tool-execution.ts +4 -4
  669. package/src/interactive/renderers/worker-entry.ts +122 -14
  670. package/src/interactive/session-transcript.ts +3 -3
  671. package/src/interactive/slash-autocomplete.ts +454 -165
  672. package/src/interactive/slash-commands.ts +521 -189
  673. package/src/interactive/slash-spec.ts +160 -17
  674. package/src/interactive/status/controller.ts +2 -2
  675. package/src/interactive/stream-pacing-policy.ts +1 -1
  676. package/src/interactive/tasks-overlay.ts +21 -13
  677. package/src/interactive/terminal-lease.ts +6 -7
  678. package/src/interactive/theme/tokens.ts +3 -14
  679. package/src/interactive/turn-context.ts +58 -13
  680. package/src/interactive/turn-persistence.ts +2 -2
  681. package/src/interactive/turn-prewarm.ts +2 -2
  682. package/src/interactive/turn-runtime.ts +8 -8
  683. package/src/interactive/turn-state.ts +1 -1
  684. package/src/interactive/view/artifacts.ts +120 -9
  685. package/src/interactive/view/view-overlay.ts +14 -10
  686. package/src/interactive/watch-pane.ts +180 -0
  687. package/src/interactive/welcome-dashboard.ts +15 -15
  688. package/src/interactive/worker-progress.ts +11 -5
  689. package/src/interactive/worker-receipts.ts +20 -2
  690. package/src/interactive/worker-stream.ts +6 -4
  691. package/src/interactive/yazi-bridge.ts +451 -0
  692. package/src/tools/ask-user.ts +3 -3
  693. package/src/tools/bash.ts +1 -1
  694. package/src/tools/bootstrap.ts +26 -2
  695. package/src/tools/builtin-tool-catalog.ts +16 -1
  696. package/src/tools/compete-worktrees.ts +108 -17
  697. package/src/tools/context/index.ts +15 -1
  698. package/src/tools/core-bootstrap.ts +2 -1
  699. package/src/tools/dispatch-admission.ts +18 -5
  700. package/src/tools/dispatch-arguments.ts +21 -21
  701. package/src/tools/dispatch-plan.ts +0 -11
  702. package/src/tools/dispatch-run-events.ts +145 -28
  703. package/src/tools/dispatch-runner.ts +40 -13
  704. package/src/tools/dispatch-types.ts +15 -3
  705. package/src/tools/dispatch.ts +2 -2
  706. package/src/tools/executables.ts +17 -14
  707. package/src/tools/find.ts +1 -6
  708. package/src/tools/monitor.ts +4 -4
  709. package/src/tools/observation.ts +54 -4
  710. package/src/tools/observers.ts +0 -33
  711. package/src/tools/panes-surface.ts +38 -0
  712. package/src/tools/panes.ts +112 -0
  713. package/src/tools/policy.ts +10 -1
  714. package/src/tools/presentation.ts +1 -0
  715. package/src/tools/task-worktree.ts +28 -7
  716. package/src/tools/verify/authoring.ts +3 -6
  717. package/src/tools/verify/frontend.ts +1 -1
  718. package/src/tools/web-fetch.ts +1 -1
  719. package/src/worker/entry.ts +4 -3
  720. package/src/worker/protocol.ts +16 -14
  721. package/src/worker/spec-contract.ts +2 -2
  722. package/src/worker/stdin-demux.ts +2 -2
  723. package/dist/chunk-D73KXYPF.js +0 -37
  724. package/dist/chunk-MLOK6ZOS.js +0 -2888
  725. package/dist/chunk-PNY46YEY.js +0 -1581
  726. package/dist/chunk-XDOQXGFO.js +0 -515
  727. package/dist/chunk-YKOFT37S.js +0 -279
  728. package/dist/clio-LT5V7SSZ.js +0 -26
  729. package/dist/configure-2WYWSCSD.js +0 -49
  730. package/dist/doctor-TWBWFK5V.js +0 -165
  731. package/src/engine/apis/degraded-inference.ts +0 -95
  732. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  733. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -0,0 +1,261 @@
1
+ import {
2
+ cpSync,
3
+ existsSync,
4
+ mkdirSync,
5
+ readdirSync,
6
+ readFileSync,
7
+ renameSync,
8
+ rmSync,
9
+ statSync,
10
+ writeFileSync,
11
+ } from "node:fs";
12
+ import path from "node:path";
13
+
14
+ import { parse as parseYaml } from "yaml";
15
+ import { resolvePackageRoot } from "../../core/package-root.js";
16
+ import { fsyncDirectory } from "../../core/safe-resource-write.js";
17
+ import { resolveClioDirs } from "../../core/xdg.js";
18
+ import { normalizedSkillHash, stripProvenanceFrontmatter } from "../resources/skills/content-hash.js";
19
+
20
+ const LEGACY_SKILL_NAMES = [
21
+ ["clio-dev", "clio-coder-dev"],
22
+ ["clio-test", "clio-coder-test"],
23
+ ] as const;
24
+
25
+ export type NamingResourceStatus = "absent" | "canonical-present" | "modified" | "renamable" | "renamed";
26
+
27
+ export interface NamingResourceReport {
28
+ kind: "skill";
29
+ legacyPath: string;
30
+ canonicalPath: string;
31
+ status: NamingResourceStatus;
32
+ detail: string;
33
+ }
34
+
35
+ export interface NamingResourceOptions {
36
+ cwd?: string;
37
+ configDir?: string;
38
+ packageRoot?: string;
39
+ fix?: boolean;
40
+ }
41
+
42
+ function canonicalizeNamingText(text: string): string {
43
+ return text
44
+ .replaceAll("clio-dev", "clio-coder-dev")
45
+ .replaceAll("clio-test", "clio-coder-test")
46
+ .replace(/^clio:/gmu, "clio-coder:")
47
+ .replace(/^(\s*source:\s*)clio\s*$/gmu, "$1clio-coder");
48
+ }
49
+
50
+ function installedHash(raw: string): string | null {
51
+ const match = raw.match(/^\s*installed-hash:\s*["']?([0-9a-f]{64})["']?\s*$/mu);
52
+ return match?.[1] ?? null;
53
+ }
54
+
55
+ function regularFiles(root: string, current = root): string[] {
56
+ const out: string[] = [];
57
+ for (const entry of readdirSync(current, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
58
+ const full = path.join(current, entry.name);
59
+ if (entry.isDirectory()) out.push(...regularFiles(root, full));
60
+ else if (entry.isFile()) out.push(path.relative(root, full));
61
+ else return [];
62
+ }
63
+ return out;
64
+ }
65
+
66
+ function provesUnmodifiedShippedCopy(legacyDir: string, canonicalBundleDir: string): boolean {
67
+ let legacyFiles: string[];
68
+ let canonicalFiles: string[];
69
+ try {
70
+ legacyFiles = regularFiles(legacyDir);
71
+ canonicalFiles = regularFiles(canonicalBundleDir);
72
+ } catch {
73
+ return false;
74
+ }
75
+ if (legacyFiles.length === 0 || legacyFiles.join("\0") !== canonicalFiles.join("\0")) return false;
76
+ for (const relative of legacyFiles) {
77
+ const legacyRaw = readFileSync(path.join(legacyDir, relative), "utf8");
78
+ const canonicalRaw = readFileSync(path.join(canonicalBundleDir, relative), "utf8");
79
+ if (relative === "SKILL.md") {
80
+ const recordedHash = installedHash(legacyRaw);
81
+ if (recordedHash === null || recordedHash !== normalizedSkillHash(legacyRaw)) return false;
82
+ if (canonicalizeNamingText(stripProvenanceFrontmatter(legacyRaw)) !== stripProvenanceFrontmatter(canonicalRaw))
83
+ return false;
84
+ continue;
85
+ }
86
+ if (canonicalizeNamingText(legacyRaw) !== canonicalRaw) return false;
87
+ }
88
+ return true;
89
+ }
90
+
91
+ function rewriteStagedCopy(stage: string, canonicalBundleDir: string): void {
92
+ const canonicalSkillHash = normalizedSkillHash(readFileSync(path.join(canonicalBundleDir, "SKILL.md"), "utf8"));
93
+ for (const relative of regularFiles(stage)) {
94
+ const file = path.join(stage, relative);
95
+ let next = canonicalizeNamingText(readFileSync(file, "utf8"));
96
+ if (relative === "SKILL.md") {
97
+ next = next.replace(/^(\s*installed-hash:\s*).+$/mu, `$1"${canonicalSkillHash}"`);
98
+ }
99
+ writeFileSync(file, next, "utf8");
100
+ }
101
+ }
102
+
103
+ let resourceSwapSequence = 0;
104
+
105
+ function migrateProvenSkill(legacyDir: string, canonicalDir: string, canonicalBundleDir: string): void {
106
+ const suffix = `${process.pid}-${++resourceSwapSequence}`;
107
+ const stage = `${canonicalDir}.clio-coder-naming-stage-${suffix}`;
108
+ const backup = `${legacyDir}.clio-coder-naming-backup-${suffix}`;
109
+ mkdirSync(path.dirname(canonicalDir), { recursive: true });
110
+ cpSync(legacyDir, stage, { recursive: true });
111
+ try {
112
+ rewriteStagedCopy(stage, canonicalBundleDir);
113
+ renameSync(legacyDir, backup);
114
+ try {
115
+ renameSync(stage, canonicalDir);
116
+ } catch (error) {
117
+ renameSync(backup, legacyDir);
118
+ throw error;
119
+ }
120
+ rmSync(backup, { recursive: true, force: true });
121
+ fsyncDirectory(path.dirname(canonicalDir));
122
+ } catch (error) {
123
+ rmSync(stage, { recursive: true, force: true });
124
+ throw error;
125
+ }
126
+ }
127
+
128
+ function existingDirectory(candidate: string): boolean {
129
+ try {
130
+ return statSync(candidate).isDirectory();
131
+ } catch {
132
+ return false;
133
+ }
134
+ }
135
+
136
+ /** Inspect only the selected user root and current project; never scan arbitrary repositories. */
137
+ export function inspectInstalledNamingResources(options: NamingResourceOptions = {}): NamingResourceReport[] {
138
+ const cwd = options.cwd ?? process.cwd();
139
+ const configDir = options.configDir ?? resolveClioDirs().config;
140
+ const packageRoot = options.packageRoot ?? resolvePackageRoot();
141
+ const roots = [path.join(configDir, "skills"), path.join(cwd, ".clio-coder", "skills")];
142
+ const reports: NamingResourceReport[] = [];
143
+ for (const root of roots) {
144
+ for (const [legacyName, canonicalName] of LEGACY_SKILL_NAMES) {
145
+ const legacyPath = path.join(root, legacyName);
146
+ const canonicalPath = path.join(root, canonicalName);
147
+ if (!existingDirectory(legacyPath)) {
148
+ reports.push({ kind: "skill", legacyPath, canonicalPath, status: "absent", detail: "legacy skill absent" });
149
+ continue;
150
+ }
151
+ if (existsSync(canonicalPath)) {
152
+ reports.push({
153
+ kind: "skill",
154
+ legacyPath,
155
+ canonicalPath,
156
+ status: "canonical-present",
157
+ detail: "canonical skill already exists; legacy copy left untouched",
158
+ });
159
+ continue;
160
+ }
161
+ const canonicalBundleDir = path.join(packageRoot, "skills", "meta", canonicalName);
162
+ if (!existingDirectory(canonicalBundleDir) || !provesUnmodifiedShippedCopy(legacyPath, canonicalBundleDir)) {
163
+ reports.push({
164
+ kind: "skill",
165
+ legacyPath,
166
+ canonicalPath,
167
+ status: "modified",
168
+ detail: "frontmatter/provenance/hash do not prove an unmodified shipped copy; left untouched",
169
+ });
170
+ continue;
171
+ }
172
+ if (options.fix) migrateProvenSkill(legacyPath, canonicalPath, canonicalBundleDir);
173
+ reports.push({
174
+ kind: "skill",
175
+ legacyPath,
176
+ canonicalPath,
177
+ status: options.fix ? "renamed" : "renamable",
178
+ detail: options.fix
179
+ ? "proven unmodified shipped copy renamed and canonicalized"
180
+ : "proven unmodified shipped copy can be renamed by doctor --fix",
181
+ });
182
+ }
183
+ }
184
+ return reports;
185
+ }
186
+
187
+ export interface ModelOverlayNamingInspection {
188
+ path: string;
189
+ legacyFile: boolean;
190
+ legacyMetadataKeys: number;
191
+ }
192
+
193
+ export interface SkillMetadataNamingInspection {
194
+ path: string;
195
+ legacyMetadataKey: boolean;
196
+ }
197
+
198
+ function collectSkillFiles(root: string, current = root): string[] {
199
+ if (!existingDirectory(current)) return [];
200
+ const out: string[] = [];
201
+ for (const entry of readdirSync(current, { withFileTypes: true })) {
202
+ const full = path.join(current, entry.name);
203
+ if (entry.isDirectory()) out.push(...collectSkillFiles(root, full));
204
+ else if (entry.isFile() && entry.name === "SKILL.md") out.push(full);
205
+ }
206
+ return out;
207
+ }
208
+
209
+ /** Read-only inventory of released skill metadata keys in selected Clio Coder roots. */
210
+ export function inspectSkillMetadataNaming(
211
+ options: Pick<NamingResourceOptions, "cwd" | "configDir"> = {},
212
+ ): SkillMetadataNamingInspection[] {
213
+ const cwd = options.cwd ?? process.cwd();
214
+ const configDir = options.configDir ?? resolveClioDirs().config;
215
+ const roots = [path.join(configDir, "skills"), path.join(cwd, ".clio-coder", "skills")];
216
+ return roots.flatMap((root) =>
217
+ collectSkillFiles(root).map((file) => ({
218
+ path: file,
219
+ legacyMetadataKey: /^clio:\s*(?:#.*)?$/mu.test(readFileSync(file, "utf8")),
220
+ })),
221
+ );
222
+ }
223
+
224
+ function countLegacyModelMetadata(value: unknown): number {
225
+ if (Array.isArray(value)) return value.reduce((count, entry) => count + countLegacyModelMetadata(entry), 0);
226
+ if (typeof value !== "object" || value === null) return 0;
227
+ const record = value as Record<string, unknown>;
228
+ return (
229
+ (Object.hasOwn(record, "clio") ? 1 : 0) +
230
+ Object.values(record).reduce<number>((count, entry) => count + countLegacyModelMetadata(entry), 0)
231
+ );
232
+ }
233
+
234
+ /** Read-only overlay inventory. User catalog files are never silently rewritten. */
235
+ export function inspectModelOverlayNaming(
236
+ options: Pick<NamingResourceOptions, "cwd" | "configDir"> = {},
237
+ ): ModelOverlayNamingInspection[] {
238
+ const cwd = options.cwd ?? process.cwd();
239
+ const configDir = options.configDir ?? resolveClioDirs().config;
240
+ const roots = [path.join(configDir, "model-catalog.d"), path.join(cwd, ".clio-coder", "model-catalog.d")];
241
+ const inspections: ModelOverlayNamingInspection[] = [];
242
+ for (const root of roots) {
243
+ if (!existingDirectory(root)) continue;
244
+ for (const entry of readdirSync(root, { withFileTypes: true })) {
245
+ if (!entry.isFile() || (!entry.name.endsWith(".yaml") && !entry.name.endsWith(".yml"))) continue;
246
+ const file = path.join(root, entry.name);
247
+ let legacyMetadataKeys = 0;
248
+ try {
249
+ legacyMetadataKeys = countLegacyModelMetadata(parseYaml(readFileSync(file, "utf8")));
250
+ } catch {
251
+ // The catalog loader owns the parse diagnostic; naming still reports the filename.
252
+ }
253
+ inspections.push({
254
+ path: file,
255
+ legacyFile: entry.name === "clio-local-coding-targets.yaml",
256
+ legacyMetadataKeys,
257
+ });
258
+ }
259
+ }
260
+ return inspections;
261
+ }
@@ -0,0 +1,139 @@
1
+ import { existsSync, readdirSync, readFileSync, renameSync, rmSync } from "node:fs";
2
+ import { join } from "node:path";
3
+
4
+ import { fsyncDirectory } from "../../core/safe-resource-write.js";
5
+ import { resolveClioDirs } from "../../core/xdg.js";
6
+ import { findPinnedTool } from "../toolchain/registry.js";
7
+
8
+ export const LEGACY_TOOL_MARKER = "clio-install.json";
9
+ export const CANONICAL_TOOL_MARKER = "clio-coder-install.json";
10
+
11
+ interface ValidToolMarker {
12
+ id: string;
13
+ version: string;
14
+ sha256: string;
15
+ }
16
+
17
+ export type ToolMarkerNamingStatus =
18
+ | "renamable"
19
+ | "renamed"
20
+ | "invalid-legacy"
21
+ | "canonical-conflict"
22
+ | "agreeing-duplicate"
23
+ | "duplicate-removed";
24
+
25
+ export interface ToolMarkerNamingReport {
26
+ tool: string;
27
+ version: string;
28
+ legacyPath: string;
29
+ canonicalPath: string;
30
+ status: ToolMarkerNamingStatus;
31
+ detail: string;
32
+ }
33
+
34
+ export interface ToolMarkerNamingOptions {
35
+ dataDir?: string;
36
+ fix?: boolean;
37
+ }
38
+
39
+ function childDirectories(root: string): string[] {
40
+ try {
41
+ return readdirSync(root, { withFileTypes: true })
42
+ .filter((entry) => entry.isDirectory() && !entry.name.startsWith("."))
43
+ .map((entry) => entry.name)
44
+ .sort((left, right) => left.localeCompare(right));
45
+ } catch {
46
+ return [];
47
+ }
48
+ }
49
+
50
+ function readValidMarker(path: string, tool: string, version: string): ValidToolMarker | null {
51
+ try {
52
+ const value: unknown = JSON.parse(readFileSync(path, "utf8"));
53
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
54
+ const marker = value as Record<string, unknown>;
55
+ if (marker.id !== tool || marker.version !== version) return null;
56
+ if (typeof marker.sha256 !== "string" || !/^[0-9a-f]{64}$/u.test(marker.sha256)) return null;
57
+ return { id: tool, version, sha256: marker.sha256 };
58
+ } catch {
59
+ return null;
60
+ }
61
+ }
62
+
63
+ function sameFacts(left: ValidToolMarker, right: ValidToolMarker): boolean {
64
+ return left.id === right.id && left.version === right.version && left.sha256 === right.sha256;
65
+ }
66
+
67
+ /**
68
+ * Inspect or migrate released tool markers only below known tool/version
69
+ * directories in the selected Clio Coder data root. Unknown tool roots and
70
+ * symlinks are never traversed.
71
+ */
72
+ export function inspectToolMarkerNaming(options: ToolMarkerNamingOptions = {}): ToolMarkerNamingReport[] {
73
+ const toolsRoot = join(options.dataDir ?? resolveClioDirs().data, "tools");
74
+ const reports: ToolMarkerNamingReport[] = [];
75
+ for (const tool of childDirectories(toolsRoot)) {
76
+ if (findPinnedTool(tool) === null) continue;
77
+ for (const version of childDirectories(join(toolsRoot, tool))) {
78
+ const dir = join(toolsRoot, tool, version);
79
+ const legacyPath = join(dir, LEGACY_TOOL_MARKER);
80
+ if (!existsSync(legacyPath)) continue;
81
+ const canonicalPath = join(dir, CANONICAL_TOOL_MARKER);
82
+ const legacy = readValidMarker(legacyPath, tool, version);
83
+ if (legacy === null) {
84
+ reports.push({
85
+ tool,
86
+ version,
87
+ legacyPath,
88
+ canonicalPath,
89
+ status: "invalid-legacy",
90
+ detail: "legacy marker does not match its known tool/version path and checksum shape; left untouched",
91
+ });
92
+ continue;
93
+ }
94
+ if (!existsSync(canonicalPath)) {
95
+ if (options.fix) {
96
+ renameSync(legacyPath, canonicalPath);
97
+ fsyncDirectory(dir);
98
+ }
99
+ reports.push({
100
+ tool,
101
+ version,
102
+ legacyPath,
103
+ canonicalPath,
104
+ status: options.fix ? "renamed" : "renamable",
105
+ detail: options.fix ? "validated legacy marker renamed atomically" : "validated legacy marker can be renamed",
106
+ });
107
+ continue;
108
+ }
109
+ const canonical = readValidMarker(canonicalPath, tool, version);
110
+ if (canonical === null || !sameFacts(legacy, canonical)) {
111
+ reports.push({
112
+ tool,
113
+ version,
114
+ legacyPath,
115
+ canonicalPath,
116
+ status: "canonical-conflict",
117
+ detail:
118
+ "canonical and legacy marker facts disagree or canonical is invalid; canonical wins and legacy is left untouched",
119
+ });
120
+ continue;
121
+ }
122
+ if (options.fix) {
123
+ rmSync(legacyPath);
124
+ fsyncDirectory(dir);
125
+ }
126
+ reports.push({
127
+ tool,
128
+ version,
129
+ legacyPath,
130
+ canonicalPath,
131
+ status: options.fix ? "duplicate-removed" : "agreeing-duplicate",
132
+ detail: options.fix
133
+ ? "validated agreeing legacy duplicate removed; canonical marker kept"
134
+ : "canonical and legacy facts agree; legacy duplicate can be removed",
135
+ });
136
+ }
137
+ }
138
+ return reports;
139
+ }
@@ -0,0 +1,81 @@
1
+ import { readFileSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
3
+
4
+ import { resolveClioDirs } from "../../core/xdg.js";
5
+ import { ensureYaziProfile, resetYaziProfile, yaziProfileDir } from "../mux/yazi/profile.js";
6
+ import { resolveToolBinary } from "../toolchain/resolve.js";
7
+
8
+ export interface YaziNamingInspection {
9
+ profileDir: string;
10
+ present: boolean;
11
+ legacyEvents: number;
12
+ legacyEnvironmentNames: number;
13
+ }
14
+
15
+ export interface YaziNamingRegenerationReport extends YaziNamingInspection {
16
+ status: "absent" | "canonical" | "regenerated" | "removed-unresolved" | "regeneration-failed";
17
+ detail: string;
18
+ }
19
+
20
+ export interface YaziNamingOptions {
21
+ cacheDir?: string;
22
+ yaziPath?: string | null;
23
+ yaPath?: string | null;
24
+ }
25
+
26
+ function occurrences(text: string, pattern: RegExp): number {
27
+ return [...text.matchAll(pattern)].length;
28
+ }
29
+
30
+ /** Inspect only the generated keymap below the selected Clio Coder cache root. */
31
+ export function inspectYaziNaming(cacheDir: string = resolveClioDirs().cache): YaziNamingInspection {
32
+ const profileDir = yaziProfileDir(cacheDir);
33
+ const present = statSync(profileDir, { throwIfNoEntry: false })?.isDirectory() === true;
34
+ let keymap = "";
35
+ try {
36
+ keymap = readFileSync(join(profileDir, "keymap.toml"), "utf8");
37
+ } catch {
38
+ // Missing or unreadable generated material is handled as disposable cache.
39
+ }
40
+ return {
41
+ profileDir,
42
+ present,
43
+ legacyEvents: occurrences(keymap, /(?<!clio-coder-)clio-pick/gmu),
44
+ legacyEnvironmentNames: occurrences(keymap, /\$CLIO_YAZI_PICK_TOKEN\b/gmu),
45
+ };
46
+ }
47
+
48
+ /**
49
+ * Replace the disposable managed profile from current inputs. Resolution is
50
+ * performed before removal so the report can state why a profile could not be
51
+ * rebuilt, while deletion remains confined to `<cache>/yazi/profile`.
52
+ */
53
+ export function regenerateYaziNamingProfile(options: YaziNamingOptions = {}): YaziNamingRegenerationReport {
54
+ const cacheDir = options.cacheDir ?? resolveClioDirs().cache;
55
+ const before = inspectYaziNaming(cacheDir);
56
+ if (!before.present) {
57
+ return { ...before, status: "absent", detail: "managed Yazi profile is absent; next open writes canonical names" };
58
+ }
59
+ if (before.legacyEvents === 0 && before.legacyEnvironmentNames === 0) {
60
+ return { ...before, status: "canonical", detail: "managed Yazi profile already uses canonical names" };
61
+ }
62
+ const yaziPath = options.yaziPath === undefined ? resolveToolBinary("yazi").binaryPath : options.yaziPath;
63
+ const yaPath = options.yaPath === undefined ? resolveToolBinary("ya").binaryPath : options.yaPath;
64
+ resetYaziProfile(before.profileDir);
65
+ if (!yaziPath || !yaPath) {
66
+ return {
67
+ ...before,
68
+ status: "removed-unresolved",
69
+ detail: "legacy managed profile removed; Yazi/ya is unresolved, so the next managed open will regenerate it",
70
+ };
71
+ }
72
+ const profile = ensureYaziProfile({ yaziPath, yaPath, profileDir: before.profileDir });
73
+ if (!profile) {
74
+ return {
75
+ ...before,
76
+ status: "regeneration-failed",
77
+ detail: "legacy managed profile removed, but current Yazi rejected the regenerated profile",
78
+ };
79
+ }
80
+ return { ...before, status: "regenerated", detail: "managed Yazi profile regenerated with canonical names" };
81
+ }
@@ -27,7 +27,7 @@ const KEYBOARD_FACING_CHANGES: Readonly<Record<string, string>> = Object.freeze(
27
27
  */
28
28
  export function describeUpgradeNotice(transition: UpgradeTransition): string {
29
29
  const changes = KEYBOARD_FACING_CHANGES[transition.to];
30
- const head = `clio: upgraded ${transition.from} → ${transition.to}.`;
30
+ const head = `clio-coder: upgraded ${transition.from} → ${transition.to}.`;
31
31
  const tail = `Full notes: CHANGELOG.md, section ${transition.to}.`;
32
32
  return changes === undefined
33
33
  ? `${head} What changed is in CHANGELOG.md, section ${transition.to}.`
@@ -91,7 +91,6 @@ export {
91
91
  runTaskMemoryPolicy,
92
92
  TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS,
93
93
  TASK_MEMORY_POLICY_MAX_OPERATIONS,
94
- TASK_MEMORY_POLICY_MODEL_MAX_OUTPUT_TOKENS,
95
94
  type TaskMemoryEnvelope,
96
95
  type TaskMemoryModelClient,
97
96
  type TaskMemoryModelRequest,
@@ -11,7 +11,8 @@ import {
11
11
  } from "./task-bank.js";
12
12
 
13
13
  export const TASK_MEMORY_HANDOFF_VERSION = 2;
14
- export const TASK_MEMORY_HANDOFF_LANGUAGE = "clio-task-memory";
14
+ export const TASK_MEMORY_HANDOFF_LANGUAGE = "clio-coder-task-memory";
15
+ const LEGACY_TASK_MEMORY_HANDOFF_LANGUAGE = "clio-task-memory";
15
16
  const HANDOFF_MAX_BYTES = 1_000_000;
16
17
 
17
18
  export interface TaskMemoryHandoffEntry {
@@ -134,8 +135,10 @@ export function renderTaskMemoryHandoffSource(
134
135
 
135
136
  export function parseTaskMemoryHandoffSnapshot(text: string): TaskMemoryHandoffSnapshot | null {
136
137
  if (typeof text !== "string" || text.length === 0 || text.length > HANDOFF_MAX_BYTES) return null;
137
- const escapedLanguage = TASK_MEMORY_HANDOFF_LANGUAGE.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
138
- const match = new RegExp(`(?:^|\\n)\\x60{3}${escapedLanguage}\\r?\\n([^\\r\\n]+)\\r?\\n\\x60{3}(?:$|\\n)`, "u").exec(
138
+ const languages = [TASK_MEMORY_HANDOFF_LANGUAGE, LEGACY_TASK_MEMORY_HANDOFF_LANGUAGE]
139
+ .map((language) => language.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&"))
140
+ .join("|");
141
+ const match = new RegExp(`(?:^|\\n)\\x60{3}(?:${languages})\\r?\\n([^\\r\\n]+)\\r?\\n\\x60{3}(?:$|\\n)`, "u").exec(
139
142
  text,
140
143
  );
141
144
  if (match?.[1] === undefined) return null;
@@ -17,15 +17,7 @@ export const TASK_MEMORY_POLICY_MAX_OPERATIONS = 8;
17
17
  * test pins the pair. Two numbers for one setting means any path that misses
18
18
  * the settings object silently gets the one nobody chose.
19
19
  */
20
- export const TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS = 30_000;
21
- /**
22
- * The envelope itself needs a few hundred tokens. The rest is headroom for a
23
- * model that reasons despite thinking being requested off: measured preambles on
24
- * a 9B local route ran past 1,800 tokens before the first `<operations>` byte,
25
- * and a budget that runs out mid-thought yields an empty response, no bank
26
- * writes, and no way for the operator to tell that from a deliberate silence.
27
- */
28
- export const TASK_MEMORY_POLICY_MODEL_MAX_OUTPUT_TOKENS = 4_000;
20
+ export const TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS = 60_000;
29
21
 
30
22
  export interface TaskMemoryTrajectoryStep {
31
23
  step: number;
@@ -142,6 +134,8 @@ export type TaskMemoryPolicyReason =
142
134
  | "no_consumer"
143
135
  /** A step was already in flight, so this boundary's triggers stayed pending. */
144
136
  | "step_in_flight"
137
+ /** Consecutive model deadlines degraded this session to the free rules tier. */
138
+ | "llm_timeout_backoff"
145
139
  /** Rules tier: the turn ended with no repeated failure worth reporting. */
146
140
  | "no_repeated_failure"
147
141
  /** Rules tier: compaction reactivation found no knowledge entries to restore. */
@@ -171,6 +165,8 @@ export interface TaskMemoryPolicyInput {
171
165
  trajectory: ReadonlyArray<TaskMemoryTrajectoryStep>;
172
166
  deterministicTrigger: boolean;
173
167
  maxTokens: number;
168
+ /** Capability-derived completion budget; defaults to the visible reminder budget. */
169
+ modelMaxTokens?: number;
174
170
  timeoutMs?: number;
175
171
  /** Phase one still applies; phase two is suppressed when another memory reminder already won this boundary. */
176
172
  suppressIntervention?: boolean;
@@ -297,7 +293,7 @@ export async function runTaskMemoryPolicy(
297
293
  const completion = client.complete({
298
294
  systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
299
295
  userPrompt,
300
- maxTokens: TASK_MEMORY_POLICY_MODEL_MAX_OUTPUT_TOKENS,
296
+ maxTokens: positiveInteger(input.modelMaxTokens, input.maxTokens),
301
297
  signal: controller.signal,
302
298
  });
303
299
  const timeout = new Promise<typeof timeoutMarker>((resolve) => {
@@ -226,6 +226,7 @@ const REASONS = new Set<TaskMemoryPolicyReason>([
226
226
  "no_client",
227
227
  "no_consumer",
228
228
  "step_in_flight",
229
+ "llm_timeout_backoff",
229
230
  "no_repeated_failure",
230
231
  "bank_empty",
231
232
  ]);
@@ -74,6 +74,13 @@ export {
74
74
  spawnSyncCommandRunner,
75
75
  } from "./hooks-io.js";
76
76
  export { MiddlewareManifest } from "./manifest.js";
77
+ export {
78
+ createMarketplaceOfferRegistration,
79
+ MARKETPLACE_OFFER_REGISTRATION_ID,
80
+ type MarketplaceOfferDeps,
81
+ marketplaceAutoInstallReminder,
82
+ marketplaceOfferReminder,
83
+ } from "./marketplace-offer.js";
77
84
  export {
78
85
  createMemoryInterventionRegistration,
79
86
  MEMORY_INTERVENTION_DEFAULT_MAX_TOKENS,