@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,573 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ truncateToWidth,
4
+ visibleWidth,
5
+ wrapTextWithAnsi
6
+ } from "./chunk-YAKGTXEV.js";
7
+ import {
8
+ openLedger,
9
+ readFleetRun
10
+ } from "./chunk-XKA2ICR3.js";
11
+ import {
12
+ formatTrustSummaryLine,
13
+ inspectRunReceiptTrustStatus
14
+ } from "./chunk-6NJQITNH.js";
15
+ import {
16
+ WRITE_BOUNDARY_VIOLATION_REASON
17
+ } from "./chunk-TD3PGPQA.js";
18
+ import {
19
+ readRunEventJournal,
20
+ runEventJournalPath
21
+ } from "./chunk-6VC4OV3Z.js";
22
+ import {
23
+ sanitizeCallTargetText
24
+ } from "./chunk-TVHHYFHE.js";
25
+ import {
26
+ clioStateDir,
27
+ resetXdgCache
28
+ } from "./chunk-BYP5D4HI.js";
29
+ import {
30
+ init_esm_shims
31
+ } from "./chunk-3R73A4XB.js";
32
+
33
+ // src/cli/fleet-view.ts
34
+ init_esm_shims();
35
+ import { readdirSync, readFileSync } from "node:fs";
36
+ import { join } from "node:path";
37
+ var HELP = `clio-coder fleet view <runId|fleetRootId> [--follow]
38
+ clio-coder fleet view --watch <selection-file>
39
+
40
+ Follow one dispatched run from its durable state: the run ledger entry, the
41
+ run event journal, and the sealed receipt once it exists.
42
+
43
+ --follow keep tailing until the run's terminal line, then stay open (q exits)
44
+ --watch follow whichever run id the selection file names, retargeting
45
+ live as the file changes (q exits). This is the process the
46
+ interactive workers view (Alt+W) runs inside its watch pane.
47
+
48
+ Without --follow the current snapshot is printed and the command exits.
49
+ The transcript comes from <state>/runs/<runId>/events.ndjson, which the
50
+ orchestrator writes when fleet.history.journal is on (the default). A run dispatched
51
+ with the journal off shows its ledger and receipt but no transcript.
52
+
53
+ Given the fleet root id that \`fleet run\` prints (fleet-<hex>), this prints the
54
+ run's step index instead: one line per step with its run id and outcome. Pass
55
+ one of those run ids back to see that step.
56
+ `;
57
+ var POLL_MS = 250;
58
+ var TRANSCRIPT_LIMIT = 400;
59
+ var TASK_MAX_WIDTH = 400;
60
+ var DETAIL_MAX_WIDTH = 200;
61
+ var DEFAULT_WIDTH = 100;
62
+ var MIN_WIDTH = 40;
63
+ var QUIT_CTRL_C = String.fromCharCode(3);
64
+ var QUIT_ESCAPE = String.fromCharCode(27);
65
+ function sanitizeBounded(value, maxWidth) {
66
+ const sanitized = sanitizeCallTargetText(value);
67
+ if (sanitized.length === 0) return "";
68
+ return sanitizeCallTargetText(truncateToWidth(sanitized, maxWidth, "\u2026", false));
69
+ }
70
+ function truncatePlain(value, width) {
71
+ return truncateToWidth(value, width, "\u2026", false).replaceAll("\x1B[0m", "");
72
+ }
73
+ function receiptPathFor(run) {
74
+ return run.receiptPath ?? join(clioStateDir(), "receipts", `${run.id}.json`);
75
+ }
76
+ function evidenceLine(run) {
77
+ if (run.receiptPath === null && run.endedAt === null) {
78
+ return { text: "receipt pending; the run has not finalized", receiptPath: null };
79
+ }
80
+ const path = receiptPathFor(run);
81
+ let receipt;
82
+ try {
83
+ receipt = JSON.parse(readFileSync(path, "utf8"));
84
+ } catch (error) {
85
+ return {
86
+ text: `receipt unavailable: cannot read ${path} (${error instanceof Error ? error.message : String(error)})`,
87
+ receiptPath: null
88
+ };
89
+ }
90
+ const inspection = inspectRunReceiptTrustStatus(receipt, run);
91
+ if (!inspection.integrity.ok) {
92
+ return {
93
+ text: `RECEIPT INTEGRITY FAILED: ${inspection.integrity.reason}; stored receipt fields are untrusted`,
94
+ receiptPath: path
95
+ };
96
+ }
97
+ return { text: formatTrustSummaryLine(inspection.status), receiptPath: path };
98
+ }
99
+ function transcriptLine(line) {
100
+ switch (line.kind) {
101
+ case "open":
102
+ return { at: line.at, label: `run opened (${sanitizeBounded(line.agentId, 64)})`, detail: void 0 };
103
+ case "event":
104
+ return {
105
+ at: line.at,
106
+ label: sanitizeBounded(line.type, 64),
107
+ detail: line.detail === void 0 ? void 0 : sanitizeBounded(line.detail, DETAIL_MAX_WIDTH)
108
+ };
109
+ case "journal_truncated":
110
+ return { at: line.at, label: "journal truncated", detail: sanitizeBounded(line.reason, 64) };
111
+ case "receipt":
112
+ return {
113
+ at: line.at,
114
+ label: `receipt sealed (${sanitizeBounded(line.outcome, 32)})`,
115
+ detail: line.digest === void 0 ? void 0 : `sha256:${sanitizeBounded(line.digest, 64)}`
116
+ };
117
+ case "terminal":
118
+ return {
119
+ at: line.at,
120
+ label: `terminal (${sanitizeBounded(line.outcome, 32)})`,
121
+ detail: line.detail === void 0 ? void 0 : sanitizeBounded(line.detail, DETAIL_MAX_WIDTH)
122
+ };
123
+ default:
124
+ return null;
125
+ }
126
+ }
127
+ function resolveRunId(runId) {
128
+ const ledger = openLedger();
129
+ if (ledger.get(runId) !== null) return { runId };
130
+ const candidates = ledger.list().filter((run) => run.id.startsWith(runId)).map((run) => run.id);
131
+ if (candidates.length === 1 && candidates[0] !== void 0) return { runId: candidates[0] };
132
+ return { candidates };
133
+ }
134
+ function loadRunViewModel(runId, options = {}) {
135
+ const run = openLedger().get(runId);
136
+ if (run === null) return null;
137
+ const now = options.now ?? (() => Date.now());
138
+ const journal = readRunEventJournal(runId, {
139
+ maxLines: TRANSCRIPT_LIMIT,
140
+ ...options.journalRoot === void 0 ? {} : { root: options.journalRoot }
141
+ });
142
+ const transcript = [];
143
+ for (const line of journal.lines) {
144
+ const rendered = transcriptLine(line);
145
+ if (rendered !== null) transcript.push(rendered);
146
+ }
147
+ const evidence = evidenceLine(run);
148
+ const startedMs = Date.parse(run.startedAt);
149
+ const endedMs = run.endedAt === null ? now() : Date.parse(run.endedAt);
150
+ const task = sanitizeBounded(run.task, TASK_MAX_WIDTH);
151
+ return {
152
+ runId: run.id,
153
+ agentId: run.agentId,
154
+ model: run.wireModelId,
155
+ target: run.targetId,
156
+ node: run.node?.id ?? "local",
157
+ phase: run.outcome ?? run.status,
158
+ startedAt: run.startedAt,
159
+ elapsedMs: Number.isFinite(startedMs) && Number.isFinite(endedMs) ? Math.max(0, endedMs - startedMs) : 0,
160
+ task: task.length > 0 ? task : void 0,
161
+ transcript,
162
+ transcriptTruncated: journal.truncated,
163
+ journalPresent: journal.present,
164
+ journalPath: runEventJournalPath(runId, options.journalRoot === void 0 ? void 0 : options.journalRoot),
165
+ evidence: evidence.text,
166
+ receiptPath: evidence.receiptPath,
167
+ outcome: journal.terminal?.outcome ?? run.outcome ?? null,
168
+ outcomeDetail: journal.terminal?.detail ?? run.outcomeDetail ?? null,
169
+ terminal: journal.terminal !== null || run.endedAt !== null
170
+ };
171
+ }
172
+ function formatElapsed(ms) {
173
+ const seconds = Math.floor(ms / 1e3);
174
+ if (seconds < 60) return `${seconds}s`;
175
+ const minutes = Math.floor(seconds / 60);
176
+ if (minutes < 60) return `${minutes}m${String(seconds % 60).padStart(2, "0")}s`;
177
+ return `${Math.floor(minutes / 60)}h${String(minutes % 60).padStart(2, "0")}m`;
178
+ }
179
+ function clockOf(iso) {
180
+ const time = iso.slice(11, 19);
181
+ return time.length === 8 ? time : iso.slice(0, 8);
182
+ }
183
+ function wrapViewerValue(prefix, value, columns) {
184
+ const prefixWidth = visibleWidth(prefix);
185
+ const valueWidth = Math.max(1, columns - prefixWidth);
186
+ return wrapTextWithAnsi(value, valueWidth).map(
187
+ (line, index) => `${index === 0 ? prefix : " ".repeat(prefixWidth)}${line}`
188
+ );
189
+ }
190
+ function renderRunView(model, width = DEFAULT_WIDTH) {
191
+ const columns = Math.max(MIN_WIDTH, width);
192
+ const rule = "\u2500".repeat(columns);
193
+ const lines = [];
194
+ lines.push(truncatePlain(`run ${model.runId} ${model.agentId}`, columns));
195
+ lines.push(
196
+ truncatePlain(
197
+ `model ${model.model} target ${model.target} node ${model.node} phase ${model.phase} elapsed ${formatElapsed(model.elapsedMs)}`,
198
+ columns
199
+ )
200
+ );
201
+ if (model.task !== void 0) {
202
+ lines.push(...wrapViewerValue("task ", model.task, columns));
203
+ }
204
+ lines.push(rule);
205
+ if (!model.journalPresent) {
206
+ lines.push("no event journal for this run.");
207
+ lines.push(
208
+ ...wrapViewerValue(
209
+ "expected ",
210
+ `${model.journalPath} (fleet.history.journal may have been off when it ran)`,
211
+ columns
212
+ )
213
+ );
214
+ } else if (model.transcript.length === 0) {
215
+ lines.push("journal is empty; no events recorded yet.");
216
+ } else {
217
+ if (model.transcriptTruncated) lines.push("\u2026 earlier events dropped (journal truncated)");
218
+ for (const entry of model.transcript) {
219
+ const head = `${clockOf(entry.at)} ${entry.label}`;
220
+ if (entry.detail === void 0) lines.push(truncatePlain(head, columns));
221
+ else lines.push(...wrapViewerValue(`${head}: `, entry.detail, columns));
222
+ }
223
+ }
224
+ lines.push(rule);
225
+ lines.push(...wrapViewerValue("evidence ", model.evidence, columns));
226
+ if (model.receiptPath !== null) {
227
+ lines.push(truncatePlain(`receipt ${model.receiptPath}`, columns));
228
+ }
229
+ const outcome = model.outcome === null ? model.terminal ? "terminal, outcome not recorded" : "running" : model.outcomeDetail === null || model.outcomeDetail.length === 0 ? model.outcome : `${model.outcome} (${sanitizeBounded(model.outcomeDetail, DETAIL_MAX_WIDTH)})`;
230
+ lines.push(...wrapViewerValue("outcome ", outcome, columns));
231
+ return lines;
232
+ }
233
+ function renderWatchView(runId, model, width = DEFAULT_WIDTH, ledgerRoot = clioStateDir()) {
234
+ const columns = Math.max(MIN_WIDTH, width);
235
+ if (runId === null) {
236
+ return [
237
+ "no worker selected.",
238
+ "",
239
+ "In clio-coder, open the workers view (Alt+W), pick a run, press Enter.",
240
+ "Arrow keys there retarget this pane live."
241
+ ];
242
+ }
243
+ if (model === null) {
244
+ const missing = `run ${sanitizeBounded(runId, 64)} is not in the run ledger under ${ledgerRoot}.`;
245
+ const wrappedMissing = [];
246
+ for (let offset = 0; offset < missing.length; offset += columns) {
247
+ wrappedMissing.push(missing.slice(offset, offset + columns));
248
+ }
249
+ return [
250
+ ...wrappedMissing,
251
+ "",
252
+ "If this run is queued, it has not started yet; this view will update when its ledger entry appears.",
253
+ "If it already started or finished, it was not found in this ledger."
254
+ ];
255
+ }
256
+ return renderRunView(model, columns);
257
+ }
258
+ var FLEET_ROOT_PREFIX = "fleet-";
259
+ var STEP_ID_MAX_WIDTH = 32;
260
+ function fleetRunsDir() {
261
+ return join(clioStateDir(), "fleet-runs");
262
+ }
263
+ function resolveFleetRootId(token) {
264
+ if (readFleetRun(token) !== null) return { rootId: token };
265
+ let entries;
266
+ try {
267
+ entries = readdirSync(fleetRunsDir());
268
+ } catch {
269
+ return { candidates: [] };
270
+ }
271
+ const candidates = entries.filter((name) => name.endsWith(".json")).map((name) => name.slice(0, -".json".length)).filter((id) => id.startsWith(token));
272
+ if (candidates.length === 1 && candidates[0] !== void 0) return { rootId: candidates[0] };
273
+ return { candidates };
274
+ }
275
+ function stepResultOf(value) {
276
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : {};
277
+ }
278
+ function loadFleetRunViewModel(rootId, options = {}) {
279
+ const record = readFleetRun(rootId);
280
+ if (record === null) return null;
281
+ const ledger = openLedger();
282
+ const now = options.now ?? (() => Date.now());
283
+ const settled = /* @__PURE__ */ new Map();
284
+ for (const entry of record.steps ?? []) {
285
+ if (typeof entry?.stepId === "string") settled.set(entry.stepId, stepResultOf(entry.result));
286
+ }
287
+ const stepIds = record.stepIds?.length > 0 ? record.stepIds : [...settled.keys()];
288
+ const steps = stepIds.map((stepId) => {
289
+ const result = settled.get(stepId);
290
+ const runId = typeof result?.terminalRunId === "string" ? result.terminalRunId : null;
291
+ if (result === void 0 || runId === null) {
292
+ return { stepId, runId: null, agentId: null, outcome: "not run", detail: void 0 };
293
+ }
294
+ const envelope = ledger.get(runId);
295
+ const outcome = envelope?.outcome ?? (result.succeeded === true ? "succeeded" : "failed");
296
+ const detail = result.boundaryViolated === true ? WRITE_BOUNDARY_VIOLATION_REASON : result.failureReason;
297
+ return {
298
+ stepId,
299
+ runId,
300
+ agentId: envelope?.agentId ?? null,
301
+ outcome,
302
+ detail: typeof detail === "string" && detail.length > 0 ? detail : void 0
303
+ };
304
+ });
305
+ const startedMs = Date.parse(record.startedAt);
306
+ const endedMs = record.endedAt === null ? now() : Date.parse(record.endedAt);
307
+ return {
308
+ rootId: record.id,
309
+ fleet: record.fleet,
310
+ startedAt: record.startedAt,
311
+ elapsedMs: Number.isFinite(startedMs) && Number.isFinite(endedMs) ? Math.max(0, endedMs - startedMs) : 0,
312
+ running: record.endedAt === null,
313
+ resumedFrom: record.resumedFrom,
314
+ plannedSteps: stepIds.length,
315
+ recordedSteps: settled.size,
316
+ steps
317
+ };
318
+ }
319
+ function renderFleetRunView(model, width = DEFAULT_WIDTH) {
320
+ const columns = Math.max(MIN_WIDTH, width);
321
+ const rule = "\u2500".repeat(columns);
322
+ const lines = [];
323
+ lines.push(truncatePlain(`fleet ${sanitizeBounded(model.fleet, 64)} root ${model.rootId}`, columns));
324
+ const resumed = model.resumedFrom === null ? "" : ` resumed from ${sanitizeBounded(model.resumedFrom, 64)}`;
325
+ lines.push(
326
+ truncatePlain(
327
+ `started ${model.startedAt} elapsed ${formatElapsed(model.elapsedMs)} ${model.recordedSteps} of ${model.plannedSteps} steps recorded${model.running ? " (running)" : ""}${resumed}`,
328
+ columns
329
+ )
330
+ );
331
+ lines.push(rule);
332
+ if (model.steps.length === 0) {
333
+ lines.push("no steps recorded for this fleet run.");
334
+ } else {
335
+ const rows = model.steps.map((step) => ({
336
+ step: sanitizeBounded(step.stepId, STEP_ID_MAX_WIDTH),
337
+ runId: step.runId ?? "-",
338
+ outcome: sanitizeBounded(step.outcome, 32),
339
+ tail: [step.agentId, step.detail].filter((part) => part !== null && part !== void 0).join(": ")
340
+ }));
341
+ const stepWidth = Math.max(...rows.map((row) => row.step.length));
342
+ const runWidth = Math.max(...rows.map((row) => row.runId.length));
343
+ const outcomeWidth = Math.max(...rows.map((row) => row.outcome.length));
344
+ for (const row of rows) {
345
+ const head = `${row.step.padEnd(stepWidth)} ${row.runId.padEnd(runWidth)} ${row.outcome.padEnd(outcomeWidth)}`;
346
+ const text = row.tail.length === 0 ? head : `${head} ${sanitizeBounded(row.tail, DETAIL_MAX_WIDTH)}`;
347
+ lines.push(truncatePlain(text.trimEnd(), columns));
348
+ }
349
+ }
350
+ lines.push(rule);
351
+ lines.push("clio-coder fleet view <run id> for one step's transcript, receipt, and ledger entry");
352
+ return lines;
353
+ }
354
+ function fail(message) {
355
+ process.stderr.write(`clio-coder fleet view: ${message}
356
+ `);
357
+ return 2;
358
+ }
359
+ function parseViewArgs(args) {
360
+ const parsed = { follow: false, help: false };
361
+ for (let i = 0; i < args.length; i += 1) {
362
+ const arg = args[i];
363
+ if (arg === void 0) continue;
364
+ if (arg === "--follow" || arg === "-f") {
365
+ parsed.follow = true;
366
+ continue;
367
+ }
368
+ if (arg === "--watch") {
369
+ const value = args[i + 1];
370
+ if (value === void 0 || value.startsWith("-")) return "--watch requires a selection-file path";
371
+ parsed.watchPath = value;
372
+ i += 1;
373
+ continue;
374
+ }
375
+ const dirRole = arg === "--config-dir" ? "config" : arg === "--data-dir" ? "data" : arg === "--state-dir" ? "state" : arg === "--cache-dir" ? "cache" : null;
376
+ if (dirRole !== null) {
377
+ const value = args[i + 1];
378
+ if (value === void 0 || value.startsWith("-")) return `${arg} requires a directory path`;
379
+ parsed.dirs ??= {};
380
+ parsed.dirs[dirRole] = value;
381
+ i += 1;
382
+ continue;
383
+ }
384
+ if (arg === "--help" || arg === "-h") {
385
+ parsed.help = true;
386
+ continue;
387
+ }
388
+ if (arg.startsWith("-")) return `unknown flag: ${arg}`;
389
+ if (parsed.runId !== void 0) return `unexpected argument: ${arg}`;
390
+ parsed.runId = arg;
391
+ }
392
+ if (parsed.watchPath !== void 0 && parsed.runId !== void 0) {
393
+ return "--watch follows the selection file; it does not take a run id";
394
+ }
395
+ if (parsed.watchPath !== void 0 && parsed.follow) {
396
+ return "--watch already follows; drop --follow";
397
+ }
398
+ return parsed;
399
+ }
400
+ function applyViewDirs(dirs) {
401
+ if (dirs === void 0) return;
402
+ if (dirs.config !== void 0) process.env.CLIO_CODER_CONFIG_DIR = dirs.config;
403
+ if (dirs.data !== void 0) process.env.CLIO_CODER_DATA_DIR = dirs.data;
404
+ if (dirs.state !== void 0) process.env.CLIO_CODER_STATE_DIR = dirs.state;
405
+ if (dirs.cache !== void 0) process.env.CLIO_CODER_CACHE_DIR = dirs.cache;
406
+ resetXdgCache();
407
+ }
408
+ function readWatchSelection(path) {
409
+ let raw;
410
+ try {
411
+ raw = readFileSync(path, "utf8");
412
+ } catch {
413
+ return null;
414
+ }
415
+ const line = raw.split("\n", 1)[0]?.trim() ?? "";
416
+ return line.length > 0 && line.length <= 128 ? line : null;
417
+ }
418
+ function terminalWidth() {
419
+ const columns = process.stdout.columns;
420
+ return typeof columns === "number" && columns >= MIN_WIDTH ? columns : DEFAULT_WIDTH;
421
+ }
422
+ async function runFleetView(args) {
423
+ const parsed = parseViewArgs(args);
424
+ if (typeof parsed === "string") {
425
+ process.stderr.write(`clio-coder fleet view: ${parsed}
426
+ `);
427
+ process.stdout.write(HELP);
428
+ return 2;
429
+ }
430
+ if (parsed.help) {
431
+ process.stdout.write(HELP);
432
+ return 0;
433
+ }
434
+ applyViewDirs(parsed.dirs);
435
+ if (parsed.watchPath !== void 0) {
436
+ if (process.stdout.isTTY !== true || process.stdin.isTTY !== true) {
437
+ const selected = readWatchSelection(parsed.watchPath);
438
+ const model = selected === null ? null : loadRunViewModel(selected);
439
+ process.stdout.write(`${renderWatchView(selected, model, terminalWidth()).join("\n")}
440
+ `);
441
+ return 0;
442
+ }
443
+ return watchSelection(parsed.watchPath);
444
+ }
445
+ if (parsed.runId === void 0) {
446
+ process.stderr.write(HELP);
447
+ return 2;
448
+ }
449
+ if (parsed.runId.startsWith(FLEET_ROOT_PREFIX)) {
450
+ const root = resolveFleetRootId(parsed.runId);
451
+ if (!("rootId" in root)) {
452
+ return root.candidates.length === 0 ? fail(`unknown fleet run '${parsed.runId}' (no record under ${fleetRunsDir()})`) : fail(`fleet root id '${parsed.runId}' is ambiguous: ${root.candidates.slice(0, 8).join(", ")}`);
453
+ }
454
+ const fleetModel = loadFleetRunViewModel(root.rootId);
455
+ if (fleetModel === null) return fail(`unknown fleet run '${root.rootId}'`);
456
+ if (parsed.follow) {
457
+ process.stderr.write("clio-coder fleet view: --follow applies to a run id, not a fleet root; printing the index\n");
458
+ }
459
+ process.stdout.write(`${renderFleetRunView(fleetModel, terminalWidth()).join("\n")}
460
+ `);
461
+ return 0;
462
+ }
463
+ const resolved = resolveRunId(parsed.runId);
464
+ if (!("runId" in resolved)) {
465
+ return resolved.candidates.length === 0 ? fail(`unknown run '${parsed.runId}' (not in the run ledger under ${clioStateDir()})`) : fail(`run id '${parsed.runId}' is ambiguous: ${resolved.candidates.slice(0, 8).join(", ")}`);
466
+ }
467
+ const runId = resolved.runId;
468
+ const snapshot = loadRunViewModel(runId);
469
+ if (snapshot === null) return fail(`unknown run '${runId}'`);
470
+ if (!parsed.follow || process.stdout.isTTY !== true || process.stdin.isTTY !== true) {
471
+ if (parsed.follow) {
472
+ process.stderr.write("clio-coder fleet view: --follow needs an interactive terminal; printing a snapshot\n");
473
+ }
474
+ process.stdout.write(`${renderRunView(snapshot, terminalWidth()).join("\n")}
475
+ `);
476
+ return 0;
477
+ }
478
+ return followRun(runId);
479
+ }
480
+ async function watchSelection(selectionPath) {
481
+ const { ProcessTerminal, TuiAltScreen } = await import("./tui-primitives-K5PASC3O.js");
482
+ const terminal = new ProcessTerminal();
483
+ const tui = new TuiAltScreen(terminal);
484
+ let selected = readWatchSelection(selectionPath);
485
+ let model = selected === null ? null : loadRunViewModel(selected);
486
+ const view = {
487
+ render(width) {
488
+ const lines = renderWatchView(selected, model, width);
489
+ lines.push("");
490
+ lines.push("watching the workers-view selection\u2026 q to quit");
491
+ return lines;
492
+ },
493
+ invalidate() {
494
+ }
495
+ };
496
+ tui.addChild(view);
497
+ return await new Promise((resolve) => {
498
+ let settled = false;
499
+ const timer = setInterval(() => {
500
+ selected = readWatchSelection(selectionPath);
501
+ model = selected === null ? null : loadRunViewModel(selected);
502
+ tui.requestRender();
503
+ }, POLL_MS);
504
+ const finish = () => {
505
+ if (settled) return;
506
+ settled = true;
507
+ clearInterval(timer);
508
+ removeInput();
509
+ tui.stop();
510
+ resolve(0);
511
+ };
512
+ const removeInput = tui.addInputListener((data) => {
513
+ if (data === "q" || data === QUIT_CTRL_C || data === QUIT_ESCAPE) {
514
+ finish();
515
+ return { consume: true };
516
+ }
517
+ return void 0;
518
+ });
519
+ tui.start();
520
+ tui.requestRender();
521
+ });
522
+ }
523
+ async function followRun(runId) {
524
+ const { ProcessTerminal, TuiAltScreen } = await import("./tui-primitives-K5PASC3O.js");
525
+ const terminal = new ProcessTerminal();
526
+ const tui = new TuiAltScreen(terminal);
527
+ let model = loadRunViewModel(runId);
528
+ let following = true;
529
+ const view = {
530
+ render(width) {
531
+ if (model === null) return [`run ${runId} left the ledger.`];
532
+ const lines = renderRunView(model, width);
533
+ lines.push("");
534
+ lines.push(following ? "following\u2026 q to quit" : "run finished. q to quit");
535
+ return lines;
536
+ },
537
+ invalidate() {
538
+ }
539
+ };
540
+ tui.addChild(view);
541
+ return await new Promise((resolve) => {
542
+ let settled = false;
543
+ const timer = setInterval(() => {
544
+ model = loadRunViewModel(runId);
545
+ if (model?.terminal === true) following = false;
546
+ tui.requestRender();
547
+ }, POLL_MS);
548
+ const finish = () => {
549
+ if (settled) return;
550
+ settled = true;
551
+ clearInterval(timer);
552
+ removeInput();
553
+ tui.stop();
554
+ resolve(0);
555
+ };
556
+ const removeInput = tui.addInputListener((data) => {
557
+ if (data === "q" || data === QUIT_CTRL_C || data === QUIT_ESCAPE) {
558
+ finish();
559
+ return { consume: true };
560
+ }
561
+ return void 0;
562
+ });
563
+ tui.start();
564
+ tui.requestRender();
565
+ });
566
+ }
567
+
568
+ export {
569
+ loadRunViewModel,
570
+ loadFleetRunViewModel,
571
+ runFleetView
572
+ };
573
+ //# sourceMappingURL=chunk-7RY5VZPH.js.map
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-5B2AEOW5.js";
5
5
  import {
6
6
  ToolNames
7
- } from "./chunk-CGKSTWHD.js";
7
+ } from "./chunk-K6BSR66V.js";
8
8
  import {
9
9
  StringEnum
10
- } from "./chunk-UOSL25KY.js";
10
+ } from "./chunk-VXMFAE2W.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "./chunk-3R73A4XB.js";
@@ -43,4 +43,4 @@ export {
43
43
  CODE_NAV_MAX_LIMIT,
44
44
  codeNavToolSurface
45
45
  };
46
- //# sourceMappingURL=chunk-OEDBCISO.js.map
46
+ //# sourceMappingURL=chunk-ABLSQ6JX.js.map
@@ -15,14 +15,11 @@ import {
15
15
  parseBulkFrame,
16
16
  parseControlFrame,
17
17
  toolSignatureOf
18
- } from "./chunk-CMZWFGD2.js";
18
+ } from "./chunk-VAVR4IJY.js";
19
19
  import {
20
20
  enableClioCompileCache,
21
21
  workerCompileCacheEnvironment
22
- } from "./chunk-I4HZDVNP.js";
23
- import {
24
- atomicWrite
25
- } from "./chunk-KV2AOLDF.js";
22
+ } from "./chunk-2LEAKD4C.js";
26
23
  import {
27
24
  AI_AGENT_NAME,
28
25
  withClioAgentEnvironment
@@ -33,7 +30,7 @@ import {
33
30
  } from "./chunk-IWHMRKLL.js";
34
31
  import {
35
32
  clioStateDir
36
- } from "./chunk-BNAZZHFG.js";
33
+ } from "./chunk-BYP5D4HI.js";
37
34
  import {
38
35
  init_esm_shims
39
36
  } from "./chunk-3R73A4XB.js";
@@ -154,7 +151,7 @@ import { performance } from "node:perf_hooks";
154
151
  init_esm_shims();
155
152
  import { createHash } from "node:crypto";
156
153
  function computeSettingsFingerprint(settings) {
157
- return createHash("sha256").update(`clio.settings:${canonicalJson(settings)}`, "utf8").digest("hex");
154
+ return createHash("sha256").update(`clio-coder.settings:${canonicalJson(settings)}`, "utf8").digest("hex");
158
155
  }
159
156
  function verifyWorkerAttestation(attestation, approved) {
160
157
  if (attestation.protocolVersion !== WORKER_PROTOCOL_VERSION) {
@@ -199,7 +196,7 @@ function approvedIdentityForSpec(spec) {
199
196
  };
200
197
  }
201
198
  function workerSpecDigestOf(spec) {
202
- return createHash("sha256").update(`clio.workerSpec:${canonicalJson(spec)}`, "utf8").digest("hex");
199
+ return createHash("sha256").update(`clio-coder.workerSpec:${canonicalJson(spec)}`, "utf8").digest("hex");
203
200
  }
204
201
  function resourceOrNull(value) {
205
202
  return value.known ? value.value : null;
@@ -720,14 +717,6 @@ function readFleetPreflightRecords() {
720
717
  return [];
721
718
  }
722
719
  }
723
- function recordFleetPreflight(records) {
724
- const existing = readFleetPreflightRecords();
725
- const merged = /* @__PURE__ */ new Map();
726
- for (const record of existing) merged.set(`${record.nodeId}\0${record.projectRoot}`, record);
727
- for (const record of records) merged.set(`${record.nodeId}\0${record.projectRoot}`, record);
728
- const file = { version: 2, records: [...merged.values()] };
729
- atomicWrite(storePath(), JSON.stringify(file, null, 2));
730
- }
731
720
  function fleetPreflightVerdict(node, projectRoot, records = readFleetPreflightRecords()) {
732
721
  const record = records.find((entry) => entry.nodeId === node.id && entry.projectRoot === projectRoot);
733
722
  if (!record) {
@@ -765,12 +754,13 @@ function routeFactVerdict(requirement, records = readFleetPreflightRecords(), op
765
754
  }
766
755
  return evaluateRouteFacts(targets, resources, requirement, options);
767
756
  }
768
- var PREFLIGHT_MARKER = "clio-preflight/1";
757
+ var PREFLIGHT_MARKER = "clio-coder-preflight/1";
758
+ var LEGACY_PREFLIGHT_MARKER = "clio-preflight/1";
769
759
  var DEFAULT_PREFLIGHT_TIMEOUT_MS = 2e4;
770
760
  function buildPreflightScript(node, projectRoot, targets = []) {
771
761
  const entry = node.clioCoderEntry !== void 0 && node.clioCoderEntry.trim().length > 0 ? node.clioCoderEntry.trim() : "clio-coder worker";
772
762
  const cliBase = entry.endsWith(" worker") ? entry.slice(0, -" worker".length) : null;
773
- const versionProbe = cliBase !== null ? `v=$(${cliBase} --version 2>/dev/null | head -n 1); if [ -n "$v" ]; then echo "clio=$v"; else echo clio=missing; fi` : `echo clio=custom-entry`;
763
+ const versionProbe = cliBase !== null ? `v=$(${cliBase} --version 2>/dev/null | head -n 1); if [ -n "$v" ]; then echo "clioCoder=$v"; else echo clioCoder=missing; fi` : `echo clioCoder=custom-entry`;
774
764
  const lines = [
775
765
  `echo ${shellQuote(PREFLIGHT_MARKER)}`,
776
766
  `if cd ${shellQuote(projectRoot)} 2>/dev/null; then echo cwd=ok; else echo cwd=missing; fi`,
@@ -871,7 +861,7 @@ async function runFleetNodePreflight(node, projectRoot, options) {
871
861
  const probeStartedAt = performance2.now();
872
862
  const result = await runSsh(sshBinary, buildSshArgs(node, script), timeoutMs);
873
863
  const probeDurationMs = Math.round(performance2.now() - probeStartedAt);
874
- if (!result.stdout.includes(PREFLIGHT_MARKER)) {
864
+ if (!result.stdout.includes(PREFLIGHT_MARKER) && !result.stdout.includes(LEGACY_PREFLIGHT_MARKER)) {
875
865
  const stderr = result.stderr.trim().split("\n").slice(-1)[0] ?? "";
876
866
  record.detail = `unreachable (ssh exit ${result.code}${stderr.length > 0 ? `: ${stderr}` : ""})`;
877
867
  return record;
@@ -893,8 +883,9 @@ async function runFleetNodePreflight(node, projectRoot, options) {
893
883
  };
894
884
  checks.pathParity = lines.includes("cwd=ok");
895
885
  checks.stateDirWritable = lines.includes("state=ok");
896
- const clioLine = lines.find((line) => line.startsWith("clio="));
897
- const clioValue = clioLine?.slice("clio=".length) ?? "missing";
886
+ const clioCoderLine = lines.find((line) => line.startsWith("clioCoder="));
887
+ const legacyClioLine = lines.find((line) => line.startsWith("clio="));
888
+ const clioValue = clioCoderLine?.slice("clioCoder=".length) ?? legacyClioLine?.slice("clio=".length) ?? "missing";
898
889
  if (clioValue === "custom-entry") {
899
890
  checks.clioPresent = true;
900
891
  checks.versionMatch = true;
@@ -928,9 +919,8 @@ export {
928
919
  localNodeIdentity,
929
920
  createSshWorkerTransport,
930
921
  readFleetPreflightRecords,
931
- recordFleetPreflight,
932
922
  fleetPreflightVerdict,
933
923
  routeFactVerdict,
934
924
  runFleetNodePreflight
935
925
  };
936
- //# sourceMappingURL=chunk-5HFBWUMU.js.map
926
+ //# sourceMappingURL=chunk-AFKWHWXF.js.map