@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.
- package/dist/cli/index.js +3873 -2234
- package/package.json +14 -13
- package/scripts/check-cleo-tarball-size.mjs +105 -0
- package/scripts/copy-studio-dist.mjs +33 -9
- package/studio-dist/client/_app/immutable/chunks/{wI_OOyoh.js → BB7zPpV2.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{D8NsLz6i.js → BOnrCZaR.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{eK8hf4s7.js → BSRBuVG3.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/C6jhAnil.js +1 -0
- package/studio-dist/client/_app/immutable/chunks/C87Q3uxm.js +1 -0
- package/studio-dist/client/_app/immutable/chunks/{DVHIxkgs.js → CLZBEpLY.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{CqF5Lomf.js → CTLGzgdN.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{o1PZ6Kzq.js → CY3heNub.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{RptFUp2P.js → Cge6qiwc.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{BRgWBQlV.js → CnwXLaZJ.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{Bxz2A0ZC.js → DEH43YwF.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/DGftG5oL.js +3 -0
- package/studio-dist/client/_app/immutable/chunks/DX_JOBSO.js +1 -0
- package/studio-dist/client/_app/immutable/chunks/{CEqOYim7.js → DZrdToAH.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/EZwHPWle.js +2 -0
- package/studio-dist/client/_app/immutable/chunks/cWVw9W0E.js +3 -0
- package/studio-dist/client/_app/immutable/chunks/{B9psmq5-.js → rB_71s8h.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{JPJd4fEI.js → rUtW7Hx6.js} +1 -1
- package/studio-dist/client/_app/immutable/entry/app.tvu3-wbp.js +2 -0
- package/studio-dist/client/_app/immutable/entry/start.BS-rpdjH.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{0.CZzEEyVh.js → 0.DMP7swbx.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.Bj3Opbua.js → 1.CYZMFpIp.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{10.xe_Mc2Ko.js → 10.3rxHNnSx.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{11.DuKPA7JD.js → 11.B6jWv3Kz.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{12.BoZ_QrUS.js → 12.BrDHeTEq.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{13.DFJiUiv8.js → 13.CE5bd4JV.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{14.eaAlFU4w.js → 14.DgXD2LRx.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{15.BfXgiwMC.js → 15.Cz1KI9Fv.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16.mEwy9cqh.js → 16.K9wYQPhb.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.DP2QtQGn.js → 17.CtUmdfMg.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.Bu0054sX.js → 18.mtosd0sL.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{19.UWt6QbCm.js → 19.su55K8y_.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{2.y5jKpHiR.js → 2.mqgFVWFQ.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{20.B1AIHdkP.js → 20.NJuHLxuS.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{21.CpAN71H8.js → 21.BhwhdQCq.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{22.CrYKrN4c.js → 22.BmJEWwER.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{23.pGRaHQjq.js → 23.CAVIJEH-.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{24.BUoUu37z.js → 24.CMuXs5Sy.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/25.DhMBJYAo.js +39 -0
- package/studio-dist/client/_app/immutable/nodes/26.CJ4FA5FS.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{28.DcmYM7lb.js → 28.D64RBcfs.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{29.lbHbMqNO.js → 29.yfuBeH1x.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{3.Dyir4xXj.js → 3.y115j1d5.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{30.DXj0Wm2A.js → 30.1WUv5bh9.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/4.D6vXYBoQ.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{5.VWSdP7oc.js → 5.hjw2O-4e.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{6.Dl-XLwOj.js → 6.CAoDfDt6.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{7.CFuC5L-y.js → 7.CLgPSQ8Z.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{8.BCJ0DhOb.js → 8.zuaO1Hik.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{9.Bq4SUzL9.js → 9.Cdsd85m2.js} +1 -1
- package/studio-dist/client/_app/version.json +1 -1
- package/studio-dist/server/chunks/0-BQvtFOrC.js +41 -0
- package/studio-dist/server/chunks/1-Bx2_yoiK.js +9 -0
- package/studio-dist/server/chunks/{10-DvOD4ksa.js → 10-CYLc3d5x.js} +3 -3
- package/studio-dist/server/chunks/{11-DMnBZ02H.js → 11-DcIYR5vm.js} +3 -3
- package/studio-dist/server/chunks/{12-CCyRyRWX.js → 12-WE1u104t.js} +3 -3
- package/studio-dist/server/chunks/{13-Dx1c3a_X.js → 13-joBDoxhK.js} +3 -3
- package/studio-dist/server/chunks/{14-Bo-dTCaZ.js → 14-Doj5F4uJ.js} +3 -3
- package/studio-dist/server/chunks/{15-BvUNl3KL.js → 15-nQTeHGD1.js} +3 -3
- package/studio-dist/server/chunks/{16-De6EzPSa.js → 16-CcTN0e8k.js} +5 -4
- package/studio-dist/server/chunks/{17-CZNsiZhi.js → 17-DWiFnzES.js} +10 -93
- package/studio-dist/server/chunks/{18-CbxxjZox.js → 18-Dcc9GnPo.js} +5 -4
- package/studio-dist/server/chunks/{19-DqHyladS.js → 19-BAQHPrMB.js} +3 -3
- package/studio-dist/server/chunks/{2-COvmA-ZA.js → 2-DXSVVaej.js} +10 -93
- package/studio-dist/server/chunks/20-DfQlGHPW.js +57 -0
- package/studio-dist/server/chunks/{21-DXK9ptAC.js → 21-qhGjkW41.js} +4 -31
- package/studio-dist/server/chunks/{22-DD5CLWJC.js → 22-Byy16hFA.js} +3 -3
- package/studio-dist/server/chunks/23-CZpFrGp4.js +97 -0
- package/studio-dist/server/chunks/24-EEysaT9T.js +67 -0
- package/studio-dist/server/chunks/{25-CAg6Xcmn.js → 25-CgiYn70L.js} +15 -96
- package/studio-dist/server/chunks/{26-_nfVTvNi.js → 26-Cfd6BaUb.js} +12 -93
- package/studio-dist/server/chunks/{27-C9edghG4.js → 27-Cqzlh9gZ.js} +3 -2
- package/studio-dist/server/chunks/{28-VemTJGyc.js → 28-DeYe2rpm.js} +8 -62
- package/studio-dist/server/chunks/{29-CXP-m29t.js → 29-6pjLM0Z1.js} +10 -93
- package/studio-dist/server/chunks/{3-B8KhfvHp.js → 3-E_fWDAkq.js} +9 -25
- package/studio-dist/server/chunks/{30-QiM1S4cJ.js → 30-Dw317sSW.js} +10 -93
- package/studio-dist/server/chunks/{31-BwdY9NnB.js → 31-Q4kHbp8j.js} +3 -2
- package/studio-dist/server/chunks/{4-CSaG4HjO.js → 4-C9BMSh4K.js} +4 -3
- package/studio-dist/server/chunks/{5-i5ry4y3C.js → 5-C0CF4WKG.js} +3 -3
- package/studio-dist/server/chunks/{6-DR1GWBMT.js → 6-BWyOJust.js} +3 -3
- package/studio-dist/server/chunks/{7-DSNwn3aQ.js → 7-CK4MK5gy.js} +3 -3
- package/studio-dist/server/chunks/{8-Bj0bx07K.js → 8-CiX7Xk9k.js} +3 -3
- package/studio-dist/server/chunks/{9-B3Tz0mZq.js → 9-Be5118w4.js} +3 -3
- package/studio-dist/server/chunks/{HeroHeader-v4Q9vaGr.js → HeroHeader-BrGN5WPw.js} +2 -2
- package/studio-dist/server/chunks/{Sparkline-BJ-GuhRd.js → Sparkline-DU_NVxz9.js} +2 -2
- package/studio-dist/server/chunks/{StatBlock-DHJMmOCx.js → StatBlock-jNsxycS1.js} +2 -2
- package/studio-dist/server/chunks/{Tabs-DzG6Bn9a.js → Tabs-DQKDflnT.js} +2 -2
- package/studio-dist/server/chunks/_dispatch-DTWViLGL.js +145 -0
- package/studio-dist/server/chunks/{_layout.svelte-BEIGQcIv.js → _layout.svelte-CL6GfET2.js} +7 -9
- package/studio-dist/server/chunks/{_page.svelte-al08ovKm.js → _page.svelte-6iMiGR11.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-Byz2djto.js → _page.svelte-B-YXGvAW.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-tYN7_LXI.js → _page.svelte-B5E6RqVb.js} +9 -11
- package/studio-dist/server/chunks/{_page.svelte-UYiF7YBK.js → _page.svelte-BCRyjlk2.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-CCoTp89s.js → _page.svelte-BoYafqft.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-nzffIbBP.js → _page.svelte-C7Wm6_HB.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-C_VSL8NW.js → _page.svelte-Cgqt7ucn.js} +13 -71
- package/studio-dist/server/chunks/{_page.svelte-CophUar3.js → _page.svelte-CqI6hqMm.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-BgwL2Gyu.js → _page.svelte-CvQ2rZZ1.js} +11 -13
- package/studio-dist/server/chunks/{_page.svelte-l4Z_xjl9.js → _page.svelte-CvTyJEyS.js} +9 -11
- package/studio-dist/server/chunks/{_page.svelte-DOWw416I.js → _page.svelte-CvzAttO9.js} +11 -13
- package/studio-dist/server/chunks/{_page.svelte-DYNorA0S.js → _page.svelte-Cx9Ptecp.js} +10 -67
- package/studio-dist/server/chunks/{_page.svelte-Wfx7ww_h.js → _page.svelte-Cx9dPjsT.js} +11 -13
- package/studio-dist/server/chunks/{_page.svelte-2cgtvHwW.js → _page.svelte-DGN5j-At.js} +13 -71
- package/studio-dist/server/chunks/{_page.svelte-BVVTrzTL.js → _page.svelte-DaheDIRs.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-M5D2QnMS.js → _page.svelte-Dm8y5a8S.js} +10 -67
- package/studio-dist/server/chunks/{_page.svelte-B_pq-Z98.js → _page.svelte-DqXxyNsF.js} +7 -7
- package/studio-dist/server/chunks/{_page.svelte-C3aIui4o.js → _page.svelte-DqsbnAhk.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-ksTJUXce.js → _page.svelte-Dt0_c1T-.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-bGhsrIjS.js → _page.svelte-Dv6iwhu7.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BXyoMME1.js → _page.svelte-GPiHej3P.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-CYDjW1R0.js → _page.svelte-LuRm8XxE.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-Clbkk1gm.js → _page.svelte-Z7nL9SC-.js} +8 -9
- package/studio-dist/server/chunks/{_page.svelte-DUWbZjC7.js → _page.svelte-_kntHS6v.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-BIlhmugm.js → _page.svelte-eiomv6Pa.js} +11 -13
- package/studio-dist/server/chunks/{_page.svelte-9OQphlnm.js → _page.svelte-jXJbd8Mx.js} +14 -69
- package/studio-dist/server/chunks/{_page.svelte-CHzXuw2Q.js → _page.svelte-me5SUosG.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-DSzRdt1U.js → _server.ts--2m_U4SL.js} +11 -94
- package/studio-dist/server/chunks/{_server.ts-ujoDR2_g.js → _server.ts--sGLmBsz.js} +10 -92
- package/studio-dist/server/chunks/{_server.ts-k2fApwOp.js → _server.ts-0ukyuE0I.js} +5 -60
- package/studio-dist/server/chunks/_server.ts-1eW2mTeh.js +40 -0
- package/studio-dist/server/chunks/{_server.ts-Bfr4u3EP.js → _server.ts-3LzqLzt0.js} +10 -92
- package/studio-dist/server/chunks/_server.ts-40h9Y46Y.js +122 -0
- package/studio-dist/server/chunks/_server.ts-5euivmMj.js +38 -0
- package/studio-dist/server/chunks/{_server.ts-CShsBkeE.js → _server.ts-B0uoay97.js} +7 -23
- package/studio-dist/server/chunks/{_server.ts-hL92cV7Z.js → _server.ts-B5vYKkI6.js} +9 -63
- package/studio-dist/server/chunks/{_server.ts-_RJXtmfi.js → _server.ts-B8dTbPHd.js} +8 -23
- package/studio-dist/server/chunks/{_server.ts-C3Jo-ju8.js → _server.ts-BA8Xdegq.js} +10 -92
- package/studio-dist/server/chunks/_server.ts-BBClE0n9.js +54 -0
- package/studio-dist/server/chunks/{_server.ts-ZS1_yMwR.js → _server.ts-BDwMoyZ_.js} +6 -32
- package/studio-dist/server/chunks/{_server.ts-sv4pA808.js → _server.ts-BE-Uhx4N.js} +5 -46
- package/studio-dist/server/chunks/{_server.ts-DV6pzF-M.js → _server.ts-BSHADOUJ.js} +4 -3
- package/studio-dist/server/chunks/_server.ts-BcsqAqXt.js +67 -0
- package/studio-dist/server/chunks/_server.ts-Bl9tMqwZ.js +159 -0
- package/studio-dist/server/chunks/_server.ts-BlzDnRI0.js +51 -0
- package/studio-dist/server/chunks/{_server.ts-DnE0f-iC.js → _server.ts-BtuemCsf.js} +4 -3
- package/studio-dist/server/chunks/{_server.ts-BPcErnS0.js → _server.ts-C2nYqbd9.js} +10 -92
- package/studio-dist/server/chunks/{_server.ts-4p6cp9ke.js → _server.ts-C6IDM_3I.js} +10 -92
- package/studio-dist/server/chunks/_server.ts-C8Z32vuL.js +45 -0
- package/studio-dist/server/chunks/_server.ts-CBXyadsy.js +26 -0
- package/studio-dist/server/chunks/{_server.ts-Do9RIPRo.js → _server.ts-CE6h2ATE.js} +5 -32
- package/studio-dist/server/chunks/_server.ts-CH06JVqZ.js +65 -0
- package/studio-dist/server/chunks/_server.ts-CNqcws-M.js +29 -0
- package/studio-dist/server/chunks/{_server.ts-CJA1djzJ.js → _server.ts-CPf8necd.js} +8 -92
- package/studio-dist/server/chunks/{_server.ts-uUx7uT2Y.js → _server.ts-CYv5YuHd.js} +6 -43
- package/studio-dist/server/chunks/{_server.ts-B2E7fxo9.js → _server.ts-CZ5GZRWX.js} +6 -91
- package/studio-dist/server/chunks/{_server.ts-DSAv66wD.js → _server.ts-CbThsyhY.js} +4 -3
- package/studio-dist/server/chunks/{_server.ts-DgbY5EB3.js → _server.ts-CeQolQOK.js} +10 -92
- package/studio-dist/server/chunks/_server.ts-ChoGyX5C.js +61 -0
- package/studio-dist/server/chunks/_server.ts-CjJYkLJH.js +61 -0
- package/studio-dist/server/chunks/{_server.ts-lPlBUIJX.js → _server.ts-CtjArzxf.js} +5 -60
- package/studio-dist/server/chunks/{_server.ts-Cq60m8Pw.js → _server.ts-D3QWZwt_.js} +4 -3
- package/studio-dist/server/chunks/{_server.ts-CkoJ2HCW.js → _server.ts-D6wP5bCh.js} +10 -92
- package/studio-dist/server/chunks/{_server.ts-DwTRjS4y.js → _server.ts-D7JwQTun.js} +10 -93
- package/studio-dist/server/chunks/_server.ts-DKFJdXPK.js +97 -0
- package/studio-dist/server/chunks/_server.ts-DNAPGKEF.js +55 -0
- package/studio-dist/server/chunks/_server.ts-DQiTiY3E.js +78 -0
- package/studio-dist/server/chunks/{_server.ts-BT0Uq2yq.js → _server.ts-DUyeSXbV.js} +10 -92
- package/studio-dist/server/chunks/{_server.ts-DRVz9D-J.js → _server.ts-DY7BwZCv.js} +9 -24
- package/studio-dist/server/chunks/{_server.ts-Cz0zgaUV.js → _server.ts-D_E276ms.js} +3 -2
- package/studio-dist/server/chunks/{_server.ts-B5g3eScF.js → _server.ts-DgtmTAp5.js} +5 -60
- package/studio-dist/server/chunks/{_server.ts-CboRJY0Q.js → _server.ts-DhTKaw7h.js} +10 -63
- package/studio-dist/server/chunks/_server.ts-DqKBSCPT.js +31 -0
- package/studio-dist/server/chunks/{_server.ts-CpmMp5D8.js → _server.ts-DyXBNnRD.js} +4 -3
- package/studio-dist/server/chunks/_server.ts-DzjUpduu.js +25 -0
- package/studio-dist/server/chunks/{_server.ts-CGiAXy5i.js → _server.ts-Dznqw6Dg.js} +8 -23
- package/studio-dist/server/chunks/{_server.ts-tKMjUFUP.js → _server.ts-EVwS7UXb.js} +4 -3
- package/studio-dist/server/chunks/_server.ts-J17j25VG.js +62 -0
- package/studio-dist/server/chunks/{_server.ts-BdN4AJ6o.js → _server.ts-VQchZxXq.js} +10 -91
- package/studio-dist/server/chunks/{_server.ts-C4BcDGqS.js → _server.ts-XLV5SvjH.js} +7 -63
- package/studio-dist/server/chunks/_server.ts-jZgqFIJz.js +45 -0
- package/studio-dist/server/chunks/{_server.ts-Bw7A4zgb.js → _server.ts-lyiGGv7w.js} +5 -3
- package/studio-dist/server/chunks/{brain-CXR7ZT7S.js → brain-xt_NeshR.js} +2 -2
- package/studio-dist/server/chunks/cleo-home-_XIqkZaL.js +109 -0
- package/studio-dist/server/chunks/{cli-action-DQcaqcfn.js → cli-action-VJPEn1pY.js} +2 -2
- package/studio-dist/server/chunks/{client-CgX38JBu.js → client-D71MZ7Vi.js} +5 -6
- package/studio-dist/server/chunks/cluster-label-layer-CysRMvhi.js +6721 -0
- package/studio-dist/server/chunks/connections-CWLPjwBP.js +15 -0
- package/studio-dist/server/chunks/{connections2-mi7mZqJM.js → connections2-DHVs5ytW.js} +32 -19
- package/studio-dist/server/chunks/{dev-BNpEUZI3.js → dev-Br5zieNA.js} +2 -2
- package/studio-dist/server/chunks/dist-BzgWhfUR.js +18748 -0
- package/studio-dist/server/chunks/{error.svelte-CplNulnS.js → error.svelte-BIToUowC.js} +6 -8
- package/studio-dist/server/chunks/{explorer-loader-BN_mkt3_.js → explorer-loader-B_uCSs9_.js} +2 -2
- package/studio-dist/server/chunks/exports-Dg-gdPPq.js +124 -0
- package/studio-dist/server/chunks/{hooks.server-DBsyphiX.js → hooks.server-CWBRp8NI.js} +10 -93
- package/studio-dist/server/chunks/{http-CRTZe306.js → http-DPU3HHl2.js} +3 -4
- package/studio-dist/server/chunks/{index-server-DocJvixA.js → index-server-BgfA6C0S.js} +17 -4
- package/studio-dist/server/chunks/{internal-D6eWgsHJ.js → internal-DPnIJYMs.js} +56 -92
- package/studio-dist/server/chunks/{memory2-Cgc_4D5q.js → memory-BZHnDZzu.js} +4 -4
- package/studio-dist/server/chunks/{nexus-adapter-9EL_VlGI.js → nexus-adapter-D1ryYG1Z.js} +5 -5
- package/studio-dist/server/chunks/{no-face-up-DcejJLy-.js → no-face-up-B_3h6Hgs.js} +2 -2
- package/studio-dist/server/chunks/project-context-BAXQmgch.js +188 -0
- package/studio-dist/server/chunks/{src-BUqGet2c.js → src-D2rW9bIF.js} +422 -5
- package/studio-dist/server/chunks/{stores-5DmdjPCH.js → stores-BZdYTyl7.js} +3 -3
- package/studio-dist/server/chunks/{tasks2-Bf9VHrv-.js → tasks-sWuEmiGW.js} +2349 -9
- package/studio-dist/server/chunks/{ui-DR8zOSpC.js → ui-CkQ-pCs3.js} +2 -2
- package/studio-dist/server/chunks/utils-g564cUMV.js +151 -0
- package/studio-dist/server/index.js +5 -16
- package/studio-dist/server/manifest.js +88 -88
- package/dist/cli/index.js.map +0 -6
- package/studio-dist/client/_app/immutable/assets/parse-worker.CSEr67Qi.js +0 -1127
- package/studio-dist/client/_app/immutable/chunks/2mEksghu2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/3KebaI-z.js +0 -53
- package/studio-dist/client/_app/immutable/chunks/3y2yNYEk2.js +0 -3
- package/studio-dist/client/_app/immutable/chunks/7UXYlaI1.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/83VLmCvk.js +0 -4
- package/studio-dist/client/_app/immutable/chunks/84Rhmi6r.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/9CV9TXTg2.js +0 -92
- package/studio-dist/client/_app/immutable/chunks/9LFtcz24.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/9bLMgKwu2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/9kKqohVR2.js +0 -37
- package/studio-dist/client/_app/immutable/chunks/B-Ye28EY.js +0 -7
- package/studio-dist/client/_app/immutable/chunks/B-jnUl7o.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B0ORuy8x2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B0xCM1wN2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B0zCN4sX.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B1wt-iGW.js +0 -7
- package/studio-dist/client/_app/immutable/chunks/B2F3KUIU.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B2_6RrlL2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B2qKEYxA2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B2u2rNyI2.js +0 -8
- package/studio-dist/client/_app/immutable/chunks/B3_X3Lhd2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B3sNtbqf.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/B4NQP1Ax2.js +0 -6
- package/studio-dist/client/_app/immutable/chunks/BAtZg5v5.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BB6WKLm82.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BBX8UDtn.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BBs1U1iU.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BEli_4Jp2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BEt2wIUt.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BEyM8qSW2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BFZA3Dsk2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BGdPweG1.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BGiusSqE.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BGmpyfzD.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BH5rhSIR.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BHciFt922.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BHnFwTQY.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BIvye3XP2.js +0 -59
- package/studio-dist/client/_app/immutable/chunks/BJ8mcpQA2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BK17qSHw.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BLkgUtyb.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BMUko3r62.js +0 -5
- package/studio-dist/client/_app/immutable/chunks/BMwzdEaa.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BQZx6brg.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BUPJTTTd.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BVNGAeZe2.js +0 -146
- package/studio-dist/client/_app/immutable/chunks/BWfLryGm.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BXIfeogw.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BXTfFyUU.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BYJC6_MM.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BZV1ZJzH.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BZu9rehd.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Bbzm48C52.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BfGnlwjH.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Bfjb9LPp.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BieFfu-R.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Bmv63uXe2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BtBW1A0u.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/BxISGQCl2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/ByNR_KvT.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BzjhD6Hr2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/BzpWnq0c2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/C-yJVcyI2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/C0cQ-8kS2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/C1vWmhYe.js +0 -48
- package/studio-dist/client/_app/immutable/chunks/C1w6bBje.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/C243sn7r.js +0 -4
- package/studio-dist/client/_app/immutable/chunks/C2oZaDvt.js +0 -67
- package/studio-dist/client/_app/immutable/chunks/C3OziSQx.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/C3hFPbMK.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/C4P9oFvU2.js +0 -6
- package/studio-dist/client/_app/immutable/chunks/C5Nlanei.js +0 -8
- package/studio-dist/client/_app/immutable/chunks/C6KBAXPl.js +0 -15
- package/studio-dist/client/_app/immutable/chunks/C8MZnWta.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CAoan3K12.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CBpcINYH.js +0 -29
- package/studio-dist/client/_app/immutable/chunks/CE7phgWq.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CFb4Co_K.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/CGWoRK3t2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CH3t4xo1.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CHJgk6g-.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CHgPjuDQ.js +0 -17
- package/studio-dist/client/_app/immutable/chunks/CHkCZrnr.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CI_91WUN.js +0 -4
- package/studio-dist/client/_app/immutable/chunks/CJ7-hP0H.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CKIrNnkY2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CKoQ7Ko5.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CM8O4zqs.js +0 -56
- package/studio-dist/client/_app/immutable/chunks/CMz3AVRO.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CNToUR3P.js +0 -13
- package/studio-dist/client/_app/immutable/chunks/CNuQG1yl2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CQLIZtxj.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/CQYVNgM0.js +0 -20
- package/studio-dist/client/_app/immutable/chunks/CQeVOmFO2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CSPHHq09.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CTJEdbIn.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CTTT3wYw.js +0 -35
- package/studio-dist/client/_app/immutable/chunks/CV4ck7fz.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/CXQrVnHf.js +0 -11
- package/studio-dist/client/_app/immutable/chunks/CXTCtOUQ.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/C_CsU7Qq.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/C_IZx3682.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/CbTnu2Po2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Cba8RZ1a2.js +0 -8
- package/studio-dist/client/_app/immutable/chunks/Cc8xxDr5.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CdPxoldu.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CdqDTozW.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CdsmcCfC.js +0 -25
- package/studio-dist/client/_app/immutable/chunks/CeYPAoY9.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Cf4kGS9y.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CfWEqXtJ2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Cg7Wj2b9.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/CgTpKZfi2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Chpy9ca7.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/CiLKuLrQ.js +0 -4
- package/studio-dist/client/_app/immutable/chunks/CjNDJjwu.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Cjde0ZKr2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Cjgnade02.js +0 -3
- package/studio-dist/client/_app/immutable/chunks/Ckp90om52.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/ClAPVhCD.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/ClT89UdO.js +0 -11
- package/studio-dist/client/_app/immutable/chunks/CnJf5tML.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CpF4Rrcc2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CqCka5yX2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CqtqZrOl.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CrJdywQt.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Cs0zC2l2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CsMn5fBs.js +0 -141
- package/studio-dist/client/_app/immutable/chunks/CsvKLHQQ2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/Ctaresvj.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Ctetf8vc2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/Cv7yW6MG.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CxRIz-Zd.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/CxbvtjIH.js +0 -3
- package/studio-dist/client/_app/immutable/chunks/CxfeoXkZ.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/CySLscL2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/D0PKQAbM.js +0 -87
- package/studio-dist/client/_app/immutable/chunks/D0WQsLTu.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D1LBVx6r2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D1NlFXu9.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D1QfC4hu2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D1yrHAn72.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D2pa4reh.js +0 -7
- package/studio-dist/client/_app/immutable/chunks/D3QsWcIw2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/D4OkQuPl2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D6UDnATk2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D7w7HllH.js +0 -38
- package/studio-dist/client/_app/immutable/chunks/D93KpglN.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D99fQj2G2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DB5ifLM-.js +0 -3
- package/studio-dist/client/_app/immutable/chunks/DBhP8ifO2.js +0 -15
- package/studio-dist/client/_app/immutable/chunks/DF_4OWhj.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/DFpNK1vs2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DGRYMk-W.js +0 -142
- package/studio-dist/client/_app/immutable/chunks/DH3CcQwq.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DHQfJeLU.js +0 -4
- package/studio-dist/client/_app/immutable/chunks/DL89yEDy2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DLRku_0p2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/DMZkjPYT2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DNP72foU.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DO2GztVm.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DOVNXmCK2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DOqzs8kl2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DQnR63hh2.js +0 -7
- package/studio-dist/client/_app/immutable/chunks/DTxtWPkw.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DVDgCC9A2.js +0 -20
- package/studio-dist/client/_app/immutable/chunks/DVVCJYjz.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DWRhYUMj2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DWavBJBI.js +0 -4
- package/studio-dist/client/_app/immutable/chunks/DXDSWRw-.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DXoHaH4a.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/DXpCX2Hi.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DYP3EJMY.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DYQphR_V.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DYUlIivP.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DYo2ye8X2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DYxFu8yV.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DZ66sRb6.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/D_XTiylm2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DaRv9jn22.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DaXb9i_E.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Dccf4VP2.js +0 -24
- package/studio-dist/client/_app/immutable/chunks/DdODs-Sb.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DdekYWer.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/DeHaovsF.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DeRRkRO52.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DeWI5qCn.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DfivR-Md.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DgmxpSo7.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DhPLWrun2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DhhrVdfi.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/Djr2dbcc2.js +0 -37
- package/studio-dist/client/_app/immutable/chunks/DjuRo5vv.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Djz4EDzO.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DkRfaw-K2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DksB5g4W2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Dmqenb5z2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DnbToVyf.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/DpGZwlmj.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Dq0lE5C32.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Dq54XqHT2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DqK84mbb.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DqjFtSJD.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/DrKWWDpL.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DsQIgu-4.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DsqdgJHS2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DtNkZUkq.js +0 -17
- package/studio-dist/client/_app/immutable/chunks/DutIls4V2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DvxYFW4C.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Dwp-76GQ.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/DxSZd548.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DxiUMhk0.js +0 -5
- package/studio-dist/client/_app/immutable/chunks/DxslLswf.js +0 -23
- package/studio-dist/client/_app/immutable/chunks/Dy7EjGgb2.js +0 -9
- package/studio-dist/client/_app/immutable/chunks/DyGQ_VXC.js +0 -3
- package/studio-dist/client/_app/immutable/chunks/DySe3kTV2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DyzE2Uxw.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/DzhuJaxE2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/FmMHyrh6.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Gxs0J274.js +0 -5
- package/studio-dist/client/_app/immutable/chunks/HwtzDYxN.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/ITRz_Q7H2.js +0 -15
- package/studio-dist/client/_app/immutable/chunks/KDNP98XY2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/LmVjFhpk2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/MiAejGV_.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Ml4JR6Jz2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/NU5S3nNs2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/Oh5zPjv3.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/QZkvJ9vi.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Rbn8UpBm.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/SPX3gYwn2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/TX-23QW3.js +0 -3
- package/studio-dist/client/_app/immutable/chunks/UyeQuL132.js +0 -12
- package/studio-dist/client/_app/immutable/chunks/VQszoXcV.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/VtZsEMxD.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/W2IeK61p2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Wadww7ZG.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/WgfA1zWk2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/WxIgAS1f.js +0 -21
- package/studio-dist/client/_app/immutable/chunks/XrsBoOj9.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/Y3PX4poR.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/YxfwqiF32.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/Z7uO1YaO.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/_4ykQk_8.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/_kRcZFVn.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/aQNM7eVA2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/bHKz_Fb2.js +0 -45
- package/studio-dist/client/_app/immutable/chunks/bJRyRGSZ.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/dlzF6lnR.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/fjRbpfEr2.js +0 -26
- package/studio-dist/client/_app/immutable/chunks/imLk4if5.js +0 -3
- package/studio-dist/client/_app/immutable/chunks/lgRG0R-32.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/mFhCjxQJ2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/mgnH6qYg.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/n6M_5LoW.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/nLIOiDZp2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/nab7WB3u2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/orUmAKoW2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/p-fLQDfY2.js +0 -63
- package/studio-dist/client/_app/immutable/chunks/s0-WkOGk2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/sPuXfbUF.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/t4h0vrqR2.js +0 -2
- package/studio-dist/client/_app/immutable/chunks/uE83FKL-.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/uzhXlm0g2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/vTrEsGlD2.js +0 -1
- package/studio-dist/client/_app/immutable/chunks/xJgCk3dx2.js +0 -28
- package/studio-dist/client/_app/immutable/chunks/z0Mt579s2.js +0 -13
- package/studio-dist/client/_app/immutable/entry/app.BoQ7cgT2.js +0 -2
- package/studio-dist/client/_app/immutable/entry/start.Cg1v8DU4.js +0 -1
- package/studio-dist/client/_app/immutable/nodes/25.ddZ1_EFk.js +0 -1
- package/studio-dist/client/_app/immutable/nodes/26.6OcmQbLV.js +0 -1
- package/studio-dist/client/_app/immutable/nodes/4.CCjOEwVU.js +0 -1
- package/studio-dist/server/chunks/0-CvsKDxQ6.js +0 -126
- package/studio-dist/server/chunks/1-ck_x2Hf0.js +0 -9
- package/studio-dist/server/chunks/20-DVU22np7.js +0 -142
- package/studio-dist/server/chunks/23-D_tUnnoc.js +0 -181
- package/studio-dist/server/chunks/24-CVlymvLF.js +0 -151
- package/studio-dist/server/chunks/AwsRestJsonProtocol-BZuoNBmL.js +0 -416
- package/studio-dist/server/chunks/UnionSerde-BflIkhKj.js +0 -2653
- package/studio-dist/server/chunks/_dispatch-ncuRztUQ.js +0 -5597
- package/studio-dist/server/chunks/_server.ts-4NyKAneX.js +0 -116
- package/studio-dist/server/chunks/_server.ts-7hGdxdEI.js +0 -136
- package/studio-dist/server/chunks/_server.ts-B6b3b-yA.js +0 -131
- package/studio-dist/server/chunks/_server.ts-BOgGqaZp.js +0 -144
- package/studio-dist/server/chunks/_server.ts-BV1HiKZ0.js +0 -120
- package/studio-dist/server/chunks/_server.ts-BWp3g6Cr.js +0 -110
- package/studio-dist/server/chunks/_server.ts-C5NF-UgC.js +0 -122
- package/studio-dist/server/chunks/_server.ts-CDMurH5m.js +0 -2301
- package/studio-dist/server/chunks/_server.ts-COJHCgbq.js +0 -127
- package/studio-dist/server/chunks/_server.ts-CUl-Utkt.js +0 -148
- package/studio-dist/server/chunks/_server.ts-D0GAFJRb.js +0 -156
- package/studio-dist/server/chunks/_server.ts-DA6p3pmi.js +0 -117
- package/studio-dist/server/chunks/_server.ts-DThYFaZj.js +0 -160
- package/studio-dist/server/chunks/_server.ts-D_3Pm0gr.js +0 -179
- package/studio-dist/server/chunks/_server.ts-DcHxdMsm.js +0 -144
- package/studio-dist/server/chunks/_server.ts-Dlfadh2I.js +0 -144
- package/studio-dist/server/chunks/_server.ts-JallJnps.js +0 -240
- package/studio-dist/server/chunks/_server.ts-NEFTbJpM.js +0 -142
- package/studio-dist/server/chunks/_server.ts-d-2NvRwX.js +0 -122
- package/studio-dist/server/chunks/_server.ts-rUWMLkIw.js +0 -146
- package/studio-dist/server/chunks/abort-events-CDRAJSqb.js +0 -30
- package/studio-dist/server/chunks/adapters-BkMgPNUM.js +0 -359
- package/studio-dist/server/chunks/adapters2-CQ3PzoaK.js +0 -28
- package/studio-dist/server/chunks/api-mode2-3W-I1-XO.js +0 -36
- package/studio-dist/server/chunks/api2-CmNQzb0b.js +0 -96
- package/studio-dist/server/chunks/attention-consolidate-CidG1jfH.js +0 -485
- package/studio-dist/server/chunks/audit3-DMO_fUGp.js +0 -52
- package/studio-dist/server/chunks/auto-extract-B84La1Vs.js +0 -34
- package/studio-dist/server/chunks/brain-consolidator-JGm6mzFf.js +0 -373
- package/studio-dist/server/chunks/brain-doctor-Dc2WqVbs.js +0 -311
- package/studio-dist/server/chunks/brain-embedding-Djw9ekXu.js +0 -42
- package/studio-dist/server/chunks/brain-lifecycle-BOOa876K.js +0 -969
- package/studio-dist/server/chunks/brain-maintenance-U6VvsvmK.js +0 -133
- package/studio-dist/server/chunks/brain-maintenance2-CwVSmfDT.js +0 -43
- package/studio-dist/server/chunks/brain-retrieval2-exR8mdgh.js +0 -751
- package/studio-dist/server/chunks/brain-search-CpSh-SNi.js +0 -48
- package/studio-dist/server/chunks/brain-search2-CwI2cXgg.js +0 -716
- package/studio-dist/server/chunks/brain-similarity-DI4yzm9e.js +0 -113
- package/studio-dist/server/chunks/brain-stdp2-BxSBIlSr.js +0 -960
- package/studio-dist/server/chunks/brain-writer-handlers-Dwu0QCAA.js +0 -188
- package/studio-dist/server/chunks/brain-writer-thread-6n7wI7Gy.js +0 -360
- package/studio-dist/server/chunks/branch-lock-Cq7zzmFK.js +0 -1118
- package/studio-dist/server/chunks/branch-lock2-CmDc4CZW.js +0 -45
- package/studio-dist/server/chunks/cancelled-child-waiver-audit-DkesrN83.js +0 -54
- package/studio-dist/server/chunks/catalog-model-resolver-Bas9qnoP.js +0 -9
- package/studio-dist/server/chunks/catalog-model-resolver2-Cexk2TN0.js +0 -237
- package/studio-dist/server/chunks/catalog-resolver-CLot3XJO.js +0 -260
- package/studio-dist/server/chunks/catalog-resolver2-JmKb91kY.js +0 -33
- package/studio-dist/server/chunks/chunk-DDP5xfzh.js +0 -39
- package/studio-dist/server/chunks/cleo-home-CCfe6kAQ.js +0 -64
- package/studio-dist/server/chunks/concrete-session2-bb_vxJ2N.js +0 -43
- package/studio-dist/server/chunks/config-DHj9CcFs.js +0 -386
- package/studio-dist/server/chunks/config2-F6PPIn7D.js +0 -35
- package/studio-dist/server/chunks/connections-BMGJVYcS.js +0 -98
- package/studio-dist/server/chunks/credential-pool-vF6NdtT9.js +0 -4600
- package/studio-dist/server/chunks/credentials-C7EJFf5O.js +0 -35
- package/studio-dist/server/chunks/credentials-store-CFygIuB2.js +0 -35
- package/studio-dist/server/chunks/cross-db-cleanup-1LWTUKPi.js +0 -147
- package/studio-dist/server/chunks/data-accessor-CWgVndbR.js +0 -72
- package/studio-dist/server/chunks/data-safety-central-DaFxK27G.js +0 -683
- package/studio-dist/server/chunks/decisions-CmVXV2-H.js +0 -574
- package/studio-dist/server/chunks/decisions2-XQsSYdxa.js +0 -48
- package/studio-dist/server/chunks/depends-waiver-audit-CUmlBYHx.js +0 -56
- package/studio-dist/server/chunks/dialectic-evaluator2-BOyyXhdI.js +0 -96
- package/studio-dist/server/chunks/dist-es2-DQy2Mjn_.js +0 -43
- package/studio-dist/server/chunks/dist-es3-CBygU4n5.js +0 -365
- package/studio-dist/server/chunks/dist-es4-CavbNu4B.js +0 -162
- package/studio-dist/server/chunks/dist-es5-Crpm8Wsl.js +0 -465
- package/studio-dist/server/chunks/dist-es6-CgePHzh4.js +0 -99
- package/studio-dist/server/chunks/dist-es7-k6c5GEd7.js +0 -311
- package/studio-dist/server/chunks/dist-es8-Bd9v0_pE.js +0 -91
- package/studio-dist/server/chunks/dist3-23bsJhRw.js +0 -27
- package/studio-dist/server/chunks/dist4-DmC1zSXi.js +0 -35618
- package/studio-dist/server/chunks/dual-scope-db-DKnWu1KM.js +0 -5672
- package/studio-dist/server/chunks/dual-scope-db2-Dht3luRw.js +0 -31
- package/studio-dist/server/chunks/duplicate-bypass-audit-BN5w1H2y.js +0 -36
- package/studio-dist/server/chunks/duplicate-detector-CaVFMKdE.js +0 -692
- package/studio-dist/server/chunks/edge-types-CgBvb0w1.js +0 -28
- package/studio-dist/server/chunks/embedding-local-xEnym8Ho.js +0 -92
- package/studio-dist/server/chunks/event-streams-Bi2p_fVo.js +0 -232
- package/studio-dist/server/chunks/execution-learning-BVCw7Plq.js +0 -278
- package/studio-dist/server/chunks/exodus-BBuuN6aA.js +0 -2594
- package/studio-dist/server/chunks/externalDataInterceptor-C3C4cObe.js +0 -21
- package/studio-dist/server/chunks/extraction-gate-DDNBq7gu.js +0 -48
- package/studio-dist/server/chunks/extraction-gate2-D77EZBQ6.js +0 -375
- package/studio-dist/server/chunks/getSSOTokenFromFile-yZAJxDci.js +0 -21
- package/studio-dist/server/chunks/governor2-CtfV3wfX.js +0 -923
- package/studio-dist/server/chunks/graph-auto-populate-Dmsr9ZJM.js +0 -42
- package/studio-dist/server/chunks/graph-auto-populate2-Cz0qeebM.js +0 -156
- package/studio-dist/server/chunks/graph-memory-bridge-CY8ft_d7.js +0 -43
- package/studio-dist/server/chunks/graph-memory-bridge2-Cd0XZwqc.js +0 -429
- package/studio-dist/server/chunks/handler-helpers-AANBGA_p.js +0 -49
- package/studio-dist/server/chunks/hash-Cm6yMET4.js +0 -14
- package/studio-dist/server/chunks/health-monitor-FepUZN1m.js +0 -106
- package/studio-dist/server/chunks/identity-DRpurt56.js +0 -30
- package/studio-dist/server/chunks/identity2-DeAB5RXE.js +0 -114
- package/studio-dist/server/chunks/index-61916rmV.js +0 -632
- package/studio-dist/server/chunks/index-DAgVDouG.js +0 -268
- package/studio-dist/server/chunks/index-Dtt_h58T.js +0 -2116
- package/studio-dist/server/chunks/indexes-DZ52grq6.js +0 -615
- package/studio-dist/server/chunks/json-Bfixam3g.js +0 -126
- package/studio-dist/server/chunks/learnings-D6Y3YGMU.js +0 -47
- package/studio-dist/server/chunks/learnings2-MwBdR9vb.js +0 -171
- package/studio-dist/server/chunks/lifecycle-ops2-V2CR5-7X.js +0 -121
- package/studio-dist/server/chunks/list-BhObczvn.js +0 -229
- package/studio-dist/server/chunks/living-brain2-j0B_Ir8j.js +0 -285
- package/studio-dist/server/chunks/llm-backend-resolver-D4ANvUPL.js +0 -295
- package/studio-dist/server/chunks/llm-extraction-DVCu4heR.js +0 -408
- package/studio-dist/server/chunks/loadSharedConfigFiles-umvW7kuz.js +0 -73
- package/studio-dist/server/chunks/loadSso-iidd5iKx.js +0 -599
- package/studio-dist/server/chunks/local-model-fit-B0TxifnX.js +0 -53
- package/studio-dist/server/chunks/local-model-fit2-BMqo6GJm.js +0 -2664
- package/studio-dist/server/chunks/lock-CA7d6lj7.js +0 -57
- package/studio-dist/server/chunks/logger-DQIoyZbq.js +0 -34
- package/studio-dist/server/chunks/memory-BUbicBbE.js +0 -618
- package/studio-dist/server/chunks/memory-accessor-i3P-RHSg.js +0 -42
- package/studio-dist/server/chunks/memory-accessor2-B981tHDR.js +0 -467
- package/studio-dist/server/chunks/memory-bridge-BOlEWg9w.js +0 -424
- package/studio-dist/server/chunks/memory-sqlite2-B7dq8doO.js +0 -42
- package/studio-dist/server/chunks/model-runner2-B71xjp4y.js +0 -43
- package/studio-dist/server/chunks/mvi-helpers-BNsJ8ZpQ.js +0 -59
- package/studio-dist/server/chunks/nexus-plasticity-BTfU8cW_.js +0 -269
- package/studio-dist/server/chunks/nexus-risk-audit-p379-TU5.js +0 -54
- package/studio-dist/server/chunks/nexus-schema-zeygY8OD.js +0 -11
- package/studio-dist/server/chunks/nexus-schema2-DP0Qd7CA.js +0 -444
- package/studio-dist/server/chunks/nexus-sqlite-BVNIpwc7.js +0 -36
- package/studio-dist/server/chunks/nexus-sqlite2-BBfY2xnY.js +0 -1103
- package/studio-dist/server/chunks/node-http-handler-CJI8kn7X.js +0 -386
- package/studio-dist/server/chunks/observe-Bo9veHGe.js +0 -47
- package/studio-dist/server/chunks/observe2-wzO0MaMY.js +0 -245
- package/studio-dist/server/chunks/observer-reflector-BwNOuq1d.js +0 -62
- package/studio-dist/server/chunks/observer-reflector2-ggtC1hmk.js +0 -478
- package/studio-dist/server/chunks/on-open-Wpcw7DV4.js +0 -740
- package/studio-dist/server/chunks/open-cleo-db--8sYNaYY.js +0 -70
- package/studio-dist/server/chunks/parseKnownFiles-Dg0pMFcT.js +0 -18
- package/studio-dist/server/chunks/parseUrl-qgGfl-Vh.js +0 -120
- package/studio-dist/server/chunks/paths-CV7S5-Zm.js +0 -30012
- package/studio-dist/server/chunks/patterns-lh5kn13I.js +0 -48
- package/studio-dist/server/chunks/patterns2-CzIcT-ai.js +0 -177
- package/studio-dist/server/chunks/pipeline-stage-IB_pOft-.js +0 -63
- package/studio-dist/server/chunks/prediction-D1lSGJ4c.js +0 -217
- package/studio-dist/server/chunks/premature-close-audit-VG09uAco.js +0 -53
- package/studio-dist/server/chunks/project-context-BjiqfEBi.js +0 -166
- package/studio-dist/server/chunks/provider-registry2-Cu7rAF0R.js +0 -35
- package/studio-dist/server/chunks/quality-feedback-CuCGEI6S.js +0 -371
- package/studio-dist/server/chunks/quality-scoring-CCPuRQmJ.js +0 -160
- package/studio-dist/server/chunks/query-ops-DCrjbZb9.js +0 -78
- package/studio-dist/server/chunks/query-promise-BkPmGPJy.js +0 -1257
- package/studio-dist/server/chunks/readFile-CxwXhymG.js +0 -31
- package/studio-dist/server/chunks/registry-CL2gN1zd.js +0 -27
- package/studio-dist/server/chunks/registry2-DoPYJnUW.js +0 -233
- package/studio-dist/server/chunks/registry3-BajEb-ll.js +0 -42
- package/studio-dist/server/chunks/registry4-DCqffZkT.js +0 -142
- package/studio-dist/server/chunks/retry-B3oEKYpp.js +0 -105
- package/studio-dist/server/chunks/role-executor-CC8BU54L.js +0 -25379
- package/studio-dist/server/chunks/role-resolver-D9QaDT0e.js +0 -6544
- package/studio-dist/server/chunks/role-resolver2-nkhzS1oy.js +0 -37
- package/studio-dist/server/chunks/rollup-CiefjN_Y.js +0 -194
- package/studio-dist/server/chunks/safety-data-accessor-CniDmGJO.js +0 -276
- package/studio-dist/server/chunks/service-connections-accessor-yBCdcgU-.js +0 -282
- package/studio-dist/server/chunks/session-factory-vbengc42.js +0 -96
- package/studio-dist/server/chunks/session-grade-BF4ZZtN_.js +0 -244
- package/studio-dist/server/chunks/session-journal-Bvey70Ur.js +0 -235
- package/studio-dist/server/chunks/session-narrative-BirZINSU.js +0 -304
- package/studio-dist/server/chunks/session-store--N_xHxUH.js +0 -557
- package/studio-dist/server/chunks/session-store2-DAM-eVTH.js +0 -43
- package/studio-dist/server/chunks/sessions-33DD4hkt.js +0 -2273
- package/studio-dist/server/chunks/sessions2-BHswKRDP.js +0 -50
- package/studio-dist/server/chunks/sigil-B-RznFXz.js +0 -33
- package/studio-dist/server/chunks/sigil2-jRMG5DuR.js +0 -47
- package/studio-dist/server/chunks/signin-BAsW3mM8.js +0 -644
- package/studio-dist/server/chunks/sleep-consolidation-BnSwXrvq.js +0 -823
- package/studio-dist/server/chunks/specialists-B_ZbpQlK.js +0 -441
- package/studio-dist/server/chunks/sqlite-Bm5LzbPs.js +0 -5977
- package/studio-dist/server/chunks/sqlite-backup-CFG1-b2e.js +0 -42
- package/studio-dist/server/chunks/sqlite-data-accessor-DD_RFX6r.js +0 -987
- package/studio-dist/server/chunks/sqlite-data-accessor2-CRmgNBnq.js +0 -44
- package/studio-dist/server/chunks/sqlite-native-BwlIqtbs.js +0 -42
- package/studio-dist/server/chunks/sqlite2-CUPut2fh.js +0 -42
- package/studio-dist/server/chunks/src2-DK8DKufK.js +0 -290
- package/studio-dist/server/chunks/src3-BJjf7XRG.js +0 -798
- package/studio-dist/server/chunks/src4-DNleK_t_.js +0 -28
- package/studio-dist/server/chunks/sso-oidc-eUvwseuL.js +0 -861
- package/studio-dist/server/chunks/storage-B9UA3BHR.js +0 -198
- package/studio-dist/server/chunks/sts-g7LDMLEd.js +0 -4655
- package/studio-dist/server/chunks/surprisal-CwTfWQi8.js +0 -224
- package/studio-dist/server/chunks/surprisal-tree-7dfHsuw1.js +0 -230
- package/studio-dist/server/chunks/system-resolver2-Bzhue_zQ.js +0 -53
- package/studio-dist/server/chunks/tasks-SHX7UPGY.js +0 -19694
- package/studio-dist/server/chunks/tasks-schema2-CTMoQKQy.js +0 -42
- package/studio-dist/server/chunks/temporal-supersession-DP4GPG_B.js +0 -298
- package/studio-dist/server/chunks/token-cAhAD9f9.js +0 -139
- package/studio-dist/server/chunks/token-util-D6drEz8_.js +0 -353
- package/studio-dist/server/chunks/token-util2-8UPSGvbb.js +0 -97
- package/studio-dist/server/chunks/transcript-scanner-kJWhWmlg.js +0 -53
- package/studio-dist/server/chunks/transformers.node-_xbxmK5p.js +0 -38475
- package/studio-dist/server/chunks/typed-query-l1D_QElt.js +0 -18
- package/studio-dist/server/chunks/unique-constraint-BZrrwgwc.js +0 -88
- package/studio-dist/server/chunks/update-B2YVBZG0.js +0 -1594
- package/studio-dist/server/chunks/user-profile-B61ZhVmC.js +0 -89
- package/studio-dist/server/chunks/utils-BPSZyajG.js +0 -1176
- package/studio-dist/server/chunks/validation-rules-CE27rtoF.js +0 -44
- package/studio-dist/server/chunks/zod-DsAeKNLm.js +0 -141
- /package/studio-dist/client/_app/immutable/chunks/{CQCxd1p9.js → B8WnZMYa.js} +0 -0
- /package/studio-dist/client/_app/immutable/chunks/{D13Quv9e2.js → B_0_YCYG.js} +0 -0
- /package/studio-dist/client/_app/immutable/chunks/{djL6V-tr.js → CqgtdAx_.js} +0 -0
- /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
|