@iowarp/clio-coder 0.4.0 → 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 (581) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +116 -16
  3. package/dist/{acp-G5WJBNCT.js → acp-ZILU3AUO.js} +14 -14
  4. package/dist/{agents-FMV2Q5G4.js → agents-HYWGBGQR.js} +40 -29
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-3IDSJEIK.js → auth-N3QT7CBO.js} +21 -19
  7. package/dist/{builtins-XCZWXSC7.js → builtins-UJLMOVOV.js} +6 -6
  8. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  9. package/dist/{chunk-3BT2XMV4.js → chunk-2NM363SV.js} +50 -57
  10. package/dist/{chunk-J4W7KFM7.js → chunk-2VG7KLYV.js} +24 -279
  11. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  12. package/dist/{chunk-K5C3NCBD.js → chunk-3I5NY75V.js} +5 -5
  13. package/dist/{chunk-VAZSBTKF.js → chunk-3QSOM6PA.js} +2 -2
  14. package/dist/{chunk-TZ3SGWZZ.js → chunk-5QIAJV2D.js} +2 -2
  15. package/dist/{chunk-OQBA45DZ.js → chunk-5YHDIDBP.js} +2 -2
  16. package/dist/{chunk-NHLBIGRH.js → chunk-6CCS4G3W.js} +40 -17
  17. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  18. package/dist/{chunk-LDQ2ZF2M.js → chunk-6FN3E6KX.js} +5 -5
  19. package/dist/{chunk-X3YGUTOB.js → chunk-6HMJX2VU.js} +59 -59
  20. package/dist/{chunk-VEO4AP2K.js → chunk-6I5ILFOF.js} +3 -2
  21. package/dist/{chunk-B7OBL7PK.js → chunk-6NJQITNH.js} +18 -11
  22. package/dist/{chunk-IQ7KR472.js → chunk-6VC4OV3Z.js} +6 -3
  23. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  24. package/dist/{chunk-AB44T6BB.js → chunk-74YWRRU5.js} +8 -7
  25. package/dist/{chunk-SJ5ZKQ4S.js → chunk-7EPLI7VL.js} +2 -2
  26. package/dist/{chunk-HWHKMHUA.js → chunk-7OBGU7UB.js} +3 -3
  27. package/dist/{chunk-2OQE55CK.js → chunk-7PWAODYW.js} +2 -2
  28. package/dist/{chunk-IBEBSCYA.js → chunk-7RY5VZPH.js} +42 -33
  29. package/dist/{chunk-LQ3DZAMX.js → chunk-ABLSQ6JX.js} +2 -2
  30. package/dist/{chunk-QLFS5GO2.js → chunk-AFKWHWXF.js} +12 -22
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-O6TL7WWY.js → chunk-AKB4GYDL.js} +4 -4
  33. package/dist/chunk-AP73CFDC.js +308 -0
  34. package/dist/{chunk-JDG2WCRO.js → chunk-BBTJOK6Y.js} +5 -5
  35. package/dist/{chunk-SP2RXXYO.js → chunk-BDPT6GTK.js} +10 -10
  36. package/dist/{chunk-NQQH3YT7.js → chunk-BJGUKIG4.js} +3 -3
  37. package/dist/{chunk-O4XIVISU.js → chunk-BTGG6BG2.js} +79 -38
  38. package/dist/chunk-BTK3SSSK.js +67 -0
  39. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  40. package/dist/chunk-BWW4HLO4.js +301 -0
  41. package/dist/{chunk-I5VEOC6I.js → chunk-C537JADH.js} +10 -10
  42. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  43. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  44. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  45. package/dist/chunk-D7E7WCDF.js +27 -0
  46. package/dist/{chunk-WZR7K7ZX.js → chunk-E67WX76H.js} +6 -6
  47. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  48. package/dist/chunk-EIMVLWB3.js +1842 -0
  49. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  50. package/dist/{chunk-MLKNTWH2.js → chunk-FYUN5KZ3.js} +21 -21
  51. package/dist/{chunk-YJX4SHTD.js → chunk-GIZNH63R.js} +1 -1
  52. package/dist/{chunk-X75E3D2N.js → chunk-GPPB3JBE.js} +18 -16
  53. package/dist/{chunk-GR5G2PVF.js → chunk-GVQJ5CCZ.js} +15 -10
  54. package/dist/chunk-HJWWJ6IL.js +184 -0
  55. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  56. package/dist/{chunk-VYMXRQI6.js → chunk-HUAS7ITX.js} +89 -93
  57. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  58. package/dist/{chunk-DYJP44XW.js → chunk-IG7BCQBA.js} +1 -1
  59. package/dist/{chunk-32KWKNSF.js → chunk-IXJT6DCX.js} +3 -3
  60. package/dist/{chunk-C2LTL2W6.js → chunk-J4HBWF6Y.js} +360 -172
  61. package/dist/chunk-J5LZHVIT.js +284 -0
  62. package/dist/{chunk-QLL7ILRG.js → chunk-JA5QWE4Z.js} +510 -202
  63. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  64. package/dist/{chunk-36EJLSQQ.js → chunk-JZWT5J3Y.js} +4 -4
  65. package/dist/{chunk-HZHHCK24.js → chunk-K6BF4U2H.js} +476 -322
  66. package/dist/{chunk-Z2RR6MAK.js → chunk-MA3H6DM5.js} +6 -6
  67. package/dist/{chunk-CODPRO7Q.js → chunk-MOPSG2X7.js} +6 -6
  68. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  69. package/dist/{chunk-YDFRH54B.js → chunk-N5UK64DP.js} +4 -4
  70. package/dist/chunk-NDDGJUXD.js +81 -0
  71. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  72. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  73. package/dist/{chunk-W5VSYASO.js → chunk-OJTRZGR3.js} +46 -87
  74. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  75. package/dist/{chunk-3URVFKWK.js → chunk-PJJ6MY27.js} +5 -5
  76. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  77. package/dist/{chunk-GKF55TAZ.js → chunk-PVAMAVBB.js} +3 -2
  78. package/dist/{chunk-6DB53AJS.js → chunk-QKIFBZKT.js} +7 -7
  79. package/dist/{chunk-HJJTYUHX.js → chunk-QMXC4JB7.js} +20 -20
  80. package/dist/chunk-QTFGO774.js +644 -0
  81. package/dist/{chunk-CY6FY24N.js → chunk-R23Z6K6I.js} +2 -2
  82. package/dist/{chunk-ULC6OTWO.js → chunk-R32CLGZ6.js} +13 -13
  83. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  84. package/dist/{chunk-F4CKPOEQ.js → chunk-SCYB3HA4.js} +72 -26
  85. package/dist/{chunk-LY4S7GJC.js → chunk-SINK3QR6.js} +18 -16
  86. package/dist/{chunk-U77AMWDL.js → chunk-TD3PGPQA.js} +43 -22
  87. package/dist/{chunk-QBJA7R7N.js → chunk-THYWACCR.js} +2 -2
  88. package/dist/{chunk-QREDIESB.js → chunk-TVH4ONAM.js} +14 -8
  89. package/dist/chunk-U2WB7TZS.js +271 -0
  90. package/dist/{chunk-KFZI4NIL.js → chunk-UAPGZHYC.js} +145 -31
  91. package/dist/{chunk-DQITNCXG.js → chunk-UEDMSP56.js} +29 -14
  92. package/dist/{chunk-3XML7CDN.js → chunk-UXN6JT4W.js} +2 -2
  93. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  94. package/dist/{chunk-BPKCPIL7.js → chunk-VEGN6WIQ.js} +2 -2
  95. package/dist/chunk-VKFQTNDV.js +66 -0
  96. package/dist/{chunk-7MCTRUCE.js → chunk-VKRH2TCS.js} +2 -2
  97. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  98. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  99. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  100. package/dist/{chunk-SUCTJL45.js → chunk-WR6U3OVP.js} +3 -3
  101. package/dist/{chunk-BUMFYQFY.js → chunk-XKA2ICR3.js} +124 -113
  102. package/dist/{chunk-UXMFQ54G.js → chunk-Y45G3AXC.js} +39 -39
  103. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  104. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  105. package/dist/{chunk-V5DHCITQ.js → chunk-ZAZB4JMW.js} +23 -12
  106. package/dist/{chunk-Z4TXYIEG.js → chunk-ZJLUDYFY.js} +9 -9
  107. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  108. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  109. package/dist/cli/index.js +36 -36
  110. package/dist/{clio-2JXHBBY5.js → clio-IT3G3VQH.js} +12 -13
  111. package/dist/{code-nav-3YYRMYNF.js → code-nav-RK6S7F6E.js} +5 -5
  112. package/dist/codewiki/build-worker.js +1 -1
  113. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  114. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  115. package/dist/{config-QZPCMYSO.js → config-3QZRWZJF.js} +53 -49
  116. package/dist/{configure-TEGEBYCA.js → configure-FL7Y3KJF.js} +25 -22
  117. package/dist/{context-E6H5RNMC.js → context-5HE7ODYK.js} +47 -43
  118. package/dist/{context-AV7OEZ4D.js → context-KYQFRVDC.js} +11 -11
  119. package/dist/{context-GSXUE4CT.js → context-XNHL75JV.js} +32 -19
  120. package/dist/{context-clear-SHIBYK6T.js → context-clear-N545L53A.js} +47 -43
  121. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-QHKXSV2F.js} +10 -9
  122. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-RGIE5PCT.js} +56 -47
  123. package/dist/{docs-23KQS3XK.js → docs-5NAF6AU7.js} +5 -11
  124. package/dist/doctor-ZGPEGHIP.js +772 -0
  125. package/dist/{eval-TFBYQH4H.js → eval-GXLL44RD.js} +63 -45
  126. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-HBWSWQOK.js} +7 -8
  127. package/dist/{evidence-ERGESKGN.js → evidence-HWLBRH3Q.js} +44 -40
  128. package/dist/{evolve-VDXTSYCJ.js → evolve-FTZBMNVW.js} +43 -39
  129. package/dist/{extensions-7BGBHN57.js → extensions-VHRBEID7.js} +4 -4
  130. package/dist/{fleet-2RRVDF2V.js → fleet-CKZHJWZJ.js} +86 -73
  131. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EXDXBMV6.js} +10 -9
  132. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-OTHB6KRL.js} +5 -5
  133. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-YTEZUCUT.js} +13 -11
  134. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-SS6YMDCK.js} +44 -41
  135. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-PBY4VYOM.js} +5 -9
  136. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-KMEM5L3S.js} +16 -13
  137. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-QD5M7E7Q.js} +42 -39
  138. package/dist/{fleet-view-ZCON35AG.js → fleet-view-WAMJYNDT.js} +44 -52
  139. package/dist/{init-DN2WWLFE.js → init-5XQRBOFV.js} +63 -58
  140. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  141. package/dist/{interop-OZBKXAYL.js → interop-34TVO25M.js} +13 -11
  142. package/dist/{library-YWZG7IMW.js → library-3QY6KF57.js} +17 -14
  143. package/dist/{memory-I4C4HMLW.js → memory-L4UTIIIW.js} +45 -41
  144. package/dist/{models-CEYXJBO6.js → models-ZVX3QOWE.js} +39 -31
  145. package/dist/{monitor-NZ6GCI3P.js → monitor-CEKVSYTS.js} +50 -46
  146. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-77BAP6BC.js} +1807 -1039
  147. package/dist/{panes-KY6W3V2E.js → panes-7STHOAUJ.js} +4 -4
  148. package/dist/{panes-HMABYVO4.js → panes-SHAUIRXY.js} +10 -8
  149. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  150. package/dist/{reset-DQ6FGCSH.js → reset-EOLM7GVE.js} +7 -8
  151. package/dist/{resources-BB3MVJMD.js → resources-74GKTLSF.js} +17 -13
  152. package/dist/{run-H2GQDUER.js → run-HBAUJNNZ.js} +86 -76
  153. package/dist/{share-GTJN6A5O.js → share-G3APVLVP.js} +17 -14
  154. package/dist/{skills-L55TEW6R.js → skills-35HHUKCR.js} +19 -16
  155. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-QN4HSHDC.js} +55 -57
  156. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-J357J34F.js} +15 -12
  157. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-JZZCQA32.js} +31 -29
  158. package/dist/{steer-RZGSCY4R.js → steer-XAVHJM22.js} +3 -3
  159. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  160. package/dist/{targets-NCPZ644J.js → targets-DSM6CY3M.js} +59 -53
  161. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-JOPFUVEM.js} +14 -9
  162. package/dist/{tools-DAF3DI3C.js → tools-MKNWVPBH.js} +10 -8
  163. package/dist/{trace-FYVW2MQA.js → trace-ECQ7TIYZ.js} +48 -3
  164. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  165. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  166. package/dist/{upgrade-3XPP6OQL.js → upgrade-H7TOM7YL.js} +35 -62
  167. package/dist/{usage-3NLHGTU2.js → usage-X52N3IDJ.js} +51 -48
  168. package/dist/{verifiers-SSQONKRT.js → verifiers-EJTVVSMA.js} +10 -9
  169. package/dist/{verify-3U6J7FZI.js → verify-YJL6XET2.js} +9 -8
  170. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPIFL3LL.js} +1 -2
  171. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-4NDZTQ4B.js} +66 -63
  172. package/dist/{with-panes-MKB46MPQ.js → with-panes-OBOBFIIR.js} +62 -26
  173. package/dist/worker/entry.js +57 -52
  174. package/docs/acp.md +1 -1
  175. package/docs/built-in-agents.md +40 -32
  176. package/docs/commands-and-modes.md +9 -3
  177. package/docs/config-knobs-audit.md +3 -0
  178. package/docs/configuration-and-targets.md +105 -164
  179. package/docs/environment-variables.md +2 -1
  180. package/docs/exit-codes-and-output.md +2 -0
  181. package/docs/fleet-demo-runbook.md +6 -3
  182. package/docs/fleet-dispatch.md +8 -6
  183. package/docs/installation-and-lifecycle.md +1 -1
  184. package/docs/release-cut-checklist.md +164 -177
  185. package/docs/trace-store.md +15 -10
  186. package/docs/troubleshooting.md +1 -1
  187. package/evals/README.md +5 -0
  188. package/evals/behavioral-corpus-grader.mjs +103 -0
  189. package/evals/behavioral-machinery-baseline.json +2276 -0
  190. package/evals/behavioral-machinery-driver.ts +250 -0
  191. package/evals/behavioral-machinery-support.ts +253 -0
  192. package/evals/behavioral-machinery.yaml +614 -0
  193. package/evals/behavioral-model-negative-control.yaml +68 -0
  194. package/evals/behavioral-model.yaml +216 -0
  195. package/evals/fixtures/behavioral-facts.txt +3 -0
  196. package/evals/fixtures/behavioral-main.ts +7 -0
  197. package/evals/fixtures/decoy/note.txt +2 -0
  198. package/evals/fixtures/private/credentials.txt +1 -0
  199. package/evals/tracked-metrics-baseline.yaml +229 -0
  200. package/evals/tracked-metrics-grader.mjs +129 -0
  201. package/package.json +5 -15
  202. package/skills/README.md +6 -6
  203. package/skills/coding/ast-grep/SKILL.md +8 -2
  204. package/skills/coding/coding-standards/SKILL.md +8 -2
  205. package/skills/coding/prototype/SKILL.md +8 -2
  206. package/skills/coding/tdd/SKILL.md +8 -2
  207. package/skills/context/context-handoff/SKILL.md +12 -3
  208. package/skills/context/context-handoff/evals.md +3 -3
  209. package/skills/context/context-prime/SKILL.md +8 -2
  210. package/skills/context/context-prime/evals.md +2 -2
  211. package/skills/git/file-ticket/SKILL.md +9 -4
  212. package/skills/git/file-ticket/evals.md +2 -2
  213. package/skills/git/fix-issue/SKILL.md +12 -5
  214. package/skills/git/fix-issue/evals.md +4 -4
  215. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  216. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  217. package/skills/git/ship/SKILL.md +9 -3
  218. package/skills/git/ship/evals.md +4 -4
  219. package/skills/git/worktree-create/SKILL.md +7 -2
  220. package/skills/git/worktree-create/evals.md +6 -6
  221. package/skills/git/worktree-merge/SKILL.md +7 -2
  222. package/skills/git/worktree-merge/evals.md +6 -6
  223. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  224. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  225. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  226. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  227. package/skills/meta/credentials/SKILL.md +9 -2
  228. package/skills/meta/find-skills/SKILL.md +8 -2
  229. package/skills/meta/herdr/SKILL.md +8 -2
  230. package/skills/meta/skill-craft/SKILL.md +21 -4
  231. package/skills/planning/architecture/SKILL.md +9 -3
  232. package/skills/planning/backlog/SKILL.md +8 -2
  233. package/skills/planning/prd/SKILL.md +8 -2
  234. package/skills/planning/product-intent/SKILL.md +8 -2
  235. package/skills/planning/tech-spec/SKILL.md +9 -3
  236. package/skills/registry.yaml +66 -66
  237. package/skills/research/arxiv-literature/SKILL.md +8 -2
  238. package/skills/research/experiment-protocol/SKILL.md +9 -2
  239. package/skills/research/scientific-debugging/SKILL.md +9 -2
  240. package/skills/research/scientific-debugging/evals.md +2 -2
  241. package/skills/research/scientific-modernization/SKILL.md +9 -2
  242. package/skills/skill-marketplace.json +257 -38
  243. package/skills/workflow/cut-it/SKILL.md +10 -2
  244. package/skills/workflow/design-council/SKILL.md +11 -2
  245. package/skills/workflow/grill-me/SKILL.md +8 -2
  246. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  247. package/src/cli/acp.ts +2 -2
  248. package/src/cli/auth.ts +2 -2
  249. package/src/cli/bootstrap-generate.ts +5 -5
  250. package/src/cli/clio.ts +6 -1
  251. package/src/cli/config-inspect.ts +3 -3
  252. package/src/cli/configure-interop.ts +1 -1
  253. package/src/cli/configure.ts +27 -27
  254. package/src/cli/default-target.ts +1 -1
  255. package/src/cli/docs.ts +6 -6
  256. package/src/cli/doctor-naming.ts +323 -0
  257. package/src/cli/doctor-panes.ts +46 -14
  258. package/src/cli/doctor-toolchain.ts +29 -8
  259. package/src/cli/doctor.ts +15 -1
  260. package/src/cli/eval-inventory.ts +8 -8
  261. package/src/cli/evidence-detail.ts +1 -1
  262. package/src/cli/evidence-inventory.ts +1 -1
  263. package/src/cli/fleet-decisions.ts +1 -1
  264. package/src/cli/fleet-inspect.ts +1 -1
  265. package/src/cli/fleet-preflight.ts +1 -1
  266. package/src/cli/fleet-verify.ts +1 -1
  267. package/src/cli/fleet-view.ts +40 -23
  268. package/src/cli/fleet.ts +8 -5
  269. package/src/cli/interop-inspect.ts +2 -2
  270. package/src/cli/models.ts +3 -3
  271. package/src/cli/modes/print.ts +1 -1
  272. package/src/cli/reset.ts +1 -1
  273. package/src/cli/run.ts +11 -15
  274. package/src/cli/share.ts +1 -1
  275. package/src/cli/skills-eval.ts +11 -11
  276. package/src/cli/targets.ts +23 -24
  277. package/src/cli/trace-inspect.ts +1 -1
  278. package/src/cli/trace.ts +41 -0
  279. package/src/cli/uninstall.ts +2 -2
  280. package/src/cli/upgrade.ts +29 -34
  281. package/src/cli/usage.ts +2 -2
  282. package/src/cli/validate-model.ts +1 -1
  283. package/src/cli/verifiers-inspect.ts +1 -1
  284. package/src/cli/wiki-generate.ts +5 -5
  285. package/src/core/bash-exec.ts +1 -1
  286. package/src/core/boot-trace.ts +3 -3
  287. package/src/core/bus-trace.ts +2 -2
  288. package/src/core/compile-cache.ts +1 -1
  289. package/src/core/config.ts +1062 -886
  290. package/src/core/defaults.ts +321 -528
  291. package/src/core/domain-loader.ts +6 -4
  292. package/src/core/event-bus.ts +1 -1
  293. package/src/core/file-references.ts +78 -88
  294. package/src/core/git-commit-attribution.ts +3 -9
  295. package/src/core/guardrails.ts +24 -4
  296. package/src/core/naming-compat.ts +45 -0
  297. package/src/core/naming-events.ts +62 -0
  298. package/src/core/recent-models.ts +1 -7
  299. package/src/core/residency-protection.ts +4 -8
  300. package/src/core/resolve-config-value.ts +1 -1
  301. package/src/core/response-model-id.ts +0 -14
  302. package/src/core/session-routing.ts +84 -74
  303. package/src/core/skill-activation.ts +18 -0
  304. package/src/core/termination.ts +4 -4
  305. package/src/core/timers.ts +2 -12
  306. package/src/domains/agents/catalog.ts +2 -12
  307. package/src/domains/agents/extension.ts +3 -3
  308. package/src/domains/agents/registry.ts +7 -7
  309. package/src/domains/agents/result-contract.ts +1 -1
  310. package/src/domains/agents/spec.ts +0 -11
  311. package/src/domains/config/classify.ts +35 -47
  312. package/src/domains/config/extension.ts +5 -5
  313. package/src/domains/config/keybindings.ts +48 -47
  314. package/src/domains/config/watcher.ts +1 -1
  315. package/src/domains/context/codewiki/indexer.ts +1 -1
  316. package/src/domains/context/extension.ts +3 -3
  317. package/src/domains/context/prompt-context.ts +1 -1
  318. package/src/domains/context/wiki/assemble.ts +2 -2
  319. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  320. package/src/domains/context/working-set/replay/report.ts +1 -1
  321. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  322. package/src/domains/dispatch/active-route-planner.ts +2 -2
  323. package/src/domains/dispatch/agent-candidates.ts +1 -1
  324. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  325. package/src/domains/dispatch/agent-ledger.ts +1 -1
  326. package/src/domains/dispatch/assignment.ts +5 -5
  327. package/src/domains/dispatch/capacity-lease.ts +2 -5
  328. package/src/domains/dispatch/code-step.ts +1 -1
  329. package/src/domains/dispatch/contract.ts +2 -2
  330. package/src/domains/dispatch/extension.ts +65 -61
  331. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  332. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  333. package/src/domains/dispatch/fleet-run.ts +0 -7
  334. package/src/domains/dispatch/gate-decisions.ts +25 -14
  335. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  336. package/src/domains/dispatch/path-scope.ts +0 -61
  337. package/src/domains/dispatch/placement.ts +2 -2
  338. package/src/domains/dispatch/receipt-findings.ts +1 -1
  339. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  340. package/src/domains/dispatch/reservation-store.ts +0 -23
  341. package/src/domains/dispatch/route-decision.ts +1 -1
  342. package/src/domains/dispatch/route-history.ts +1 -1
  343. package/src/domains/dispatch/route-policy.ts +1 -1
  344. package/src/domains/dispatch/route-readiness.ts +0 -28
  345. package/src/domains/dispatch/run-event-journal.ts +6 -5
  346. package/src/domains/dispatch/tool-stats.ts +1 -1
  347. package/src/domains/dispatch/transport.ts +2 -19
  348. package/src/domains/dispatch/types.ts +3 -3
  349. package/src/domains/dispatch/worker-protocol.ts +2 -2
  350. package/src/domains/eval/artifacts/store.ts +5 -4
  351. package/src/domains/eval/compare/thresholds.ts +0 -8
  352. package/src/domains/eval/execution-provenance.ts +1 -1
  353. package/src/domains/eval/metrics/token-stream.ts +0 -7
  354. package/src/domains/eval/report.ts +1 -1
  355. package/src/domains/eval/runner.ts +1 -1
  356. package/src/domains/eval/runners/clio-run.ts +7 -6
  357. package/src/domains/eval/runners/external-command.ts +4 -3
  358. package/src/domains/eval/schema/artifact.ts +1 -1
  359. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  360. package/src/domains/eval/schema/behavioral.ts +7 -6
  361. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  362. package/src/domains/eval/schema/naming.ts +10 -0
  363. package/src/domains/eval/schema/suite.ts +2 -2
  364. package/src/domains/eval/schema/validate.ts +9 -5
  365. package/src/domains/eval/schema/verdict.ts +4 -2
  366. package/src/domains/eval/store.ts +12 -2
  367. package/src/domains/eval/suites/run.ts +12 -6
  368. package/src/domains/eval/types.ts +1 -1
  369. package/src/domains/eval/workspaces/git.ts +1 -1
  370. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  371. package/src/domains/evidence/build.ts +13 -5
  372. package/src/domains/interop/consent.ts +7 -7
  373. package/src/domains/interop/extension.ts +1 -1
  374. package/src/domains/lifecycle/doctor.ts +27 -21
  375. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  376. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  377. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  378. package/src/domains/lifecycle/migrations/index.ts +20 -1
  379. package/src/domains/lifecycle/naming-history.ts +153 -0
  380. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  381. package/src/domains/lifecycle/naming-resources.ts +261 -0
  382. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  383. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  384. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  385. package/src/domains/memory/task-memory-handoff.ts +6 -3
  386. package/src/domains/middleware/index.ts +7 -0
  387. package/src/domains/middleware/marketplace-offer.ts +339 -0
  388. package/src/domains/middleware/runtime.ts +2 -2
  389. package/src/domains/mux/contract.ts +157 -25
  390. package/src/domains/mux/detect.ts +29 -5
  391. package/src/domains/mux/dock-controller.ts +365 -0
  392. package/src/domains/mux/extension.ts +7 -1
  393. package/src/domains/mux/index.ts +20 -0
  394. package/src/domains/mux/operations.ts +28 -0
  395. package/src/domains/mux/protocol.ts +19 -6
  396. package/src/domains/mux/socket-client.ts +167 -19
  397. package/src/domains/mux/types.ts +49 -6
  398. package/src/domains/mux/yazi/event-stream.ts +6 -4
  399. package/src/domains/mux/yazi/profile.ts +1 -1
  400. package/src/domains/mux/yazi/session.ts +26 -3
  401. package/src/domains/observability/extension.ts +1 -1
  402. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  403. package/src/domains/observability/projection.ts +1 -1
  404. package/src/domains/observability/trace-store.ts +22 -12
  405. package/src/domains/prompts/compiler.ts +2 -2
  406. package/src/domains/prompts/extension.ts +3 -3
  407. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  408. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  409. package/src/domains/providers/extension.ts +5 -5
  410. package/src/domains/providers/knowledge-base-path.ts +1 -1
  411. package/src/domains/providers/model-runtime-capabilities.ts +14 -2
  412. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  413. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  414. package/src/domains/providers/plugins.ts +1 -1
  415. package/src/domains/providers/resolver.ts +1 -1
  416. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  417. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  418. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  419. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  420. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  421. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  422. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  423. package/src/domains/providers/types/knowledge-base.ts +13 -0
  424. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  425. package/src/domains/providers/types/target-descriptor.ts +3 -3
  426. package/src/domains/resources/extension.ts +1 -1
  427. package/src/domains/resources/library.ts +6 -6
  428. package/src/domains/resources/prompts/loader.ts +1 -1
  429. package/src/domains/resources/skills/content-hash.ts +7 -6
  430. package/src/domains/resources/skills/evals.ts +1 -1
  431. package/src/domains/resources/skills/install.ts +36 -12
  432. package/src/domains/resources/skills/loader.ts +39 -13
  433. package/src/domains/resources/skills/marketplace.ts +21 -2
  434. package/src/domains/resources/skills/promotion.ts +214 -0
  435. package/src/domains/safety/audit.ts +2 -2
  436. package/src/domains/safety/finish-contract.ts +2 -1
  437. package/src/domains/safety/run-effects.ts +1 -1
  438. package/src/domains/scheduling/extension.ts +4 -4
  439. package/src/domains/session/archive-readers.ts +9 -1
  440. package/src/domains/session/compaction/branch-summary.ts +4 -0
  441. package/src/domains/session/compaction/compact.ts +1 -1
  442. package/src/domains/session/compaction/tokens.ts +4 -0
  443. package/src/domains/session/context-accounting.ts +1 -1
  444. package/src/domains/session/decision-board.ts +1 -1
  445. package/src/domains/session/extension.ts +1 -1
  446. package/src/domains/session/handoff.ts +2 -2
  447. package/src/domains/session/prompt-manifest.ts +0 -5
  448. package/src/domains/session/protected-artifact-journal.ts +12 -6
  449. package/src/domains/session/retry.ts +1 -1
  450. package/src/domains/share/archive.ts +85 -36
  451. package/src/domains/toolchain/install.ts +1 -1
  452. package/src/engine/acp/adapter.ts +3 -3
  453. package/src/engine/acp/event-mapper.ts +3 -3
  454. package/src/engine/acp/server.ts +27 -26
  455. package/src/engine/acp/tool-mediator.ts +2 -2
  456. package/src/engine/acp/types.ts +1 -1
  457. package/src/engine/alcf-oauth.ts +5 -5
  458. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  459. package/src/engine/api-registry.ts +1 -1
  460. package/src/engine/apis/llamacpp-residency.ts +1 -19
  461. package/src/engine/apis/lmstudio.ts +1 -6
  462. package/src/engine/apis/ollama-native.ts +3 -3
  463. package/src/engine/apis/openai-completions.ts +2 -2
  464. package/src/engine/apis/residency.ts +3 -9
  465. package/src/engine/claude/sdk-module.ts +1 -12
  466. package/src/engine/claude/sdk-runtime.ts +6 -6
  467. package/src/engine/claude/subprocess-runtime.ts +1 -1
  468. package/src/engine/claude/tool-safety.ts +4 -4
  469. package/src/engine/loop-guard.ts +0 -5
  470. package/src/engine/session.ts +14 -7
  471. package/src/engine/tui-primitives.ts +1 -1
  472. package/src/engine/worker-events.ts +6 -6
  473. package/src/engine/worker-runtime.ts +14 -13
  474. package/src/entry/orchestrator.ts +107 -88
  475. package/src/interactive/application-controller.ts +21 -21
  476. package/src/interactive/bus-notices.ts +2 -2
  477. package/src/interactive/chat-loop.ts +8 -8
  478. package/src/interactive/chat-panel.ts +1 -1
  479. package/src/interactive/clio-editor.ts +105 -1
  480. package/src/interactive/context-activity.ts +8 -6
  481. package/src/interactive/context-meter.ts +3 -6
  482. package/src/interactive/context-overlay.ts +1 -1
  483. package/src/interactive/cost-overlay.ts +1 -1
  484. package/src/interactive/council-grid.ts +2 -2
  485. package/src/interactive/dispatch-board.ts +30 -33
  486. package/src/interactive/editor-bash.ts +21 -0
  487. package/src/interactive/editor-steer.ts +9 -4
  488. package/src/interactive/editor-submit.ts +24 -18
  489. package/src/interactive/external-editor.ts +1 -1
  490. package/src/interactive/file-reference-completion.ts +360 -0
  491. package/src/interactive/footer/dashboard.ts +15 -17
  492. package/src/interactive/footer/notifications.ts +14 -8
  493. package/src/interactive/footer/widgets.ts +2 -44
  494. package/src/interactive/interactive-application.ts +79 -59
  495. package/src/interactive/interactive-event-projection.ts +1 -1
  496. package/src/interactive/interactive-input-runtime.ts +2 -2
  497. package/src/interactive/interactive-presentation.ts +21 -16
  498. package/src/interactive/interactive-shell.ts +2 -2
  499. package/src/interactive/interactive-slash-runtime.ts +63 -17
  500. package/src/interactive/interactive-subscriptions.ts +1 -1
  501. package/src/interactive/interactive-tickers.ts +1 -1
  502. package/src/interactive/keybinding-manager.ts +4 -4
  503. package/src/interactive/layout.ts +1 -1
  504. package/src/interactive/memory-overlay.ts +2 -2
  505. package/src/interactive/modal-marker.ts +2 -21
  506. package/src/interactive/mutation-preview.ts +1 -1
  507. package/src/interactive/overlay-frame.ts +4 -12
  508. package/src/interactive/overlay-general-openers.ts +6 -2
  509. package/src/interactive/overlay-key-routing.ts +7 -7
  510. package/src/interactive/overlay-lifecycle.ts +1 -1
  511. package/src/interactive/overlay-model-selectors.ts +3 -3
  512. package/src/interactive/overlays/agents.ts +2 -2
  513. package/src/interactive/overlays/ask-user.ts +25 -11
  514. package/src/interactive/overlays/context-reset.ts +28 -4
  515. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  516. package/src/interactive/overlays/decisions.ts +4 -2
  517. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  518. package/src/interactive/overlays/handoff-review.ts +2 -2
  519. package/src/interactive/overlays/interop.ts +1 -1
  520. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  521. package/src/interactive/overlays/message-picker.ts +1 -1
  522. package/src/interactive/overlays/model-selector.ts +39 -31
  523. package/src/interactive/overlays/prompts.ts +10 -4
  524. package/src/interactive/overlays/session-selector.ts +2 -2
  525. package/src/interactive/overlays/settings.ts +339 -293
  526. package/src/interactive/overlays/side-question.ts +2 -2
  527. package/src/interactive/overlays/skills-hub.ts +8 -8
  528. package/src/interactive/overlays/tree-selector.ts +2 -2
  529. package/src/interactive/panes-runtime.ts +36 -10
  530. package/src/interactive/permission-overlay.ts +2 -2
  531. package/src/interactive/renderers/retry-status.ts +12 -4
  532. package/src/interactive/renderers/tool-execution.ts +4 -4
  533. package/src/interactive/session-transcript.ts +3 -3
  534. package/src/interactive/slash-autocomplete.ts +454 -165
  535. package/src/interactive/slash-commands.ts +279 -183
  536. package/src/interactive/slash-spec.ts +160 -17
  537. package/src/interactive/status/controller.ts +2 -2
  538. package/src/interactive/stream-pacing-policy.ts +1 -1
  539. package/src/interactive/tasks-overlay.ts +20 -13
  540. package/src/interactive/terminal-lease.ts +6 -7
  541. package/src/interactive/turn-context.ts +11 -11
  542. package/src/interactive/turn-persistence.ts +2 -2
  543. package/src/interactive/turn-prewarm.ts +2 -2
  544. package/src/interactive/turn-runtime.ts +8 -8
  545. package/src/interactive/turn-state.ts +1 -1
  546. package/src/interactive/view/artifacts.ts +12 -9
  547. package/src/interactive/view/view-overlay.ts +13 -10
  548. package/src/interactive/watch-pane.ts +38 -10
  549. package/src/interactive/welcome-dashboard.ts +15 -15
  550. package/src/interactive/worker-progress.ts +4 -4
  551. package/src/interactive/worker-receipts.ts +1 -1
  552. package/src/interactive/worker-stream.ts +1 -4
  553. package/src/interactive/yazi-bridge.ts +12 -5
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/builtin-tool-catalog.ts +1 -1
  557. package/src/tools/compete-worktrees.ts +27 -17
  558. package/src/tools/context/index.ts +15 -1
  559. package/src/tools/dispatch-admission.ts +4 -2
  560. package/src/tools/dispatch-arguments.ts +1 -1
  561. package/src/tools/dispatch-plan.ts +0 -11
  562. package/src/tools/dispatch-run-events.ts +12 -10
  563. package/src/tools/dispatch-runner.ts +11 -6
  564. package/src/tools/dispatch.ts +1 -1
  565. package/src/tools/find.ts +1 -6
  566. package/src/tools/monitor.ts +4 -4
  567. package/src/tools/observers.ts +0 -33
  568. package/src/tools/task-worktree.ts +28 -7
  569. package/src/tools/verify/authoring.ts +3 -6
  570. package/src/tools/verify/frontend.ts +1 -1
  571. package/src/tools/web-fetch.ts +1 -1
  572. package/src/worker/entry.ts +4 -3
  573. package/src/worker/protocol.ts +16 -14
  574. package/src/worker/spec-contract.ts +2 -2
  575. package/src/worker/stdin-demux.ts +2 -2
  576. package/dist/chunk-GXNLGKAB.js +0 -571
  577. package/dist/chunk-VFA6GDY5.js +0 -1625
  578. package/dist/doctor-QOA5FNY5.js +0 -313
  579. package/src/engine/apis/degraded-inference.ts +0 -95
  580. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  581. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -0,0 +1,772 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ MUX_METHOD_MIN_PROTOCOL,
4
+ detectMux,
5
+ resolveSocketCandidates
6
+ } from "./chunk-K6BF4U2H.js";
7
+ import "./chunk-HRQMFLJP.js";
8
+ import {
9
+ formatDoctorReport,
10
+ isUninitializedHome,
11
+ runDoctor,
12
+ runDoctorFleetChecks,
13
+ runDoctorInteropChecks,
14
+ runDoctorModelChecks,
15
+ runDoctorRuntimeChecks
16
+ } from "./chunk-OJTRZGR3.js";
17
+ import {
18
+ inspectInstalledNamingResources,
19
+ inspectModelOverlayNaming,
20
+ inspectSkillMetadataNaming,
21
+ inspectToolMarkerNaming,
22
+ inspectYaziNaming,
23
+ migrateNamingSettingsFile,
24
+ regenerateYaziNamingProfile,
25
+ transformNamingSettingsDocument
26
+ } from "./chunk-QTFGO774.js";
27
+ import {
28
+ describeYaziProfile,
29
+ inspectCurrentYaziProfile,
30
+ userYaziConfigDir,
31
+ yaziProfileDir
32
+ } from "./chunk-J5LZHVIT.js";
33
+ import "./chunk-D4CJV46V.js";
34
+ import {
35
+ TraceReader
36
+ } from "./chunk-ZAZB4JMW.js";
37
+ import "./chunk-LCGCVYZ4.js";
38
+ import "./chunk-3DPEIQKN.js";
39
+ import "./chunk-HUAS7ITX.js";
40
+ import "./chunk-NDDGJUXD.js";
41
+ import "./chunk-FEFIFZTL.js";
42
+ import "./chunk-SUW5DORT.js";
43
+ import {
44
+ describeResolution,
45
+ toolStatus,
46
+ toolStatuses
47
+ } from "./chunk-QSNYB6ZV.js";
48
+ import {
49
+ findPinnedTool
50
+ } from "./chunk-QDC3K2U3.js";
51
+ import "./chunk-FSP7CMNU.js";
52
+ import "./chunk-4BJ5BYCE.js";
53
+ import "./chunk-K6BSR66V.js";
54
+ import "./chunk-XPLRXC72.js";
55
+ import "./chunk-NEKRRTYW.js";
56
+ import "./chunk-BDPT6GTK.js";
57
+ import "./chunk-7PWAODYW.js";
58
+ import "./chunk-ZW55JB7N.js";
59
+ import {
60
+ printError
61
+ } from "./chunk-VPKWYKEY.js";
62
+ import "./chunk-5TSRNF4G.js";
63
+ import "./chunk-72GZI5EV.js";
64
+ import "./chunk-MQXIVJ35.js";
65
+ import "./chunk-R346GLFC.js";
66
+ import "./chunk-BTK3SSSK.js";
67
+ import "./chunk-IHXBNWMM.js";
68
+ import {
69
+ readSettings,
70
+ withSettingsLock
71
+ } from "./chunk-EIMVLWB3.js";
72
+ import "./chunk-D7E7WCDF.js";
73
+ import "./chunk-HJWWJ6IL.js";
74
+ import "./chunk-JIEGK6UF.js";
75
+ import "./chunk-EBY63B7G.js";
76
+ import "./chunk-6EJMN2Y3.js";
77
+ import "./chunk-IWHMRKLL.js";
78
+ import "./chunk-BWW4HLO4.js";
79
+ import "./chunk-LL4KHSZI.js";
80
+ import "./chunk-NLFAQR7Z.js";
81
+ import "./chunk-WNP7O5WZ.js";
82
+ import "./chunk-336NSSKI.js";
83
+ import "./chunk-IKCO5N3L.js";
84
+ import "./chunk-3I7MS7N2.js";
85
+ import {
86
+ require_dist
87
+ } from "./chunk-APJ265NV.js";
88
+ import {
89
+ resolveClioDirs
90
+ } from "./chunk-BYP5D4HI.js";
91
+ import "./chunk-WEPFGWHJ.js";
92
+ import "./chunk-NUGM5KR6.js";
93
+ import "./chunk-YXLYO42X.js";
94
+ import {
95
+ __toESM,
96
+ init_esm_shims
97
+ } from "./chunk-3R73A4XB.js";
98
+
99
+ // src/cli/doctor.ts
100
+ init_esm_shims();
101
+
102
+ // src/cli/doctor-naming.ts
103
+ init_esm_shims();
104
+ var import_yaml = __toESM(require_dist(), 1);
105
+ import { execFileSync } from "node:child_process";
106
+ import { existsSync as existsSync2, readdirSync as readdirSync2, readFileSync as readFileSync2 } from "node:fs";
107
+ import { join as join2 } from "node:path";
108
+
109
+ // src/domains/lifecycle/naming-history.ts
110
+ init_esm_shims();
111
+ import { existsSync, lstatSync, readdirSync, readFileSync, statSync } from "node:fs";
112
+ import { join } from "node:path";
113
+ var HISTORY_FILE_LIMIT = 1e4;
114
+ var HISTORY_FILE_BYTE_LIMIT = 8 * 1024 * 1024;
115
+ var HISTORY_SUFFIXES = [".json", ".jsonl", ".ndjson"];
116
+ var LEGACY_EVENT_TYPES = [
117
+ "clio_permission_escalated",
118
+ "clio_permission_resolved",
119
+ "clio_plan_update",
120
+ "clio_run_outcome",
121
+ "clio_safety_decision",
122
+ "clio_skill_activation",
123
+ "clio_steer_received",
124
+ "clio_tool_activity",
125
+ "clio_tool_finish",
126
+ "clio_tool_start",
127
+ "clio_usage",
128
+ "clio_verification",
129
+ "clio_write_record_downgraded"
130
+ ];
131
+ var LEGACY_HISTORY_LITERALS = [
132
+ ...LEGACY_EVENT_TYPES,
133
+ "clio.eval.",
134
+ '"clio-run"',
135
+ "clio.runReceipt.integrity",
136
+ "clio.gateDecision.integrity",
137
+ "clio.gateDecision.pending",
138
+ "clio.protectedArtifact.pending",
139
+ "clio.ask_user.interview.v1",
140
+ "clio.share.v1",
141
+ "clio-context-replay-v2",
142
+ "identity.clio-worker"
143
+ ];
144
+ function countLegacyHistoryText(text) {
145
+ let count = 0;
146
+ for (const literal of LEGACY_HISTORY_LITERALS) {
147
+ let offset = 0;
148
+ for (; ; ) {
149
+ const found = text.indexOf(literal, offset);
150
+ if (found === -1) break;
151
+ count += 1;
152
+ offset = found + literal.length;
153
+ }
154
+ }
155
+ count += text.match(/"clio"\s*:/gu)?.length ?? 0;
156
+ count += text.match(/"clioVersion"\s*:/gu)?.length ?? 0;
157
+ count += text.match(/"clioCommit"\s*:/gu)?.length ?? 0;
158
+ return count;
159
+ }
160
+ function inspectTextTree(area, root) {
161
+ const result = {
162
+ area,
163
+ legacyIdentifiers: 0,
164
+ filesInspected: 0,
165
+ filesSkipped: 0,
166
+ error: null
167
+ };
168
+ if (!existsSync(root)) return result;
169
+ const pending = [root];
170
+ try {
171
+ while (pending.length > 0 && result.filesInspected + result.filesSkipped < HISTORY_FILE_LIMIT) {
172
+ const directory = pending.pop();
173
+ if (directory === void 0) break;
174
+ for (const entry of readdirSync(directory, { withFileTypes: true }).sort(
175
+ (left, right) => left.name.localeCompare(right.name)
176
+ )) {
177
+ const path = join(directory, entry.name);
178
+ if (entry.isSymbolicLink()) {
179
+ result.filesSkipped += 1;
180
+ continue;
181
+ }
182
+ if (entry.isDirectory()) {
183
+ pending.push(path);
184
+ continue;
185
+ }
186
+ if (!entry.isFile() || !HISTORY_SUFFIXES.some((suffix) => entry.name.endsWith(suffix))) continue;
187
+ const stats = lstatSync(path);
188
+ if (!stats.isFile() || stats.size > HISTORY_FILE_BYTE_LIMIT) {
189
+ result.filesSkipped += 1;
190
+ continue;
191
+ }
192
+ result.legacyIdentifiers += countLegacyHistoryText(readFileSync(path, "utf8"));
193
+ result.filesInspected += 1;
194
+ }
195
+ }
196
+ if (pending.length > 0) result.filesSkipped += pending.length;
197
+ } catch (error) {
198
+ result.error = error instanceof Error ? error.message : String(error);
199
+ }
200
+ return result;
201
+ }
202
+ function inspectTrace(path) {
203
+ const result = {
204
+ area: "trace",
205
+ legacyIdentifiers: 0,
206
+ filesInspected: 0,
207
+ filesSkipped: 0,
208
+ error: null
209
+ };
210
+ if (!existsSync(path)) return result;
211
+ try {
212
+ if (!statSync(path).isFile()) {
213
+ result.filesSkipped = 1;
214
+ return result;
215
+ }
216
+ const reader = new TraceReader(path);
217
+ try {
218
+ const placeholders = LEGACY_EVENT_TYPES.map(() => "?").join(",");
219
+ const row = reader.db.prepare(`SELECT COUNT(*) AS count FROM events WHERE type IN (${placeholders})`).get(...LEGACY_EVENT_TYPES);
220
+ result.legacyIdentifiers = Number(row.count);
221
+ result.filesInspected = 1;
222
+ } finally {
223
+ reader.close();
224
+ }
225
+ } catch (error) {
226
+ result.error = error instanceof Error ? error.message : String(error);
227
+ }
228
+ return result;
229
+ }
230
+ function inspectNamingHistory(options) {
231
+ return [
232
+ inspectTrace(join(options.stateDir, "trace.sqlite")),
233
+ inspectTextTree("sessions", join(options.stateDir, "sessions")),
234
+ inspectTextTree("evals", join(options.dataDir, "evals")),
235
+ inspectTextTree("evidence", join(options.dataDir, "evidence")),
236
+ inspectTextTree("receipts", join(options.stateDir, "receipts"))
237
+ ];
238
+ }
239
+
240
+ // src/cli/doctor-naming.ts
241
+ var LEGACY_ENVIRONMENT_NAMES = [
242
+ ["CLIO_EVAL_RUNNER_STDOUT_FILE", "CLIO_CODER_EVAL_RUNNER_STDOUT_FILE"],
243
+ ["CLIO_YAZI_PICK_TOKEN", "CLIO_CODER_YAZI_PICK_TOKEN"]
244
+ ];
245
+ function namingEnvironmentFindings(yaziEnabled, environment = process.env) {
246
+ const present = LEGACY_ENVIRONMENT_NAMES.filter(
247
+ ([legacy]) => (yaziEnabled || legacy !== "CLIO_YAZI_PICK_TOKEN") && Boolean(environment[legacy]?.trim())
248
+ );
249
+ if (present.length === 0) {
250
+ return [{ ok: true, name: "naming environment", detail: "no legacy Clio Coder environment variables are set" }];
251
+ }
252
+ return present.map(([legacy, canonical]) => ({
253
+ ok: true,
254
+ level: "warn",
255
+ name: "naming environment",
256
+ detail: `${legacy} is deprecated; use ${canonical} (compatibility ends in v0.7.0)`
257
+ }));
258
+ }
259
+ function namingResourceFindings(options) {
260
+ try {
261
+ const resourceOptions = {
262
+ ...options.cwd ? { cwd: options.cwd } : {},
263
+ ...options.fix !== void 0 ? { fix: options.fix } : {}
264
+ };
265
+ const resources = inspectInstalledNamingResources(resourceOptions);
266
+ const legacyResources = resources.filter((entry) => entry.status !== "absent");
267
+ const rootOptions = options.cwd ? { cwd: options.cwd } : {};
268
+ const skillMetadata = inspectSkillMetadataNaming(rootOptions).filter((entry) => entry.legacyMetadataKey);
269
+ const overlays = inspectModelOverlayNaming(rootOptions).filter(
270
+ (entry) => entry.legacyFile || entry.legacyMetadataKeys > 0
271
+ );
272
+ if (legacyResources.length === 0 && skillMetadata.length === 0 && overlays.length === 0) {
273
+ return [{ ok: true, name: "naming resources", detail: "installed skills and model overlays use canonical names" }];
274
+ }
275
+ const renamed = legacyResources.filter((entry) => entry.status === "renamed").length;
276
+ const renamable = legacyResources.filter((entry) => entry.status === "renamable").length;
277
+ const conflicts = legacyResources.filter(
278
+ (entry) => entry.status === "modified" || entry.status === "canonical-present"
279
+ ).length;
280
+ return [
281
+ {
282
+ ok: true,
283
+ level: renamed > 0 && renamable === 0 && conflicts === 0 && skillMetadata.length === 0 && overlays.length === 0 ? "ok" : "warn",
284
+ name: "naming resources",
285
+ detail: [
286
+ `${renamed} proven skills renamed`,
287
+ `${renamable} proven skills await doctor --fix`,
288
+ `${conflicts} modified/conflicting skills left untouched`,
289
+ `${skillMetadata.length} legacy skill metadata keys`,
290
+ `${overlays.length} legacy model overlay files/metadata (manual migration required)`
291
+ ].join("; ")
292
+ }
293
+ ];
294
+ } catch (error) {
295
+ return [
296
+ {
297
+ ok: false,
298
+ name: "naming resources",
299
+ detail: `resource naming inspection failed: ${error instanceof Error ? error.message : String(error)}`
300
+ }
301
+ ];
302
+ }
303
+ }
304
+ function inspectSettingsNaming(path) {
305
+ if (!existsSync2(path)) return { path, legacy: 0, conflicts: 0, error: null };
306
+ try {
307
+ const transformed = transformNamingSettingsDocument((0, import_yaml.parse)(readFileSync2(path, "utf8")));
308
+ return {
309
+ path,
310
+ legacy: transformed.replacements.length,
311
+ conflicts: transformed.conflicts.length,
312
+ error: null
313
+ };
314
+ } catch (error) {
315
+ return { path, legacy: 0, conflicts: 0, error: error instanceof Error ? error.message : String(error) };
316
+ }
317
+ }
318
+ function settingsFinding(label, inspection, fixed) {
319
+ if (inspection.error !== null) {
320
+ return {
321
+ ok: false,
322
+ name: `naming ${label}`,
323
+ detail: `${inspection.path} could not be inspected: ${inspection.error}`
324
+ };
325
+ }
326
+ const count = inspection.legacy + inspection.conflicts;
327
+ if (count === 0) {
328
+ return { ok: true, name: `naming ${label}`, detail: `${inspection.path} has canonical settings identifiers` };
329
+ }
330
+ return {
331
+ ok: fixed,
332
+ level: fixed ? "ok" : "warn",
333
+ name: `naming ${label}`,
334
+ detail: fixed ? `${inspection.path}: migrated ${inspection.legacy} aliases and resolved ${inspection.conflicts} canonical collisions; backup written beside the file` : `${inspection.path}: ${inspection.legacy} legacy aliases and ${inspection.conflicts} canonical collisions (run \`clio-coder doctor --fix\`)`
335
+ };
336
+ }
337
+ function yaziNamingFinding(fix, enabled) {
338
+ if (!enabled) {
339
+ return {
340
+ ok: true,
341
+ name: "naming yazi profile",
342
+ detail: "disabled by settings"
343
+ };
344
+ }
345
+ const inspection = inspectYaziNaming();
346
+ const legacy = inspection.legacyEvents + inspection.legacyEnvironmentNames;
347
+ if (legacy === 0) {
348
+ return {
349
+ ok: true,
350
+ name: "naming yazi profile",
351
+ detail: inspection.present ? `${inspection.profileDir} uses canonical event and environment identifiers` : `${inspection.profileDir} is absent; the next managed open will generate canonical identifiers`
352
+ };
353
+ }
354
+ if (!fix) {
355
+ return {
356
+ ok: true,
357
+ level: "warn",
358
+ name: "naming yazi profile",
359
+ detail: `${inspection.profileDir}: ${inspection.legacyEvents} legacy events and ${inspection.legacyEnvironmentNames} legacy environment names (run \`clio-coder doctor --fix\`)`
360
+ };
361
+ }
362
+ const report = regenerateYaziNamingProfile();
363
+ return {
364
+ ok: report.status !== "regeneration-failed",
365
+ ...report.status === "regeneration-failed" ? {} : { level: "ok" },
366
+ name: "naming yazi profile",
367
+ detail: report.detail
368
+ };
369
+ }
370
+ function toolMarkerNamingFinding(fix) {
371
+ try {
372
+ const reports = inspectToolMarkerNaming({ fix });
373
+ if (reports.length === 0) {
374
+ return { ok: true, name: "naming tool markers", detail: "known tool versions use canonical install markers" };
375
+ }
376
+ const fixed = reports.filter((entry) => entry.status === "renamed" || entry.status === "duplicate-removed").length;
377
+ const fixable = reports.filter(
378
+ (entry) => entry.status === "renamable" || entry.status === "agreeing-duplicate"
379
+ ).length;
380
+ const manual = reports.length - fixed - fixable;
381
+ return {
382
+ ok: true,
383
+ level: fixed > 0 && fixable === 0 && manual === 0 ? "ok" : "warn",
384
+ name: "naming tool markers",
385
+ detail: `${fixed} validated markers fixed; ${fixable} await doctor --fix; ${manual} invalid/conflicting markers left untouched`
386
+ };
387
+ } catch (error) {
388
+ return {
389
+ ok: false,
390
+ name: "naming tool markers",
391
+ detail: `tool marker inspection failed: ${error instanceof Error ? error.message : String(error)}`
392
+ };
393
+ }
394
+ }
395
+ function immutableHistoryNamingFinding() {
396
+ const dirs = resolveClioDirs();
397
+ const counts = inspectNamingHistory({ stateDir: dirs.state, dataDir: dirs.data });
398
+ const errors = counts.filter((entry) => entry.error !== null);
399
+ if (errors.length > 0) {
400
+ return {
401
+ ok: false,
402
+ name: "naming immutable history",
403
+ detail: errors.map((entry) => `${entry.area}: ${entry.error}`).join("; ")
404
+ };
405
+ }
406
+ const legacy = counts.reduce((sum, entry) => sum + entry.legacyIdentifiers, 0);
407
+ return {
408
+ ok: true,
409
+ ...legacy > 0 ? { level: "warn" } : {},
410
+ name: "naming immutable history",
411
+ detail: `${counts.map((entry) => `${entry.area}=${entry.legacyIdentifiers}`).join("; ")} legacy identifiers; read-only retention, no rewrite`
412
+ };
413
+ }
414
+ function legacyGitRefsFinding(cwd) {
415
+ let refs;
416
+ try {
417
+ refs = execFileSync(
418
+ "git",
419
+ ["-C", cwd, "for-each-ref", "--format=%(refname:short)", "refs/heads/clio/task", "refs/heads/clio/compete"],
420
+ { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 5e3 }
421
+ ).split("\n").map((entry) => entry.trim()).filter((entry) => /^clio\/(?:task|compete)\//u.test(entry)).sort();
422
+ } catch {
423
+ refs = [];
424
+ }
425
+ if (refs.length === 0) {
426
+ return { ok: true, name: "naming git refs", detail: "no legacy Clio Coder task or compete refs found" };
427
+ }
428
+ const shown = refs.slice(0, 20);
429
+ return {
430
+ ok: true,
431
+ level: "warn",
432
+ name: "naming git refs",
433
+ detail: `${refs.length} legacy refs retained (never auto-renamed): ${shown.join(", ")}${refs.length > shown.length ? ", \u2026" : ""}`
434
+ };
435
+ }
436
+ function legacyWorktreeMarkerFinding(cwd) {
437
+ const root = join2(cwd, ".clio-coder", "worktrees");
438
+ let legacy = 0;
439
+ try {
440
+ for (const entry of readdirSync2(root, { withFileTypes: true })) {
441
+ const candidates = entry.isFile() ? entry.name.endsWith(".task-owner.json") ? [join2(root, entry.name)] : [] : entry.isDirectory() ? [join2(root, entry.name, ".clio-coder-compete-owner.json")] : [];
442
+ for (const path of candidates) {
443
+ if (!existsSync2(path)) continue;
444
+ const parsed = JSON.parse(readFileSync2(path, "utf8"));
445
+ if (parsed.kind === "clio-task-worktree" || parsed.kind === "clio-compete-group") legacy += 1;
446
+ }
447
+ }
448
+ } catch {
449
+ }
450
+ return {
451
+ ok: true,
452
+ ...legacy > 0 ? { level: "warn" } : {},
453
+ name: "naming worktree markers",
454
+ detail: legacy === 0 ? "active worktree markers use canonical identifiers" : `${legacy} active legacy worktree markers retained for cleanup compatibility; no automatic rewrite`
455
+ };
456
+ }
457
+ function namingFootprintFindings(options = {}) {
458
+ const cwd = options.cwd ?? process.cwd();
459
+ const userSettingsPath = join2(resolveClioDirs().config, "settings.yaml");
460
+ const candidates = [
461
+ { label: "settings user", path: userSettingsPath, lock: true },
462
+ { label: "settings project", path: join2(cwd, ".clio-coder", "settings.yaml"), lock: false },
463
+ { label: "settings local", path: join2(cwd, ".clio-coder", "settings.local.yaml"), lock: false }
464
+ ];
465
+ const findings = [];
466
+ for (const candidate of candidates) {
467
+ const before = inspectSettingsNaming(candidate.path);
468
+ let fixed = false;
469
+ if (options.fix && before.error === null && before.legacy + before.conflicts > 0) {
470
+ try {
471
+ if (candidate.lock) withSettingsLock(() => migrateNamingSettingsFile(candidate.path));
472
+ else migrateNamingSettingsFile(candidate.path);
473
+ fixed = true;
474
+ } catch (error) {
475
+ findings.push({
476
+ ok: false,
477
+ name: `naming ${candidate.label}`,
478
+ detail: `--fix could not migrate ${candidate.path}: ${error instanceof Error ? error.message : String(error)}`
479
+ });
480
+ continue;
481
+ }
482
+ }
483
+ findings.push(settingsFinding(candidate.label, before, fixed));
484
+ }
485
+ findings.push(...namingEnvironmentFindings(options.yaziEnabled ?? true));
486
+ findings.push(...namingResourceFindings({ ...options, cwd }));
487
+ findings.push(yaziNamingFinding(Boolean(options.fix), options.yaziEnabled ?? true));
488
+ findings.push(toolMarkerNamingFinding(Boolean(options.fix)));
489
+ findings.push(immutableHistoryNamingFinding());
490
+ findings.push(legacyGitRefsFinding(cwd));
491
+ findings.push(legacyWorktreeMarkerFinding(cwd));
492
+ return findings;
493
+ }
494
+
495
+ // src/cli/doctor-panes.ts
496
+ init_esm_shims();
497
+ import { accessSync, constants } from "node:fs";
498
+ import { join as join3 } from "node:path";
499
+ var PANE_HOST_TOOL_ID = "herdr";
500
+ var REQUIRED_PROTOCOL = Math.max(...Object.values(MUX_METHOD_MIN_PROTOCOL));
501
+ function journalWritabilityFinding(root = join3(resolveClioDirs().state, "runs")) {
502
+ try {
503
+ accessSync(root, constants.W_OK);
504
+ return { ok: true, name: "panes journal dir", detail: `${root} is writable` };
505
+ } catch (error) {
506
+ return {
507
+ ok: true,
508
+ level: "warn",
509
+ name: "panes journal dir",
510
+ detail: `${root} is absent or not writable (${error instanceof Error ? error.message : String(error)}); \`clio-coder fleet view\` will have no transcript to follow`
511
+ };
512
+ }
513
+ }
514
+ async function panesFindings(env = process.env) {
515
+ let enabled = "off";
516
+ let layoutRow = {
517
+ ok: true,
518
+ name: "panes layout",
519
+ detail: "off"
520
+ };
521
+ try {
522
+ const panes = readSettings().interface.panes;
523
+ enabled = panes.enabled;
524
+ if (panes.layout !== "off") {
525
+ layoutRow = {
526
+ ok: true,
527
+ name: "panes layout",
528
+ detail: `${panes.layout} at boot (workers dock ${(panes.workers.ratio * 100).toFixed(0)}%, files dock ${(panes.files.ratio * 100).toFixed(0)}%)`
529
+ };
530
+ }
531
+ } catch {
532
+ }
533
+ if (enabled === "off") {
534
+ return [
535
+ {
536
+ ok: true,
537
+ name: "panes mode",
538
+ detail: "off by choice"
539
+ },
540
+ layoutRow
541
+ ];
542
+ }
543
+ const { detection, client } = await detectMux({ enabled, env });
544
+ const snapshot = client ? await client.snapshot().catch(() => null) : null;
545
+ await client?.close().catch(() => void 0);
546
+ const candidates = detection.candidates.length > 0 ? detection.candidates : resolveSocketCandidates(env);
547
+ const findings = [
548
+ {
549
+ ok: true,
550
+ level: detection.mode === "none" ? "warn" : "ok",
551
+ name: "panes mode",
552
+ detail: `${detection.mode} (panes.enabled=${enabled}); ${detection.reason}`
553
+ },
554
+ {
555
+ ok: true,
556
+ level: detection.socketPath === null ? "warn" : "ok",
557
+ name: "panes socket",
558
+ detail: detection.socketPath === null ? `no socket answered; tried ${candidates.length > 0 ? candidates.join(", ") : "no candidates"}` : `${detection.socketPath} answered a ping`
559
+ }
560
+ ];
561
+ const server = detection.server;
562
+ findings.push({
563
+ ok: true,
564
+ level: server === null || server.protocol < REQUIRED_PROTOCOL ? "warn" : "ok",
565
+ name: "panes protocol",
566
+ detail: server === null ? `unknown; Clio's optional methods need protocol ${REQUIRED_PROTOCOL} or newer` : `server ${server.version}, protocol ${server.protocol}; Clio's optional methods need ${REQUIRED_PROTOCOL} (${server.protocol >= REQUIRED_PROTOCOL ? "satisfied" : "toasts and agent focus fall back"})`
567
+ });
568
+ const entry = findPinnedTool(PANE_HOST_TOOL_ID);
569
+ findings.push(
570
+ entry === null ? {
571
+ ok: true,
572
+ level: "warn",
573
+ name: "panes binary",
574
+ detail: `${PANE_HOST_TOOL_ID} is not in the pinned tool registry`
575
+ } : {
576
+ ok: true,
577
+ level: toolStatus(entry).resolution.source === "none" ? "warn" : "ok",
578
+ name: "panes binary",
579
+ detail: describeResolution(toolStatus(entry))
580
+ }
581
+ );
582
+ findings.push(layoutRow);
583
+ const legacyOwnedPanes = snapshot?.panes.filter(
584
+ (pane) => pane.tokens.clio_owner === "clio:mux" && pane.tokens.clio_coder_owner !== "clio-coder:mux"
585
+ ).length ?? 0;
586
+ const staleWatchTitles = snapshot?.panes.filter(
587
+ (pane) => (pane.title === "clio watch" || pane.label === "clio watch") && (pane.tokens.clio_coder_owner === "clio-coder:mux" || pane.tokens.clio_owner === "clio:mux")
588
+ ).length ?? 0;
589
+ findings.push({
590
+ ok: true,
591
+ level: legacyOwnedPanes > 0 || staleWatchTitles > 0 ? "warn" : "ok",
592
+ name: "naming panes",
593
+ detail: legacyOwnedPanes > 0 || staleWatchTitles > 0 ? `${legacyOwnedPanes} panes carry only the legacy clio_owner=clio:mux token; ${staleWatchTitles} owned panes retain the stale 'clio watch' title; quit/cleanup recognizes both token schemes` : "no legacy Clio Coder pane ownership tokens or watch titles found"
594
+ });
595
+ findings.push(journalWritabilityFinding());
596
+ return findings;
597
+ }
598
+
599
+ // src/cli/doctor-state-size.ts
600
+ init_esm_shims();
601
+ import { lstatSync as lstatSync2, readdirSync as readdirSync3 } from "node:fs";
602
+ import { join as join4 } from "node:path";
603
+ function stateStorageFinding(stateDir = resolveClioDirs().state) {
604
+ let names;
605
+ try {
606
+ names = readdirSync3(stateDir);
607
+ } catch (error) {
608
+ return {
609
+ ok: false,
610
+ name: "state storage",
611
+ detail: `${stateDir} could not be measured: ${error instanceof Error ? error.message : String(error)}`
612
+ };
613
+ }
614
+ let total = 0;
615
+ let largest = null;
616
+ for (const name of names.sort()) {
617
+ const measured = measureEntry(join4(stateDir, name));
618
+ if (measured.error !== null) {
619
+ return { ok: false, name: "state storage", detail: measured.error };
620
+ }
621
+ total += measured.bytes;
622
+ if (largest === null || measured.bytes > largest.bytes) largest = { name, bytes: measured.bytes };
623
+ }
624
+ return {
625
+ ok: true,
626
+ name: "state storage",
627
+ detail: largest === null ? `${formatBytes(total)} (${total.toLocaleString("en-US")} bytes); largest contributor none` : `${formatBytes(total)} (${total.toLocaleString("en-US")} bytes); largest contributor ${largest.name} at ${formatBytes(largest.bytes)} (${largest.bytes.toLocaleString("en-US")} bytes)`
628
+ };
629
+ }
630
+ function measureEntry(path) {
631
+ let stats;
632
+ try {
633
+ stats = lstatSync2(path);
634
+ } catch (error) {
635
+ return {
636
+ bytes: 0,
637
+ error: `${path} could not be inspected: ${error instanceof Error ? error.message : String(error)}`
638
+ };
639
+ }
640
+ if (!stats.isDirectory() || stats.isSymbolicLink()) return { bytes: stats.size, error: null };
641
+ let names;
642
+ try {
643
+ names = readdirSync3(path);
644
+ } catch (error) {
645
+ return { bytes: 0, error: `${path} could not be listed: ${error instanceof Error ? error.message : String(error)}` };
646
+ }
647
+ let bytes = 0;
648
+ for (const name of names) {
649
+ const child = measureEntry(join4(path, name));
650
+ if (child.error !== null) return child;
651
+ bytes += child.bytes;
652
+ }
653
+ return { bytes, error: null };
654
+ }
655
+ function formatBytes(bytes) {
656
+ if (bytes < 1024) return `${bytes} B`;
657
+ const units = ["KiB", "MiB", "GiB", "TiB"];
658
+ let value = bytes;
659
+ let unit = -1;
660
+ do {
661
+ value /= 1024;
662
+ unit += 1;
663
+ } while (value >= 1024 && unit < units.length - 1);
664
+ return `${value.toFixed(value >= 10 ? 1 : 2)} ${units[unit]}`;
665
+ }
666
+
667
+ // src/cli/doctor-toolchain.ts
668
+ init_esm_shims();
669
+ function yaziProfileFinding(enabled) {
670
+ if (!enabled) {
671
+ return {
672
+ ok: true,
673
+ name: "yazi managed profile",
674
+ detail: "disabled by settings"
675
+ };
676
+ }
677
+ try {
678
+ const profile = inspectCurrentYaziProfile();
679
+ return {
680
+ ok: true,
681
+ name: "yazi managed profile",
682
+ detail: describeYaziProfile(profile),
683
+ level: profile.state === "current" ? "ok" : "warn"
684
+ };
685
+ } catch (error) {
686
+ return {
687
+ ok: true,
688
+ name: "yazi managed profile",
689
+ level: "warn",
690
+ detail: `${yaziProfileDir()} could not be inspected (${error instanceof Error ? error.message : String(error)}); user config ${userYaziConfigDir()} is separate and untouched`
691
+ };
692
+ }
693
+ }
694
+ function toolchainFindings(options = {}) {
695
+ const panesEnabled = options.panesEnabled ?? true;
696
+ const filesEnabled = options.filesEnabled ?? true;
697
+ const tools = toolStatuses().map((status) => ({
698
+ ok: true,
699
+ name: `external tool ${status.id}`,
700
+ // Active integrations share the tools-status resolution sentence. Disabled
701
+ // experimental integrations stay neutral and do not advertise setup work.
702
+ detail: status.id === "herdr" && !panesEnabled || status.id === "yazi" && !filesEnabled ? "experimental integration disabled by settings" : describeResolution(status),
703
+ level: status.id === "herdr" && !panesEnabled || status.id === "yazi" && !filesEnabled ? "ok" : status.resolution.source === "none" ? "warn" : "ok"
704
+ }));
705
+ return [...tools, yaziProfileFinding(filesEnabled)];
706
+ }
707
+
708
+ // src/cli/doctor.ts
709
+ var HELP = `clio-coder doctor [--fix] [--json]
710
+
711
+ Diagnose Clio Coder state without creating files. On a home Clio has never
712
+ written to, doctor says so in one row and exits 0. Use --fix to repair structure:
713
+ missing directories, missing template files, and credential permissions.
714
+ Settings are validated directly against the current schema.
715
+ Pass --json to emit a machine-readable report on stdout.
716
+ `;
717
+ async function runDoctorCommand(args = []) {
718
+ if (args.includes("--help") || args.includes("-h")) {
719
+ process.stdout.write(HELP);
720
+ return 0;
721
+ }
722
+ const fix = args.includes("--fix");
723
+ const json = args.includes("--json");
724
+ const unknown = args.find((arg) => arg !== "--fix" && arg !== "--json");
725
+ if (unknown) {
726
+ printError(`unknown flag: ${unknown}`);
727
+ process.stderr.write(HELP);
728
+ return 2;
729
+ }
730
+ const untouched = !fix && isUninitializedHome();
731
+ const findings = runDoctor({ fix });
732
+ let panesEnabled = false;
733
+ let filesEnabled = false;
734
+ try {
735
+ const panes = readSettings().interface.panes;
736
+ panesEnabled = panes.enabled !== "off";
737
+ filesEnabled = panesEnabled && panes.files.enabled;
738
+ } catch {
739
+ }
740
+ const storageChecks = untouched ? [] : [stateStorageFinding()];
741
+ const runtimeChecks = await runDoctorRuntimeChecks();
742
+ const modelChecks = await runDoctorModelChecks();
743
+ const interopChecks = untouched ? [] : await runDoctorInteropChecks();
744
+ const fleetChecks = untouched ? [] : await runDoctorFleetChecks();
745
+ const toolChecks = untouched ? [] : toolchainFindings({ panesEnabled, filesEnabled });
746
+ const paneChecks = untouched ? [] : await panesFindings();
747
+ const namingChecks = namingFootprintFindings({ fix, yaziEnabled: filesEnabled });
748
+ const all = [
749
+ ...findings,
750
+ ...storageChecks,
751
+ ...runtimeChecks,
752
+ ...modelChecks,
753
+ ...interopChecks,
754
+ ...fleetChecks,
755
+ ...toolChecks,
756
+ ...paneChecks,
757
+ ...namingChecks
758
+ ];
759
+ const ok = all.every((f) => f.ok);
760
+ if (json) {
761
+ process.stdout.write(`${JSON.stringify({ ok, fix, findings: all }, null, 2)}
762
+ `);
763
+ } else {
764
+ process.stdout.write(`${formatDoctorReport(all)}
765
+ `);
766
+ }
767
+ return ok ? 0 : 1;
768
+ }
769
+ export {
770
+ runDoctorCommand
771
+ };
772
+ //# sourceMappingURL=doctor-ZGPEGHIP.js.map