@cleocode/cleo 2026.10.6 → 2026.10.7

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 (182) hide show
  1. package/bin/cleo.js +1 -1
  2. package/dist/cli/{adapter-Y4ZS3MZM.js → adapter-CJUZSXBA.js} +3 -3
  3. package/dist/cli/{add-FYGNKFWA.js → add-T66ILGKK.js} +3 -3
  4. package/dist/cli/{add-batch-FJ3GD6SG.js → add-batch-DEYCTR2Z.js} +3 -3
  5. package/dist/cli/{admin-PLLDZIWA.js → admin-3WA33TW4.js} +3 -3
  6. package/dist/cli/{admin-5YIFRMZZ.js → admin-73MG7LAS.js} +3 -3
  7. package/dist/cli/{adr-4IIMGGFA.js → adr-N4VVNKYB.js} +3 -3
  8. package/dist/cli/{analyze-YSHOIQ4T.js → analyze-H2BLBQWF.js} +3 -3
  9. package/dist/cli/{archive-RFOVSQGW.js → archive-QHBLYODR.js} +3 -3
  10. package/dist/cli/{archive-stats-FEUN3QWW.js → archive-stats-Q6H6ZFSG.js} +3 -3
  11. package/dist/cli/ask-enforce-entry-ZYO5MVS6.js +202 -0
  12. package/dist/cli/{attention-6NLKIGCS.js → attention-YBJI3WYQ.js} +3 -3
  13. package/dist/cli/{backup-BCUO6KBW.js → backup-DSZLYUH6.js} +3 -3
  14. package/dist/cli/{blockers-6PQXRJWZ.js → blockers-M6MVTIVB.js} +3 -3
  15. package/dist/cli/{briefing-WCXYBJD6.js → briefing-5NFD2GD5.js} +3 -3
  16. package/dist/cli/{cancel-ONC4BAS4.js → cancel-WOEDIY2T.js} +3 -3
  17. package/dist/cli/{check-3LHQAZVM.js → check-ROHPOXED.js} +2 -2
  18. package/dist/cli/{check-PEQ6IW4U.js → check-WLUNOQVL.js} +3 -3
  19. package/dist/cli/{cloud-WATCKPXU.js → chunk-4TUBOOUH.js} +43 -261
  20. package/dist/cli/{chunk-GRM2FBX3.js → chunk-7M7ZEQXG.js} +20 -1
  21. package/dist/cli/chunk-DICDL2YM.js +52 -0
  22. package/dist/cli/{chunk-WM5PF6U2.js → chunk-FWTSORSA.js} +2 -2
  23. package/dist/cli/{chunk-6C5WLJTV.js → chunk-V72T73VU.js} +2 -2
  24. package/dist/cli/{chunk-2SE64OPI.js → chunk-YM7SWWQX.js} +11 -11
  25. package/dist/cli/{claim-2KQRCWDM.js → claim-YKXOKBF2.js} +3 -3
  26. package/dist/cli/{cli-N3Z5FJRH.js → cli-B4M45YP3.js} +3 -3
  27. package/dist/cli/cloud-Q4EF25BE.js +312 -0
  28. package/dist/cli/{complete-662MT5HA.js → complete-L5OOUHNR.js} +4 -4
  29. package/dist/cli/{complexity-NBAKSTTI.js → complexity-YI4SSAQV.js} +3 -3
  30. package/dist/cli/{compliance-TO7UMLRO.js → compliance-NE6GAMII.js} +3 -3
  31. package/dist/cli/{conduit-PKOQOCIS.js → conduit-P2HBLN3F.js} +3 -3
  32. package/dist/cli/{config-NEO6I4J2.js → config-L4TAOKTC.js} +3 -3
  33. package/dist/cli/{consensus-NPBBB7DY.js → consensus-2YQHSOAL.js} +3 -3
  34. package/dist/cli/{context-73476UI5.js → context-4TMGAKEQ.js} +3 -3
  35. package/dist/cli/{contribution-3YXKRZ7R.js → contribution-GPIBWOCD.js} +3 -3
  36. package/dist/cli/{current-K3KLM5S3.js → current-HQ74FPKC.js} +3 -3
  37. package/dist/cli/{daemon-O5O53VKD.js → daemon-BXBXQ543.js} +3 -3
  38. package/dist/cli/{dash-WRM6KIQ7.js → dash-7OTBKSAX.js} +3 -3
  39. package/dist/cli/{decompose-Z2ICSJOC.js → decompose-QQDHU57R.js} +3 -3
  40. package/dist/cli/{decomposition-44KY5BJY.js → decomposition-UHPP47WC.js} +3 -3
  41. package/dist/cli/{delete-U3B5GMVW.js → delete-DULSLVKJ.js} +3 -3
  42. package/dist/cli/{deps-F2WHEBDL.js → deps-YQBUN2FE.js} +3 -3
  43. package/dist/cli/{detect-ICA3K6DT.js → detect-FUC5Y647.js} +3 -3
  44. package/dist/cli/{diagnostics-V5N6D4JO.js → diagnostics-SE2GUEIQ.js} +3 -3
  45. package/dist/cli/{docs-CIKVG5Q3.js → docs-CR46FNQN.js} +44 -3
  46. package/dist/cli/{docs-RCKGENBN.js → docs-DNNQIKRX.js} +57 -7
  47. package/dist/cli/{doctor-G34EXNNN.js → doctor-5T4SOSJT.js} +20 -15
  48. package/dist/cli/doctor-system-HN7KUBUO.js +26 -0
  49. package/dist/cli/{done-FKTAVLGO.js → done-ZSUWISRY.js} +4 -4
  50. package/dist/cli/{export-2TA24G2M.js → export-VUSCRB5H.js} +3 -3
  51. package/dist/cli/{export-tasks-5CO3JHLZ.js → export-tasks-5OFFZTAW.js} +3 -3
  52. package/dist/cli/{find-O4MUQDEQ.js → find-IO57ZCAV.js} +3 -3
  53. package/dist/cli/{focus-PHQMGVNK.js → focus-BHZPAPVM.js} +3 -3
  54. package/dist/cli/{grade-Z3YNRWC3.js → grade-BTQY5Y66.js} +3 -3
  55. package/dist/cli/{graph-LQSRJ6T2.js → graph-6PQZQCM5.js} +3 -3
  56. package/dist/cli/{history-YZ2H73G4.js → history-B2FQPJ7F.js} +3 -3
  57. package/dist/cli/{hook-UF7J7R6D.js → hook-BNQLJ3IB.js} +21 -3
  58. package/dist/cli/hook-entry.js +29 -3
  59. package/dist/cli/{import-FXDJYQ55.js → import-P3PCQ7RG.js} +3 -3
  60. package/dist/cli/{import-tasks-GGBCGUXV.js → import-tasks-VBM3PG3Y.js} +3 -3
  61. package/dist/cli/index.js +112 -106
  62. package/dist/cli/{init-YRZQVU5X.js → init-3SJPZ6MM.js} +2 -2
  63. package/dist/cli/{inject-NHV2R23E.js → inject-OYEUNYKE.js} +3 -3
  64. package/dist/cli/{intelligence-G2UXUU72.js → intelligence-ZDINRJ6L.js} +3 -3
  65. package/dist/cli/{issue-BKYXDW32.js → issue-6SLGC2WA.js} +12 -7
  66. package/dist/cli/{labels-5LE2NIQR.js → labels-3VPUVHTW.js} +3 -3
  67. package/dist/cli/{lifecycle-QVCLERE6.js → lifecycle-4OWR4VQA.js} +3 -3
  68. package/dist/cli/{list-NXMOSHJE.js → list-DEWOUSD4.js} +3 -3
  69. package/dist/cli/{llm-Q3OJP7GR.js → llm-KSUDYWTY.js} +3 -3
  70. package/dist/cli/{log-IX7IPH5F.js → log-QMVCW2VD.js} +3 -3
  71. package/dist/cli/{manifest-YGNDR5T3.js → manifest-7TYRMBFO.js} +3 -3
  72. package/dist/cli/{map-HDXQ73QC.js → map-GYBUA3IZ.js} +3 -3
  73. package/dist/cli/{memory-AOLE6XQY.js → memory-7ZERUVUK.js} +2 -2
  74. package/dist/cli/{memory-6XDLEGCN.js → memory-LCVEGACN.js} +3 -3
  75. package/dist/cli/{migrate-claude-mem-7RE62AGF.js → migrate-claude-mem-W53LP7RD.js} +3 -3
  76. package/dist/cli/{next-JNZKJKWS.js → next-JDP45FHE.js} +3 -3
  77. package/dist/cli/{nexus-YENNDLUD.js → nexus-DXUDR7T5.js} +3 -3
  78. package/dist/cli/{nexus-4BGEPUGU.js → nexus-J2MW66ID.js} +2 -2
  79. package/dist/cli/nexus-vault-cli-SMFRAY2N.js +50 -0
  80. package/dist/cli/{ops-SKH57WXE.js → ops-UOVT64GJ.js} +3 -3
  81. package/dist/cli/{orchestrate-COJLY3BQ.js → orchestrate-C56ZTIG6.js} +2 -2
  82. package/dist/cli/{orchestrate-FDHT627K.js → orchestrate-GPC7WBZG.js} +3 -3
  83. package/dist/cli/{phase-JUE2OEZM.js → phase-MSV7F7EZ.js} +3 -3
  84. package/dist/cli/{pipeline-N7TO7BCW.js → pipeline-3JC25FGQ.js} +2 -2
  85. package/dist/cli/{pivot-URCNR3BX.js → pivot-TKTLDEMJ.js} +3 -3
  86. package/dist/cli/{plan-WYDBY4O5.js → plan-ZP4SZBUL.js} +3 -3
  87. package/dist/cli/{playbook-YNLRIZSL.js → playbook-2IJ5IVEP.js} +3 -3
  88. package/dist/cli/{promote-PRLJ6UBE.js → promote-4DRDZIZY.js} +3 -3
  89. package/dist/cli/{provenance-VKOGKPVJ.js → provenance-576YKBQZ.js} +3 -3
  90. package/dist/cli/{provider-UQZUCADM.js → provider-VPO2UI4B.js} +3 -3
  91. package/dist/cli/{reason-PWEP6WOW.js → reason-KCIR3YSC.js} +3 -3
  92. package/dist/cli/{reconcile-CMFWUVFS.js → reconcile-XQEFK2QH.js} +3 -3
  93. package/dist/cli/{relates-FMKPEXHU.js → relates-65SWZNDD.js} +3 -3
  94. package/dist/cli/{release-NQXHS6LI.js → release-CSUE26SZ.js} +3 -3
  95. package/dist/cli/{reorder-GKTAAISX.js → reorder-NTNZKIR5.js} +3 -3
  96. package/dist/cli/{reparent-G3U56ZAC.js → reparent-NECPOOPK.js} +3 -3
  97. package/dist/cli/{req-5XEJ7X4M.js → req-X33DQCVD.js} +45 -3
  98. package/dist/cli/{research-MLMW3ECS.js → research-26QT4GB2.js} +3 -3
  99. package/dist/cli/{restore-VVYTSJPI.js → restore-EL2CROFY.js} +3 -3
  100. package/dist/cli/{roadmap-JRSWBK2K.js → roadmap-NUGY2TJE.js} +3 -3
  101. package/dist/cli/{safestop-3ODRSAEZ.js → safestop-4OXO7VRT.js} +3 -3
  102. package/dist/cli/{saga-XJSILRXO.js → saga-X3BGSE55.js} +3 -3
  103. package/dist/cli/{self-update-QUATESHX.js → self-update-7EU6N5FM.js} +25 -7
  104. package/dist/cli/{selfimprove-QX4FXTLZ.js → selfimprove-CAJM5KEM.js} +2 -2
  105. package/dist/cli/{selfimprove-ZDAXK63M.js → selfimprove-NZ6GXSYP.js} +3 -3
  106. package/dist/cli/{sequence-AELJXC27.js → sequence-VX5Y6LR4.js} +3 -3
  107. package/dist/cli/{service-MADZVIRM.js → service-K3O4J24T.js} +3 -3
  108. package/dist/cli/{session-7DLKPTLU.js → session-RMM7ABRO.js} +2 -2
  109. package/dist/cli/{session-4F2YDCOH.js → session-TYKF747R.js} +3 -3
  110. package/dist/cli/{show-7YCBPUMQ.js → show-ZO57LWIG.js} +3 -3
  111. package/dist/cli/{skills-ZJIHEJV4.js → skills-DJMKIDYU.js} +3 -3
  112. package/dist/cli/{snapshot-2NJYDKMN.js → snapshot-OILJVMMI.js} +3 -3
  113. package/dist/cli/{start-M2LHH3FM.js → start-LT6KM7L3.js} +3 -3
  114. package/dist/cli/{stats-A3P3FFA3.js → stats-VZ7OYS7I.js} +3 -3
  115. package/dist/cli/{sticky-3GLMUD63.js → sticky-26RIXY25.js} +3 -3
  116. package/dist/cli/{stop-FWSAMPGJ.js → stop-H4URBWYA.js} +3 -3
  117. package/dist/cli/{sync-IOMJ3HN6.js → sync-TDTVQPJ6.js} +29 -4
  118. package/dist/cli/{tasks-5ESKKSFT.js → tasks-HXZGNHKP.js} +3 -3
  119. package/dist/cli/{tasks-SDWKABXY.js → tasks-SLUW3NHO.js} +25 -3
  120. package/dist/cli/{testing-SUQZRPF2.js → testing-5DAKBB4A.js} +3 -3
  121. package/dist/cli/{token-IEKREVOS.js → token-YHUG4KQY.js} +3 -3
  122. package/dist/cli/{update-3IHK223Z.js → update-VMNQN7TL.js} +3 -3
  123. package/dist/cli/{upgrade-LEKAQEM6.js → upgrade-FOHI6DDB.js} +2 -2
  124. package/dist/cli/{verify-KLHWM3QC.js → verify-HBGLJM3V.js} +21 -3
  125. package/dist/cli/{worktree-YRUPLABI.js → worktree-EUHVTVTE.js} +3 -3
  126. package/package.json +13 -13
  127. package/studio-dist/client/_app/immutable/chunks/BCvslq_K.js +3 -0
  128. package/studio-dist/client/_app/immutable/chunks/CSIanL9h.js +1 -0
  129. package/studio-dist/client/_app/immutable/chunks/{C-V-y4De.js → CvbJKQ-o.js} +1 -1
  130. package/studio-dist/client/_app/immutable/chunks/{BvC3Utsc.js → Z0jmKUYT.js} +1 -1
  131. package/studio-dist/client/_app/immutable/entry/{app.DwLmKJGp.js → app.DavK4iuH.js} +2 -2
  132. package/studio-dist/client/_app/immutable/entry/start.V2uCC2P5.js +1 -0
  133. package/studio-dist/client/_app/immutable/nodes/{0.Blicinz5.js → 0.BHWwz1xh.js} +1 -1
  134. package/studio-dist/client/_app/immutable/nodes/{1.DYfUtTzr.js → 1.C-eDkl2t.js} +1 -1
  135. package/studio-dist/client/_app/immutable/nodes/{15.0VIks-FY.js → 15.G0P_w1GK.js} +1 -1
  136. package/studio-dist/client/_app/immutable/nodes/{16.CGYTpOds.js → 16.Cqz1oWe1.js} +1 -1
  137. package/studio-dist/client/_app/immutable/nodes/{17.CqxxDqap.js → 17.6d03BJLb.js} +1 -1
  138. package/studio-dist/client/_app/immutable/nodes/{18.zoiizAsW.js → 18.CM33t09k.js} +1 -1
  139. package/studio-dist/client/_app/immutable/nodes/{20.CoHO1HOa.js → 20.CTfAGKY8.js} +1 -1
  140. package/studio-dist/client/_app/immutable/nodes/{24.CEKN07pd.js → 24.gbalekQI.js} +1 -1
  141. package/studio-dist/client/_app/immutable/nodes/{25.Cwb6--dQ.js → 25.CUYXHGZQ.js} +2 -2
  142. package/studio-dist/client/_app/immutable/nodes/{26.Lt0faqC6.js → 26.DaT-erMX.js} +1 -1
  143. package/studio-dist/client/_app/immutable/nodes/{3.B4gGiXCv.js → 3.Bl3u2QNH.js} +1 -1
  144. package/studio-dist/client/_app/version.json +1 -1
  145. package/studio-dist/server/chunks/{0-D492ZtLZ.js → 0-iQog_Q7O.js} +3 -3
  146. package/studio-dist/server/chunks/1-D0-5ZoM9.js +9 -0
  147. package/studio-dist/server/chunks/{15-_ji0trMb.js → 15-C1BQfRbn.js} +3 -3
  148. package/studio-dist/server/chunks/{16-C4W_wEat.js → 16-BIwQxeLP.js} +3 -3
  149. package/studio-dist/server/chunks/{17-CSC6zbrz.js → 17-Ci0nDFMc.js} +3 -3
  150. package/studio-dist/server/chunks/{18-C2UBZ4V7.js → 18-BEbdGLv7.js} +3 -3
  151. package/studio-dist/server/chunks/{20-CNZGgA51.js → 20-BSxReeY9.js} +3 -3
  152. package/studio-dist/server/chunks/{24-B8s6AtWt.js → 24-B4eSvYun.js} +3 -3
  153. package/studio-dist/server/chunks/{25-Di0-174f.js → 25-BHYImkbu.js} +11 -5
  154. package/studio-dist/server/chunks/{26-DGkp0hxy.js → 26-BaLNclci.js} +3 -3
  155. package/studio-dist/server/chunks/{3-CEb1rGjJ.js → 3-DP1YwzKZ.js} +3 -3
  156. package/studio-dist/server/chunks/{_layout.svelte-C0RSslbi.js → _layout.svelte-CXcQXiPw.js} +4 -4
  157. package/studio-dist/server/chunks/{_page.svelte-C0QIgqPi.js → _page.svelte-BJhdT1xo.js} +3 -3
  158. package/studio-dist/server/chunks/{_page.svelte-BAwlyy44.js → _page.svelte-C8MvvhDl.js} +6 -6
  159. package/studio-dist/server/chunks/{_page.svelte-CP0byoZO.js → _page.svelte-CUc9hMC2.js} +3 -3
  160. package/studio-dist/server/chunks/{_page.svelte-C40Bsi56.js → _page.svelte-CcR2pipu.js} +3 -3
  161. package/studio-dist/server/chunks/{_page.svelte-T7MO2lut.js → _page.svelte-DT6L8fi-.js} +3 -3
  162. package/studio-dist/server/chunks/{_page.svelte-DY7LWEWR.js → _page.svelte-DVXuBMYJ.js} +4 -4
  163. package/studio-dist/server/chunks/{_page.svelte-B7R6qlgh.js → _page.svelte-DVmyt3oT.js} +3 -3
  164. package/studio-dist/server/chunks/{_page.svelte-DJNirg5z.js → _page.svelte-ZZBX7G_a.js} +3 -3
  165. package/studio-dist/server/chunks/{_page.svelte-CVdA59EL.js → _page.svelte-pXEhbkk5.js} +3 -3
  166. package/studio-dist/server/chunks/{_server.ts-D_j7aSy5.js → _server.ts-BaNx2iKe.js} +3 -3
  167. package/studio-dist/server/chunks/{_server.ts-QEZF8h2q.js → _server.ts-CsFgN0Xw.js} +3 -3
  168. package/studio-dist/server/chunks/{_server.ts-B3JGyMja.js → _server.ts-Cujskg9G.js} +2 -2
  169. package/studio-dist/server/chunks/{_server.ts-BcRFsyo3.js → _server.ts-DlYk1cV4.js} +3 -3
  170. package/studio-dist/server/chunks/{_server.ts-CEWpIFrj.js → _server.ts-dhfnFFsl.js} +3 -3
  171. package/studio-dist/server/chunks/{client-DrGEAduo.js → client-ehhxwKiq.js} +2 -2
  172. package/studio-dist/server/chunks/{error.svelte-DeRv5HBj.js → error.svelte-Cte5aSRY.js} +3 -3
  173. package/studio-dist/server/chunks/{http-DT5kxaWk.js → http-xrUffxJm.js} +2 -2
  174. package/studio-dist/server/chunks/{internal-kNAGyHP7.js → internal-UfUOVFGU.js} +2 -2
  175. package/studio-dist/server/chunks/{operations-registry-DdzmYzqX.js → operations-registry-ISk1IH0d.js} +137 -13
  176. package/studio-dist/server/chunks/{stores-rrym85hH.js → stores-Cupp8SE_.js} +2 -2
  177. package/studio-dist/server/index.js +1 -1
  178. package/studio-dist/server/manifest.js +17 -17
  179. package/studio-dist/client/_app/immutable/chunks/C_VOVxzB.js +0 -3
  180. package/studio-dist/client/_app/immutable/chunks/CeoYoLtR.js +0 -1
  181. package/studio-dist/client/_app/immutable/entry/start.DLcr-ZJ4.js +0 -1
  182. package/studio-dist/server/chunks/1-DNs7J9vH.js +0 -9
@@ -15,7 +15,7 @@
15
15
  })();
16
16
  import {
17
17
  dispatchFromCli
18
- } from "./chunk-6C5WLJTV.js";
18
+ } from "./chunk-V72T73VU.js";
19
19
  import "./chunk-6N6WGLXE.js";
20
20
  import "./chunk-4VASFLUW.js";
21
21
  import {
@@ -25,7 +25,7 @@ import "./chunk-QKMBWYAS.js";
25
25
  import "./chunk-4RGSNUUP.js";
26
26
  import "./chunk-6JSJNYH2.js";
27
27
  import "./chunk-D7BAQNV2.js";
28
- import "./chunk-2SE64OPI.js";
28
+ import "./chunk-YM7SWWQX.js";
29
29
 
30
30
  // packages/cleo/src/cli/commands/detect.ts
31
31
  var detectCommand = defineCommand({
@@ -43,4 +43,4 @@ var detectCommand = defineCommand({
43
43
  export {
44
44
  detectCommand
45
45
  };
46
- //# sourceMappingURL=detect-ICA3K6DT.js.map
46
+ //# sourceMappingURL=detect-FUC5Y647.js.map
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-47JYZAMS.js";
19
19
  import {
20
20
  dispatchFromCli
21
- } from "./chunk-6C5WLJTV.js";
21
+ } from "./chunk-V72T73VU.js";
22
22
  import "./chunk-6N6WGLXE.js";
23
23
  import "./chunk-4VASFLUW.js";
24
24
  import {
@@ -29,7 +29,7 @@ import "./chunk-QKMBWYAS.js";
29
29
  import "./chunk-4RGSNUUP.js";
30
30
  import "./chunk-6JSJNYH2.js";
31
31
  import "./chunk-D7BAQNV2.js";
32
- import "./chunk-2SE64OPI.js";
32
+ import "./chunk-YM7SWWQX.js";
33
33
 
34
34
  // packages/cleo/src/cli/commands/diagnostics.ts
35
35
  var enableCommand = defineCommand({
@@ -130,4 +130,4 @@ var diagnosticsCommand = defineCommand({
130
130
  export {
131
131
  diagnosticsCommand
132
132
  };
133
- //# sourceMappingURL=diagnostics-V5N6D4JO.js.map
133
+ //# sourceMappingURL=diagnostics-SE2GUEIQ.js.map
@@ -25,7 +25,7 @@ import {
25
25
  dispatchFromCli,
26
26
  dispatchRaw,
27
27
  handleRawError
28
- } from "./chunk-6C5WLJTV.js";
28
+ } from "./chunk-V72T73VU.js";
29
29
  import "./chunk-6N6WGLXE.js";
30
30
  import {
31
31
  resolve
@@ -49,7 +49,7 @@ import {
49
49
  } from "./chunk-4RGSNUUP.js";
50
50
  import "./chunk-6JSJNYH2.js";
51
51
  import "./chunk-D7BAQNV2.js";
52
- import "./chunk-2SE64OPI.js";
52
+ import "./chunk-YM7SWWQX.js";
53
53
 
54
54
  // packages/cleo/src/cli/commands/docs.ts
55
55
  import { appendFile, mkdir as mkdir3, readdir, readFile as readFile2, writeFile as writeFile2 } from "node:fs/promises";
@@ -2679,6 +2679,45 @@ var checkCommand = defineCommand({
2679
2679
  }
2680
2680
  }
2681
2681
  });
2682
+ function parseOlderThanDays(raw) {
2683
+ if (raw === void 0) return void 0;
2684
+ const parsed = Number(raw);
2685
+ if (!Number.isFinite(parsed) || parsed < 0) {
2686
+ cliError(`--older-than-days must be a non-negative number, got '${raw}'`, 6, {
2687
+ name: "E_VALIDATION"
2688
+ });
2689
+ process.exit(6);
2690
+ }
2691
+ return Math.floor(parsed);
2692
+ }
2693
+ var doctorCommand = defineCommand({
2694
+ meta: {
2695
+ name: "doctor",
2696
+ description: "Docs store health diagnostics + safe repairs: dangling local-file pointers, docVersion skew vs the audit log, empty topics/related_tasks provenance, docs_wikilinks drift, legacy store surfaces, stale drafts. Dry-run by default; --apply executes repairs (a fresh backup is created automatically first)."
2697
+ },
2698
+ args: {
2699
+ apply: {
2700
+ type: "boolean",
2701
+ description: "Execute the repairs (default: dry-run plan only)"
2702
+ },
2703
+ "older-than-days": {
2704
+ type: "string",
2705
+ description: "Age threshold in days for the stale-drafts check (default 30)"
2706
+ },
2707
+ ...docsOutputArgs
2708
+ },
2709
+ async run({ args }) {
2710
+ const apply = args.apply === true;
2711
+ const olderThanDays = parseOlderThanDays(args["older-than-days"]);
2712
+ await dispatchFromCli(
2713
+ apply ? "mutate" : "query",
2714
+ "docs",
2715
+ "doctor",
2716
+ { apply, ...olderThanDays !== void 0 ? { olderThanDays } : {} },
2717
+ { command: "docs doctor" }
2718
+ );
2719
+ }
2720
+ });
2682
2721
  var syncCommand = defineCommand({
2683
2722
  meta: {
2684
2723
  name: "sync",
@@ -3048,6 +3087,8 @@ var docsCommand = defineCommand({
3048
3087
  // T11136 — Unified drift management (consolidates sync/status/gap-check)
3049
3088
  check: checkCommand,
3050
3089
  // Canonical six-verb path (add, update, fetch, list, remove, publish)
3090
+ // T13447 — store health diagnostics + safe repairs
3091
+ doctor: doctorCommand,
3051
3092
  add: addCommand,
3052
3093
  update: updateCommand,
3053
3094
  fetch: fetchCommand,
@@ -3095,4 +3136,4 @@ export {
3095
3136
  _llmOutputCommand,
3096
3137
  docsCommand
3097
3138
  };
3098
- //# sourceMappingURL=docs-CIKVG5Q3.js.map
3139
+ //# sourceMappingURL=docs-CR46FNQN.js.map
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-QWNKLLLG.js";
22
22
  import {
23
23
  lazyOperation
24
- } from "./chunk-2SE64OPI.js";
24
+ } from "./chunk-YM7SWWQX.js";
25
25
  import {
26
26
  dispatchMeta,
27
27
  handleErrorResult,
@@ -31,7 +31,7 @@ import {
31
31
  // packages/cleo/src/dispatch/domains/docs.ts
32
32
  import { randomUUID } from "node:crypto";
33
33
  import { readFile } from "node:fs/promises";
34
- import { resolve } from "node:path";
34
+ import { join, resolve } from "node:path";
35
35
  import { DocKindRegistry } from "@cleocode/contracts/docs-taxonomy.js";
36
36
  import { LLM_OUTPUT_MODES } from "@cleocode/contracts/operations/docs";
37
37
  import { parseChangesetFrontmatter } from "@cleocode/core/changesets/parse-frontmatter";
@@ -101,6 +101,12 @@ var resolveAttachmentBackend = lazyOperation(
101
101
  var runDocsImport = lazyOperation(
102
102
  async () => (await import("@cleocode/core/docs/import/import-orchestrator")).runDocsImport
103
103
  );
104
+ var runDocsDoctor = lazyOperation(
105
+ async () => (await import("@cleocode/core/docs/doctor")).runDocsDoctor
106
+ );
107
+ var createSystemBackup = lazyOperation(
108
+ async () => (await import("@cleocode/core/system/backup")).createBackup
109
+ );
104
110
  var searchAllProjectDocs = lazyOperation(
105
111
  async () => (await import("@cleocode/core/docs/docs-ops")).searchAllProjectDocs
106
112
  );
@@ -516,6 +522,37 @@ var _docsTypedHandler = defineTypedHandler("docs", {
516
522
  "fetch"
517
523
  );
518
524
  },
525
+ // ── docs.doctor ────────────────────────────────────────────────────────────
526
+ doctor: async (params) => {
527
+ const apply = params.apply === true;
528
+ const projectRoot = getProjectRoot();
529
+ let backupReceiptPath;
530
+ if (apply) {
531
+ const backup = await createSystemBackup(projectRoot, {
532
+ type: "snapshot",
533
+ note: "docs doctor pre-repair (T13447)"
534
+ });
535
+ const STORE_FILE = "cleo.db";
536
+ if (!backup.files.includes(STORE_FILE)) {
537
+ return lafsError(
538
+ "E_DOCS_DOCTOR_BACKUP_FAILED",
539
+ // @sync-invariant none:input-shape a precondition refusal before any repair write; nothing was written
540
+ "backup did not capture the project store \u2014 refusing to apply repairs",
541
+ "doctor"
542
+ );
543
+ }
544
+ backupReceiptPath = join(backup.path, `${STORE_FILE}.${backup.backupId}`);
545
+ }
546
+ const result = await runDocsDoctor(projectRoot, {
547
+ apply,
548
+ ...params.olderThanDays !== void 0 ? { olderThanDays: params.olderThanDays } : {},
549
+ ...backupReceiptPath !== void 0 ? { backupReceiptPath } : {}
550
+ });
551
+ if (!result.ok) {
552
+ return lafsError(result.error.code, result.error.message, "doctor");
553
+ }
554
+ return lafsSuccess(result.report, "doctor");
555
+ },
519
556
  // ── docs.add ───────────────────────────────────────────────────────────────
520
557
  add: async (params) => {
521
558
  const {
@@ -1372,7 +1409,8 @@ var QUERY_OPS = /* @__PURE__ */ new Set([
1372
1409
  "rank",
1373
1410
  "versions",
1374
1411
  "status",
1375
- "audit"
1412
+ "audit",
1413
+ "doctor"
1376
1414
  ]);
1377
1415
  var MUTATE_OPS = /* @__PURE__ */ new Set([
1378
1416
  "add",
@@ -1382,7 +1420,8 @@ var MUTATE_OPS = /* @__PURE__ */ new Set([
1382
1420
  "publish",
1383
1421
  "publish-pr",
1384
1422
  "sync",
1385
- "import"
1423
+ "import",
1424
+ "doctor"
1386
1425
  ]);
1387
1426
  async function dispatchDocsLegacyQuery(operation, params) {
1388
1427
  const projectRoot = getProjectRoot();
@@ -1667,13 +1706,24 @@ var DocsHandler = class {
1667
1706
  "rank",
1668
1707
  "versions",
1669
1708
  "status",
1670
- "audit"
1709
+ "audit",
1710
+ "doctor"
1671
1711
  ],
1672
- mutate: ["add", "remove", "update", "supersede", "publish", "publish-pr", "sync", "import"]
1712
+ mutate: [
1713
+ "add",
1714
+ "remove",
1715
+ "update",
1716
+ "supersede",
1717
+ "publish",
1718
+ "publish-pr",
1719
+ "sync",
1720
+ "import",
1721
+ "doctor"
1722
+ ]
1673
1723
  };
1674
1724
  }
1675
1725
  };
1676
1726
  export {
1677
1727
  DocsHandler
1678
1728
  };
1679
- //# sourceMappingURL=docs-RCKGENBN.js.map
1729
+ //# sourceMappingURL=docs-DNNQIKRX.js.map
@@ -16,6 +16,12 @@
16
16
  import {
17
17
  createDoctorProgress
18
18
  } from "./chunk-W3JLYKKY.js";
19
+ import {
20
+ readMigrationConflicts
21
+ } from "./chunk-IIOGUY3B.js";
22
+ import {
23
+ doctorSplitBrainCommand
24
+ } from "./chunk-7ACK4EIN.js";
19
25
  import {
20
26
  doctorSupersededStoreCommand
21
27
  } from "./chunk-U3RT24TC.js";
@@ -25,6 +31,9 @@ import {
25
31
  import {
26
32
  doctorSyncTriggersCommand
27
33
  } from "./chunk-ILWWL462.js";
34
+ import {
35
+ doctorSystemCommand
36
+ } from "./chunk-DICDL2YM.js";
28
37
  import {
29
38
  doctorToolLocksCommand
30
39
  } from "./chunk-LLDYX63U.js";
@@ -35,8 +44,8 @@ import {
35
44
  doctorWorktreeStoresCommand
36
45
  } from "./chunk-BQK6XTOH.js";
37
46
  import {
38
- readMigrationConflicts
39
- } from "./chunk-IIOGUY3B.js";
47
+ doctorNexusResidencyCommand
48
+ } from "./chunk-XA5WISNV.js";
40
49
  import {
41
50
  doctorProjectIdentityCommand
42
51
  } from "./chunk-PN4WW5VX.js";
@@ -59,8 +68,8 @@ import {
59
68
  doctorSkillFixturesCommand
60
69
  } from "./chunk-T6GZJYL3.js";
61
70
  import {
62
- doctorSplitBrainCommand
63
- } from "./chunk-7ACK4EIN.js";
71
+ doctorGlobalDeliveryCommand
72
+ } from "./chunk-HFLLZE6A.js";
64
73
  import {
65
74
  doctorHeavyCommandHookCommand
66
75
  } from "./chunk-COXFJ3PT.js";
@@ -83,8 +92,8 @@ import {
83
92
  doctorMigrationsCommand
84
93
  } from "./chunk-7UARFJYS.js";
85
94
  import {
86
- doctorNexusResidencyCommand
87
- } from "./chunk-XA5WISNV.js";
95
+ doctorAcBindingsCommand
96
+ } from "./chunk-CHGEDCKG.js";
88
97
  import {
89
98
  doctorAcceptanceDriftCommand
90
99
  } from "./chunk-TLQ37HRE.js";
@@ -106,12 +115,6 @@ import {
106
115
  import {
107
116
  doctorFkCheckCommand
108
117
  } from "./chunk-FSKN4DWC.js";
109
- import {
110
- doctorGlobalDeliveryCommand
111
- } from "./chunk-HFLLZE6A.js";
112
- import {
113
- doctorAcBindingsCommand
114
- } from "./chunk-CHGEDCKG.js";
115
118
  import "./chunk-47JYZAMS.js";
116
119
  import "./chunk-C3B7C43W.js";
117
120
  import {
@@ -120,7 +123,7 @@ import {
120
123
  import {
121
124
  dispatchFromCli,
122
125
  dispatchRaw
123
- } from "./chunk-6C5WLJTV.js";
126
+ } from "./chunk-V72T73VU.js";
124
127
  import "./chunk-6N6WGLXE.js";
125
128
  import "./chunk-4VASFLUW.js";
126
129
  import {
@@ -134,7 +137,7 @@ import {
134
137
  } from "./chunk-4RGSNUUP.js";
135
138
  import "./chunk-6JSJNYH2.js";
136
139
  import "./chunk-D7BAQNV2.js";
137
- import "./chunk-2SE64OPI.js";
140
+ import "./chunk-YM7SWWQX.js";
138
141
 
139
142
  // packages/cleo/src/cli/commands/doctor.ts
140
143
  import { mkdirSync, writeFileSync } from "node:fs";
@@ -515,6 +518,8 @@ var doctorCommand = defineCommand({
515
518
  "worktree-stores": doctorWorktreeStoresCommand,
516
519
  // T12097 — machine-wide guard for test runs started OUTSIDE cleo verify
517
520
  "memory-guard": doctorMemoryGuardCommand,
521
+ // T13435 — machine + project health: ranked findings with exact remedies (read-only)
522
+ system: doctorSystemCommand,
518
523
  // T13124 — the heavy-command hook per agent harness in use (+ --fix installs it)
519
524
  "heavy-command-hook": doctorHeavyCommandHookCommand,
520
525
  // T12353 · T12716 — tracked .cleo/project.json / project-id vs project-info.json (+ --resolve migrate / re-key)
@@ -1267,4 +1272,4 @@ Dependency cycles: check skipped (${msg})`);
1267
1272
  export {
1268
1273
  doctorCommand
1269
1274
  };
1270
- //# sourceMappingURL=doctor-G34EXNNN.js.map
1275
+ //# sourceMappingURL=doctor-5T4SOSJT.js.map
@@ -0,0 +1,26 @@
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
+ doctorSystemCommand
18
+ } from "./chunk-DICDL2YM.js";
19
+ import "./chunk-C3B7C43W.js";
20
+ import "./chunk-PKKZPOOP.js";
21
+ import "./chunk-4RGSNUUP.js";
22
+ import "./chunk-6JSJNYH2.js";
23
+ export {
24
+ doctorSystemCommand
25
+ };
26
+ //# sourceMappingURL=doctor-system-HN7KUBUO.js.map
@@ -16,11 +16,11 @@
16
16
  import {
17
17
  completeCommandArgs,
18
18
  completeDispatchParams
19
- } from "./chunk-WM5PF6U2.js";
19
+ } from "./chunk-FWTSORSA.js";
20
20
  import "./chunk-C3B7C43W.js";
21
21
  import {
22
22
  dispatchRaw
23
- } from "./chunk-6C5WLJTV.js";
23
+ } from "./chunk-V72T73VU.js";
24
24
  import "./chunk-6N6WGLXE.js";
25
25
  import "./chunk-4VASFLUW.js";
26
26
  import {
@@ -35,7 +35,7 @@ import {
35
35
  withoutOutputPointer
36
36
  } from "./chunk-6JSJNYH2.js";
37
37
  import "./chunk-D7BAQNV2.js";
38
- import "./chunk-2SE64OPI.js";
38
+ import "./chunk-YM7SWWQX.js";
39
39
 
40
40
  // packages/cleo/src/cli/commands/done.ts
41
41
  async function batchEntry(taskId, result, args) {
@@ -193,4 +193,4 @@ var doneCommand = defineCommand({
193
193
  export {
194
194
  doneCommand
195
195
  };
196
- //# sourceMappingURL=done-FKTAVLGO.js.map
196
+ //# sourceMappingURL=done-ZSUWISRY.js.map
@@ -17,7 +17,7 @@ import {
17
17
  dispatchFromCli,
18
18
  dispatchRaw,
19
19
  handleRawError
20
- } from "./chunk-6C5WLJTV.js";
20
+ } from "./chunk-V72T73VU.js";
21
21
  import "./chunk-6N6WGLXE.js";
22
22
  import "./chunk-4VASFLUW.js";
23
23
  import {
@@ -27,7 +27,7 @@ import "./chunk-QKMBWYAS.js";
27
27
  import "./chunk-4RGSNUUP.js";
28
28
  import "./chunk-6JSJNYH2.js";
29
29
  import "./chunk-D7BAQNV2.js";
30
- import "./chunk-2SE64OPI.js";
30
+ import "./chunk-YM7SWWQX.js";
31
31
 
32
32
  // packages/cleo/src/cli/commands/export.ts
33
33
  var exportCommand = defineCommand({
@@ -90,4 +90,4 @@ var exportCommand = defineCommand({
90
90
  export {
91
91
  exportCommand
92
92
  };
93
- //# sourceMappingURL=export-2TA24G2M.js.map
93
+ //# sourceMappingURL=export-VUSCRB5H.js.map
@@ -17,7 +17,7 @@ import {
17
17
  dispatchFromCli,
18
18
  dispatchRaw,
19
19
  handleRawError
20
- } from "./chunk-6C5WLJTV.js";
20
+ } from "./chunk-V72T73VU.js";
21
21
  import "./chunk-6N6WGLXE.js";
22
22
  import "./chunk-4VASFLUW.js";
23
23
  import {
@@ -27,7 +27,7 @@ import "./chunk-QKMBWYAS.js";
27
27
  import "./chunk-4RGSNUUP.js";
28
28
  import "./chunk-6JSJNYH2.js";
29
29
  import "./chunk-D7BAQNV2.js";
30
- import "./chunk-2SE64OPI.js";
30
+ import "./chunk-YM7SWWQX.js";
31
31
 
32
32
  // packages/cleo/src/cli/commands/export-tasks.ts
33
33
  var exportTasksCommand = defineCommand({
@@ -94,4 +94,4 @@ var exportTasksCommand = defineCommand({
94
94
  export {
95
95
  exportTasksCommand
96
96
  };
97
- //# sourceMappingURL=export-tasks-5CO3JHLZ.js.map
97
+ //# sourceMappingURL=export-tasks-5OFFZTAW.js.map
@@ -17,7 +17,7 @@ import {
17
17
  dispatchRaw,
18
18
  handleRawError,
19
19
  maybeEmitDescribe
20
- } from "./chunk-6C5WLJTV.js";
20
+ } from "./chunk-V72T73VU.js";
21
21
  import "./chunk-6N6WGLXE.js";
22
22
  import "./chunk-4VASFLUW.js";
23
23
  import {
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-4RGSNUUP.js";
30
30
  import "./chunk-6JSJNYH2.js";
31
31
  import "./chunk-D7BAQNV2.js";
32
- import "./chunk-2SE64OPI.js";
32
+ import "./chunk-YM7SWWQX.js";
33
33
 
34
34
  // packages/cleo/src/cli/commands/find.ts
35
35
  import { ExitCode } from "@cleocode/contracts/exit-codes.js";
@@ -175,4 +175,4 @@ var findCommand = defineCommand({
175
175
  export {
176
176
  findCommand
177
177
  };
178
- //# sourceMappingURL=find-O4MUQDEQ.js.map
178
+ //# sourceMappingURL=find-IO57ZCAV.js.map
@@ -15,7 +15,7 @@
15
15
  })();
16
16
  import {
17
17
  dispatchFromCli
18
- } from "./chunk-6C5WLJTV.js";
18
+ } from "./chunk-V72T73VU.js";
19
19
  import "./chunk-6N6WGLXE.js";
20
20
  import "./chunk-4VASFLUW.js";
21
21
  import {
@@ -25,7 +25,7 @@ import "./chunk-QKMBWYAS.js";
25
25
  import "./chunk-4RGSNUUP.js";
26
26
  import "./chunk-6JSJNYH2.js";
27
27
  import "./chunk-D7BAQNV2.js";
28
- import "./chunk-2SE64OPI.js";
28
+ import "./chunk-YM7SWWQX.js";
29
29
 
30
30
  // packages/cleo/src/cli/commands/focus.ts
31
31
  var focusCommand = defineCommand({
@@ -53,4 +53,4 @@ var focusCommand = defineCommand({
53
53
  export {
54
54
  focusCommand
55
55
  };
56
- //# sourceMappingURL=focus-PHQMGVNK.js.map
56
+ //# sourceMappingURL=focus-BHZPAPVM.js.map
@@ -15,7 +15,7 @@
15
15
  })();
16
16
  import {
17
17
  dispatchFromCli
18
- } from "./chunk-6C5WLJTV.js";
18
+ } from "./chunk-V72T73VU.js";
19
19
  import "./chunk-6N6WGLXE.js";
20
20
  import "./chunk-4VASFLUW.js";
21
21
  import {
@@ -25,7 +25,7 @@ import "./chunk-QKMBWYAS.js";
25
25
  import "./chunk-4RGSNUUP.js";
26
26
  import "./chunk-6JSJNYH2.js";
27
27
  import "./chunk-D7BAQNV2.js";
28
- import "./chunk-2SE64OPI.js";
28
+ import "./chunk-YM7SWWQX.js";
29
29
 
30
30
  // packages/cleo/src/cli/commands/grade.ts
31
31
  var gradeCommand = defineCommand({
@@ -54,4 +54,4 @@ var gradeCommand = defineCommand({
54
54
  export {
55
55
  gradeCommand
56
56
  };
57
- //# sourceMappingURL=grade-Z3YNRWC3.js.map
57
+ //# sourceMappingURL=grade-BTQY5Y66.js.map
@@ -16,7 +16,7 @@
16
16
  import {
17
17
  dispatchFromCli,
18
18
  dispatchRaw
19
- } from "./chunk-6C5WLJTV.js";
19
+ } from "./chunk-V72T73VU.js";
20
20
  import "./chunk-6N6WGLXE.js";
21
21
  import "./chunk-4VASFLUW.js";
22
22
  import {
@@ -34,7 +34,7 @@ import {
34
34
  setFormatContext
35
35
  } from "./chunk-6JSJNYH2.js";
36
36
  import "./chunk-D7BAQNV2.js";
37
- import "./chunk-2SE64OPI.js";
37
+ import "./chunk-YM7SWWQX.js";
38
38
 
39
39
  // packages/cleo/src/cli/commands/graph.ts
40
40
  import path from "node:path";
@@ -876,4 +876,4 @@ var graphCommand = defineCommand({
876
876
  export {
877
877
  graphCommand
878
878
  };
879
- //# sourceMappingURL=graph-LQSRJ6T2.js.map
879
+ //# sourceMappingURL=graph-6PQZQCM5.js.map
@@ -15,7 +15,7 @@
15
15
  })();
16
16
  import {
17
17
  dispatchFromCli
18
- } from "./chunk-6C5WLJTV.js";
18
+ } from "./chunk-V72T73VU.js";
19
19
  import "./chunk-6N6WGLXE.js";
20
20
  import "./chunk-4VASFLUW.js";
21
21
  import {
@@ -26,7 +26,7 @@ import "./chunk-QKMBWYAS.js";
26
26
  import "./chunk-4RGSNUUP.js";
27
27
  import "./chunk-6JSJNYH2.js";
28
28
  import "./chunk-D7BAQNV2.js";
29
- import "./chunk-2SE64OPI.js";
29
+ import "./chunk-YM7SWWQX.js";
30
30
 
31
31
  // packages/cleo/src/cli/commands/history.ts
32
32
  var logCommand = defineCommand({
@@ -135,4 +135,4 @@ var historyCommand = defineCommand({
135
135
  export {
136
136
  historyCommand
137
137
  };
138
- //# sourceMappingURL=history-YZ2H73G4.js.map
138
+ //# sourceMappingURL=history-B2FQPJ7F.js.map
@@ -37,13 +37,31 @@ var heavyCommandSubcommand = defineCommand({
37
37
  process.exitCode = await runHookCli(["heavy-command", "--provider", provider]);
38
38
  }
39
39
  });
40
+ var askEnforceSubcommand = defineCommand({
41
+ meta: {
42
+ name: "ask-enforce",
43
+ description: "Stop hook (T13420): block a turn that ends asking the owner in prose without an ask-tool call, and tell the agent to re-ask with its ask tool. Reads the Stop JSON on stdin; prints the harness answer."
44
+ },
45
+ args: {
46
+ provider: {
47
+ type: "string",
48
+ description: "Harness protocol to answer in: claude-code (default), codex, copilot-cli, gemini-cli, cursor, opencode, kimi"
49
+ }
50
+ },
51
+ async run({ args }) {
52
+ const { runHookCli } = await import("./hook-entry.js");
53
+ const provider = typeof args.provider === "string" ? args.provider : "claude-code";
54
+ process.exitCode = await runHookCli(["ask-enforce", "--provider", provider]);
55
+ }
56
+ });
40
57
  var hookCommand = defineCommand({
41
58
  meta: {
42
59
  name: "hook",
43
- description: "Agent-harness hooks installed by cleo init/upgrade; stdout is the harness hook protocol, not LAFS: cleo hook heavy-command --provider claude-code|codex|kimi|opencode"
60
+ description: "Agent-harness hooks installed by cleo init/upgrade; stdout is the harness hook protocol, not LAFS: cleo hook heavy-command|ask-enforce --provider <harness>"
44
61
  },
45
62
  subCommands: {
46
- "heavy-command": heavyCommandSubcommand
63
+ "heavy-command": heavyCommandSubcommand,
64
+ "ask-enforce": askEnforceSubcommand
47
65
  },
48
66
  async run({ cmd, rawArgs }) {
49
67
  const firstArg = rawArgs?.find((a) => !a.startsWith("-"));
@@ -54,4 +72,4 @@ var hookCommand = defineCommand({
54
72
  export {
55
73
  hookCommand
56
74
  };
57
- //# sourceMappingURL=hook-UF7J7R6D.js.map
75
+ //# sourceMappingURL=hook-BNQLJ3IB.js.map
@@ -546,15 +546,41 @@ function claudePreApprovalVerdict(command, cwd, env, core, ctx) {
546
546
  const verdict = core.claudePreApproval(command, rules.patterns, { cwd, workingDir: projectDir });
547
547
  return verdict.approved ? verdict : { approved: false, reason: `it is not pre-approved: ${verdict.reason}` };
548
548
  }
549
- var USAGE = "usage: cleo hook heavy-command [--provider claude-code|codex|kimi|opencode] < hook-input.json\n";
549
+ var USAGE = "usage: cleo hook heavy-command [--provider claude-code|codex|kimi|opencode] < hook-input.json\n cleo hook ask-enforce [--provider claude-code|codex|copilot-cli|gemini-cli|cursor|opencode|kimi] < stop-input.json\n";
550
+ function providerArg(rest) {
551
+ const flag = rest.findIndex((a) => a === "--provider" || a.startsWith("--provider="));
552
+ return flag === -1 ? "claude-code" : rest[flag]?.split("=")[1] ?? rest[flag + 1];
553
+ }
554
+ async function runAskEnforce(rest, io) {
555
+ const entry = await import("./ask-enforce-entry-ZYO5MVS6.js");
556
+ const value = providerArg(rest);
557
+ const provider = entry.ASK_ENFORCE_PROVIDERS.find((p) => p === value);
558
+ if (provider === void 0) {
559
+ io.writeStderr(USAGE);
560
+ return 1;
561
+ }
562
+ try {
563
+ const lookup = await entry.caampAskToolLookup();
564
+ const answer = await entry.askEnforceHook(provider, await io.readStdin(), io.env, lookup);
565
+ if (answer.stdout !== "") io.writeStdout(answer.stdout);
566
+ if (answer.stderr !== "") io.writeStderr(answer.stderr);
567
+ return answer.exitCode;
568
+ } catch (err) {
569
+ io.writeStderr(
570
+ `[cleo hook] ask-enforce skipped: ${err instanceof Error ? err.message : String(err)}
571
+ `
572
+ );
573
+ return 0;
574
+ }
575
+ }
550
576
  async function runHookCli(argv, io = processHookIo()) {
551
577
  const [name, ...rest] = argv;
578
+ if (name === "ask-enforce") return runAskEnforce(rest, io);
552
579
  if (name !== "heavy-command") {
553
580
  io.writeStderr(USAGE);
554
581
  return 1;
555
582
  }
556
- const flag = rest.findIndex((a) => a === "--provider" || a.startsWith("--provider="));
557
- const value = flag === -1 ? "claude-code" : rest[flag]?.split("=")[1] ?? rest[flag + 1];
583
+ const value = providerArg(rest);
558
584
  const provider = HEAVY_HOOK_PROVIDERS.find((p) => p === value);
559
585
  if (provider === void 0) {
560
586
  io.writeStderr(USAGE);
@@ -15,7 +15,7 @@
15
15
  })();
16
16
  import {
17
17
  dispatchFromCli
18
- } from "./chunk-6C5WLJTV.js";
18
+ } from "./chunk-V72T73VU.js";
19
19
  import "./chunk-6N6WGLXE.js";
20
20
  import "./chunk-4VASFLUW.js";
21
21
  import {
@@ -26,7 +26,7 @@ import "./chunk-QKMBWYAS.js";
26
26
  import "./chunk-4RGSNUUP.js";
27
27
  import "./chunk-6JSJNYH2.js";
28
28
  import "./chunk-D7BAQNV2.js";
29
- import "./chunk-2SE64OPI.js";
29
+ import "./chunk-YM7SWWQX.js";
30
30
 
31
31
  // packages/cleo/src/cli/commands/import.ts
32
32
  var importCommand = defineCommand({
@@ -86,4 +86,4 @@ var importCommand = defineCommand({
86
86
  export {
87
87
  importCommand
88
88
  };
89
- //# sourceMappingURL=import-FXDJYQ55.js.map
89
+ //# sourceMappingURL=import-P3PCQ7RG.js.map