opensentinel 3.1.1 → 3.7.0

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 (361) hide show
  1. package/README.md +138 -83
  2. package/dist/agent-manager-JZ4IM7XI.js +39 -0
  3. package/dist/agent-processor-DDDHC2SO.js +281 -0
  4. package/dist/agent-processor-DDDHC2SO.js.map +1 -0
  5. package/dist/agent-types-2T4PXLFQ.js +12 -0
  6. package/dist/alerting-LK7VVYTX.js +699 -0
  7. package/dist/alerting-LK7VVYTX.js.map +1 -0
  8. package/dist/analysis-agent-JWN2GXYE.js +288 -0
  9. package/dist/analysis-agent-JWN2GXYE.js.map +1 -0
  10. package/dist/analyzer-OTWE3ARE.js +22 -0
  11. package/dist/{archiver-AVNBYCKQ.js → archiver-FPGKRP6P.js} +2 -2
  12. package/dist/{audit-logger-OBPR7CRO.js → audit-logger-CI4WZQPD.js} +6 -5
  13. package/dist/{auth-UOX5K2BE.js → auth-PH5IHISW.js} +2 -2
  14. package/dist/{autonomy-ZXDBDQUJ.js → autonomy-N7W5XPLX.js} +4 -3
  15. package/dist/autonomy-N7W5XPLX.js.map +1 -0
  16. package/dist/{aws-s3-Q4LLZZPD.js → aws-s3-QZMURYXB.js} +2 -2
  17. package/dist/{backup-restore-PZ7CYYB7.js → backup-restore-72OQTZO3.js} +2 -2
  18. package/dist/{blocks-R3PODY47.js → blocks-YOWOESDD.js} +4 -4
  19. package/dist/bot-VDHBGUVI.js +47 -0
  20. package/dist/brain-6QTXN4QP.js +66 -0
  21. package/dist/{camera-monitor-M5CYKUU4.js → camera-monitor-LHTUWHEL.js} +2 -2
  22. package/dist/{charts-V7ARZNKF.js → charts-FJ32GQK7.js} +2 -2
  23. package/dist/{chunk-WRAKK6K6.js → chunk-2I5QHYG6.js} +5 -3
  24. package/dist/chunk-2I5QHYG6.js.map +1 -0
  25. package/dist/{chunk-TVEWKIK3.js → chunk-2WTKTG2C.js} +2 -2
  26. package/dist/chunk-3AWAWRWB.js +143 -0
  27. package/dist/chunk-3AWAWRWB.js.map +1 -0
  28. package/dist/{chunk-ZLZKF2PM.js → chunk-4KIHDIXZ.js} +43 -2
  29. package/dist/chunk-4KIHDIXZ.js.map +1 -0
  30. package/dist/{chunk-EVE7MIIY.js → chunk-4WH6MFEW.js} +15 -16
  31. package/dist/chunk-4WH6MFEW.js.map +1 -0
  32. package/dist/{chunk-I6BDYQIG.js → chunk-56UJS2LA.js} +6 -6
  33. package/dist/chunk-56UJS2LA.js.map +1 -0
  34. package/dist/chunk-5BTVJR7R.js +37 -0
  35. package/dist/chunk-5BTVJR7R.js.map +1 -0
  36. package/dist/chunk-5JJTLWOR.js +1021 -0
  37. package/dist/chunk-5JJTLWOR.js.map +1 -0
  38. package/dist/chunk-66SAOZPU.js +236 -0
  39. package/dist/chunk-66SAOZPU.js.map +1 -0
  40. package/dist/chunk-6HGMRR4J.js +113 -0
  41. package/dist/chunk-6HGMRR4J.js.map +1 -0
  42. package/dist/chunk-6W6PTJFT.js +181 -0
  43. package/dist/chunk-6W6PTJFT.js.map +1 -0
  44. package/dist/chunk-6ZNCY2GI.js +418 -0
  45. package/dist/chunk-6ZNCY2GI.js.map +1 -0
  46. package/dist/chunk-7BNFELEK.js +31 -0
  47. package/dist/chunk-7BNFELEK.js.map +1 -0
  48. package/dist/chunk-ADTDYJO7.js +265 -0
  49. package/dist/chunk-ADTDYJO7.js.map +1 -0
  50. package/dist/{chunk-OCVQGBJK.js → chunk-BBN4VCNK.js} +6 -4
  51. package/dist/chunk-BBN4VCNK.js.map +1 -0
  52. package/dist/{chunk-SJSUSJ47.js → chunk-BNZHWAZC.js} +2 -2
  53. package/dist/chunk-C6PELIHS.js +60 -0
  54. package/dist/chunk-C6PELIHS.js.map +1 -0
  55. package/dist/{chunk-MQJ2ECQT.js → chunk-CUPEENUY.js} +3 -3
  56. package/dist/{chunk-NHMBTUMW.js → chunk-CWT6CAE5.js} +2 -2
  57. package/dist/{chunk-4GLYY4NN.js → chunk-CZTMGHUC.js} +8 -2
  58. package/dist/chunk-CZTMGHUC.js.map +1 -0
  59. package/dist/{chunk-RZ4YESBG.js → chunk-DOYGMNMK.js} +1 -1
  60. package/dist/chunk-DOYGMNMK.js.map +1 -0
  61. package/dist/chunk-DTISLIMB.js +89 -0
  62. package/dist/chunk-DTISLIMB.js.map +1 -0
  63. package/dist/{chunk-SPPMCAKG.js → chunk-GBVJTRXS.js} +2 -2
  64. package/dist/chunk-GBVJTRXS.js.map +1 -0
  65. package/dist/{chunk-AYUKPTSM.js → chunk-GJETKBOY.js} +96 -218
  66. package/dist/chunk-GJETKBOY.js.map +1 -0
  67. package/dist/{chunk-BXZ6EA52.js → chunk-GW6V4D43.js} +57 -3
  68. package/dist/chunk-GW6V4D43.js.map +1 -0
  69. package/dist/{chunk-6PMVAAA7.js → chunk-HJSEEFO3.js} +3 -3
  70. package/dist/{chunk-TYAGMJNV.js → chunk-HQZQFEAX.js} +5 -5
  71. package/dist/{chunk-MXAPLSJ5.js → chunk-J4JW73TT.js} +2 -2
  72. package/dist/{chunk-VEHFVBLI.js → chunk-JHYYFPKX.js} +2 -2
  73. package/dist/chunk-LFDXEYYB.js +150 -0
  74. package/dist/chunk-LFDXEYYB.js.map +1 -0
  75. package/dist/chunk-MIC5IBQF.js +386 -0
  76. package/dist/chunk-MIC5IBQF.js.map +1 -0
  77. package/dist/chunk-ODCFS5WD.js +463 -0
  78. package/dist/chunk-ODCFS5WD.js.map +1 -0
  79. package/dist/{chunk-XMCVRVTF.js → chunk-P64EV4YY.js} +1 -1
  80. package/dist/chunk-P64EV4YY.js.map +1 -0
  81. package/dist/chunk-PBOCSGNL.js +84 -0
  82. package/dist/chunk-PBOCSGNL.js.map +1 -0
  83. package/dist/{chunk-66OJ3WB4.js → chunk-PD3CTDO6.js} +2 -2
  84. package/dist/chunk-QPY3WRVM.js +647 -0
  85. package/dist/chunk-QPY3WRVM.js.map +1 -0
  86. package/dist/chunk-S2EOIVF4.js +3907 -0
  87. package/dist/chunk-S2EOIVF4.js.map +1 -0
  88. package/dist/chunk-SDLOMKCW.js +213 -0
  89. package/dist/chunk-SDLOMKCW.js.map +1 -0
  90. package/dist/chunk-TKBVW7ZJ.js +162 -0
  91. package/dist/chunk-TKBVW7ZJ.js.map +1 -0
  92. package/dist/{chunk-BRBWNV65.js → chunk-U2X2J3FI.js} +3 -3
  93. package/dist/chunk-U2X2J3FI.js.map +1 -0
  94. package/dist/{chunk-PLDDJCW6.js → chunk-UP2VWCW5.js} +1 -12
  95. package/dist/{chunk-SVAPX2XN.js → chunk-V3OKHQUX.js} +9 -7
  96. package/dist/{chunk-SVAPX2XN.js.map → chunk-V3OKHQUX.js.map} +1 -1
  97. package/dist/{chunk-4UOE5TUZ.js → chunk-WMDVOWN6.js} +4 -4
  98. package/dist/chunk-WMFYI7XC.js +564 -0
  99. package/dist/chunk-WMFYI7XC.js.map +1 -0
  100. package/dist/chunk-WZAH34TG.js +129 -0
  101. package/dist/chunk-WZAH34TG.js.map +1 -0
  102. package/dist/{chunk-H5RQOFO2.js → chunk-X6Q3K3L2.js} +6 -6
  103. package/dist/chunk-X6Q3K3L2.js.map +1 -0
  104. package/dist/chunk-XTX7EK43.js +134 -0
  105. package/dist/chunk-XTX7EK43.js.map +1 -0
  106. package/dist/chunk-YEDEAX6Y.js +194 -0
  107. package/dist/chunk-YEDEAX6Y.js.map +1 -0
  108. package/dist/{chunk-XKYRH4FM.js → chunk-ZIBRVA3Y.js} +70 -30
  109. package/dist/chunk-ZIBRVA3Y.js.map +1 -0
  110. package/dist/chunk-ZIYTHUM5.js +457 -0
  111. package/dist/chunk-ZIYTHUM5.js.map +1 -0
  112. package/dist/{chunk-766ASQWE.js → chunk-ZMML6T63.js} +2711 -2329
  113. package/dist/chunk-ZMML6T63.js.map +1 -0
  114. package/dist/chunk-ZVHG4KF2.js +380 -0
  115. package/dist/chunk-ZVHG4KF2.js.map +1 -0
  116. package/dist/chunker-K6WTR62A.js +12 -0
  117. package/dist/cli.js +1 -1
  118. package/dist/cli.js.map +1 -1
  119. package/dist/{client-ZQSFPMOB.js → client-FOIYPOZQ.js} +5 -6
  120. package/dist/{clipboard-manager-TEO2GEDN.js → clipboard-manager-4SBNESGZ.js} +2 -2
  121. package/dist/coding-agent-DESSU3AC.js +233 -0
  122. package/dist/coding-agent-DESSU3AC.js.map +1 -0
  123. package/dist/commands/setup.js +2 -2
  124. package/dist/commands/start.js +3 -3
  125. package/dist/commands/status.js +2 -2
  126. package/dist/commands/stop.js +2 -2
  127. package/dist/commands/utils.js +2 -2
  128. package/dist/cost-tracker-KZQSTSE2.js +11 -0
  129. package/dist/{cron-explain-HHQKPD3M.js → cron-explain-UOOOYWZZ.js} +2 -2
  130. package/dist/{crypto-4AP47IKC.js → crypto-2VG3RJR2.js} +2 -2
  131. package/dist/{databases-37X4CI2Y.js → databases-XDPMG5AV.js} +4 -4
  132. package/dist/db-I7MNG6CL.js +83 -0
  133. package/dist/discord-6UQHCN27.js +81 -0
  134. package/dist/documents-PFHSK7SZ.js +184 -0
  135. package/dist/documents-PFHSK7SZ.js.map +1 -0
  136. package/dist/docx-parser-EXL4TN5E.js +16 -0
  137. package/dist/{email-K7LO2IPB.js → email-6OIN4SYL.js} +34 -25
  138. package/dist/email-6OIN4SYL.js.map +1 -0
  139. package/dist/{enhanced-retrieval-DNLLEM4Z.js → enhanced-retrieval-JWX2HWU4.js} +12 -8
  140. package/dist/{enhanced-retrieval-DNLLEM4Z.js.map → enhanced-retrieval-JWX2HWU4.js.map} +1 -1
  141. package/dist/enrichment-pipeline-7FE5R5ZI.js +14 -0
  142. package/dist/{entity-resolution-Y3IUWEAT.js → entity-resolution-7Z6STVXX.js} +6 -5
  143. package/dist/env-GN5VHI43.js +12 -0
  144. package/dist/error-tracker-64DEH3D7.js +32 -0
  145. package/dist/finnhub-X7ZMQSXF.js +178 -0
  146. package/dist/finnhub-X7ZMQSXF.js.map +1 -0
  147. package/dist/fred-TMUF3J2V.js +203 -0
  148. package/dist/fred-TMUF3J2V.js.map +1 -0
  149. package/dist/github-DUWSXCNP.js +833 -0
  150. package/dist/github-DUWSXCNP.js.map +1 -0
  151. package/dist/{google-workspace-DKWUVNGC.js → google-workspace-TSZPZK5G.js} +2 -2
  152. package/dist/graph-client-NB475AK5.js +17 -0
  153. package/dist/{hash-tool-ULQYD7B5.js → hash-tool-ENAB5LWH.js} +2 -2
  154. package/dist/{heartbeat-monitor-GCISLXI3.js → heartbeat-monitor-KRDYTDBF.js} +2 -2
  155. package/dist/hooks-N4MIFBVM.js +14 -0
  156. package/dist/{image-generation-OSU7FP6F.js → image-generation-MDE6AVQO.js} +2 -2
  157. package/dist/imessage-DSGSGUZS.js +44 -0
  158. package/dist/inbox-summarizer-F2KAU72V.js +56 -0
  159. package/dist/{incident-response-C5J7Q6DT.js → incident-response-E3UGMX5G.js} +8 -6
  160. package/dist/incident-response-E3UGMX5G.js.map +1 -0
  161. package/dist/{inventory-manager-352OHXWD.js → inventory-manager-C67BSZM6.js} +2 -2
  162. package/dist/{jira-GSGDBMIG.js → jira-PAGZWUBJ.js} +2 -2
  163. package/dist/{json-tool-QE2SYHEG.js → json-tool-4FK5RNER.js} +2 -2
  164. package/dist/{key-rotation-DPHU4ZTB.js → key-rotation-WCC5FOYS.js} +2 -2
  165. package/dist/knowledge-base-5SMMOGQJ.js +46 -0
  166. package/dist/lib.d.ts +94 -1
  167. package/dist/lib.js +83 -66
  168. package/dist/lib.js.map +1 -1
  169. package/dist/{mailchimp-KKNF6QJ7.js → mailchimp-ZFYDC44J.js} +2 -2
  170. package/dist/{matrix-QVHG76I7.js → matrix-WYGEOZL5.js} +30 -21
  171. package/dist/{matrix-QVHG76I7.js.map → matrix-WYGEOZL5.js.map} +1 -1
  172. package/dist/{mcp-3JI6W7ZE.js → mcp-DJ2QDA6A.js} +3 -3
  173. package/dist/metrics-BH3ZLGEV.js +25 -0
  174. package/dist/{microsoft365-UCBKJHNX.js → microsoft365-6G2IJMWC.js} +2 -2
  175. package/dist/multi-user-XAEMB244.js +411 -0
  176. package/dist/multi-user-XAEMB244.js.map +1 -0
  177. package/dist/oauth-UPJYFOVU.js +34 -0
  178. package/dist/{ocr-AC7NPX33.js → ocr-UONKTQU7.js} +6 -4
  179. package/dist/{ollama-BOAMSPLJ.js → ollama-J7CU45WT.js} +2 -2
  180. package/dist/osint-agent-RL5XPBRQ.js +189 -0
  181. package/dist/osint-agent-RL5XPBRQ.js.map +1 -0
  182. package/dist/{pages-MI523RB7.js → pages-XDE7JRCA.js} +5 -5
  183. package/dist/{pair-JDFTERIK.js → pair-YZJFQUU5.js} +2 -2
  184. package/dist/{pairing-IFQYCPNS.js → pairing-77N47RAT.js} +2 -2
  185. package/dist/{pdf-ALQVOEJR.js → pdf-67HGXCFJ.js} +3 -3
  186. package/dist/pdf-parser-YLMTTYHL.js +14 -0
  187. package/dist/{presentations-DSV5IHG5.js → presentations-UOET2FVZ.js} +3 -3
  188. package/dist/presentations-UOET2FVZ.js.map +1 -0
  189. package/dist/{prometheus-JNT2BD4L.js → prometheus-YETCZO4I.js} +2 -2
  190. package/dist/prometheus-YETCZO4I.js.map +1 -0
  191. package/dist/{providers-J4LYPHDR.js → providers-2YQ6E3IF.js} +6 -4
  192. package/dist/providers-2YQ6E3IF.js.map +1 -0
  193. package/dist/{qr-code-WIX4PB4U.js → qr-code-6WZJHRKL.js} +2 -2
  194. package/dist/qr-code-6WZJHRKL.js.map +1 -0
  195. package/dist/{quickbooks-XB4NII2S.js → quickbooks-N675W7IK.js} +2 -2
  196. package/dist/{regex-tool-W4ABRKGK.js → regex-tool-6Q63LQ7B.js} +2 -2
  197. package/dist/regex-tool-6Q63LQ7B.js.map +1 -0
  198. package/dist/research-agent-WCRSY3UZ.js +168 -0
  199. package/dist/research-agent-WCRSY3UZ.js.map +1 -0
  200. package/dist/risk-engine-YKCPT5D5.js +10 -0
  201. package/dist/risk-engine-YKCPT5D5.js.map +1 -0
  202. package/dist/scheduler-6PLLAQI7.js +74 -0
  203. package/dist/scheduler-6PLLAQI7.js.map +1 -0
  204. package/dist/schema-ETY7L2VA.js +78 -0
  205. package/dist/schema-ETY7L2VA.js.map +1 -0
  206. package/dist/{search-BCLBO5E3.js → search-GMLKBHSW.js} +4 -4
  207. package/dist/search-GMLKBHSW.js.map +1 -0
  208. package/dist/{sendgrid-RNXCAFKM.js → sendgrid-QGJIVPWV.js} +2 -2
  209. package/dist/sharepoint-V5P4Q62L.js +30 -0
  210. package/dist/sharepoint-V5P4Q62L.js.map +1 -0
  211. package/dist/{shopify-NCXYJB4R.js → shopify-ON2PAU27.js} +2 -2
  212. package/dist/signal-7D5EPGVL.js +44 -0
  213. package/dist/signal-7D5EPGVL.js.map +1 -0
  214. package/dist/slack-KSS6YK5Z.js +86 -0
  215. package/dist/slack-KSS6YK5Z.js.map +1 -0
  216. package/dist/{sms-M3JIOTCW.js → sms-CSUCC7HL.js} +4 -4
  217. package/dist/sms-CSUCC7HL.js.map +1 -0
  218. package/dist/{src-VYUE6LRA.js → src-GO7GGW7O.js} +190 -52
  219. package/dist/src-GO7GGW7O.js.map +1 -0
  220. package/dist/{stocks-XXWBPOCU.js → stocks-4M4HZWZS.js} +2 -2
  221. package/dist/stocks-4M4HZWZS.js.map +1 -0
  222. package/dist/text-extractor-OAUBAW5P.js +12 -0
  223. package/dist/text-extractor-OAUBAW5P.js.map +1 -0
  224. package/dist/{text-transform-6SGUA5Z4.js → text-transform-HCLCUDFZ.js} +2 -2
  225. package/dist/text-transform-HCLCUDFZ.js.map +1 -0
  226. package/dist/token-store-SEWRX6RE.js +20 -0
  227. package/dist/token-store-SEWRX6RE.js.map +1 -0
  228. package/dist/tools-PJZ6RI4P.js +47 -0
  229. package/dist/tools-PJZ6RI4P.js.map +1 -0
  230. package/dist/{tunnel-IWMXUML4.js → tunnel-XOUVVRAK.js} +4 -2
  231. package/dist/tunnel-XOUVVRAK.js.map +1 -0
  232. package/dist/{twilio-53GEW5JT.js → twilio-3L7DUNYQ.js} +2 -2
  233. package/dist/{unit-converter-ZYXMEZOE.js → unit-converter-LYPAHU64.js} +2 -2
  234. package/dist/unit-converter-LYPAHU64.js.map +1 -0
  235. package/dist/whatsapp-DWXK25V2.js +44 -0
  236. package/dist/whatsapp-DWXK25V2.js.map +1 -0
  237. package/dist/{word-document-7B6SJMAY.js → word-document-AV3YB4L2.js} +4 -4
  238. package/dist/word-document-AV3YB4L2.js.map +1 -0
  239. package/dist/workflow-store-5Y56GUP7.js +373 -0
  240. package/dist/workflow-store-5Y56GUP7.js.map +1 -0
  241. package/dist/writing-agent-VDGLNOGO.js +243 -0
  242. package/dist/writing-agent-VDGLNOGO.js.map +1 -0
  243. package/dist/{xero-QYO66D45.js → xero-UHAHVYSD.js} +2 -2
  244. package/dist/{zapier-webhook-TBZ5YF2A.js → zapier-webhook-NIELLTXR.js} +2 -2
  245. package/drizzle/0002_mushy_master_mold.sql +139 -139
  246. package/drizzle/0003_overjoyed_rhodey.sql +46 -0
  247. package/drizzle/meta/0002_snapshot.json +3636 -3636
  248. package/drizzle/meta/0003_snapshot.json +3946 -0
  249. package/drizzle/meta/_journal.json +7 -0
  250. package/package.json +110 -100
  251. package/dist/autonomy-ZXDBDQUJ.js.map +0 -1
  252. package/dist/bot-QRARP4UN.js +0 -36
  253. package/dist/brain-7XLLM3KC.js +0 -56
  254. package/dist/chunk-4GLYY4NN.js.map +0 -1
  255. package/dist/chunk-766ASQWE.js.map +0 -1
  256. package/dist/chunk-AYUKPTSM.js.map +0 -1
  257. package/dist/chunk-BRBWNV65.js.map +0 -1
  258. package/dist/chunk-BXZ6EA52.js.map +0 -1
  259. package/dist/chunk-EVE7MIIY.js.map +0 -1
  260. package/dist/chunk-H5RQOFO2.js.map +0 -1
  261. package/dist/chunk-I6BDYQIG.js.map +0 -1
  262. package/dist/chunk-IZJMVV7O.js +0 -347
  263. package/dist/chunk-IZJMVV7O.js.map +0 -1
  264. package/dist/chunk-O7IH7JTI.js +0 -1898
  265. package/dist/chunk-O7IH7JTI.js.map +0 -1
  266. package/dist/chunk-OCVQGBJK.js.map +0 -1
  267. package/dist/chunk-RZ4YESBG.js.map +0 -1
  268. package/dist/chunk-SPPMCAKG.js.map +0 -1
  269. package/dist/chunk-VRD5CYRL.js +0 -1568
  270. package/dist/chunk-VRD5CYRL.js.map +0 -1
  271. package/dist/chunk-WRAKK6K6.js.map +0 -1
  272. package/dist/chunk-XKYRH4FM.js.map +0 -1
  273. package/dist/chunk-XMCVRVTF.js.map +0 -1
  274. package/dist/chunk-ZLZKF2PM.js.map +0 -1
  275. package/dist/discord-B3HUPGQ6.js +0 -70
  276. package/dist/dist-UISMLMFN.js +0 -21847
  277. package/dist/dist-UISMLMFN.js.map +0 -1
  278. package/dist/email-K7LO2IPB.js.map +0 -1
  279. package/dist/enrichment-pipeline-MNHNW65K.js +0 -13
  280. package/dist/env-IWXUVTCB.js +0 -12
  281. package/dist/imessage-NGA2XF2V.js +0 -35
  282. package/dist/inbox-summarizer-NRI4S7IF.js +0 -47
  283. package/dist/incident-response-C5J7Q6DT.js.map +0 -1
  284. package/dist/presentations-DSV5IHG5.js.map +0 -1
  285. package/dist/scheduler-VK4WFERV.js +0 -63
  286. package/dist/signal-6CGDFYL2.js +0 -35
  287. package/dist/slack-IZQWIKOH.js +0 -75
  288. package/dist/src-VYUE6LRA.js.map +0 -1
  289. package/dist/tools-2RLEI2N6.js +0 -38
  290. package/dist/tunnel-IWMXUML4.js.map +0 -1
  291. package/dist/whatsapp-LFX6YKCM.js +0 -35
  292. package/dist/word-document-7B6SJMAY.js.map +0 -1
  293. /package/dist/{audit-logger-OBPR7CRO.js.map → agent-manager-JZ4IM7XI.js.map} +0 -0
  294. /package/dist/{auth-UOX5K2BE.js.map → agent-types-2T4PXLFQ.js.map} +0 -0
  295. /package/dist/{backup-restore-PZ7CYYB7.js.map → analyzer-OTWE3ARE.js.map} +0 -0
  296. /package/dist/{archiver-AVNBYCKQ.js.map → archiver-FPGKRP6P.js.map} +0 -0
  297. /package/dist/{blocks-R3PODY47.js.map → audit-logger-CI4WZQPD.js.map} +0 -0
  298. /package/dist/{bot-QRARP4UN.js.map → auth-PH5IHISW.js.map} +0 -0
  299. /package/dist/{aws-s3-Q4LLZZPD.js.map → aws-s3-QZMURYXB.js.map} +0 -0
  300. /package/dist/{brain-7XLLM3KC.js.map → backup-restore-72OQTZO3.js.map} +0 -0
  301. /package/dist/{chunk-PLDDJCW6.js.map → blocks-YOWOESDD.js.map} +0 -0
  302. /package/dist/{client-ZQSFPMOB.js.map → bot-VDHBGUVI.js.map} +0 -0
  303. /package/dist/{clipboard-manager-TEO2GEDN.js.map → brain-6QTXN4QP.js.map} +0 -0
  304. /package/dist/{camera-monitor-M5CYKUU4.js.map → camera-monitor-LHTUWHEL.js.map} +0 -0
  305. /package/dist/{charts-V7ARZNKF.js.map → charts-FJ32GQK7.js.map} +0 -0
  306. /package/dist/{chunk-TVEWKIK3.js.map → chunk-2WTKTG2C.js.map} +0 -0
  307. /package/dist/{chunk-SJSUSJ47.js.map → chunk-BNZHWAZC.js.map} +0 -0
  308. /package/dist/{chunk-MQJ2ECQT.js.map → chunk-CUPEENUY.js.map} +0 -0
  309. /package/dist/{chunk-NHMBTUMW.js.map → chunk-CWT6CAE5.js.map} +0 -0
  310. /package/dist/{chunk-6PMVAAA7.js.map → chunk-HJSEEFO3.js.map} +0 -0
  311. /package/dist/{chunk-TYAGMJNV.js.map → chunk-HQZQFEAX.js.map} +0 -0
  312. /package/dist/{chunk-MXAPLSJ5.js.map → chunk-J4JW73TT.js.map} +0 -0
  313. /package/dist/{chunk-VEHFVBLI.js.map → chunk-JHYYFPKX.js.map} +0 -0
  314. /package/dist/{chunk-66OJ3WB4.js.map → chunk-PD3CTDO6.js.map} +0 -0
  315. /package/dist/{cron-explain-HHQKPD3M.js.map → chunk-UP2VWCW5.js.map} +0 -0
  316. /package/dist/{chunk-4UOE5TUZ.js.map → chunk-WMDVOWN6.js.map} +0 -0
  317. /package/dist/{crypto-4AP47IKC.js.map → chunker-K6WTR62A.js.map} +0 -0
  318. /package/dist/{databases-37X4CI2Y.js.map → client-FOIYPOZQ.js.map} +0 -0
  319. /package/dist/{discord-B3HUPGQ6.js.map → clipboard-manager-4SBNESGZ.js.map} +0 -0
  320. /package/dist/{enrichment-pipeline-MNHNW65K.js.map → cost-tracker-KZQSTSE2.js.map} +0 -0
  321. /package/dist/{entity-resolution-Y3IUWEAT.js.map → cron-explain-UOOOYWZZ.js.map} +0 -0
  322. /package/dist/{env-IWXUVTCB.js.map → crypto-2VG3RJR2.js.map} +0 -0
  323. /package/dist/{hash-tool-ULQYD7B5.js.map → databases-XDPMG5AV.js.map} +0 -0
  324. /package/dist/{heartbeat-monitor-GCISLXI3.js.map → db-I7MNG6CL.js.map} +0 -0
  325. /package/dist/{imessage-NGA2XF2V.js.map → discord-6UQHCN27.js.map} +0 -0
  326. /package/dist/{inbox-summarizer-NRI4S7IF.js.map → docx-parser-EXL4TN5E.js.map} +0 -0
  327. /package/dist/{inventory-manager-352OHXWD.js.map → enrichment-pipeline-7FE5R5ZI.js.map} +0 -0
  328. /package/dist/{json-tool-QE2SYHEG.js.map → entity-resolution-7Z6STVXX.js.map} +0 -0
  329. /package/dist/{key-rotation-DPHU4ZTB.js.map → env-GN5VHI43.js.map} +0 -0
  330. /package/dist/{mcp-3JI6W7ZE.js.map → error-tracker-64DEH3D7.js.map} +0 -0
  331. /package/dist/{google-workspace-DKWUVNGC.js.map → google-workspace-TSZPZK5G.js.map} +0 -0
  332. /package/dist/{ocr-AC7NPX33.js.map → graph-client-NB475AK5.js.map} +0 -0
  333. /package/dist/{ollama-BOAMSPLJ.js.map → hash-tool-ENAB5LWH.js.map} +0 -0
  334. /package/dist/{pages-MI523RB7.js.map → heartbeat-monitor-KRDYTDBF.js.map} +0 -0
  335. /package/dist/{pairing-IFQYCPNS.js.map → hooks-N4MIFBVM.js.map} +0 -0
  336. /package/dist/{image-generation-OSU7FP6F.js.map → image-generation-MDE6AVQO.js.map} +0 -0
  337. /package/dist/{pdf-ALQVOEJR.js.map → imessage-DSGSGUZS.js.map} +0 -0
  338. /package/dist/{prometheus-JNT2BD4L.js.map → inbox-summarizer-F2KAU72V.js.map} +0 -0
  339. /package/dist/{providers-J4LYPHDR.js.map → inventory-manager-C67BSZM6.js.map} +0 -0
  340. /package/dist/{jira-GSGDBMIG.js.map → jira-PAGZWUBJ.js.map} +0 -0
  341. /package/dist/{qr-code-WIX4PB4U.js.map → json-tool-4FK5RNER.js.map} +0 -0
  342. /package/dist/{regex-tool-W4ABRKGK.js.map → key-rotation-WCC5FOYS.js.map} +0 -0
  343. /package/dist/{scheduler-VK4WFERV.js.map → knowledge-base-5SMMOGQJ.js.map} +0 -0
  344. /package/dist/{mailchimp-KKNF6QJ7.js.map → mailchimp-ZFYDC44J.js.map} +0 -0
  345. /package/dist/{search-BCLBO5E3.js.map → mcp-DJ2QDA6A.js.map} +0 -0
  346. /package/dist/{signal-6CGDFYL2.js.map → metrics-BH3ZLGEV.js.map} +0 -0
  347. /package/dist/{microsoft365-UCBKJHNX.js.map → microsoft365-6G2IJMWC.js.map} +0 -0
  348. /package/dist/{slack-IZQWIKOH.js.map → oauth-UPJYFOVU.js.map} +0 -0
  349. /package/dist/{sms-M3JIOTCW.js.map → ocr-UONKTQU7.js.map} +0 -0
  350. /package/dist/{stocks-XXWBPOCU.js.map → ollama-J7CU45WT.js.map} +0 -0
  351. /package/dist/{text-transform-6SGUA5Z4.js.map → pages-XDE7JRCA.js.map} +0 -0
  352. /package/dist/{pair-JDFTERIK.js.map → pair-YZJFQUU5.js.map} +0 -0
  353. /package/dist/{tools-2RLEI2N6.js.map → pairing-77N47RAT.js.map} +0 -0
  354. /package/dist/{unit-converter-ZYXMEZOE.js.map → pdf-67HGXCFJ.js.map} +0 -0
  355. /package/dist/{whatsapp-LFX6YKCM.js.map → pdf-parser-YLMTTYHL.js.map} +0 -0
  356. /package/dist/{quickbooks-XB4NII2S.js.map → quickbooks-N675W7IK.js.map} +0 -0
  357. /package/dist/{sendgrid-RNXCAFKM.js.map → sendgrid-QGJIVPWV.js.map} +0 -0
  358. /package/dist/{shopify-NCXYJB4R.js.map → shopify-ON2PAU27.js.map} +0 -0
  359. /package/dist/{twilio-53GEW5JT.js.map → twilio-3L7DUNYQ.js.map} +0 -0
  360. /package/dist/{xero-QYO66D45.js.map → xero-UHAHVYSD.js.map} +0 -0
  361. /package/dist/{zapier-webhook-TBZ5YF2A.js.map → zapier-webhook-NIELLTXR.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/embeddings/provider.ts","../src/core/embeddings/adapter.ts","../src/core/embeddings/registry.ts","../src/core/embeddings/index.ts","../src/core/memory.ts"],"sourcesContent":["/**\n * Embedding Provider Interface & Implementations\n *\n * Unified embedding system supporting OpenAI, HuggingFace, and TF-IDF backends.\n * Extracted from src/core/intelligence/rag-pipeline.ts and extended.\n */\n\nexport interface EmbeddingProvider {\n name: string;\n dimensions: number;\n embed(texts: string[]): Promise<number[][]>;\n embedSingle(text: string): Promise<number[]>;\n}\n\nexport abstract class AbstractEmbeddingProvider implements EmbeddingProvider {\n abstract name: string;\n abstract dimensions: number;\n abstract embed(texts: string[]): Promise<number[][]>;\n\n async embedSingle(text: string): Promise<number[]> {\n const [embedding] = await this.embed([text]);\n return embedding;\n }\n}\n\n/**\n * OpenAI Embedding Provider\n */\nexport class OpenAIEmbeddingProvider extends AbstractEmbeddingProvider {\n name = \"openai\";\n dimensions: number;\n private apiKey: string;\n private model: string;\n\n private static MODEL_DIMENSIONS: Record<string, number> = {\n \"text-embedding-3-small\": 1536,\n \"text-embedding-3-large\": 3072,\n \"text-embedding-ada-002\": 1536,\n };\n\n constructor(apiKey: string, model = \"text-embedding-3-small\") {\n super();\n this.apiKey = apiKey;\n this.model = model;\n this.dimensions =\n OpenAIEmbeddingProvider.MODEL_DIMENSIONS[model] ?? 1536;\n }\n\n async embed(texts: string[]): Promise<number[][]> {\n const response = await fetch(\"https://api.openai.com/v1/embeddings\", {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ input: texts, model: this.model }),\n });\n\n if (!response.ok) {\n throw new Error(`OpenAI embedding failed: ${response.status}`);\n }\n\n const data = (await response.json()) as {\n data: Array<{ embedding: number[] }>;\n };\n return data.data.map((d) => d.embedding);\n }\n}\n\n/**\n * HuggingFace Inference API Embedding Provider\n */\nexport class HuggingFaceEmbeddingProvider extends AbstractEmbeddingProvider {\n name = \"huggingface\";\n dimensions: number;\n private accessToken: string;\n private model: string;\n private batchSize: number;\n\n constructor(\n accessToken: string,\n model = \"sentence-transformers/all-MiniLM-L6-v2\",\n dimensions = 384,\n batchSize = 32\n ) {\n super();\n this.accessToken = accessToken;\n this.model = model;\n this.dimensions = dimensions;\n this.batchSize = batchSize;\n }\n\n async embed(texts: string[]): Promise<number[][]> {\n const allEmbeddings: number[][] = [];\n\n for (let i = 0; i < texts.length; i += this.batchSize) {\n const batch = texts.slice(i, i + this.batchSize);\n const embeddings = await this.embedBatch(batch);\n allEmbeddings.push(...embeddings);\n }\n\n return allEmbeddings;\n }\n\n private async embedBatch(\n texts: string[],\n retries = 3\n ): Promise<number[][]> {\n const url = `https://api-inference.huggingface.co/pipeline/feature-extraction/${this.model}`;\n\n for (let attempt = 0; attempt < retries; attempt++) {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n inputs: texts,\n options: { wait_for_model: true },\n }),\n });\n\n if (response.status === 429) {\n const delay = Math.pow(2, attempt) * 1000;\n await new Promise((r) => setTimeout(r, delay));\n continue;\n }\n\n if (response.status === 503) {\n // Model loading, wait and retry\n const delay = Math.pow(2, attempt) * 2000;\n await new Promise((r) => setTimeout(r, delay));\n continue;\n }\n\n if (!response.ok) {\n const body = await response.text().catch(() => \"\");\n throw new Error(\n `HuggingFace embedding failed: ${response.status} ${body}`\n );\n }\n\n const data = await response.json();\n return this.processResponse(data, texts.length);\n }\n\n throw new Error(\n `HuggingFace embedding failed after ${retries} retries`\n );\n }\n\n /**\n * HuggingFace returns different shapes depending on the model:\n * - Sentence-level: number[][] (one embedding per input)\n * - Token-level: number[][][] (one embedding per token per input, needs mean pooling)\n */\n private processResponse(\n data: unknown,\n expectedCount: number\n ): number[][] {\n if (!Array.isArray(data) || data.length === 0) {\n throw new Error(\"HuggingFace returned empty response\");\n }\n\n // Sentence-level: [[0.1, 0.2, ...], [0.3, 0.4, ...]]\n if (typeof data[0][0] === \"number\") {\n return (data as number[][]).map((v) => this.l2Normalize(v));\n }\n\n // Token-level: [[[0.1, 0.2, ...], [0.3, 0.4, ...]], ...]\n // Need mean pooling across tokens\n if (Array.isArray(data[0][0])) {\n return (data as number[][][]).map((tokenEmbeddings) =>\n this.l2Normalize(this.meanPool(tokenEmbeddings))\n );\n }\n\n throw new Error(\n `Unexpected HuggingFace response shape: ${typeof data[0][0]}`\n );\n }\n\n private meanPool(tokenEmbeddings: number[][]): number[] {\n if (tokenEmbeddings.length === 0) return [];\n const dims = tokenEmbeddings[0].length;\n const result = new Array(dims).fill(0);\n\n for (const token of tokenEmbeddings) {\n for (let i = 0; i < dims; i++) {\n result[i] += token[i];\n }\n }\n\n const count = tokenEmbeddings.length;\n for (let i = 0; i < dims; i++) {\n result[i] /= count;\n }\n\n return result;\n }\n\n private l2Normalize(vector: number[]): number[] {\n const norm = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));\n if (norm === 0) return vector;\n return vector.map((v) => v / norm);\n }\n}\n\n/**\n * TF-IDF Embedding Provider (zero-dependency fallback)\n */\nexport class TFIDFProvider extends AbstractEmbeddingProvider {\n name = \"tfidf\";\n dimensions = 256;\n private vocabulary = new Map<string, number>();\n private idf = new Map<string, number>();\n private docCount = 0;\n\n private tokenize(text: string): string[] {\n return text\n .toLowerCase()\n .replace(/[^\\w\\s]/g, \" \")\n .split(/\\s+/)\n .filter((t) => t.length > 1);\n }\n\n buildVocabulary(documents: string[]): void {\n this.docCount = documents.length;\n const docFreq = new Map<string, number>();\n\n for (const doc of documents) {\n const tokens = new Set(this.tokenize(doc));\n for (const token of tokens) {\n docFreq.set(token, (docFreq.get(token) || 0) + 1);\n }\n }\n\n const sorted = Array.from(docFreq.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, this.dimensions);\n\n sorted.forEach(([term, df], i) => {\n this.vocabulary.set(term, i);\n this.idf.set(term, Math.log(this.docCount / (1 + df)));\n });\n }\n\n async embed(texts: string[]): Promise<number[][]> {\n if (this.vocabulary.size === 0) {\n this.buildVocabulary(texts);\n }\n\n return texts.map((text) => {\n const tokens = this.tokenize(text);\n const tf = new Map<string, number>();\n for (const token of tokens) {\n tf.set(token, (tf.get(token) || 0) + 1);\n }\n\n const vector = new Array(this.dimensions).fill(0);\n for (const [term, freq] of tf) {\n const idx = this.vocabulary.get(term);\n if (idx !== undefined) {\n const tfidf =\n (freq / tokens.length) * (this.idf.get(term) || 1);\n vector[idx] = tfidf;\n }\n }\n\n // L2 normalize\n const norm = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));\n if (norm > 0) {\n for (let i = 0; i < vector.length; i++) {\n vector[i] /= norm;\n }\n }\n return vector;\n });\n }\n}\n","/**\n * Dimension Adapter\n *\n * Bridges provider-native embedding dimensions with database column dimensions.\n * Zero-padding preserves cosine similarity for same-provider vectors.\n */\n\nexport class DimensionAdapter {\n private providerDimensions: number;\n private dbDimensions: number;\n\n constructor(providerDimensions: number, dbDimensions: number) {\n this.providerDimensions = providerDimensions;\n this.dbDimensions = dbDimensions;\n }\n\n needsAdaptation(): boolean {\n return this.providerDimensions !== this.dbDimensions;\n }\n\n adapt(embedding: number[]): number[] {\n if (embedding.length === this.dbDimensions) return embedding;\n\n if (embedding.length < this.dbDimensions) {\n // Zero-pad: cosine similarity is preserved for same-provider vectors\n const padded = new Array(this.dbDimensions).fill(0);\n for (let i = 0; i < embedding.length; i++) {\n padded[i] = embedding[i];\n }\n return padded;\n }\n\n // Truncate (valid for Matryoshka models like OpenAI text-embedding-3-*)\n return embedding.slice(0, this.dbDimensions);\n }\n\n adaptBatch(embeddings: number[][]): number[][] {\n if (!this.needsAdaptation()) return embeddings;\n return embeddings.map((e) => this.adapt(e));\n }\n\n getProviderDimensions(): number {\n return this.providerDimensions;\n }\n\n getDbDimensions(): number {\n return this.dbDimensions;\n }\n}\n","/**\n * Embedding Registry - Singleton\n *\n * Manages the active embedding provider and dimension adapter.\n */\n\nimport type { EmbeddingProvider } from \"./provider\";\nimport { DimensionAdapter } from \"./adapter\";\n\nexport interface EmbeddingConfig {\n provider: \"openai\" | \"huggingface\" | \"tfidf\";\n model?: string;\n dimensions: number;\n dbDimensions: number;\n}\n\nconst MODEL_DIMENSIONS: Record<string, number> = {\n // OpenAI\n \"text-embedding-3-small\": 1536,\n \"text-embedding-3-large\": 3072,\n \"text-embedding-ada-002\": 1536,\n // HuggingFace sentence-transformers\n \"sentence-transformers/all-MiniLM-L6-v2\": 384,\n \"sentence-transformers/all-mpnet-base-v2\": 768,\n \"sentence-transformers/all-MiniLM-L12-v2\": 384,\n \"sentence-transformers/paraphrase-MiniLM-L6-v2\": 384,\n // BAAI\n \"BAAI/bge-small-en-v1.5\": 384,\n \"BAAI/bge-base-en-v1.5\": 768,\n \"BAAI/bge-large-en-v1.5\": 1024,\n};\n\nexport class EmbeddingRegistry {\n private provider: EmbeddingProvider | null = null;\n private adapter: DimensionAdapter | null = null;\n private config: EmbeddingConfig | null = null;\n\n initialize(provider: EmbeddingProvider, config: EmbeddingConfig): void {\n this.provider = provider;\n this.config = config;\n this.adapter = new DimensionAdapter(\n provider.dimensions,\n config.dbDimensions\n );\n\n if (this.adapter.needsAdaptation()) {\n const action =\n provider.dimensions < config.dbDimensions\n ? \"zero-padded\"\n : \"truncated\";\n console.log(\n `[Embeddings] Provider: ${provider.name} (${provider.dimensions} dims, ${action} to ${config.dbDimensions})`\n );\n } else {\n console.log(\n `[Embeddings] Provider: ${provider.name} (${provider.dimensions} dims)`\n );\n }\n }\n\n isInitialized(): boolean {\n return this.provider !== null;\n }\n\n getProvider(): EmbeddingProvider {\n if (!this.provider) {\n throw new Error(\n \"[Embeddings] Not initialized. Call initializeEmbeddings() first.\"\n );\n }\n return this.provider;\n }\n\n getAdapter(): DimensionAdapter {\n if (!this.adapter) {\n throw new Error(\n \"[Embeddings] Not initialized. Call initializeEmbeddings() first.\"\n );\n }\n return this.adapter;\n }\n\n getConfig(): EmbeddingConfig {\n if (!this.config) {\n throw new Error(\n \"[Embeddings] Not initialized. Call initializeEmbeddings() first.\"\n );\n }\n return this.config;\n }\n\n getDimensions(): number {\n return this.getProvider().dimensions;\n }\n\n getDbDimensions(): number {\n return this.getConfig().dbDimensions;\n }\n\n static resolveModelDimensions(\n model: string,\n explicitDimensions?: number\n ): number {\n return explicitDimensions ?? MODEL_DIMENSIONS[model] ?? 384;\n }\n}\n\nexport const embeddingRegistry = new EmbeddingRegistry();\n","/**\n * Embedding System - Public API\n *\n * Unified entry point for all embedding operations.\n * Supports OpenAI, HuggingFace, and TF-IDF backends.\n */\n\nimport { env } from \"../../config/env\";\nimport {\n OpenAIEmbeddingProvider,\n HuggingFaceEmbeddingProvider,\n TFIDFProvider,\n} from \"./provider\";\nimport { embeddingRegistry } from \"./registry\";\nimport { EmbeddingRegistry } from \"./registry\";\nimport type { EmbeddingProvider } from \"./provider\";\n\nexport type { EmbeddingProvider } from \"./provider\";\nexport {\n OpenAIEmbeddingProvider,\n HuggingFaceEmbeddingProvider,\n TFIDFProvider,\n} from \"./provider\";\nexport { embeddingRegistry } from \"./registry\";\nexport { DimensionAdapter } from \"./adapter\";\n\nlet _initPromise: Promise<void> | null = null;\n\n/**\n * Initialize the embedding subsystem from environment config.\n * Called at startup; also auto-called lazily on first use.\n */\nexport async function initializeEmbeddings(): Promise<void> {\n if (embeddingRegistry.isInitialized()) return;\n\n const providerType = ((env as any).EMBEDDING_PROVIDER || \"openai\") as\n | \"openai\"\n | \"huggingface\"\n | \"tfidf\";\n const model = (env as any).EMBEDDING_MODEL as string | undefined;\n const explicitDimensions = (env as any).EMBEDDING_DIMENSIONS as\n | number\n | undefined;\n const dbDimensions =\n ((env as any).EMBEDDING_DB_DIMENSIONS as number | undefined) ?? 1536;\n\n let provider: EmbeddingProvider;\n\n switch (providerType) {\n case \"huggingface\": {\n const token = env.HUGGINGFACE_ACCESS_TOKEN;\n if (!token) {\n throw new Error(\n \"[Embeddings] HUGGINGFACE_ACCESS_TOKEN required for huggingface provider\"\n );\n }\n const hfModel = model || \"sentence-transformers/all-MiniLM-L6-v2\";\n const dims = EmbeddingRegistry.resolveModelDimensions(\n hfModel,\n explicitDimensions\n );\n const batchSize =\n ((env as any).EMBEDDING_BATCH_SIZE as number | undefined) ?? 32;\n provider = new HuggingFaceEmbeddingProvider(\n token,\n hfModel,\n dims,\n batchSize\n );\n break;\n }\n case \"tfidf\": {\n provider = new TFIDFProvider();\n console.log(\"[Embeddings] Using TF-IDF fallback (no API required)\");\n break;\n }\n case \"openai\":\n default: {\n const apiKey = env.OPENAI_API_KEY;\n if (!apiKey) {\n console.warn(\n \"[Embeddings] OPENAI_API_KEY not set, falling back to TF-IDF\"\n );\n provider = new TFIDFProvider();\n break;\n }\n const oaiModel = model || \"text-embedding-3-small\";\n provider = new OpenAIEmbeddingProvider(apiKey, oaiModel);\n break;\n }\n }\n\n embeddingRegistry.initialize(provider, {\n provider: providerType,\n model,\n dimensions: provider.dimensions,\n dbDimensions,\n });\n}\n\n/**\n * Ensure embeddings are initialized (lazy fallback).\n */\nasync function ensureInitialized(): Promise<void> {\n if (embeddingRegistry.isInitialized()) return;\n if (!_initPromise) {\n _initPromise = initializeEmbeddings();\n }\n await _initPromise;\n}\n\n/**\n * Generate an embedding for a single text.\n * Returns a vector adapted to the database column dimensions.\n */\nexport async function generateEmbedding(text: string): Promise<number[]> {\n await ensureInitialized();\n const provider = embeddingRegistry.getProvider();\n const adapter = embeddingRegistry.getAdapter();\n const raw = await provider.embedSingle(text);\n return adapter.adapt(raw);\n}\n\n/**\n * Generate embeddings for multiple texts in batch.\n * Returns vectors adapted to the database column dimensions.\n */\nexport async function generateEmbeddings(\n texts: string[]\n): Promise<number[][]> {\n if (texts.length === 0) return [];\n await ensureInitialized();\n const provider = embeddingRegistry.getProvider();\n const adapter = embeddingRegistry.getAdapter();\n const raw = await provider.embed(texts);\n return adapter.adaptBatch(raw);\n}\n\n/**\n * Get the native provider dimensions (before adaptation).\n */\nexport function getEmbeddingDimensions(): number {\n return embeddingRegistry.getDimensions();\n}\n\n/**\n * Get the database column dimensions (after adaptation).\n */\nexport function getEmbeddingDbDimensions(): number {\n return embeddingRegistry.getDbDimensions();\n}\n\n/**\n * Get the active embedding provider name.\n */\nexport function getEmbeddingProviderName(): string {\n return embeddingRegistry.getProvider().name;\n}\n","import { db, memories, archivedMemories, type NewMemory, type Memory } from \"../db\";\r\nimport { eq, desc, sql, and } from \"drizzle-orm\";\r\nimport OpenAI from \"openai\";\r\nimport { env } from \"../config/env\";\r\nimport { encryptField, decryptField, isEncryptionAvailable } from \"./security/field-encryption\";\r\nimport { generateEmbedding as embeddingGenerateEmbedding } from \"./embeddings\";\r\n\r\n// Lazy OpenAI client — used only for extractMemories (LLM call, not embeddings)\r\nlet _openai: OpenAI | null = null;\r\nfunction getOpenAI(): OpenAI {\r\n if (!_openai) {\r\n _openai = new OpenAI({ apiKey: env.OPENAI_API_KEY });\r\n }\r\n return _openai;\r\n}\r\nconst openai = new Proxy({} as OpenAI, {\r\n get(_target, prop) {\r\n const instance = getOpenAI();\r\n const value = (instance as any)[prop];\r\n if (typeof value === \"function\") {\r\n return value.bind(instance);\r\n }\r\n return value;\r\n },\r\n});\r\n\r\n// Generate embedding using the configured provider (OpenAI, HuggingFace, or TF-IDF)\r\nexport async function generateEmbedding(text: string): Promise<number[]> {\r\n return embeddingGenerateEmbedding(text);\r\n}\r\n\r\n// Store a new memory with embedding and tsvector\r\n// Content is encrypted at rest when ENCRYPTION_MASTER_KEY is configured\r\nexport async function storeMemory(\r\n memory: Omit<NewMemory, \"embedding\" | \"searchVector\">\r\n): Promise<Memory> {\r\n // Generate embedding from plaintext BEFORE encryption (vectors can't be encrypted)\r\n const embedding = await generateEmbedding(memory.content);\r\n\r\n // Encrypt content at rest if encryption is available\r\n const shouldEncrypt = isEncryptionAvailable();\r\n const contentForDb = shouldEncrypt ? encryptField(memory.content)! : memory.content;\r\n\r\n const [stored] = await db\r\n .insert(memories)\r\n .values({\r\n ...memory,\r\n content: contentForDb,\r\n encrypted: shouldEncrypt,\r\n embedding,\r\n provenance: memory.provenance || `${memory.source || \"unknown\"}:auto`,\r\n })\r\n .returning();\r\n\r\n // Update tsvector for full-text search (uses plaintext for indexing)\r\n try {\r\n await db.execute(sql`\r\n UPDATE memories\r\n SET search_vector = to_tsvector('english', ${memory.content})\r\n WHERE id = ${stored.id}\r\n `);\r\n } catch {\r\n // tsvector update is non-critical\r\n }\r\n\r\n // Return with plaintext content (caller expects readable content)\r\n return { ...stored, content: memory.content };\r\n}\r\n\r\n// Update an existing memory\r\nexport async function updateMemory(\r\n id: string,\r\n updates: { content?: string; type?: string; importance?: number }\r\n): Promise<Memory | null> {\r\n // Build SET clause dynamically\r\n const setClauses: any[] = [];\r\n if (updates.content) {\r\n const newEmbedding = await generateEmbedding(updates.content);\r\n setClauses.push(sql`content = ${updates.content}`);\r\n setClauses.push(sql`embedding = ${JSON.stringify(newEmbedding)}::vector`);\r\n setClauses.push(sql`search_vector = to_tsvector('english', ${updates.content})`);\r\n }\r\n if (updates.type) {\r\n setClauses.push(sql`type = ${updates.type}`);\r\n }\r\n if (updates.importance !== undefined) {\r\n setClauses.push(sql`importance = ${updates.importance}`);\r\n }\r\n\r\n if (setClauses.length === 0) return null;\r\n\r\n const result = await db.execute(sql`\r\n UPDATE memories\r\n SET ${sql.join(setClauses, sql`, `)}\r\n WHERE id = ${id}\r\n RETURNING *\r\n `);\r\n\r\n return (result as any[])[0] || null;\r\n}\r\n\r\n// Delete a memory (soft-delete: move to archived)\r\nexport async function deleteMemory(id: string): Promise<boolean> {\r\n // Get the memory first\r\n const result = await db.execute(sql`\r\n SELECT * FROM memories WHERE id = ${id}\r\n `);\r\n const memory = (result as any[])[0];\r\n if (!memory) return false;\r\n\r\n // Archive it\r\n await db.insert(archivedMemories).values({\r\n originalMemoryId: memory.id,\r\n userId: memory.user_id,\r\n type: memory.type,\r\n content: memory.content,\r\n reason: \"user_request\",\r\n originalCreatedAt: memory.created_at,\r\n });\r\n\r\n // Delete from active memories\r\n await db.execute(sql`DELETE FROM memories WHERE id = ${id}`);\r\n\r\n return true;\r\n}\r\n\r\n// Export memories as Markdown or JSON\r\nexport async function exportMemories(\r\n userId?: string,\r\n format: \"markdown\" | \"json\" = \"markdown\"\r\n): Promise<string> {\r\n const mems = await db\r\n .select()\r\n .from(memories)\r\n .where(userId ? eq(memories.userId, userId) : undefined)\r\n .orderBy(desc(memories.createdAt));\r\n\r\n // Decrypt encrypted memories\r\n for (const m of mems) {\r\n if ((m as any).encrypted) {\r\n try {\r\n (m as any).content = decryptField(m.content) ?? m.content;\r\n } catch {\r\n // If decryption fails, return as-is\r\n }\r\n }\r\n }\r\n\r\n if (format === \"json\") {\r\n return JSON.stringify(\r\n mems.map((m) => ({\r\n id: m.id,\r\n type: m.type,\r\n content: m.content,\r\n importance: m.importance,\r\n source: m.source,\r\n provenance: (m as any).provenance,\r\n createdAt: m.createdAt,\r\n })),\r\n null,\r\n 2\r\n );\r\n }\r\n\r\n // Markdown format\r\n const lines = [\r\n \"# Memories Export\",\r\n `Exported: ${new Date().toISOString()}`,\r\n `Total: ${mems.length} memories`,\r\n \"\",\r\n ];\r\n\r\n for (const m of mems) {\r\n lines.push(`## [${m.type}] (Importance: ${m.importance}/10)`);\r\n lines.push(m.content);\r\n lines.push(`_Source: ${m.source || \"unknown\"} | Created: ${m.createdAt.toISOString()}_`);\r\n lines.push(\"\");\r\n }\r\n\r\n return lines.join(\"\\n\");\r\n}\r\n\r\n// Search memories by semantic similarity\r\nexport async function searchMemories(\r\n query: string,\r\n userId?: string,\r\n limit = 5\r\n): Promise<Memory[]> {\r\n const queryEmbedding = await generateEmbedding(query);\r\n\r\n // Use pgvector cosine similarity search\r\n const results = await db.execute(sql`\r\n SELECT\r\n id, user_id, type, content, importance, source, provenance, metadata,\r\n last_accessed, created_at,\r\n 1 - (embedding <=> ${JSON.stringify(queryEmbedding)}::vector) as similarity\r\n FROM memories\r\n ${userId ? sql`WHERE user_id = ${userId}` : sql``}\r\n ORDER BY embedding <=> ${JSON.stringify(queryEmbedding)}::vector\r\n LIMIT ${limit}\r\n `);\r\n\r\n // Update last_accessed for retrieved memories\r\n const rows = results as any[];\r\n const memoryIds = rows.map((r: any) => r.id);\r\n if (memoryIds.length > 0) {\r\n await db.execute(sql`\r\n UPDATE memories\r\n SET last_accessed = NOW()\r\n WHERE id = ANY(${memoryIds}::uuid[])\r\n `);\r\n }\r\n\r\n // Decrypt content for any encrypted memories\r\n for (const row of rows) {\r\n if (row.encrypted) {\r\n try {\r\n row.content = decryptField(row.content) ?? row.content;\r\n } catch {\r\n // If decryption fails, return as-is\r\n }\r\n }\r\n }\r\n\r\n return rows as Memory[];\r\n}\r\n\r\n// Get a single memory by ID\r\nexport async function getMemoryById(id: string): Promise<Memory | null> {\r\n const result = await db.execute(sql`\r\n SELECT * FROM memories WHERE id = ${id}\r\n `);\r\n const row = (result as any[])[0] || null;\r\n if (row && row.encrypted) {\r\n try {\r\n row.content = decryptField(row.content) ?? row.content;\r\n } catch {\r\n // If decryption fails, return as-is\r\n }\r\n }\r\n return row;\r\n}\r\n\r\n// Get recent memories for a user\r\nexport async function getRecentMemories(\r\n userId: string,\r\n limit = 10\r\n): Promise<Memory[]> {\r\n return db\r\n .select()\r\n .from(memories)\r\n .where(eq(memories.userId, userId))\r\n .orderBy(desc(memories.createdAt))\r\n .limit(limit);\r\n}\r\n\r\n// Extract and store memories from a conversation turn\r\nexport async function extractMemories(\r\n content: string,\r\n userId?: string\r\n): Promise<Memory[]> {\r\n // Use Claude to extract memorable facts\r\n const extractionPrompt = `Analyze this text and extract any important facts that should be remembered about the user or their preferences. Return a JSON array of objects with \"content\" (the fact), \"type\" (semantic/episodic/procedural), and \"importance\" (1-10).\r\n\r\nText: \"${content}\"\r\n\r\nReturn only the JSON array, no other text. If no memorable facts, return [].`;\r\n\r\n try {\r\n const response = await openai.chat.completions.create({\r\n model: \"gpt-4o-mini\",\r\n messages: [{ role: \"user\", content: extractionPrompt }],\r\n response_format: { type: \"json_object\" },\r\n });\r\n\r\n const extracted = JSON.parse(\r\n response.choices[0].message.content || '{\"memories\":[]}'\r\n );\r\n const memoriesToStore = extracted.memories || extracted || [];\r\n\r\n const storedMemories: Memory[] = [];\r\n for (const mem of memoriesToStore) {\r\n if (mem.content && mem.content.length > 5) {\r\n const stored = await storeMemory({\r\n userId,\r\n content: mem.content,\r\n type: mem.type || \"semantic\",\r\n importance: mem.importance || 5,\r\n source: \"conversation\",\r\n provenance: \"extraction:auto\",\r\n });\r\n storedMemories.push(stored);\r\n }\r\n }\r\n\r\n return storedMemories;\r\n } catch (error) {\r\n console.error(\"Error extracting memories:\", error);\r\n return [];\r\n }\r\n}\r\n\r\n// Build context string from relevant memories\r\nexport async function buildMemoryContext(\r\n query: string,\r\n userId?: string,\r\n conversationHistory?: Array<{ role: \"user\" | \"assistant\"; content: string }>\r\n): Promise<string> {\r\n // Use enhanced retrieval pipeline when any advanced RAG feature is enabled\r\n const anyAdvancedEnabled = env.HYDE_ENABLED || env.RERANK_ENABLED ||\r\n env.MULTISTEP_RAG_ENABLED || env.RETRIEVAL_CACHE_ENABLED || env.CONTEXTUAL_QUERY_ENABLED;\r\n\r\n if (anyAdvancedEnabled) {\r\n try {\r\n const { enhancedRetrieve } = await import(\"./memory/enhanced-retrieval\");\r\n const result = await enhancedRetrieve(query, { userId, limit: 5, conversationHistory });\r\n\r\n if (result.results.length === 0) {\r\n return \"\";\r\n }\r\n\r\n const memoryStrings = result.results.map((m: any) => {\r\n const provenance = m.provenance ? ` [${m.provenance}]` : \"\";\r\n const score = m.rerankScore != null\r\n ? `rerank: ${m.rerankScore}/10`\r\n : `relevance: ${((m.similarity || 0) * 100).toFixed(0)}%`;\r\n return `- [${m.type}] ${m.content} (${score})${provenance}`;\r\n });\r\n\r\n return `\\n\\nRelevant memories about the user:\\n${memoryStrings.join(\"\\n\")}`;\r\n } catch {\r\n // Enhanced retrieval failed, fall back to basic search\r\n }\r\n }\r\n\r\n // Fallback: basic vector search\r\n const relevantMemories = await searchMemories(query, userId, 5);\r\n\r\n if (relevantMemories.length === 0) {\r\n return \"\";\r\n }\r\n\r\n const memoryStrings = relevantMemories.map(\r\n (m: any) => {\r\n const provenance = m.provenance ? ` [${m.provenance}]` : \"\";\r\n return `- [${m.type}] ${m.content} (relevance: ${(m.similarity * 100).toFixed(0)}%)${provenance}`;\r\n }\r\n );\r\n\r\n return `\\n\\nRelevant memories about the user:\\n${memoryStrings.join(\"\\n\")}`;\r\n}\r\n"],"mappings":"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","names":["generateEmbedding","memoryStrings"]}