@librechat/data-schemas 0.0.42 → 0.0.44

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 (503) 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 -11725
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.es.js +52 -11644
  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/admin/capabilities.d.ts +2 -0
  482. package/dist/types/methods/config.d.ts +1 -0
  483. package/dist/utils/object-traverse.cjs +158 -0
  484. package/dist/utils/object-traverse.cjs.map +1 -0
  485. package/dist/utils/object-traverse.es.js +156 -0
  486. package/dist/utils/object-traverse.es.js.map +1 -0
  487. package/dist/utils/principal.cjs +24 -0
  488. package/dist/utils/principal.cjs.map +1 -0
  489. package/dist/utils/principal.es.js +22 -0
  490. package/dist/utils/principal.es.js.map +1 -0
  491. package/dist/utils/string.cjs +11 -0
  492. package/dist/utils/string.cjs.map +1 -0
  493. package/dist/utils/string.es.js +9 -0
  494. package/dist/utils/string.es.js.map +1 -0
  495. package/dist/utils/tempChatRetention.cjs +70 -0
  496. package/dist/utils/tempChatRetention.cjs.map +1 -0
  497. package/dist/utils/tempChatRetention.es.js +64 -0
  498. package/dist/utils/tempChatRetention.es.js.map +1 -0
  499. package/dist/utils/transactions.cjs +60 -0
  500. package/dist/utils/transactions.cjs.map +1 -0
  501. package/dist/utils/transactions.es.js +56 -0
  502. package/dist/utils/transactions.es.js.map +1 -0
  503. package/package.json +2 -1
@@ -0,0 +1,269 @@
1
+ 'use strict';
2
+
3
+ var index = require('../crypto/index.cjs');
4
+
5
+ /** Default JWT session expiry: 15 minutes in milliseconds */
6
+ const DEFAULT_SESSION_EXPIRY = 1000 * 60 * 15;
7
+ /** Factory function that takes mongoose instance and returns the methods */
8
+ function createUserMethods(mongoose) {
9
+ /**
10
+ * Normalizes email fields in search criteria to lowercase and trimmed.
11
+ * Handles both direct email fields and $or arrays containing email conditions.
12
+ */
13
+ function normalizeEmailInCriteria(criteria) {
14
+ const normalized = { ...criteria };
15
+ if (typeof normalized.email === 'string') {
16
+ normalized.email = normalized.email.trim().toLowerCase();
17
+ }
18
+ if (Array.isArray(normalized.$or)) {
19
+ normalized.$or = normalized.$or.map((condition) => {
20
+ if (typeof condition.email === 'string') {
21
+ return { ...condition, email: condition.email.trim().toLowerCase() };
22
+ }
23
+ return condition;
24
+ });
25
+ }
26
+ return normalized;
27
+ }
28
+ /**
29
+ * Search for a single user based on partial data and return matching user document as plain object.
30
+ * Email fields in searchCriteria are automatically normalized to lowercase for case-insensitive matching.
31
+ */
32
+ async function findUser(searchCriteria, fieldsToSelect) {
33
+ const User = mongoose.models.User;
34
+ const normalizedCriteria = normalizeEmailInCriteria(searchCriteria);
35
+ const query = User.findOne(normalizedCriteria);
36
+ if (fieldsToSelect) {
37
+ query.select(fieldsToSelect);
38
+ }
39
+ return (await query.lean());
40
+ }
41
+ /**
42
+ * Count the number of user documents in the collection based on the provided filter.
43
+ */
44
+ async function countUsers(filter = {}) {
45
+ const User = mongoose.models.User;
46
+ return await User.countDocuments(filter);
47
+ }
48
+ /**
49
+ * Creates a new user, optionally with a TTL of 1 week.
50
+ */
51
+ async function createUser(data, balanceConfig, disableTTL = true, returnUser = false) {
52
+ const User = mongoose.models.User;
53
+ const Balance = mongoose.models.Balance;
54
+ const userData = {
55
+ ...data,
56
+ expiresAt: disableTTL ? undefined : new Date(Date.now() + 604800 * 1000), // 1 week in milliseconds
57
+ };
58
+ if (disableTTL) {
59
+ delete userData.expiresAt;
60
+ }
61
+ const user = await User.create(userData);
62
+ // If balance is enabled, create or update a balance record for the user
63
+ if ((balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.enabled) && (balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.startBalance)) {
64
+ const update = {
65
+ $inc: { tokenCredits: balanceConfig.startBalance },
66
+ };
67
+ if (balanceConfig.autoRefillEnabled &&
68
+ balanceConfig.refillIntervalValue != null &&
69
+ balanceConfig.refillIntervalUnit != null &&
70
+ balanceConfig.refillAmount != null) {
71
+ update.$set = {
72
+ autoRefillEnabled: true,
73
+ refillIntervalValue: balanceConfig.refillIntervalValue,
74
+ refillIntervalUnit: balanceConfig.refillIntervalUnit,
75
+ refillAmount: balanceConfig.refillAmount,
76
+ };
77
+ }
78
+ await Balance.findOneAndUpdate({ user: user._id }, update, {
79
+ upsert: true,
80
+ new: true,
81
+ }).lean();
82
+ }
83
+ if (returnUser) {
84
+ return user.toObject();
85
+ }
86
+ return user._id;
87
+ }
88
+ /**
89
+ * Update a user with new data without overwriting existing properties.
90
+ */
91
+ async function updateUser(userId, updateData) {
92
+ const User = mongoose.models.User;
93
+ const updateOperation = {
94
+ $set: updateData,
95
+ $unset: { expiresAt: '' }, // Remove the expiresAt field to prevent TTL
96
+ };
97
+ return (await User.findByIdAndUpdate(userId, updateOperation, {
98
+ new: true,
99
+ runValidators: true,
100
+ }).lean());
101
+ }
102
+ /**
103
+ * Retrieve a user by ID and convert the found user document to a plain object.
104
+ */
105
+ async function getUserById(userId, fieldsToSelect) {
106
+ const User = mongoose.models.User;
107
+ const query = User.findById(userId);
108
+ if (fieldsToSelect) {
109
+ query.select(fieldsToSelect);
110
+ }
111
+ return (await query.lean());
112
+ }
113
+ /**
114
+ * Delete a user by their unique ID.
115
+ */
116
+ async function deleteUserById(userId) {
117
+ try {
118
+ const User = mongoose.models.User;
119
+ const result = await User.deleteOne({ _id: userId });
120
+ if (result.deletedCount === 0) {
121
+ return { deletedCount: 0, message: 'No user found with that ID.' };
122
+ }
123
+ return { deletedCount: result.deletedCount, message: 'User was deleted successfully.' };
124
+ }
125
+ catch (error) {
126
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
127
+ throw new Error('Error deleting user: ' + errorMessage);
128
+ }
129
+ }
130
+ /**
131
+ * Generates a JWT token for a given user.
132
+ * @param user - The user object
133
+ * @param expiresIn - Optional expiry time in milliseconds. Default: 15 minutes
134
+ */
135
+ async function generateToken(user, expiresIn) {
136
+ if (!user) {
137
+ throw new Error('No user provided');
138
+ }
139
+ const expires = expiresIn !== null && expiresIn !== void 0 ? expiresIn : DEFAULT_SESSION_EXPIRY;
140
+ return await index.signPayload({
141
+ payload: {
142
+ id: user._id,
143
+ username: user.username,
144
+ provider: user.provider,
145
+ email: user.email,
146
+ },
147
+ secret: process.env.JWT_SECRET,
148
+ expirationTime: expires / 1000,
149
+ });
150
+ }
151
+ /**
152
+ * Update a user's personalization memories setting.
153
+ * Handles the edge case where the personalization object doesn't exist.
154
+ */
155
+ async function toggleUserMemories(userId, memoriesEnabled) {
156
+ const User = mongoose.models.User;
157
+ // First, ensure the personalization object exists
158
+ const user = await User.findById(userId);
159
+ if (!user) {
160
+ return null;
161
+ }
162
+ // Use $set to update the nested field, which will create the personalization object if it doesn't exist
163
+ const updateOperation = {
164
+ $set: {
165
+ 'personalization.memories': memoriesEnabled,
166
+ },
167
+ };
168
+ return (await User.findByIdAndUpdate(userId, updateOperation, {
169
+ new: true,
170
+ runValidators: true,
171
+ }).lean());
172
+ }
173
+ /**
174
+ * Search for users by pattern matching on name, email, or username (case-insensitive)
175
+ * @param searchPattern - The pattern to search for
176
+ * @param limit - Maximum number of results to return
177
+ * @param fieldsToSelect - The fields to include or exclude in the returned documents
178
+ * @returns Array of matching user documents
179
+ */
180
+ const searchUsers = async function ({ searchPattern, limit = 20, fieldsToSelect = null, }) {
181
+ if (!searchPattern || searchPattern.trim().length === 0) {
182
+ return [];
183
+ }
184
+ const regex = new RegExp(searchPattern.trim(), 'i');
185
+ const User = mongoose.models.User;
186
+ const query = User.find({
187
+ $or: [{ email: regex }, { name: regex }, { username: regex }],
188
+ }).limit(limit * 2); // Get more results to allow for relevance sorting
189
+ if (fieldsToSelect) {
190
+ query.select(fieldsToSelect);
191
+ }
192
+ const users = await query.lean();
193
+ // Score results by relevance
194
+ const exactRegex = new RegExp(`^${searchPattern.trim()}$`, 'i');
195
+ const startsWithPattern = searchPattern.trim().toLowerCase();
196
+ const scoredUsers = users.map((user) => {
197
+ const searchableFields = [user.name, user.email, user.username].filter(Boolean);
198
+ let maxScore = 0;
199
+ for (const field of searchableFields) {
200
+ const fieldLower = field.toLowerCase();
201
+ let score = 0;
202
+ // Exact match gets highest score
203
+ if (exactRegex.test(field)) {
204
+ score = 100;
205
+ }
206
+ // Starts with query gets high score
207
+ else if (fieldLower.startsWith(startsWithPattern)) {
208
+ score = 80;
209
+ }
210
+ // Contains query gets medium score
211
+ else if (fieldLower.includes(startsWithPattern)) {
212
+ score = 50;
213
+ }
214
+ // Default score for regex match
215
+ else {
216
+ score = 10;
217
+ }
218
+ maxScore = Math.max(maxScore, score);
219
+ }
220
+ return { ...user, _searchScore: maxScore };
221
+ });
222
+ /** Top results sorted by relevance */
223
+ return scoredUsers
224
+ .sort((a, b) => b._searchScore - a._searchScore)
225
+ .slice(0, limit)
226
+ .map((user) => {
227
+ // Remove the search score from final results
228
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
229
+ const { _searchScore, ...userWithoutScore } = user;
230
+ return userWithoutScore;
231
+ });
232
+ };
233
+ /**
234
+ * Updates the plugins for a user based on the action specified (install/uninstall).
235
+ * @param userId - The user ID whose plugins are to be updated
236
+ * @param plugins - The current plugins array
237
+ * @param pluginKey - The key of the plugin to install or uninstall
238
+ * @param action - The action to perform, 'install' or 'uninstall'
239
+ * @returns The result of the update operation or null if action is invalid
240
+ */
241
+ async function updateUserPlugins(userId, plugins, pluginKey, action) {
242
+ const userPlugins = plugins !== null && plugins !== void 0 ? plugins : [];
243
+ if (action === 'install') {
244
+ return updateUser(userId, { plugins: [...userPlugins, pluginKey] });
245
+ }
246
+ if (action === 'uninstall') {
247
+ return updateUser(userId, {
248
+ plugins: userPlugins.filter((plugin) => plugin !== pluginKey),
249
+ });
250
+ }
251
+ return null;
252
+ }
253
+ return {
254
+ findUser,
255
+ countUsers,
256
+ createUser,
257
+ updateUser,
258
+ searchUsers,
259
+ getUserById,
260
+ generateToken,
261
+ deleteUserById,
262
+ updateUserPlugins,
263
+ toggleUserMemories,
264
+ };
265
+ }
266
+
267
+ exports.DEFAULT_SESSION_EXPIRY = DEFAULT_SESSION_EXPIRY;
268
+ exports.createUserMethods = createUserMethods;
269
+ //# sourceMappingURL=user.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.cjs","sources":["../../src/methods/user.ts"],"sourcesContent":[null],"names":["signPayload"],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { signPayload } from '../crypto/index.es.js';
2
+
3
+ /** Default JWT session expiry: 15 minutes in milliseconds */
4
+ const DEFAULT_SESSION_EXPIRY = 1000 * 60 * 15;
5
+ /** Factory function that takes mongoose instance and returns the methods */
6
+ function createUserMethods(mongoose) {
7
+ /**
8
+ * Normalizes email fields in search criteria to lowercase and trimmed.
9
+ * Handles both direct email fields and $or arrays containing email conditions.
10
+ */
11
+ function normalizeEmailInCriteria(criteria) {
12
+ const normalized = { ...criteria };
13
+ if (typeof normalized.email === 'string') {
14
+ normalized.email = normalized.email.trim().toLowerCase();
15
+ }
16
+ if (Array.isArray(normalized.$or)) {
17
+ normalized.$or = normalized.$or.map((condition) => {
18
+ if (typeof condition.email === 'string') {
19
+ return { ...condition, email: condition.email.trim().toLowerCase() };
20
+ }
21
+ return condition;
22
+ });
23
+ }
24
+ return normalized;
25
+ }
26
+ /**
27
+ * Search for a single user based on partial data and return matching user document as plain object.
28
+ * Email fields in searchCriteria are automatically normalized to lowercase for case-insensitive matching.
29
+ */
30
+ async function findUser(searchCriteria, fieldsToSelect) {
31
+ const User = mongoose.models.User;
32
+ const normalizedCriteria = normalizeEmailInCriteria(searchCriteria);
33
+ const query = User.findOne(normalizedCriteria);
34
+ if (fieldsToSelect) {
35
+ query.select(fieldsToSelect);
36
+ }
37
+ return (await query.lean());
38
+ }
39
+ /**
40
+ * Count the number of user documents in the collection based on the provided filter.
41
+ */
42
+ async function countUsers(filter = {}) {
43
+ const User = mongoose.models.User;
44
+ return await User.countDocuments(filter);
45
+ }
46
+ /**
47
+ * Creates a new user, optionally with a TTL of 1 week.
48
+ */
49
+ async function createUser(data, balanceConfig, disableTTL = true, returnUser = false) {
50
+ const User = mongoose.models.User;
51
+ const Balance = mongoose.models.Balance;
52
+ const userData = {
53
+ ...data,
54
+ expiresAt: disableTTL ? undefined : new Date(Date.now() + 604800 * 1000), // 1 week in milliseconds
55
+ };
56
+ if (disableTTL) {
57
+ delete userData.expiresAt;
58
+ }
59
+ const user = await User.create(userData);
60
+ // If balance is enabled, create or update a balance record for the user
61
+ if ((balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.enabled) && (balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.startBalance)) {
62
+ const update = {
63
+ $inc: { tokenCredits: balanceConfig.startBalance },
64
+ };
65
+ if (balanceConfig.autoRefillEnabled &&
66
+ balanceConfig.refillIntervalValue != null &&
67
+ balanceConfig.refillIntervalUnit != null &&
68
+ balanceConfig.refillAmount != null) {
69
+ update.$set = {
70
+ autoRefillEnabled: true,
71
+ refillIntervalValue: balanceConfig.refillIntervalValue,
72
+ refillIntervalUnit: balanceConfig.refillIntervalUnit,
73
+ refillAmount: balanceConfig.refillAmount,
74
+ };
75
+ }
76
+ await Balance.findOneAndUpdate({ user: user._id }, update, {
77
+ upsert: true,
78
+ new: true,
79
+ }).lean();
80
+ }
81
+ if (returnUser) {
82
+ return user.toObject();
83
+ }
84
+ return user._id;
85
+ }
86
+ /**
87
+ * Update a user with new data without overwriting existing properties.
88
+ */
89
+ async function updateUser(userId, updateData) {
90
+ const User = mongoose.models.User;
91
+ const updateOperation = {
92
+ $set: updateData,
93
+ $unset: { expiresAt: '' }, // Remove the expiresAt field to prevent TTL
94
+ };
95
+ return (await User.findByIdAndUpdate(userId, updateOperation, {
96
+ new: true,
97
+ runValidators: true,
98
+ }).lean());
99
+ }
100
+ /**
101
+ * Retrieve a user by ID and convert the found user document to a plain object.
102
+ */
103
+ async function getUserById(userId, fieldsToSelect) {
104
+ const User = mongoose.models.User;
105
+ const query = User.findById(userId);
106
+ if (fieldsToSelect) {
107
+ query.select(fieldsToSelect);
108
+ }
109
+ return (await query.lean());
110
+ }
111
+ /**
112
+ * Delete a user by their unique ID.
113
+ */
114
+ async function deleteUserById(userId) {
115
+ try {
116
+ const User = mongoose.models.User;
117
+ const result = await User.deleteOne({ _id: userId });
118
+ if (result.deletedCount === 0) {
119
+ return { deletedCount: 0, message: 'No user found with that ID.' };
120
+ }
121
+ return { deletedCount: result.deletedCount, message: 'User was deleted successfully.' };
122
+ }
123
+ catch (error) {
124
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
125
+ throw new Error('Error deleting user: ' + errorMessage);
126
+ }
127
+ }
128
+ /**
129
+ * Generates a JWT token for a given user.
130
+ * @param user - The user object
131
+ * @param expiresIn - Optional expiry time in milliseconds. Default: 15 minutes
132
+ */
133
+ async function generateToken(user, expiresIn) {
134
+ if (!user) {
135
+ throw new Error('No user provided');
136
+ }
137
+ const expires = expiresIn !== null && expiresIn !== void 0 ? expiresIn : DEFAULT_SESSION_EXPIRY;
138
+ return await signPayload({
139
+ payload: {
140
+ id: user._id,
141
+ username: user.username,
142
+ provider: user.provider,
143
+ email: user.email,
144
+ },
145
+ secret: process.env.JWT_SECRET,
146
+ expirationTime: expires / 1000,
147
+ });
148
+ }
149
+ /**
150
+ * Update a user's personalization memories setting.
151
+ * Handles the edge case where the personalization object doesn't exist.
152
+ */
153
+ async function toggleUserMemories(userId, memoriesEnabled) {
154
+ const User = mongoose.models.User;
155
+ // First, ensure the personalization object exists
156
+ const user = await User.findById(userId);
157
+ if (!user) {
158
+ return null;
159
+ }
160
+ // Use $set to update the nested field, which will create the personalization object if it doesn't exist
161
+ const updateOperation = {
162
+ $set: {
163
+ 'personalization.memories': memoriesEnabled,
164
+ },
165
+ };
166
+ return (await User.findByIdAndUpdate(userId, updateOperation, {
167
+ new: true,
168
+ runValidators: true,
169
+ }).lean());
170
+ }
171
+ /**
172
+ * Search for users by pattern matching on name, email, or username (case-insensitive)
173
+ * @param searchPattern - The pattern to search for
174
+ * @param limit - Maximum number of results to return
175
+ * @param fieldsToSelect - The fields to include or exclude in the returned documents
176
+ * @returns Array of matching user documents
177
+ */
178
+ const searchUsers = async function ({ searchPattern, limit = 20, fieldsToSelect = null, }) {
179
+ if (!searchPattern || searchPattern.trim().length === 0) {
180
+ return [];
181
+ }
182
+ const regex = new RegExp(searchPattern.trim(), 'i');
183
+ const User = mongoose.models.User;
184
+ const query = User.find({
185
+ $or: [{ email: regex }, { name: regex }, { username: regex }],
186
+ }).limit(limit * 2); // Get more results to allow for relevance sorting
187
+ if (fieldsToSelect) {
188
+ query.select(fieldsToSelect);
189
+ }
190
+ const users = await query.lean();
191
+ // Score results by relevance
192
+ const exactRegex = new RegExp(`^${searchPattern.trim()}$`, 'i');
193
+ const startsWithPattern = searchPattern.trim().toLowerCase();
194
+ const scoredUsers = users.map((user) => {
195
+ const searchableFields = [user.name, user.email, user.username].filter(Boolean);
196
+ let maxScore = 0;
197
+ for (const field of searchableFields) {
198
+ const fieldLower = field.toLowerCase();
199
+ let score = 0;
200
+ // Exact match gets highest score
201
+ if (exactRegex.test(field)) {
202
+ score = 100;
203
+ }
204
+ // Starts with query gets high score
205
+ else if (fieldLower.startsWith(startsWithPattern)) {
206
+ score = 80;
207
+ }
208
+ // Contains query gets medium score
209
+ else if (fieldLower.includes(startsWithPattern)) {
210
+ score = 50;
211
+ }
212
+ // Default score for regex match
213
+ else {
214
+ score = 10;
215
+ }
216
+ maxScore = Math.max(maxScore, score);
217
+ }
218
+ return { ...user, _searchScore: maxScore };
219
+ });
220
+ /** Top results sorted by relevance */
221
+ return scoredUsers
222
+ .sort((a, b) => b._searchScore - a._searchScore)
223
+ .slice(0, limit)
224
+ .map((user) => {
225
+ // Remove the search score from final results
226
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
227
+ const { _searchScore, ...userWithoutScore } = user;
228
+ return userWithoutScore;
229
+ });
230
+ };
231
+ /**
232
+ * Updates the plugins for a user based on the action specified (install/uninstall).
233
+ * @param userId - The user ID whose plugins are to be updated
234
+ * @param plugins - The current plugins array
235
+ * @param pluginKey - The key of the plugin to install or uninstall
236
+ * @param action - The action to perform, 'install' or 'uninstall'
237
+ * @returns The result of the update operation or null if action is invalid
238
+ */
239
+ async function updateUserPlugins(userId, plugins, pluginKey, action) {
240
+ const userPlugins = plugins !== null && plugins !== void 0 ? plugins : [];
241
+ if (action === 'install') {
242
+ return updateUser(userId, { plugins: [...userPlugins, pluginKey] });
243
+ }
244
+ if (action === 'uninstall') {
245
+ return updateUser(userId, {
246
+ plugins: userPlugins.filter((plugin) => plugin !== pluginKey),
247
+ });
248
+ }
249
+ return null;
250
+ }
251
+ return {
252
+ findUser,
253
+ countUsers,
254
+ createUser,
255
+ updateUser,
256
+ searchUsers,
257
+ getUserById,
258
+ generateToken,
259
+ deleteUserById,
260
+ updateUserPlugins,
261
+ toggleUserMemories,
262
+ };
263
+ }
264
+
265
+ export { DEFAULT_SESSION_EXPIRY, createUserMethods };
266
+ //# sourceMappingURL=user.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.es.js","sources":["../../src/methods/user.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}