@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,692 +0,0 @@
|
|
|
1
|
-
import { s as object, _ as _enum, u as string, v as number, w as boolean } from './paths-CV7S5-Zm.js';
|
|
2
|
-
import 'node:fs';
|
|
3
|
-
import 'node:path';
|
|
4
|
-
import 'node:os';
|
|
5
|
-
import 'node:events';
|
|
6
|
-
import 'node:diagnostics_channel';
|
|
7
|
-
import 'fs';
|
|
8
|
-
import 'events';
|
|
9
|
-
import 'util';
|
|
10
|
-
import 'path';
|
|
11
|
-
import 'assert';
|
|
12
|
-
import 'worker_threads';
|
|
13
|
-
import 'module';
|
|
14
|
-
import 'node:url';
|
|
15
|
-
import 'url';
|
|
16
|
-
import 'buffer';
|
|
17
|
-
import 'node:module';
|
|
18
|
-
import 'node:child_process';
|
|
19
|
-
import 'node:crypto';
|
|
20
|
-
import 'node:process';
|
|
21
|
-
import 'node:async_hooks';
|
|
22
|
-
|
|
23
|
-
//#region ../core/dist/tasks/duplicate-detector.js
|
|
24
|
-
/**
|
|
25
|
-
* BRAIN-powered tiered duplicate-task detection for `cleo add`.
|
|
26
|
-
*
|
|
27
|
-
* Before a new task is inserted, this module queries active tasks and computes
|
|
28
|
-
* similarity between the incoming title+description and each active task.
|
|
29
|
-
*
|
|
30
|
-
* Three-tier escalation (T1681):
|
|
31
|
-
*
|
|
32
|
-
* Tier 1 — lexical OR vector similarity. NOT BM25, despite the historical
|
|
33
|
-
* naming: there is no IDF, no term frequency and no length normalisation.
|
|
34
|
-
* Two implementations, selected at runtime (see `runDuplicateCheck`):
|
|
35
|
-
* - lexical: Jaccard over CHARACTER TRIGRAMS of a title-2x-weighted blob
|
|
36
|
-
* - vector: cosine over embeddings, when an embedding provider is loaded
|
|
37
|
-
* score >= 0.92 → reject (clear match)
|
|
38
|
-
* score < 0.50 → insert (clear different)
|
|
39
|
-
* score in [0.50, 0.92) → escalate to Tier 2
|
|
40
|
-
*
|
|
41
|
-
* Tier 2 — Jaccard on word-level n-grams (title+description+labels):
|
|
42
|
-
* score >= 0.85 → reject
|
|
43
|
-
* score < 0.40 → insert
|
|
44
|
-
* score in [0.40, 0.85) → escalate to Tier 3 (LLM, paid)
|
|
45
|
-
*
|
|
46
|
-
* Tier 3 — LLM reasoning (max 1 call per cleo add):
|
|
47
|
-
* are_duplicate=true → reject
|
|
48
|
-
* are_duplicate=false → insert
|
|
49
|
-
* LLM error / timeout → fall back to Tier-1-only decision (never block on error)
|
|
50
|
-
*
|
|
51
|
-
* Thresholds (original T1633 behavior preserved for the Tier-1 clear-match path):
|
|
52
|
-
* Tier-1 score >= 0.85 → warning emitted to stderr (non-blocking)
|
|
53
|
-
* Tier-1 score >= 0.92 → rejected with E_DUPLICATE_TASK_LIKELY
|
|
54
|
-
*
|
|
55
|
-
* @epic T1627
|
|
56
|
-
* @task T1633
|
|
57
|
-
* @task T1681
|
|
58
|
-
*/
|
|
59
|
-
/** Tier-1 score at which a non-blocking warning is emitted. (Name kept: exported API.) */
|
|
60
|
-
var DUPLICATE_WARN_THRESHOLD = .85;
|
|
61
|
-
/** Tier-1 score at which creation is rejected (clear match). (Name kept: exported API.) */
|
|
62
|
-
var DUPLICATE_REJECT_THRESHOLD = .92;
|
|
63
|
-
/**
|
|
64
|
-
* Tier-1 lower bound for the ambiguous range.
|
|
65
|
-
* Scores below this are considered clear-different and skip Jaccard + LLM.
|
|
66
|
-
*/
|
|
67
|
-
var TIER1_ESCALATE_LOW = .5;
|
|
68
|
-
/**
|
|
69
|
-
* Jaccard reject threshold.
|
|
70
|
-
* Scores >= this after Tier-2 escalation cause rejection without calling LLM.
|
|
71
|
-
*/
|
|
72
|
-
var JACCARD_REJECT_THRESHOLD = .85;
|
|
73
|
-
/**
|
|
74
|
-
* Jaccard lower bound for the ambiguous range.
|
|
75
|
-
* Scores below this after Tier-2 escalation are considered clear-different.
|
|
76
|
-
*/
|
|
77
|
-
var JACCARD_ESCALATE_LOW = .4;
|
|
78
|
-
/** Maximum active tasks to scan per invocation. Prevents runaway cost on huge task lists. */
|
|
79
|
-
var MAX_ACTIVE_TASKS_SCAN = 500;
|
|
80
|
-
/** LLM call timeout in milliseconds. */
|
|
81
|
-
var LLM_TIMEOUT_MS = 15e3;
|
|
82
|
-
/**
|
|
83
|
-
* Maximum candidates that may be scored with local embeddings (T12117).
|
|
84
|
-
*
|
|
85
|
-
* The vector tier used to run inside the per-candidate loop with no bound, so
|
|
86
|
-
* `cleo add` performed one local model inference **per active task** before
|
|
87
|
-
* committing the row — O(active tasks) inferences on the write path. In a
|
|
88
|
-
* project with ~1,000 active tasks that is thousands of inferences to create
|
|
89
|
-
* one row, which is why `cleo add` was observed taking 180-280 s and failing
|
|
90
|
-
* outright on a memory-constrained host (issue #1244).
|
|
91
|
-
*
|
|
92
|
-
* Candidates beyond this budget fall back to the lexical score, which is the
|
|
93
|
-
* same fallback already used whenever embeddings are unavailable — so this
|
|
94
|
-
* bounds cost without introducing a new code path.
|
|
95
|
-
*/
|
|
96
|
-
var MAX_VECTOR_CANDIDATES = 25;
|
|
97
|
-
/**
|
|
98
|
-
* Wall-clock budget for the whole vector-scoring phase, in milliseconds.
|
|
99
|
-
*
|
|
100
|
-
* A second bound beside {@link MAX_VECTOR_CANDIDATES} because the count cap
|
|
101
|
-
* assumes each inference is fast, and a cold model load is not. Whichever
|
|
102
|
-
* bound trips first ends the phase.
|
|
103
|
-
*/
|
|
104
|
-
var VECTOR_PHASE_BUDGET_MS = 5e3;
|
|
105
|
-
/**
|
|
106
|
-
* Structured output schema for the LLM duplicate-reasoning call.
|
|
107
|
-
* @task T1681
|
|
108
|
-
*/
|
|
109
|
-
var DuplicateReasoningSchema = object({
|
|
110
|
-
are_duplicate: boolean(),
|
|
111
|
-
confidence: number().min(0).max(1),
|
|
112
|
-
distinction: string().nullable(),
|
|
113
|
-
suggestion: _enum([
|
|
114
|
-
"merge",
|
|
115
|
-
"keep-both",
|
|
116
|
-
"block-new"
|
|
117
|
-
])
|
|
118
|
-
});
|
|
119
|
-
/**
|
|
120
|
-
* Normalise text for comparison: lowercase, collapse whitespace,
|
|
121
|
-
* strip punctuation (except hyphens which carry semantic meaning).
|
|
122
|
-
*
|
|
123
|
-
* @param text - Raw text to normalise.
|
|
124
|
-
* @returns Normalised string.
|
|
125
|
-
*/
|
|
126
|
-
function normalise(text) {
|
|
127
|
-
return text.toLowerCase().replace(/[^\w\s-]/g, " ").replace(/\s+/g, " ").trim();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Build a Set of character trigrams from normalised text.
|
|
131
|
-
* Trigrams capture local character patterns and are robust to
|
|
132
|
-
* word-order variation and minor phrasing differences.
|
|
133
|
-
*
|
|
134
|
-
* @param text - Normalised text.
|
|
135
|
-
* @returns Set of 3-character substrings.
|
|
136
|
-
*/
|
|
137
|
-
function trigrams(text) {
|
|
138
|
-
const result = /* @__PURE__ */ new Set();
|
|
139
|
-
if (text.length < 3) {
|
|
140
|
-
if (text.length > 0) result.add(text.padEnd(3, " "));
|
|
141
|
-
return result;
|
|
142
|
-
}
|
|
143
|
-
for (let i = 0; i <= text.length - 3; i++) result.add(text.slice(i, i + 3));
|
|
144
|
-
return result;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Jaccard similarity between two Sets: |A ∩ B| / |A ∪ B|.
|
|
148
|
-
* Returns 0 when both sets are empty.
|
|
149
|
-
*
|
|
150
|
-
* @param a - First set.
|
|
151
|
-
* @param b - Second set.
|
|
152
|
-
* @returns Jaccard score in [0, 1].
|
|
153
|
-
*/
|
|
154
|
-
function jaccard(a, b) {
|
|
155
|
-
if (a.size === 0 && b.size === 0) return 0;
|
|
156
|
-
let intersection = 0;
|
|
157
|
-
for (const v of a) if (b.has(v)) intersection++;
|
|
158
|
-
const union = a.size + b.size - intersection;
|
|
159
|
-
return union === 0 ? 0 : intersection / union;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Build a weighted search blob from title and description.
|
|
163
|
-
* Title is given 2× weight by repetition to reflect higher semantic importance.
|
|
164
|
-
*
|
|
165
|
-
* @param title - Task title.
|
|
166
|
-
* @param description - Task description (may be empty).
|
|
167
|
-
* @returns A single normalised string for trigram hashing.
|
|
168
|
-
*/
|
|
169
|
-
function buildSearchBlob(title, description) {
|
|
170
|
-
return normalise(`${title} ${title} ${description}`);
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Compute lexical similarity between two (title, description) pairs.
|
|
174
|
-
*
|
|
175
|
-
* Uses Jaccard similarity over character trigrams of a weighted blob
|
|
176
|
-
* (title 2×, description 1×). This is zero-dependency, deterministic,
|
|
177
|
-
* and symmetrical. This is the LEXICAL Tier-1 measure — it is not BM25.
|
|
178
|
-
*
|
|
179
|
-
* @param titleA - First title.
|
|
180
|
-
* @param descA - First description.
|
|
181
|
-
* @param titleB - Second title.
|
|
182
|
-
* @param descB - Second description.
|
|
183
|
-
* @returns Similarity score in [0, 1].
|
|
184
|
-
*/
|
|
185
|
-
function computeLexicalSimilarity(titleA, descA, titleB, descB) {
|
|
186
|
-
const blobA = buildSearchBlob(titleA, descA);
|
|
187
|
-
const blobB = buildSearchBlob(titleB, descB);
|
|
188
|
-
if (blobA === blobB) return 1;
|
|
189
|
-
return jaccard(trigrams(blobA), trigrams(blobB));
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Build word unigrams and bigrams from a token list.
|
|
193
|
-
* Includes labels as additional tokens to capture tag-level similarity.
|
|
194
|
-
*
|
|
195
|
-
* @param tokens - Array of normalised word tokens.
|
|
196
|
-
* @returns Set of word n-grams (unigrams + bigrams).
|
|
197
|
-
*/
|
|
198
|
-
function wordNgrams(tokens) {
|
|
199
|
-
const result = /* @__PURE__ */ new Set();
|
|
200
|
-
for (const tok of tokens) result.add(tok);
|
|
201
|
-
for (let i = 0; i < tokens.length - 1; i++) result.add(`${tokens[i]} ${tokens[i + 1]}`);
|
|
202
|
-
return result;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Tokenise a string into normalised word tokens.
|
|
206
|
-
*
|
|
207
|
-
* @param text - Raw text.
|
|
208
|
-
* @returns Array of lowercase non-empty word tokens.
|
|
209
|
-
*/
|
|
210
|
-
function tokenise(text) {
|
|
211
|
-
return normalise(text).split(/\s+/).filter((t) => t.length > 0);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Build word-level n-gram set from title + description + labels.
|
|
215
|
-
* This differs from the Tier-1 lexical blob (character trigrams, no labels).
|
|
216
|
-
*
|
|
217
|
-
* @param title - Task title.
|
|
218
|
-
* @param description - Task description.
|
|
219
|
-
* @param labels - Task labels (empty array if none).
|
|
220
|
-
* @returns Set of word unigrams + bigrams.
|
|
221
|
-
*/
|
|
222
|
-
function buildWordNgramSet(title, description, labels) {
|
|
223
|
-
const titleTokens = tokenise(title);
|
|
224
|
-
const descTokens = tokenise(description);
|
|
225
|
-
const labelTokens = labels.flatMap((l) => tokenise(l));
|
|
226
|
-
return wordNgrams([
|
|
227
|
-
...titleTokens,
|
|
228
|
-
...titleTokens,
|
|
229
|
-
...descTokens,
|
|
230
|
-
...labelTokens
|
|
231
|
-
]);
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Compute Jaccard similarity over word-level n-grams including labels.
|
|
235
|
-
* Used as Tier-2 discriminator when the Tier-1 score is ambiguous.
|
|
236
|
-
*
|
|
237
|
-
* @param titleA - First title.
|
|
238
|
-
* @param descA - First description.
|
|
239
|
-
* @param labelsA - First task labels.
|
|
240
|
-
* @param titleB - Second title.
|
|
241
|
-
* @param descB - Second description.
|
|
242
|
-
* @param labelsB - Second task labels.
|
|
243
|
-
* @returns Jaccard score in [0, 1].
|
|
244
|
-
*/
|
|
245
|
-
function computeJaccardWordSimilarity(titleA, descA, labelsA, titleB, descB, labelsB) {
|
|
246
|
-
return jaccard(buildWordNgramSet(titleA, descA, labelsA), buildWordNgramSet(titleB, descB, labelsB));
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Embed the incoming search blob ONCE for the whole duplicate check.
|
|
250
|
-
*
|
|
251
|
-
* Returns `null` when embedding is unavailable, which makes the caller fall
|
|
252
|
-
* back to the lexical (trigram) measure for every candidate.
|
|
253
|
-
*
|
|
254
|
-
* @param incomingBlob - Normalised search blob for the new task.
|
|
255
|
-
* @returns The incoming embedding, or `null` when embedding is unavailable.
|
|
256
|
-
*/
|
|
257
|
-
async function embedIncomingOnce(incomingBlob) {
|
|
258
|
-
try {
|
|
259
|
-
const { isEmbeddingAvailable, embedText } = await import('./brain-embedding-Djw9ekXu.js');
|
|
260
|
-
if (!isEmbeddingAvailable()) return null;
|
|
261
|
-
return await embedText(incomingBlob) ?? null;
|
|
262
|
-
} catch {
|
|
263
|
-
return null;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Cosine similarity between a PRE-COMPUTED incoming vector and a candidate blob.
|
|
268
|
-
*
|
|
269
|
-
* The incoming vector is computed once per duplicate check by
|
|
270
|
-
* {@link embedIncomingOnce} and passed in. It used to be embedded inside this
|
|
271
|
-
* function, which ran once per candidate — so a store with 1,126 active tasks
|
|
272
|
-
* embedded the same incoming text 1,126 times per `cleo add`. Only the candidate
|
|
273
|
-
* is embedded here.
|
|
274
|
-
*
|
|
275
|
-
* @param incomingVec - Pre-computed embedding of the incoming blob.
|
|
276
|
-
* @param candidateBlob - Candidate search blob to embed and compare.
|
|
277
|
-
* @returns Cosine similarity in [0, 1], or `null` when embedding is unavailable.
|
|
278
|
-
*/
|
|
279
|
-
async function tryVectorSimilarity(incomingVec, candidateBlob) {
|
|
280
|
-
try {
|
|
281
|
-
const { isEmbeddingAvailable, embedText } = await import('./brain-embedding-Djw9ekXu.js');
|
|
282
|
-
if (!isEmbeddingAvailable()) return null;
|
|
283
|
-
const vecA = incomingVec;
|
|
284
|
-
const vecB = await embedText(candidateBlob);
|
|
285
|
-
if (!vecA || !vecB || vecA.length !== vecB.length) return null;
|
|
286
|
-
let dot = 0;
|
|
287
|
-
let normA = 0;
|
|
288
|
-
let normB = 0;
|
|
289
|
-
for (let i = 0; i < vecA.length; i++) {
|
|
290
|
-
dot += (vecA[i] ?? 0) * (vecB[i] ?? 0);
|
|
291
|
-
normA += (vecA[i] ?? 0) ** 2;
|
|
292
|
-
normB += (vecB[i] ?? 0) ** 2;
|
|
293
|
-
}
|
|
294
|
-
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
295
|
-
if (denom === 0) return null;
|
|
296
|
-
return Math.max(0, Math.min(1, dot / denom));
|
|
297
|
-
} catch {
|
|
298
|
-
return null;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Build the system prompt for the LLM duplicate-detection call.
|
|
303
|
-
*/
|
|
304
|
-
function buildDuplicateSystemPrompt() {
|
|
305
|
-
return [
|
|
306
|
-
"You are a task-management assistant determining whether two software tasks are semantic duplicates.",
|
|
307
|
-
"Respond ONLY with valid JSON matching this schema:",
|
|
308
|
-
"{ \"are_duplicate\": boolean, \"confidence\": number (0-1), \"distinction\": string|null, \"suggestion\": \"merge\"|\"keep-both\"|\"block-new\" }",
|
|
309
|
-
"",
|
|
310
|
-
"Rules:",
|
|
311
|
-
"- are_duplicate=true when both tasks describe the SAME work deliverable (even if worded differently)",
|
|
312
|
-
"- are_duplicate=false when they target different deliverables, different scopes, or different problem domains",
|
|
313
|
-
"- distinction must be non-null when are_duplicate=false (explain what makes them different)",
|
|
314
|
-
"- suggestion: \"merge\"=consolidate into one task, \"keep-both\"=distinct tasks worth tracking separately, \"block-new\"=new task is redundant",
|
|
315
|
-
"- Do NOT add any explanation outside the JSON object."
|
|
316
|
-
].join("\n");
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Build the user prompt for the LLM duplicate-detection call.
|
|
320
|
-
*/
|
|
321
|
-
function buildDuplicateUserPrompt(incomingTitle, incomingDescription, candidateTitle, candidateDescription, candidateId) {
|
|
322
|
-
return [
|
|
323
|
-
`Task A (NEW — being added now):`,
|
|
324
|
-
` Title: ${incomingTitle}`,
|
|
325
|
-
` Description: ${incomingDescription || "(no description provided)"}`,
|
|
326
|
-
"",
|
|
327
|
-
`Task B (EXISTING — ${candidateId}):`,
|
|
328
|
-
` Title: ${candidateTitle}`,
|
|
329
|
-
` Description: ${candidateDescription || "(no description)"}`,
|
|
330
|
-
"",
|
|
331
|
-
"Are these the same task (semantic duplicate)? Respond with JSON only."
|
|
332
|
-
].join("\n");
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Call the daemon LLM to determine whether two tasks are semantic duplicates.
|
|
336
|
-
*
|
|
337
|
-
* Cost cap: max 1 call per `cleo add` invocation (enforced by the caller via
|
|
338
|
-
* a `llmCallMade` flag). Never throws — returns null on error/timeout so the
|
|
339
|
-
* caller can fall back to a Tier-1-only decision.
|
|
340
|
-
*
|
|
341
|
-
* @param incomingTitle - Title of the task being added.
|
|
342
|
-
* @param incomingDescription - Description of the task being added.
|
|
343
|
-
* @param candidate - Best-scoring candidate from Tier 1/2.
|
|
344
|
-
* @param cwd - Project root for credential + config resolution.
|
|
345
|
-
* @returns Structured reasoning result, or null when the call fails/times out.
|
|
346
|
-
* @task T1681
|
|
347
|
-
*/
|
|
348
|
-
async function callLlmDuplicateReasoning(incomingTitle, incomingDescription, candidate, cwd) {
|
|
349
|
-
try {
|
|
350
|
-
const { authHeadersFromSealed } = await import('./credentials-C7EJFf5O.js');
|
|
351
|
-
const { resolveLLMForRole } = await import('./role-resolver2-nkhzS1oy.js');
|
|
352
|
-
const llm = await resolveLLMForRole("consolidation", { projectRoot: cwd });
|
|
353
|
-
if (!llm.sealedCredential || !llm.credential) return null;
|
|
354
|
-
const systemPrompt = buildDuplicateSystemPrompt();
|
|
355
|
-
const userPrompt = buildDuplicateUserPrompt(incomingTitle, incomingDescription, candidate.title, candidate.description ?? "", candidate.id);
|
|
356
|
-
const modelConfig = {
|
|
357
|
-
transport: llm.provider,
|
|
358
|
-
model: llm.model,
|
|
359
|
-
apiKey: (await llm.sealedCredential.fetch()).value,
|
|
360
|
-
extraHeaders: llm.credential.authType === "oauth" ? await authHeadersFromSealed(llm.sealedCredential, llm.credential.authType) : void 0
|
|
361
|
-
};
|
|
362
|
-
const { cleoLlmCall } = await import('./api2-CmNQzb0b.js');
|
|
363
|
-
const callPromise = cleoLlmCall({
|
|
364
|
-
modelConfig,
|
|
365
|
-
prompt: userPrompt,
|
|
366
|
-
maxTokens: 256,
|
|
367
|
-
jsonMode: true,
|
|
368
|
-
temperature: 0,
|
|
369
|
-
enableRetry: false,
|
|
370
|
-
messages: [{
|
|
371
|
-
role: "system",
|
|
372
|
-
content: systemPrompt
|
|
373
|
-
}]
|
|
374
|
-
});
|
|
375
|
-
const timeoutPromise = new Promise((resolve) => {
|
|
376
|
-
setTimeout(() => resolve(null), LLM_TIMEOUT_MS);
|
|
377
|
-
});
|
|
378
|
-
const result = await Promise.race([callPromise, timeoutPromise]);
|
|
379
|
-
if (!result) return null;
|
|
380
|
-
const responseContent = typeof result === "object" && result !== null && "content" in result ? result.content : null;
|
|
381
|
-
if (!responseContent) return null;
|
|
382
|
-
let parsed;
|
|
383
|
-
if (typeof responseContent === "string") try {
|
|
384
|
-
parsed = JSON.parse(responseContent);
|
|
385
|
-
} catch {
|
|
386
|
-
const jsonMatch = /\{[\s\S]*\}/.exec(responseContent);
|
|
387
|
-
if (!jsonMatch) return null;
|
|
388
|
-
try {
|
|
389
|
-
parsed = JSON.parse(jsonMatch[0]);
|
|
390
|
-
} catch {
|
|
391
|
-
return null;
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
else if (typeof responseContent === "object") parsed = responseContent;
|
|
395
|
-
else return null;
|
|
396
|
-
const validation = DuplicateReasoningSchema.safeParse(parsed);
|
|
397
|
-
if (!validation.success) return null;
|
|
398
|
-
return validation.data;
|
|
399
|
-
} catch {
|
|
400
|
-
return null;
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
/**
|
|
404
|
-
* Check whether the incoming task's title and description are similar to any
|
|
405
|
-
* active task in the database using three-tier escalation (T1681).
|
|
406
|
-
*
|
|
407
|
-
* Algorithm:
|
|
408
|
-
*
|
|
409
|
-
* Tier 1 — lexical or vector similarity (per candidate):
|
|
410
|
-
* For each active task, compute vector cosine similarity (if embedding is available)
|
|
411
|
-
* Jaccard over character trigrams, or cosine over embeddings when a provider is loaded.
|
|
412
|
-
* - score >= DUPLICATE_REJECT_THRESHOLD (0.92): clear match → reject immediately.
|
|
413
|
-
* - score < TIER1_ESCALATE_LOW (0.50): clear different → skip Tier 2 + 3 for this candidate.
|
|
414
|
-
* - score in [0.50, 0.92): ambiguous → collect for Tier-2 Jaccard evaluation.
|
|
415
|
-
*
|
|
416
|
-
* Tier 2 — Jaccard word n-grams (title+description+labels):
|
|
417
|
-
* For candidates that were ambiguous in Tier 1, compute Jaccard over word-level n-grams.
|
|
418
|
-
* Labels are included to surface tag-level similarity that character trigrams miss.
|
|
419
|
-
* - score >= JACCARD_REJECT_THRESHOLD (0.85): reject.
|
|
420
|
-
* - score < JACCARD_ESCALATE_LOW (0.40): clear different → skip LLM.
|
|
421
|
-
* - score in [0.40, 0.85): ambiguous → escalate to LLM (cost cap: 1 call per invocation).
|
|
422
|
-
*
|
|
423
|
-
* Tier 3 — LLM reasoning (max 1 call per `cleo add`):
|
|
424
|
-
* Call the daemon provider with both task descriptions and the structured-output schema.
|
|
425
|
-
* On error/timeout: fall back to the Tier-1 decision for the candidate (never block).
|
|
426
|
-
*
|
|
427
|
-
* @param title - Title of the task being added.
|
|
428
|
-
* @param description - Description of the task being added (empty string if not provided).
|
|
429
|
-
* @param accessor - DataAccessor instance to load active tasks from.
|
|
430
|
-
* @param labels - Labels of the task being added (empty array if not provided).
|
|
431
|
-
* @param cwd - Project root for LLM credential resolution (Tier 3).
|
|
432
|
-
* @returns Duplicate check result with tier provenance.
|
|
433
|
-
* @task T1633
|
|
434
|
-
* @task T1681
|
|
435
|
-
*/
|
|
436
|
-
async function checkDuplicates(title, description, accessor, labels, cwd) {
|
|
437
|
-
const incomingLabels = labels ?? [];
|
|
438
|
-
const { tasks: activeTasks } = await accessor.queryTasks({
|
|
439
|
-
status: [
|
|
440
|
-
"pending",
|
|
441
|
-
"active",
|
|
442
|
-
"blocked"
|
|
443
|
-
],
|
|
444
|
-
limit: MAX_ACTIVE_TASKS_SCAN
|
|
445
|
-
});
|
|
446
|
-
if (activeTasks.length === 0) return {
|
|
447
|
-
maxScore: 0,
|
|
448
|
-
candidates: [],
|
|
449
|
-
shouldReject: false,
|
|
450
|
-
shouldWarn: false,
|
|
451
|
-
tier: "bm25"
|
|
452
|
-
};
|
|
453
|
-
const incomingBlob = buildSearchBlob(title, description);
|
|
454
|
-
const incomingVec = await (async () => {
|
|
455
|
-
try {
|
|
456
|
-
const { isEmbeddingAvailable } = await import('./brain-embedding-Djw9ekXu.js');
|
|
457
|
-
return isEmbeddingAvailable();
|
|
458
|
-
} catch {
|
|
459
|
-
return false;
|
|
460
|
-
}
|
|
461
|
-
})() ? await embedIncomingOnce(incomingBlob) : null;
|
|
462
|
-
const tier1Ambiguous = [];
|
|
463
|
-
const clearMatchCandidates = [];
|
|
464
|
-
let vectorBudget = MAX_VECTOR_CANDIDATES;
|
|
465
|
-
const vectorDeadline = Date.now() + VECTOR_PHASE_BUDGET_MS;
|
|
466
|
-
for (const task of activeTasks) {
|
|
467
|
-
if (task.title === title) {
|
|
468
|
-
if ((task.description ?? "") === description) continue;
|
|
469
|
-
}
|
|
470
|
-
const candidateBlob = buildSearchBlob(task.title, task.description ?? "");
|
|
471
|
-
let tier1Score;
|
|
472
|
-
if (incomingVec && vectorBudget > 0 && Date.now() < vectorDeadline) {
|
|
473
|
-
vectorBudget--;
|
|
474
|
-
tier1Score = await tryVectorSimilarity(incomingVec, candidateBlob) ?? computeLexicalSimilarity(title, description, task.title, task.description ?? "");
|
|
475
|
-
} else tier1Score = computeLexicalSimilarity(title, description, task.title, task.description ?? "");
|
|
476
|
-
if (tier1Score >= .92) clearMatchCandidates.push({
|
|
477
|
-
id: task.id,
|
|
478
|
-
title: task.title,
|
|
479
|
-
score: tier1Score
|
|
480
|
-
});
|
|
481
|
-
else if (tier1Score >= TIER1_ESCALATE_LOW) {
|
|
482
|
-
tier1Ambiguous.push({
|
|
483
|
-
task,
|
|
484
|
-
tier1Score
|
|
485
|
-
});
|
|
486
|
-
if (tier1Score >= .85) clearMatchCandidates.push({
|
|
487
|
-
id: task.id,
|
|
488
|
-
title: task.title,
|
|
489
|
-
score: tier1Score
|
|
490
|
-
});
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
if (clearMatchCandidates.some((c) => c.score >= .92)) {
|
|
494
|
-
const sorted = clearMatchCandidates.filter((c) => c.score >= DUPLICATE_REJECT_THRESHOLD).sort((a, b) => b.score - a.score).slice(0, 3);
|
|
495
|
-
return {
|
|
496
|
-
maxScore: sorted[0]?.score ?? 0,
|
|
497
|
-
candidates: sorted,
|
|
498
|
-
shouldReject: true,
|
|
499
|
-
shouldWarn: false,
|
|
500
|
-
tier: "bm25"
|
|
501
|
-
};
|
|
502
|
-
}
|
|
503
|
-
const tier2Ambiguous = [];
|
|
504
|
-
const tier2Candidates = [];
|
|
505
|
-
for (const { task, tier1Score: _tier1 } of tier1Ambiguous) {
|
|
506
|
-
const jScore = computeJaccardWordSimilarity(title, description, incomingLabels, task.title, task.description ?? "", task.labels ?? []);
|
|
507
|
-
if (jScore >= JACCARD_REJECT_THRESHOLD) tier2Candidates.push({
|
|
508
|
-
id: task.id,
|
|
509
|
-
title: task.title,
|
|
510
|
-
score: jScore
|
|
511
|
-
});
|
|
512
|
-
else if (jScore >= JACCARD_ESCALATE_LOW) tier2Ambiguous.push({
|
|
513
|
-
task,
|
|
514
|
-
jaccardScore: jScore
|
|
515
|
-
});
|
|
516
|
-
}
|
|
517
|
-
if (tier2Candidates.length > 0) {
|
|
518
|
-
const sorted = tier2Candidates.sort((a, b) => b.score - a.score).slice(0, 3);
|
|
519
|
-
return {
|
|
520
|
-
maxScore: sorted[0]?.score ?? 0,
|
|
521
|
-
candidates: sorted,
|
|
522
|
-
shouldReject: true,
|
|
523
|
-
shouldWarn: false,
|
|
524
|
-
tier: "jaccard"
|
|
525
|
-
};
|
|
526
|
-
}
|
|
527
|
-
if (tier2Ambiguous.length > 0) {
|
|
528
|
-
tier2Ambiguous.sort((a, b) => b.jaccardScore - a.jaccardScore);
|
|
529
|
-
const topCandidate = tier2Ambiguous[0];
|
|
530
|
-
const reasoning = await callLlmDuplicateReasoning(title, description, {
|
|
531
|
-
id: topCandidate.task.id,
|
|
532
|
-
title: topCandidate.task.title,
|
|
533
|
-
score: topCandidate.jaccardScore,
|
|
534
|
-
description: topCandidate.task.description ?? ""
|
|
535
|
-
}, cwd);
|
|
536
|
-
if (reasoning !== null) {
|
|
537
|
-
if (reasoning.are_duplicate) {
|
|
538
|
-
const candidate = {
|
|
539
|
-
id: topCandidate.task.id,
|
|
540
|
-
title: topCandidate.task.title,
|
|
541
|
-
score: reasoning.confidence
|
|
542
|
-
};
|
|
543
|
-
return {
|
|
544
|
-
maxScore: reasoning.confidence,
|
|
545
|
-
candidates: [candidate],
|
|
546
|
-
shouldReject: true,
|
|
547
|
-
shouldWarn: false,
|
|
548
|
-
tier: "llm"
|
|
549
|
-
};
|
|
550
|
-
}
|
|
551
|
-
return {
|
|
552
|
-
maxScore: topCandidate.jaccardScore,
|
|
553
|
-
candidates: [],
|
|
554
|
-
shouldReject: false,
|
|
555
|
-
shouldWarn: false,
|
|
556
|
-
tier: "llm"
|
|
557
|
-
};
|
|
558
|
-
}
|
|
559
|
-
const fallbackScore = tier1Ambiguous.find((e) => e.task.id === topCandidate.task.id)?.tier1Score ?? topCandidate.jaccardScore;
|
|
560
|
-
if (fallbackScore >= .85) return {
|
|
561
|
-
maxScore: fallbackScore,
|
|
562
|
-
candidates: [{
|
|
563
|
-
id: topCandidate.task.id,
|
|
564
|
-
title: topCandidate.task.title,
|
|
565
|
-
score: fallbackScore
|
|
566
|
-
}],
|
|
567
|
-
shouldReject: false,
|
|
568
|
-
shouldWarn: true,
|
|
569
|
-
tier: "bm25"
|
|
570
|
-
};
|
|
571
|
-
}
|
|
572
|
-
const warnCandidates = clearMatchCandidates.filter((c) => c.score >= .85 && c.score < .92).sort((a, b) => b.score - a.score).slice(0, 3);
|
|
573
|
-
if (warnCandidates.length > 0) return {
|
|
574
|
-
maxScore: warnCandidates[0]?.score ?? 0,
|
|
575
|
-
candidates: warnCandidates,
|
|
576
|
-
shouldReject: false,
|
|
577
|
-
shouldWarn: true,
|
|
578
|
-
tier: "bm25"
|
|
579
|
-
};
|
|
580
|
-
return {
|
|
581
|
-
maxScore: 0,
|
|
582
|
-
candidates: [],
|
|
583
|
-
shouldReject: false,
|
|
584
|
-
shouldWarn: false,
|
|
585
|
-
tier: "bm25"
|
|
586
|
-
};
|
|
587
|
-
}
|
|
588
|
-
/**
|
|
589
|
-
* Format a human-readable candidate list for warning/rejection messages.
|
|
590
|
-
*
|
|
591
|
-
* @param candidates - Array of duplicate candidates.
|
|
592
|
-
* @returns Formatted multi-line string listing candidates.
|
|
593
|
-
*/
|
|
594
|
-
function formatCandidateList(candidates) {
|
|
595
|
-
return candidates.map((c) => ` • ${c.id}: "${c.title}" (similarity: ${(c.score * 100).toFixed(0)}%)`).join("\n");
|
|
596
|
-
}
|
|
597
|
-
/**
|
|
598
|
-
* Build a warning message for candidates above the warn threshold.
|
|
599
|
-
*
|
|
600
|
-
* @param candidates - Candidates to include in the message.
|
|
601
|
-
* @returns Warning string (no newline at end).
|
|
602
|
-
*/
|
|
603
|
-
function buildWarnMessage(candidates) {
|
|
604
|
-
return `[BRAIN duplicate-check] Similar active tasks found (score >= ${Math.round(DUPLICATE_WARN_THRESHOLD * 100)}%):\n` + formatCandidateList(candidates) + `\nUse --force-duplicate to bypass this warning if the task is intentionally different.`;
|
|
605
|
-
}
|
|
606
|
-
/**
|
|
607
|
-
* Build a rejection message for candidates above the reject threshold.
|
|
608
|
-
*
|
|
609
|
-
* @param candidates - Candidates to include in the message.
|
|
610
|
-
* @returns Rejection string (no newline at end).
|
|
611
|
-
*/
|
|
612
|
-
function buildRejectMessage(candidates) {
|
|
613
|
-
return `[BRAIN duplicate-check] Task creation REJECTED — very similar active tasks found (score >= ${Math.round(DUPLICATE_REJECT_THRESHOLD * 100)}%):\n` + formatCandidateList(candidates) + `\nRun with --force-duplicate to bypass (audited to .cleo/audit/duplicate-bypass.jsonl).`;
|
|
614
|
-
}
|
|
615
|
-
/**
|
|
616
|
-
* Total wall-clock budget for duplicate detection on the write path, in ms.
|
|
617
|
-
*
|
|
618
|
-
* Detection is three tiers deep and two of them can call out of process (local
|
|
619
|
-
* embeddings, then an LLM). Each has its own bound, but "bounded individually"
|
|
620
|
-
* is not "bounded in aggregate" — and this runs BEFORE the row is inserted.
|
|
621
|
-
*/
|
|
622
|
-
var DUPLICATE_CHECK_BUDGET_MS = 2e4;
|
|
623
|
-
/**
|
|
624
|
-
* Resolve the duplicate-detection budget, honouring an operator override.
|
|
625
|
-
*
|
|
626
|
-
* @param env - environment to read the override from.
|
|
627
|
-
* @returns budget in ms; the default when unset or malformed.
|
|
628
|
-
*/
|
|
629
|
-
function resolveDuplicateCheckBudgetMs(env = process.env) {
|
|
630
|
-
const raw = Number.parseInt(env["CLEO_DUPLICATE_CHECK_BUDGET_MS"] ?? "", 10);
|
|
631
|
-
return Number.isFinite(raw) && raw > 0 ? raw : DUPLICATE_CHECK_BUDGET_MS;
|
|
632
|
-
}
|
|
633
|
-
/**
|
|
634
|
-
* {@link checkDuplicates} with a hard deadline and a fail-OPEN result.
|
|
635
|
-
*
|
|
636
|
-
* ## Why fail open (T12117 · issue #1244)
|
|
637
|
-
*
|
|
638
|
-
* Duplicate detection runs before the insert, so anything that stalls it
|
|
639
|
-
* doesn't slow the write down — it *loses* it. Reported from the field: three
|
|
640
|
-
* `cleo add` attempts at 280 s each, none of which created a row, on a host
|
|
641
|
-
* under memory pressure. No error, no id, no task. A silent write failure is
|
|
642
|
-
* the worst failure mode a task tracker has, because the agent that filed the
|
|
643
|
-
* task believes the work is recorded.
|
|
644
|
-
*
|
|
645
|
-
* It is also silent in the dangerous direction relative to CLEO's documented
|
|
646
|
-
* recovery advice. A killed mutation is supposed to mean "query before
|
|
647
|
-
* retrying — the write has usually landed", which was independently confirmed
|
|
648
|
-
* true for a timeout-killed write. But these writes had NOT landed, and nothing
|
|
649
|
-
* in the output distinguishes the two cases. An agent following the contract
|
|
650
|
-
* correctly reaches the wrong conclusion in one direction or the other.
|
|
651
|
-
*
|
|
652
|
-
* So: the row is the product, detection is enrichment. When the budget is
|
|
653
|
-
* blown, report that on stderr and let the insert proceed. A duplicate that
|
|
654
|
-
* slips through is recoverable by a human in seconds; a task that was never
|
|
655
|
-
* created is lost work nobody knows to look for.
|
|
656
|
-
*
|
|
657
|
-
* @param args - forwarded verbatim to {@link checkDuplicates}.
|
|
658
|
-
* @returns the real verdict, or a permissive one when the budget was exceeded.
|
|
659
|
-
*
|
|
660
|
-
* @task T12117
|
|
661
|
-
*/
|
|
662
|
-
async function checkDuplicatesBounded(...args) {
|
|
663
|
-
let timer;
|
|
664
|
-
const budgetMs = resolveDuplicateCheckBudgetMs();
|
|
665
|
-
const timeout = new Promise((resolve) => {
|
|
666
|
-
timer = setTimeout(() => resolve(null), budgetMs);
|
|
667
|
-
timer.unref();
|
|
668
|
-
});
|
|
669
|
-
try {
|
|
670
|
-
const verdict = await Promise.race([checkDuplicates(...args), timeout]);
|
|
671
|
-
if (verdict === null) {
|
|
672
|
-
process.stderr.write(`cleo: duplicate detection exceeded ${budgetMs}ms and was skipped; creating the task anyway. Run 'cleo find' to check for duplicates.\n`);
|
|
673
|
-
return {
|
|
674
|
-
maxScore: 0,
|
|
675
|
-
candidates: [],
|
|
676
|
-
shouldReject: false,
|
|
677
|
-
shouldWarn: false,
|
|
678
|
-
tier: "bm25",
|
|
679
|
-
timedOut: true
|
|
680
|
-
};
|
|
681
|
-
}
|
|
682
|
-
return {
|
|
683
|
-
...verdict,
|
|
684
|
-
timedOut: false
|
|
685
|
-
};
|
|
686
|
-
} finally {
|
|
687
|
-
if (timer) clearTimeout(timer);
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
export { buildRejectMessage, buildWarnMessage, checkDuplicatesBounded };
|
|
692
|
-
//# sourceMappingURL=duplicate-detector-CaVFMKdE.js.map
|