@cleocode/cleo 2026.9.7 → 2026.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/dist/cli/index.js +3873 -2234
  2. package/package.json +14 -13
  3. package/scripts/check-cleo-tarball-size.mjs +105 -0
  4. package/scripts/copy-studio-dist.mjs +33 -9
  5. package/studio-dist/client/_app/immutable/chunks/{wI_OOyoh.js → BB7zPpV2.js} +1 -1
  6. package/studio-dist/client/_app/immutable/chunks/{D8NsLz6i.js → BOnrCZaR.js} +1 -1
  7. package/studio-dist/client/_app/immutable/chunks/{eK8hf4s7.js → BSRBuVG3.js} +1 -1
  8. package/studio-dist/client/_app/immutable/chunks/C6jhAnil.js +1 -0
  9. package/studio-dist/client/_app/immutable/chunks/C87Q3uxm.js +1 -0
  10. package/studio-dist/client/_app/immutable/chunks/{DVHIxkgs.js → CLZBEpLY.js} +1 -1
  11. package/studio-dist/client/_app/immutable/chunks/{CqF5Lomf.js → CTLGzgdN.js} +1 -1
  12. package/studio-dist/client/_app/immutable/chunks/{o1PZ6Kzq.js → CY3heNub.js} +1 -1
  13. package/studio-dist/client/_app/immutable/chunks/{RptFUp2P.js → Cge6qiwc.js} +1 -1
  14. package/studio-dist/client/_app/immutable/chunks/{BRgWBQlV.js → CnwXLaZJ.js} +1 -1
  15. package/studio-dist/client/_app/immutable/chunks/{Bxz2A0ZC.js → DEH43YwF.js} +1 -1
  16. package/studio-dist/client/_app/immutable/chunks/DGftG5oL.js +3 -0
  17. package/studio-dist/client/_app/immutable/chunks/DX_JOBSO.js +1 -0
  18. package/studio-dist/client/_app/immutable/chunks/{CEqOYim7.js → DZrdToAH.js} +1 -1
  19. package/studio-dist/client/_app/immutable/chunks/EZwHPWle.js +2 -0
  20. package/studio-dist/client/_app/immutable/chunks/cWVw9W0E.js +3 -0
  21. package/studio-dist/client/_app/immutable/chunks/{B9psmq5-.js → rB_71s8h.js} +1 -1
  22. package/studio-dist/client/_app/immutable/chunks/{JPJd4fEI.js → rUtW7Hx6.js} +1 -1
  23. package/studio-dist/client/_app/immutable/entry/app.tvu3-wbp.js +2 -0
  24. package/studio-dist/client/_app/immutable/entry/start.BS-rpdjH.js +1 -0
  25. package/studio-dist/client/_app/immutable/nodes/{0.CZzEEyVh.js → 0.DMP7swbx.js} +1 -1
  26. package/studio-dist/client/_app/immutable/nodes/{1.Bj3Opbua.js → 1.CYZMFpIp.js} +1 -1
  27. package/studio-dist/client/_app/immutable/nodes/{10.xe_Mc2Ko.js → 10.3rxHNnSx.js} +1 -1
  28. package/studio-dist/client/_app/immutable/nodes/{11.DuKPA7JD.js → 11.B6jWv3Kz.js} +1 -1
  29. package/studio-dist/client/_app/immutable/nodes/{12.BoZ_QrUS.js → 12.BrDHeTEq.js} +1 -1
  30. package/studio-dist/client/_app/immutable/nodes/{13.DFJiUiv8.js → 13.CE5bd4JV.js} +1 -1
  31. package/studio-dist/client/_app/immutable/nodes/{14.eaAlFU4w.js → 14.DgXD2LRx.js} +1 -1
  32. package/studio-dist/client/_app/immutable/nodes/{15.BfXgiwMC.js → 15.Cz1KI9Fv.js} +1 -1
  33. package/studio-dist/client/_app/immutable/nodes/{16.mEwy9cqh.js → 16.K9wYQPhb.js} +1 -1
  34. package/studio-dist/client/_app/immutable/nodes/{17.DP2QtQGn.js → 17.CtUmdfMg.js} +1 -1
  35. package/studio-dist/client/_app/immutable/nodes/{18.Bu0054sX.js → 18.mtosd0sL.js} +1 -1
  36. package/studio-dist/client/_app/immutable/nodes/{19.UWt6QbCm.js → 19.su55K8y_.js} +1 -1
  37. package/studio-dist/client/_app/immutable/nodes/{2.y5jKpHiR.js → 2.mqgFVWFQ.js} +1 -1
  38. package/studio-dist/client/_app/immutable/nodes/{20.B1AIHdkP.js → 20.NJuHLxuS.js} +1 -1
  39. package/studio-dist/client/_app/immutable/nodes/{21.CpAN71H8.js → 21.BhwhdQCq.js} +1 -1
  40. package/studio-dist/client/_app/immutable/nodes/{22.CrYKrN4c.js → 22.BmJEWwER.js} +1 -1
  41. package/studio-dist/client/_app/immutable/nodes/{23.pGRaHQjq.js → 23.CAVIJEH-.js} +1 -1
  42. package/studio-dist/client/_app/immutable/nodes/{24.BUoUu37z.js → 24.CMuXs5Sy.js} +1 -1
  43. package/studio-dist/client/_app/immutable/nodes/25.DhMBJYAo.js +39 -0
  44. package/studio-dist/client/_app/immutable/nodes/26.CJ4FA5FS.js +1 -0
  45. package/studio-dist/client/_app/immutable/nodes/{28.DcmYM7lb.js → 28.D64RBcfs.js} +1 -1
  46. package/studio-dist/client/_app/immutable/nodes/{29.lbHbMqNO.js → 29.yfuBeH1x.js} +1 -1
  47. package/studio-dist/client/_app/immutable/nodes/{3.Dyir4xXj.js → 3.y115j1d5.js} +1 -1
  48. package/studio-dist/client/_app/immutable/nodes/{30.DXj0Wm2A.js → 30.1WUv5bh9.js} +1 -1
  49. package/studio-dist/client/_app/immutable/nodes/4.D6vXYBoQ.js +1 -0
  50. package/studio-dist/client/_app/immutable/nodes/{5.VWSdP7oc.js → 5.hjw2O-4e.js} +1 -1
  51. package/studio-dist/client/_app/immutable/nodes/{6.Dl-XLwOj.js → 6.CAoDfDt6.js} +1 -1
  52. package/studio-dist/client/_app/immutable/nodes/{7.CFuC5L-y.js → 7.CLgPSQ8Z.js} +1 -1
  53. package/studio-dist/client/_app/immutable/nodes/{8.BCJ0DhOb.js → 8.zuaO1Hik.js} +1 -1
  54. package/studio-dist/client/_app/immutable/nodes/{9.Bq4SUzL9.js → 9.Cdsd85m2.js} +1 -1
  55. package/studio-dist/client/_app/version.json +1 -1
  56. package/studio-dist/server/chunks/0-BQvtFOrC.js +41 -0
  57. package/studio-dist/server/chunks/1-Bx2_yoiK.js +9 -0
  58. package/studio-dist/server/chunks/{10-DvOD4ksa.js → 10-CYLc3d5x.js} +3 -3
  59. package/studio-dist/server/chunks/{11-DMnBZ02H.js → 11-DcIYR5vm.js} +3 -3
  60. package/studio-dist/server/chunks/{12-CCyRyRWX.js → 12-WE1u104t.js} +3 -3
  61. package/studio-dist/server/chunks/{13-Dx1c3a_X.js → 13-joBDoxhK.js} +3 -3
  62. package/studio-dist/server/chunks/{14-Bo-dTCaZ.js → 14-Doj5F4uJ.js} +3 -3
  63. package/studio-dist/server/chunks/{15-BvUNl3KL.js → 15-nQTeHGD1.js} +3 -3
  64. package/studio-dist/server/chunks/{16-De6EzPSa.js → 16-CcTN0e8k.js} +5 -4
  65. package/studio-dist/server/chunks/{17-CZNsiZhi.js → 17-DWiFnzES.js} +10 -93
  66. package/studio-dist/server/chunks/{18-CbxxjZox.js → 18-Dcc9GnPo.js} +5 -4
  67. package/studio-dist/server/chunks/{19-DqHyladS.js → 19-BAQHPrMB.js} +3 -3
  68. package/studio-dist/server/chunks/{2-COvmA-ZA.js → 2-DXSVVaej.js} +10 -93
  69. package/studio-dist/server/chunks/20-DfQlGHPW.js +57 -0
  70. package/studio-dist/server/chunks/{21-DXK9ptAC.js → 21-qhGjkW41.js} +4 -31
  71. package/studio-dist/server/chunks/{22-DD5CLWJC.js → 22-Byy16hFA.js} +3 -3
  72. package/studio-dist/server/chunks/23-CZpFrGp4.js +97 -0
  73. package/studio-dist/server/chunks/24-EEysaT9T.js +67 -0
  74. package/studio-dist/server/chunks/{25-CAg6Xcmn.js → 25-CgiYn70L.js} +15 -96
  75. package/studio-dist/server/chunks/{26-_nfVTvNi.js → 26-Cfd6BaUb.js} +12 -93
  76. package/studio-dist/server/chunks/{27-C9edghG4.js → 27-Cqzlh9gZ.js} +3 -2
  77. package/studio-dist/server/chunks/{28-VemTJGyc.js → 28-DeYe2rpm.js} +8 -62
  78. package/studio-dist/server/chunks/{29-CXP-m29t.js → 29-6pjLM0Z1.js} +10 -93
  79. package/studio-dist/server/chunks/{3-B8KhfvHp.js → 3-E_fWDAkq.js} +9 -25
  80. package/studio-dist/server/chunks/{30-QiM1S4cJ.js → 30-Dw317sSW.js} +10 -93
  81. package/studio-dist/server/chunks/{31-BwdY9NnB.js → 31-Q4kHbp8j.js} +3 -2
  82. package/studio-dist/server/chunks/{4-CSaG4HjO.js → 4-C9BMSh4K.js} +4 -3
  83. package/studio-dist/server/chunks/{5-i5ry4y3C.js → 5-C0CF4WKG.js} +3 -3
  84. package/studio-dist/server/chunks/{6-DR1GWBMT.js → 6-BWyOJust.js} +3 -3
  85. package/studio-dist/server/chunks/{7-DSNwn3aQ.js → 7-CK4MK5gy.js} +3 -3
  86. package/studio-dist/server/chunks/{8-Bj0bx07K.js → 8-CiX7Xk9k.js} +3 -3
  87. package/studio-dist/server/chunks/{9-B3Tz0mZq.js → 9-Be5118w4.js} +3 -3
  88. package/studio-dist/server/chunks/{HeroHeader-v4Q9vaGr.js → HeroHeader-BrGN5WPw.js} +2 -2
  89. package/studio-dist/server/chunks/{Sparkline-BJ-GuhRd.js → Sparkline-DU_NVxz9.js} +2 -2
  90. package/studio-dist/server/chunks/{StatBlock-DHJMmOCx.js → StatBlock-jNsxycS1.js} +2 -2
  91. package/studio-dist/server/chunks/{Tabs-DzG6Bn9a.js → Tabs-DQKDflnT.js} +2 -2
  92. package/studio-dist/server/chunks/_dispatch-DTWViLGL.js +145 -0
  93. package/studio-dist/server/chunks/{_layout.svelte-BEIGQcIv.js → _layout.svelte-CL6GfET2.js} +7 -9
  94. package/studio-dist/server/chunks/{_page.svelte-al08ovKm.js → _page.svelte-6iMiGR11.js} +5 -5
  95. package/studio-dist/server/chunks/{_page.svelte-Byz2djto.js → _page.svelte-B-YXGvAW.js} +5 -5
  96. package/studio-dist/server/chunks/{_page.svelte-tYN7_LXI.js → _page.svelte-B5E6RqVb.js} +9 -11
  97. package/studio-dist/server/chunks/{_page.svelte-UYiF7YBK.js → _page.svelte-BCRyjlk2.js} +5 -5
  98. package/studio-dist/server/chunks/{_page.svelte-CCoTp89s.js → _page.svelte-BoYafqft.js} +3 -3
  99. package/studio-dist/server/chunks/{_page.svelte-nzffIbBP.js → _page.svelte-C7Wm6_HB.js} +3 -3
  100. package/studio-dist/server/chunks/{_page.svelte-C_VSL8NW.js → _page.svelte-Cgqt7ucn.js} +13 -71
  101. package/studio-dist/server/chunks/{_page.svelte-CophUar3.js → _page.svelte-CqI6hqMm.js} +5 -5
  102. package/studio-dist/server/chunks/{_page.svelte-BgwL2Gyu.js → _page.svelte-CvQ2rZZ1.js} +11 -13
  103. package/studio-dist/server/chunks/{_page.svelte-l4Z_xjl9.js → _page.svelte-CvTyJEyS.js} +9 -11
  104. package/studio-dist/server/chunks/{_page.svelte-DOWw416I.js → _page.svelte-CvzAttO9.js} +11 -13
  105. package/studio-dist/server/chunks/{_page.svelte-DYNorA0S.js → _page.svelte-Cx9Ptecp.js} +10 -67
  106. package/studio-dist/server/chunks/{_page.svelte-Wfx7ww_h.js → _page.svelte-Cx9dPjsT.js} +11 -13
  107. package/studio-dist/server/chunks/{_page.svelte-2cgtvHwW.js → _page.svelte-DGN5j-At.js} +13 -71
  108. package/studio-dist/server/chunks/{_page.svelte-BVVTrzTL.js → _page.svelte-DaheDIRs.js} +5 -5
  109. package/studio-dist/server/chunks/{_page.svelte-M5D2QnMS.js → _page.svelte-Dm8y5a8S.js} +10 -67
  110. package/studio-dist/server/chunks/{_page.svelte-B_pq-Z98.js → _page.svelte-DqXxyNsF.js} +7 -7
  111. package/studio-dist/server/chunks/{_page.svelte-C3aIui4o.js → _page.svelte-DqsbnAhk.js} +4 -4
  112. package/studio-dist/server/chunks/{_page.svelte-ksTJUXce.js → _page.svelte-Dt0_c1T-.js} +3 -3
  113. package/studio-dist/server/chunks/{_page.svelte-bGhsrIjS.js → _page.svelte-Dv6iwhu7.js} +3 -3
  114. package/studio-dist/server/chunks/{_page.svelte-BXyoMME1.js → _page.svelte-GPiHej3P.js} +5 -5
  115. package/studio-dist/server/chunks/{_page.svelte-CYDjW1R0.js → _page.svelte-LuRm8XxE.js} +5 -5
  116. package/studio-dist/server/chunks/{_page.svelte-Clbkk1gm.js → _page.svelte-Z7nL9SC-.js} +8 -9
  117. package/studio-dist/server/chunks/{_page.svelte-DUWbZjC7.js → _page.svelte-_kntHS6v.js} +4 -4
  118. package/studio-dist/server/chunks/{_page.svelte-BIlhmugm.js → _page.svelte-eiomv6Pa.js} +11 -13
  119. package/studio-dist/server/chunks/{_page.svelte-9OQphlnm.js → _page.svelte-jXJbd8Mx.js} +14 -69
  120. package/studio-dist/server/chunks/{_page.svelte-CHzXuw2Q.js → _page.svelte-me5SUosG.js} +3 -3
  121. package/studio-dist/server/chunks/{_server.ts-DSzRdt1U.js → _server.ts--2m_U4SL.js} +11 -94
  122. package/studio-dist/server/chunks/{_server.ts-ujoDR2_g.js → _server.ts--sGLmBsz.js} +10 -92
  123. package/studio-dist/server/chunks/{_server.ts-k2fApwOp.js → _server.ts-0ukyuE0I.js} +5 -60
  124. package/studio-dist/server/chunks/_server.ts-1eW2mTeh.js +40 -0
  125. package/studio-dist/server/chunks/{_server.ts-Bfr4u3EP.js → _server.ts-3LzqLzt0.js} +10 -92
  126. package/studio-dist/server/chunks/_server.ts-40h9Y46Y.js +122 -0
  127. package/studio-dist/server/chunks/_server.ts-5euivmMj.js +38 -0
  128. package/studio-dist/server/chunks/{_server.ts-CShsBkeE.js → _server.ts-B0uoay97.js} +7 -23
  129. package/studio-dist/server/chunks/{_server.ts-hL92cV7Z.js → _server.ts-B5vYKkI6.js} +9 -63
  130. package/studio-dist/server/chunks/{_server.ts-_RJXtmfi.js → _server.ts-B8dTbPHd.js} +8 -23
  131. package/studio-dist/server/chunks/{_server.ts-C3Jo-ju8.js → _server.ts-BA8Xdegq.js} +10 -92
  132. package/studio-dist/server/chunks/_server.ts-BBClE0n9.js +54 -0
  133. package/studio-dist/server/chunks/{_server.ts-ZS1_yMwR.js → _server.ts-BDwMoyZ_.js} +6 -32
  134. package/studio-dist/server/chunks/{_server.ts-sv4pA808.js → _server.ts-BE-Uhx4N.js} +5 -46
  135. package/studio-dist/server/chunks/{_server.ts-DV6pzF-M.js → _server.ts-BSHADOUJ.js} +4 -3
  136. package/studio-dist/server/chunks/_server.ts-BcsqAqXt.js +67 -0
  137. package/studio-dist/server/chunks/_server.ts-Bl9tMqwZ.js +159 -0
  138. package/studio-dist/server/chunks/_server.ts-BlzDnRI0.js +51 -0
  139. package/studio-dist/server/chunks/{_server.ts-DnE0f-iC.js → _server.ts-BtuemCsf.js} +4 -3
  140. package/studio-dist/server/chunks/{_server.ts-BPcErnS0.js → _server.ts-C2nYqbd9.js} +10 -92
  141. package/studio-dist/server/chunks/{_server.ts-4p6cp9ke.js → _server.ts-C6IDM_3I.js} +10 -92
  142. package/studio-dist/server/chunks/_server.ts-C8Z32vuL.js +45 -0
  143. package/studio-dist/server/chunks/_server.ts-CBXyadsy.js +26 -0
  144. package/studio-dist/server/chunks/{_server.ts-Do9RIPRo.js → _server.ts-CE6h2ATE.js} +5 -32
  145. package/studio-dist/server/chunks/_server.ts-CH06JVqZ.js +65 -0
  146. package/studio-dist/server/chunks/_server.ts-CNqcws-M.js +29 -0
  147. package/studio-dist/server/chunks/{_server.ts-CJA1djzJ.js → _server.ts-CPf8necd.js} +8 -92
  148. package/studio-dist/server/chunks/{_server.ts-uUx7uT2Y.js → _server.ts-CYv5YuHd.js} +6 -43
  149. package/studio-dist/server/chunks/{_server.ts-B2E7fxo9.js → _server.ts-CZ5GZRWX.js} +6 -91
  150. package/studio-dist/server/chunks/{_server.ts-DSAv66wD.js → _server.ts-CbThsyhY.js} +4 -3
  151. package/studio-dist/server/chunks/{_server.ts-DgbY5EB3.js → _server.ts-CeQolQOK.js} +10 -92
  152. package/studio-dist/server/chunks/_server.ts-ChoGyX5C.js +61 -0
  153. package/studio-dist/server/chunks/_server.ts-CjJYkLJH.js +61 -0
  154. package/studio-dist/server/chunks/{_server.ts-lPlBUIJX.js → _server.ts-CtjArzxf.js} +5 -60
  155. package/studio-dist/server/chunks/{_server.ts-Cq60m8Pw.js → _server.ts-D3QWZwt_.js} +4 -3
  156. package/studio-dist/server/chunks/{_server.ts-CkoJ2HCW.js → _server.ts-D6wP5bCh.js} +10 -92
  157. package/studio-dist/server/chunks/{_server.ts-DwTRjS4y.js → _server.ts-D7JwQTun.js} +10 -93
  158. package/studio-dist/server/chunks/_server.ts-DKFJdXPK.js +97 -0
  159. package/studio-dist/server/chunks/_server.ts-DNAPGKEF.js +55 -0
  160. package/studio-dist/server/chunks/_server.ts-DQiTiY3E.js +78 -0
  161. package/studio-dist/server/chunks/{_server.ts-BT0Uq2yq.js → _server.ts-DUyeSXbV.js} +10 -92
  162. package/studio-dist/server/chunks/{_server.ts-DRVz9D-J.js → _server.ts-DY7BwZCv.js} +9 -24
  163. package/studio-dist/server/chunks/{_server.ts-Cz0zgaUV.js → _server.ts-D_E276ms.js} +3 -2
  164. package/studio-dist/server/chunks/{_server.ts-B5g3eScF.js → _server.ts-DgtmTAp5.js} +5 -60
  165. package/studio-dist/server/chunks/{_server.ts-CboRJY0Q.js → _server.ts-DhTKaw7h.js} +10 -63
  166. package/studio-dist/server/chunks/_server.ts-DqKBSCPT.js +31 -0
  167. package/studio-dist/server/chunks/{_server.ts-CpmMp5D8.js → _server.ts-DyXBNnRD.js} +4 -3
  168. package/studio-dist/server/chunks/_server.ts-DzjUpduu.js +25 -0
  169. package/studio-dist/server/chunks/{_server.ts-CGiAXy5i.js → _server.ts-Dznqw6Dg.js} +8 -23
  170. package/studio-dist/server/chunks/{_server.ts-tKMjUFUP.js → _server.ts-EVwS7UXb.js} +4 -3
  171. package/studio-dist/server/chunks/_server.ts-J17j25VG.js +62 -0
  172. package/studio-dist/server/chunks/{_server.ts-BdN4AJ6o.js → _server.ts-VQchZxXq.js} +10 -91
  173. package/studio-dist/server/chunks/{_server.ts-C4BcDGqS.js → _server.ts-XLV5SvjH.js} +7 -63
  174. package/studio-dist/server/chunks/_server.ts-jZgqFIJz.js +45 -0
  175. package/studio-dist/server/chunks/{_server.ts-Bw7A4zgb.js → _server.ts-lyiGGv7w.js} +5 -3
  176. package/studio-dist/server/chunks/{brain-CXR7ZT7S.js → brain-xt_NeshR.js} +2 -2
  177. package/studio-dist/server/chunks/cleo-home-_XIqkZaL.js +109 -0
  178. package/studio-dist/server/chunks/{cli-action-DQcaqcfn.js → cli-action-VJPEn1pY.js} +2 -2
  179. package/studio-dist/server/chunks/{client-CgX38JBu.js → client-D71MZ7Vi.js} +5 -6
  180. package/studio-dist/server/chunks/cluster-label-layer-CysRMvhi.js +6721 -0
  181. package/studio-dist/server/chunks/connections-CWLPjwBP.js +15 -0
  182. package/studio-dist/server/chunks/{connections2-mi7mZqJM.js → connections2-DHVs5ytW.js} +32 -19
  183. package/studio-dist/server/chunks/{dev-BNpEUZI3.js → dev-Br5zieNA.js} +2 -2
  184. package/studio-dist/server/chunks/dist-BzgWhfUR.js +18748 -0
  185. package/studio-dist/server/chunks/{error.svelte-CplNulnS.js → error.svelte-BIToUowC.js} +6 -8
  186. package/studio-dist/server/chunks/{explorer-loader-BN_mkt3_.js → explorer-loader-B_uCSs9_.js} +2 -2
  187. package/studio-dist/server/chunks/exports-Dg-gdPPq.js +124 -0
  188. package/studio-dist/server/chunks/{hooks.server-DBsyphiX.js → hooks.server-CWBRp8NI.js} +10 -93
  189. package/studio-dist/server/chunks/{http-CRTZe306.js → http-DPU3HHl2.js} +3 -4
  190. package/studio-dist/server/chunks/{index-server-DocJvixA.js → index-server-BgfA6C0S.js} +17 -4
  191. package/studio-dist/server/chunks/{internal-D6eWgsHJ.js → internal-DPnIJYMs.js} +56 -92
  192. package/studio-dist/server/chunks/{memory2-Cgc_4D5q.js → memory-BZHnDZzu.js} +4 -4
  193. package/studio-dist/server/chunks/{nexus-adapter-9EL_VlGI.js → nexus-adapter-D1ryYG1Z.js} +5 -5
  194. package/studio-dist/server/chunks/{no-face-up-DcejJLy-.js → no-face-up-B_3h6Hgs.js} +2 -2
  195. package/studio-dist/server/chunks/project-context-BAXQmgch.js +188 -0
  196. package/studio-dist/server/chunks/{src-BUqGet2c.js → src-D2rW9bIF.js} +422 -5
  197. package/studio-dist/server/chunks/{stores-5DmdjPCH.js → stores-BZdYTyl7.js} +3 -3
  198. package/studio-dist/server/chunks/{tasks2-Bf9VHrv-.js → tasks-sWuEmiGW.js} +2349 -9
  199. package/studio-dist/server/chunks/{ui-DR8zOSpC.js → ui-CkQ-pCs3.js} +2 -2
  200. package/studio-dist/server/chunks/utils-g564cUMV.js +151 -0
  201. package/studio-dist/server/index.js +5 -16
  202. package/studio-dist/server/manifest.js +88 -88
  203. package/dist/cli/index.js.map +0 -6
  204. package/studio-dist/client/_app/immutable/assets/parse-worker.CSEr67Qi.js +0 -1127
  205. package/studio-dist/client/_app/immutable/chunks/2mEksghu2.js +0 -1
  206. package/studio-dist/client/_app/immutable/chunks/3KebaI-z.js +0 -53
  207. package/studio-dist/client/_app/immutable/chunks/3y2yNYEk2.js +0 -3
  208. package/studio-dist/client/_app/immutable/chunks/7UXYlaI1.js +0 -1
  209. package/studio-dist/client/_app/immutable/chunks/83VLmCvk.js +0 -4
  210. package/studio-dist/client/_app/immutable/chunks/84Rhmi6r.js +0 -2
  211. package/studio-dist/client/_app/immutable/chunks/9CV9TXTg2.js +0 -92
  212. package/studio-dist/client/_app/immutable/chunks/9LFtcz24.js +0 -1
  213. package/studio-dist/client/_app/immutable/chunks/9bLMgKwu2.js +0 -1
  214. package/studio-dist/client/_app/immutable/chunks/9kKqohVR2.js +0 -37
  215. package/studio-dist/client/_app/immutable/chunks/B-Ye28EY.js +0 -7
  216. package/studio-dist/client/_app/immutable/chunks/B-jnUl7o.js +0 -1
  217. package/studio-dist/client/_app/immutable/chunks/B0ORuy8x2.js +0 -1
  218. package/studio-dist/client/_app/immutable/chunks/B0xCM1wN2.js +0 -1
  219. package/studio-dist/client/_app/immutable/chunks/B0zCN4sX.js +0 -1
  220. package/studio-dist/client/_app/immutable/chunks/B1wt-iGW.js +0 -7
  221. package/studio-dist/client/_app/immutable/chunks/B2F3KUIU.js +0 -1
  222. package/studio-dist/client/_app/immutable/chunks/B2_6RrlL2.js +0 -1
  223. package/studio-dist/client/_app/immutable/chunks/B2qKEYxA2.js +0 -1
  224. package/studio-dist/client/_app/immutable/chunks/B2u2rNyI2.js +0 -8
  225. package/studio-dist/client/_app/immutable/chunks/B3_X3Lhd2.js +0 -1
  226. package/studio-dist/client/_app/immutable/chunks/B3sNtbqf.js +0 -1
  227. package/studio-dist/client/_app/immutable/chunks/B4NQP1Ax2.js +0 -6
  228. package/studio-dist/client/_app/immutable/chunks/BAtZg5v5.js +0 -2
  229. package/studio-dist/client/_app/immutable/chunks/BB6WKLm82.js +0 -1
  230. package/studio-dist/client/_app/immutable/chunks/BBX8UDtn.js +0 -1
  231. package/studio-dist/client/_app/immutable/chunks/BBs1U1iU.js +0 -1
  232. package/studio-dist/client/_app/immutable/chunks/BEli_4Jp2.js +0 -1
  233. package/studio-dist/client/_app/immutable/chunks/BEt2wIUt.js +0 -1
  234. package/studio-dist/client/_app/immutable/chunks/BEyM8qSW2.js +0 -1
  235. package/studio-dist/client/_app/immutable/chunks/BFZA3Dsk2.js +0 -1
  236. package/studio-dist/client/_app/immutable/chunks/BGdPweG1.js +0 -2
  237. package/studio-dist/client/_app/immutable/chunks/BGiusSqE.js +0 -1
  238. package/studio-dist/client/_app/immutable/chunks/BGmpyfzD.js +0 -1
  239. package/studio-dist/client/_app/immutable/chunks/BH5rhSIR.js +0 -1
  240. package/studio-dist/client/_app/immutable/chunks/BHciFt922.js +0 -2
  241. package/studio-dist/client/_app/immutable/chunks/BHnFwTQY.js +0 -1
  242. package/studio-dist/client/_app/immutable/chunks/BIvye3XP2.js +0 -59
  243. package/studio-dist/client/_app/immutable/chunks/BJ8mcpQA2.js +0 -1
  244. package/studio-dist/client/_app/immutable/chunks/BK17qSHw.js +0 -2
  245. package/studio-dist/client/_app/immutable/chunks/BLkgUtyb.js +0 -1
  246. package/studio-dist/client/_app/immutable/chunks/BMUko3r62.js +0 -5
  247. package/studio-dist/client/_app/immutable/chunks/BMwzdEaa.js +0 -2
  248. package/studio-dist/client/_app/immutable/chunks/BQZx6brg.js +0 -2
  249. package/studio-dist/client/_app/immutable/chunks/BUPJTTTd.js +0 -2
  250. package/studio-dist/client/_app/immutable/chunks/BVNGAeZe2.js +0 -146
  251. package/studio-dist/client/_app/immutable/chunks/BWfLryGm.js +0 -1
  252. package/studio-dist/client/_app/immutable/chunks/BXIfeogw.js +0 -1
  253. package/studio-dist/client/_app/immutable/chunks/BXTfFyUU.js +0 -1
  254. package/studio-dist/client/_app/immutable/chunks/BYJC6_MM.js +0 -2
  255. package/studio-dist/client/_app/immutable/chunks/BZV1ZJzH.js +0 -2
  256. package/studio-dist/client/_app/immutable/chunks/BZu9rehd.js +0 -1
  257. package/studio-dist/client/_app/immutable/chunks/Bbzm48C52.js +0 -1
  258. package/studio-dist/client/_app/immutable/chunks/BfGnlwjH.js +0 -1
  259. package/studio-dist/client/_app/immutable/chunks/Bfjb9LPp.js +0 -2
  260. package/studio-dist/client/_app/immutable/chunks/BieFfu-R.js +0 -1
  261. package/studio-dist/client/_app/immutable/chunks/Bmv63uXe2.js +0 -1
  262. package/studio-dist/client/_app/immutable/chunks/BtBW1A0u.js +0 -1
  263. package/studio-dist/client/_app/immutable/chunks/BxISGQCl2.js +0 -1
  264. package/studio-dist/client/_app/immutable/chunks/ByNR_KvT.js +0 -2
  265. package/studio-dist/client/_app/immutable/chunks/BzjhD6Hr2.js +0 -2
  266. package/studio-dist/client/_app/immutable/chunks/BzpWnq0c2.js +0 -1
  267. package/studio-dist/client/_app/immutable/chunks/C-yJVcyI2.js +0 -1
  268. package/studio-dist/client/_app/immutable/chunks/C0cQ-8kS2.js +0 -1
  269. package/studio-dist/client/_app/immutable/chunks/C1vWmhYe.js +0 -48
  270. package/studio-dist/client/_app/immutable/chunks/C1w6bBje.js +0 -1
  271. package/studio-dist/client/_app/immutable/chunks/C243sn7r.js +0 -4
  272. package/studio-dist/client/_app/immutable/chunks/C2oZaDvt.js +0 -67
  273. package/studio-dist/client/_app/immutable/chunks/C3OziSQx.js +0 -1
  274. package/studio-dist/client/_app/immutable/chunks/C3hFPbMK.js +0 -2
  275. package/studio-dist/client/_app/immutable/chunks/C4P9oFvU2.js +0 -6
  276. package/studio-dist/client/_app/immutable/chunks/C5Nlanei.js +0 -8
  277. package/studio-dist/client/_app/immutable/chunks/C6KBAXPl.js +0 -15
  278. package/studio-dist/client/_app/immutable/chunks/C8MZnWta.js +0 -1
  279. package/studio-dist/client/_app/immutable/chunks/CAoan3K12.js +0 -1
  280. package/studio-dist/client/_app/immutable/chunks/CBpcINYH.js +0 -29
  281. package/studio-dist/client/_app/immutable/chunks/CE7phgWq.js +0 -1
  282. package/studio-dist/client/_app/immutable/chunks/CFb4Co_K.js +0 -2
  283. package/studio-dist/client/_app/immutable/chunks/CGWoRK3t2.js +0 -1
  284. package/studio-dist/client/_app/immutable/chunks/CH3t4xo1.js +0 -1
  285. package/studio-dist/client/_app/immutable/chunks/CHJgk6g-.js +0 -1
  286. package/studio-dist/client/_app/immutable/chunks/CHgPjuDQ.js +0 -17
  287. package/studio-dist/client/_app/immutable/chunks/CHkCZrnr.js +0 -1
  288. package/studio-dist/client/_app/immutable/chunks/CI_91WUN.js +0 -4
  289. package/studio-dist/client/_app/immutable/chunks/CJ7-hP0H.js +0 -1
  290. package/studio-dist/client/_app/immutable/chunks/CKIrNnkY2.js +0 -1
  291. package/studio-dist/client/_app/immutable/chunks/CKoQ7Ko5.js +0 -1
  292. package/studio-dist/client/_app/immutable/chunks/CM8O4zqs.js +0 -56
  293. package/studio-dist/client/_app/immutable/chunks/CMz3AVRO.js +0 -1
  294. package/studio-dist/client/_app/immutable/chunks/CNToUR3P.js +0 -13
  295. package/studio-dist/client/_app/immutable/chunks/CNuQG1yl2.js +0 -1
  296. package/studio-dist/client/_app/immutable/chunks/CQLIZtxj.js +0 -2
  297. package/studio-dist/client/_app/immutable/chunks/CQYVNgM0.js +0 -20
  298. package/studio-dist/client/_app/immutable/chunks/CQeVOmFO2.js +0 -1
  299. package/studio-dist/client/_app/immutable/chunks/CSPHHq09.js +0 -1
  300. package/studio-dist/client/_app/immutable/chunks/CTJEdbIn.js +0 -1
  301. package/studio-dist/client/_app/immutable/chunks/CTTT3wYw.js +0 -35
  302. package/studio-dist/client/_app/immutable/chunks/CV4ck7fz.js +0 -2
  303. package/studio-dist/client/_app/immutable/chunks/CXQrVnHf.js +0 -11
  304. package/studio-dist/client/_app/immutable/chunks/CXTCtOUQ.js +0 -1
  305. package/studio-dist/client/_app/immutable/chunks/C_CsU7Qq.js +0 -1
  306. package/studio-dist/client/_app/immutable/chunks/C_IZx3682.js +0 -2
  307. package/studio-dist/client/_app/immutable/chunks/CbTnu2Po2.js +0 -1
  308. package/studio-dist/client/_app/immutable/chunks/Cba8RZ1a2.js +0 -8
  309. package/studio-dist/client/_app/immutable/chunks/Cc8xxDr5.js +0 -1
  310. package/studio-dist/client/_app/immutable/chunks/CdPxoldu.js +0 -1
  311. package/studio-dist/client/_app/immutable/chunks/CdqDTozW.js +0 -1
  312. package/studio-dist/client/_app/immutable/chunks/CdsmcCfC.js +0 -25
  313. package/studio-dist/client/_app/immutable/chunks/CeYPAoY9.js +0 -1
  314. package/studio-dist/client/_app/immutable/chunks/Cf4kGS9y.js +0 -1
  315. package/studio-dist/client/_app/immutable/chunks/CfWEqXtJ2.js +0 -1
  316. package/studio-dist/client/_app/immutable/chunks/Cg7Wj2b9.js +0 -2
  317. package/studio-dist/client/_app/immutable/chunks/CgTpKZfi2.js +0 -1
  318. package/studio-dist/client/_app/immutable/chunks/Chpy9ca7.js +0 -2
  319. package/studio-dist/client/_app/immutable/chunks/CiLKuLrQ.js +0 -4
  320. package/studio-dist/client/_app/immutable/chunks/CjNDJjwu.js +0 -1
  321. package/studio-dist/client/_app/immutable/chunks/Cjde0ZKr2.js +0 -1
  322. package/studio-dist/client/_app/immutable/chunks/Cjgnade02.js +0 -3
  323. package/studio-dist/client/_app/immutable/chunks/Ckp90om52.js +0 -2
  324. package/studio-dist/client/_app/immutable/chunks/ClAPVhCD.js +0 -1
  325. package/studio-dist/client/_app/immutable/chunks/ClT89UdO.js +0 -11
  326. package/studio-dist/client/_app/immutable/chunks/CnJf5tML.js +0 -1
  327. package/studio-dist/client/_app/immutable/chunks/CpF4Rrcc2.js +0 -1
  328. package/studio-dist/client/_app/immutable/chunks/CqCka5yX2.js +0 -1
  329. package/studio-dist/client/_app/immutable/chunks/CqtqZrOl.js +0 -1
  330. package/studio-dist/client/_app/immutable/chunks/CrJdywQt.js +0 -1
  331. package/studio-dist/client/_app/immutable/chunks/Cs0zC2l2.js +0 -1
  332. package/studio-dist/client/_app/immutable/chunks/CsMn5fBs.js +0 -141
  333. package/studio-dist/client/_app/immutable/chunks/CsvKLHQQ2.js +0 -2
  334. package/studio-dist/client/_app/immutable/chunks/Ctaresvj.js +0 -1
  335. package/studio-dist/client/_app/immutable/chunks/Ctetf8vc2.js +0 -2
  336. package/studio-dist/client/_app/immutable/chunks/Cv7yW6MG.js +0 -1
  337. package/studio-dist/client/_app/immutable/chunks/CxRIz-Zd.js +0 -1
  338. package/studio-dist/client/_app/immutable/chunks/CxbvtjIH.js +0 -3
  339. package/studio-dist/client/_app/immutable/chunks/CxfeoXkZ.js +0 -2
  340. package/studio-dist/client/_app/immutable/chunks/CySLscL2.js +0 -2
  341. package/studio-dist/client/_app/immutable/chunks/D0PKQAbM.js +0 -87
  342. package/studio-dist/client/_app/immutable/chunks/D0WQsLTu.js +0 -1
  343. package/studio-dist/client/_app/immutable/chunks/D1LBVx6r2.js +0 -1
  344. package/studio-dist/client/_app/immutable/chunks/D1NlFXu9.js +0 -1
  345. package/studio-dist/client/_app/immutable/chunks/D1QfC4hu2.js +0 -1
  346. package/studio-dist/client/_app/immutable/chunks/D1yrHAn72.js +0 -1
  347. package/studio-dist/client/_app/immutable/chunks/D2pa4reh.js +0 -7
  348. package/studio-dist/client/_app/immutable/chunks/D3QsWcIw2.js +0 -2
  349. package/studio-dist/client/_app/immutable/chunks/D4OkQuPl2.js +0 -1
  350. package/studio-dist/client/_app/immutable/chunks/D6UDnATk2.js +0 -1
  351. package/studio-dist/client/_app/immutable/chunks/D7w7HllH.js +0 -38
  352. package/studio-dist/client/_app/immutable/chunks/D93KpglN.js +0 -1
  353. package/studio-dist/client/_app/immutable/chunks/D99fQj2G2.js +0 -1
  354. package/studio-dist/client/_app/immutable/chunks/DB5ifLM-.js +0 -3
  355. package/studio-dist/client/_app/immutable/chunks/DBhP8ifO2.js +0 -15
  356. package/studio-dist/client/_app/immutable/chunks/DF_4OWhj.js +0 -2
  357. package/studio-dist/client/_app/immutable/chunks/DFpNK1vs2.js +0 -1
  358. package/studio-dist/client/_app/immutable/chunks/DGRYMk-W.js +0 -142
  359. package/studio-dist/client/_app/immutable/chunks/DH3CcQwq.js +0 -1
  360. package/studio-dist/client/_app/immutable/chunks/DHQfJeLU.js +0 -4
  361. package/studio-dist/client/_app/immutable/chunks/DL89yEDy2.js +0 -1
  362. package/studio-dist/client/_app/immutable/chunks/DLRku_0p2.js +0 -2
  363. package/studio-dist/client/_app/immutable/chunks/DMZkjPYT2.js +0 -1
  364. package/studio-dist/client/_app/immutable/chunks/DNP72foU.js +0 -1
  365. package/studio-dist/client/_app/immutable/chunks/DO2GztVm.js +0 -1
  366. package/studio-dist/client/_app/immutable/chunks/DOVNXmCK2.js +0 -1
  367. package/studio-dist/client/_app/immutable/chunks/DOqzs8kl2.js +0 -1
  368. package/studio-dist/client/_app/immutable/chunks/DQnR63hh2.js +0 -7
  369. package/studio-dist/client/_app/immutable/chunks/DTxtWPkw.js +0 -1
  370. package/studio-dist/client/_app/immutable/chunks/DVDgCC9A2.js +0 -20
  371. package/studio-dist/client/_app/immutable/chunks/DVVCJYjz.js +0 -1
  372. package/studio-dist/client/_app/immutable/chunks/DWRhYUMj2.js +0 -1
  373. package/studio-dist/client/_app/immutable/chunks/DWavBJBI.js +0 -4
  374. package/studio-dist/client/_app/immutable/chunks/DXDSWRw-.js +0 -1
  375. package/studio-dist/client/_app/immutable/chunks/DXoHaH4a.js +0 -2
  376. package/studio-dist/client/_app/immutable/chunks/DXpCX2Hi.js +0 -1
  377. package/studio-dist/client/_app/immutable/chunks/DYP3EJMY.js +0 -1
  378. package/studio-dist/client/_app/immutable/chunks/DYQphR_V.js +0 -1
  379. package/studio-dist/client/_app/immutable/chunks/DYUlIivP.js +0 -1
  380. package/studio-dist/client/_app/immutable/chunks/DYo2ye8X2.js +0 -1
  381. package/studio-dist/client/_app/immutable/chunks/DYxFu8yV.js +0 -1
  382. package/studio-dist/client/_app/immutable/chunks/DZ66sRb6.js +0 -1
  383. package/studio-dist/client/_app/immutable/chunks/D_XTiylm2.js +0 -1
  384. package/studio-dist/client/_app/immutable/chunks/DaRv9jn22.js +0 -1
  385. package/studio-dist/client/_app/immutable/chunks/DaXb9i_E.js +0 -1
  386. package/studio-dist/client/_app/immutable/chunks/Dccf4VP2.js +0 -24
  387. package/studio-dist/client/_app/immutable/chunks/DdODs-Sb.js +0 -1
  388. package/studio-dist/client/_app/immutable/chunks/DdekYWer.js +0 -2
  389. package/studio-dist/client/_app/immutable/chunks/DeHaovsF.js +0 -1
  390. package/studio-dist/client/_app/immutable/chunks/DeRRkRO52.js +0 -1
  391. package/studio-dist/client/_app/immutable/chunks/DeWI5qCn.js +0 -1
  392. package/studio-dist/client/_app/immutable/chunks/DfivR-Md.js +0 -1
  393. package/studio-dist/client/_app/immutable/chunks/DgmxpSo7.js +0 -1
  394. package/studio-dist/client/_app/immutable/chunks/DhPLWrun2.js +0 -1
  395. package/studio-dist/client/_app/immutable/chunks/DhhrVdfi.js +0 -2
  396. package/studio-dist/client/_app/immutable/chunks/Djr2dbcc2.js +0 -37
  397. package/studio-dist/client/_app/immutable/chunks/DjuRo5vv.js +0 -1
  398. package/studio-dist/client/_app/immutable/chunks/Djz4EDzO.js +0 -1
  399. package/studio-dist/client/_app/immutable/chunks/DkRfaw-K2.js +0 -1
  400. package/studio-dist/client/_app/immutable/chunks/DksB5g4W2.js +0 -1
  401. package/studio-dist/client/_app/immutable/chunks/Dmqenb5z2.js +0 -1
  402. package/studio-dist/client/_app/immutable/chunks/DnbToVyf.js +0 -2
  403. package/studio-dist/client/_app/immutable/chunks/DpGZwlmj.js +0 -1
  404. package/studio-dist/client/_app/immutable/chunks/Dq0lE5C32.js +0 -1
  405. package/studio-dist/client/_app/immutable/chunks/Dq54XqHT2.js +0 -1
  406. package/studio-dist/client/_app/immutable/chunks/DqK84mbb.js +0 -1
  407. package/studio-dist/client/_app/immutable/chunks/DqjFtSJD.js +0 -2
  408. package/studio-dist/client/_app/immutable/chunks/DrKWWDpL.js +0 -1
  409. package/studio-dist/client/_app/immutable/chunks/DsQIgu-4.js +0 -1
  410. package/studio-dist/client/_app/immutable/chunks/DsqdgJHS2.js +0 -1
  411. package/studio-dist/client/_app/immutable/chunks/DtNkZUkq.js +0 -17
  412. package/studio-dist/client/_app/immutable/chunks/DutIls4V2.js +0 -1
  413. package/studio-dist/client/_app/immutable/chunks/DvxYFW4C.js +0 -1
  414. package/studio-dist/client/_app/immutable/chunks/Dwp-76GQ.js +0 -2
  415. package/studio-dist/client/_app/immutable/chunks/DxSZd548.js +0 -1
  416. package/studio-dist/client/_app/immutable/chunks/DxiUMhk0.js +0 -5
  417. package/studio-dist/client/_app/immutable/chunks/DxslLswf.js +0 -23
  418. package/studio-dist/client/_app/immutable/chunks/Dy7EjGgb2.js +0 -9
  419. package/studio-dist/client/_app/immutable/chunks/DyGQ_VXC.js +0 -3
  420. package/studio-dist/client/_app/immutable/chunks/DySe3kTV2.js +0 -1
  421. package/studio-dist/client/_app/immutable/chunks/DyzE2Uxw.js +0 -1
  422. package/studio-dist/client/_app/immutable/chunks/DzhuJaxE2.js +0 -2
  423. package/studio-dist/client/_app/immutable/chunks/FmMHyrh6.js +0 -1
  424. package/studio-dist/client/_app/immutable/chunks/Gxs0J274.js +0 -5
  425. package/studio-dist/client/_app/immutable/chunks/HwtzDYxN.js +0 -2
  426. package/studio-dist/client/_app/immutable/chunks/ITRz_Q7H2.js +0 -15
  427. package/studio-dist/client/_app/immutable/chunks/KDNP98XY2.js +0 -1
  428. package/studio-dist/client/_app/immutable/chunks/LmVjFhpk2.js +0 -1
  429. package/studio-dist/client/_app/immutable/chunks/MiAejGV_.js +0 -1
  430. package/studio-dist/client/_app/immutable/chunks/Ml4JR6Jz2.js +0 -2
  431. package/studio-dist/client/_app/immutable/chunks/NU5S3nNs2.js +0 -2
  432. package/studio-dist/client/_app/immutable/chunks/Oh5zPjv3.js +0 -2
  433. package/studio-dist/client/_app/immutable/chunks/QZkvJ9vi.js +0 -1
  434. package/studio-dist/client/_app/immutable/chunks/Rbn8UpBm.js +0 -1
  435. package/studio-dist/client/_app/immutable/chunks/SPX3gYwn2.js +0 -1
  436. package/studio-dist/client/_app/immutable/chunks/TX-23QW3.js +0 -3
  437. package/studio-dist/client/_app/immutable/chunks/UyeQuL132.js +0 -12
  438. package/studio-dist/client/_app/immutable/chunks/VQszoXcV.js +0 -1
  439. package/studio-dist/client/_app/immutable/chunks/VtZsEMxD.js +0 -1
  440. package/studio-dist/client/_app/immutable/chunks/W2IeK61p2.js +0 -1
  441. package/studio-dist/client/_app/immutable/chunks/Wadww7ZG.js +0 -1
  442. package/studio-dist/client/_app/immutable/chunks/WgfA1zWk2.js +0 -1
  443. package/studio-dist/client/_app/immutable/chunks/WxIgAS1f.js +0 -21
  444. package/studio-dist/client/_app/immutable/chunks/XrsBoOj9.js +0 -2
  445. package/studio-dist/client/_app/immutable/chunks/Y3PX4poR.js +0 -2
  446. package/studio-dist/client/_app/immutable/chunks/YxfwqiF32.js +0 -1
  447. package/studio-dist/client/_app/immutable/chunks/Z7uO1YaO.js +0 -1
  448. package/studio-dist/client/_app/immutable/chunks/_4ykQk_8.js +0 -1
  449. package/studio-dist/client/_app/immutable/chunks/_kRcZFVn.js +0 -1
  450. package/studio-dist/client/_app/immutable/chunks/aQNM7eVA2.js +0 -1
  451. package/studio-dist/client/_app/immutable/chunks/bHKz_Fb2.js +0 -45
  452. package/studio-dist/client/_app/immutable/chunks/bJRyRGSZ.js +0 -1
  453. package/studio-dist/client/_app/immutable/chunks/dlzF6lnR.js +0 -1
  454. package/studio-dist/client/_app/immutable/chunks/fjRbpfEr2.js +0 -26
  455. package/studio-dist/client/_app/immutable/chunks/imLk4if5.js +0 -3
  456. package/studio-dist/client/_app/immutable/chunks/lgRG0R-32.js +0 -1
  457. package/studio-dist/client/_app/immutable/chunks/mFhCjxQJ2.js +0 -1
  458. package/studio-dist/client/_app/immutable/chunks/mgnH6qYg.js +0 -1
  459. package/studio-dist/client/_app/immutable/chunks/n6M_5LoW.js +0 -1
  460. package/studio-dist/client/_app/immutable/chunks/nLIOiDZp2.js +0 -1
  461. package/studio-dist/client/_app/immutable/chunks/nab7WB3u2.js +0 -1
  462. package/studio-dist/client/_app/immutable/chunks/orUmAKoW2.js +0 -1
  463. package/studio-dist/client/_app/immutable/chunks/p-fLQDfY2.js +0 -63
  464. package/studio-dist/client/_app/immutable/chunks/s0-WkOGk2.js +0 -1
  465. package/studio-dist/client/_app/immutable/chunks/sPuXfbUF.js +0 -1
  466. package/studio-dist/client/_app/immutable/chunks/t4h0vrqR2.js +0 -2
  467. package/studio-dist/client/_app/immutable/chunks/uE83FKL-.js +0 -1
  468. package/studio-dist/client/_app/immutable/chunks/uzhXlm0g2.js +0 -1
  469. package/studio-dist/client/_app/immutable/chunks/vTrEsGlD2.js +0 -1
  470. package/studio-dist/client/_app/immutable/chunks/xJgCk3dx2.js +0 -28
  471. package/studio-dist/client/_app/immutable/chunks/z0Mt579s2.js +0 -13
  472. package/studio-dist/client/_app/immutable/entry/app.BoQ7cgT2.js +0 -2
  473. package/studio-dist/client/_app/immutable/entry/start.Cg1v8DU4.js +0 -1
  474. package/studio-dist/client/_app/immutable/nodes/25.ddZ1_EFk.js +0 -1
  475. package/studio-dist/client/_app/immutable/nodes/26.6OcmQbLV.js +0 -1
  476. package/studio-dist/client/_app/immutable/nodes/4.CCjOEwVU.js +0 -1
  477. package/studio-dist/server/chunks/0-CvsKDxQ6.js +0 -126
  478. package/studio-dist/server/chunks/1-ck_x2Hf0.js +0 -9
  479. package/studio-dist/server/chunks/20-DVU22np7.js +0 -142
  480. package/studio-dist/server/chunks/23-D_tUnnoc.js +0 -181
  481. package/studio-dist/server/chunks/24-CVlymvLF.js +0 -151
  482. package/studio-dist/server/chunks/AwsRestJsonProtocol-BZuoNBmL.js +0 -416
  483. package/studio-dist/server/chunks/UnionSerde-BflIkhKj.js +0 -2653
  484. package/studio-dist/server/chunks/_dispatch-ncuRztUQ.js +0 -5597
  485. package/studio-dist/server/chunks/_server.ts-4NyKAneX.js +0 -116
  486. package/studio-dist/server/chunks/_server.ts-7hGdxdEI.js +0 -136
  487. package/studio-dist/server/chunks/_server.ts-B6b3b-yA.js +0 -131
  488. package/studio-dist/server/chunks/_server.ts-BOgGqaZp.js +0 -144
  489. package/studio-dist/server/chunks/_server.ts-BV1HiKZ0.js +0 -120
  490. package/studio-dist/server/chunks/_server.ts-BWp3g6Cr.js +0 -110
  491. package/studio-dist/server/chunks/_server.ts-C5NF-UgC.js +0 -122
  492. package/studio-dist/server/chunks/_server.ts-CDMurH5m.js +0 -2301
  493. package/studio-dist/server/chunks/_server.ts-COJHCgbq.js +0 -127
  494. package/studio-dist/server/chunks/_server.ts-CUl-Utkt.js +0 -148
  495. package/studio-dist/server/chunks/_server.ts-D0GAFJRb.js +0 -156
  496. package/studio-dist/server/chunks/_server.ts-DA6p3pmi.js +0 -117
  497. package/studio-dist/server/chunks/_server.ts-DThYFaZj.js +0 -160
  498. package/studio-dist/server/chunks/_server.ts-D_3Pm0gr.js +0 -179
  499. package/studio-dist/server/chunks/_server.ts-DcHxdMsm.js +0 -144
  500. package/studio-dist/server/chunks/_server.ts-Dlfadh2I.js +0 -144
  501. package/studio-dist/server/chunks/_server.ts-JallJnps.js +0 -240
  502. package/studio-dist/server/chunks/_server.ts-NEFTbJpM.js +0 -142
  503. package/studio-dist/server/chunks/_server.ts-d-2NvRwX.js +0 -122
  504. package/studio-dist/server/chunks/_server.ts-rUWMLkIw.js +0 -146
  505. package/studio-dist/server/chunks/abort-events-CDRAJSqb.js +0 -30
  506. package/studio-dist/server/chunks/adapters-BkMgPNUM.js +0 -359
  507. package/studio-dist/server/chunks/adapters2-CQ3PzoaK.js +0 -28
  508. package/studio-dist/server/chunks/api-mode2-3W-I1-XO.js +0 -36
  509. package/studio-dist/server/chunks/api2-CmNQzb0b.js +0 -96
  510. package/studio-dist/server/chunks/attention-consolidate-CidG1jfH.js +0 -485
  511. package/studio-dist/server/chunks/audit3-DMO_fUGp.js +0 -52
  512. package/studio-dist/server/chunks/auto-extract-B84La1Vs.js +0 -34
  513. package/studio-dist/server/chunks/brain-consolidator-JGm6mzFf.js +0 -373
  514. package/studio-dist/server/chunks/brain-doctor-Dc2WqVbs.js +0 -311
  515. package/studio-dist/server/chunks/brain-embedding-Djw9ekXu.js +0 -42
  516. package/studio-dist/server/chunks/brain-lifecycle-BOOa876K.js +0 -969
  517. package/studio-dist/server/chunks/brain-maintenance-U6VvsvmK.js +0 -133
  518. package/studio-dist/server/chunks/brain-maintenance2-CwVSmfDT.js +0 -43
  519. package/studio-dist/server/chunks/brain-retrieval2-exR8mdgh.js +0 -751
  520. package/studio-dist/server/chunks/brain-search-CpSh-SNi.js +0 -48
  521. package/studio-dist/server/chunks/brain-search2-CwI2cXgg.js +0 -716
  522. package/studio-dist/server/chunks/brain-similarity-DI4yzm9e.js +0 -113
  523. package/studio-dist/server/chunks/brain-stdp2-BxSBIlSr.js +0 -960
  524. package/studio-dist/server/chunks/brain-writer-handlers-Dwu0QCAA.js +0 -188
  525. package/studio-dist/server/chunks/brain-writer-thread-6n7wI7Gy.js +0 -360
  526. package/studio-dist/server/chunks/branch-lock-Cq7zzmFK.js +0 -1118
  527. package/studio-dist/server/chunks/branch-lock2-CmDc4CZW.js +0 -45
  528. package/studio-dist/server/chunks/cancelled-child-waiver-audit-DkesrN83.js +0 -54
  529. package/studio-dist/server/chunks/catalog-model-resolver-Bas9qnoP.js +0 -9
  530. package/studio-dist/server/chunks/catalog-model-resolver2-Cexk2TN0.js +0 -237
  531. package/studio-dist/server/chunks/catalog-resolver-CLot3XJO.js +0 -260
  532. package/studio-dist/server/chunks/catalog-resolver2-JmKb91kY.js +0 -33
  533. package/studio-dist/server/chunks/chunk-DDP5xfzh.js +0 -39
  534. package/studio-dist/server/chunks/cleo-home-CCfe6kAQ.js +0 -64
  535. package/studio-dist/server/chunks/concrete-session2-bb_vxJ2N.js +0 -43
  536. package/studio-dist/server/chunks/config-DHj9CcFs.js +0 -386
  537. package/studio-dist/server/chunks/config2-F6PPIn7D.js +0 -35
  538. package/studio-dist/server/chunks/connections-BMGJVYcS.js +0 -98
  539. package/studio-dist/server/chunks/credential-pool-vF6NdtT9.js +0 -4600
  540. package/studio-dist/server/chunks/credentials-C7EJFf5O.js +0 -35
  541. package/studio-dist/server/chunks/credentials-store-CFygIuB2.js +0 -35
  542. package/studio-dist/server/chunks/cross-db-cleanup-1LWTUKPi.js +0 -147
  543. package/studio-dist/server/chunks/data-accessor-CWgVndbR.js +0 -72
  544. package/studio-dist/server/chunks/data-safety-central-DaFxK27G.js +0 -683
  545. package/studio-dist/server/chunks/decisions-CmVXV2-H.js +0 -574
  546. package/studio-dist/server/chunks/decisions2-XQsSYdxa.js +0 -48
  547. package/studio-dist/server/chunks/depends-waiver-audit-CUmlBYHx.js +0 -56
  548. package/studio-dist/server/chunks/dialectic-evaluator2-BOyyXhdI.js +0 -96
  549. package/studio-dist/server/chunks/dist-es2-DQy2Mjn_.js +0 -43
  550. package/studio-dist/server/chunks/dist-es3-CBygU4n5.js +0 -365
  551. package/studio-dist/server/chunks/dist-es4-CavbNu4B.js +0 -162
  552. package/studio-dist/server/chunks/dist-es5-Crpm8Wsl.js +0 -465
  553. package/studio-dist/server/chunks/dist-es6-CgePHzh4.js +0 -99
  554. package/studio-dist/server/chunks/dist-es7-k6c5GEd7.js +0 -311
  555. package/studio-dist/server/chunks/dist-es8-Bd9v0_pE.js +0 -91
  556. package/studio-dist/server/chunks/dist3-23bsJhRw.js +0 -27
  557. package/studio-dist/server/chunks/dist4-DmC1zSXi.js +0 -35618
  558. package/studio-dist/server/chunks/dual-scope-db-DKnWu1KM.js +0 -5672
  559. package/studio-dist/server/chunks/dual-scope-db2-Dht3luRw.js +0 -31
  560. package/studio-dist/server/chunks/duplicate-bypass-audit-BN5w1H2y.js +0 -36
  561. package/studio-dist/server/chunks/duplicate-detector-CaVFMKdE.js +0 -692
  562. package/studio-dist/server/chunks/edge-types-CgBvb0w1.js +0 -28
  563. package/studio-dist/server/chunks/embedding-local-xEnym8Ho.js +0 -92
  564. package/studio-dist/server/chunks/event-streams-Bi2p_fVo.js +0 -232
  565. package/studio-dist/server/chunks/execution-learning-BVCw7Plq.js +0 -278
  566. package/studio-dist/server/chunks/exodus-BBuuN6aA.js +0 -2594
  567. package/studio-dist/server/chunks/externalDataInterceptor-C3C4cObe.js +0 -21
  568. package/studio-dist/server/chunks/extraction-gate-DDNBq7gu.js +0 -48
  569. package/studio-dist/server/chunks/extraction-gate2-D77EZBQ6.js +0 -375
  570. package/studio-dist/server/chunks/getSSOTokenFromFile-yZAJxDci.js +0 -21
  571. package/studio-dist/server/chunks/governor2-CtfV3wfX.js +0 -923
  572. package/studio-dist/server/chunks/graph-auto-populate-Dmsr9ZJM.js +0 -42
  573. package/studio-dist/server/chunks/graph-auto-populate2-Cz0qeebM.js +0 -156
  574. package/studio-dist/server/chunks/graph-memory-bridge-CY8ft_d7.js +0 -43
  575. package/studio-dist/server/chunks/graph-memory-bridge2-Cd0XZwqc.js +0 -429
  576. package/studio-dist/server/chunks/handler-helpers-AANBGA_p.js +0 -49
  577. package/studio-dist/server/chunks/hash-Cm6yMET4.js +0 -14
  578. package/studio-dist/server/chunks/health-monitor-FepUZN1m.js +0 -106
  579. package/studio-dist/server/chunks/identity-DRpurt56.js +0 -30
  580. package/studio-dist/server/chunks/identity2-DeAB5RXE.js +0 -114
  581. package/studio-dist/server/chunks/index-61916rmV.js +0 -632
  582. package/studio-dist/server/chunks/index-DAgVDouG.js +0 -268
  583. package/studio-dist/server/chunks/index-Dtt_h58T.js +0 -2116
  584. package/studio-dist/server/chunks/indexes-DZ52grq6.js +0 -615
  585. package/studio-dist/server/chunks/json-Bfixam3g.js +0 -126
  586. package/studio-dist/server/chunks/learnings-D6Y3YGMU.js +0 -47
  587. package/studio-dist/server/chunks/learnings2-MwBdR9vb.js +0 -171
  588. package/studio-dist/server/chunks/lifecycle-ops2-V2CR5-7X.js +0 -121
  589. package/studio-dist/server/chunks/list-BhObczvn.js +0 -229
  590. package/studio-dist/server/chunks/living-brain2-j0B_Ir8j.js +0 -285
  591. package/studio-dist/server/chunks/llm-backend-resolver-D4ANvUPL.js +0 -295
  592. package/studio-dist/server/chunks/llm-extraction-DVCu4heR.js +0 -408
  593. package/studio-dist/server/chunks/loadSharedConfigFiles-umvW7kuz.js +0 -73
  594. package/studio-dist/server/chunks/loadSso-iidd5iKx.js +0 -599
  595. package/studio-dist/server/chunks/local-model-fit-B0TxifnX.js +0 -53
  596. package/studio-dist/server/chunks/local-model-fit2-BMqo6GJm.js +0 -2664
  597. package/studio-dist/server/chunks/lock-CA7d6lj7.js +0 -57
  598. package/studio-dist/server/chunks/logger-DQIoyZbq.js +0 -34
  599. package/studio-dist/server/chunks/memory-BUbicBbE.js +0 -618
  600. package/studio-dist/server/chunks/memory-accessor-i3P-RHSg.js +0 -42
  601. package/studio-dist/server/chunks/memory-accessor2-B981tHDR.js +0 -467
  602. package/studio-dist/server/chunks/memory-bridge-BOlEWg9w.js +0 -424
  603. package/studio-dist/server/chunks/memory-sqlite2-B7dq8doO.js +0 -42
  604. package/studio-dist/server/chunks/model-runner2-B71xjp4y.js +0 -43
  605. package/studio-dist/server/chunks/mvi-helpers-BNsJ8ZpQ.js +0 -59
  606. package/studio-dist/server/chunks/nexus-plasticity-BTfU8cW_.js +0 -269
  607. package/studio-dist/server/chunks/nexus-risk-audit-p379-TU5.js +0 -54
  608. package/studio-dist/server/chunks/nexus-schema-zeygY8OD.js +0 -11
  609. package/studio-dist/server/chunks/nexus-schema2-DP0Qd7CA.js +0 -444
  610. package/studio-dist/server/chunks/nexus-sqlite-BVNIpwc7.js +0 -36
  611. package/studio-dist/server/chunks/nexus-sqlite2-BBfY2xnY.js +0 -1103
  612. package/studio-dist/server/chunks/node-http-handler-CJI8kn7X.js +0 -386
  613. package/studio-dist/server/chunks/observe-Bo9veHGe.js +0 -47
  614. package/studio-dist/server/chunks/observe2-wzO0MaMY.js +0 -245
  615. package/studio-dist/server/chunks/observer-reflector-BwNOuq1d.js +0 -62
  616. package/studio-dist/server/chunks/observer-reflector2-ggtC1hmk.js +0 -478
  617. package/studio-dist/server/chunks/on-open-Wpcw7DV4.js +0 -740
  618. package/studio-dist/server/chunks/open-cleo-db--8sYNaYY.js +0 -70
  619. package/studio-dist/server/chunks/parseKnownFiles-Dg0pMFcT.js +0 -18
  620. package/studio-dist/server/chunks/parseUrl-qgGfl-Vh.js +0 -120
  621. package/studio-dist/server/chunks/paths-CV7S5-Zm.js +0 -30012
  622. package/studio-dist/server/chunks/patterns-lh5kn13I.js +0 -48
  623. package/studio-dist/server/chunks/patterns2-CzIcT-ai.js +0 -177
  624. package/studio-dist/server/chunks/pipeline-stage-IB_pOft-.js +0 -63
  625. package/studio-dist/server/chunks/prediction-D1lSGJ4c.js +0 -217
  626. package/studio-dist/server/chunks/premature-close-audit-VG09uAco.js +0 -53
  627. package/studio-dist/server/chunks/project-context-BjiqfEBi.js +0 -166
  628. package/studio-dist/server/chunks/provider-registry2-Cu7rAF0R.js +0 -35
  629. package/studio-dist/server/chunks/quality-feedback-CuCGEI6S.js +0 -371
  630. package/studio-dist/server/chunks/quality-scoring-CCPuRQmJ.js +0 -160
  631. package/studio-dist/server/chunks/query-ops-DCrjbZb9.js +0 -78
  632. package/studio-dist/server/chunks/query-promise-BkPmGPJy.js +0 -1257
  633. package/studio-dist/server/chunks/readFile-CxwXhymG.js +0 -31
  634. package/studio-dist/server/chunks/registry-CL2gN1zd.js +0 -27
  635. package/studio-dist/server/chunks/registry2-DoPYJnUW.js +0 -233
  636. package/studio-dist/server/chunks/registry3-BajEb-ll.js +0 -42
  637. package/studio-dist/server/chunks/registry4-DCqffZkT.js +0 -142
  638. package/studio-dist/server/chunks/retry-B3oEKYpp.js +0 -105
  639. package/studio-dist/server/chunks/role-executor-CC8BU54L.js +0 -25379
  640. package/studio-dist/server/chunks/role-resolver-D9QaDT0e.js +0 -6544
  641. package/studio-dist/server/chunks/role-resolver2-nkhzS1oy.js +0 -37
  642. package/studio-dist/server/chunks/rollup-CiefjN_Y.js +0 -194
  643. package/studio-dist/server/chunks/safety-data-accessor-CniDmGJO.js +0 -276
  644. package/studio-dist/server/chunks/service-connections-accessor-yBCdcgU-.js +0 -282
  645. package/studio-dist/server/chunks/session-factory-vbengc42.js +0 -96
  646. package/studio-dist/server/chunks/session-grade-BF4ZZtN_.js +0 -244
  647. package/studio-dist/server/chunks/session-journal-Bvey70Ur.js +0 -235
  648. package/studio-dist/server/chunks/session-narrative-BirZINSU.js +0 -304
  649. package/studio-dist/server/chunks/session-store--N_xHxUH.js +0 -557
  650. package/studio-dist/server/chunks/session-store2-DAM-eVTH.js +0 -43
  651. package/studio-dist/server/chunks/sessions-33DD4hkt.js +0 -2273
  652. package/studio-dist/server/chunks/sessions2-BHswKRDP.js +0 -50
  653. package/studio-dist/server/chunks/sigil-B-RznFXz.js +0 -33
  654. package/studio-dist/server/chunks/sigil2-jRMG5DuR.js +0 -47
  655. package/studio-dist/server/chunks/signin-BAsW3mM8.js +0 -644
  656. package/studio-dist/server/chunks/sleep-consolidation-BnSwXrvq.js +0 -823
  657. package/studio-dist/server/chunks/specialists-B_ZbpQlK.js +0 -441
  658. package/studio-dist/server/chunks/sqlite-Bm5LzbPs.js +0 -5977
  659. package/studio-dist/server/chunks/sqlite-backup-CFG1-b2e.js +0 -42
  660. package/studio-dist/server/chunks/sqlite-data-accessor-DD_RFX6r.js +0 -987
  661. package/studio-dist/server/chunks/sqlite-data-accessor2-CRmgNBnq.js +0 -44
  662. package/studio-dist/server/chunks/sqlite-native-BwlIqtbs.js +0 -42
  663. package/studio-dist/server/chunks/sqlite2-CUPut2fh.js +0 -42
  664. package/studio-dist/server/chunks/src2-DK8DKufK.js +0 -290
  665. package/studio-dist/server/chunks/src3-BJjf7XRG.js +0 -798
  666. package/studio-dist/server/chunks/src4-DNleK_t_.js +0 -28
  667. package/studio-dist/server/chunks/sso-oidc-eUvwseuL.js +0 -861
  668. package/studio-dist/server/chunks/storage-B9UA3BHR.js +0 -198
  669. package/studio-dist/server/chunks/sts-g7LDMLEd.js +0 -4655
  670. package/studio-dist/server/chunks/surprisal-CwTfWQi8.js +0 -224
  671. package/studio-dist/server/chunks/surprisal-tree-7dfHsuw1.js +0 -230
  672. package/studio-dist/server/chunks/system-resolver2-Bzhue_zQ.js +0 -53
  673. package/studio-dist/server/chunks/tasks-SHX7UPGY.js +0 -19694
  674. package/studio-dist/server/chunks/tasks-schema2-CTMoQKQy.js +0 -42
  675. package/studio-dist/server/chunks/temporal-supersession-DP4GPG_B.js +0 -298
  676. package/studio-dist/server/chunks/token-cAhAD9f9.js +0 -139
  677. package/studio-dist/server/chunks/token-util-D6drEz8_.js +0 -353
  678. package/studio-dist/server/chunks/token-util2-8UPSGvbb.js +0 -97
  679. package/studio-dist/server/chunks/transcript-scanner-kJWhWmlg.js +0 -53
  680. package/studio-dist/server/chunks/transformers.node-_xbxmK5p.js +0 -38475
  681. package/studio-dist/server/chunks/typed-query-l1D_QElt.js +0 -18
  682. package/studio-dist/server/chunks/unique-constraint-BZrrwgwc.js +0 -88
  683. package/studio-dist/server/chunks/update-B2YVBZG0.js +0 -1594
  684. package/studio-dist/server/chunks/user-profile-B61ZhVmC.js +0 -89
  685. package/studio-dist/server/chunks/utils-BPSZyajG.js +0 -1176
  686. package/studio-dist/server/chunks/validation-rules-CE27rtoF.js +0 -44
  687. package/studio-dist/server/chunks/zod-DsAeKNLm.js +0 -141
  688. /package/studio-dist/client/_app/immutable/chunks/{CQCxd1p9.js → B8WnZMYa.js} +0 -0
  689. /package/studio-dist/client/_app/immutable/chunks/{D13Quv9e2.js → B_0_YCYG.js} +0 -0
  690. /package/studio-dist/client/_app/immutable/chunks/{djL6V-tr.js → CqgtdAx_.js} +0 -0
  691. /package/studio-dist/client/_app/immutable/chunks/{_FU7h_8p2.js → KrUPZzXZ.js} +0 -0
@@ -1,960 +0,0 @@
1
- import { t as typedAll } from './typed-query-l1D_QElt.js';
2
-
3
- //#region ../core/dist/memory/brain-plasticity-class.js
4
- /**
5
- * Plasticity class and stability score utilities for STDP and Hebbian plasticity.
6
- *
7
- * Manages the plasticity_class column which governs which algorithms write to an edge:
8
- * - 'static': Non-plastic (structural, semantic). Immune to decay.
9
- * - 'hebbian': Written by strengthenCoRetrievedEdges. Subject to decay.
10
- * - 'stdp': Written or refined by applyStdpPlasticity. Subject to decay + LTD.
11
- *
12
- * Also computes stability_score for decay filtering and plasticity event ordering.
13
- *
14
- * @task T693
15
- * @epic T673
16
- */
17
- /**
18
- * Upgrade plasticity class to the most plastic variant that has touched it.
19
- *
20
- * Decision logic (T693 / synthesis decision #12):
21
- * - If current = 'static' and event = 'hebbian' → 'hebbian' (first plasticity touch)
22
- * - If current = 'static' and event = 'stdp' → 'stdp' (STDP direct touch)
23
- * - If current = 'hebbian' and event = 'stdp' → 'stdp' (upgrade via STDP)
24
- * - If current = 'stdp' → stays 'stdp' (no downgrade)
25
- * - Otherwise return current unchanged
26
- *
27
- * @param currentClass - Current plasticity class value ('static', 'hebbian', 'stdp')
28
- * @param event - Event type triggering upgrade ('hebbian' or 'stdp')
29
- * @returns Upgraded plasticity class
30
- */
31
- function upgradePlasticityClass(currentClass, event) {
32
- const current = currentClass ?? "static";
33
- if (current === "stdp") return "stdp";
34
- return "stdp";
35
- }
36
- /**
37
- * Compute biological stability score for an edge based on reinforcement history.
38
- *
39
- * Formula (T673 spec §1 decision #13):
40
- * stability = tanh(reinforcement_count / 10) × exp(-(days_since_reinforced / 30))
41
- *
42
- * Parameters:
43
- * - reinforcement_count: Number of LTP events applied lifetime (integer ≥ 0)
44
- * - lastReinforcedAt: ISO 8601 timestamp of last LTP event, or null if never
45
- *
46
- * Returns: 0.0–1.0, or null if no history to compute from
47
- *
48
- * Examples:
49
- * - rc=10, days=0 → tanh(1.0) × 1.0 ≈ 0.762
50
- * - rc=5, days=0 → tanh(0.5) × 1.0 ≈ 0.462
51
- * - rc=10, days=30 → tanh(1.0) × exp(-1) ≈ 0.280
52
- * - rc=0, days=any → tanh(0) × ... = 0.0 (new edges)
53
- *
54
- * @param reinforcementCount - Lifetime count of LTP events applied to edge
55
- * @param lastReinforcedAt - ISO 8601 timestamp of last LTP event, or null
56
- * @param now - Current timestamp (epoch ms, for testing). Defaults to Date.now()
57
- * @returns Stability score 0.0–1.0, or null if edge has no reinforcement history
58
- */
59
- function computeStabilityScore(reinforcementCount, lastReinforcedAt, now = Date.now()) {
60
- if (!reinforcementCount || reinforcementCount <= 0) return null;
61
- if (!lastReinforcedAt) return null;
62
- const rcTerm = Math.tanh(reinforcementCount / 10);
63
- const ageDays = (now - new Date(lastReinforcedAt).getTime()) / (1440 * 60 * 1e3);
64
- const stability = rcTerm * Math.exp(-ageDays / 30);
65
- return Math.max(0, Math.min(1, stability));
66
- }
67
- //#endregion
68
- //#region ../core/dist/memory/brain-stdp.js
69
- /**
70
- * STDP (Spike-Timing-Dependent Plasticity) for CLEO BRAIN.
71
- *
72
- * Implements a biologically-inspired Hebbian learning rule that modulates edge
73
- * weights based on the *temporal order* of memory retrievals within a session
74
- * window, not just co-occurrence frequency.
75
- *
76
- * ## Neuroscience basis
77
- *
78
- * Classical STDP: if neuron A fires before neuron B by Δt milliseconds, the
79
- * synapse A→B is potentiated (LTP); if A fires after B, it is depressed (LTD).
80
- * The magnitude of the change decays exponentially with |Δt|.
81
- *
82
- * ## Mapping to CLEO memory
83
- *
84
- * - Each entry retrieved from brain.db is a "spike".
85
- * - Retrievals within the same session and within `sessionWindowMs` of each
86
- * other are treated as temporally related spikes.
87
- * - If entry A was retrieved BEFORE entry B by Δt ms:
88
- * Δw = A_pre × exp(−Δt / τ_pre) → potentiation (LTP, positive Δw)
89
- * - If entry A was retrieved AFTER entry B by Δt ms:
90
- * Δw = −A_post × exp(−Δt / τ_post) → depression (LTD, negative Δw)
91
- * - Weights are clamped to [0.0, 1.0].
92
- * - All events are logged to `brain_plasticity_events` for observability.
93
- *
94
- * ## Parameters (biologically reasonable defaults)
95
- *
96
- * | Symbol | Value | Meaning |
97
- * |---------|--------|--------------------------------------------------|
98
- * | τ_pre | 20 s | Time constant for pre→post potentiation |
99
- * | τ_post | 20 s | Time constant for post→pre depression |
100
- * | A_pre | 0.05 | Peak potentiation amplitude |
101
- * | A_post | 0.06 | Peak depression amplitude (asymmetric, per STDP) |
102
- *
103
- * The asymmetry A_post > A_pre models the biological fact that LTD is slightly
104
- * stronger than LTP, preventing runaway weight growth.
105
- *
106
- * ## Relation to Hebbian co-retrieval
107
- *
108
- * Hebbian (`strengthenCoRetrievedEdges` in brain-lifecycle.ts) uses the
109
- * `co_retrieved` edge type and does NOT track order; it fires on pairs that
110
- * co-occur ≥ 3× regardless of timing. STDP is a *second plasticity pass* that
111
- * runs after Hebbian and refines existing `co_retrieved` edges using order data.
112
- *
113
- * If no `co_retrieved` edge exists yet between a pair, STDP inserts one with the
114
- * initial STDP-derived weight (potentiation pairs only — LTD does not create
115
- * new edges, only weakens existing ones).
116
- *
117
- * ## Two-Window Architecture (T679 BUG-1 fix, T688 expansion)
118
- *
119
- * Prior code used `sessionWindowMs=5min` as BOTH the SQL lookback cutoff AND the
120
- * spike-pair Δt gate, causing all live rows (>5min old) to produce zero plasticity
121
- * events. This version separates the two concerns:
122
- *
123
- * | Parameter | Default | Purpose |
124
- * |-------------------|------------|------------------------------------------|
125
- * | `lookbackDays` | 30 days | SQL cutoff for fetching retrieval rows |
126
- * | `pairingWindowMs` | 24 h | Max Δt between two spikes for pairing |
127
- *
128
- * T688: `pairingWindowMs` raised to 24 h — cross-session pairs now eligible.
129
- * Session boundary is NOT a hard cutoff; τ tier determines decay magnitude.
130
- *
131
- * ## Tiered τ (T689)
132
- *
133
- * `computeTau(deltaT)` selects the decay time constant based on Δt:
134
- *
135
- * | Gap class | Δt range | τ |
136
- * |---------------|----------------|---------|
137
- * | Intra-batch | 0 — 30 s | 20 s |
138
- * | Intra-session | 30 s — 2 h | 30 min |
139
- * | Cross-session | 2 h — 24 h | 12 h |
140
- *
141
- * ## R-STDP reward modulation (T692)
142
- *
143
- * `reward_signal r` (from Step 9a backfill) gates Δw per spike:
144
- * Δw_ltp_effective = clamp(Δw_ltp × (1+r), 0, 2×A_pre)
145
- * Δw_ltd_effective = clamp(Δw_ltd × (1-r), -2×A_post, 0)
146
- * null reward → no modulation (r treated as 0).
147
- *
148
- * ## Novelty boost (T691)
149
- *
150
- * On INSERT (first co-retrieval), initial_weight = clamp(Δw × 1.5, 0, A_pre×1.5).
151
- * UPDATE path uses un-boosted Δw.
152
- *
153
- * @task T626
154
- * @task T679
155
- * @task T688
156
- * @task T689
157
- * @task T691
158
- * @task T692
159
- * @epic T673
160
- * @see packages/core/src/memory/brain-lifecycle.ts#strengthenCoRetrievedEdges
161
- * @see docs/specs/stdp-wire-up-spec.md §3.2 Two-Window Architecture
162
- */
163
- /** Default SQL lookback window: fetch retrieval rows from the last N days. */
164
- var DEFAULT_LOOKBACK_DAYS = 30;
165
- /**
166
- * Default spike-pair matching window in milliseconds.
167
- * T688: raised from 5 min to 24 h — cross-session pairs are now eligible.
168
- * Session boundary is NOT a hard cutoff; tiered τ provides smaller Δw for
169
- * cross-session pairs (τ_episodic=12h vs τ_near=20s).
170
- */
171
- var DEFAULT_PAIRING_WINDOW_MS = 1440 * 60 * 1e3;
172
- /**
173
- * Intra-batch time constant (ms).
174
- * Used when Δt ≤ 30 s — both spikes are in the same retrieval batch.
175
- * Biological analogue: classical STDP window (~20 ms–100 ms in neurons;
176
- * scaled to 20 s for CLEO memory retrieval granularity).
177
- *
178
- * @task T689
179
- */
180
- var TAU_NEAR_MS = 2e4;
181
- /**
182
- * Intra-session time constant (ms).
183
- * Used when 30 s < Δt ≤ 2 h — spikes are in the same session but not same batch.
184
- * Biological analogue: working-memory consolidation window.
185
- *
186
- * @task T689
187
- */
188
- var TAU_SESSION_MS = 1800 * 1e3;
189
- /**
190
- * Cross-session (episodic) time constant (ms).
191
- * Used when Δt > 2 h — spikes span different sessions.
192
- * Biological analogue: episodic reconsolidation (~12 h per Walker & Stickgold 2004).
193
- * Pairs 12 h apart contribute A × exp(-1) ≈ 0.37×A; pairs 36 h apart ≈ 0.05×A.
194
- *
195
- * @task T689
196
- */
197
- var TAU_EPISODIC_MS = 720 * 60 * 1e3;
198
- /**
199
- * Δt boundary (ms) between intra-batch and intra-session τ tiers.
200
- * Spikes within 30 s of each other use τ_near.
201
- */
202
- var TAU_NEAR_THRESHOLD_MS = 3e4;
203
- /**
204
- * Δt boundary (ms) between intra-session and cross-session τ tiers.
205
- * Spikes more than 2 h apart use τ_episodic.
206
- */
207
- var TAU_SESSION_THRESHOLD_MS = 7200 * 1e3;
208
- /** Peak potentiation amplitude (dimensionless weight delta). */
209
- var A_PRE = .05;
210
- /** Peak depression amplitude (slightly larger than A_pre — asymmetric STDP). */
211
- var A_POST = .06;
212
- /**
213
- * Novelty boost multiplier for first-ever co-retrieval pair (INSERT path).
214
- * Models dopamine-novelty literature: new associations are strengthened more.
215
- * Applied only on INSERT; UPDATE path uses standard Δw.
216
- *
217
- * @task T691
218
- */
219
- var K_NOVELTY = 1.5;
220
- /** Minimum edge weight (floor). */
221
- var WEIGHT_MIN = 0;
222
- /** Maximum edge weight (ceiling). */
223
- var WEIGHT_MAX = 1;
224
- /**
225
- * Select the decay time constant τ based on spike-pair temporal gap.
226
- *
227
- * Three tiers (per spec §3.3):
228
- * - τ_near = 20 s — Δt ≤ 30 s (intra-batch, classical STDP window)
229
- * - τ_session = 30 min — 30 s < Δt ≤ 2 h (intra-session, working memory)
230
- * - τ_episodic = 12 h — Δt > 2 h (cross-session, episodic reconsolidation)
231
- *
232
- * @param deltaT - Time gap between spikes in milliseconds (non-negative).
233
- * @returns τ in milliseconds for use in exp(-Δt / τ).
234
- *
235
- * @task T689
236
- */
237
- function computeTau(deltaT) {
238
- if (deltaT <= TAU_NEAR_THRESHOLD_MS) return TAU_NEAR_MS;
239
- if (deltaT <= TAU_SESSION_THRESHOLD_MS) return TAU_SESSION_MS;
240
- return TAU_EPISODIC_MS;
241
- }
242
- /**
243
- * Check if a recent plasticity event exists for the given source→target pair
244
- * within the last `withinHours` (default 1 hour).
245
- *
246
- * Used by T713 idempotency guard to prevent duplicate event insertion when
247
- * consolidation runs multiple times against the same session.
248
- *
249
- * @param nativeDb - SQLite native database connection
250
- * @param sourceNode - Source node ID (entry ID)
251
- * @param targetNode - Target node ID (entry ID)
252
- * @param kind - Event kind ('ltp' or 'ltd')
253
- * @param sessionId - Session ID to match (null = all sessions)
254
- * @param withinHours - Dedup window in hours. Default: 1
255
- * @returns True if a matching recent event exists; false otherwise.
256
- */
257
- function isPlasticityEventDuplicate(nativeDb, sourceNode, targetNode, kind, sessionId, withinHours = 1) {
258
- try {
259
- const cutoffIso = (/* @__PURE__ */ new Date(Date.now() - withinHours * 60 * 60 * 1e3)).toISOString().replace("T", " ").slice(0, 19);
260
- return nativeDb.prepare(`SELECT 1 FROM brain_plasticity_events
261
- WHERE source_node = ? AND target_node = ? AND kind = ?
262
- AND session_id = ?
263
- AND timestamp > ?
264
- LIMIT 1`).get(sourceNode, targetNode, kind, sessionId, cutoffIso) !== void 0;
265
- } catch {
266
- return false;
267
- }
268
- }
269
- /**
270
- * Check if there are at least `minCount` retrieval log rows since the last
271
- * plasticity event in the given session.
272
- *
273
- * Used by T714 minimum-pair gate to skip Step 9b when a session has too few
274
- * retrievals to warrant plasticity processing.
275
- *
276
- * @param nativeDb - SQLite native database connection
277
- * @param minCount - Minimum number of new retrievals required. Default: 2
278
- * @param sessionId - Session ID to check (null = all sessions)
279
- * @returns True if minCount or more new retrievals exist; false otherwise.
280
- */
281
- function hasMinimumRetrievalsSinceLastPlasticity(nativeDb, minCount = 2, sessionId = null) {
282
- try {
283
- const db = nativeDb;
284
- const lastTime = (() => {
285
- if (sessionId !== null) return db.prepare(`SELECT MAX(timestamp) as last_time FROM brain_plasticity_events
286
- WHERE session_id = ?`).get(sessionId)?.last_time ?? null;
287
- return db.prepare(`SELECT MAX(timestamp) as last_time FROM brain_plasticity_events`).get()?.last_time ?? null;
288
- })();
289
- let newRetrievalCount;
290
- if (lastTime === null) if (sessionId !== null) newRetrievalCount = db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log
291
- WHERE session_id = ?`).get(sessionId)?.cnt ?? 0;
292
- else newRetrievalCount = db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log`).get()?.cnt ?? 0;
293
- else if (sessionId !== null) newRetrievalCount = db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log
294
- WHERE session_id = ? AND created_at > ?`).get(sessionId, lastTime)?.cnt ?? 0;
295
- else newRetrievalCount = db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log
296
- WHERE created_at > ?`).get(lastTime)?.cnt ?? 0;
297
- return newRetrievalCount >= minCount;
298
- } catch {
299
- return true;
300
- }
301
- }
302
- /**
303
- * T714: Check whether Step 9b (STDP plasticity) should run based on retrieval volume.
304
- *
305
- * Per spec §4.2, skip plasticity processing if fewer than `minRetrievalsForPlasticity`
306
- * new retrieval rows exist since the last `brain_plasticity_events` timestamp.
307
- * This prevents wasted compute on early-session edge cases where no meaningful pairs exist.
308
- *
309
- * @param projectRoot - Project root for brain.db resolution
310
- * @param sessionId - Session ID to check (null = all sessions)
311
- * @param minRetrievalsForPlasticity - Minimum row count required. Default: 2.
312
- * @returns True if plasticity should run; false if gate blocks it.
313
- */
314
- async function shouldRunPlasticity(projectRoot, sessionId = null, minRetrievalsForPlasticity = 2) {
315
- const { getBrainDb, getBrainNativeDb } = await import('./memory-sqlite2-B7dq8doO.js');
316
- await getBrainDb(projectRoot);
317
- const nativeDb = getBrainNativeDb(projectRoot);
318
- if (!nativeDb) return true;
319
- const hasMinimum = hasMinimumRetrievalsSinceLastPlasticity(nativeDb, minRetrievalsForPlasticity, sessionId);
320
- if (!hasMinimum) {
321
- const count = (() => {
322
- try {
323
- const db = nativeDb;
324
- const lastTime = (() => {
325
- if (sessionId !== null) return db.prepare(`SELECT MAX(timestamp) as last_time FROM brain_plasticity_events WHERE session_id = ?`).get(sessionId)?.last_time ?? null;
326
- return db.prepare(`SELECT MAX(timestamp) as last_time FROM brain_plasticity_events`).get()?.last_time ?? null;
327
- })();
328
- if (lastTime === null) return (sessionId !== null ? db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log WHERE session_id = ?`).get(sessionId) : db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log`).get())?.cnt ?? 0;
329
- else return (sessionId !== null ? db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log WHERE session_id = ? AND created_at > ?`).get(sessionId, lastTime) : db.prepare(`SELECT COUNT(*) as cnt FROM brain_retrieval_log WHERE created_at > ?`).get(lastTime))?.cnt ?? 0;
330
- } catch {
331
- return 0;
332
- }
333
- })();
334
- console.warn(`[plasticity] Minimum-pair gate: skipped STDP Step 9b (${count} retrievals, need >=${minRetrievalsForPlasticity})`);
335
- }
336
- return hasMinimum;
337
- }
338
- /**
339
- * Apply Spike-Timing-Dependent Plasticity to brain_page_edges.
340
- *
341
- * Reads `brain_retrieval_log` for rows within the past `lookbackDays` days
342
- * (default 30), reconstructs the temporal spike sequence, and applies the
343
- * STDP rule to every ordered pair within `pairingWindowMs` (default 24 h).
344
- *
345
- * All weight changes are logged to `brain_plasticity_events` (with
346
- * `session_id`, `retrieval_log_id`, `weight_before`, `weight_after`,
347
- * `delta_t_ms`) and to `brain_weight_history` for the full audit trail.
348
- *
349
- * ### T679 fixes (root cause: BUG-1 from stdp-wire-up-spec.md §1.4)
350
- *
351
- * - Separated `lookbackDays` (SQL fetch window, default 30d) from
352
- * `pairingWindowMs` (spike-pair Δt gate, default 5min). Previously both
353
- * used `sessionWindowMs=5min`, causing all live rows (>5min old) to produce
354
- * zero events.
355
- * - Writer now populates `session_id` + `retrieval_log_id` + `weight_before` /
356
- * `weight_after` on `brain_plasticity_events` INSERT.
357
- * - Writer now inserts into `brain_weight_history` per weight delta.
358
- * - Fixed bug where `prepareUpdateEdge.run()` was missing 4 of 9 SQL params.
359
- *
360
- * ### Backward compatibility
361
- *
362
- * The legacy `applyStdpPlasticity(root, number)` signature is still accepted.
363
- * The number is mapped to `pairingWindowMs`; `lookbackDays` stays at 30d.
364
- * A deprecation warning is emitted to steer callers to `StdpPlasticityOptions`.
365
- *
366
- * ### T10351 — process-local serializer
367
- *
368
- * `brain_plasticity_events` and `brain_weight_history` are the highest-volume
369
- * write tables in brain.db (~94% of the 1.7 GB blow-up identified in the
370
- * T10301 RCA). Two concurrent `applyStdpPlasticity` runs in the same process
371
- * (possible via the dialectic-hook + propose-tick reflex + manual
372
- * `cleo memory consolidate` racing each other) would interleave their inserts
373
- * and torn frame writes from one transaction can clobber the schema-root
374
- * B-tree page — the documented corruption signature. The exported entry
375
- * point now serializes passes via an async mutex; one pass at a time per
376
- * process. See `brain-writer-thread.ts` for the per-row chokepoint that
377
- * covers low-volume callers.
378
- *
379
- * @param projectRoot - Project root directory for brain.db resolution
380
- * @param options - `StdpPlasticityOptions` or a legacy number (deprecated `sessionWindowMs`).
381
- * @returns Counts of LTP/LTD events applied and edges created/updated.
382
- */
383
- var _stdpInFlight = null;
384
- async function applyStdpPlasticity(projectRoot, options) {
385
- while (_stdpInFlight) try {
386
- await _stdpInFlight;
387
- } catch {}
388
- const passPromise = applyStdpPlasticityImpl(projectRoot, options);
389
- _stdpInFlight = passPromise.catch(() => void 0);
390
- try {
391
- return await passPromise;
392
- } finally {
393
- _stdpInFlight = null;
394
- }
395
- }
396
- async function applyStdpPlasticityImpl(projectRoot, options) {
397
- let lookbackDays = DEFAULT_LOOKBACK_DAYS;
398
- let pairingWindowMs = DEFAULT_PAIRING_WINDOW_MS;
399
- if (typeof options === "number") {
400
- console.warn("[brain-stdp] Deprecated: passing sessionWindowMs as a number. Use StdpPlasticityOptions { lookbackDays, pairingWindowMs } instead. (T679)");
401
- pairingWindowMs = options;
402
- } else if (options !== void 0) {
403
- lookbackDays = options.lookbackDays ?? DEFAULT_LOOKBACK_DAYS;
404
- pairingWindowMs = options.pairingWindowMs ?? DEFAULT_PAIRING_WINDOW_MS;
405
- }
406
- const { getBrainDb, getBrainNativeDb } = await import('./memory-sqlite2-B7dq8doO.js');
407
- await getBrainDb(projectRoot);
408
- const nativeDb = getBrainNativeDb(projectRoot);
409
- const result = {
410
- ltpEvents: 0,
411
- ltdEvents: 0,
412
- edgesCreated: 0,
413
- pairsExamined: 0,
414
- rewardModulatedEvents: 0
415
- };
416
- if (!nativeDb) return result;
417
- try {
418
- nativeDb.prepare("SELECT 1 FROM brain_retrieval_log LIMIT 1").get();
419
- } catch {
420
- return result;
421
- }
422
- try {
423
- nativeDb.prepare("SELECT 1 FROM brain_plasticity_events LIMIT 1").get();
424
- } catch {
425
- return result;
426
- }
427
- const now = Date.now();
428
- const cutoffMs = now - lookbackDays * 24 * 60 * 60 * 1e3;
429
- const cutoffIso = new Date(cutoffMs).toISOString().replace("T", " ").slice(0, 19);
430
- const nowIso = new Date(now).toISOString().replace("T", " ").slice(0, 19);
431
- let logRows = [];
432
- try {
433
- logRows = typedAll(nativeDb.prepare(`SELECT id, entry_ids, created_at, retrieval_order, delta_ms, session_id, reward_signal
434
- FROM brain_retrieval_log
435
- WHERE created_at >= ?
436
- ORDER BY created_at ASC, id ASC
437
- LIMIT 2000`), cutoffIso);
438
- } catch {
439
- return result;
440
- }
441
- if (logRows.length === 0) return result;
442
- const spikes = [];
443
- let globalOrder = 0;
444
- for (const row of logRows) {
445
- let ids;
446
- try {
447
- ids = JSON.parse(row.entry_ids);
448
- } catch {
449
- continue;
450
- }
451
- if (!Array.isArray(ids)) continue;
452
- const rowTime = (/* @__PURE__ */ new Date(row.created_at.replace(" ", "T") + "Z")).getTime();
453
- for (const rawId of ids) {
454
- if (typeof rawId !== "string" || rawId.length === 0) continue;
455
- const entryId = rawId.includes(":") ? rawId : `observation:${rawId}`;
456
- spikes.push({
457
- entryId,
458
- rowId: row.id,
459
- retrievedAt: rowTime,
460
- order: row.retrieval_order ?? globalOrder,
461
- sessionId: row.session_id ?? null,
462
- rewardSignal: row.reward_signal ?? null
463
- });
464
- globalOrder++;
465
- }
466
- }
467
- if (spikes.length < 2) return result;
468
- spikes.sort((a, b) => a.retrievedAt - b.retrievedAt || a.order - b.order);
469
- /** T695: Maximum spikes per session contributed to cross-session pair checks. */
470
- const MAX_PAIRS_PER_SESSION = 50;
471
- const sessionBucketMap = /* @__PURE__ */ new Map();
472
- for (const spike of spikes) {
473
- const key = spike.sessionId ?? "null";
474
- const bucket = sessionBucketMap.get(key);
475
- if (bucket !== void 0) bucket.push(spike);
476
- else sessionBucketMap.set(key, [spike]);
477
- }
478
- const orderedBuckets = Array.from(sessionBucketMap.entries()).sort(([, a], [, b]) => (a[0]?.retrievedAt ?? 0) - (b[0]?.retrievedAt ?? 0));
479
- const workingSpikes = [];
480
- for (let bi = 0; bi < orderedBuckets.length; bi++) {
481
- const [, bucketSpikes] = orderedBuckets[bi];
482
- workingSpikes.push(...bucketSpikes);
483
- }
484
- const withinSessionIndex = /* @__PURE__ */ new Map();
485
- const sessionSizeMap = /* @__PURE__ */ new Map();
486
- for (const [, bucketSpikes] of orderedBuckets) for (let idx = 0; idx < bucketSpikes.length; idx++) {
487
- const spike = bucketSpikes[idx];
488
- withinSessionIndex.set(spike, idx);
489
- sessionSizeMap.set(spike.sessionId ?? "null", bucketSpikes.length);
490
- }
491
- const prepareGetEdge = nativeDb.prepare(`SELECT weight, reinforcement_count, last_reinforced_at, plasticity_class, depression_count, last_depressed_at
492
- FROM brain_page_edges
493
- WHERE from_id = ? AND to_id = ? AND edge_type = 'co_retrieved'`);
494
- const prepareUpdateEdgeLtp = nativeDb.prepare(`UPDATE brain_page_edges
495
- SET weight = MAX(?, MIN(?, weight + ?)),
496
- reinforcement_count = reinforcement_count + 1,
497
- last_reinforced_at = ?,
498
- plasticity_class = ?,
499
- stability_score = ?
500
- WHERE from_id = ? AND to_id = ? AND edge_type = 'co_retrieved'`);
501
- const prepareUpdateEdgeLtd = nativeDb.prepare(`UPDATE brain_page_edges
502
- SET weight = MAX(?, MIN(?, weight + ?)),
503
- depression_count = depression_count + 1,
504
- last_depressed_at = ?,
505
- plasticity_class = ?,
506
- stability_score = ?
507
- WHERE from_id = ? AND to_id = ? AND edge_type = 'co_retrieved'`);
508
- const prepareInsertEdge = nativeDb.prepare(`INSERT OR IGNORE INTO brain_page_edges
509
- (from_id, to_id, edge_type, weight, provenance, reinforcement_count, last_reinforced_at, plasticity_class, stability_score, created_at)
510
- VALUES (?, ?, 'co_retrieved', ?, 'plasticity:stdp-ltp', 1, ?, 'stdp', ?, ?)`);
511
- const prepareLogEvent = nativeDb.prepare(`INSERT INTO brain_plasticity_events
512
- (source_node, target_node, delta_w, kind, timestamp,
513
- session_id, retrieval_log_id, weight_before, weight_after, delta_t_ms)
514
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
515
- let prepareLogWeightHistory = null;
516
- try {
517
- nativeDb.prepare("SELECT 1 FROM brain_weight_history LIMIT 1").get();
518
- prepareLogWeightHistory = nativeDb.prepare(`INSERT INTO brain_weight_history
519
- (edge_from_id, edge_to_id, edge_type, weight_before, weight_after,
520
- delta_weight, event_kind, source_plasticity_event_id, retrieval_log_id,
521
- reward_signal, changed_at)
522
- VALUES (?, ?, 'co_retrieved', ?, ?, ?, ?, ?, ?, ?, ?)`);
523
- } catch {}
524
- for (let i = 0; i < workingSpikes.length; i++) {
525
- const spikeA = workingSpikes[i];
526
- const sessionKeyA = spikeA.sessionId ?? "null";
527
- const sessionSizeA = sessionSizeMap.get(sessionKeyA) ?? 1;
528
- const canCrossSession = (withinSessionIndex.get(spikeA) ?? 0) >= sessionSizeA - MAX_PAIRS_PER_SESSION;
529
- for (let j = i + 1; j < workingSpikes.length; j++) {
530
- const spikeB = workingSpikes[j];
531
- const deltaT = spikeB.retrievedAt - spikeA.retrievedAt;
532
- if (deltaT > pairingWindowMs) break;
533
- if (spikeA.entryId === spikeB.entryId) continue;
534
- if (sessionKeyA !== (spikeB.sessionId ?? "null") && !canCrossSession) continue;
535
- result.pairsExamined++;
536
- const tau = computeTau(deltaT);
537
- let deltaW = A_PRE * Math.exp(-deltaT / tau);
538
- if (deltaW < 1e-6) continue;
539
- const eventSessionId = spikeA.sessionId ?? null;
540
- const eventRewardSignal = spikeA.rewardSignal ?? null;
541
- let wasRewardModulated = false;
542
- if (eventRewardSignal !== null) {
543
- deltaW = Math.min(deltaW * (1 + eventRewardSignal), 2 * A_PRE);
544
- deltaW = Math.max(deltaW, 0);
545
- wasRewardModulated = true;
546
- }
547
- if (deltaW < 1e-6) {
548
- if (wasRewardModulated) result.rewardModulatedEvents++;
549
- continue;
550
- }
551
- const existingEdge = prepareGetEdge.get(spikeA.entryId, spikeB.entryId);
552
- let ltpEventId = null;
553
- try {
554
- if (existingEdge !== void 0) {
555
- const currentWeight = existingEdge.weight;
556
- const newWeight = Math.max(WEIGHT_MIN, Math.min(WEIGHT_MAX, currentWeight + deltaW));
557
- const upgradedClass = upgradePlasticityClass(existingEdge.plasticity_class, "stdp");
558
- const stability = computeStabilityScore((existingEdge.reinforcement_count ?? 0) + 1, nowIso, now);
559
- prepareUpdateEdgeLtp.run(WEIGHT_MIN, WEIGHT_MAX, deltaW, nowIso, upgradedClass, stability, spikeA.entryId, spikeB.entryId);
560
- if (isPlasticityEventDuplicate(nativeDb, spikeA.entryId, spikeB.entryId, "ltp", eventSessionId, 1)) {
561
- result.ltpEvents++;
562
- if (wasRewardModulated) result.rewardModulatedEvents++;
563
- continue;
564
- }
565
- const evtStmt = prepareLogEvent.run(spikeA.entryId, spikeB.entryId, deltaW, "ltp", nowIso, eventSessionId, spikeA.rowId, currentWeight, newWeight, deltaT);
566
- ltpEventId = evtStmt.lastInsertRowid != null ? Number(evtStmt.lastInsertRowid) : null;
567
- if (prepareLogWeightHistory) prepareLogWeightHistory.run(spikeA.entryId, spikeB.entryId, currentWeight, newWeight, deltaW, "ltp", ltpEventId, spikeA.rowId, eventRewardSignal, nowIso);
568
- } else {
569
- const noveltyBoostedWeight = deltaW * K_NOVELTY;
570
- const initialWeight = Math.min(WEIGHT_MAX, Math.min(A_PRE * K_NOVELTY, noveltyBoostedWeight));
571
- const stability = computeStabilityScore(1, nowIso, now);
572
- prepareInsertEdge.run(spikeA.entryId, spikeB.entryId, initialWeight, nowIso, stability, nowIso);
573
- result.edgesCreated++;
574
- const evtStmt = prepareLogEvent.run(spikeA.entryId, spikeB.entryId, initialWeight, "ltp", nowIso, eventSessionId, spikeA.rowId, null, initialWeight, deltaT);
575
- ltpEventId = evtStmt.lastInsertRowid != null ? Number(evtStmt.lastInsertRowid) : null;
576
- if (prepareLogWeightHistory) prepareLogWeightHistory.run(spikeA.entryId, spikeB.entryId, null, initialWeight, initialWeight, "ltp", ltpEventId, spikeA.rowId, eventRewardSignal, nowIso);
577
- }
578
- result.ltpEvents++;
579
- if (wasRewardModulated) result.rewardModulatedEvents++;
580
- } catch {}
581
- let deltaWNeg = -(A_POST * Math.exp(-deltaT / tau));
582
- let ltdWasRewardModulated = false;
583
- if (eventRewardSignal !== null) {
584
- deltaWNeg = Math.max(deltaWNeg * (1 - eventRewardSignal), -2 * A_POST);
585
- ltdWasRewardModulated = true;
586
- }
587
- const existingReverseEdge = prepareGetEdge.get(spikeB.entryId, spikeA.entryId);
588
- if (existingReverseEdge !== void 0 && Math.abs(deltaWNeg) >= 1e-6) try {
589
- const currentReverseWeight = existingReverseEdge.weight;
590
- const newReverseWeight = Math.max(WEIGHT_MIN, Math.min(WEIGHT_MAX, currentReverseWeight + deltaWNeg));
591
- const upgradedClass = upgradePlasticityClass(existingReverseEdge.plasticity_class, "stdp");
592
- const stability = computeStabilityScore(existingReverseEdge.reinforcement_count, existingReverseEdge.last_reinforced_at, now);
593
- prepareUpdateEdgeLtd.run(WEIGHT_MIN, WEIGHT_MAX, deltaWNeg, nowIso, upgradedClass, stability, spikeB.entryId, spikeA.entryId);
594
- if (isPlasticityEventDuplicate(nativeDb, spikeB.entryId, spikeA.entryId, "ltd", eventSessionId, 1)) {
595
- result.ltdEvents++;
596
- if (ltdWasRewardModulated) result.rewardModulatedEvents++;
597
- continue;
598
- }
599
- const ltdEvtStmt = prepareLogEvent.run(spikeB.entryId, spikeA.entryId, deltaWNeg, "ltd", nowIso, eventSessionId, spikeB.rowId, currentReverseWeight, newReverseWeight, deltaT);
600
- const ltdEventId = ltdEvtStmt.lastInsertRowid != null ? Number(ltdEvtStmt.lastInsertRowid) : null;
601
- if (prepareLogWeightHistory) prepareLogWeightHistory.run(spikeB.entryId, spikeA.entryId, currentReverseWeight, newReverseWeight, deltaWNeg, "ltd", ltdEventId, spikeB.rowId, eventRewardSignal, nowIso);
602
- result.ltdEvents++;
603
- if (ltdWasRewardModulated) result.rewardModulatedEvents++;
604
- } catch {}
605
- }
606
- }
607
- return result;
608
- }
609
- /**
610
- * Backfill reward_signal values on brain_retrieval_log rows for a session.
611
- *
612
- * Step 9a of the `runConsolidation` pipeline — runs BEFORE `applyStdpPlasticity`
613
- * (Step 9b) so reward signals are present when STDP reads them.
614
- *
615
- * ## Signal derivation
616
- *
617
- * Queries tasks.db for tasks attributed to `sessionId` within `lookbackDays`.
618
- * Maps task outcomes to reward scalars:
619
- *
620
- * | Task state | Reward |
621
- * |-----------|--------|
622
- * | `status='done'`, `verification.passed=true` | +1.0 (verified correct) |
623
- * | `status='done'`, verification not passed | +0.5 (completed, unverified) |
624
- * | `status='cancelled'` | -0.5 (cancelled) |
625
- *
626
- * All brain_retrieval_log rows for the session receive the derived scalar as
627
- * a session-level reward (the entire session's retrieval pattern is rated by
628
- * the session's overall task outcome). If multiple tasks exist in the session,
629
- * the MAXIMUM reward takes precedence (positive outcome wins).
630
- *
631
- * ## Skipped sessions
632
- *
633
- * Sessions with `session_id LIKE 'ses_backfill_%'` are synthetic (date-bucketed
634
- * historical rows per M1). These have no real task correlation and MUST be skipped.
635
- *
636
- * ## Idempotency
637
- *
638
- * Already-labeled rows (reward_signal IS NOT NULL) are not overwritten.
639
- * Running twice on the same session is safe.
640
- *
641
- * ## Transaction pattern
642
- *
643
- * Two separate SQLite connections (no ATTACH): reads tasks.db → computes reward
644
- * map → writes brain.db in separate transactions. Matches `cross-db-cleanup.ts`.
645
- *
646
- * @param projectRoot - Project root directory for database resolution
647
- * @param sessionId - The session ID to backfill. Pass null/undefined for no-op.
648
- * @param lookbackDays - Days of tasks.db history to scan (default 30)
649
- * @returns Counts of rows labeled and skipped
650
- *
651
- * @task T681
652
- * @epic T673
653
- */
654
- async function backfillRewardSignals(projectRoot, sessionId, lookbackDays = 30) {
655
- const result = {
656
- rowsLabeled: 0,
657
- rowsSkipped: 0
658
- };
659
- if (!sessionId) return result;
660
- if (sessionId.startsWith("ses_backfill_")) return result;
661
- let taskRows = [];
662
- try {
663
- const { getDb } = await import('./sqlite2-CUPut2fh.js');
664
- const tasksDb = await getDb(projectRoot);
665
- const { tasks } = await import('./tasks-schema2-CTMoQKQy.js');
666
- const { and, eq, inArray, gte, or, isNotNull } = await import('./index-DAgVDouG.js');
667
- const cutoffTs = (/* @__PURE__ */ new Date(Date.now() - lookbackDays * 24 * 60 * 60 * 1e3)).toISOString().replace("T", " ").slice(0, 19);
668
- taskRows = (await tasksDb.select({
669
- id: tasks.id,
670
- status: tasks.status,
671
- verificationJson: tasks.verificationJson,
672
- completedAt: tasks.completedAt,
673
- cancelledAt: tasks.cancelledAt
674
- }).from(tasks).where(and(eq(tasks.sessionId, sessionId), inArray(tasks.status, ["done", "cancelled"]), or(and(isNotNull(tasks.completedAt), gte(tasks.completedAt, cutoffTs)), and(isNotNull(tasks.cancelledAt), gte(tasks.cancelledAt, cutoffTs))))).all()).map((r) => ({
675
- id: r.id,
676
- status: r.status,
677
- verificationJson: r.verificationJson ?? null,
678
- completedAt: r.completedAt ?? null,
679
- cancelledAt: r.cancelledAt ?? null
680
- }));
681
- } catch {
682
- return result;
683
- }
684
- if (taskRows.length === 0) return result;
685
- let sessionReward = null;
686
- /** Derive the scalar reward for one task row. */
687
- function deriveTaskReward(task) {
688
- if (task.status === "cancelled") return -0.5;
689
- let verificationPassed = false;
690
- if (task.verificationJson) try {
691
- verificationPassed = JSON.parse(task.verificationJson).passed === true;
692
- } catch {}
693
- return verificationPassed ? 1 : .5;
694
- }
695
- for (const task of taskRows) {
696
- const taskReward = deriveTaskReward(task);
697
- if (sessionReward === null || taskReward > sessionReward) sessionReward = taskReward;
698
- }
699
- if (sessionReward === null) return result;
700
- try {
701
- const { getBrainDb, getBrainNativeDb } = await import('./memory-sqlite2-B7dq8doO.js');
702
- await getBrainDb(projectRoot);
703
- const nativeDb = getBrainNativeDb(projectRoot);
704
- if (!nativeDb) return result;
705
- try {
706
- nativeDb.prepare("SELECT 1 FROM brain_retrieval_log LIMIT 1").get();
707
- } catch {
708
- return result;
709
- }
710
- const updateResult = nativeDb.prepare(`UPDATE brain_retrieval_log
711
- SET reward_signal = ?
712
- WHERE session_id = ?
713
- AND reward_signal IS NULL`).run(sessionReward, sessionId);
714
- const updatedCount = typeof updateResult.changes === "number" ? updateResult.changes : 0;
715
- result.rowsLabeled = updatedCount;
716
- result.rowsSkipped = nativeDb.prepare(`SELECT COUNT(*) AS cnt FROM brain_retrieval_log
717
- WHERE session_id = ? AND reward_signal IS NOT NULL`).get(sessionId)?.cnt ?? 0;
718
- let modulatorsExist = false;
719
- try {
720
- nativeDb.prepare("SELECT 1 FROM brain_modulators LIMIT 1").get();
721
- modulatorsExist = true;
722
- } catch {}
723
- if (modulatorsExist && updatedCount > 0) {
724
- const insertModulator = nativeDb.prepare(`INSERT INTO brain_modulators
725
- (modulator_type, valence, magnitude, source_event_id, session_id, description)
726
- VALUES (?, ?, 1.0, ?, ?, ?)`);
727
- for (const task of taskRows) {
728
- const taskReward = deriveTaskReward(task);
729
- let modulatorType;
730
- let description;
731
- if (task.status === "cancelled") {
732
- modulatorType = "task_cancelled";
733
- description = `Task ${task.id} cancelled`;
734
- } else if (taskReward >= 1) {
735
- modulatorType = "task_verified";
736
- description = `Task ${task.id} completed and verified`;
737
- } else {
738
- modulatorType = "task_completed";
739
- description = `Task ${task.id} completed (unverified)`;
740
- }
741
- try {
742
- insertModulator.run(modulatorType, taskReward, task.id, sessionId, description);
743
- } catch {}
744
- }
745
- }
746
- } catch {}
747
- return result;
748
- }
749
- /**
750
- * Apply homeostatic weight decay to `hebbian` and `stdp` brain edges (Step 9c).
751
- *
752
- * Runs after `applyStdpPlasticity` (Step 9b) in the consolidation pipeline.
753
- * For each `co_retrieved` edge with `plasticity_class IN ('hebbian', 'stdp')` and
754
- * `last_reinforced_at` older than `gracePeriodDays`, applies:
755
- *
756
- * ```
757
- * new_weight = current_weight × (1 - decayRatePerDay) ^ days_idle
758
- * ```
759
- *
760
- * where `days_idle = (now − last_reinforced_at) − gracePeriodDays`.
761
- *
762
- * If `new_weight < pruneThreshold`, the edge is **deleted** and a
763
- * `brain_weight_history` row with `event_kind='prune'` is written.
764
- * If `new_weight >= pruneThreshold`, the weight is updated **without**
765
- * writing to `brain_weight_history` (routine decay is not logged per
766
- * spec §1 decision #11).
767
- *
768
- * **Protected edge classes** (never touched):
769
- * - `plasticity_class = 'static'` — structural edges
770
- * - `plasticity_class = 'external'` — externally owned edges
771
- * - Edges with `last_reinforced_at IS NULL` — never reinforced, skip decay
772
- *
773
- * @param projectRoot - Project root directory for brain.db resolution
774
- * @param options - Decay configuration (see `HomeostaticDecayOptions`)
775
- * @returns Counts of edges decayed and pruned
776
- *
777
- * @task T690
778
- * @epic T673
779
- * @see docs/specs/stdp-wire-up-spec.md §3.9
780
- */
781
- async function applyHomeostaticDecay(projectRoot, options) {
782
- const decayRatePerDay = options?.decayRatePerDay ?? .02;
783
- const gracePeriodDays = options?.gracePeriodDays ?? 7;
784
- const pruneThreshold = options?.pruneThreshold ?? .05;
785
- const result = {
786
- edgesDecayed: 0,
787
- edgesPruned: 0
788
- };
789
- const { getBrainDb, getBrainNativeDb } = await import('./memory-sqlite2-B7dq8doO.js');
790
- await getBrainDb(projectRoot);
791
- const nativeDb = getBrainNativeDb(projectRoot);
792
- if (!nativeDb) return result;
793
- try {
794
- nativeDb.prepare("SELECT 1 FROM brain_page_edges LIMIT 1").get();
795
- } catch {
796
- return result;
797
- }
798
- const nowIso = (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19);
799
- let weightHistoryExists = false;
800
- try {
801
- nativeDb.prepare("SELECT 1 FROM brain_weight_history LIMIT 1").get();
802
- weightHistoryExists = true;
803
- } catch {}
804
- let candidates = [];
805
- try {
806
- candidates = typedAll(nativeDb.prepare(`SELECT from_id, to_id, edge_type, weight, plasticity_class, last_reinforced_at
807
- FROM brain_page_edges
808
- WHERE plasticity_class IN ('hebbian', 'stdp')
809
- AND last_reinforced_at IS NOT NULL
810
- AND (julianday('now') - julianday(last_reinforced_at)) > ?`), gracePeriodDays);
811
- } catch {
812
- return result;
813
- }
814
- if (candidates.length === 0) return result;
815
- const prepareUpdateWeight = nativeDb.prepare(`UPDATE brain_page_edges
816
- SET weight = ?
817
- WHERE from_id = ? AND to_id = ? AND edge_type = ?`);
818
- const prepareDeleteEdge = nativeDb.prepare(`DELETE FROM brain_page_edges
819
- WHERE from_id = ? AND to_id = ? AND edge_type = ?`);
820
- let prepareInsertHistory = null;
821
- if (weightHistoryExists) try {
822
- prepareInsertHistory = nativeDb.prepare(`INSERT INTO brain_weight_history
823
- (edge_from_id, edge_to_id, edge_type, weight_before, weight_after,
824
- delta_weight, event_kind, changed_at)
825
- VALUES (?, ?, ?, ?, 0.0, ?, 'prune', ?)`);
826
- } catch {}
827
- const nowMs = Date.now();
828
- for (const edge of candidates) try {
829
- const daysIdle = (nowMs - (/* @__PURE__ */ new Date(edge.last_reinforced_at.replace(" ", "T") + "Z")).getTime()) / (1440 * 60 * 1e3);
830
- const decayDays = Math.max(0, daysIdle - gracePeriodDays);
831
- const newWeight = edge.weight * (1 - decayRatePerDay) ** decayDays;
832
- if (newWeight < pruneThreshold) {
833
- prepareDeleteEdge.run(edge.from_id, edge.to_id, edge.edge_type);
834
- result.edgesPruned++;
835
- if (prepareInsertHistory) {
836
- const deltaW = -edge.weight;
837
- try {
838
- prepareInsertHistory.run(edge.from_id, edge.to_id, edge.edge_type, edge.weight, deltaW, nowIso);
839
- } catch {}
840
- }
841
- } else {
842
- prepareUpdateWeight.run(newWeight, edge.from_id, edge.to_id, edge.edge_type);
843
- result.edgesDecayed++;
844
- }
845
- } catch {}
846
- return result;
847
- }
848
- /**
849
- * Prune stale rows from `brain_plasticity_events` and `brain_weight_history`.
850
- *
851
- * The two tables are STDP-driven append-only event logs. Per the T10301 RCA,
852
- * unbounded growth (19K → 3.57M rows, 446 MB + 458 MB across 19 days) caused
853
- * `brain.db` to reach 1.7 GB and contributed to the malformation incident
854
- * (Saga T10281). T10348 wires retention discipline behind this single chokepoint.
855
- *
856
- * ### Two-stage prune
857
- *
858
- * 1. **Age-based**: delete rows with `timestamp` / `changed_at` older than
859
- * `retentionDays` days (default 30 — matches STDP `lookbackDays`).
860
- * 2. **Row-cap fallback**: after step 1, if the table is still over its row
861
- * cap, delete the oldest remaining rows until under the cap.
862
- *
863
- * ### Operator override
864
- *
865
- * `CLEO_BRAIN_HISTORY_RETENTION_DAYS=0` disables both stages entirely. Any
866
- * positive integer value REPLACES `retentionDays` (the option still wins if
867
- * passed explicitly — env is only consulted when no option is passed).
868
- *
869
- * ### Best-effort semantics
870
- *
871
- * Every SQL call is wrapped — missing tables, partial-migration installs,
872
- * and per-row errors are all logged silently and never throw. This function
873
- * MUST NEVER block `runConsolidation` even when retention storage is wedged.
874
- *
875
- * ### Logging
876
- *
877
- * When `plasticityEventsDeleted + weightHistoryDeleted >= PRUNE_HISTORY_LOG_THRESHOLD`
878
- * (default 10_000), a single `[pruneStaleHistory]` info line is emitted via
879
- * `console.info` so operators can see large prunes in session output. Smaller
880
- * prunes are silent. VACUUM is NEVER triggered automatically — heavyweight
881
- * compaction stays operator-driven (`cleo doctor --vacuum`).
882
- *
883
- * @param projectRoot - Project root directory for brain.db resolution
884
- * @param options - Retention configuration (see `PruneStaleHistoryOptions`)
885
- * @returns Counts of rows deleted from each table
886
- *
887
- * @task T10348
888
- * @epic T10286
889
- */
890
- async function pruneStaleHistory(projectRoot, options) {
891
- const result = {
892
- plasticityEventsDeleted: 0,
893
- weightHistoryDeleted: 0,
894
- skipped: false
895
- };
896
- let retentionDays;
897
- if (options?.retentionDays !== void 0) retentionDays = options.retentionDays;
898
- else {
899
- const envRaw = process.env["CLEO_BRAIN_HISTORY_RETENTION_DAYS"];
900
- if (envRaw !== void 0 && envRaw !== "") {
901
- const parsed = Number.parseInt(envRaw, 10);
902
- retentionDays = Number.isFinite(parsed) && parsed >= 0 ? parsed : 30;
903
- } else retentionDays = 30;
904
- }
905
- if (retentionDays === 0) {
906
- result.skipped = true;
907
- return result;
908
- }
909
- const plasticityRowCap = options?.plasticityEventsRowCap ?? 5e4;
910
- const weightHistoryRowCap = options?.weightHistoryRowCap ?? 5e4;
911
- const { getBrainDb, getBrainNativeDb } = await import('./memory-sqlite2-B7dq8doO.js');
912
- await getBrainDb(projectRoot);
913
- const nativeDb = getBrainNativeDb(projectRoot);
914
- if (!nativeDb) return result;
915
- const cutoffMs = Date.now() - retentionDays * 24 * 60 * 60 * 1e3;
916
- const cutoffIso = new Date(cutoffMs).toISOString().replace("T", " ").slice(0, 19);
917
- try {
918
- nativeDb.prepare("SELECT 1 FROM brain_plasticity_events LIMIT 1").get();
919
- const changes = nativeDb.prepare(`DELETE FROM brain_plasticity_events WHERE timestamp < ?`).run(cutoffIso).changes;
920
- result.plasticityEventsDeleted += Number(changes ?? 0);
921
- } catch {}
922
- try {
923
- nativeDb.prepare("SELECT 1 FROM brain_weight_history LIMIT 1").get();
924
- const changes = nativeDb.prepare(`DELETE FROM brain_weight_history WHERE changed_at < ?`).run(cutoffIso).changes;
925
- result.weightHistoryDeleted += Number(changes ?? 0);
926
- } catch {}
927
- try {
928
- const row = nativeDb.prepare(`SELECT COUNT(*) AS cnt FROM brain_plasticity_events`).get();
929
- const count = Number(row?.cnt ?? 0);
930
- if (count > plasticityRowCap) {
931
- const overage = count - plasticityRowCap;
932
- const info = nativeDb.prepare(`DELETE FROM brain_plasticity_events
933
- WHERE id IN (
934
- SELECT id FROM brain_plasticity_events
935
- ORDER BY timestamp ASC, id ASC
936
- LIMIT ?
937
- )`).run(overage);
938
- result.plasticityEventsDeleted += Number(info.changes ?? 0);
939
- }
940
- } catch {}
941
- try {
942
- const row = nativeDb.prepare(`SELECT COUNT(*) AS cnt FROM brain_weight_history`).get();
943
- const count = Number(row?.cnt ?? 0);
944
- if (count > weightHistoryRowCap) {
945
- const overage = count - weightHistoryRowCap;
946
- const info = nativeDb.prepare(`DELETE FROM brain_weight_history
947
- WHERE id IN (
948
- SELECT id FROM brain_weight_history
949
- ORDER BY changed_at ASC, id ASC
950
- LIMIT ?
951
- )`).run(overage);
952
- result.weightHistoryDeleted += Number(info.changes ?? 0);
953
- }
954
- } catch {}
955
- if (result.plasticityEventsDeleted + result.weightHistoryDeleted >= 1e4) console.info(`[pruneStaleHistory] Pruned ${result.plasticityEventsDeleted} plasticity_events + ${result.weightHistoryDeleted} weight_history rows (retention=${retentionDays}d). Consider running 'cleo doctor --vacuum' to reclaim disk space.`);
956
- return result;
957
- }
958
-
959
- export { applyHomeostaticDecay, applyStdpPlasticity, backfillRewardSignals, pruneStaleHistory, shouldRunPlasticity };
960
- //# sourceMappingURL=brain-stdp2-BxSBIlSr.js.map