@cleocode/cleo 2026.9.6 → 2026.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +31 -2
- package/dist/cli/index.js.map +1 -1
- package/package.json +13 -13
- package/scripts/copy-studio-dist.mjs +97 -3
- package/studio-dist/client/_app/immutable/chunks/BGmpyfzD.js +1 -0
- package/studio-dist/client/_app/immutable/chunks/{DQE2lHpR.js → DVHIxkgs.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{Cq8SkApb.js → TX-23QW3.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{B4pbMhWh.js → eK8hf4s7.js} +1 -1
- package/studio-dist/client/_app/immutable/entry/{app.AO-dq23l.js → app.BoQ7cgT2.js} +2 -2
- package/studio-dist/client/_app/immutable/entry/start.Cg1v8DU4.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{0.pcHH7cls.js → 0.CZzEEyVh.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.BZ_6sEg7.js → 1.Bj3Opbua.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{15.C49XuRDg.js → 15.BfXgiwMC.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16.D_IEqgU8.js → 16.mEwy9cqh.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.DMmmyyKw.js → 17.DP2QtQGn.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.BeHgL2ha.js → 18.Bu0054sX.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{20.ByQCOFEK.js → 20.B1AIHdkP.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{24.DKhWVVfG.js → 24.BUoUu37z.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{25.BS4Qyw38.js → 25.ddZ1_EFk.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{26.CZ-vCPq6.js → 26.6OcmQbLV.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{3.B1Ua25St.js → 3.Dyir4xXj.js} +1 -1
- package/studio-dist/client/_app/version.json +1 -1
- package/studio-dist/server/chunks/{0-BkBuauLU.js → 0-CvsKDxQ6.js} +3 -3
- package/studio-dist/server/chunks/{1-C-FPVHUW.js → 1-ck_x2Hf0.js} +3 -3
- package/studio-dist/server/chunks/{15-BEk78EBu.js → 15-BvUNl3KL.js} +3 -3
- package/studio-dist/server/chunks/{16-BzISLvSG.js → 16-De6EzPSa.js} +3 -3
- package/studio-dist/server/chunks/{17-DGt4P3nJ.js → 17-CZNsiZhi.js} +3 -3
- package/studio-dist/server/chunks/{18-DLGcIwmV.js → 18-CbxxjZox.js} +3 -3
- package/studio-dist/server/chunks/{20-BvcOxe5q.js → 20-DVU22np7.js} +3 -3
- package/studio-dist/server/chunks/{24-DlzL0G3_.js → 24-CVlymvLF.js} +3 -3
- package/studio-dist/server/chunks/{25-BkcpAlfJ.js → 25-CAg6Xcmn.js} +3 -3
- package/studio-dist/server/chunks/{26-CY_OLXcd.js → 26-_nfVTvNi.js} +3 -3
- package/studio-dist/server/chunks/{3-CbodebGY.js → 3-B8KhfvHp.js} +3 -3
- package/studio-dist/server/chunks/{_layout.svelte-B31p5awD.js → _layout.svelte-BEIGQcIv.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-C6P8rRvk.js → _page.svelte-2cgtvHwW.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BdTlq0Gh.js → _page.svelte-9OQphlnm.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-h0JOhZab.js → _page.svelte-BIlhmugm.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DR0AY_gZ.js → _page.svelte-BgwL2Gyu.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-EWYHbzl0.js → _page.svelte-C_VSL8NW.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-CFnkQk35.js → _page.svelte-DOWw416I.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BIIvdH13.js → _page.svelte-Wfx7ww_h.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-CfjdIh3A.js → _page.svelte-l4Z_xjl9.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BuVX3kf2.js → _page.svelte-tYN7_LXI.js} +3 -3
- package/studio-dist/server/chunks/{client-2rpcRzcr.js → client-CgX38JBu.js} +2 -2
- package/studio-dist/server/chunks/{error.svelte-CpckcxW6.js → error.svelte-CplNulnS.js} +3 -3
- package/studio-dist/server/chunks/{internal-xyE_opYp.js → internal-D6eWgsHJ.js} +2 -2
- package/studio-dist/server/chunks/{stores-BcV2X8z1.js → stores-5DmdjPCH.js} +2 -2
- package/studio-dist/server/index.js +1 -1
- package/studio-dist/server/manifest.js +12 -12
- package/studio-dist/client/_app/immutable/assets/ort-wasm-simd-threaded.asyncify.BrebZMa_.wasm +0 -0
- package/studio-dist/client/_app/immutable/chunks/Dw--1J0g.js +0 -1
- package/studio-dist/client/_app/immutable/entry/start.DyU3_ZJI.js +0 -1
- package/studio-dist/server/chunks/0-BkBuauLU.js.map +0 -1
- package/studio-dist/server/chunks/1-C-FPVHUW.js.map +0 -1
- package/studio-dist/server/chunks/10-DvOD4ksa.js.map +0 -1
- package/studio-dist/server/chunks/11-DMnBZ02H.js.map +0 -1
- package/studio-dist/server/chunks/12-CCyRyRWX.js.map +0 -1
- package/studio-dist/server/chunks/13-Dx1c3a_X.js.map +0 -1
- package/studio-dist/server/chunks/14-Bo-dTCaZ.js.map +0 -1
- package/studio-dist/server/chunks/15-BEk78EBu.js.map +0 -1
- package/studio-dist/server/chunks/16-BzISLvSG.js.map +0 -1
- package/studio-dist/server/chunks/17-DGt4P3nJ.js.map +0 -1
- package/studio-dist/server/chunks/18-DLGcIwmV.js.map +0 -1
- package/studio-dist/server/chunks/19-DqHyladS.js.map +0 -1
- package/studio-dist/server/chunks/2-COvmA-ZA.js.map +0 -1
- package/studio-dist/server/chunks/20-BvcOxe5q.js.map +0 -1
- package/studio-dist/server/chunks/21-DXK9ptAC.js.map +0 -1
- package/studio-dist/server/chunks/22-DD5CLWJC.js.map +0 -1
- package/studio-dist/server/chunks/23-D_tUnnoc.js.map +0 -1
- package/studio-dist/server/chunks/24-DlzL0G3_.js.map +0 -1
- package/studio-dist/server/chunks/25-BkcpAlfJ.js.map +0 -1
- package/studio-dist/server/chunks/26-CY_OLXcd.js.map +0 -1
- package/studio-dist/server/chunks/27-C9edghG4.js.map +0 -1
- package/studio-dist/server/chunks/28-VemTJGyc.js.map +0 -1
- package/studio-dist/server/chunks/29-CXP-m29t.js.map +0 -1
- package/studio-dist/server/chunks/3-CbodebGY.js.map +0 -1
- package/studio-dist/server/chunks/30-QiM1S4cJ.js.map +0 -1
- package/studio-dist/server/chunks/31-BwdY9NnB.js.map +0 -1
- package/studio-dist/server/chunks/4-CSaG4HjO.js.map +0 -1
- package/studio-dist/server/chunks/5-i5ry4y3C.js.map +0 -1
- package/studio-dist/server/chunks/6-DR1GWBMT.js.map +0 -1
- package/studio-dist/server/chunks/7-DSNwn3aQ.js.map +0 -1
- package/studio-dist/server/chunks/8-Bj0bx07K.js.map +0 -1
- package/studio-dist/server/chunks/9-B3Tz0mZq.js.map +0 -1
- package/studio-dist/server/chunks/AwsRestJsonProtocol-BZuoNBmL.js.map +0 -1
- package/studio-dist/server/chunks/HeroHeader-v4Q9vaGr.js.map +0 -1
- package/studio-dist/server/chunks/Sparkline-BJ-GuhRd.js.map +0 -1
- package/studio-dist/server/chunks/StatBlock-DHJMmOCx.js.map +0 -1
- package/studio-dist/server/chunks/Tabs-DzG6Bn9a.js.map +0 -1
- package/studio-dist/server/chunks/UnionSerde-BflIkhKj.js.map +0 -1
- package/studio-dist/server/chunks/_dispatch-ncuRztUQ.js.map +0 -1
- package/studio-dist/server/chunks/_lafs-C3_fBF_X.js.map +0 -1
- package/studio-dist/server/chunks/_layout.svelte-B31p5awD.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-BIIvdH13.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-BVVTrzTL.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-BXyoMME1.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-B_pq-Z98.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-BdTlq0Gh.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-BuVX3kf2.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-Byz2djto.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-C3aIui4o.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-C6P8rRvk.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CCoTp89s.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CFnkQk35.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CHzXuw2Q.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CYDjW1R0.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CfjdIh3A.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-Clbkk1gm.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CophUar3.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-DR0AY_gZ.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-DUWbZjC7.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-DYNorA0S.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-EWYHbzl0.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-EkXO_YfN.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-M5D2QnMS.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-UYiF7YBK.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-al08ovKm.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-bGhsrIjS.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-h0JOhZab.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-ksTJUXce.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-nzffIbBP.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-4NyKAneX.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-4p6cp9ke.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-7hGdxdEI.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-B2E7fxo9.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-B5g3eScF.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-B6b3b-yA.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-BOgGqaZp.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-BPcErnS0.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-BT0Uq2yq.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-BV1HiKZ0.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-BWp3g6Cr.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-BdN4AJ6o.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-Bfr4u3EP.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-Bw7A4zgb.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-C3Jo-ju8.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-C4BcDGqS.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-C5NF-UgC.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CDMurH5m.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CGiAXy5i.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CJA1djzJ.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-COJHCgbq.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CShsBkeE.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CUl-Utkt.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CboRJY0Q.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CkoJ2HCW.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-CpmMp5D8.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-Cq60m8Pw.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-Cz0zgaUV.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-D0GAFJRb.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DA6p3pmi.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DRVz9D-J.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DSAv66wD.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DSzRdt1U.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DThYFaZj.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DV6pzF-M.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-D_3Pm0gr.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DcHxdMsm.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DgbY5EB3.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-Dlfadh2I.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DnE0f-iC.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-Do9RIPRo.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-DwTRjS4y.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-JallJnps.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-NEFTbJpM.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-ZS1_yMwR.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-_RJXtmfi.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-d-2NvRwX.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-hL92cV7Z.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-k2fApwOp.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-lPlBUIJX.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-rUWMLkIw.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-sv4pA808.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-tKMjUFUP.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-uUx7uT2Y.js.map +0 -1
- package/studio-dist/server/chunks/_server.ts-ujoDR2_g.js.map +0 -1
- package/studio-dist/server/chunks/abort-events-CDRAJSqb.js.map +0 -1
- package/studio-dist/server/chunks/adapters-BkMgPNUM.js.map +0 -1
- package/studio-dist/server/chunks/adapters2-CQ3PzoaK.js.map +0 -1
- package/studio-dist/server/chunks/api-mode2-3W-I1-XO.js.map +0 -1
- package/studio-dist/server/chunks/api2-CmNQzb0b.js.map +0 -1
- package/studio-dist/server/chunks/attention-consolidate-CidG1jfH.js.map +0 -1
- package/studio-dist/server/chunks/audit-log-BXVi9iyE.js.map +0 -1
- package/studio-dist/server/chunks/audit3-DMO_fUGp.js.map +0 -1
- package/studio-dist/server/chunks/auto-extract-B84La1Vs.js.map +0 -1
- package/studio-dist/server/chunks/brain-CXR7ZT7S.js.map +0 -1
- package/studio-dist/server/chunks/brain-consolidator-JGm6mzFf.js.map +0 -1
- package/studio-dist/server/chunks/brain-doctor-Dc2WqVbs.js.map +0 -1
- package/studio-dist/server/chunks/brain-embedding-Djw9ekXu.js.map +0 -1
- package/studio-dist/server/chunks/brain-lifecycle-BOOa876K.js.map +0 -1
- package/studio-dist/server/chunks/brain-maintenance-U6VvsvmK.js.map +0 -1
- package/studio-dist/server/chunks/brain-maintenance2-CwVSmfDT.js.map +0 -1
- package/studio-dist/server/chunks/brain-retrieval2-exR8mdgh.js.map +0 -1
- package/studio-dist/server/chunks/brain-search-CpSh-SNi.js.map +0 -1
- package/studio-dist/server/chunks/brain-search2-CwI2cXgg.js.map +0 -1
- package/studio-dist/server/chunks/brain-similarity-DI4yzm9e.js.map +0 -1
- package/studio-dist/server/chunks/brain-stdp2-BxSBIlSr.js.map +0 -1
- package/studio-dist/server/chunks/brain-writer-handlers-Dwu0QCAA.js.map +0 -1
- package/studio-dist/server/chunks/brain-writer-thread-6n7wI7Gy.js.map +0 -1
- package/studio-dist/server/chunks/branch-lock-Cq7zzmFK.js.map +0 -1
- package/studio-dist/server/chunks/branch-lock2-CmDc4CZW.js.map +0 -1
- package/studio-dist/server/chunks/cancelled-child-waiver-audit-DkesrN83.js.map +0 -1
- package/studio-dist/server/chunks/catalog-model-resolver-Bas9qnoP.js.map +0 -1
- package/studio-dist/server/chunks/catalog-model-resolver2-Cexk2TN0.js.map +0 -1
- package/studio-dist/server/chunks/catalog-resolver-CLot3XJO.js.map +0 -1
- package/studio-dist/server/chunks/catalog-resolver2-JmKb91kY.js.map +0 -1
- package/studio-dist/server/chunks/chunk-DDP5xfzh.js.map +0 -1
- package/studio-dist/server/chunks/cleo-home-CCfe6kAQ.js.map +0 -1
- package/studio-dist/server/chunks/cli-action-DQcaqcfn.js.map +0 -1
- package/studio-dist/server/chunks/client-2rpcRzcr.js.map +0 -1
- package/studio-dist/server/chunks/concrete-session2-bb_vxJ2N.js.map +0 -1
- package/studio-dist/server/chunks/config-DHj9CcFs.js.map +0 -1
- package/studio-dist/server/chunks/config2-F6PPIn7D.js.map +0 -1
- package/studio-dist/server/chunks/connections-BMGJVYcS.js.map +0 -1
- package/studio-dist/server/chunks/connections2-mi7mZqJM.js.map +0 -1
- package/studio-dist/server/chunks/credential-pool-vF6NdtT9.js.map +0 -1
- package/studio-dist/server/chunks/credentials-C7EJFf5O.js.map +0 -1
- package/studio-dist/server/chunks/credentials-store-CFygIuB2.js.map +0 -1
- package/studio-dist/server/chunks/cross-db-cleanup-1LWTUKPi.js.map +0 -1
- package/studio-dist/server/chunks/data-accessor-CWgVndbR.js.map +0 -1
- package/studio-dist/server/chunks/data-safety-central-DaFxK27G.js.map +0 -1
- package/studio-dist/server/chunks/decisions-CmVXV2-H.js.map +0 -1
- package/studio-dist/server/chunks/decisions2-XQsSYdxa.js.map +0 -1
- package/studio-dist/server/chunks/depends-waiver-audit-CUmlBYHx.js.map +0 -1
- package/studio-dist/server/chunks/dev-BNpEUZI3.js.map +0 -1
- package/studio-dist/server/chunks/dialectic-evaluator2-BOyyXhdI.js.map +0 -1
- package/studio-dist/server/chunks/dist-es2-DQy2Mjn_.js.map +0 -1
- package/studio-dist/server/chunks/dist-es3-CBygU4n5.js.map +0 -1
- package/studio-dist/server/chunks/dist-es4-CavbNu4B.js.map +0 -1
- package/studio-dist/server/chunks/dist-es5-Crpm8Wsl.js.map +0 -1
- package/studio-dist/server/chunks/dist-es6-CgePHzh4.js.map +0 -1
- package/studio-dist/server/chunks/dist-es7-k6c5GEd7.js.map +0 -1
- package/studio-dist/server/chunks/dist-es8-Bd9v0_pE.js.map +0 -1
- package/studio-dist/server/chunks/dist3-23bsJhRw.js.map +0 -1
- package/studio-dist/server/chunks/dist4-DmC1zSXi.js.map +0 -1
- package/studio-dist/server/chunks/dual-scope-db-DKnWu1KM.js.map +0 -1
- package/studio-dist/server/chunks/dual-scope-db2-Dht3luRw.js.map +0 -1
- package/studio-dist/server/chunks/duplicate-bypass-audit-BN5w1H2y.js.map +0 -1
- package/studio-dist/server/chunks/duplicate-detector-CaVFMKdE.js.map +0 -1
- package/studio-dist/server/chunks/edge-types-CgBvb0w1.js.map +0 -1
- package/studio-dist/server/chunks/embedding-local-xEnym8Ho.js.map +0 -1
- package/studio-dist/server/chunks/error.svelte-CpckcxW6.js.map +0 -1
- package/studio-dist/server/chunks/event-streams-Bi2p_fVo.js.map +0 -1
- package/studio-dist/server/chunks/execution-learning-BVCw7Plq.js.map +0 -1
- package/studio-dist/server/chunks/exodus-BBuuN6aA.js.map +0 -1
- package/studio-dist/server/chunks/explorer-loader-BN_mkt3_.js.map +0 -1
- package/studio-dist/server/chunks/externalDataInterceptor-C3C4cObe.js.map +0 -1
- package/studio-dist/server/chunks/extraction-gate-DDNBq7gu.js.map +0 -1
- package/studio-dist/server/chunks/extraction-gate2-D77EZBQ6.js.map +0 -1
- package/studio-dist/server/chunks/getSSOTokenFromFile-yZAJxDci.js.map +0 -1
- package/studio-dist/server/chunks/governor2-CtfV3wfX.js.map +0 -1
- package/studio-dist/server/chunks/graph-auto-populate-Dmsr9ZJM.js.map +0 -1
- package/studio-dist/server/chunks/graph-auto-populate2-Cz0qeebM.js.map +0 -1
- package/studio-dist/server/chunks/graph-memory-bridge-CY8ft_d7.js.map +0 -1
- package/studio-dist/server/chunks/graph-memory-bridge2-Cd0XZwqc.js.map +0 -1
- package/studio-dist/server/chunks/handler-helpers-AANBGA_p.js.map +0 -1
- package/studio-dist/server/chunks/hash-Cm6yMET4.js.map +0 -1
- package/studio-dist/server/chunks/health-monitor-FepUZN1m.js.map +0 -1
- package/studio-dist/server/chunks/hooks.server-DBsyphiX.js.map +0 -1
- package/studio-dist/server/chunks/http-CRTZe306.js.map +0 -1
- package/studio-dist/server/chunks/identity-DRpurt56.js.map +0 -1
- package/studio-dist/server/chunks/identity2-DeAB5RXE.js.map +0 -1
- package/studio-dist/server/chunks/index-61916rmV.js.map +0 -1
- package/studio-dist/server/chunks/index-DAgVDouG.js.map +0 -1
- package/studio-dist/server/chunks/index-Dtt_h58T.js.map +0 -1
- package/studio-dist/server/chunks/index-server-DocJvixA.js.map +0 -1
- package/studio-dist/server/chunks/indexes-DZ52grq6.js.map +0 -1
- package/studio-dist/server/chunks/internal-xyE_opYp.js.map +0 -1
- package/studio-dist/server/chunks/json-Bfixam3g.js.map +0 -1
- package/studio-dist/server/chunks/lane-transition-lM2ngbbc.js.map +0 -1
- package/studio-dist/server/chunks/learnings-D6Y3YGMU.js.map +0 -1
- package/studio-dist/server/chunks/learnings2-MwBdR9vb.js.map +0 -1
- package/studio-dist/server/chunks/lifecycle-ops2-V2CR5-7X.js.map +0 -1
- package/studio-dist/server/chunks/list-BhObczvn.js.map +0 -1
- package/studio-dist/server/chunks/living-brain2-j0B_Ir8j.js.map +0 -1
- package/studio-dist/server/chunks/llm-backend-resolver-D4ANvUPL.js.map +0 -1
- package/studio-dist/server/chunks/llm-extraction-DVCu4heR.js.map +0 -1
- package/studio-dist/server/chunks/loadSharedConfigFiles-umvW7kuz.js.map +0 -1
- package/studio-dist/server/chunks/loadSso-iidd5iKx.js.map +0 -1
- package/studio-dist/server/chunks/local-model-fit-B0TxifnX.js.map +0 -1
- package/studio-dist/server/chunks/local-model-fit2-BMqo6GJm.js.map +0 -1
- package/studio-dist/server/chunks/lock-CA7d6lj7.js.map +0 -1
- package/studio-dist/server/chunks/logger-DQIoyZbq.js.map +0 -1
- package/studio-dist/server/chunks/memory-BUbicBbE.js.map +0 -1
- package/studio-dist/server/chunks/memory-accessor-i3P-RHSg.js.map +0 -1
- package/studio-dist/server/chunks/memory-accessor2-B981tHDR.js.map +0 -1
- package/studio-dist/server/chunks/memory-bridge-BOlEWg9w.js.map +0 -1
- package/studio-dist/server/chunks/memory-sqlite2-B7dq8doO.js.map +0 -1
- package/studio-dist/server/chunks/memory2-Cgc_4D5q.js.map +0 -1
- package/studio-dist/server/chunks/model-runner2-B71xjp4y.js.map +0 -1
- package/studio-dist/server/chunks/mvi-helpers-BNsJ8ZpQ.js.map +0 -1
- package/studio-dist/server/chunks/nexus-adapter-9EL_VlGI.js.map +0 -1
- package/studio-dist/server/chunks/nexus-plasticity-BTfU8cW_.js.map +0 -1
- package/studio-dist/server/chunks/nexus-risk-audit-p379-TU5.js.map +0 -1
- package/studio-dist/server/chunks/nexus-schema-zeygY8OD.js.map +0 -1
- package/studio-dist/server/chunks/nexus-schema2-DP0Qd7CA.js.map +0 -1
- package/studio-dist/server/chunks/nexus-sqlite-BVNIpwc7.js.map +0 -1
- package/studio-dist/server/chunks/nexus-sqlite2-BBfY2xnY.js.map +0 -1
- package/studio-dist/server/chunks/no-face-up-DcejJLy-.js.map +0 -1
- package/studio-dist/server/chunks/node-http-handler-CJI8kn7X.js.map +0 -1
- package/studio-dist/server/chunks/observe-Bo9veHGe.js.map +0 -1
- package/studio-dist/server/chunks/observe2-wzO0MaMY.js.map +0 -1
- package/studio-dist/server/chunks/observer-reflector-BwNOuq1d.js.map +0 -1
- package/studio-dist/server/chunks/observer-reflector2-ggtC1hmk.js.map +0 -1
- package/studio-dist/server/chunks/on-open-Wpcw7DV4.js.map +0 -1
- package/studio-dist/server/chunks/open-cleo-db--8sYNaYY.js.map +0 -1
- package/studio-dist/server/chunks/parseKnownFiles-Dg0pMFcT.js.map +0 -1
- package/studio-dist/server/chunks/parseUrl-qgGfl-Vh.js.map +0 -1
- package/studio-dist/server/chunks/paths-CV7S5-Zm.js.map +0 -1
- package/studio-dist/server/chunks/patterns-lh5kn13I.js.map +0 -1
- package/studio-dist/server/chunks/patterns2-CzIcT-ai.js.map +0 -1
- package/studio-dist/server/chunks/pipeline-stage-IB_pOft-.js.map +0 -1
- package/studio-dist/server/chunks/prediction-D1lSGJ4c.js.map +0 -1
- package/studio-dist/server/chunks/premature-close-audit-VG09uAco.js.map +0 -1
- package/studio-dist/server/chunks/project-context-BjiqfEBi.js.map +0 -1
- package/studio-dist/server/chunks/provider-registry2-Cu7rAF0R.js.map +0 -1
- package/studio-dist/server/chunks/quality-feedback-CuCGEI6S.js.map +0 -1
- package/studio-dist/server/chunks/quality-scoring-CCPuRQmJ.js.map +0 -1
- package/studio-dist/server/chunks/query-ops-DCrjbZb9.js.map +0 -1
- package/studio-dist/server/chunks/query-promise-BkPmGPJy.js.map +0 -1
- package/studio-dist/server/chunks/readFile-CxwXhymG.js.map +0 -1
- package/studio-dist/server/chunks/registry-CL2gN1zd.js.map +0 -1
- package/studio-dist/server/chunks/registry2-DoPYJnUW.js.map +0 -1
- package/studio-dist/server/chunks/registry3-BajEb-ll.js.map +0 -1
- package/studio-dist/server/chunks/registry4-DCqffZkT.js.map +0 -1
- package/studio-dist/server/chunks/retry-B3oEKYpp.js.map +0 -1
- package/studio-dist/server/chunks/role-executor-CC8BU54L.js.map +0 -1
- package/studio-dist/server/chunks/role-resolver-D9QaDT0e.js.map +0 -1
- package/studio-dist/server/chunks/role-resolver2-nkhzS1oy.js.map +0 -1
- package/studio-dist/server/chunks/rollup-CiefjN_Y.js.map +0 -1
- package/studio-dist/server/chunks/safety-data-accessor-CniDmGJO.js.map +0 -1
- package/studio-dist/server/chunks/service-connections-accessor-yBCdcgU-.js.map +0 -1
- package/studio-dist/server/chunks/session-factory-vbengc42.js.map +0 -1
- package/studio-dist/server/chunks/session-grade-BF4ZZtN_.js.map +0 -1
- package/studio-dist/server/chunks/session-journal-Bvey70Ur.js.map +0 -1
- package/studio-dist/server/chunks/session-narrative-BirZINSU.js.map +0 -1
- package/studio-dist/server/chunks/session-store--N_xHxUH.js.map +0 -1
- package/studio-dist/server/chunks/session-store2-DAM-eVTH.js.map +0 -1
- package/studio-dist/server/chunks/sessions-33DD4hkt.js.map +0 -1
- package/studio-dist/server/chunks/sessions2-BHswKRDP.js.map +0 -1
- package/studio-dist/server/chunks/sigil-B-RznFXz.js.map +0 -1
- package/studio-dist/server/chunks/sigil2-jRMG5DuR.js.map +0 -1
- package/studio-dist/server/chunks/signin-BAsW3mM8.js.map +0 -1
- package/studio-dist/server/chunks/sleep-consolidation-BnSwXrvq.js.map +0 -1
- package/studio-dist/server/chunks/spawn-cli-wI1lBJhm.js.map +0 -1
- package/studio-dist/server/chunks/specialists-B_ZbpQlK.js.map +0 -1
- package/studio-dist/server/chunks/sqlite-Bm5LzbPs.js.map +0 -1
- package/studio-dist/server/chunks/sqlite-backup-CFG1-b2e.js.map +0 -1
- package/studio-dist/server/chunks/sqlite-data-accessor-DD_RFX6r.js.map +0 -1
- package/studio-dist/server/chunks/sqlite-data-accessor2-CRmgNBnq.js.map +0 -1
- package/studio-dist/server/chunks/sqlite-native-BwlIqtbs.js.map +0 -1
- package/studio-dist/server/chunks/sqlite2-CUPut2fh.js.map +0 -1
- package/studio-dist/server/chunks/src-BUqGet2c.js.map +0 -1
- package/studio-dist/server/chunks/src2-DK8DKufK.js.map +0 -1
- package/studio-dist/server/chunks/src3-BJjf7XRG.js.map +0 -1
- package/studio-dist/server/chunks/src4-DNleK_t_.js.map +0 -1
- package/studio-dist/server/chunks/sso-oidc-eUvwseuL.js.map +0 -1
- package/studio-dist/server/chunks/storage-B9UA3BHR.js.map +0 -1
- package/studio-dist/server/chunks/stores-BcV2X8z1.js.map +0 -1
- package/studio-dist/server/chunks/sts-g7LDMLEd.js.map +0 -1
- package/studio-dist/server/chunks/surprisal-CwTfWQi8.js.map +0 -1
- package/studio-dist/server/chunks/surprisal-tree-7dfHsuw1.js.map +0 -1
- package/studio-dist/server/chunks/system-resolver2-Bzhue_zQ.js.map +0 -1
- package/studio-dist/server/chunks/tasks-SHX7UPGY.js.map +0 -1
- package/studio-dist/server/chunks/tasks-schema2-CTMoQKQy.js.map +0 -1
- package/studio-dist/server/chunks/tasks2-Bf9VHrv-.js.map +0 -1
- package/studio-dist/server/chunks/temporal-supersession-DP4GPG_B.js.map +0 -1
- package/studio-dist/server/chunks/token-cAhAD9f9.js.map +0 -1
- package/studio-dist/server/chunks/token-util-D6drEz8_.js.map +0 -1
- package/studio-dist/server/chunks/token-util2-8UPSGvbb.js.map +0 -1
- package/studio-dist/server/chunks/transcript-scanner-kJWhWmlg.js.map +0 -1
- package/studio-dist/server/chunks/transformers.node-_xbxmK5p.js.map +0 -1
- package/studio-dist/server/chunks/typed-query-l1D_QElt.js.map +0 -1
- package/studio-dist/server/chunks/ui-DR8zOSpC.js.map +0 -1
- package/studio-dist/server/chunks/unique-constraint-BZrrwgwc.js.map +0 -1
- package/studio-dist/server/chunks/update-B2YVBZG0.js.map +0 -1
- package/studio-dist/server/chunks/user-profile-B61ZhVmC.js.map +0 -1
- package/studio-dist/server/chunks/utils-BPSZyajG.js.map +0 -1
- package/studio-dist/server/chunks/validation-rules-CE27rtoF.js.map +0 -1
- package/studio-dist/server/chunks/zod-DsAeKNLm.js.map +0 -1
- package/studio-dist/server/index.js.map +0 -1
- package/studio-dist/server/manifest.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-model-fit2-BMqo6GJm.js","sources":["../../../.svelte-kit/adapter-node/chunks/system-resolver.js","../../../.svelte-kit/adapter-node/chunks/dream-cycle3.js","../../../.svelte-kit/adapter-node/chunks/hygiene-scan2.js","../../../.svelte-kit/adapter-node/chunks/daemon.js","../../../.svelte-kit/adapter-node/chunks/local-model-fit2.js"],"sourcesContent":["import { t as getLogger } from \"./logger.js\";\nimport { Mt as SYSTEM_ROLE_MAP } from \"./dist2.js\";\nimport { a as resolveLLMForRole, n as IMPLICIT_FALLBACK_PROVIDER } from \"./role-resolver.js\";\n//#region ../core/dist/llm/complexity-classifier.js\n/**\n* L1 complexity classifier — a prompt-complexity **tier proposer** for the E9\n* LLM chokepoint.\n*\n* ## What this is\n*\n* A faithful TypeScript port of the deleted Rust `cant-router` Layer-1\n* classifier (`crates/cant-router/src/features.rs` + `classifier.rs`, retired\n* in T11807 / D11137). It converts a raw prompt string into five auditable\n* heuristic features, scores them with a fixed linear model, and maps the\n* scalar score to a three-level complexity tier (`low` / `mid` / `high`).\n*\n* The classifier is a **proposer** that COMPLEMENTS — never replaces — the E9\n* resolver {@link resolveLLMForSystem}. The flow is:\n*\n* ```text\n* classifyComplexity(prompt) -> ComplexityTier ('low'|'mid'|'high')\n* complexityTierToRole(tier) -> RoleName (cheap → capable ladder)\n* resolveLLMForSystem({ kind:'role', id }) -> model + credential\n* ```\n*\n* So when a caller has NO explicit tier/role, it can derive one from the\n* prompt's complexity and feed it to the chokepoint.\n*\n* ## What this is NOT (Gate-13 LLM Chokepoint Guard — T11783)\n*\n* - It NEVER constructs a transport or SDK client.\n* - It NEVER reads `*_API_KEY` (no credential I/O at all).\n* - It NEVER hardcodes a model-id literal. The tier→model mapping is the E9\n* resolver's job; this module stops at proposing a {@link RoleName}.\n*\n* It returns a TIER (and, via the helper, a role). The provider, model, and\n* credential are resolved exclusively by {@link resolveLLMForSystem}.\n*\n* The classifier is a pure, deterministic function with no I/O and no module\n* side effects — safe to import anywhere in the chokepoint.\n*\n* @module llm/complexity-classifier\n* @task T11906\n* @epic T11745\n* @see {@link resolveLLMForSystem} — the E9 chokepoint this proposer feeds.\n*/\n/** Weight applied to the normalized `tokenCount` feature. */\nvar WEIGHT_TOKEN_COUNT = .15;\n/** Weight applied to the normalized `syntacticComplexity` feature. */\nvar WEIGHT_SYNTACTIC_COMPLEXITY = .25;\n/** Weight applied to the normalized `reasoningDepth` feature. */\nvar WEIGHT_REASONING_DEPTH = .3;\n/** Weight applied to the normalized `domainSpecificity` feature. */\nvar WEIGHT_DOMAIN_SPECIFICITY = .2;\n/** Weight applied to the normalized `touchesFilesCount` feature. */\nvar WEIGHT_TOUCHES_FILES_COUNT = .1;\n/**\n* Estimate syntactic complexity by counting nested bracket depth.\n*\n* Walks the string once tracking the running depth of `(`, `{`, `[` (and their\n* matching closers). The maximum depth observed is divided by 5 and clamped to\n* `[0.0, 1.0]`, so a prompt with no brackets scores 0 and one with 5+ nested\n* brackets scores 1.\n*\n* @param s - The raw prompt string.\n* @returns A syntactic-complexity score in `[0.0, 1.0]`.\n*/\nfunction estimateSyntacticComplexity(s) {\n\tlet depth = 0;\n\tlet maxDepth = 0;\n\tfor (const c of s) if (c === \"(\" || c === \"{\" || c === \"[\") {\n\t\tdepth += 1;\n\t\tif (depth > maxDepth) maxDepth = depth;\n\t} else if (c === \")\" || c === \"}\" || c === \"]\") depth = Math.max(depth - 1, 0);\n\treturn Math.min(maxDepth / 5, 1);\n}\n/**\n* Reasoning-signal keywords — terms that correlate with multi-step reasoning.\n*\n* Intentionally short and biased; ported verbatim from the Rust `KEYWORDS`\n* slice in `count_reasoning_keywords`.\n*/\nvar REASONING_KEYWORDS = [\n\t\"why\",\n\t\"should\",\n\t\"compare\",\n\t\"decide\",\n\t\"explain\",\n\t\"analyze\",\n\t\"evaluate\",\n\t\"consider\",\n\t\"trade-off\",\n\t\"tradeoff\"\n];\n/**\n* Count reasoning-signal keyword occurrences in the prompt (case-insensitive,\n* counting every (possibly overlapping-free) occurrence, matching the Rust\n* `str::matches` semantics).\n*\n* @param s - The raw prompt string.\n* @returns The total number of reasoning-keyword occurrences.\n*/\nfunction countReasoningKeywords(s) {\n\tconst lower = s.toLowerCase();\n\tlet total = 0;\n\tfor (const keyword of REASONING_KEYWORDS) {\n\t\tlet from = 0;\n\t\tfor (;;) {\n\t\t\tconst idx = lower.indexOf(keyword, from);\n\t\t\tif (idx === -1) break;\n\t\t\ttotal += 1;\n\t\t\tfrom = idx + keyword.length;\n\t\t}\n\t}\n\treturn total;\n}\n/**\n* Count the uppercase characters in a token (used by the CamelCase proxy).\n*\n* @param w - A single whitespace-delimited token.\n* @returns The number of uppercase characters in `w`.\n*/\nfunction uppercaseCount(w) {\n\tlet n = 0;\n\tfor (const c of w) if (c !== c.toLowerCase() && c === c.toUpperCase()) n += 1;\n\treturn n;\n}\n/**\n* Estimate domain specificity via CamelCase identifier density.\n*\n* Counts whitespace-delimited tokens containing at least two uppercase letters\n* (a rough proxy for domain-specific identifiers like `ModelSelection` or\n* `XDGBaseDir`). The count is divided by 10 and clamped to `[0.0, 1.0]`.\n*\n* @param s - The raw prompt string.\n* @returns A domain-specificity score in `[0.0, 1.0]`.\n*/\nfunction estimateDomainSpecificity(s) {\n\tconst camelCaseCount = splitWhitespace(s).filter((w) => uppercaseCount(w) >= 2).length;\n\treturn Math.min(camelCaseCount / 10, 1);\n}\n/**\n* Count file references in the prompt.\n*\n* A token is a file reference if it contains a `/` or ends in a known\n* source-file extension (`.rs`, `.ts`, `.md`, `.json`). Punctuation on the\n* token is left intact for v1 — callers aware of this limitation can pre-clean\n* their prompts.\n*\n* @param s - The raw prompt string.\n* @returns The number of file-reference tokens.\n*/\nfunction countFileReferences(s) {\n\treturn splitWhitespace(s).filter((w) => w.includes(\"/\") || w.endsWith(\".rs\") || w.endsWith(\".ts\") || w.endsWith(\".md\") || w.endsWith(\".json\")).length;\n}\n/**\n* Split a string on Unicode whitespace, dropping empty segments — matching\n* Rust's `str::split_whitespace` (which never yields empty tokens).\n*\n* @param s - The string to split.\n* @returns The non-empty whitespace-delimited tokens of `s`.\n*/\nfunction splitWhitespace(s) {\n\treturn s.split(/\\s+/).filter((w) => w.length > 0);\n}\n/**\n* Extract a {@link PromptFeatures} vector from a raw prompt string.\n*\n* Pure heuristics, no ML runtime — the Layer-1 input stage. Each field is a\n* small, auditable signal that feeds {@link classify}.\n*\n* @param prompt - The raw prompt string.\n* @returns The five-feature vector for `prompt`.\n*\n* @example\n* ```ts\n* const f = extractFeatures('Refactor auth.ts to use JWT tokens.');\n* f.tokenCount; // > 0\n* ```\n*/\nfunction extractFeatures(prompt) {\n\treturn {\n\t\ttokenCount: splitWhitespace(prompt).length,\n\t\tsyntacticComplexity: estimateSyntacticComplexity(prompt),\n\t\treasoningDepth: countReasoningKeywords(prompt),\n\t\tdomainSpecificity: estimateDomainSpecificity(prompt),\n\t\ttouchesFilesCount: countFileReferences(prompt)\n\t};\n}\n/**\n* Clamp a value to `[lo, hi]` — equivalent to Rust's `f64::clamp`. Returns `lo`\n* for `NaN`, matching the saturating intent of the original normalizers.\n*/\nfunction clamp(value, lo, hi) {\n\tif (Number.isNaN(value)) return lo;\n\treturn Math.min(Math.max(value, lo), hi);\n}\n/**\n* Normalize each feature to `[0.0, 1.0]` for the weighted sum.\n*\n* These normalization constants are the heuristic v1 defaults tuned against\n* the ULTRAPLAN §11.1 example ranges (not a labeled corpus). Ported verbatim\n* from the Rust `normalize_features`.\n*/\nfunction normalizeFeatures(f) {\n\treturn {\n\t\ttokenCount: Math.min(f.tokenCount / 1e3, 1),\n\t\tsyntacticComplexity: clamp(f.syntacticComplexity, 0, 1),\n\t\treasoningDepth: Math.min(f.reasoningDepth / 10, 1),\n\t\tdomainSpecificity: clamp(f.domainSpecificity, 0, 1),\n\t\ttouchesFilesCount: Math.min(f.touchesFilesCount / 20, 1)\n\t};\n}\n/**\n* Classify a feature vector into a {@link Classification} result.\n*\n* Applies the linear weighted sum from ULTRAPLAN §11.1 and maps the resulting\n* score to a tier via {@link THRESHOLD_HIGH} and {@link THRESHOLD_MID}. The\n* input {@link PromptFeatures} is preserved so downstream consumers can inspect\n* the raw signals that produced the decision.\n*\n* @param features - The five-feature vector to score.\n* @returns The score, tier, and preserved feature vector.\n*/\nfunction classify(features) {\n\tconst normalized = normalizeFeatures(features);\n\tconst score = WEIGHT_TOKEN_COUNT * normalized.tokenCount + WEIGHT_SYNTACTIC_COMPLEXITY * normalized.syntacticComplexity + WEIGHT_REASONING_DEPTH * normalized.reasoningDepth + WEIGHT_DOMAIN_SPECIFICITY * normalized.domainSpecificity + WEIGHT_TOUCHES_FILES_COUNT * normalized.touchesFilesCount;\n\treturn {\n\t\tscore,\n\t\ttier: score >= .75 ? \"high\" : score >= .35 ? \"mid\" : \"low\",\n\t\tfeatures\n\t};\n}\n/**\n* Classify a raw prompt into a complexity {@link ComplexityTier}.\n*\n* The one-call entry point: `extractFeatures` → `classify` → tier. This is the\n* **proposer** half of the L1 router — it stops at a tier and never touches a\n* model, transport, or credential (Gate-13 compliant).\n*\n* @param prompt - The raw prompt string to classify.\n* @returns The proposed complexity tier (`low` / `mid` / `high`).\n*\n* @example\n* ```ts\n* classifyComplexity('list files'); // 'low'\n* classifyComplexity('Why should we compare these and decide the trade-off?'); // 'mid'+\n* ```\n*/\nfunction classifyComplexity(prompt) {\n\treturn classify(extractFeatures(prompt)).tier;\n}\n/**\n* Map a complexity {@link ComplexityTier} to the {@link RoleName} that\n* {@link resolveLLMForSystem} should resolve when no explicit tier/role was\n* given.\n*\n* This is the wiring contract (AC2) that lets a tier flow into the E9\n* chokepoint: the classifier proposes a tier, this maps it to a role, and\n* `resolveLLMForSystem({ kind: 'role', id })` performs the actual model +\n* credential resolution. The mapping is a cheap → capable ladder over the\n* canonical {@link RoleName} set — it pins NO model literal of its own.\n*\n* - `low` → `hygiene` — cheapest single-turn cleanup-class role.\n* - `mid` → `consolidation` — the default workhorse role.\n* - `high` → `judgement` — the most-capable reasoning role.\n*\n* @param tier - The proposed complexity tier.\n* @returns The {@link RoleName} to feed into the E9 resolver.\n*/\nfunction complexityTierToRole(tier) {\n\tswitch (tier) {\n\t\tcase \"low\": return \"hygiene\";\n\t\tcase \"mid\": return \"consolidation\";\n\t\tcase \"high\": return \"judgement\";\n\t}\n}\n/**\n* Propose the {@link RoleName} for a raw prompt by classifying its complexity\n* and mapping the resulting tier to a role.\n*\n* Convenience composition of {@link classifyComplexity} and\n* {@link complexityTierToRole} — the single call a caller uses to derive a role\n* for {@link resolveLLMForSystem} when it has no explicit tier/role.\n*\n* The returned role is intended to be passed as the structured descriptor:\n* `resolveLLMForSystem({ kind: 'role', id: proposeRoleForPrompt(prompt) })`.\n*\n* @param prompt - The raw prompt string.\n* @returns The proposed {@link RoleName} for the E9 chokepoint.\n*\n* @example\n* ```ts\n* import { proposeRoleForPrompt } from './complexity-classifier.js';\n* import { resolveLLMForSystem } from './system-resolver.js';\n*\n* const role = proposeRoleForPrompt(userPrompt);\n* const llm = await resolveLLMForSystem({ kind: 'role', id: role }, { projectRoot });\n* ```\n*/\nfunction proposeRoleForPrompt(prompt) {\n\treturn complexityTierToRole(classifyComplexity(prompt));\n}\n//#endregion\n//#region ../core/dist/llm/system-resolver.js\n/**\n* `resolveLLMForSystem` — the single DRY chokepoint for all LLM resolution (E9).\n*\n* ## Purpose\n*\n* CLEO previously had a 4-resolver / 3-picker sprawl: `resolveLLMForRole`,\n* `resolveAnthropicForRole`, `resolveCredentials`, and several inline `pickX`\n* helpers each duplicated the implicit fallback model literal or called different\n* tiers of the resolution chain independently.\n*\n* `resolveLLMForSystem` is the ONE chokepoint that:\n*\n* 1. Accepts a semantic \"system of use\" label (e.g. `'sentient'`, `'memory'`)\n* instead of raw role names — insulating call-sites from config vocabulary.\n* 2. Maps the system label to the canonical {@link RoleName} via\n* {@link SYSTEM_ROLE_MAP} (overridable by `opts.roleOverride`).\n* 3. Delegates to `resolveLLMForRole` for the full 5-tier config +\n* CredentialPool resolution chain — no duplication.\n* 4. When resolution lands on `implicit-fallback`, replaces the hardcoded\n* haiku literal with the SSoT default model from the provider registry\n* (`getProviderProfile(provider).defaultModel`) — satisfying the\n* \"not hardcoded\" acceptance criterion.\n*\n* ## What this is NOT\n*\n* - A replacement for `resolveLLMForRole`. Existing callers of\n* `resolveLLMForRole` continue to work unchanged; T11757 will migrate them\n* to this chokepoint incrementally.\n* - A new credential store or provider registry. All credential I/O goes\n* through the existing CredentialPool (E3 pool) inside `resolveLLMForRole`.\n*\n* @module llm/system-resolver\n* @task T11749\n* @epic T11745\n*/\nvar logger = getLogger(\"llm-system-resolver\");\n/**\n* Type guard: is `input` the structured {@link RoleSystem} descriptor form\n* (`{ kind: 'role', id: RoleName }`) rather than a flat {@link SystemOfUseLabel}?\n*\n* A flat label is always a `string`; the descriptor is the only object form the\n* chokepoint accepts — so a single `typeof === 'object'` test is sufficient and\n* narrows `input` to {@link RoleSystem}.\n*\n* @task T11750\n*/\nfunction isRoleSystem(input) {\n\treturn typeof input === \"object\" && input !== null && input.kind === \"role\";\n}\n/**\n* Map a {@link SystemResolverInput} to the {@link RoleName} that\n* `resolveLLMForRole` will use for config lookup.\n*\n* Priority:\n* 1. `opts.roleOverride` — explicit caller override (both input forms).\n* 2. Structured {@link RoleSystem} descriptor → its `id` IS the role (T11750).\n* 3. {@link SYSTEM_ROLE_MAP} — static default for the flat system label.\n* 4. L1 complexity proposer (T11906) — when the label maps to NO role AND a\n* `complexityPrompt` was supplied, classify it and propose a role from the\n* resulting tier. This is the \"derive a tier from prompt complexity when no\n* explicit tier/role is given\" wiring (AC2): it COMPLEMENTS the resolver,\n* only filling in a role the input left blank. The classifier returns a\n* tier and constructs no LLM client.\n*\n* Returns `null` when a flat label maps to the global default (no role entry)\n* and no `complexityPrompt` was supplied. The descriptor form always carries a\n* concrete {@link RoleName}, so it never returns `null`.\n*/\nfunction deriveRole(input, opts) {\n\tif (opts?.roleOverride) return opts.roleOverride;\n\tif (isRoleSystem(input)) return input.id;\n\tconst mapped = SYSTEM_ROLE_MAP[input] ?? null;\n\tif (mapped !== null) return mapped;\n\tif (opts?.complexityPrompt !== void 0) {\n\t\tconst proposed = proposeRoleForPrompt(opts.complexityPrompt);\n\t\tlogger.debug({\n\t\t\tsystem: input,\n\t\t\tproposedRole: proposed\n\t\t}, \"system-resolver: derived role from L1 complexity classifier (no explicit tier/role)\");\n\t\treturn proposed;\n\t}\n\treturn null;\n}\n/**\n* When `resolveLLMForRole` returns `source === 'implicit-fallback'`, the model is\n* the hardcoded `IMPLICIT_FALLBACK_MODEL` literal. This function derives the\n* default from the **`models_catalog` SSoT** (latest `release_date` for the\n* provider) so the resolved model tracks the catalog rather than a frozen\n* constant — the \"catalog-driven models, NO hardcoded\" North Star (E8 · T11944).\n*\n* ## Resolution order (offline-first degrade — T11944 AC1/AC2)\n*\n* 1. **`models_catalog` table** (via the {@link resolveCatalogEntry} table-first\n* chokepoint — T11737): newest `release_date` row for the provider. When the\n* table is seeded this WINS and the static builtin literal is never reached.\n* 2. **provider-registry `defaultModel`** (the static builtin\n* `ProviderDef.defaultModel`) — reached ONLY when the catalog (table + disk\n* cache + shipped seed) yields nothing for the provider.\n* 3. **the existing `IMPLICIT_FALLBACK_MODEL` literal** already on `resolved` —\n* the absolute offline floor, preserved for a fresh/offline install with no\n* catalog AND no provider profile (degrade does NOT break — AC2).\n*\n* NO network is issued at resolve time (table-or-cache only — AC4). On any lookup\n* error the original `resolved` envelope is returned unchanged so the caller is\n* never blocked.\n*\n* @param resolved - The envelope returned by `resolveLLMForRole`.\n* @returns The same envelope, possibly with `model` replaced from the catalog SSoT.\n*/\nasync function upgradeCatalogDefault(resolved) {\n\tif (resolved.source !== \"implicit-fallback\") return resolved;\n\ttry {\n\t\tconst { resolveCatalogEntry } = await import(\"./catalog-resolver2.js\");\n\t\tconst { catalogKeyForProvider } = await import(\"./catalog-model-resolver.js\");\n\t\tconst entry = await resolveCatalogEntry(catalogKeyForProvider(resolved.provider));\n\t\tif (entry?.id && entry.id !== resolved.model) {\n\t\t\tlogger.debug({\n\t\t\t\tprovider: resolved.provider,\n\t\t\t\tfrom: resolved.model,\n\t\t\t\tto: entry.id,\n\t\t\t\tsource: entry.source\n\t\t\t}, \"system-resolver: upgrading implicit-fallback model to models_catalog default\");\n\t\t\treturn {\n\t\t\t\t...resolved,\n\t\t\t\tmodel: entry.id\n\t\t\t};\n\t\t}\n\t\tif (entry?.id) return resolved;\n\t\tconst { getProviderProfile } = await import(\"./provider-registry2.js\");\n\t\tconst profile = await getProviderProfile(resolved.provider);\n\t\tif (profile?.defaultModel && profile.defaultModel !== resolved.model) {\n\t\t\tlogger.debug({\n\t\t\t\tprovider: resolved.provider,\n\t\t\t\tfrom: resolved.model,\n\t\t\t\tto: profile.defaultModel\n\t\t\t}, \"system-resolver: catalog empty — degrading to static builtin defaultModel floor\");\n\t\t\treturn {\n\t\t\t\t...resolved,\n\t\t\t\tmodel: profile.defaultModel\n\t\t\t};\n\t\t}\n\t\treturn resolved;\n\t} catch (err) {\n\t\tlogger.warn({ err: err instanceof Error ? err.message : String(err) }, \"system-resolver: catalog default lookup failed; keeping existing fallback model\");\n\t\treturn resolved;\n\t}\n}\n/**\n* Resolve the LLM client + credential for a semantic system-of-use label OR a\n* structured {@link RoleSystem} descriptor.\n*\n* This is the single DRY chokepoint for all LLM resolution in CLEO (E9 ·\n* T11745). It wraps `resolveLLMForRole` with:\n*\n* - System label → role mapping (via {@link SYSTEM_ROLE_MAP}); OR direct\n* `{ kind: 'role', id }` descriptor resolution (T11750 · AC1).\n* - SSoT default model from the provider registry when `implicit-fallback`\n* is reached (the hardcoded haiku literal is NOT used as the final model).\n* - Full CredentialPool (E3) binding via `resolveLLMForRole` delegation.\n*\n* ## Role equivalence (T11750 · AC1)\n*\n* `resolveLLMForSystem({ kind: 'role', id })` is the chokepoint expression of a\n* direct role resolution — identical to `resolveLLMForRole(id)` for every\n* resolution-relevant field (`provider` / `model` / `source` / `credential` /\n* `sealedCredential` / `apiMode` / …), differing ONLY by the additive `system`\n* + `resolvedRole` envelope fields. There is exactly ONE resolution\n* implementation (`resolveLLMForRole`); both input forms funnel through it with\n* ZERO duplicated logic. The descriptor form does NOT thread a `systemKey`\n* (there is no flat label to key the `llm.systems[key]` override tier on), so it\n* walks the same tier chain a bare `resolveLLMForRole(id)` call walks.\n*\n* Like `resolveLLMForRole`, this function **never throws**: when no credential\n* is reachable the caller receives `{ credential: null, client: null, … }` and\n* is responsible for its own graceful-degradation path.\n*\n* @example\n* ```ts\n* // Flat label (background subsystem):\n* const a = await resolveLLMForSystem('sentient', { projectRoot });\n* // Structured role descriptor (T11750 · AC1) — equivalent to\n* // resolveLLMForRole('consolidation'):\n* const b = await resolveLLMForSystem({ kind: 'role', id: 'consolidation' }, { projectRoot });\n* if (!a.sealedCredential || !a.client) {\n* return null; // graceful no-op — no credential available\n* }\n* // Use resolved.model, resolved.client, resolved.credential (metadata only);\n* // materialize the secret at the wire via resolved.sealedCredential.fetch().\n* ```\n*\n* @param system - Flat {@link SystemOfUseLabel} or {@link RoleSystem} descriptor.\n* @param opts - Optional overrides (project root, role override, skipCatalogDefault).\n* @returns A {@link ResolvedLLMForSystem} envelope; never throws.\n*\n* @task T11749\n* @task T11750\n* @epic T11745\n*/\nasync function resolveLLMForSystem(system, opts) {\n\tconst resolvedRole = deriveRole(system, opts);\n\tconst roleForResolution = resolvedRole ?? \"consolidation\";\n\tconst systemKey = opts?.systemKey ?? (isRoleSystem(system) ? void 0 : system);\n\tlet base;\n\ttry {\n\t\tbase = await resolveLLMForRole(roleForResolution, {\n\t\t\tprojectRoot: opts?.projectRoot,\n\t\t\tsystemKey,\n\t\t\t...opts?.profile !== void 0 ? { profileOverride: opts.profile } : {},\n\t\t\t...opts?.excludeProviders !== void 0 ? { excludeProviders: opts.excludeProviders } : {}\n\t\t});\n\t} catch (err) {\n\t\tlogger.warn({\n\t\t\terr: err instanceof Error ? err.message : String(err),\n\t\t\tsystem,\n\t\t\trole: roleForResolution\n\t\t}, \"system-resolver: resolveLLMForRole threw unexpectedly; returning null-credential envelope\");\n\t\tbase = {\n\t\t\tprovider: IMPLICIT_FALLBACK_PROVIDER,\n\t\t\tmodel: \"unknown\",\n\t\t\tclient: null,\n\t\t\tcredential: null,\n\t\t\tsealedCredential: null,\n\t\t\tsource: \"implicit-fallback\",\n\t\t\tapiMode: \"anthropic_messages\",\n\t\t\tbaseUrl: null,\n\t\t\tauthType: null\n\t\t};\n\t}\n\treturn {\n\t\t...opts?.skipCatalogDefault ? base : await upgradeCatalogDefault(base),\n\t\tsystem,\n\t\tresolvedRole\n\t};\n}\n//#endregion\nexport { resolveLLMForSystem as t };\n","import { c as IMPLICIT_FALLBACK_MODEL } from \"./config.js\";\nimport { i as resolveAnthropicForRole } from \"./role-resolver.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { z } from \"zod\";\n//#region ../core/dist/sentient/dream-watermark.js\n/**\n* Incremental + adaptive consolidation policy for the dream cycle (T12088).\n*\n* ## What was fixed\n*\n* The collector was a fixed window with no memory of its own progress:\n*\n* ```sql\n* WHERE created_at >= (now - 24h) ORDER BY created_at ASC LIMIT 2000\n* ```\n*\n* Three consequences, all observed live on 2026-08-06:\n*\n* 1. **Every run redid the previous run's work.** Consecutive cycles collected\n* 25 → 28 → 30 → 36 → 37 observations — the same material re-clustered and\n* re-sent to the LLM each time. Dedup at the storage gate hid it, so the\n* waste was invisible while consuming the entire LLM budget of every pass.\n*\n* 2. **Anything older than the window was consolidated NEVER.** Not \"later\" —\n* never. The sentient loop was dead for three months; every observation from\n* that period aged out of the 24 h window unread and became permanently\n* invisible to consolidation. A memory system whose intake silently expires\n* is not an \"ever-growing memory\".\n*\n* 3. **A fixed `clusterMinSize: 5` meant a new project could not learn.** A\n* freshly dropped-in CLEO has a handful of observations, never 5 similar\n* ones, so the cycle completed with `memoriesStored: 0` indefinitely. The\n* goal is that CLEO learns \"like an infant to expert\"; the threshold was set\n* for the expert end and blocked the infant end entirely.\n*\n* ## The policy\n*\n* - **Watermark.** Consolidation records the newest `createdAt` it processed.\n* The next run starts there, so work is never repeated.\n* - **The watermark widens, never narrows.** When it is older than the nominal\n* lookback (daemon was off), the window reaches back to it instead of\n* clamping to `now - 24h`. A gap is caught up, not dropped.\n* - **First run has no watermark**, so it uses the nominal lookback — existing\n* behaviour, unchanged.\n* - **Adaptive minimum cluster size** scales with how much the project has\n* actually observed, so a young project consolidates pairs while a mature one\n* still demands real repetition before promoting a memory.\n*\n* @task T12088\n*/\n/** Nominal lookback when no watermark exists yet (24 h). */\nvar DEFAULT_NOMINAL_LOOKBACK_MS = 1440 * 60 * 1e3;\n/**\n* Hard ceiling on how far back a catch-up pass will reach (30 days).\n*\n* Without a bound, a watermark from months ago would pull an entire corpus into\n* one pass and spend the whole LLM budget on the first tick after a long\n* outage. Older material belongs to an explicit backfill, not a background tick.\n*/\nvar MAX_CATCHUP_LOOKBACK_MS = 720 * 60 * 60 * 1e3;\n/**\n* Resolve the effective lookback for this pass.\n*\n* @param watermark - ISO timestamp of the newest observation already\n* consolidated, or `null` on a first run.\n* @param nominalMs - the configured window (default 24 h).\n* @param nowMs - current time in ms (injected for determinism in tests).\n* @returns the lookback to use, always ≥ `nominalMs` and ≤\n* {@link MAX_CATCHUP_LOOKBACK_MS}.\n*\n* @example\n* ```ts\n* // Daemon off for 5 days → widen to 5 days rather than losing 4 of them.\n* resolveLookbackMs('2026-08-01T00:00:00Z', DAY, Date.parse('2026-08-06T00:00:00Z'));\n* // → 5 * DAY\n* ```\n*\n* @task T12088\n*/\nfunction resolveLookbackMs(watermark, nominalMs = DEFAULT_NOMINAL_LOOKBACK_MS, nowMs = Date.now()) {\n\tif (watermark === null) return nominalMs;\n\tconst marked = Date.parse(watermark);\n\tif (Number.isNaN(marked)) return nominalMs;\n\tconst widened = Math.max(nominalMs, nowMs - marked);\n\treturn Math.min(widened, MAX_CATCHUP_LOOKBACK_MS);\n}\n/**\n* Minimum cluster size appropriate to the size of the observation corpus.\n*\n* @param totalObservations - how many observations exist in the window.\n* @returns a value in `[MIN_ADAPTIVE_CLUSTER_SIZE, MAX_ADAPTIVE_CLUSTER_SIZE]`.\n*\n* @example\n* ```ts\n* adaptiveClusterMinSize(6); // → 2 (a young project can still learn)\n* adaptiveClusterMinSize(30); // → 3\n* adaptiveClusterMinSize(500); // → 5 (mature: demand real repetition)\n* ```\n*\n* @task T12088\n*/\nfunction adaptiveClusterMinSize(totalObservations) {\n\tif (totalObservations <= 0) return 5;\n\tconst scaled = Math.floor(totalObservations / 10);\n\treturn Math.min(5, Math.max(2, scaled));\n}\n/**\n* Drop observations at or before the watermark.\n*\n* Applied AFTER collection so the widened window still supplies clustering\n* context, while synthesis effort concentrates on what is genuinely new. The\n* comparison is on the ISO `createdAt` string, which sorts lexicographically\n* for a fixed format — the same ordering the collector's `ORDER BY` relies on.\n*\n* @param observations - collected observations, any order.\n* @param watermark - ISO timestamp already consolidated, or `null`.\n* @returns observations strictly newer than the watermark.\n*\n* @task T12088\n*/\nfunction selectUnconsolidated(observations, watermark) {\n\tif (watermark === null) return [...observations];\n\treturn observations.filter((o) => o.createdAt > watermark);\n}\n/**\n* The newest `createdAt` in a batch — the watermark to persist after a pass.\n*\n* @param observations - observations processed in this pass.\n* @returns the max ISO timestamp, or `null` for an empty batch, leaving any\n* existing watermark untouched so a no-op pass cannot advance progress past\n* material it never read.\n*\n* @task T12088\n*/\nfunction nextWatermark(observations) {\n\tlet max = null;\n\tfor (const o of observations) if (max === null || o.createdAt > max) max = o.createdAt;\n\treturn max;\n}\n//#endregion\n//#region ../core/dist/sentient/dream-cycle.js\n/**\n* Sentient Dream Cycle — Real LLM-backed BRAIN observation synthesis (T1680).\n*\n* Implements autonomous cognitive dreaming: periodically collecting recent BRAIN\n* observations, clustering them by topic similarity, and calling an LLM to\n* extract durable memories (decisions, patterns, learnings, constraints) from\n* each cluster. Extracted memories are routed through the existing\n* `verifyAndStore` gate in extraction-gate.ts — NO new pipeline.\n*\n* ## Cycle (default every 4 hours):\n*\n* 1. **Collect** — query last 24 h of brain_observations across types\n* (`hygiene:*`, `session:*`, `decision:*`, `pattern:*`).\n* 2. **Cluster** — Jaccard similarity on n-gram overlap (title+narrative).\n* If `brain.embeddings` available, vector similarity is preferred.\n* 3. **Synthesise** — for each cluster of ≥ DREAM_CLUSTER_MIN_SIZE\n* observations, call the daemon LLM with a structured-output schema\n* (`{decisions, patterns, learnings, constraints}`) mirroring the\n* llm-extraction.ts pattern exactly.\n* 4. **Verify-and-store** — route each extracted memory through the\n* existing `verifyAndStore` gate (extraction-gate.ts).\n* 5. **Digest** — store a summary as a BRAIN observation tagged\n* `sentient:dream-cycle-<runId>`.\n*\n* Wire-in: `safeRunTick` fires `maybeTriggerDreamCycle` every\n* `DREAM_CYCLE_INTERVAL_MS` (default 4 h). The trigger is fire-and-forget\n* so it never blocks the tick outcome.\n*\n* LLM provider: reads `llm.daemon.provider` and `llm.daemon.model` from the\n* global `~/.cleo/config.json` via `getRawConfigValue`. Credentials resolved\n* via `resolveLLMForRole('consolidation')` (T9255 — Phase 2 role-based routing).\n*\n* ## Test injection\n*\n* Every side-effecting dependency is injectable via `DreamCycleOptions`:\n* - `client` — Anthropic client stub (no real network in tests)\n* - `collectObservations` — override the DB query\n* - `observeMemory` — override the BRAIN write\n* - `verifyAndStoreFn` — override the extraction gate\n* - `isKilled` — kill-switch check\n* - `dreamCycleIntervalMs = 0` — forces trigger every tick\n* - `dreamCycle = null` — disables entirely\n*\n* @task T1680\n* @epic T1676\n* @see packages/core/src/memory/llm-extraction.ts — pattern mirrored exactly\n* @see packages/core/src/sentient/hygiene-scan.ts — safe wrapper pattern\n* @see packages/core/src/sentient/stage-drift-tick.ts — interval-gate pattern\n*/\n/**\n* How far back (ms) to look for BRAIN observations to cluster.\n* Default: last 24 hours.\n*/\nvar DREAM_LOOKBACK_MS = 1440 * 60 * 1e3;\n/**\n* Upper bound on the provider-liveness probe issued while resolving a dream\n* client (T12082).\n*\n* A provider with a dead credential does not fail fast — the transport retries\n* with backoff, so an unbounded probe blocks the entire consolidation pass\n* behind a chain that will never succeed. Background work must degrade, not\n* hang: a provider that cannot answer a 16-token ping in this window is not\n* usable for consolidation regardless of what it eventually returns.\n*/\nvar DREAM_PROBE_TIMEOUT_MS = 2e4;\n/**\n* Jaccard similarity threshold above which two observations are placed in\n* the same cluster. Value in [0, 1]. Higher = tighter clusters.\n*/\nvar DREAM_JACCARD_THRESHOLD = .15;\n/**\n* Default daemon LLM model when no `llm.roles.consolidation`, `llm.default`,\n* nor `llm.daemon` entry is configured. Re-exported for tests + downstream\n* code that historically relied on this constant — sourced from\n* `IMPLICIT_FALLBACK_MODEL` (T9255) so there is exactly one literal.\n*/\nvar DREAM_DEFAULT_MODEL = IMPLICIT_FALLBACK_MODEL;\n/**\n* Minimum importance score for extracted memories to be stored.\n* Below this threshold, memories are dropped.\n*/\nvar DREAM_MIN_IMPORTANCE = .6;\nvar DreamExtractedMemorySchema = z.object({\n\ttype: z.enum([\n\t\t\"decision\",\n\t\t\"pattern\",\n\t\t\"learning\",\n\t\t\"constraint\"\n\t]),\n\tcontent: z.string().min(1).max(500),\n\timportance: z.number().min(0).max(1),\n\tentities: z.array(z.string()).max(20),\n\tjustification: z.string().min(1).max(200)\n});\nvar DreamSynthesisResponseSchema = z.object({ memories: z.array(DreamExtractedMemorySchema).max(15) });\n/**\n* Query brain_observations created within the last `lookbackMs` milliseconds.\n*\n* Pulls across all type tags — the clustering step will group by topic.\n* Returns an empty array when the DB is unavailable.\n*/\nasync function defaultCollectObservations(projectRoot, lookbackMs) {\n\ttry {\n\t\tconst { getBrainDb, getBrainNativeDb } = await import(\"./memory-sqlite2.js\");\n\t\tawait getBrainDb(projectRoot);\n\t\tconst db = getBrainNativeDb(projectRoot);\n\t\tif (!db) return [];\n\t\tconst cutoff = new Date(Date.now() - lookbackMs).toISOString().replace(\"T\", \" \").slice(0, 19);\n\t\treturn db.prepare(`SELECT id, title, narrative, created_at, type\n FROM brain_observations\n WHERE created_at >= ?\n AND invalid_at IS NULL\n ORDER BY created_at ASC\n LIMIT 2000`).all(cutoff).map((row) => ({\n\t\t\tid: row.id,\n\t\t\ttitle: row.title ?? \"\",\n\t\t\tnarrative: row.narrative ?? \"\",\n\t\t\tcreatedAt: row.created_at,\n\t\t\tobservationType: row.type ?? \"\"\n\t\t}));\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Produce word-level unigrams from a string (title + narrative).\n* Normalises to lowercase, strips punctuation, filters short tokens.\n*/\nfunction extractNgrams(text) {\n\tconst words = text.toLowerCase().replace(/[^a-z0-9\\s]/g, \" \").split(/\\s+/).filter((w) => w.length >= 4);\n\treturn new Set(words);\n}\n/**\n* Compute Jaccard similarity between two sets.\n* Returns 0 for empty sets.\n*/\nfunction jaccardSimilarity(a, b) {\n\tif (a.size === 0 && b.size === 0) return 1;\n\tif (a.size === 0 || b.size === 0) return 0;\n\tlet intersection = 0;\n\tfor (const word of a) if (b.has(word)) intersection++;\n\tconst union = a.size + b.size - intersection;\n\treturn union === 0 ? 0 : intersection / union;\n}\n/**\n* Cluster observations using greedy single-linkage Jaccard clustering.\n*\n* Algorithm:\n* 1. Pre-compute n-gram sets for each observation.\n* 2. For each observation (in order), find the first existing cluster\n* whose representative (first member) has Jaccard ≥ threshold.\n* 3. If no match, start a new cluster.\n*\n* Complexity: O(n²) in the worst case — acceptable for ≤ 2000 observations.\n* For large observation sets the lookback window itself limits n.\n*\n* @param observations - Collected observations.\n* @param threshold - Jaccard threshold for cluster membership.\n* @returns Array of clusters, each with ≥ 1 member.\n*/\nfunction clusterByJaccard(observations, threshold) {\n\tif (observations.length === 0) return [];\n\tconst ngramSets = observations.map((o) => extractNgrams(`${o.title} ${o.narrative}`));\n\tconst clusterBuckets = [];\n\tconst clusterRepNgrams = [];\n\tfor (let i = 0; i < observations.length; i++) {\n\t\tconst ngrams = ngramSets[i];\n\t\tlet assigned = false;\n\t\tfor (let c = 0; c < clusterBuckets.length; c++) {\n\t\t\tconst repNgrams = clusterRepNgrams[c];\n\t\t\tif (jaccardSimilarity(ngrams, repNgrams) >= threshold) {\n\t\t\t\tclusterBuckets[c].push(i);\n\t\t\t\tassigned = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!assigned) {\n\t\t\tclusterBuckets.push([i]);\n\t\t\tclusterRepNgrams.push(ngrams);\n\t\t}\n\t}\n\treturn clusterBuckets.map((bucket, idx) => {\n\t\tconst members = bucket.map((i) => observations[i]);\n\t\tconst freq = /* @__PURE__ */ new Map();\n\t\tfor (const i of bucket) for (const w of ngramSets[i]) freq.set(w, (freq.get(w) ?? 0) + 1);\n\t\treturn {\n\t\t\tindex: idx,\n\t\t\tobservations: members,\n\t\t\ttopicLabel: [...freq.entries()].sort((a, b) => b[1] - a[1]).slice(0, 5).map(([w]) => w).join(\", \") || `cluster-${idx}`\n\t\t};\n\t});\n}\nvar DREAM_SYSTEM_PROMPT = `You are synthesising durable knowledge from a set of related BRAIN observations.\nThese observations were automatically collected during a sentient daemon dream cycle.\n\nYour goal: extract high-value, durable knowledge that should be remembered long-term.\nReject noise, routine status messages, and transient state.\n\nFor each extraction provide:\n- type: decision|pattern|learning|constraint\n- content: the knowledge itself (<=500 chars, declarative form)\n- importance: 0.0-1.0 (only >=0.6 will be stored)\n- entities: code symbols, files, concepts mentioned\n- justification: why this is worth remembering (<=200 chars)\n\nType definitions:\n- decision: architectural or design choice with rationale (\"We chose X because Y\")\n- pattern: recurring approach that works (\"When X, do Y because Z\")\n- learning: factual knowledge gained (\"X depends on Y via Z\")\n- constraint: rule/limitation discovered (\"X must always Y\")\n\nRules:\n- Capture the WHY, not just the WHAT\n- If nothing of durable value exists, return an empty array\n- Prefer fewer high-quality extractions over many low-quality ones\n- Maximum 10 extractions per cluster`;\nfunction buildDreamUserPrompt(cluster) {\n\tconst observationTexts = cluster.observations.map((o, i) => `[${i + 1}] ${o.title || \"(no title)\"} (${o.observationType || \"observation\"})\\n${o.narrative || \"(no content)\"}`).join(\"\\n\\n---\\n\\n\");\n\treturn `Topic cluster: \"${cluster.topicLabel}\"\nCluster contains ${cluster.observations.length} related observation(s).\n\nObservations:\n${observationTexts}\n\nExtract durable knowledge from these observations. Return empty array if nothing valuable.`;\n}\n/**\n* Resolve the LLM client + model for the dream cycle via\n* `resolveAnthropicForRole('consolidation')` (T9255 + T-LLM-CRED Phase 2\n* DRY review P2-1).\n*\n* The helper walks `config.llm.roles.consolidation` → `config.llm.default`\n* → `config.llm.daemon` → implicit fallback. Dream cycle currently only\n* supports Anthropic (same SDK as llm-extraction.ts); the helper returns\n* `null` for non-anthropic resolutions so the cycle records `no-api-key`\n* and skips synthesis without breaking the kill-switch / digest paths.\n*\n* @returns `{ client, model }` or `null` when no usable credential exists.\n*/\nasync function resolveDreamLlm(projectRoot) {\n\tconst anthropic = await resolveAnthropicForRole(\"consolidation\", { projectRoot });\n\tif (anthropic) return {\n\t\tclient: anthropic.client,\n\t\tmodel: anthropic.model\n\t};\n\ttry {\n\t\tconst { executeForRole } = await import(\"./role-executor2.js\");\n\t\tconst probe = await executeForRole(\"consolidation\", \"ping\", \"ping\", {\n\t\t\tprojectRoot,\n\t\t\tmaxTokens: 16,\n\t\t\tsignal: AbortSignal.timeout(DREAM_PROBE_TIMEOUT_MS)\n\t\t});\n\t\tif (probe) return {\n\t\t\tclient: { messages: { create: async (body) => {\n\t\t\t\tconst userContent = body.messages.filter((m) => m.role === \"user\").map((m) => m.content).join(\"\\n\\n\");\n\t\t\t\treturn { content: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: (await executeForRole(\"consolidation\", body.system ?? \"\", userContent, { projectRoot }))?.content ?? \"\"\n\t\t\t\t}] };\n\t\t\t} } },\n\t\t\tmodel: probe.model\n\t\t};\n\t} catch {}\n\ttry {\n\t\tconst { detectLocalInference } = await import(\"./local-inference-probe.js\");\n\t\tconst local = await detectLocalInference();\n\t\tconst model = local?.models[0];\n\t\tif (!local || model === void 0) return null;\n\t\tconst { ModelRunner } = await import(\"./model-runner2.js\");\n\t\tconst transport = ModelRunner.buildTransportFromCredential(\"openai\", {\n\t\t\tprovider: \"openai\",\n\t\t\tlabel: `${local.name}-autodetected`,\n\t\t\ttoken: \"local\",\n\t\t\tauthType: \"api_key\",\n\t\t\texpiresAt: null,\n\t\t\trefreshToken: null,\n\t\t\textraHeaders: {},\n\t\t\tbaseUrl: local.openAiBaseUrl,\n\t\t\tawsProfile: null\n\t\t}, \"chat_completions\");\n\t\treturn {\n\t\t\tclient: { messages: { create: async (body) => {\n\t\t\t\tconst response = await transport.complete({\n\t\t\t\t\tmodel,\n\t\t\t\t\tmaxTokens: body.max_tokens,\n\t\t\t\t\t...body.system !== void 0 ? { system: body.system } : {},\n\t\t\t\t\tmessages: body.messages.map((m) => ({\n\t\t\t\t\t\trole: m.role,\n\t\t\t\t\t\tcontent: m.content\n\t\t\t\t\t}))\n\t\t\t\t});\n\t\t\t\treturn { content: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: Array.isArray(response.content) ? response.content.map((c) => c.text ?? \"\").join(\"\") : String(response.content ?? \"\")\n\t\t\t\t}] };\n\t\t\t} } },\n\t\t\tmodel\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Build the `zodOutputFormat` helper (lazy dynamic import matching llm-extraction.ts).\n* Returns null when the helper cannot be loaded.\n*/\nasync function buildZodFormat(schema) {\n\ttry {\n\t\treturn (await import(\"./zod.js\")).zodOutputFormat(schema);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Fallback extraction: plain messages.create + manual JSON parse.\n* Used when the Zod helper cannot be loaded.\n*/\nasync function extractViaPlainCall(client, model, userPrompt) {\n\tconst text = extractTextFromResponse(await client.messages.create({\n\t\tmodel,\n\t\tmax_tokens: 4096,\n\t\tsystem: `${DREAM_SYSTEM_PROMPT}\\n\\nReturn ONLY a JSON object of shape {\"memories\": [...]} with no prose.`,\n\t\tmessages: [{\n\t\t\trole: \"user\",\n\t\t\tcontent: userPrompt\n\t\t}]\n\t}));\n\tif (!text) return [];\n\tconst parsed = safeJsonParse(text);\n\tif (!parsed) return [];\n\tconst validated = DreamSynthesisResponseSchema.safeParse(parsed);\n\treturn validated.success ? validated.data.memories : [];\n}\n/**\n* Pull plain text from an Anthropic messages.create response.\n*/\nfunction extractTextFromResponse(response) {\n\tconst content = response?.content;\n\tif (!Array.isArray(content)) return \"\";\n\treturn content.filter((block) => block?.type === \"text\" && typeof block.text === \"string\").map((block) => block.text ?? \"\").join(\"\");\n}\n/**\n* Parse JSON extracting the first `{...}` block even through markdown fences.\n* Returns null on any failure.\n*/\nfunction safeJsonParse(text) {\n\tconst trimmed = text.trim();\n\ttry {\n\t\treturn JSON.parse(trimmed);\n\t} catch {}\n\tconst first = trimmed.indexOf(\"{\");\n\tconst last = trimmed.lastIndexOf(\"}\");\n\tif (first === -1 || last === -1 || last < first) return null;\n\ttry {\n\t\treturn JSON.parse(trimmed.slice(first, last + 1));\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Call the LLM to synthesise memories from a single cluster.\n*\n* Mirrors the structured-output path in llm-extraction.ts:\n* - Preferred path: zodOutputFormat + messages.parse\n* - Fallback path: messages.create + manual JSON parse\n*\n* Returns an empty array on any error (never throws).\n*/\nasync function synthesiseCluster(client, model, cluster) {\n\tconst userPrompt = buildDreamUserPrompt(cluster);\n\ttry {\n\t\tconst format = await buildZodFormat(DreamSynthesisResponseSchema);\n\t\tconst hasParse = typeof client.messages.parse === \"function\";\n\t\tif (format && hasParse) return (await client.messages.parse({\n\t\t\tmodel,\n\t\t\tmax_tokens: 4096,\n\t\t\tsystem: DREAM_SYSTEM_PROMPT,\n\t\t\tmessages: [{\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: userPrompt\n\t\t\t}],\n\t\t\toutput_config: { format }\n\t\t})).parsed_output?.memories ?? [];\n\t\treturn await extractViaPlainCall(client, model, userPrompt);\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Map extracted memory type to a `MemoryCandidate` and send through gate.\n*\n* Routing:\n* - `decision` → verifyAndStore with memoryType='semantic' (decisions\n* bypass verifyAndStore in llm-extraction — but here we\n* route through the gate uniformly for simplicity; the\n* gate handles dedup. Full decision domain fields are\n* optional for dream-cycle synthesis).\n* - `pattern` → verifyAndStore with memoryType='procedural'\n* - `learning` → verifyAndStore with memoryType='semantic'\n* - `constraint` → verifyAndStore with memoryType='semantic', confidence boosted\n*/\nasync function storeDreamMemory(projectRoot, memory, runId, verifyAndStoreFn) {\n\tconst confidence = memory.type === \"constraint\" ? Math.max(memory.importance, .8) : memory.importance;\n\tlet candidate;\n\tif (memory.type === \"decision\" || memory.type === \"learning\" || memory.type === \"constraint\") candidate = {\n\t\ttext: memory.content,\n\t\ttitle: `${memory.type.charAt(0).toUpperCase() + memory.type.slice(1)}: ${memory.content.slice(0, 80)}`,\n\t\tmemoryType: \"semantic\",\n\t\ttier: \"medium\",\n\t\tconfidence,\n\t\tsource: \"transcript\",\n\t\tsourceSessionId: `dream-cycle-${runId}`,\n\t\tsourceConfidence: \"agent\"\n\t};\n\telse candidate = {\n\t\ttext: memory.content,\n\t\ttitle: `Pattern: ${memory.content.slice(0, 80)}`,\n\t\tmemoryType: \"procedural\",\n\t\ttier: \"medium\",\n\t\tconfidence,\n\t\tsource: \"transcript\",\n\t\tsourceSessionId: `dream-cycle-${runId}`,\n\t\tsourceConfidence: \"agent\"\n\t};\n\ttry {\n\t\tconst result = await (verifyAndStoreFn ?? await resolveDefaultVerifyAndStore())(projectRoot, candidate);\n\t\tif (result.action === \"stored\") return \"stored\";\n\t\tif (result.action === \"merged\") return \"merged\";\n\t\treturn \"rejected\";\n\t} catch {\n\t\treturn \"rejected\";\n\t}\n}\n/**\n* Lazily import and return the default `verifyAndStore` from extraction-gate.\n* Cached per call chain — tests that inject `verifyAndStoreFn` never hit this.\n*/\nasync function resolveDefaultVerifyAndStore() {\n\tconst { verifyAndStore } = await import(\"./extraction-gate.js\");\n\treturn verifyAndStore;\n}\n/**\n* Why anthropic was excluded from provider selection, when it was.\n*\n* T12078: the interesting case is `skipped-consent`. CLEO deliberately will not\n* import another tool's credential without opt-in, so the `claude-code` seeder\n* refuses to read `~/.claude/.credentials.json` until\n* `auth.claudeCodeConsentGiven` is set. That is correct security design — but\n* it is invisible at the point of failure, and its symptom is identical to\n* \"you have no credentials\": the stored anthropic entries simply age out (here:\n* 2026-05-18 and 2026-07-12), refresh fails, the selector drops anthropic, and\n* every LLM-dependent feature dies quietly while a perfectly valid token sits\n* in a file CLEO has chosen not to read.\n*\n* Naming the consent flag turns a multi-hour investigation into one command.\n*\n* @returns a remedy sentence; never throws.\n*\n* @task T12078\n*/\nasync function describeAnthropicExclusion() {\n\ttry {\n\t\tconst { getCredentialPool } = await import(\"./credential-pool2.js\");\n\t\tconst pool = getCredentialPool();\n\t\tawait pool.seed().catch(() => void 0);\n\t\tif ((await pool.getSeederStatus()).find((s) => s.sourceId === \"claude-code\")?.lastResult === \"skipped-consent\") return \"Anthropic was excluded because its stored credentials are expired and the claude-code seeder is gated on consent (lastResult=skipped-consent), so the valid token in ~/.claude/.credentials.json is never imported. Fix with EITHER `cleo config set auth.claudeCodeConsentGiven true` (authorise CLEO to read Claude Code credentials) OR `cleo login anthropic`.\";\n\t\treturn \"Either configure llm.roles.consolidation for anthropic, or restore an anthropic credential (`cleo login anthropic`) so the cross-provider selector stops excluding it.\";\n\t} catch {\n\t\treturn \"Run `cleo login anthropic` to restore an anthropic credential.\";\n\t}\n}\n/**\n* One-line explanation of why {@link resolveDreamLlm} produced no client.\n*\n* Distinguishes \"the role resolved to a provider this path cannot use\" from\n* \"no credential at all\", because the remedies are different: the first needs\n* a role/config change or a provider-agnostic runner, the second needs a\n* login.\n*\n* Never throws — diagnostics must not break the caller's error path.\n*\n* @param projectRoot - project root used for resolution.\n* @returns a human-readable reason, always non-empty.\n*\n* @task T12078\n*/\nasync function describeDreamLlmResolution(projectRoot) {\n\ttry {\n\t\tconst { resolveLLMForRole } = await import(\"./role-resolver2.js\");\n\t\tconst llm = await resolveLLMForRole(\"consolidation\", { projectRoot });\n\t\tif (llm.provider !== \"anthropic\") {\n\t\t\tconst why = await describeAnthropicExclusion();\n\t\t\treturn `The 'consolidation' role resolved to provider '${llm.provider}' (model '${llm.model}'), but this path requires anthropic. ${why}`;\n\t\t}\n\t\tif (!llm.sealedCredential) return \"Resolved provider anthropic, but no usable credential — run `cleo login anthropic`.\";\n\t\treturn \"Resolved provider anthropic with a credential, but no client was constructed.\";\n\t} catch (err) {\n\t\treturn `LLM resolution failed: ${err instanceof Error ? err.message : String(err)}`;\n\t}\n}\n/**\n* Run one full dream cycle.\n*\n* Steps:\n* 1. Kill-switch check.\n* 2. Resolve LLM client (daemon provider config + credentials).\n* 3. Collect observations from the last 24 h.\n* 4. Cluster by Jaccard similarity.\n* 5. Synthesise each eligible cluster.\n* 6. Verify and store extracted memories via extraction-gate.\n* 7. Emit dream-cycle digest as BRAIN observation.\n*\n* Never throws — all errors are caught and reported in the outcome.\n*\n* @param options - Dream cycle options (see {@link DreamCycleOptions}).\n* @returns {@link DreamCycleOutcome} describing how the cycle ended.\n*\n* @task T1680\n*/\n/**\n* Read the consolidation watermark from sentient state (T12088).\n*\n* Never throws — an unreadable state file yields `null`, which means \"no\n* watermark\", i.e. fall back to the nominal lookback. Degrading to the previous\n* fixed-window behaviour is correct; refusing to consolidate would not be.\n*\n* @param statePath - path to the sentient state file.\n* @param options - dream options (test seam: `dreamWatermark`).\n* @returns ISO timestamp already consolidated, or `null`.\n*\n* @task T12088\n*/\nasync function readDreamWatermark(statePath, options) {\n\tif (options.dreamWatermark !== void 0) return options.dreamWatermark;\n\ttry {\n\t\tconst { readSentientState } = await import(\"./state.js\");\n\t\treturn (await readSentientState(statePath)).dreamWatermark ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Persist the consolidation watermark into sentient state (T12088).\n*\n* A `null` watermark (empty batch) is a no-op: an empty pass must not advance\n* progress past material it never read.\n*\n* Never throws — losing a watermark write costs one redundant pass, whereas\n* throwing here would discard a completed consolidation.\n*\n* @param statePath - path to the sentient state file.\n* @param watermark - newest processed `createdAt`, or `null`.\n* @param options - dream options (test seam: `onWatermarkWrite`).\n*\n* @task T12088\n*/\nasync function writeDreamWatermark(statePath, watermark, options) {\n\tif (watermark === null) return;\n\tif (options.onWatermarkWrite) {\n\t\toptions.onWatermarkWrite(watermark);\n\t\treturn;\n\t}\n\ttry {\n\t\tconst { readSentientState, writeSentientState } = await import(\"./state.js\");\n\t\tawait writeSentientState(statePath, {\n\t\t\t...await readSentientState(statePath),\n\t\t\tdreamWatermark: watermark\n\t\t});\n\t} catch {}\n}\nasync function runDreamCycle(options) {\n\tconst { projectRoot, statePath } = options;\n\tconst runId = randomUUID().slice(0, 8);\n\tconst digest = {\n\t\trunId,\n\t\tstartedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tobservationsCollected: 0,\n\t\tclustersFormed: 0,\n\t\tclustersSynthesised: 0,\n\t\tmemoriesExtracted: 0,\n\t\tmemoriesStored: 0,\n\t\tmemoriesRejected: 0,\n\t\twarnings: []\n\t};\n\tif (await (options.isKilled ? options.isKilled() : (async () => {\n\t\tconst { readSentientState } = await import(\"./state.js\");\n\t\treturn (await readSentientState(statePath)).killSwitch === true;\n\t})())) return {\n\t\tkind: \"killed\",\n\t\tdetail: \"killSwitch active — dream cycle skipped\"\n\t};\n\tlet client;\n\tlet model;\n\tif (\"client\" in options) {\n\t\tclient = options.client ?? null;\n\t\tmodel = DREAM_DEFAULT_MODEL;\n\t} else {\n\t\tconst resolved = await resolveDreamLlm(projectRoot);\n\t\tclient = resolved?.client ?? null;\n\t\tmodel = resolved?.model ?? DREAM_DEFAULT_MODEL;\n\t}\n\tif (!client) return {\n\t\tkind: \"no-api-key\",\n\t\tdetail: `Dream cycle skipped — no usable Anthropic client. ${await describeDreamLlmResolution(projectRoot)}`\n\t};\n\tconst nominalLookbackMs = options.lookbackMs ?? 864e5;\n\tconst watermark = await readDreamWatermark(statePath, options);\n\tconst lookbackMs = resolveLookbackMs(watermark, nominalLookbackMs);\n\tconst collect = options.collectObservations ?? defaultCollectObservations;\n\tlet collected;\n\ttry {\n\t\tcollected = await collect(projectRoot, lookbackMs);\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\tdigest.warnings.push(`collection error: ${message}`);\n\t\tcollected = [];\n\t}\n\tconst observations = selectUnconsolidated(collected, watermark);\n\tdigest.observationsCollected = observations.length;\n\tif (collected.length !== observations.length) digest.warnings.push(`incremental: ${collected.length - observations.length} observation(s) already consolidated (watermark ${watermark ?? \"none\"})`);\n\tif (observations.length === 0) return {\n\t\tkind: \"no-observations\",\n\t\tdetail: \"no BRAIN observations in lookback window — dream cycle skipped\"\n\t};\n\tconst clusters = clusterByJaccard(observations, options.jaccardThreshold ?? .15);\n\tdigest.clustersFormed = clusters.length;\n\tif (clusters.length === 0) return {\n\t\tkind: \"no-clusters\",\n\t\tdetail: \"no clusters formed — dream cycle skipped\"\n\t};\n\tconst clusterMinSize = options.clusterMinSize ?? adaptiveClusterMinSize(observations.length);\n\tconst maxClusters = options.maxClusters ?? 10;\n\tconst minImportance = options.minImportance ?? .6;\n\tconst eligibleClusters = clusters.filter((c) => c.observations.length >= clusterMinSize).slice(0, maxClusters);\n\tfor (const cluster of eligibleClusters) {\n\t\tdigest.clustersSynthesised++;\n\t\tlet extracted;\n\t\ttry {\n\t\t\textracted = await synthesiseCluster(client, model, cluster);\n\t\t} catch (err) {\n\t\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\t\tdigest.warnings.push(`cluster ${cluster.index} synthesis error: ${message}`);\n\t\t\textracted = [];\n\t\t}\n\t\tdigest.memoriesExtracted += extracted.length;\n\t\tfor (const memory of extracted) {\n\t\t\tif (memory.importance < minImportance) {\n\t\t\t\tdigest.memoriesRejected++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst outcome = await storeDreamMemory(projectRoot, memory, runId, options.verifyAndStoreFn);\n\t\t\t\tif (outcome === \"stored\" || outcome === \"merged\") digest.memoriesStored++;\n\t\t\t\telse digest.memoriesRejected++;\n\t\t\t} catch (err) {\n\t\t\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\t\t\tdigest.warnings.push(`store error: ${message}`);\n\t\t\t\tdigest.memoriesRejected++;\n\t\t\t}\n\t\t}\n\t}\n\tconst digestText = `sentient:dream-cycle-${runId} — dream cycle completed. Collected ${digest.observationsCollected} observation(s) in last ${Math.round(lookbackMs / 36e5)}h. Formed ${digest.clustersFormed} cluster(s); synthesised ${digest.clustersSynthesised}. Extracted ${digest.memoriesExtracted} memory(ies): ${digest.memoriesStored} stored/merged, ${digest.memoriesRejected} rejected.` + (digest.warnings.length > 0 ? ` Warnings: ${digest.warnings.slice(0, 3).join(\"; \")}` : \"\");\n\tconst digestTitle = `sentient:dream-cycle-${runId} — ${digest.memoriesStored} memories synthesised`;\n\tconst observe = options.observeMemory ?? (async (params, root) => {\n\t\tconst { memoryObserve } = await import(\"./internal2.js\");\n\t\treturn memoryObserve(params, root);\n\t});\n\ttry {\n\t\tawait observe({\n\t\t\ttext: digestText,\n\t\t\ttitle: digestTitle,\n\t\t\ttype: \"discovery\"\n\t\t}, projectRoot);\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\tdigest.warnings.push(`digest observation write error: ${message}`);\n\t}\n\tawait writeDreamWatermark(statePath, nextWatermark(observations), options);\n\treturn {\n\t\tkind: \"completed\",\n\t\tdetail: `dream cycle completed: ${digest.memoriesStored} memories stored/merged from ${digest.clustersSynthesised} cluster(s)`,\n\t\tdigest\n\t};\n}\n/**\n* Safe wrapper for {@link runDreamCycle} — swallows unexpected exceptions.\n*\n* Used from `safeRunTick` as a fire-and-forget best-effort call.\n* Errors never propagate to the tick caller.\n*\n* @param options - Dream cycle options.\n* @returns Cycle outcome or an error outcome on unexpected throw.\n*\n* @task T1680\n*/\nasync function safeRunDreamCycle(options) {\n\ttry {\n\t\treturn await runDreamCycle(options);\n\t} catch (err) {\n\t\treturn {\n\t\t\tkind: \"error\",\n\t\t\tdetail: `dream cycle threw: ${err instanceof Error ? err.message : String(err)}`\n\t\t};\n\t}\n}\n//#endregion\nexport { DREAM_PROBE_TIMEOUT_MS as a, DREAM_MIN_IMPORTANCE as i, DREAM_JACCARD_THRESHOLD as n, runDreamCycle as o, DREAM_LOOKBACK_MS as r, safeRunDreamCycle as s, DREAM_DEFAULT_MODEL as t };\n","import { z } from \"zod\";\n/**\n* Lower bound of the Jaccard ambiguity band.\n* Findings with similarity < JACCARD_AMBIGUITY_LOW are confidently \"not real\"\n* (well below recent activity — stale orphan). No LLM needed.\n*/\nvar JACCARD_AMBIGUITY_LOW = .4;\n/**\n* Upper bound of the Jaccard ambiguity band.\n* Findings with similarity >= JACCARD_AMBIGUITY_HIGH are confidently \"real\"\n* (closely related to recent active work). No LLM needed.\n*/\nvar JACCARD_AMBIGUITY_HIGH = .7;\n/**\n* Confidence threshold above which a non-destructive auto-fix is executed\n* immediately without human review.\n*/\nvar LLM_CONFIDENCE_AUTO_EXECUTE = .9;\n/**\n* Confidence threshold above which a Tier-2 sentient proposal is emitted\n* instead of a plain HITL observation.\n*/\nvar LLM_CONFIDENCE_PROPOSE = .7;\n/**\n* Zod schema for the structured output returned by the LLM escalation call.\n*/\nvar HygieneEscalationResultSchema = z.object({\n\tis_real_defect: z.boolean(),\n\tconfidence: z.number().min(0).max(1),\n\trecommended_action: z.enum([\n\t\t\"auto-fix\",\n\t\t\"propose\",\n\t\t\"ignore\"\n\t]),\n\treasoning: z.string()\n});\n/**\n* Tokenize a string for Jaccard similarity computation.\n* Lowercases, removes punctuation, splits on whitespace, filters short tokens.\n* Returns a Set of unique tokens.\n*/\nfunction tokenize(text) {\n\tconst tokens = text.toLowerCase().replace(/[^a-z0-9\\s]/g, \" \").replace(/\\s+/g, \" \").trim().split(\" \").filter((t) => t.length >= 3);\n\treturn new Set(tokens);\n}\n/**\n* Compute the Jaccard similarity coefficient between two token sets.\n* Returns 0 when both sets are empty.\n*\n* Jaccard(A, B) = |A ∩ B| / |A ∪ B|\n*/\nfunction jaccardSimilarity(a, b) {\n\tif (a.size === 0 && b.size === 0) return 0;\n\tlet intersectionSize = 0;\n\tfor (const token of a) if (b.has(token)) intersectionSize++;\n\tconst unionSize = a.size + b.size - intersectionSize;\n\treturn unionSize === 0 ? 0 : intersectionSize / unionSize;\n}\n/**\n* Query a snapshot of recent active task tokens from the DB.\n* Used as the reference corpus for Jaccard similarity on ambiguous findings.\n*\n* Selects tasks updated in the last 30 days that are pending/active/blocked.\n* Returns null when the DB throws.\n*/\nfunction queryRecentActivityTokens(db) {\n\tconst sql = `\n SELECT title, description\n FROM tasks_tasks\n WHERE status IN ('pending', 'active', 'blocked')\n AND updated_at >= datetime('now', '-30 days')\n LIMIT 200\n `;\n\ttry {\n\t\tconst rows = db.prepare(sql).all();\n\t\tconst tokens = /* @__PURE__ */ new Set();\n\t\tfor (const row of rows) {\n\t\t\tfor (const token of tokenize(row.title ?? \"\")) tokens.add(token);\n\t\t\tfor (const token of tokenize(row.description ?? \"\")) tokens.add(token);\n\t\t}\n\t\treturn tokens;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Classify an ambiguous finding via Jaccard similarity against recent activity.\n*\n* Returns:\n* - `'not-real'` — similarity < JACCARD_AMBIGUITY_LOW (stale, no activity match)\n* - `'real'` — similarity >= JACCARD_AMBIGUITY_HIGH (closely matches active work)\n* - `'ambiguous'` — similarity in [JACCARD_AMBIGUITY_LOW, JACCARD_AMBIGUITY_HIGH)\n*/\nfunction classifyByJaccard(finding, recentTokens) {\n\tconst similarity = jaccardSimilarity(tokenize(`${finding.title} ${finding.description}`), recentTokens);\n\tif (similarity >= .7) return {\n\t\tverdict: \"real\",\n\t\tsimilarity\n\t};\n\tif (similarity < .4) return {\n\t\tverdict: \"not-real\",\n\t\tsimilarity\n\t};\n\treturn {\n\t\tverdict: \"ambiguous\",\n\t\tsimilarity\n\t};\n}\n/**\n* Build the real LLM escalation call function using the hygiene-role backend.\n*\n* Resolves provider + model + credential via `resolveLLMForRole('hygiene')`\n* (T9255). When neither `llm.roles.hygiene`, `llm.default`, nor `llm.daemon`\n* is configured, the hygiene tier substitutes {@link HYGIENE_FALLBACK_MODEL}\n* for the resolver's implicit haiku fallback — hygiene escalation runs\n* longer reasoning prompts than other consolidation calls, so it keeps its\n* own one-tier-up default. The literal itself lives in `role-resolver.ts`\n* (grep-guarded) so this file stays clean (T-LLM-CRED Phase 2 — P2-2).\n*\n* Returns null when credentials are unavailable (LLM tier will be skipped).\n*/\nasync function buildRealLlmCallFn(projectRoot) {\n\ttry {\n\t\tconst { HYGIENE_FALLBACK_MODEL, IMPLICIT_FALLBACK_MODEL, resolveLLMForRole } = await import(\"./role-resolver2.js\");\n\t\tconst { authHeadersFromSealed } = await import(\"./credentials.js\");\n\t\tconst { cleoLlmCall } = await import(\"./api2.js\");\n\t\tconst { repairResponseModelJson } = await import(\"./structured-output2.js\");\n\t\tconst llm = await resolveLLMForRole(\"hygiene\", { projectRoot });\n\t\tif (!llm.sealedCredential || !llm.credential) return null;\n\t\tconst model = llm.source === \"implicit-fallback\" && llm.model === IMPLICIT_FALLBACK_MODEL ? HYGIENE_FALLBACK_MODEL : llm.model;\n\t\tconst credMeta = llm.credential;\n\t\tconst transport = llm.provider;\n\t\tconst sealed = llm.sealedCredential;\n\t\treturn async (findingText, taskContext) => {\n\t\t\tconst extraHeaders = credMeta.authType === \"oauth\" ? await authHeadersFromSealed(sealed, credMeta.authType) : void 0;\n\t\t\tconst responseObj = await cleoLlmCall({\n\t\t\t\tmodelConfig: {\n\t\t\t\t\ttransport,\n\t\t\t\t\tmodel,\n\t\t\t\t\tapiKey: (await sealed.fetch()).value,\n\t\t\t\t\textraHeaders\n\t\t\t\t},\n\t\t\t\tprompt: `You are a CLEO task hygiene analyzer. Evaluate whether the following finding about a task is a genuine defect requiring action.\n\nFINDING:\n${findingText}\n\nTASK CONTEXT:\n${taskContext}\n\nRespond with a JSON object with these exact fields:\n- is_real_defect: boolean — true if this is a real problem, false if it can be ignored\n- confidence: number 0..1 — your confidence in the assessment\n- recommended_action: one of \"auto-fix\", \"propose\", or \"ignore\"\n - \"auto-fix\": safe to apply immediately, non-destructive (e.g., re-parent orphan task)\n - \"propose\": needs human review before applying\n - \"ignore\": not a real defect, discard\n- reasoning: string — brief explanation (max 200 chars)\n\nRespond ONLY with the JSON object, no other text.`,\n\t\t\t\tmaxTokens: 256,\n\t\t\t\ttemperature: .1\n\t\t\t});\n\t\t\tconst content = typeof responseObj.content === \"string\" ? responseObj.content : JSON.stringify(responseObj.content);\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(content);\n\t\t\t\treturn HygieneEscalationResultSchema.parse(parsed);\n\t\t\t} catch {\n\t\t\t\treturn repairResponseModelJson(content, HygieneEscalationResultSchema, model);\n\t\t\t}\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Escalate a single ambiguous finding through Jaccard → LLM tiers.\n*\n* @returns EscalationOutcome describing how the finding was resolved.\n*/\nasync function escalateFinding(finding, ctx) {\n\tif (finding.updatedAt) {\n\t\tconst updatedMs = Date.parse(finding.updatedAt);\n\t\tif (!Number.isNaN(updatedMs) && Date.now() - updatedMs > 2160 * 60 * 60 * 1e3) {\n\t\t\tctx.stats.decidedByJaccard++;\n\t\t\treturn {\n\t\t\t\tdecidedBy: \"jaccard\",\n\t\t\t\tisRealDefect: false,\n\t\t\t\tconfidence: .85,\n\t\t\t\taction: \"ignored\",\n\t\t\t\treasoning: `task not updated in >90 days — stale finding`\n\t\t\t};\n\t\t}\n\t}\n\tconst { verdict, similarity } = classifyByJaccard(finding, ctx.recentActivityTokens);\n\tif (verdict === \"not-real\") {\n\t\tctx.stats.decidedByJaccard++;\n\t\treturn {\n\t\t\tdecidedBy: \"jaccard\",\n\t\t\tisRealDefect: false,\n\t\t\tconfidence: 1 - similarity,\n\t\t\taction: \"ignored\",\n\t\t\treasoning: `Jaccard similarity ${similarity.toFixed(2)} < ${JACCARD_AMBIGUITY_LOW} — not related to recent activity`\n\t\t};\n\t}\n\tif (verdict === \"real\") {\n\t\tctx.stats.decidedByJaccard++;\n\t\treturn {\n\t\t\tdecidedBy: \"jaccard\",\n\t\t\tisRealDefect: true,\n\t\t\tconfidence: similarity,\n\t\t\taction: \"observation\",\n\t\t\treasoning: `Jaccard similarity ${similarity.toFixed(2)} >= ${JACCARD_AMBIGUITY_HIGH} — closely related to active work`\n\t\t};\n\t}\n\tif (!ctx.callLlm || ctx.llmCallCount >= ctx.maxLlmCalls) {\n\t\tif (ctx.llmCallCount >= ctx.maxLlmCalls) {\n\t\t\tctx.stats.skippedBudgetCap++;\n\t\t\tprocess.stderr.write(`[hygiene-scan] LLM budget cap (${ctx.maxLlmCalls}) reached — skipping LLM escalation for ${finding.taskId}\\n`);\n\t\t\treturn {\n\t\t\t\tdecidedBy: \"cap-exceeded\",\n\t\t\t\tisRealDefect: true,\n\t\t\t\tconfidence: similarity,\n\t\t\t\taction: \"observation\",\n\t\t\t\treasoning: `LLM budget cap exceeded; Jaccard similarity ${similarity.toFixed(2)} — emitting as plain observation`\n\t\t\t};\n\t\t}\n\t\tctx.stats.decidedByJaccard++;\n\t\treturn {\n\t\t\tdecidedBy: \"jaccard\",\n\t\t\tisRealDefect: true,\n\t\t\tconfidence: similarity,\n\t\t\taction: \"observation\",\n\t\t\treasoning: `LLM unavailable; Jaccard similarity ${similarity.toFixed(2)} — emitting as plain observation`\n\t\t};\n\t}\n\tctx.llmCallCount++;\n\tctx.stats.escalated++;\n\tlet llmResult;\n\ttry {\n\t\tconst findingText = `Scan: ${finding.scanKind}\\nTask: ${finding.taskId}\\nReason: ${finding.reason}`;\n\t\tconst taskContext = `Title: ${finding.title}\\nDescription: ${finding.description || \"(none)\"}\\nUpdated: ${finding.updatedAt ?? \"(unknown)\"}`;\n\t\tllmResult = await ctx.callLlm(findingText, taskContext);\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\tprocess.stderr.write(`[hygiene-scan] LLM escalation failed for ${finding.taskId}: ${message}\\n`);\n\t\treturn {\n\t\t\tdecidedBy: \"llm\",\n\t\t\tisRealDefect: true,\n\t\t\tconfidence: similarity,\n\t\t\taction: \"observation\",\n\t\t\treasoning: `LLM error — emitting as plain observation`\n\t\t};\n\t}\n\tif (!llmResult.is_real_defect || llmResult.recommended_action === \"ignore\") return {\n\t\tdecidedBy: \"llm\",\n\t\tisRealDefect: false,\n\t\tconfidence: llmResult.confidence,\n\t\taction: \"ignored\",\n\t\treasoning: llmResult.reasoning\n\t};\n\tif (llmResult.confidence >= .9 && llmResult.recommended_action === \"auto-fix\") {\n\t\tctx.stats.autoExecuted++;\n\t\treturn {\n\t\t\tdecidedBy: \"llm\",\n\t\t\tisRealDefect: true,\n\t\t\tconfidence: llmResult.confidence,\n\t\t\taction: \"auto-fix\",\n\t\t\treasoning: llmResult.reasoning\n\t\t};\n\t}\n\tif (llmResult.confidence >= .7) {\n\t\tctx.stats.proposalsEmitted++;\n\t\tawait emitSentientProposal(finding, llmResult, ctx);\n\t\treturn {\n\t\t\tdecidedBy: \"llm\",\n\t\t\tisRealDefect: true,\n\t\t\tconfidence: llmResult.confidence,\n\t\t\taction: \"propose\",\n\t\t\treasoning: llmResult.reasoning\n\t\t};\n\t}\n\tctx.stats.hitlRequired++;\n\tawait emitHitlObservation(finding, llmResult, ctx);\n\treturn {\n\t\tdecidedBy: \"llm\",\n\t\tisRealDefect: true,\n\t\tconfidence: llmResult.confidence,\n\t\taction: \"observation\",\n\t\treasoning: `HITL-required (confidence ${llmResult.confidence.toFixed(2)} < ${LLM_CONFIDENCE_PROPOSE}): ${llmResult.reasoning}`\n\t};\n}\n/**\n* Emit a Tier-2 sentient proposal for a medium-confidence LLM finding.\n*\n* The proposal is emitted as a BRAIN observation tagged 'sentient-tier2'\n* (the real DB insertion path requires the tasks DB and rate limiter; for\n* correctness the hygiene scan emits to BRAIN and lets the propose-tick\n* ingest it on the next cycle).\n*/\nasync function emitSentientProposal(finding, llmResult, ctx) {\n\tif (!ctx.observe) return;\n\tconst text = `hygiene:tier2-proposal [sentient-tier2] — LLM (confidence ${llmResult.confidence.toFixed(2)}) recommends action on ${finding.scanKind} finding for task ${finding.taskId}. Action: ${llmResult.recommended_action}. Reason: ${llmResult.reasoning}. Original finding: ${finding.reason}`;\n\tconst title = `hygiene:tier2-proposal — ${finding.scanKind} for ${finding.taskId} (confidence ${llmResult.confidence.toFixed(2)})`;\n\ttry {\n\t\tawait ctx.observe({\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\ttype: \"proposal\"\n\t\t}, ctx.projectRoot);\n\t} catch {}\n}\n/**\n* Emit a HITL-required BRAIN observation for a low-confidence LLM finding.\n*/\nasync function emitHitlObservation(finding, llmResult, ctx) {\n\tif (!ctx.observe) return;\n\tconst text = `hygiene:hitl-required — LLM confidence ${llmResult.confidence.toFixed(2)} is below ${LLM_CONFIDENCE_PROPOSE} threshold. Human review required for ${finding.scanKind} finding on task ${finding.taskId}. LLM reasoning: ${llmResult.reasoning}. Original finding: ${finding.reason}`;\n\tconst title = `hygiene:hitl-required — ${finding.scanKind} for ${finding.taskId} needs human review`;\n\ttry {\n\t\tawait ctx.observe({\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\ttype: \"decision\"\n\t\t}, ctx.projectRoot);\n\t} catch {}\n}\n/**\n* Build a formatted list of task IDs for embedding in observation text.\n* Caps at {@link MAX_TASK_IDS_IN_OBSERVATION} with a trailing count for excess.\n*/\nfunction formatTaskIds(ids) {\n\tif (ids.length === 0) return \"(none)\";\n\tconst shown = ids.slice(0, 10);\n\tconst rest = ids.length - shown.length;\n\treturn rest > 0 ? `${shown.join(\", \")} (+ ${rest} more)` : shown.join(\", \");\n}\n/**\n* Parse a JSON-encoded acceptance criteria column into an array of strings.\n* Returns an empty array on invalid JSON or null input.\n*/\nfunction parseAcceptanceJson(raw) {\n\tif (!raw) return [];\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (!Array.isArray(parsed)) return [];\n\t\treturn parsed.map((item) => {\n\t\t\tif (typeof item === \"string\") return item;\n\t\t\tif (item && typeof item === \"object\" && \"criteria\" in item) return String(item.criteria);\n\t\t\treturn \"\";\n\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Parse a JSON-encoded files column into an array of strings.\n* Returns an empty array on invalid JSON or null input.\n*/\nfunction parseFilesJson(raw) {\n\tif (!raw) return [];\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\treturn Array.isArray(parsed) ? parsed.map(String) : [];\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Query all tasks (non-epic, non-proposed, non-terminal) in batch from tasks.db.\n* Includes title + description for Jaccard tokenization (T1679).\n* Returns empty array when the DB is unavailable.\n*/\nfunction queryWorkingTasks(db) {\n\tconst sql = `\n SELECT id, parent_id, type, status, acceptance_json, files_json, labels_json,\n COALESCE(title, '') as title, COALESCE(description, '') as description,\n updated_at\n FROM tasks_tasks\n WHERE type != 'epic'\n AND status NOT IN ('done', 'cancelled')\n AND status != 'proposed'\n ORDER BY id ASC\n `;\n\ttry {\n\t\treturn db.prepare(sql).all();\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Query tasks with done/cancelled status (needed for Scan 4 leak detection).\n* We need the recently-done ones to check if their parent epic still has siblings.\n*/\nfunction queryRecentlyDoneTasks(db) {\n\tconst sql = `\n SELECT id, parent_id, type, status, acceptance_json, files_json, labels_json,\n COALESCE(title, '') as title, COALESCE(description, '') as description,\n updated_at\n FROM tasks_tasks\n WHERE type != 'epic'\n AND status = 'done'\n AND parent_id IS NOT NULL\n AND updated_at >= datetime('now', '-7 days')\n ORDER BY id ASC\n LIMIT 500\n `;\n\ttry {\n\t\treturn db.prepare(sql).all();\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Look up the status of a parent task. Returns null if not found.\n*/\nfunction queryParentStatus(db, parentId) {\n\tconst sql = `SELECT id, status FROM tasks_tasks WHERE id = :id LIMIT 1`;\n\ttry {\n\t\tconst row = db.prepare(sql).get({ id: parentId });\n\t\treturn row ? row.status : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Count pending/active sibling tasks under a parent epic.\n*/\nfunction countActiveSiblings(db, parentId, excludeTaskId) {\n\tconst sql = `\n SELECT COUNT(*) as cnt\n FROM tasks_tasks\n WHERE parent_id = :parentId\n AND id != :excludeId\n AND status IN ('pending', 'active', 'blocked')\n `;\n\ttry {\n\t\tconst row = db.prepare(sql).get({\n\t\t\tparentId,\n\t\t\texcludeId: excludeTaskId\n\t\t});\n\t\treturn row ? row.cnt : 0;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n/**\n* Scan 1: orphan tasks — tasks whose `parent_id` references a done/cancelled\n* or missing parent. These tasks are effectively invisible to the scheduler.\n*\n* Ambiguity criterion for escalation:\n* An orphan task is \"ambiguous\" when its parent is `done` (not missing/cancelled)\n* because the task might be legitimately in-progress for a follow-up.\n* Tasks referencing a cancelled/missing parent are unambiguously orphaned.\n*/\nasync function scanOrphanTasks(db, tasks, observe, projectRoot, ctx) {\n\tconst tasksWithParent = tasks.filter((t) => t.parent_id !== null);\n\tconst orphans = [];\n\tfor (const task of tasksWithParent) {\n\t\tconst parentStatus = queryParentStatus(db, task.parent_id);\n\t\tif (parentStatus === null || parentStatus === \"done\" || parentStatus === \"cancelled\") {\n\t\t\tconst ambiguous = parentStatus === \"done\";\n\t\t\torphans.push({\n\t\t\t\ttaskId: task.id,\n\t\t\t\tambiguous,\n\t\t\t\trow: task\n\t\t\t});\n\t\t}\n\t}\n\tif (orphans.length === 0) return {\n\t\tfound: 0,\n\t\tobserved: 0,\n\t\tdetail: \"no orphan tasks found\"\n\t};\n\tconst definiteOrphanIds = [];\n\tconst ambiguousOrphanIds = [];\n\tfor (const entry of orphans) if (entry.ambiguous) ambiguousOrphanIds.push(entry.taskId);\n\telse definiteOrphanIds.push(entry.taskId);\n\tfor (const entry of orphans.filter((e) => e.ambiguous)) if ((await escalateFinding({\n\t\ttaskId: entry.taskId,\n\t\tscanKind: \"orphan\",\n\t\treason: \"parent is done but task is still pending/active\",\n\t\ttitle: String(entry.row.title ?? \"\"),\n\t\tdescription: String(entry.row.description ?? \"\"),\n\t\tupdatedAt: entry.row.updated_at ?? null\n\t}, ctx)).action === \"ignored\") {\n\t\tconst idx = ambiguousOrphanIds.indexOf(entry.taskId);\n\t\tif (idx >= 0) ambiguousOrphanIds.splice(idx, 1);\n\t}\n\tconst allOrphanIds = [...definiteOrphanIds, ...ambiguousOrphanIds];\n\tif (allOrphanIds.length === 0) return {\n\t\tfound: 0,\n\t\tobserved: 0,\n\t\tdetail: \"all orphan candidates dismissed by escalation\"\n\t};\n\tconst text = `hygiene:orphan — ${allOrphanIds.length} task(s) have a done/cancelled/missing parent and will never be picked by the scheduler. Consider re-parenting or cancelling them. Task IDs: ${formatTaskIds(allOrphanIds)}`;\n\tconst title = `hygiene:orphan — ${allOrphanIds.length} orphaned task(s) detected`;\n\tlet observed = 0;\n\tif (observe) try {\n\t\tawait observe({\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\ttype: \"discovery\"\n\t\t}, projectRoot);\n\t\tobserved = 1;\n\t} catch {}\n\treturn {\n\t\tfound: allOrphanIds.length,\n\t\tobserved,\n\t\tdetail: `${allOrphanIds.length} orphan task(s): ${formatTaskIds(allOrphanIds)}`\n\t};\n}\n/**\n* Scan 2: top-level type=task — root-level tasks (no parent_id, type='task').\n* These tasks are not under any epic and may be lost. Recommend re-parenting\n* under an epic or promoting to an epic.\n*\n* These are always unambiguous — top-level tasks without a parent epic are\n* definitively misplaced. No escalation needed.\n*/\nasync function scanTopLevelOrphanTasks(db, observe, projectRoot) {\n\tconst sql = `\n SELECT id, parent_id, type, status, acceptance_json, files_json, labels_json,\n COALESCE(title, '') as title, COALESCE(description, '') as description,\n updated_at\n FROM tasks_tasks\n WHERE parent_id IS NULL\n AND type = 'task'\n AND status NOT IN ('done', 'cancelled', 'proposed')\n ORDER BY id ASC\n LIMIT 200\n `;\n\tlet rows;\n\ttry {\n\t\trows = db.prepare(sql).all();\n\t} catch {\n\t\treturn {\n\t\t\tfound: 0,\n\t\t\tobserved: 0,\n\t\t\tdetail: \"db error in top-level scan\"\n\t\t};\n\t}\n\tif (rows.length === 0) return {\n\t\tfound: 0,\n\t\tobserved: 0,\n\t\tdetail: \"no top-level orphan tasks found\"\n\t};\n\tconst ids = rows.map((r) => r.id);\n\tconst text = `hygiene:top-level-orphan — ${ids.length} task(s) are root-level (no parent epic). Action required: re-parent under an existing epic (\\`cleo update <id> --parent <epicId>\\`) or promote to an epic (\\`cleo update <id> --type epic\\`). Task IDs: ${formatTaskIds(ids)}`;\n\tconst title = `hygiene:top-level-orphan — ${ids.length} top-level task(s) need epic parent`;\n\tlet observed = 0;\n\tif (observe) try {\n\t\tawait observe({\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\ttype: \"discovery\"\n\t\t}, projectRoot);\n\t\tobserved = 1;\n\t} catch {}\n\treturn {\n\t\tfound: ids.length,\n\t\tobserved,\n\t\tdetail: `${ids.length} top-level task(s): ${formatTaskIds(ids)}`\n\t};\n}\n/**\n* Scan 3: content quality defects.\n*\n* Checks for:\n* - Missing acceptance criteria (empty or null `acceptance_json` array)\n* - Missing files for type=task tasks (files_json is empty/null)\n* - Vague acceptance criteria (any item shorter than VAGUE_AC_CHAR_THRESHOLD chars)\n*\n* Content defects are always unambiguous — these are structural quality issues.\n* No escalation needed.\n*/\nasync function scanContentDefects(tasks, observe, projectRoot) {\n\tconst defects = [];\n\tfor (const task of tasks) {\n\t\tconst ac = parseAcceptanceJson(task.acceptance_json);\n\t\tconst files = parseFilesJson(task.files_json);\n\t\tif (ac.length === 0) {\n\t\t\tdefects.push({\n\t\t\t\ttaskId: task.id,\n\t\t\t\treason: \"missing acceptance criteria\"\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst vagueItems = ac.filter((item) => item.length < 20);\n\t\tif (vagueItems.length > 0) {\n\t\t\tdefects.push({\n\t\t\t\ttaskId: task.id,\n\t\t\t\treason: `vague acceptance criteria (${vagueItems.length} item(s) < 20 chars)`\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (task.type === \"task\" && files.length === 0) defects.push({\n\t\t\ttaskId: task.id,\n\t\t\treason: \"type=task with no files listed\"\n\t\t});\n\t}\n\tif (defects.length === 0) return {\n\t\tfound: 0,\n\t\tobserved: 0,\n\t\tdetail: \"no content defects found\"\n\t};\n\tconst taskIdList = defects.map((d) => d.taskId);\n\tconst reasonSummary = defects.slice(0, 5).map((d) => `${d.taskId}: ${d.reason}`).join(\"; \");\n\tconst suffix = defects.length > 5 ? ` (+ ${defects.length - 5} more)` : \"\";\n\tconst text = `hygiene:content-defect — ${defects.length} task(s) have content quality issues. Examples: ${reasonSummary}${suffix}. All affected IDs: ${formatTaskIds(taskIdList)}`;\n\tconst title = `hygiene:content-defect — ${defects.length} task(s) need content improvement`;\n\tlet observed = 0;\n\tif (observe) try {\n\t\tawait observe({\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\ttype: \"discovery\"\n\t\t}, projectRoot);\n\t\tobserved = 1;\n\t} catch {}\n\treturn {\n\t\tfound: defects.length,\n\t\tobserved,\n\t\tdetail: `${defects.length} content defect(s): ${formatTaskIds(taskIdList)}`\n\t};\n}\n/**\n* Scan 4: premature-close leaks (defensive shadow of T1632 invariant).\n*\n* Looks for recently-done tasks whose parent epic is still active/pending\n* AND whose done sibling count matches or exceeds all children (implying the\n* epic should have auto-closed but didn't). This catches any slip past the\n* T1632 gating invariant.\n*\n* Emits CRITICAL observations tagged 'hygiene:premature-close-leak'.\n*\n* These are always unambiguous structural invariant violations — no escalation.\n*/\nasync function scanPrematureCloseLeaks(db, observe, projectRoot) {\n\tconst recentDone = queryRecentlyDoneTasks(db);\n\tconst leakIds = [];\n\tfor (const task of recentDone) {\n\t\tif (!task.parent_id) continue;\n\t\tconst parentStatus = queryParentStatus(db, task.parent_id);\n\t\tif (!parentStatus || ![\n\t\t\t\"pending\",\n\t\t\t\"active\",\n\t\t\t\"blocked\"\n\t\t].includes(parentStatus)) continue;\n\t\tif (countActiveSiblings(db, task.parent_id, task.id) === 0) leakIds.push(task.id);\n\t}\n\tif (leakIds.length === 0) return {\n\t\tfound: 0,\n\t\tobserved: 0,\n\t\tdetail: \"no premature-close leaks detected\"\n\t};\n\tconst text = `hygiene:premature-close-leak [CRITICAL] — ${leakIds.length} task(s) are done but their parent epic has no remaining active/pending siblings and is NOT closed. This may indicate a slip past the T1632 premature-close invariant. Manual review required: ${formatTaskIds(leakIds)}. Run \\`cleo show <epicId>\\` to inspect and \\`cleo complete <epicId>\\` to close.`;\n\tconst title = `hygiene:premature-close-leak [CRITICAL] — ${leakIds.length} potential unclosed epic(s)`;\n\tlet observed = 0;\n\tif (observe) try {\n\t\tawait observe({\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\ttype: \"decision\"\n\t\t}, projectRoot);\n\t\tobserved = 1;\n\t} catch {}\n\treturn {\n\t\tfound: leakIds.length,\n\t\tobserved,\n\t\tdetail: `${leakIds.length} premature-close leak(s): ${formatTaskIds(leakIds)}`\n\t};\n}\n/** Empty escalation stats used for early-exit outcomes. */\nfunction emptyLlmStats() {\n\treturn {\n\t\tescalated: 0,\n\t\tdecidedByJaccard: 0,\n\t\tskippedBudgetCap: 0,\n\t\tautoExecuted: 0,\n\t\tproposalsEmitted: 0,\n\t\thitlRequired: 0\n\t};\n}\n/**\n* Run all 4 hygiene scans in a single pass with tiered escalation (T1679).\n*\n* Steps:\n* 1. Kill-switch check → abort if active.\n* 2. Resolve tasks.db (injected or real).\n* 3. Resolve LLM call function (injected or real).\n* 4. Build Jaccard corpus from recent active tasks.\n* 5. Run Scan 1 (orphan), Scan 2 (top-level), Scan 3 (content), Scan 4 (premature-close).\n* 6. Escalate ambiguous findings through Jaccard → LLM tiers.\n* 7. Emit BRAIN observations for each check that found real defects.\n*\n* @param options - Scan options (see {@link HygieneScanOptions})\n* @returns {@link HygieneScanOutcome}\n*\n* @task T1636\n* @task T1679\n*/\nasync function runHygieneScan(options) {\n\tconst { projectRoot, statePath } = options;\n\tconst emptyChecks = {\n\t\torphan: {\n\t\t\tfound: 0,\n\t\t\tobserved: 0,\n\t\t\tdetail: \"\"\n\t\t},\n\t\ttopLevelOrphan: {\n\t\t\tfound: 0,\n\t\t\tobserved: 0,\n\t\t\tdetail: \"\"\n\t\t},\n\t\tcontentDefect: {\n\t\t\tfound: 0,\n\t\t\tobserved: 0,\n\t\t\tdetail: \"\"\n\t\t},\n\t\tprematureCloseLeak: {\n\t\t\tfound: 0,\n\t\t\tobserved: 0,\n\t\t\tdetail: \"\"\n\t\t}\n\t};\n\tif (await (options.isKilled ? options.isKilled() : (async () => {\n\t\tconst { readSentientState } = await import(\"./state.js\");\n\t\treturn (await readSentientState(statePath)).killSwitch === true;\n\t})())) return {\n\t\tkind: \"killed\",\n\t\tchecks: emptyChecks,\n\t\ttotalObserved: 0,\n\t\tllmStats: emptyLlmStats(),\n\t\tdetail: \"killSwitch active — hygiene scan skipped\"\n\t};\n\tlet db;\n\tif (options.db !== void 0) db = options.db;\n\telse try {\n\t\tconst { getNativeDb, getDb } = await import(\"./sqlite2.js\");\n\t\tawait getDb(projectRoot);\n\t\tdb = getNativeDb(projectRoot);\n\t} catch {\n\t\tdb = null;\n\t}\n\tif (!db) return {\n\t\tkind: \"no-db\",\n\t\tchecks: emptyChecks,\n\t\ttotalObserved: 0,\n\t\tllmStats: emptyLlmStats(),\n\t\tdetail: \"tasks.db not available — hygiene scan skipped\"\n\t};\n\tconst observe = options.observeMemory ?? (async (params, root) => {\n\t\tconst { memoryObserve } = await import(\"./internal2.js\");\n\t\treturn memoryObserve(params, root);\n\t});\n\tlet callLlm;\n\tif (options.callLlm !== void 0) callLlm = options.callLlm;\n\telse callLlm = await buildRealLlmCallFn(projectRoot);\n\tconst maxLlmCalls = options.maxLlmCallsPerCycle ?? 50;\n\tconst recentActivityTokens = options.recentActivityTokens ?? queryRecentActivityTokens(db) ?? /* @__PURE__ */ new Set();\n\tconst llmStats = emptyLlmStats();\n\tconst ctx = {\n\t\tcallLlm,\n\t\tmaxLlmCalls,\n\t\tllmCallCount: 0,\n\t\trecentActivityTokens,\n\t\tstats: llmStats,\n\t\tobserve,\n\t\tprojectRoot\n\t};\n\tconst workingTasks = queryWorkingTasks(db);\n\tconst orphan = await scanOrphanTasks(db, workingTasks, observe, projectRoot, ctx);\n\tconst topLevelOrphan = await scanTopLevelOrphanTasks(db, observe, projectRoot);\n\tconst contentDefect = await scanContentDefects(workingTasks, observe, projectRoot);\n\tconst prematureCloseLeak = await scanPrematureCloseLeaks(db, observe, projectRoot);\n\tconst totalObserved = orphan.observed + topLevelOrphan.observed + contentDefect.observed + prematureCloseLeak.observed;\n\tconst totalFound = orphan.found + topLevelOrphan.found + contentDefect.found + prematureCloseLeak.found;\n\tif (ctx.llmCallCount >= maxLlmCalls && maxLlmCalls > 0) process.stderr.write(`[hygiene-scan] Warning: LLM call budget cap (${maxLlmCalls}) reached during this cycle. Some ambiguous findings were emitted as plain observations.\\n`);\n\treturn {\n\t\tkind: \"scanned\",\n\t\tchecks: {\n\t\t\torphan,\n\t\t\ttopLevelOrphan,\n\t\t\tcontentDefect,\n\t\t\tprematureCloseLeak\n\t\t},\n\t\ttotalObserved,\n\t\tllmStats,\n\t\tdetail: `scanned ${workingTasks.length} working task(s); ${totalFound} issue(s) found across 4 checks; ${totalObserved} observation(s) emitted; LLM calls: ${ctx.llmCallCount}/${maxLlmCalls}`\n\t};\n}\n/**\n* Safe wrapper for {@link runHygieneScan} — swallows unexpected exceptions.\n*\n* Used from `safeRunTick` in tick.ts as a fire-and-forget best-effort call.\n* Errors never propagate to the tick caller.\n*\n* @param options - Scan options\n* @returns Scan outcome or an error outcome on unexpected throw.\n*\n* @task T1636\n* @task T1679\n*/\nasync function safeRunHygieneScan(options) {\n\ttry {\n\t\treturn await runHygieneScan(options);\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\treturn {\n\t\t\tkind: \"error\",\n\t\t\tchecks: {\n\t\t\t\torphan: {\n\t\t\t\t\tfound: 0,\n\t\t\t\t\tobserved: 0,\n\t\t\t\t\tdetail: \"\"\n\t\t\t\t},\n\t\t\t\ttopLevelOrphan: {\n\t\t\t\t\tfound: 0,\n\t\t\t\t\tobserved: 0,\n\t\t\t\t\tdetail: \"\"\n\t\t\t\t},\n\t\t\t\tcontentDefect: {\n\t\t\t\t\tfound: 0,\n\t\t\t\t\tobserved: 0,\n\t\t\t\t\tdetail: \"\"\n\t\t\t\t},\n\t\t\t\tprematureCloseLeak: {\n\t\t\t\t\tfound: 0,\n\t\t\t\t\tobserved: 0,\n\t\t\t\t\tdetail: \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\ttotalObserved: 0,\n\t\t\tllmStats: emptyLlmStats(),\n\t\t\tdetail: `hygiene scan threw: ${message}`\n\t\t};\n\t}\n}\n//#endregion\nexport { LLM_CONFIDENCE_PROPOSE as a, safeRunHygieneScan as c, LLM_CONFIDENCE_AUTO_EXECUTE as i, tokenize as l, JACCARD_AMBIGUITY_HIGH as n, jaccardSimilarity as o, JACCARD_AMBIGUITY_LOW as r, runHygieneScan as s, HygieneEscalationResultSchema as t };\n","import { i as __require, t as __commonJSMin } from \"./chunk.js\";\nimport \"./dist.js\";\nimport { t as getLogger } from \"./logger.js\";\nimport { It as WHOAMI_ROLE_IDS } from \"./dist2.js\";\nimport \"./errors.js\";\nimport \"./paths.js\";\nimport \"./data-accessor2.js\";\nimport \"./src2.js\";\nimport \"./evidence.js\";\nimport \"./branch-lock.js\";\nimport { s as setConfigValue } from \"./config.js\";\nimport \"./registry5.js\";\nimport { s as addCredential } from \"./credential-pool.js\";\nimport { n as getProviderProfile } from \"./provider-registry.js\";\nimport { i as validateModelForProvider, r as resolveProviderDefaultModel, t as catalogKeyForProvider } from \"./catalog-model-resolver2.js\";\nimport { t as resolveLLMForSystem } from \"./system-resolver.js\";\nimport \"./registry6.js\";\nimport \"./propose-tick.js\";\nimport \"./state2.js\";\nimport \"./dream-cycle3.js\";\nimport \"./hygiene-scan2.js\";\nimport \"./stage-drift-tick2.js\";\nimport \"./worktree-dispatch.js\";\nimport \"node:fs\";\nimport \"node:path\";\nimport \"node:child_process\";\nimport \"node:crypto\";\nimport \"node:url\";\nimport \"node:fs/promises\";\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/create-id.js\nvar require_create_id = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.createID = createID;\n\tvar node_crypto_1 = __importDefault(__require(\"node:crypto\"));\n\tfunction createID(prefix = \"\", length = 16) {\n\t\tconst charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tconst values = node_crypto_1.default.randomBytes(length);\n\t\tconst id = Array.from(values, (v) => charset[v % 62]).join(\"\");\n\t\treturn prefix ? `${prefix}-${id}` : id;\n\t}\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/logger.js\nvar require_logger = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar levelColors = {\n\t\tINFO: \"\\x1B[36m\",\n\t\tWARN: \"\\x1B[33m\",\n\t\tERROR: \"\\x1B[31m\",\n\t\tDEBUG: \"\\x1B[35m\"\n\t};\n\tvar GREEN = \"\\x1B[32m\";\n\tvar RESET = \"\\x1B[0m\";\n\tfunction log(level, message, extra) {\n\t\tconst timestamp = (/* @__PURE__ */ new Date()).toISOString();\n\t\tconst color = levelColors[level] ?? \"\";\n\t\tconst output = `${`[${timestamp}] [PID: ${process.pid}] ${GREEN}[NODE-CRON]${GREEN} ${color}[${level}]${RESET}`} ${message}`;\n\t\tswitch (level) {\n\t\t\tcase \"ERROR\":\n\t\t\t\tconsole.error(output, extra ?? \"\");\n\t\t\t\tbreak;\n\t\t\tcase \"DEBUG\":\n\t\t\t\tconsole.debug(output, extra ?? \"\");\n\t\t\t\tbreak;\n\t\t\tcase \"WARN\":\n\t\t\t\tconsole.warn(output);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.info(output);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\texports.default = {\n\t\tinfo(message) {\n\t\t\tlog(\"INFO\", message);\n\t\t},\n\t\twarn(message) {\n\t\t\tlog(\"WARN\", message);\n\t\t},\n\t\terror(message, err) {\n\t\t\tif (message instanceof Error) log(\"ERROR\", message.message, message);\n\t\t\telse log(\"ERROR\", message, err);\n\t\t},\n\t\tdebug(message, err) {\n\t\t\tif (message instanceof Error) log(\"DEBUG\", message.message, message);\n\t\t\telse log(\"DEBUG\", message, err);\n\t\t}\n\t};\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/promise/tracked-promise.js\nvar require_tracked_promise = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TrackedPromise = void 0;\n\tvar TrackedPromise = class {\n\t\tpromise;\n\t\terror;\n\t\tstate;\n\t\tvalue;\n\t\tconstructor(executor) {\n\t\t\tthis.state = \"pending\";\n\t\t\tthis.promise = new Promise((resolve, reject) => {\n\t\t\t\texecutor((value) => {\n\t\t\t\t\tthis.state = \"fulfilled\";\n\t\t\t\t\tthis.value = value;\n\t\t\t\t\tresolve(value);\n\t\t\t\t}, (error) => {\n\t\t\t\t\tthis.state = \"rejected\";\n\t\t\t\t\tthis.error = error;\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tgetPromise() {\n\t\t\treturn this.promise;\n\t\t}\n\t\tgetState() {\n\t\t\treturn this.state;\n\t\t}\n\t\tisPending() {\n\t\t\treturn this.state === \"pending\";\n\t\t}\n\t\tisFulfilled() {\n\t\t\treturn this.state === \"fulfilled\";\n\t\t}\n\t\tisRejected() {\n\t\t\treturn this.state === \"rejected\";\n\t\t}\n\t\tgetValue() {\n\t\t\treturn this.value;\n\t\t}\n\t\tgetError() {\n\t\t\treturn this.error;\n\t\t}\n\t\tthen(onfulfilled, onrejected) {\n\t\t\treturn this.promise.then(onfulfilled, onrejected);\n\t\t}\n\t\tcatch(onrejected) {\n\t\t\treturn this.promise.catch(onrejected);\n\t\t}\n\t\tfinally(onfinally) {\n\t\t\treturn this.promise.finally(onfinally);\n\t\t}\n\t};\n\texports.TrackedPromise = TrackedPromise;\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/scheduler/runner.js\nvar require_runner = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Runner = void 0;\n\tvar create_id_1 = require_create_id();\n\tvar logger_1 = __importDefault(require_logger());\n\tvar tracked_promise_1 = require_tracked_promise();\n\tfunction emptyOnFn() {}\n\tfunction emptyHookFn() {\n\t\treturn true;\n\t}\n\tfunction defaultOnError(date, error) {\n\t\tlogger_1.default.error(\"Task failed with error!\", error);\n\t}\n\tvar Runner = class {\n\t\ttimeMatcher;\n\t\tonMatch;\n\t\tnoOverlap;\n\t\tmaxExecutions;\n\t\tmaxRandomDelay;\n\t\trunCount;\n\t\trunning;\n\t\theartBeatTimeout;\n\t\tonMissedExecution;\n\t\tonOverlap;\n\t\tonError;\n\t\tbeforeRun;\n\t\tonFinished;\n\t\tonMaxExecutions;\n\t\tconstructor(timeMatcher, onMatch, options) {\n\t\t\tthis.timeMatcher = timeMatcher;\n\t\t\tthis.onMatch = onMatch;\n\t\t\tthis.noOverlap = options == void 0 || options.noOverlap === void 0 ? false : options.noOverlap;\n\t\t\tthis.maxExecutions = options?.maxExecutions;\n\t\t\tthis.maxRandomDelay = options?.maxRandomDelay || 0;\n\t\t\tthis.onMissedExecution = options?.onMissedExecution || emptyOnFn;\n\t\t\tthis.onOverlap = options?.onOverlap || emptyOnFn;\n\t\t\tthis.onError = options?.onError || defaultOnError;\n\t\t\tthis.onFinished = options?.onFinished || emptyHookFn;\n\t\t\tthis.beforeRun = options?.beforeRun || emptyHookFn;\n\t\t\tthis.onMaxExecutions = options?.onMaxExecutions || emptyOnFn;\n\t\t\tthis.runCount = 0;\n\t\t\tthis.running = false;\n\t\t}\n\t\tstart() {\n\t\t\tthis.running = true;\n\t\t\tlet lastExecution;\n\t\t\tlet expectedNextExecution;\n\t\t\tconst scheduleNextHeartBeat = (currentDate) => {\n\t\t\t\tif (this.running) {\n\t\t\t\t\tclearTimeout(this.heartBeatTimeout);\n\t\t\t\t\tthis.heartBeatTimeout = setTimeout(heartBeat, getDelay(this.timeMatcher, currentDate));\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst runTask = (date) => {\n\t\t\t\treturn new Promise(async (resolve) => {\n\t\t\t\t\tconst execution = {\n\t\t\t\t\t\tid: (0, create_id_1.createID)(\"exec\"),\n\t\t\t\t\t\treason: \"scheduled\"\n\t\t\t\t\t};\n\t\t\t\t\tconst shouldExecute = await this.beforeRun(date, execution);\n\t\t\t\t\tconst randomDelay = Math.floor(Math.random() * this.maxRandomDelay);\n\t\t\t\t\tif (shouldExecute) setTimeout(async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tthis.runCount++;\n\t\t\t\t\t\t\texecution.startedAt = /* @__PURE__ */ new Date();\n\t\t\t\t\t\t\tconst result = await this.onMatch(date, execution);\n\t\t\t\t\t\t\texecution.finishedAt = /* @__PURE__ */ new Date();\n\t\t\t\t\t\t\texecution.result = result;\n\t\t\t\t\t\t\tthis.onFinished(date, execution);\n\t\t\t\t\t\t\tif (this.maxExecutions && this.runCount >= this.maxExecutions) {\n\t\t\t\t\t\t\t\tthis.onMaxExecutions(date);\n\t\t\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\texecution.finishedAt = /* @__PURE__ */ new Date();\n\t\t\t\t\t\t\texecution.error = error;\n\t\t\t\t\t\t\tthis.onError(date, error, execution);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}, randomDelay);\n\t\t\t\t});\n\t\t\t};\n\t\t\tconst checkAndRun = (date) => {\n\t\t\t\treturn new tracked_promise_1.TrackedPromise(async (resolve, reject) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (this.timeMatcher.match(date)) await runTask(date);\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\tconst heartBeat = async () => {\n\t\t\t\tconst currentDate = nowWithoutMs();\n\t\t\t\tif (expectedNextExecution && expectedNextExecution.getTime() < currentDate.getTime()) while (expectedNextExecution.getTime() < currentDate.getTime()) {\n\t\t\t\t\tlogger_1.default.warn(`missed execution at ${expectedNextExecution}! Possible blocking IO or high CPU user at the same process used by node-cron.`);\n\t\t\t\t\texpectedNextExecution = this.timeMatcher.getNextMatch(expectedNextExecution);\n\t\t\t\t\trunAsync(this.onMissedExecution, expectedNextExecution, defaultOnError);\n\t\t\t\t}\n\t\t\t\tif (lastExecution && lastExecution.getState() === \"pending\") {\n\t\t\t\t\trunAsync(this.onOverlap, currentDate, defaultOnError);\n\t\t\t\t\tif (this.noOverlap) {\n\t\t\t\t\t\tlogger_1.default.warn(\"task still running, new execution blocked by overlap prevention!\");\n\t\t\t\t\t\texpectedNextExecution = this.timeMatcher.getNextMatch(currentDate);\n\t\t\t\t\t\tscheduleNextHeartBeat(currentDate);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastExecution = checkAndRun(currentDate);\n\t\t\t\texpectedNextExecution = this.timeMatcher.getNextMatch(currentDate);\n\t\t\t\tscheduleNextHeartBeat(currentDate);\n\t\t\t};\n\t\t\tthis.heartBeatTimeout = setTimeout(() => {\n\t\t\t\theartBeat();\n\t\t\t}, getDelay(this.timeMatcher, nowWithoutMs()));\n\t\t}\n\t\tnextRun() {\n\t\t\treturn this.timeMatcher.getNextMatch(/* @__PURE__ */ new Date());\n\t\t}\n\t\tstop() {\n\t\t\tthis.running = false;\n\t\t\tif (this.heartBeatTimeout) {\n\t\t\t\tclearTimeout(this.heartBeatTimeout);\n\t\t\t\tthis.heartBeatTimeout = void 0;\n\t\t\t}\n\t\t}\n\t\tisStarted() {\n\t\t\treturn !!this.heartBeatTimeout && this.running;\n\t\t}\n\t\tisStopped() {\n\t\t\treturn !this.isStarted();\n\t\t}\n\t\tasync execute() {\n\t\t\tconst date = /* @__PURE__ */ new Date();\n\t\t\tconst execution = {\n\t\t\t\tid: (0, create_id_1.createID)(\"exec\"),\n\t\t\t\treason: \"invoked\"\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tif (await this.beforeRun(date, execution)) {\n\t\t\t\t\tthis.runCount++;\n\t\t\t\t\texecution.startedAt = /* @__PURE__ */ new Date();\n\t\t\t\t\tconst result = await this.onMatch(date, execution);\n\t\t\t\t\texecution.finishedAt = /* @__PURE__ */ new Date();\n\t\t\t\t\texecution.result = result;\n\t\t\t\t\tthis.onFinished(date, execution);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\texecution.finishedAt = /* @__PURE__ */ new Date();\n\t\t\t\texecution.error = error;\n\t\t\t\tthis.onError(date, error, execution);\n\t\t\t}\n\t\t}\n\t};\n\texports.Runner = Runner;\n\tasync function runAsync(fn, date, onError) {\n\t\ttry {\n\t\t\tawait fn(date);\n\t\t} catch (error) {\n\t\t\tonError(date, error);\n\t\t}\n\t}\n\tfunction getDelay(timeMatcher, currentDate) {\n\t\tconst maxDelay = 864e5;\n\t\tconst nextRun = timeMatcher.getNextMatch(currentDate);\n\t\tconst now = /* @__PURE__ */ new Date();\n\t\tconst delay = nextRun.getTime() - now.getTime();\n\t\tif (delay > maxDelay) return maxDelay;\n\t\treturn Math.max(0, delay);\n\t}\n\tfunction nowWithoutMs() {\n\t\tconst date = /* @__PURE__ */ new Date();\n\t\tdate.setMilliseconds(0);\n\t\treturn date;\n\t}\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/pattern/convertion/month-names-conversion.js\nvar require_month_names_conversion = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = (() => {\n\t\tconst months = [\n\t\t\t\"january\",\n\t\t\t\"february\",\n\t\t\t\"march\",\n\t\t\t\"april\",\n\t\t\t\"may\",\n\t\t\t\"june\",\n\t\t\t\"july\",\n\t\t\t\"august\",\n\t\t\t\"september\",\n\t\t\t\"october\",\n\t\t\t\"november\",\n\t\t\t\"december\"\n\t\t];\n\t\tconst shortMonths = [\n\t\t\t\"jan\",\n\t\t\t\"feb\",\n\t\t\t\"mar\",\n\t\t\t\"apr\",\n\t\t\t\"may\",\n\t\t\t\"jun\",\n\t\t\t\"jul\",\n\t\t\t\"aug\",\n\t\t\t\"sep\",\n\t\t\t\"oct\",\n\t\t\t\"nov\",\n\t\t\t\"dec\"\n\t\t];\n\t\tfunction convertMonthName(expression, items) {\n\t\t\tfor (let i = 0; i < items.length; i++) expression = expression.replace(new RegExp(items[i], \"gi\"), i + 1);\n\t\t\treturn expression;\n\t\t}\n\t\tfunction interprete(monthExpression) {\n\t\t\tmonthExpression = convertMonthName(monthExpression, months);\n\t\t\tmonthExpression = convertMonthName(monthExpression, shortMonths);\n\t\t\treturn monthExpression;\n\t\t}\n\t\treturn interprete;\n\t})();\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/pattern/convertion/week-day-names-conversion.js\nvar require_week_day_names_conversion = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = (() => {\n\t\tconst weekDays = [\n\t\t\t\"sunday\",\n\t\t\t\"monday\",\n\t\t\t\"tuesday\",\n\t\t\t\"wednesday\",\n\t\t\t\"thursday\",\n\t\t\t\"friday\",\n\t\t\t\"saturday\"\n\t\t];\n\t\tconst shortWeekDays = [\n\t\t\t\"sun\",\n\t\t\t\"mon\",\n\t\t\t\"tue\",\n\t\t\t\"wed\",\n\t\t\t\"thu\",\n\t\t\t\"fri\",\n\t\t\t\"sat\"\n\t\t];\n\t\tfunction convertWeekDayName(expression, items) {\n\t\t\tfor (let i = 0; i < items.length; i++) expression = expression.replace(new RegExp(items[i], \"gi\"), i);\n\t\t\treturn expression;\n\t\t}\n\t\tfunction convertWeekDays(expression) {\n\t\t\texpression = expression.replace(\"7\", \"0\");\n\t\t\texpression = convertWeekDayName(expression, weekDays);\n\t\t\treturn convertWeekDayName(expression, shortWeekDays);\n\t\t}\n\t\treturn convertWeekDays;\n\t})();\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/pattern/convertion/asterisk-to-range-conversion.js\nvar require_asterisk_to_range_conversion = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = (() => {\n\t\tfunction convertAsterisk(expression, replecement) {\n\t\t\tif (expression.indexOf(\"*\") !== -1) return expression.replace(\"*\", replecement);\n\t\t\treturn expression;\n\t\t}\n\t\tfunction convertAsterisksToRanges(expressions) {\n\t\t\texpressions[0] = convertAsterisk(expressions[0], \"0-59\");\n\t\t\texpressions[1] = convertAsterisk(expressions[1], \"0-59\");\n\t\t\texpressions[2] = convertAsterisk(expressions[2], \"0-23\");\n\t\t\texpressions[3] = convertAsterisk(expressions[3], \"1-31\");\n\t\t\texpressions[4] = convertAsterisk(expressions[4], \"1-12\");\n\t\t\texpressions[5] = convertAsterisk(expressions[5], \"0-6\");\n\t\t\treturn expressions;\n\t\t}\n\t\treturn convertAsterisksToRanges;\n\t})();\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/pattern/convertion/range-conversion.js\nvar require_range_conversion = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = (() => {\n\t\tfunction replaceWithRange(expression, text, init, end, stepTxt) {\n\t\t\tconst step = parseInt(stepTxt);\n\t\t\tconst numbers = [];\n\t\t\tlet last = parseInt(end);\n\t\t\tlet first = parseInt(init);\n\t\t\tif (first > last) {\n\t\t\t\tlast = parseInt(init);\n\t\t\t\tfirst = parseInt(end);\n\t\t\t}\n\t\t\tfor (let i = first; i <= last; i += step) numbers.push(i);\n\t\t\treturn expression.replace(new RegExp(text, \"i\"), numbers.join());\n\t\t}\n\t\tfunction convertRange(expression) {\n\t\t\tconst rangeRegEx = /(\\d+)-(\\d+)(\\/(\\d+)|)/;\n\t\t\tlet match = rangeRegEx.exec(expression);\n\t\t\twhile (match !== null && match.length > 0) {\n\t\t\t\texpression = replaceWithRange(expression, match[0], match[1], match[2], match[4] || \"1\");\n\t\t\t\tmatch = rangeRegEx.exec(expression);\n\t\t\t}\n\t\t\treturn expression;\n\t\t}\n\t\tfunction convertAllRanges(expressions) {\n\t\t\tfor (let i = 0; i < expressions.length; i++) expressions[i] = convertRange(expressions[i]);\n\t\t\treturn expressions;\n\t\t}\n\t\treturn convertAllRanges;\n\t})();\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/pattern/convertion/index.js\nvar require_convertion = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar month_names_conversion_1 = __importDefault(require_month_names_conversion());\n\tvar week_day_names_conversion_1 = __importDefault(require_week_day_names_conversion());\n\tvar asterisk_to_range_conversion_1 = __importDefault(require_asterisk_to_range_conversion());\n\tvar range_conversion_1 = __importDefault(require_range_conversion());\n\texports.default = (() => {\n\t\tfunction appendSeccondExpression(expressions) {\n\t\t\tif (expressions.length === 5) return [\"0\"].concat(expressions);\n\t\t\treturn expressions;\n\t\t}\n\t\tfunction removeSpaces(str) {\n\t\t\treturn str.replace(/\\s{2,}/g, \" \").trim();\n\t\t}\n\t\tfunction normalizeIntegers(expressions) {\n\t\t\tfor (let i = 0; i < expressions.length; i++) {\n\t\t\t\tconst numbers = expressions[i].split(\",\");\n\t\t\t\tfor (let j = 0; j < numbers.length; j++) numbers[j] = parseInt(numbers[j]);\n\t\t\t\texpressions[i] = numbers;\n\t\t\t}\n\t\t\treturn expressions;\n\t\t}\n\t\tfunction interprete(expression) {\n\t\t\tlet expressions = removeSpaces(`${expression}`).split(\" \");\n\t\t\texpressions = appendSeccondExpression(expressions);\n\t\t\texpressions[4] = (0, month_names_conversion_1.default)(expressions[4]);\n\t\t\texpressions[5] = (0, week_day_names_conversion_1.default)(expressions[5]);\n\t\t\texpressions = (0, asterisk_to_range_conversion_1.default)(expressions);\n\t\t\texpressions = (0, range_conversion_1.default)(expressions);\n\t\t\texpressions = normalizeIntegers(expressions);\n\t\t\treturn expressions;\n\t\t}\n\t\treturn interprete;\n\t})();\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/time/localized-time.js\nvar require_localized_time = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.LocalizedTime = void 0;\n\tvar LocalizedTime = class {\n\t\ttimestamp;\n\t\tparts;\n\t\ttimezone;\n\t\tconstructor(date, timezone) {\n\t\t\tthis.timestamp = date.getTime();\n\t\t\tthis.timezone = timezone;\n\t\t\tthis.parts = buildDateParts(date, timezone);\n\t\t}\n\t\ttoDate() {\n\t\t\treturn new Date(this.timestamp);\n\t\t}\n\t\ttoISO() {\n\t\t\tconst gmt = this.parts.gmt.replace(/^GMT/, \"\");\n\t\t\tconst offset = gmt ? gmt : \"Z\";\n\t\t\tconst pad = (n) => String(n).padStart(2, \"0\");\n\t\t\treturn `${this.parts.year}-${pad(this.parts.month)}-${pad(this.parts.day)}T${pad(this.parts.hour)}:${pad(this.parts.minute)}:${pad(this.parts.second)}.${String(this.parts.milisecond).padStart(3, \"0\")}` + offset;\n\t\t}\n\t\tgetParts() {\n\t\t\treturn this.parts;\n\t\t}\n\t\tset(field, value) {\n\t\t\tthis.parts[field] = value;\n\t\t\tconst newDate = new Date(this.toISO());\n\t\t\tthis.timestamp = newDate.getTime();\n\t\t\tthis.parts = buildDateParts(newDate, this.timezone);\n\t\t}\n\t};\n\texports.LocalizedTime = LocalizedTime;\n\tfunction buildDateParts(date, timezone) {\n\t\tconst dftOptions = {\n\t\t\tyear: \"numeric\",\n\t\t\tmonth: \"2-digit\",\n\t\t\tday: \"2-digit\",\n\t\t\thour: \"2-digit\",\n\t\t\tminute: \"2-digit\",\n\t\t\tsecond: \"2-digit\",\n\t\t\tweekday: \"short\",\n\t\t\thour12: false\n\t\t};\n\t\tif (timezone) dftOptions.timeZone = timezone;\n\t\tconst parts = new Intl.DateTimeFormat(\"en-US\", dftOptions).formatToParts(date).filter((part) => {\n\t\t\treturn part.type !== \"literal\";\n\t\t}).reduce((acc, part) => {\n\t\t\tacc[part.type] = part.value;\n\t\t\treturn acc;\n\t\t}, {});\n\t\treturn {\n\t\t\tday: parseInt(parts.day),\n\t\t\tmonth: parseInt(parts.month),\n\t\t\tyear: parseInt(parts.year),\n\t\t\thour: parts.hour === \"24\" ? 0 : parseInt(parts.hour),\n\t\t\tminute: parseInt(parts.minute),\n\t\t\tsecond: parseInt(parts.second),\n\t\t\tmilisecond: date.getMilliseconds(),\n\t\t\tweekday: parts.weekday,\n\t\t\tgmt: getTimezoneGMT(date, timezone)\n\t\t};\n\t}\n\tfunction getTimezoneGMT(date, timezone) {\n\t\tconst utcDate = new Date(date.toLocaleString(\"en-US\", { timeZone: \"UTC\" }));\n\t\tconst tzDate = new Date(date.toLocaleString(\"en-US\", { timeZone: timezone }));\n\t\tlet offsetInMinutes = (utcDate.getTime() - tzDate.getTime()) / 6e4;\n\t\tconst sign = offsetInMinutes <= 0 ? \"+\" : \"-\";\n\t\toffsetInMinutes = Math.abs(offsetInMinutes);\n\t\tif (offsetInMinutes === 0) return \"Z\";\n\t\treturn `GMT${sign}${Math.floor(offsetInMinutes / 60).toString().padStart(2, \"0\")}:${Math.floor(offsetInMinutes % 60).toString().padStart(2, \"0\")}`;\n\t}\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/time/matcher-walker.js\nvar require_matcher_walker = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.MatcherWalker = void 0;\n\tvar convertion_1 = __importDefault(require_convertion());\n\tvar localized_time_1 = require_localized_time();\n\tvar time_matcher_1 = require_time_matcher();\n\tvar week_day_names_conversion_1 = __importDefault(require_week_day_names_conversion());\n\tvar MatcherWalker = class {\n\t\tcronExpression;\n\t\tbaseDate;\n\t\tpattern;\n\t\texpressions;\n\t\ttimeMatcher;\n\t\ttimezone;\n\t\tconstructor(cronExpression, baseDate, timezone) {\n\t\t\tthis.cronExpression = cronExpression;\n\t\t\tthis.baseDate = baseDate;\n\t\t\tthis.timeMatcher = new time_matcher_1.TimeMatcher(cronExpression, timezone);\n\t\t\tthis.timezone = timezone;\n\t\t\tthis.expressions = (0, convertion_1.default)(cronExpression);\n\t\t}\n\t\tisMatching() {\n\t\t\treturn this.timeMatcher.match(this.baseDate);\n\t\t}\n\t\tmatchNext() {\n\t\t\tconst findNextDateIgnoringWeekday = () => {\n\t\t\t\tconst baseDate = new Date(this.baseDate.getTime());\n\t\t\t\tbaseDate.setMilliseconds(0);\n\t\t\t\tconst localTime = new localized_time_1.LocalizedTime(baseDate, this.timezone);\n\t\t\t\tconst dateParts = localTime.getParts();\n\t\t\t\tconst date = new localized_time_1.LocalizedTime(localTime.toDate(), this.timezone);\n\t\t\t\tconst seconds = this.expressions[0];\n\t\t\t\tconst nextSecond = availableValue(seconds, dateParts.second);\n\t\t\t\tif (nextSecond) {\n\t\t\t\t\tdate.set(\"second\", nextSecond);\n\t\t\t\t\tif (this.timeMatcher.match(date.toDate())) return date;\n\t\t\t\t}\n\t\t\t\tdate.set(\"second\", seconds[0]);\n\t\t\t\tconst minutes = this.expressions[1];\n\t\t\t\tconst nextMinute = availableValue(minutes, dateParts.minute);\n\t\t\t\tif (nextMinute) {\n\t\t\t\t\tdate.set(\"minute\", nextMinute);\n\t\t\t\t\tif (this.timeMatcher.match(date.toDate())) return date;\n\t\t\t\t}\n\t\t\t\tdate.set(\"minute\", minutes[0]);\n\t\t\t\tconst hours = this.expressions[2];\n\t\t\t\tconst nextHour = availableValue(hours, dateParts.hour);\n\t\t\t\tif (nextHour) {\n\t\t\t\t\tdate.set(\"hour\", nextHour);\n\t\t\t\t\tif (this.timeMatcher.match(date.toDate())) return date;\n\t\t\t\t}\n\t\t\t\tdate.set(\"hour\", hours[0]);\n\t\t\t\tconst days = this.expressions[3];\n\t\t\t\tconst nextDay = availableValue(days, dateParts.day);\n\t\t\t\tif (nextDay) {\n\t\t\t\t\tdate.set(\"day\", nextDay);\n\t\t\t\t\tif (this.timeMatcher.match(date.toDate())) return date;\n\t\t\t\t}\n\t\t\t\tdate.set(\"day\", days[0]);\n\t\t\t\tconst months = this.expressions[4];\n\t\t\t\tconst nextMonth = availableValue(months, dateParts.month);\n\t\t\t\tif (nextMonth) {\n\t\t\t\t\tdate.set(\"month\", nextMonth);\n\t\t\t\t\tif (this.timeMatcher.match(date.toDate())) return date;\n\t\t\t\t}\n\t\t\t\tdate.set(\"year\", date.getParts().year + 1);\n\t\t\t\tdate.set(\"month\", months[0]);\n\t\t\t\treturn date;\n\t\t\t};\n\t\t\tconst date = findNextDateIgnoringWeekday();\n\t\t\tconst weekdays = this.expressions[5];\n\t\t\tlet currentWeekday = parseInt((0, week_day_names_conversion_1.default)(date.getParts().weekday));\n\t\t\twhile (!(weekdays.indexOf(currentWeekday) > -1)) {\n\t\t\t\tdate.set(\"year\", date.getParts().year + 1);\n\t\t\t\tcurrentWeekday = parseInt((0, week_day_names_conversion_1.default)(date.getParts().weekday));\n\t\t\t}\n\t\t\treturn date;\n\t\t}\n\t};\n\texports.MatcherWalker = MatcherWalker;\n\tfunction availableValue(values, currentValue) {\n\t\tconst availableValues = values.sort((a, b) => a - b).filter((s) => s > currentValue);\n\t\tif (availableValues.length > 0) return availableValues[0];\n\t\treturn false;\n\t}\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/time/time-matcher.js\nvar require_time_matcher = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TimeMatcher = void 0;\n\tvar index_1 = __importDefault(require_convertion());\n\tvar week_day_names_conversion_1 = __importDefault(require_week_day_names_conversion());\n\tvar localized_time_1 = require_localized_time();\n\tvar matcher_walker_1 = require_matcher_walker();\n\tfunction matchValue(allowedValues, value) {\n\t\treturn allowedValues.indexOf(value) !== -1;\n\t}\n\tvar TimeMatcher = class {\n\t\ttimezone;\n\t\tpattern;\n\t\texpressions;\n\t\tconstructor(pattern, timezone) {\n\t\t\tthis.timezone = timezone;\n\t\t\tthis.pattern = pattern;\n\t\t\tthis.expressions = (0, index_1.default)(pattern);\n\t\t}\n\t\tmatch(date) {\n\t\t\tconst parts = new localized_time_1.LocalizedTime(date, this.timezone).getParts();\n\t\t\tconst runOnSecond = matchValue(this.expressions[0], parts.second);\n\t\t\tconst runOnMinute = matchValue(this.expressions[1], parts.minute);\n\t\t\tconst runOnHour = matchValue(this.expressions[2], parts.hour);\n\t\t\tconst runOnDay = matchValue(this.expressions[3], parts.day);\n\t\t\tconst runOnMonth = matchValue(this.expressions[4], parts.month);\n\t\t\tconst runOnWeekDay = matchValue(this.expressions[5], parseInt((0, week_day_names_conversion_1.default)(parts.weekday)));\n\t\t\treturn runOnSecond && runOnMinute && runOnHour && runOnDay && runOnMonth && runOnWeekDay;\n\t\t}\n\t\tgetNextMatch(date) {\n\t\t\treturn new matcher_walker_1.MatcherWalker(this.pattern, date, this.timezone).matchNext().toDate();\n\t\t}\n\t};\n\texports.TimeMatcher = TimeMatcher;\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/tasks/state-machine.js\nvar require_state_machine = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.StateMachine = void 0;\n\tvar allowedTransitions = {\n\t\t\"stopped\": [\n\t\t\t\"stopped\",\n\t\t\t\"idle\",\n\t\t\t\"destroyed\"\n\t\t],\n\t\t\"idle\": [\n\t\t\t\"idle\",\n\t\t\t\"running\",\n\t\t\t\"stopped\",\n\t\t\t\"destroyed\"\n\t\t],\n\t\t\"running\": [\n\t\t\t\"running\",\n\t\t\t\"idle\",\n\t\t\t\"stopped\",\n\t\t\t\"destroyed\"\n\t\t],\n\t\t\"destroyed\": [\"destroyed\"]\n\t};\n\tvar StateMachine = class {\n\t\tstate;\n\t\tconstructor(initial = \"stopped\") {\n\t\t\tthis.state = initial;\n\t\t}\n\t\tchangeState(state) {\n\t\t\tif (allowedTransitions[this.state].includes(state)) this.state = state;\n\t\t\telse throw new Error(`invalid transition from ${this.state} to ${state}`);\n\t\t}\n\t};\n\texports.StateMachine = StateMachine;\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/tasks/inline-scheduled-task.js\nvar require_inline_scheduled_task = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.InlineScheduledTask = void 0;\n\tvar events_1 = __importDefault(__require(\"events\"));\n\tvar runner_1 = require_runner();\n\tvar time_matcher_1 = require_time_matcher();\n\tvar create_id_1 = require_create_id();\n\tvar state_machine_1 = require_state_machine();\n\tvar logger_1 = __importDefault(require_logger());\n\tvar localized_time_1 = require_localized_time();\n\tvar TaskEmitter = class extends events_1.default {};\n\tvar InlineScheduledTask = class {\n\t\temitter;\n\t\tcronExpression;\n\t\ttimeMatcher;\n\t\trunner;\n\t\tid;\n\t\tname;\n\t\tstateMachine;\n\t\ttimezone;\n\t\tconstructor(cronExpression, taskFn, options) {\n\t\t\tthis.emitter = new TaskEmitter();\n\t\t\tthis.cronExpression = cronExpression;\n\t\t\tthis.id = (0, create_id_1.createID)(\"task\", 12);\n\t\t\tthis.name = options?.name || this.id;\n\t\t\tthis.timezone = options?.timezone;\n\t\t\tthis.timeMatcher = new time_matcher_1.TimeMatcher(cronExpression, options?.timezone);\n\t\t\tthis.stateMachine = new state_machine_1.StateMachine();\n\t\t\tconst runnerOptions = {\n\t\t\t\ttimezone: options?.timezone,\n\t\t\t\tnoOverlap: options?.noOverlap,\n\t\t\t\tmaxExecutions: options?.maxExecutions,\n\t\t\t\tmaxRandomDelay: options?.maxRandomDelay,\n\t\t\t\tbeforeRun: (date, execution) => {\n\t\t\t\t\tif (execution.reason === \"scheduled\") this.changeState(\"running\");\n\t\t\t\t\tthis.emitter.emit(\"execution:started\", this.createContext(date, execution));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tonFinished: (date, execution) => {\n\t\t\t\t\tif (execution.reason === \"scheduled\") this.changeState(\"idle\");\n\t\t\t\t\tthis.emitter.emit(\"execution:finished\", this.createContext(date, execution));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tonError: (date, error, execution) => {\n\t\t\t\t\tlogger_1.default.error(error);\n\t\t\t\t\tthis.emitter.emit(\"execution:failed\", this.createContext(date, execution));\n\t\t\t\t\tthis.changeState(\"idle\");\n\t\t\t\t},\n\t\t\t\tonOverlap: (date) => {\n\t\t\t\t\tthis.emitter.emit(\"execution:overlap\", this.createContext(date));\n\t\t\t\t},\n\t\t\t\tonMissedExecution: (date) => {\n\t\t\t\t\tthis.emitter.emit(\"execution:missed\", this.createContext(date));\n\t\t\t\t},\n\t\t\t\tonMaxExecutions: (date) => {\n\t\t\t\t\tthis.emitter.emit(\"execution:maxReached\", this.createContext(date));\n\t\t\t\t\tthis.destroy();\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.runner = new runner_1.Runner(this.timeMatcher, (date, execution) => {\n\t\t\t\treturn taskFn(this.createContext(date, execution));\n\t\t\t}, runnerOptions);\n\t\t}\n\t\tgetNextRun() {\n\t\t\tif (this.stateMachine.state !== \"stopped\") return this.runner.nextRun();\n\t\t\treturn null;\n\t\t}\n\t\tchangeState(state) {\n\t\t\tif (this.runner.isStarted()) this.stateMachine.changeState(state);\n\t\t}\n\t\tstart() {\n\t\t\tif (this.runner.isStopped()) {\n\t\t\t\tthis.runner.start();\n\t\t\t\tthis.stateMachine.changeState(\"idle\");\n\t\t\t\tthis.emitter.emit(\"task:started\", this.createContext(/* @__PURE__ */ new Date()));\n\t\t\t}\n\t\t}\n\t\tstop() {\n\t\t\tif (this.runner.isStarted()) {\n\t\t\t\tthis.runner.stop();\n\t\t\t\tthis.stateMachine.changeState(\"stopped\");\n\t\t\t\tthis.emitter.emit(\"task:stopped\", this.createContext(/* @__PURE__ */ new Date()));\n\t\t\t}\n\t\t}\n\t\tgetStatus() {\n\t\t\treturn this.stateMachine.state;\n\t\t}\n\t\tdestroy() {\n\t\t\tif (this.stateMachine.state === \"destroyed\") return;\n\t\t\tthis.stop();\n\t\t\tthis.stateMachine.changeState(\"destroyed\");\n\t\t\tthis.emitter.emit(\"task:destroyed\", this.createContext(/* @__PURE__ */ new Date()));\n\t\t}\n\t\texecute() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst onFail = (context) => {\n\t\t\t\t\tthis.off(\"execution:finished\", onFail);\n\t\t\t\t\treject(context.execution?.error);\n\t\t\t\t};\n\t\t\t\tconst onFinished = (context) => {\n\t\t\t\t\tthis.off(\"execution:failed\", onFail);\n\t\t\t\t\tresolve(context.execution?.result);\n\t\t\t\t};\n\t\t\t\tthis.once(\"execution:finished\", onFinished);\n\t\t\t\tthis.once(\"execution:failed\", onFail);\n\t\t\t\tthis.runner.execute();\n\t\t\t});\n\t\t}\n\t\ton(event, fun) {\n\t\t\tthis.emitter.on(event, fun);\n\t\t}\n\t\toff(event, fun) {\n\t\t\tthis.emitter.off(event, fun);\n\t\t}\n\t\tonce(event, fun) {\n\t\t\tthis.emitter.once(event, fun);\n\t\t}\n\t\tcreateContext(executionDate, execution) {\n\t\t\tconst localTime = new localized_time_1.LocalizedTime(executionDate, this.timezone);\n\t\t\treturn {\n\t\t\t\tdate: localTime.toDate(),\n\t\t\t\tdateLocalIso: localTime.toISO(),\n\t\t\t\ttriggeredAt: /* @__PURE__ */ new Date(),\n\t\t\t\ttask: this,\n\t\t\t\texecution\n\t\t\t};\n\t\t}\n\t};\n\texports.InlineScheduledTask = InlineScheduledTask;\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/task-registry.js\nvar require_task_registry = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TaskRegistry = void 0;\n\tvar tasks = /* @__PURE__ */ new Map();\n\tvar TaskRegistry = class {\n\t\tadd(task) {\n\t\t\tif (this.has(task.id)) throw Error(`task ${task.id} already registred!`);\n\t\t\ttasks.set(task.id, task);\n\t\t\ttask.on(\"task:destroyed\", () => {\n\t\t\t\tthis.remove(task);\n\t\t\t});\n\t\t}\n\t\tget(taskId) {\n\t\t\treturn tasks.get(taskId);\n\t\t}\n\t\tremove(task) {\n\t\t\tif (this.has(task.id)) {\n\t\t\t\ttask?.destroy();\n\t\t\t\ttasks.delete(task.id);\n\t\t\t}\n\t\t}\n\t\tall() {\n\t\t\treturn tasks;\n\t\t}\n\t\thas(taskId) {\n\t\t\treturn tasks.has(taskId);\n\t\t}\n\t\tkillAll() {\n\t\t\ttasks.forEach((id) => this.remove(id));\n\t\t}\n\t};\n\texports.TaskRegistry = TaskRegistry;\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/pattern/validation/pattern-validation.js\nvar require_pattern_validation = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar index_1 = __importDefault(require_convertion());\n\tvar validationRegex = /^(?:\\d+|\\*|\\*\\/\\d+)$/;\n\tfunction isValidExpression(expression, min, max) {\n\t\tconst options = expression;\n\t\tfor (const option of options) {\n\t\t\tconst optionAsInt = parseInt(option, 10);\n\t\t\tif (!Number.isNaN(optionAsInt) && (optionAsInt < min || optionAsInt > max) || !validationRegex.test(option)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tfunction isInvalidSecond(expression) {\n\t\treturn !isValidExpression(expression, 0, 59);\n\t}\n\tfunction isInvalidMinute(expression) {\n\t\treturn !isValidExpression(expression, 0, 59);\n\t}\n\tfunction isInvalidHour(expression) {\n\t\treturn !isValidExpression(expression, 0, 23);\n\t}\n\tfunction isInvalidDayOfMonth(expression) {\n\t\treturn !isValidExpression(expression, 1, 31);\n\t}\n\tfunction isInvalidMonth(expression) {\n\t\treturn !isValidExpression(expression, 1, 12);\n\t}\n\tfunction isInvalidWeekDay(expression) {\n\t\treturn !isValidExpression(expression, 0, 7);\n\t}\n\tfunction validateFields(patterns, executablePatterns) {\n\t\tif (isInvalidSecond(executablePatterns[0])) throw new Error(`${patterns[0]} is a invalid expression for second`);\n\t\tif (isInvalidMinute(executablePatterns[1])) throw new Error(`${patterns[1]} is a invalid expression for minute`);\n\t\tif (isInvalidHour(executablePatterns[2])) throw new Error(`${patterns[2]} is a invalid expression for hour`);\n\t\tif (isInvalidDayOfMonth(executablePatterns[3])) throw new Error(`${patterns[3]} is a invalid expression for day of month`);\n\t\tif (isInvalidMonth(executablePatterns[4])) throw new Error(`${patterns[4]} is a invalid expression for month`);\n\t\tif (isInvalidWeekDay(executablePatterns[5])) throw new Error(`${patterns[5]} is a invalid expression for week day`);\n\t}\n\tfunction validate(pattern) {\n\t\tif (typeof pattern !== \"string\") throw new TypeError(\"pattern must be a string!\");\n\t\tconst patterns = pattern.split(\" \");\n\t\tconst executablePatterns = (0, index_1.default)(pattern);\n\t\tif (patterns.length === 5) patterns.unshift(\"0\");\n\t\tvalidateFields(patterns, executablePatterns);\n\t}\n\texports.default = validate;\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/tasks/background-scheduled-task/background-scheduled-task.js\nvar require_background_scheduled_task = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar path_1$1 = __require(\"path\");\n\tvar child_process_1 = __require(\"child_process\");\n\tvar create_id_1 = require_create_id();\n\tvar stream_1 = __require(\"stream\");\n\tvar state_machine_1 = require_state_machine();\n\tvar localized_time_1 = require_localized_time();\n\tvar logger_1 = __importDefault(require_logger());\n\tvar time_matcher_1 = require_time_matcher();\n\tvar daemonPath = (0, path_1$1.resolve)(new URL(\".\", import.meta.url).pathname.replace(/\\/+$/, \"\"), \"daemon.js\");\n\tvar TaskEmitter = class extends stream_1.EventEmitter {};\n\tvar BackgroundScheduledTask = class {\n\t\temitter;\n\t\tid;\n\t\tname;\n\t\tcronExpression;\n\t\ttaskPath;\n\t\toptions;\n\t\tforkProcess;\n\t\tstateMachine;\n\t\tconstructor(cronExpression, taskPath, options) {\n\t\t\tthis.cronExpression = cronExpression;\n\t\t\tthis.taskPath = taskPath;\n\t\t\tthis.options = options;\n\t\t\tthis.id = (0, create_id_1.createID)(\"task\");\n\t\t\tthis.name = options?.name || this.id;\n\t\t\tthis.emitter = new TaskEmitter();\n\t\t\tthis.stateMachine = new state_machine_1.StateMachine(\"stopped\");\n\t\t\tthis.on(\"task:stopped\", () => {\n\t\t\t\tthis.forkProcess?.kill();\n\t\t\t\tthis.forkProcess = void 0;\n\t\t\t\tthis.stateMachine.changeState(\"stopped\");\n\t\t\t});\n\t\t\tthis.on(\"task:destroyed\", () => {\n\t\t\t\tthis.forkProcess?.kill();\n\t\t\t\tthis.forkProcess = void 0;\n\t\t\t\tthis.stateMachine.changeState(\"destroyed\");\n\t\t\t});\n\t\t}\n\t\tgetNextRun() {\n\t\t\tif (this.stateMachine.state !== \"stopped\") return new time_matcher_1.TimeMatcher(this.cronExpression, this.options?.timezone).getNextMatch(/* @__PURE__ */ new Date());\n\t\t\treturn null;\n\t\t}\n\t\tstart() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (this.forkProcess) return resolve(void 0);\n\t\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\t\treject(/* @__PURE__ */ new Error(\"Start operation timed out\"));\n\t\t\t\t}, 5e3);\n\t\t\t\ttry {\n\t\t\t\t\tthis.forkProcess = (0, child_process_1.fork)(daemonPath);\n\t\t\t\t\tthis.forkProcess.on(\"error\", (err) => {\n\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\treject(/* @__PURE__ */ new Error(`Error on daemon: ${err.message}`));\n\t\t\t\t\t});\n\t\t\t\t\tthis.forkProcess.on(\"exit\", (code, signal) => {\n\t\t\t\t\t\tif (code !== 0 && signal !== \"SIGTERM\") {\n\t\t\t\t\t\t\tconst erro = /* @__PURE__ */ new Error(`node-cron daemon exited with code ${code || signal}`);\n\t\t\t\t\t\t\tlogger_1.default.error(erro);\n\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\treject(erro);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.forkProcess.on(\"message\", (message) => {\n\t\t\t\t\t\tif (message.jsonError) {\n\t\t\t\t\t\t\tif (message.context?.execution) {\n\t\t\t\t\t\t\t\tmessage.context.execution.error = deserializeError(message.jsonError);\n\t\t\t\t\t\t\t\tdelete message.jsonError;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (message.context?.task?.state) this.stateMachine.changeState(message.context?.task?.state);\n\t\t\t\t\t\tif (message.context) {\n\t\t\t\t\t\t\tconst execution = message.context?.execution;\n\t\t\t\t\t\t\tdelete execution?.hasError;\n\t\t\t\t\t\t\tconst context = this.createContext(new Date(message.context.date), execution);\n\t\t\t\t\t\t\tthis.emitter.emit(message.event, context);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.once(\"task:started\", () => {\n\t\t\t\t\t\tthis.stateMachine.changeState(\"idle\");\n\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\tresolve(void 0);\n\t\t\t\t\t});\n\t\t\t\t\tthis.forkProcess.send({\n\t\t\t\t\t\tcommand: \"task:start\",\n\t\t\t\t\t\tpath: this.taskPath,\n\t\t\t\t\t\tcron: this.cronExpression,\n\t\t\t\t\t\toptions: this.options\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tstop() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (!this.forkProcess) return resolve(void 0);\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\treject(/* @__PURE__ */ new Error(\"Stop operation timed out\"));\n\t\t\t\t}, 5e3);\n\t\t\t\tconst cleanupAndResolve = () => {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\tthis.off(\"task:stopped\", onStopped);\n\t\t\t\t\tthis.forkProcess = void 0;\n\t\t\t\t\tresolve(void 0);\n\t\t\t\t};\n\t\t\t\tconst onStopped = () => {\n\t\t\t\t\tcleanupAndResolve();\n\t\t\t\t};\n\t\t\t\tthis.once(\"task:stopped\", onStopped);\n\t\t\t\tthis.forkProcess.send({ command: \"task:stop\" });\n\t\t\t});\n\t\t}\n\t\tgetStatus() {\n\t\t\treturn this.stateMachine.state;\n\t\t}\n\t\tdestroy() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (!this.forkProcess) return resolve(void 0);\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\treject(/* @__PURE__ */ new Error(\"Destroy operation timed out\"));\n\t\t\t\t}, 5e3);\n\t\t\t\tconst onDestroy = () => {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\tthis.off(\"task:destroyed\", onDestroy);\n\t\t\t\t\tresolve(void 0);\n\t\t\t\t};\n\t\t\t\tthis.once(\"task:destroyed\", onDestroy);\n\t\t\t\tthis.forkProcess.send({ command: \"task:destroy\" });\n\t\t\t});\n\t\t}\n\t\texecute() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (!this.forkProcess) return reject(/* @__PURE__ */ new Error(\"Cannot execute background task because it hasn't been started yet. Please initialize the task using the start() method before attempting to execute it.\"));\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tcleanupListeners();\n\t\t\t\t\treject(/* @__PURE__ */ new Error(\"Execution timeout exceeded\"));\n\t\t\t\t}, 5e3);\n\t\t\t\tconst cleanupListeners = () => {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\tthis.off(\"execution:finished\", onFinished);\n\t\t\t\t\tthis.off(\"execution:failed\", onFail);\n\t\t\t\t};\n\t\t\t\tconst onFinished = (context) => {\n\t\t\t\t\tcleanupListeners();\n\t\t\t\t\tresolve(context.execution?.result);\n\t\t\t\t};\n\t\t\t\tconst onFail = (context) => {\n\t\t\t\t\tcleanupListeners();\n\t\t\t\t\treject(context.execution?.error || /* @__PURE__ */ new Error(\"Execution failed without specific error\"));\n\t\t\t\t};\n\t\t\t\tthis.once(\"execution:finished\", onFinished);\n\t\t\t\tthis.once(\"execution:failed\", onFail);\n\t\t\t\tthis.forkProcess.send({ command: \"task:execute\" });\n\t\t\t});\n\t\t}\n\t\ton(event, fun) {\n\t\t\tthis.emitter.on(event, fun);\n\t\t}\n\t\toff(event, fun) {\n\t\t\tthis.emitter.off(event, fun);\n\t\t}\n\t\tonce(event, fun) {\n\t\t\tthis.emitter.once(event, fun);\n\t\t}\n\t\tcreateContext(executionDate, execution) {\n\t\t\tconst localTime = new localized_time_1.LocalizedTime(executionDate, this.options?.timezone);\n\t\t\treturn {\n\t\t\t\tdate: localTime.toDate(),\n\t\t\t\tdateLocalIso: localTime.toISO(),\n\t\t\t\ttriggeredAt: /* @__PURE__ */ new Date(),\n\t\t\t\ttask: this,\n\t\t\t\texecution\n\t\t\t};\n\t\t}\n\t};\n\tfunction deserializeError(str) {\n\t\tconst data = JSON.parse(str);\n\t\tconst err = new (globalThis[data.name] || Error)(data.message);\n\t\tif (data.stack) err.stack = data.stack;\n\t\tObject.keys(data).forEach((key) => {\n\t\t\tif (![\n\t\t\t\t\"name\",\n\t\t\t\t\"message\",\n\t\t\t\t\"stack\"\n\t\t\t].includes(key)) err[key] = data[key];\n\t\t});\n\t\treturn err;\n\t}\n\texports.default = BackgroundScheduledTask;\n}));\n//#endregion\n//#region ../../node_modules/.pnpm/node-cron@4.2.1/node_modules/node-cron/dist/esm/node-cron.js\nvar require_node_cron = /* @__PURE__ */ __commonJSMin(((exports) => {\n\tvar __importDefault = exports && exports.__importDefault || function(mod) {\n\t\treturn mod && mod.__esModule ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.nodeCron = exports.getTask = exports.getTasks = void 0;\n\texports.schedule = schedule;\n\texports.createTask = createTask;\n\texports.solvePath = solvePath;\n\texports.validate = validate;\n\tvar inline_scheduled_task_1 = require_inline_scheduled_task();\n\tvar task_registry_1 = require_task_registry();\n\tvar pattern_validation_1 = __importDefault(require_pattern_validation());\n\tvar background_scheduled_task_1 = __importDefault(require_background_scheduled_task());\n\tvar path_1 = __importDefault(__require(\"path\"));\n\tvar url_1 = __require(\"url\");\n\tvar registry = new task_registry_1.TaskRegistry();\n\tfunction schedule(expression, func, options) {\n\t\tconst task = createTask(expression, func, options);\n\t\ttask.start();\n\t\treturn task;\n\t}\n\tfunction createTask(expression, func, options) {\n\t\tlet task;\n\t\tif (func instanceof Function) task = new inline_scheduled_task_1.InlineScheduledTask(expression, func, options);\n\t\telse {\n\t\t\tconst taskPath = solvePath(func);\n\t\t\ttask = new background_scheduled_task_1.default(expression, taskPath, options);\n\t\t}\n\t\tregistry.add(task);\n\t\treturn task;\n\t}\n\tfunction solvePath(filePath) {\n\t\tif (path_1.default.isAbsolute(filePath)) return (0, url_1.pathToFileURL)(filePath).href;\n\t\tif (filePath.startsWith(\"file://\")) return filePath;\n\t\tconst stackLines = (/* @__PURE__ */ new Error()).stack?.split(\"\\n\");\n\t\tif (stackLines) {\n\t\t\tstackLines?.shift();\n\t\t\tconst match = (stackLines?.find((line) => {\n\t\t\t\treturn line.indexOf(new URL(import.meta.url).pathname) === -1;\n\t\t\t}))?.match(/(file:\\/\\/)?(((\\/?)(\\w:))?([/\\\\].+)):\\d+:\\d+/);\n\t\t\tif (match) {\n\t\t\t\tconst dir = `${match[5] ?? \"\"}${path_1.default.dirname(match[6])}`;\n\t\t\t\treturn (0, url_1.pathToFileURL)(path_1.default.resolve(dir, filePath)).href;\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`Could not locate task file ${filePath}`);\n\t}\n\tfunction validate(expression) {\n\t\ttry {\n\t\t\t(0, pattern_validation_1.default)(expression);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\texports.getTasks = registry.all;\n\texports.getTask = registry.get;\n\texports.nodeCron = {\n\t\tschedule,\n\t\tcreateTask,\n\t\tvalidate,\n\t\tgetTasks: exports.getTasks,\n\t\tgetTask: exports.getTask\n\t};\n\texports.default = exports.nodeCron;\n}));\n//#endregion\n//#region ../core/dist/llm/onboarding/login-engine.js\n/**\n* `runOnboardingLogin` — the 3-step onboarding login engine (T11724 · M3).\n*\n* The imperative front-door flow that takes a provider from a cold start to a\n* usable, validated profile binding. It ORCHESTRATES the already-merged\n* credential / catalog / config / resolver accessors — it does NOT reimplement\n* OAuth, construct a transport, or open an LLM client (Gate-13: chokepoint only).\n*\n* ## The four steps\n*\n* 1. **connect** — resolve the provider (alias → canonical via\n* {@link getProviderProfile}) and land a credential (Account) in the\n* multi-credential pool via {@link addCredential}. The OAuth token / API\n* key is supplied by the caller (`opts.token`): the owner-driven browser\n* step (PKCE / device-code) runs in `cleo llm login` BEFORE this engine,\n* so the engine itself is non-interactive and testable. OAuth-less\n* providers pass the same `opts.token` as an API key (AC4).\n* 2. **select** — choose a model from the catalog: `opts.model` when given\n* (validated against the catalog), else the latest by `release_date` via\n* {@link resolveProviderDefaultModel}.\n* 3. **bind** — write the `llm.default` (or `llm.roles[role]`) config\n* binding tying the account + model together via {@link setConfigValue}.\n* 4. **validate** — round-trip the binding through {@link resolveLLMForSystem}\n* and confirm the resolved provider/model are consistent. NOT a live LLM\n* call: no token is materialized; only resolution metadata is asserted,\n* and the secret stays behind the sealed handle.\n*\n* ## Security (AC2)\n*\n* The {@link OnboardingResult} envelope carries NO secret fields — never an\n* access token, API key, or refresh token. The plaintext is materialized only\n* at the wire via the sealed handle, never on this envelope.\n*\n* ## Testability (AC3)\n*\n* Every step depends only on the injectable {@link OnboardingDeps} seam, which\n* defaults to the real core accessors. Tests pass a {@link StubOnboardingDeps}\n* (stub catalog + in-memory pool/config + stub resolver) to exercise each step\n* in isolation without a live browser, network, or disk.\n*\n* @module llm/onboarding/login-engine\n* @task T11724\n* @epic T11671 (E6-ONBOARDING-FRONT-DOOR)\n*/\nvar logger = getLogger(\"llm-onboarding\");\n/**\n* The default dependency set — the real, merged core accessors.\n*\n* @task T11724\n*/\nfunction defaultDeps() {\n\treturn {\n\t\tgetProviderProfile,\n\t\taddCredential: (input) => addCredential(input),\n\t\tcatalogKeyForProvider,\n\t\tresolveProviderDefaultModel: (catalogKey) => resolveProviderDefaultModel(catalogKey),\n\t\tvalidateModelForProvider: (model, catalogKey) => validateModelForProvider(model, catalogKey),\n\t\tsetConfigValue: (key, value) => setConfigValue(key, value, void 0, { global: true }),\n\t\tresolve: async (_provider, projectRoot, role) => {\n\t\t\tconst resolved = await resolveLLMForSystem({\n\t\t\t\tkind: \"role\",\n\t\t\t\tid: role ?? \"consolidation\"\n\t\t\t}, projectRoot !== void 0 ? { projectRoot } : void 0);\n\t\t\treturn {\n\t\t\t\tprovider: resolved.provider,\n\t\t\t\tmodel: resolved.model,\n\t\t\t\tsealedCredential: resolved.sealedCredential ? { tokenPreview: resolved.sealedCredential.tokenPreview } : null\n\t\t\t};\n\t\t}\n\t};\n}\n/** Build an `ok` step trace. @internal */\nfunction ok(step, detail) {\n\treturn {\n\t\tstep,\n\t\tstatus: \"ok\",\n\t\tdetail\n\t};\n}\n/** Build a `failed` step trace carrying a stable `E_*` code. @internal */\nfunction fail(step, code, detail) {\n\treturn {\n\t\tstep,\n\t\tstatus: \"failed\",\n\t\tdetail,\n\t\tcode\n\t};\n}\n/** Build a `skipped` step trace (downstream of a failure). @internal */\nfunction skipped(step, detail) {\n\treturn {\n\t\tstep,\n\t\tstatus: \"skipped\",\n\t\tdetail\n\t};\n}\n/**\n* Compose the partial envelope returned when a step fails: the failed step's\n* trace plus a `skipped` trace for every remaining step, so the 4-row shape is\n* always stable.\n*\n* @internal\n*/\nfunction withSkips(done, failedAt) {\n\tconst order = [\n\t\t\"connect\",\n\t\t\"select\",\n\t\t\"bind\",\n\t\t\"validate\"\n\t];\n\tconst steps = [...done, failedAt];\n\tconst seen = new Set(steps.map((s) => s.step));\n\tfor (const name of order) if (!seen.has(name)) steps.push(skipped(name, \"skipped — earlier step failed\"));\n\treturn order.map((name) => steps.find((s) => s.step === name));\n}\n/**\n* Run the 3-step onboarding login flow for a provider (T11724 · M3).\n*\n* Walks **connect → select → bind → validate**, reusing the merged credential /\n* catalog / config / resolver accessors. Returns a typed {@link OnboardingResult}\n* envelope with the per-step trace and the non-secret binding identifiers.\n*\n* Like the resolver chokepoint, this engine **never throws** for an expected\n* failure (missing credential, unknown model, config write error): it returns\n* an envelope whose failing step carries `status: 'failed'` and a stable `E_*`\n* `code`, with `validated: false`. Unexpected accessor errors are caught and\n* mapped to a failed step trace as well.\n*\n* @param provider - Provider name or alias (e.g. `'anthropic'`, `'codex'`).\n* @param opts - {@link OnboardingLoginOptions} (token, model, role, …).\n* @param deps - Injectable accessor seam (AC3); defaults to real core accessors.\n* @returns The typed onboarding result envelope; never throws on expected failure.\n*\n* @task T11724\n*/\nasync function runOnboardingLogin(provider, opts = {}, deps = defaultDeps()) {\n\tconst label = opts.label?.trim() ? opts.label.trim() : \"oauth-login\";\n\tconst done = [];\n\tlet canonicalProvider;\n\tlet authMode;\n\ttry {\n\t\tconst profile = await deps.getProviderProfile(provider);\n\t\tif (!profile) return envelope(withSkips(done, fail(\"connect\", \"E_UNKNOWN_PROVIDER\", `Unknown provider '${provider}'. Run \\`cleo llm list-providers\\` to see supported providers.`)), provider, label, null, null, null, false);\n\t\tcanonicalProvider = profile.name;\n\t\tauthMode = opts.authMode ?? (profile.oauth ? \"oauth\" : \"api_key\");\n\t\tif (opts.credentialAlreadyStored) done.push(ok(\"connect\", `account '${label}' connected (${authMode}, pre-stored)`));\n\t\telse {\n\t\t\tif (!opts.token) return envelope(withSkips(done, fail(\"connect\", \"E_ONBOARDING_NO_CREDENTIAL\", `No credential supplied for '${canonicalProvider}'. Complete \\`cleo llm login ${canonicalProvider}\\` (OAuth) or pass an API key.`)), canonicalProvider, label, null, null, null, false);\n\t\t\tconst storedAuthType = authMode === \"oauth\" ? \"oauth\" : \"api_key\";\n\t\t\tawait deps.addCredential({\n\t\t\t\tprovider: canonicalProvider,\n\t\t\t\tlabel,\n\t\t\t\tauthType: storedAuthType,\n\t\t\t\taccessToken: opts.token,\n\t\t\t\tsource: \"onboarding-login\"\n\t\t\t});\n\t\t\tdone.push(ok(\"connect\", `account '${label}' connected (${authMode})`));\n\t\t}\n\t} catch (err) {\n\t\treturn envelope(withSkips(done, fail(\"connect\", \"E_ONBOARDING_CONNECT_FAILED\", errMsg(err))), provider, label, null, null, null, false);\n\t}\n\tlet modelId;\n\ttry {\n\t\tconst catalogKey = deps.catalogKeyForProvider(canonicalProvider);\n\t\tif (opts.model) {\n\t\t\tconst validation = deps.validateModelForProvider(opts.model, catalogKey);\n\t\t\tif (!validation.valid && validation.reason === \"not-found\") return envelope(withSkips(done, fail(\"select\", \"E_MODEL_NOT_IN_CATALOG\", `Model '${opts.model}' is not in the catalog for provider '${canonicalProvider}'. Run \\`cleo llm refresh-catalog\\` to update the catalog.`)), canonicalProvider, label, authMode, null, null, false);\n\t\t\tmodelId = opts.model;\n\t\t\tdone.push(ok(\"select\", `model '${modelId}' selected (explicit, validated)`));\n\t\t} else {\n\t\t\tconst latest = deps.resolveProviderDefaultModel(catalogKey);\n\t\t\tif (!latest) return envelope(withSkips(done, fail(\"select\", \"E_NO_CATALOG_MODEL\", `No catalog model available for '${canonicalProvider}'. Run \\`cleo llm refresh-catalog\\`, or pass an explicit \\`--model\\`.`)), canonicalProvider, label, authMode, null, null, false);\n\t\t\tmodelId = latest;\n\t\t\tdone.push(ok(\"select\", `model '${modelId}' selected (catalog default, latest release_date)`));\n\t\t}\n\t} catch (err) {\n\t\treturn envelope(withSkips(done, fail(\"select\", \"E_ONBOARDING_SELECT_FAILED\", errMsg(err))), canonicalProvider, label, authMode, null, null, false);\n\t}\n\tlet profileName;\n\ttry {\n\t\tif (opts.role) {\n\t\t\tif (!WHOAMI_ROLE_IDS.includes(opts.role)) return envelope(withSkips(done, fail(\"bind\", \"E_INVALID_ROLE\", `Invalid role '${opts.role}'. Valid roles: ${WHOAMI_ROLE_IDS.join(\", \")}.`)), canonicalProvider, label, authMode, modelId, null, false);\n\t\t\tawait deps.setConfigValue(`llm.roles.${opts.role}.provider`, canonicalProvider);\n\t\t\tawait deps.setConfigValue(`llm.roles.${opts.role}.model`, modelId);\n\t\t\tawait deps.setConfigValue(`llm.roles.${opts.role}.credentialLabel`, label);\n\t\t\tprofileName = opts.role;\n\t\t\tdone.push(ok(\"bind\", `profile '${profileName}' bound → ${canonicalProvider}/${modelId}`));\n\t\t} else {\n\t\t\tawait deps.setConfigValue(\"llm.default.provider\", canonicalProvider);\n\t\t\tawait deps.setConfigValue(\"llm.default.model\", modelId);\n\t\t\tprofileName = \"default\";\n\t\t\tdone.push(ok(\"bind\", `default binding → ${canonicalProvider}/${modelId}`));\n\t\t}\n\t} catch (err) {\n\t\treturn envelope(withSkips(done, fail(\"bind\", \"E_ONBOARDING_BIND_FAILED\", errMsg(err))), canonicalProvider, label, authMode, modelId, null, false);\n\t}\n\ttry {\n\t\tconst resolved = await deps.resolve(canonicalProvider, opts.projectRoot, opts.role);\n\t\tconst providerMatch = resolved.provider === canonicalProvider;\n\t\tconst modelMatch = resolved.model === modelId;\n\t\tconst hasHandle = resolved.sealedCredential !== null;\n\t\tif (providerMatch && modelMatch && hasHandle) {\n\t\t\tdone.push(ok(\"validate\", `round-trip ok — resolves to ${resolved.provider}/${resolved.model} (sealed handle ${resolved.sealedCredential?.tokenPreview ?? \"…\"})`));\n\t\t\treturn envelope(done, canonicalProvider, label, authMode, modelId, profileName, true);\n\t\t}\n\t\tconst step = fail(\"validate\", \"E_ONBOARDING_VALIDATION_FAILED\", `binding inconsistent — ${!hasHandle ? \"no credential handle resolved\" : `resolved ${resolved.provider}/${resolved.model}, expected ${canonicalProvider}/${modelId}`}`);\n\t\treturn envelope([...done, step], canonicalProvider, label, authMode, modelId, profileName, false);\n\t} catch (err) {\n\t\tconst step = fail(\"validate\", \"E_ONBOARDING_VALIDATION_FAILED\", errMsg(err));\n\t\treturn envelope([...done, step], canonicalProvider, label, authMode, modelId, profileName, false);\n\t}\n}\n/**\n* Assemble the {@link OnboardingResult} envelope. Centralised so every return\n* path produces an identically-shaped, secret-free result.\n*\n* @internal\n*/\nfunction envelope(steps, provider, accountLabel, authMode, modelId, profileName, validated) {\n\treturn {\n\t\tsteps,\n\t\tprovider,\n\t\taccountLabel,\n\t\tauthMode,\n\t\tmodelId,\n\t\tprofileName,\n\t\tvalidated\n\t};\n}\n/**\n* Extract a short, secret-free message from an unknown thrown value. The\n* onboarding accessors already redact their own error strings; this is a final\n* defensive narrow so the envelope never carries a raw stack.\n*\n* @internal\n*/\nfunction errMsg(err) {\n\tconst raw = err instanceof Error ? err.message : String(err);\n\tlogger.debug({ err: raw }, \"onboarding: step accessor error\");\n\treturn raw;\n}\n//#endregion\n//#region ../core/dist/llm/onboarding/front-door.js\n/**\n* `runFrontDoorLogin` — the shared onboarding front-door orchestrator (T11725 · M3).\n*\n* This is the ONE function every front-door entry point (`cleo login`,\n* `cleo auth login`, `cleo llm login`) dispatches to. It owns the small amount\n* of orchestration that sits ABOVE the 3-step onboarding engine\n* ({@link runOnboardingLogin}):\n*\n* 1. **resolve provider** — alias → canonical via {@link getProviderProfile}.\n* 2. **resolve auth method** — caller-supplied, else inferred from the\n* provider profile (OAuth when the profile advertises an `oauth` config,\n* else `api_key`).\n* 3. **acquire the credential secret**:\n* - `api_key` → the caller passes the raw key in {@link FrontDoorLoginOptions.token}.\n* - `oauth` → the caller's injected {@link OAuthTokenAcquirer} runs the\n* interactive browser / device-code dance and RETURNS the token. The\n* interactive step lives in the CLI (so this module stays\n* non-interactive and unit-testable); the acquirer is a seam, not a hard\n* dependency.\n* 4. **run the engine** — hand the acquired token to {@link runOnboardingLogin},\n* which performs connect → select → bind → validate and returns the typed,\n* secret-free {@link OnboardingResult} envelope.\n*\n* ## Why a core orchestrator (and not CLI glue)\n*\n* Keeping this in `@cleocode/core` means the CLI handlers for all three entry\n* points are THIN — they parse flags, build a {@link ReadlineWizardIO}, supply\n* the OAuth acquirer, and call THIS function. No entry point re-implements the\n* picker, the auth-method inference, or the engine call (AC2: no duplicated\n* handler logic). Studio / the future API surface reuse the same orchestrator.\n*\n* ## Security\n*\n* The returned {@link OnboardingResult} carries NO secret fields (inherited from\n* the engine contract). The raw token flows only from the acquirer into the\n* engine's connect step; it is never logged or surfaced on the envelope.\n*\n* @module llm/onboarding/front-door\n* @task T11725\n* @epic T11671 (E6-ONBOARDING-FRONT-DOOR)\n*/\n/**\n* The default front-door dependency set — the real, merged core accessors.\n*\n* @internal\n*/\nfunction defaultFrontDoorDeps() {\n\treturn {\n\t\tgetProviderProfile,\n\t\trunOnboardingLogin: (provider, opts, deps) => runOnboardingLogin(provider, opts, deps)\n\t};\n}\n/**\n* Resolve the auth method for a provider profile: caller override wins, else\n* `oauth` when the profile advertises an OAuth config, else `api_key`.\n*\n* @param profile - The resolved provider profile.\n* @param override - Optional explicit auth mode from the caller.\n* @returns The effective {@link OnboardingAuthMode}.\n* @task T11725\n*/\nfunction resolveAuthMode(profile, override) {\n\tif (override) return override;\n\treturn profile.oauth ? \"oauth\" : \"api_key\";\n}\n/**\n* Run the shared onboarding front-door flow for a provider (T11725 · M3).\n*\n* Resolves the provider + auth method, acquires the credential secret (raw API\n* key from `opts.token`, or via the injected {@link OAuthTokenAcquirer} for the\n* OAuth path), then delegates the heavy lifting to {@link runOnboardingLogin}.\n*\n* Mirrors the engine's never-throw-on-expected-failure contract: an unknown\n* provider or a missing api-key secret returns a failed {@link OnboardingResult}\n* envelope rather than throwing. The OAuth acquirer's own errors DO propagate —\n* an aborted browser flow is a hard, caller-visible failure.\n*\n* @param provider - Provider name or alias (e.g. `'anthropic'`, `'codex'`).\n* @param opts - {@link FrontDoorLoginOptions}.\n* @param acquireOAuth - Interactive OAuth token acquirer (the CLI's browser flow).\n* Only invoked on the `oauth` path; may be omitted when the flow is `api_key`.\n* @param deps - Injectable accessor seam; defaults to real core accessors.\n* @returns The typed onboarding result envelope.\n* @task T11725\n*/\nasync function runFrontDoorLogin(provider, opts = {}, acquireOAuth, deps = defaultFrontDoorDeps()) {\n\tconst profile = await deps.getProviderProfile(provider);\n\tif (!profile) return deps.runOnboardingLogin(provider, buildEngineOptions(opts, opts.token, false));\n\tconst canonicalProvider = profile.name;\n\tconst authMode = resolveAuthMode(profile, opts.authMode);\n\tlet token = opts.token;\n\tlet credentialAlreadyStored = false;\n\tlet label = opts.label;\n\tif (authMode === \"oauth\") {\n\t\tif (!acquireOAuth) throw new Error(`OAuth login for '${canonicalProvider}' requires an interactive token acquirer. This entry point cannot complete an OAuth flow non-interactively — supply an API key with --api-key/--token, or run on a terminal.`);\n\t\tconst acquired = await acquireOAuth(canonicalProvider);\n\t\tcredentialAlreadyStored = true;\n\t\tlabel = label ?? acquired.label;\n\t\ttoken = void 0;\n\t}\n\treturn deps.runOnboardingLogin(canonicalProvider, buildEngineOptions({\n\t\t...opts,\n\t\tauthMode,\n\t\tlabel\n\t}, token, credentialAlreadyStored));\n}\n/**\n* Map the front-door options + resolved token to the engine's option shape.\n*\n* Centralised so the unknown-provider deferral path and the happy path build\n* identical engine options.\n*\n* @internal\n*/\nfunction buildEngineOptions(opts, token, credentialAlreadyStored) {\n\tconst engineOpts = {};\n\tif (token !== void 0) engineOpts.token = token;\n\tif (opts.authMode !== void 0) engineOpts.authMode = opts.authMode;\n\tif (opts.label !== void 0) engineOpts.label = opts.label;\n\tif (opts.model !== void 0) engineOpts.model = opts.model;\n\tif (opts.role !== void 0) engineOpts.role = opts.role;\n\tif (opts.projectRoot !== void 0) engineOpts.projectRoot = opts.projectRoot;\n\tif (credentialAlreadyStored) engineOpts.credentialAlreadyStored = true;\n\treturn engineOpts;\n}\nrequire_node_cron();\n//#endregion\n//#region ../core/dist/sentient/daemon.js\n/** Relative subpath under a project root where sentient state lives. */\nvar SENTIENT_STATE_FILE = \".cleo/sentient-state.json\";\nprocess.env[\"CLEO_HYGIENE_CRON\"];\n//#endregion\nexport { runFrontDoorLogin as n, require_node_cron as r, SENTIENT_STATE_FILE as t };\n","import { t as getLogger } from \"./logger.js\";\nimport { t as probeOllamaAlive } from \"./cross-provider-selector.js\";\nimport { execFile } from \"node:child_process\";\nimport { freemem, totalmem } from \"node:os\";\nimport { readFile } from \"node:fs/promises\";\nimport { promisify } from \"node:util\";\n//#region ../core/dist/llm/local-model-fit.js\n/**\n* Local-model fit ranking for Ollama-backed open-weight models (T11982).\n*\n* ## Purpose\n*\n* Given the current machine's hardware (RAM, VRAM), rank 2–3 curated\n* open-weight models that are actually likely to run well. This is the\n* `cleo llm fit` wizard building block — it powers T11983's one-keypress\n* pull+connect flow.\n*\n* ## Vendor-vs-inspire decision (llmfit)\n*\n* Evaluated `github.com/AlexsJones/llmfit` (MIT, Go, ~400 LOC). The library\n* is a standalone Go binary — not a TS/ESM package. Its key contribution is\n* the IDEA: use RAM thresholds to gate model selection, prefer VRAM when\n* available, and produce a ranked list with human-readable reasons. We\n* **vendor the IDEA** (TS-native re-implementation) rather than shelling out\n* to a Go binary or adding a cross-language dependency. The model thresholds\n* below are independently calibrated from Ollama's documentation and the\n* Hugging Face model cards, not copy-pasted from llmfit.\n*\n* ## Gate-13 compliance\n*\n* This module:\n* - MUST NOT construct any transport or SDK client.\n* - MUST NOT read `process.env.*_API_KEY` directly.\n* - MUST NOT define a new `resolveLLMFor*` function.\n* - MUST NOT hardcode model-id literals in logic — all model IDs come from\n* the {@link LOCAL_MODEL_CANDIDATES} data table.\n*\n* The hardware detection (`os.totalmem`, `os.freemem`, `/proc/meminfo`,\n* `nvidia-smi`) is plain system inspection — not covered by Gate-13 (which\n* governs LLM resolution / transport construction).\n*\n* Ollama liveness re-uses {@link probeOllamaAlive} from\n* `cross-provider-selector.ts` (no duplication). The `/api/tags` fetch is\n* a vanilla HTTP call to localhost, not a transport construction.\n*\n* @module llm/local-model-fit\n* @task T11982\n* @epic T11671\n*/\nvar execFileAsync = promisify(execFile);\nvar logger = getLogger(\"llm-local-model-fit\");\n/**\n* Curated candidate table. These are the ONLY models `rankLocalModelFit`\n* can recommend — expand this table to add new models.\n*\n* Exclusions:\n* - `qwen2:0.5b` — proof-of-life only; deliberately absent from this list.\n*\n* @task T11982\n*/\nvar LOCAL_MODEL_CANDIDATES = [\n\t{\n\t\tmodelTag: \"gemma4:e2b\",\n\t\tdisplayName: \"Gemma 4 E2B (edge)\",\n\t\tfamily: \"gemma4\",\n\t\tminRamGb: 4,\n\t\trecommendedRamGb: 6,\n\t\tminVramGb: 3,\n\t\trecommendedVramGb: 5,\n\t\tdiskSizeGb: 7.2,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 128\n\t},\n\t{\n\t\tmodelTag: \"gemma4:e4b\",\n\t\tdisplayName: \"Gemma 4 E4B (edge)\",\n\t\tfamily: \"gemma4\",\n\t\tminRamGb: 6,\n\t\trecommendedRamGb: 8,\n\t\tminVramGb: 6,\n\t\trecommendedVramGb: 8,\n\t\tdiskSizeGb: 9.6,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 128\n\t},\n\t{\n\t\tmodelTag: \"gemma4:12b\",\n\t\tdisplayName: \"Gemma 4 12B\",\n\t\tfamily: \"gemma4\",\n\t\tminRamGb: 10,\n\t\trecommendedRamGb: 16,\n\t\tminVramGb: 8,\n\t\trecommendedVramGb: 12,\n\t\tdiskSizeGb: 7.6,\n\t\tquantNote: \"QAT (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 256\n\t},\n\t{\n\t\tmodelTag: \"qwen3:1.7b\",\n\t\tdisplayName: \"Qwen 3 1.7B\",\n\t\tfamily: \"qwen3\",\n\t\tminRamGb: 3,\n\t\trecommendedRamGb: 4,\n\t\tminVramGb: 2,\n\t\trecommendedVramGb: 3,\n\t\tdiskSizeGb: 1.4,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 32\n\t},\n\t{\n\t\tmodelTag: \"qwen3:4b\",\n\t\tdisplayName: \"Qwen 3 4B\",\n\t\tfamily: \"qwen3\",\n\t\tminRamGb: 6,\n\t\trecommendedRamGb: 8,\n\t\tminVramGb: 4,\n\t\trecommendedVramGb: 6,\n\t\tdiskSizeGb: 2.6,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 32\n\t},\n\t{\n\t\tmodelTag: \"qwen3:8b\",\n\t\tdisplayName: \"Qwen 3 8B\",\n\t\tfamily: \"qwen3\",\n\t\tminRamGb: 8,\n\t\trecommendedRamGb: 12,\n\t\tminVramGb: 7,\n\t\trecommendedVramGb: 10,\n\t\tdiskSizeGb: 5.2,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 32\n\t},\n\t{\n\t\tmodelTag: \"llama3.2:3b\",\n\t\tdisplayName: \"Llama 3.2 3B\",\n\t\tfamily: \"llama3.2\",\n\t\tminRamGb: 4,\n\t\trecommendedRamGb: 6,\n\t\tminVramGb: 3,\n\t\trecommendedVramGb: 4,\n\t\tdiskSizeGb: 2,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 128\n\t},\n\t{\n\t\tmodelTag: \"qwen2.5-coder:3b\",\n\t\tdisplayName: \"Qwen 2.5 Coder 3B\",\n\t\tfamily: \"qwen2.5-coder\",\n\t\tminRamGb: 4,\n\t\trecommendedRamGb: 6,\n\t\tminVramGb: 3,\n\t\trecommendedVramGb: 4,\n\t\tdiskSizeGb: 1.9,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: true,\n\t\tcontextLengthK: 128\n\t},\n\t{\n\t\tmodelTag: \"phi4-mini:3.8b\",\n\t\tdisplayName: \"Phi 4 Mini 3.8B\",\n\t\tfamily: \"phi4\",\n\t\tminRamGb: 4,\n\t\trecommendedRamGb: 6,\n\t\tminVramGb: 3,\n\t\trecommendedVramGb: 4,\n\t\tdiskSizeGb: 2.5,\n\t\tquantNote: \"Q4_K_M (default pull)\",\n\t\tcodeSpecialist: false,\n\t\tcontextLengthK: 128\n\t}\n];\n/**\n* Read `MemAvailable` from `/proc/meminfo` on Linux.\n*\n* Returns `null` on non-Linux or if the file is unreadable.\n*\n* @internal\n*/\nasync function readLinuxMemAvailableBytes() {\n\ttry {\n\t\tconst content = await readFile(\"/proc/meminfo\", \"utf-8\");\n\t\tfor (const line of content.split(\"\\n\")) if (line.startsWith(\"MemAvailable:\")) {\n\t\t\tconst match = /MemAvailable:\\s+(\\d+)\\s+kB/.exec(line);\n\t\t\tif (match?.[1]) return parseInt(match[1], 10) * 1024;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Detect NVIDIA VRAM via `nvidia-smi`.\n*\n* Returns `null` fields if the binary is absent or errors.\n*\n* @internal\n*/\nasync function detectNvidiaVram() {\n\ttry {\n\t\tconst { stdout } = await execFileAsync(\"nvidia-smi\", [\"--query-gpu=memory.total,memory.free\", \"--format=csv,noheader,nounits\"]);\n\t\tconst parts = stdout.trim().split(\",\");\n\t\tif (parts.length >= 2) {\n\t\t\tconst totalMib = parseInt(parts[0].trim(), 10);\n\t\t\tconst freeMib = parseInt(parts[1].trim(), 10);\n\t\t\tif (!Number.isNaN(totalMib) && !Number.isNaN(freeMib)) return {\n\t\t\t\ttotalBytes: totalMib * 1024 * 1024,\n\t\t\t\tfreeBytes: freeMib * 1024 * 1024,\n\t\t\t\tmethod: \"nvidia-smi\"\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Detect AMD VRAM via `rocm-smi`.\n*\n* Returns `null` fields if the binary is absent or errors.\n*\n* @internal\n*/\nasync function detectRocmVram() {\n\ttry {\n\t\tconst { stdout } = await execFileAsync(\"rocm-smi\", [\n\t\t\t\"--showmeminfo\",\n\t\t\t\"vram\",\n\t\t\t\"--csv\"\n\t\t]);\n\t\tconst totalMatch = /Total\\s+VRAM.*?(\\d+)/i.exec(stdout);\n\t\tconst usedMatch = /Used\\s+VRAM.*?(\\d+)/i.exec(stdout);\n\t\tif (totalMatch?.[1]) {\n\t\t\tconst totalBytes = parseInt(totalMatch[1], 10) * 1024 * 1024;\n\t\t\tconst usedBytes = usedMatch?.[1] ? parseInt(usedMatch[1], 10) * 1024 * 1024 : null;\n\t\t\treturn {\n\t\t\t\ttotalBytes,\n\t\t\t\tfreeBytes: usedBytes !== null ? totalBytes - usedBytes : null,\n\t\t\t\tmethod: \"rocm-smi\"\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Capture a full hardware snapshot.\n*\n* Never throws — VRAM detection failures degrade gracefully to `null`.\n*\n* @param overrides - Override fields for testing (avoids OS calls in unit tests).\n* @returns A hardware snapshot describing this machine's capabilities.\n*\n* @task T11982\n*/\nasync function captureHardwareSnapshot(overrides) {\n\tconst platform = overrides?.platform ?? process.platform;\n\tconst totalRamBytes = overrides?.totalRamBytes ?? totalmem();\n\tlet availableRamBytes;\n\tif (overrides?.availableRamBytes !== void 0) availableRamBytes = overrides.availableRamBytes;\n\telse if (platform === \"linux\") availableRamBytes = await readLinuxMemAvailableBytes() ?? freemem();\n\telse availableRamBytes = freemem();\n\tlet vram;\n\tif (overrides?.vram !== void 0) vram = overrides.vram;\n\telse {\n\t\tconst nvidia = await detectNvidiaVram();\n\t\tif (nvidia) vram = nvidia;\n\t\telse {\n\t\t\tconst amd = await detectRocmVram();\n\t\t\tif (amd) vram = amd;\n\t\t\telse if (platform === \"darwin\") vram = {\n\t\t\t\ttotalBytes: totalRamBytes,\n\t\t\t\tfreeBytes: availableRamBytes,\n\t\t\t\tmethod: \"apple-unified\"\n\t\t\t};\n\t\t\telse vram = {\n\t\t\t\ttotalBytes: null,\n\t\t\t\tfreeBytes: null,\n\t\t\t\tmethod: \"none\"\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\ttotalRamBytes,\n\t\tavailableRamBytes,\n\t\tvram,\n\t\tplatform\n\t};\n}\n/**\n* Parse raw `/api/tags` response from Ollama.\n*\n* @internal\n*/\nfunction parseOllamaTagsResponse(body) {\n\tif (typeof body !== \"object\" || body === null || !Array.isArray(body[\"models\"])) return [];\n\tconst models = body.models;\n\tconst result = [];\n\tfor (const m of models) {\n\t\tif (typeof m !== \"object\" || m === null) continue;\n\t\tconst model = m;\n\t\tconst name = typeof model[\"name\"] === \"string\" ? model[\"name\"] : \"\";\n\t\tconst details = typeof model[\"details\"] === \"object\" && model[\"details\"] !== null ? model[\"details\"] : {};\n\t\tconst parameterSize = typeof details[\"parameter_size\"] === \"string\" ? details[\"parameter_size\"] : \"\";\n\t\tconst quantizationLevel = typeof details[\"quantization_level\"] === \"string\" ? details[\"quantization_level\"] : \"\";\n\t\tconst family = typeof details[\"family\"] === \"string\" ? details[\"family\"] : \"\";\n\t\tif (name) result.push({\n\t\t\tname,\n\t\t\tparameterSize,\n\t\t\tquantizationLevel,\n\t\t\tfamily\n\t\t});\n\t}\n\treturn result;\n}\n/**\n* Fetch the list of locally-pulled models from Ollama's `/api/tags` endpoint.\n*\n* Uses the HTTP API (not shelling out) — Gate-13 does not govern plain `fetch`\n* calls to localhost.\n*\n* @param baseUrl - Ollama base URL (default `http://localhost:11434`).\n* @param fetchFn - Injectable `fetch` for testing (defaults to global `fetch`).\n* @returns Array of pulled models, or empty array if Ollama is not reachable.\n*\n* @task T11982\n*/\nasync function listOllamaPulledModels(baseUrl = \"http://localhost:11434\", fetchFn = fetch) {\n\ttry {\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), 1e3);\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await fetchFn(`${baseUrl}/api/tags`, { signal: controller.signal });\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\tif (!response.ok) return [];\n\t\treturn parseOllamaTagsResponse(await response.json());\n\t} catch {\n\t\treturn [];\n\t}\n}\n/** Score bonus when the model is already pulled locally. */\nvar ALREADY_PULLED_BONUS = 50;\n/** Score bonus when VRAM is sufficient for full GPU offload. */\nvar VRAM_FULL_OFFLOAD_BONUS = 40;\n/** Score bonus when VRAM meets the minimum (partial offload). */\nvar VRAM_PARTIAL_BONUS = 15;\n/** Score bonus when available RAM exceeds the recommended threshold. */\nvar RAM_COMFORTABLE_BONUS = 20;\n/** Score bonus when RAM is sufficient but below recommended. */\nvar RAM_SUFFICIENT_BONUS = 5;\n/** Penalty when the model barely meets the minimum RAM. */\nvar RAM_TIGHT_PENALTY = -10;\n/** Score bonus for models with longer context windows. */\nvar LONG_CONTEXT_BONUS = 8;\n/**\n* Compute the fit score for a candidate given this machine's hardware.\n*\n* @internal\n*/\nfunction scoreCandidate(candidate, snapshot, alreadyPulled) {\n\tconst ramGb = snapshot.totalRamBytes / 1024 ** 3;\n\tconst availableRamGb = snapshot.availableRamBytes / 1024 ** 3;\n\tconst vramTotalGb = snapshot.vram.totalBytes !== null ? snapshot.vram.totalBytes / 1024 ** 3 : null;\n\tconst vramFreeGb = snapshot.vram.freeBytes !== null ? snapshot.vram.freeBytes / 1024 ** 3 : null;\n\tlet score = 0;\n\tconst reasons = [];\n\tlet fitTier = \"marginal\";\n\tif (vramTotalGb !== null && vramFreeGb !== null && candidate.minVramGb > 0) if (vramFreeGb >= candidate.recommendedVramGb) {\n\t\tscore += VRAM_FULL_OFFLOAD_BONUS;\n\t\treasons.push(`fits in ${vramFreeGb.toFixed(1)} GB free VRAM (recommended: ${candidate.recommendedVramGb} GB)`);\n\t\tfitTier = \"excellent\";\n\t} else if (vramFreeGb >= candidate.minVramGb) {\n\t\tscore += VRAM_PARTIAL_BONUS;\n\t\treasons.push(`partial GPU offload possible (${vramFreeGb.toFixed(1)} GB free VRAM, min: ${candidate.minVramGb} GB)`);\n\t\tfitTier = \"good\";\n\t} else reasons.push(`CPU inference only — VRAM ${vramFreeGb.toFixed(1)} GB below model minimum ${candidate.minVramGb} GB`);\n\telse if (candidate.minVramGb === 0) reasons.push(\"optimised for CPU inference\");\n\telse if (snapshot.vram.method === \"none\") reasons.push(\"no GPU detected — will use CPU inference\");\n\tif (availableRamGb >= candidate.recommendedRamGb) {\n\t\tscore += RAM_COMFORTABLE_BONUS;\n\t\treasons.push(`${availableRamGb.toFixed(1)} GB available RAM (recommended: ${candidate.recommendedRamGb} GB)`);\n\t\tif (fitTier !== \"excellent\") fitTier = \"good\";\n\t} else if (ramGb >= candidate.recommendedRamGb) {\n\t\tscore += RAM_SUFFICIENT_BONUS;\n\t\treasons.push(`${ramGb.toFixed(1)} GB total RAM meets recommendation (some swap may be used)`);\n\t\tif (fitTier !== \"excellent\") fitTier = \"good\";\n\t} else if (ramGb >= candidate.minRamGb) {\n\t\tscore += RAM_TIGHT_PENALTY;\n\t\treasons.push(`${ramGb.toFixed(1)} GB RAM meets minimum — expect slower inference (recommended: ${candidate.recommendedRamGb} GB)`);\n\t}\n\tif (candidate.contextLengthK >= 128) {\n\t\tscore += LONG_CONTEXT_BONUS;\n\t\treasons.push(`${candidate.contextLengthK}k context window`);\n\t}\n\tif (alreadyPulled) {\n\t\tscore += ALREADY_PULLED_BONUS;\n\t\treasons.push(\"already pulled — no download needed\");\n\t}\n\treturn {\n\t\tscore,\n\t\treasons,\n\t\tfitTier\n\t};\n}\n/**\n* Rank the 2–3 best-fit local open-weight models for this machine.\n*\n* ## Floor\n*\n* Machines with total RAM below {@link LOCAL_FIT_FLOOR_GB} (4 GB) receive no\n* recommendations. This deliberately excludes `qwen2:0.5b` (proof-of-life\n* only) — it is absent from {@link LOCAL_MODEL_CANDIDATES}.\n*\n* ## Algorithm\n*\n* 1. Capture hardware snapshot.\n* 2. Probe Ollama liveness and fetch the pulled-models list.\n* 3. Filter candidates to those whose `minRamGb` ≤ total RAM.\n* 4. Score remaining candidates (VRAM fit + RAM comfort + already-pulled bonus).\n* 5. Return the top 3 (or fewer), ordered by score descending.\n*\n* @param opts - Override hardware snapshot for testing.\n* @returns Fit envelope with ranked candidates.\n*\n* @task T11982\n*/\nasync function rankLocalModelFit(opts) {\n\tconst ollamaBaseUrl = opts?.ollamaBaseUrl ?? \"http://localhost:11434\";\n\tconst [snapshot, ollamaRunning] = await Promise.all([captureHardwareSnapshot(opts?.hardwareOverride), probeOllamaAlive(ollamaBaseUrl)]);\n\tconst pulledModels = opts?.pulledModelsOverride ?? (ollamaRunning ? await listOllamaPulledModels(ollamaBaseUrl, opts?.fetchFn) : []);\n\tconst pulledTags = new Set(pulledModels.map((m) => m.name));\n\tconst ramGb = snapshot.totalRamBytes / 1024 ** 3;\n\tconst hardware = {\n\t\ttotalRamGb: ramGb,\n\t\tavailableRamGb: snapshot.availableRamBytes / 1024 ** 3,\n\t\tvramTotalGb: snapshot.vram.totalBytes !== null ? snapshot.vram.totalBytes / 1024 ** 3 : null,\n\t\tvramFreeGb: snapshot.vram.freeBytes !== null ? snapshot.vram.freeBytes / 1024 ** 3 : null,\n\t\tvramMethod: snapshot.vram.method\n\t};\n\tif (ramGb < 4) {\n\t\tlogger.warn({\n\t\t\tramGb: ramGb.toFixed(1),\n\t\t\tfloorGb: 4\n\t\t}, \"local-model-fit: RAM below floor — no local model recommended\");\n\t\treturn {\n\t\t\thardware,\n\t\t\tollamaRunning,\n\t\t\tpulledModels,\n\t\t\trecommendations: [],\n\t\t\tnoRecommendationReason: `This machine has only ${ramGb.toFixed(1)} GB RAM. Local LLM inference requires at least 4 GB. Use a cloud provider instead.`\n\t\t};\n\t}\n\tconst eligible = LOCAL_MODEL_CANDIDATES.filter((c) => ramGb >= c.minRamGb);\n\tif (eligible.length === 0) return {\n\t\thardware,\n\t\tollamaRunning,\n\t\tpulledModels,\n\t\trecommendations: [],\n\t\tnoRecommendationReason: `No curated model fits the available RAM (${ramGb.toFixed(1)} GB).`\n\t};\n\tconst scored = eligible.map((candidate) => {\n\t\tconst alreadyPulled = pulledTags.has(candidate.modelTag);\n\t\tconst { score, reasons, fitTier } = scoreCandidate(candidate, snapshot, alreadyPulled);\n\t\treturn {\n\t\t\tcandidate,\n\t\t\tscore,\n\t\t\talreadyPulled,\n\t\t\treasons,\n\t\t\tfitTier,\n\t\t\tpullCommand: `ollama pull ${candidate.modelTag}`\n\t\t};\n\t});\n\tscored.sort((a, b) => {\n\t\tif (b.score !== a.score) return b.score - a.score;\n\t\treturn a.candidate.modelTag.localeCompare(b.candidate.modelTag);\n\t});\n\treturn {\n\t\thardware,\n\t\tollamaRunning,\n\t\tpulledModels,\n\t\trecommendations: scored.slice(0, 3),\n\t\tnoRecommendationReason: null\n\t};\n}\n//#endregion\nexport { rankLocalModelFit as i, captureHardwareSnapshot as n, listOllamaPulledModels as r, LOCAL_MODEL_CANDIDATES as t };\n"],"names":["logger","z.object","z.enum","z.string","z.number","z.array","z.boolean","exports"],"mappings":"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"}
|