@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,224 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var klona = require('klona');
|
|
4
|
+
var winston = require('winston');
|
|
5
|
+
var objectTraverse = require('../utils/object-traverse.cjs');
|
|
6
|
+
|
|
7
|
+
const SPLAT_SYMBOL = Symbol.for('splat');
|
|
8
|
+
const MESSAGE_SYMBOL = Symbol.for('message');
|
|
9
|
+
const CONSOLE_JSON_STRING_LENGTH = parseInt(process.env.CONSOLE_JSON_STRING_LENGTH || '', 10) || 255;
|
|
10
|
+
const DEBUG_MESSAGE_LENGTH = parseInt(process.env.DEBUG_MESSAGE_LENGTH || '', 10) || 150;
|
|
11
|
+
const sensitiveKeys = [
|
|
12
|
+
/^(sk-)[^\s]+/, // OpenAI API key pattern
|
|
13
|
+
/(Bearer )[^\s]+/, // Header: Bearer token pattern
|
|
14
|
+
/(api-key:? )[^\s]+/, // Header: API key pattern
|
|
15
|
+
/(key=)[^\s]+/, // URL query param: sensitive key pattern (Google)
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Determines if a given value string is sensitive and returns matching regex patterns.
|
|
19
|
+
*
|
|
20
|
+
* @param valueStr - The value string to check.
|
|
21
|
+
* @returns An array of regex patterns that match the value string.
|
|
22
|
+
*/
|
|
23
|
+
function getMatchingSensitivePatterns(valueStr) {
|
|
24
|
+
if (valueStr) {
|
|
25
|
+
// Filter and return all regex patterns that match the value string
|
|
26
|
+
return sensitiveKeys.filter((regex) => regex.test(valueStr));
|
|
27
|
+
}
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Redacts sensitive information from a console message and trims it to a specified length if provided.
|
|
32
|
+
* @param str - The console message to be redacted.
|
|
33
|
+
* @param trimLength - The optional length at which to trim the redacted message.
|
|
34
|
+
* @returns The redacted and optionally trimmed console message.
|
|
35
|
+
*/
|
|
36
|
+
function redactMessage(str, trimLength) {
|
|
37
|
+
if (!str) {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
const patterns = getMatchingSensitivePatterns(str);
|
|
41
|
+
patterns.forEach((pattern) => {
|
|
42
|
+
str = str.replace(pattern, '$1[REDACTED]');
|
|
43
|
+
});
|
|
44
|
+
return str;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Redacts sensitive information from log messages if the log level is 'error'.
|
|
48
|
+
* Note: Intentionally mutates the object.
|
|
49
|
+
* @param info - The log information object.
|
|
50
|
+
* @returns The modified log information object.
|
|
51
|
+
*/
|
|
52
|
+
const redactFormat = winston.format((info) => {
|
|
53
|
+
if (info.level === 'error') {
|
|
54
|
+
// Type guard to ensure message is a string
|
|
55
|
+
if (typeof info.message === 'string') {
|
|
56
|
+
info.message = redactMessage(info.message);
|
|
57
|
+
}
|
|
58
|
+
// Handle MESSAGE_SYMBOL with type safety
|
|
59
|
+
const symbolValue = info[MESSAGE_SYMBOL];
|
|
60
|
+
if (typeof symbolValue === 'string') {
|
|
61
|
+
info[MESSAGE_SYMBOL] = redactMessage(symbolValue);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return info;
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Truncates long strings, especially base64 image data, within log messages.
|
|
68
|
+
*
|
|
69
|
+
* @param value - The value to be inspected and potentially truncated.
|
|
70
|
+
* @param length - The length at which to truncate the value. Default: 100.
|
|
71
|
+
* @returns The truncated or original value.
|
|
72
|
+
*/
|
|
73
|
+
const truncateLongStrings = (value, length = 100) => {
|
|
74
|
+
if (typeof value === 'string') {
|
|
75
|
+
return value.length > length ? value.substring(0, length) + '... [truncated]' : value;
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* An array mapping function that truncates long strings (objects converted to JSON strings).
|
|
81
|
+
* @param item - The item to be condensed.
|
|
82
|
+
* @returns The condensed item.
|
|
83
|
+
*/
|
|
84
|
+
const condenseArray = (item) => {
|
|
85
|
+
if (typeof item === 'string') {
|
|
86
|
+
return truncateLongStrings(JSON.stringify(item));
|
|
87
|
+
}
|
|
88
|
+
else if (typeof item === 'object') {
|
|
89
|
+
return truncateLongStrings(JSON.stringify(item));
|
|
90
|
+
}
|
|
91
|
+
return item;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Formats log messages for debugging purposes.
|
|
95
|
+
* - Truncates long strings within log messages.
|
|
96
|
+
* - Condenses arrays by truncating long strings and objects as strings within array items.
|
|
97
|
+
* - Redacts sensitive information from log messages if the log level is 'error'.
|
|
98
|
+
* - Converts log information object to a formatted string.
|
|
99
|
+
*
|
|
100
|
+
* @param options - The options for formatting log messages.
|
|
101
|
+
* @returns The formatted log message.
|
|
102
|
+
*/
|
|
103
|
+
const debugTraverse = winston.format.printf(({ level, message, timestamp, ...metadata }) => {
|
|
104
|
+
if (!message) {
|
|
105
|
+
return `${timestamp} ${level}`;
|
|
106
|
+
}
|
|
107
|
+
// Type-safe version of the CJS logic: !message?.trim || typeof message !== 'string'
|
|
108
|
+
if (typeof message !== 'string' || !message.trim) {
|
|
109
|
+
return `${timestamp} ${level}: ${JSON.stringify(message)}`;
|
|
110
|
+
}
|
|
111
|
+
const msgParts = [
|
|
112
|
+
`${timestamp} ${level}: ${truncateLongStrings(message.trim(), DEBUG_MESSAGE_LENGTH)}`,
|
|
113
|
+
];
|
|
114
|
+
try {
|
|
115
|
+
if (level !== 'debug') {
|
|
116
|
+
return msgParts[0];
|
|
117
|
+
}
|
|
118
|
+
if (!metadata) {
|
|
119
|
+
return msgParts[0];
|
|
120
|
+
}
|
|
121
|
+
// Type-safe access to SPLAT_SYMBOL using bracket notation
|
|
122
|
+
const metadataRecord = metadata;
|
|
123
|
+
const splatArray = metadataRecord[SPLAT_SYMBOL];
|
|
124
|
+
const debugValue = Array.isArray(splatArray) ? splatArray[0] : undefined;
|
|
125
|
+
if (!debugValue) {
|
|
126
|
+
return msgParts[0];
|
|
127
|
+
}
|
|
128
|
+
if (debugValue && Array.isArray(debugValue)) {
|
|
129
|
+
msgParts.push(`\n${JSON.stringify(debugValue.map(condenseArray))}`);
|
|
130
|
+
return msgParts.join('');
|
|
131
|
+
}
|
|
132
|
+
if (typeof debugValue !== 'object') {
|
|
133
|
+
msgParts.push(` ${debugValue}`);
|
|
134
|
+
return msgParts.join('');
|
|
135
|
+
}
|
|
136
|
+
msgParts.push('\n{');
|
|
137
|
+
const copy = klona.klona(metadata);
|
|
138
|
+
try {
|
|
139
|
+
const traversal = objectTraverse(copy);
|
|
140
|
+
traversal.forEach(function (value) {
|
|
141
|
+
var _a;
|
|
142
|
+
if (typeof (this === null || this === void 0 ? void 0 : this.key) === 'symbol') {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
let _parentKey = '';
|
|
146
|
+
const parent = this.parent;
|
|
147
|
+
if (typeof (parent === null || parent === void 0 ? void 0 : parent.key) !== 'symbol' && (parent === null || parent === void 0 ? void 0 : parent.key) !== undefined) {
|
|
148
|
+
_parentKey = String(parent.key);
|
|
149
|
+
}
|
|
150
|
+
const parentKey = `${parent && parent.notRoot ? _parentKey + '.' : ''}`;
|
|
151
|
+
const tabs = `${parent && parent.notRoot ? ' ' : ' '}`;
|
|
152
|
+
const currentKey = (_a = this === null || this === void 0 ? void 0 : this.key) !== null && _a !== void 0 ? _a : 'unknown';
|
|
153
|
+
if (this.isLeaf && typeof value === 'string') {
|
|
154
|
+
const truncatedText = truncateLongStrings(value);
|
|
155
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: ${JSON.stringify(truncatedText)},`);
|
|
156
|
+
}
|
|
157
|
+
else if (this.notLeaf && Array.isArray(value) && value.length > 0) {
|
|
158
|
+
const currentMessage = `\n${tabs}// ${value.length} ${String(currentKey).replace(/s$/, '')}(s)`;
|
|
159
|
+
this.update(currentMessage);
|
|
160
|
+
msgParts.push(currentMessage);
|
|
161
|
+
const stringifiedArray = value.map(condenseArray);
|
|
162
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: [${stringifiedArray}],`);
|
|
163
|
+
}
|
|
164
|
+
else if (this.isLeaf && typeof value === 'function') {
|
|
165
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: function,`);
|
|
166
|
+
}
|
|
167
|
+
else if (this.isLeaf) {
|
|
168
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: ${value},`);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
const errorMessage = e instanceof Error ? e.message : 'Unknown error';
|
|
174
|
+
msgParts.push(`\n[LOGGER TRAVERSAL ERROR] ${errorMessage}`);
|
|
175
|
+
}
|
|
176
|
+
msgParts.push('\n}');
|
|
177
|
+
return msgParts.join('');
|
|
178
|
+
}
|
|
179
|
+
catch (e) {
|
|
180
|
+
const errorMessage = e instanceof Error ? e.message : 'Unknown error';
|
|
181
|
+
msgParts.push(`\n[LOGGER PARSING ERROR] ${errorMessage}`);
|
|
182
|
+
return msgParts.join('');
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
/**
|
|
186
|
+
* Truncates long string values in JSON log objects.
|
|
187
|
+
* Prevents outputting extremely long values (e.g., base64, blobs).
|
|
188
|
+
*/
|
|
189
|
+
const jsonTruncateFormat = winston.format((info) => {
|
|
190
|
+
const truncateLongStrings = (str, maxLength) => str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
|
|
191
|
+
const seen = new WeakSet();
|
|
192
|
+
const truncateObject = (obj) => {
|
|
193
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
194
|
+
return obj;
|
|
195
|
+
}
|
|
196
|
+
// Handle circular references - now with proper object type
|
|
197
|
+
if (seen.has(obj)) {
|
|
198
|
+
return '[Circular]';
|
|
199
|
+
}
|
|
200
|
+
seen.add(obj);
|
|
201
|
+
if (Array.isArray(obj)) {
|
|
202
|
+
return obj.map((item) => truncateObject(item));
|
|
203
|
+
}
|
|
204
|
+
// We know this is an object at this point
|
|
205
|
+
const objectRecord = obj;
|
|
206
|
+
const newObj = {};
|
|
207
|
+
Object.entries(objectRecord).forEach(([key, value]) => {
|
|
208
|
+
if (typeof value === 'string') {
|
|
209
|
+
newObj[key] = truncateLongStrings(value, CONSOLE_JSON_STRING_LENGTH);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
newObj[key] = truncateObject(value);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
return newObj;
|
|
216
|
+
};
|
|
217
|
+
return truncateObject(info);
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
exports.debugTraverse = debugTraverse;
|
|
221
|
+
exports.jsonTruncateFormat = jsonTruncateFormat;
|
|
222
|
+
exports.redactFormat = redactFormat;
|
|
223
|
+
exports.redactMessage = redactMessage;
|
|
224
|
+
//# sourceMappingURL=parsers.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.cjs","sources":["../../src/config/parsers.ts"],"sourcesContent":[null],"names":["klona","traverse"],"mappings":"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"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { klona } from 'klona';
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import traverse from '../utils/object-traverse.es.js';
|
|
4
|
+
|
|
5
|
+
const SPLAT_SYMBOL = Symbol.for('splat');
|
|
6
|
+
const MESSAGE_SYMBOL = Symbol.for('message');
|
|
7
|
+
const CONSOLE_JSON_STRING_LENGTH = parseInt(process.env.CONSOLE_JSON_STRING_LENGTH || '', 10) || 255;
|
|
8
|
+
const DEBUG_MESSAGE_LENGTH = parseInt(process.env.DEBUG_MESSAGE_LENGTH || '', 10) || 150;
|
|
9
|
+
const sensitiveKeys = [
|
|
10
|
+
/^(sk-)[^\s]+/, // OpenAI API key pattern
|
|
11
|
+
/(Bearer )[^\s]+/, // Header: Bearer token pattern
|
|
12
|
+
/(api-key:? )[^\s]+/, // Header: API key pattern
|
|
13
|
+
/(key=)[^\s]+/, // URL query param: sensitive key pattern (Google)
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Determines if a given value string is sensitive and returns matching regex patterns.
|
|
17
|
+
*
|
|
18
|
+
* @param valueStr - The value string to check.
|
|
19
|
+
* @returns An array of regex patterns that match the value string.
|
|
20
|
+
*/
|
|
21
|
+
function getMatchingSensitivePatterns(valueStr) {
|
|
22
|
+
if (valueStr) {
|
|
23
|
+
// Filter and return all regex patterns that match the value string
|
|
24
|
+
return sensitiveKeys.filter((regex) => regex.test(valueStr));
|
|
25
|
+
}
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Redacts sensitive information from a console message and trims it to a specified length if provided.
|
|
30
|
+
* @param str - The console message to be redacted.
|
|
31
|
+
* @param trimLength - The optional length at which to trim the redacted message.
|
|
32
|
+
* @returns The redacted and optionally trimmed console message.
|
|
33
|
+
*/
|
|
34
|
+
function redactMessage(str, trimLength) {
|
|
35
|
+
if (!str) {
|
|
36
|
+
return '';
|
|
37
|
+
}
|
|
38
|
+
const patterns = getMatchingSensitivePatterns(str);
|
|
39
|
+
patterns.forEach((pattern) => {
|
|
40
|
+
str = str.replace(pattern, '$1[REDACTED]');
|
|
41
|
+
});
|
|
42
|
+
return str;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Redacts sensitive information from log messages if the log level is 'error'.
|
|
46
|
+
* Note: Intentionally mutates the object.
|
|
47
|
+
* @param info - The log information object.
|
|
48
|
+
* @returns The modified log information object.
|
|
49
|
+
*/
|
|
50
|
+
const redactFormat = winston.format((info) => {
|
|
51
|
+
if (info.level === 'error') {
|
|
52
|
+
// Type guard to ensure message is a string
|
|
53
|
+
if (typeof info.message === 'string') {
|
|
54
|
+
info.message = redactMessage(info.message);
|
|
55
|
+
}
|
|
56
|
+
// Handle MESSAGE_SYMBOL with type safety
|
|
57
|
+
const symbolValue = info[MESSAGE_SYMBOL];
|
|
58
|
+
if (typeof symbolValue === 'string') {
|
|
59
|
+
info[MESSAGE_SYMBOL] = redactMessage(symbolValue);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return info;
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Truncates long strings, especially base64 image data, within log messages.
|
|
66
|
+
*
|
|
67
|
+
* @param value - The value to be inspected and potentially truncated.
|
|
68
|
+
* @param length - The length at which to truncate the value. Default: 100.
|
|
69
|
+
* @returns The truncated or original value.
|
|
70
|
+
*/
|
|
71
|
+
const truncateLongStrings = (value, length = 100) => {
|
|
72
|
+
if (typeof value === 'string') {
|
|
73
|
+
return value.length > length ? value.substring(0, length) + '... [truncated]' : value;
|
|
74
|
+
}
|
|
75
|
+
return value;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* An array mapping function that truncates long strings (objects converted to JSON strings).
|
|
79
|
+
* @param item - The item to be condensed.
|
|
80
|
+
* @returns The condensed item.
|
|
81
|
+
*/
|
|
82
|
+
const condenseArray = (item) => {
|
|
83
|
+
if (typeof item === 'string') {
|
|
84
|
+
return truncateLongStrings(JSON.stringify(item));
|
|
85
|
+
}
|
|
86
|
+
else if (typeof item === 'object') {
|
|
87
|
+
return truncateLongStrings(JSON.stringify(item));
|
|
88
|
+
}
|
|
89
|
+
return item;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Formats log messages for debugging purposes.
|
|
93
|
+
* - Truncates long strings within log messages.
|
|
94
|
+
* - Condenses arrays by truncating long strings and objects as strings within array items.
|
|
95
|
+
* - Redacts sensitive information from log messages if the log level is 'error'.
|
|
96
|
+
* - Converts log information object to a formatted string.
|
|
97
|
+
*
|
|
98
|
+
* @param options - The options for formatting log messages.
|
|
99
|
+
* @returns The formatted log message.
|
|
100
|
+
*/
|
|
101
|
+
const debugTraverse = winston.format.printf(({ level, message, timestamp, ...metadata }) => {
|
|
102
|
+
if (!message) {
|
|
103
|
+
return `${timestamp} ${level}`;
|
|
104
|
+
}
|
|
105
|
+
// Type-safe version of the CJS logic: !message?.trim || typeof message !== 'string'
|
|
106
|
+
if (typeof message !== 'string' || !message.trim) {
|
|
107
|
+
return `${timestamp} ${level}: ${JSON.stringify(message)}`;
|
|
108
|
+
}
|
|
109
|
+
const msgParts = [
|
|
110
|
+
`${timestamp} ${level}: ${truncateLongStrings(message.trim(), DEBUG_MESSAGE_LENGTH)}`,
|
|
111
|
+
];
|
|
112
|
+
try {
|
|
113
|
+
if (level !== 'debug') {
|
|
114
|
+
return msgParts[0];
|
|
115
|
+
}
|
|
116
|
+
if (!metadata) {
|
|
117
|
+
return msgParts[0];
|
|
118
|
+
}
|
|
119
|
+
// Type-safe access to SPLAT_SYMBOL using bracket notation
|
|
120
|
+
const metadataRecord = metadata;
|
|
121
|
+
const splatArray = metadataRecord[SPLAT_SYMBOL];
|
|
122
|
+
const debugValue = Array.isArray(splatArray) ? splatArray[0] : undefined;
|
|
123
|
+
if (!debugValue) {
|
|
124
|
+
return msgParts[0];
|
|
125
|
+
}
|
|
126
|
+
if (debugValue && Array.isArray(debugValue)) {
|
|
127
|
+
msgParts.push(`\n${JSON.stringify(debugValue.map(condenseArray))}`);
|
|
128
|
+
return msgParts.join('');
|
|
129
|
+
}
|
|
130
|
+
if (typeof debugValue !== 'object') {
|
|
131
|
+
msgParts.push(` ${debugValue}`);
|
|
132
|
+
return msgParts.join('');
|
|
133
|
+
}
|
|
134
|
+
msgParts.push('\n{');
|
|
135
|
+
const copy = klona(metadata);
|
|
136
|
+
try {
|
|
137
|
+
const traversal = traverse(copy);
|
|
138
|
+
traversal.forEach(function (value) {
|
|
139
|
+
var _a;
|
|
140
|
+
if (typeof (this === null || this === void 0 ? void 0 : this.key) === 'symbol') {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
let _parentKey = '';
|
|
144
|
+
const parent = this.parent;
|
|
145
|
+
if (typeof (parent === null || parent === void 0 ? void 0 : parent.key) !== 'symbol' && (parent === null || parent === void 0 ? void 0 : parent.key) !== undefined) {
|
|
146
|
+
_parentKey = String(parent.key);
|
|
147
|
+
}
|
|
148
|
+
const parentKey = `${parent && parent.notRoot ? _parentKey + '.' : ''}`;
|
|
149
|
+
const tabs = `${parent && parent.notRoot ? ' ' : ' '}`;
|
|
150
|
+
const currentKey = (_a = this === null || this === void 0 ? void 0 : this.key) !== null && _a !== void 0 ? _a : 'unknown';
|
|
151
|
+
if (this.isLeaf && typeof value === 'string') {
|
|
152
|
+
const truncatedText = truncateLongStrings(value);
|
|
153
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: ${JSON.stringify(truncatedText)},`);
|
|
154
|
+
}
|
|
155
|
+
else if (this.notLeaf && Array.isArray(value) && value.length > 0) {
|
|
156
|
+
const currentMessage = `\n${tabs}// ${value.length} ${String(currentKey).replace(/s$/, '')}(s)`;
|
|
157
|
+
this.update(currentMessage);
|
|
158
|
+
msgParts.push(currentMessage);
|
|
159
|
+
const stringifiedArray = value.map(condenseArray);
|
|
160
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: [${stringifiedArray}],`);
|
|
161
|
+
}
|
|
162
|
+
else if (this.isLeaf && typeof value === 'function') {
|
|
163
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: function,`);
|
|
164
|
+
}
|
|
165
|
+
else if (this.isLeaf) {
|
|
166
|
+
msgParts.push(`\n${tabs}${parentKey}${currentKey}: ${value},`);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
const errorMessage = e instanceof Error ? e.message : 'Unknown error';
|
|
172
|
+
msgParts.push(`\n[LOGGER TRAVERSAL ERROR] ${errorMessage}`);
|
|
173
|
+
}
|
|
174
|
+
msgParts.push('\n}');
|
|
175
|
+
return msgParts.join('');
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
const errorMessage = e instanceof Error ? e.message : 'Unknown error';
|
|
179
|
+
msgParts.push(`\n[LOGGER PARSING ERROR] ${errorMessage}`);
|
|
180
|
+
return msgParts.join('');
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
/**
|
|
184
|
+
* Truncates long string values in JSON log objects.
|
|
185
|
+
* Prevents outputting extremely long values (e.g., base64, blobs).
|
|
186
|
+
*/
|
|
187
|
+
const jsonTruncateFormat = winston.format((info) => {
|
|
188
|
+
const truncateLongStrings = (str, maxLength) => str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
|
|
189
|
+
const seen = new WeakSet();
|
|
190
|
+
const truncateObject = (obj) => {
|
|
191
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
192
|
+
return obj;
|
|
193
|
+
}
|
|
194
|
+
// Handle circular references - now with proper object type
|
|
195
|
+
if (seen.has(obj)) {
|
|
196
|
+
return '[Circular]';
|
|
197
|
+
}
|
|
198
|
+
seen.add(obj);
|
|
199
|
+
if (Array.isArray(obj)) {
|
|
200
|
+
return obj.map((item) => truncateObject(item));
|
|
201
|
+
}
|
|
202
|
+
// We know this is an object at this point
|
|
203
|
+
const objectRecord = obj;
|
|
204
|
+
const newObj = {};
|
|
205
|
+
Object.entries(objectRecord).forEach(([key, value]) => {
|
|
206
|
+
if (typeof value === 'string') {
|
|
207
|
+
newObj[key] = truncateLongStrings(value, CONSOLE_JSON_STRING_LENGTH);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
newObj[key] = truncateObject(value);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
return newObj;
|
|
214
|
+
};
|
|
215
|
+
return truncateObject(info);
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
export { debugTraverse, jsonTruncateFormat, redactFormat, redactMessage };
|
|
219
|
+
//# sourceMappingURL=parsers.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.es.js","sources":["../../src/config/parsers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var async_hooks = require('async_hooks');
|
|
4
|
+
|
|
5
|
+
/** Sentinel value for deliberate cross-tenant system operations */
|
|
6
|
+
const SYSTEM_TENANT_ID = '__SYSTEM__';
|
|
7
|
+
/**
|
|
8
|
+
* AsyncLocalStorage instance for propagating tenant context.
|
|
9
|
+
* Callbacks passed to `tenantStorage.run()` must be `async` for the context to propagate
|
|
10
|
+
* through Mongoose query execution. Sync callbacks returning a Mongoose thenable will lose context.
|
|
11
|
+
*/
|
|
12
|
+
const tenantStorage = new async_hooks.AsyncLocalStorage();
|
|
13
|
+
/** Returns the current tenant ID from async context, or undefined if none is set */
|
|
14
|
+
function getTenantId() {
|
|
15
|
+
var _a;
|
|
16
|
+
return (_a = tenantStorage.getStore()) === null || _a === void 0 ? void 0 : _a.tenantId;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Runs a function in an explicit cross-tenant system context (bypasses tenant filtering).
|
|
20
|
+
* The callback MUST be async — sync callbacks returning Mongoose thenables will lose context.
|
|
21
|
+
*/
|
|
22
|
+
function runAsSystem(fn) {
|
|
23
|
+
return tenantStorage.run({ tenantId: SYSTEM_TENANT_ID }, fn);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.SYSTEM_TENANT_ID = SYSTEM_TENANT_ID;
|
|
27
|
+
exports.getTenantId = getTenantId;
|
|
28
|
+
exports.runAsSystem = runAsSystem;
|
|
29
|
+
exports.tenantStorage = tenantStorage;
|
|
30
|
+
//# sourceMappingURL=tenantContext.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenantContext.cjs","sources":["../../src/config/tenantContext.ts"],"sourcesContent":[null],"names":["AsyncLocalStorage"],"mappings":";;;;AAMA;AACO,MAAM,gBAAgB,GAAG;AAEhC;;;;AAIG;AACI,MAAM,aAAa,GAAG,IAAIA,6BAAiB;AAElD;SACgB,WAAW,GAAA;;AACzB,IAAA,OAAO,MAAA,aAAa,CAAC,QAAQ,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ;AAC3C;AAEA;;;AAGG;AACG,SAAU,WAAW,CAAI,EAAoB,EAAA;AACjD,IAAA,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;AAC9D;;;;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'async_hooks';
|
|
2
|
+
|
|
3
|
+
/** Sentinel value for deliberate cross-tenant system operations */
|
|
4
|
+
const SYSTEM_TENANT_ID = '__SYSTEM__';
|
|
5
|
+
/**
|
|
6
|
+
* AsyncLocalStorage instance for propagating tenant context.
|
|
7
|
+
* Callbacks passed to `tenantStorage.run()` must be `async` for the context to propagate
|
|
8
|
+
* through Mongoose query execution. Sync callbacks returning a Mongoose thenable will lose context.
|
|
9
|
+
*/
|
|
10
|
+
const tenantStorage = new AsyncLocalStorage();
|
|
11
|
+
/** Returns the current tenant ID from async context, or undefined if none is set */
|
|
12
|
+
function getTenantId() {
|
|
13
|
+
var _a;
|
|
14
|
+
return (_a = tenantStorage.getStore()) === null || _a === void 0 ? void 0 : _a.tenantId;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Runs a function in an explicit cross-tenant system context (bypasses tenant filtering).
|
|
18
|
+
* The callback MUST be async — sync callbacks returning Mongoose thenables will lose context.
|
|
19
|
+
*/
|
|
20
|
+
function runAsSystem(fn) {
|
|
21
|
+
return tenantStorage.run({ tenantId: SYSTEM_TENANT_ID }, fn);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { SYSTEM_TENANT_ID, getTenantId, runAsSystem, tenantStorage };
|
|
25
|
+
//# sourceMappingURL=tenantContext.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenantContext.es.js","sources":["../../src/config/tenantContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAMA;AACO,MAAM,gBAAgB,GAAG;AAEhC;;;;AAIG;AACI,MAAM,aAAa,GAAG,IAAI,iBAAiB;AAElD;SACgB,WAAW,GAAA;;AACzB,IAAA,OAAO,MAAA,aAAa,CAAC,QAAQ,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ;AAC3C;AAEA;;;AAGG;AACG,SAAU,WAAW,CAAI,EAAoB,EAAA;AACjD,IAAA,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;AAC9D;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var path = require('path');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Determine the log directory in a cross-compatible way.
|
|
7
|
+
* Priority:
|
|
8
|
+
* 1. LIBRECHAT_LOG_DIR environment variable
|
|
9
|
+
* 2. If running within LibreChat monorepo (when cwd ends with /api), use api/logs
|
|
10
|
+
* 3. If api/logs exists relative to cwd, use that (for running from project root)
|
|
11
|
+
* 4. Otherwise, use logs directory relative to process.cwd()
|
|
12
|
+
*
|
|
13
|
+
* This avoids using __dirname which is not available in ESM modules
|
|
14
|
+
*/
|
|
15
|
+
const getLogDirectory = () => {
|
|
16
|
+
if (process.env.LIBRECHAT_LOG_DIR) {
|
|
17
|
+
return process.env.LIBRECHAT_LOG_DIR;
|
|
18
|
+
}
|
|
19
|
+
const cwd = process.cwd();
|
|
20
|
+
// Check if we're running from within the api directory
|
|
21
|
+
if (cwd.endsWith('/api') || cwd.endsWith('\\api')) {
|
|
22
|
+
return path.join(cwd, 'logs');
|
|
23
|
+
}
|
|
24
|
+
// Check if api/logs exists relative to current directory (running from project root)
|
|
25
|
+
// We'll just use the path and let the file system create it if needed
|
|
26
|
+
const apiLogsPath = path.join(cwd, 'api', 'logs');
|
|
27
|
+
// For LibreChat project structure, use api/logs
|
|
28
|
+
// For external consumers, they should set LIBRECHAT_LOG_DIR
|
|
29
|
+
if (cwd.includes('LibreChat')) {
|
|
30
|
+
return apiLogsPath;
|
|
31
|
+
}
|
|
32
|
+
// Default to logs directory relative to current working directory
|
|
33
|
+
return path.join(cwd, 'logs');
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.getLogDirectory = getLogDirectory;
|
|
37
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../src/config/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAEA;;;;;;;;;AASG;AACI,MAAM,eAAe,GAAG,MAAa;AAC1C,IAAA,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACjC,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACtC;AAEA,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;;AAGzB,IAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAC/B;;;AAIA,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;;;AAIjD,IAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7B,QAAA,OAAO,WAAW;IACpB;;IAGA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;AAC/B;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Determine the log directory in a cross-compatible way.
|
|
5
|
+
* Priority:
|
|
6
|
+
* 1. LIBRECHAT_LOG_DIR environment variable
|
|
7
|
+
* 2. If running within LibreChat monorepo (when cwd ends with /api), use api/logs
|
|
8
|
+
* 3. If api/logs exists relative to cwd, use that (for running from project root)
|
|
9
|
+
* 4. Otherwise, use logs directory relative to process.cwd()
|
|
10
|
+
*
|
|
11
|
+
* This avoids using __dirname which is not available in ESM modules
|
|
12
|
+
*/
|
|
13
|
+
const getLogDirectory = () => {
|
|
14
|
+
if (process.env.LIBRECHAT_LOG_DIR) {
|
|
15
|
+
return process.env.LIBRECHAT_LOG_DIR;
|
|
16
|
+
}
|
|
17
|
+
const cwd = process.cwd();
|
|
18
|
+
// Check if we're running from within the api directory
|
|
19
|
+
if (cwd.endsWith('/api') || cwd.endsWith('\\api')) {
|
|
20
|
+
return path.join(cwd, 'logs');
|
|
21
|
+
}
|
|
22
|
+
// Check if api/logs exists relative to current directory (running from project root)
|
|
23
|
+
// We'll just use the path and let the file system create it if needed
|
|
24
|
+
const apiLogsPath = path.join(cwd, 'api', 'logs');
|
|
25
|
+
// For LibreChat project structure, use api/logs
|
|
26
|
+
// For external consumers, they should set LIBRECHAT_LOG_DIR
|
|
27
|
+
if (cwd.includes('LibreChat')) {
|
|
28
|
+
return apiLogsPath;
|
|
29
|
+
}
|
|
30
|
+
// Default to logs directory relative to current working directory
|
|
31
|
+
return path.join(cwd, 'logs');
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { getLogDirectory };
|
|
35
|
+
//# sourceMappingURL=utils.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.es.js","sources":["../../src/config/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;;AASG;AACI,MAAM,eAAe,GAAG,MAAa;AAC1C,IAAA,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACjC,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACtC;AAEA,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;;AAGzB,IAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAC/B;;;AAIA,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;;;AAIjD,IAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7B,QAAA,OAAO,WAAW;IACpB;;IAGA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;AAC/B;;;;"}
|