@cleocode/cleo 2026.9.5 → 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 +32 -3
- 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/{CKXdW4mW.js → DVHIxkgs.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{DrfFUIvQ.js → TX-23QW3.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{C7UP-KLT.js → eK8hf4s7.js} +1 -1
- package/studio-dist/client/_app/immutable/entry/{app.BwkUGH1B.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.DcUJW-xi.js → 0.CZzEEyVh.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.DyTt_cQs.js → 1.Bj3Opbua.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{15.LRqqoueS.js → 15.BfXgiwMC.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16.-hGPNXOI.js → 16.mEwy9cqh.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.ChMxgTIY.js → 17.DP2QtQGn.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.B9zeITVb.js → 18.Bu0054sX.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{20.BHg5roNq.js → 20.B1AIHdkP.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{24.B_s9aY5m.js → 24.BUoUu37z.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{25.DZXkDxw_.js → 25.ddZ1_EFk.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{26.BBRbdwIG.js → 26.6OcmQbLV.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{3.DMYcrZeG.js → 3.Dyir4xXj.js} +1 -1
- package/studio-dist/client/_app/version.json +1 -1
- package/studio-dist/server/chunks/{0-CM4iQVYP.js → 0-CvsKDxQ6.js} +3 -3
- package/studio-dist/server/chunks/{1-BQFD-dx6.js → 1-ck_x2Hf0.js} +3 -3
- package/studio-dist/server/chunks/{15-Cng10n82.js → 15-BvUNl3KL.js} +3 -3
- package/studio-dist/server/chunks/{16-u3KwU3N4.js → 16-De6EzPSa.js} +3 -3
- package/studio-dist/server/chunks/{17-BDtxQX9n.js → 17-CZNsiZhi.js} +3 -3
- package/studio-dist/server/chunks/{18-wwUoSO4F.js → 18-CbxxjZox.js} +3 -3
- package/studio-dist/server/chunks/{20-B-0CBvqY.js → 20-DVU22np7.js} +3 -3
- package/studio-dist/server/chunks/{24-BeVcofpU.js → 24-CVlymvLF.js} +3 -3
- package/studio-dist/server/chunks/{25-DIuzTPOu.js → 25-CAg6Xcmn.js} +3 -3
- package/studio-dist/server/chunks/{26-CY8x0KNI.js → 26-_nfVTvNi.js} +3 -3
- package/studio-dist/server/chunks/{3-p3RwD-FY.js → 3-B8KhfvHp.js} +3 -3
- package/studio-dist/server/chunks/{_layout.svelte-rswfOTDe.js → _layout.svelte-BEIGQcIv.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-DaYxqOUS.js → _page.svelte-2cgtvHwW.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BT1YF8j2.js → _page.svelte-9OQphlnm.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-CiIYIPG9.js → _page.svelte-BIlhmugm.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-C9twD2l1.js → _page.svelte-BgwL2Gyu.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DKVwBmIp.js → _page.svelte-C_VSL8NW.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-CHH1vmfg.js → _page.svelte-DOWw416I.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-D8NhlkPD.js → _page.svelte-Wfx7ww_h.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DZEnHo1L.js → _page.svelte-l4Z_xjl9.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DmTXiXKT.js → _page.svelte-tYN7_LXI.js} +3 -3
- package/studio-dist/server/chunks/{client-ym-URLFs.js → client-CgX38JBu.js} +2 -2
- package/studio-dist/server/chunks/{error.svelte-Bt1EbBZe.js → error.svelte-CplNulnS.js} +3 -3
- package/studio-dist/server/chunks/{internal-D3i_4gCl.js → internal-D6eWgsHJ.js} +2 -2
- package/studio-dist/server/chunks/{stores-ByevKXL9.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/9yrFrmKZ.js +0 -1
- package/studio-dist/client/_app/immutable/entry/start.BcsID0Sf.js +0 -1
- package/studio-dist/server/chunks/0-CM4iQVYP.js.map +0 -1
- package/studio-dist/server/chunks/1-BQFD-dx6.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-Cng10n82.js.map +0 -1
- package/studio-dist/server/chunks/16-u3KwU3N4.js.map +0 -1
- package/studio-dist/server/chunks/17-BDtxQX9n.js.map +0 -1
- package/studio-dist/server/chunks/18-wwUoSO4F.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-B-0CBvqY.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-BeVcofpU.js.map +0 -1
- package/studio-dist/server/chunks/25-DIuzTPOu.js.map +0 -1
- package/studio-dist/server/chunks/26-CY8x0KNI.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-p3RwD-FY.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-rswfOTDe.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-BT1YF8j2.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-Byz2djto.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-C3aIui4o.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-C9twD2l1.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CCoTp89s.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-CHH1vmfg.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-CiIYIPG9.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-D8NhlkPD.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-DKVwBmIp.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-DZEnHo1L.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-DaYxqOUS.js.map +0 -1
- package/studio-dist/server/chunks/_page.svelte-DmTXiXKT.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-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-ym-URLFs.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-Bt1EbBZe.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-D3i_4gCl.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-ByevKXL9.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":"_server.ts-DSzRdt1U.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/search/_server.ts.js"],"sourcesContent":["import { a as getNexusDb } from \"../../../../chunks/connections2.js\";\nimport { i as listRegisteredProjects, r as getActiveProjectId } from \"../../../../chunks/project-context.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/search/+server.ts\n/**\n* Cross-project symbol search API endpoint.\n*\n* GET /api/search?q=<term>&scope=all|current\n*\n* Searches nexus_nodes across all registered projects (scope=all) or\n* just the current/active project (scope=current).\n*\n* Query params:\n* q - search term (required, min 2 chars)\n* scope - \"all\" (default) or \"current\"\n* limit - max results per project (default 20, max 100)\n*\n* Returns a LAFS-compliant JSON envelope.\n*\n* @task T622\n*/\nvar GET = ({ url, cookies }) => {\n\tconst startTime = Date.now();\n\tconst q = url.searchParams.get(\"q\") ?? \"\";\n\tconst scope = url.searchParams.get(\"scope\") ?? \"all\";\n\tconst limitParam = parseInt(url.searchParams.get(\"limit\") ?? \"20\", 10);\n\tconst limit = Math.min(Math.max(1, limitParam), 100);\n\tif (q.length < 2) return json({\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: \"E_INVALID_INPUT\",\n\t\t\tmessage: \"q must be at least 2 characters\"\n\t\t},\n\t\tmeta: {\n\t\t\toperation: \"api.search\",\n\t\t\tduration_ms: Date.now() - startTime,\n\t\t\ttimestamp: (/* @__PURE__ */ new Date()).toISOString()\n\t\t}\n\t}, { status: 400 });\n\ttry {\n\t\tconst db = getNexusDb();\n\t\tif (!db) return json({\n\t\t\tsuccess: true,\n\t\t\tdata: {\n\t\t\t\tquery: q,\n\t\t\t\tscope,\n\t\t\t\tresults: [],\n\t\t\t\ttotalHits: 0\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\toperation: \"api.search\",\n\t\t\t\tduration_ms: Date.now() - startTime,\n\t\t\t\ttimestamp: (/* @__PURE__ */ new Date()).toISOString()\n\t\t\t}\n\t\t});\n\t\tlet projectFilter = null;\n\t\tif (scope === \"current\") {\n\t\t\tconst activeId = getActiveProjectId(cookies);\n\t\t\tif (activeId) projectFilter = [activeId];\n\t\t}\n\t\tconst allProjects = listRegisteredProjects();\n\t\tconst projectNameById = new Map(allProjects.map((p) => [p.projectId, p.name]));\n\t\tconst hits = [];\n\t\tconst term = `%${q.toLowerCase()}%`;\n\t\tif (projectFilter) for (const projectId of projectFilter) {\n\t\t\tconst rows = db.prepare(`SELECT id, project_id, name, kind, file_path, start_line, language, doc_summary, is_exported\n FROM nexus_nodes\n WHERE project_id = ?\n AND lower(name) LIKE ?\n AND kind NOT IN ('community', 'process', 'file', 'folder')\n ORDER BY\n CASE kind\n WHEN 'function' THEN 0 WHEN 'method' THEN 1 WHEN 'class' THEN 2\n WHEN 'interface' THEN 3 WHEN 'type_alias' THEN 4 ELSE 5\n END, name\n LIMIT ?`).all(projectId, term, limit);\n\t\t\tfor (const row of rows) {\n\t\t\t\tif (!row.name) continue;\n\t\t\t\thits.push({\n\t\t\t\t\tprojectId: row.project_id,\n\t\t\t\t\tprojectName: projectNameById.get(row.project_id) ?? row.project_id,\n\t\t\t\t\tnodeId: row.id,\n\t\t\t\t\tname: row.name,\n\t\t\t\t\tkind: row.kind,\n\t\t\t\t\tfilePath: row.file_path ?? null,\n\t\t\t\t\tstartLine: row.start_line ?? null,\n\t\t\t\t\tlanguage: row.language ?? null,\n\t\t\t\t\tdocSummary: row.doc_summary ?? null,\n\t\t\t\t\tisExported: row.is_exported === 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst rows = db.prepare(`SELECT id, project_id, name, kind, file_path, start_line, language, doc_summary, is_exported\n FROM nexus_nodes\n WHERE lower(name) LIKE ?\n AND kind NOT IN ('community', 'process', 'file', 'folder')\n ORDER BY\n CASE kind\n WHEN 'function' THEN 0 WHEN 'method' THEN 1 WHEN 'class' THEN 2\n WHEN 'interface' THEN 3 WHEN 'type_alias' THEN 4 ELSE 5\n END, name\n LIMIT ?`).all(term, limit * Math.max(allProjects.length, 1));\n\t\t\tfor (const row of rows) {\n\t\t\t\tif (!row.name) continue;\n\t\t\t\thits.push({\n\t\t\t\t\tprojectId: row.project_id,\n\t\t\t\t\tprojectName: projectNameById.get(row.project_id) ?? row.project_id,\n\t\t\t\t\tnodeId: row.id,\n\t\t\t\t\tname: row.name,\n\t\t\t\t\tkind: row.kind,\n\t\t\t\t\tfilePath: row.file_path ?? null,\n\t\t\t\t\tstartLine: row.start_line ?? null,\n\t\t\t\t\tlanguage: row.language ?? null,\n\t\t\t\t\tdocSummary: row.doc_summary ?? null,\n\t\t\t\t\tisExported: row.is_exported === 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn json({\n\t\t\tsuccess: true,\n\t\t\tdata: {\n\t\t\t\tquery: q,\n\t\t\t\tscope,\n\t\t\t\tresults: hits,\n\t\t\t\ttotalHits: hits.length\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\toperation: \"api.search\",\n\t\t\t\tduration_ms: Date.now() - startTime,\n\t\t\t\ttimestamp: (/* @__PURE__ */ new Date()).toISOString()\n\t\t\t}\n\t\t});\n\t} catch (err) {\n\t\treturn json({\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: \"E_SEARCH_FAILED\",\n\t\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t\t},\n\t\t\tmeta: {\n\t\t\t\toperation: \"api.search\",\n\t\t\t\tduration_ms: Date.now() - startTime,\n\t\t\t\ttimestamp: (/* @__PURE__ */ new Date()).toISOString()\n\t\t\t}\n\t\t}, { status: 500 });\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DThYFaZj.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/memory/verify/_server.ts.js"],"sourcesContent":["import { n as getBrainDb } from \"../../../../../chunks/connections2.js\";\nimport { c as parseJsonBody, l as requireString, n as isParseError, r as ok, t as err } from \"../../../../../chunks/_lafs.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/memory/verify/+server.ts\n/**\n* Memory verify write endpoint (T990 Wave 1D).\n*\n* @remarks T9616 follow-up: There is no public `verifyMemoryEntry` operation\n* in the CORE public API (`packages/core/src/memory/public-api.ts`). The CLI\n* `cleo memory verify` command reaches into `memory/brain-retrieval.ts`\n* internally. Once a public `verifyMemoryEntry(id, projectRoot)` op is\n* promoted, this handler should be migrated. See docs/plans/E-CORE-FIRST-ARCH.md Task 2.\n*\n* POST /api/memory/verify\n* body: { id: string, agent?: string }\n* → LAFS envelope { success, data: { id, table, verified, promotedAt } }\n*\n* Flips the `verified` flag on the target memory entry to 1, and\n* records the verification timestamp. Routes the update to the correct\n* brain_* table via the id prefix:\n* - O- → brain_observations\n* - D- → brain_decisions\n* - P- → brain_patterns\n* - L- → brain_learnings\n*\n* Ground-truth promotion is owner/cleo-prime only; this endpoint\n* inherits the Studio's localhost-only auth posture and does NOT\n* emit an audit event yet (T990 Wave 1D is UI-only — the core audit\n* trail lives in the CLI `cleo memory verify` op).\n*\n* @task T990\n* @wave 1D\n*/\n/** Route id-prefix → table. */\nfunction tableFromId(id) {\n\tif (id.startsWith(\"O-\")) return \"brain_observations\";\n\tif (id.startsWith(\"D-\")) return \"brain_decisions\";\n\tif (id.startsWith(\"P-\")) return \"brain_patterns\";\n\tif (id.startsWith(\"L-\")) return \"brain_learnings\";\n\treturn null;\n}\nvar POST = async ({ locals, request }) => {\n\tconst body = await parseJsonBody(request);\n\tif (isParseError(body)) return json(err(\"E_VALIDATION\", body._parseError), { status: 400 });\n\tconst idR = requireString(body, \"id\", 80);\n\tif (!idR.ok) return json(err(\"E_VALIDATION\", idR.message), { status: 400 });\n\tconst table = tableFromId(idR.value);\n\tif (!table) return json(err(\"E_VALIDATION\", \"Unknown id prefix — must be O- / D- / P- / L-\"), { status: 400 });\n\tconst db = getBrainDb(locals.projectCtx);\n\tif (!db) return json(err(\"E_BRAIN_UNAVAILABLE\", \"brain.db is unavailable for this project\"), { status: 503 });\n\ttry {\n\t\tif (!db.prepare(`SELECT id FROM ${table} WHERE id = ?`).get(idR.value)) return json(err(\"E_NOT_FOUND\", `No ${table} row with id ${idR.value}`), { status: 404 });\n\t\tdb.prepare(`UPDATE ${table} SET verified = 1 WHERE id = ?`).run(idR.value);\n\t\tconst promotedAt = (/* @__PURE__ */ new Date()).toISOString();\n\t\treturn json(ok({\n\t\t\tid: idR.value,\n\t\t\ttable,\n\t\t\tverified: 1,\n\t\t\tpromotedAt\n\t\t}));\n\t} catch (e) {\n\t\treturn json(err(\"E_BRAIN_WRITE\", e instanceof Error ? e.message : \"Update failed\"), { status: 500 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,EAAE,EAAE;AACzB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,oBAAoB;AACrD,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,iBAAiB;AAClD,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,gBAAgB;AACjD,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,iBAAiB;AAClD,CAAC,OAAO,IAAI;AACZ;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC1C,CAAC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC;AAC1C,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5F,CAAC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5E,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,+CAA+C,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/G,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;AACzC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,0CAA0C,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC9G,CAAC,IAAI;AACL,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAClK,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5E,EAAE,MAAM,UAAU,GAAG,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AAC/D,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,GAAG,EAAE,EAAE,GAAG,CAAC,KAAK;AAChB,GAAG,KAAK;AACR,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG;AACH,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACtG,CAAC;AACD;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DV6pzF-M.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/project/scan/_server.ts.js"],"sourcesContent":["import { t as executeCliAction } from \"../../../../../chunks/cli-action.js\";\n//#region src/routes/api/project/scan/+server.ts\n/**\n* POST /api/project/scan\n*\n* Calls `cleo nexus projects scan --json` with optional flags derived from the\n* request body. This is a global operation — it scans the filesystem for\n* projects and optionally registers them.\n*\n* Request body (all optional):\n* {\n* roots?: string; — comma-separated root paths to scan (--roots <paths>)\n* maxDepth?: number; — max directory depth (--max-depth <n>)\n* autoRegister?: boolean; — auto-register discovered projects (--auto-register)\n* }\n*\n* Returns a LAFS envelope or a 4xx with structured error envelope on CLI failure.\n*\n* @task T722\n*/\nvar POST = async ({ request }) => {\n\tlet body = {};\n\ttry {\n\t\tconst raw = await request.json();\n\t\tif (typeof raw === \"object\" && raw !== null) body = raw;\n\t} catch {}\n\tconst args = [\n\t\t\"nexus\",\n\t\t\"projects\",\n\t\t\"scan\",\n\t\t\"--json\"\n\t];\n\tif (typeof body.roots === \"string\" && body.roots.trim()) args.push(\"--roots\", body.roots.trim());\n\tif (typeof body.maxDepth === \"number\" && body.maxDepth > 0) args.push(\"--max-depth\", String(Math.floor(body.maxDepth)));\n\tif (body.autoRegister) args.push(\"--auto-register\");\n\treturn executeCliAction(args, {\n\t\terrorCode: \"E_SCAN_FAILED\",\n\t\tmeta: {\n\t\t\troots: body.roots,\n\t\t\tmaxDepth: body.maxDepth,\n\t\t\tautoRegister: body.autoRegister\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI,IAAI,GAAG,EAAE;AACd,CAAC,IAAI;AACL,EAAE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAClC,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,IAAI,GAAG,GAAG;AACzD,CAAC,CAAC,CAAC,MAAM,CAAC;AACV,CAAC,MAAM,IAAI,GAAG;AACd,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,MAAM;AACR,EAAE;AACF,EAAE;AACF,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACjG,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxH,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACpD,CAAC,OAAO,gBAAgB,CAAC,IAAI,EAAE;AAC/B,EAAE,SAAS,EAAE,eAAe;AAC5B,EAAE,IAAI,EAAE;AACR,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,GAAG,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,GAAG,YAAY,EAAE,IAAI,CAAC;AACtB;AACA,EAAE,CAAC;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-D_3Pm0gr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/project/migrate/_server.ts.js"],"sourcesContent":["import { i as getDbStatus } from \"../../../../../chunks/connections2.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/project/migrate/+server.ts\n/**\n* GET /api/project/migrate — read-only migration status.\n*\n* The underlying CLI currently does NOT expose a safe blanket migration\n* path; schemas are applied at `cleo init` / first-open time. Rather\n* than risk a destructive POST, this endpoint runs `cleo nexus status\n* --json` (best-available proxy for \"is the schema current?\") and\n* reports:\n*\n* {\n* success, data: {\n* databases: {\n* nexus: { schemaVersion, migrationPending: false|null, message },\n* brain: { … },\n* tasks: { … },\n* },\n* recommendedCommand: 'cleo init' | null,\n* }\n* }\n*\n* `migrationPending` is `null` when we cannot detect it; callers render\n* that as \"unknown — run CLI\" rather than implying green. A real\n* migration trigger lands in a future wave once the CLI grows a\n* `cleo nexus migrate` / `cleo brain migrate` subcommand with\n* dry-run support.\n*\n* @task T990\n* @wave 1E\n*/\nfunction safePragma(db) {\n\ttry {\n\t\tconst row = db.prepare(\"PRAGMA user_version\").get();\n\t\treturn typeof row?.user_version === \"number\" ? String(row.user_version) : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nvar GET = async ({ locals }) => {\n\tconst { getBrainDb, getNexusDb, getTasksDb } = await import(\"../../../../../chunks/connections.js\");\n\tconst status = getDbStatus(locals.projectCtx);\n\tconst nexusReport = {\n\t\tschemaVersion: null,\n\t\tmigrationPending: null,\n\t\tmessage: status.nexus ? \"ok\" : \"nexus.db not found\"\n\t};\n\tconst brainReport = {\n\t\tschemaVersion: null,\n\t\tmigrationPending: null,\n\t\tmessage: status.brain ? \"ok\" : \"brain.db not found\"\n\t};\n\tconst tasksReport = {\n\t\tschemaVersion: null,\n\t\tmigrationPending: null,\n\t\tmessage: status.tasks ? \"ok\" : \"tasks.db not found\"\n\t};\n\tif (status.nexus) {\n\t\tconst db = getNexusDb();\n\t\tif (db) nexusReport.schemaVersion = safePragma(db);\n\t}\n\tif (status.brain) {\n\t\tconst db = getBrainDb(locals.projectCtx);\n\t\tif (db) brainReport.schemaVersion = safePragma(db);\n\t}\n\tif (status.tasks) {\n\t\tconst db = getTasksDb(locals.projectCtx);\n\t\tif (db) tasksReport.schemaVersion = safePragma(db);\n\t}\n\treturn json({\n\t\tsuccess: true,\n\t\tdata: {\n\t\t\tdatabases: {\n\t\t\t\tnexus: nexusReport,\n\t\t\t\tbrain: brainReport,\n\t\t\t\ttasks: tasksReport\n\t\t\t},\n\t\t\trecommendedCommand: null,\n\t\t\tnote: \"Migration trigger is CLI-only until a `cleo nexus migrate` subcommand lands with safe dry-run + rollback.\"\n\t\t}\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,CAAC,IAAI;AACL,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE;AACrD,EAAE,OAAO,OAAO,GAAG,EAAE,YAAY,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI;AAChF,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AAChC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,2BAAsC,CAAC;AACpG,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;AAC9C,CAAC,MAAM,WAAW,GAAG;AACrB,EAAE,aAAa,EAAE,IAAI;AACrB,EAAE,gBAAgB,EAAE,IAAI;AACxB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG;AACjC,EAAE;AACF,CAAC,MAAM,WAAW,GAAG;AACrB,EAAE,aAAa,EAAE,IAAI;AACrB,EAAE,gBAAgB,EAAE,IAAI;AACxB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG;AACjC,EAAE;AACF,CAAC,MAAM,WAAW,GAAG;AACrB,EAAE,aAAa,EAAE,IAAI;AACrB,EAAE,gBAAgB,EAAE,IAAI;AACxB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG;AACjC,EAAE;AACF,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE;AACnB,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE;AACzB,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;AACpD,CAAC;AACD,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE;AACnB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1C,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;AACpD,CAAC;AACD,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE;AACnB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1C,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;AACpD,CAAC;AACD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,IAAI,EAAE;AACR,GAAG,SAAS,EAAE;AACd,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,KAAK,EAAE;AACX,IAAI;AACJ,GAAG,kBAAkB,EAAE,IAAI;AAC3B,GAAG,IAAI,EAAE;AACT;AACA,EAAE,CAAC;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DcHxdMsm.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/project/_id_/index/_server.ts.js"],"sourcesContent":["import { t as executeCliAction } from \"../../../../../../chunks/cli-action.js\";\nimport { i as listRegisteredProjects } from \"../../../../../../chunks/project-context.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/project/[id]/index/+server.ts\n/**\n* POST /api/project/[id]/index\n*\n* Triggers a full nexus index for a project by calling:\n* `cleo nexus analyze <projectPath> --json`\n*\n* The project path is resolved by looking up the project ID in the\n* listRegisteredProjects() registry. Returns a LAFS envelope on success\n* or a 4xx with structured error envelope on CLI failure.\n*\n* @task T722\n*/\nvar POST = async ({ params }) => {\n\tconst projectId = params.id;\n\tif (!projectId?.trim()) return json({\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: \"E_MISSING_ID\",\n\t\t\tmessage: \"Missing project id\"\n\t\t}\n\t}, { status: 400 });\n\tconst project = listRegisteredProjects().find((p) => p.projectId === projectId);\n\tif (!project) return json({\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: \"E_NOT_FOUND\",\n\t\t\tmessage: `Project ${projectId} not found in registry`\n\t\t}\n\t}, { status: 404 });\n\treturn executeCliAction([\n\t\t\"nexus\",\n\t\t\"analyze\",\n\t\tproject.projectPath,\n\t\t\"--json\"\n\t], {\n\t\terrorCode: \"E_INDEX_FAILED\",\n\t\tmeta: {\n\t\t\tprojectId,\n\t\t\tprojectPath: project.projectPath\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACjC,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE;AAC5B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC;AACrC,EAAE,OAAO,EAAE,KAAK;AAChB,EAAE,KAAK,EAAE;AACT,GAAG,IAAI,EAAE,cAAc;AACvB,GAAG,OAAO,EAAE;AACZ;AACA,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpB,CAAC,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;AAChF,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC;AAC3B,EAAE,OAAO,EAAE,KAAK;AAChB,EAAE,KAAK,EAAE;AACT,GAAG,IAAI,EAAE,aAAa;AACtB,GAAG,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,sBAAsB;AACvD;AACA,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpB,CAAC,OAAO,gBAAgB,CAAC;AACzB,EAAE,OAAO;AACT,EAAE,SAAS;AACX,EAAE,OAAO,CAAC,WAAW;AACrB,EAAE;AACF,EAAE,EAAE;AACJ,EAAE,SAAS,EAAE,gBAAgB;AAC7B,EAAE,IAAI,EAAE;AACR,GAAG,SAAS;AACZ,GAAG,WAAW,EAAE,OAAO,CAAC;AACxB;AACA,EAAE,CAAC;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DgbY5EB3.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/nexus/symbol/_name_/_server.ts.js"],"sourcesContent":["import { a as getNexusDb } from \"../../../../../../chunks/connections2.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/nexus/symbol/[name]/+server.ts\n/**\n* GET /api/nexus/symbol/:name\n*\n* Returns an ego network (2-hop) around the named symbol.\n* The center node plus all nodes directly connected (hop 1) and their\n* immediate neighbours (hop 2) are included. Edges within the subgraph\n* are also returned.\n*/\nvar GET = ({ params }) => {\n\tconst db = getNexusDb();\n\tif (!db) return json({ error: \"nexus.db not available\" }, { status: 503 });\n\tconst name = decodeURIComponent(params.name);\n\tconst centerRow = db.prepare(`SELECT id, label, kind, file_path, community_id\n FROM nexus_nodes\n WHERE label = ? OR id = ?\n ORDER BY CASE WHEN label = ? THEN 0 ELSE 1 END\n LIMIT 1`).get(name, name, name);\n\tif (!centerRow) return json({ error: `Symbol \"${name}\" not found` }, { status: 404 });\n\tconst centerId = centerRow.id;\n\tconst hop1Rows = db.prepare(`SELECT DISTINCT n.id, n.label, n.kind, n.file_path, n.community_id\n FROM nexus_relations r\n JOIN nexus_nodes n ON (r.target_id = n.id OR r.source_id = n.id)\n WHERE (r.source_id = ? OR r.target_id = ?)\n AND n.id != ?\n LIMIT 100`).all(centerId, centerId, centerId);\n\tconst hop1Ids = hop1Rows.map((n) => n.id);\n\tlet hop2Rows = [];\n\tif (hop1Ids.length > 0) {\n\t\tconst placeholders = hop1Ids.map(() => \"?\").join(\",\");\n\t\tconst excludeIds = [centerId, ...hop1Ids];\n\t\tconst excludePlaceholders = excludeIds.map(() => \"?\").join(\",\");\n\t\thop2Rows = db.prepare(`SELECT DISTINCT n.id, n.label, n.kind, n.file_path, n.community_id\n FROM nexus_relations r\n JOIN nexus_nodes n ON (r.target_id = n.id OR r.source_id = n.id)\n WHERE (r.source_id IN (${placeholders}) OR r.target_id IN (${placeholders}))\n AND n.id NOT IN (${excludePlaceholders})\n LIMIT 200`).all(...hop1Ids, ...hop1Ids, ...excludeIds);\n\t}\n\tconst allIds = [\n\t\tcenterId,\n\t\t...hop1Ids,\n\t\t...hop2Rows.map((n) => n.id)\n\t];\n\tconst callerCounts = /* @__PURE__ */ new Map();\n\tif (allIds.length > 0) {\n\t\tconst placeholders = allIds.map(() => \"?\").join(\",\");\n\t\tconst ccRows = db.prepare(`SELECT target_id, COUNT(*) AS cnt\n FROM nexus_relations\n WHERE target_id IN (${placeholders}) AND type = 'calls'\n GROUP BY target_id`).all(...allIds);\n\t\tfor (const row of ccRows) callerCounts.set(row.target_id, row.cnt);\n\t}\n\tconst subgraphEdges = allIds.length > 0 ? db.prepare(`SELECT source_id, target_id, type\n FROM nexus_relations\n WHERE source_id IN (${allIds.map(() => \"?\").join(\",\")})\n AND target_id IN (${allIds.map(() => \"?\").join(\",\")})\n LIMIT 1000`).all(...allIds, ...allIds) : [];\n\treturn json({\n\t\tcenter: centerId,\n\t\tnodes: [\n\t\t\t{\n\t\t\t\tid: centerRow.id,\n\t\t\t\tlabel: centerRow.label,\n\t\t\t\tkind: centerRow.kind,\n\t\t\t\tfilePath: centerRow.file_path ?? \"\",\n\t\t\t\thop: 0,\n\t\t\t\tcallerCount: callerCounts.get(centerRow.id) ?? 0,\n\t\t\t\tcommunityId: centerRow.community_id\n\t\t\t},\n\t\t\t...hop1Rows.map((n) => ({\n\t\t\t\tid: n.id,\n\t\t\t\tlabel: n.label,\n\t\t\t\tkind: n.kind,\n\t\t\t\tfilePath: n.file_path ?? \"\",\n\t\t\t\thop: 1,\n\t\t\t\tcallerCount: callerCounts.get(n.id) ?? 0,\n\t\t\t\tcommunityId: n.community_id\n\t\t\t})),\n\t\t\t...hop2Rows.map((n) => ({\n\t\t\t\tid: n.id,\n\t\t\t\tlabel: n.label,\n\t\t\t\tkind: n.kind,\n\t\t\t\tfilePath: n.file_path ?? \"\",\n\t\t\t\thop: 2,\n\t\t\t\tcallerCount: callerCounts.get(n.id) ?? 0,\n\t\t\t\tcommunityId: n.community_id\n\t\t\t}))\n\t\t],\n\t\tedges: subgraphEdges.map((e) => ({\n\t\t\tsource: e.source_id,\n\t\t\ttarget: e.target_id,\n\t\t\ttype: e.type\n\t\t}))\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-Dlfadh2I.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/nexus/community/_id_/_server.ts.js"],"sourcesContent":["import { a as getNexusDb } from \"../../../../../../chunks/connections2.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/nexus/community/[id]/+server.ts\n/**\n* GET /api/nexus/community/:id\n*\n* Returns all member nodes for a given community, along with edges\n* between members (internal edges only, for drill-down view).\n*/\nvar GET = ({ params }) => {\n\tconst db = getNexusDb();\n\tif (!db) return json({ error: \"nexus.db not available\" }, { status: 503 });\n\tconst communityId = params.id;\n\tconst nodeRows = db.prepare(`SELECT n.id,\n n.label,\n n.kind,\n n.file_path,\n COUNT(r.id) AS caller_count\n FROM nexus_nodes n\n LEFT JOIN nexus_relations r ON r.target_id = n.id AND r.type = 'calls'\n WHERE n.community_id = ?\n GROUP BY n.id\n ORDER BY caller_count DESC\n LIMIT 500`).all(communityId);\n\tif (nodeRows.length === 0) return json({ error: `Community ${communityId} not found` }, { status: 404 });\n\tconst nodeIds = nodeRows.map((n) => n.id);\n\tconst placeholders = nodeIds.map(() => \"?\").join(\",\");\n\tconst edgeRows = db.prepare(`SELECT source_id, target_id, type\n FROM nexus_relations\n WHERE source_id IN (${placeholders})\n AND target_id IN (${placeholders})\n LIMIT 2000`).all(...nodeIds, ...nodeIds);\n\treturn json({\n\t\tcommunityId,\n\t\tnodes: nodeRows.map((row) => ({\n\t\t\tid: row.id,\n\t\t\tlabel: row.label,\n\t\t\tkind: row.kind,\n\t\t\tfilePath: row.file_path ?? \"\",\n\t\t\tcallerCount: row.caller_count\n\t\t})),\n\t\tedges: edgeRows.map((row) => ({\n\t\t\tsource: row.source_id,\n\t\t\ttarget: row.target_id,\n\t\t\ttype: row.type\n\t\t}))\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK;AAC1B,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;AACxB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3E,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE;AAC9B,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;AACnC,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzG,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC1C,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACtD,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9B;AACA,2BAA2B,EAAE,YAAY,CAAC;AAC1C,2BAA2B,EAAE,YAAY,CAAC;AAC1C,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;AAC/C,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,WAAW;AACb,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAChC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE;AACb,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK;AACnB,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI;AACjB,GAAG,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;AAChC,GAAG,WAAW,EAAE,GAAG,CAAC;AACpB,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAChC,GAAG,MAAM,EAAE,GAAG,CAAC,SAAS;AACxB,GAAG,MAAM,EAAE,GAAG,CAAC,SAAS;AACxB,GAAG,IAAI,EAAE,GAAG,CAAC;AACb,GAAG,CAAC;AACJ,EAAE,CAAC;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DnE0f-iC.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/project/gc/_server.ts.js"],"sourcesContent":["import { n as recordAudit } from \"../../../../../chunks/audit-log.js\";\nimport { t as executeCliAction } from \"../../../../../chunks/cli-action.js\";\n//#region src/routes/api/project/gc/+server.ts\n/**\n* POST /api/project/gc\n*\n* Runs `cleo nexus gc --json` to garbage-collect orphan rows / dead\n* edges in the nexus symbol graph. Always defaults to `--dry-run` unless\n* the caller explicitly sends `{ dryRun: false }`.\n*\n* @task T990\n* @wave 1E\n*/\nvar POST = async ({ request, locals }) => {\n\tlet body = {};\n\ttry {\n\t\tconst raw = await request.json();\n\t\tif (raw && typeof raw === \"object\") body = raw;\n\t} catch {}\n\tconst dryRun = body.dryRun !== false;\n\tconst args = [\n\t\t\"nexus\",\n\t\t\"gc\",\n\t\t\"--json\"\n\t];\n\tif (dryRun) args.push(\"--dry-run\");\n\telse args.push(\"--yes\");\n\trecordAudit(locals.projectCtx.projectPath, {\n\t\tactor: \"studio-admin\",\n\t\taction: \"project.gc\",\n\t\ttarget: locals.projectCtx.projectId || locals.projectCtx.projectPath,\n\t\tresult: dryRun ? \"dry-run\" : \"initiated\"\n\t});\n\tconst response = await executeCliAction(args, {\n\t\terrorCode: \"E_GC_FAILED\",\n\t\tmeta: { dryRun }\n\t});\n\trecordAudit(locals.projectCtx.projectPath, {\n\t\tactor: \"studio-admin\",\n\t\taction: \"project.gc\",\n\t\ttarget: locals.projectCtx.projectId || locals.projectCtx.projectPath,\n\t\tresult: response.status === 200 ? \"success\" : \"failure\",\n\t\tdetail: dryRun ? \"dry-run\" : \"live\"\n\t});\n\treturn response;\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AAC1C,CAAC,IAAI,IAAI,GAAG,EAAE;AACd,CAAC,IAAI;AACL,EAAE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAClC,EAAE,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,IAAI,GAAG,GAAG;AAChD,CAAC,CAAC,CAAC,MAAM,CAAC;AACV,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK;AACrC,CAAC,MAAM,IAAI,GAAG;AACd,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE;AACF,EAAE;AACF,CAAC,IAAI,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;AAC5C,EAAE,KAAK,EAAE,cAAc;AACvB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW;AACtE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG;AAC/B,EAAE,CAAC;AACH,CAAC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE;AAC/C,EAAE,SAAS,EAAE,aAAa;AAC1B,EAAE,IAAI,EAAE,EAAE,MAAM;AAChB,EAAE,CAAC;AACH,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;AAC5C,EAAE,KAAK,EAAE,cAAc;AACvB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW;AACtE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,GAAG,GAAG,SAAS,GAAG,SAAS;AACzD,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG;AAC/B,EAAE,CAAC;AACH,CAAC,OAAO,QAAQ;AAChB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-Do9RIPRo.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/credentials/_server.ts.js"],"sourcesContent":["import { a as getCredentialPool, s as addCredential } from \"../../../../chunks/credential-pool.js\";\nimport { c as parseJsonBody, l as requireString, n as isParseError, r as ok, t as err } from \"../../../../chunks/_lafs.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/credentials/+server.ts\n/**\n* Credential pool management endpoint for the Studio `/keys` UI.\n*\n* GET /api/credentials\n* → `{ entries: SafeCredentialEntry[] }`\n*\n* Returns every entry in the unified credential pool with all secret\n* material stripped (`accessToken`, `refreshToken`, `extraHeaders`,\n* `metadata` removed). Only the fields a human operator needs to\n* identify, audit, and remove a credential are exposed — provider,\n* label, source, authType, expiry, last-status, request count.\n*\n* This is a deliberate write-only contract: there is NO API path\n* that returns credential values to a browser. Adding/rotating a\n* key MUST be done in-place via POST (the client sends the secret\n* in, never receives one back).\n*\n* POST /api/credentials\n* body: { provider: ProviderId, label: string, apiKey: string }\n* → `{ success: true, data: { provider, label } }`\n*\n* Calls `@cleocode/core/llm/credentials-store#addCredential` with\n* `authType: 'api_key'` and `source: 'manual'`. The CredentialPool's\n* 60s seed cache is invalidated by the underlying upsert because the\n* store mutation clears its internal Anthropic-key cache; the next\n* GET reflects the new entry immediately.\n*\n* SECURITY: this endpoint never returns credential values. Every\n* `SafeCredentialEntry` projection is constructed by hand so a future\n* refactor cannot accidentally spread `accessToken` into the response.\n*\n* @task T9426\n* @epic E-CONFIG-AUTH-UNIFY (E3 §5.3 T-E3-7)\n*/\n/**\n* Project a `StoredCredential` into the safe response shape.\n*\n* Implemented as an explicit field-by-field copy (rather than a `{ ...c }`\n* spread minus deletions) so a future contributor adding a new secret\n* field to `StoredCredential` cannot inadvertently leak it through this\n* endpoint.\n*\n* @param c - Stored credential as returned by the pool's `list()`.\n* @returns Safe projection with all secret material removed.\n*\n* @task T9426\n*/\nfunction toSafeEntry(c) {\n\tconst entry = {\n\t\tprovider: c.provider,\n\t\tlabel: c.label,\n\t\tsource: c.source ?? \"manual\",\n\t\tauthType: c.authType,\n\t\tpriority: c.priority,\n\t\texpiresAt: c.expiresAt ?? null,\n\t\tdisabled: c.disabled ?? false\n\t};\n\tif (c.lastStatus !== void 0) entry.lastStatus = c.lastStatus;\n\tif (c.lastErrorCode !== void 0) entry.lastErrorCode = c.lastErrorCode;\n\tif (c.lastErrorResetAt !== void 0) entry.lastErrorResetAt = c.lastErrorResetAt;\n\tif (c.requestCount !== void 0) entry.requestCount = c.requestCount;\n\treturn entry;\n}\n/**\n* Closed list of provider ids accepted by POST.\n*\n* Mirrors `BuiltinProviderId` from `@cleocode/contracts/llm/provider-id`.\n* We do not import the type at runtime because `ProviderId` is open\n* (`BuiltinProviderId | string & Record<never, never>`) — accepting an\n* arbitrary string from the browser would let a caller spam the store\n* with non-routable entries.\n*\n* @task T9426\n*/\nvar ALLOWED_PROVIDERS = new Set([\n\t\"anthropic\",\n\t\"openai\",\n\t\"gemini\",\n\t\"moonshot\",\n\t\"openrouter\",\n\t\"bedrock\",\n\t\"deepseek\",\n\t\"xai\",\n\t\"groq\",\n\t\"kimi-code\",\n\t\"ollama\"\n]);\n/**\n* GET /api/credentials — list pool entries (secrets stripped).\n*\n* @task T9426\n*/\nvar GET = async () => {\n\treturn json(ok({ entries: (await getCredentialPool().list()).map(toSafeEntry) }));\n};\n/**\n* POST /api/credentials — upsert a manual API-key credential.\n*\n* Body: `{ provider, label, apiKey }`. The endpoint validates that\n* `provider` is a recognised builtin, that `label` and `apiKey` are\n* non-empty strings of reasonable length, and that `apiKey` does not\n* leak whitespace. The credential is persisted with `source: 'manual'`\n* and `authType: 'api_key'` so a subsequent `cleo auth remove` knows\n* to dispatch to `MANUAL_REMOVAL_STEP`.\n*\n* @task T9426\n*/\nvar POST = async ({ request }) => {\n\tconst body = await parseJsonBody(request);\n\tif (isParseError(body)) return json(err(\"E_VALIDATION\", body._parseError), { status: 400 });\n\tconst providerR = requireString(body, \"provider\", 64);\n\tif (!providerR.ok) return json(err(\"E_VALIDATION\", providerR.message), { status: 400 });\n\tconst labelR = requireString(body, \"label\", 200);\n\tif (!labelR.ok) return json(err(\"E_VALIDATION\", labelR.message), { status: 400 });\n\tconst apiKeyR = requireString(body, \"apiKey\", 4096);\n\tif (!apiKeyR.ok) return json(err(\"E_VALIDATION\", apiKeyR.message), { status: 400 });\n\tconst provider = providerR.value.trim();\n\tif (!ALLOWED_PROVIDERS.has(provider)) return json(err(\"E_VALIDATION\", `Unknown provider '${provider}'. Must be a CLEO builtin transport.`), { status: 400 });\n\tconst label = labelR.value.trim();\n\tconst apiKey = apiKeyR.value;\n\tif (apiKey !== apiKey.trim()) return json(err(\"E_VALIDATION\", \"apiKey must not have leading or trailing whitespace\"), { status: 400 });\n\ttry {\n\t\tawait addCredential({\n\t\t\tprovider,\n\t\t\tlabel,\n\t\t\tauthType: \"api_key\",\n\t\t\taccessToken: apiKey,\n\t\t\tsource: \"manual\"\n\t\t});\n\t} catch (e) {\n\t\treturn json(err(\"E_WRITE_FAILED\", `Failed to persist credential: ${e instanceof Error ? e.message : String(e)}`), { status: 500 });\n\t}\n\treturn json(ok({\n\t\tprovider,\n\t\tlabel\n\t}));\n};\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DwTRjS4y.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/project/reindex-all/_server.ts.js"],"sourcesContent":["import { n as recordAudit } from \"../../../../../chunks/audit-log.js\";\nimport { t as runCleoCli } from \"../../../../../chunks/spawn-cli.js\";\nimport { i as listRegisteredProjects } from \"../../../../../chunks/project-context.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/project/reindex-all/+server.ts\n/**\n* POST /api/project/reindex-all\n*\n* Fan out `cleo nexus analyze <path> --json` over every registered\n* project serially. Returns an array of per-project results.\n*\n* Serial (not parallel) because each reindex spawns a full AST pass\n* that already saturates one CPU core; parallelising would just\n* contend for the same resources and slow the whole batch down.\n*\n* Request body (optional):\n* {\n* onlyStale?: boolean; — skip projects indexed in the last N days\n* staleDays?: number; — threshold used when onlyStale=true (default 7)\n* }\n*\n* @task T990\n* @wave 1E\n*/\nfunction isStale(lastIndexed, days) {\n\tif (!lastIndexed) return true;\n\treturn Date.now() - new Date(lastIndexed).getTime() > days * 24 * 60 * 60 * 1e3;\n}\nvar POST = async ({ request, locals }) => {\n\tlet body = {};\n\ttry {\n\t\tconst raw = await request.json();\n\t\tif (raw && typeof raw === \"object\") body = raw;\n\t} catch {}\n\tconst onlyStale = body.onlyStale === true;\n\tconst staleDays = typeof body.staleDays === \"number\" && body.staleDays > 0 ? body.staleDays : 7;\n\tconst projects = listRegisteredProjects();\n\trecordAudit(locals.projectCtx.projectPath, {\n\t\tactor: \"studio-admin\",\n\t\taction: \"project.reindex-all\",\n\t\ttarget: null,\n\t\tresult: \"initiated\",\n\t\tmeta: {\n\t\t\tonlyStale,\n\t\t\tstaleDays,\n\t\t\ttotal: projects.length\n\t\t}\n\t});\n\tconst results = [];\n\tlet succeeded = 0;\n\tlet failed = 0;\n\tlet skipped = 0;\n\tfor (const project of projects) {\n\t\tconst start = Date.now();\n\t\tif (onlyStale && !isStale(project.lastIndexed, staleDays)) {\n\t\t\tskipped++;\n\t\t\tresults.push({\n\t\t\t\tprojectId: project.projectId,\n\t\t\t\tname: project.name,\n\t\t\t\tpath: project.projectPath,\n\t\t\t\tstatus: \"skipped\",\n\t\t\t\telapsedMs: Date.now() - start\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst result = await runCleoCli([\n\t\t\t\"nexus\",\n\t\t\t\"analyze\",\n\t\t\tproject.projectPath,\n\t\t\t\"--json\"\n\t\t]);\n\t\tconst elapsedMs = Date.now() - start;\n\t\tif (result.ok) {\n\t\t\tsucceeded++;\n\t\t\tresults.push({\n\t\t\t\tprojectId: project.projectId,\n\t\t\t\tname: project.name,\n\t\t\t\tpath: project.projectPath,\n\t\t\t\tstatus: \"success\",\n\t\t\t\telapsedMs\n\t\t\t});\n\t\t} else {\n\t\t\tfailed++;\n\t\t\tconst error = (result.stderr ?? \"\").trim() || (result.stdout ?? \"\").trim() || \"CLI command failed\";\n\t\t\tresults.push({\n\t\t\t\tprojectId: project.projectId,\n\t\t\t\tname: project.name,\n\t\t\t\tpath: project.projectPath,\n\t\t\t\tstatus: \"failure\",\n\t\t\t\terror,\n\t\t\t\telapsedMs\n\t\t\t});\n\t\t}\n\t}\n\trecordAudit(locals.projectCtx.projectPath, {\n\t\tactor: \"studio-admin\",\n\t\taction: \"project.reindex-all\",\n\t\ttarget: null,\n\t\tresult: failed === 0 ? \"success\" : \"failure\",\n\t\tmeta: {\n\t\t\tsucceeded,\n\t\t\tfailed,\n\t\t\tskipped,\n\t\t\ttotal: projects.length\n\t\t}\n\t});\n\treturn json({\n\t\tsuccess: failed === 0,\n\t\tdata: {\n\t\t\ttotal: projects.length,\n\t\t\tsucceeded,\n\t\t\tfailed,\n\t\t\tskipped,\n\t\t\tresults\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-JallJnps.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js"],"sourcesContent":["import { a as getNexusDb, i as getDbStatus, n as getBrainDb, o as getTasksDb, r as getConduitDb, t as getAgentRegistryDb } from \"../../../../chunks/connections2.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n//#region src/routes/api/health/+server.ts\n/**\n* Health check endpoint for the CLEO Studio server.\n*\n* GET /api/health\n* {\n* ok, service, version, // identity\n* checkedAt, uptime, // time\n* databases: {\n* nexus: { available, rowCount, schemaVersion, path },\n* brain: { … },\n* tasks: { … },\n* conduit: { … },\n* agent-registry: { … },\n* }\n* }\n*\n* Version is derived at runtime from `packages/studio/package.json`\n* (T990 audit fix — was hardcoded as `2026.4.47`). Row counts + schema\n* versions are queried on every request; all SQLite calls are guarded\n* with `try/catch` so a corrupted DB cannot crash the endpoint.\n*\n* @task T990\n* @wave 1E\n*/\n/**\n* Resolve and cache the Studio package version. Reads\n* `packages/studio/package.json` once per process via an eagerly-run\n* IIFE so we never repeat file I/O on every `/api/health` hit.\n*\n* Falls back to `'unknown'` if the file cannot be parsed (e.g. during\n* a broken build). The fallback is explicit rather than silent so an\n* operator can diagnose a wedged deploy.\n*/\nvar pkgVersion = (() => {\n\ttry {\n\t\tconst pkgPath = path.resolve(fileURLToPath(new URL(\"../../../../package.json\", import.meta.url)));\n\t\tconst pkg = JSON.parse(readFileSync(pkgPath, \"utf8\"));\n\t\treturn typeof pkg.version === \"string\" ? pkg.version : \"unknown\";\n\t} catch {\n\t\treturn \"unknown\";\n\t}\n})();\n/** Cache the process start time so uptime is relative to boot, not request. */\nvar bootedAt = Date.now();\n/** Query `SELECT COUNT(*)` for the given table, swallowing schema errors. */\nfunction safeCount(db, table) {\n\ttry {\n\t\treturn db.prepare(`SELECT COUNT(*) AS cnt FROM ${table}`).get()?.cnt ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Attempt to read `PRAGMA user_version` — standard SQLite convention\n* for schema versioning. Returns a string for JSON consistency\n* (SQLite returns int, but some tools prefer `\"7\"` over `7`).\n*/\nfunction safeSchemaVersion(db) {\n\ttry {\n\t\tconst value = db.prepare(\"PRAGMA user_version\").get()?.user_version;\n\t\treturn typeof value === \"number\" ? String(value) : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nvar GET = ({ locals }) => {\n\tconst dbStatus = getDbStatus(locals.projectCtx);\n\tconst nexusReport = {\n\t\tavailable: dbStatus.nexus,\n\t\trowCount: null,\n\t\tschemaVersion: null,\n\t\tpath: dbStatus.nexusPath\n\t};\n\tconst brainReport = {\n\t\tavailable: dbStatus.brain,\n\t\trowCount: null,\n\t\tschemaVersion: null,\n\t\tpath: dbStatus.brainPath\n\t};\n\tconst tasksReport = {\n\t\tavailable: dbStatus.tasks,\n\t\trowCount: null,\n\t\tschemaVersion: null,\n\t\tpath: dbStatus.tasksPath\n\t};\n\tconst conduitReport = {\n\t\tavailable: dbStatus.conduit,\n\t\trowCount: null,\n\t\tschemaVersion: null,\n\t\tpath: dbStatus.conduitPath\n\t};\n\tconst signaldockReport = {\n\t\tavailable: dbStatus.signaldock,\n\t\trowCount: null,\n\t\tschemaVersion: null,\n\t\tpath: dbStatus.signaldockPath\n\t};\n\tif (dbStatus.nexus) {\n\t\tconst db = getNexusDb();\n\t\tif (db) {\n\t\t\tnexusReport.rowCount = safeCount(db, \"nexus_nodes\");\n\t\t\tnexusReport.schemaVersion = safeSchemaVersion(db);\n\t\t}\n\t}\n\tif (dbStatus.brain) {\n\t\tconst db = getBrainDb(locals.projectCtx);\n\t\tif (db) {\n\t\t\tbrainReport.rowCount = safeCount(db, \"brain_observations\");\n\t\t\tbrainReport.schemaVersion = safeSchemaVersion(db);\n\t\t}\n\t}\n\tif (dbStatus.tasks) {\n\t\tconst db = getTasksDb(locals.projectCtx);\n\t\tif (db) {\n\t\t\ttasksReport.rowCount = safeCount(db, \"tasks\");\n\t\t\ttasksReport.schemaVersion = safeSchemaVersion(db);\n\t\t}\n\t}\n\tif (dbStatus.conduit) {\n\t\tconst db = getConduitDb(locals.projectCtx);\n\t\tif (db) conduitReport.schemaVersion = safeSchemaVersion(db);\n\t}\n\tif (dbStatus.signaldock) {\n\t\tconst db = getAgentRegistryDb();\n\t\tif (db) signaldockReport.schemaVersion = safeSchemaVersion(db);\n\t}\n\treturn json({\n\t\tok: true,\n\t\tservice: \"cleo-studio\",\n\t\tversion: pkgVersion,\n\t\tcheckedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tuptime: Math.round((Date.now() - bootedAt) / 1e3),\n\t\tdatabases: {\n\t\t\tnexus: nexusReport,\n\t\t\tbrain: brainReport,\n\t\t\ttasks: tasksReport,\n\t\t\tconduit: conduitReport,\n\t\t\t\"agent-registry\": signaldockReport\n\t\t}\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-NEFTbJpM.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/memory/pending-verify/_server.ts.js"],"sourcesContent":["import \"../../../../../chunks/dist4.js\";\nimport { c as getPendingVerify } from \"../../../../../chunks/memory.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/memory/pending-verify/+server.ts\n/**\n* Memory pending-verify queue API endpoint.\n*\n* GET /api/memory/pending-verify?minCitations=<n>&limit=<n>\n*\n* Surfaces unverified-but-cited entries across all four brain tables so\n* the owner can promote the highest-leverage memory to verified status.\n*\n* Delegates to `@cleocode/core` public memory API (T9615/T9616).\n* Zero raw SQL in this handler. LAFS envelope: `{ success, data, error?, meta }`.\n*/\n/** LAFS envelope helpers. */\nfunction lafsOk(data) {\n\treturn {\n\t\tsuccess: true,\n\t\tdata,\n\t\tmeta: { at: (/* @__PURE__ */ new Date()).toISOString() }\n\t};\n}\nfunction lafsErr(message) {\n\treturn {\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: \"E_MEMORY_PENDING_VERIFY\",\n\t\t\tmessage\n\t\t},\n\t\tmeta: { at: (/* @__PURE__ */ new Date()).toISOString() }\n\t};\n}\nvar GET = async ({ locals, url }) => {\n\tconst minRaw = url.searchParams.get(\"minCitations\");\n\tconst limRaw = url.searchParams.get(\"limit\");\n\tconst minCitations = Math.max(1, Number.parseInt(minRaw ?? \"5\", 10) || 5);\n\tconst limit = Math.max(1, Math.min(200, Number.parseInt(limRaw ?? \"50\", 10) || 50));\n\ttry {\n\t\treturn json(lafsOk(await getPendingVerify(locals.projectCtx.projectPath, {\n\t\t\tminCitations,\n\t\t\tlimit\n\t\t})));\n\t} catch (e) {\n\t\treturn json(lafsErr(e instanceof Error ? e.message : \"Query failed\"), { status: 500 });\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,CAAC,OAAO;AACR,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,IAAI;AACN,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE;AACF;AACA,SAAS,OAAO,CAAC,OAAO,EAAE;AAC1B,CAAC,OAAO;AACR,EAAE,OAAO,EAAE,KAAK;AAChB,EAAE,KAAK,EAAE;AACT,GAAG,IAAI,EAAE,yBAAyB;AAClC,GAAG;AACH,GAAG;AACH,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,EAAE;AACF;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACrC,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;AACpD,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7C,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACpF,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;AAC3E,GAAG,YAAY;AACf,GAAG;AACH,GAAG,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxF,CAAC;AACD;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-ZS1_yMwR.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/credentials/_provider_/_label_/_server.ts.js"],"sourcesContent":["import { a as getCredentialPool, b as REMOVAL_REGISTRY, p as removeCredential, x as addSuppression } from \"../../../../../../chunks/credential-pool.js\";\nimport { r as ok, t as err } from \"../../../../../../chunks/_lafs.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/credentials/[provider]/[label]/+server.ts\n/**\n* DELETE /api/credentials/:provider/:label — remove a credential.\n*\n* Mirrors `cleo auth remove` (T9416):\n*\n* 1. Resolve the pool entry by `(provider, label)` so we can dispatch\n* on its `source`.\n* 2. Look up the per-source `RemovalStep` via `REMOVAL_REGISTRY.find`.\n* 3. Invoke `step.remove({ provider, label })` to clean up any\n* filesystem state owned by that source.\n* 4. If `result.suppress` is true, call `addSuppression(provider,\n* sourceId)` so the next `seed()` pass skips that source.\n* 5. Drop the entry from `llm-credentials.json` via `removeCredential`.\n*\n* The response carries `cleaned[]` (absolute paths the removal step\n* touched) and `hints[]` (operator-facing follow-ups) so the Studio UI\n* can surface them in a toast. NO secret material is included.\n*\n* @task T9426\n* @epic E-CONFIG-AUTH-UNIFY (E3 §5.3 T-E3-7)\n*/\n/**\n* Source ids accepted as `RemovalRegistry` keys.\n*\n* Mirrors `SeederSourceId` from `@cleocode/core/llm/credential-seeders` —\n* kept as a closed runtime set so an unknown source id from a legacy\n* entry fails fast with `E_REMOVAL_NOT_REGISTERED` rather than coercing\n* into a wrong handler.\n*\n* @task T9426\n*/\nvar ALLOWED_SOURCE_IDS = new Set([\n\t\"env\",\n\t\"claude-code\",\n\t\"cleo-pkce\",\n\t\"codex-cli\",\n\t\"gemini-cli\",\n\t\"gh-cli\",\n\t\"manual\"\n]);\n/**\n* DELETE /api/credentials/:provider/:label — see file-level docstring.\n*\n* @task T9426\n*/\nvar DELETE = async ({ params }) => {\n\tconst provider = params[\"provider\"];\n\tconst label = params[\"label\"];\n\tif (!provider || provider.trim().length === 0) return json(err(\"E_VALIDATION\", \"provider path segment is required\"), { status: 400 });\n\tif (!label || label.trim().length === 0) return json(err(\"E_VALIDATION\", \"label path segment is required\"), { status: 400 });\n\tconst entry = (await getCredentialPool().list()).find((c) => c.provider === provider && c.label === label);\n\tif (!entry) return json(err(\"E_NOT_FOUND\", `No credential found for provider='${provider}' label='${label}'`), { status: 404 });\n\tconst sourceId = entry.source ?? \"manual\";\n\tif (!ALLOWED_SOURCE_IDS.has(sourceId)) return json(err(\"E_REMOVAL_NOT_REGISTERED\", `Credential has unknown sourceId='${sourceId}' — cannot dispatch removal.`), { status: 500 });\n\tconst step = REMOVAL_REGISTRY.find(sourceId);\n\tif (!step) return json(err(\"E_REMOVAL_NOT_REGISTERED\", `No RemovalStep registered for source='${sourceId}' — cannot safely remove '${provider}/${label}'.`), { status: 500 });\n\tconst stepResult = await step.remove({\n\t\tprovider,\n\t\tlabel\n\t});\n\tlet suppressed = false;\n\tif (stepResult.suppress) {\n\t\taddSuppression(provider, sourceId);\n\t\tsuppressed = true;\n\t}\n\treturn json(ok({\n\t\tprovider,\n\t\tlabel,\n\t\tsource: sourceId,\n\t\tremoved: await removeCredential(entry.provider, label),\n\t\tcleaned: stepResult.cleaned,\n\t\thints: stepResult.hints,\n\t\tsuppressed\n\t}));\n};\n//#endregion\nexport { DELETE };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-_RJXtmfi.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/brain/substrate/_name_/_server.ts.js"],"sourcesContent":["import { t as getAllSubstrates } from \"../../../../../../chunks/src.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/brain/substrate/[name]/+server.ts\n/**\n* Substrate-filtered BRAIN super-graph endpoint.\n*\n* GET /api/brain/substrate/:name\n* → { nodes: BrainNode[], edges: BrainEdge[], counts, truncated }\n*\n* `:name` must be one of: brain | nexus | tasks | conduit | signaldock\n*\n* Query params:\n* limit — max nodes to return (default 500, max 2000)\n* min_weight — minimum quality/weight threshold 0.0–1.0 (default 0)\n*\n* Returns 400 for unrecognised substrate names.\n* This endpoint is equivalent to GET /api/brain?substrates=<name>\n* but provides a cleaner URL and explicit 400 on bad substrate names.\n*/\nvar VALID_SUBSTRATES = new Set([\n\t\"brain\",\n\t\"nexus\",\n\t\"tasks\",\n\t\"conduit\",\n\t\"agent-registry\"\n]);\nvar GET = ({ locals, params, url }) => {\n\tconst name = params.name;\n\tif (!VALID_SUBSTRATES.has(name)) return json({ error: `Unknown substrate: \"${name}\". Valid values: brain, nexus, tasks, conduit, signaldock` }, { status: 400 });\n\tconst limitParam = Number(url.searchParams.get(\"limit\") ?? \"500\");\n\tconst limit = Math.min(Math.max(1, Number.isNaN(limitParam) ? 500 : limitParam), 2e3);\n\tconst minWeightParam = url.searchParams.get(\"min_weight\");\n\tconst minWeight = minWeightParam !== null ? Math.max(0, parseFloat(minWeightParam)) : 0;\n\ttry {\n\t\treturn json(getAllSubstrates({\n\t\t\tlimit,\n\t\t\tsubstrates: [name],\n\t\t\tminWeight,\n\t\t\tprojectCtx: locals.projectCtx\n\t\t}));\n\t} catch (err) {\n\t\treturn json({ error: String(err) }, { status: 500 });\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG,IAAI,GAAG,CAAC;AAC/B,CAAC,OAAO;AACR,CAAC,OAAO;AACR,CAAC,OAAO;AACR,CAAC,SAAS;AACV,CAAC;AACD,CAAC,CAAC;AACC,IAAC,GAAG,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACvC,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;AACzB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,yDAAyD,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACjK,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;AAClE,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC;AACtF,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAC1D,CAAC,MAAM,SAAS,GAAG,cAAc,KAAK,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;AACxF,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAC/B,GAAG,KAAK;AACR,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC;AACrB,GAAG,SAAS;AACZ,GAAG,UAAU,EAAE,MAAM,CAAC;AACtB,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE;AACf,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACtD,CAAC;AACD;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-d-2NvRwX.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/memory/patterns/_server.ts.js"],"sourcesContent":["import \"../../../../../chunks/dist4.js\";\nimport { s as getPatterns } from \"../../../../../chunks/memory.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/memory/patterns/+server.ts\nvar GET = async ({ locals, url }) => {\n\tconst patternType = url.searchParams.get(\"type\") ?? void 0;\n\tconst limitRaw = url.searchParams.get(\"limit\");\n\tconst limit = Math.max(1, Math.min(200, Number.parseInt(limitRaw ?? \"50\", 10) || 50));\n\ttry {\n\t\tconst result = await getPatterns({\n\t\t\tpatternType,\n\t\t\tlimit,\n\t\t\tprojectPath: locals.projectCtx.projectPath\n\t\t});\n\t\treturn json({\n\t\t\tpatterns: result.patterns,\n\t\t\ttotal: result.patterns.length,\n\t\t\tfiltered: result.patterns.length\n\t\t});\n\t} catch {\n\t\treturn json({\n\t\t\tpatterns: [],\n\t\t\ttotal: 0,\n\t\t\tfiltered: 0\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACrC,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM;AAC3D,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/C,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACtF,CAAC,IAAI;AACL,EAAE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;AACnC,GAAG,WAAW;AACd,GAAG,KAAK;AACR,GAAG,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;AAClC,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC5B,GAAG,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;AAChC,GAAG,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC7B,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,QAAQ,EAAE;AACb,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-hL92cV7Z.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/tasks/_id_/_server.ts.js"],"sourcesContent":["import { r as getTaskAccessor } from \"../../../../../chunks/data-accessor2.js\";\nimport { d as showTask, f as computeTaskView, i as deleteTask } from \"../../../../../chunks/tasks.js\";\nimport { t as updateTask } from \"../../../../../chunks/update.js\";\nimport { a as ok, i as isParseError, n as gatewayClient, r as isGatewayUnreachable, s as parseJsonBody, t as err } from \"../../../../../chunks/_dispatch.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/tasks/[id]/+server.ts\nvar GET = async ({ locals, params }) => {\n\tconst ctx = locals.projectCtx;\n\tif (!ctx.tasksDbExists) return json({ error: \"tasks.db unavailable\" }, { status: 503 });\n\tconst { id } = params;\n\ttry {\n\t\tconst accessor = await getTaskAccessor(ctx.projectPath);\n\t\tlet detail;\n\t\ttry {\n\t\t\tdetail = await showTask(id, ctx.projectPath, accessor);\n\t\t} catch (err) {\n\t\t\tif (err?.code === 4) return json({ error: \"not found\" }, { status: 404 });\n\t\t\tthrow err;\n\t\t}\n\t\tconst task = {\n\t\t\tid: detail.id,\n\t\t\ttitle: detail.title,\n\t\t\tdescription: detail.description ?? null,\n\t\t\tstatus: detail.status,\n\t\t\tpriority: detail.priority,\n\t\t\ttype: detail.type ?? \"task\",\n\t\t\tparent_id: detail.parentId ?? null,\n\t\t\tpipeline_stage: detail.pipelineStage ?? null,\n\t\t\tsize: detail.size ?? null,\n\t\t\tphase: detail.phase ?? null,\n\t\t\tlabels_json: detail.labels && detail.labels.length > 0 ? JSON.stringify(detail.labels) : null,\n\t\t\tnotes_json: null,\n\t\t\tacceptance_json: detail.acceptance && detail.acceptance.length > 0 ? JSON.stringify(detail.acceptance) : null,\n\t\t\tverification_json: detail.verification !== void 0 && detail.verification !== null ? JSON.stringify(detail.verification) : null,\n\t\t\tcreated_at: detail.createdAt,\n\t\t\tupdated_at: detail.updatedAt ?? detail.createdAt,\n\t\t\tcompleted_at: detail.completedAt ?? null,\n\t\t\tassignee: detail.assignee ?? null,\n\t\t\tsession_id: null\n\t\t};\n\t\tconst subtasks = (await accessor.getChildren(id)).map((c) => ({\n\t\t\tid: c.id,\n\t\t\ttitle: c.title,\n\t\t\tstatus: c.status,\n\t\t\tpriority: c.priority,\n\t\t\ttype: c.type ?? \"task\",\n\t\t\tpipeline_stage: c.pipelineStage ?? null,\n\t\t\tsize: c.size ?? null,\n\t\t\tverification_json: c.verification !== void 0 && c.verification !== null ? JSON.stringify(c.verification) : null,\n\t\t\tacceptance_json: c.acceptance && c.acceptance.length > 0 ? JSON.stringify(c.acceptance) : null,\n\t\t\tcreated_at: c.createdAt,\n\t\t\tcompleted_at: c.completedAt ?? null\n\t\t}));\n\t\tlet view = null;\n\t\ttry {\n\t\t\tview = await computeTaskView(id, accessor);\n\t\t} catch {}\n\t\treturn json({\n\t\t\ttask,\n\t\t\tsubtasks,\n\t\t\t...view !== null ? { view } : {}\n\t\t});\n\t} catch (err) {\n\t\treturn json({ error: String(err) }, { status: 500 });\n\t}\n};\nvar VALID_STATUS_W = new Set([\n\t\"pending\",\n\t\"active\",\n\t\"blocked\",\n\t\"done\",\n\t\"cancelled\"\n]);\nvar VALID_PRIORITY_W = new Set([\n\t\"critical\",\n\t\"high\",\n\t\"medium\",\n\t\"low\"\n]);\n/**\n* PATCH /api/tasks/[id] — patch task fields through the gateway SDK client\n* (gateway-first, in-process core fallback). T11788 · AC1.\n*\n* Body: `{ title?, status?, priority?, assignee? }`. `assignee` (a string, or\n* `null` to clear) routes through the DISTINCT `tasks.assignee` op; the other\n* fields route through `tasks.update`. At least one field must be present.\n*/\nvar PATCH = async ({ locals, params, request }) => {\n\tconst ctx = locals.projectCtx;\n\tif (!ctx.tasksDbExists) return json(err(\"E_DB_UNAVAILABLE\", \"tasks.db unavailable\"), { status: 503 });\n\tconst taskId = params.id;\n\tconst body = await parseJsonBody(request);\n\tif (isParseError(body)) return json(err(\"E_VALIDATION\", body._parseError), { status: 400 });\n\tconst title = typeof body.title === \"string\" && body.title.trim() !== \"\" ? body.title.trim() : void 0;\n\tconst rawStatus = typeof body.status === \"string\" ? body.status : void 0;\n\tconst status = rawStatus !== void 0 && VALID_STATUS_W.has(rawStatus) ? rawStatus : void 0;\n\tconst rawPriority = typeof body.priority === \"string\" ? body.priority : void 0;\n\tconst priority = rawPriority !== void 0 && VALID_PRIORITY_W.has(rawPriority) ? rawPriority : void 0;\n\tconst assigneeProvided = \"assignee\" in body;\n\tconst assignee = typeof body.assignee === \"string\" && body.assignee.trim() !== \"\" ? body.assignee.trim() : void 0;\n\tconst fieldChange = title !== void 0 || status !== void 0 || priority !== void 0;\n\tif (!fieldChange && !assigneeProvided) return json(err(\"E_VALIDATION\", \"No patchable fields provided\"), { status: 400 });\n\tconst changed = [];\n\tif (title !== void 0) changed.push(\"title\");\n\tif (status !== void 0) changed.push(\"status\");\n\tif (priority !== void 0) changed.push(\"priority\");\n\tif (assigneeProvided) changed.push(\"assignee\");\n\ttry {\n\t\tconst cleo = gatewayClient();\n\t\tif (fieldChange) {\n\t\t\tconst update = cleo.tasks.update;\n\t\t\tconst res = await update({ body: {\n\t\t\t\ttaskId,\n\t\t\t\t...title !== void 0 ? { title } : {},\n\t\t\t\t...status !== void 0 ? { status } : {},\n\t\t\t\t...priority !== void 0 ? { priority } : {}\n\t\t\t} });\n\t\t\tif (res.data && res.data.success === false) return json(err(\"E_GATEWAY_REJECTED\", res.data.error?.message ?? \"Update rejected\"), { status: 409 });\n\t\t}\n\t\tif (assigneeProvided) {\n\t\t\tconst setAssignee = cleo.tasks.assignee;\n\t\t\tconst res = await setAssignee({ body: {\n\t\t\t\ttaskId,\n\t\t\t\t...assignee !== void 0 ? { assignee } : {}\n\t\t\t} });\n\t\t\tif (res.data && res.data.success === false) return json(err(\"E_GATEWAY_REJECTED\", res.data.error?.message ?? \"Assignee rejected\"), { status: 409 });\n\t\t}\n\t\treturn json(ok({\n\t\t\ttaskId,\n\t\t\tvia: \"gateway\",\n\t\t\tchanged\n\t\t}));\n\t} catch (gatewayErr) {\n\t\tif (!isGatewayUnreachable(gatewayErr)) return json(err(\"E_GATEWAY_ERROR\", gatewayErr instanceof Error ? gatewayErr.message : \"Gateway update failed\"), { status: 502 });\n\t}\n\ttry {\n\t\tif (fieldChange) await updateTask({\n\t\t\ttaskId,\n\t\t\t...title !== void 0 ? { title } : {},\n\t\t\t...status !== void 0 ? { status } : {},\n\t\t\t...priority !== void 0 ? { priority } : {}\n\t\t}, ctx.projectPath);\n\t\treturn json(ok({\n\t\t\ttaskId,\n\t\t\tvia: \"core\",\n\t\t\tchanged\n\t\t}));\n\t} catch (coreErr) {\n\t\tconst e = coreErr;\n\t\tif (e?.code === 4) return json(err(\"E_NOT_FOUND\", `Task not found: ${taskId}`), { status: 404 });\n\t\treturn json(err(\"E_UPDATE_FAILED\", e?.message ?? \"Failed to update task\"), { status: 500 });\n\t}\n};\n/**\n* DELETE /api/tasks/[id] — delete a task through the gateway SDK client\n* (gateway-first, in-process core fallback). T11788 · AC1.\n*/\nvar DELETE = async ({ locals, params }) => {\n\tconst ctx = locals.projectCtx;\n\tif (!ctx.tasksDbExists) return json(err(\"E_DB_UNAVAILABLE\", \"tasks.db unavailable\"), { status: 503 });\n\tconst taskId = params.id;\n\ttry {\n\t\tconst del = gatewayClient().tasks.delete;\n\t\tconst res = await del({ body: { taskId } });\n\t\tif (res.data && res.data.success === false) return json(err(\"E_GATEWAY_REJECTED\", res.data.error?.message ?? \"Delete rejected\"), { status: 409 });\n\t\treturn json(ok({\n\t\t\ttaskId,\n\t\t\tvia: \"gateway\",\n\t\t\tchanged: [\"deleted\"]\n\t\t}));\n\t} catch (gatewayErr) {\n\t\tif (!isGatewayUnreachable(gatewayErr)) return json(err(\"E_GATEWAY_ERROR\", gatewayErr instanceof Error ? gatewayErr.message : \"Gateway delete failed\"), { status: 502 });\n\t}\n\ttry {\n\t\tawait deleteTask({ taskId }, ctx.projectPath);\n\t\treturn json(ok({\n\t\t\ttaskId,\n\t\t\tvia: \"core\",\n\t\t\tchanged: [\"deleted\"]\n\t\t}));\n\t} catch (coreErr) {\n\t\tconst e = coreErr;\n\t\tif (e?.code === 4) return json(err(\"E_NOT_FOUND\", `Task not found: ${taskId}`), { status: 404 });\n\t\treturn json(err(\"E_DELETE_FAILED\", e?.message ?? \"Failed to delete task\"), { status: 500 });\n\t}\n};\n//#endregion\nexport { DELETE, GET, PATCH };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-k2fApwOp.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/tasks/graph/_server.ts.js"],"sourcesContent":["import { r as getTaskAccessor } from \"../../../../../chunks/data-accessor2.js\";\nimport { d as showTask, n as taskTree, t as taskDeps } from \"../../../../../chunks/tasks.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/tasks/graph/+server.ts\n/**\n* GET /api/tasks/graph?epic=T### — nodes + edges for all deps within an epic.\n*\n* Returns a sigma-ready graph payload:\n* { nodes: NodeEntry[], edges: EdgeEntry[] }\n*\n* Nodes include status/priority so the client can color-code them.\n* Edges represent task dependency relationships (source depends_on → target).\n*\n* If `taskId` is provided as a query param, returns only the 1-hop\n* neighbourhood (the task itself + direct upstream + direct downstream).\n*\n* Query params:\n* epic=T### — all deps within an epic subtree\n* taskId=T### — 1-hop neighbourhood for a single task\n*\n* T9617 refactor: zero raw SQL — delegates to core APIs:\n* - 1-hop mode uses `taskDeps` from `@cleocode/core/tasks`\n* - epic mode uses `taskTree` to collect all descendant IDs and their\n* `depends` edges, then filters edges to the epic subtree\n*\n* @task T9617\n*/\n/** Recursively collect all FlatTreeNodes into a flat array. */\nfunction collectFlatNodes(nodes) {\n\tconst result = [];\n\tfor (const n of nodes) {\n\t\tresult.push(n);\n\t\tresult.push(...collectFlatNodes(n.children));\n\t}\n\treturn result;\n}\nvar GET = async ({ locals, url }) => {\n\tconst ctx = locals.projectCtx;\n\tif (!ctx.tasksDbExists) return json({ error: \"tasks.db unavailable\" }, { status: 503 });\n\tconst epicId = url.searchParams.get(\"epic\");\n\tconst taskId = url.searchParams.get(\"taskId\");\n\tif (!epicId && !taskId) return json({ error: \"epic or taskId query param required\" }, { status: 400 });\n\ttry {\n\t\tconst accessor = await getTaskAccessor(ctx.projectPath);\n\t\tif (taskId) {\n\t\t\tconst depsResult = await taskDeps(ctx.projectPath, taskId);\n\t\t\tif (!depsResult.success) {\n\t\t\t\tif (depsResult.error?.code === \"E_NOT_FOUND\") return json({ error: \"task not found\" }, { status: 404 });\n\t\t\t\treturn json({ error: depsResult.error?.message ?? \"Failed to load deps\" }, { status: 500 });\n\t\t\t}\n\t\t\tconst focusTask = await accessor.loadSingleTask(taskId);\n\t\t\tif (!focusTask) return json({ error: \"task not found\" }, { status: 404 });\n\t\t\tconst { dependsOn, dependedOnBy } = depsResult.data;\n\t\t\tconst nodeMap = /* @__PURE__ */ new Map();\n\t\t\tnodeMap.set(focusTask.id, {\n\t\t\t\tid: focusTask.id,\n\t\t\t\ttitle: focusTask.title,\n\t\t\t\tstatus: focusTask.status,\n\t\t\t\tpriority: focusTask.priority,\n\t\t\t\ttype: focusTask.type ?? \"task\",\n\t\t\t\tisFocus: true\n\t\t\t});\n\t\t\tfor (const t of dependsOn) if (!nodeMap.has(t.id)) nodeMap.set(t.id, {\n\t\t\t\tid: t.id,\n\t\t\t\ttitle: t.title,\n\t\t\t\tstatus: t.status,\n\t\t\t\tpriority: \"medium\",\n\t\t\t\ttype: \"task\",\n\t\t\t\tisFocus: false\n\t\t\t});\n\t\t\tfor (const t of dependedOnBy) if (!nodeMap.has(t.id)) nodeMap.set(t.id, {\n\t\t\t\tid: t.id,\n\t\t\t\ttitle: t.title,\n\t\t\t\tstatus: t.status,\n\t\t\t\tpriority: \"medium\",\n\t\t\t\ttype: \"task\",\n\t\t\t\tisFocus: false\n\t\t\t});\n\t\t\tconst edges = [...dependsOn.map((t) => ({\n\t\t\t\tsource: t.id,\n\t\t\t\ttarget: taskId\n\t\t\t})), ...dependedOnBy.map((t) => ({\n\t\t\t\tsource: taskId,\n\t\t\t\ttarget: t.id\n\t\t\t}))];\n\t\t\treturn json({\n\t\t\t\tnodes: Array.from(nodeMap.values()),\n\t\t\t\tedges\n\t\t\t});\n\t\t}\n\t\tif (epicId) {\n\t\t\tif (!await showTask(epicId, ctx.projectPath, accessor).catch((err) => {\n\t\t\t\tif (err?.code === 4) return null;\n\t\t\t\tthrow err;\n\t\t\t})) return json({\n\t\t\t\tnodes: [],\n\t\t\t\tedges: []\n\t\t\t});\n\t\t\tconst treeResult = await taskTree(ctx.projectPath, epicId);\n\t\t\tif (!treeResult.success) return json({\n\t\t\t\tnodes: [],\n\t\t\t\tedges: []\n\t\t\t});\n\t\t\tconst { tree } = treeResult.data;\n\t\t\tconst rootNode = tree[0];\n\t\t\tif (!rootNode) return json({\n\t\t\t\tnodes: [],\n\t\t\t\tedges: []\n\t\t\t});\n\t\t\tconst allDescendants = collectFlatNodes(rootNode.children);\n\t\t\tconst allNodes = [{\n\t\t\t\tid: rootNode.id,\n\t\t\t\ttitle: rootNode.title,\n\t\t\t\tstatus: rootNode.status,\n\t\t\t\ttype: rootNode.type ?? \"epic\",\n\t\t\t\tpriority: rootNode.priority,\n\t\t\t\tdepends: rootNode.depends,\n\t\t\t\tchildren: rootNode.children\n\t\t\t}, ...allDescendants];\n\t\t\tconst idSet = new Set(allNodes.map((n) => n.id));\n\t\t\tconst nodes = allNodes.map((n) => ({\n\t\t\t\tid: n.id,\n\t\t\t\ttitle: n.title,\n\t\t\t\tstatus: n.status,\n\t\t\t\tpriority: n.priority,\n\t\t\t\ttype: n.type ?? \"task\",\n\t\t\t\tisFocus: false\n\t\t\t}));\n\t\t\tconst edges = [];\n\t\t\tfor (const n of allNodes) for (const depId of n.depends) if (idSet.has(depId)) edges.push({\n\t\t\t\tsource: depId,\n\t\t\t\ttarget: n.id\n\t\t\t});\n\t\t\treturn json({\n\t\t\t\tnodes,\n\t\t\t\tedges\n\t\t\t});\n\t\t}\n\t\treturn json({\n\t\t\tnodes: [],\n\t\t\tedges: []\n\t\t});\n\t} catch (err) {\n\t\treturn json({ error: String(err) }, { status: 500 });\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-lPlBUIJX.js","sources":["../../../.svelte-kit/adapter-node/chunks/search.js","../../../.svelte-kit/adapter-node/entries/endpoints/api/tasks/search/_server.ts.js"],"sourcesContent":["//#region src/lib/tasks/search.ts\n/**\n* Normalizes a raw search string entered by the user.\n*\n* Rules:\n* - Empty / whitespace-only → `{ kind: 'empty' }`\n* - Matches `T###`, `t###`, or bare `###` (digits only) → `{ kind: 'id', id: 'T###' }`\n* - Anything else → `{ kind: 'title', query: trimmed }` for fuzzy title search\n*\n* @param raw - The raw string value from the search input.\n* @returns A discriminated union describing the normalized search intent.\n*/\nfunction normalizeSearch(raw) {\n\tconst trimmed = raw.trim();\n\tif (trimmed.length === 0) return { kind: \"empty\" };\n\tconst idMatch = /^[Tt]?(\\d+)$/.exec(trimmed);\n\tif (idMatch) return {\n\t\tkind: \"id\",\n\t\tid: `T${idMatch[1]}`\n\t};\n\treturn {\n\t\tkind: \"title\",\n\t\tquery: trimmed\n\t};\n}\n//#endregion\nexport { normalizeSearch as t };\n","import { r as getTaskAccessor } from \"../../../../../chunks/data-accessor2.js\";\nimport { l as findTasks } from \"../../../../../chunks/tasks.js\";\nimport { t as normalizeSearch } from \"../../../../../chunks/search.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/tasks/search/+server.ts\n/**\n* GET /api/tasks/search — search tasks by ID or partial title.\n*\n* Query params:\n* q — raw search string (e.g. \"T663\", \"t663\", \"663\", \"council\")\n*\n* Response:\n* { kind: 'id', task: SearchTaskRow | null } — exact ID lookup\n* { kind: 'title', tasks: SearchTaskRow[], total: number } — fuzzy title filter\n* { kind: 'empty' } — no query provided\n*\n* The normalisation logic (ID vs. title) is centralised in\n* $lib/tasks/search.ts so the same rules apply everywhere.\n*\n* T9617 refactor: zero raw SQL — delegates to `findTasks` from\n* `@cleocode/core/tasks`. The response preserves the pre-T9617 snake_case\n* field contract so existing consumers of this endpoint are unaffected.\n*\n* @task T9617\n*/\nvar GET = async ({ locals, url }) => {\n\tconst ctx = locals.projectCtx;\n\tif (!ctx.tasksDbExists) return json({ error: \"tasks.db unavailable\" }, { status: 503 });\n\tconst normalized = normalizeSearch(url.searchParams.get(\"q\") ?? \"\");\n\tif (normalized.kind === \"empty\") return json({ kind: \"empty\" });\n\ttry {\n\t\tconst accessor = await getTaskAccessor(ctx.projectPath);\n\t\tif (normalized.kind === \"id\") {\n\t\t\tconst result = await findTasks({\n\t\t\t\tid: normalized.id,\n\t\t\t\tlimit: 50\n\t\t\t}, ctx.projectPath, accessor);\n\t\t\tconst match = result.results.find((r) => r.id.toUpperCase() === normalized.id.toUpperCase()) ?? result.results[0] ?? null;\n\t\t\treturn json({\n\t\t\t\tkind: \"id\",\n\t\t\t\ttask: match ? {\n\t\t\t\t\tid: match.id,\n\t\t\t\t\ttitle: match.title,\n\t\t\t\t\tstatus: match.status,\n\t\t\t\t\tpriority: match.priority,\n\t\t\t\t\ttype: match.type ?? \"task\",\n\t\t\t\t\tparent_id: match.parentId ?? null,\n\t\t\t\t\tpipeline_stage: null,\n\t\t\t\t\tupdated_at: (/* @__PURE__ */ new Date()).toISOString()\n\t\t\t\t} : null\n\t\t\t});\n\t\t}\n\t\tconst tasks = (await findTasks({\n\t\t\tquery: normalized.query,\n\t\t\tlimit: 50\n\t\t}, ctx.projectPath, accessor)).results.map((r) => ({\n\t\t\tid: r.id,\n\t\t\ttitle: r.title,\n\t\t\tstatus: r.status,\n\t\t\tpriority: r.priority,\n\t\t\ttype: r.type ?? \"task\",\n\t\t\tparent_id: r.parentId ?? null,\n\t\t\tpipeline_stage: null,\n\t\t\tupdated_at: (/* @__PURE__ */ new Date()).toISOString()\n\t\t}));\n\t\treturn json({\n\t\t\tkind: \"title\",\n\t\t\ttasks,\n\t\t\ttotal: tasks.length\n\t\t});\n\t} catch (err) {\n\t\treturn json({ error: String(err) }, { status: 500 });\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-rUWMLkIw.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/memory/observe/_server.ts.js"],"sourcesContent":["import \"../../../../../chunks/dist4.js\";\nimport { t as observeBrain } from \"../../../../../chunks/observe2.js\";\nimport { a as optionalString, c as parseJsonBody, l as requireString, n as isParseError, r as ok, t as err } from \"../../../../../chunks/_lafs.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/memory/observe/+server.ts\n/**\n* Memory observe write endpoint.\n*\n* POST /api/memory/observe\n* body: { title: string, text: string, type?: string, project?: string }\n* → LAFS envelope { success, data: { id, type, createdAt } }\n*\n* Delegates to `@cleocode/core` `observeBrain` (T9615/T9616).\n* Zero raw SQL in this handler.\n*/\nvar VALID_KINDS = new Set([\n\t\"discovery\",\n\t\"change\",\n\t\"feature\",\n\t\"bugfix\",\n\t\"decision\",\n\t\"refactor\"\n]);\nvar POST = async ({ locals, request }) => {\n\tconst body = await parseJsonBody(request);\n\tif (isParseError(body)) return json(err(\"E_VALIDATION\", body._parseError), { status: 400 });\n\tconst titleR = requireString(body, \"title\", 200);\n\tif (!titleR.ok) return json(err(\"E_VALIDATION\", titleR.message), { status: 400 });\n\tconst textR = requireString(body, \"text\", 1e4);\n\tif (!textR.ok) return json(err(\"E_VALIDATION\", textR.message), { status: 400 });\n\tconst typeIn = optionalString(body, \"type\") ?? \"discovery\";\n\tconst type = VALID_KINDS.has(typeIn) ? typeIn : \"discovery\";\n\tconst project = optionalString(body, \"project\");\n\ttry {\n\t\tconst result = await observeBrain(locals.projectCtx.projectPath, {\n\t\t\ttitle: titleR.value,\n\t\t\ttext: textR.value,\n\t\t\ttype,\n\t\t\tproject,\n\t\t\tsourceType: \"manual\",\n\t\t\tsourceConfidence: \"owner\"\n\t\t});\n\t\treturn json(ok({\n\t\t\tid: result.id,\n\t\t\ttype: result.type,\n\t\t\tcreatedAt: result.createdAt\n\t\t}));\n\t} catch (e) {\n\t\treturn json(err(\"E_BRAIN_WRITE\", e instanceof Error ? e.message : \"Insert failed\"), { status: 500 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,IAAI,GAAG,CAAC;AAC1B,CAAC,WAAW;AACZ,CAAC,QAAQ;AACT,CAAC,SAAS;AACV,CAAC,QAAQ;AACT,CAAC,UAAU;AACX,CAAC;AACD,CAAC,CAAC;AACC,IAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC1C,CAAC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC;AAC1C,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5F,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;AACjD,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAClF,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;AAC/C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChF,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,WAAW;AAC3D,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,WAAW;AAC5D,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC;AAChD,CAAC,IAAI;AACL,EAAE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;AACnE,GAAG,KAAK,EAAE,MAAM,CAAC,KAAK;AACtB,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK;AACpB,GAAG,IAAI;AACP,GAAG,OAAO;AACV,GAAG,UAAU,EAAE,QAAQ;AACvB,GAAG,gBAAgB,EAAE;AACrB,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE;AAChB,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI;AACpB,GAAG,SAAS,EAAE,MAAM,CAAC;AACrB,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACtG,CAAC;AACD;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-sv4pA808.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/tasks/sessions/_server.ts.js"],"sourcesContent":["import { r as getTaskAccessor } from \"../../../../../chunks/data-accessor2.js\";\nimport { r as listSessions } from \"../../../../../chunks/sessions.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/tasks/sessions/+server.ts\n/**\n* GET /api/tasks/sessions — session history with task completions.\n*\n* Query params:\n* limit — max sessions (default 50)\n*\n* T9617 refactor: zero raw SQL — delegates to `listSessions` from\n* `@cleocode/core/sessions`. The response shape preserves the pre-T9617\n* contract consumed by the Studio sessions page.\n*\n* Note: `workedTasks` enrichment via raw task_work_history join is no\n* longer performed here. The field is omitted (empty array) in this\n* refactor and should be re-introduced via a dedicated core API if\n* needed. // core-first-allowed: task_work_history join not in public API\n*\n* @task T9617\n*/\nvar GET = async ({ locals, url }) => {\n\tconst ctx = locals.projectCtx;\n\tif (!ctx.tasksDbExists) return json({ error: \"tasks.db unavailable\" }, { status: 503 });\n\tconst limit = Math.min(Number(url.searchParams.get(\"limit\") ?? \"50\"), 200);\n\ttry {\n\t\tconst sessions = await listSessions(ctx.projectPath, { limit });\n\t\tconst accessor = await getTaskAccessor(ctx.projectPath);\n\t\tconst enriched = await Promise.all(sessions.map(async (s) => {\n\t\t\tconst completedIds = s.tasksCompleted ?? [];\n\t\t\tconst createdIds = s.tasksCreated ?? [];\n\t\t\tconst completedTasks = [];\n\t\t\tfor (const tid of completedIds.slice(0, 20)) {\n\t\t\t\tconst t = await accessor.loadSingleTask(tid);\n\t\t\t\tif (t) completedTasks.push({\n\t\t\t\t\tid: t.id,\n\t\t\t\t\ttitle: t.title,\n\t\t\t\t\tstatus: t.status\n\t\t\t\t});\n\t\t\t}\n\t\t\tlet currentTask = null;\n\t\t\tconst currentTaskId = s.taskWork?.taskId ?? null;\n\t\t\tif (currentTaskId) {\n\t\t\t\tconst ct = await accessor.loadSingleTask(currentTaskId);\n\t\t\t\tif (ct) currentTask = {\n\t\t\t\t\tid: ct.id,\n\t\t\t\t\ttitle: ct.title,\n\t\t\t\t\tstatus: ct.status\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst durationMs = s.startedAt && s.endedAt ? new Date(s.endedAt).getTime() - new Date(s.startedAt).getTime() : null;\n\t\t\treturn {\n\t\t\t\tid: s.id,\n\t\t\t\tname: s.name,\n\t\t\t\tstatus: s.status,\n\t\t\t\tagent: s.agent ?? null,\n\t\t\t\tcurrentTask,\n\t\t\t\tstartedAt: s.startedAt,\n\t\t\t\tendedAt: s.endedAt ?? null,\n\t\t\t\tdurationMs,\n\t\t\t\tcompletedCount: completedIds.length,\n\t\t\t\tcreatedCount: createdIds.length,\n\t\t\t\tcompletedTasks,\n\t\t\t\tworkedTasks: []\n\t\t\t};\n\t\t}));\n\t\treturn json({\n\t\t\tsessions: enriched,\n\t\t\ttotal: enriched.length\n\t\t});\n\t} catch (err) {\n\t\treturn json({ error: String(err) }, { status: 500 });\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-tKMjUFUP.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/project/backup/_server.ts.js"],"sourcesContent":["import { n as recordAudit } from \"../../../../../chunks/audit-log.js\";\nimport { t as executeCliAction } from \"../../../../../chunks/cli-action.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { readdirSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/routes/api/project/backup/+server.ts\n/**\n* Project backup endpoints.\n*\n* GET /api/project/backup — list snapshot files under\n* `<projectPath>/.cleo/backups/sqlite/`\n* POST /api/project/backup — create a new snapshot via\n* `cleo backup add --json`\n*\n* The GET reads the filesystem directly (read-only) so the UI can render\n* without shelling out; the POST delegates to the CLI so vacuum + atomic\n* rename are handled identically to `cleo session end`.\n*\n* @task T990\n* @wave 1E\n*/\nfunction classify(name) {\n\tif (name.startsWith(\"tasks-\")) return \"tasks\";\n\tif (name.startsWith(\"brain-\")) return \"brain\";\n\tif (name.startsWith(\"config-\")) return \"config\";\n\tif (name.startsWith(\"project-info-\")) return \"project-info\";\n\treturn \"other\";\n}\nvar GET = ({ locals }) => {\n\tconst dir = join(locals.projectCtx.projectPath, \".cleo\", \"backups\", \"sqlite\");\n\tlet files = [];\n\ttry {\n\t\tfiles = readdirSync(dir).map((filename) => {\n\t\t\tconst full = join(dir, filename);\n\t\t\ttry {\n\t\t\t\tconst st = statSync(full);\n\t\t\t\tif (!st.isFile()) return null;\n\t\t\t\treturn {\n\t\t\t\t\tfilename,\n\t\t\t\t\tpath: full,\n\t\t\t\t\tsizeBytes: st.size,\n\t\t\t\t\tcreatedAt: st.mtime.toISOString(),\n\t\t\t\t\tkind: classify(filename)\n\t\t\t\t};\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}).filter((f) => f !== null).sort((a, b) => a.createdAt < b.createdAt ? 1 : -1);\n\t} catch {\n\t\tfiles = [];\n\t}\n\treturn json({\n\t\tsuccess: true,\n\t\tdata: {\n\t\t\tbackups: files,\n\t\t\tdir\n\t\t}\n\t});\n};\nvar POST = async ({ request, locals }) => {\n\tlet body = {};\n\ttry {\n\t\tconst raw = await request.json();\n\t\tif (raw && typeof raw === \"object\") body = raw;\n\t} catch {}\n\tconst args = [\n\t\t\"backup\",\n\t\t\"add\",\n\t\t\"--json\"\n\t];\n\tif (typeof body.note === \"string\" && body.note.trim()) args.push(\"--note\", body.note.trim());\n\trecordAudit(locals.projectCtx.projectPath, {\n\t\tactor: \"studio-admin\",\n\t\taction: \"project.backup\",\n\t\ttarget: locals.projectCtx.projectId || locals.projectCtx.projectPath,\n\t\tresult: \"initiated\",\n\t\tdetail: body.note ?? null\n\t});\n\tconst response = await executeCliAction(args, {\n\t\terrorCode: \"E_BACKUP_FAILED\",\n\t\tmeta: { note: body.note }\n\t});\n\trecordAudit(locals.projectCtx.projectPath, {\n\t\tactor: \"studio-admin\",\n\t\taction: \"project.backup\",\n\t\ttarget: locals.projectCtx.projectId || locals.projectCtx.projectPath,\n\t\tresult: response.status === 200 ? \"success\" : \"failure\"\n\t});\n\treturn response;\n};\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-uUx7uT2Y.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/tasks/pipeline/_server.ts.js"],"sourcesContent":["import { r as getTaskAccessor } from \"../../../../../chunks/data-accessor2.js\";\nimport { t as listTasks } from \"../../../../../chunks/list.js\";\nimport { t as computeTaskRollups } from \"../../../../../chunks/rollup.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/tasks/pipeline/+server.ts\n/**\n* Ordered canonical pipeline column IDs. Mirrors the RCASD-IVTR+C chain\n* from `@cleocode/core` with terminal display buckets appended.\n*\n* Kept in string form (no import from core) so the Studio server runtime\n* stays free of CLI-only imports — the facade boundary is respected.\n*/\nvar PIPELINE_STAGES = [\n\t\"research\",\n\t\"consensus\",\n\t\"architecture_decision\",\n\t\"specification\",\n\t\"decomposition\",\n\t\"implementation\",\n\t\"validation\",\n\t\"testing\",\n\t\"release\",\n\t\"contribution\"\n];\n/** Project a core `Task` row into the pre-T948 snake_case shape. */\nfunction _toPipelineRow(task) {\n\treturn {\n\t\tid: task.id,\n\t\ttitle: task.title,\n\t\tstatus: task.status,\n\t\tpriority: task.priority,\n\t\ttype: task.type ?? \"task\",\n\t\tparent_id: task.parentId ?? null,\n\t\tpipeline_stage: task.pipelineStage ?? null,\n\t\tsize: task.size ?? null,\n\t\tverification_json: task.verification !== void 0 && task.verification !== null ? JSON.stringify(task.verification) : null,\n\t\tacceptance_json: task.acceptance !== void 0 && task.acceptance.length > 0 ? JSON.stringify(task.acceptance) : null,\n\t\tcreated_at: task.createdAt,\n\t\tupdated_at: task.updatedAt ?? task.createdAt,\n\t\tcompleted_at: task.completedAt ?? null\n\t};\n}\n/**\n* Decide which stage bucket a task belongs in. Uses the canonical rollup\n* `pipelineStage` as the authoritative signal. `null` → 'unassigned', any\n* unknown value also falls back to 'unassigned' so new stages introduced by\n* core don't crash the Studio UI before the whitelist is updated.\n*/\nfunction _resolveStage(rollup) {\n\tconst stage = rollup.pipelineStage;\n\tif (stage === null) return \"unassigned\";\n\treturn PIPELINE_STAGES.includes(stage) ? stage : \"unassigned\";\n}\n/** Capitalise the first letter of a stage id for a human label. */\nfunction _labelFor(stage) {\n\tif (stage === \"unassigned\") return \"Unassigned\";\n\treturn stage.charAt(0).toUpperCase() + stage.slice(1);\n}\nvar GET = async ({ locals }) => {\n\tconst ctx = locals.projectCtx;\n\tif (!ctx.tasksDbExists) return json({ error: \"tasks.db unavailable\" }, { status: 503 });\n\ttry {\n\t\tconst accessor = await getTaskAccessor(ctx.projectPath);\n\t\tconst tasks = (await listTasks({\n\t\t\texcludeArchived: true,\n\t\t\tsortByPriority: true,\n\t\t\tlimit: 1e3\n\t\t}, ctx.projectPath, accessor)).tasks;\n\t\tconst rollups = await computeTaskRollups(tasks.map((t) => t.id), accessor);\n\t\tconst rollupById = /* @__PURE__ */ new Map();\n\t\tfor (const r of rollups) rollupById.set(r.id, r);\n\t\tconst stageMap = /* @__PURE__ */ new Map();\n\t\tfor (const s of [...PIPELINE_STAGES, \"unassigned\"]) stageMap.set(s, {\n\t\t\ttasks: [],\n\t\t\trollups: []\n\t\t});\n\t\tfor (const task of tasks) {\n\t\t\tconst rollup = rollupById.get(task.id);\n\t\t\tif (rollup === void 0) continue;\n\t\t\tconst stage = _resolveStage(rollup);\n\t\t\tconst bucket = stageMap.get(stage);\n\t\t\tif (bucket === void 0) continue;\n\t\t\tbucket.tasks.push(_toPipelineRow(task));\n\t\t\tbucket.rollups.push(rollup);\n\t\t}\n\t\tconst stages = PIPELINE_STAGES.map((s) => {\n\t\t\tconst bucket = stageMap.get(s) ?? {\n\t\t\t\ttasks: [],\n\t\t\t\trollups: []\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tid: s,\n\t\t\t\tlabel: _labelFor(s),\n\t\t\t\tcount: bucket.tasks.length,\n\t\t\t\ttasks: bucket.tasks,\n\t\t\t\trollups: bucket.rollups\n\t\t\t};\n\t\t});\n\t\tconst unassigned = stageMap.get(\"unassigned\");\n\t\tif (unassigned !== void 0 && unassigned.tasks.length > 0) stages.push({\n\t\t\tid: \"unassigned\",\n\t\t\tlabel: \"Unassigned\",\n\t\t\tcount: unassigned.tasks.length,\n\t\t\ttasks: unassigned.tasks,\n\t\t\trollups: unassigned.rollups\n\t\t});\n\t\treturn json({ stages });\n\t} catch (err) {\n\t\treturn json({ error: String(err) }, { status: 500 });\n\t}\n};\n//#endregion\nexport { GET, _labelFor, _resolveStage, _toPipelineRow };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-ujoDR2_g.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/memory/quality/_server.ts.js"],"sourcesContent":["import { n as getBrainDb } from \"../../../../../chunks/connections2.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/memory/quality/+server.ts\n/**\n* Memory quality distribution API endpoint.\n* GET /api/memory/quality → quality distribution stats across all brain tables.\n*\n* @remarks T9616 follow-up: This route still uses raw SQL because the CORE\n* public API (`getMemoryQualityReport`) returns a different shape (3 aggregate\n* buckets per memory tier) rather than the per-table 5-range quality buckets\n* and per-count stats consumed by the Studio quality dashboard. A future task\n* should extend `getMemoryQualityReport` (or add a `getTableQualityStats` op)\n* in `packages/core/src/memory/public-api.ts` to cover this shape, then\n* migrate this handler to use it.\n*/\n/** Build quality buckets for a table. */\nfunction buildBuckets(db, table) {\n\treturn [\n\t\t{\n\t\t\trange: \"0.0–0.2\",\n\t\t\tmin: 0,\n\t\t\tmax: .2\n\t\t},\n\t\t{\n\t\t\trange: \"0.2–0.4\",\n\t\t\tmin: .2,\n\t\t\tmax: .4\n\t\t},\n\t\t{\n\t\t\trange: \"0.4–0.6\",\n\t\t\tmin: .4,\n\t\t\tmax: .6\n\t\t},\n\t\t{\n\t\t\trange: \"0.6–0.8\",\n\t\t\tmin: .6,\n\t\t\tmax: .8\n\t\t},\n\t\t{\n\t\t\trange: \"0.8–1.0\",\n\t\t\tmin: .8,\n\t\t\tmax: 1\n\t\t}\n\t].map(({ range, min, max }) => {\n\t\tconst isLast = max === 1;\n\t\treturn {\n\t\t\trange,\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tcount: db.prepare(`SELECT COUNT(*) as cnt FROM ${table}\n WHERE quality_score >= ? AND quality_score ${isLast ? \"<=\" : \"<\"} ?`).get(min, max).cnt\n\t\t};\n\t});\n}\nvar GET = ({ locals }) => {\n\tconst db = getBrainDb(locals.projectCtx);\n\tif (!db) {\n\t\tconst empty = {\n\t\t\tbuckets: [],\n\t\t\tverified_count: 0,\n\t\t\tprune_count: 0,\n\t\t\tinvalidated_count: 0\n\t\t};\n\t\treturn json({\n\t\t\tobservations: {\n\t\t\t\t...empty,\n\t\t\t\ttiers: [],\n\t\t\t\ttypes: []\n\t\t\t},\n\t\t\tdecisions: empty,\n\t\t\tpatterns: empty,\n\t\t\tlearnings: empty\n\t\t});\n\t}\n\ttry {\n\t\tconst obsBuckets = buildBuckets(db, \"brain_observations\");\n\t\tconst obsTiers = db.prepare(`SELECT COALESCE(memory_tier, 'unknown') as tier, COUNT(*) as count\n FROM brain_observations GROUP BY memory_tier ORDER BY count DESC`).all();\n\t\tconst obsTypes = db.prepare(`SELECT COALESCE(memory_type, 'unknown') as memory_type, COUNT(*) as count\n FROM brain_observations GROUP BY memory_type ORDER BY count DESC`).all();\n\t\tconst obsVerified = db.prepare(\"SELECT COUNT(*) as cnt FROM brain_observations WHERE verified = 1\").get().cnt;\n\t\tconst obsPrune = db.prepare(\"SELECT COUNT(*) as cnt FROM brain_observations WHERE prune_candidate = 1\").get().cnt;\n\t\tconst obsInvalidated = db.prepare(\"SELECT COUNT(*) as cnt FROM brain_observations WHERE invalid_at IS NOT NULL\").get().cnt;\n\t\tconst decBuckets = buildBuckets(db, \"brain_decisions\");\n\t\tconst decVerified = db.prepare(\"SELECT COUNT(*) as cnt FROM brain_decisions WHERE verified = 1\").get().cnt;\n\t\tconst decPrune = db.prepare(\"SELECT COUNT(*) as cnt FROM brain_decisions WHERE prune_candidate = 1\").get().cnt;\n\t\tconst patBuckets = buildBuckets(db, \"brain_patterns\");\n\t\tconst patVerified = db.prepare(\"SELECT COUNT(*) as cnt FROM brain_patterns WHERE verified = 1\").get().cnt;\n\t\tconst learnBuckets = buildBuckets(db, \"brain_learnings\");\n\t\tconst learnVerified = db.prepare(\"SELECT COUNT(*) as cnt FROM brain_learnings WHERE verified = 1\").get().cnt;\n\t\treturn json({\n\t\t\tobservations: {\n\t\t\t\tbuckets: obsBuckets,\n\t\t\t\ttiers: obsTiers,\n\t\t\t\ttypes: obsTypes,\n\t\t\t\tverified_count: obsVerified,\n\t\t\t\tprune_count: obsPrune,\n\t\t\t\tinvalidated_count: obsInvalidated\n\t\t\t},\n\t\t\tdecisions: {\n\t\t\t\tbuckets: decBuckets,\n\t\t\t\tverified_count: decVerified,\n\t\t\t\tprune_count: decPrune,\n\t\t\t\tinvalidated_count: 0\n\t\t\t},\n\t\t\tpatterns: {\n\t\t\t\tbuckets: patBuckets,\n\t\t\t\tverified_count: patVerified,\n\t\t\t\tprune_count: 0,\n\t\t\t\tinvalidated_count: 0\n\t\t\t},\n\t\t\tlearnings: {\n\t\t\t\tbuckets: learnBuckets,\n\t\t\t\tverified_count: learnVerified,\n\t\t\t\tprune_count: 0,\n\t\t\t\tinvalidated_count: 0\n\t\t\t}\n\t\t});\n\t} catch {\n\t\tconst empty = {\n\t\t\tbuckets: [],\n\t\t\tverified_count: 0,\n\t\t\tprune_count: 0,\n\t\t\tinvalidated_count: 0\n\t\t};\n\t\treturn json({\n\t\t\tobservations: {\n\t\t\t\t...empty,\n\t\t\t\ttiers: [],\n\t\t\t\ttypes: []\n\t\t\t},\n\t\t\tdecisions: empty,\n\t\t\tpatterns: empty,\n\t\t\tlearnings: empty\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abort-events-CDRAJSqb.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapters-BkMgPNUM.js","sources":["../../../.svelte-kit/adapter-node/chunks/discovery2.js","../../../.svelte-kit/adapter-node/chunks/adapters.js"],"sourcesContent":["import { existsSync, readFileSync, readdirSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { execFileSync } from \"node:child_process\";\n//#region ../core/dist/adapters/discovery.js\n/**\n* Adapter discovery: scans packages/adapters/ for installed provider adapters.\n* Reads adapter manifests and detects active providers in the current environment.\n*\n* @task T5240\n*/\n/**\n* Scan the packages/adapters/ directory for adapter packages.\n* Each adapter must have a manifest.json at its root.\n*/\nfunction discoverAdapterManifests(projectRoot) {\n\tconst adaptersDir = resolve(projectRoot, \"packages\", \"adapters\");\n\tif (!existsSync(adaptersDir)) return [];\n\tconst manifests = [];\n\tlet entries;\n\ttry {\n\t\tentries = readdirSync(adaptersDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);\n\t} catch {\n\t\treturn [];\n\t}\n\tfor (const dir of entries) {\n\t\tconst adapterDir = join(adaptersDir, dir);\n\t\tconst manifestPath = join(adapterDir, \"manifest.json\");\n\t\tif (!existsSync(manifestPath)) continue;\n\t\ttry {\n\t\t\tconst raw = readFileSync(manifestPath, \"utf-8\");\n\t\t\tconst manifest = JSON.parse(raw);\n\t\t\tmanifest.packagePath = resolve(adapterDir);\n\t\t\tmanifests.push(manifest);\n\t\t} catch {}\n\t}\n\treturn manifests;\n}\n/**\n* Detect whether a provider is active in the current environment\n* by checking its detection patterns.\n*/\nfunction detectProvider(patterns) {\n\tfor (const pattern of patterns) if (matchDetectionPattern(pattern)) return true;\n\treturn false;\n}\nfunction matchDetectionPattern(pattern) {\n\tswitch (pattern.type) {\n\t\tcase \"env\": return process.env[pattern.pattern] !== void 0;\n\t\tcase \"file\": return existsSync(pattern.pattern);\n\t\tcase \"process\": {\n\t\t\tconst processName = pattern.pattern.toLowerCase();\n\t\t\treturn (process.env.TERM_PROGRAM ?? \"\").toLowerCase().includes(processName) || (process.env.EDITOR ?? \"\").toLowerCase().includes(processName);\n\t\t}\n\t\tcase \"cli\": try {\n\t\t\texecFileSync(\"which\", [pattern.pattern], {\n\t\t\t\tstdio: \"ignore\",\n\t\t\t\ttimeout: 3e3\n\t\t\t});\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t\tdefault: return false;\n\t}\n}\n//#endregion\nexport { discoverAdapterManifests as n, detectProvider as t };\n","import { t as getLogger } from \"./logger.js\";\nimport { n as discoverAdapterManifests, t as detectProvider } from \"./discovery2.js\";\nimport { n as hooks } from \"./registry2.js\";\nimport { join } from \"node:path\";\n//#region ../core/dist/adapters/adapter-registry.js\n/**\n* Dynamic adapter loading utilities.\n*\n* Replaces the former static ADAPTER_REGISTRY with discovery-based loading.\n* Adapters are found via discoverAdapterManifests() and loaded dynamically\n* using each manifest's packagePath and entryPoint.\n*\n* Zero hardcoded adapter package names — everything derives from manifests.\n*\n* @task T5698\n*/\n/**\n* Validate that a loaded module export implements the CLEOProviderAdapter interface.\n* Checks for required methods and properties without relying on instanceof.\n*/\nfunction isValidAdapter(adapter) {\n\tif (adapter === null || typeof adapter !== \"object\") return false;\n\tconst obj = adapter;\n\treturn typeof obj.id === \"string\" && typeof obj.name === \"string\" && typeof obj.version === \"string\" && typeof obj.initialize === \"function\" && typeof obj.dispose === \"function\" && typeof obj.healthCheck === \"function\" && obj.capabilities !== null && typeof obj.capabilities === \"object\";\n}\n/**\n* Dynamically load and instantiate an adapter from its manifest.\n*\n* Uses the manifest's packagePath to resolve the adapter module,\n* then looks for a `createAdapter()` factory or a default export class.\n*\n* @param manifest - The adapter manifest with a resolved packagePath\n* @returns A CLEOProviderAdapter instance\n* @throws If the module cannot be loaded or does not export a valid adapter\n*/\nasync function loadAdapterFromManifest(manifest) {\n\tconst adapterModule = await import(join(manifest.packagePath, manifest.entryPoint));\n\tif (typeof adapterModule.createAdapter === \"function\") {\n\t\tconst adapter = adapterModule.createAdapter();\n\t\tif (isValidAdapter(adapter)) return adapter;\n\t\tthrow new Error(`createAdapter() in ${manifest.id} did not return a valid CLEOProviderAdapter`);\n\t}\n\tif (adapterModule.default) {\n\t\tconst DefaultExport = adapterModule.default;\n\t\tif (typeof DefaultExport === \"function\") {\n\t\t\tconst adapter = new DefaultExport();\n\t\t\tif (isValidAdapter(adapter)) return adapter;\n\t\t} else if (isValidAdapter(DefaultExport)) return DefaultExport;\n\t}\n\tthrow new Error(`Adapter module for ${manifest.id} does not export createAdapter() or a valid default`);\n}\n//#endregion\n//#region ../core/dist/adapters/manager.js\n/**\n* AdapterManager: central registry for provider adapters.\n* Handles adapter lifecycle (discovery, initialization, health, disposal)\n* and tracks the active adapter for the current session.\n*\n* @task T5240\n*/\nvar log = getLogger(\"adapter-manager\");\n/**\n* Central adapter manager. Singleton per process.\n*\n* Lifecycle:\n* 1. discover() — scan for adapter packages and their manifests\n* 2. activate(id) — load, initialize, and set as active adapter\n* 3. getActive() — return the current active adapter\n* 4. dispose() — clean up all initialized adapters\n*/\nvar AdapterManager = class AdapterManager {\n\tstatic instance = null;\n\tadapters = /* @__PURE__ */ new Map();\n\tmanifests = /* @__PURE__ */ new Map();\n\thookCleanups = /* @__PURE__ */ new Map();\n\tactiveId = null;\n\tprojectRoot;\n\tconstructor(projectRoot) {\n\t\tthis.projectRoot = projectRoot;\n\t}\n\tstatic getInstance(projectRoot) {\n\t\tif (!AdapterManager.instance) AdapterManager.instance = new AdapterManager(projectRoot);\n\t\treturn AdapterManager.instance;\n\t}\n\t/** Reset singleton (for testing). */\n\tstatic resetInstance() {\n\t\tAdapterManager.instance = null;\n\t}\n\t/**\n\t* Discover adapter manifests from packages/adapters/.\n\t* Returns manifests found (does not load adapter code yet).\n\t*/\n\tdiscover() {\n\t\tconst found = discoverAdapterManifests(this.projectRoot);\n\t\tfor (const manifest of found) this.manifests.set(manifest.id, manifest);\n\t\tlog.info({ count: found.length }, \"Discovered adapter manifests\");\n\t\treturn found;\n\t}\n\t/**\n\t* Auto-detect which adapters match the current environment\n\t* and return their manifest IDs.\n\t*/\n\tdetectActive() {\n\t\tconst detected = [];\n\t\tfor (const [id, manifest] of this.manifests) if (detectProvider(manifest.detectionPatterns)) detected.push(id);\n\t\tlog.info({ detected }, \"Detected active providers\");\n\t\treturn detected;\n\t}\n\t/**\n\t* Load and initialize an adapter by manifest ID.\n\t* Dynamically imports from the manifest's packagePath — no hardcoded adapters.\n\t*/\n\tasync activate(adapterId) {\n\t\tconst manifest = this.manifests.get(adapterId);\n\t\tif (!manifest) throw new Error(`Adapter manifest not found: ${adapterId}`);\n\t\tconst existing = this.adapters.get(adapterId);\n\t\tif (existing) {\n\t\t\tthis.activeId = adapterId;\n\t\t\treturn existing;\n\t\t}\n\t\ttry {\n\t\t\tconst adapter = await loadAdapterFromManifest(manifest);\n\t\t\tawait adapter.initialize(this.projectRoot);\n\t\t\tthis.adapters.set(adapterId, adapter);\n\t\t\tthis.activeId = adapterId;\n\t\t\tif (adapter.hooks) await this.wireAdapterHooks(adapterId, adapter);\n\t\t\tlog.info({\n\t\t\t\tadapterId,\n\t\t\t\tprovider: manifest.provider\n\t\t\t}, \"Adapter activated\");\n\t\t\treturn adapter;\n\t\t} catch (err) {\n\t\t\tlog.error({\n\t\t\t\tadapterId,\n\t\t\t\terr\n\t\t\t}, \"Failed to activate adapter\");\n\t\t\tthrow err;\n\t\t}\n\t}\n\t/** Get the currently active adapter, or null if none. */\n\tgetActive() {\n\t\tif (!this.activeId) return null;\n\t\treturn this.adapters.get(this.activeId) ?? null;\n\t}\n\t/** Get the active adapter's ID, or null. */\n\tgetActiveId() {\n\t\treturn this.activeId;\n\t}\n\t/** Get a specific adapter by ID. */\n\tget(adapterId) {\n\t\treturn this.adapters.get(adapterId) ?? null;\n\t}\n\t/** Get the manifest for a specific adapter. */\n\tgetManifest(adapterId) {\n\t\treturn this.manifests.get(adapterId) ?? null;\n\t}\n\t/** List all known adapters with summary info. */\n\tlistAdapters() {\n\t\tconst result = [];\n\t\tfor (const [id, manifest] of this.manifests) {\n\t\t\tconst adapter = this.adapters.get(id);\n\t\t\tresult.push({\n\t\t\t\tid,\n\t\t\t\tname: manifest.name,\n\t\t\t\tversion: manifest.version,\n\t\t\t\tprovider: manifest.provider,\n\t\t\t\thealthy: !!adapter,\n\t\t\t\tactive: id === this.activeId\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\t/** Run health check on all initialized adapters. */\n\tasync healthCheckAll() {\n\t\tconst results = /* @__PURE__ */ new Map();\n\t\tfor (const [id, adapter] of this.adapters) try {\n\t\t\tconst status = await adapter.healthCheck();\n\t\t\tresults.set(id, status);\n\t\t} catch (err) {\n\t\t\tresults.set(id, {\n\t\t\t\thealthy: false,\n\t\t\t\tprovider: this.manifests.get(id)?.provider ?? \"unknown\",\n\t\t\t\tdetails: { error: err instanceof Error ? err.message : String(err) }\n\t\t\t});\n\t\t}\n\t\treturn results;\n\t}\n\t/** Health check a single adapter. */\n\tasync healthCheck(adapterId) {\n\t\tconst adapter = this.adapters.get(adapterId);\n\t\tif (!adapter) return {\n\t\t\thealthy: false,\n\t\t\tprovider: this.manifests.get(adapterId)?.provider ?? \"unknown\",\n\t\t\tdetails: { error: \"Adapter not initialized\" }\n\t\t};\n\t\ttry {\n\t\t\treturn await adapter.healthCheck();\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\thealthy: false,\n\t\t\t\tprovider: this.manifests.get(adapterId)?.provider ?? \"unknown\",\n\t\t\t\tdetails: { error: err instanceof Error ? err.message : String(err) }\n\t\t\t};\n\t\t}\n\t}\n\t/** Dispose all initialized adapters. */\n\tasync dispose() {\n\t\tfor (const [id, adapter] of this.adapters) try {\n\t\t\tawait this.cleanupAdapterHooks(id, adapter);\n\t\t\tawait adapter.dispose();\n\t\t\tlog.info({ adapterId: id }, \"Adapter disposed\");\n\t\t} catch (err) {\n\t\t\tlog.error({\n\t\t\t\tadapterId: id,\n\t\t\t\terr\n\t\t\t}, \"Failed to dispose adapter\");\n\t\t}\n\t\tthis.adapters.clear();\n\t\tthis.hookCleanups.clear();\n\t\tthis.activeId = null;\n\t}\n\t/** Dispose a single adapter. */\n\tasync disposeAdapter(adapterId) {\n\t\tconst adapter = this.adapters.get(adapterId);\n\t\tif (!adapter) return;\n\t\ttry {\n\t\t\tawait this.cleanupAdapterHooks(adapterId, adapter);\n\t\t\tawait adapter.dispose();\n\t\t} catch (err) {\n\t\t\tlog.error({\n\t\t\t\tadapterId,\n\t\t\t\terr\n\t\t\t}, \"Failed to dispose adapter\");\n\t\t}\n\t\tthis.adapters.delete(adapterId);\n\t\tif (this.activeId === adapterId) this.activeId = null;\n\t}\n\t/**\n\t* Wire an adapter's hook event map into CLEO's HookRegistry.\n\t* Creates bridging handlers at priority 50 for each mapped event.\n\t*/\n\tasync wireAdapterHooks(adapterId, adapter) {\n\t\tif (!adapter.hooks) return;\n\t\ttry {\n\t\t\tawait adapter.hooks.registerNativeHooks(this.projectRoot);\n\t\t} catch (err) {\n\t\t\tlog.error({\n\t\t\t\tadapterId,\n\t\t\t\terr\n\t\t\t}, \"Failed to register native hooks\");\n\t\t}\n\t\tconst eventMap = adapter.hooks.getEventMap?.();\n\t\tif (!eventMap) return;\n\t\tconst cleanups = [];\n\t\tfor (const [_providerEvent, caampEvent] of Object.entries(eventMap)) {\n\t\t\tconst hookId = `adapter-${adapterId}-${caampEvent}`;\n\t\t\tconst unregister = hooks.register({\n\t\t\t\tid: hookId,\n\t\t\t\tevent: caampEvent,\n\t\t\t\tpriority: 50,\n\t\t\t\thandler: async (_projectRoot, payload) => {\n\t\t\t\t\tlog.debug({\n\t\t\t\t\t\tadapterId,\n\t\t\t\t\t\tevent: caampEvent,\n\t\t\t\t\t\tpayload\n\t\t\t\t\t}, \"Adapter hook dispatched\");\n\t\t\t\t}\n\t\t\t});\n\t\t\tcleanups.push(unregister);\n\t\t}\n\t\tthis.hookCleanups.set(adapterId, cleanups);\n\t}\n\t/**\n\t* Clean up hook registrations for an adapter.\n\t*/\n\tasync cleanupAdapterHooks(adapterId, adapter) {\n\t\tconst cleanups = this.hookCleanups.get(adapterId);\n\t\tif (cleanups) {\n\t\t\tfor (const fn of cleanups) fn();\n\t\t\tthis.hookCleanups.delete(adapterId);\n\t\t}\n\t\ttry {\n\t\t\tawait adapter.hooks?.unregisterNativeHooks();\n\t\t} catch (err) {\n\t\t\tlog.error({\n\t\t\t\tadapterId,\n\t\t\t\terr\n\t\t\t}, \"Failed to unregister native hooks\");\n\t\t}\n\t}\n};\n//#endregion\nexport { isValidAdapter as n, loadAdapterFromManifest as r, AdapterManager as t };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapters2-CQ3PzoaK.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-mode2-3W-I1-XO.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api2-CmNQzb0b.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attention-consolidate-CidG1jfH.js","sources":["../../../.svelte-kit/adapter-node/chunks/convert.js","../../../.svelte-kit/adapter-node/chunks/attention-consolidate.js"],"sourcesContent":["import \"./memory-accessor2.js\";\n//#region ../core/dist/sticky/convert.js\n/**\n* Promote a Tier-2 attention entry to a durable BRAIN observation — the\n* dream-cycle's promotion conduit (E3 · Epic T11289 · Saga T11283).\n*\n* Stickies remain the conduit (council verdict): rather than build a parallel\n* promotion path, this reuses the exact `convertStickyToMemory` shape — write a\n* `brain_observations` row via `observeBrain`, then attach provenance — so the\n* single salient-→-durable path is shared. The caller\n* ({@link consolidateAttention}) is responsible for flipping the source row to\n* `status='consolidated'` after a successful promotion (idempotency lives with\n* the buffer-status transition, not here).\n*\n* ## Leakage preservation (Epic T11289 AC; T11383)\n*\n* The promoted observation carries the entry's scope as structured provenance:\n*\n* - `crossRef` records `attention:<id>` + `scope:<kind>:<id>` so the durable row\n* is traceable back to the exact scope key it came from.\n* - `agent` records the writing agent's id so an agent-scoped jot's durable form\n* is attributed to that agent, never surfaced under another agent's identity.\n* - `provenanceChain` records the source attention id.\n*\n* Because the scope key travels with the observation, agent A's promoted entry\n* can never be mis-attributed to agent B's scope — the structural read-time\n* guarantee of the buffer is carried forward into Tier-3.\n*\n* @param row - The attention entry to promote (already scored + verdict='promote').\n* @param projectRoot - Project root path (brain.db resolution).\n* @returns Result with the new durable observation id, or a structured error.\n* @task T11383\n* @epic T11289\n*/\nasync function promoteAttentionToMemory(row, projectRoot) {\n\tconst { observeBrain } = await import(\"./brain-retrieval2.js\");\n\tconst scopeRef = `scope:${row.scopeKind}:${row.scopeId}`;\n\tconst attentionRef = `attention:${row.id}`;\n\ttry {\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tmemoryId: (await observeBrain(projectRoot, {\n\t\t\t\ttext: row.content,\n\t\t\t\ttitle: row.content.slice(0, 50),\n\t\t\t\ttype: \"discovery\",\n\t\t\t\tsourceType: \"agent\",\n\t\t\t\torigin: \"auto-extract\",\n\t\t\t\tcrossRef: [attentionRef, scopeRef],\n\t\t\t\tprovenanceChain: [row.id],\n\t\t\t\t...row.agentId ? { agent: row.agentId } : {},\n\t\t\t\t...row.sessionId ? { sourceSessionId: row.sessionId } : {}\n\t\t\t})).id\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: \"E_CONVERT_FAILED\",\n\t\t\t\tmessage: String(error)\n\t\t\t}\n\t\t};\n\t}\n}\n//#endregion\nexport { promoteAttentionToMemory as t };\n","import { t as getLogger } from \"./logger.js\";\nimport { n as getBrainAccessor } from \"./memory-accessor2.js\";\nimport { t as promoteAttentionToMemory } from \"./convert.js\";\n//#region ../core/dist/memory/promotion-score.js\n/**\n* Composite 6-signal scorer for brain observation typed promotion.\n*\n* Replaces the legacy 3-rule OR union in runTierPromotion with a\n* weighted composite score that is explainable and auditable.\n*\n* Signals:\n* 1. citation_count — retrieval frequency (normalised to 0.0–1.0 via tanh)\n* 2. quality_score — content richness computed at insert (0.0–1.0)\n* 3. stability_score — biological-analog consolidation metric (0.0–1.0)\n* 4. recency — inverse age decay (1.0 = today, approaches 0 over 90 days)\n* 5. user_verified — hard boost (0 or 1)\n* 6. outcome_correlated — whether tied to a completed task outcome (0 or 1)\n*\n* Formula:\n* raw = w_citation × normalise(citation_count)\n* + w_quality × (quality_score ?? 0.5)\n* + w_stability × (stability_score ?? 0.5)\n* + w_recency × recencyFactor(created_at)\n* + w_verified × user_verified\n* + w_outcome × outcome_correlated\n*\n* composite_score = clamp(raw / sum(weights), 0.0, 1.0)\n*\n* Weights are designed so that a verified OR high-citation entry always\n* crosses the default threshold (0.6), while pure noise (0 citations,\n* 0.3 quality, 0.5 stability, old age, unverified, no outcome) scores ~0.3.\n*\n* @task T1001\n* @epic T1000\n*/\n/** Weights for each signal. Must sum > 0 (they are normalised internally). */\nvar WEIGHTS = {\n\tcitation: .2,\n\tquality: .2,\n\tstability: .15,\n\trecency: .15,\n\tverified: .2,\n\toutcome: .1\n};\nvar WEIGHT_SUM = WEIGHTS.citation + WEIGHTS.quality + WEIGHTS.stability + WEIGHTS.recency + WEIGHTS.verified + WEIGHTS.outcome;\n/**\n* Normalise a raw citation count to 0–1 using tanh(count / 5).\n*\n* tanh(1/5) ≈ 0.20 (citation_count=1)\n* tanh(3/5) ≈ 0.54 (citation_count=3)\n* tanh(5/5) ≈ 0.76 (citation_count=5)\n* tanh(10/5) ≈ 0.96 (citation_count=10)\n*/\nfunction normaliseCitation(count) {\n\treturn Math.tanh(count / 5);\n}\n/**\n* Compute a recency factor in 0–1 from an ISO date string.\n*\n* Uses: recency = exp(-age_days / 30)\n*\n* age_days=0 → 1.0\n* age_days=30 → ~0.37\n* age_days=90 → ~0.05\n*/\nfunction recencyFactor(createdAt) {\n\tif (!createdAt) return Math.exp(-1);\n\tconst created = new Date(createdAt.replace(\" \", \"T\"));\n\tif (Number.isNaN(created.getTime())) return Math.exp(-1);\n\tconst ageDays = (Date.now() - created.getTime()) / (1e3 * 60 * 60 * 24);\n\treturn Math.exp(-ageDays / 30);\n}\n/** Clamp a value to the [min, max] range. */\nfunction clamp(value, min, max) {\n\treturn Math.max(min, Math.min(max, value));\n}\n/**\n* Compute the composite promotion score for a brain entry.\n*\n* Returns a value in [0.0, 1.0]. Entries above the promotion threshold\n* (default 0.6) are eligible for typed promotion.\n*\n* @param signals - The 6 input signals for this entry\n* @returns Composite score in [0.0, 1.0]\n*/\nfunction computePromotionScore(signals) {\n\tconst citationSignal = normaliseCitation(signals.citationCount);\n\tconst qualitySignal = signals.qualityScore ?? .5;\n\tconst stabilitySignal = signals.stabilityScore ?? .5;\n\tconst recencySignal = recencyFactor(signals.createdAt);\n\tconst verifiedSignal = signals.userVerified > 0 ? 1 : 0;\n\tconst outcomeSignal = signals.outcomeCorrelated > 0 ? 1 : 0;\n\treturn clamp((WEIGHTS.citation * citationSignal + WEIGHTS.quality * qualitySignal + WEIGHTS.stability * stabilitySignal + WEIGHTS.recency * recencySignal + WEIGHTS.verified * verifiedSignal + WEIGHTS.outcome * outcomeSignal) / WEIGHT_SUM, 0, 1);\n}\n/**\n* Default promotion threshold. Entries with composite_score >= this value\n* are eligible for typed promotion via promoteObservationsToTyped.\n*/\nvar PROMOTION_THRESHOLD = .6;\n/**\n* Compute the full rationale breakdown for a promotion decision.\n*\n* The rationale is serialised to JSON and stored in brain_promotion_log.rationale_json\n* to make every promotion explainable (pairs with T997 promote-explain CLI).\n*/\nfunction computePromotionRationale(signals, threshold = PROMOTION_THRESHOLD) {\n\tconst citationSignal = normaliseCitation(signals.citationCount);\n\tconst qualitySignal = signals.qualityScore ?? .5;\n\tconst stabilitySignal = signals.stabilityScore ?? .5;\n\tconst recencySignal = recencyFactor(signals.createdAt);\n\tconst verifiedSignal = signals.userVerified > 0 ? 1 : 0;\n\tconst outcomeSignal = signals.outcomeCorrelated > 0 ? 1 : 0;\n\tconst composite = computePromotionScore(signals);\n\treturn {\n\t\tsignals: {\n\t\t\tcitation_count: citationSignal,\n\t\t\tquality_score: qualitySignal,\n\t\t\tstability_score: stabilitySignal,\n\t\t\trecency: recencySignal,\n\t\t\tuser_verified: verifiedSignal,\n\t\t\toutcome_correlated: outcomeSignal\n\t\t},\n\t\tweighted: {\n\t\t\tcitation_count: WEIGHTS.citation * citationSignal,\n\t\t\tquality_score: WEIGHTS.quality * qualitySignal,\n\t\t\tstability_score: WEIGHTS.stability * stabilitySignal,\n\t\t\trecency: WEIGHTS.recency * recencySignal,\n\t\t\tuser_verified: WEIGHTS.verified * verifiedSignal,\n\t\t\toutcome_correlated: WEIGHTS.outcome * outcomeSignal\n\t\t},\n\t\tcomposite_score: composite,\n\t\tthreshold,\n\t\tdecision: composite >= threshold ? \"promote\" : \"skip\"\n\t};\n}\n//#endregion\n//#region ../core/dist/memory/attention-consolidate.js\n/**\n* Tier-2 attention consolidation — the dream-cycle's review of the working-memory\n* buffer (E3 · Epic T11289 · Saga T11283).\n*\n* The biological loop closed by this module:\n*\n* `jot` → Tier-2 `brain_attention` (scope-keyed, decays)\n* → **dream-cycle consolidates** (this module)\n* → promote salient → Tier-3 / BRAIN (durable observation)\n* | discard noise / expired\n* | keep mid-salience open for the next cycle.\n*\n* ## One scorer, one verdict (reconciles the split AC)\n*\n* Every reviewed attention entry receives EXACTLY ONE verdict per dream cycle —\n* `promote` | `keep` | `discard` — from the SAME composite 6-signal scorer used\n* for observation promotion ({@link computePromotionScore} in\n* `promotion-score.ts`). There is NO parallel attention scorer: the epic's\n* AC2/AC3/AC4 were a single criterion mis-split into three fragments, and\n* {@link decideAttentionVerdict} reconciles them into one coherent decision\n* (child T11385).\n*\n* ## Promotion is via the conduit, never a parallel path\n*\n* A `promote` verdict routes through the sticky-convert conduit shape\n* ({@link promoteAttentionToMemory} in `sticky/convert.ts` → `observeBrain`),\n* carrying the entry's `scope_kind`/`scope_id`/`agent_id` as provenance so a\n* promoted entry from agent A can never surface under agent B's scope. The\n* source row is then marked `status='consolidated'` (idempotent — re-running the\n* dream cycle never double-promotes).\n*\n* ## Decay is via the homeostatic sweep, never reinvented\n*\n* `discard`/expiry reuses the accessor's in-SQL TTL + decay-floor sweep\n* ({@link BrainDataAccessor.expireAttention}, the same `expireAttention` policy\n* the CLI + focus path share) so Tier-2 never grows unbounded. Thresholds are\n* honoured in SQL — never load-all-then-JS-filter.\n*\n* @task T11382 — ingest brain_attention into the dream cycle\n* @task T11383 — promote salient entries via the conduit\n* @task T11384 — decay/discard low-salience entries via the homeostatic sweep\n* @task T11385 — single per-entry promote|keep|discard verdict from the scorer\n* @epic T11289 EP-DREAM-CONSOLIDATE-TIER2\n* @saga T11283 SG-COGNITIVE-SUBSTRATE\n*/\n/** Logger for the Tier-2 consolidation pass — routed through pino (never raw console.*). */\nvar log = getLogger(\"attention-consolidate\");\n/**\n* Score at or above which an attention entry is PROMOTED to durable memory.\n*\n* The promotion SCORER is shared verbatim with observation promotion\n* ({@link computePromotionScore} — one scorer, no parallel implementation). The\n* promotion BAR, however, is calibrated to the attention signal space rather\n* than reusing the observation bar ({@link PROMOTION_THRESHOLD} = 0.6).\n*\n* Three of the six signals are structurally unavailable to a raw working-memory\n* jot: `citation_count` (a jot is not retrieved through the citation log),\n* `user_verified` (jots are not owner-verified), and `outcome_correlated` (no\n* task-outcome link). Those carry combined weight 0.5, so the maximum attainable\n* composite for ANY jot is the remaining `quality + stability + recency` ≈ 0.5 —\n* a jot can never reach the 0.6 observation bar. Calibrating to 0.35 cleanly\n* separates a salient, detailed/tagged jot (~0.40) from a mid-salience note\n* (~0.29) and noise (~0.23) within that 0..0.5 attention band. (See the verdict\n* distribution test for the empirical separation.)\n*/\nvar ATTENTION_PROMOTE_THRESHOLD = .35;\n/**\n* Decay floor below which an OPEN, unpromoted attention entry is DISCARDED.\n*\n* Matches {@link DEFAULT_DECAY_THRESHOLD} (0.1) used by the live-items query and\n* the CLI sweep, so an item hidden from reads is also the item swept here.\n*/\nvar ATTENTION_DISCARD_THRESHOLD = .1;\n/**\n* Derive the composite-scorer {@link PromotionSignals} for an attention entry.\n*\n* Attention rows are lightweight working-memory jots — they do not carry the\n* citation/quality/stability columns a `brain_observations` row accrues. We map\n* the available signal onto the EXISTING 6-signal vector rather than inventing a\n* parallel scorer:\n*\n* - `citationCount` — always 0 (a jot is not retrieved through the citation log).\n* - `qualityScore` — a content-richness proxy: longer + tagged jots read as\n* higher quality, normalised to `[0, 1]` (null would default to 0.5, which is\n* too generous for a one-word jot, so we compute an explicit proxy).\n* - `stabilityScore` — the entry's own `decay_score` when present (an entry that\n* has survived decay is more stable); null → scorer default (0.5).\n* - `createdAt` — drives the recency factor (fresh jots score higher).\n* - `userVerified` — 0 (jots are not owner-verified).\n* - `outcomeCorrelated` — 0 (no task-outcome correlation for raw jots).\n*\n* @param row - The attention row to score.\n* @returns The 6-signal vector consumed by {@link computePromotionScore}.\n* @task T11382\n* @task T11385\n*/\nfunction attentionToPromotionSignals(row) {\n\tconst tagCount = Array.isArray(row.tags) ? row.tags.length : 0;\n\tconst lengthFactor = Math.min(1, row.content.trim().length / 120);\n\tconst tagFactor = Math.min(.3, tagCount * .1);\n\tconst qualityScore = Math.min(1, lengthFactor * .7 + tagFactor);\n\tconst createdAtIso = new Date(row.createdAt).toISOString();\n\treturn {\n\t\tcitationCount: 0,\n\t\tqualityScore,\n\t\tstabilityScore: row.decayScore,\n\t\tcreatedAt: createdAtIso,\n\t\tuserVerified: 0,\n\t\toutcomeCorrelated: 0\n\t};\n}\n/**\n* Decide the SINGLE verdict for one attention entry from its composite score and\n* liveness — the reconciliation of the parent epic's split AC2/AC3/AC4.\n*\n* Exactly one of `promote` | `keep` | `discard` is returned:\n*\n* 1. `discard` — the entry is already past its TTL (`expires_at <= now`) OR its\n* `decay_score` is below {@link ATTENTION_DISCARD_THRESHOLD}. (The accessor\n* sweep flips these to `discarded`; deciding `discard` here keeps the verdict\n* audit consistent with what the sweep will do.)\n* 2. `promote` — a live entry whose composite score ≥\n* {@link ATTENTION_PROMOTE_THRESHOLD}.\n* 3. `keep` — everything else: a live, mid-salience entry that stays `open` for\n* the next cycle.\n*\n* @param row - The attention entry under review.\n* @param score - Its composite 6-signal score (from {@link computePromotionScore}).\n* @param now - Reference time (unix ms) for the TTL check; defaults to `Date.now()`.\n* @param promoteThreshold - Promote bar (defaults to {@link ATTENTION_PROMOTE_THRESHOLD}).\n* @param discardThreshold - Discard decay floor (defaults to {@link ATTENTION_DISCARD_THRESHOLD}).\n* @returns The single verdict for this entry.\n* @task T11385\n*/\nfunction decideAttentionVerdict(row, score, now = Date.now(), promoteThreshold = ATTENTION_PROMOTE_THRESHOLD, discardThreshold = ATTENTION_DISCARD_THRESHOLD) {\n\tconst expired = typeof row.expiresAt === \"number\" && row.expiresAt <= now;\n\tconst decayedOut = typeof row.decayScore === \"number\" && row.decayScore < discardThreshold;\n\tif (expired || decayedOut) return \"discard\";\n\tif (score >= promoteThreshold) return \"promote\";\n\treturn \"keep\";\n}\n/**\n* Review the live Tier-2 attention buffer and apply one promote|keep|discard\n* verdict per entry — the dream-cycle's consolidation pass over working memory.\n*\n* Steps:\n*\n* 1. Read every LIVE (`open`, non-expired, above-decay-floor) attention entry\n* across ALL scopes via the accessor's leakage-safe `findAttention` (no scope\n* restriction → the whole buffer; JSONB `tags` read via `json(col)`). This is\n* the dream-cycle reviewing the buffer, NOT a per-agent read.\n* 2. Score each entry with the EXISTING composite 6-signal scorer and decide one\n* verdict ({@link decideAttentionVerdict}).\n* 3. `promote` → route through the conduit ({@link promoteAttentionToMemory}),\n* carrying scope provenance, then mark the source `consolidated` (idempotent).\n* 4. `discard`/expiry → the homeostatic sweep\n* ({@link BrainDataAccessor.expireAttention}) flips TTL/decay-floor entries to\n* `discarded` in SQL.\n* 5. `keep` → left `open` for the next cycle.\n*\n* Every verdict is audited via pino ({@link getLogger}) so a teardown-race never\n* routes a deferred log through the vitest console interceptor.\n*\n* Leakage preservation: scope provenance is attached at promotion time, so agent\n* A's promoted entry never surfaces under agent B's scope — the structural\n* guarantee the buffer's scope-key already provides for reads is carried forward\n* into durable memory.\n*\n* @param projectRoot - Absolute project root (brain.db resolution).\n* @param options - Reference time, per-cycle limit, threshold overrides.\n* @returns The aggregated consolidation result + per-entry audit.\n* @task T11382\n* @task T11383\n* @task T11384\n* @task T11385\n*/\nasync function consolidateAttention(projectRoot, options = {}) {\n\tconst now = options.now ?? Date.now();\n\tconst limit = options.limit ?? 200;\n\tconst promoteThreshold = options.promoteThreshold ?? .35;\n\tconst discardThreshold = options.discardThreshold ?? .1;\n\tconst result = {\n\t\treviewed: 0,\n\t\tpromoted: 0,\n\t\tkept: 0,\n\t\tdiscarded: 0,\n\t\treviews: []\n\t};\n\tconst accessor = await getBrainAccessor(projectRoot);\n\tconst live = await accessor.findAttention({\n\t\topenOnly: true,\n\t\tdecayThreshold: discardThreshold,\n\t\tnow,\n\t\tlimit\n\t});\n\tresult.reviewed = live.length;\n\tfor (const row of live) {\n\t\tconst signals = attentionToPromotionSignals(row);\n\t\tconst score = computePromotionScore(signals);\n\t\tconst verdict = decideAttentionVerdict(row, score, now, promoteThreshold, discardThreshold);\n\t\tlet promotedToId = null;\n\t\tif (verdict === \"promote\") {\n\t\t\tconst promotion = await promoteAttentionToMemory(row, projectRoot);\n\t\t\tif (promotion.success && promotion.memoryId) {\n\t\t\t\tpromotedToId = promotion.memoryId;\n\t\t\t\tawait accessor.setAttentionStatus(row.id, \"consolidated\");\n\t\t\t\tresult.promoted += 1;\n\t\t\t} else {\n\t\t\t\tlog.warn({\n\t\t\t\t\tattentionId: row.id,\n\t\t\t\t\terr: promotion.error\n\t\t\t\t}, \"Tier-2 promotion via conduit failed; leaving entry open\");\n\t\t\t\tresult.kept += 1;\n\t\t\t}\n\t\t} else if (verdict === \"discard\") result.discarded += 1;\n\t\telse result.kept += 1;\n\t\tconst rationale = computePromotionRationale(signals, promoteThreshold);\n\t\tlog.debug({\n\t\t\tattentionId: row.id,\n\t\t\tverdict,\n\t\t\tscore,\n\t\t\tscopeKind: row.scopeKind,\n\t\t\tscopeId: row.scopeId,\n\t\t\trationale: rationale.signals\n\t\t}, \"Tier-2 attention verdict\");\n\t\tresult.reviews.push({\n\t\t\tid: row.id,\n\t\t\tverdict,\n\t\t\tscore,\n\t\t\tscopeKind: row.scopeKind,\n\t\t\tscopeId: row.scopeId,\n\t\t\tpromotedToId\n\t\t});\n\t}\n\tconst swept = await accessor.expireAttention({\n\t\tnow,\n\t\tdecayThreshold: discardThreshold\n\t});\n\tresult.discarded = Math.max(result.discarded, swept);\n\tlog.info({\n\t\treviewed: result.reviewed,\n\t\tpromoted: result.promoted,\n\t\tkept: result.kept,\n\t\tdiscarded: result.discarded\n\t}, \"Tier-2 attention consolidation complete\");\n\treturn result;\n}\n//#endregion\nexport { consolidateAttention };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit-log-BXVi9iyE.js","sources":["../../../.svelte-kit/adapter-node/chunks/audit-log.js"],"sourcesContent":["import { appendFileSync, existsSync, mkdirSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n//#region src/lib/server/audit-log.ts\n/**\n* Append-only audit log for Studio admin actions.\n*\n* Writes newline-delimited JSON entries to\n* `<projectPath>/.cleo/audit/studio-actions.jsonl`. Every admin mutation\n* (scan, clean, delete, reindex, backup, doctor, gc, migrate) SHOULD\n* call {@link recordAudit} both pre- and post-action so a trail of\n* intent + outcome exists even when the underlying CLI fails.\n*\n* Reads are capped to the trailing N entries so the log can grow\n* indefinitely without blowing the Studio process.\n*\n* @task T990\n* @wave 1E\n*/\n/**\n* Resolve the audit log file path for the given project root.\n*\n* Defaults to `<projectPath>/.cleo/audit/studio-actions.jsonl`.\n*/\nfunction resolveAuditLogPath(projectPath) {\n\treturn join(projectPath, \".cleo\", \"audit\", \"studio-actions.jsonl\");\n}\n/**\n* Append a new audit entry. Never throws — logging failures must not\n* break an admin action. Swallows errors silently (they surface via\n* the action's own error envelope).\n*/\nfunction recordAudit(projectPath, entry) {\n\ttry {\n\t\tconst path = resolveAuditLogPath(projectPath);\n\t\tif (!existsSync(dirname(path))) mkdirSync(dirname(path), { recursive: true });\n\t\tconst full = {\n\t\t\ttimestamp: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\t...entry\n\t\t};\n\t\tappendFileSync(path, `${JSON.stringify(full)}\\n`, { encoding: \"utf8\" });\n\t} catch {}\n}\n/**\n* Read the last `limit` audit entries (newest first).\n*\n* Returns `[]` when the file does not exist. Malformed lines are\n* skipped silently.\n*/\nfunction readAuditLog(projectPath, limit = 50) {\n\ttry {\n\t\tconst path = resolveAuditLogPath(projectPath);\n\t\tif (!existsSync(path)) return [];\n\t\tconst lines = readFileSync(path, \"utf8\").split(\"\\n\").filter((line) => line.trim().length > 0);\n\t\tconst entries = [];\n\t\tfor (const line of lines.slice(-limit).reverse()) try {\n\t\t\tconst parsed = JSON.parse(line);\n\t\t\tif (typeof parsed.timestamp === \"string\" && typeof parsed.actor === \"string\" && typeof parsed.action === \"string\" && (parsed.result === \"success\" || parsed.result === \"failure\" || parsed.result === \"dry-run\" || parsed.result === \"initiated\")) entries.push({\n\t\t\t\ttimestamp: parsed.timestamp,\n\t\t\t\tactor: parsed.actor,\n\t\t\t\taction: parsed.action,\n\t\t\t\ttarget: parsed.target ?? null,\n\t\t\t\tresult: parsed.result,\n\t\t\t\tdetail: parsed.detail ?? null,\n\t\t\t\tmeta: parsed.meta\n\t\t\t});\n\t\t} catch {}\n\t\treturn entries;\n\t} catch {\n\t\treturn [];\n\t}\n}\n//#endregion\nexport { recordAudit as n, readAuditLog as t };\n"],"names":[],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,WAAW,EAAE;AAC1C,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE;AACzC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/E,EAAE,MAAM,IAAI,GAAG;AACf,GAAG,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,GAAG,GAAG;AACN,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACzE,CAAC,CAAC,CAAC,MAAM,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,EAAE;AAC/C,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC;AAC/C,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;AAClC,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/F,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI;AACxD,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAClC,GAAG,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,KAAK,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;AACnQ,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;AAC/B,IAAI,KAAK,EAAE,MAAM,CAAC,KAAK;AACvB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM;AACzB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;AACjC,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM;AACzB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;AACjC,IAAI,IAAI,EAAE,MAAM,CAAC;AACjB,IAAI,CAAC;AACL,EAAE,CAAC,CAAC,MAAM,CAAC;AACX,EAAE,OAAO,OAAO;AAChB,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;;;;"}
|