@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.
- package/dist/admin/capabilities.cjs +192 -0
- package/dist/admin/capabilities.cjs.map +1 -0
- package/dist/admin/capabilities.es.js +182 -0
- package/dist/admin/capabilities.es.js.map +1 -0
- package/dist/app/agents.cjs +24 -0
- package/dist/app/agents.cjs.map +1 -0
- package/dist/app/agents.es.js +22 -0
- package/dist/app/agents.es.js.map +1 -0
- package/dist/app/assistants.cjs +56 -0
- package/dist/app/assistants.cjs.map +1 -0
- package/dist/app/assistants.es.js +53 -0
- package/dist/app/assistants.es.js.map +1 -0
- package/dist/app/azure.cjs +61 -0
- package/dist/app/azure.cjs.map +1 -0
- package/dist/app/azure.es.js +59 -0
- package/dist/app/azure.es.js.map +1 -0
- package/dist/app/endpoints.cjs +63 -0
- package/dist/app/endpoints.cjs.map +1 -0
- package/dist/app/endpoints.es.js +61 -0
- package/dist/app/endpoints.es.js.map +1 -0
- package/dist/app/interface.cjs +53 -0
- package/dist/app/interface.cjs.map +1 -0
- package/dist/app/interface.es.js +51 -0
- package/dist/app/interface.es.js.map +1 -0
- package/dist/app/memory.cjs +29 -0
- package/dist/app/memory.cjs.map +1 -0
- package/dist/app/memory.es.js +26 -0
- package/dist/app/memory.es.js.map +1 -0
- package/dist/app/ocr.cjs +21 -0
- package/dist/app/ocr.cjs.map +1 -0
- package/dist/app/ocr.es.js +19 -0
- package/dist/app/ocr.es.js.map +1 -0
- package/dist/app/resolution.cjs +51 -0
- package/dist/app/resolution.cjs.map +1 -0
- package/dist/app/resolution.es.js +49 -0
- package/dist/app/resolution.es.js.map +1 -0
- package/dist/app/service.cjs +108 -0
- package/dist/app/service.cjs.map +1 -0
- package/dist/app/service.es.js +106 -0
- package/dist/app/service.es.js.map +1 -0
- package/dist/app/specs.cjs +71 -0
- package/dist/app/specs.cjs.map +1 -0
- package/dist/app/specs.es.js +69 -0
- package/dist/app/specs.es.js.map +1 -0
- package/dist/app/turnstile.cjs +40 -0
- package/dist/app/turnstile.cjs.map +1 -0
- package/dist/app/turnstile.es.js +38 -0
- package/dist/app/turnstile.es.js.map +1 -0
- package/dist/app/vertex.cjs +156 -0
- package/dist/app/vertex.cjs.map +1 -0
- package/dist/app/vertex.es.js +152 -0
- package/dist/app/vertex.es.js.map +1 -0
- package/dist/app/web.cjs +87 -0
- package/dist/app/web.cjs.map +1 -0
- package/dist/app/web.es.js +82 -0
- package/dist/app/web.es.js.map +1 -0
- package/dist/common/enum.cjs +19 -0
- package/dist/common/enum.cjs.map +1 -0
- package/dist/common/enum.es.js +19 -0
- package/dist/common/enum.es.js.map +1 -0
- package/dist/config/meiliLogger.cjs +57 -0
- package/dist/config/meiliLogger.cjs.map +1 -0
- package/dist/config/meiliLogger.es.js +55 -0
- package/dist/config/meiliLogger.es.js.map +1 -0
- package/dist/config/parsers.cjs +224 -0
- package/dist/config/parsers.cjs.map +1 -0
- package/dist/config/parsers.es.js +219 -0
- package/dist/config/parsers.es.js.map +1 -0
- package/dist/config/tenantContext.cjs +30 -0
- package/dist/config/tenantContext.cjs.map +1 -0
- package/dist/config/tenantContext.es.js +25 -0
- package/dist/config/tenantContext.es.js.map +1 -0
- package/dist/config/utils.cjs +37 -0
- package/dist/config/utils.cjs.map +1 -0
- package/dist/config/utils.es.js +35 -0
- package/dist/config/utils.es.js.map +1 -0
- package/dist/config/winston.cjs +93 -0
- package/dist/config/winston.cjs.map +1 -0
- package/dist/config/winston.es.js +91 -0
- package/dist/config/winston.es.js.map +1 -0
- package/dist/crypto/index.cjs +156 -0
- package/dist/crypto/index.cjs.map +1 -0
- package/dist/crypto/index.es.js +145 -0
- package/dist/crypto/index.es.js.map +1 -0
- package/dist/index.cjs +142 -11725
- package/dist/index.cjs.map +1 -1
- package/dist/index.es.js +52 -11644
- package/dist/index.es.js.map +1 -1
- package/dist/methods/accessRole.cjs +210 -0
- package/dist/methods/accessRole.cjs.map +1 -0
- package/dist/methods/accessRole.es.js +208 -0
- package/dist/methods/accessRole.es.js.map +1 -0
- package/dist/methods/aclEntry.cjs +361 -0
- package/dist/methods/aclEntry.cjs.map +1 -0
- package/dist/methods/aclEntry.es.js +359 -0
- package/dist/methods/aclEntry.es.js.map +1 -0
- package/dist/methods/action.cjs +59 -0
- package/dist/methods/action.cjs.map +1 -0
- package/dist/methods/action.es.js +57 -0
- package/dist/methods/action.es.js.map +1 -0
- package/dist/methods/agent.cjs +580 -0
- package/dist/methods/agent.cjs.map +1 -0
- package/dist/methods/agent.es.js +578 -0
- package/dist/methods/agent.es.js.map +1 -0
- package/dist/methods/agentApiKey.cjs +140 -0
- package/dist/methods/agentApiKey.cjs.map +1 -0
- package/dist/methods/agentApiKey.es.js +138 -0
- package/dist/methods/agentApiKey.es.js.map +1 -0
- package/dist/methods/agentCategory.cjs +226 -0
- package/dist/methods/agentCategory.cjs.map +1 -0
- package/dist/methods/agentCategory.es.js +224 -0
- package/dist/methods/agentCategory.es.js.map +1 -0
- package/dist/methods/assistant.cjs +53 -0
- package/dist/methods/assistant.cjs.map +1 -0
- package/dist/methods/assistant.es.js +51 -0
- package/dist/methods/assistant.es.js.map +1 -0
- package/dist/methods/banner.cjs +32 -0
- package/dist/methods/banner.cjs.map +1 -0
- package/dist/methods/banner.es.js +30 -0
- package/dist/methods/banner.es.js.map +1 -0
- package/dist/methods/categories.cjs +33 -0
- package/dist/methods/categories.cjs.map +1 -0
- package/dist/methods/categories.es.js +31 -0
- package/dist/methods/categories.es.js.map +1 -0
- package/dist/methods/config.cjs +106 -0
- package/dist/methods/config.cjs.map +1 -0
- package/dist/methods/config.es.js +104 -0
- package/dist/methods/config.es.js.map +1 -0
- package/dist/methods/conversation.cjs +344 -0
- package/dist/methods/conversation.cjs.map +1 -0
- package/dist/methods/conversation.es.js +342 -0
- package/dist/methods/conversation.es.js.map +1 -0
- package/dist/methods/conversationTag.cjs +234 -0
- package/dist/methods/conversationTag.cjs.map +1 -0
- package/dist/methods/conversationTag.es.js +232 -0
- package/dist/methods/conversationTag.es.js.map +1 -0
- package/dist/methods/file.cjs +315 -0
- package/dist/methods/file.cjs.map +1 -0
- package/dist/methods/file.es.js +313 -0
- package/dist/methods/file.es.js.map +1 -0
- package/dist/methods/index.cjs +135 -0
- package/dist/methods/index.cjs.map +1 -0
- package/dist/methods/index.es.js +130 -0
- package/dist/methods/index.es.js.map +1 -0
- package/dist/methods/key.cjs +136 -0
- package/dist/methods/key.cjs.map +1 -0
- package/dist/methods/key.es.js +134 -0
- package/dist/methods/key.es.js.map +1 -0
- package/dist/methods/mcpServer.cjs +259 -0
- package/dist/methods/mcpServer.cjs.map +1 -0
- package/dist/methods/mcpServer.es.js +257 -0
- package/dist/methods/mcpServer.es.js.map +1 -0
- package/dist/methods/memory.cjs +145 -0
- package/dist/methods/memory.cjs.map +1 -0
- package/dist/methods/memory.es.js +143 -0
- package/dist/methods/memory.es.js.map +1 -0
- package/dist/methods/message.cjs +280 -0
- package/dist/methods/message.cjs.map +1 -0
- package/dist/methods/message.es.js +278 -0
- package/dist/methods/message.es.js.map +1 -0
- package/dist/methods/pluginAuth.cjs +108 -0
- package/dist/methods/pluginAuth.cjs.map +1 -0
- package/dist/methods/pluginAuth.es.js +106 -0
- package/dist/methods/pluginAuth.es.js.map +1 -0
- package/dist/methods/preset.cjs +105 -0
- package/dist/methods/preset.cjs.map +1 -0
- package/dist/methods/preset.es.js +103 -0
- package/dist/methods/preset.es.js.map +1 -0
- package/dist/methods/prompt.cjs +546 -0
- package/dist/methods/prompt.cjs.map +1 -0
- package/dist/methods/prompt.es.js +544 -0
- package/dist/methods/prompt.es.js.map +1 -0
- package/dist/methods/role.cjs +290 -0
- package/dist/methods/role.cjs.map +1 -0
- package/dist/methods/role.es.js +288 -0
- package/dist/methods/role.es.js.map +1 -0
- package/dist/methods/session.cjs +221 -0
- package/dist/methods/session.cjs.map +1 -0
- package/dist/methods/session.es.js +217 -0
- package/dist/methods/session.es.js.map +1 -0
- package/dist/methods/share.cjs +474 -0
- package/dist/methods/share.cjs.map +1 -0
- package/dist/methods/share.es.js +472 -0
- package/dist/methods/share.es.js.map +1 -0
- package/dist/methods/spendTokens.cjs +109 -0
- package/dist/methods/spendTokens.cjs.map +1 -0
- package/dist/methods/spendTokens.es.js +107 -0
- package/dist/methods/spendTokens.es.js.map +1 -0
- package/dist/methods/systemGrant.cjs +190 -0
- package/dist/methods/systemGrant.cjs.map +1 -0
- package/dist/methods/systemGrant.es.js +188 -0
- package/dist/methods/systemGrant.es.js.map +1 -0
- package/dist/methods/token.cjs +117 -0
- package/dist/methods/token.cjs.map +1 -0
- package/dist/methods/token.es.js +115 -0
- package/dist/methods/token.es.js.map +1 -0
- package/dist/methods/toolCall.cjs +91 -0
- package/dist/methods/toolCall.cjs.map +1 -0
- package/dist/methods/toolCall.es.js +89 -0
- package/dist/methods/toolCall.es.js.map +1 -0
- package/dist/methods/transaction.cjs +305 -0
- package/dist/methods/transaction.cjs.map +1 -0
- package/dist/methods/transaction.es.js +303 -0
- package/dist/methods/transaction.es.js.map +1 -0
- package/dist/methods/tx.cjs +443 -0
- package/dist/methods/tx.cjs.map +1 -0
- package/dist/methods/tx.es.js +437 -0
- package/dist/methods/tx.es.js.map +1 -0
- package/dist/methods/user.cjs +269 -0
- package/dist/methods/user.cjs.map +1 -0
- package/dist/methods/user.es.js +266 -0
- package/dist/methods/user.es.js.map +1 -0
- package/dist/methods/userGroup.cjs +518 -0
- package/dist/methods/userGroup.cjs.map +1 -0
- package/dist/methods/userGroup.es.js +516 -0
- package/dist/methods/userGroup.es.js.map +1 -0
- package/dist/migrations/tenantIndexes.cjs +85 -0
- package/dist/migrations/tenantIndexes.cjs.map +1 -0
- package/dist/migrations/tenantIndexes.es.js +82 -0
- package/dist/migrations/tenantIndexes.es.js.map +1 -0
- package/dist/models/accessRole.cjs +12 -0
- package/dist/models/accessRole.cjs.map +1 -0
- package/dist/models/accessRole.es.js +10 -0
- package/dist/models/accessRole.es.js.map +1 -0
- package/dist/models/aclEntry.cjs +12 -0
- package/dist/models/aclEntry.cjs.map +1 -0
- package/dist/models/aclEntry.es.js +10 -0
- package/dist/models/aclEntry.es.js.map +1 -0
- package/dist/models/action.cjs +12 -0
- package/dist/models/action.cjs.map +1 -0
- package/dist/models/action.es.js +10 -0
- package/dist/models/action.es.js.map +1 -0
- package/dist/models/agent.cjs +12 -0
- package/dist/models/agent.cjs.map +1 -0
- package/dist/models/agent.es.js +10 -0
- package/dist/models/agent.es.js.map +1 -0
- package/dist/models/agentApiKey.cjs +12 -0
- package/dist/models/agentApiKey.cjs.map +1 -0
- package/dist/models/agentApiKey.es.js +10 -0
- package/dist/models/agentApiKey.es.js.map +1 -0
- package/dist/models/agentCategory.cjs +13 -0
- package/dist/models/agentCategory.cjs.map +1 -0
- package/dist/models/agentCategory.es.js +11 -0
- package/dist/models/agentCategory.es.js.map +1 -0
- package/dist/models/assistant.cjs +12 -0
- package/dist/models/assistant.cjs.map +1 -0
- package/dist/models/assistant.es.js +10 -0
- package/dist/models/assistant.es.js.map +1 -0
- package/dist/models/balance.cjs +12 -0
- package/dist/models/balance.cjs.map +1 -0
- package/dist/models/balance.es.js +10 -0
- package/dist/models/balance.es.js.map +1 -0
- package/dist/models/banner.cjs +12 -0
- package/dist/models/banner.cjs.map +1 -0
- package/dist/models/banner.es.js +10 -0
- package/dist/models/banner.es.js.map +1 -0
- package/dist/models/config.cjs +12 -0
- package/dist/models/config.cjs.map +1 -0
- package/dist/models/config.es.js +10 -0
- package/dist/models/config.es.js.map +1 -0
- package/dist/models/conversationTag.cjs +13 -0
- package/dist/models/conversationTag.cjs.map +1 -0
- package/dist/models/conversationTag.es.js +11 -0
- package/dist/models/conversationTag.es.js.map +1 -0
- package/dist/models/convo.cjs +23 -0
- package/dist/models/convo.cjs.map +1 -0
- package/dist/models/convo.es.js +21 -0
- package/dist/models/convo.es.js.map +1 -0
- package/dist/models/file.cjs +12 -0
- package/dist/models/file.cjs.map +1 -0
- package/dist/models/file.es.js +10 -0
- package/dist/models/file.es.js.map +1 -0
- package/dist/models/group.cjs +12 -0
- package/dist/models/group.cjs.map +1 -0
- package/dist/models/group.es.js +10 -0
- package/dist/models/group.es.js.map +1 -0
- package/dist/models/index.cjs +73 -0
- package/dist/models/index.cjs.map +1 -0
- package/dist/models/index.es.js +71 -0
- package/dist/models/index.es.js.map +1 -0
- package/dist/models/key.cjs +12 -0
- package/dist/models/key.cjs.map +1 -0
- package/dist/models/key.es.js +10 -0
- package/dist/models/key.es.js.map +1 -0
- package/dist/models/mcpServer.cjs +12 -0
- package/dist/models/mcpServer.cjs.map +1 -0
- package/dist/models/mcpServer.es.js +10 -0
- package/dist/models/mcpServer.es.js.map +1 -0
- package/dist/models/memory.cjs +12 -0
- package/dist/models/memory.cjs.map +1 -0
- package/dist/models/memory.es.js +10 -0
- package/dist/models/memory.es.js.map +1 -0
- package/dist/models/message.cjs +22 -0
- package/dist/models/message.cjs.map +1 -0
- package/dist/models/message.es.js +20 -0
- package/dist/models/message.es.js.map +1 -0
- package/dist/models/pluginAuth.cjs +12 -0
- package/dist/models/pluginAuth.cjs.map +1 -0
- package/dist/models/pluginAuth.es.js +10 -0
- package/dist/models/pluginAuth.es.js.map +1 -0
- package/dist/models/plugins/mongoMeili.cjs +547 -0
- package/dist/models/plugins/mongoMeili.cjs.map +1 -0
- package/dist/models/plugins/mongoMeili.es.js +545 -0
- package/dist/models/plugins/mongoMeili.es.js.map +1 -0
- package/dist/models/plugins/tenantIsolation.cjs +140 -0
- package/dist/models/plugins/tenantIsolation.cjs.map +1 -0
- package/dist/models/plugins/tenantIsolation.es.js +138 -0
- package/dist/models/plugins/tenantIsolation.es.js.map +1 -0
- package/dist/models/preset.cjs +12 -0
- package/dist/models/preset.cjs.map +1 -0
- package/dist/models/preset.es.js +10 -0
- package/dist/models/preset.es.js.map +1 -0
- package/dist/models/prompt.cjs +12 -0
- package/dist/models/prompt.cjs.map +1 -0
- package/dist/models/prompt.es.js +10 -0
- package/dist/models/prompt.es.js.map +1 -0
- package/dist/models/promptGroup.cjs +13 -0
- package/dist/models/promptGroup.cjs.map +1 -0
- package/dist/models/promptGroup.es.js +11 -0
- package/dist/models/promptGroup.es.js.map +1 -0
- package/dist/models/role.cjs +12 -0
- package/dist/models/role.cjs.map +1 -0
- package/dist/models/role.es.js +10 -0
- package/dist/models/role.es.js.map +1 -0
- package/dist/models/session.cjs +12 -0
- package/dist/models/session.cjs.map +1 -0
- package/dist/models/session.es.js +10 -0
- package/dist/models/session.es.js.map +1 -0
- package/dist/models/sharedLink.cjs +12 -0
- package/dist/models/sharedLink.cjs.map +1 -0
- package/dist/models/sharedLink.es.js +10 -0
- package/dist/models/sharedLink.es.js.map +1 -0
- package/dist/models/systemGrant.cjs +16 -0
- package/dist/models/systemGrant.cjs.map +1 -0
- package/dist/models/systemGrant.es.js +14 -0
- package/dist/models/systemGrant.es.js.map +1 -0
- package/dist/models/token.cjs +12 -0
- package/dist/models/token.cjs.map +1 -0
- package/dist/models/token.es.js +10 -0
- package/dist/models/token.es.js.map +1 -0
- package/dist/models/toolCall.cjs +12 -0
- package/dist/models/toolCall.cjs.map +1 -0
- package/dist/models/toolCall.es.js +10 -0
- package/dist/models/toolCall.es.js.map +1 -0
- package/dist/models/transaction.cjs +12 -0
- package/dist/models/transaction.cjs.map +1 -0
- package/dist/models/transaction.es.js +10 -0
- package/dist/models/transaction.es.js.map +1 -0
- package/dist/models/user.cjs +12 -0
- package/dist/models/user.cjs.map +1 -0
- package/dist/models/user.es.js +10 -0
- package/dist/models/user.es.js.map +1 -0
- package/dist/schema/accessRole.cjs +34 -0
- package/dist/schema/accessRole.cjs.map +1 -0
- package/dist/schema/accessRole.es.js +32 -0
- package/dist/schema/accessRole.es.js.map +1 -0
- package/dist/schema/aclEntry.cjs +74 -0
- package/dist/schema/aclEntry.cjs.map +1 -0
- package/dist/schema/aclEntry.es.js +72 -0
- package/dist/schema/aclEntry.es.js.map +1 -0
- package/dist/schema/action.cjs +54 -0
- package/dist/schema/action.cjs.map +1 -0
- package/dist/schema/action.es.js +52 -0
- package/dist/schema/action.es.js.map +1 -0
- package/dist/schema/agent.cjs +128 -0
- package/dist/schema/agent.cjs.map +1 -0
- package/dist/schema/agent.es.js +126 -0
- package/dist/schema/agent.es.js.map +1 -0
- package/dist/schema/agentApiKey.cjs +50 -0
- package/dist/schema/agentApiKey.cjs.map +1 -0
- package/dist/schema/agentApiKey.es.js +48 -0
- package/dist/schema/agentApiKey.es.js.map +1 -0
- package/dist/schema/agentCategory.cjs +49 -0
- package/dist/schema/agentCategory.cjs.map +1 -0
- package/dist/schema/agentCategory.es.js +47 -0
- package/dist/schema/agentCategory.es.js.map +1 -0
- package/dist/schema/assistant.cjs +42 -0
- package/dist/schema/assistant.cjs.map +1 -0
- package/dist/schema/assistant.es.js +40 -0
- package/dist/schema/assistant.es.js.map +1 -0
- package/dist/schema/balance.cjs +47 -0
- package/dist/schema/balance.cjs.map +1 -0
- package/dist/schema/balance.es.js +45 -0
- package/dist/schema/balance.es.js.map +1 -0
- package/dist/schema/banner.cjs +42 -0
- package/dist/schema/banner.cjs.map +1 -0
- package/dist/schema/banner.es.js +40 -0
- package/dist/schema/banner.es.js.map +1 -0
- package/dist/schema/categories.cjs +23 -0
- package/dist/schema/categories.cjs.map +1 -0
- package/dist/schema/categories.es.js +21 -0
- package/dist/schema/categories.es.js.map +1 -0
- package/dist/schema/config.cjs +59 -0
- package/dist/schema/config.cjs.map +1 -0
- package/dist/schema/config.es.js +57 -0
- package/dist/schema/config.es.js.map +1 -0
- package/dist/schema/conversationTag.cjs +36 -0
- package/dist/schema/conversationTag.cjs.map +1 -0
- package/dist/schema/conversationTag.es.js +34 -0
- package/dist/schema/conversationTag.es.js.map +1 -0
- package/dist/schema/convo.cjs +52 -0
- package/dist/schema/convo.cjs.map +1 -0
- package/dist/schema/convo.es.js +50 -0
- package/dist/schema/convo.es.js.map +1 -0
- package/dist/schema/defaults.cjs +168 -0
- package/dist/schema/defaults.cjs.map +1 -0
- package/dist/schema/defaults.es.js +166 -0
- package/dist/schema/defaults.es.js.map +1 -0
- package/dist/schema/file.cjs +92 -0
- package/dist/schema/file.cjs.map +1 -0
- package/dist/schema/file.es.js +90 -0
- package/dist/schema/file.es.js.map +1 -0
- package/dist/schema/group.cjs +56 -0
- package/dist/schema/group.cjs.map +1 -0
- package/dist/schema/group.es.js +54 -0
- package/dist/schema/group.es.js.map +1 -0
- package/dist/schema/key.cjs +30 -0
- package/dist/schema/key.cjs.map +1 -0
- package/dist/schema/key.es.js +28 -0
- package/dist/schema/key.es.js.map +1 -0
- package/dist/schema/mcpServer.cjs +33 -0
- package/dist/schema/mcpServer.cjs.map +1 -0
- package/dist/schema/mcpServer.es.js +31 -0
- package/dist/schema/mcpServer.es.js.map +1 -0
- package/dist/schema/memory.cjs +39 -0
- package/dist/schema/memory.cjs.map +1 -0
- package/dist/schema/memory.es.js +37 -0
- package/dist/schema/memory.es.js.map +1 -0
- package/dist/schema/message.cjs +167 -0
- package/dist/schema/message.cjs.map +1 -0
- package/dist/schema/message.es.js +165 -0
- package/dist/schema/message.es.js.map +1 -0
- package/dist/schema/pluginAuth.cjs +28 -0
- package/dist/schema/pluginAuth.cjs.map +1 -0
- package/dist/schema/pluginAuth.es.js +26 -0
- package/dist/schema/pluginAuth.es.js.map +1 -0
- package/dist/schema/preset.cjs +36 -0
- package/dist/schema/preset.cjs.map +1 -0
- package/dist/schema/preset.es.js +34 -0
- package/dist/schema/preset.es.js.map +1 -0
- package/dist/schema/prompt.cjs +36 -0
- package/dist/schema/prompt.cjs.map +1 -0
- package/dist/schema/prompt.es.js +34 -0
- package/dist/schema/prompt.es.js.map +1 -0
- package/dist/schema/promptGroup.cjs +65 -0
- package/dist/schema/promptGroup.cjs.map +1 -0
- package/dist/schema/promptGroup.es.js +63 -0
- package/dist/schema/promptGroup.es.js.map +1 -0
- package/dist/schema/role.cjs +84 -0
- package/dist/schema/role.cjs.map +1 -0
- package/dist/schema/role.es.js +82 -0
- package/dist/schema/role.es.js.map +1 -0
- package/dist/schema/session.cjs +27 -0
- package/dist/schema/session.cjs.map +1 -0
- package/dist/schema/session.es.js +25 -0
- package/dist/schema/session.es.js.map +1 -0
- package/dist/schema/share.cjs +40 -0
- package/dist/schema/share.cjs.map +1 -0
- package/dist/schema/share.es.js +38 -0
- package/dist/schema/share.es.js.map +1 -0
- package/dist/schema/systemGrant.cjs +66 -0
- package/dist/schema/systemGrant.cjs.map +1 -0
- package/dist/schema/systemGrant.es.js +64 -0
- package/dist/schema/systemGrant.es.js.map +1 -0
- package/dist/schema/token.cjs +45 -0
- package/dist/schema/token.cjs.map +1 -0
- package/dist/schema/token.es.js +43 -0
- package/dist/schema/token.es.js.map +1 -0
- package/dist/schema/toolCall.cjs +44 -0
- package/dist/schema/toolCall.cjs.map +1 -0
- package/dist/schema/toolCall.es.js +42 -0
- package/dist/schema/toolCall.es.js.map +1 -0
- package/dist/schema/transaction.cjs +48 -0
- package/dist/schema/transaction.cjs.map +1 -0
- package/dist/schema/transaction.es.js +46 -0
- package/dist/schema/transaction.es.js.map +1 -0
- package/dist/schema/user.cjs +165 -0
- package/dist/schema/user.cjs.map +1 -0
- package/dist/schema/user.es.js +163 -0
- package/dist/schema/user.es.js.map +1 -0
- package/dist/types/admin/capabilities.d.ts +2 -0
- package/dist/types/methods/config.d.ts +1 -0
- package/dist/utils/object-traverse.cjs +158 -0
- package/dist/utils/object-traverse.cjs.map +1 -0
- package/dist/utils/object-traverse.es.js +156 -0
- package/dist/utils/object-traverse.es.js.map +1 -0
- package/dist/utils/principal.cjs +24 -0
- package/dist/utils/principal.cjs.map +1 -0
- package/dist/utils/principal.es.js +22 -0
- package/dist/utils/principal.es.js.map +1 -0
- package/dist/utils/string.cjs +11 -0
- package/dist/utils/string.cjs.map +1 -0
- package/dist/utils/string.es.js +9 -0
- package/dist/utils/string.es.js.map +1 -0
- package/dist/utils/tempChatRetention.cjs +70 -0
- package/dist/utils/tempChatRetention.cjs.map +1 -0
- package/dist/utils/tempChatRetention.es.js +64 -0
- package/dist/utils/tempChatRetention.es.js.map +1 -0
- package/dist/utils/transactions.cjs +60 -0
- package/dist/utils/transactions.cjs.map +1 -0
- package/dist/utils/transactions.es.js +56 -0
- package/dist/utils/transactions.es.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var librechatDataProvider = require('librechat-data-provider');
|
|
4
|
+
var winston = require('../config/winston.cjs');
|
|
5
|
+
|
|
6
|
+
function createRoleMethods(mongoose, deps = {}) {
|
|
7
|
+
/**
|
|
8
|
+
* Initialize default roles in the system.
|
|
9
|
+
* Creates the default roles (ADMIN, USER) if they don't exist in the database.
|
|
10
|
+
* Updates existing roles with new permission types if they're missing.
|
|
11
|
+
*/
|
|
12
|
+
async function initializeRoles() {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const Role = mongoose.models.Role;
|
|
15
|
+
for (const roleName of [librechatDataProvider.SystemRoles.ADMIN, librechatDataProvider.SystemRoles.USER]) {
|
|
16
|
+
let role = await Role.findOne({ name: roleName });
|
|
17
|
+
const defaultPerms = librechatDataProvider.roleDefaults[roleName].permissions;
|
|
18
|
+
if (!role) {
|
|
19
|
+
role = new Role(librechatDataProvider.roleDefaults[roleName]);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const permissions = (_b = (_a = role.toObject()) === null || _a === void 0 ? void 0 : _a.permissions) !== null && _b !== void 0 ? _b : {};
|
|
23
|
+
role.permissions = role.permissions || {};
|
|
24
|
+
for (const permType of Object.keys(defaultPerms)) {
|
|
25
|
+
if (permissions[permType] == null || Object.keys(permissions[permType]).length === 0) {
|
|
26
|
+
role.permissions[permType] = defaultPerms[permType];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
await role.save();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* List all roles in the system.
|
|
35
|
+
*/
|
|
36
|
+
async function listRoles() {
|
|
37
|
+
const Role = mongoose.models.Role;
|
|
38
|
+
return await Role.find({}).select('name permissions').lean();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Retrieve a role by name and convert the found role document to a plain object.
|
|
42
|
+
* If the role with the given name doesn't exist and the name is a system defined role,
|
|
43
|
+
* create it and return the lean version.
|
|
44
|
+
*/
|
|
45
|
+
async function getRoleByName(roleName, fieldsToSelect = null) {
|
|
46
|
+
var _a;
|
|
47
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, librechatDataProvider.CacheKeys.ROLES);
|
|
48
|
+
try {
|
|
49
|
+
if (cache) {
|
|
50
|
+
const cachedRole = await cache.get(roleName);
|
|
51
|
+
if (cachedRole) {
|
|
52
|
+
return cachedRole;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const Role = mongoose.models.Role;
|
|
56
|
+
let query = Role.findOne({ name: roleName });
|
|
57
|
+
if (fieldsToSelect) {
|
|
58
|
+
query = query.select(fieldsToSelect);
|
|
59
|
+
}
|
|
60
|
+
const role = await query.lean().exec();
|
|
61
|
+
if (!role && librechatDataProvider.SystemRoles[roleName]) {
|
|
62
|
+
const newRole = await new Role(librechatDataProvider.roleDefaults[roleName]).save();
|
|
63
|
+
if (cache) {
|
|
64
|
+
await cache.set(roleName, newRole);
|
|
65
|
+
}
|
|
66
|
+
return newRole.toObject();
|
|
67
|
+
}
|
|
68
|
+
if (cache) {
|
|
69
|
+
await cache.set(roleName, role);
|
|
70
|
+
}
|
|
71
|
+
return role;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw new Error(`Failed to retrieve or create role: ${error.message}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Update role values by name.
|
|
79
|
+
*/
|
|
80
|
+
async function updateRoleByName(roleName, updates) {
|
|
81
|
+
var _a;
|
|
82
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, librechatDataProvider.CacheKeys.ROLES);
|
|
83
|
+
try {
|
|
84
|
+
const Role = mongoose.models.Role;
|
|
85
|
+
const role = await Role.findOneAndUpdate({ name: roleName }, { $set: updates }, { new: true, lean: true })
|
|
86
|
+
.select('-__v')
|
|
87
|
+
.lean()
|
|
88
|
+
.exec();
|
|
89
|
+
if (cache) {
|
|
90
|
+
await cache.set(roleName, role);
|
|
91
|
+
}
|
|
92
|
+
return role;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw new Error(`Failed to update role: ${error.message}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Updates access permissions for a specific role and multiple permission types.
|
|
100
|
+
*/
|
|
101
|
+
async function updateAccessPermissions(roleName, permissionsUpdate, roleData) {
|
|
102
|
+
var _a;
|
|
103
|
+
const updates = {};
|
|
104
|
+
for (const [permissionType, permissions] of Object.entries(permissionsUpdate)) {
|
|
105
|
+
if (librechatDataProvider.permissionsSchema.shape &&
|
|
106
|
+
librechatDataProvider.permissionsSchema.shape[permissionType]) {
|
|
107
|
+
updates[permissionType] = librechatDataProvider.removeNullishValues(permissions);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (!Object.keys(updates).length) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const role = roleData !== null && roleData !== void 0 ? roleData : (await getRoleByName(roleName));
|
|
115
|
+
if (!role) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const currentPermissions = role.permissions || {};
|
|
119
|
+
const updatedPermissions = { ...currentPermissions };
|
|
120
|
+
let hasChanges = false;
|
|
121
|
+
const unsetFields = {};
|
|
122
|
+
const permissionTypes = Object.keys(librechatDataProvider.permissionsSchema.shape || {});
|
|
123
|
+
for (const permType of permissionTypes) {
|
|
124
|
+
if (role[permType] &&
|
|
125
|
+
typeof role[permType] === 'object') {
|
|
126
|
+
winston.info(`Migrating '${roleName}' role from old schema: found '${permType}' at top level`);
|
|
127
|
+
updatedPermissions[permType] = {
|
|
128
|
+
...updatedPermissions[permType],
|
|
129
|
+
...role[permType],
|
|
130
|
+
};
|
|
131
|
+
unsetFields[permType] = 1;
|
|
132
|
+
hasChanges = true;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Migrate legacy SHARED_GLOBAL → SHARE for PROMPTS and AGENTS.
|
|
136
|
+
// SHARED_GLOBAL was removed in favour of SHARE in PR #11283. If the DB still has
|
|
137
|
+
// SHARED_GLOBAL but not SHARE, inherit the value so sharing intent is preserved.
|
|
138
|
+
const legacySharedGlobalTypes = ['PROMPTS', 'AGENTS'];
|
|
139
|
+
for (const legacyPermType of legacySharedGlobalTypes) {
|
|
140
|
+
const existingTypePerms = currentPermissions[legacyPermType];
|
|
141
|
+
if (existingTypePerms &&
|
|
142
|
+
'SHARED_GLOBAL' in existingTypePerms &&
|
|
143
|
+
!('SHARE' in existingTypePerms) &&
|
|
144
|
+
updates[legacyPermType] &&
|
|
145
|
+
// Don't override an explicit SHARE value the caller already provided
|
|
146
|
+
!('SHARE' in updates[legacyPermType])) {
|
|
147
|
+
const inheritedValue = existingTypePerms['SHARED_GLOBAL'];
|
|
148
|
+
updates[legacyPermType]['SHARE'] = inheritedValue;
|
|
149
|
+
winston.info(`Migrating '${roleName}' role ${legacyPermType}.SHARED_GLOBAL=${inheritedValue} → SHARE`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
for (const [permissionType, permissions] of Object.entries(updates)) {
|
|
153
|
+
const currentTypePermissions = currentPermissions[permissionType] || {};
|
|
154
|
+
updatedPermissions[permissionType] = { ...currentTypePermissions };
|
|
155
|
+
for (const [permission, value] of Object.entries(permissions)) {
|
|
156
|
+
if (currentTypePermissions[permission] !== value) {
|
|
157
|
+
updatedPermissions[permissionType][permission] = value;
|
|
158
|
+
hasChanges = true;
|
|
159
|
+
winston.info(`Updating '${roleName}' role permission '${permissionType}' '${permission}' from ${currentTypePermissions[permission]} to: ${value}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Clean up orphaned SHARED_GLOBAL fields left in DB after the schema rename.
|
|
164
|
+
// Since we $set the full permissions object, deleting from updatedPermissions
|
|
165
|
+
// is sufficient to remove the field from MongoDB.
|
|
166
|
+
for (const legacyPermType of legacySharedGlobalTypes) {
|
|
167
|
+
const existingTypePerms = currentPermissions[legacyPermType];
|
|
168
|
+
if (existingTypePerms && 'SHARED_GLOBAL' in existingTypePerms) {
|
|
169
|
+
if (!updates[legacyPermType]) {
|
|
170
|
+
// permType wasn't in the update payload so the migration block above didn't run.
|
|
171
|
+
// Create a writable copy and handle the SHARED_GLOBAL → SHARE inheritance here
|
|
172
|
+
// to avoid removing SHARED_GLOBAL without writing SHARE (data loss).
|
|
173
|
+
updatedPermissions[legacyPermType] = { ...existingTypePerms };
|
|
174
|
+
if (!('SHARE' in existingTypePerms)) {
|
|
175
|
+
updatedPermissions[legacyPermType]['SHARE'] = existingTypePerms['SHARED_GLOBAL'];
|
|
176
|
+
winston.info(`Migrating '${roleName}' role ${legacyPermType}.SHARED_GLOBAL=${existingTypePerms['SHARED_GLOBAL']} → SHARE`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
delete updatedPermissions[legacyPermType]['SHARED_GLOBAL'];
|
|
180
|
+
hasChanges = true;
|
|
181
|
+
winston.info(`Removed legacy SHARED_GLOBAL field from '${roleName}' role ${legacyPermType} permissions`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (hasChanges) {
|
|
185
|
+
const Role = mongoose.models.Role;
|
|
186
|
+
const updateObj = { permissions: updatedPermissions };
|
|
187
|
+
if (Object.keys(unsetFields).length > 0) {
|
|
188
|
+
winston.info(`Unsetting old schema fields for '${roleName}' role: ${Object.keys(unsetFields).join(', ')}`);
|
|
189
|
+
try {
|
|
190
|
+
await Role.updateOne({ name: roleName }, {
|
|
191
|
+
$set: updateObj,
|
|
192
|
+
$unset: unsetFields,
|
|
193
|
+
});
|
|
194
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, librechatDataProvider.CacheKeys.ROLES);
|
|
195
|
+
const updatedRole = await Role.findOne({ name: roleName }).select('-__v').lean().exec();
|
|
196
|
+
if (cache) {
|
|
197
|
+
await cache.set(roleName, updatedRole);
|
|
198
|
+
}
|
|
199
|
+
winston.info(`Updated role '${roleName}' and removed old schema fields`);
|
|
200
|
+
}
|
|
201
|
+
catch (updateError) {
|
|
202
|
+
winston.error(`Error during role migration update: ${updateError.message}`);
|
|
203
|
+
throw updateError;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
await updateRoleByName(roleName, updateObj);
|
|
208
|
+
}
|
|
209
|
+
winston.info(`Updated '${roleName}' role permissions`);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
winston.info(`No changes needed for '${roleName}' role permissions`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
winston.error(`Failed to update ${roleName} role permissions:`, error);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Migrates roles from old schema to new schema structure.
|
|
221
|
+
*/
|
|
222
|
+
async function migrateRoleSchema(roleName) {
|
|
223
|
+
var _a;
|
|
224
|
+
try {
|
|
225
|
+
const Role = mongoose.models.Role;
|
|
226
|
+
let roles;
|
|
227
|
+
if (roleName) {
|
|
228
|
+
const role = await Role.findOne({ name: roleName });
|
|
229
|
+
roles = role ? [role] : [];
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
roles = await Role.find({});
|
|
233
|
+
}
|
|
234
|
+
winston.info(`Migrating ${roles.length} roles to new schema structure`);
|
|
235
|
+
let migratedCount = 0;
|
|
236
|
+
for (const role of roles) {
|
|
237
|
+
const permissionTypes = Object.keys(librechatDataProvider.permissionsSchema.shape || {});
|
|
238
|
+
const unsetFields = {};
|
|
239
|
+
let hasOldSchema = false;
|
|
240
|
+
for (const permType of permissionTypes) {
|
|
241
|
+
if (role[permType] && typeof role[permType] === 'object') {
|
|
242
|
+
hasOldSchema = true;
|
|
243
|
+
role.permissions = role.permissions || {};
|
|
244
|
+
role.permissions[permType] = {
|
|
245
|
+
...role.permissions[permType],
|
|
246
|
+
...role[permType],
|
|
247
|
+
};
|
|
248
|
+
unsetFields[permType] = 1;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (hasOldSchema) {
|
|
252
|
+
try {
|
|
253
|
+
winston.info(`Migrating role '${role.name}' from old schema structure`);
|
|
254
|
+
await Role.updateOne({ _id: role._id }, {
|
|
255
|
+
$set: { permissions: role.permissions },
|
|
256
|
+
$unset: unsetFields,
|
|
257
|
+
});
|
|
258
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, librechatDataProvider.CacheKeys.ROLES);
|
|
259
|
+
if (cache) {
|
|
260
|
+
const updatedRole = await Role.findById(role._id).lean().exec();
|
|
261
|
+
await cache.set(role.name, updatedRole);
|
|
262
|
+
}
|
|
263
|
+
migratedCount++;
|
|
264
|
+
winston.info(`Migrated role '${role.name}'`);
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
winston.error(`Failed to migrate role '${role.name}': ${error.message}`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
winston.info(`Migration complete: ${migratedCount} roles migrated`);
|
|
272
|
+
return migratedCount;
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
winston.error(`Role schema migration failed: ${error.message}`);
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return {
|
|
280
|
+
listRoles,
|
|
281
|
+
initializeRoles,
|
|
282
|
+
getRoleByName,
|
|
283
|
+
updateRoleByName,
|
|
284
|
+
updateAccessPermissions,
|
|
285
|
+
migrateRoleSchema,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
exports.createRoleMethods = createRoleMethods;
|
|
290
|
+
//# sourceMappingURL=role.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.cjs","sources":["../../src/methods/role.ts"],"sourcesContent":[null],"names":["SystemRoles","roleDefaults","CacheKeys","permissionsSchema","removeNullishValues","logger"],"mappings":"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"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { permissionsSchema, CacheKeys, removeNullishValues, SystemRoles, roleDefaults } from 'librechat-data-provider';
|
|
2
|
+
import logger from '../config/winston.es.js';
|
|
3
|
+
|
|
4
|
+
function createRoleMethods(mongoose, deps = {}) {
|
|
5
|
+
/**
|
|
6
|
+
* Initialize default roles in the system.
|
|
7
|
+
* Creates the default roles (ADMIN, USER) if they don't exist in the database.
|
|
8
|
+
* Updates existing roles with new permission types if they're missing.
|
|
9
|
+
*/
|
|
10
|
+
async function initializeRoles() {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const Role = mongoose.models.Role;
|
|
13
|
+
for (const roleName of [SystemRoles.ADMIN, SystemRoles.USER]) {
|
|
14
|
+
let role = await Role.findOne({ name: roleName });
|
|
15
|
+
const defaultPerms = roleDefaults[roleName].permissions;
|
|
16
|
+
if (!role) {
|
|
17
|
+
role = new Role(roleDefaults[roleName]);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const permissions = (_b = (_a = role.toObject()) === null || _a === void 0 ? void 0 : _a.permissions) !== null && _b !== void 0 ? _b : {};
|
|
21
|
+
role.permissions = role.permissions || {};
|
|
22
|
+
for (const permType of Object.keys(defaultPerms)) {
|
|
23
|
+
if (permissions[permType] == null || Object.keys(permissions[permType]).length === 0) {
|
|
24
|
+
role.permissions[permType] = defaultPerms[permType];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
await role.save();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* List all roles in the system.
|
|
33
|
+
*/
|
|
34
|
+
async function listRoles() {
|
|
35
|
+
const Role = mongoose.models.Role;
|
|
36
|
+
return await Role.find({}).select('name permissions').lean();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Retrieve a role by name and convert the found role document to a plain object.
|
|
40
|
+
* If the role with the given name doesn't exist and the name is a system defined role,
|
|
41
|
+
* create it and return the lean version.
|
|
42
|
+
*/
|
|
43
|
+
async function getRoleByName(roleName, fieldsToSelect = null) {
|
|
44
|
+
var _a;
|
|
45
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, CacheKeys.ROLES);
|
|
46
|
+
try {
|
|
47
|
+
if (cache) {
|
|
48
|
+
const cachedRole = await cache.get(roleName);
|
|
49
|
+
if (cachedRole) {
|
|
50
|
+
return cachedRole;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const Role = mongoose.models.Role;
|
|
54
|
+
let query = Role.findOne({ name: roleName });
|
|
55
|
+
if (fieldsToSelect) {
|
|
56
|
+
query = query.select(fieldsToSelect);
|
|
57
|
+
}
|
|
58
|
+
const role = await query.lean().exec();
|
|
59
|
+
if (!role && SystemRoles[roleName]) {
|
|
60
|
+
const newRole = await new Role(roleDefaults[roleName]).save();
|
|
61
|
+
if (cache) {
|
|
62
|
+
await cache.set(roleName, newRole);
|
|
63
|
+
}
|
|
64
|
+
return newRole.toObject();
|
|
65
|
+
}
|
|
66
|
+
if (cache) {
|
|
67
|
+
await cache.set(roleName, role);
|
|
68
|
+
}
|
|
69
|
+
return role;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
throw new Error(`Failed to retrieve or create role: ${error.message}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Update role values by name.
|
|
77
|
+
*/
|
|
78
|
+
async function updateRoleByName(roleName, updates) {
|
|
79
|
+
var _a;
|
|
80
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, CacheKeys.ROLES);
|
|
81
|
+
try {
|
|
82
|
+
const Role = mongoose.models.Role;
|
|
83
|
+
const role = await Role.findOneAndUpdate({ name: roleName }, { $set: updates }, { new: true, lean: true })
|
|
84
|
+
.select('-__v')
|
|
85
|
+
.lean()
|
|
86
|
+
.exec();
|
|
87
|
+
if (cache) {
|
|
88
|
+
await cache.set(roleName, role);
|
|
89
|
+
}
|
|
90
|
+
return role;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new Error(`Failed to update role: ${error.message}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Updates access permissions for a specific role and multiple permission types.
|
|
98
|
+
*/
|
|
99
|
+
async function updateAccessPermissions(roleName, permissionsUpdate, roleData) {
|
|
100
|
+
var _a;
|
|
101
|
+
const updates = {};
|
|
102
|
+
for (const [permissionType, permissions] of Object.entries(permissionsUpdate)) {
|
|
103
|
+
if (permissionsSchema.shape &&
|
|
104
|
+
permissionsSchema.shape[permissionType]) {
|
|
105
|
+
updates[permissionType] = removeNullishValues(permissions);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (!Object.keys(updates).length) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const role = roleData !== null && roleData !== void 0 ? roleData : (await getRoleByName(roleName));
|
|
113
|
+
if (!role) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const currentPermissions = role.permissions || {};
|
|
117
|
+
const updatedPermissions = { ...currentPermissions };
|
|
118
|
+
let hasChanges = false;
|
|
119
|
+
const unsetFields = {};
|
|
120
|
+
const permissionTypes = Object.keys(permissionsSchema.shape || {});
|
|
121
|
+
for (const permType of permissionTypes) {
|
|
122
|
+
if (role[permType] &&
|
|
123
|
+
typeof role[permType] === 'object') {
|
|
124
|
+
logger.info(`Migrating '${roleName}' role from old schema: found '${permType}' at top level`);
|
|
125
|
+
updatedPermissions[permType] = {
|
|
126
|
+
...updatedPermissions[permType],
|
|
127
|
+
...role[permType],
|
|
128
|
+
};
|
|
129
|
+
unsetFields[permType] = 1;
|
|
130
|
+
hasChanges = true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Migrate legacy SHARED_GLOBAL → SHARE for PROMPTS and AGENTS.
|
|
134
|
+
// SHARED_GLOBAL was removed in favour of SHARE in PR #11283. If the DB still has
|
|
135
|
+
// SHARED_GLOBAL but not SHARE, inherit the value so sharing intent is preserved.
|
|
136
|
+
const legacySharedGlobalTypes = ['PROMPTS', 'AGENTS'];
|
|
137
|
+
for (const legacyPermType of legacySharedGlobalTypes) {
|
|
138
|
+
const existingTypePerms = currentPermissions[legacyPermType];
|
|
139
|
+
if (existingTypePerms &&
|
|
140
|
+
'SHARED_GLOBAL' in existingTypePerms &&
|
|
141
|
+
!('SHARE' in existingTypePerms) &&
|
|
142
|
+
updates[legacyPermType] &&
|
|
143
|
+
// Don't override an explicit SHARE value the caller already provided
|
|
144
|
+
!('SHARE' in updates[legacyPermType])) {
|
|
145
|
+
const inheritedValue = existingTypePerms['SHARED_GLOBAL'];
|
|
146
|
+
updates[legacyPermType]['SHARE'] = inheritedValue;
|
|
147
|
+
logger.info(`Migrating '${roleName}' role ${legacyPermType}.SHARED_GLOBAL=${inheritedValue} → SHARE`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const [permissionType, permissions] of Object.entries(updates)) {
|
|
151
|
+
const currentTypePermissions = currentPermissions[permissionType] || {};
|
|
152
|
+
updatedPermissions[permissionType] = { ...currentTypePermissions };
|
|
153
|
+
for (const [permission, value] of Object.entries(permissions)) {
|
|
154
|
+
if (currentTypePermissions[permission] !== value) {
|
|
155
|
+
updatedPermissions[permissionType][permission] = value;
|
|
156
|
+
hasChanges = true;
|
|
157
|
+
logger.info(`Updating '${roleName}' role permission '${permissionType}' '${permission}' from ${currentTypePermissions[permission]} to: ${value}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Clean up orphaned SHARED_GLOBAL fields left in DB after the schema rename.
|
|
162
|
+
// Since we $set the full permissions object, deleting from updatedPermissions
|
|
163
|
+
// is sufficient to remove the field from MongoDB.
|
|
164
|
+
for (const legacyPermType of legacySharedGlobalTypes) {
|
|
165
|
+
const existingTypePerms = currentPermissions[legacyPermType];
|
|
166
|
+
if (existingTypePerms && 'SHARED_GLOBAL' in existingTypePerms) {
|
|
167
|
+
if (!updates[legacyPermType]) {
|
|
168
|
+
// permType wasn't in the update payload so the migration block above didn't run.
|
|
169
|
+
// Create a writable copy and handle the SHARED_GLOBAL → SHARE inheritance here
|
|
170
|
+
// to avoid removing SHARED_GLOBAL without writing SHARE (data loss).
|
|
171
|
+
updatedPermissions[legacyPermType] = { ...existingTypePerms };
|
|
172
|
+
if (!('SHARE' in existingTypePerms)) {
|
|
173
|
+
updatedPermissions[legacyPermType]['SHARE'] = existingTypePerms['SHARED_GLOBAL'];
|
|
174
|
+
logger.info(`Migrating '${roleName}' role ${legacyPermType}.SHARED_GLOBAL=${existingTypePerms['SHARED_GLOBAL']} → SHARE`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
delete updatedPermissions[legacyPermType]['SHARED_GLOBAL'];
|
|
178
|
+
hasChanges = true;
|
|
179
|
+
logger.info(`Removed legacy SHARED_GLOBAL field from '${roleName}' role ${legacyPermType} permissions`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (hasChanges) {
|
|
183
|
+
const Role = mongoose.models.Role;
|
|
184
|
+
const updateObj = { permissions: updatedPermissions };
|
|
185
|
+
if (Object.keys(unsetFields).length > 0) {
|
|
186
|
+
logger.info(`Unsetting old schema fields for '${roleName}' role: ${Object.keys(unsetFields).join(', ')}`);
|
|
187
|
+
try {
|
|
188
|
+
await Role.updateOne({ name: roleName }, {
|
|
189
|
+
$set: updateObj,
|
|
190
|
+
$unset: unsetFields,
|
|
191
|
+
});
|
|
192
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, CacheKeys.ROLES);
|
|
193
|
+
const updatedRole = await Role.findOne({ name: roleName }).select('-__v').lean().exec();
|
|
194
|
+
if (cache) {
|
|
195
|
+
await cache.set(roleName, updatedRole);
|
|
196
|
+
}
|
|
197
|
+
logger.info(`Updated role '${roleName}' and removed old schema fields`);
|
|
198
|
+
}
|
|
199
|
+
catch (updateError) {
|
|
200
|
+
logger.error(`Error during role migration update: ${updateError.message}`);
|
|
201
|
+
throw updateError;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
await updateRoleByName(roleName, updateObj);
|
|
206
|
+
}
|
|
207
|
+
logger.info(`Updated '${roleName}' role permissions`);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
logger.info(`No changes needed for '${roleName}' role permissions`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
logger.error(`Failed to update ${roleName} role permissions:`, error);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Migrates roles from old schema to new schema structure.
|
|
219
|
+
*/
|
|
220
|
+
async function migrateRoleSchema(roleName) {
|
|
221
|
+
var _a;
|
|
222
|
+
try {
|
|
223
|
+
const Role = mongoose.models.Role;
|
|
224
|
+
let roles;
|
|
225
|
+
if (roleName) {
|
|
226
|
+
const role = await Role.findOne({ name: roleName });
|
|
227
|
+
roles = role ? [role] : [];
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
roles = await Role.find({});
|
|
231
|
+
}
|
|
232
|
+
logger.info(`Migrating ${roles.length} roles to new schema structure`);
|
|
233
|
+
let migratedCount = 0;
|
|
234
|
+
for (const role of roles) {
|
|
235
|
+
const permissionTypes = Object.keys(permissionsSchema.shape || {});
|
|
236
|
+
const unsetFields = {};
|
|
237
|
+
let hasOldSchema = false;
|
|
238
|
+
for (const permType of permissionTypes) {
|
|
239
|
+
if (role[permType] && typeof role[permType] === 'object') {
|
|
240
|
+
hasOldSchema = true;
|
|
241
|
+
role.permissions = role.permissions || {};
|
|
242
|
+
role.permissions[permType] = {
|
|
243
|
+
...role.permissions[permType],
|
|
244
|
+
...role[permType],
|
|
245
|
+
};
|
|
246
|
+
unsetFields[permType] = 1;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (hasOldSchema) {
|
|
250
|
+
try {
|
|
251
|
+
logger.info(`Migrating role '${role.name}' from old schema structure`);
|
|
252
|
+
await Role.updateOne({ _id: role._id }, {
|
|
253
|
+
$set: { permissions: role.permissions },
|
|
254
|
+
$unset: unsetFields,
|
|
255
|
+
});
|
|
256
|
+
const cache = (_a = deps.getCache) === null || _a === void 0 ? void 0 : _a.call(deps, CacheKeys.ROLES);
|
|
257
|
+
if (cache) {
|
|
258
|
+
const updatedRole = await Role.findById(role._id).lean().exec();
|
|
259
|
+
await cache.set(role.name, updatedRole);
|
|
260
|
+
}
|
|
261
|
+
migratedCount++;
|
|
262
|
+
logger.info(`Migrated role '${role.name}'`);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
logger.error(`Failed to migrate role '${role.name}': ${error.message}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
logger.info(`Migration complete: ${migratedCount} roles migrated`);
|
|
270
|
+
return migratedCount;
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
logger.error(`Role schema migration failed: ${error.message}`);
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
listRoles,
|
|
279
|
+
initializeRoles,
|
|
280
|
+
getRoleByName,
|
|
281
|
+
updateRoleByName,
|
|
282
|
+
updateAccessPermissions,
|
|
283
|
+
migrateRoleSchema,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export { createRoleMethods };
|
|
288
|
+
//# sourceMappingURL=role.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.es.js","sources":["../../src/methods/role.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|