@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,516 @@
1
+ import { Types } from 'mongoose';
2
+ import { PrincipalType } from 'librechat-data-provider';
3
+
4
+ function createUserGroupMethods(mongoose) {
5
+ /**
6
+ * Find a group by its ID
7
+ * @param groupId - The group ID
8
+ * @param projection - Optional projection of fields to return
9
+ * @param session - Optional MongoDB session for transactions
10
+ * @returns The group document or null if not found
11
+ */
12
+ async function findGroupById(groupId, projection = {}, session) {
13
+ const Group = mongoose.models.Group;
14
+ const query = Group.findOne({ _id: groupId }, projection);
15
+ if (session) {
16
+ query.session(session);
17
+ }
18
+ return await query.lean();
19
+ }
20
+ /**
21
+ * Find a group by its external ID (e.g., Entra ID)
22
+ * @param idOnTheSource - The external ID
23
+ * @param source - The source ('entra' or 'local')
24
+ * @param projection - Optional projection of fields to return
25
+ * @param session - Optional MongoDB session for transactions
26
+ * @returns The group document or null if not found
27
+ */
28
+ async function findGroupByExternalId(idOnTheSource, source = 'entra', projection = {}, session) {
29
+ const Group = mongoose.models.Group;
30
+ const query = Group.findOne({ idOnTheSource, source }, projection);
31
+ if (session) {
32
+ query.session(session);
33
+ }
34
+ return await query.lean();
35
+ }
36
+ /**
37
+ * Find groups by name pattern (case-insensitive partial match)
38
+ * @param namePattern - The name pattern to search for
39
+ * @param source - Optional source filter ('entra', 'local', or null for all)
40
+ * @param limit - Maximum number of results to return
41
+ * @param session - Optional MongoDB session for transactions
42
+ * @returns Array of matching groups
43
+ */
44
+ async function findGroupsByNamePattern(namePattern, source = null, limit = 20, session) {
45
+ const Group = mongoose.models.Group;
46
+ const regex = new RegExp(namePattern, 'i');
47
+ const query = {
48
+ $or: [{ name: regex }, { email: regex }, { description: regex }],
49
+ };
50
+ if (source) {
51
+ query.source = source;
52
+ }
53
+ const dbQuery = Group.find(query).limit(limit);
54
+ if (session) {
55
+ dbQuery.session(session);
56
+ }
57
+ return await dbQuery.lean();
58
+ }
59
+ /**
60
+ * Find all groups a user is a member of by their ID or idOnTheSource
61
+ * @param userId - The user ID
62
+ * @param session - Optional MongoDB session for transactions
63
+ * @returns Array of groups the user is a member of
64
+ */
65
+ async function findGroupsByMemberId(userId, session) {
66
+ const User = mongoose.models.User;
67
+ const Group = mongoose.models.Group;
68
+ const userQuery = User.findById(userId, 'idOnTheSource');
69
+ if (session) {
70
+ userQuery.session(session);
71
+ }
72
+ const user = (await userQuery.lean());
73
+ if (!user) {
74
+ return [];
75
+ }
76
+ const userIdOnTheSource = user.idOnTheSource || userId.toString();
77
+ const query = Group.find({ memberIds: userIdOnTheSource });
78
+ if (session) {
79
+ query.session(session);
80
+ }
81
+ return await query.lean();
82
+ }
83
+ /**
84
+ * Create a new group
85
+ * @param groupData - Group data including name, source, and optional idOnTheSource
86
+ * @param session - Optional MongoDB session for transactions
87
+ * @returns The created group
88
+ */
89
+ async function createGroup(groupData, session) {
90
+ const Group = mongoose.models.Group;
91
+ const options = session ? { session } : {};
92
+ return await Group.create([groupData], options).then((groups) => groups[0]);
93
+ }
94
+ /**
95
+ * Update or create a group by external ID
96
+ * @param idOnTheSource - The external ID
97
+ * @param source - The source ('entra' or 'local')
98
+ * @param updateData - Data to update or set if creating
99
+ * @param session - Optional MongoDB session for transactions
100
+ * @returns The updated or created group
101
+ */
102
+ async function upsertGroupByExternalId(idOnTheSource, source, updateData, session) {
103
+ const Group = mongoose.models.Group;
104
+ const options = {
105
+ new: true,
106
+ upsert: true,
107
+ ...(session ? { session } : {}),
108
+ };
109
+ return await Group.findOneAndUpdate({ idOnTheSource, source }, { $set: updateData }, options);
110
+ }
111
+ /**
112
+ * Add a user to a group
113
+ * Only updates Group.memberIds (one-way relationship)
114
+ * Note: memberIds stores idOnTheSource values, not ObjectIds
115
+ *
116
+ * @param userId - The user ID
117
+ * @param groupId - The group ID to add
118
+ * @param session - Optional MongoDB session for transactions
119
+ * @returns The user and updated group documents
120
+ */
121
+ async function addUserToGroup(userId, groupId, session) {
122
+ const User = mongoose.models.User;
123
+ const Group = mongoose.models.Group;
124
+ const options = { new: true, ...(session ? { session } : {}) };
125
+ const user = (await User.findById(userId, 'idOnTheSource', options).lean());
126
+ if (!user) {
127
+ throw new Error(`User not found: ${userId}`);
128
+ }
129
+ const userIdOnTheSource = user.idOnTheSource || userId.toString();
130
+ const updatedGroup = await Group.findByIdAndUpdate(groupId, { $addToSet: { memberIds: userIdOnTheSource } }, options).lean();
131
+ return { user: user, group: updatedGroup };
132
+ }
133
+ /**
134
+ * Remove a user from a group
135
+ * Only updates Group.memberIds (one-way relationship)
136
+ * Note: memberIds stores idOnTheSource values, not ObjectIds
137
+ *
138
+ * @param userId - The user ID
139
+ * @param groupId - The group ID to remove
140
+ * @param session - Optional MongoDB session for transactions
141
+ * @returns The user and updated group documents
142
+ */
143
+ async function removeUserFromGroup(userId, groupId, session) {
144
+ const User = mongoose.models.User;
145
+ const Group = mongoose.models.Group;
146
+ const options = { new: true, ...(session ? { session } : {}) };
147
+ const user = (await User.findById(userId, 'idOnTheSource', options).lean());
148
+ if (!user) {
149
+ throw new Error(`User not found: ${userId}`);
150
+ }
151
+ const userIdOnTheSource = user.idOnTheSource || userId.toString();
152
+ const updatedGroup = await Group.findByIdAndUpdate(groupId, { $pullAll: { memberIds: [userIdOnTheSource] } }, options).lean();
153
+ return { user: user, group: updatedGroup };
154
+ }
155
+ /**
156
+ * Get all groups a user is a member of
157
+ * @param userId - The user ID
158
+ * @param session - Optional MongoDB session for transactions
159
+ * @returns Array of group documents
160
+ */
161
+ async function getUserGroups(userId, session) {
162
+ return await findGroupsByMemberId(userId, session);
163
+ }
164
+ /**
165
+ * Get a list of all principal identifiers for a user (user ID + group IDs + public)
166
+ * For use in permission checks
167
+ * @param params - Parameters object
168
+ * @param params.userId - The user ID
169
+ * @param params.role - Optional user role (if not provided, will query from DB)
170
+ * @param session - Optional MongoDB session for transactions
171
+ * @returns Array of principal objects with type and id
172
+ */
173
+ /**
174
+ * TODO(#12091): This method has no tenantId parameter — it returns ALL group
175
+ * memberships for a user regardless of tenant. In multi-tenant mode, group
176
+ * principals from other tenants will be included in capability checks, which
177
+ * could grant cross-tenant capabilities. Add tenantId filtering here when
178
+ * tenant isolation is activated.
179
+ */
180
+ async function getUserPrincipals(params, session) {
181
+ const { userId, role } = params;
182
+ /** `userId` must be an `ObjectId` for USER principal since ACL entries store `ObjectId`s */
183
+ const userObjectId = typeof userId === 'string' ? new Types.ObjectId(userId) : userId;
184
+ const principals = [
185
+ { principalType: PrincipalType.USER, principalId: userObjectId },
186
+ ];
187
+ // If role is not provided, query user to get it
188
+ let userRole = role;
189
+ if (userRole === undefined) {
190
+ const User = mongoose.models.User;
191
+ const query = User.findById(userId).select('role');
192
+ if (session) {
193
+ query.session(session);
194
+ }
195
+ const user = await query.lean();
196
+ userRole = user === null || user === void 0 ? void 0 : user.role;
197
+ }
198
+ // Add role as a principal if user has one
199
+ if (userRole && userRole.trim()) {
200
+ principals.push({ principalType: PrincipalType.ROLE, principalId: userRole });
201
+ }
202
+ const userGroups = await getUserGroups(userId, session);
203
+ if (userGroups && userGroups.length > 0) {
204
+ userGroups.forEach((group) => {
205
+ principals.push({ principalType: PrincipalType.GROUP, principalId: group._id });
206
+ });
207
+ }
208
+ principals.push({ principalType: PrincipalType.PUBLIC });
209
+ return principals;
210
+ }
211
+ /**
212
+ * Sync a user's Entra ID group memberships
213
+ * @param userId - The user ID
214
+ * @param entraGroups - Array of Entra groups with id and name
215
+ * @param session - Optional MongoDB session for transactions
216
+ * @returns The updated user with new group memberships
217
+ */
218
+ async function syncUserEntraGroups(userId, entraGroups, session) {
219
+ var _a;
220
+ const User = mongoose.models.User;
221
+ const Group = mongoose.models.Group;
222
+ const query = User.findById(userId, { idOnTheSource: 1 });
223
+ if (session) {
224
+ query.session(session);
225
+ }
226
+ const user = (await query.lean());
227
+ if (!user) {
228
+ throw new Error(`User not found: ${userId}`);
229
+ }
230
+ /** Get user's idOnTheSource for storing in group.memberIds */
231
+ const userIdOnTheSource = user.idOnTheSource || userId.toString();
232
+ const entraIdMap = new Map();
233
+ const addedGroups = [];
234
+ const removedGroups = [];
235
+ for (const entraGroup of entraGroups) {
236
+ entraIdMap.set(entraGroup.id, true);
237
+ let group = await findGroupByExternalId(entraGroup.id, 'entra', {}, session);
238
+ if (!group) {
239
+ group = await createGroup({
240
+ name: entraGroup.name,
241
+ description: entraGroup.description,
242
+ email: entraGroup.email,
243
+ idOnTheSource: entraGroup.id,
244
+ source: 'entra',
245
+ memberIds: [userIdOnTheSource],
246
+ }, session);
247
+ addedGroups.push(group);
248
+ }
249
+ else if (!((_a = group.memberIds) === null || _a === void 0 ? void 0 : _a.includes(userIdOnTheSource))) {
250
+ const { group: updatedGroup } = await addUserToGroup(userId, group._id, session);
251
+ if (updatedGroup) {
252
+ addedGroups.push(updatedGroup);
253
+ }
254
+ }
255
+ }
256
+ const groupsQuery = Group.find({ source: 'entra', memberIds: userIdOnTheSource }, { _id: 1, idOnTheSource: 1 });
257
+ if (session) {
258
+ groupsQuery.session(session);
259
+ }
260
+ const existingGroups = (await groupsQuery.lean());
261
+ for (const group of existingGroups) {
262
+ if (group.idOnTheSource && !entraIdMap.has(group.idOnTheSource)) {
263
+ const { group: removedGroup } = await removeUserFromGroup(userId, group._id, session);
264
+ if (removedGroup) {
265
+ removedGroups.push(removedGroup);
266
+ }
267
+ }
268
+ }
269
+ const userQuery = User.findById(userId);
270
+ if (session) {
271
+ userQuery.session(session);
272
+ }
273
+ const updatedUser = await userQuery.lean();
274
+ if (!updatedUser) {
275
+ throw new Error(`User not found after update: ${userId}`);
276
+ }
277
+ return {
278
+ user: updatedUser,
279
+ addedGroups,
280
+ removedGroups,
281
+ };
282
+ }
283
+ /**
284
+ * Calculate relevance score for a search result
285
+ * @param item - The search result item
286
+ * @param searchPattern - The search pattern
287
+ * @returns Relevance score (0-100)
288
+ */
289
+ function calculateRelevanceScore(item, searchPattern) {
290
+ const exactRegex = new RegExp(`^${searchPattern}$`, 'i');
291
+ const startsWithPattern = searchPattern.toLowerCase();
292
+ /** Get searchable text based on type */
293
+ const searchableFields = item.type === PrincipalType.USER
294
+ ? [item.name, item.email, item.username].filter(Boolean)
295
+ : [item.name, item.email, item.description].filter(Boolean);
296
+ let maxScore = 0;
297
+ for (const field of searchableFields) {
298
+ if (!field)
299
+ continue;
300
+ const fieldLower = field.toLowerCase();
301
+ let score = 0;
302
+ /** Exact match gets highest score */
303
+ if (exactRegex.test(field)) {
304
+ score = 100;
305
+ }
306
+ else if (fieldLower.startsWith(startsWithPattern)) {
307
+ /** Starts with query gets high score */
308
+ score = 80;
309
+ }
310
+ else if (fieldLower.includes(startsWithPattern)) {
311
+ /** Contains query gets medium score */
312
+ score = 50;
313
+ }
314
+ else {
315
+ /** Default score for regex match */
316
+ score = 10;
317
+ }
318
+ maxScore = Math.max(maxScore, score);
319
+ }
320
+ return maxScore;
321
+ }
322
+ /**
323
+ * Sort principals by relevance score and type priority
324
+ * @param results - Array of results with _searchScore property
325
+ * @returns Sorted array
326
+ */
327
+ function sortPrincipalsByRelevance(results) {
328
+ return results.sort((a, b) => {
329
+ if (b._searchScore !== a._searchScore) {
330
+ return (b._searchScore || 0) - (a._searchScore || 0);
331
+ }
332
+ if (a.type !== b.type) {
333
+ return a.type === PrincipalType.USER ? -1 : 1;
334
+ }
335
+ const aName = a.name || a.email || '';
336
+ const bName = b.name || b.email || '';
337
+ return aName.localeCompare(bName);
338
+ });
339
+ }
340
+ /**
341
+ * Transform user object to TPrincipalSearchResult format
342
+ * @param user - User object from database
343
+ * @returns Transformed user result
344
+ */
345
+ function transformUserToTPrincipalSearchResult(user) {
346
+ return {
347
+ id: user.id,
348
+ type: PrincipalType.USER,
349
+ name: user.name || user.email,
350
+ email: user.email,
351
+ username: user.username,
352
+ avatar: user.avatar,
353
+ provider: user.provider,
354
+ source: 'local',
355
+ idOnTheSource: user.idOnTheSource || user.id,
356
+ };
357
+ }
358
+ /**
359
+ * Transform group object to TPrincipalSearchResult format
360
+ * @param group - Group object from database
361
+ * @returns Transformed group result
362
+ */
363
+ function transformGroupToTPrincipalSearchResult(group) {
364
+ var _a, _b;
365
+ return {
366
+ id: (_a = group._id) === null || _a === void 0 ? void 0 : _a.toString(),
367
+ type: PrincipalType.GROUP,
368
+ name: group.name,
369
+ email: group.email,
370
+ avatar: group.avatar,
371
+ description: group.description,
372
+ source: group.source || 'local',
373
+ memberCount: group.memberIds ? group.memberIds.length : 0,
374
+ idOnTheSource: group.idOnTheSource || ((_b = group._id) === null || _b === void 0 ? void 0 : _b.toString()),
375
+ };
376
+ }
377
+ /**
378
+ * Search for principals (users and groups) by pattern matching on name/email
379
+ * Returns combined results in TPrincipalSearchResult format without sorting
380
+ * @param searchPattern - The pattern to search for
381
+ * @param limitPerType - Maximum number of results to return
382
+ * @param typeFilter - Optional array of types to filter by, or null for all types
383
+ * @param session - Optional MongoDB session for transactions
384
+ * @returns Array of principals in TPrincipalSearchResult format
385
+ */
386
+ async function searchPrincipals(searchPattern, limitPerType = 10, typeFilter = null, session) {
387
+ if (!searchPattern || searchPattern.trim().length === 0) {
388
+ return [];
389
+ }
390
+ const trimmedPattern = searchPattern.trim();
391
+ const promises = [];
392
+ if (!typeFilter || typeFilter.includes(PrincipalType.USER)) {
393
+ /** Note: searchUsers is imported from ~/models and needs to be passed in or implemented */
394
+ const userFields = 'name email username avatar provider idOnTheSource';
395
+ /** For now, we'll use a direct query instead of searchUsers */
396
+ const User = mongoose.models.User;
397
+ const regex = new RegExp(trimmedPattern, 'i');
398
+ const userQuery = User.find({
399
+ $or: [{ name: regex }, { email: regex }, { username: regex }],
400
+ })
401
+ .select(userFields)
402
+ .limit(limitPerType);
403
+ if (session) {
404
+ userQuery.session(session);
405
+ }
406
+ promises.push(userQuery.lean().then((users) => users.map((user) => {
407
+ var _a;
408
+ const userWithId = user;
409
+ return transformUserToTPrincipalSearchResult({
410
+ id: ((_a = userWithId._id) === null || _a === void 0 ? void 0 : _a.toString()) || '',
411
+ name: userWithId.name,
412
+ email: userWithId.email,
413
+ username: userWithId.username,
414
+ avatar: userWithId.avatar,
415
+ provider: userWithId.provider,
416
+ });
417
+ })));
418
+ }
419
+ else {
420
+ promises.push(Promise.resolve([]));
421
+ }
422
+ if (!typeFilter || typeFilter.includes(PrincipalType.GROUP)) {
423
+ promises.push(findGroupsByNamePattern(trimmedPattern, null, limitPerType, session).then((groups) => groups.map(transformGroupToTPrincipalSearchResult)));
424
+ }
425
+ else {
426
+ promises.push(Promise.resolve([]));
427
+ }
428
+ if (!typeFilter || typeFilter.includes(PrincipalType.ROLE)) {
429
+ const Role = mongoose.models.Role;
430
+ if (Role) {
431
+ const regex = new RegExp(trimmedPattern, 'i');
432
+ const roleQuery = Role.find({ name: regex }).select('name').limit(limitPerType);
433
+ if (session) {
434
+ roleQuery.session(session);
435
+ }
436
+ promises.push(roleQuery.lean().then((roles) => roles.map((role) => ({
437
+ /** Role name as ID */
438
+ id: role.name,
439
+ type: PrincipalType.ROLE,
440
+ name: role.name,
441
+ source: 'local',
442
+ idOnTheSource: role.name,
443
+ }))));
444
+ }
445
+ }
446
+ else {
447
+ promises.push(Promise.resolve([]));
448
+ }
449
+ const results = await Promise.all(promises);
450
+ const combined = results.flat();
451
+ return combined;
452
+ }
453
+ /**
454
+ * Removes a user from all groups they belong to.
455
+ * @param userId - The user ID (or ObjectId) of the member to remove
456
+ */
457
+ async function removeUserFromAllGroups(userId) {
458
+ const Group = mongoose.models.Group;
459
+ await Group.updateMany({ memberIds: userId }, { $pullAll: { memberIds: [userId] } });
460
+ }
461
+ /**
462
+ * Finds a single group matching the given filter.
463
+ * @param filter - MongoDB filter query
464
+ */
465
+ async function findGroupByQuery(filter, session) {
466
+ const Group = mongoose.models.Group;
467
+ const query = Group.findOne(filter);
468
+ if (session) {
469
+ query.session(session);
470
+ }
471
+ return query.lean();
472
+ }
473
+ /**
474
+ * Updates a group by its ID.
475
+ * @param groupId - The group's ObjectId
476
+ * @param data - Fields to set via $set
477
+ */
478
+ async function updateGroupById(groupId, data, session) {
479
+ const Group = mongoose.models.Group;
480
+ const options = { new: true, ...(session ? { session } : {}) };
481
+ return Group.findByIdAndUpdate(groupId, { $set: data }, options).lean();
482
+ }
483
+ /**
484
+ * Bulk-updates groups matching a filter.
485
+ * @param filter - MongoDB filter query
486
+ * @param update - Update operations
487
+ * @param options - Optional query options (e.g., { session })
488
+ */
489
+ async function bulkUpdateGroups(filter, update, options) {
490
+ const Group = mongoose.models.Group;
491
+ return Group.updateMany(filter, update, options || {});
492
+ }
493
+ return {
494
+ findGroupById,
495
+ findGroupByExternalId,
496
+ findGroupsByNamePattern,
497
+ findGroupsByMemberId,
498
+ createGroup,
499
+ upsertGroupByExternalId,
500
+ addUserToGroup,
501
+ removeUserFromGroup,
502
+ removeUserFromAllGroups,
503
+ findGroupByQuery,
504
+ updateGroupById,
505
+ bulkUpdateGroups,
506
+ getUserGroups,
507
+ getUserPrincipals,
508
+ syncUserEntraGroups,
509
+ searchPrincipals,
510
+ calculateRelevanceScore,
511
+ sortPrincipalsByRelevance,
512
+ };
513
+ }
514
+
515
+ export { createUserGroupMethods };
516
+ //# sourceMappingURL=userGroup.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userGroup.es.js","sources":["../../src/methods/userGroup.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ 'use strict';
2
+
3
+ var winston = require('../config/winston.cjs');
4
+
5
+ /**
6
+ * Indexes that were superseded by compound tenant-scoped indexes.
7
+ * Each entry maps a collection name to the old index names that must be dropped
8
+ * before multi-tenancy can function (old unique indexes enforce global uniqueness,
9
+ * blocking same-value-different-tenant writes).
10
+ *
11
+ * These are only the indexes whose uniqueness constraints conflict with multi-tenancy.
12
+ * Non-unique indexes that were extended with tenantId are harmless (queries still work,
13
+ * just with slightly less optimal plans) and are not included here.
14
+ */
15
+ const SUPERSEDED_INDEXES = {
16
+ users: [
17
+ 'email_1',
18
+ 'googleId_1',
19
+ 'facebookId_1',
20
+ 'openidId_1',
21
+ 'samlId_1',
22
+ 'ldapId_1',
23
+ 'githubId_1',
24
+ 'discordId_1',
25
+ 'appleId_1',
26
+ ],
27
+ roles: ['name_1'],
28
+ conversations: ['conversationId_1_user_1'],
29
+ messages: ['messageId_1_user_1'],
30
+ agentcategories: ['value_1'],
31
+ accessroles: ['accessRoleId_1'],
32
+ conversationtags: ['tag_1_user_1'],
33
+ mcpservers: ['serverName_1'],
34
+ files: ['filename_1_conversationId_1_context_1'],
35
+ groups: ['idOnTheSource_1_source_1'],
36
+ };
37
+ /**
38
+ * Drops superseded unique indexes that block multi-tenant operation.
39
+ * Idempotent — skips indexes that don't exist. Safe to run on fresh databases.
40
+ *
41
+ * Call this before enabling multi-tenant middleware on an existing deployment.
42
+ * On a fresh database (no pre-existing data), this is a no-op.
43
+ */
44
+ async function dropSupersededTenantIndexes(connection) {
45
+ const result = { dropped: [], skipped: [], errors: [] };
46
+ for (const [collectionName, indexNames] of Object.entries(SUPERSEDED_INDEXES)) {
47
+ const collection = connection.db.collection(collectionName);
48
+ let existingIndexes;
49
+ try {
50
+ existingIndexes = await collection.indexes();
51
+ }
52
+ catch {
53
+ result.skipped.push(...indexNames.map((idx) => `${collectionName}.${idx} (collection does not exist)`));
54
+ continue;
55
+ }
56
+ const existingNames = new Set(existingIndexes.map((idx) => idx.name));
57
+ for (const indexName of indexNames) {
58
+ if (!existingNames.has(indexName)) {
59
+ result.skipped.push(`${collectionName}.${indexName}`);
60
+ continue;
61
+ }
62
+ try {
63
+ await collection.dropIndex(indexName);
64
+ result.dropped.push(`${collectionName}.${indexName}`);
65
+ winston.info(`[TenantMigration] Dropped superseded index: ${collectionName}.${indexName}`);
66
+ }
67
+ catch (err) {
68
+ const msg = `${collectionName}.${indexName}: ${err.message}`;
69
+ result.errors.push(msg);
70
+ winston.error(`[TenantMigration] Failed to drop index: ${msg}`);
71
+ }
72
+ }
73
+ }
74
+ if (result.dropped.length > 0) {
75
+ winston.info(`[TenantMigration] Migration complete. Dropped ${result.dropped.length} superseded indexes.`);
76
+ }
77
+ else {
78
+ winston.info('[TenantMigration] No superseded indexes found — database is already migrated or fresh.');
79
+ }
80
+ return result;
81
+ }
82
+
83
+ exports.SUPERSEDED_INDEXES = SUPERSEDED_INDEXES;
84
+ exports.dropSupersededTenantIndexes = dropSupersededTenantIndexes;
85
+ //# sourceMappingURL=tenantIndexes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenantIndexes.cjs","sources":["../../src/migrations/tenantIndexes.ts"],"sourcesContent":[null],"names":["logger"],"mappings":";;;;AAGA;;;;;;;;;AASG;AACH,MAAM,kBAAkB,GAA6B;AACnD,IAAA,KAAK,EAAE;QACL,SAAS;QACT,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,UAAU;QACV,UAAU;QACV,YAAY;QACZ,aAAa;QACb,WAAW;AACZ,KAAA;IACD,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,aAAa,EAAE,CAAC,yBAAyB,CAAC;IAC1C,QAAQ,EAAE,CAAC,oBAAoB,CAAC;IAChC,eAAe,EAAE,CAAC,SAAS,CAAC;IAC5B,WAAW,EAAE,CAAC,gBAAgB,CAAC;IAC/B,gBAAgB,EAAE,CAAC,cAAc,CAAC;IAClC,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,KAAK,EAAE,CAAC,uCAAuC,CAAC;IAChD,MAAM,EAAE,CAAC,0BAA0B,CAAC;;AAStC;;;;;;AAMG;AACI,eAAe,2BAA2B,CAC/C,UAAsB,EAAA;AAEtB,IAAA,MAAM,MAAM,GAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAExE,IAAA,KAAK,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;QAC7E,MAAM,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;AAE3D,QAAA,IAAI,eAAyC;AAC7C,QAAA,IAAI;AACF,YAAA,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE;QAC9C;AAAE,QAAA,MAAM;YACN,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA,EAAG,cAAc,IAAI,GAAG,CAAA,4BAAA,CAA8B,CAAC,CACnF;YACD;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AAErE,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;gBACrD;YACF;AAEA,YAAA,IAAI;AACF,gBAAA,MAAM,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;gBACrC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;gBACrDA,OAAM,CAAC,IAAI,CAAC,CAAA,4CAAA,EAA+C,cAAc,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;YAC3F;YAAE,OAAO,GAAG,EAAE;gBACZ,MAAM,GAAG,GAAG,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,SAAS,CAAA,EAAA,EAAM,GAAa,CAAC,OAAO,CAAA,CAAE;AACvE,gBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,gBAAAA,OAAM,CAAC,KAAK,CAAC,2CAA2C,GAAG,CAAA,CAAE,CAAC;YAChE;QACF;IACF;IAEA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7BA,OAAM,CAAC,IAAI,CACT,CAAA,8CAAA,EAAiD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAA,oBAAA,CAAsB,CAC7F;IACH;SAAO;AACL,QAAAA,OAAM,CAAC,IAAI,CACT,wFAAwF,CACzF;IACH;AAEA,IAAA,OAAO,MAAM;AACf;;;;;"}