@cleocode/cleo 2026.9.7 → 2026.9.9
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 +3766 -2232
- 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/{TX-23QW3.js → BiaAd37T.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/{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/{DVHIxkgs.js → DV2HHHkd.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{eK8hf4s7.js → DXxEgUey.js} +1 -1
- 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/{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/chunks/zWFSpNUo.js +1 -0
- package/studio-dist/client/_app/immutable/entry/app.AR3q6Ydw.js +2 -0
- package/studio-dist/client/_app/immutable/entry/start.Cf2RUEwO.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{0.CZzEEyVh.js → 0.BEkWfyyt.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.Bj3Opbua.js → 1.DfbrPFgR.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.CdRO2NCB.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16.mEwy9cqh.js → 16.Cr01BBgh.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.DP2QtQGn.js → 17.PZ1GrCot.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.Bu0054sX.js → 18.Crly2qhe.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.DqQjto4P.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.BIypnou8.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/25.CllbQ5CT.js +39 -0
- package/studio-dist/client/_app/immutable/nodes/26.DILkE52_.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.ChHbetZy.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-BvvArN5K.js +41 -0
- package/studio-dist/server/chunks/1-rLPlIpIR.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-BlL3H5S5.js} +3 -3
- package/studio-dist/server/chunks/{16-De6EzPSa.js → 16-C-UvTi7Z.js} +5 -4
- package/studio-dist/server/chunks/{17-CZNsiZhi.js → 17-C790IKoE.js} +10 -93
- package/studio-dist/server/chunks/{18-CbxxjZox.js → 18-6VS9Vgfx.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-DUG4_xXL.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-CkIGZX8S.js +67 -0
- package/studio-dist/server/chunks/{25-CAg6Xcmn.js → 25-CHBaeXym.js} +15 -96
- package/studio-dist/server/chunks/{26-_nfVTvNi.js → 26-BbDd--8j.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-DMSsQV71.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-BjSWu4Fw.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-UYiF7YBK.js → _page.svelte-BCRyjlk2.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-2cgtvHwW.js → _page.svelte-BdkomWnj.js} +13 -71
- 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-Wfx7ww_h.js → _page.svelte-CIyzbngu.js} +11 -13
- package/studio-dist/server/chunks/{_page.svelte-C_VSL8NW.js → _page.svelte-CmbOzJ6A.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-tYN7_LXI.js → _page.svelte-CtSwzG-R.js} +9 -11
- package/studio-dist/server/chunks/{_page.svelte-DYNorA0S.js → _page.svelte-Cx9Ptecp.js} +10 -67
- package/studio-dist/server/chunks/{_page.svelte-9OQphlnm.js → _page.svelte-D4Uf5q1X.js} +14 -69
- package/studio-dist/server/chunks/{_page.svelte-BIlhmugm.js → _page.svelte-DRjD44sK.js} +11 -13
- package/studio-dist/server/chunks/{_page.svelte-BVVTrzTL.js → _page.svelte-DaheDIRs.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-DOWw416I.js → _page.svelte-DfIiE7gL.js} +11 -13
- 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-l4Z_xjl9.js → _page.svelte-k-4NCnbz.js} +9 -11
- package/studio-dist/server/chunks/{_page.svelte-CHzXuw2Q.js → _page.svelte-me5SUosG.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BgwL2Gyu.js → _page.svelte-sHj6UAzC.js} +11 -13
- 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-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-CJA1djzJ.js → _server.ts-BCnr9uaO.js} +8 -92
- 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-BdN4AJ6o.js → _server.ts-BSgLJPPQ.js} +10 -91
- 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-CGROl_5b.js +122 -0
- 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-uUx7uT2Y.js → _server.ts-CYv5YuHd.js} +6 -43
- 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-B2E7fxo9.js → _server.ts-DUPODxVZ.js} +6 -91
- 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-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/_server.ts-n0fpsfkk.js +67 -0
- 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-CrfCXSXZ.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-BR1f34Gj.js +18726 -0
- package/studio-dist/server/chunks/{error.svelte-CplNulnS.js → error.svelte-CmR0NUCQ.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-Dso0FRxT.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-DYUO6aQs.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-CS6eY2sx.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/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,987 +0,0 @@
|
|
|
1
|
-
import { T as TERMINAL_TASK_STATUSES, b as getLogger } from './paths-CV7S5-Zm.js';
|
|
2
|
-
import { w as withWriteRetry } from './dual-scope-db-DKnWu1KM.js';
|
|
3
|
-
import { a as getDb, b as getNativeTasksDb, c as closeDb, u as tasksEvidenceAcBindings, w as tasksTaskAcceptanceCriteriaHistory, x as tasksTaskAcceptanceCriteria, y as tasksTaskRelations, f as tasksTasks, h as tasksTaskDependencies, i as tasksTaskLabels, t as tasksSessions, e as auditLog, s as schemaMeta } from './sqlite-Bm5LzbPs.js';
|
|
4
|
-
import { d as rowToTask, t as taskToRow, f as resolveCurrentSession, h as rowToSession, i as archivedTaskToRow } from './session-store--N_xHxUH.js';
|
|
5
|
-
import { c as cleanupBrainRefsOnSessionDelete } from './cross-db-cleanup-1LWTUKPi.js';
|
|
6
|
-
import { s as sql } from './utils-BPSZyajG.js';
|
|
7
|
-
import { i as inArray, e as eq, a as and, n as ne, b as notInArray, c as isNull, o as or, l as like } from './query-promise-BkPmGPJy.js';
|
|
8
|
-
|
|
9
|
-
//#region ../core/dist/store/db-helpers.js
|
|
10
|
-
/**
|
|
11
|
-
* Shared database helper functions for SQLite store modules.
|
|
12
|
-
*
|
|
13
|
-
* Consolidates upsert and dependency patterns used across
|
|
14
|
-
* sqlite-data-accessor.ts, tasks-sqlite.ts, and session-store.ts.
|
|
15
|
-
*
|
|
16
|
-
* @epic T4454
|
|
17
|
-
*/
|
|
18
|
-
var log = getLogger("db-helpers");
|
|
19
|
-
/**
|
|
20
|
-
* Upsert a single task row into the tasks table.
|
|
21
|
-
* Handles both active task upsert and archived task upsert via optional archiveFields.
|
|
22
|
-
*
|
|
23
|
-
* When `allowOrphanParent` is true (bulk/migration mode, T5034): silently nulls out
|
|
24
|
-
* parentId if the referenced parent does not exist, preventing FK violations.
|
|
25
|
-
* When false (normal single-task writes, default): logs a warning but still proceeds
|
|
26
|
-
* so that FK enforcement at the DB level provides the final safety net.
|
|
27
|
-
*
|
|
28
|
-
* Callers that perform bulk imports or archive restoration should pass
|
|
29
|
-
* `allowOrphanParent: true` to enable the lenient behavior.
|
|
30
|
-
*/
|
|
31
|
-
async function upsertTask(db, row, archiveFields, allowOrphanParent = false) {
|
|
32
|
-
if (row.parentId) {
|
|
33
|
-
if ((await db.select({ id: tasksTasks.id }).from(tasksTasks).where(eq(tasksTasks.id, row.parentId)).limit(1).all()).length === 0) if (allowOrphanParent) row = {
|
|
34
|
-
...row,
|
|
35
|
-
parentId: null
|
|
36
|
-
};
|
|
37
|
-
else log.warn({
|
|
38
|
-
taskId: row.id,
|
|
39
|
-
parentId: row.parentId
|
|
40
|
-
}, "upsertTask: parentId references a non-existent task — parent relationship may be lost");
|
|
41
|
-
}
|
|
42
|
-
const values = archiveFields ? {
|
|
43
|
-
...row,
|
|
44
|
-
...archiveFields,
|
|
45
|
-
status: "archived"
|
|
46
|
-
} : row;
|
|
47
|
-
const set = {
|
|
48
|
-
title: row.title,
|
|
49
|
-
description: row.description,
|
|
50
|
-
status: archiveFields ? "archived" : row.status,
|
|
51
|
-
priority: row.priority,
|
|
52
|
-
type: row.type,
|
|
53
|
-
kind: row.kind,
|
|
54
|
-
scope: row.scope,
|
|
55
|
-
severity: row.severity,
|
|
56
|
-
parentId: row.parentId,
|
|
57
|
-
phase: row.phase,
|
|
58
|
-
size: row.size,
|
|
59
|
-
position: row.position,
|
|
60
|
-
positionVersion: row.positionVersion,
|
|
61
|
-
labelsJson: row.labelsJson,
|
|
62
|
-
notesJson: row.notesJson,
|
|
63
|
-
acceptanceJson: row.acceptanceJson,
|
|
64
|
-
filesJson: row.filesJson,
|
|
65
|
-
origin: row.origin,
|
|
66
|
-
blockedBy: row.blockedBy,
|
|
67
|
-
epicLifecycle: row.epicLifecycle,
|
|
68
|
-
noAutoComplete: row.noAutoComplete,
|
|
69
|
-
createdAt: row.createdAt,
|
|
70
|
-
updatedAt: row.updatedAt,
|
|
71
|
-
completedAt: row.completedAt,
|
|
72
|
-
cancelledAt: row.cancelledAt,
|
|
73
|
-
cancellationReason: row.cancellationReason,
|
|
74
|
-
verificationJson: row.verificationJson,
|
|
75
|
-
createdBy: row.createdBy,
|
|
76
|
-
modifiedBy: row.modifiedBy,
|
|
77
|
-
sessionId: row.sessionId,
|
|
78
|
-
pipelineStage: row.pipelineStage ?? null,
|
|
79
|
-
assignee: row.assignee ?? null,
|
|
80
|
-
archivedAt: archiveFields?.archivedAt ?? null,
|
|
81
|
-
archiveReason: archiveFields?.archiveReason ?? null,
|
|
82
|
-
cycleTimeDays: archiveFields?.cycleTimeDays ?? null
|
|
83
|
-
};
|
|
84
|
-
await db.insert(tasksTasks).values(values).onConflictDoUpdate({
|
|
85
|
-
target: tasksTasks.id,
|
|
86
|
-
set
|
|
87
|
-
}).run();
|
|
88
|
-
await updateTaskLabels(db, row.id, parseLabels(row.labelsJson));
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Parse a `labels_json` text column into a deduplicated string-array.
|
|
92
|
-
*
|
|
93
|
-
* Invalid / non-array JSON yields an empty list — the junction is then emptied
|
|
94
|
-
* for that task, matching the "no labels" state.
|
|
95
|
-
*
|
|
96
|
-
* @param labelsJson - The serialized JSON array from `tasks.labels_json`.
|
|
97
|
-
* @returns Deduplicated, non-empty label strings.
|
|
98
|
-
*/
|
|
99
|
-
function parseLabels(labelsJson) {
|
|
100
|
-
if (!labelsJson) return [];
|
|
101
|
-
try {
|
|
102
|
-
const parsed = JSON.parse(labelsJson);
|
|
103
|
-
if (!Array.isArray(parsed)) return [];
|
|
104
|
-
const seen = /* @__PURE__ */ new Set();
|
|
105
|
-
for (const l of parsed) if (typeof l === "string" && l.length > 0) seen.add(l);
|
|
106
|
-
return [...seen];
|
|
107
|
-
} catch {
|
|
108
|
-
return [];
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Replace the {@link schema.taskLabels} junction rows for one task so they
|
|
113
|
-
* exactly mirror its label set (T11356).
|
|
114
|
-
*
|
|
115
|
-
* Delete-then-insert keeps the junction authoritative without read-modify-write
|
|
116
|
-
* races: the prior label set is dropped and the supplied set re-inserted. Called
|
|
117
|
-
* from {@link upsertTask} and from raw-SQL proposal inserters that bypass it.
|
|
118
|
-
*
|
|
119
|
-
* @param db - Drizzle tasks.db handle.
|
|
120
|
-
* @param taskId - The owning task id.
|
|
121
|
-
* @param labels - The full label set the junction should reflect.
|
|
122
|
-
*/
|
|
123
|
-
async function updateTaskLabels(db, taskId, labels) {
|
|
124
|
-
await db.delete(tasksTaskLabels).where(eq(tasksTaskLabels.taskId, taskId)).run();
|
|
125
|
-
if (labels.length === 0) return;
|
|
126
|
-
await db.insert(tasksTaskLabels).values(labels.map((label) => ({
|
|
127
|
-
taskId,
|
|
128
|
-
label
|
|
129
|
-
}))).onConflictDoNothing().run();
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Upsert a single session row into the sessions table.
|
|
133
|
-
*/
|
|
134
|
-
async function upsertSession(db, session) {
|
|
135
|
-
const sessionName = session.name || `session-${session.id}`;
|
|
136
|
-
const values = {
|
|
137
|
-
id: session.id,
|
|
138
|
-
name: sessionName,
|
|
139
|
-
status: session.status,
|
|
140
|
-
scopeJson: JSON.stringify(session.scope ?? { type: "global" }),
|
|
141
|
-
currentTask: session.taskWork?.taskId ?? null,
|
|
142
|
-
taskStartedAt: session.taskWork?.setAt ?? null,
|
|
143
|
-
agent: session.agent ?? null,
|
|
144
|
-
notesJson: session.notes ? JSON.stringify(session.notes) : "[]",
|
|
145
|
-
tasksCompletedJson: session.tasksCompleted ? JSON.stringify(session.tasksCompleted) : "[]",
|
|
146
|
-
tasksCreatedJson: session.tasksCreated ? JSON.stringify(session.tasksCreated) : "[]",
|
|
147
|
-
handoffJson: session.handoffJson ?? null,
|
|
148
|
-
startedAt: session.startedAt,
|
|
149
|
-
endedAt: session.endedAt ?? null,
|
|
150
|
-
previousSessionId: session.previousSessionId ?? null,
|
|
151
|
-
nextSessionId: session.nextSessionId ?? null,
|
|
152
|
-
parentSessionId: session.parentSessionId ?? null,
|
|
153
|
-
agentIdentifier: session.agentIdentifier ?? null,
|
|
154
|
-
handoffConsumedAt: session.handoffConsumedAt ?? null,
|
|
155
|
-
handoffConsumedBy: session.handoffConsumedBy ?? null,
|
|
156
|
-
debriefJson: session.debriefJson ?? null,
|
|
157
|
-
statsJson: session.stats ? JSON.stringify(session.stats) : null,
|
|
158
|
-
resumeCount: session.resumeCount ?? null,
|
|
159
|
-
gradeMode: session.gradeMode ? true : null,
|
|
160
|
-
agentHandle: session.agentHandle ?? null,
|
|
161
|
-
scopeKind: session.scopeKind ?? null,
|
|
162
|
-
scopeId: session.scopeId ?? null,
|
|
163
|
-
lastActivity: session.lastActivity ?? null
|
|
164
|
-
};
|
|
165
|
-
const { id: _id, ...setFields } = values;
|
|
166
|
-
await db.insert(tasksSessions).values(values).onConflictDoUpdate({
|
|
167
|
-
target: tasksSessions.id,
|
|
168
|
-
set: setFields
|
|
169
|
-
}).run();
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Update dependencies for a task: delete existing, then re-insert.
|
|
173
|
-
* Optionally filters by a set of valid IDs.
|
|
174
|
-
*/
|
|
175
|
-
async function updateDependencies(db, taskId, depends, validIds) {
|
|
176
|
-
await db.delete(tasksTaskDependencies).where(eq(tasksTaskDependencies.taskId, taskId)).run();
|
|
177
|
-
for (const depId of depends) await db.insert(tasksTaskDependencies).values({
|
|
178
|
-
taskId,
|
|
179
|
-
dependsOn: depId
|
|
180
|
-
}).onConflictDoNothing().run();
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Batch-update dependencies for multiple tasks in two bulk SQL operations.
|
|
184
|
-
* Replaces per-task updateDependencies() loops with:
|
|
185
|
-
* 1. Single DELETE for all task IDs
|
|
186
|
-
* 2. Single INSERT for all dependency rows
|
|
187
|
-
*
|
|
188
|
-
* Callers are responsible for wrapping this in a transaction if needed.
|
|
189
|
-
*/
|
|
190
|
-
async function batchUpdateDependencies(db, tasks, validIds) {
|
|
191
|
-
if (tasks.length === 0) return;
|
|
192
|
-
const allTaskIds = tasks.map((t) => t.taskId);
|
|
193
|
-
await db.delete(tasksTaskDependencies).where(inArray(tasksTaskDependencies.taskId, allTaskIds)).run();
|
|
194
|
-
const allDepRows = [];
|
|
195
|
-
for (const { taskId, deps } of tasks) for (const depId of deps) if (!validIds || validIds.has(depId)) allDepRows.push({
|
|
196
|
-
taskId,
|
|
197
|
-
dependsOn: depId
|
|
198
|
-
});
|
|
199
|
-
if (allDepRows.length > 0) await db.insert(tasksTaskDependencies).values(allDepRows).onConflictDoNothing().run();
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Batch-load dependencies for a list of tasks and apply them in-place.
|
|
203
|
-
* Uses inArray for efficient querying. Optionally filters by a set of valid IDs.
|
|
204
|
-
*/
|
|
205
|
-
async function loadDependenciesForTasks(db, tasks, validationIds) {
|
|
206
|
-
if (tasks.length === 0) return;
|
|
207
|
-
const taskIds = tasks.map((t) => t.id);
|
|
208
|
-
const taskIdSet = validationIds ?? new Set(taskIds);
|
|
209
|
-
const allDeps = await db.select().from(tasksTaskDependencies).where(inArray(tasksTaskDependencies.taskId, taskIds)).all();
|
|
210
|
-
const depMap = /* @__PURE__ */ new Map();
|
|
211
|
-
for (const dep of allDeps) if (taskIdSet.has(dep.dependsOn)) {
|
|
212
|
-
let arr = depMap.get(dep.taskId);
|
|
213
|
-
if (!arr) {
|
|
214
|
-
arr = [];
|
|
215
|
-
depMap.set(dep.taskId, arr);
|
|
216
|
-
}
|
|
217
|
-
arr.push(dep.dependsOn);
|
|
218
|
-
}
|
|
219
|
-
for (const task of tasks) {
|
|
220
|
-
const deps = depMap.get(task.id);
|
|
221
|
-
if (deps && deps.length > 0) task.depends = deps;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Batch-load relations for a list of tasks and apply them in-place.
|
|
226
|
-
* Mirrors loadDependenciesForTasks pattern for task_relations table (T5168).
|
|
227
|
-
*/
|
|
228
|
-
async function loadRelationsForTasks(db, tasks) {
|
|
229
|
-
if (tasks.length === 0) return;
|
|
230
|
-
const taskIds = tasks.map((t) => t.id);
|
|
231
|
-
const allRels = await db.select().from(tasksTaskRelations).where(inArray(tasksTaskRelations.taskId, taskIds)).all();
|
|
232
|
-
const relMap = /* @__PURE__ */ new Map();
|
|
233
|
-
for (const rel of allRels) {
|
|
234
|
-
let arr = relMap.get(rel.taskId);
|
|
235
|
-
if (!arr) {
|
|
236
|
-
arr = [];
|
|
237
|
-
relMap.set(rel.taskId, arr);
|
|
238
|
-
}
|
|
239
|
-
arr.push({
|
|
240
|
-
taskId: rel.relatedTo,
|
|
241
|
-
type: rel.relationType,
|
|
242
|
-
reason: rel.reason ?? void 0
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
for (const task of tasks) {
|
|
246
|
-
const relations = relMap.get(task.id);
|
|
247
|
-
task.relates = relations && relations.length > 0 ? relations : [];
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
//#endregion
|
|
251
|
-
//#region ../core/dist/store/sqlite-data-accessor.js
|
|
252
|
-
/**
|
|
253
|
-
* SQLite-based implementation of the DataAccessor interface.
|
|
254
|
-
*
|
|
255
|
-
* Materializes TaskFile/ArchiveFile/SessionsFile from SQLite tables,
|
|
256
|
-
* allowing core modules to continue using whole-file data structures
|
|
257
|
-
* while storage is backed by the relational database.
|
|
258
|
-
*
|
|
259
|
-
* Uses existing sqlite.ts engine (node:sqlite / drizzle-orm) and
|
|
260
|
-
* tasks-sqlite.ts / session-store.ts for row-level operations.
|
|
261
|
-
*
|
|
262
|
-
* @epic T4454
|
|
263
|
-
*/
|
|
264
|
-
/**
|
|
265
|
-
* Per-process monotonic counter for unique nested SAVEPOINT names (T9814).
|
|
266
|
-
* Only used when DataAccessor.transaction() is called from within an
|
|
267
|
-
* already-open outer transaction (depth > 0). Outer transactions use
|
|
268
|
-
* BEGIN IMMEDIATE/COMMIT/ROLLBACK (depth = 0).
|
|
269
|
-
*/
|
|
270
|
-
var _txSavepointCounter = 0;
|
|
271
|
-
/**
|
|
272
|
-
* Generate a unique audit log entry ID.
|
|
273
|
-
* @task T4837
|
|
274
|
-
*/
|
|
275
|
-
function generateAuditLogId() {
|
|
276
|
-
return `log-${Math.floor(Date.now() / 1e3)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Run `fn` inside an outermost `BEGIN IMMEDIATE` transaction, wrapped
|
|
280
|
-
* in {@link withWriteRetry} so SQLITE_BUSY contention is absorbed at the
|
|
281
|
-
* transaction boundary rather than mid-statement.
|
|
282
|
-
*
|
|
283
|
-
* - Acquires a RESERVED lock immediately so concurrent writers queue
|
|
284
|
-
* politely (or fall through to retry after `busy_timeout` expires).
|
|
285
|
-
* - Commits on success; rolls back on any thrown error before
|
|
286
|
-
* propagating it. If the thrown error is SQLITE_BUSY,
|
|
287
|
-
* {@link withWriteRetry} re-runs the WHOLE function (BEGIN included)
|
|
288
|
-
* after backoff — better-sqlite3 / node:sqlite forbids nesting
|
|
289
|
-
* `BEGIN IMMEDIATE` inside an open transaction, so retry MUST start
|
|
290
|
-
* from this outer boundary.
|
|
291
|
-
*
|
|
292
|
-
* DO NOT call this from inside an already-open transaction. For nested
|
|
293
|
-
* writes use `accessor.transaction()` which uses SAVEPOINTs (T9814).
|
|
294
|
-
*
|
|
295
|
-
* @bug gh-391 — SQLITE_BUSY contention on parallel writes.
|
|
296
|
-
* @task T9839
|
|
297
|
-
*/
|
|
298
|
-
async function runInImmediateTx(nativeDb, fn) {
|
|
299
|
-
return withWriteRetry(async () => {
|
|
300
|
-
nativeDb.prepare("BEGIN IMMEDIATE").run();
|
|
301
|
-
try {
|
|
302
|
-
const result = await fn();
|
|
303
|
-
nativeDb.prepare("COMMIT").run();
|
|
304
|
-
return result;
|
|
305
|
-
} catch (err) {
|
|
306
|
-
try {
|
|
307
|
-
nativeDb.prepare("ROLLBACK").run();
|
|
308
|
-
} catch {}
|
|
309
|
-
throw err;
|
|
310
|
-
}
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
/** Read a JSON blob from the schema_meta table by key. */
|
|
314
|
-
async function getMetaValue(cwd, key) {
|
|
315
|
-
const rows = await (await getDb(cwd)).select().from(schemaMeta).where(eq(schemaMeta.key, key)).all();
|
|
316
|
-
if (rows.length === 0 || !rows[0]) return null;
|
|
317
|
-
try {
|
|
318
|
-
return JSON.parse(rows[0].value);
|
|
319
|
-
} catch {
|
|
320
|
-
return null;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
/** Write a JSON blob to the schema_meta table by key. */
|
|
324
|
-
async function setMetaValue(cwd, key, value) {
|
|
325
|
-
const db = await getDb(cwd);
|
|
326
|
-
const json = JSON.stringify(value);
|
|
327
|
-
await db.insert(schemaMeta).values({
|
|
328
|
-
key,
|
|
329
|
-
value: json
|
|
330
|
-
}).onConflictDoUpdate({
|
|
331
|
-
target: schemaMeta.key,
|
|
332
|
-
set: { value: json }
|
|
333
|
-
}).run();
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Create a SQLite-backed DataAccessor.
|
|
337
|
-
*
|
|
338
|
-
* Opens (or creates) the SQLite database at `.cleo/tasks.db` and returns
|
|
339
|
-
* a DataAccessor that materializes/dematerializes whole-file structures
|
|
340
|
-
* from the relational tables.
|
|
341
|
-
*
|
|
342
|
-
* @param cwd - Working directory for path resolution (defaults to process.cwd())
|
|
343
|
-
*/
|
|
344
|
-
async function createSqliteDataAccessor(cwd) {
|
|
345
|
-
await getDb(cwd);
|
|
346
|
-
/** Load all task IDs for cross-task dependency validation. */
|
|
347
|
-
async function getAllTaskIds() {
|
|
348
|
-
const rows = await (await getDb(cwd)).select({ id: tasksTasks.id }).from(tasksTasks).all();
|
|
349
|
-
return new Set(rows.map((r) => r.id));
|
|
350
|
-
}
|
|
351
|
-
let _txDepth = 0;
|
|
352
|
-
const accessor = {
|
|
353
|
-
engine: "sqlite",
|
|
354
|
-
async loadArchive() {
|
|
355
|
-
const db = await getDb(cwd);
|
|
356
|
-
const archivedRows = await db.select().from(tasksTasks).where(eq(tasksTasks.status, "archived")).all();
|
|
357
|
-
if (archivedRows.length === 0) return null;
|
|
358
|
-
const archivedTasks = archivedRows.map((row) => {
|
|
359
|
-
return {
|
|
360
|
-
...rowToTask(row),
|
|
361
|
-
archivedAt: row.archivedAt ?? void 0,
|
|
362
|
-
archiveReason: row.archiveReason ?? void 0,
|
|
363
|
-
cycleTimeDays: row.cycleTimeDays ?? void 0
|
|
364
|
-
};
|
|
365
|
-
});
|
|
366
|
-
if (archivedTasks.length > 0) {
|
|
367
|
-
const activeRows = await db.select({ id: tasksTasks.id }).from(tasksTasks).where(ne(tasksTasks.status, "archived")).all();
|
|
368
|
-
await loadDependenciesForTasks(db, archivedTasks, new Set([...archivedTasks.map((t) => t.id), ...activeRows.map((r) => r.id)]));
|
|
369
|
-
await loadRelationsForTasks(db, archivedTasks);
|
|
370
|
-
}
|
|
371
|
-
return {
|
|
372
|
-
archivedTasks,
|
|
373
|
-
version: "1.0.0"
|
|
374
|
-
};
|
|
375
|
-
},
|
|
376
|
-
async saveArchive(data) {
|
|
377
|
-
const db = await getDb(cwd);
|
|
378
|
-
const archiveIds = new Set(data.archivedTasks.map((t) => t.id));
|
|
379
|
-
const activeRows = await db.select({ id: tasksTasks.id }).from(tasksTasks).where(ne(tasksTasks.status, "archived")).all();
|
|
380
|
-
const validDepIds = new Set([...archiveIds, ...activeRows.map((r) => r.id)]);
|
|
381
|
-
const nativeDb = getNativeTasksDb();
|
|
382
|
-
if (!nativeDb) throw new Error("Native database not initialized");
|
|
383
|
-
await runInImmediateTx(nativeDb, async () => {
|
|
384
|
-
const depBatch = [];
|
|
385
|
-
for (const task of data.archivedTasks) {
|
|
386
|
-
const row = archivedTaskToRow(task);
|
|
387
|
-
const taskAny = task;
|
|
388
|
-
await upsertTask(db, row, {
|
|
389
|
-
archivedAt: taskAny.archivedAt ?? row.completedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
390
|
-
archiveReason: taskAny.archiveReason ?? "completed-unverified",
|
|
391
|
-
cycleTimeDays: taskAny.cycleTimeDays ?? null
|
|
392
|
-
}, true);
|
|
393
|
-
depBatch.push({
|
|
394
|
-
taskId: task.id,
|
|
395
|
-
deps: task.depends ?? []
|
|
396
|
-
});
|
|
397
|
-
}
|
|
398
|
-
await batchUpdateDependencies(db, depBatch, validDepIds);
|
|
399
|
-
});
|
|
400
|
-
},
|
|
401
|
-
async loadSessions() {
|
|
402
|
-
return (await (await getDb(cwd)).select().from(tasksSessions).all()).map(rowToSession);
|
|
403
|
-
},
|
|
404
|
-
async saveSessions(sessions) {
|
|
405
|
-
const db = await getDb(cwd);
|
|
406
|
-
const existingRows = await db.select({ id: tasksSessions.id }).from(tasksSessions).all();
|
|
407
|
-
const existingIds = new Set(existingRows.map((r) => r.id));
|
|
408
|
-
const incomingIds = new Set(sessions.map((s) => s.id));
|
|
409
|
-
for (const eid of existingIds) if (!incomingIds.has(eid)) await db.delete(tasksSessions).where(eq(tasksSessions.id, eid)).run();
|
|
410
|
-
for (const session of sessions) await upsertSession(db, session);
|
|
411
|
-
},
|
|
412
|
-
async appendLog(entry) {
|
|
413
|
-
const db = await getDb(cwd);
|
|
414
|
-
await withWriteRetry(() => db.insert(auditLog).values({
|
|
415
|
-
id: entry.id ?? generateAuditLogId(),
|
|
416
|
-
timestamp: entry.timestamp ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
417
|
-
action: entry.action ?? entry.operation ?? "unknown",
|
|
418
|
-
taskId: entry.taskId ?? "unknown",
|
|
419
|
-
actor: entry.actor ?? "system",
|
|
420
|
-
detailsJson: entry.details ? JSON.stringify(entry.details) : "{}",
|
|
421
|
-
beforeJson: entry.before ? JSON.stringify(entry.before) : null,
|
|
422
|
-
afterJson: entry.after ? JSON.stringify(entry.after) : null
|
|
423
|
-
}).run());
|
|
424
|
-
},
|
|
425
|
-
async queryAuditLog(query) {
|
|
426
|
-
const db = await getDb(cwd);
|
|
427
|
-
const conditions = [];
|
|
428
|
-
if (query.taskIds && query.taskIds.length > 0) conditions.push(inArray(auditLog.taskId, [...query.taskIds]));
|
|
429
|
-
if (query.actions && query.actions.length > 0) conditions.push(inArray(auditLog.action, [...query.actions]));
|
|
430
|
-
if (query.since) conditions.push(sql`${auditLog.timestamp} >= ${query.since}`);
|
|
431
|
-
const limit = Math.max(1, Math.floor(query.limit ?? 100));
|
|
432
|
-
return (await db.select({
|
|
433
|
-
id: auditLog.id,
|
|
434
|
-
timestamp: auditLog.timestamp,
|
|
435
|
-
action: auditLog.action,
|
|
436
|
-
taskId: auditLog.taskId,
|
|
437
|
-
actor: auditLog.actor,
|
|
438
|
-
detailsJson: auditLog.detailsJson,
|
|
439
|
-
beforeJson: auditLog.beforeJson,
|
|
440
|
-
afterJson: auditLog.afterJson
|
|
441
|
-
}).from(auditLog).where(conditions.length > 0 ? and(...conditions) : void 0).orderBy(sql`${auditLog.timestamp} DESC`).limit(limit).all()).map((row) => ({
|
|
442
|
-
id: row.id,
|
|
443
|
-
timestamp: row.timestamp,
|
|
444
|
-
action: row.action,
|
|
445
|
-
taskId: row.taskId,
|
|
446
|
-
actor: row.actor,
|
|
447
|
-
detailsJson: row.detailsJson ?? null,
|
|
448
|
-
beforeJson: row.beforeJson ?? null,
|
|
449
|
-
afterJson: row.afterJson ?? null
|
|
450
|
-
}));
|
|
451
|
-
},
|
|
452
|
-
async upsertSingleTask(task) {
|
|
453
|
-
const db = await getDb(cwd);
|
|
454
|
-
const row = taskToRow(task);
|
|
455
|
-
await withWriteRetry(async () => {
|
|
456
|
-
await upsertTask(db, row);
|
|
457
|
-
await updateDependencies(db, task.id, task.depends ?? []);
|
|
458
|
-
});
|
|
459
|
-
},
|
|
460
|
-
async addRelation(taskId, relatedTo, relationType, reason) {
|
|
461
|
-
const db = await getDb(cwd);
|
|
462
|
-
const validTypes = [
|
|
463
|
-
"related",
|
|
464
|
-
"blocks",
|
|
465
|
-
"duplicates",
|
|
466
|
-
"absorbs",
|
|
467
|
-
"fixes",
|
|
468
|
-
"extends",
|
|
469
|
-
"supersedes",
|
|
470
|
-
"groups"
|
|
471
|
-
];
|
|
472
|
-
if (!validTypes.includes(relationType)) throw new Error(`Invalid relation type: ${relationType}. Valid types: ${validTypes.join(", ")}`);
|
|
473
|
-
await withWriteRetry(() => db.insert(tasksTaskRelations).values({
|
|
474
|
-
taskId,
|
|
475
|
-
relatedTo,
|
|
476
|
-
relationType,
|
|
477
|
-
reason: reason ?? null
|
|
478
|
-
}).onConflictDoNothing().run());
|
|
479
|
-
},
|
|
480
|
-
async removeRelation(taskId, relatedTo, relationType) {
|
|
481
|
-
const db = await getDb(cwd);
|
|
482
|
-
const conditions = [eq(tasksTaskRelations.taskId, taskId), eq(tasksTaskRelations.relatedTo, relatedTo)];
|
|
483
|
-
if (relationType !== void 0) {
|
|
484
|
-
const validTypes = [
|
|
485
|
-
"related",
|
|
486
|
-
"blocks",
|
|
487
|
-
"duplicates",
|
|
488
|
-
"absorbs",
|
|
489
|
-
"fixes",
|
|
490
|
-
"extends",
|
|
491
|
-
"supersedes",
|
|
492
|
-
"groups"
|
|
493
|
-
];
|
|
494
|
-
if (!validTypes.includes(relationType)) throw new Error(`Invalid relation type: ${relationType}. Valid types: ${validTypes.join(", ")}`);
|
|
495
|
-
conditions.push(eq(tasksTaskRelations.relationType, relationType));
|
|
496
|
-
}
|
|
497
|
-
await withWriteRetry(() => db.delete(tasksTaskRelations).where(and(...conditions)).run());
|
|
498
|
-
},
|
|
499
|
-
async getAcRows(taskId) {
|
|
500
|
-
return (await (await getDb(cwd)).select({
|
|
501
|
-
id: tasksTaskAcceptanceCriteria.id,
|
|
502
|
-
taskId: tasksTaskAcceptanceCriteria.taskId,
|
|
503
|
-
ordinal: tasksTaskAcceptanceCriteria.ordinal,
|
|
504
|
-
kind: tasksTaskAcceptanceCriteria.kind,
|
|
505
|
-
sourceKey: tasksTaskAcceptanceCriteria.sourceKey,
|
|
506
|
-
targetTaskId: tasksTaskAcceptanceCriteria.targetTaskId,
|
|
507
|
-
projection: tasksTaskAcceptanceCriteria.projection,
|
|
508
|
-
text: tasksTaskAcceptanceCriteria.text,
|
|
509
|
-
createdAt: tasksTaskAcceptanceCriteria.createdAt,
|
|
510
|
-
updatedAt: tasksTaskAcceptanceCriteria.updatedAt,
|
|
511
|
-
contentHash: tasksTaskAcceptanceCriteria.contentHash
|
|
512
|
-
}).from(tasksTaskAcceptanceCriteria).where(eq(tasksTaskAcceptanceCriteria.taskId, taskId)).orderBy(tasksTaskAcceptanceCriteria.ordinal).all()).map((r) => ({
|
|
513
|
-
id: r.id,
|
|
514
|
-
taskId: r.taskId,
|
|
515
|
-
ordinal: r.ordinal,
|
|
516
|
-
kind: r.kind,
|
|
517
|
-
sourceKey: r.sourceKey ?? `text:${r.ordinal}`,
|
|
518
|
-
targetTaskId: r.targetTaskId ?? null,
|
|
519
|
-
projection: r.projection,
|
|
520
|
-
text: r.text,
|
|
521
|
-
createdAt: r.createdAt,
|
|
522
|
-
updatedAt: r.updatedAt ?? null,
|
|
523
|
-
contentHash: r.contentHash ?? null
|
|
524
|
-
}));
|
|
525
|
-
},
|
|
526
|
-
async getAcBindings(acIds) {
|
|
527
|
-
if (acIds.length === 0) return [];
|
|
528
|
-
return (await (await getDb(cwd)).select({
|
|
529
|
-
id: tasksEvidenceAcBindings.id,
|
|
530
|
-
evidenceAtomId: tasksEvidenceAcBindings.evidenceAtomId,
|
|
531
|
-
acId: tasksEvidenceAcBindings.acId,
|
|
532
|
-
bindingType: tasksEvidenceAcBindings.bindingType,
|
|
533
|
-
createdAt: tasksEvidenceAcBindings.createdAt
|
|
534
|
-
}).from(tasksEvidenceAcBindings).where(inArray(tasksEvidenceAcBindings.acId, acIds)).all()).map((r) => ({
|
|
535
|
-
id: r.id,
|
|
536
|
-
evidenceAtomId: r.evidenceAtomId,
|
|
537
|
-
acId: r.acId,
|
|
538
|
-
bindingType: r.bindingType,
|
|
539
|
-
createdAt: r.createdAt
|
|
540
|
-
}));
|
|
541
|
-
},
|
|
542
|
-
async archiveSingleTask(taskId, fields) {
|
|
543
|
-
const db = await getDb(cwd);
|
|
544
|
-
if ((await db.select({ id: tasksTasks.id }).from(tasksTasks).where(eq(tasksTasks.id, taskId)).all()).length === 0) return;
|
|
545
|
-
await withWriteRetry(() => db.update(tasksTasks).set({
|
|
546
|
-
status: "archived",
|
|
547
|
-
archivedAt: fields.archivedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
548
|
-
archiveReason: fields.archiveReason ?? "completed-unverified",
|
|
549
|
-
cycleTimeDays: fields.cycleTimeDays ?? null,
|
|
550
|
-
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
551
|
-
}).where(eq(tasksTasks.id, taskId)).run());
|
|
552
|
-
},
|
|
553
|
-
async removeSingleTask(taskId) {
|
|
554
|
-
const db = await getDb(cwd);
|
|
555
|
-
await withWriteRetry(async () => {
|
|
556
|
-
await db.delete(tasksTaskDependencies).where(eq(tasksTaskDependencies.taskId, taskId)).run();
|
|
557
|
-
await db.delete(tasksTaskDependencies).where(eq(tasksTaskDependencies.dependsOn, taskId)).run();
|
|
558
|
-
await db.delete(tasksTasks).where(eq(tasksTasks.id, taskId)).run();
|
|
559
|
-
});
|
|
560
|
-
},
|
|
561
|
-
async loadSingleTask(taskId) {
|
|
562
|
-
const db = await getDb(cwd);
|
|
563
|
-
const rows = await db.select().from(tasksTasks).where(eq(tasksTasks.id, taskId)).limit(1).all();
|
|
564
|
-
if (rows.length === 0 || !rows[0]) return null;
|
|
565
|
-
const task = rowToTask(rows[0]);
|
|
566
|
-
const allIdRows = await db.select({ id: tasksTasks.id }).from(tasksTasks).all();
|
|
567
|
-
const allIds = new Set(allIdRows.map((r) => r.id));
|
|
568
|
-
await loadDependenciesForTasks(db, [task], allIds);
|
|
569
|
-
await loadRelationsForTasks(db, [task]);
|
|
570
|
-
return task;
|
|
571
|
-
},
|
|
572
|
-
async getActiveSession() {
|
|
573
|
-
const rows = await (await getDb(cwd)).select().from(tasksSessions).where(eq(tasksSessions.status, "active")).orderBy(sql`${tasksSessions.startedAt} DESC`).limit(1).all();
|
|
574
|
-
if (rows.length === 0 || !rows[0]) return null;
|
|
575
|
-
return rowToSession(rows[0]);
|
|
576
|
-
},
|
|
577
|
-
async resolveCurrentSession() {
|
|
578
|
-
return resolveCurrentSession(cwd);
|
|
579
|
-
},
|
|
580
|
-
async upsertSingleSession(session) {
|
|
581
|
-
await upsertSession(await getDb(cwd), session);
|
|
582
|
-
},
|
|
583
|
-
async removeSingleSession(sessionId) {
|
|
584
|
-
await (await getDb(cwd)).delete(tasksSessions).where(eq(tasksSessions.id, sessionId)).run();
|
|
585
|
-
cleanupBrainRefsOnSessionDelete(sessionId, cwd);
|
|
586
|
-
},
|
|
587
|
-
async queryTasks(filters) {
|
|
588
|
-
const db = await getDb(cwd);
|
|
589
|
-
const conditions = [];
|
|
590
|
-
if (filters.status) {
|
|
591
|
-
const statuses = Array.isArray(filters.status) ? filters.status : [filters.status];
|
|
592
|
-
if (!statuses.includes("archived")) conditions.push(ne(tasksTasks.status, "archived"));
|
|
593
|
-
conditions.push(inArray(tasksTasks.status, statuses));
|
|
594
|
-
} else if (filters.excludeStatus) {
|
|
595
|
-
const excluded = Array.isArray(filters.excludeStatus) ? filters.excludeStatus : [filters.excludeStatus];
|
|
596
|
-
for (const s of excluded) conditions.push(ne(tasksTasks.status, s));
|
|
597
|
-
} else conditions.push(ne(tasksTasks.status, "archived"));
|
|
598
|
-
if (filters.priority) conditions.push(eq(tasksTasks.priority, filters.priority));
|
|
599
|
-
if (filters.type) conditions.push(eq(tasksTasks.type, filters.type));
|
|
600
|
-
if (filters.phase) conditions.push(eq(tasksTasks.phase, filters.phase));
|
|
601
|
-
if (filters.severity) {
|
|
602
|
-
const severities = Array.isArray(filters.severity) ? filters.severity : [filters.severity];
|
|
603
|
-
conditions.push(inArray(tasksTasks.severity, severities));
|
|
604
|
-
}
|
|
605
|
-
if (filters.kind) {
|
|
606
|
-
const kinds = Array.isArray(filters.kind) ? filters.kind : [filters.kind];
|
|
607
|
-
conditions.push(inArray(tasksTasks.kind, kinds));
|
|
608
|
-
}
|
|
609
|
-
if (filters.parentId !== void 0) if (filters.parentId === null) conditions.push(isNull(tasksTasks.parentId));
|
|
610
|
-
else conditions.push(eq(tasksTasks.parentId, filters.parentId));
|
|
611
|
-
if (filters.search) {
|
|
612
|
-
const pattern = `%${filters.search}%`;
|
|
613
|
-
conditions.push(or(like(tasksTasks.title, pattern), like(tasksTasks.description, pattern), like(tasksTasks.id, pattern)));
|
|
614
|
-
}
|
|
615
|
-
if (filters.label) {
|
|
616
|
-
const labelMatchIds = db.select({ taskId: tasksTaskLabels.taskId }).from(tasksTaskLabels).where(eq(tasksTaskLabels.label, filters.label));
|
|
617
|
-
conditions.push(inArray(tasksTasks.id, labelMatchIds));
|
|
618
|
-
}
|
|
619
|
-
const where = conditions.length > 0 ? and(...conditions) : void 0;
|
|
620
|
-
const total = (await db.select({ count: sql`count(*)` }).from(tasksTasks).where(where).get())?.count ?? 0;
|
|
621
|
-
let orderClause;
|
|
622
|
-
switch (filters.orderBy) {
|
|
623
|
-
case "createdAt":
|
|
624
|
-
orderClause = sql`${tasksTasks.createdAt} ASC`;
|
|
625
|
-
break;
|
|
626
|
-
case "updatedAt":
|
|
627
|
-
orderClause = sql`${tasksTasks.updatedAt} DESC NULLS LAST`;
|
|
628
|
-
break;
|
|
629
|
-
case "priority":
|
|
630
|
-
orderClause = sql`CASE ${tasksTasks.priority}
|
|
631
|
-
WHEN 'critical' THEN 0 WHEN 'high' THEN 1
|
|
632
|
-
WHEN 'medium' THEN 2 WHEN 'low' THEN 3 ELSE 4 END ASC`;
|
|
633
|
-
break;
|
|
634
|
-
default: orderClause = sql`${tasksTasks.position} ASC, ${tasksTasks.createdAt} ASC`;
|
|
635
|
-
}
|
|
636
|
-
let query = db.select().from(tasksTasks).where(where).orderBy(orderClause);
|
|
637
|
-
if (filters.limit !== void 0) query = query.limit(filters.limit);
|
|
638
|
-
if (filters.offset !== void 0) query = query.offset(filters.offset);
|
|
639
|
-
const tasks = (await query.all()).map(rowToTask);
|
|
640
|
-
if (tasks.length > 0) {
|
|
641
|
-
await loadDependenciesForTasks(db, tasks, await getAllTaskIds());
|
|
642
|
-
await loadRelationsForTasks(db, tasks);
|
|
643
|
-
}
|
|
644
|
-
return {
|
|
645
|
-
tasks,
|
|
646
|
-
total
|
|
647
|
-
};
|
|
648
|
-
},
|
|
649
|
-
async countTasks(filters) {
|
|
650
|
-
const db = await getDb(cwd);
|
|
651
|
-
const conditions = [];
|
|
652
|
-
if (filters?.status) {
|
|
653
|
-
const statuses = Array.isArray(filters.status) ? filters.status : [filters.status];
|
|
654
|
-
conditions.push(inArray(tasksTasks.status, statuses));
|
|
655
|
-
} else conditions.push(ne(tasksTasks.status, "archived"));
|
|
656
|
-
if (filters?.parentId) conditions.push(eq(tasksTasks.parentId, filters.parentId));
|
|
657
|
-
const where = conditions.length > 0 ? and(...conditions) : void 0;
|
|
658
|
-
return (await db.select({ count: sql`count(*)` }).from(tasksTasks).where(where).get())?.count ?? 0;
|
|
659
|
-
},
|
|
660
|
-
async getChildren(parentId) {
|
|
661
|
-
const db = await getDb(cwd);
|
|
662
|
-
const tasks = (await db.select().from(tasksTasks).where(and(eq(tasksTasks.parentId, parentId), ne(tasksTasks.status, "archived"))).orderBy(sql`${tasksTasks.position} ASC, ${tasksTasks.createdAt} ASC`).all()).map(rowToTask);
|
|
663
|
-
if (tasks.length > 0) {
|
|
664
|
-
await loadDependenciesForTasks(db, tasks, await getAllTaskIds());
|
|
665
|
-
await loadRelationsForTasks(db, tasks);
|
|
666
|
-
}
|
|
667
|
-
return tasks;
|
|
668
|
-
},
|
|
669
|
-
async countChildren(parentId) {
|
|
670
|
-
return (await (await getDb(cwd)).select({ count: sql`count(*)` }).from(tasksTasks).where(and(eq(tasksTasks.parentId, parentId), ne(tasksTasks.status, "archived"))).get())?.count ?? 0;
|
|
671
|
-
},
|
|
672
|
-
async countActiveChildren(parentId) {
|
|
673
|
-
return (await (await getDb(cwd)).select({ count: sql`count(*)` }).from(tasksTasks).where(and(eq(tasksTasks.parentId, parentId), notInArray(tasksTasks.status, [...TERMINAL_TASK_STATUSES]))).get())?.count ?? 0;
|
|
674
|
-
},
|
|
675
|
-
async getAncestorChain(taskId) {
|
|
676
|
-
const nativeDb = getNativeTasksDb();
|
|
677
|
-
if (!nativeDb) return [];
|
|
678
|
-
const idRows = nativeDb.prepare(`WITH RECURSIVE ancestor_ids(id, depth) AS (
|
|
679
|
-
SELECT parent_id, 0 FROM tasks_tasks WHERE id = ? AND parent_id IS NOT NULL
|
|
680
|
-
UNION ALL
|
|
681
|
-
SELECT t.parent_id, a.depth + 1 FROM tasks_tasks t
|
|
682
|
-
JOIN ancestor_ids a ON t.id = a.id
|
|
683
|
-
WHERE t.parent_id IS NOT NULL
|
|
684
|
-
)
|
|
685
|
-
SELECT id FROM ancestor_ids ORDER BY depth DESC`).all(taskId);
|
|
686
|
-
if (idRows.length === 0) return [];
|
|
687
|
-
const db = await getDb(cwd);
|
|
688
|
-
const ids = idRows.map((r) => r.id);
|
|
689
|
-
const tasks = (await db.select().from(tasksTasks).where(inArray(tasksTasks.id, ids)).all()).map(rowToTask);
|
|
690
|
-
if (tasks.length > 0) {
|
|
691
|
-
await loadDependenciesForTasks(db, tasks, await getAllTaskIds());
|
|
692
|
-
await loadRelationsForTasks(db, tasks);
|
|
693
|
-
}
|
|
694
|
-
const orderMap = new Map(ids.map((id, i) => [id, i]));
|
|
695
|
-
tasks.sort((a, b) => (orderMap.get(a.id) ?? 0) - (orderMap.get(b.id) ?? 0));
|
|
696
|
-
return tasks;
|
|
697
|
-
},
|
|
698
|
-
async getSubtree(rootId) {
|
|
699
|
-
const nativeDb = getNativeTasksDb();
|
|
700
|
-
if (!nativeDb) return [];
|
|
701
|
-
const idRows = nativeDb.prepare(`WITH RECURSIVE subtree AS (
|
|
702
|
-
SELECT id FROM tasks_tasks WHERE id = ?
|
|
703
|
-
UNION ALL
|
|
704
|
-
SELECT t.id FROM tasks_tasks t
|
|
705
|
-
JOIN subtree s ON t.parent_id = s.id
|
|
706
|
-
)
|
|
707
|
-
SELECT id FROM subtree`).all(rootId);
|
|
708
|
-
if (idRows.length === 0) return [];
|
|
709
|
-
const db = await getDb(cwd);
|
|
710
|
-
const ids = idRows.map((r) => r.id);
|
|
711
|
-
const tasks = (await db.select().from(tasksTasks).where(inArray(tasksTasks.id, ids)).all()).map(rowToTask);
|
|
712
|
-
if (tasks.length > 0) {
|
|
713
|
-
await loadDependenciesForTasks(db, tasks, await getAllTaskIds());
|
|
714
|
-
await loadRelationsForTasks(db, tasks);
|
|
715
|
-
}
|
|
716
|
-
return tasks;
|
|
717
|
-
},
|
|
718
|
-
async getDependents(taskId) {
|
|
719
|
-
const db = await getDb(cwd);
|
|
720
|
-
const depRows = await db.select().from(tasksTaskDependencies).where(eq(tasksTaskDependencies.dependsOn, taskId)).all();
|
|
721
|
-
if (depRows.length === 0) return [];
|
|
722
|
-
const dependentIds = depRows.map((r) => r.taskId);
|
|
723
|
-
const tasks = (await db.select().from(tasksTasks).where(inArray(tasksTasks.id, dependentIds)).all()).map(rowToTask);
|
|
724
|
-
if (tasks.length > 0) {
|
|
725
|
-
await loadDependenciesForTasks(db, tasks, await getAllTaskIds());
|
|
726
|
-
await loadRelationsForTasks(db, tasks);
|
|
727
|
-
}
|
|
728
|
-
return tasks;
|
|
729
|
-
},
|
|
730
|
-
async getDependencyChain(taskId) {
|
|
731
|
-
const nativeDb = getNativeTasksDb();
|
|
732
|
-
if (!nativeDb) return [];
|
|
733
|
-
return nativeDb.prepare(`WITH RECURSIVE dep_chain(id) AS (
|
|
734
|
-
SELECT depends_on FROM tasks_task_dependencies WHERE task_id = ?
|
|
735
|
-
UNION
|
|
736
|
-
SELECT td.depends_on FROM tasks_task_dependencies td
|
|
737
|
-
JOIN dep_chain dc ON td.task_id = dc.id
|
|
738
|
-
)
|
|
739
|
-
SELECT id FROM dep_chain`).all(taskId).map((r) => r.id);
|
|
740
|
-
},
|
|
741
|
-
async taskExists(taskId) {
|
|
742
|
-
return !!await (await getDb(cwd)).select({ id: tasksTasks.id }).from(tasksTasks).where(eq(tasksTasks.id, taskId)).limit(1).get();
|
|
743
|
-
},
|
|
744
|
-
async loadTasks(taskIds) {
|
|
745
|
-
if (taskIds.length === 0) return [];
|
|
746
|
-
const db = await getDb(cwd);
|
|
747
|
-
const tasks = (await db.select().from(tasksTasks).where(inArray(tasksTasks.id, taskIds)).all()).map(rowToTask);
|
|
748
|
-
if (tasks.length > 0) {
|
|
749
|
-
await loadDependenciesForTasks(db, tasks, await getAllTaskIds());
|
|
750
|
-
await loadRelationsForTasks(db, tasks);
|
|
751
|
-
}
|
|
752
|
-
return tasks;
|
|
753
|
-
},
|
|
754
|
-
async getNextPosition(parentId) {
|
|
755
|
-
const nativeDb = getNativeTasksDb();
|
|
756
|
-
if (!nativeDb) throw new Error("Native database not initialized");
|
|
757
|
-
return (parentId === null ? nativeDb.prepare(`SELECT COALESCE(MAX(position), 0) + 1 AS next_pos FROM tasks_tasks WHERE parent_id IS NULL AND status != 'archived'`).get() : nativeDb.prepare(`SELECT COALESCE(MAX(position), 0) + 1 AS next_pos FROM tasks_tasks WHERE parent_id = ? AND status != 'archived'`).get(parentId))?.next_pos ?? 1;
|
|
758
|
-
},
|
|
759
|
-
async shiftPositions(parentId, fromPosition, delta) {
|
|
760
|
-
const nativeDb = getNativeTasksDb();
|
|
761
|
-
if (!nativeDb) throw new Error("Native database not initialized");
|
|
762
|
-
if (parentId === null) nativeDb.prepare(`UPDATE tasks_tasks SET position = position + ?, position_version = position_version + 1, updated_at = ? WHERE parent_id IS NULL AND position >= ? AND status != 'archived'`).run(delta, (/* @__PURE__ */ new Date()).toISOString(), fromPosition);
|
|
763
|
-
else nativeDb.prepare(`UPDATE tasks_tasks SET position = position + ?, position_version = position_version + 1, updated_at = ? WHERE parent_id = ? AND position >= ? AND status != 'archived'`).run(delta, (/* @__PURE__ */ new Date()).toISOString(), parentId, fromPosition);
|
|
764
|
-
},
|
|
765
|
-
async updateTaskFields(taskId, fields) {
|
|
766
|
-
const db = await getDb(cwd);
|
|
767
|
-
const updateRow = { updatedAt: fields.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString() };
|
|
768
|
-
for (const [key, col] of [
|
|
769
|
-
["title", "title"],
|
|
770
|
-
["description", "description"],
|
|
771
|
-
["status", "status"],
|
|
772
|
-
["priority", "priority"],
|
|
773
|
-
["type", "type"],
|
|
774
|
-
["parentId", "parentId"],
|
|
775
|
-
["phase", "phase"],
|
|
776
|
-
["size", "size"],
|
|
777
|
-
["position", "position"],
|
|
778
|
-
["positionVersion", "positionVersion"],
|
|
779
|
-
["labelsJson", "labelsJson"],
|
|
780
|
-
["notesJson", "notesJson"],
|
|
781
|
-
["acceptanceJson", "acceptanceJson"],
|
|
782
|
-
["filesJson", "filesJson"],
|
|
783
|
-
["origin", "origin"],
|
|
784
|
-
["blockedBy", "blockedBy"],
|
|
785
|
-
["epicLifecycle", "epicLifecycle"],
|
|
786
|
-
["noAutoComplete", "noAutoComplete"],
|
|
787
|
-
["completedAt", "completedAt"],
|
|
788
|
-
["cancelledAt", "cancelledAt"],
|
|
789
|
-
["cancellationReason", "cancellationReason"],
|
|
790
|
-
["verificationJson", "verificationJson"],
|
|
791
|
-
["createdBy", "createdBy"],
|
|
792
|
-
["modifiedBy", "modifiedBy"],
|
|
793
|
-
["sessionId", "sessionId"],
|
|
794
|
-
["assignee", "assignee"],
|
|
795
|
-
["pipelineStage", "pipelineStage"]
|
|
796
|
-
]) if (fields[key] !== void 0) updateRow[col] = fields[key];
|
|
797
|
-
await withWriteRetry(() => db.update(tasksTasks).set(updateRow).where(eq(tasksTasks.id, taskId)).run());
|
|
798
|
-
},
|
|
799
|
-
async transaction(fn) {
|
|
800
|
-
const db = await getDb(cwd);
|
|
801
|
-
const nativeDb = getNativeTasksDb(cwd);
|
|
802
|
-
if (!nativeDb) throw new Error("Native database not initialized");
|
|
803
|
-
const isOuter = _txDepth === 0;
|
|
804
|
-
const spName = isOuter ? null : `_cleo_tx_${(_txSavepointCounter++).toString(36)}`;
|
|
805
|
-
if (isOuter) nativeDb.prepare("BEGIN IMMEDIATE").run();
|
|
806
|
-
else nativeDb.prepare(`SAVEPOINT ${spName}`).run();
|
|
807
|
-
_txDepth++;
|
|
808
|
-
try {
|
|
809
|
-
const result = await fn({
|
|
810
|
-
async upsertSingleTask(task) {
|
|
811
|
-
await upsertTask(db, taskToRow(task));
|
|
812
|
-
await updateDependencies(db, task.id, task.depends ?? []);
|
|
813
|
-
},
|
|
814
|
-
async archiveSingleTask(taskId, fields) {
|
|
815
|
-
await db.update(tasksTasks).set({
|
|
816
|
-
status: "archived",
|
|
817
|
-
archivedAt: fields.archivedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
818
|
-
archiveReason: fields.archiveReason ?? "completed-unverified",
|
|
819
|
-
cycleTimeDays: fields.cycleTimeDays ?? null,
|
|
820
|
-
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
821
|
-
}).where(eq(tasksTasks.id, taskId)).run();
|
|
822
|
-
},
|
|
823
|
-
async removeSingleTask(taskId) {
|
|
824
|
-
await db.delete(tasksTaskDependencies).where(eq(tasksTaskDependencies.taskId, taskId)).run();
|
|
825
|
-
await db.delete(tasksTaskDependencies).where(eq(tasksTaskDependencies.dependsOn, taskId)).run();
|
|
826
|
-
await db.delete(tasksTasks).where(eq(tasksTasks.id, taskId)).run();
|
|
827
|
-
},
|
|
828
|
-
async setMetaValue(key, value) {
|
|
829
|
-
await setMetaValue(cwd, key, value);
|
|
830
|
-
},
|
|
831
|
-
async updateTaskFields(taskId, flds) {
|
|
832
|
-
await accessor.updateTaskFields(taskId, flds);
|
|
833
|
-
},
|
|
834
|
-
async getChildren(parentId) {
|
|
835
|
-
return (await db.select().from(tasksTasks).where(and(eq(tasksTasks.parentId, parentId), ne(tasksTasks.status, "archived"))).orderBy(sql`${tasksTasks.position} ASC, ${tasksTasks.createdAt} ASC`).all()).map(rowToTask);
|
|
836
|
-
},
|
|
837
|
-
async appendLog(entry) {
|
|
838
|
-
await accessor.appendLog(entry);
|
|
839
|
-
},
|
|
840
|
-
async addRelation(taskId, relatedTo, relationType, reason) {
|
|
841
|
-
await accessor.addRelation(taskId, relatedTo, relationType, reason);
|
|
842
|
-
},
|
|
843
|
-
async removeRelation(taskId, relatedTo, relationType) {
|
|
844
|
-
await accessor.removeRelation(taskId, relatedTo, relationType);
|
|
845
|
-
},
|
|
846
|
-
async clearRelations(taskId) {
|
|
847
|
-
await db.delete(tasksTaskRelations).where(eq(tasksTaskRelations.taskId, taskId)).run();
|
|
848
|
-
},
|
|
849
|
-
async insertAcRows(rows) {
|
|
850
|
-
if (rows.length === 0) return;
|
|
851
|
-
await db.insert(tasksTaskAcceptanceCriteria).values(rows.map((r) => ({
|
|
852
|
-
id: r.id,
|
|
853
|
-
taskId: r.taskId,
|
|
854
|
-
ordinal: r.ordinal,
|
|
855
|
-
kind: r.kind ?? "text",
|
|
856
|
-
sourceKey: r.sourceKey ?? `text:${r.ordinal}`,
|
|
857
|
-
targetTaskId: r.targetTaskId ?? null,
|
|
858
|
-
projection: r.projection ?? "legacy",
|
|
859
|
-
text: r.text,
|
|
860
|
-
contentHash: r.contentHash ?? null
|
|
861
|
-
}))).run();
|
|
862
|
-
},
|
|
863
|
-
async getAcRows(taskId) {
|
|
864
|
-
return (await db.select({
|
|
865
|
-
id: tasksTaskAcceptanceCriteria.id,
|
|
866
|
-
taskId: tasksTaskAcceptanceCriteria.taskId,
|
|
867
|
-
ordinal: tasksTaskAcceptanceCriteria.ordinal,
|
|
868
|
-
kind: tasksTaskAcceptanceCriteria.kind,
|
|
869
|
-
sourceKey: tasksTaskAcceptanceCriteria.sourceKey,
|
|
870
|
-
targetTaskId: tasksTaskAcceptanceCriteria.targetTaskId,
|
|
871
|
-
projection: tasksTaskAcceptanceCriteria.projection,
|
|
872
|
-
text: tasksTaskAcceptanceCriteria.text,
|
|
873
|
-
createdAt: tasksTaskAcceptanceCriteria.createdAt,
|
|
874
|
-
updatedAt: tasksTaskAcceptanceCriteria.updatedAt,
|
|
875
|
-
contentHash: tasksTaskAcceptanceCriteria.contentHash
|
|
876
|
-
}).from(tasksTaskAcceptanceCriteria).where(eq(tasksTaskAcceptanceCriteria.taskId, taskId)).orderBy(tasksTaskAcceptanceCriteria.ordinal).all()).map((r) => ({
|
|
877
|
-
id: r.id,
|
|
878
|
-
taskId: r.taskId,
|
|
879
|
-
ordinal: r.ordinal,
|
|
880
|
-
kind: r.kind,
|
|
881
|
-
sourceKey: r.sourceKey ?? `text:${r.ordinal}`,
|
|
882
|
-
targetTaskId: r.targetTaskId ?? null,
|
|
883
|
-
projection: r.projection,
|
|
884
|
-
text: r.text,
|
|
885
|
-
createdAt: r.createdAt,
|
|
886
|
-
updatedAt: r.updatedAt ?? null,
|
|
887
|
-
contentHash: r.contentHash ?? null
|
|
888
|
-
}));
|
|
889
|
-
},
|
|
890
|
-
async deleteAcRowsForTask(taskId) {
|
|
891
|
-
await db.delete(tasksTaskAcceptanceCriteria).where(eq(tasksTaskAcceptanceCriteria.taskId, taskId)).run();
|
|
892
|
-
},
|
|
893
|
-
async appendAcHistory(rows) {
|
|
894
|
-
if (rows.length === 0) return;
|
|
895
|
-
await db.insert(tasksTaskAcceptanceCriteriaHistory).values(rows.map((r) => ({
|
|
896
|
-
acId: r.acId,
|
|
897
|
-
previousText: r.previousText,
|
|
898
|
-
reason: r.reason
|
|
899
|
-
}))).run();
|
|
900
|
-
},
|
|
901
|
-
async getAcBindings(acIds) {
|
|
902
|
-
if (acIds.length === 0) return [];
|
|
903
|
-
return (await db.select({
|
|
904
|
-
id: tasksEvidenceAcBindings.id,
|
|
905
|
-
evidenceAtomId: tasksEvidenceAcBindings.evidenceAtomId,
|
|
906
|
-
acId: tasksEvidenceAcBindings.acId,
|
|
907
|
-
bindingType: tasksEvidenceAcBindings.bindingType,
|
|
908
|
-
createdAt: tasksEvidenceAcBindings.createdAt
|
|
909
|
-
}).from(tasksEvidenceAcBindings).where(inArray(tasksEvidenceAcBindings.acId, acIds)).all()).map((r) => ({
|
|
910
|
-
id: r.id,
|
|
911
|
-
evidenceAtomId: r.evidenceAtomId,
|
|
912
|
-
acId: r.acId,
|
|
913
|
-
bindingType: r.bindingType,
|
|
914
|
-
createdAt: r.createdAt
|
|
915
|
-
}));
|
|
916
|
-
},
|
|
917
|
-
async insertAcBindings(rows) {
|
|
918
|
-
if (rows.length === 0) return;
|
|
919
|
-
await db.insert(tasksEvidenceAcBindings).values(rows.map((r) => ({
|
|
920
|
-
id: r.id,
|
|
921
|
-
evidenceAtomId: r.evidenceAtomId,
|
|
922
|
-
acId: r.acId,
|
|
923
|
-
bindingType: r.bindingType
|
|
924
|
-
}))).onConflictDoNothing({ target: [
|
|
925
|
-
tasksEvidenceAcBindings.evidenceAtomId,
|
|
926
|
-
tasksEvidenceAcBindings.acId,
|
|
927
|
-
tasksEvidenceAcBindings.bindingType
|
|
928
|
-
] }).run();
|
|
929
|
-
}
|
|
930
|
-
});
|
|
931
|
-
_txDepth--;
|
|
932
|
-
if (isOuter) nativeDb.prepare("COMMIT").run();
|
|
933
|
-
else nativeDb.prepare(`RELEASE SAVEPOINT ${spName}`).run();
|
|
934
|
-
return result;
|
|
935
|
-
} catch (err) {
|
|
936
|
-
_txDepth--;
|
|
937
|
-
try {
|
|
938
|
-
if (isOuter) nativeDb.prepare("ROLLBACK").run();
|
|
939
|
-
else {
|
|
940
|
-
nativeDb.prepare(`ROLLBACK TO SAVEPOINT ${spName}`).run();
|
|
941
|
-
nativeDb.prepare(`RELEASE SAVEPOINT ${spName}`).run();
|
|
942
|
-
}
|
|
943
|
-
} catch {}
|
|
944
|
-
throw err;
|
|
945
|
-
}
|
|
946
|
-
},
|
|
947
|
-
async close() {
|
|
948
|
-
closeDb();
|
|
949
|
-
},
|
|
950
|
-
async getMetaValue(key) {
|
|
951
|
-
return getMetaValue(cwd, key);
|
|
952
|
-
},
|
|
953
|
-
async setMetaValue(key, value) {
|
|
954
|
-
return setMetaValue(cwd, key, value);
|
|
955
|
-
},
|
|
956
|
-
async getSchemaVersion() {
|
|
957
|
-
return (await getMetaValue(cwd, "file_meta"))?.schemaVersion ?? null;
|
|
958
|
-
},
|
|
959
|
-
async listAgentInstances(filters) {
|
|
960
|
-
const { listAgentInstances: listAgents } = await import('./registry3-BajEb-ll.js');
|
|
961
|
-
return listAgents(filters, cwd);
|
|
962
|
-
},
|
|
963
|
-
async getAgentInstance(agentId) {
|
|
964
|
-
const { getAgentInstance: getAgent } = await import('./registry3-BajEb-ll.js');
|
|
965
|
-
return getAgent(agentId, cwd);
|
|
966
|
-
},
|
|
967
|
-
async claimTask(taskId, agentId) {
|
|
968
|
-
const nativeDb = getNativeTasksDb();
|
|
969
|
-
if (!nativeDb) throw new Error("Native database not initialized");
|
|
970
|
-
if (!nativeDb.prepare("SELECT assignee FROM tasks_tasks WHERE id = ?").get(taskId)) throw new Error(`Task not found: ${taskId}`);
|
|
971
|
-
if (nativeDb.prepare("UPDATE tasks_tasks SET assignee = ?, updated_at = ? WHERE id = ? AND (assignee IS NULL OR assignee = ?)").run(agentId, (/* @__PURE__ */ new Date()).toISOString(), taskId, agentId).changes === 0) {
|
|
972
|
-
const currentRow = nativeDb.prepare("SELECT assignee FROM tasks_tasks WHERE id = ?").get(taskId);
|
|
973
|
-
throw new Error(`Task ${taskId} is already claimed by agent: ${currentRow?.assignee ?? "unknown"}`);
|
|
974
|
-
}
|
|
975
|
-
},
|
|
976
|
-
async unclaimTask(taskId) {
|
|
977
|
-
const nativeDb = getNativeTasksDb();
|
|
978
|
-
if (!nativeDb) throw new Error("Native database not initialized");
|
|
979
|
-
if (!nativeDb.prepare("SELECT id FROM tasks_tasks WHERE id = ?").get(taskId)) throw new Error(`Task not found: ${taskId}`);
|
|
980
|
-
nativeDb.prepare("UPDATE tasks_tasks SET assignee = NULL, updated_at = ? WHERE id = ?").run((/* @__PURE__ */ new Date()).toISOString(), taskId);
|
|
981
|
-
}
|
|
982
|
-
};
|
|
983
|
-
return accessor;
|
|
984
|
-
}
|
|
985
|
-
|
|
986
|
-
export { createSqliteDataAccessor as c, setMetaValue as s };
|
|
987
|
-
//# sourceMappingURL=sqlite-data-accessor-DD_RFX6r.js.map
|