@librechat/data-schemas 0.0.43 → 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 -11734
- package/dist/index.cjs.map +1 -1
- package/dist/index.es.js +52 -11652
- 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/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,257 @@
|
|
|
1
|
+
import logger from '../config/winston.es.js';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
|
|
4
|
+
const NORMALIZED_LIMIT_DEFAULT = 20;
|
|
5
|
+
const MAX_CREATE_RETRIES = 5;
|
|
6
|
+
const RETRY_BASE_DELAY_MS = 25;
|
|
7
|
+
/**
|
|
8
|
+
* Helper to check if an error is a MongoDB duplicate key error.
|
|
9
|
+
* Since serverName is the only unique index on MCPServer, any E11000 error
|
|
10
|
+
* during creation is necessarily a serverName collision.
|
|
11
|
+
*/
|
|
12
|
+
function isDuplicateKeyError(error) {
|
|
13
|
+
if (error && typeof error === 'object' && 'code' in error) {
|
|
14
|
+
const mongoError = error;
|
|
15
|
+
return mongoError.code === 11000;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Escapes special regex characters in a string so they are treated literally.
|
|
21
|
+
*/
|
|
22
|
+
function escapeRegex(str) {
|
|
23
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generates a URL-friendly server name from a title.
|
|
27
|
+
* Converts to lowercase, replaces spaces with hyphens, removes special characters.
|
|
28
|
+
*/
|
|
29
|
+
function generateServerNameFromTitle(title) {
|
|
30
|
+
const slug = title
|
|
31
|
+
.toLowerCase()
|
|
32
|
+
.trim()
|
|
33
|
+
.replace(/[^a-z0-9\s-]/g, '') // Remove special chars except spaces and hyphens
|
|
34
|
+
.replace(/\s+/g, '-') // Replace spaces with hyphens
|
|
35
|
+
.replace(/-+/g, '-') // Remove consecutive hyphens
|
|
36
|
+
.replace(/^-|-$/g, ''); // Trim leading/trailing hyphens
|
|
37
|
+
return slug || 'mcp-server'; // Fallback if empty
|
|
38
|
+
}
|
|
39
|
+
function createMCPServerMethods(mongoose) {
|
|
40
|
+
/**
|
|
41
|
+
* Finds the next available server name by checking for duplicates.
|
|
42
|
+
* If baseName exists, returns baseName-2, baseName-3, etc.
|
|
43
|
+
*/
|
|
44
|
+
async function findNextAvailableServerName(baseName) {
|
|
45
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
46
|
+
// Find all servers with matching base name pattern (baseName or baseName-N)
|
|
47
|
+
const escapedBaseName = escapeRegex(baseName);
|
|
48
|
+
const existing = await MCPServer.find({
|
|
49
|
+
serverName: { $regex: `^${escapedBaseName}(-\\d+)?$` },
|
|
50
|
+
})
|
|
51
|
+
.select('serverName')
|
|
52
|
+
.lean();
|
|
53
|
+
if (existing.length === 0) {
|
|
54
|
+
return baseName;
|
|
55
|
+
}
|
|
56
|
+
// Extract numbers from existing names
|
|
57
|
+
const numbers = existing.map((s) => {
|
|
58
|
+
const match = s.serverName.match(/-(\d+)$/);
|
|
59
|
+
return match ? parseInt(match[1], 10) : 1;
|
|
60
|
+
});
|
|
61
|
+
const maxNumber = Math.max(...numbers);
|
|
62
|
+
return `${baseName}-${maxNumber + 1}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a new MCP server with retry logic for handling race conditions.
|
|
66
|
+
* When multiple requests try to create servers with the same title simultaneously,
|
|
67
|
+
* they may get the same serverName from findNextAvailableServerName() before any
|
|
68
|
+
* creates the record (TOCTOU race condition). This is handled by retrying with
|
|
69
|
+
* exponential backoff when a duplicate key error occurs.
|
|
70
|
+
* @param data - Object containing config (with title, description, url, etc.) and author
|
|
71
|
+
* @returns The created MCP server document
|
|
72
|
+
*/
|
|
73
|
+
async function createMCPServer(data) {
|
|
74
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
75
|
+
let lastError;
|
|
76
|
+
for (let attempt = 0; attempt < MAX_CREATE_RETRIES; attempt++) {
|
|
77
|
+
try {
|
|
78
|
+
// Generate serverName from title, with fallback to nanoid if no title
|
|
79
|
+
// Important: regenerate on each attempt to get fresh available name
|
|
80
|
+
let serverName;
|
|
81
|
+
if (data.config.title) {
|
|
82
|
+
const baseSlug = generateServerNameFromTitle(data.config.title);
|
|
83
|
+
serverName = await findNextAvailableServerName(baseSlug);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
serverName = `mcp-${nanoid(16)}`;
|
|
87
|
+
}
|
|
88
|
+
const newServer = await MCPServer.create({
|
|
89
|
+
serverName,
|
|
90
|
+
config: data.config,
|
|
91
|
+
author: data.author,
|
|
92
|
+
});
|
|
93
|
+
return newServer.toObject();
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
lastError = error;
|
|
97
|
+
// Only retry on duplicate key errors (serverName collision)
|
|
98
|
+
if (isDuplicateKeyError(error) && attempt < MAX_CREATE_RETRIES - 1) {
|
|
99
|
+
// Exponential backoff: 10ms, 20ms, 40ms
|
|
100
|
+
const delay = RETRY_BASE_DELAY_MS * Math.pow(2, attempt);
|
|
101
|
+
logger.debug(`[createMCPServer] Duplicate serverName detected, retrying (attempt ${attempt + 2}/${MAX_CREATE_RETRIES}) after ${delay}ms`);
|
|
102
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Not a duplicate key error or out of retries - throw immediately
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Should not reach here, but TypeScript requires a return
|
|
110
|
+
throw lastError;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Find an MCP server by serverName
|
|
114
|
+
* @param serverName - The unique server name identifier
|
|
115
|
+
* @returns The MCP server document or null
|
|
116
|
+
*/
|
|
117
|
+
async function findMCPServerByServerName(serverName) {
|
|
118
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
119
|
+
return await MCPServer.findOne({ serverName }).lean();
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Find an MCP server by MongoDB ObjectId
|
|
123
|
+
* @param _id - The MongoDB ObjectId
|
|
124
|
+
* @returns The MCP server document or null
|
|
125
|
+
*/
|
|
126
|
+
async function findMCPServerByObjectId(_id) {
|
|
127
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
128
|
+
return await MCPServer.findById(_id).lean();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Find MCP servers by author
|
|
132
|
+
* @param authorId - The author's ObjectId or string
|
|
133
|
+
* @returns Array of MCP server documents
|
|
134
|
+
*/
|
|
135
|
+
async function findMCPServersByAuthor(authorId) {
|
|
136
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
137
|
+
return await MCPServer.find({ author: authorId }).sort({ updatedAt: -1 }).lean();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get a paginated list of MCP servers by IDs with filtering and search
|
|
141
|
+
* @param ids - Array of ObjectIds to include
|
|
142
|
+
* @param otherParams - Additional filter parameters (e.g., search)
|
|
143
|
+
* @param limit - Page size limit (null for no pagination)
|
|
144
|
+
* @param after - Cursor for pagination
|
|
145
|
+
* @returns Paginated list of MCP servers
|
|
146
|
+
*/
|
|
147
|
+
async function getListMCPServersByIds({ ids = [], otherParams = {}, limit = null, after = null, }) {
|
|
148
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
149
|
+
const isPaginated = limit !== null && limit !== undefined;
|
|
150
|
+
const normalizedLimit = isPaginated
|
|
151
|
+
? Math.min(Math.max(1, parseInt(String(limit)) || NORMALIZED_LIMIT_DEFAULT), 100)
|
|
152
|
+
: null;
|
|
153
|
+
// Build base query combining accessible servers with other filters
|
|
154
|
+
const baseQuery = { ...otherParams, _id: { $in: ids } };
|
|
155
|
+
// Add cursor condition
|
|
156
|
+
if (after) {
|
|
157
|
+
try {
|
|
158
|
+
const cursor = JSON.parse(Buffer.from(after, 'base64').toString('utf8'));
|
|
159
|
+
const { updatedAt, _id } = cursor;
|
|
160
|
+
const cursorCondition = {
|
|
161
|
+
$or: [
|
|
162
|
+
{ updatedAt: { $lt: new Date(updatedAt) } },
|
|
163
|
+
{ updatedAt: new Date(updatedAt), _id: { $gt: new mongoose.Types.ObjectId(_id) } },
|
|
164
|
+
],
|
|
165
|
+
};
|
|
166
|
+
// Merge cursor condition with base query
|
|
167
|
+
if (Object.keys(baseQuery).length > 0) {
|
|
168
|
+
baseQuery.$and = [{ ...baseQuery }, cursorCondition];
|
|
169
|
+
// Remove the original conditions from baseQuery to avoid duplication
|
|
170
|
+
Object.keys(baseQuery).forEach((key) => {
|
|
171
|
+
if (key !== '$and') {
|
|
172
|
+
delete baseQuery[key];
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// Invalid cursor, ignore
|
|
179
|
+
logger.warn('[getListMCPServersByIds] Invalid cursor provided', error);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (normalizedLimit === null) {
|
|
183
|
+
// No pagination - return all matching servers
|
|
184
|
+
const servers = await MCPServer.find(baseQuery).sort({ updatedAt: -1, _id: 1 }).lean();
|
|
185
|
+
return {
|
|
186
|
+
data: servers,
|
|
187
|
+
has_more: false,
|
|
188
|
+
after: null,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
// Paginated query - assign to const to help TypeScript
|
|
192
|
+
const servers = await MCPServer.find(baseQuery)
|
|
193
|
+
.sort({ updatedAt: -1, _id: 1 })
|
|
194
|
+
.limit(normalizedLimit + 1)
|
|
195
|
+
.lean();
|
|
196
|
+
const hasMore = servers.length > normalizedLimit;
|
|
197
|
+
const data = hasMore ? servers.slice(0, normalizedLimit) : servers;
|
|
198
|
+
let nextCursor = null;
|
|
199
|
+
if (hasMore && data.length > 0) {
|
|
200
|
+
const lastItem = data[data.length - 1];
|
|
201
|
+
nextCursor = Buffer.from(JSON.stringify({
|
|
202
|
+
updatedAt: lastItem.updatedAt,
|
|
203
|
+
_id: lastItem._id,
|
|
204
|
+
})).toString('base64');
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
data,
|
|
208
|
+
has_more: hasMore,
|
|
209
|
+
after: nextCursor,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Update an MCP server
|
|
214
|
+
* @param serverName - The MCP server ID
|
|
215
|
+
* @param updateData - Object containing config to update
|
|
216
|
+
* @returns The updated MCP server document or null
|
|
217
|
+
*/
|
|
218
|
+
async function updateMCPServer(serverName, updateData) {
|
|
219
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
220
|
+
return await MCPServer.findOneAndUpdate({ serverName }, { $set: updateData }, { new: true, runValidators: true }).lean();
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Delete an MCP server
|
|
224
|
+
* @param serverName - The MCP server ID
|
|
225
|
+
* @returns The deleted MCP server document or null
|
|
226
|
+
*/
|
|
227
|
+
async function deleteMCPServer(serverName) {
|
|
228
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
229
|
+
return await MCPServer.findOneAndDelete({ serverName }).lean();
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get MCP servers by their serverName strings
|
|
233
|
+
* @param names - Array of serverName strings to fetch
|
|
234
|
+
* @returns Object containing array of MCP server documents
|
|
235
|
+
*/
|
|
236
|
+
async function getListMCPServersByNames({ names = [] }) {
|
|
237
|
+
if (names.length === 0) {
|
|
238
|
+
return { data: [] };
|
|
239
|
+
}
|
|
240
|
+
const MCPServer = mongoose.models.MCPServer;
|
|
241
|
+
const servers = await MCPServer.find({ serverName: { $in: names } }).lean();
|
|
242
|
+
return { data: servers };
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
createMCPServer,
|
|
246
|
+
findMCPServerByServerName,
|
|
247
|
+
findMCPServerByObjectId,
|
|
248
|
+
findMCPServersByAuthor,
|
|
249
|
+
getListMCPServersByIds,
|
|
250
|
+
getListMCPServersByNames,
|
|
251
|
+
updateMCPServer,
|
|
252
|
+
deleteMCPServer,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export { createMCPServerMethods };
|
|
257
|
+
//# sourceMappingURL=mcpServer.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpServer.es.js","sources":["../../src/methods/mcpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var winston = require('../config/winston.cjs');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Formats a date in YYYY-MM-DD format
|
|
7
|
+
*/
|
|
8
|
+
const formatDate = (date) => {
|
|
9
|
+
return date.toISOString().split('T')[0];
|
|
10
|
+
};
|
|
11
|
+
// Factory function that takes mongoose instance and returns the methods
|
|
12
|
+
function createMemoryMethods(mongoose) {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new memory entry for a user
|
|
15
|
+
* Throws an error if a memory with the same key already exists
|
|
16
|
+
*/
|
|
17
|
+
async function createMemory({ userId, key, value, tokenCount = 0, }) {
|
|
18
|
+
try {
|
|
19
|
+
if ((key === null || key === void 0 ? void 0 : key.toLowerCase()) === 'nothing') {
|
|
20
|
+
return { ok: false };
|
|
21
|
+
}
|
|
22
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
23
|
+
const existingMemory = await MemoryEntry.findOne({ userId, key });
|
|
24
|
+
if (existingMemory) {
|
|
25
|
+
throw new Error('Memory with this key already exists');
|
|
26
|
+
}
|
|
27
|
+
await MemoryEntry.create({
|
|
28
|
+
userId,
|
|
29
|
+
key,
|
|
30
|
+
value,
|
|
31
|
+
tokenCount,
|
|
32
|
+
updated_at: new Date(),
|
|
33
|
+
});
|
|
34
|
+
return { ok: true };
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`Failed to create memory: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sets or updates a memory entry for a user
|
|
42
|
+
*/
|
|
43
|
+
async function setMemory({ userId, key, value, tokenCount = 0, }) {
|
|
44
|
+
try {
|
|
45
|
+
if ((key === null || key === void 0 ? void 0 : key.toLowerCase()) === 'nothing') {
|
|
46
|
+
return { ok: false };
|
|
47
|
+
}
|
|
48
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
49
|
+
await MemoryEntry.findOneAndUpdate({ userId, key }, {
|
|
50
|
+
value,
|
|
51
|
+
tokenCount,
|
|
52
|
+
updated_at: new Date(),
|
|
53
|
+
}, {
|
|
54
|
+
upsert: true,
|
|
55
|
+
new: true,
|
|
56
|
+
});
|
|
57
|
+
return { ok: true };
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
throw new Error(`Failed to set memory: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Deletes a specific memory entry for a user
|
|
65
|
+
*/
|
|
66
|
+
async function deleteMemory({ userId, key }) {
|
|
67
|
+
try {
|
|
68
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
69
|
+
const result = await MemoryEntry.findOneAndDelete({ userId, key });
|
|
70
|
+
return { ok: !!result };
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
throw new Error(`Failed to delete memory: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Gets all memory entries for a user
|
|
78
|
+
*/
|
|
79
|
+
async function getAllUserMemories(userId) {
|
|
80
|
+
try {
|
|
81
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
82
|
+
return (await MemoryEntry.find({ userId }).lean());
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw new Error(`Failed to get all memories: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Gets and formats all memories for a user in two different formats
|
|
90
|
+
*/
|
|
91
|
+
async function getFormattedMemories({ userId, }) {
|
|
92
|
+
try {
|
|
93
|
+
const memories = await getAllUserMemories(userId);
|
|
94
|
+
if (!memories || memories.length === 0) {
|
|
95
|
+
return { withKeys: '', withoutKeys: '', totalTokens: 0 };
|
|
96
|
+
}
|
|
97
|
+
const sortedMemories = memories.sort((a, b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime());
|
|
98
|
+
const totalTokens = sortedMemories.reduce((sum, memory) => {
|
|
99
|
+
return sum + (memory.tokenCount || 0);
|
|
100
|
+
}, 0);
|
|
101
|
+
const withKeys = sortedMemories
|
|
102
|
+
.map((memory, index) => {
|
|
103
|
+
const date = formatDate(new Date(memory.updated_at));
|
|
104
|
+
const tokenInfo = memory.tokenCount ? ` [${memory.tokenCount} tokens]` : '';
|
|
105
|
+
return `${index + 1}. [${date}]. ["key": "${memory.key}"]${tokenInfo}. ["value": "${memory.value}"]`;
|
|
106
|
+
})
|
|
107
|
+
.join('\n\n');
|
|
108
|
+
const withoutKeys = sortedMemories
|
|
109
|
+
.map((memory, index) => {
|
|
110
|
+
const date = formatDate(new Date(memory.updated_at));
|
|
111
|
+
return `${index + 1}. [${date}]. ${memory.value}`;
|
|
112
|
+
})
|
|
113
|
+
.join('\n\n');
|
|
114
|
+
return { withKeys, withoutKeys, totalTokens };
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
winston.error('Failed to get formatted memories:', error);
|
|
118
|
+
return { withKeys: '', withoutKeys: '', totalTokens: 0 };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Deletes all memory entries for a user
|
|
123
|
+
*/
|
|
124
|
+
async function deleteAllUserMemories(userId) {
|
|
125
|
+
try {
|
|
126
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
127
|
+
const result = await MemoryEntry.deleteMany({ userId });
|
|
128
|
+
return result.deletedCount;
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
throw new Error(`Failed to delete all user memories: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
setMemory,
|
|
136
|
+
createMemory,
|
|
137
|
+
deleteMemory,
|
|
138
|
+
getAllUserMemories,
|
|
139
|
+
getFormattedMemories,
|
|
140
|
+
deleteAllUserMemories,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
exports.createMemoryMethods = createMemoryMethods;
|
|
145
|
+
//# sourceMappingURL=memory.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.cjs","sources":["../../src/methods/memory.ts"],"sourcesContent":[null],"names":["logger"],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import logger from '../config/winston.es.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a date in YYYY-MM-DD format
|
|
5
|
+
*/
|
|
6
|
+
const formatDate = (date) => {
|
|
7
|
+
return date.toISOString().split('T')[0];
|
|
8
|
+
};
|
|
9
|
+
// Factory function that takes mongoose instance and returns the methods
|
|
10
|
+
function createMemoryMethods(mongoose) {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new memory entry for a user
|
|
13
|
+
* Throws an error if a memory with the same key already exists
|
|
14
|
+
*/
|
|
15
|
+
async function createMemory({ userId, key, value, tokenCount = 0, }) {
|
|
16
|
+
try {
|
|
17
|
+
if ((key === null || key === void 0 ? void 0 : key.toLowerCase()) === 'nothing') {
|
|
18
|
+
return { ok: false };
|
|
19
|
+
}
|
|
20
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
21
|
+
const existingMemory = await MemoryEntry.findOne({ userId, key });
|
|
22
|
+
if (existingMemory) {
|
|
23
|
+
throw new Error('Memory with this key already exists');
|
|
24
|
+
}
|
|
25
|
+
await MemoryEntry.create({
|
|
26
|
+
userId,
|
|
27
|
+
key,
|
|
28
|
+
value,
|
|
29
|
+
tokenCount,
|
|
30
|
+
updated_at: new Date(),
|
|
31
|
+
});
|
|
32
|
+
return { ok: true };
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw new Error(`Failed to create memory: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sets or updates a memory entry for a user
|
|
40
|
+
*/
|
|
41
|
+
async function setMemory({ userId, key, value, tokenCount = 0, }) {
|
|
42
|
+
try {
|
|
43
|
+
if ((key === null || key === void 0 ? void 0 : key.toLowerCase()) === 'nothing') {
|
|
44
|
+
return { ok: false };
|
|
45
|
+
}
|
|
46
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
47
|
+
await MemoryEntry.findOneAndUpdate({ userId, key }, {
|
|
48
|
+
value,
|
|
49
|
+
tokenCount,
|
|
50
|
+
updated_at: new Date(),
|
|
51
|
+
}, {
|
|
52
|
+
upsert: true,
|
|
53
|
+
new: true,
|
|
54
|
+
});
|
|
55
|
+
return { ok: true };
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new Error(`Failed to set memory: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Deletes a specific memory entry for a user
|
|
63
|
+
*/
|
|
64
|
+
async function deleteMemory({ userId, key }) {
|
|
65
|
+
try {
|
|
66
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
67
|
+
const result = await MemoryEntry.findOneAndDelete({ userId, key });
|
|
68
|
+
return { ok: !!result };
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new Error(`Failed to delete memory: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Gets all memory entries for a user
|
|
76
|
+
*/
|
|
77
|
+
async function getAllUserMemories(userId) {
|
|
78
|
+
try {
|
|
79
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
80
|
+
return (await MemoryEntry.find({ userId }).lean());
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
throw new Error(`Failed to get all memories: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Gets and formats all memories for a user in two different formats
|
|
88
|
+
*/
|
|
89
|
+
async function getFormattedMemories({ userId, }) {
|
|
90
|
+
try {
|
|
91
|
+
const memories = await getAllUserMemories(userId);
|
|
92
|
+
if (!memories || memories.length === 0) {
|
|
93
|
+
return { withKeys: '', withoutKeys: '', totalTokens: 0 };
|
|
94
|
+
}
|
|
95
|
+
const sortedMemories = memories.sort((a, b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime());
|
|
96
|
+
const totalTokens = sortedMemories.reduce((sum, memory) => {
|
|
97
|
+
return sum + (memory.tokenCount || 0);
|
|
98
|
+
}, 0);
|
|
99
|
+
const withKeys = sortedMemories
|
|
100
|
+
.map((memory, index) => {
|
|
101
|
+
const date = formatDate(new Date(memory.updated_at));
|
|
102
|
+
const tokenInfo = memory.tokenCount ? ` [${memory.tokenCount} tokens]` : '';
|
|
103
|
+
return `${index + 1}. [${date}]. ["key": "${memory.key}"]${tokenInfo}. ["value": "${memory.value}"]`;
|
|
104
|
+
})
|
|
105
|
+
.join('\n\n');
|
|
106
|
+
const withoutKeys = sortedMemories
|
|
107
|
+
.map((memory, index) => {
|
|
108
|
+
const date = formatDate(new Date(memory.updated_at));
|
|
109
|
+
return `${index + 1}. [${date}]. ${memory.value}`;
|
|
110
|
+
})
|
|
111
|
+
.join('\n\n');
|
|
112
|
+
return { withKeys, withoutKeys, totalTokens };
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
logger.error('Failed to get formatted memories:', error);
|
|
116
|
+
return { withKeys: '', withoutKeys: '', totalTokens: 0 };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Deletes all memory entries for a user
|
|
121
|
+
*/
|
|
122
|
+
async function deleteAllUserMemories(userId) {
|
|
123
|
+
try {
|
|
124
|
+
const MemoryEntry = mongoose.models.MemoryEntry;
|
|
125
|
+
const result = await MemoryEntry.deleteMany({ userId });
|
|
126
|
+
return result.deletedCount;
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
throw new Error(`Failed to delete all user memories: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
setMemory,
|
|
134
|
+
createMemory,
|
|
135
|
+
deleteMemory,
|
|
136
|
+
getAllUserMemories,
|
|
137
|
+
getFormattedMemories,
|
|
138
|
+
deleteAllUserMemories,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export { createMemoryMethods };
|
|
143
|
+
//# sourceMappingURL=memory.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.es.js","sources":["../../src/methods/memory.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|