@cleocode/cleo 2026.9.7 → 2026.9.10

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 (691) hide show
  1. package/dist/cli/index.js +3873 -2234
  2. package/package.json +14 -13
  3. package/scripts/check-cleo-tarball-size.mjs +105 -0
  4. package/scripts/copy-studio-dist.mjs +33 -9
  5. package/studio-dist/client/_app/immutable/chunks/{wI_OOyoh.js → BB7zPpV2.js} +1 -1
  6. package/studio-dist/client/_app/immutable/chunks/{D8NsLz6i.js → BOnrCZaR.js} +1 -1
  7. package/studio-dist/client/_app/immutable/chunks/{eK8hf4s7.js → BSRBuVG3.js} +1 -1
  8. package/studio-dist/client/_app/immutable/chunks/C6jhAnil.js +1 -0
  9. package/studio-dist/client/_app/immutable/chunks/C87Q3uxm.js +1 -0
  10. package/studio-dist/client/_app/immutable/chunks/{DVHIxkgs.js → CLZBEpLY.js} +1 -1
  11. package/studio-dist/client/_app/immutable/chunks/{CqF5Lomf.js → CTLGzgdN.js} +1 -1
  12. package/studio-dist/client/_app/immutable/chunks/{o1PZ6Kzq.js → CY3heNub.js} +1 -1
  13. package/studio-dist/client/_app/immutable/chunks/{RptFUp2P.js → Cge6qiwc.js} +1 -1
  14. package/studio-dist/client/_app/immutable/chunks/{BRgWBQlV.js → CnwXLaZJ.js} +1 -1
  15. package/studio-dist/client/_app/immutable/chunks/{Bxz2A0ZC.js → DEH43YwF.js} +1 -1
  16. package/studio-dist/client/_app/immutable/chunks/DGftG5oL.js +3 -0
  17. package/studio-dist/client/_app/immutable/chunks/DX_JOBSO.js +1 -0
  18. package/studio-dist/client/_app/immutable/chunks/{CEqOYim7.js → DZrdToAH.js} +1 -1
  19. package/studio-dist/client/_app/immutable/chunks/EZwHPWle.js +2 -0
  20. package/studio-dist/client/_app/immutable/chunks/cWVw9W0E.js +3 -0
  21. package/studio-dist/client/_app/immutable/chunks/{B9psmq5-.js → rB_71s8h.js} +1 -1
  22. package/studio-dist/client/_app/immutable/chunks/{JPJd4fEI.js → rUtW7Hx6.js} +1 -1
  23. package/studio-dist/client/_app/immutable/entry/app.tvu3-wbp.js +2 -0
  24. package/studio-dist/client/_app/immutable/entry/start.BS-rpdjH.js +1 -0
  25. package/studio-dist/client/_app/immutable/nodes/{0.CZzEEyVh.js → 0.DMP7swbx.js} +1 -1
  26. package/studio-dist/client/_app/immutable/nodes/{1.Bj3Opbua.js → 1.CYZMFpIp.js} +1 -1
  27. package/studio-dist/client/_app/immutable/nodes/{10.xe_Mc2Ko.js → 10.3rxHNnSx.js} +1 -1
  28. package/studio-dist/client/_app/immutable/nodes/{11.DuKPA7JD.js → 11.B6jWv3Kz.js} +1 -1
  29. package/studio-dist/client/_app/immutable/nodes/{12.BoZ_QrUS.js → 12.BrDHeTEq.js} +1 -1
  30. package/studio-dist/client/_app/immutable/nodes/{13.DFJiUiv8.js → 13.CE5bd4JV.js} +1 -1
  31. package/studio-dist/client/_app/immutable/nodes/{14.eaAlFU4w.js → 14.DgXD2LRx.js} +1 -1
  32. package/studio-dist/client/_app/immutable/nodes/{15.BfXgiwMC.js → 15.Cz1KI9Fv.js} +1 -1
  33. package/studio-dist/client/_app/immutable/nodes/{16.mEwy9cqh.js → 16.K9wYQPhb.js} +1 -1
  34. package/studio-dist/client/_app/immutable/nodes/{17.DP2QtQGn.js → 17.CtUmdfMg.js} +1 -1
  35. package/studio-dist/client/_app/immutable/nodes/{18.Bu0054sX.js → 18.mtosd0sL.js} +1 -1
  36. package/studio-dist/client/_app/immutable/nodes/{19.UWt6QbCm.js → 19.su55K8y_.js} +1 -1
  37. package/studio-dist/client/_app/immutable/nodes/{2.y5jKpHiR.js → 2.mqgFVWFQ.js} +1 -1
  38. package/studio-dist/client/_app/immutable/nodes/{20.B1AIHdkP.js → 20.NJuHLxuS.js} +1 -1
  39. package/studio-dist/client/_app/immutable/nodes/{21.CpAN71H8.js → 21.BhwhdQCq.js} +1 -1
  40. package/studio-dist/client/_app/immutable/nodes/{22.CrYKrN4c.js → 22.BmJEWwER.js} +1 -1
  41. package/studio-dist/client/_app/immutable/nodes/{23.pGRaHQjq.js → 23.CAVIJEH-.js} +1 -1
  42. package/studio-dist/client/_app/immutable/nodes/{24.BUoUu37z.js → 24.CMuXs5Sy.js} +1 -1
  43. package/studio-dist/client/_app/immutable/nodes/25.DhMBJYAo.js +39 -0
  44. package/studio-dist/client/_app/immutable/nodes/26.CJ4FA5FS.js +1 -0
  45. package/studio-dist/client/_app/immutable/nodes/{28.DcmYM7lb.js → 28.D64RBcfs.js} +1 -1
  46. package/studio-dist/client/_app/immutable/nodes/{29.lbHbMqNO.js → 29.yfuBeH1x.js} +1 -1
  47. package/studio-dist/client/_app/immutable/nodes/{3.Dyir4xXj.js → 3.y115j1d5.js} +1 -1
  48. package/studio-dist/client/_app/immutable/nodes/{30.DXj0Wm2A.js → 30.1WUv5bh9.js} +1 -1
  49. package/studio-dist/client/_app/immutable/nodes/4.D6vXYBoQ.js +1 -0
  50. package/studio-dist/client/_app/immutable/nodes/{5.VWSdP7oc.js → 5.hjw2O-4e.js} +1 -1
  51. package/studio-dist/client/_app/immutable/nodes/{6.Dl-XLwOj.js → 6.CAoDfDt6.js} +1 -1
  52. package/studio-dist/client/_app/immutable/nodes/{7.CFuC5L-y.js → 7.CLgPSQ8Z.js} +1 -1
  53. package/studio-dist/client/_app/immutable/nodes/{8.BCJ0DhOb.js → 8.zuaO1Hik.js} +1 -1
  54. package/studio-dist/client/_app/immutable/nodes/{9.Bq4SUzL9.js → 9.Cdsd85m2.js} +1 -1
  55. package/studio-dist/client/_app/version.json +1 -1
  56. package/studio-dist/server/chunks/0-BQvtFOrC.js +41 -0
  57. package/studio-dist/server/chunks/1-Bx2_yoiK.js +9 -0
  58. package/studio-dist/server/chunks/{10-DvOD4ksa.js → 10-CYLc3d5x.js} +3 -3
  59. package/studio-dist/server/chunks/{11-DMnBZ02H.js → 11-DcIYR5vm.js} +3 -3
  60. package/studio-dist/server/chunks/{12-CCyRyRWX.js → 12-WE1u104t.js} +3 -3
  61. package/studio-dist/server/chunks/{13-Dx1c3a_X.js → 13-joBDoxhK.js} +3 -3
  62. package/studio-dist/server/chunks/{14-Bo-dTCaZ.js → 14-Doj5F4uJ.js} +3 -3
  63. package/studio-dist/server/chunks/{15-BvUNl3KL.js → 15-nQTeHGD1.js} +3 -3
  64. package/studio-dist/server/chunks/{16-De6EzPSa.js → 16-CcTN0e8k.js} +5 -4
  65. package/studio-dist/server/chunks/{17-CZNsiZhi.js → 17-DWiFnzES.js} +10 -93
  66. package/studio-dist/server/chunks/{18-CbxxjZox.js → 18-Dcc9GnPo.js} +5 -4
  67. package/studio-dist/server/chunks/{19-DqHyladS.js → 19-BAQHPrMB.js} +3 -3
  68. package/studio-dist/server/chunks/{2-COvmA-ZA.js → 2-DXSVVaej.js} +10 -93
  69. package/studio-dist/server/chunks/20-DfQlGHPW.js +57 -0
  70. package/studio-dist/server/chunks/{21-DXK9ptAC.js → 21-qhGjkW41.js} +4 -31
  71. package/studio-dist/server/chunks/{22-DD5CLWJC.js → 22-Byy16hFA.js} +3 -3
  72. package/studio-dist/server/chunks/23-CZpFrGp4.js +97 -0
  73. package/studio-dist/server/chunks/24-EEysaT9T.js +67 -0
  74. package/studio-dist/server/chunks/{25-CAg6Xcmn.js → 25-CgiYn70L.js} +15 -96
  75. package/studio-dist/server/chunks/{26-_nfVTvNi.js → 26-Cfd6BaUb.js} +12 -93
  76. package/studio-dist/server/chunks/{27-C9edghG4.js → 27-Cqzlh9gZ.js} +3 -2
  77. package/studio-dist/server/chunks/{28-VemTJGyc.js → 28-DeYe2rpm.js} +8 -62
  78. package/studio-dist/server/chunks/{29-CXP-m29t.js → 29-6pjLM0Z1.js} +10 -93
  79. package/studio-dist/server/chunks/{3-B8KhfvHp.js → 3-E_fWDAkq.js} +9 -25
  80. package/studio-dist/server/chunks/{30-QiM1S4cJ.js → 30-Dw317sSW.js} +10 -93
  81. package/studio-dist/server/chunks/{31-BwdY9NnB.js → 31-Q4kHbp8j.js} +3 -2
  82. package/studio-dist/server/chunks/{4-CSaG4HjO.js → 4-C9BMSh4K.js} +4 -3
  83. package/studio-dist/server/chunks/{5-i5ry4y3C.js → 5-C0CF4WKG.js} +3 -3
  84. package/studio-dist/server/chunks/{6-DR1GWBMT.js → 6-BWyOJust.js} +3 -3
  85. package/studio-dist/server/chunks/{7-DSNwn3aQ.js → 7-CK4MK5gy.js} +3 -3
  86. package/studio-dist/server/chunks/{8-Bj0bx07K.js → 8-CiX7Xk9k.js} +3 -3
  87. package/studio-dist/server/chunks/{9-B3Tz0mZq.js → 9-Be5118w4.js} +3 -3
  88. package/studio-dist/server/chunks/{HeroHeader-v4Q9vaGr.js → HeroHeader-BrGN5WPw.js} +2 -2
  89. package/studio-dist/server/chunks/{Sparkline-BJ-GuhRd.js → Sparkline-DU_NVxz9.js} +2 -2
  90. package/studio-dist/server/chunks/{StatBlock-DHJMmOCx.js → StatBlock-jNsxycS1.js} +2 -2
  91. package/studio-dist/server/chunks/{Tabs-DzG6Bn9a.js → Tabs-DQKDflnT.js} +2 -2
  92. package/studio-dist/server/chunks/_dispatch-DTWViLGL.js +145 -0
  93. package/studio-dist/server/chunks/{_layout.svelte-BEIGQcIv.js → _layout.svelte-CL6GfET2.js} +7 -9
  94. package/studio-dist/server/chunks/{_page.svelte-al08ovKm.js → _page.svelte-6iMiGR11.js} +5 -5
  95. package/studio-dist/server/chunks/{_page.svelte-Byz2djto.js → _page.svelte-B-YXGvAW.js} +5 -5
  96. package/studio-dist/server/chunks/{_page.svelte-tYN7_LXI.js → _page.svelte-B5E6RqVb.js} +9 -11
  97. package/studio-dist/server/chunks/{_page.svelte-UYiF7YBK.js → _page.svelte-BCRyjlk2.js} +5 -5
  98. package/studio-dist/server/chunks/{_page.svelte-CCoTp89s.js → _page.svelte-BoYafqft.js} +3 -3
  99. package/studio-dist/server/chunks/{_page.svelte-nzffIbBP.js → _page.svelte-C7Wm6_HB.js} +3 -3
  100. package/studio-dist/server/chunks/{_page.svelte-C_VSL8NW.js → _page.svelte-Cgqt7ucn.js} +13 -71
  101. package/studio-dist/server/chunks/{_page.svelte-CophUar3.js → _page.svelte-CqI6hqMm.js} +5 -5
  102. package/studio-dist/server/chunks/{_page.svelte-BgwL2Gyu.js → _page.svelte-CvQ2rZZ1.js} +11 -13
  103. package/studio-dist/server/chunks/{_page.svelte-l4Z_xjl9.js → _page.svelte-CvTyJEyS.js} +9 -11
  104. package/studio-dist/server/chunks/{_page.svelte-DOWw416I.js → _page.svelte-CvzAttO9.js} +11 -13
  105. package/studio-dist/server/chunks/{_page.svelte-DYNorA0S.js → _page.svelte-Cx9Ptecp.js} +10 -67
  106. package/studio-dist/server/chunks/{_page.svelte-Wfx7ww_h.js → _page.svelte-Cx9dPjsT.js} +11 -13
  107. package/studio-dist/server/chunks/{_page.svelte-2cgtvHwW.js → _page.svelte-DGN5j-At.js} +13 -71
  108. package/studio-dist/server/chunks/{_page.svelte-BVVTrzTL.js → _page.svelte-DaheDIRs.js} +5 -5
  109. package/studio-dist/server/chunks/{_page.svelte-M5D2QnMS.js → _page.svelte-Dm8y5a8S.js} +10 -67
  110. package/studio-dist/server/chunks/{_page.svelte-B_pq-Z98.js → _page.svelte-DqXxyNsF.js} +7 -7
  111. package/studio-dist/server/chunks/{_page.svelte-C3aIui4o.js → _page.svelte-DqsbnAhk.js} +4 -4
  112. package/studio-dist/server/chunks/{_page.svelte-ksTJUXce.js → _page.svelte-Dt0_c1T-.js} +3 -3
  113. package/studio-dist/server/chunks/{_page.svelte-bGhsrIjS.js → _page.svelte-Dv6iwhu7.js} +3 -3
  114. package/studio-dist/server/chunks/{_page.svelte-BXyoMME1.js → _page.svelte-GPiHej3P.js} +5 -5
  115. package/studio-dist/server/chunks/{_page.svelte-CYDjW1R0.js → _page.svelte-LuRm8XxE.js} +5 -5
  116. package/studio-dist/server/chunks/{_page.svelte-Clbkk1gm.js → _page.svelte-Z7nL9SC-.js} +8 -9
  117. package/studio-dist/server/chunks/{_page.svelte-DUWbZjC7.js → _page.svelte-_kntHS6v.js} +4 -4
  118. package/studio-dist/server/chunks/{_page.svelte-BIlhmugm.js → _page.svelte-eiomv6Pa.js} +11 -13
  119. package/studio-dist/server/chunks/{_page.svelte-9OQphlnm.js → _page.svelte-jXJbd8Mx.js} +14 -69
  120. package/studio-dist/server/chunks/{_page.svelte-CHzXuw2Q.js → _page.svelte-me5SUosG.js} +3 -3
  121. package/studio-dist/server/chunks/{_server.ts-DSzRdt1U.js → _server.ts--2m_U4SL.js} +11 -94
  122. package/studio-dist/server/chunks/{_server.ts-ujoDR2_g.js → _server.ts--sGLmBsz.js} +10 -92
  123. package/studio-dist/server/chunks/{_server.ts-k2fApwOp.js → _server.ts-0ukyuE0I.js} +5 -60
  124. package/studio-dist/server/chunks/_server.ts-1eW2mTeh.js +40 -0
  125. package/studio-dist/server/chunks/{_server.ts-Bfr4u3EP.js → _server.ts-3LzqLzt0.js} +10 -92
  126. package/studio-dist/server/chunks/_server.ts-40h9Y46Y.js +122 -0
  127. package/studio-dist/server/chunks/_server.ts-5euivmMj.js +38 -0
  128. package/studio-dist/server/chunks/{_server.ts-CShsBkeE.js → _server.ts-B0uoay97.js} +7 -23
  129. package/studio-dist/server/chunks/{_server.ts-hL92cV7Z.js → _server.ts-B5vYKkI6.js} +9 -63
  130. package/studio-dist/server/chunks/{_server.ts-_RJXtmfi.js → _server.ts-B8dTbPHd.js} +8 -23
  131. package/studio-dist/server/chunks/{_server.ts-C3Jo-ju8.js → _server.ts-BA8Xdegq.js} +10 -92
  132. package/studio-dist/server/chunks/_server.ts-BBClE0n9.js +54 -0
  133. package/studio-dist/server/chunks/{_server.ts-ZS1_yMwR.js → _server.ts-BDwMoyZ_.js} +6 -32
  134. package/studio-dist/server/chunks/{_server.ts-sv4pA808.js → _server.ts-BE-Uhx4N.js} +5 -46
  135. package/studio-dist/server/chunks/{_server.ts-DV6pzF-M.js → _server.ts-BSHADOUJ.js} +4 -3
  136. package/studio-dist/server/chunks/_server.ts-BcsqAqXt.js +67 -0
  137. package/studio-dist/server/chunks/_server.ts-Bl9tMqwZ.js +159 -0
  138. package/studio-dist/server/chunks/_server.ts-BlzDnRI0.js +51 -0
  139. package/studio-dist/server/chunks/{_server.ts-DnE0f-iC.js → _server.ts-BtuemCsf.js} +4 -3
  140. package/studio-dist/server/chunks/{_server.ts-BPcErnS0.js → _server.ts-C2nYqbd9.js} +10 -92
  141. package/studio-dist/server/chunks/{_server.ts-4p6cp9ke.js → _server.ts-C6IDM_3I.js} +10 -92
  142. package/studio-dist/server/chunks/_server.ts-C8Z32vuL.js +45 -0
  143. package/studio-dist/server/chunks/_server.ts-CBXyadsy.js +26 -0
  144. package/studio-dist/server/chunks/{_server.ts-Do9RIPRo.js → _server.ts-CE6h2ATE.js} +5 -32
  145. package/studio-dist/server/chunks/_server.ts-CH06JVqZ.js +65 -0
  146. package/studio-dist/server/chunks/_server.ts-CNqcws-M.js +29 -0
  147. package/studio-dist/server/chunks/{_server.ts-CJA1djzJ.js → _server.ts-CPf8necd.js} +8 -92
  148. package/studio-dist/server/chunks/{_server.ts-uUx7uT2Y.js → _server.ts-CYv5YuHd.js} +6 -43
  149. package/studio-dist/server/chunks/{_server.ts-B2E7fxo9.js → _server.ts-CZ5GZRWX.js} +6 -91
  150. package/studio-dist/server/chunks/{_server.ts-DSAv66wD.js → _server.ts-CbThsyhY.js} +4 -3
  151. package/studio-dist/server/chunks/{_server.ts-DgbY5EB3.js → _server.ts-CeQolQOK.js} +10 -92
  152. package/studio-dist/server/chunks/_server.ts-ChoGyX5C.js +61 -0
  153. package/studio-dist/server/chunks/_server.ts-CjJYkLJH.js +61 -0
  154. package/studio-dist/server/chunks/{_server.ts-lPlBUIJX.js → _server.ts-CtjArzxf.js} +5 -60
  155. package/studio-dist/server/chunks/{_server.ts-Cq60m8Pw.js → _server.ts-D3QWZwt_.js} +4 -3
  156. package/studio-dist/server/chunks/{_server.ts-CkoJ2HCW.js → _server.ts-D6wP5bCh.js} +10 -92
  157. package/studio-dist/server/chunks/{_server.ts-DwTRjS4y.js → _server.ts-D7JwQTun.js} +10 -93
  158. package/studio-dist/server/chunks/_server.ts-DKFJdXPK.js +97 -0
  159. package/studio-dist/server/chunks/_server.ts-DNAPGKEF.js +55 -0
  160. package/studio-dist/server/chunks/_server.ts-DQiTiY3E.js +78 -0
  161. package/studio-dist/server/chunks/{_server.ts-BT0Uq2yq.js → _server.ts-DUyeSXbV.js} +10 -92
  162. package/studio-dist/server/chunks/{_server.ts-DRVz9D-J.js → _server.ts-DY7BwZCv.js} +9 -24
  163. package/studio-dist/server/chunks/{_server.ts-Cz0zgaUV.js → _server.ts-D_E276ms.js} +3 -2
  164. package/studio-dist/server/chunks/{_server.ts-B5g3eScF.js → _server.ts-DgtmTAp5.js} +5 -60
  165. package/studio-dist/server/chunks/{_server.ts-CboRJY0Q.js → _server.ts-DhTKaw7h.js} +10 -63
  166. package/studio-dist/server/chunks/_server.ts-DqKBSCPT.js +31 -0
  167. package/studio-dist/server/chunks/{_server.ts-CpmMp5D8.js → _server.ts-DyXBNnRD.js} +4 -3
  168. package/studio-dist/server/chunks/_server.ts-DzjUpduu.js +25 -0
  169. package/studio-dist/server/chunks/{_server.ts-CGiAXy5i.js → _server.ts-Dznqw6Dg.js} +8 -23
  170. package/studio-dist/server/chunks/{_server.ts-tKMjUFUP.js → _server.ts-EVwS7UXb.js} +4 -3
  171. package/studio-dist/server/chunks/_server.ts-J17j25VG.js +62 -0
  172. package/studio-dist/server/chunks/{_server.ts-BdN4AJ6o.js → _server.ts-VQchZxXq.js} +10 -91
  173. package/studio-dist/server/chunks/{_server.ts-C4BcDGqS.js → _server.ts-XLV5SvjH.js} +7 -63
  174. package/studio-dist/server/chunks/_server.ts-jZgqFIJz.js +45 -0
  175. package/studio-dist/server/chunks/{_server.ts-Bw7A4zgb.js → _server.ts-lyiGGv7w.js} +5 -3
  176. package/studio-dist/server/chunks/{brain-CXR7ZT7S.js → brain-xt_NeshR.js} +2 -2
  177. package/studio-dist/server/chunks/cleo-home-_XIqkZaL.js +109 -0
  178. package/studio-dist/server/chunks/{cli-action-DQcaqcfn.js → cli-action-VJPEn1pY.js} +2 -2
  179. package/studio-dist/server/chunks/{client-CgX38JBu.js → client-D71MZ7Vi.js} +5 -6
  180. package/studio-dist/server/chunks/cluster-label-layer-CysRMvhi.js +6721 -0
  181. package/studio-dist/server/chunks/connections-CWLPjwBP.js +15 -0
  182. package/studio-dist/server/chunks/{connections2-mi7mZqJM.js → connections2-DHVs5ytW.js} +32 -19
  183. package/studio-dist/server/chunks/{dev-BNpEUZI3.js → dev-Br5zieNA.js} +2 -2
  184. package/studio-dist/server/chunks/dist-BzgWhfUR.js +18748 -0
  185. package/studio-dist/server/chunks/{error.svelte-CplNulnS.js → error.svelte-BIToUowC.js} +6 -8
  186. package/studio-dist/server/chunks/{explorer-loader-BN_mkt3_.js → explorer-loader-B_uCSs9_.js} +2 -2
  187. package/studio-dist/server/chunks/exports-Dg-gdPPq.js +124 -0
  188. package/studio-dist/server/chunks/{hooks.server-DBsyphiX.js → hooks.server-CWBRp8NI.js} +10 -93
  189. package/studio-dist/server/chunks/{http-CRTZe306.js → http-DPU3HHl2.js} +3 -4
  190. package/studio-dist/server/chunks/{index-server-DocJvixA.js → index-server-BgfA6C0S.js} +17 -4
  191. package/studio-dist/server/chunks/{internal-D6eWgsHJ.js → internal-DPnIJYMs.js} +56 -92
  192. package/studio-dist/server/chunks/{memory2-Cgc_4D5q.js → memory-BZHnDZzu.js} +4 -4
  193. package/studio-dist/server/chunks/{nexus-adapter-9EL_VlGI.js → nexus-adapter-D1ryYG1Z.js} +5 -5
  194. package/studio-dist/server/chunks/{no-face-up-DcejJLy-.js → no-face-up-B_3h6Hgs.js} +2 -2
  195. package/studio-dist/server/chunks/project-context-BAXQmgch.js +188 -0
  196. package/studio-dist/server/chunks/{src-BUqGet2c.js → src-D2rW9bIF.js} +422 -5
  197. package/studio-dist/server/chunks/{stores-5DmdjPCH.js → stores-BZdYTyl7.js} +3 -3
  198. package/studio-dist/server/chunks/{tasks2-Bf9VHrv-.js → tasks-sWuEmiGW.js} +2349 -9
  199. package/studio-dist/server/chunks/{ui-DR8zOSpC.js → ui-CkQ-pCs3.js} +2 -2
  200. package/studio-dist/server/chunks/utils-g564cUMV.js +151 -0
  201. package/studio-dist/server/index.js +5 -16
  202. package/studio-dist/server/manifest.js +88 -88
  203. package/dist/cli/index.js.map +0 -6
  204. package/studio-dist/client/_app/immutable/assets/parse-worker.CSEr67Qi.js +0 -1127
  205. package/studio-dist/client/_app/immutable/chunks/2mEksghu2.js +0 -1
  206. package/studio-dist/client/_app/immutable/chunks/3KebaI-z.js +0 -53
  207. package/studio-dist/client/_app/immutable/chunks/3y2yNYEk2.js +0 -3
  208. package/studio-dist/client/_app/immutable/chunks/7UXYlaI1.js +0 -1
  209. package/studio-dist/client/_app/immutable/chunks/83VLmCvk.js +0 -4
  210. package/studio-dist/client/_app/immutable/chunks/84Rhmi6r.js +0 -2
  211. package/studio-dist/client/_app/immutable/chunks/9CV9TXTg2.js +0 -92
  212. package/studio-dist/client/_app/immutable/chunks/9LFtcz24.js +0 -1
  213. package/studio-dist/client/_app/immutable/chunks/9bLMgKwu2.js +0 -1
  214. package/studio-dist/client/_app/immutable/chunks/9kKqohVR2.js +0 -37
  215. package/studio-dist/client/_app/immutable/chunks/B-Ye28EY.js +0 -7
  216. package/studio-dist/client/_app/immutable/chunks/B-jnUl7o.js +0 -1
  217. package/studio-dist/client/_app/immutable/chunks/B0ORuy8x2.js +0 -1
  218. package/studio-dist/client/_app/immutable/chunks/B0xCM1wN2.js +0 -1
  219. package/studio-dist/client/_app/immutable/chunks/B0zCN4sX.js +0 -1
  220. package/studio-dist/client/_app/immutable/chunks/B1wt-iGW.js +0 -7
  221. package/studio-dist/client/_app/immutable/chunks/B2F3KUIU.js +0 -1
  222. package/studio-dist/client/_app/immutable/chunks/B2_6RrlL2.js +0 -1
  223. package/studio-dist/client/_app/immutable/chunks/B2qKEYxA2.js +0 -1
  224. package/studio-dist/client/_app/immutable/chunks/B2u2rNyI2.js +0 -8
  225. package/studio-dist/client/_app/immutable/chunks/B3_X3Lhd2.js +0 -1
  226. package/studio-dist/client/_app/immutable/chunks/B3sNtbqf.js +0 -1
  227. package/studio-dist/client/_app/immutable/chunks/B4NQP1Ax2.js +0 -6
  228. package/studio-dist/client/_app/immutable/chunks/BAtZg5v5.js +0 -2
  229. package/studio-dist/client/_app/immutable/chunks/BB6WKLm82.js +0 -1
  230. package/studio-dist/client/_app/immutable/chunks/BBX8UDtn.js +0 -1
  231. package/studio-dist/client/_app/immutable/chunks/BBs1U1iU.js +0 -1
  232. package/studio-dist/client/_app/immutable/chunks/BEli_4Jp2.js +0 -1
  233. package/studio-dist/client/_app/immutable/chunks/BEt2wIUt.js +0 -1
  234. package/studio-dist/client/_app/immutable/chunks/BEyM8qSW2.js +0 -1
  235. package/studio-dist/client/_app/immutable/chunks/BFZA3Dsk2.js +0 -1
  236. package/studio-dist/client/_app/immutable/chunks/BGdPweG1.js +0 -2
  237. package/studio-dist/client/_app/immutable/chunks/BGiusSqE.js +0 -1
  238. package/studio-dist/client/_app/immutable/chunks/BGmpyfzD.js +0 -1
  239. package/studio-dist/client/_app/immutable/chunks/BH5rhSIR.js +0 -1
  240. package/studio-dist/client/_app/immutable/chunks/BHciFt922.js +0 -2
  241. package/studio-dist/client/_app/immutable/chunks/BHnFwTQY.js +0 -1
  242. package/studio-dist/client/_app/immutable/chunks/BIvye3XP2.js +0 -59
  243. package/studio-dist/client/_app/immutable/chunks/BJ8mcpQA2.js +0 -1
  244. package/studio-dist/client/_app/immutable/chunks/BK17qSHw.js +0 -2
  245. package/studio-dist/client/_app/immutable/chunks/BLkgUtyb.js +0 -1
  246. package/studio-dist/client/_app/immutable/chunks/BMUko3r62.js +0 -5
  247. package/studio-dist/client/_app/immutable/chunks/BMwzdEaa.js +0 -2
  248. package/studio-dist/client/_app/immutable/chunks/BQZx6brg.js +0 -2
  249. package/studio-dist/client/_app/immutable/chunks/BUPJTTTd.js +0 -2
  250. package/studio-dist/client/_app/immutable/chunks/BVNGAeZe2.js +0 -146
  251. package/studio-dist/client/_app/immutable/chunks/BWfLryGm.js +0 -1
  252. package/studio-dist/client/_app/immutable/chunks/BXIfeogw.js +0 -1
  253. package/studio-dist/client/_app/immutable/chunks/BXTfFyUU.js +0 -1
  254. package/studio-dist/client/_app/immutable/chunks/BYJC6_MM.js +0 -2
  255. package/studio-dist/client/_app/immutable/chunks/BZV1ZJzH.js +0 -2
  256. package/studio-dist/client/_app/immutable/chunks/BZu9rehd.js +0 -1
  257. package/studio-dist/client/_app/immutable/chunks/Bbzm48C52.js +0 -1
  258. package/studio-dist/client/_app/immutable/chunks/BfGnlwjH.js +0 -1
  259. package/studio-dist/client/_app/immutable/chunks/Bfjb9LPp.js +0 -2
  260. package/studio-dist/client/_app/immutable/chunks/BieFfu-R.js +0 -1
  261. package/studio-dist/client/_app/immutable/chunks/Bmv63uXe2.js +0 -1
  262. package/studio-dist/client/_app/immutable/chunks/BtBW1A0u.js +0 -1
  263. package/studio-dist/client/_app/immutable/chunks/BxISGQCl2.js +0 -1
  264. package/studio-dist/client/_app/immutable/chunks/ByNR_KvT.js +0 -2
  265. package/studio-dist/client/_app/immutable/chunks/BzjhD6Hr2.js +0 -2
  266. package/studio-dist/client/_app/immutable/chunks/BzpWnq0c2.js +0 -1
  267. package/studio-dist/client/_app/immutable/chunks/C-yJVcyI2.js +0 -1
  268. package/studio-dist/client/_app/immutable/chunks/C0cQ-8kS2.js +0 -1
  269. package/studio-dist/client/_app/immutable/chunks/C1vWmhYe.js +0 -48
  270. package/studio-dist/client/_app/immutable/chunks/C1w6bBje.js +0 -1
  271. package/studio-dist/client/_app/immutable/chunks/C243sn7r.js +0 -4
  272. package/studio-dist/client/_app/immutable/chunks/C2oZaDvt.js +0 -67
  273. package/studio-dist/client/_app/immutable/chunks/C3OziSQx.js +0 -1
  274. package/studio-dist/client/_app/immutable/chunks/C3hFPbMK.js +0 -2
  275. package/studio-dist/client/_app/immutable/chunks/C4P9oFvU2.js +0 -6
  276. package/studio-dist/client/_app/immutable/chunks/C5Nlanei.js +0 -8
  277. package/studio-dist/client/_app/immutable/chunks/C6KBAXPl.js +0 -15
  278. package/studio-dist/client/_app/immutable/chunks/C8MZnWta.js +0 -1
  279. package/studio-dist/client/_app/immutable/chunks/CAoan3K12.js +0 -1
  280. package/studio-dist/client/_app/immutable/chunks/CBpcINYH.js +0 -29
  281. package/studio-dist/client/_app/immutable/chunks/CE7phgWq.js +0 -1
  282. package/studio-dist/client/_app/immutable/chunks/CFb4Co_K.js +0 -2
  283. package/studio-dist/client/_app/immutable/chunks/CGWoRK3t2.js +0 -1
  284. package/studio-dist/client/_app/immutable/chunks/CH3t4xo1.js +0 -1
  285. package/studio-dist/client/_app/immutable/chunks/CHJgk6g-.js +0 -1
  286. package/studio-dist/client/_app/immutable/chunks/CHgPjuDQ.js +0 -17
  287. package/studio-dist/client/_app/immutable/chunks/CHkCZrnr.js +0 -1
  288. package/studio-dist/client/_app/immutable/chunks/CI_91WUN.js +0 -4
  289. package/studio-dist/client/_app/immutable/chunks/CJ7-hP0H.js +0 -1
  290. package/studio-dist/client/_app/immutable/chunks/CKIrNnkY2.js +0 -1
  291. package/studio-dist/client/_app/immutable/chunks/CKoQ7Ko5.js +0 -1
  292. package/studio-dist/client/_app/immutable/chunks/CM8O4zqs.js +0 -56
  293. package/studio-dist/client/_app/immutable/chunks/CMz3AVRO.js +0 -1
  294. package/studio-dist/client/_app/immutable/chunks/CNToUR3P.js +0 -13
  295. package/studio-dist/client/_app/immutable/chunks/CNuQG1yl2.js +0 -1
  296. package/studio-dist/client/_app/immutable/chunks/CQLIZtxj.js +0 -2
  297. package/studio-dist/client/_app/immutable/chunks/CQYVNgM0.js +0 -20
  298. package/studio-dist/client/_app/immutable/chunks/CQeVOmFO2.js +0 -1
  299. package/studio-dist/client/_app/immutable/chunks/CSPHHq09.js +0 -1
  300. package/studio-dist/client/_app/immutable/chunks/CTJEdbIn.js +0 -1
  301. package/studio-dist/client/_app/immutable/chunks/CTTT3wYw.js +0 -35
  302. package/studio-dist/client/_app/immutable/chunks/CV4ck7fz.js +0 -2
  303. package/studio-dist/client/_app/immutable/chunks/CXQrVnHf.js +0 -11
  304. package/studio-dist/client/_app/immutable/chunks/CXTCtOUQ.js +0 -1
  305. package/studio-dist/client/_app/immutable/chunks/C_CsU7Qq.js +0 -1
  306. package/studio-dist/client/_app/immutable/chunks/C_IZx3682.js +0 -2
  307. package/studio-dist/client/_app/immutable/chunks/CbTnu2Po2.js +0 -1
  308. package/studio-dist/client/_app/immutable/chunks/Cba8RZ1a2.js +0 -8
  309. package/studio-dist/client/_app/immutable/chunks/Cc8xxDr5.js +0 -1
  310. package/studio-dist/client/_app/immutable/chunks/CdPxoldu.js +0 -1
  311. package/studio-dist/client/_app/immutable/chunks/CdqDTozW.js +0 -1
  312. package/studio-dist/client/_app/immutable/chunks/CdsmcCfC.js +0 -25
  313. package/studio-dist/client/_app/immutable/chunks/CeYPAoY9.js +0 -1
  314. package/studio-dist/client/_app/immutable/chunks/Cf4kGS9y.js +0 -1
  315. package/studio-dist/client/_app/immutable/chunks/CfWEqXtJ2.js +0 -1
  316. package/studio-dist/client/_app/immutable/chunks/Cg7Wj2b9.js +0 -2
  317. package/studio-dist/client/_app/immutable/chunks/CgTpKZfi2.js +0 -1
  318. package/studio-dist/client/_app/immutable/chunks/Chpy9ca7.js +0 -2
  319. package/studio-dist/client/_app/immutable/chunks/CiLKuLrQ.js +0 -4
  320. package/studio-dist/client/_app/immutable/chunks/CjNDJjwu.js +0 -1
  321. package/studio-dist/client/_app/immutable/chunks/Cjde0ZKr2.js +0 -1
  322. package/studio-dist/client/_app/immutable/chunks/Cjgnade02.js +0 -3
  323. package/studio-dist/client/_app/immutable/chunks/Ckp90om52.js +0 -2
  324. package/studio-dist/client/_app/immutable/chunks/ClAPVhCD.js +0 -1
  325. package/studio-dist/client/_app/immutable/chunks/ClT89UdO.js +0 -11
  326. package/studio-dist/client/_app/immutable/chunks/CnJf5tML.js +0 -1
  327. package/studio-dist/client/_app/immutable/chunks/CpF4Rrcc2.js +0 -1
  328. package/studio-dist/client/_app/immutable/chunks/CqCka5yX2.js +0 -1
  329. package/studio-dist/client/_app/immutable/chunks/CqtqZrOl.js +0 -1
  330. package/studio-dist/client/_app/immutable/chunks/CrJdywQt.js +0 -1
  331. package/studio-dist/client/_app/immutable/chunks/Cs0zC2l2.js +0 -1
  332. package/studio-dist/client/_app/immutable/chunks/CsMn5fBs.js +0 -141
  333. package/studio-dist/client/_app/immutable/chunks/CsvKLHQQ2.js +0 -2
  334. package/studio-dist/client/_app/immutable/chunks/Ctaresvj.js +0 -1
  335. package/studio-dist/client/_app/immutable/chunks/Ctetf8vc2.js +0 -2
  336. package/studio-dist/client/_app/immutable/chunks/Cv7yW6MG.js +0 -1
  337. package/studio-dist/client/_app/immutable/chunks/CxRIz-Zd.js +0 -1
  338. package/studio-dist/client/_app/immutable/chunks/CxbvtjIH.js +0 -3
  339. package/studio-dist/client/_app/immutable/chunks/CxfeoXkZ.js +0 -2
  340. package/studio-dist/client/_app/immutable/chunks/CySLscL2.js +0 -2
  341. package/studio-dist/client/_app/immutable/chunks/D0PKQAbM.js +0 -87
  342. package/studio-dist/client/_app/immutable/chunks/D0WQsLTu.js +0 -1
  343. package/studio-dist/client/_app/immutable/chunks/D1LBVx6r2.js +0 -1
  344. package/studio-dist/client/_app/immutable/chunks/D1NlFXu9.js +0 -1
  345. package/studio-dist/client/_app/immutable/chunks/D1QfC4hu2.js +0 -1
  346. package/studio-dist/client/_app/immutable/chunks/D1yrHAn72.js +0 -1
  347. package/studio-dist/client/_app/immutable/chunks/D2pa4reh.js +0 -7
  348. package/studio-dist/client/_app/immutable/chunks/D3QsWcIw2.js +0 -2
  349. package/studio-dist/client/_app/immutable/chunks/D4OkQuPl2.js +0 -1
  350. package/studio-dist/client/_app/immutable/chunks/D6UDnATk2.js +0 -1
  351. package/studio-dist/client/_app/immutable/chunks/D7w7HllH.js +0 -38
  352. package/studio-dist/client/_app/immutable/chunks/D93KpglN.js +0 -1
  353. package/studio-dist/client/_app/immutable/chunks/D99fQj2G2.js +0 -1
  354. package/studio-dist/client/_app/immutable/chunks/DB5ifLM-.js +0 -3
  355. package/studio-dist/client/_app/immutable/chunks/DBhP8ifO2.js +0 -15
  356. package/studio-dist/client/_app/immutable/chunks/DF_4OWhj.js +0 -2
  357. package/studio-dist/client/_app/immutable/chunks/DFpNK1vs2.js +0 -1
  358. package/studio-dist/client/_app/immutable/chunks/DGRYMk-W.js +0 -142
  359. package/studio-dist/client/_app/immutable/chunks/DH3CcQwq.js +0 -1
  360. package/studio-dist/client/_app/immutable/chunks/DHQfJeLU.js +0 -4
  361. package/studio-dist/client/_app/immutable/chunks/DL89yEDy2.js +0 -1
  362. package/studio-dist/client/_app/immutable/chunks/DLRku_0p2.js +0 -2
  363. package/studio-dist/client/_app/immutable/chunks/DMZkjPYT2.js +0 -1
  364. package/studio-dist/client/_app/immutable/chunks/DNP72foU.js +0 -1
  365. package/studio-dist/client/_app/immutable/chunks/DO2GztVm.js +0 -1
  366. package/studio-dist/client/_app/immutable/chunks/DOVNXmCK2.js +0 -1
  367. package/studio-dist/client/_app/immutable/chunks/DOqzs8kl2.js +0 -1
  368. package/studio-dist/client/_app/immutable/chunks/DQnR63hh2.js +0 -7
  369. package/studio-dist/client/_app/immutable/chunks/DTxtWPkw.js +0 -1
  370. package/studio-dist/client/_app/immutable/chunks/DVDgCC9A2.js +0 -20
  371. package/studio-dist/client/_app/immutable/chunks/DVVCJYjz.js +0 -1
  372. package/studio-dist/client/_app/immutable/chunks/DWRhYUMj2.js +0 -1
  373. package/studio-dist/client/_app/immutable/chunks/DWavBJBI.js +0 -4
  374. package/studio-dist/client/_app/immutable/chunks/DXDSWRw-.js +0 -1
  375. package/studio-dist/client/_app/immutable/chunks/DXoHaH4a.js +0 -2
  376. package/studio-dist/client/_app/immutable/chunks/DXpCX2Hi.js +0 -1
  377. package/studio-dist/client/_app/immutable/chunks/DYP3EJMY.js +0 -1
  378. package/studio-dist/client/_app/immutable/chunks/DYQphR_V.js +0 -1
  379. package/studio-dist/client/_app/immutable/chunks/DYUlIivP.js +0 -1
  380. package/studio-dist/client/_app/immutable/chunks/DYo2ye8X2.js +0 -1
  381. package/studio-dist/client/_app/immutable/chunks/DYxFu8yV.js +0 -1
  382. package/studio-dist/client/_app/immutable/chunks/DZ66sRb6.js +0 -1
  383. package/studio-dist/client/_app/immutable/chunks/D_XTiylm2.js +0 -1
  384. package/studio-dist/client/_app/immutable/chunks/DaRv9jn22.js +0 -1
  385. package/studio-dist/client/_app/immutable/chunks/DaXb9i_E.js +0 -1
  386. package/studio-dist/client/_app/immutable/chunks/Dccf4VP2.js +0 -24
  387. package/studio-dist/client/_app/immutable/chunks/DdODs-Sb.js +0 -1
  388. package/studio-dist/client/_app/immutable/chunks/DdekYWer.js +0 -2
  389. package/studio-dist/client/_app/immutable/chunks/DeHaovsF.js +0 -1
  390. package/studio-dist/client/_app/immutable/chunks/DeRRkRO52.js +0 -1
  391. package/studio-dist/client/_app/immutable/chunks/DeWI5qCn.js +0 -1
  392. package/studio-dist/client/_app/immutable/chunks/DfivR-Md.js +0 -1
  393. package/studio-dist/client/_app/immutable/chunks/DgmxpSo7.js +0 -1
  394. package/studio-dist/client/_app/immutable/chunks/DhPLWrun2.js +0 -1
  395. package/studio-dist/client/_app/immutable/chunks/DhhrVdfi.js +0 -2
  396. package/studio-dist/client/_app/immutable/chunks/Djr2dbcc2.js +0 -37
  397. package/studio-dist/client/_app/immutable/chunks/DjuRo5vv.js +0 -1
  398. package/studio-dist/client/_app/immutable/chunks/Djz4EDzO.js +0 -1
  399. package/studio-dist/client/_app/immutable/chunks/DkRfaw-K2.js +0 -1
  400. package/studio-dist/client/_app/immutable/chunks/DksB5g4W2.js +0 -1
  401. package/studio-dist/client/_app/immutable/chunks/Dmqenb5z2.js +0 -1
  402. package/studio-dist/client/_app/immutable/chunks/DnbToVyf.js +0 -2
  403. package/studio-dist/client/_app/immutable/chunks/DpGZwlmj.js +0 -1
  404. package/studio-dist/client/_app/immutable/chunks/Dq0lE5C32.js +0 -1
  405. package/studio-dist/client/_app/immutable/chunks/Dq54XqHT2.js +0 -1
  406. package/studio-dist/client/_app/immutable/chunks/DqK84mbb.js +0 -1
  407. package/studio-dist/client/_app/immutable/chunks/DqjFtSJD.js +0 -2
  408. package/studio-dist/client/_app/immutable/chunks/DrKWWDpL.js +0 -1
  409. package/studio-dist/client/_app/immutable/chunks/DsQIgu-4.js +0 -1
  410. package/studio-dist/client/_app/immutable/chunks/DsqdgJHS2.js +0 -1
  411. package/studio-dist/client/_app/immutable/chunks/DtNkZUkq.js +0 -17
  412. package/studio-dist/client/_app/immutable/chunks/DutIls4V2.js +0 -1
  413. package/studio-dist/client/_app/immutable/chunks/DvxYFW4C.js +0 -1
  414. package/studio-dist/client/_app/immutable/chunks/Dwp-76GQ.js +0 -2
  415. package/studio-dist/client/_app/immutable/chunks/DxSZd548.js +0 -1
  416. package/studio-dist/client/_app/immutable/chunks/DxiUMhk0.js +0 -5
  417. package/studio-dist/client/_app/immutable/chunks/DxslLswf.js +0 -23
  418. package/studio-dist/client/_app/immutable/chunks/Dy7EjGgb2.js +0 -9
  419. package/studio-dist/client/_app/immutable/chunks/DyGQ_VXC.js +0 -3
  420. package/studio-dist/client/_app/immutable/chunks/DySe3kTV2.js +0 -1
  421. package/studio-dist/client/_app/immutable/chunks/DyzE2Uxw.js +0 -1
  422. package/studio-dist/client/_app/immutable/chunks/DzhuJaxE2.js +0 -2
  423. package/studio-dist/client/_app/immutable/chunks/FmMHyrh6.js +0 -1
  424. package/studio-dist/client/_app/immutable/chunks/Gxs0J274.js +0 -5
  425. package/studio-dist/client/_app/immutable/chunks/HwtzDYxN.js +0 -2
  426. package/studio-dist/client/_app/immutable/chunks/ITRz_Q7H2.js +0 -15
  427. package/studio-dist/client/_app/immutable/chunks/KDNP98XY2.js +0 -1
  428. package/studio-dist/client/_app/immutable/chunks/LmVjFhpk2.js +0 -1
  429. package/studio-dist/client/_app/immutable/chunks/MiAejGV_.js +0 -1
  430. package/studio-dist/client/_app/immutable/chunks/Ml4JR6Jz2.js +0 -2
  431. package/studio-dist/client/_app/immutable/chunks/NU5S3nNs2.js +0 -2
  432. package/studio-dist/client/_app/immutable/chunks/Oh5zPjv3.js +0 -2
  433. package/studio-dist/client/_app/immutable/chunks/QZkvJ9vi.js +0 -1
  434. package/studio-dist/client/_app/immutable/chunks/Rbn8UpBm.js +0 -1
  435. package/studio-dist/client/_app/immutable/chunks/SPX3gYwn2.js +0 -1
  436. package/studio-dist/client/_app/immutable/chunks/TX-23QW3.js +0 -3
  437. package/studio-dist/client/_app/immutable/chunks/UyeQuL132.js +0 -12
  438. package/studio-dist/client/_app/immutable/chunks/VQszoXcV.js +0 -1
  439. package/studio-dist/client/_app/immutable/chunks/VtZsEMxD.js +0 -1
  440. package/studio-dist/client/_app/immutable/chunks/W2IeK61p2.js +0 -1
  441. package/studio-dist/client/_app/immutable/chunks/Wadww7ZG.js +0 -1
  442. package/studio-dist/client/_app/immutable/chunks/WgfA1zWk2.js +0 -1
  443. package/studio-dist/client/_app/immutable/chunks/WxIgAS1f.js +0 -21
  444. package/studio-dist/client/_app/immutable/chunks/XrsBoOj9.js +0 -2
  445. package/studio-dist/client/_app/immutable/chunks/Y3PX4poR.js +0 -2
  446. package/studio-dist/client/_app/immutable/chunks/YxfwqiF32.js +0 -1
  447. package/studio-dist/client/_app/immutable/chunks/Z7uO1YaO.js +0 -1
  448. package/studio-dist/client/_app/immutable/chunks/_4ykQk_8.js +0 -1
  449. package/studio-dist/client/_app/immutable/chunks/_kRcZFVn.js +0 -1
  450. package/studio-dist/client/_app/immutable/chunks/aQNM7eVA2.js +0 -1
  451. package/studio-dist/client/_app/immutable/chunks/bHKz_Fb2.js +0 -45
  452. package/studio-dist/client/_app/immutable/chunks/bJRyRGSZ.js +0 -1
  453. package/studio-dist/client/_app/immutable/chunks/dlzF6lnR.js +0 -1
  454. package/studio-dist/client/_app/immutable/chunks/fjRbpfEr2.js +0 -26
  455. package/studio-dist/client/_app/immutable/chunks/imLk4if5.js +0 -3
  456. package/studio-dist/client/_app/immutable/chunks/lgRG0R-32.js +0 -1
  457. package/studio-dist/client/_app/immutable/chunks/mFhCjxQJ2.js +0 -1
  458. package/studio-dist/client/_app/immutable/chunks/mgnH6qYg.js +0 -1
  459. package/studio-dist/client/_app/immutable/chunks/n6M_5LoW.js +0 -1
  460. package/studio-dist/client/_app/immutable/chunks/nLIOiDZp2.js +0 -1
  461. package/studio-dist/client/_app/immutable/chunks/nab7WB3u2.js +0 -1
  462. package/studio-dist/client/_app/immutable/chunks/orUmAKoW2.js +0 -1
  463. package/studio-dist/client/_app/immutable/chunks/p-fLQDfY2.js +0 -63
  464. package/studio-dist/client/_app/immutable/chunks/s0-WkOGk2.js +0 -1
  465. package/studio-dist/client/_app/immutable/chunks/sPuXfbUF.js +0 -1
  466. package/studio-dist/client/_app/immutable/chunks/t4h0vrqR2.js +0 -2
  467. package/studio-dist/client/_app/immutable/chunks/uE83FKL-.js +0 -1
  468. package/studio-dist/client/_app/immutable/chunks/uzhXlm0g2.js +0 -1
  469. package/studio-dist/client/_app/immutable/chunks/vTrEsGlD2.js +0 -1
  470. package/studio-dist/client/_app/immutable/chunks/xJgCk3dx2.js +0 -28
  471. package/studio-dist/client/_app/immutable/chunks/z0Mt579s2.js +0 -13
  472. package/studio-dist/client/_app/immutable/entry/app.BoQ7cgT2.js +0 -2
  473. package/studio-dist/client/_app/immutable/entry/start.Cg1v8DU4.js +0 -1
  474. package/studio-dist/client/_app/immutable/nodes/25.ddZ1_EFk.js +0 -1
  475. package/studio-dist/client/_app/immutable/nodes/26.6OcmQbLV.js +0 -1
  476. package/studio-dist/client/_app/immutable/nodes/4.CCjOEwVU.js +0 -1
  477. package/studio-dist/server/chunks/0-CvsKDxQ6.js +0 -126
  478. package/studio-dist/server/chunks/1-ck_x2Hf0.js +0 -9
  479. package/studio-dist/server/chunks/20-DVU22np7.js +0 -142
  480. package/studio-dist/server/chunks/23-D_tUnnoc.js +0 -181
  481. package/studio-dist/server/chunks/24-CVlymvLF.js +0 -151
  482. package/studio-dist/server/chunks/AwsRestJsonProtocol-BZuoNBmL.js +0 -416
  483. package/studio-dist/server/chunks/UnionSerde-BflIkhKj.js +0 -2653
  484. package/studio-dist/server/chunks/_dispatch-ncuRztUQ.js +0 -5597
  485. package/studio-dist/server/chunks/_server.ts-4NyKAneX.js +0 -116
  486. package/studio-dist/server/chunks/_server.ts-7hGdxdEI.js +0 -136
  487. package/studio-dist/server/chunks/_server.ts-B6b3b-yA.js +0 -131
  488. package/studio-dist/server/chunks/_server.ts-BOgGqaZp.js +0 -144
  489. package/studio-dist/server/chunks/_server.ts-BV1HiKZ0.js +0 -120
  490. package/studio-dist/server/chunks/_server.ts-BWp3g6Cr.js +0 -110
  491. package/studio-dist/server/chunks/_server.ts-C5NF-UgC.js +0 -122
  492. package/studio-dist/server/chunks/_server.ts-CDMurH5m.js +0 -2301
  493. package/studio-dist/server/chunks/_server.ts-COJHCgbq.js +0 -127
  494. package/studio-dist/server/chunks/_server.ts-CUl-Utkt.js +0 -148
  495. package/studio-dist/server/chunks/_server.ts-D0GAFJRb.js +0 -156
  496. package/studio-dist/server/chunks/_server.ts-DA6p3pmi.js +0 -117
  497. package/studio-dist/server/chunks/_server.ts-DThYFaZj.js +0 -160
  498. package/studio-dist/server/chunks/_server.ts-D_3Pm0gr.js +0 -179
  499. package/studio-dist/server/chunks/_server.ts-DcHxdMsm.js +0 -144
  500. package/studio-dist/server/chunks/_server.ts-Dlfadh2I.js +0 -144
  501. package/studio-dist/server/chunks/_server.ts-JallJnps.js +0 -240
  502. package/studio-dist/server/chunks/_server.ts-NEFTbJpM.js +0 -142
  503. package/studio-dist/server/chunks/_server.ts-d-2NvRwX.js +0 -122
  504. package/studio-dist/server/chunks/_server.ts-rUWMLkIw.js +0 -146
  505. package/studio-dist/server/chunks/abort-events-CDRAJSqb.js +0 -30
  506. package/studio-dist/server/chunks/adapters-BkMgPNUM.js +0 -359
  507. package/studio-dist/server/chunks/adapters2-CQ3PzoaK.js +0 -28
  508. package/studio-dist/server/chunks/api-mode2-3W-I1-XO.js +0 -36
  509. package/studio-dist/server/chunks/api2-CmNQzb0b.js +0 -96
  510. package/studio-dist/server/chunks/attention-consolidate-CidG1jfH.js +0 -485
  511. package/studio-dist/server/chunks/audit3-DMO_fUGp.js +0 -52
  512. package/studio-dist/server/chunks/auto-extract-B84La1Vs.js +0 -34
  513. package/studio-dist/server/chunks/brain-consolidator-JGm6mzFf.js +0 -373
  514. package/studio-dist/server/chunks/brain-doctor-Dc2WqVbs.js +0 -311
  515. package/studio-dist/server/chunks/brain-embedding-Djw9ekXu.js +0 -42
  516. package/studio-dist/server/chunks/brain-lifecycle-BOOa876K.js +0 -969
  517. package/studio-dist/server/chunks/brain-maintenance-U6VvsvmK.js +0 -133
  518. package/studio-dist/server/chunks/brain-maintenance2-CwVSmfDT.js +0 -43
  519. package/studio-dist/server/chunks/brain-retrieval2-exR8mdgh.js +0 -751
  520. package/studio-dist/server/chunks/brain-search-CpSh-SNi.js +0 -48
  521. package/studio-dist/server/chunks/brain-search2-CwI2cXgg.js +0 -716
  522. package/studio-dist/server/chunks/brain-similarity-DI4yzm9e.js +0 -113
  523. package/studio-dist/server/chunks/brain-stdp2-BxSBIlSr.js +0 -960
  524. package/studio-dist/server/chunks/brain-writer-handlers-Dwu0QCAA.js +0 -188
  525. package/studio-dist/server/chunks/brain-writer-thread-6n7wI7Gy.js +0 -360
  526. package/studio-dist/server/chunks/branch-lock-Cq7zzmFK.js +0 -1118
  527. package/studio-dist/server/chunks/branch-lock2-CmDc4CZW.js +0 -45
  528. package/studio-dist/server/chunks/cancelled-child-waiver-audit-DkesrN83.js +0 -54
  529. package/studio-dist/server/chunks/catalog-model-resolver-Bas9qnoP.js +0 -9
  530. package/studio-dist/server/chunks/catalog-model-resolver2-Cexk2TN0.js +0 -237
  531. package/studio-dist/server/chunks/catalog-resolver-CLot3XJO.js +0 -260
  532. package/studio-dist/server/chunks/catalog-resolver2-JmKb91kY.js +0 -33
  533. package/studio-dist/server/chunks/chunk-DDP5xfzh.js +0 -39
  534. package/studio-dist/server/chunks/cleo-home-CCfe6kAQ.js +0 -64
  535. package/studio-dist/server/chunks/concrete-session2-bb_vxJ2N.js +0 -43
  536. package/studio-dist/server/chunks/config-DHj9CcFs.js +0 -386
  537. package/studio-dist/server/chunks/config2-F6PPIn7D.js +0 -35
  538. package/studio-dist/server/chunks/connections-BMGJVYcS.js +0 -98
  539. package/studio-dist/server/chunks/credential-pool-vF6NdtT9.js +0 -4600
  540. package/studio-dist/server/chunks/credentials-C7EJFf5O.js +0 -35
  541. package/studio-dist/server/chunks/credentials-store-CFygIuB2.js +0 -35
  542. package/studio-dist/server/chunks/cross-db-cleanup-1LWTUKPi.js +0 -147
  543. package/studio-dist/server/chunks/data-accessor-CWgVndbR.js +0 -72
  544. package/studio-dist/server/chunks/data-safety-central-DaFxK27G.js +0 -683
  545. package/studio-dist/server/chunks/decisions-CmVXV2-H.js +0 -574
  546. package/studio-dist/server/chunks/decisions2-XQsSYdxa.js +0 -48
  547. package/studio-dist/server/chunks/depends-waiver-audit-CUmlBYHx.js +0 -56
  548. package/studio-dist/server/chunks/dialectic-evaluator2-BOyyXhdI.js +0 -96
  549. package/studio-dist/server/chunks/dist-es2-DQy2Mjn_.js +0 -43
  550. package/studio-dist/server/chunks/dist-es3-CBygU4n5.js +0 -365
  551. package/studio-dist/server/chunks/dist-es4-CavbNu4B.js +0 -162
  552. package/studio-dist/server/chunks/dist-es5-Crpm8Wsl.js +0 -465
  553. package/studio-dist/server/chunks/dist-es6-CgePHzh4.js +0 -99
  554. package/studio-dist/server/chunks/dist-es7-k6c5GEd7.js +0 -311
  555. package/studio-dist/server/chunks/dist-es8-Bd9v0_pE.js +0 -91
  556. package/studio-dist/server/chunks/dist3-23bsJhRw.js +0 -27
  557. package/studio-dist/server/chunks/dist4-DmC1zSXi.js +0 -35618
  558. package/studio-dist/server/chunks/dual-scope-db-DKnWu1KM.js +0 -5672
  559. package/studio-dist/server/chunks/dual-scope-db2-Dht3luRw.js +0 -31
  560. package/studio-dist/server/chunks/duplicate-bypass-audit-BN5w1H2y.js +0 -36
  561. package/studio-dist/server/chunks/duplicate-detector-CaVFMKdE.js +0 -692
  562. package/studio-dist/server/chunks/edge-types-CgBvb0w1.js +0 -28
  563. package/studio-dist/server/chunks/embedding-local-xEnym8Ho.js +0 -92
  564. package/studio-dist/server/chunks/event-streams-Bi2p_fVo.js +0 -232
  565. package/studio-dist/server/chunks/execution-learning-BVCw7Plq.js +0 -278
  566. package/studio-dist/server/chunks/exodus-BBuuN6aA.js +0 -2594
  567. package/studio-dist/server/chunks/externalDataInterceptor-C3C4cObe.js +0 -21
  568. package/studio-dist/server/chunks/extraction-gate-DDNBq7gu.js +0 -48
  569. package/studio-dist/server/chunks/extraction-gate2-D77EZBQ6.js +0 -375
  570. package/studio-dist/server/chunks/getSSOTokenFromFile-yZAJxDci.js +0 -21
  571. package/studio-dist/server/chunks/governor2-CtfV3wfX.js +0 -923
  572. package/studio-dist/server/chunks/graph-auto-populate-Dmsr9ZJM.js +0 -42
  573. package/studio-dist/server/chunks/graph-auto-populate2-Cz0qeebM.js +0 -156
  574. package/studio-dist/server/chunks/graph-memory-bridge-CY8ft_d7.js +0 -43
  575. package/studio-dist/server/chunks/graph-memory-bridge2-Cd0XZwqc.js +0 -429
  576. package/studio-dist/server/chunks/handler-helpers-AANBGA_p.js +0 -49
  577. package/studio-dist/server/chunks/hash-Cm6yMET4.js +0 -14
  578. package/studio-dist/server/chunks/health-monitor-FepUZN1m.js +0 -106
  579. package/studio-dist/server/chunks/identity-DRpurt56.js +0 -30
  580. package/studio-dist/server/chunks/identity2-DeAB5RXE.js +0 -114
  581. package/studio-dist/server/chunks/index-61916rmV.js +0 -632
  582. package/studio-dist/server/chunks/index-DAgVDouG.js +0 -268
  583. package/studio-dist/server/chunks/index-Dtt_h58T.js +0 -2116
  584. package/studio-dist/server/chunks/indexes-DZ52grq6.js +0 -615
  585. package/studio-dist/server/chunks/json-Bfixam3g.js +0 -126
  586. package/studio-dist/server/chunks/learnings-D6Y3YGMU.js +0 -47
  587. package/studio-dist/server/chunks/learnings2-MwBdR9vb.js +0 -171
  588. package/studio-dist/server/chunks/lifecycle-ops2-V2CR5-7X.js +0 -121
  589. package/studio-dist/server/chunks/list-BhObczvn.js +0 -229
  590. package/studio-dist/server/chunks/living-brain2-j0B_Ir8j.js +0 -285
  591. package/studio-dist/server/chunks/llm-backend-resolver-D4ANvUPL.js +0 -295
  592. package/studio-dist/server/chunks/llm-extraction-DVCu4heR.js +0 -408
  593. package/studio-dist/server/chunks/loadSharedConfigFiles-umvW7kuz.js +0 -73
  594. package/studio-dist/server/chunks/loadSso-iidd5iKx.js +0 -599
  595. package/studio-dist/server/chunks/local-model-fit-B0TxifnX.js +0 -53
  596. package/studio-dist/server/chunks/local-model-fit2-BMqo6GJm.js +0 -2664
  597. package/studio-dist/server/chunks/lock-CA7d6lj7.js +0 -57
  598. package/studio-dist/server/chunks/logger-DQIoyZbq.js +0 -34
  599. package/studio-dist/server/chunks/memory-BUbicBbE.js +0 -618
  600. package/studio-dist/server/chunks/memory-accessor-i3P-RHSg.js +0 -42
  601. package/studio-dist/server/chunks/memory-accessor2-B981tHDR.js +0 -467
  602. package/studio-dist/server/chunks/memory-bridge-BOlEWg9w.js +0 -424
  603. package/studio-dist/server/chunks/memory-sqlite2-B7dq8doO.js +0 -42
  604. package/studio-dist/server/chunks/model-runner2-B71xjp4y.js +0 -43
  605. package/studio-dist/server/chunks/mvi-helpers-BNsJ8ZpQ.js +0 -59
  606. package/studio-dist/server/chunks/nexus-plasticity-BTfU8cW_.js +0 -269
  607. package/studio-dist/server/chunks/nexus-risk-audit-p379-TU5.js +0 -54
  608. package/studio-dist/server/chunks/nexus-schema-zeygY8OD.js +0 -11
  609. package/studio-dist/server/chunks/nexus-schema2-DP0Qd7CA.js +0 -444
  610. package/studio-dist/server/chunks/nexus-sqlite-BVNIpwc7.js +0 -36
  611. package/studio-dist/server/chunks/nexus-sqlite2-BBfY2xnY.js +0 -1103
  612. package/studio-dist/server/chunks/node-http-handler-CJI8kn7X.js +0 -386
  613. package/studio-dist/server/chunks/observe-Bo9veHGe.js +0 -47
  614. package/studio-dist/server/chunks/observe2-wzO0MaMY.js +0 -245
  615. package/studio-dist/server/chunks/observer-reflector-BwNOuq1d.js +0 -62
  616. package/studio-dist/server/chunks/observer-reflector2-ggtC1hmk.js +0 -478
  617. package/studio-dist/server/chunks/on-open-Wpcw7DV4.js +0 -740
  618. package/studio-dist/server/chunks/open-cleo-db--8sYNaYY.js +0 -70
  619. package/studio-dist/server/chunks/parseKnownFiles-Dg0pMFcT.js +0 -18
  620. package/studio-dist/server/chunks/parseUrl-qgGfl-Vh.js +0 -120
  621. package/studio-dist/server/chunks/paths-CV7S5-Zm.js +0 -30012
  622. package/studio-dist/server/chunks/patterns-lh5kn13I.js +0 -48
  623. package/studio-dist/server/chunks/patterns2-CzIcT-ai.js +0 -177
  624. package/studio-dist/server/chunks/pipeline-stage-IB_pOft-.js +0 -63
  625. package/studio-dist/server/chunks/prediction-D1lSGJ4c.js +0 -217
  626. package/studio-dist/server/chunks/premature-close-audit-VG09uAco.js +0 -53
  627. package/studio-dist/server/chunks/project-context-BjiqfEBi.js +0 -166
  628. package/studio-dist/server/chunks/provider-registry2-Cu7rAF0R.js +0 -35
  629. package/studio-dist/server/chunks/quality-feedback-CuCGEI6S.js +0 -371
  630. package/studio-dist/server/chunks/quality-scoring-CCPuRQmJ.js +0 -160
  631. package/studio-dist/server/chunks/query-ops-DCrjbZb9.js +0 -78
  632. package/studio-dist/server/chunks/query-promise-BkPmGPJy.js +0 -1257
  633. package/studio-dist/server/chunks/readFile-CxwXhymG.js +0 -31
  634. package/studio-dist/server/chunks/registry-CL2gN1zd.js +0 -27
  635. package/studio-dist/server/chunks/registry2-DoPYJnUW.js +0 -233
  636. package/studio-dist/server/chunks/registry3-BajEb-ll.js +0 -42
  637. package/studio-dist/server/chunks/registry4-DCqffZkT.js +0 -142
  638. package/studio-dist/server/chunks/retry-B3oEKYpp.js +0 -105
  639. package/studio-dist/server/chunks/role-executor-CC8BU54L.js +0 -25379
  640. package/studio-dist/server/chunks/role-resolver-D9QaDT0e.js +0 -6544
  641. package/studio-dist/server/chunks/role-resolver2-nkhzS1oy.js +0 -37
  642. package/studio-dist/server/chunks/rollup-CiefjN_Y.js +0 -194
  643. package/studio-dist/server/chunks/safety-data-accessor-CniDmGJO.js +0 -276
  644. package/studio-dist/server/chunks/service-connections-accessor-yBCdcgU-.js +0 -282
  645. package/studio-dist/server/chunks/session-factory-vbengc42.js +0 -96
  646. package/studio-dist/server/chunks/session-grade-BF4ZZtN_.js +0 -244
  647. package/studio-dist/server/chunks/session-journal-Bvey70Ur.js +0 -235
  648. package/studio-dist/server/chunks/session-narrative-BirZINSU.js +0 -304
  649. package/studio-dist/server/chunks/session-store--N_xHxUH.js +0 -557
  650. package/studio-dist/server/chunks/session-store2-DAM-eVTH.js +0 -43
  651. package/studio-dist/server/chunks/sessions-33DD4hkt.js +0 -2273
  652. package/studio-dist/server/chunks/sessions2-BHswKRDP.js +0 -50
  653. package/studio-dist/server/chunks/sigil-B-RznFXz.js +0 -33
  654. package/studio-dist/server/chunks/sigil2-jRMG5DuR.js +0 -47
  655. package/studio-dist/server/chunks/signin-BAsW3mM8.js +0 -644
  656. package/studio-dist/server/chunks/sleep-consolidation-BnSwXrvq.js +0 -823
  657. package/studio-dist/server/chunks/specialists-B_ZbpQlK.js +0 -441
  658. package/studio-dist/server/chunks/sqlite-Bm5LzbPs.js +0 -5977
  659. package/studio-dist/server/chunks/sqlite-backup-CFG1-b2e.js +0 -42
  660. package/studio-dist/server/chunks/sqlite-data-accessor-DD_RFX6r.js +0 -987
  661. package/studio-dist/server/chunks/sqlite-data-accessor2-CRmgNBnq.js +0 -44
  662. package/studio-dist/server/chunks/sqlite-native-BwlIqtbs.js +0 -42
  663. package/studio-dist/server/chunks/sqlite2-CUPut2fh.js +0 -42
  664. package/studio-dist/server/chunks/src2-DK8DKufK.js +0 -290
  665. package/studio-dist/server/chunks/src3-BJjf7XRG.js +0 -798
  666. package/studio-dist/server/chunks/src4-DNleK_t_.js +0 -28
  667. package/studio-dist/server/chunks/sso-oidc-eUvwseuL.js +0 -861
  668. package/studio-dist/server/chunks/storage-B9UA3BHR.js +0 -198
  669. package/studio-dist/server/chunks/sts-g7LDMLEd.js +0 -4655
  670. package/studio-dist/server/chunks/surprisal-CwTfWQi8.js +0 -224
  671. package/studio-dist/server/chunks/surprisal-tree-7dfHsuw1.js +0 -230
  672. package/studio-dist/server/chunks/system-resolver2-Bzhue_zQ.js +0 -53
  673. package/studio-dist/server/chunks/tasks-SHX7UPGY.js +0 -19694
  674. package/studio-dist/server/chunks/tasks-schema2-CTMoQKQy.js +0 -42
  675. package/studio-dist/server/chunks/temporal-supersession-DP4GPG_B.js +0 -298
  676. package/studio-dist/server/chunks/token-cAhAD9f9.js +0 -139
  677. package/studio-dist/server/chunks/token-util-D6drEz8_.js +0 -353
  678. package/studio-dist/server/chunks/token-util2-8UPSGvbb.js +0 -97
  679. package/studio-dist/server/chunks/transcript-scanner-kJWhWmlg.js +0 -53
  680. package/studio-dist/server/chunks/transformers.node-_xbxmK5p.js +0 -38475
  681. package/studio-dist/server/chunks/typed-query-l1D_QElt.js +0 -18
  682. package/studio-dist/server/chunks/unique-constraint-BZrrwgwc.js +0 -88
  683. package/studio-dist/server/chunks/update-B2YVBZG0.js +0 -1594
  684. package/studio-dist/server/chunks/user-profile-B61ZhVmC.js +0 -89
  685. package/studio-dist/server/chunks/utils-BPSZyajG.js +0 -1176
  686. package/studio-dist/server/chunks/validation-rules-CE27rtoF.js +0 -44
  687. package/studio-dist/server/chunks/zod-DsAeKNLm.js +0 -141
  688. /package/studio-dist/client/_app/immutable/chunks/{CQCxd1p9.js → B8WnZMYa.js} +0 -0
  689. /package/studio-dist/client/_app/immutable/chunks/{D13Quv9e2.js → B_0_YCYG.js} +0 -0
  690. /package/studio-dist/client/_app/immutable/chunks/{djL6V-tr.js → CqgtdAx_.js} +0 -0
  691. /package/studio-dist/client/_app/immutable/chunks/{_FU7h_8p2.js → KrUPZzXZ.js} +0 -0
@@ -1,740 +0,0 @@
1
- import { y as resolveCleoDir, g as getCleoHome, b as getLogger } from './paths-CV7S5-Zm.js';
2
- import { w as withLock } from './lock-CA7d6lj7.js';
3
- import './index-Dtt_h58T.js';
4
- import { readFileSync, existsSync, mkdirSync, writeFileSync, renameSync, copyFileSync, unlinkSync } from 'node:fs';
5
- import { join, resolve, dirname, basename } from 'node:path';
6
- import 'node:crypto';
7
- import 'node:fs/promises';
8
- import './index-61916rmV.js';
9
- import { fileURLToPath } from 'node:url';
10
-
11
- //#region ../core/dist/scaffold/ensure-config.js
12
- /**
13
- * Resolve the package root directory (where schemas/ and templates/ live).
14
- *
15
- * @returns Absolute path to the @cleocode/core package root
16
- */
17
- function getPackageRoot() {
18
- return resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
19
- }
20
- /**
21
- * Read CLEO version from package.json.
22
- *
23
- * @returns Semver version string, or "0.0.0" if unavailable
24
- */
25
- function getCleoVersion() {
26
- try {
27
- const pkgPath = join(getPackageRoot(), "package.json");
28
- return JSON.parse(readFileSync(pkgPath, "utf-8")).version ?? "0.0.0";
29
- } catch {
30
- return "0.0.0";
31
- }
32
- }
33
-
34
- //#region ../core/dist/store/exodus/archive.js
35
- /**
36
- * Exodus source-DB ARCHIVE + completion-marker subsystem (T11777).
37
- *
38
- * ## Why this exists (stranded-residue corruption trigger)
39
- *
40
- * The exodus engine migrates from SIX legacy source DBs (project: `tasks.db`,
41
- * `brain.db`, `conduit.db`; global: `nexus.db`, `signaldock.db`, `skills.db`)
42
- * but, historically, NEVER retired them — `on-open.ts` literally notes "the file
43
- * is never unlinked." Every cutover therefore STRANDS the legacy files, and each
44
- * stranded file re-arms the `tasks_tasks=0` auto-recover / exodus-on-open
45
- * corruption trigger (DHQ-052 · T11662): on the next open the consolidated DB
46
- * looks empty-with-legacy-present and the hook re-fires.
47
- *
48
- * This module closes the loop. After a migration's lossless validation passes
49
- * (row-count parity + integrity — `verifyMigration` / `isDataContinuityOk`), the
50
- * consumed source DBs are ARCHIVED (moved, never deleted) into a per-scope
51
- * `_archive/` directory, and a committed COMPLETION MARKER records the cutover.
52
- * The marker becomes the durable "this scope is already migrated" signal so a
53
- * re-appearing or stranded legacy file can never re-trigger exodus-on-open.
54
- *
55
- * ## Archive destinations (per scope, via the paths SSoT)
56
- *
57
- * - project sources → `<cleoDir>/_archive/` (e.g. `.cleo/_archive/`)
58
- * - global sources → `<cleoHome>/_archive/` (e.g. `~/.local/share/cleo/_archive/`)
59
- *
60
- * Both are resolved through `resolveCleoDir(cwd)` / `getCleoHome()` — never a
61
- * hardcoded `~/.local/share` (Paths SSoT · Gate 2 · D009).
62
- *
63
- * ## Reversibility + idempotency invariants
64
- *
65
- * - **Reversible** — archiving is an atomic `rename` (fallback copy+unlink
66
- * across filesystems). Nothing is ever deleted; an operator can move a DB
67
- * back out of `_archive/` to roll the cutover back.
68
- * - **Idempotent** — a source that is already absent (already archived, or a
69
- * fresh install that never had it) is a silent no-op. Re-running over an
70
- * already-archived fleet does nothing and never throws.
71
- * - **Never blind-move** — only sources the caller asserts were actually
72
- * consumed + validated by the migration are archived. A source whose
73
- * migration did not run is left untouched.
74
- * - **Emergency-archive reconciliation** — this box was emergency-archived
75
- * (`.cleo/_archive-legacy-postcutover-*` already holds `tasks.db` +
76
- * `conduit.db`). When the canonical destination already contains a file with
77
- * the same name, the incoming file is parked under a timestamped sibling name
78
- * rather than clobbering the prior archive.
79
- *
80
- * @module
81
- * @task T11777 (exodus archives all 6 legacy DBs post-validation + completion marker)
82
- * @epic T11249 (E6)
83
- * @saga T11242 (SG-DB-SUBSTRATE-V2)
84
- * @see packages/core/src/store/exodus/on-open.ts — wires this into the validated success path
85
- * @see packages/core/src/store/exodus/plan.ts — buildSourceDescriptors (the 6 sources)
86
- */
87
- var log$1 = getLogger("exodus-archive");
88
- /** Per-scope archive directory name (sibling of the migrated DBs). */
89
- var ARCHIVE_DIR_NAME = "_archive";
90
- /** Per-scope completion-marker filename written next to the consolidated cleo.db. */
91
- var MARKER_FILENAME_BY_SCOPE = {
92
- project: "exodus-complete",
93
- global: "exodus-complete"
94
- };
95
- /** SQLite sidecar suffixes archived alongside the main DB file. */
96
- var SIDECAR_SUFFIXES = ["-wal", "-shm"];
97
- /**
98
- * Resolve the directory that holds a scope's legacy source DBs (and therefore
99
- * its archive + completion marker): project → `<cleoDir>`, global →
100
- * `<cleoHome>`. Always via the paths SSoT.
101
- *
102
- * @param scope - Target scope.
103
- * @param cwd - Working directory used to resolve the project `.cleo/` dir.
104
- * @returns Absolute path to the scope's base directory.
105
- */
106
- function scopeBaseDir(scope, cwd) {
107
- return scope === "project" ? resolveCleoDir(cwd) : getCleoHome();
108
- }
109
- /**
110
- * Absolute path to a scope's `_archive/` directory.
111
- *
112
- * @param scope - Target scope.
113
- * @param cwd - Working directory used to resolve the project `.cleo/` dir.
114
- * @returns Absolute path to `<scopeBase>/_archive/`.
115
- */
116
- function exodusArchiveDir(scope, cwd) {
117
- return join(scopeBaseDir(scope, cwd), ARCHIVE_DIR_NAME);
118
- }
119
- /**
120
- * Absolute path to a scope's exodus completion marker file.
121
- *
122
- * @param scope - Target scope.
123
- * @param cwd - Working directory used to resolve the project `.cleo/` dir.
124
- * @returns Absolute path to `<scopeBase>/exodus-complete`.
125
- */
126
- function exodusMarkerPath(scope, cwd) {
127
- return join(scopeBaseDir(scope, cwd), MARKER_FILENAME_BY_SCOPE[scope]);
128
- }
129
- /**
130
- * Return `true` if a scope's exodus completion marker exists on disk.
131
- *
132
- * Resolution-safe: when the project `.cleo/` dir cannot be resolved (e.g. `cwd`
133
- * is not inside a CLEO project — `resolveCleoDir` throws), this returns `false`
134
- * (no marker) rather than propagating, so the on-open trigger gate degrades to
135
- * the source-file path safely instead of crashing the open.
136
- *
137
- * @param scope - Target scope.
138
- * @param cwd - Working directory used to resolve the project `.cleo/` dir.
139
- * @returns Whether `<scopeBase>/exodus-complete` exists.
140
- */
141
- function hasExodusCompleteMarker(scope, cwd) {
142
- try {
143
- return existsSync(exodusMarkerPath(scope, cwd));
144
- } catch {
145
- return false;
146
- }
147
- }
148
- /**
149
- * Write a scope's exodus completion marker atomically (write-then-rename).
150
- *
151
- * Idempotent: re-writing simply refreshes the marker (same path). The marker is
152
- * the SSoT trigger-gate consulted by {@link maybeRunExodusOnOpen} — once present,
153
- * a stranded/re-appearing legacy file cannot re-arm the auto-migration.
154
- *
155
- * @param scope - Scope being certified as migrated.
156
- * @param archivedSources - Logical names of the sources archived for this scope.
157
- * @param cwd - Working directory used to resolve the project dir.
158
- * @returns The marker's absolute path.
159
- *
160
- * @task T11777
161
- */
162
- function writeExodusCompleteMarker(scope, archivedSources, cwd) {
163
- const markerPath = exodusMarkerPath(scope, cwd);
164
- mkdirSync(scopeBaseDir(scope, cwd), { recursive: true });
165
- const marker = {
166
- version: 1,
167
- scope,
168
- cleoVersion: getCleoVersion(),
169
- completedAt: (/* @__PURE__ */ new Date()).toISOString(),
170
- archivedSources: [...archivedSources]
171
- };
172
- const tmpPath = `${markerPath}.tmp`;
173
- writeFileSync(tmpPath, JSON.stringify(marker, null, 2) + "\n", "utf8");
174
- renameSync(tmpPath, markerPath);
175
- log$1.info({
176
- scope,
177
- markerPath,
178
- archivedSources
179
- }, "exodus: wrote completion marker");
180
- return markerPath;
181
- }
182
- /**
183
- * Move a single file to `destDir`, atomically when possible.
184
- *
185
- * Uses `rename`; on a cross-filesystem `EXDEV` (or any rename failure) falls back
186
- * to copy-then-unlink so the move still completes. When `destDir` already holds a
187
- * file with the same name (e.g. a prior emergency archive), the incoming file is
188
- * parked under a timestamped sibling name so the prior archive is never clobbered.
189
- *
190
- * @param srcPath - Absolute source file path (assumed to exist).
191
- * @param destDir - Absolute archive directory (created if missing).
192
- * @returns The absolute destination path the file landed at.
193
- */
194
- function moveFileInto(srcPath, destDir) {
195
- mkdirSync(destDir, { recursive: true });
196
- let dest = join(destDir, basename(srcPath));
197
- if (existsSync(dest)) {
198
- const stamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "").replace(/Z$/, "Z");
199
- dest = join(destDir, `${basename(srcPath)}.${stamp}`);
200
- }
201
- try {
202
- renameSync(srcPath, dest);
203
- } catch {
204
- copyFileSync(srcPath, dest);
205
- unlinkSync(srcPath);
206
- }
207
- return dest;
208
- }
209
- /**
210
- * Archive ONE legacy source DB (and its `-wal` / `-shm` sidecars) into the
211
- * scope's `_archive/` directory.
212
- *
213
- * Idempotent: if the main DB file is already absent, this is a no-op (the file
214
- * was already archived, or never existed). Sidecars are archived best-effort and
215
- * only when the main DB is present.
216
- *
217
- * @param source - The descriptor for the source DB to archive.
218
- * @param cwd - Working directory used to resolve the project dir.
219
- * @returns A {@link ArchivedSourceResult} describing what happened.
220
- *
221
- * @task T11777
222
- */
223
- function archiveSourceDb(source, cwd) {
224
- if (!existsSync(source.path)) return {
225
- name: source.name,
226
- sourcePath: source.path,
227
- archivedTo: null,
228
- action: "absent"
229
- };
230
- const destDir = exodusArchiveDir(source.targetScope, cwd);
231
- const archivedTo = moveFileInto(source.path, destDir);
232
- for (const suffix of SIDECAR_SUFFIXES) {
233
- const sidecar = `${source.path}${suffix}`;
234
- if (existsSync(sidecar)) try {
235
- moveFileInto(sidecar, destDir);
236
- } catch (err) {
237
- log$1.warn({
238
- err,
239
- sidecar,
240
- sourceName: source.name
241
- }, "exodus-archive: failed to archive sidecar (non-fatal)");
242
- }
243
- }
244
- log$1.info({
245
- sourceName: source.name,
246
- sourcePath: source.path,
247
- archivedTo,
248
- scope: source.targetScope
249
- }, "exodus-archive: archived legacy source DB");
250
- return {
251
- name: source.name,
252
- sourcePath: source.path,
253
- archivedTo,
254
- action: "archived"
255
- };
256
- }
257
- /**
258
- * Archive every consumed legacy source DB AFTER a validated cutover and write a
259
- * per-scope completion marker.
260
- *
261
- * **Never blind-moves**: only the descriptors passed in `consumed` are archived
262
- * — the caller (the validated migrate/on-open success path) passes exactly the
263
- * sources whose migration actually ran and passed parity. A completion marker is
264
- * written for every scope represented in `consumed`, even if some of that scope's
265
- * sources were already absent (already archived) — the marker certifies "this
266
- * scope's cutover is done", which is true once parity passed.
267
- *
268
- * Idempotent + reversible (see module docs). Safe to call repeatedly.
269
- *
270
- * @param consumed - Source descriptors the migration consumed + validated.
271
- * @param cwd - Working directory used to resolve the project dir.
272
- * @returns A {@link ArchiveMigratedSourcesResult} with per-source + per-scope outcomes.
273
- *
274
- * @task T11777
275
- */
276
- function archiveMigratedSources(consumed, cwd) {
277
- const results = [];
278
- const scopes = /* @__PURE__ */ new Set();
279
- for (const source of consumed) {
280
- scopes.add(source.targetScope);
281
- results.push(archiveSourceDb(source, cwd));
282
- }
283
- const markersWritten = [];
284
- for (const scope of scopes) {
285
- writeExodusCompleteMarker(scope, consumed.filter((s) => s.targetScope === scope).map((s) => s.name), cwd);
286
- markersWritten.push(scope);
287
- }
288
- return {
289
- sources: results,
290
- markersWritten
291
- };
292
- }
293
-
294
- //#region ../core/dist/store/exodus/on-open.js
295
- /**
296
- * Exodus-on-open — lazy, idempotent, parity-gated auto-migration of the legacy
297
- * multi-DB fleet into the consolidated dual-scope `cleo.db` on first open.
298
- *
299
- * ## Why this exists (data-continuity safety net · T11553)
300
- *
301
- * E6 routes every `getDb`/`getBrainDb`/etc read at the consolidated `cleo.db`.
302
- * On an *existing* install the consolidated DB is freshly migrated but **empty**
303
- * (0 base-table rows), while the user's real data still lives in the legacy
304
- * `tasks.db` / `brain.db` / `conduit.db` / `signaldock.db` fleet (e.g. 4465
305
- * tasks). Without an auto-migration the E8/T11251 cutover would make every
306
- * user's data **invisible**. This module wires the existing `runExodusMigrate`
307
- * engine to run **once, automatically, on first open** — gated by the
308
- * `verifyMigration` (T11551) parity check so a partial or lossy migration NEVER
309
- * becomes the live source of truth.
310
- *
311
- * ## Trigger condition (AC1)
312
- *
313
- * On first `openDualScopeDb(scope)` the hook runs iff **both**:
314
- * 1. the consolidated `cleo.db` for that scope is EMPTY (the canonical first
315
- * base table has zero rows), AND
316
- * 2. at least one legacy source DB for that scope has rows.
317
- *
318
- * ## Idempotency (AC1)
319
- *
320
- * After a successful migration the consolidated DB is non-empty, so the
321
- * emptiness check short-circuits on every subsequent open — a second open is a
322
- * no-op. The check is also re-evaluated *inside* the single-flight lock
323
- * (double-checked locking) so the process that loses a concurrency race never
324
- * re-migrates.
325
- *
326
- * ## Parity gate + clean abort (AC2)
327
- *
328
- * After the copy, `verifyMigration` (T11551) compares row counts + canonical
329
- * digests + FK integrity + enum drift legacy↔consolidated. The data-continuity
330
- * gate is **row-count parity + zero migration-INTRODUCED FK orphans** (hash/enum
331
- * drift are the expected normalisation diagnostics, and pre-existing SOURCE FK
332
- * orphans are tolerated as zero-loss — see {@link isDataContinuityOk}). If a
333
- * genuine deficit/introduced-orphan is detected the hook **aborts the cutover**:
334
- * it rolls the half-migrated consolidated tables back to EMPTY (`DELETE FROM`
335
- * every user table — see {@link rollbackConsolidatedToEmpty}) so the legacy DBs
336
- * remain the source of truth, no half-migrated `cleo.db` is exposed, and there
337
- * are no silent `INSERT OR IGNORE` row drops. The file is never unlinked; the
338
- * chokepoint re-opens a fresh handle afterwards (the migrate engine closes the
339
- * handles it opened, so the rollback re-opens the scope before truncating it).
340
- *
341
- * ## Retry correctness — journal invalidation on abort (T11572)
342
- *
343
- * `runExodusMigrate` is resumable: it journals each table `done` and SKIPS
344
- * already-`done` tables on a re-run. On abort we truncate the consolidated rows
345
- * back to empty, so a stale `done` journal would make the next open re-trigger
346
- * (target empty), copy NOTHING (journal says done), re-verify the still-empty
347
- * target, and re-abort — a permanent loop. The abort path therefore also calls
348
- * `clearExodusJournal(plan.stagingDir)` so a post-abort retry RE-COPIES from
349
- * scratch.
350
- *
351
- * ## Concurrency safety (AC6 · reconcile with T11554 / R13-T11278)
352
- *
353
- * Two processes opening a brand-new empty `cleo.db` simultaneously must not both
354
- * migrate. A `proper-lockfile` single-flight lock on
355
- * `<cleo.db>.exodus-on-open.lock` serialises the attempt; the loser re-checks
356
- * emptiness under the lock and bails. This is the same first-run-race concern
357
- * T11554 raises for schema bootstrap — both are solved by serialising the
358
- * first-open mutation.
359
- *
360
- * @module
361
- * @task T11553 (E6 · exodus-on-open)
362
- * @epic T11249 (E6)
363
- * @saga T11242 (SG-DB-SUBSTRATE-V2)
364
- * @see packages/core/src/store/exodus/migrate.ts — runExodusMigrate engine
365
- * @see packages/core/src/store/exodus/verify-migration.ts — verifyMigration parity gate (T11551)
366
- * @see packages/core/src/store/dual-scope-db.ts — the open chokepoint that calls this
367
- */
368
- var log = getLogger("exodus-on-open");
369
- /**
370
- * Re-entrancy guard. `runExodusMigrate` itself calls `openDualScopeDb` for both
371
- * scopes to create + populate the consolidated schema. Those nested opens MUST
372
- * NOT recursively trigger another exodus-on-open. This flag is set for the
373
- * duration of an auto-migration so the chokepoint skips the hook while a
374
- * migration is already in flight.
375
- */
376
- var _exodusInProgress = false;
377
- /**
378
- * Opt-out env flag. Set `CLEO_DISABLE_EXODUS_ON_OPEN=1` to skip the lazy
379
- * auto-migration entirely (e.g. for tooling that intentionally inspects an
380
- * empty consolidated DB). The manual `cleo exodus migrate` path is unaffected.
381
- */
382
- function isDisabledByEnv() {
383
- const v = process.env.CLEO_DISABLE_EXODUS_ON_OPEN;
384
- return v === "1" || v === "true";
385
- }
386
- /**
387
- * The canonical "first base table" for each scope — the same existence anchor
388
- * used by the migration journal reconciliation. If this table has zero rows the
389
- * consolidated DB is considered empty for the purposes of the trigger.
390
- *
391
- * - project → `tasks_tasks`
392
- * - global → `nexus_project_registry`
393
- */
394
- function baseTableForScope(scope) {
395
- return scope === "project" ? "tasks_tasks" : "nexus_project_registry";
396
- }
397
- /**
398
- * Count rows in `table` on `nativeDb`, returning `0` if the table does not yet
399
- * exist or the query fails. Used to decide whether the consolidated DB is empty.
400
- */
401
- function safeRowCount(nativeDb, table) {
402
- try {
403
- return nativeDb.prepare(`SELECT COUNT(*) AS n FROM "${table}"`).get()?.n ?? 0;
404
- } catch {
405
- return 0;
406
- }
407
- }
408
- /**
409
- * Return `true` if the consolidated `cleo.db` for `scope` is empty — i.e. the
410
- * canonical base table for that scope has zero rows.
411
- */
412
- function consolidatedIsEmpty(nativeDb, scope) {
413
- return safeRowCount(nativeDb, baseTableForScope(scope)) === 0;
414
- }
415
- /**
416
- * Roll a half-migrated consolidated `cleo.db` back to EMPTY on the given native
417
- * handle — without deleting the file.
418
- *
419
- * Called on a parity-failure abort. As of T11782 (FIX D) the handle passed here
420
- * is a DEDICATED, NON-cached connection opened by {@link rollbackBothScopes}, NOT
421
- * the cached caller handle. This is critical: a scope-wide `DELETE FROM` on the
422
- * CALLER's connection would roll back any concurrent task INSERT (`tasks.add`)
423
- * issued on that same connection during the migrate window. Truncating on an
424
- * isolated connection limits the blast radius to the migration's own writes —
425
- * the caller's concurrent INSERT on its own connection survives. We `DELETE FROM`
426
- * every user table inside a single transaction with foreign keys OFF, restoring
427
- * the post-migration *empty* schema, so the legacy DBs remain the source of
428
- * truth — exactly the AC2 "no half-migrated cleo.db" contract. The file is never
429
- * unlinked; the caller's (separate) cached handle stays valid and sees the
430
- * committed empty state on its next read (WAL).
431
- *
432
- * The schema (tables, indexes, drizzle journal) is preserved; only data rows are
433
- * removed. Idempotent and best-effort: a failure to clear one table is logged
434
- * but does not throw (the next open's emptiness check still sees a populated
435
- * base table and could re-attempt, which is acceptable — it will re-abort).
436
- *
437
- * @param nativeDb - The dedicated consolidated connection to truncate.
438
- * @param scope - Scope label for logging.
439
- */
440
- function rollbackConsolidatedToEmpty(nativeDb, scope) {
441
- let userTables = [];
442
- try {
443
- userTables = nativeDb.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '__drizzle_%'").all().map((r) => r.name);
444
- } catch (err) {
445
- log.error({
446
- err,
447
- scope
448
- }, "exodus-on-open: failed to enumerate tables for rollback");
449
- return;
450
- }
451
- try {
452
- nativeDb.exec("PRAGMA foreign_keys = OFF");
453
- nativeDb.exec("BEGIN");
454
- for (const table of userTables) try {
455
- nativeDb.exec(`DELETE FROM "${table}"`);
456
- } catch (err) {
457
- log.warn({
458
- err,
459
- table,
460
- scope
461
- }, "exodus-on-open: failed to clear table during rollback");
462
- }
463
- nativeDb.exec("COMMIT");
464
- } catch (err) {
465
- try {
466
- nativeDb.exec("ROLLBACK");
467
- } catch {}
468
- log.error({
469
- err,
470
- scope
471
- }, "exodus-on-open: rollback transaction failed");
472
- } finally {
473
- try {
474
- nativeDb.exec("PRAGMA foreign_keys = ON");
475
- } catch {}
476
- }
477
- }
478
- /**
479
- * Roll BOTH consolidated scopes back to empty after a failed auto-migration.
480
- *
481
- * ## Connection isolation (T11782 · FIX D)
482
- *
483
- * The rollback opens each scope on a DEDICATED, NON-cached connection (a second
484
- * SQLite handle to the same file — WAL allows it) and truncates THAT, NEVER the
485
- * cached caller handle. This is the load-bearing half of the write-reliability
486
- * fix: a scope-wide `DELETE FROM`/`BEGIN…COMMIT` on the CALLER's shared
487
- * connection would sweep away any concurrent task INSERT (`tasks.add`) issued on
488
- * that same connection during the migrate window. Truncating on an isolated
489
- * connection means the abort can only ever clear the migration's own writes; a
490
- * caller's concurrent INSERT on its own connection is physically outside this
491
- * rollback's transaction and survives.
492
- *
493
- * `runExodusMigrate` already closed its dedicated migrate connections by the
494
- * time we get here, so the rows it wrote are still on disk; we re-open a fresh
495
- * dedicated connection per scope and truncate. `_exodusInProgress` is still
496
- * `true`, so these opens do not recurse into the hook (dedicated opens never arm
497
- * exodus-on-open anyway).
498
- *
499
- * @param scope - The scope being opened (logging context only; both
500
- * scopes are cleared because `runExodusMigrate` populates both).
501
- * @param projectDbPath - Absolute path to the consolidated project `cleo.db`.
502
- * @param globalDbPath - Absolute path to the consolidated global `cleo.db`.
503
- */
504
- async function rollbackBothScopes(scope, projectDbPath, globalDbPath) {
505
- const { openDualScopeDbAtPath } = await import('./dual-scope-db2-Dht3luRw.js');
506
- for (const s of ["project", "global"]) {
507
- const path = s === "project" ? projectDbPath : globalDbPath;
508
- let handle = null;
509
- try {
510
- handle = s === "project" ? await openDualScopeDbAtPath("project", path, void 0, { dedicated: true }) : await openDualScopeDbAtPath("global", path, void 0, { dedicated: true });
511
- const native = handle.db.$client;
512
- if (native) rollbackConsolidatedToEmpty(native, s);
513
- } catch (err) {
514
- log.warn({
515
- err,
516
- scope: s,
517
- openingScope: scope
518
- }, "exodus-on-open: could not roll back scope (best-effort)");
519
- } finally {
520
- try {
521
- handle?.close();
522
- } catch {}
523
- }
524
- }
525
- }
526
- /**
527
- * Decide whether a {@link verifyMigration} result clears the **data-continuity**
528
- * gate — the campaign-aligned zero-loss invariant (DHQ-045 · T11551).
529
- *
530
- * `verifyMigration().ok` is intentionally STRICTER than data-continuity: it also
531
- * requires `hashMatch` and zero enum-drift findings. After a CORRECT migration
532
- * those two will legitimately be `false`, because the migration NORMALISES the
533
- * data (legacy enum aliases like `'ACCEPTED'`→`'accepted'`, epoch→ISO
534
- * timestamps) — so the consolidated content digest differs from the un-normalised
535
- * source, and the source still reports its raw drift as a diagnostic. Treating
536
- * that as a parity failure would abort EVERY real migration.
537
- *
538
- * The zero-loss invariant the exodus campaign actually proves (and the one the
539
- * representative real-data parity test asserts) is:
540
- *
541
- * 1. every data-bearing base table copied with NO ROW DEFICIT
542
- * (`targetCount >= sourceCount` — you cannot LOSE a row you have MORE of),
543
- * AND
544
- * 2. NO referential orphans the migration INTRODUCED on the consolidated
545
- * target (`introducedForeignKeyViolations` empty).
546
- *
547
- * ## A row SURPLUS is NOT data loss (T11577)
548
- *
549
- * Data loss means rows are MISSING: `targetCount < sourceCount` (a DEFICIT).
550
- * A SURPLUS (`targetCount > sourceCount`) cannot be loss — every source row is
551
- * still present, plus extra. The canonical benign surplus is the migration's
552
- * OWN audit trail: `runExodusMigrate` opens the nexus registry, whose
553
- * `writeNexusAudit` (`nexus/registry.ts`) appends rows to `nexus_audit_log`
554
- * DURING the migrating open, so the consolidated `nexus_audit_log` legitimately
555
- * has a few MORE rows than the legacy source (e.g. 161923 → 161926). Gating on
556
- * exact `countMatch` (`source === target`) wrongly aborts the cutover on that
557
- * append. The gate therefore fails ONLY on a genuine DEFICIT; a surplus is
558
- * tolerated and logged as a WARN (with the table + delta) so it stays visible
559
- * and a double-copy on a non-append table could still be spotted by an operator.
560
- * Deficits are NEVER tolerated — that is the real data-loss class.
561
- *
562
- * ## Pre-existing source orphans are tolerated (T11572)
563
- *
564
- * A legacy source DB can already contain referential orphans (e.g. a
565
- * `tasks_task_relations` row pointing at a task that was deleted long before the
566
- * migration). Those rows copy through faithfully — that is ZERO loss, not a
567
- * migration defect — so they appear on BOTH sides and `verifyMigration`
568
- * classifies them as `preExistingForeignKeyViolations`. Gating on the *total*
569
- * orphan set (`foreignKeyViolations`) would permanently abort every real cutover
570
- * over a defect the data already had. The gate therefore fails ONLY on
571
- * `introducedForeignKeyViolations` — orphans present on the target that the
572
- * source did not have (i.e. the migration dropped a parent row). Pre-existing
573
- * orphans are logged as a WARN for a data-hygiene follow-up.
574
- *
575
- * Hash mismatch + source enum-drift are surfaced as WARN diagnostics (a true
576
- * content corruption would normally also show up as an introduced FK orphan or a
577
- * count deficit), but they do NOT, on their own, indicate data loss.
578
- *
579
- * @param result - The {@link VerifyMigrationResult} from `verifyMigration`.
580
- * @returns `true` when NO base table has a row DEFICIT (`targetCount <
581
- * sourceCount`) and the migration introduced no new FK orphans — i.e. the
582
- * cutover is safe. A surplus (`targetCount > sourceCount`) is tolerated.
583
- *
584
- * @task T11577 (deficit-only gate — tolerate benign migration-time surplus)
585
- */
586
- function isDataContinuityOk(result) {
587
- const deficits = result.tables.filter((t) => t.targetCount < t.sourceCount);
588
- const surpluses = result.tables.filter((t) => t.targetCount > t.sourceCount);
589
- if (surpluses.length > 0) log.warn({ surpluses: surpluses.map((t) => ({
590
- table: t.targetTable,
591
- scope: t.scope,
592
- source: t.sourceCount,
593
- target: t.targetCount,
594
- delta: t.targetCount - t.sourceCount
595
- })) }, `exodus-on-open: ${surpluses.length} table(s) have MORE rows in target than source (row surplus — NOT data loss, tolerated; e.g. migration-time nexus_audit_log writes). Verify none is an unexpected double-copy on a non-append table.`);
596
- return deficits.length === 0 && result.introducedForeignKeyViolations.length === 0;
597
- }
598
- /**
599
- * Lazily migrate the legacy fleet into the consolidated `cleo.db` on first open.
600
- *
601
- * This is the thin guard wired into {@link openDualScopeDb}. It is invoked AFTER
602
- * the consolidated schema migrations have run (so the base tables exist) but
603
- * BEFORE the handle is returned to the caller. It is a no-op unless the trigger
604
- * condition (AC1) holds.
605
- *
606
- * Re-entrancy, concurrency, parity gating, and clean abort are all handled here
607
- * — see the module docs. The heavy lifting (copy, journal, backup, attach-leak
608
- * safety) is delegated to the existing {@link runExodusMigrate} engine; this
609
- * function adds only the *when* (lazy trigger) and the *safety envelope*
610
- * (single-flight + verify-or-rollback).
611
- *
612
- * On a parity-failure abort the migration's writes are rolled back IN PLACE on
613
- * the caller's live handle (see {@link rollbackConsolidatedToEmpty}) — the
614
- * handle is never closed and the file is never deleted, so the chokepoint caller
615
- * (`getBrainDb`/`ensureConduitDb`/…) keeps a valid, empty `cleo.db` and the
616
- * legacy DBs remain the source of truth.
617
- *
618
- * @param scope - The scope being opened (`'project'` | `'global'`).
619
- * @param dbPath - Absolute path to the consolidated `cleo.db` for `scope`.
620
- * @param nativeDb - The freshly-opened native handle (post-migration). This is
621
- * the SAME cached handle `runExodusMigrate` writes through,
622
- * so the rollback truncates it in place rather than deleting.
623
- * @param cwd - Working directory used to resolve the project root.
624
- * @returns The {@link ExodusOnOpenResult} describing what happened.
625
- *
626
- * @task T11553 (AC1, AC2, AC6)
627
- * @epic T11249 (E6)
628
- * @saga T11242
629
- */
630
- async function maybeRunExodusOnOpen(scope, dbPath, nativeDb, cwd) {
631
- if (_exodusInProgress) return {
632
- outcome: "skipped",
633
- reason: "re-entrant open during active migration"
634
- };
635
- if (isDisabledByEnv()) return {
636
- outcome: "skipped",
637
- reason: "CLEO_DISABLE_EXODUS_ON_OPEN set"
638
- };
639
- if (hasExodusCompleteMarker(scope, cwd)) return {
640
- outcome: "skipped",
641
- reason: "exodus completion marker present — scope already migrated (cutover sealed)"
642
- };
643
- if (!consolidatedIsEmpty(nativeDb, scope)) return {
644
- outcome: "skipped",
645
- reason: "consolidated cleo.db already populated"
646
- };
647
- const { buildExodusPlan, runExodusMigrate, verifyMigration, clearExodusJournal } = await import('./exodus-BBuuN6aA.js');
648
- const plan = buildExodusPlan(cwd);
649
- if (!plan.sources.filter((s) => s.targetScope === scope).some((s) => existsSync(s.path))) return {
650
- outcome: "skipped",
651
- reason: `no legacy ${scope}-scope source DBs present (fresh install or cross-scope-only)`
652
- };
653
- return withLock(`${dbPath}.exodus-on-open.lock`, async () => {
654
- if (!consolidatedIsEmpty(nativeDb, scope)) return {
655
- outcome: "skipped",
656
- reason: "migrated by a concurrent process (lock winner)"
657
- };
658
- log.info({
659
- scope,
660
- dbPath,
661
- sources: plan.sources.filter((s) => existsSync(s.path)).map((s) => s.name)
662
- }, "exodus-on-open: consolidated cleo.db is empty and legacy data present — auto-migrating");
663
- _exodusInProgress = true;
664
- try {
665
- const migrateResult = await runExodusMigrate(plan, false, (msg) => log.debug({ scope }, `exodus-on-open: ${msg}`));
666
- if (!migrateResult.ok) {
667
- await rollbackBothScopes(scope, plan.projectDbPath, plan.globalDbPath);
668
- clearExodusJournal(migrateResult.stagingDir);
669
- const reason = `migration failed: ${migrateResult.error ?? "unknown error"} — legacy DBs kept as source`;
670
- log.error({
671
- scope,
672
- error: migrateResult.error
673
- }, `exodus-on-open: ${reason}`);
674
- return {
675
- outcome: "aborted",
676
- reason
677
- };
678
- }
679
- const verifyResult = verifyMigration(plan.sources, plan.projectDbPath, plan.globalDbPath, (msg) => log.debug({ scope }, `exodus-on-open verify: ${msg}`));
680
- if (!verifyResult.ok) log.warn({
681
- scope,
682
- enumDrift: verifyResult.enumDrift.length,
683
- hashMismatches: verifyResult.tables.filter((t) => !t.hashMatch).length
684
- }, "exodus-on-open: verifyMigration reported non-fatal drift (normalisation expected); checking data-continuity gate");
685
- if (!isDataContinuityOk(verifyResult)) {
686
- await rollbackBothScopes(scope, plan.projectDbPath, plan.globalDbPath);
687
- clearExodusJournal(plan.stagingDir);
688
- const deficits = verifyResult.tables.filter((t) => t.targetCount < t.sourceCount).map((t) => `${t.targetTable}(${t.sourceCount}→${t.targetCount})`);
689
- const reason = `parity verification failed — cutover aborted, legacy DBs kept as source. count deficits: [${deficits.join(", ")}]; INTRODUCED fk orphans: ${verifyResult.introducedForeignKeyViolations.length} (pre-existing source orphans tolerated: ${verifyResult.preExistingForeignKeyViolations.length}). ` + `${verifyResult.error ?? ""}`.trim();
690
- log.error({
691
- scope,
692
- countDeficits: deficits,
693
- introducedFkViolations: verifyResult.introducedForeignKeyViolations.length,
694
- preExistingFkViolations: verifyResult.preExistingForeignKeyViolations.length
695
- }, "exodus-on-open: data-continuity FAILED — consolidated cleo.db rolled back to empty, legacy kept");
696
- return {
697
- outcome: "aborted",
698
- reason
699
- };
700
- }
701
- const rowsCopied = migrateResult.tables.filter((t) => !t.skipped).reduce((n, t) => n + t.rowsCopied, 0);
702
- log.info({
703
- scope,
704
- rowsCopied,
705
- tables: migrateResult.tables.length
706
- }, "exodus-on-open: parity verified — legacy data migrated into consolidated cleo.db");
707
- try {
708
- const archiveResult = archiveMigratedSources(plan.sources.filter((s) => existsSync(s.path)), cwd);
709
- log.info({
710
- scope,
711
- archived: archiveResult.sources.filter((s) => s.action === "archived").length,
712
- markersWritten: archiveResult.markersWritten
713
- }, "exodus-on-open: archived legacy sources + sealed completion marker(s)");
714
- } catch (err) {
715
- log.error({
716
- err,
717
- scope
718
- }, "exodus-on-open: post-migration archive/marker step failed (migration itself succeeded — legacy DBs left in place, will be re-checked by `cleo doctor exodus-residue`)");
719
- }
720
- return {
721
- outcome: "migrated",
722
- reason: `migrated ${rowsCopied} rows across ${migrateResult.tables.length} tables; parity verified`,
723
- rowsCopied
724
- };
725
- } finally {
726
- _exodusInProgress = false;
727
- }
728
- }, {
729
- stale: 6e5,
730
- retries: 30
731
- });
732
- }
733
-
734
- var onOpen = /*#__PURE__*/Object.freeze({
735
- __proto__: null,
736
- maybeRunExodusOnOpen: maybeRunExodusOnOpen
737
- });
738
-
739
- export { getCleoVersion as g, onOpen as o };
740
- //# sourceMappingURL=on-open-Wpcw7DV4.js.map