@librechat/data-schemas 0.0.43 → 0.0.45

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 (502) hide show
  1. package/dist/admin/capabilities.cjs +192 -0
  2. package/dist/admin/capabilities.cjs.map +1 -0
  3. package/dist/admin/capabilities.es.js +182 -0
  4. package/dist/admin/capabilities.es.js.map +1 -0
  5. package/dist/app/agents.cjs +24 -0
  6. package/dist/app/agents.cjs.map +1 -0
  7. package/dist/app/agents.es.js +22 -0
  8. package/dist/app/agents.es.js.map +1 -0
  9. package/dist/app/assistants.cjs +56 -0
  10. package/dist/app/assistants.cjs.map +1 -0
  11. package/dist/app/assistants.es.js +53 -0
  12. package/dist/app/assistants.es.js.map +1 -0
  13. package/dist/app/azure.cjs +61 -0
  14. package/dist/app/azure.cjs.map +1 -0
  15. package/dist/app/azure.es.js +59 -0
  16. package/dist/app/azure.es.js.map +1 -0
  17. package/dist/app/endpoints.cjs +63 -0
  18. package/dist/app/endpoints.cjs.map +1 -0
  19. package/dist/app/endpoints.es.js +61 -0
  20. package/dist/app/endpoints.es.js.map +1 -0
  21. package/dist/app/interface.cjs +53 -0
  22. package/dist/app/interface.cjs.map +1 -0
  23. package/dist/app/interface.es.js +51 -0
  24. package/dist/app/interface.es.js.map +1 -0
  25. package/dist/app/memory.cjs +29 -0
  26. package/dist/app/memory.cjs.map +1 -0
  27. package/dist/app/memory.es.js +26 -0
  28. package/dist/app/memory.es.js.map +1 -0
  29. package/dist/app/ocr.cjs +21 -0
  30. package/dist/app/ocr.cjs.map +1 -0
  31. package/dist/app/ocr.es.js +19 -0
  32. package/dist/app/ocr.es.js.map +1 -0
  33. package/dist/app/resolution.cjs +51 -0
  34. package/dist/app/resolution.cjs.map +1 -0
  35. package/dist/app/resolution.es.js +49 -0
  36. package/dist/app/resolution.es.js.map +1 -0
  37. package/dist/app/service.cjs +108 -0
  38. package/dist/app/service.cjs.map +1 -0
  39. package/dist/app/service.es.js +106 -0
  40. package/dist/app/service.es.js.map +1 -0
  41. package/dist/app/specs.cjs +71 -0
  42. package/dist/app/specs.cjs.map +1 -0
  43. package/dist/app/specs.es.js +69 -0
  44. package/dist/app/specs.es.js.map +1 -0
  45. package/dist/app/turnstile.cjs +40 -0
  46. package/dist/app/turnstile.cjs.map +1 -0
  47. package/dist/app/turnstile.es.js +38 -0
  48. package/dist/app/turnstile.es.js.map +1 -0
  49. package/dist/app/vertex.cjs +156 -0
  50. package/dist/app/vertex.cjs.map +1 -0
  51. package/dist/app/vertex.es.js +152 -0
  52. package/dist/app/vertex.es.js.map +1 -0
  53. package/dist/app/web.cjs +87 -0
  54. package/dist/app/web.cjs.map +1 -0
  55. package/dist/app/web.es.js +82 -0
  56. package/dist/app/web.es.js.map +1 -0
  57. package/dist/common/enum.cjs +19 -0
  58. package/dist/common/enum.cjs.map +1 -0
  59. package/dist/common/enum.es.js +19 -0
  60. package/dist/common/enum.es.js.map +1 -0
  61. package/dist/config/meiliLogger.cjs +57 -0
  62. package/dist/config/meiliLogger.cjs.map +1 -0
  63. package/dist/config/meiliLogger.es.js +55 -0
  64. package/dist/config/meiliLogger.es.js.map +1 -0
  65. package/dist/config/parsers.cjs +224 -0
  66. package/dist/config/parsers.cjs.map +1 -0
  67. package/dist/config/parsers.es.js +219 -0
  68. package/dist/config/parsers.es.js.map +1 -0
  69. package/dist/config/tenantContext.cjs +30 -0
  70. package/dist/config/tenantContext.cjs.map +1 -0
  71. package/dist/config/tenantContext.es.js +25 -0
  72. package/dist/config/tenantContext.es.js.map +1 -0
  73. package/dist/config/utils.cjs +37 -0
  74. package/dist/config/utils.cjs.map +1 -0
  75. package/dist/config/utils.es.js +35 -0
  76. package/dist/config/utils.es.js.map +1 -0
  77. package/dist/config/winston.cjs +93 -0
  78. package/dist/config/winston.cjs.map +1 -0
  79. package/dist/config/winston.es.js +91 -0
  80. package/dist/config/winston.es.js.map +1 -0
  81. package/dist/crypto/index.cjs +156 -0
  82. package/dist/crypto/index.cjs.map +1 -0
  83. package/dist/crypto/index.es.js +145 -0
  84. package/dist/crypto/index.es.js.map +1 -0
  85. package/dist/index.cjs +142 -11734
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.es.js +52 -11652
  88. package/dist/index.es.js.map +1 -1
  89. package/dist/methods/accessRole.cjs +210 -0
  90. package/dist/methods/accessRole.cjs.map +1 -0
  91. package/dist/methods/accessRole.es.js +208 -0
  92. package/dist/methods/accessRole.es.js.map +1 -0
  93. package/dist/methods/aclEntry.cjs +361 -0
  94. package/dist/methods/aclEntry.cjs.map +1 -0
  95. package/dist/methods/aclEntry.es.js +359 -0
  96. package/dist/methods/aclEntry.es.js.map +1 -0
  97. package/dist/methods/action.cjs +59 -0
  98. package/dist/methods/action.cjs.map +1 -0
  99. package/dist/methods/action.es.js +57 -0
  100. package/dist/methods/action.es.js.map +1 -0
  101. package/dist/methods/agent.cjs +580 -0
  102. package/dist/methods/agent.cjs.map +1 -0
  103. package/dist/methods/agent.es.js +578 -0
  104. package/dist/methods/agent.es.js.map +1 -0
  105. package/dist/methods/agentApiKey.cjs +140 -0
  106. package/dist/methods/agentApiKey.cjs.map +1 -0
  107. package/dist/methods/agentApiKey.es.js +138 -0
  108. package/dist/methods/agentApiKey.es.js.map +1 -0
  109. package/dist/methods/agentCategory.cjs +226 -0
  110. package/dist/methods/agentCategory.cjs.map +1 -0
  111. package/dist/methods/agentCategory.es.js +224 -0
  112. package/dist/methods/agentCategory.es.js.map +1 -0
  113. package/dist/methods/assistant.cjs +53 -0
  114. package/dist/methods/assistant.cjs.map +1 -0
  115. package/dist/methods/assistant.es.js +51 -0
  116. package/dist/methods/assistant.es.js.map +1 -0
  117. package/dist/methods/banner.cjs +32 -0
  118. package/dist/methods/banner.cjs.map +1 -0
  119. package/dist/methods/banner.es.js +30 -0
  120. package/dist/methods/banner.es.js.map +1 -0
  121. package/dist/methods/categories.cjs +33 -0
  122. package/dist/methods/categories.cjs.map +1 -0
  123. package/dist/methods/categories.es.js +31 -0
  124. package/dist/methods/categories.es.js.map +1 -0
  125. package/dist/methods/config.cjs +106 -0
  126. package/dist/methods/config.cjs.map +1 -0
  127. package/dist/methods/config.es.js +104 -0
  128. package/dist/methods/config.es.js.map +1 -0
  129. package/dist/methods/conversation.cjs +344 -0
  130. package/dist/methods/conversation.cjs.map +1 -0
  131. package/dist/methods/conversation.es.js +342 -0
  132. package/dist/methods/conversation.es.js.map +1 -0
  133. package/dist/methods/conversationTag.cjs +234 -0
  134. package/dist/methods/conversationTag.cjs.map +1 -0
  135. package/dist/methods/conversationTag.es.js +232 -0
  136. package/dist/methods/conversationTag.es.js.map +1 -0
  137. package/dist/methods/file.cjs +315 -0
  138. package/dist/methods/file.cjs.map +1 -0
  139. package/dist/methods/file.es.js +313 -0
  140. package/dist/methods/file.es.js.map +1 -0
  141. package/dist/methods/index.cjs +135 -0
  142. package/dist/methods/index.cjs.map +1 -0
  143. package/dist/methods/index.es.js +130 -0
  144. package/dist/methods/index.es.js.map +1 -0
  145. package/dist/methods/key.cjs +136 -0
  146. package/dist/methods/key.cjs.map +1 -0
  147. package/dist/methods/key.es.js +134 -0
  148. package/dist/methods/key.es.js.map +1 -0
  149. package/dist/methods/mcpServer.cjs +259 -0
  150. package/dist/methods/mcpServer.cjs.map +1 -0
  151. package/dist/methods/mcpServer.es.js +257 -0
  152. package/dist/methods/mcpServer.es.js.map +1 -0
  153. package/dist/methods/memory.cjs +145 -0
  154. package/dist/methods/memory.cjs.map +1 -0
  155. package/dist/methods/memory.es.js +143 -0
  156. package/dist/methods/memory.es.js.map +1 -0
  157. package/dist/methods/message.cjs +280 -0
  158. package/dist/methods/message.cjs.map +1 -0
  159. package/dist/methods/message.es.js +278 -0
  160. package/dist/methods/message.es.js.map +1 -0
  161. package/dist/methods/pluginAuth.cjs +108 -0
  162. package/dist/methods/pluginAuth.cjs.map +1 -0
  163. package/dist/methods/pluginAuth.es.js +106 -0
  164. package/dist/methods/pluginAuth.es.js.map +1 -0
  165. package/dist/methods/preset.cjs +105 -0
  166. package/dist/methods/preset.cjs.map +1 -0
  167. package/dist/methods/preset.es.js +103 -0
  168. package/dist/methods/preset.es.js.map +1 -0
  169. package/dist/methods/prompt.cjs +546 -0
  170. package/dist/methods/prompt.cjs.map +1 -0
  171. package/dist/methods/prompt.es.js +544 -0
  172. package/dist/methods/prompt.es.js.map +1 -0
  173. package/dist/methods/role.cjs +290 -0
  174. package/dist/methods/role.cjs.map +1 -0
  175. package/dist/methods/role.es.js +288 -0
  176. package/dist/methods/role.es.js.map +1 -0
  177. package/dist/methods/session.cjs +221 -0
  178. package/dist/methods/session.cjs.map +1 -0
  179. package/dist/methods/session.es.js +217 -0
  180. package/dist/methods/session.es.js.map +1 -0
  181. package/dist/methods/share.cjs +474 -0
  182. package/dist/methods/share.cjs.map +1 -0
  183. package/dist/methods/share.es.js +472 -0
  184. package/dist/methods/share.es.js.map +1 -0
  185. package/dist/methods/spendTokens.cjs +109 -0
  186. package/dist/methods/spendTokens.cjs.map +1 -0
  187. package/dist/methods/spendTokens.es.js +107 -0
  188. package/dist/methods/spendTokens.es.js.map +1 -0
  189. package/dist/methods/systemGrant.cjs +190 -0
  190. package/dist/methods/systemGrant.cjs.map +1 -0
  191. package/dist/methods/systemGrant.es.js +188 -0
  192. package/dist/methods/systemGrant.es.js.map +1 -0
  193. package/dist/methods/token.cjs +117 -0
  194. package/dist/methods/token.cjs.map +1 -0
  195. package/dist/methods/token.es.js +115 -0
  196. package/dist/methods/token.es.js.map +1 -0
  197. package/dist/methods/toolCall.cjs +91 -0
  198. package/dist/methods/toolCall.cjs.map +1 -0
  199. package/dist/methods/toolCall.es.js +89 -0
  200. package/dist/methods/toolCall.es.js.map +1 -0
  201. package/dist/methods/transaction.cjs +305 -0
  202. package/dist/methods/transaction.cjs.map +1 -0
  203. package/dist/methods/transaction.es.js +303 -0
  204. package/dist/methods/transaction.es.js.map +1 -0
  205. package/dist/methods/tx.cjs +443 -0
  206. package/dist/methods/tx.cjs.map +1 -0
  207. package/dist/methods/tx.es.js +437 -0
  208. package/dist/methods/tx.es.js.map +1 -0
  209. package/dist/methods/user.cjs +269 -0
  210. package/dist/methods/user.cjs.map +1 -0
  211. package/dist/methods/user.es.js +266 -0
  212. package/dist/methods/user.es.js.map +1 -0
  213. package/dist/methods/userGroup.cjs +518 -0
  214. package/dist/methods/userGroup.cjs.map +1 -0
  215. package/dist/methods/userGroup.es.js +516 -0
  216. package/dist/methods/userGroup.es.js.map +1 -0
  217. package/dist/migrations/tenantIndexes.cjs +85 -0
  218. package/dist/migrations/tenantIndexes.cjs.map +1 -0
  219. package/dist/migrations/tenantIndexes.es.js +82 -0
  220. package/dist/migrations/tenantIndexes.es.js.map +1 -0
  221. package/dist/models/accessRole.cjs +12 -0
  222. package/dist/models/accessRole.cjs.map +1 -0
  223. package/dist/models/accessRole.es.js +10 -0
  224. package/dist/models/accessRole.es.js.map +1 -0
  225. package/dist/models/aclEntry.cjs +12 -0
  226. package/dist/models/aclEntry.cjs.map +1 -0
  227. package/dist/models/aclEntry.es.js +10 -0
  228. package/dist/models/aclEntry.es.js.map +1 -0
  229. package/dist/models/action.cjs +12 -0
  230. package/dist/models/action.cjs.map +1 -0
  231. package/dist/models/action.es.js +10 -0
  232. package/dist/models/action.es.js.map +1 -0
  233. package/dist/models/agent.cjs +12 -0
  234. package/dist/models/agent.cjs.map +1 -0
  235. package/dist/models/agent.es.js +10 -0
  236. package/dist/models/agent.es.js.map +1 -0
  237. package/dist/models/agentApiKey.cjs +12 -0
  238. package/dist/models/agentApiKey.cjs.map +1 -0
  239. package/dist/models/agentApiKey.es.js +10 -0
  240. package/dist/models/agentApiKey.es.js.map +1 -0
  241. package/dist/models/agentCategory.cjs +13 -0
  242. package/dist/models/agentCategory.cjs.map +1 -0
  243. package/dist/models/agentCategory.es.js +11 -0
  244. package/dist/models/agentCategory.es.js.map +1 -0
  245. package/dist/models/assistant.cjs +12 -0
  246. package/dist/models/assistant.cjs.map +1 -0
  247. package/dist/models/assistant.es.js +10 -0
  248. package/dist/models/assistant.es.js.map +1 -0
  249. package/dist/models/balance.cjs +12 -0
  250. package/dist/models/balance.cjs.map +1 -0
  251. package/dist/models/balance.es.js +10 -0
  252. package/dist/models/balance.es.js.map +1 -0
  253. package/dist/models/banner.cjs +12 -0
  254. package/dist/models/banner.cjs.map +1 -0
  255. package/dist/models/banner.es.js +10 -0
  256. package/dist/models/banner.es.js.map +1 -0
  257. package/dist/models/config.cjs +12 -0
  258. package/dist/models/config.cjs.map +1 -0
  259. package/dist/models/config.es.js +10 -0
  260. package/dist/models/config.es.js.map +1 -0
  261. package/dist/models/conversationTag.cjs +13 -0
  262. package/dist/models/conversationTag.cjs.map +1 -0
  263. package/dist/models/conversationTag.es.js +11 -0
  264. package/dist/models/conversationTag.es.js.map +1 -0
  265. package/dist/models/convo.cjs +23 -0
  266. package/dist/models/convo.cjs.map +1 -0
  267. package/dist/models/convo.es.js +21 -0
  268. package/dist/models/convo.es.js.map +1 -0
  269. package/dist/models/file.cjs +12 -0
  270. package/dist/models/file.cjs.map +1 -0
  271. package/dist/models/file.es.js +10 -0
  272. package/dist/models/file.es.js.map +1 -0
  273. package/dist/models/group.cjs +12 -0
  274. package/dist/models/group.cjs.map +1 -0
  275. package/dist/models/group.es.js +10 -0
  276. package/dist/models/group.es.js.map +1 -0
  277. package/dist/models/index.cjs +73 -0
  278. package/dist/models/index.cjs.map +1 -0
  279. package/dist/models/index.es.js +71 -0
  280. package/dist/models/index.es.js.map +1 -0
  281. package/dist/models/key.cjs +12 -0
  282. package/dist/models/key.cjs.map +1 -0
  283. package/dist/models/key.es.js +10 -0
  284. package/dist/models/key.es.js.map +1 -0
  285. package/dist/models/mcpServer.cjs +12 -0
  286. package/dist/models/mcpServer.cjs.map +1 -0
  287. package/dist/models/mcpServer.es.js +10 -0
  288. package/dist/models/mcpServer.es.js.map +1 -0
  289. package/dist/models/memory.cjs +12 -0
  290. package/dist/models/memory.cjs.map +1 -0
  291. package/dist/models/memory.es.js +10 -0
  292. package/dist/models/memory.es.js.map +1 -0
  293. package/dist/models/message.cjs +22 -0
  294. package/dist/models/message.cjs.map +1 -0
  295. package/dist/models/message.es.js +20 -0
  296. package/dist/models/message.es.js.map +1 -0
  297. package/dist/models/pluginAuth.cjs +12 -0
  298. package/dist/models/pluginAuth.cjs.map +1 -0
  299. package/dist/models/pluginAuth.es.js +10 -0
  300. package/dist/models/pluginAuth.es.js.map +1 -0
  301. package/dist/models/plugins/mongoMeili.cjs +547 -0
  302. package/dist/models/plugins/mongoMeili.cjs.map +1 -0
  303. package/dist/models/plugins/mongoMeili.es.js +545 -0
  304. package/dist/models/plugins/mongoMeili.es.js.map +1 -0
  305. package/dist/models/plugins/tenantIsolation.cjs +140 -0
  306. package/dist/models/plugins/tenantIsolation.cjs.map +1 -0
  307. package/dist/models/plugins/tenantIsolation.es.js +138 -0
  308. package/dist/models/plugins/tenantIsolation.es.js.map +1 -0
  309. package/dist/models/preset.cjs +12 -0
  310. package/dist/models/preset.cjs.map +1 -0
  311. package/dist/models/preset.es.js +10 -0
  312. package/dist/models/preset.es.js.map +1 -0
  313. package/dist/models/prompt.cjs +12 -0
  314. package/dist/models/prompt.cjs.map +1 -0
  315. package/dist/models/prompt.es.js +10 -0
  316. package/dist/models/prompt.es.js.map +1 -0
  317. package/dist/models/promptGroup.cjs +13 -0
  318. package/dist/models/promptGroup.cjs.map +1 -0
  319. package/dist/models/promptGroup.es.js +11 -0
  320. package/dist/models/promptGroup.es.js.map +1 -0
  321. package/dist/models/role.cjs +12 -0
  322. package/dist/models/role.cjs.map +1 -0
  323. package/dist/models/role.es.js +10 -0
  324. package/dist/models/role.es.js.map +1 -0
  325. package/dist/models/session.cjs +12 -0
  326. package/dist/models/session.cjs.map +1 -0
  327. package/dist/models/session.es.js +10 -0
  328. package/dist/models/session.es.js.map +1 -0
  329. package/dist/models/sharedLink.cjs +12 -0
  330. package/dist/models/sharedLink.cjs.map +1 -0
  331. package/dist/models/sharedLink.es.js +10 -0
  332. package/dist/models/sharedLink.es.js.map +1 -0
  333. package/dist/models/systemGrant.cjs +16 -0
  334. package/dist/models/systemGrant.cjs.map +1 -0
  335. package/dist/models/systemGrant.es.js +14 -0
  336. package/dist/models/systemGrant.es.js.map +1 -0
  337. package/dist/models/token.cjs +12 -0
  338. package/dist/models/token.cjs.map +1 -0
  339. package/dist/models/token.es.js +10 -0
  340. package/dist/models/token.es.js.map +1 -0
  341. package/dist/models/toolCall.cjs +12 -0
  342. package/dist/models/toolCall.cjs.map +1 -0
  343. package/dist/models/toolCall.es.js +10 -0
  344. package/dist/models/toolCall.es.js.map +1 -0
  345. package/dist/models/transaction.cjs +12 -0
  346. package/dist/models/transaction.cjs.map +1 -0
  347. package/dist/models/transaction.es.js +10 -0
  348. package/dist/models/transaction.es.js.map +1 -0
  349. package/dist/models/user.cjs +12 -0
  350. package/dist/models/user.cjs.map +1 -0
  351. package/dist/models/user.es.js +10 -0
  352. package/dist/models/user.es.js.map +1 -0
  353. package/dist/schema/accessRole.cjs +34 -0
  354. package/dist/schema/accessRole.cjs.map +1 -0
  355. package/dist/schema/accessRole.es.js +32 -0
  356. package/dist/schema/accessRole.es.js.map +1 -0
  357. package/dist/schema/aclEntry.cjs +74 -0
  358. package/dist/schema/aclEntry.cjs.map +1 -0
  359. package/dist/schema/aclEntry.es.js +72 -0
  360. package/dist/schema/aclEntry.es.js.map +1 -0
  361. package/dist/schema/action.cjs +54 -0
  362. package/dist/schema/action.cjs.map +1 -0
  363. package/dist/schema/action.es.js +52 -0
  364. package/dist/schema/action.es.js.map +1 -0
  365. package/dist/schema/agent.cjs +128 -0
  366. package/dist/schema/agent.cjs.map +1 -0
  367. package/dist/schema/agent.es.js +126 -0
  368. package/dist/schema/agent.es.js.map +1 -0
  369. package/dist/schema/agentApiKey.cjs +50 -0
  370. package/dist/schema/agentApiKey.cjs.map +1 -0
  371. package/dist/schema/agentApiKey.es.js +48 -0
  372. package/dist/schema/agentApiKey.es.js.map +1 -0
  373. package/dist/schema/agentCategory.cjs +49 -0
  374. package/dist/schema/agentCategory.cjs.map +1 -0
  375. package/dist/schema/agentCategory.es.js +47 -0
  376. package/dist/schema/agentCategory.es.js.map +1 -0
  377. package/dist/schema/assistant.cjs +42 -0
  378. package/dist/schema/assistant.cjs.map +1 -0
  379. package/dist/schema/assistant.es.js +40 -0
  380. package/dist/schema/assistant.es.js.map +1 -0
  381. package/dist/schema/balance.cjs +47 -0
  382. package/dist/schema/balance.cjs.map +1 -0
  383. package/dist/schema/balance.es.js +45 -0
  384. package/dist/schema/balance.es.js.map +1 -0
  385. package/dist/schema/banner.cjs +42 -0
  386. package/dist/schema/banner.cjs.map +1 -0
  387. package/dist/schema/banner.es.js +40 -0
  388. package/dist/schema/banner.es.js.map +1 -0
  389. package/dist/schema/categories.cjs +23 -0
  390. package/dist/schema/categories.cjs.map +1 -0
  391. package/dist/schema/categories.es.js +21 -0
  392. package/dist/schema/categories.es.js.map +1 -0
  393. package/dist/schema/config.cjs +59 -0
  394. package/dist/schema/config.cjs.map +1 -0
  395. package/dist/schema/config.es.js +57 -0
  396. package/dist/schema/config.es.js.map +1 -0
  397. package/dist/schema/conversationTag.cjs +36 -0
  398. package/dist/schema/conversationTag.cjs.map +1 -0
  399. package/dist/schema/conversationTag.es.js +34 -0
  400. package/dist/schema/conversationTag.es.js.map +1 -0
  401. package/dist/schema/convo.cjs +52 -0
  402. package/dist/schema/convo.cjs.map +1 -0
  403. package/dist/schema/convo.es.js +50 -0
  404. package/dist/schema/convo.es.js.map +1 -0
  405. package/dist/schema/defaults.cjs +168 -0
  406. package/dist/schema/defaults.cjs.map +1 -0
  407. package/dist/schema/defaults.es.js +166 -0
  408. package/dist/schema/defaults.es.js.map +1 -0
  409. package/dist/schema/file.cjs +92 -0
  410. package/dist/schema/file.cjs.map +1 -0
  411. package/dist/schema/file.es.js +90 -0
  412. package/dist/schema/file.es.js.map +1 -0
  413. package/dist/schema/group.cjs +56 -0
  414. package/dist/schema/group.cjs.map +1 -0
  415. package/dist/schema/group.es.js +54 -0
  416. package/dist/schema/group.es.js.map +1 -0
  417. package/dist/schema/key.cjs +30 -0
  418. package/dist/schema/key.cjs.map +1 -0
  419. package/dist/schema/key.es.js +28 -0
  420. package/dist/schema/key.es.js.map +1 -0
  421. package/dist/schema/mcpServer.cjs +33 -0
  422. package/dist/schema/mcpServer.cjs.map +1 -0
  423. package/dist/schema/mcpServer.es.js +31 -0
  424. package/dist/schema/mcpServer.es.js.map +1 -0
  425. package/dist/schema/memory.cjs +39 -0
  426. package/dist/schema/memory.cjs.map +1 -0
  427. package/dist/schema/memory.es.js +37 -0
  428. package/dist/schema/memory.es.js.map +1 -0
  429. package/dist/schema/message.cjs +167 -0
  430. package/dist/schema/message.cjs.map +1 -0
  431. package/dist/schema/message.es.js +165 -0
  432. package/dist/schema/message.es.js.map +1 -0
  433. package/dist/schema/pluginAuth.cjs +28 -0
  434. package/dist/schema/pluginAuth.cjs.map +1 -0
  435. package/dist/schema/pluginAuth.es.js +26 -0
  436. package/dist/schema/pluginAuth.es.js.map +1 -0
  437. package/dist/schema/preset.cjs +36 -0
  438. package/dist/schema/preset.cjs.map +1 -0
  439. package/dist/schema/preset.es.js +34 -0
  440. package/dist/schema/preset.es.js.map +1 -0
  441. package/dist/schema/prompt.cjs +36 -0
  442. package/dist/schema/prompt.cjs.map +1 -0
  443. package/dist/schema/prompt.es.js +34 -0
  444. package/dist/schema/prompt.es.js.map +1 -0
  445. package/dist/schema/promptGroup.cjs +65 -0
  446. package/dist/schema/promptGroup.cjs.map +1 -0
  447. package/dist/schema/promptGroup.es.js +63 -0
  448. package/dist/schema/promptGroup.es.js.map +1 -0
  449. package/dist/schema/role.cjs +84 -0
  450. package/dist/schema/role.cjs.map +1 -0
  451. package/dist/schema/role.es.js +82 -0
  452. package/dist/schema/role.es.js.map +1 -0
  453. package/dist/schema/session.cjs +27 -0
  454. package/dist/schema/session.cjs.map +1 -0
  455. package/dist/schema/session.es.js +25 -0
  456. package/dist/schema/session.es.js.map +1 -0
  457. package/dist/schema/share.cjs +40 -0
  458. package/dist/schema/share.cjs.map +1 -0
  459. package/dist/schema/share.es.js +38 -0
  460. package/dist/schema/share.es.js.map +1 -0
  461. package/dist/schema/systemGrant.cjs +66 -0
  462. package/dist/schema/systemGrant.cjs.map +1 -0
  463. package/dist/schema/systemGrant.es.js +64 -0
  464. package/dist/schema/systemGrant.es.js.map +1 -0
  465. package/dist/schema/token.cjs +45 -0
  466. package/dist/schema/token.cjs.map +1 -0
  467. package/dist/schema/token.es.js +43 -0
  468. package/dist/schema/token.es.js.map +1 -0
  469. package/dist/schema/toolCall.cjs +44 -0
  470. package/dist/schema/toolCall.cjs.map +1 -0
  471. package/dist/schema/toolCall.es.js +42 -0
  472. package/dist/schema/toolCall.es.js.map +1 -0
  473. package/dist/schema/transaction.cjs +48 -0
  474. package/dist/schema/transaction.cjs.map +1 -0
  475. package/dist/schema/transaction.es.js +46 -0
  476. package/dist/schema/transaction.es.js.map +1 -0
  477. package/dist/schema/user.cjs +165 -0
  478. package/dist/schema/user.cjs.map +1 -0
  479. package/dist/schema/user.es.js +163 -0
  480. package/dist/schema/user.es.js.map +1 -0
  481. package/dist/types/methods/config.d.ts +1 -0
  482. package/dist/utils/object-traverse.cjs +158 -0
  483. package/dist/utils/object-traverse.cjs.map +1 -0
  484. package/dist/utils/object-traverse.es.js +156 -0
  485. package/dist/utils/object-traverse.es.js.map +1 -0
  486. package/dist/utils/principal.cjs +24 -0
  487. package/dist/utils/principal.cjs.map +1 -0
  488. package/dist/utils/principal.es.js +22 -0
  489. package/dist/utils/principal.es.js.map +1 -0
  490. package/dist/utils/string.cjs +11 -0
  491. package/dist/utils/string.cjs.map +1 -0
  492. package/dist/utils/string.es.js +9 -0
  493. package/dist/utils/string.es.js.map +1 -0
  494. package/dist/utils/tempChatRetention.cjs +70 -0
  495. package/dist/utils/tempChatRetention.cjs.map +1 -0
  496. package/dist/utils/tempChatRetention.es.js +64 -0
  497. package/dist/utils/tempChatRetention.es.js.map +1 -0
  498. package/dist/utils/transactions.cjs +60 -0
  499. package/dist/utils/transactions.cjs.map +1 -0
  500. package/dist/utils/transactions.es.js +56 -0
  501. package/dist/utils/transactions.es.js.map +1 -0
  502. package/package.json +7 -1
@@ -0,0 +1,545 @@
1
+ import _ from 'lodash';
2
+ import { parseTextParts } from 'librechat-data-provider';
3
+ import { MeiliSearch, MeiliSearchTimeOutError } from 'meilisearch';
4
+ import logger from '../../config/meiliLogger.es.js';
5
+
6
+ // Environment flags
7
+ /**
8
+ * Flag to indicate if search is enabled based on environment variables.
9
+ */
10
+ const searchEnabled = process.env.SEARCH != null && process.env.SEARCH.toLowerCase() === 'true';
11
+ /**
12
+ * Flag to indicate if MeiliSearch is enabled based on required environment variables.
13
+ */
14
+ const meiliEnabled = process.env.MEILI_HOST != null && process.env.MEILI_MASTER_KEY != null && searchEnabled;
15
+ /**
16
+ * Get sync configuration from environment variables
17
+ */
18
+ const getSyncConfig = () => ({
19
+ batchSize: parseInt(process.env.MEILI_SYNC_BATCH_SIZE || '100', 10),
20
+ delayMs: parseInt(process.env.MEILI_SYNC_DELAY_MS || '100', 10),
21
+ });
22
+ /**
23
+ * Validates the required options for configuring the mongoMeili plugin.
24
+ */
25
+ const validateOptions = (options) => {
26
+ const requiredKeys = ['host', 'apiKey', 'indexName'];
27
+ requiredKeys.forEach((key) => {
28
+ if (!options[key]) {
29
+ throw new Error(`Missing mongoMeili Option: ${key}`);
30
+ }
31
+ });
32
+ };
33
+ /**
34
+ * Helper function to process documents in batches with rate limiting
35
+ */
36
+ const processBatch = async (items, batchSize, delayMs, processor) => {
37
+ for (let i = 0; i < items.length; i += batchSize) {
38
+ const batch = items.slice(i, i + batchSize);
39
+ await processor(batch);
40
+ // Add delay between batches to prevent overwhelming resources
41
+ if (i + batchSize < items.length && delayMs > 0) {
42
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
43
+ }
44
+ }
45
+ };
46
+ /**
47
+ * Factory function to create a MeiliMongooseModel class which extends a Mongoose model.
48
+ * This class contains static and instance methods to synchronize and manage the MeiliSearch index
49
+ * corresponding to the MongoDB collection.
50
+ *
51
+ * @param config - Configuration object.
52
+ * @param config.index - The MeiliSearch index object.
53
+ * @param config.attributesToIndex - List of attributes to index.
54
+ * @param config.syncOptions - Sync configuration options.
55
+ * @returns A class definition that will be loaded into the Mongoose schema.
56
+ */
57
+ const createMeiliMongooseModel = ({ index, attributesToIndex, syncOptions, }) => {
58
+ const primaryKey = attributesToIndex[0];
59
+ const syncConfig = { ...getSyncConfig(), ...syncOptions };
60
+ class MeiliMongooseModel {
61
+ /**
62
+ * Get the current sync progress
63
+ */
64
+ static async getSyncProgress() {
65
+ const totalDocuments = await this.countDocuments({ expiredAt: null });
66
+ const indexedDocuments = await this.countDocuments({ expiredAt: null, _meiliIndex: true });
67
+ return {
68
+ totalProcessed: indexedDocuments,
69
+ totalDocuments,
70
+ isComplete: indexedDocuments === totalDocuments,
71
+ };
72
+ }
73
+ /**
74
+ * Synchronizes data between the MongoDB collection and the MeiliSearch index by
75
+ * incrementally indexing only documents where `expiredAt` is `null` and `_meiliIndex` is not `true`
76
+ * (i.e., non-expired documents that have not yet been indexed, including those with missing or null `_meiliIndex`).
77
+ * */
78
+ static async syncWithMeili() {
79
+ const startTime = Date.now();
80
+ const { batchSize, delayMs } = syncConfig;
81
+ const collectionName = primaryKey === 'messageId' ? 'messages' : 'conversations';
82
+ logger.info(`[syncWithMeili] Starting sync for ${collectionName} with batch size ${batchSize}`);
83
+ // Get approximate total count for raw estimation, the sync should not overcome this number
84
+ const approxTotalCount = await this.estimatedDocumentCount();
85
+ logger.info(`[syncWithMeili] Approximate total number of all ${collectionName}: ${approxTotalCount}`);
86
+ try {
87
+ // First, handle documents that need to be removed from Meili
88
+ logger.info(`[syncWithMeili] Starting cleanup of Meili index ${index.uid} before sync`);
89
+ await this.cleanupMeiliIndex(index, primaryKey, batchSize, delayMs);
90
+ logger.info(`[syncWithMeili] Completed cleanup of Meili index: ${index.uid}`);
91
+ }
92
+ catch (error) {
93
+ logger.error('[syncWithMeili] Error during cleanup Meili before sync:', error);
94
+ throw error;
95
+ }
96
+ let processedCount = 0;
97
+ let hasMore = true;
98
+ while (hasMore) {
99
+ const query = {
100
+ expiredAt: null,
101
+ _meiliIndex: { $ne: true },
102
+ };
103
+ try {
104
+ const documents = await this.find(query)
105
+ .select(attributesToIndex.join(' ') + ' _meiliIndex')
106
+ .limit(batchSize)
107
+ .lean();
108
+ // Check if there are more documents to process
109
+ if (documents.length === 0) {
110
+ logger.info('[syncWithMeili] No more documents to process');
111
+ break;
112
+ }
113
+ // Process the batch
114
+ await this.processSyncBatch(index, documents);
115
+ processedCount += documents.length;
116
+ logger.info(`[syncWithMeili] Processed: ${processedCount}`);
117
+ if (documents.length < batchSize) {
118
+ hasMore = false;
119
+ }
120
+ // Add delay to prevent overwhelming resources
121
+ if (hasMore && delayMs > 0) {
122
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
123
+ }
124
+ }
125
+ catch (error) {
126
+ logger.error('[syncWithMeili] Error processing documents batch:', error);
127
+ throw error;
128
+ }
129
+ }
130
+ const duration = Date.now() - startTime;
131
+ logger.info(`[syncWithMeili] Completed sync for ${collectionName}. Processed ${processedCount} documents in ${duration}ms`);
132
+ }
133
+ /**
134
+ * Process a batch of documents for syncing
135
+ */
136
+ static async processSyncBatch(index, documents) {
137
+ if (documents.length === 0) {
138
+ return;
139
+ }
140
+ // Format documents for MeiliSearch
141
+ const formattedDocs = documents.map((doc) => _.omitBy(_.pick(doc, attributesToIndex), (_v, k) => k.startsWith('$')));
142
+ try {
143
+ // Add documents to MeiliSearch
144
+ await index.addDocumentsInBatches(formattedDocs);
145
+ // Update MongoDB to mark documents as indexed.
146
+ // { timestamps: false } prevents Mongoose from touching updatedAt, preserving
147
+ // original conversation/message timestamps (fixes sidebar chronological sort).
148
+ const docsIds = documents.map((doc) => doc._id);
149
+ await this.updateMany({ _id: { $in: docsIds } }, { $set: { _meiliIndex: true } }, { timestamps: false });
150
+ }
151
+ catch (error) {
152
+ logger.error('[processSyncBatch] Error processing batch:', error);
153
+ throw error;
154
+ }
155
+ }
156
+ /**
157
+ * Clean up documents in MeiliSearch that no longer exist in MongoDB
158
+ */
159
+ static async cleanupMeiliIndex(index, primaryKey, batchSize, delayMs) {
160
+ try {
161
+ let offset = 0;
162
+ let moreDocuments = true;
163
+ while (moreDocuments) {
164
+ const batch = await index.getDocuments({ limit: batchSize, offset });
165
+ if (batch.results.length === 0) {
166
+ moreDocuments = false;
167
+ break;
168
+ }
169
+ const meiliIds = batch.results.map((doc) => doc[primaryKey]);
170
+ const query = {};
171
+ query[primaryKey] = { $in: meiliIds };
172
+ // Find which documents exist in MongoDB
173
+ const existingDocs = await this.find(query).select(primaryKey).lean();
174
+ const existingIds = new Set(existingDocs.map((doc) => doc[primaryKey]));
175
+ // Delete documents that don't exist in MongoDB
176
+ const toDelete = meiliIds.filter((id) => !existingIds.has(id));
177
+ if (toDelete.length > 0) {
178
+ await index.deleteDocuments(toDelete.map(String));
179
+ logger.debug(`[cleanupMeiliIndex] Deleted ${toDelete.length} orphaned documents`);
180
+ }
181
+ // if fetch documents request returns less documents than limit, all documents are processed
182
+ if (batch.results.length < batchSize) {
183
+ break;
184
+ }
185
+ offset += batchSize - toDelete.length;
186
+ // Add delay between batches
187
+ if (delayMs > 0) {
188
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
189
+ }
190
+ }
191
+ }
192
+ catch (error) {
193
+ logger.error('[cleanupMeiliIndex] Error during cleanup:', error);
194
+ }
195
+ }
196
+ /**
197
+ * Updates settings for the MeiliSearch index
198
+ */
199
+ static async setMeiliIndexSettings(settings) {
200
+ return await index.updateSettings(settings);
201
+ }
202
+ /**
203
+ * Searches the MeiliSearch index and optionally populates results
204
+ */
205
+ static async meiliSearch(q, params, populate) {
206
+ const data = await index.search(q, params);
207
+ if (populate) {
208
+ const query = {};
209
+ query[primaryKey] = _.map(data.hits, (hit) => hit[primaryKey]);
210
+ const projection = Object.keys(this.schema.obj).reduce((results, key) => {
211
+ if (!key.startsWith('$')) {
212
+ results[key] = 1;
213
+ }
214
+ return results;
215
+ }, { _id: 1, __v: 1 });
216
+ const hitsFromMongoose = await this.find(query, projection).lean();
217
+ const populatedHits = data.hits.map((hit) => {
218
+ hit[primaryKey];
219
+ const originalHit = _.find(hitsFromMongoose, (item) => {
220
+ const typedItem = item;
221
+ return typedItem[primaryKey] === hit[primaryKey];
222
+ });
223
+ return {
224
+ ...(originalHit && typeof originalHit === 'object' ? originalHit : {}),
225
+ ...hit,
226
+ };
227
+ });
228
+ data.hits = populatedHits;
229
+ }
230
+ return data;
231
+ }
232
+ /**
233
+ * Preprocesses the current document for indexing
234
+ */
235
+ preprocessObjectForIndex() {
236
+ const object = _.omitBy(_.pick(this.toJSON(), attributesToIndex), (v, k) => k.startsWith('$'));
237
+ if (object.conversationId &&
238
+ typeof object.conversationId === 'string' &&
239
+ object.conversationId.includes('|')) {
240
+ object.conversationId = object.conversationId.replace(/\|/g, '--');
241
+ }
242
+ if (object.content && Array.isArray(object.content)) {
243
+ object.text = parseTextParts(object.content);
244
+ delete object.content;
245
+ }
246
+ return object;
247
+ }
248
+ /**
249
+ * Adds the current document to the MeiliSearch index with retry logic
250
+ */
251
+ async addObjectToMeili(next) {
252
+ // If this conversation or message has a TTL, don't index it
253
+ if (!_.isNil(this.expiredAt)) {
254
+ return next();
255
+ }
256
+ const object = this.preprocessObjectForIndex();
257
+ const maxRetries = 3;
258
+ let retryCount = 0;
259
+ while (retryCount < maxRetries) {
260
+ try {
261
+ await index.addDocuments([object]);
262
+ break;
263
+ }
264
+ catch (error) {
265
+ retryCount++;
266
+ if (retryCount >= maxRetries) {
267
+ logger.error('[addObjectToMeili] Error adding document to Meili after retries:', error);
268
+ return next();
269
+ }
270
+ // Exponential backoff
271
+ await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retryCount) * 1000));
272
+ }
273
+ }
274
+ try {
275
+ await this.collection.updateMany({ _id: this._id }, { $set: { _meiliIndex: true } });
276
+ }
277
+ catch (error) {
278
+ logger.error('[addObjectToMeili] Error updating _meiliIndex field:', error);
279
+ return next();
280
+ }
281
+ next();
282
+ }
283
+ /**
284
+ * Updates the current document in the MeiliSearch index
285
+ */
286
+ async updateObjectToMeili(next) {
287
+ try {
288
+ const object = _.omitBy(_.pick(this.toJSON(), attributesToIndex), (v, k) => k.startsWith('$'));
289
+ await index.updateDocuments([object]);
290
+ next();
291
+ }
292
+ catch (error) {
293
+ logger.error('[updateObjectToMeili] Error updating document in Meili:', error);
294
+ return next();
295
+ }
296
+ }
297
+ /**
298
+ * Deletes the current document from the MeiliSearch index.
299
+ *
300
+ * @returns {Promise<void>}
301
+ */
302
+ async deleteObjectFromMeili(next) {
303
+ try {
304
+ await index.deleteDocument(this._id);
305
+ next();
306
+ }
307
+ catch (error) {
308
+ logger.error('[deleteObjectFromMeili] Error deleting document from Meili:', error);
309
+ return next();
310
+ }
311
+ }
312
+ /**
313
+ * Post-save hook to synchronize the document with MeiliSearch.
314
+ *
315
+ * If the document is already indexed (i.e. `_meiliIndex` is true), it updates it;
316
+ * otherwise, it adds the document to the index.
317
+ */
318
+ postSaveHook(next) {
319
+ if (this._meiliIndex) {
320
+ this.updateObjectToMeili(next);
321
+ }
322
+ else {
323
+ this.addObjectToMeili(next);
324
+ }
325
+ }
326
+ /**
327
+ * Post-update hook to update the document in MeiliSearch.
328
+ *
329
+ * This hook is triggered after a document update, ensuring that changes are
330
+ * propagated to the MeiliSearch index if the document is indexed.
331
+ */
332
+ postUpdateHook(next) {
333
+ if (this._meiliIndex) {
334
+ this.updateObjectToMeili(next);
335
+ }
336
+ else {
337
+ next();
338
+ }
339
+ }
340
+ /**
341
+ * Post-remove hook to delete the document from MeiliSearch.
342
+ *
343
+ * This hook is triggered after a document is removed, ensuring that the document
344
+ * is also removed from the MeiliSearch index if it was previously indexed.
345
+ */
346
+ postRemoveHook(next) {
347
+ if (this._meiliIndex) {
348
+ this.deleteObjectFromMeili(next);
349
+ }
350
+ else {
351
+ next();
352
+ }
353
+ }
354
+ }
355
+ return MeiliMongooseModel;
356
+ };
357
+ /**
358
+ * Mongoose plugin to synchronize MongoDB collections with a MeiliSearch index.
359
+ *
360
+ * This plugin:
361
+ * - Validates the provided options.
362
+ * - Adds a `_meiliIndex` field to the schema to track indexing status.
363
+ * - Sets up a MeiliSearch client and creates an index if it doesn't already exist.
364
+ * - Loads class methods for syncing, searching, and managing documents in MeiliSearch.
365
+ * - Registers Mongoose hooks (post-save, post-update, post-remove, etc.) to maintain index consistency.
366
+ *
367
+ * @param schema - The Mongoose schema to which the plugin is applied.
368
+ * @param options - Configuration options.
369
+ * @param options.host - The MeiliSearch host.
370
+ * @param options.apiKey - The MeiliSearch API key.
371
+ * @param options.indexName - The name of the MeiliSearch index.
372
+ * @param options.primaryKey - The primary key field for indexing.
373
+ * @param options.syncBatchSize - Batch size for sync operations.
374
+ * @param options.syncDelayMs - Delay between batches in milliseconds.
375
+ */
376
+ function mongoMeili(schema, options) {
377
+ const mongoose = options.mongoose;
378
+ validateOptions(options);
379
+ // Add _meiliIndex field to the schema to track if a document has been indexed in MeiliSearch.
380
+ schema.add({
381
+ _meiliIndex: {
382
+ type: Boolean,
383
+ required: false,
384
+ select: false,
385
+ default: false,
386
+ },
387
+ });
388
+ const { host, apiKey, indexName, primaryKey } = options;
389
+ const syncOptions = {
390
+ batchSize: options.syncBatchSize || getSyncConfig().batchSize,
391
+ delayMs: options.syncDelayMs || getSyncConfig().delayMs,
392
+ };
393
+ const client = new MeiliSearch({ host, apiKey });
394
+ /** Create index only if it doesn't exist */
395
+ const index = client.index(indexName);
396
+ (async () => {
397
+ try {
398
+ await index.getRawInfo();
399
+ logger.debug(`[mongoMeili] Index ${indexName} already exists`);
400
+ }
401
+ catch (error) {
402
+ const errorCode = error === null || error === void 0 ? void 0 : error.code;
403
+ if (errorCode === 'index_not_found') {
404
+ try {
405
+ logger.info(`[mongoMeili] Creating new index: ${indexName}`);
406
+ const enqueued = await client.createIndex(indexName, { primaryKey });
407
+ const task = await client.waitForTask(enqueued.taskUid, {
408
+ timeOutMs: 10000,
409
+ intervalMs: 100,
410
+ });
411
+ logger.debug(`[mongoMeili] Index ${indexName} creation task:`, task);
412
+ if (task.status !== 'succeeded') {
413
+ const taskError = task.error;
414
+ if ((taskError === null || taskError === void 0 ? void 0 : taskError.code) === 'index_already_exists') {
415
+ logger.debug(`[mongoMeili] Index ${indexName} was created by another instance`);
416
+ }
417
+ else {
418
+ logger.warn(`[mongoMeili] Index ${indexName} creation failed:`, taskError);
419
+ }
420
+ }
421
+ else {
422
+ logger.info(`[mongoMeili] Successfully created index: ${indexName}`);
423
+ }
424
+ }
425
+ catch (createError) {
426
+ if (createError instanceof MeiliSearchTimeOutError) {
427
+ logger.warn(`[mongoMeili] Timed out waiting for index ${indexName} creation`);
428
+ }
429
+ else {
430
+ logger.warn(`[mongoMeili] Error creating index ${indexName}:`, createError);
431
+ }
432
+ }
433
+ }
434
+ else {
435
+ logger.error(`[mongoMeili] Error checking index ${indexName}:`, error);
436
+ }
437
+ }
438
+ try {
439
+ await index.updateSettings({
440
+ filterableAttributes: ['user'],
441
+ });
442
+ logger.debug(`[mongoMeili] Updated index ${indexName} settings to make 'user' filterable`);
443
+ }
444
+ catch (settingsError) {
445
+ logger.error(`[mongoMeili] Error updating index settings for ${indexName}:`, settingsError);
446
+ }
447
+ })();
448
+ // Collect attributes from the schema that should be indexed
449
+ const attributesToIndex = [
450
+ ...Object.entries(schema.obj).reduce((results, [key, value]) => {
451
+ const schemaValue = value;
452
+ return schemaValue.meiliIndex ? [...results, key] : results;
453
+ }, []),
454
+ ];
455
+ // CRITICAL: Always include 'user' field for proper filtering
456
+ // This ensures existing deployments can filter by user after migration
457
+ if (schema.obj.user && !attributesToIndex.includes('user')) {
458
+ attributesToIndex.push('user');
459
+ logger.debug(`[mongoMeili] Added 'user' field to ${indexName} index attributes`);
460
+ }
461
+ schema.loadClass(createMeiliMongooseModel({ index, attributesToIndex, syncOptions }));
462
+ // Register Mongoose hooks
463
+ schema.post('save', function (doc, next) {
464
+ var _a;
465
+ (_a = doc.postSaveHook) === null || _a === void 0 ? void 0 : _a.call(doc, next);
466
+ });
467
+ schema.post('updateOne', function (doc, next) {
468
+ var _a;
469
+ (_a = doc.postUpdateHook) === null || _a === void 0 ? void 0 : _a.call(doc, next);
470
+ });
471
+ schema.post('deleteOne', function (doc, next) {
472
+ var _a;
473
+ (_a = doc.postRemoveHook) === null || _a === void 0 ? void 0 : _a.call(doc, next);
474
+ });
475
+ // Pre-deleteMany hook: remove corresponding documents from MeiliSearch when multiple documents are deleted.
476
+ schema.pre('deleteMany', async function (next) {
477
+ if (!meiliEnabled) {
478
+ return next();
479
+ }
480
+ try {
481
+ const conditions = this.getQuery();
482
+ const { batchSize, delayMs } = syncOptions;
483
+ if (Object.prototype.hasOwnProperty.call(schema.obj, 'messages')) {
484
+ const convoIndex = client.index('convos');
485
+ const deletedConvos = await mongoose
486
+ .model('Conversation')
487
+ .find(conditions)
488
+ .select('conversationId')
489
+ .lean();
490
+ // Process deletions in batches
491
+ await processBatch(deletedConvos, batchSize, delayMs, async (batch) => {
492
+ const promises = batch.map((convo) => convoIndex.deleteDocument(convo.conversationId));
493
+ await Promise.all(promises);
494
+ });
495
+ }
496
+ if (Object.prototype.hasOwnProperty.call(schema.obj, 'messageId')) {
497
+ const messageIndex = client.index('messages');
498
+ const deletedMessages = await mongoose
499
+ .model('Message')
500
+ .find(conditions)
501
+ .select('messageId')
502
+ .lean();
503
+ // Process deletions in batches
504
+ await processBatch(deletedMessages, batchSize, delayMs, async (batch) => {
505
+ const promises = batch.map((message) => messageIndex.deleteDocument(message.messageId));
506
+ await Promise.all(promises);
507
+ });
508
+ }
509
+ return next();
510
+ }
511
+ catch (error) {
512
+ if (meiliEnabled) {
513
+ logger.error('[MeiliMongooseModel.deleteMany] There was an issue deleting conversation indexes upon deletion. Next startup may trigger syncing.', error);
514
+ }
515
+ return next();
516
+ }
517
+ });
518
+ // Post-findOneAndUpdate hook
519
+ schema.post('findOneAndUpdate', async function (doc, next) {
520
+ var _a;
521
+ if (!meiliEnabled) {
522
+ return next();
523
+ }
524
+ if (doc.unfinished) {
525
+ return next();
526
+ }
527
+ let meiliDoc;
528
+ if (doc.messages) {
529
+ try {
530
+ meiliDoc = await client.index('convos').getDocument(doc.conversationId);
531
+ }
532
+ catch (error) {
533
+ logger.debug('[MeiliMongooseModel.findOneAndUpdate] Convo not found in MeiliSearch and will index ' +
534
+ doc.conversationId, error);
535
+ }
536
+ }
537
+ if (meiliDoc && meiliDoc.title === doc.title) {
538
+ return next();
539
+ }
540
+ (_a = doc.postSaveHook) === null || _a === void 0 ? void 0 : _a.call(doc, next);
541
+ });
542
+ }
543
+
544
+ export { mongoMeili as default };
545
+ //# sourceMappingURL=mongoMeili.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoMeili.es.js","sources":["../../../src/models/plugins/mongoMeili.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}