cognova 0.2.27 → 0.2.28

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 (193) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{DcU1vVta.js → -XfM4jpu.js} +1 -1
  3. package/.output/public/_nuxt/0L-9iIbm.js +1 -0
  4. package/.output/public/_nuxt/{tHI-osWJ.js → 0mcDe5Hg.js} +1 -1
  5. package/.output/public/_nuxt/{UPUPLBes.js → 4Nlt-3Ix.js} +1 -1
  6. package/.output/public/_nuxt/{lheR7PB2.js → 5FVMuLeh.js} +1 -1
  7. package/.output/public/_nuxt/{2Eo3qwxj.js → 5qkiDtwf.js} +1 -1
  8. package/.output/public/_nuxt/{iGKcFJAp.js → 6_fEEpaq.js} +1 -1
  9. package/.output/public/_nuxt/{C4zN4OGX.js → 944smzho.js} +1 -1
  10. package/.output/public/_nuxt/{YJeqx4Ll.js → B03oRqJe.js} +1 -1
  11. package/.output/public/_nuxt/{CZT64TBr.js → B06CcGVK.js} +3 -3
  12. package/.output/public/_nuxt/{BivpMuR_.js → B0UpgYEt.js} +1 -1
  13. package/.output/public/_nuxt/{DwIL_HsX.js → B0YLhHra.js} +1 -1
  14. package/.output/public/_nuxt/B0v0agy0.js +1 -0
  15. package/.output/public/_nuxt/{Bf_52ujb.js → B1A26hhf.js} +1 -1
  16. package/.output/public/_nuxt/{DTb_yOmO.js → B592hx40.js} +1 -1
  17. package/.output/public/_nuxt/B5l6QVGz.js +1 -0
  18. package/.output/public/_nuxt/{8T7bItPs.js → B6BF2w8r.js} +3 -3
  19. package/.output/public/_nuxt/{BpN402qF.js → B6m5ExpJ.js} +1 -1
  20. package/.output/public/_nuxt/{BiIuqBpS.js → B91qlTSF.js} +3 -3
  21. package/.output/public/_nuxt/B9sXHKws.js +1 -0
  22. package/.output/public/_nuxt/{KtLDewau.js → BAh-k-y8.js} +1 -1
  23. package/.output/public/_nuxt/{C6IV65Gy.js → BDQ6hxO7.js} +1 -1
  24. package/.output/public/_nuxt/{BFhzL-L6.js → BGytjslk.js} +1 -1
  25. package/.output/public/_nuxt/{Bl7M4LXt.js → BIoHE1oQ.js} +1 -1
  26. package/.output/public/_nuxt/{CKcctj3r.js → BNXyokAF.js} +1 -1
  27. package/.output/public/_nuxt/{DbpzXcer.js → BNxg8OvE.js} +1 -1
  28. package/.output/public/_nuxt/{B_IIr5Dj.js → BPBLcBHM.js} +2 -2
  29. package/.output/public/_nuxt/{CAdrgifl.js → BQeDYnyj.js} +1 -1
  30. package/.output/public/_nuxt/{DfLpZE5I.js → BUfJTKJk.js} +1 -1
  31. package/.output/public/_nuxt/{DGMjiZpH.js → BVJkcOi4.js} +1 -1
  32. package/.output/public/_nuxt/{BISpLSKY.js → BVNZYpXH.js} +1 -1
  33. package/.output/public/_nuxt/{B2ejvp4F.js → BZ3u3Znq.js} +1 -1
  34. package/.output/public/_nuxt/{CJa5E6Hb.js → B_V_KZmg.js} +1 -1
  35. package/.output/public/_nuxt/{UvHHDzTl.js → BaTcZylh.js} +1 -1
  36. package/.output/public/_nuxt/{Bo6WXrLP.js → BbdFZa4U.js} +1 -1
  37. package/.output/public/_nuxt/{DA0qOQ-H.js → BeAxkmtt.js} +1 -1
  38. package/.output/public/_nuxt/{BH_Lonko.js → BfiU8B4M.js} +1 -1
  39. package/.output/public/_nuxt/{DHmoYAOF.js → BhOf69HZ.js} +1 -1
  40. package/.output/public/_nuxt/{2ixlK8td.js → BlKgmZLh.js} +1 -1
  41. package/.output/public/_nuxt/{Dzjd35Uu.js → BlplwzgB.js} +1 -1
  42. package/.output/public/_nuxt/{uP6kBJyw.js → BnmZcuhY.js} +1 -1
  43. package/.output/public/_nuxt/{CfTBjUgE.js → BpExBTyC.js} +1 -1
  44. package/.output/public/_nuxt/{CXWZZrP6.js → BuURpKT4.js} +1 -1
  45. package/.output/public/_nuxt/{qBDqAV_3.js → Bvqgc_wA.js} +1 -1
  46. package/.output/public/_nuxt/{CzYLEcMN.js → C0FuVjdX.js} +1 -1
  47. package/.output/public/_nuxt/{DWJ2tQkX.js → C1RFLzd_.js} +1 -1
  48. package/.output/public/_nuxt/{DCj0VKbE.js → C4MrxKnP.js} +1 -1
  49. package/.output/public/_nuxt/{Bzkzi9GX.js → C4ui9LWq.js} +1 -1
  50. package/.output/public/_nuxt/{DlOqPmYc.js → C7RIYfkH.js} +1 -1
  51. package/.output/public/_nuxt/{BRHBOpyl.js → C7hn68Tp.js} +1 -1
  52. package/.output/public/_nuxt/{B8E4nRtc.js → C8gC5cUj.js} +1 -1
  53. package/.output/public/_nuxt/{l0zNTVMN.js → CAJH0xMY.js} +1 -1
  54. package/.output/public/_nuxt/{T9m6PG7Q.js → CBpuaar1.js} +1 -1
  55. package/.output/public/_nuxt/{CuzrMna6.js → CDP4J5em.js} +1 -1
  56. package/.output/public/_nuxt/{Ctt1B8Lg.js → CGTQGJ_c.js} +1 -1
  57. package/.output/public/_nuxt/{D5dMt776.js → CHd8mdNy.js} +1 -1
  58. package/.output/public/_nuxt/{MwLHW_S3.js → CHn6tbtE.js} +1 -1
  59. package/.output/public/_nuxt/{CAANELnI.js → CKfAI3Hb.js} +1 -1
  60. package/.output/public/_nuxt/{DSNEk90K.js → CLm_rHHY.js} +1 -1
  61. package/.output/public/_nuxt/{BcGMY6mI.js → CLzxl_Kg.js} +1 -1
  62. package/.output/public/_nuxt/{BqSmw12h.js → CNVj60PG.js} +1 -1
  63. package/.output/public/_nuxt/{BYRCVlFB.js → CNi_mvQS.js} +1 -1
  64. package/.output/public/_nuxt/{7VIfpS3K.js → COMJZX17.js} +1 -1
  65. package/.output/public/_nuxt/{Bq9rkJSd.js → CQcJNYmv.js} +1 -1
  66. package/.output/public/_nuxt/{DH9moCuc.js → CT8T1FW9.js} +1 -1
  67. package/.output/public/_nuxt/{Cv0TenvS.js → CTJDAjdO.js} +1 -1
  68. package/.output/public/_nuxt/{C5IBUVPW.js → CTXxmwx3.js} +1 -1
  69. package/.output/public/_nuxt/{BWgA6Icb.js → CV92g0qz.js} +1 -1
  70. package/.output/public/_nuxt/{BIRrab0B.js → CVwzer_Y.js} +1 -1
  71. package/.output/public/_nuxt/{CfiM4f33.js → CXRkSVkD.js} +1 -1
  72. package/.output/public/_nuxt/{CAaAX5yO.js → CamCmKfq.js} +1 -1
  73. package/.output/public/_nuxt/{BpyMs36w.js → CaohnGAD.js} +1 -1
  74. package/.output/public/_nuxt/{CSZw5eEq.js → Cg8k3_b4.js} +1 -1
  75. package/.output/public/_nuxt/{6f0CtDWh.js → CiQJYbKL.js} +1 -1
  76. package/.output/public/_nuxt/{CLk-ZoD9.js → Cjj-eCEV.js} +1 -1
  77. package/.output/public/_nuxt/{De94RhMH.js → CkfP4uja.js} +1 -1
  78. package/.output/public/_nuxt/{DM2gKi5N.js → CoUQ3qpL.js} +1 -1
  79. package/.output/public/_nuxt/{D7PJ9LEZ.js → CopZwjN8.js} +1 -1
  80. package/.output/public/_nuxt/{BSHWLnRg.js → Cpyrc9BG.js} +1 -1
  81. package/.output/public/_nuxt/{DcC8s2L0.js → CtLfbSRS.js} +1 -1
  82. package/.output/public/_nuxt/{DjY2CmhB.js → CtyKXJ-J.js} +1 -1
  83. package/.output/public/_nuxt/{J00SROjJ.js → CvaD7s2l.js} +1 -1
  84. package/.output/public/_nuxt/{DKFnR3f3.js → Cw2TcJMF.js} +1 -1
  85. package/.output/public/_nuxt/{IwZpKn7a.js → Cwel2ykQ.js} +1 -1
  86. package/.output/public/_nuxt/{CZZl10o-.js → CyZlzytZ.js} +1 -1
  87. package/.output/public/_nuxt/{awkGRsuS.js → Cygjd4rF.js} +1 -1
  88. package/.output/public/_nuxt/{tIRQIyWk.js → CzxGRepV.js} +1 -1
  89. package/.output/public/_nuxt/{BrN_ntKk.js → D0fJg-Y2.js} +1 -1
  90. package/.output/public/_nuxt/{Dn0NJtvh.js → D12yGpMq.js} +1 -1
  91. package/.output/public/_nuxt/{DbARsMbj.js → D7Bxfxio.js} +1 -1
  92. package/.output/public/_nuxt/{B3WWnSJo.js → DEl5RR7R.js} +1 -1
  93. package/.output/public/_nuxt/{Cj2M_iYP.js → DFVXHy0C.js} +1 -1
  94. package/.output/public/_nuxt/{DNNOQPuJ.js → DFW8HOVB.js} +1 -1
  95. package/.output/public/_nuxt/{CJAiAVnY.js → DH2yWNbZ.js} +1 -1
  96. package/.output/public/_nuxt/{dGa7RyJ8.js → DIDjR8Ry.js} +1 -1
  97. package/.output/public/_nuxt/{DfIQdSBL.js → DKHJBr2m.js} +1 -1
  98. package/.output/public/_nuxt/{DuDOxoNd.js → DKd2_wBj.js} +1 -1
  99. package/.output/public/_nuxt/{D2A5WweU.js → DKrd1pCW.js} +1 -1
  100. package/.output/public/_nuxt/{eTB2hbQs.js → DOcEwtqN.js} +1 -1
  101. package/.output/public/_nuxt/{C4XDZQVz.js → DSQ9bpNJ.js} +1 -1
  102. package/.output/public/_nuxt/{CjPpmwck.js → DWG9jKCo.js} +1 -1
  103. package/.output/public/_nuxt/{D-ysM-Cd.js → DY78sr_b.js} +1 -1
  104. package/.output/public/_nuxt/{BY7b-3vi.js → DZQxxfue.js} +1 -1
  105. package/.output/public/_nuxt/{kbSxj5Sa.js → DZpgj5sA.js} +1 -1
  106. package/.output/public/_nuxt/{CSwU6kaw.js → Dc8vLBQN.js} +1 -1
  107. package/.output/public/_nuxt/{BiQQLbjx.js → DcT64MxD.js} +1 -1
  108. package/.output/public/_nuxt/{CbLDrSEX.js → DdmLHNRP.js} +1 -1
  109. package/.output/public/_nuxt/{SbeB_1mT.js → Dg19_qAK.js} +1 -1
  110. package/.output/public/_nuxt/{CDX3o-x3.js → DhIZvLeI.js} +1 -1
  111. package/.output/public/_nuxt/{aIIZqPga.js → DjaEQQhf.js} +1 -1
  112. package/.output/public/_nuxt/{qEwYRBS3.js → DkUMlRf8.js} +1 -1
  113. package/.output/public/_nuxt/{De4iE8YV.js → DkjKiJOq.js} +1 -1
  114. package/.output/public/_nuxt/{BF1GoXYw.js → DlR5hUi3.js} +1 -1
  115. package/.output/public/_nuxt/{CSQciH0m.js → DnfG5RzJ.js} +1 -1
  116. package/.output/public/_nuxt/{DhGDBmGP.js → DohhIeRk.js} +1 -1
  117. package/.output/public/_nuxt/{D5ut0FcJ.js → Dom1vIen.js} +1 -1
  118. package/.output/public/_nuxt/{FOQllft2.js → Ds97nj0P.js} +1 -1
  119. package/.output/public/_nuxt/{CU58Jr3-.js → DxT3YmAC.js} +1 -1
  120. package/.output/public/_nuxt/{CnLzT6v5.js → DxcN7Uv7.js} +1 -1
  121. package/.output/public/_nuxt/{BIhmDjJ8.js → DxcbYcrE.js} +1 -1
  122. package/.output/public/_nuxt/{Dj__3Bye.js → DyVUuE07.js} +1 -1
  123. package/.output/public/_nuxt/{FZ4DGVUC.js → Dz-vwDzE.js} +1 -1
  124. package/.output/public/_nuxt/{CSu09NYz.js → EeCE4NvG.js} +1 -1
  125. package/.output/public/_nuxt/{BiDXeTfW.js → EnGykH_X.js} +1 -1
  126. package/.output/public/_nuxt/{yyeTZy_R.js → GJMyZaby.js} +1 -1
  127. package/.output/public/_nuxt/{Dhf7T8TT.js → I7OHJVxg.js} +1 -1
  128. package/.output/public/_nuxt/{B3EVQLy0.js → K0RZW9fp.js} +1 -1
  129. package/.output/public/_nuxt/{_fMejg0f.js → K1o4brLx.js} +1 -1
  130. package/.output/public/_nuxt/{Bes0SO2V.js → OKVQJ7yj.js} +1 -1
  131. package/.output/public/_nuxt/{C6M-e7pT.js → Q3QJAuZ2.js} +1 -1
  132. package/.output/public/_nuxt/{2nDmPuey.js → Tirj2rC0.js} +1 -1
  133. package/.output/public/_nuxt/{p1xXbtMk.js → VcsszHDj.js} +1 -1
  134. package/.output/public/_nuxt/WG3LXN-9.js +1 -0
  135. package/.output/public/_nuxt/{C1pt3HyX.js → aUYaYlYl.js} +1 -1
  136. package/.output/public/_nuxt/builds/latest.json +1 -1
  137. package/.output/public/_nuxt/builds/meta/7de5e0df-2e0a-435c-a2e3-fc2312beb6ad.json +1 -0
  138. package/.output/public/_nuxt/{BIRvCR2S.js → cGEbEAGz.js} +1 -1
  139. package/.output/public/_nuxt/{UmRz2svG.js → ds0WOZHj.js} +1 -1
  140. package/.output/public/_nuxt/{LFbgE4QY.js → e4zQkzJm.js} +1 -1
  141. package/.output/public/_nuxt/{k5H4Okf8.js → eFu2sWbl.js} +1 -1
  142. package/.output/public/_nuxt/entry.B0qcqYYu.css +1 -0
  143. package/.output/public/_nuxt/{Bx3A9QLd.js → ggWK6BEa.js} +1 -1
  144. package/.output/public/_nuxt/{DD864DXc.js → hkCaWCzP.js} +1 -1
  145. package/.output/public/_nuxt/{DCKH9QC5.js → jF9FNyOl.js} +1 -1
  146. package/.output/public/_nuxt/{DEZB2UVM.js → jenjyHml.js} +1 -1
  147. package/.output/public/_nuxt/{B6kGLfxE.js → kMwuhvCf.js} +1 -1
  148. package/.output/public/_nuxt/{KEgU3jLl.js → oWO88tvt.js} +1 -1
  149. package/.output/public/_nuxt/{DMar0qcv.js → olSL1K5t.js} +1 -1
  150. package/.output/public/_nuxt/{CnViW7-O.js → ptAR8AWT.js} +1 -1
  151. package/.output/public/_nuxt/{Dm4dqn9Q.js → rTscsMvH.js} +1 -1
  152. package/.output/public/_nuxt/{BP60VAOa.js → xooRr3tW.js} +1 -1
  153. package/.output/public/_nuxt/{CjhuD2Kg.js → zApTn6EM.js} +2 -2
  154. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  155. package/.output/server/chunks/build/{memories-BqA719O1.mjs → memories-DLa6uEfV.mjs} +2 -31
  156. package/.output/server/chunks/build/memories-DLa6uEfV.mjs.map +1 -0
  157. package/.output/server/chunks/build/server.mjs +1 -1
  158. package/.output/server/chunks/build/styles.mjs +2 -2
  159. package/.output/server/chunks/nitro/nitro.mjs +933 -920
  160. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  161. package/.output/server/chunks/routes/api/memory/context.get.mjs +13 -9
  162. package/.output/server/chunks/routes/api/memory/context.get.mjs.map +1 -1
  163. package/.output/server/chunks/routes/api/memory/extract.post.mjs +4 -7
  164. package/.output/server/chunks/routes/api/memory/extract.post.mjs.map +1 -1
  165. package/.output/server/chunks/routes/api/memory/search.get.mjs +22 -25
  166. package/.output/server/chunks/routes/api/memory/search.get.mjs.map +1 -1
  167. package/.output/server/chunks/routes/api/memory/store.post.mjs +1 -3
  168. package/.output/server/chunks/routes/api/memory/store.post.mjs.map +1 -1
  169. package/.output/server/package.json +1 -1
  170. package/Claude/skills/memory/memory.py +1 -7
  171. package/app/pages/memories.vue +0 -15
  172. package/dist/cli/index.js +1 -0
  173. package/package.json +1 -1
  174. package/server/api/memory/context.get.ts +19 -15
  175. package/server/api/memory/extract.post.ts +1 -2
  176. package/server/api/memory/search.get.ts +29 -34
  177. package/server/api/memory/store.post.ts +1 -2
  178. package/server/bridge/responder.ts +10 -5
  179. package/server/db/schema.ts +1 -2
  180. package/server/drizzle/migrations/0017_unusual_landau.sql +1 -0
  181. package/server/drizzle/migrations/meta/0017_snapshot.json +1965 -0
  182. package/server/drizzle/migrations/meta/_journal.json +7 -0
  183. package/server/services/memory-extractor.ts +3 -6
  184. package/server/utils/document-sync.ts +27 -20
  185. package/shared/types/index.ts +1 -4
  186. package/.output/public/_nuxt/BMsNdiuj.js +0 -1
  187. package/.output/public/_nuxt/BUa1DKMp.js +0 -1
  188. package/.output/public/_nuxt/BgQoNHMg.js +0 -1
  189. package/.output/public/_nuxt/CzSXUP4q.js +0 -1
  190. package/.output/public/_nuxt/DwbYPACo.js +0 -1
  191. package/.output/public/_nuxt/builds/meta/61420747-850d-4496-817a-d86f57e0fb7d.json +0 -1
  192. package/.output/public/_nuxt/entry.ZJxWCrU6.css +0 -1
  193. package/.output/server/chunks/build/memories-BqA719O1.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/.pnpm/destr@2.0.5/node_modules/destr/dist/index.mjs","../../../../node_modules/.pnpm/ufo@1.6.1/node_modules/ufo/dist/index.mjs","../../../../node_modules/.pnpm/cookie-es@1.2.2/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/radix3@1.1.2/node_modules/radix3/dist/index.mjs","../../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../../../../node_modules/.pnpm/node-mock-http@1.0.4/node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/.pnpm/h3@1.15.4/node_modules/h3/dist/index.mjs","../../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../../node_modules/.pnpm/node-fetch-native@1.6.7/node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/config.js","../../../../app/app.config.ts","../../../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/.pnpm/@nuxtjs+color-mode@3.5.2_magicast@0.5.1/node_modules/@nuxtjs/color-mode/dist/runtime/nitro-plugin.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../server/plugins/00.env-validate.ts","../../../../server/plugins/01.api-token.ts","../../../../server/db/schema.ts","../../../../server/utils/db-state.ts","../../../../server/db/index.ts","../../../../server/db/migrate.ts","../../../../server/utils/auth.ts","../../../../server/db/seed.ts","../../../../server/plugins/02.database.ts","../../../../server/utils/path-validator.ts","../../../../server/utils/frontmatter.ts","../../../../server/utils/document-sync.ts","../../../../server/plugins/03.file-watcher.ts","../../../../server/utils/agent-registry.ts","../../../../server/utils/notification-bus.ts","../../../../server/utils/notify-resource.ts","../../../../server/utils/log-token-usage.ts","../../../../server/services/agent-executor.ts","../../../../server/services/cron-scheduler.ts","../../../../server/utils/agent-cleanup.ts","../../../../server/plugins/04.cron-agents.ts","../../../../server/plugins/05.skills-catalog.ts","../../../../server/bridge/registry.ts","../../../../server/utils/crypto.ts","../../../../server/utils/get-secret.ts","../../../../server/utils/sdk-env.ts","../../../../server/bridge/responder.ts","../../../../server/bridge/router.ts","../../../../server/bridge/adapters/telegram.ts","../../../../server/bridge/adapters/discord.ts","../../../../server/bridge/adapters/imessage.ts","../../../../server/bridge/adapters/google.ts","../../../../server/bridge/adapters/email.ts","../../../../server/bridge/lifecycle.ts","../../../../server/plugins/06.message-bridge.ts","../../../../node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/auth.ts","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/.pnpm/ufo@1.6.3/node_modules/ufo/dist/index.mjs","../../../../shared/utils/formatting.ts","../../../../shared/utils/language-detection.ts","../../../../shared/utils/notification-defaults.ts","../../../../server/utils/chat-session-manager.ts","../../../../server/utils/db-guard.ts","../../../../server/utils/pty-manager.ts","../../../../server/utils/skills-path.ts","../../../../node_modules/.cache/nuxt/.nuxt/nuxt-icon-server-bundle.mjs","../../../../node_modules/.pnpm/@nuxt+icon@2.1.1_magicast@0.5.1_vite@7.3.0_@types+node@25.0.8_jiti@2.6.1_lightningcss@1_01287b657f4a2f684624a151274b0e62/node_modules/@nuxt/icon/dist/runtime/server/api.js","../../../../node_modules/.pnpm/@nuxtjs+mdc@0.20.0_magicast@0.5.1/node_modules/@nuxtjs/mdc/dist/runtime/highlighter/event-handler.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/.pnpm/cookie-es@2.0.0/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","decode","JOIN_LEADING_SLASH_RE","withTrailingSlash","hasLeadingSlash","withLeadingSlash","joinURL","getQuery","isNonEmptyURL","parse","tryDecode","serialize","createRouter","f","h","c","i","l","createError","process","parse$1","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","hash","_inlineAppConfig","createRadixRouter","join","schema.user","schema.session","schema.account","schema.verification","existsSync","createHash","basename","readFile","schema.documents","writeFile","readdir","watch","__publicField","EventEmitter","schema.tokenUsage","schema.cronAgentRuns","schema.cronAgents","schema.skillsCatalog","schema.conversations","randomUUID","schema.memoryChunks","schema.bridgeMessages","schema.conversationMessages","_a","_b","_c","_d","normalized","schema.bridges","session","pty","colonIdx","key","val","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,79,80,82,83,84,92,93,94,95,96,97,98,99]}
1
+ {"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/.pnpm/destr@2.0.5/node_modules/destr/dist/index.mjs","../../../../node_modules/.pnpm/ufo@1.6.1/node_modules/ufo/dist/index.mjs","../../../../node_modules/.pnpm/cookie-es@1.2.2/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/radix3@1.1.2/node_modules/radix3/dist/index.mjs","../../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../../../../node_modules/.pnpm/node-mock-http@1.0.4/node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/.pnpm/h3@1.15.4/node_modules/h3/dist/index.mjs","../../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../../node_modules/.pnpm/node-fetch-native@1.6.7/node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/config.js","../../../../app/app.config.ts","../../../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/.pnpm/@nuxtjs+color-mode@3.5.2_magicast@0.5.1/node_modules/@nuxtjs/color-mode/dist/runtime/nitro-plugin.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../server/plugins/00.env-validate.ts","../../../../server/plugins/01.api-token.ts","../../../../server/db/schema.ts","../../../../server/utils/db-state.ts","../../../../server/db/index.ts","../../../../server/db/migrate.ts","../../../../server/utils/auth.ts","../../../../server/db/seed.ts","../../../../server/plugins/02.database.ts","../../../../server/utils/path-validator.ts","../../../../server/utils/frontmatter.ts","../../../../server/utils/document-sync.ts","../../../../server/plugins/03.file-watcher.ts","../../../../server/utils/agent-registry.ts","../../../../server/utils/notification-bus.ts","../../../../server/utils/notify-resource.ts","../../../../server/utils/log-token-usage.ts","../../../../server/services/agent-executor.ts","../../../../server/services/cron-scheduler.ts","../../../../server/utils/agent-cleanup.ts","../../../../server/plugins/04.cron-agents.ts","../../../../server/plugins/05.skills-catalog.ts","../../../../server/bridge/registry.ts","../../../../server/utils/crypto.ts","../../../../server/utils/get-secret.ts","../../../../server/utils/sdk-env.ts","../../../../server/bridge/responder.ts","../../../../server/bridge/router.ts","../../../../server/bridge/adapters/telegram.ts","../../../../server/bridge/adapters/discord.ts","../../../../server/bridge/adapters/imessage.ts","../../../../server/bridge/adapters/google.ts","../../../../server/bridge/adapters/email.ts","../../../../server/bridge/lifecycle.ts","../../../../server/plugins/06.message-bridge.ts","../../../../node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/auth.ts","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/.pnpm/ufo@1.6.3/node_modules/ufo/dist/index.mjs","../../../../shared/utils/formatting.ts","../../../../shared/utils/language-detection.ts","../../../../shared/utils/notification-defaults.ts","../../../../server/utils/chat-session-manager.ts","../../../../server/utils/db-guard.ts","../../../../server/utils/pty-manager.ts","../../../../server/utils/skills-path.ts","../../../../node_modules/.cache/nuxt/.nuxt/nuxt-icon-server-bundle.mjs","../../../../node_modules/.pnpm/@nuxt+icon@2.1.1_magicast@0.5.1_vite@7.3.0_@types+node@25.0.8_jiti@2.6.1_lightningcss@1_01287b657f4a2f684624a151274b0e62/node_modules/@nuxt/icon/dist/runtime/server/api.js","../../../../node_modules/.pnpm/@nuxtjs+mdc@0.20.0_magicast@0.5.1/node_modules/@nuxtjs/mdc/dist/runtime/highlighter/event-handler.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/.pnpm/cookie-es@2.0.0/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","decode","JOIN_LEADING_SLASH_RE","withTrailingSlash","hasLeadingSlash","withLeadingSlash","joinURL","getQuery","isNonEmptyURL","parse","tryDecode","serialize","createRouter","f","h","c","i","l","createError","process","parse$1","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","hash","_inlineAppConfig","createRadixRouter","join","schema.user","schema.session","schema.account","schema.verification","existsSync","createHash","basename","readFile","schema.documents","writeFile","readdir","watch","__publicField","EventEmitter","schema.tokenUsage","schema.cronAgentRuns","schema.cronAgents","schema.skillsCatalog","schema.conversations","randomUUID","schema.bridgeMessages","schema.conversationMessages","_a","_b","_c","_d","normalized","schema.bridges","session","pty","colonIdx","key","val","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,79,80,82,83,84,92,93,94,95,96,97,98,99]}
@@ -1,5 +1,5 @@
1
- import { d as defineEventHandler, r as requireDb, i as getQuery, a as getDb, Q as memoryChunks } from '../../../nitro/nitro.mjs';
2
- import { eq, desc, sql } from 'drizzle-orm';
1
+ import { d as defineEventHandler, r as requireDb, i as getQuery, a as getDb } from '../../../nitro/nitro.mjs';
2
+ import { sql } from 'drizzle-orm';
3
3
  import '@anthropic-ai/claude-agent-sdk';
4
4
  import 'module';
5
5
  import 'path';
@@ -44,13 +44,17 @@ const context_get = defineEventHandler(async (event) => {
44
44
  const db = getDb();
45
45
  const projectPath = query.project;
46
46
  const limit = Math.min(parseInt(query.limit) || 5, 20);
47
- let dbQuery = db.select().from(memoryChunks);
48
- if (projectPath)
49
- dbQuery = dbQuery.where(eq(memoryChunks.projectPath, projectPath));
50
- const memories = await dbQuery.orderBy(
51
- desc(memoryChunks.relevanceScore),
52
- desc(memoryChunks.createdAt)
53
- ).limit(limit);
47
+ const projectFilter = projectPath ? sql`AND project_path = ${projectPath}` : sql``;
48
+ const memories = await db.execute(sql`
49
+ SELECT *,
50
+ (1.0 + LN(1 + access_count))
51
+ * (1.0 / (1.0 + EXTRACT(EPOCH FROM NOW() - COALESCE(last_accessed_at, created_at)) / 2592000))
52
+ AS score
53
+ FROM memory_chunks
54
+ WHERE 1=1 ${projectFilter}
55
+ ORDER BY score DESC
56
+ LIMIT ${limit}
57
+ `);
54
58
  if (memories.length > 0) {
55
59
  const ids = memories.map((m) => m.id);
56
60
  await db.execute(sql`
@@ -1 +1 @@
1
- {"version":3,"file":"context.get.mjs","sources":["../../../../../../server/api/memory/context.get.ts"],"names":["schema.memoryChunks"],"mappings":"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"}
1
+ {"version":3,"file":"context.get.mjs","sources":["../../../../../../server/api/memory/context.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,EAAA,MAAA,KAAA,KAAA,EAAA;AAEA,EAAA,MAAA,cAAA,KAAA,CAAA,OAAA;AACA,EAAA,MAAA,KAAA,GAAA,KAAA,GAAA,CAAA,QAAA,CAAA,MAAA,KAAA,CAAA,IAAA,GAAA,EAAA,CAAA;AAKA,EAAA,MAAA,aAAA,GAAA,WAAA,GACA,GAAA,CAAA,mBAAA,EAAA,WAAA,CAAA,CAAA,GACA,GAAA,CAAA,CAAA;AAEA,EAAA,MAAA,QAAA,GAAA,MAAA,EAAA,CAAA,OAAA,CAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAMA,aAAA;AAAA;AAAA,UAAA,EAEA,KAAA;AAAA,EAAA,CACA,CAAA;AAGA,EAAA,IAAA,QAAA,CAAA,SAAA,CAAA,EAAA;AACA,IAAA,MAAA,GAAA,GAAA,QAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CAAA;AACA,IAAA,MAAA,GAAA,OAAA,CAAA,GAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAIA,GAAA,CAAA;AAAA,IAAA,CACA,CAAA;AAAA,EACA;AAGA,EAAA,MAAA,SAAA,GAAA,iBAAA,QAAA,CAAA;AAEA,EAAA,MAAA,QAAA,GAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACA;AAEA,EAAA,OAAA,EAAA,MAAA,QAAA,EAAA;AACA,CAAA,CAAA;AAEA,SAAA,iBAAA,QAAA,EAAA;AACA,EAAA,IAAA,SAAA,MAAA,KAAA,CAAA;AACA,IAAA,OAAA,EAAA;AAEA,EAAA,MAAA,KAAA,GAAA,CAAA,CAAA,EAAA,QAAA,CAAA,MAAA,CAAA;AAAA,CAAA,CAAA;AAGA,EAAA,MAAA,MAAA,GAAA,QAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA,KAAA;AACA,IAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA,SAAA,CAAA;AACA,MAAA,GAAA,CAAA,CAAA,CAAA,SAAA,CAAA,GAAA,EAAA;AACA,IAAA,GAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA;AACA,IAAA,OAAA,GAAA;AAAA,EACA,CAAA,EAAA,EAAA,CAAA;AAEA,EAAA,MAAA,UAAA,GAAA;AAAA,IACA,QAAA,EAAA,WAAA;AAAA,IACA,IAAA,EAAA,WAAA;AAAA,IACA,QAAA,EAAA,WAAA;AAAA,IACA,OAAA,EAAA,UAAA;AAAA,IACA,UAAA,EAAA,aAAA;AAAA,IACA,OAAA,EAAA;AAAA,GACA;AAEA,EAAA,KAAA,MAAA,CAAA,IAAA,EAAA,KAAA,KAAA,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,EAAA;AACA,IAAA,MAAA,KAAA,GAAA,UAAA,CAAA,IAAA,CAAA,IAAA,IAAA;AACA,IAAA,KAAA,CAAA,IAAA,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACA,IAAA,KAAA,MAAA,IAAA,IAAA,KAAA;AACA,MAAA,KAAA,CAAA,IAAA,CAAA,CAAA,EAAA,EAAA,IAAA,CAAA,OAAA,CAAA,CAAA,CAAA;AACA,IAAA,KAAA,CAAA,KAAA,EAAA,CAAA;AAAA,EACA;AAEA,EAAA,OAAA,KAAA,CAAA,KAAA,IAAA,CAAA;AACA;;;;"}
@@ -41,7 +41,7 @@ import 'consola';
41
41
  const EXTRACTION_PROMPT = `You are a memory extraction assistant. Analyze this conversation excerpt and extract key memories worth preserving for future reference.
42
42
 
43
43
  Output ONLY a JSON array with this exact structure (no markdown, no code blocks, no explanation):
44
- [{"type": "decision|fact|solution|pattern|preference", "content": "concise statement", "relevance": 0.0-1.0}]
44
+ [{"type": "decision|fact|solution|pattern|preference", "content": "concise statement"}]
45
45
 
46
46
  Memory types:
47
47
  - decision: Choices made about implementation, architecture, or approach
@@ -55,7 +55,6 @@ Rules:
55
55
  - Skip routine acknowledgments ("I'll do that", "Sure", "Let me...")
56
56
  - Skip obvious facts already in code, debugging steps, greetings
57
57
  - Content max 100 characters
58
- - relevance: 1.0 = highly important, 0.5 = moderately useful, 0.1 = minor detail
59
58
  - If nothing worth extracting, return []
60
59
 
61
60
  Conversation to analyze:
@@ -108,10 +107,9 @@ ${transcript.slice(0, 8e3)}`,
108
107
  if (!jsonMatch)
109
108
  return [];
110
109
  const memories = JSON.parse(jsonMatch[0]);
111
- return memories.filter((m) => isValidMemoryType(m.type) && m.content && typeof m.relevance === "number").map((m) => ({
110
+ return memories.filter((m) => isValidMemoryType(m.type) && m.content).map((m) => ({
112
111
  type: m.type,
113
- content: m.content.slice(0, 200),
114
- relevance: Math.max(0, Math.min(1, m.relevance))
112
+ content: m.content.slice(0, 200)
115
113
  }));
116
114
  } catch (error) {
117
115
  console.error("[memory-extractor] Failed to extract memories:", error);
@@ -162,8 +160,7 @@ const extract_post = defineEventHandler(async (event) => {
162
160
  sessionId: body.sessionId,
163
161
  projectPath: body.projectPath,
164
162
  chunkType: m.type,
165
- content: m.content,
166
- relevanceScore: m.relevance
163
+ content: m.content
167
164
  }))).returning();
168
165
  console.log(`[memory] Extracted and stored ${inserted.length} memories`);
169
166
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"extract.post.mjs","sources":["../../../../../../server/services/memory-extractor.ts","../../../../../../server/api/memory/extract.post.ts"],"names":["schema.memoryChunks"],"mappings":"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"}
1
+ {"version":3,"file":"extract.post.mjs","sources":["../../../../../../server/services/memory-extractor.ts","../../../../../../server/api/memory/extract.post.ts"],"names":["schema.memoryChunks"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { d as defineEventHandler, r as requireDb, i as getQuery, a as getDb, Q as memoryChunks } from '../../../nitro/nitro.mjs';
2
- import { eq, gte, sql, inArray, and, desc } from 'drizzle-orm';
1
+ import { d as defineEventHandler, r as requireDb, i as getQuery, a as getDb } from '../../../nitro/nitro.mjs';
2
+ import { sql } from 'drizzle-orm';
3
3
  import '@anthropic-ai/claude-agent-sdk';
4
4
  import 'module';
5
5
  import 'path';
@@ -45,33 +45,30 @@ const search_get = defineEventHandler(async (event) => {
45
45
  const searchQuery = query.query;
46
46
  const projectPath = query.projectPath;
47
47
  const chunkType = query.chunkType;
48
- const minRelevance = query.minRelevance ? parseFloat(query.minRelevance) : void 0;
49
48
  const limit = Math.min(parseInt(query.limit) || 20, 100);
50
49
  const conditions = [];
51
50
  if (projectPath)
52
- conditions.push(eq(memoryChunks.projectPath, projectPath));
51
+ conditions.push(sql`project_path = ${projectPath}`);
53
52
  if (chunkType)
54
- conditions.push(eq(memoryChunks.chunkType, chunkType));
55
- if (minRelevance !== void 0)
56
- conditions.push(gte(memoryChunks.relevanceScore, minRelevance));
57
- if (searchQuery) {
58
- const ftsResult = await db.execute(sql`
59
- SELECT id FROM memory_chunks
60
- WHERE search_vector @@ plainto_tsquery('english', ${searchQuery})
61
- ORDER BY ts_rank(search_vector, plainto_tsquery('english', ${searchQuery})) DESC
62
- LIMIT ${limit}
63
- `);
64
- const ids = ftsResult.map((r) => r.id);
65
- if (ids.length === 0) return { data: [] };
66
- conditions.push(inArray(memoryChunks.id, ids));
67
- }
68
- let dbQuery = db.select().from(memoryChunks);
69
- if (conditions.length > 0)
70
- dbQuery = dbQuery.where(and(...conditions));
71
- const memories = await dbQuery.orderBy(
72
- desc(memoryChunks.relevanceScore),
73
- desc(memoryChunks.createdAt)
74
- ).limit(limit);
53
+ conditions.push(sql`chunk_type = ${chunkType}`);
54
+ if (searchQuery)
55
+ conditions.push(sql`search_vector @@ plainto_tsquery('english', ${searchQuery})`);
56
+ const whereClause = conditions.length > 0 ? sql`WHERE ${sql.join(conditions, sql` AND `)}` : sql``;
57
+ const scoreExpr = searchQuery ? sql`
58
+ ts_rank(search_vector, plainto_tsquery('english', ${searchQuery}))
59
+ * (1.0 + LN(1 + access_count))
60
+ * (1.0 / (1.0 + EXTRACT(EPOCH FROM NOW() - COALESCE(last_accessed_at, created_at)) / 2592000))
61
+ ` : sql`
62
+ (1.0 + LN(1 + access_count))
63
+ * (1.0 / (1.0 + EXTRACT(EPOCH FROM NOW() - COALESCE(last_accessed_at, created_at)) / 2592000))
64
+ `;
65
+ const memories = await db.execute(sql`
66
+ SELECT *, ${scoreExpr} AS score
67
+ FROM memory_chunks
68
+ ${whereClause}
69
+ ORDER BY score DESC
70
+ LIMIT ${limit}
71
+ `);
75
72
  if (memories.length > 0) {
76
73
  try {
77
74
  const ids = memories.map((m) => m.id);
@@ -1 +1 @@
1
- {"version":3,"file":"search.get.mjs","sources":["../../../../../../server/api/memory/search.get.ts"],"names":["schema.memoryChunks"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,EAAA,MAAA,KAAA,KAAA,EAAA;AAEA,EAAA,MAAA,cAAA,KAAA,CAAA,KAAA;AACA,EAAA,MAAA,cAAA,KAAA,CAAA,WAAA;AACA,EAAA,MAAA,YAAA,KAAA,CAAA,SAAA;AACA,EAAA,MAAA,eAAA,KAAA,CAAA,YAAA,GAAA,UAAA,CAAA,KAAA,CAAA,YAAA,CAAA,GAAA,MAAA;AACA,EAAA,MAAA,KAAA,GAAA,KAAA,GAAA,CAAA,QAAA,CAAA,MAAA,KAAA,CAAA,IAAA,IAAA,GAAA,CAAA;AAEA,EAAA,MAAA,aAAA,EAAA;AAGA,EAAA,IAAA,WAAA;AACA,IAAA,UAAA,CAAA,KAAA,EAAA,CAAAA,YAAA,CAAA,WAAA,EAAA,WAAA,CAAA,CAAA;AAGA,EAAA,IAAA,SAAA;AACA,IAAA,UAAA,CAAA,KAAA,EAAA,CAAAA,YAAA,CAAA,SAAA,EAAA,SAAA,CAAA,CAAA;AAGA,EAAA,IAAA,YAAA,KAAA,MAAA;AACA,IAAA,UAAA,CAAA,KAAA,GAAA,CAAAA,YAAA,CAAA,cAAA,EAAA,YAAA,CAAA,CAAA;AAGA,EAAA,IAAA,WAAA,EAAA;AACA,IAAA,MAAA,SAAA,GAAA,MAAA,EAAA,CAAA,OAAA,CAAA,GAAA;AAAA;AAAA,wDAAA,EAEA,WAAA,CAAA;AAAA,iEAAA,EACA,WAAA,CAAA;AAAA,YAAA,EACA,KAAA;AAAA,IAAA,CACA,CAAA;AACA,IAAA,MAAA,GAAA,GAAA,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CAAA;AACA,IAAA,IAAA,IAAA,MAAA,KAAA,CAAA,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA;AACA,IAAA,UAAA,CAAA,KAAA,OAAA,CAAAA,YAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA,UAAA,EAAA,CAAA,MAAA,EAAA,CACA,IAAA,CAAAA,YAAA,CAAA;AAEA,EAAA,IAAA,WAAA,MAAA,GAAA,CAAA;AACA,IAAA,OAAA,GAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,GAAA,UAAA,CAAA,CAAA;AAEA,EAAA,MAAA,QAAA,GAAA,MAAA,OAAA,CACA,OAAA;AAAA,IACA,IAAA,CAAAA,YAAA,CAAA,cAAA,CAAA;AAAA,IACA,IAAA,CAAAA,YAAA,CAAA,SAAA;AAAA,GACA,CACA,MAAA,KAAA,CAAA;AAGA,EAAA,IAAA,QAAA,CAAA,SAAA,CAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,MAAA,GAAA,GAAA,QAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CAAA;AACA,MAAA,MAAA,GAAA,OAAA,CAAA,GAAA;AAAA;AAAA;AAAA;AAAA,6BAAA,EAIA,GAAA,CAAA,IAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,KAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,MAAA,CACA,CAAA;AAAA,IACA,SAAA,CAAA,EAAA;AAEA,MAAA,OAAA,CAAA,KAAA,CAAA,kDAAA,CAAA,CAAA;AAAA,IACA;AAAA,EACA;AAEA,EAAA,OAAA,EAAA,MAAA,QAAA,EAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"search.get.mjs","sources":["../../../../../../server/api/memory/search.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,EAAA,MAAA,KAAA,KAAA,EAAA;AAEA,EAAA,MAAA,cAAA,KAAA,CAAA,KAAA;AACA,EAAA,MAAA,cAAA,KAAA,CAAA,WAAA;AACA,EAAA,MAAA,YAAA,KAAA,CAAA,SAAA;AACA,EAAA,MAAA,KAAA,GAAA,KAAA,GAAA,CAAA,QAAA,CAAA,MAAA,KAAA,CAAA,IAAA,IAAA,GAAA,CAAA;AAGA,EAAA,MAAA,aAAA,EAAA;AAEA,EAAA,IAAA,WAAA;AACA,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,CAAA,eAAA,EAAA,WAAA,CAAA,CAAA,CAAA;AAEA,EAAA,IAAA,SAAA;AACA,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,CAAA,aAAA,EAAA,SAAA,CAAA,CAAA,CAAA;AAEA,EAAA,IAAA,WAAA;AACA,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,CAAA,4CAAA,EAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AAEA,EAAA,MAAA,WAAA,GAAA,UAAA,CAAA,MAAA,GAAA,CAAA,GACA,GAAA,CAAA,MAAA,EAAA,IAAA,IAAA,CAAA,UAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,GACA,GAAA,CAAA,CAAA;AAGA,EAAA,MAAA,YAAA,WAAA,GACA,GAAA;AAAA,0DAAA,EACA,WAAA,CAAA;AAAA;AAAA;AAAA,MAAA,CAAA,GAIA,GAAA;AAAA;AAAA;AAAA,MAAA,CAAA;AAKA,EAAA,MAAA,QAAA,GAAA,MAAA,EAAA,CAAA,OAAA,CAAA,GAAA;AAAA,cAAA,EACA,SAAA,CAAA;AAAA;AAAA,IAAA,EAEA,WAAA;AAAA;AAAA,UAAA,EAEA,KAAA;AAAA,EAAA,CACA,CAAA;AAGA,EAAA,IAAA,QAAA,CAAA,SAAA,CAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,MAAA,GAAA,GAAA,QAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CAAA;AACA,MAAA,MAAA,GAAA,OAAA,CAAA,GAAA;AAAA;AAAA;AAAA;AAAA,6BAAA,EAIA,GAAA,CAAA,IAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,KAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,MAAA,CACA,CAAA;AAAA,IACA,SAAA,CAAA,EAAA;AAEA,MAAA,OAAA,CAAA,KAAA,CAAA,kDAAA,CAAA,CAAA;AAAA,IACA;AAAA,EACA;AAEA,EAAA,OAAA,EAAA,MAAA,QAAA,EAAA;AACA,CAAA,CAAA;;;;"}
@@ -39,7 +39,6 @@ import '@iconify/utils';
39
39
  import 'consola';
40
40
 
41
41
  const store_post = defineEventHandler(async (event) => {
42
- var _a;
43
42
  requireDb();
44
43
  const body = await readBody(event);
45
44
  const db = getDb();
@@ -52,8 +51,7 @@ const store_post = defineEventHandler(async (event) => {
52
51
  projectPath: body.projectPath,
53
52
  chunkType: body.chunkType,
54
53
  content: body.content,
55
- sourceExcerpt: body.sourceExcerpt,
56
- relevanceScore: (_a = body.relevanceScore) != null ? _a : 1
54
+ sourceExcerpt: body.sourceExcerpt
57
55
  }).returning();
58
56
  console.log(`[memory] Stored memory: ${body.chunkType} - ${body.content.slice(0, 50)}...`);
59
57
  notifyResourceChange({ resource: "memory", action: "create", resourceId: inserted.id, resourceName: body.chunkType });
@@ -1 +1 @@
1
- {"version":3,"file":"store.post.mjs","sources":["../../../../../../server/api/memory/store.post.ts"],"names":["schema.memoryChunks"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,EAAA,MAAA,KAAA,KAAA,EAAA;AAEA,EAAA,IAAA,CAAA,IAAA,CAAA,OAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,uBAAA,CAAA;AAEA,EAAA,IAAA,CAAA,IAAA,CAAA,SAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,yBAAA,CAAA;AAEA,EAAA,MAAA,CAAA,QAAA,CAAA,GAAA,MAAA,GAAA,MAAA,CAAAA,YAAA,CAAA,CACA,MAAA,CAAA;AAAA,IACA,WAAA,IAAA,CAAA,SAAA;AAAA,IACA,aAAA,IAAA,CAAA,WAAA;AAAA,IACA,WAAA,IAAA,CAAA,SAAA;AAAA,IACA,SAAA,IAAA,CAAA,OAAA;AAAA,IACA,eAAA,IAAA,CAAA,aAAA;AAAA,IACA,cAAA,EAAA,CAAA,EAAA,GAAA,IAAA,CAAA,cAAA,KAAA,IAAA,GAAA,EAAA,GAAA;AAAA,GACA,EACA,SAAA,EAAA;AAEA,EAAA,OAAA,CAAA,GAAA,CAAA,CAAA,wBAAA,EAAA,IAAA,CAAA,SAAA,CAAA,GAAA,EAAA,IAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAEA,EAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,YAAA,EAAA,IAAA,CAAA,SAAA,EAAA,CAAA;AAEA,EAAA,OAAA,EAAA,MAAA,QAAA,EAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"store.post.mjs","sources":["../../../../../../server/api/memory/store.post.ts"],"names":["schema.memoryChunks"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,EAAA,MAAA,KAAA,KAAA,EAAA;AAEA,EAAA,IAAA,CAAA,IAAA,CAAA,OAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,uBAAA,CAAA;AAEA,EAAA,IAAA,CAAA,IAAA,CAAA,SAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,yBAAA,CAAA;AAEA,EAAA,MAAA,CAAA,QAAA,CAAA,GAAA,MAAA,GAAA,MAAA,CAAAA,YAAA,CAAA,CACA,MAAA,CAAA;AAAA,IACA,WAAA,IAAA,CAAA,SAAA;AAAA,IACA,aAAA,IAAA,CAAA,WAAA;AAAA,IACA,WAAA,IAAA,CAAA,SAAA;AAAA,IACA,SAAA,IAAA,CAAA,OAAA;AAAA,IACA,eAAA,IAAA,CAAA;AAAA,GACA,EACA,SAAA,EAAA;AAEA,EAAA,OAAA,CAAA,GAAA,CAAA,CAAA,wBAAA,EAAA,IAAA,CAAA,SAAA,CAAA,GAAA,EAAA,IAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAEA,EAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,YAAA,EAAA,IAAA,CAAA,SAAA,EAAA,CAAA;AAEA,EAAA,OAAA,EAAA,MAAA,QAAA,EAAA;AACA,CAAA,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cognova-prod",
3
- "version": "0.2.27",
3
+ "version": "0.2.28",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
@@ -36,7 +36,6 @@ def format_memory(memory: dict) -> str:
36
36
  chunk_type = memory.get('chunkType', 'fact')
37
37
  icon = type_icons.get(chunk_type, '[?]')
38
38
  content = memory.get('content', '')
39
- relevance = memory.get('relevanceScore', 1.0)
40
39
 
41
40
  # First line: icon and content
42
41
  line1 = f"{icon} {content}"
@@ -47,8 +46,6 @@ def format_memory(memory: dict) -> str:
47
46
  if memory.get('projectPath'):
48
47
  parts.append(f"Project: {memory['projectPath']}")
49
48
 
50
- parts.append(f"Relevance: {relevance:.2f}")
51
-
52
49
  if memory.get('accessCount'):
53
50
  parts.append(f"Accessed: {memory['accessCount']}x")
54
51
 
@@ -117,8 +114,7 @@ def cmd_store(args):
117
114
  """Store a new memory explicitly."""
118
115
  data = {
119
116
  'content': args.content,
120
- 'chunkType': args.type or 'fact',
121
- 'relevanceScore': args.relevance or 0.9
117
+ 'chunkType': args.type or 'fact'
122
118
  }
123
119
 
124
120
  if args.project:
@@ -234,8 +230,6 @@ def main():
234
230
  default='fact',
235
231
  help='Memory type (default: fact)')
236
232
  store_p.add_argument('--project', '-p', help='Associated project path')
237
- store_p.add_argument('--relevance', '-r', type=float, default=0.9,
238
- help='Relevance score 0-1 (default: 0.9)')
239
233
 
240
234
  # Decisions
241
235
  decisions_p = subparsers.add_parser('decisions', help='List decision memories')
@@ -102,7 +102,6 @@ function formatTime(date: Date | string): string {
102
102
  const columns = [
103
103
  { accessorKey: 'chunkType', header: 'Type' },
104
104
  { accessorKey: 'content', header: 'Content' },
105
- { accessorKey: 'relevanceScore', header: 'Relevance' },
106
105
  { accessorKey: 'accessCount', header: 'Accessed' },
107
106
  { accessorKey: 'createdAt', header: 'Created' },
108
107
  { accessorKey: 'actions', header: '' }
@@ -225,20 +224,6 @@ onMounted(() => {
225
224
  </span>
226
225
  </template>
227
226
 
228
- <template #relevanceScore-cell="{ row }">
229
- <div class="flex items-center gap-2">
230
- <div class="w-16 h-1.5 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
231
- <div
232
- class="h-full bg-primary-500 rounded-full"
233
- :style="{ width: `${row.original.relevanceScore * 100}%` }"
234
- />
235
- </div>
236
- <span class="text-xs text-muted">
237
- {{ (row.original.relevanceScore * 100).toFixed(0) }}%
238
- </span>
239
- </div>
240
- </template>
241
-
242
227
  <template #accessCount-cell="{ row }">
243
228
  <span class="text-sm text-muted">
244
229
  {{ row.original.accessCount }}x
package/dist/cli/index.js CHANGED
@@ -2934,6 +2934,7 @@ async function update() {
2934
2934
  const envWithDotenv = { ...process.env, ...dotenv };
2935
2935
  s.start("Installing dependencies");
2936
2936
  execSync8("pnpm install", { cwd: installDir, stdio: "pipe" });
2937
+ execSync8("pnpm rebuild", { cwd: installDir, stdio: "pipe" });
2937
2938
  s.stop("Dependencies installed");
2938
2939
  s.start("Running database migrations");
2939
2940
  execSync8("pnpm db:migrate", { cwd: installDir, stdio: "pipe", env: envWithDotenv });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cognova",
3
3
  "type": "module",
4
- "version": "0.2.27",
4
+ "version": "0.2.28",
5
5
  "description": "Personal knowledge management system with Claude Code integration",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1,5 +1,5 @@
1
- import { desc, eq, sql } from 'drizzle-orm'
2
- import { getDb, schema } from '~~/server/db'
1
+ import { sql } from 'drizzle-orm'
2
+ import { getDb } from '~~/server/db'
3
3
  import { requireDb } from '~~/server/utils/db-guard'
4
4
  import type { MemoryChunk, MemoryContextResponse } from '~~/shared/types'
5
5
 
@@ -12,19 +12,23 @@ export default defineEventHandler(async (event) => {
12
12
  const projectPath = query.project as string | undefined
13
13
  const limit = Math.min(parseInt(query.limit as string) || 5, 20)
14
14
 
15
- // Get recent, high-relevance memories for this project
16
- let dbQuery = db.select()
17
- .from(schema.memoryChunks)
18
-
19
- if (projectPath)
20
- dbQuery = dbQuery.where(eq(schema.memoryChunks.projectPath, projectPath)) as typeof dbQuery
21
-
22
- const memories = await dbQuery
23
- .orderBy(
24
- desc(schema.memoryChunks.relevanceScore),
25
- desc(schema.memoryChunks.createdAt)
26
- )
27
- .limit(limit)
15
+ // Score memories by access frequency + recency (no static relevance)
16
+ // access boost: ln(1 + access_count) gives diminishing returns
17
+ // recency: 30-day half-life decay on last access or creation time
18
+ const projectFilter = projectPath
19
+ ? sql`AND project_path = ${projectPath}`
20
+ : sql``
21
+
22
+ const memories = await db.execute<MemoryChunk>(sql`
23
+ SELECT *,
24
+ (1.0 + LN(1 + access_count))
25
+ * (1.0 / (1.0 + EXTRACT(EPOCH FROM NOW() - COALESCE(last_accessed_at, created_at)) / 2592000))
26
+ AS score
27
+ FROM memory_chunks
28
+ WHERE 1=1 ${projectFilter}
29
+ ORDER BY score DESC
30
+ LIMIT ${limit}
31
+ `)
28
32
 
29
33
  // Update access count for retrieved memories
30
34
  if (memories.length > 0) {
@@ -28,8 +28,7 @@ export default defineEventHandler(async (event) => {
28
28
  sessionId: body.sessionId,
29
29
  projectPath: body.projectPath,
30
30
  chunkType: m.type,
31
- content: m.content,
32
- relevanceScore: m.relevance
31
+ content: m.content
33
32
  })))
34
33
  .returning()
35
34
 
@@ -1,5 +1,5 @@
1
- import { sql, desc, eq, and, gte, inArray } from 'drizzle-orm'
2
- import { getDb, schema } from '~~/server/db'
1
+ import { sql } from 'drizzle-orm'
2
+ import { getDb } from '~~/server/db'
3
3
  import { requireDb } from '~~/server/utils/db-guard'
4
4
  import type { MemoryChunk, MemoryChunkType } from '~~/shared/types'
5
5
 
@@ -12,48 +12,43 @@ export default defineEventHandler(async (event) => {
12
12
  const searchQuery = query.query as string | undefined
13
13
  const projectPath = query.projectPath as string | undefined
14
14
  const chunkType = query.chunkType as MemoryChunkType | undefined
15
- const minRelevance = query.minRelevance ? parseFloat(query.minRelevance as string) : undefined
16
15
  const limit = Math.min(parseInt(query.limit as string) || 20, 100)
17
16
 
18
- const conditions = []
17
+ // Build WHERE conditions
18
+ const conditions: ReturnType<typeof sql>[] = []
19
19
 
20
- // Project filter
21
20
  if (projectPath)
22
- conditions.push(eq(schema.memoryChunks.projectPath, projectPath))
21
+ conditions.push(sql`project_path = ${projectPath}`)
23
22
 
24
- // Type filter
25
23
  if (chunkType)
26
- conditions.push(eq(schema.memoryChunks.chunkType, chunkType))
24
+ conditions.push(sql`chunk_type = ${chunkType}`)
27
25
 
28
- // Relevance filter
29
- if (minRelevance !== undefined)
30
- conditions.push(gte(schema.memoryChunks.relevanceScore, minRelevance))
26
+ if (searchQuery)
27
+ conditions.push(sql`search_vector @@ plainto_tsquery('english', ${searchQuery})`)
31
28
 
32
- // Full-text search via tsvector + GIN index
33
- if (searchQuery) {
34
- const ftsResult = await db.execute<{ id: string }>(sql`
35
- SELECT id FROM memory_chunks
36
- WHERE search_vector @@ plainto_tsquery('english', ${searchQuery})
37
- ORDER BY ts_rank(search_vector, plainto_tsquery('english', ${searchQuery})) DESC
38
- LIMIT ${limit}
39
- `)
40
- const ids = ftsResult.map(r => r.id)
41
- if (ids.length === 0) return { data: [] as MemoryChunk[] }
42
- conditions.push(inArray(schema.memoryChunks.id, ids))
43
- }
44
-
45
- let dbQuery = db.select()
46
- .from(schema.memoryChunks)
29
+ const whereClause = conditions.length > 0
30
+ ? sql`WHERE ${sql.join(conditions, sql` AND `)}`
31
+ : sql``
47
32
 
48
- if (conditions.length > 0)
49
- dbQuery = dbQuery.where(and(...conditions)) as typeof dbQuery
33
+ // Computed score: FTS rank (if searching) * access boost * recency decay
34
+ const scoreExpr = searchQuery
35
+ ? sql`
36
+ ts_rank(search_vector, plainto_tsquery('english', ${searchQuery}))
37
+ * (1.0 + LN(1 + access_count))
38
+ * (1.0 / (1.0 + EXTRACT(EPOCH FROM NOW() - COALESCE(last_accessed_at, created_at)) / 2592000))
39
+ `
40
+ : sql`
41
+ (1.0 + LN(1 + access_count))
42
+ * (1.0 / (1.0 + EXTRACT(EPOCH FROM NOW() - COALESCE(last_accessed_at, created_at)) / 2592000))
43
+ `
50
44
 
51
- const memories = await dbQuery
52
- .orderBy(
53
- desc(schema.memoryChunks.relevanceScore),
54
- desc(schema.memoryChunks.createdAt)
55
- )
56
- .limit(limit)
45
+ const memories = await db.execute<MemoryChunk>(sql`
46
+ SELECT *, ${scoreExpr} AS score
47
+ FROM memory_chunks
48
+ ${whereClause}
49
+ ORDER BY score DESC
50
+ LIMIT ${limit}
51
+ `)
57
52
 
58
53
  // Update access count and timestamp for retrieved memories
59
54
  if (memories.length > 0) {
@@ -21,8 +21,7 @@ export default defineEventHandler(async (event) => {
21
21
  projectPath: body.projectPath,
22
22
  chunkType: body.chunkType,
23
23
  content: body.content,
24
- sourceExcerpt: body.sourceExcerpt,
25
- relevanceScore: body.relevanceScore ?? 1.0
24
+ sourceExcerpt: body.sourceExcerpt
26
25
  })
27
26
  .returning()
28
27
 
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from 'crypto'
2
2
  import { query } from '@anthropic-ai/claude-agent-sdk'
3
- import { desc, eq } from 'drizzle-orm'
3
+ import { eq, sql } from 'drizzle-orm'
4
4
  import { getDb, schema } from '~~/server/db'
5
5
  import { logTokenUsage } from '~~/server/utils/log-token-usage'
6
6
  import { sdkEnv } from '~~/server/utils/sdk-env'
@@ -44,10 +44,15 @@ async function getOrCreateMainChat() {
44
44
  async function loadMemoryContext(): Promise<string> {
45
45
  try {
46
46
  const db = getDb()
47
- const memories = await db.select()
48
- .from(schema.memoryChunks)
49
- .orderBy(desc(schema.memoryChunks.relevanceScore), desc(schema.memoryChunks.createdAt))
50
- .limit(10)
47
+ const memories = await db.execute<{ content: string }>(sql`
48
+ SELECT content,
49
+ (1.0 + LN(1 + access_count))
50
+ * (1.0 / (1.0 + EXTRACT(EPOCH FROM NOW() - COALESCE(last_accessed_at, created_at)) / 2592000))
51
+ AS score
52
+ FROM memory_chunks
53
+ ORDER BY score DESC
54
+ LIMIT 10
55
+ `)
51
56
 
52
57
  if (memories.length === 0) return ''
53
58
 
@@ -333,8 +333,7 @@ export const memoryChunks = pgTable('memory_chunks', {
333
333
  content: text('content').notNull(), // The extracted memory (concise)
334
334
  sourceExcerpt: text('source_excerpt'), // Original context (truncated for reference)
335
335
 
336
- // Relevance & lifecycle (Mem0-inspired)
337
- relevanceScore: real('relevance_score').default(1.0).notNull(), // 0-1, decays over time
336
+ // Usage tracking (relevance is computed at query time from access + recency)
338
337
  accessCount: integer('access_count').default(0).notNull(), // How often retrieved
339
338
  lastAccessedAt: timestamp('last_accessed_at', { withTimezone: true }),
340
339
 
@@ -0,0 +1 @@
1
+ ALTER TABLE "memory_chunks" DROP COLUMN "relevance_score";