@cleocode/cleo 2026.10.3 → 2026.10.5-rc.ci.672

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 (352) hide show
  1. package/README.md +7 -0
  2. package/bin/cleo.js +11 -1
  3. package/dist/cli/adapter-OUQRSFZL.js +159 -0
  4. package/dist/cli/add-4SRRJL4U.js +443 -0
  5. package/dist/cli/add-batch-TSWICA5J.js +164 -0
  6. package/dist/cli/admin-L3F6CDYH.js +1428 -0
  7. package/dist/cli/admin-YMU55YCU.js +341 -0
  8. package/dist/cli/adr-XESRMFMP.js +172 -0
  9. package/dist/cli/agent-TAFPIYUU.js +2404 -0
  10. package/dist/cli/agent-outputs-HVJJIPS4.js +84 -0
  11. package/dist/cli/analyze-YQ22QVGW.js +49 -0
  12. package/dist/cli/archive-W5XX6AH7.js +65 -0
  13. package/dist/cli/archive-stats-HP2KPAJU.js +101 -0
  14. package/dist/cli/attention-7JBDCRZX.js +124 -0
  15. package/dist/cli/attention-ZXZANHKC.js +168 -0
  16. package/dist/cli/audit-ICA2SEFN.js +122 -0
  17. package/dist/cli/auth-DXIG5OG7.js +491 -0
  18. package/dist/cli/backfill-LBSYBWLR.js +156 -0
  19. package/dist/cli/backup-NUGBZ7NA.js +588 -0
  20. package/dist/cli/backup-inspect-PDRXI45A.js +26 -0
  21. package/dist/cli/backup-recover-TVKAPERB.js +29 -0
  22. package/dist/cli/blockers-ZOPCGHDW.js +55 -0
  23. package/dist/cli/brain-EJOBKL4A.js +397 -0
  24. package/dist/cli/briefing-RDQJ6WHS.js +213 -0
  25. package/dist/cli/caamp-Z3XPKEHB.js +181 -0
  26. package/dist/cli/cancel-S7EHLCJN.js +85 -0
  27. package/dist/cli/canon-NPF5RODM.js +142 -0
  28. package/dist/cli/canon-docs-2GTOLF7Y.js +26 -0
  29. package/dist/cli/cant-CHNN6O57.js +239 -0
  30. package/dist/cli/changeset-RYPHPN2B.js +246 -0
  31. package/dist/cli/check-C67YAU7W.js +759 -0
  32. package/dist/cli/check-DHMURGHC.js +924 -0
  33. package/dist/cli/checkpoint-UWDFOGYQ.js +128 -0
  34. package/dist/cli/chunk-22YPFZYB.js +91 -0
  35. package/dist/cli/chunk-2MGFDMDF.js +272 -0
  36. package/dist/cli/chunk-47JYZAMS.js +30 -0
  37. package/dist/cli/chunk-4JYHPP4C.js +76 -0
  38. package/dist/cli/chunk-4PEODTHY.js +278 -0
  39. package/dist/cli/chunk-4RGSNUUP.js +950 -0
  40. package/dist/cli/chunk-4VASFLUW.js +35 -0
  41. package/dist/cli/chunk-5PNI276X.js +124 -0
  42. package/dist/cli/chunk-6JSJNYH2.js +114 -0
  43. package/dist/cli/chunk-6N6WGLXE.js +63 -0
  44. package/dist/cli/chunk-75UH3BLS.js +210 -0
  45. package/dist/cli/chunk-7ACK4EIN.js +92 -0
  46. package/dist/cli/chunk-7NMKLVMI.js +107 -0
  47. package/dist/cli/chunk-7SINJXB6.js +110 -0
  48. package/dist/cli/chunk-7UARFJYS.js +46 -0
  49. package/dist/cli/chunk-7ZYPQV4N.js +90 -0
  50. package/dist/cli/chunk-AQCYT3L4.js +72 -0
  51. package/dist/cli/chunk-BQK6XTOH.js +57 -0
  52. package/dist/cli/chunk-C3B7C43W.js +16 -0
  53. package/dist/cli/chunk-CAPAGD5E.js +98 -0
  54. package/dist/cli/chunk-CHGEDCKG.js +77 -0
  55. package/dist/cli/chunk-COXFJ3PT.js +74 -0
  56. package/dist/cli/chunk-D7BAQNV2.js +55 -0
  57. package/dist/cli/chunk-EIUXVHNF.js +258 -0
  58. package/dist/cli/chunk-EUGB6P5V.js +173 -0
  59. package/dist/cli/chunk-EW2CKNNZ.js +304 -0
  60. package/dist/cli/chunk-FSKN4DWC.js +108 -0
  61. package/dist/cli/chunk-FVKLULL7.js +48 -0
  62. package/dist/cli/chunk-GAGUBU4Z.js +280 -0
  63. package/dist/cli/chunk-GKRFH2YG.js +171 -0
  64. package/dist/cli/chunk-GRU74UE4.js +270 -0
  65. package/dist/cli/chunk-GZFVDR44.js +320 -0
  66. package/dist/cli/chunk-HFLLZE6A.js +83 -0
  67. package/dist/cli/chunk-HXRXT3XU.js +78 -0
  68. package/dist/cli/chunk-IIOGUY3B.js +258 -0
  69. package/dist/cli/chunk-ILWWL462.js +60 -0
  70. package/dist/cli/chunk-J5USPJKZ.js +48 -0
  71. package/dist/cli/chunk-KEQS36GD.js +88 -0
  72. package/dist/cli/chunk-L7ONYSV6.js +2497 -0
  73. package/dist/cli/chunk-LVGIFMCV.js +163 -0
  74. package/dist/cli/chunk-NEFMQYLE.js +656 -0
  75. package/dist/cli/chunk-NU6CQQVB.js +4501 -0
  76. package/dist/cli/chunk-OILHT47L.js +252 -0
  77. package/dist/cli/chunk-PKKZPOOP.js +352 -0
  78. package/dist/cli/chunk-PN4WW5VX.js +66 -0
  79. package/dist/cli/chunk-PSJ33WVO.js +56 -0
  80. package/dist/cli/chunk-QA6T2LQ5.js +71 -0
  81. package/dist/cli/chunk-QJJWWCIC.js +288 -0
  82. package/dist/cli/chunk-QKMBWYAS.js +93 -0
  83. package/dist/cli/chunk-QWNKLLLG.js +84 -0
  84. package/dist/cli/chunk-QWUFFDL3.js +85 -0
  85. package/dist/cli/chunk-QY76BRUZ.js +35 -0
  86. package/dist/cli/chunk-R45KVF5Y.js +117 -0
  87. package/dist/cli/chunk-RRKP7HLU.js +66 -0
  88. package/dist/cli/chunk-SXXOC6KZ.js +209 -0
  89. package/dist/cli/chunk-T6GZJYL3.js +108 -0
  90. package/dist/cli/chunk-TLQ37HRE.js +67 -0
  91. package/dist/cli/chunk-TPTNEJZJ.js +52 -0
  92. package/dist/cli/chunk-TYC7G5LF.js +100 -0
  93. package/dist/cli/chunk-UWCZY52R.js +766 -0
  94. package/dist/cli/chunk-VB3LDPL5.js +46 -0
  95. package/dist/cli/chunk-VLEYOOPH.js +31 -0
  96. package/dist/cli/chunk-W3JLYKKY.js +140 -0
  97. package/dist/cli/chunk-WWCYZYSN.js +56 -0
  98. package/dist/cli/chunk-XA5WISNV.js +52 -0
  99. package/dist/cli/chunk-XHRZ7OYZ.js +132 -0
  100. package/dist/cli/chunk-XLPMIGJJ.js +148 -0
  101. package/dist/cli/chunk-YY66LFZF.js +29 -0
  102. package/dist/cli/chunk-ZMGDZMSJ.js +210 -0
  103. package/dist/cli/claim-IGOG2QOC.js +97 -0
  104. package/dist/cli/classify-MG4N7GMQ.js +117 -0
  105. package/dist/cli/cli-A23Q335V.js +51 -0
  106. package/dist/cli/cloud-SILYJVKO.js +731 -0
  107. package/dist/cli/cockpit-RZKLGYPN.js +790 -0
  108. package/dist/cli/code-H2FQCVMW.js +178 -0
  109. package/dist/cli/complete-JLX7NBI4.js +35 -0
  110. package/dist/cli/complexity-OKV7PVZH.js +57 -0
  111. package/dist/cli/compliance-QMGZHJNQ.js +277 -0
  112. package/dist/cli/conduit-4H32UYEA.js +308 -0
  113. package/dist/cli/conduit-EY54WTZA.js +535 -0
  114. package/dist/cli/config-TDYOC7XO.js +519 -0
  115. package/dist/cli/consensus-4XCOFPPT.js +122 -0
  116. package/dist/cli/context-FN4YTGHD.js +142 -0
  117. package/dist/cli/contribution-7RWFBJLC.js +112 -0
  118. package/dist/cli/curator-HKZJCVRL.js +139 -0
  119. package/dist/cli/current-B2NU7V3G.js +43 -0
  120. package/dist/cli/daemon-GBD4TVCD.js +452 -0
  121. package/dist/cli/dash-IGDANIE5.js +71 -0
  122. package/dist/cli/decide-26SXC2V6.js +416 -0
  123. package/dist/cli/decompose-LQ76TEZG.js +78 -0
  124. package/dist/cli/decomposition-WFRWNUSJ.js +122 -0
  125. package/dist/cli/delete-T5DUQHOX.js +69 -0
  126. package/dist/cli/deps-UTPZJBXL.js +462 -0
  127. package/dist/cli/detect-FFZSMVDT.js +46 -0
  128. package/dist/cli/detect-drift-TVCJOFYJ.js +408 -0
  129. package/dist/cli/diagnostics-GN5CVD3N.js +93 -0
  130. package/dist/cli/diagnostics-ZNBKH6GX.js +133 -0
  131. package/dist/cli/docs-CLQKEEUK.js +1710 -0
  132. package/dist/cli/docs-DPPDFTWR.js +3098 -0
  133. package/dist/cli/doctor-GPENOP4N.js +1270 -0
  134. package/dist/cli/doctor-ac-bindings-S3IOEFP4.js +26 -0
  135. package/dist/cli/doctor-acceptance-drift-VNFKPBSQ.js +26 -0
  136. package/dist/cli/doctor-credentials-A5H4JMTF.js +26 -0
  137. package/dist/cli/doctor-db-substrate-FGCISE4Z.js +27 -0
  138. package/dist/cli/doctor-dep-cycles-BKKKHHYG.js +26 -0
  139. package/dist/cli/doctor-exodus-ND2DH2KP.js +26 -0
  140. package/dist/cli/doctor-exodus-residue-4EMRYMEQ.js +26 -0
  141. package/dist/cli/doctor-fk-check-VY3RIQV3.js +26 -0
  142. package/dist/cli/doctor-global-delivery-JN6IGHUL.js +26 -0
  143. package/dist/cli/doctor-heavy-command-hook-XSN44WXU.js +26 -0
  144. package/dist/cli/doctor-legacy-backups-QAG5NHYP.js +26 -0
  145. package/dist/cli/doctor-legacy-reaper-CIRGFE6R.js +26 -0
  146. package/dist/cli/doctor-malformed-ids-WL7HT4TB.js +26 -0
  147. package/dist/cli/doctor-manifest-rows-SMQCKJ2T.js +26 -0
  148. package/dist/cli/doctor-memory-guard-LJDOJG76.js +26 -0
  149. package/dist/cli/doctor-migrations-ETQPFNUP.js +26 -0
  150. package/dist/cli/doctor-nexus-residency-A4JMKBEJ.js +26 -0
  151. package/dist/cli/doctor-project-identity-FFQJ5LNX.js +26 -0
  152. package/dist/cli/doctor-projects-MFUTKRHP.js +30 -0
  153. package/dist/cli/doctor-projects-registry-76X6VTGM.js +26 -0
  154. package/dist/cli/doctor-release-readiness-QJCOPFTK.js +26 -0
  155. package/dist/cli/doctor-repair-AU76FIKY.js +26 -0
  156. package/dist/cli/doctor-row-identity-KW6JYZQE.js +26 -0
  157. package/dist/cli/doctor-skill-fixtures-G3T7JUHS.js +26 -0
  158. package/dist/cli/doctor-split-brain-FUW6L7FS.js +26 -0
  159. package/dist/cli/doctor-superseded-store-DUHGSBLC.js +26 -0
  160. package/dist/cli/doctor-sync-journal-SXMUIKF7.js +26 -0
  161. package/dist/cli/doctor-sync-triggers-6WNJZFRM.js +26 -0
  162. package/dist/cli/doctor-tool-locks-66LSLUBN.js +26 -0
  163. package/dist/cli/doctor-twin-collapse-AYBYBFC4.js +26 -0
  164. package/dist/cli/doctor-worktree-stores-C5XEH5OG.js +26 -0
  165. package/dist/cli/done-R64XRZ32.js +196 -0
  166. package/dist/cli/dynamic-RR4HB7BB.js +29 -0
  167. package/dist/cli/entities-3JIHDIOK.js +361 -0
  168. package/dist/cli/event-45KEWV5H.js +372 -0
  169. package/dist/cli/exists-BEDZS5RI.js +65 -0
  170. package/dist/cli/exodus-DUX62344.js +401 -0
  171. package/dist/cli/export-C5PQIQ5O.js +93 -0
  172. package/dist/cli/export-tasks-CUXDZPJB.js +97 -0
  173. package/dist/cli/federation-ESM35EGG.js +145 -0
  174. package/dist/cli/find-5EUZHHQJ.js +178 -0
  175. package/dist/cli/focus-6AH4KLRO.js +368 -0
  176. package/dist/cli/focus-ANKAIRO5.js +56 -0
  177. package/dist/cli/gateway-2GW2KTK3.js +77 -0
  178. package/dist/cli/gateway-auto-start-EDK7XI6E.js +36 -0
  179. package/dist/cli/gc-CTOQLUSA.js +291 -0
  180. package/dist/cli/go-YJPNHHYT.js +206 -0
  181. package/dist/cli/goal-4GW4G77D.js +213 -0
  182. package/dist/cli/grade-25WSZH4X.js +57 -0
  183. package/dist/cli/graph-JUO3TMF3.js +879 -0
  184. package/dist/cli/history-NACNUQTC.js +138 -0
  185. package/dist/cli/hook-UF7J7R6D.js +57 -0
  186. package/dist/cli/hook-entry.js +244 -19
  187. package/dist/cli/hygiene-3QZ2NI7P.js +55 -0
  188. package/dist/cli/import-7ESGL5SS.js +89 -0
  189. package/dist/cli/import-tasks-FLE2RPBR.js +109 -0
  190. package/dist/cli/index.js +601 -94637
  191. package/dist/cli/init-AN4DZ2XO.js +40 -0
  192. package/dist/cli/inject-HQWA5GWY.js +83 -0
  193. package/dist/cli/install-global-YQV4W5OG.js +95 -0
  194. package/dist/cli/intelligence-OFFNQGHE.js +238 -0
  195. package/dist/cli/intelligence-QIC4SN4X.js +182 -0
  196. package/dist/cli/issue-P5RNMRDG.js +159 -0
  197. package/dist/cli/janitor-ZNCFQ7E3.js +111 -0
  198. package/dist/cli/labels-ORBM3T57.js +88 -0
  199. package/dist/cli/lifecycle-MHR22TVI.js +273 -0
  200. package/dist/cli/list-LB6GCYYU.js +109 -0
  201. package/dist/cli/llm-H7LZWQKX.js +130 -0
  202. package/dist/cli/llm-OTJWPMGI.js +704 -0
  203. package/dist/cli/llm-cost-MLMXEAR4.js +25 -0
  204. package/dist/cli/llm-stream-AAEUNKRP.js +27 -0
  205. package/dist/cli/log-W2A5M2NA.js +76 -0
  206. package/dist/cli/login-SIXFFZSP.js +45 -0
  207. package/dist/cli/logout-G3KVLQQM.js +74 -0
  208. package/dist/cli/manifest-G4T6EBSI.js +354 -0
  209. package/dist/cli/map-VU5M72TK.js +53 -0
  210. package/dist/cli/memory-2E27G2G5.js +1952 -0
  211. package/dist/cli/memory-IAEYKXG6.js +1895 -0
  212. package/dist/cli/migrate-agents-v2-A52QIYNJ.js +33 -0
  213. package/dist/cli/migrate-claude-mem-TPDW3R4Z.js +206 -0
  214. package/dist/cli/next-SVH4LIDY.js +57 -0
  215. package/dist/cli/nexus-FPQV2EAF.js +1059 -0
  216. package/dist/cli/nexus-XSFXN5E6.js +2924 -0
  217. package/dist/cli/ops-K6LHY5J6.js +52 -0
  218. package/dist/cli/orchestrate-CZ2J6W3L.js +1650 -0
  219. package/dist/cli/orchestrate-HURUCQFT.js +950 -0
  220. package/dist/cli/otel-JCNPVJLZ.js +188 -0
  221. package/dist/cli/phase-VDFRASSO.js +221 -0
  222. package/dist/cli/pipeline-TCZPOEDR.js +697 -0
  223. package/dist/cli/pivot-V5MSQZ7L.js +88 -0
  224. package/dist/cli/plan-SQUGCKSM.js +49 -0
  225. package/dist/cli/playbook-L47GLDQD.js +230 -0
  226. package/dist/cli/playbook-NJVO4R6P.js +33 -0
  227. package/dist/cli/project-YZEC7GYF.js +331 -0
  228. package/dist/cli/promote-FINF4HVK.js +53 -0
  229. package/dist/cli/provenance-3TUWVBFR.js +141 -0
  230. package/dist/cli/provenance-YZG33JGM.js +129 -0
  231. package/dist/cli/provider-23JVLLG3.js +213 -0
  232. package/dist/cli/reason-FHN54O7O.js +138 -0
  233. package/dist/cli/reconcile-MOM5T4AX.js +128 -0
  234. package/dist/cli/refresh-memory-3OSTRAVK.js +45 -0
  235. package/dist/cli/relates-6FWUFUS2.js +260 -0
  236. package/dist/cli/release-G2DPSG5M.js +347 -0
  237. package/dist/cli/release-URX6JHZ2.js +525 -0
  238. package/dist/cli/remote-VIULU2T5.js +279 -0
  239. package/dist/cli/renderers-TGSW77J4.js +37 -0
  240. package/dist/cli/reorder-UIPN6TQY.js +87 -0
  241. package/dist/cli/reparent-ALOWWUIU.js +59 -0
  242. package/dist/cli/req-RH2Y3H7A.js +130 -0
  243. package/dist/cli/research-G2Y72HRC.js +366 -0
  244. package/dist/cli/restore-VBR5XNML.js +470 -0
  245. package/dist/cli/revert-32LDNSGP.js +240 -0
  246. package/dist/cli/roadmap-LFU3AG7D.js +62 -0
  247. package/dist/cli/run-HXRILSR7.js +245 -0
  248. package/dist/cli/safestop-Z5UC7NGQ.js +89 -0
  249. package/dist/cli/saga-Y6FZS6AM.js +286 -0
  250. package/dist/cli/schema-OOOKLWUE.js +195 -0
  251. package/dist/cli/self-update-26SOTJMH.js +504 -0
  252. package/dist/cli/selfimprove-4SMOCLUV.js +89 -0
  253. package/dist/cli/selfimprove-EB4RQLP4.js +139 -0
  254. package/dist/cli/sentient-QPETVE53.js +254 -0
  255. package/dist/cli/sentient-RGMWR4XJ.js +1088 -0
  256. package/dist/cli/sequence-H7DSAJPF.js +94 -0
  257. package/dist/cli/service-EK5MGB2D.js +156 -0
  258. package/dist/cli/service-GLOMZWPQ.js +437 -0
  259. package/dist/cli/session-HYUXAQGC.js +708 -0
  260. package/dist/cli/session-N5ISU56W.js +568 -0
  261. package/dist/cli/setup-L3YYV53D.js +323 -0
  262. package/dist/cli/show-364V3KY2.js +123 -0
  263. package/dist/cli/skill-F2KR6HW5.js +84 -0
  264. package/dist/cli/skills-FS3DCP6E.js +929 -0
  265. package/dist/cli/smoke-provider-SKUFMZXU.js +218 -0
  266. package/dist/cli/snapshot-EGXEQ5PR.js +120 -0
  267. package/dist/cli/src-LYLXHXHH.js +80 -0
  268. package/dist/cli/start-6DXOCCKL.js +68 -0
  269. package/dist/cli/stats-UVUQEGYC.js +96 -0
  270. package/dist/cli/status-XLKYLN42.js +157 -0
  271. package/dist/cli/sticky-VSTQ2I2O.js +264 -0
  272. package/dist/cli/sticky-XZXZDCFW.js +339 -0
  273. package/dist/cli/stop-VNOAFWNB.js +43 -0
  274. package/dist/cli/sync-YYPARW3A.js +155 -0
  275. package/dist/cli/tasks-C24KHTFF.js +1118 -0
  276. package/dist/cli/tasks-LBJC7CZV.js +175 -0
  277. package/dist/cli/telemetry-CU7W5WAY.js +120 -0
  278. package/dist/cli/templates-G42JBUY4.js +609 -0
  279. package/dist/cli/testing-HSRITHEY.js +147 -0
  280. package/dist/cli/token-J74E7TSU.js +221 -0
  281. package/dist/cli/tools-BI74W7VE.js +652 -0
  282. package/dist/cli/transcript-RGK7RSGQ.js +440 -0
  283. package/dist/cli/tui-BPUFHYKK.js +51 -0
  284. package/dist/cli/update-2KQWA27S.js +478 -0
  285. package/dist/cli/update-check-entry.js +124 -0
  286. package/dist/cli/update-notice-6SQ6WPQG.js +68 -0
  287. package/dist/cli/upgrade-E2MJAPC7.js +136 -0
  288. package/dist/cli/upgrade-XRSQ4RWH.js +243 -0
  289. package/dist/cli/verify-WASRGDBA.js +191 -0
  290. package/dist/cli/web-NJ3P67EU.js +275 -0
  291. package/dist/cli/workgraph-OHJ2VKJD.js +232 -0
  292. package/dist/cli/worktree-FVQLORFY.js +371 -0
  293. package/dist/cli/worktree-ZJ6JTQNG.js +287 -0
  294. package/package.json +13 -13
  295. package/studio-dist/client/_app/immutable/chunks/{DMj27Pxj.js → AH7dIemv.js} +1 -1
  296. package/studio-dist/client/_app/immutable/chunks/{Dc2owyvE.js → BDgH40i3.js} +1 -1
  297. package/studio-dist/client/_app/immutable/chunks/BXDCSJ7U.js +1 -0
  298. package/studio-dist/client/_app/immutable/chunks/{qq3pe1aT.js → Gg4iYl59.js} +1 -1
  299. package/studio-dist/client/_app/immutable/entry/{app.CHWXLeE9.js → app.DUDNK-37.js} +2 -2
  300. package/studio-dist/client/_app/immutable/entry/start.DNmZ0pA4.js +1 -0
  301. package/studio-dist/client/_app/immutable/nodes/{0.DmKQGvFh.js → 0.DWqP3ail.js} +1 -1
  302. package/studio-dist/client/_app/immutable/nodes/{1.DqJk_REO.js → 1.CZGVUP5B.js} +1 -1
  303. package/studio-dist/client/_app/immutable/nodes/{15.GUy6kdW1.js → 15.DGaflZRS.js} +1 -1
  304. package/studio-dist/client/_app/immutable/nodes/{16.CcnKZ8f9.js → 16.uYlarGXl.js} +1 -1
  305. package/studio-dist/client/_app/immutable/nodes/{17.DAlQF3lQ.js → 17.CZMR0E47.js} +1 -1
  306. package/studio-dist/client/_app/immutable/nodes/{18.vQFr-vFj.js → 18.CBC-AKH_.js} +1 -1
  307. package/studio-dist/client/_app/immutable/nodes/{20.GVOj5j_r.js → 20.BGi43MvQ.js} +1 -1
  308. package/studio-dist/client/_app/immutable/nodes/{24.2-wC6DOh.js → 24.Dv8ftCyR.js} +1 -1
  309. package/studio-dist/client/_app/immutable/nodes/25.DQPVlTDQ.js +39 -0
  310. package/studio-dist/client/_app/immutable/nodes/{26.C3rNqzZF.js → 26.Cl800304.js} +1 -1
  311. package/studio-dist/client/_app/immutable/nodes/{3.b-7pzc3M.js → 3.D_fQKj9f.js} +1 -1
  312. package/studio-dist/client/_app/version.json +1 -1
  313. package/studio-dist/server/chunks/{0-BaCce-O1.js → 0-BpOagOst.js} +3 -3
  314. package/studio-dist/server/chunks/1-D0oRGR-C.js +9 -0
  315. package/studio-dist/server/chunks/{15-DRMOSIC9.js → 15-BcjHz7Tv.js} +3 -3
  316. package/studio-dist/server/chunks/{16-BulXhoZZ.js → 16-CXm8TUk7.js} +3 -3
  317. package/studio-dist/server/chunks/{17-DUEOCM0H.js → 17-mSgUK-cp.js} +3 -3
  318. package/studio-dist/server/chunks/{18-DP7Q8zPs.js → 18-BtfnIw1d.js} +3 -3
  319. package/studio-dist/server/chunks/{20-9ta6MI7q.js → 20-By1e4QDS.js} +3 -3
  320. package/studio-dist/server/chunks/{24-DysdL1ab.js → 24-0i2YLVxG.js} +3 -3
  321. package/studio-dist/server/chunks/{dist-CdoCt9zT.js → 25-DPsrqbrh.js} +797 -10736
  322. package/studio-dist/server/chunks/{26-Df4YXgg0.js → 26-P0XkOibm.js} +3 -3
  323. package/studio-dist/server/chunks/{3-BEhOhYpL.js → 3-WudjUK7e.js} +3 -3
  324. package/studio-dist/server/chunks/{_layout.svelte-CnLcXYG-.js → _layout.svelte-D9m81Rle.js} +4 -4
  325. package/studio-dist/server/chunks/{_page.svelte-DGhXqeRc.js → _page.svelte-2PDLOF83.js} +3 -3
  326. package/studio-dist/server/chunks/{_page.svelte-Dv8tmDEC.js → _page.svelte-BjE3jm2K.js} +3 -3
  327. package/studio-dist/server/chunks/{_page.svelte-C0qgUvzA.js → _page.svelte-Clc0vmiZ.js} +4 -4
  328. package/studio-dist/server/chunks/{_page.svelte-ui7LnWkL.js → _page.svelte-DABdRT3h.js} +3 -3
  329. package/studio-dist/server/chunks/{_page.svelte-HUqTICJR.js → _page.svelte-DG3PjiHj.js} +3 -3
  330. package/studio-dist/server/chunks/{_page.svelte-DzcZljiy.js → _page.svelte-Edy9CaE8.js} +20 -7
  331. package/studio-dist/server/chunks/{_page.svelte-DOl0DGOO.js → _page.svelte-Hrf3-ZR8.js} +3 -3
  332. package/studio-dist/server/chunks/{_page.svelte-Da4q5l93.js → _page.svelte-VB4O4Nl5.js} +3 -3
  333. package/studio-dist/server/chunks/{_page.svelte-CbyEPj2j.js → _page.svelte-d3jEgjsI.js} +3 -3
  334. package/studio-dist/server/chunks/{_server.ts-P4wVVksg.js → _server.ts-BcRFsyo3.js} +4 -5
  335. package/studio-dist/server/chunks/{_server.ts-Cr57EKWf.js → _server.ts-CEWpIFrj.js} +6 -5
  336. package/studio-dist/server/chunks/{_server.ts-CnKVmf_s.js → _server.ts-CLVdVIF9.js} +2 -2
  337. package/studio-dist/server/chunks/{_server.ts-C0evMKCk.js → _server.ts-D_j7aSy5.js} +6 -5
  338. package/studio-dist/server/chunks/{_server.ts-2BazvYRP.js → _server.ts-QEZF8h2q.js} +4 -5
  339. package/studio-dist/server/chunks/{client-CPM4LrO2.js → client-Kp1dP1od.js} +2 -2
  340. package/studio-dist/server/chunks/{error.svelte-ShcZo43D.js → error.svelte-WOCioJVX.js} +3 -3
  341. package/studio-dist/server/chunks/{hooks.server-D2qbf3Zp.js → hooks.server-DH9zkIrJ.js} +3 -1
  342. package/studio-dist/server/chunks/{http-BiQjEmVU.js → http-DT5kxaWk.js} +5 -4
  343. package/studio-dist/server/chunks/{internal-Cgsrya1j.js → internal-z0vqd5_u.js} +3 -3
  344. package/studio-dist/server/chunks/operations-registry-DdzmYzqX.js +10584 -0
  345. package/studio-dist/server/chunks/{stores-BGrpEDMK.js → stores-s2kaL315.js} +2 -2
  346. package/studio-dist/server/index.js +1 -1
  347. package/studio-dist/server/manifest.js +17 -17
  348. package/studio-dist/client/_app/immutable/chunks/Bw6J8NDM.js +0 -1
  349. package/studio-dist/client/_app/immutable/entry/start.C9bwPpvc.js +0 -1
  350. package/studio-dist/client/_app/immutable/nodes/25.D1vYaH8g.js +0 -39
  351. package/studio-dist/server/chunks/1-CVo7Nk6d.js +0 -9
  352. package/studio-dist/server/chunks/25-CYsps38R.js +0 -366
@@ -0,0 +1,74 @@
1
+ (() => {
2
+ const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
3
+ if (globalThis[_installed]) return;
4
+ globalThis[_installed] = true;
5
+ const _origEmitWarning = process.emitWarning;
6
+ process.emitWarning = function(warning, type, code, ctor) {
7
+ if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
8
+ return;
9
+ }
10
+ if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
11
+ return;
12
+ }
13
+ return _origEmitWarning.call(process, warning, type, code, ctor);
14
+ };
15
+ })();
16
+ import {
17
+ defineCommand
18
+ } from "./chunk-PKKZPOOP.js";
19
+ import {
20
+ cliOutput
21
+ } from "./chunk-4RGSNUUP.js";
22
+
23
+ // packages/cleo/src/cli/commands/doctor-heavy-command-hook.ts
24
+ import { getProjectRoot } from "@cleocode/core/paths.js";
25
+ import {
26
+ deliverHeavyCommandHooks,
27
+ heavyHookPresent,
28
+ inspectHeavyCommandHooks,
29
+ isHeavyHookProblem,
30
+ probeHeavyHookCliFor
31
+ } from "@cleocode/core/resources/heavy-command-hook-delivery.js";
32
+ var doctorHeavyCommandHookCommand = defineCommand({
33
+ meta: {
34
+ name: "heavy-command-hook",
35
+ description: "Report, per agent harness in use, whether the heavy-command hook (routes agent-run tests and builds through cleo run) is installed, outdated, missing or blocked. --fix installs it."
36
+ },
37
+ args: {
38
+ fix: {
39
+ type: "boolean",
40
+ description: "Install or refresh the hook in this project (project-level configs only, never user-global)"
41
+ },
42
+ json: { type: "boolean", description: "Output as JSON" },
43
+ human: { type: "boolean", description: "Force human-readable output" },
44
+ quiet: { type: "boolean", description: "Suppress non-essential output" }
45
+ },
46
+ async run({ args }) {
47
+ const projectRoot = getProjectRoot();
48
+ const outcomes = args.fix === true ? (await deliverHeavyCommandHooks(projectRoot)).outcomes : [];
49
+ const { mode, inspections } = await inspectHeavyCommandHooks(projectRoot);
50
+ const cli = mode !== "off" && heavyHookPresent(inspections) ? await probeHeavyHookCliFor(projectRoot) : null;
51
+ const problems = inspections.filter(isHeavyHookProblem);
52
+ const cliProblem = cli !== null && cli.state !== "current";
53
+ cliOutput(
54
+ {
55
+ projectRoot,
56
+ mode,
57
+ inspections,
58
+ cli,
59
+ fixApplied: args.fix === true,
60
+ outcomes,
61
+ healthy: problems.length === 0 && !cliProblem
62
+ },
63
+ { command: "doctor", operation: "doctor.heavy-command-hook.run" }
64
+ );
65
+ if ((problems.length > 0 || cliProblem) && (process.exitCode ?? 0) === 0) {
66
+ process.exitCode = 1;
67
+ }
68
+ }
69
+ });
70
+
71
+ export {
72
+ doctorHeavyCommandHookCommand
73
+ };
74
+ //# sourceMappingURL=chunk-COXFJ3PT.js.map
@@ -0,0 +1,55 @@
1
+ (() => {
2
+ const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
3
+ if (globalThis[_installed]) return;
4
+ globalThis[_installed] = true;
5
+ const _origEmitWarning = process.emitWarning;
6
+ process.emitWarning = function(warning, type, code, ctor) {
7
+ if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
8
+ return;
9
+ }
10
+ if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
11
+ return;
12
+ }
13
+ return _origEmitWarning.call(process, warning, type, code, ctor);
14
+ };
15
+ })();
16
+
17
+ // packages/cleo/src/dispatch/context/session-context.ts
18
+ var _context = null;
19
+ var GLOBAL_PEER_ID = "global";
20
+ function resolveActivePeerId() {
21
+ const envPeerId = process.env["CLEO_AGENT_PEER_ID"] ?? process.env["CLEO_AGENT_ID"] ?? null;
22
+ if (envPeerId && envPeerId.trim().length > 0) {
23
+ return envPeerId.trim();
24
+ }
25
+ return GLOBAL_PEER_ID;
26
+ }
27
+ function bindSession(ctx) {
28
+ if (_context) {
29
+ throw new Error(
30
+ `Session already bound: ${_context.sessionId}. Call unbindSession() before binding a new session.`
31
+ );
32
+ }
33
+ _context = {
34
+ ...ctx,
35
+ agentPid: process.pid,
36
+ boundAt: (/* @__PURE__ */ new Date()).toISOString(),
37
+ activePeerId: ctx.activePeerId ?? resolveActivePeerId()
38
+ };
39
+ return _context;
40
+ }
41
+ function getBoundSession() {
42
+ return _context;
43
+ }
44
+ function unbindSession() {
45
+ const prev = _context;
46
+ _context = null;
47
+ return prev;
48
+ }
49
+
50
+ export {
51
+ bindSession,
52
+ getBoundSession,
53
+ unbindSession
54
+ };
55
+ //# sourceMappingURL=chunk-D7BAQNV2.js.map
@@ -0,0 +1,258 @@
1
+ (() => {
2
+ const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
3
+ if (globalThis[_installed]) return;
4
+ globalThis[_installed] = true;
5
+ const _origEmitWarning = process.emitWarning;
6
+ process.emitWarning = function(warning, type, code, ctor) {
7
+ if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
8
+ return;
9
+ }
10
+ if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
11
+ return;
12
+ }
13
+ return _origEmitWarning.call(process, warning, type, code, ctor);
14
+ };
15
+ })();
16
+ import {
17
+ runLoginFrontDoor
18
+ } from "./chunk-UWCZY52R.js";
19
+ import {
20
+ ReadlineWizardIO
21
+ } from "./chunk-GZFVDR44.js";
22
+ import {
23
+ defineCommand
24
+ } from "./chunk-PKKZPOOP.js";
25
+ import {
26
+ cliError,
27
+ cliOutput,
28
+ isHumanOutput
29
+ } from "./chunk-4RGSNUUP.js";
30
+
31
+ // packages/cleo/src/cli/commands/init.ts
32
+ import { existsSync, readFileSync } from "node:fs";
33
+ import { join } from "node:path";
34
+ import { fileURLToPath } from "node:url";
35
+ import {
36
+ CleoError,
37
+ getWorkflowTemplatesDir as getCoreWorkflowTemplatesDir,
38
+ initErrorCodeName,
39
+ initProject,
40
+ pushWarning,
41
+ scaffoldWorkflows
42
+ } from "@cleocode/core";
43
+ import { getCredentialPool } from "@cleocode/core/llm/credential-pool.js";
44
+ import { getTemplatesByKind } from "@cleocode/core/templates/registry";
45
+ function getGitignoreTemplate() {
46
+ try {
47
+ const thisFile = fileURLToPath(import.meta.url);
48
+ const packageRoot = join(thisFile, "..", "..", "..", "..");
49
+ const localTemplatePath = join(packageRoot, "templates", "cleo-gitignore");
50
+ const monorepoTemplatePath = join(packageRoot, "..", "..", "templates", "cleo-gitignore");
51
+ const templatePath = existsSync(localTemplatePath) ? localTemplatePath : monorepoTemplatePath;
52
+ if (existsSync(templatePath)) {
53
+ return readFileSync(templatePath, "utf-8");
54
+ }
55
+ } catch {
56
+ }
57
+ return "# CLEO Project Data - Selective Git Tracking\nagent-outputs/\n";
58
+ }
59
+ function getWorkflowTemplatesDir() {
60
+ return getCoreWorkflowTemplatesDir();
61
+ }
62
+ var initCommand = defineCommand({
63
+ meta: { name: "init", description: "Initialize CLEO in a project directory" },
64
+ args: {
65
+ projectName: {
66
+ type: "positional",
67
+ description: "Project name (alternative to --name)",
68
+ required: false
69
+ },
70
+ name: {
71
+ type: "string",
72
+ description: "Project name"
73
+ },
74
+ force: {
75
+ type: "boolean",
76
+ description: "Re-initialize THIS directory's project: resets .cleo/config.json and project-info.json, rewrites .cleo/.gitignore and the managed git hooks. Snapshots databases and those files to .cleo/backups/sqlite/ first; never targets an ancestor or a worktree.",
77
+ default: false
78
+ },
79
+ detect: {
80
+ type: "boolean",
81
+ description: "Auto-detect project configuration",
82
+ default: false
83
+ },
84
+ "map-codebase": {
85
+ type: "boolean",
86
+ description: "Run codebase analysis and store findings to brain.db",
87
+ default: false
88
+ },
89
+ "install-seed-agents": {
90
+ type: "boolean",
91
+ description: "Install canonical CleoOS seed agent personas (.cant)",
92
+ default: false
93
+ },
94
+ workflows: {
95
+ type: "boolean",
96
+ /**
97
+ * @deprecated Use `cleo templates install --kind workflow` instead
98
+ * (T9886 / Saga T9855). Removal target: v2026.7.0. T9888.
99
+ */
100
+ description: "[DEPRECATED \u2014 use `cleo templates install --kind workflow`] Scaffold release workflows into .github/workflows/. Will be removed in v2026.7.0.",
101
+ default: false
102
+ },
103
+ "dry-run": {
104
+ type: "boolean",
105
+ description: "With --workflows: print the rendered YAML without writing.",
106
+ default: false
107
+ },
108
+ "force-rebind": {
109
+ type: "boolean",
110
+ description: "Point the NEXUS registry at this checkout even though the project is registered at another path that still exists (T12470).",
111
+ default: false
112
+ },
113
+ here: {
114
+ type: "boolean",
115
+ description: "Initialize the current directory itself, even inside an ancestor CLEO project (T12562). A directory that is its own git root is targeted without it. At a directory a project was rerooted away from it requires --new-identity (T12558).",
116
+ default: false
117
+ },
118
+ "new-identity": {
119
+ type: "boolean",
120
+ description: "Mint a new project identity instead of re-linking a registered one (T12325). Never rewrites an existing .cleo/project-id \u2014 except with --here at a directory a project was rerooted away from, where that project's restored id is retired for the new one (T12558).",
121
+ default: false
122
+ }
123
+ },
124
+ async run({ args }) {
125
+ try {
126
+ if (args.workflows) {
127
+ pushWarning({
128
+ code: "W_INIT_WORKFLOWS_DEPRECATED",
129
+ message: "[deprecated] cleo init --workflows: use `cleo templates install --kind workflow` instead. This alias will be removed in v2026.7.0.",
130
+ severity: "warn",
131
+ deprecated: "cleo init --workflows",
132
+ replacement: "cleo templates install --kind workflow",
133
+ removeBy: "v2026.7.0",
134
+ context: { task: "T9888", saga: "T9855" }
135
+ });
136
+ const projectRoot = process.cwd();
137
+ const templatesDir = getWorkflowTemplatesDir();
138
+ const workflowEntries = getTemplatesByKind("workflow");
139
+ const templates = workflowEntries.map((entry) => entry.id).filter((id) => isWorkflowName(id));
140
+ const result2 = await scaffoldWorkflows({
141
+ projectRoot,
142
+ templatesDir,
143
+ ...templates.length > 0 ? { templates } : {},
144
+ dryRun: !!args["dry-run"],
145
+ force: !!args.force
146
+ });
147
+ cliOutput(
148
+ {
149
+ scaffolded: result2.outcomes.map((o) => ({
150
+ template: o.template,
151
+ targetPath: o.targetPath,
152
+ status: o.status
153
+ })),
154
+ resolvedTools: result2.resolvedTools,
155
+ ...args["dry-run"] ? { rendered: result2.outcomes.map((o) => o.rendered) } : {}
156
+ },
157
+ { command: "init" }
158
+ );
159
+ return;
160
+ }
161
+ const initOpts = {
162
+ name: args.name || args.projectName || void 0,
163
+ force: !!args.force,
164
+ detect: !!args.detect,
165
+ mapCodebase: !!args["map-codebase"],
166
+ installSeedAgents: !!args["install-seed-agents"],
167
+ newIdentity: !!args["new-identity"],
168
+ forceRebind: !!args["force-rebind"],
169
+ here: !!args.here
170
+ };
171
+ const result = await initProject(initOpts);
172
+ const nextSteps = [...result.nextSteps ?? []];
173
+ await maybeNudgeFirstRunLogin(nextSteps);
174
+ cliOutput(
175
+ {
176
+ initialized: result.initialized,
177
+ directory: result.directory,
178
+ created: result.created,
179
+ skipped: result.skipped,
180
+ ...result.warnings.length > 0 ? { warnings: result.warnings } : {},
181
+ ...result.updateDocsOnly ? { updateDocsOnly: true } : {},
182
+ // Phase 5 — greenfield/brownfield classification + LAFS nextSteps
183
+ ...result.classification ? { classification: result.classification } : {},
184
+ ...nextSteps.length > 0 ? { nextSteps } : {}
185
+ },
186
+ { command: "init" }
187
+ );
188
+ } catch (err) {
189
+ if (err instanceof CleoError) {
190
+ cliError(`init failed: ${err.message}`, err.code, {
191
+ name: initErrorCodeName(err) ?? err.toLAFSError().code,
192
+ ...err.fix !== void 0 ? { fix: err.fix } : {},
193
+ ...err.alternatives !== void 0 ? { alternatives: err.alternatives } : {},
194
+ ...err.details !== void 0 ? { details: err.details } : {}
195
+ });
196
+ process.exit(err.code);
197
+ }
198
+ throw err;
199
+ }
200
+ }
201
+ });
202
+ var FIRST_RUN_LOGIN_NEXT_STEP = {
203
+ action: "Add an LLM credential to start using CLEO",
204
+ command: "cleo login"
205
+ };
206
+ async function isCredentialPoolEmpty() {
207
+ try {
208
+ const pool = getCredentialPool();
209
+ const entries = await pool.list();
210
+ return entries.length === 0;
211
+ } catch {
212
+ return false;
213
+ }
214
+ }
215
+ async function maybeNudgeFirstRunLogin(nextSteps) {
216
+ if (!await isCredentialPoolEmpty()) return;
217
+ nextSteps.push({ ...FIRST_RUN_LOGIN_NEXT_STEP });
218
+ if (!isHumanOutput() || process.stdin.isTTY !== true) return;
219
+ try {
220
+ const io = new ReadlineWizardIO(process.stdin, process.stderr);
221
+ let configureNow;
222
+ try {
223
+ configureNow = await io.confirm("No LLM credential found. Configure now?", true);
224
+ } finally {
225
+ io.close();
226
+ }
227
+ if (!configureNow) return;
228
+ const result = await runLoginFrontDoor({});
229
+ let note;
230
+ if (result.validated) {
231
+ note = ` Logged in to ${result.provider} as '${result.accountLabel}' \u2014 bound ${result.profileName ?? "default"} \u2192 ${result.provider}/${result.modelId}.
232
+ `;
233
+ } else {
234
+ const failed = result.steps.find((st) => st.status === "failed");
235
+ note = ` Login did not complete${failed?.detail ? `: ${failed.detail}` : "."} Run 'cleo login' to retry.
236
+ `;
237
+ }
238
+ process.stderr.write(note);
239
+ } catch (err) {
240
+ const msg = err instanceof Error ? err.message : String(err);
241
+ const note = ` Login skipped (${msg}). Run 'cleo login' to retry.
242
+ `;
243
+ process.stderr.write(note);
244
+ }
245
+ }
246
+ function isWorkflowName(id) {
247
+ return id === "release-prepare" || id === "release-publish" || id === "release-fanout" || id === "release-rollback";
248
+ }
249
+
250
+ export {
251
+ getGitignoreTemplate,
252
+ getWorkflowTemplatesDir,
253
+ initCommand,
254
+ FIRST_RUN_LOGIN_NEXT_STEP,
255
+ isCredentialPoolEmpty,
256
+ maybeNudgeFirstRunLogin
257
+ };
258
+ //# sourceMappingURL=chunk-EIUXVHNF.js.map
@@ -0,0 +1,173 @@
1
+ (() => {
2
+ const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
3
+ if (globalThis[_installed]) return;
4
+ globalThis[_installed] = true;
5
+ const _origEmitWarning = process.emitWarning;
6
+ process.emitWarning = function(warning, type, code, ctor) {
7
+ if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
8
+ return;
9
+ }
10
+ if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
11
+ return;
12
+ }
13
+ return _origEmitWarning.call(process, warning, type, code, ctor);
14
+ };
15
+ })();
16
+ import {
17
+ negatedFlag
18
+ } from "./chunk-47JYZAMS.js";
19
+ import {
20
+ defineCommand
21
+ } from "./chunk-PKKZPOOP.js";
22
+ import {
23
+ cliError,
24
+ cliOutput,
25
+ humanLine
26
+ } from "./chunk-4RGSNUUP.js";
27
+
28
+ // packages/cleo/src/cli/commands/doctor-projects.ts
29
+ import { checkAllRegisteredProjects } from "@cleocode/core/system/project-health";
30
+ function formatRow(report, nameFallback) {
31
+ const hash = report.projectHash.padEnd(12).slice(0, 12);
32
+ const name = nameFallback.padEnd(24).slice(0, 24);
33
+ const path = report.projectPath.padEnd(40).slice(0, 40);
34
+ const status = report.overall.padEnd(12).slice(0, 12);
35
+ const issues = report.issues.join("; ").slice(0, 80);
36
+ return `${hash} ${name} ${path} ${status} ${issues}`;
37
+ }
38
+ function deriveExitCode(summary, ignoreUnreachable) {
39
+ if (summary.unreachable > 0 && !ignoreUnreachable) return 2;
40
+ if (summary.degraded > 0) return 1;
41
+ return 0;
42
+ }
43
+ function printDoctorProjectsReport(report, opts, nameLookup) {
44
+ if (report.registryError) {
45
+ const { registryError } = report;
46
+ cliError(
47
+ registryError.message,
48
+ registryError.exitCode,
49
+ { name: registryError.code, fix: registryError.fix, details: { report } },
50
+ { operation: "doctor.projects" }
51
+ );
52
+ process.exitCode = registryError.exitCode;
53
+ return;
54
+ }
55
+ const { summary } = report;
56
+ const exitCode = deriveExitCode(summary, opts.ignoreUnreachable === true);
57
+ process.exitCode = exitCode;
58
+ if (opts.json === true || opts.quiet === true) {
59
+ cliOutput(
60
+ opts.quiet ? {
61
+ projects: summary.totalProjects,
62
+ healthy: summary.healthy,
63
+ degraded: summary.degraded,
64
+ unreachable: summary.unreachable,
65
+ unknown: summary.unknown,
66
+ global: report.global.overall
67
+ } : report,
68
+ { command: "doctor-projects", operation: "doctor.projects" }
69
+ );
70
+ return;
71
+ }
72
+ humanLine("\nCLEO Cross-Project Health Report");
73
+ humanLine(`Generated: ${report.generatedAt}
74
+ `);
75
+ humanLine(`Global: ${report.global.overall.toUpperCase()} (${report.global.cleoHome})`);
76
+ if (report.global.issues.length > 0) {
77
+ for (const iss of report.global.issues) {
78
+ humanLine(` - ${iss}`);
79
+ }
80
+ }
81
+ humanLine("");
82
+ if (report.projects.length === 0) {
83
+ humanLine("No projects registered in nexus.db.");
84
+ humanLine("Register projects with: cleo nexus register <path>\n");
85
+ return;
86
+ }
87
+ const header = `${"hash".padEnd(12)} ${"name".padEnd(24)} ${"path".padEnd(40)} ${"status".padEnd(12)} issues`;
88
+ humanLine(header);
89
+ humanLine("-".repeat(header.length));
90
+ for (const project of report.projects) {
91
+ const name = nameLookup.get(project.projectHash) ?? "<unnamed>";
92
+ humanLine(formatRow(project, name));
93
+ }
94
+ humanLine("");
95
+ humanLine(
96
+ `Summary: ${summary.totalProjects} project(s) \u2014 ${summary.healthy} healthy, ${summary.degraded} degraded, ${summary.unreachable} unreachable, ${summary.unknown} unknown
97
+ `
98
+ );
99
+ }
100
+ async function runDoctorProjects(opts = {}) {
101
+ const report = await checkAllRegisteredProjects({
102
+ updateRegistry: opts.noUpdateRegistry !== true,
103
+ parallelism: opts.parallelism,
104
+ includeGlobal: opts.skipGlobal !== true
105
+ });
106
+ const nameLookup = /* @__PURE__ */ new Map();
107
+ if (!report.registryError) {
108
+ try {
109
+ const { nexusList } = await import("@cleocode/core/nexus/registry");
110
+ const rows = await nexusList();
111
+ for (const row of rows) {
112
+ nameLookup.set(row.hash, row.name);
113
+ }
114
+ } catch {
115
+ }
116
+ }
117
+ printDoctorProjectsReport(report, opts, nameLookup);
118
+ return report;
119
+ }
120
+ var doctorProjectsCommand = defineCommand({
121
+ meta: {
122
+ name: "doctor-projects",
123
+ description: "Probe every registered project (nexus.db) for DB + config health"
124
+ },
125
+ args: {
126
+ json: {
127
+ type: "boolean",
128
+ description: "Emit machine-readable JSON report"
129
+ },
130
+ quiet: {
131
+ type: "boolean",
132
+ description: "Emit a one-line summary only"
133
+ },
134
+ "ignore-unreachable": {
135
+ type: "boolean",
136
+ description: "Exit 1 instead of 2 when a project is unreachable"
137
+ },
138
+ parallelism: {
139
+ type: "string",
140
+ description: "Probe concurrency cap (default: 8)"
141
+ },
142
+ "no-update-registry": {
143
+ type: "boolean",
144
+ description: "Do not write healthStatus back to nexus.db"
145
+ },
146
+ "skip-global": {
147
+ type: "boolean",
148
+ description: "Skip the global-tier (nexus.db, signaldock.db) probe"
149
+ },
150
+ human: {
151
+ type: "boolean",
152
+ description: "Force human-readable output"
153
+ }
154
+ },
155
+ async run({ args }) {
156
+ const parallelism = args.parallelism ? Number.parseInt(String(args.parallelism), 10) : void 0;
157
+ await runDoctorProjects({
158
+ json: args.json === true,
159
+ quiet: args.quiet === true,
160
+ ignoreUnreachable: args["ignore-unreachable"] === true,
161
+ parallelism: typeof parallelism === "number" && Number.isFinite(parallelism) ? parallelism : void 0,
162
+ noUpdateRegistry: negatedFlag(args, "update-registry"),
163
+ skipGlobal: args["skip-global"] === true
164
+ });
165
+ }
166
+ });
167
+
168
+ export {
169
+ printDoctorProjectsReport,
170
+ runDoctorProjects,
171
+ doctorProjectsCommand
172
+ };
173
+ //# sourceMappingURL=chunk-EUGB6P5V.js.map