@multiplayer-app/ai-agent-node 0.0.1 → 0.1.0-beta.2
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/cjs/config.d.ts.map +1 -0
- package/dist/cjs/config.js +48 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/{helpers → cjs/helpers}/AIHelper.d.ts +1 -1
- package/dist/cjs/helpers/AIHelper.d.ts.map +1 -0
- package/dist/cjs/helpers/AIHelper.js +330 -0
- package/dist/cjs/helpers/AIHelper.js.map +1 -0
- package/dist/cjs/helpers/AIHelper.test.d.ts.map +1 -0
- package/dist/cjs/helpers/AIHelper.test.js +334 -0
- package/dist/cjs/helpers/AIHelper.test.js.map +1 -0
- package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -0
- package/dist/cjs/helpers/ConfigHelper.js +122 -0
- package/dist/cjs/helpers/ConfigHelper.js.map +1 -0
- package/dist/cjs/helpers/ContextLimiter.d.ts.map +1 -0
- package/dist/cjs/helpers/ContextLimiter.js +169 -0
- package/dist/cjs/helpers/ContextLimiter.js.map +1 -0
- package/dist/cjs/helpers/FileHelper.d.ts.map +1 -0
- package/dist/cjs/helpers/FileHelper.js +215 -0
- package/dist/cjs/helpers/FileHelper.js.map +1 -0
- package/dist/{helpers → cjs/helpers}/SetupHelper.d.ts +1 -1
- package/dist/cjs/helpers/SetupHelper.d.ts.map +1 -0
- package/dist/cjs/helpers/SetupHelper.js +37 -0
- package/dist/cjs/helpers/SetupHelper.js.map +1 -0
- package/dist/cjs/helpers/index.d.ts +6 -0
- package/dist/cjs/helpers/index.d.ts.map +1 -0
- package/dist/cjs/helpers/index.js +22 -0
- package/dist/cjs/helpers/index.js.map +1 -0
- package/dist/cjs/index.d.ts +14 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +34 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/libs/index.d.ts +4 -0
- package/dist/cjs/libs/index.d.ts.map +1 -0
- package/dist/cjs/libs/index.js +20 -0
- package/dist/cjs/libs/index.js.map +1 -0
- package/dist/cjs/libs/kafka/config.d.ts.map +1 -0
- package/dist/cjs/libs/kafka/config.js +8 -0
- package/dist/cjs/libs/kafka/config.js.map +1 -0
- package/dist/cjs/libs/kafka/consumer.d.ts.map +1 -0
- package/dist/cjs/libs/kafka/consumer.js +133 -0
- package/dist/cjs/libs/kafka/consumer.js.map +1 -0
- package/dist/cjs/libs/kafka/index.d.ts +3 -0
- package/dist/cjs/libs/kafka/index.d.ts.map +1 -0
- package/dist/cjs/libs/kafka/index.js +19 -0
- package/dist/cjs/libs/kafka/index.js.map +1 -0
- package/dist/cjs/libs/kafka/kafka.d.ts.map +1 -0
- package/dist/cjs/libs/kafka/kafka.js +27 -0
- package/dist/cjs/libs/kafka/kafka.js.map +1 -0
- package/dist/cjs/libs/kafka/producer.d.ts.map +1 -0
- package/dist/cjs/libs/kafka/producer.js +48 -0
- package/dist/cjs/libs/kafka/producer.js.map +1 -0
- package/dist/cjs/libs/logger/config.d.ts.map +1 -0
- package/dist/cjs/libs/logger/config.js +9 -0
- package/dist/cjs/libs/logger/config.js.map +1 -0
- package/dist/{libs → cjs/libs}/logger/index.d.ts +2 -2
- package/dist/cjs/libs/logger/index.d.ts.map +1 -0
- package/dist/cjs/libs/logger/index.js +38 -0
- package/dist/cjs/libs/logger/index.js.map +1 -0
- package/dist/cjs/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
- package/dist/cjs/libs/logger/kafkajs-logger-creator.js +33 -0
- package/dist/cjs/libs/logger/kafkajs-logger-creator.js.map +1 -0
- package/dist/cjs/libs/logger/logger.d.ts.map +1 -0
- package/dist/cjs/libs/logger/logger.js +48 -0
- package/dist/cjs/libs/logger/logger.js.map +1 -0
- package/dist/cjs/libs/s3/config.d.ts.map +1 -0
- package/dist/cjs/libs/s3/config.js +10 -0
- package/dist/cjs/libs/s3/config.js.map +1 -0
- package/dist/cjs/libs/s3/index.d.ts +4 -0
- package/dist/cjs/libs/s3/index.d.ts.map +1 -0
- package/dist/cjs/libs/s3/index.js +44 -0
- package/dist/cjs/libs/s3/index.js.map +1 -0
- package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -0
- package/dist/cjs/libs/s3/s3.lib.js +224 -0
- package/dist/cjs/libs/s3/s3.lib.js.map +1 -0
- package/dist/{processors → cjs/processors}/ChatProcessor.d.ts +2 -2
- package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -0
- package/dist/cjs/processors/ChatProcessor.js +614 -0
- package/dist/cjs/processors/ChatProcessor.js.map +1 -0
- package/dist/cjs/processors/ModelsProcessor.d.ts.map +1 -0
- package/dist/cjs/processors/ModelsProcessor.js +34 -0
- package/dist/cjs/processors/ModelsProcessor.js.map +1 -0
- package/dist/cjs/processors/index.d.ts +3 -0
- package/dist/cjs/processors/index.d.ts.map +1 -0
- package/dist/cjs/processors/index.js +19 -0
- package/dist/cjs/processors/index.js.map +1 -0
- package/dist/{services → cjs/services}/AIService.d.ts +1 -1
- package/dist/cjs/services/AIService.d.ts.map +1 -0
- package/dist/cjs/services/AIService.js +200 -0
- package/dist/cjs/services/AIService.js.map +1 -0
- package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -0
- package/dist/cjs/services/InternalEventsHandler.js +60 -0
- package/dist/cjs/services/InternalEventsHandler.js.map +1 -0
- package/dist/cjs/services/KafkaService.d.ts.map +1 -0
- package/dist/cjs/services/KafkaService.js +123 -0
- package/dist/cjs/services/KafkaService.js.map +1 -0
- package/dist/cjs/services/ModelFetcher.d.ts.map +1 -0
- package/dist/cjs/services/ModelFetcher.js +251 -0
- package/dist/cjs/services/ModelFetcher.js.map +1 -0
- package/dist/cjs/services/RedisService.d.ts.map +1 -0
- package/dist/cjs/services/RedisService.js +240 -0
- package/dist/cjs/services/RedisService.js.map +1 -0
- package/dist/cjs/services/SocketService.d.ts.map +1 -0
- package/dist/cjs/services/SocketService.js +133 -0
- package/dist/cjs/services/SocketService.js.map +1 -0
- package/dist/cjs/services/index.d.ts +7 -0
- package/dist/cjs/services/index.d.ts.map +1 -0
- package/dist/cjs/services/index.js +23 -0
- package/dist/cjs/services/index.js.map +1 -0
- package/dist/cjs/store/AgentStore.d.ts.map +1 -0
- package/dist/cjs/store/AgentStore.js +102 -0
- package/dist/cjs/store/AgentStore.js.map +1 -0
- package/dist/cjs/store/ArtifactStore.d.ts.map +1 -0
- package/dist/cjs/store/ArtifactStore.js +31 -0
- package/dist/cjs/store/ArtifactStore.js.map +1 -0
- package/dist/cjs/store/ConfigStore.d.ts.map +1 -0
- package/dist/cjs/store/ConfigStore.js +218 -0
- package/dist/cjs/store/ConfigStore.js.map +1 -0
- package/dist/cjs/store/ConfigStore.test.d.ts.map +1 -0
- package/dist/cjs/store/ConfigStore.test.js +261 -0
- package/dist/cjs/store/ConfigStore.test.js.map +1 -0
- package/dist/cjs/store/ModelStore.d.ts.map +1 -0
- package/dist/cjs/store/ModelStore.js +85 -0
- package/dist/cjs/store/ModelStore.js.map +1 -0
- package/dist/cjs/store/ModelStore.test.d.ts.map +1 -0
- package/dist/cjs/store/ModelStore.test.js +392 -0
- package/dist/cjs/store/ModelStore.test.js.map +1 -0
- package/dist/cjs/store/index.d.ts +5 -0
- package/dist/cjs/store/index.d.ts.map +1 -0
- package/dist/cjs/store/index.js +21 -0
- package/dist/cjs/store/index.js.map +1 -0
- package/dist/cjs/tools/generateChartTool.d.ts.map +1 -0
- package/dist/cjs/tools/generateChartTool.js +128 -0
- package/dist/cjs/tools/generateChartTool.js.map +1 -0
- package/dist/cjs/tools/proposeFormValuesTool.d.ts.map +1 -0
- package/dist/cjs/tools/proposeFormValuesTool.js +60 -0
- package/dist/cjs/tools/proposeFormValuesTool.js.map +1 -0
- package/dist/esm/config.d.ts +35 -0
- package/dist/esm/config.d.ts.map +1 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/helpers/AIHelper.d.ts +23 -0
- package/dist/esm/helpers/AIHelper.d.ts.map +1 -0
- package/dist/{helpers → esm/helpers}/AIHelper.js +5 -5
- package/dist/esm/helpers/AIHelper.js.map +1 -0
- package/dist/esm/helpers/AIHelper.test.d.ts +2 -0
- package/dist/esm/helpers/AIHelper.test.d.ts.map +1 -0
- package/dist/{helpers → esm/helpers}/AIHelper.test.js +2 -2
- package/dist/esm/helpers/AIHelper.test.js.map +1 -0
- package/dist/esm/helpers/ConfigHelper.d.ts +20 -0
- package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -0
- package/dist/{helpers → esm/helpers}/ConfigHelper.js +1 -1
- package/dist/esm/helpers/ConfigHelper.js.map +1 -0
- package/dist/esm/helpers/ContextLimiter.d.ts +82 -0
- package/dist/esm/helpers/ContextLimiter.d.ts.map +1 -0
- package/dist/esm/helpers/ContextLimiter.js.map +1 -0
- package/dist/esm/helpers/FileHelper.d.ts +31 -0
- package/dist/esm/helpers/FileHelper.d.ts.map +1 -0
- package/dist/{helpers → esm/helpers}/FileHelper.js +3 -3
- package/dist/esm/helpers/FileHelper.js.map +1 -0
- package/dist/esm/helpers/SetupHelper.d.ts +5 -0
- package/dist/esm/helpers/SetupHelper.d.ts.map +1 -0
- package/dist/{helpers → esm/helpers}/SetupHelper.js +5 -5
- package/dist/esm/helpers/SetupHelper.js.map +1 -0
- package/dist/esm/helpers/index.d.ts +6 -0
- package/dist/esm/helpers/index.d.ts.map +1 -0
- package/dist/esm/helpers/index.js +6 -0
- package/dist/esm/helpers/index.js.map +1 -0
- package/dist/esm/index.d.ts +14 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/libs/index.d.ts +4 -0
- package/dist/esm/libs/index.d.ts.map +1 -0
- package/dist/esm/libs/index.js +4 -0
- package/dist/esm/libs/index.js.map +1 -0
- package/dist/esm/libs/kafka/config.d.ts +5 -0
- package/dist/esm/libs/kafka/config.d.ts.map +1 -0
- package/dist/esm/libs/kafka/config.js.map +1 -0
- package/dist/esm/libs/kafka/consumer.d.ts +16 -0
- package/dist/esm/libs/kafka/consumer.d.ts.map +1 -0
- package/dist/{libs → esm/libs}/kafka/consumer.js +3 -3
- package/dist/esm/libs/kafka/consumer.js.map +1 -0
- package/dist/esm/libs/kafka/index.d.ts +3 -0
- package/dist/esm/libs/kafka/index.d.ts.map +1 -0
- package/dist/esm/libs/kafka/index.js +3 -0
- package/dist/esm/libs/kafka/index.js.map +1 -0
- package/dist/esm/libs/kafka/kafka.d.ts +3 -0
- package/dist/esm/libs/kafka/kafka.d.ts.map +1 -0
- package/dist/{libs → esm/libs}/kafka/kafka.js +2 -2
- package/dist/esm/libs/kafka/kafka.js.map +1 -0
- package/dist/esm/libs/kafka/producer.d.ts +11 -0
- package/dist/esm/libs/kafka/producer.d.ts.map +1 -0
- package/dist/{libs → esm/libs}/kafka/producer.js +1 -1
- package/dist/esm/libs/kafka/producer.js.map +1 -0
- package/dist/esm/libs/logger/config.d.ts +5 -0
- package/dist/esm/libs/logger/config.d.ts.map +1 -0
- package/dist/esm/libs/logger/config.js.map +1 -0
- package/dist/esm/libs/logger/index.d.ts +10 -0
- package/dist/esm/libs/logger/index.d.ts.map +1 -0
- package/dist/{libs → esm/libs}/logger/index.js +2 -2
- package/dist/esm/libs/logger/index.js.map +1 -0
- package/dist/esm/libs/logger/kafkajs-logger-creator.d.ts +12 -0
- package/dist/esm/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
- package/dist/{libs → esm/libs}/logger/kafkajs-logger-creator.js +1 -1
- package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -0
- package/dist/esm/libs/logger/logger.d.ts +42 -0
- package/dist/esm/libs/logger/logger.d.ts.map +1 -0
- package/dist/esm/libs/logger/logger.js.map +1 -0
- package/dist/esm/libs/s3/config.d.ts +7 -0
- package/dist/esm/libs/s3/config.d.ts.map +1 -0
- package/dist/esm/libs/s3/config.js.map +1 -0
- package/dist/esm/libs/s3/index.d.ts +4 -0
- package/dist/esm/libs/s3/index.d.ts.map +1 -0
- package/dist/esm/libs/s3/index.js +4 -0
- package/dist/esm/libs/s3/index.js.map +1 -0
- package/dist/esm/libs/s3/s3.lib.d.ts +25 -0
- package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -0
- package/dist/{libs → esm/libs}/s3/s3.lib.js +2 -2
- package/dist/esm/libs/s3/s3.lib.js.map +1 -0
- package/dist/esm/processors/ChatProcessor.d.ts +66 -0
- package/dist/esm/processors/ChatProcessor.d.ts.map +1 -0
- package/dist/{processors → esm/processors}/ChatProcessor.js +7 -7
- package/dist/esm/processors/ChatProcessor.js.map +1 -0
- package/dist/esm/processors/ModelsProcessor.d.ts +11 -0
- package/dist/esm/processors/ModelsProcessor.d.ts.map +1 -0
- package/dist/{processors → esm/processors}/ModelsProcessor.js +1 -1
- package/dist/esm/processors/ModelsProcessor.js.map +1 -0
- package/dist/esm/processors/index.d.ts +3 -0
- package/dist/esm/processors/index.d.ts.map +1 -0
- package/dist/esm/processors/index.js +3 -0
- package/dist/esm/processors/index.js.map +1 -0
- package/dist/esm/services/AIService.d.ts +48 -0
- package/dist/esm/services/AIService.d.ts.map +1 -0
- package/dist/{services → esm/services}/AIService.js +2 -2
- package/dist/esm/services/AIService.js.map +1 -0
- package/dist/esm/services/InternalEventsHandler.d.ts +21 -0
- package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -0
- package/dist/{services → esm/services}/InternalEventsHandler.js +2 -2
- package/dist/esm/services/InternalEventsHandler.js.map +1 -0
- package/dist/esm/services/KafkaService.d.ts +35 -0
- package/dist/esm/services/KafkaService.d.ts.map +1 -0
- package/dist/{services → esm/services}/KafkaService.js +5 -5
- package/dist/esm/services/KafkaService.js.map +1 -0
- package/dist/esm/services/ModelFetcher.d.ts +54 -0
- package/dist/esm/services/ModelFetcher.d.ts.map +1 -0
- package/dist/{services → esm/services}/ModelFetcher.js +2 -2
- package/dist/esm/services/ModelFetcher.js.map +1 -0
- package/dist/esm/services/RedisService.d.ts +90 -0
- package/dist/esm/services/RedisService.d.ts.map +1 -0
- package/dist/{services → esm/services}/RedisService.js +2 -2
- package/dist/esm/services/RedisService.js.map +1 -0
- package/dist/esm/services/SocketService.d.ts +39 -0
- package/dist/esm/services/SocketService.d.ts.map +1 -0
- package/dist/{services → esm/services}/SocketService.js +2 -2
- package/dist/esm/services/SocketService.js.map +1 -0
- package/dist/esm/services/index.d.ts +7 -0
- package/dist/esm/services/index.d.ts.map +1 -0
- package/dist/esm/services/index.js +7 -0
- package/dist/esm/services/index.js.map +1 -0
- package/dist/esm/store/AgentStore.d.ts +48 -0
- package/dist/esm/store/AgentStore.d.ts.map +1 -0
- package/dist/{store → esm/store}/AgentStore.js +1 -1
- package/dist/esm/store/AgentStore.js.map +1 -0
- package/dist/esm/store/ArtifactStore.d.ts +13 -0
- package/dist/esm/store/ArtifactStore.d.ts.map +1 -0
- package/dist/esm/store/ArtifactStore.js.map +1 -0
- package/dist/esm/store/ConfigStore.d.ts +89 -0
- package/dist/esm/store/ConfigStore.d.ts.map +1 -0
- package/dist/{store → esm/store}/ConfigStore.js +3 -3
- package/dist/esm/store/ConfigStore.js.map +1 -0
- package/dist/esm/store/ConfigStore.test.d.ts +2 -0
- package/dist/esm/store/ConfigStore.test.d.ts.map +1 -0
- package/dist/{store → esm/store}/ConfigStore.test.js +1 -1
- package/dist/esm/store/ConfigStore.test.js.map +1 -0
- package/dist/esm/store/ModelStore.d.ts +44 -0
- package/dist/esm/store/ModelStore.d.ts.map +1 -0
- package/dist/{store → esm/store}/ModelStore.js +2 -2
- package/dist/esm/store/ModelStore.js.map +1 -0
- package/dist/esm/store/ModelStore.test.d.ts +2 -0
- package/dist/esm/store/ModelStore.test.d.ts.map +1 -0
- package/dist/{store → esm/store}/ModelStore.test.js +1 -1
- package/dist/esm/store/ModelStore.test.js.map +1 -0
- package/dist/esm/store/index.d.ts +5 -0
- package/dist/esm/store/index.d.ts.map +1 -0
- package/dist/esm/store/index.js +5 -0
- package/dist/esm/store/index.js.map +1 -0
- package/dist/esm/tools/generateChartTool.d.ts +24 -0
- package/dist/esm/tools/generateChartTool.d.ts.map +1 -0
- package/dist/esm/tools/generateChartTool.js.map +1 -0
- package/dist/esm/tools/proposeFormValuesTool.d.ts +35 -0
- package/dist/esm/tools/proposeFormValuesTool.d.ts.map +1 -0
- package/dist/esm/tools/proposeFormValuesTool.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +18 -8
- package/.env.example +0 -45
- package/config.example.json +0 -73
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/helpers/AIHelper.d.ts.map +0 -1
- package/dist/helpers/AIHelper.js.map +0 -1
- package/dist/helpers/AIHelper.test.d.ts.map +0 -1
- package/dist/helpers/AIHelper.test.js.map +0 -1
- package/dist/helpers/ConfigHelper.d.ts.map +0 -1
- package/dist/helpers/ConfigHelper.js.map +0 -1
- package/dist/helpers/ContextLimiter.d.ts.map +0 -1
- package/dist/helpers/ContextLimiter.js.map +0 -1
- package/dist/helpers/FileHelper.d.ts.map +0 -1
- package/dist/helpers/FileHelper.js.map +0 -1
- package/dist/helpers/SetupHelper.d.ts.map +0 -1
- package/dist/helpers/SetupHelper.js.map +0 -1
- package/dist/helpers/index.d.ts +0 -6
- package/dist/helpers/index.d.ts.map +0 -1
- package/dist/helpers/index.js +0 -6
- package/dist/helpers/index.js.map +0 -1
- package/dist/index.d.ts +0 -18
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/libs/index.d.ts +0 -4
- package/dist/libs/index.d.ts.map +0 -1
- package/dist/libs/index.js +0 -4
- package/dist/libs/index.js.map +0 -1
- package/dist/libs/kafka/config.d.ts.map +0 -1
- package/dist/libs/kafka/config.js.map +0 -1
- package/dist/libs/kafka/consumer.d.ts.map +0 -1
- package/dist/libs/kafka/consumer.js.map +0 -1
- package/dist/libs/kafka/index.d.ts +0 -3
- package/dist/libs/kafka/index.d.ts.map +0 -1
- package/dist/libs/kafka/index.js +0 -3
- package/dist/libs/kafka/index.js.map +0 -1
- package/dist/libs/kafka/kafka.d.ts.map +0 -1
- package/dist/libs/kafka/kafka.js.map +0 -1
- package/dist/libs/kafka/producer.d.ts.map +0 -1
- package/dist/libs/kafka/producer.js.map +0 -1
- package/dist/libs/logger/config.d.ts.map +0 -1
- package/dist/libs/logger/config.js.map +0 -1
- package/dist/libs/logger/index.d.ts.map +0 -1
- package/dist/libs/logger/index.js.map +0 -1
- package/dist/libs/logger/kafkajs-logger-creator.d.ts.map +0 -1
- package/dist/libs/logger/kafkajs-logger-creator.js.map +0 -1
- package/dist/libs/logger/logger.d.ts.map +0 -1
- package/dist/libs/logger/logger.js.map +0 -1
- package/dist/libs/s3/config.d.ts.map +0 -1
- package/dist/libs/s3/config.js.map +0 -1
- package/dist/libs/s3/index.d.ts +0 -4
- package/dist/libs/s3/index.d.ts.map +0 -1
- package/dist/libs/s3/index.js +0 -4
- package/dist/libs/s3/index.js.map +0 -1
- package/dist/libs/s3/s3.lib.d.ts.map +0 -1
- package/dist/libs/s3/s3.lib.js.map +0 -1
- package/dist/processors/ChatProcessor.d.ts.map +0 -1
- package/dist/processors/ChatProcessor.js.map +0 -1
- package/dist/processors/ModelsProcessor.d.ts.map +0 -1
- package/dist/processors/ModelsProcessor.js.map +0 -1
- package/dist/processors/index.d.ts +0 -3
- package/dist/processors/index.d.ts.map +0 -1
- package/dist/processors/index.js +0 -3
- package/dist/processors/index.js.map +0 -1
- package/dist/services/AIService.d.ts.map +0 -1
- package/dist/services/AIService.js.map +0 -1
- package/dist/services/InternalEventsHandler.d.ts.map +0 -1
- package/dist/services/InternalEventsHandler.js.map +0 -1
- package/dist/services/KafkaService.d.ts.map +0 -1
- package/dist/services/KafkaService.js.map +0 -1
- package/dist/services/ModelFetcher.d.ts.map +0 -1
- package/dist/services/ModelFetcher.js.map +0 -1
- package/dist/services/RedisService.d.ts.map +0 -1
- package/dist/services/RedisService.js.map +0 -1
- package/dist/services/SocketService.d.ts.map +0 -1
- package/dist/services/SocketService.js.map +0 -1
- package/dist/services/index.d.ts +0 -7
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -7
- package/dist/services/index.js.map +0 -1
- package/dist/store/AgentStore.d.ts.map +0 -1
- package/dist/store/AgentStore.js.map +0 -1
- package/dist/store/ArtifactStore.d.ts.map +0 -1
- package/dist/store/ArtifactStore.js.map +0 -1
- package/dist/store/ConfigStore.d.ts.map +0 -1
- package/dist/store/ConfigStore.js.map +0 -1
- package/dist/store/ConfigStore.test.d.ts.map +0 -1
- package/dist/store/ConfigStore.test.js.map +0 -1
- package/dist/store/ModelStore.d.ts.map +0 -1
- package/dist/store/ModelStore.js.map +0 -1
- package/dist/store/ModelStore.test.d.ts.map +0 -1
- package/dist/store/ModelStore.test.js.map +0 -1
- package/dist/store/index.d.ts +0 -5
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/index.js +0 -5
- package/dist/store/index.js.map +0 -1
- package/dist/tools/generateChartTool.d.ts.map +0 -1
- package/dist/tools/generateChartTool.js.map +0 -1
- package/dist/tools/proposeFormValuesTool.d.ts.map +0 -1
- package/dist/tools/proposeFormValuesTool.js.map +0 -1
- package/src/config.ts +0 -46
- package/src/helpers/AIHelper.test.ts +0 -375
- package/src/helpers/AIHelper.ts +0 -353
- package/src/helpers/ConfigHelper.ts +0 -130
- package/src/helpers/ContextLimiter.ts +0 -228
- package/src/helpers/FileHelper.ts +0 -197
- package/src/helpers/SetupHelper.ts +0 -35
- package/src/helpers/index.ts +0 -5
- package/src/index.ts +0 -18
- package/src/libs/index.ts +0 -3
- package/src/libs/kafka/config.ts +0 -4
- package/src/libs/kafka/consumer.ts +0 -161
- package/src/libs/kafka/index.ts +0 -2
- package/src/libs/kafka/kafka.ts +0 -27
- package/src/libs/kafka/producer.ts +0 -48
- package/src/libs/logger/config.ts +0 -4
- package/src/libs/logger/index.ts +0 -21
- package/src/libs/logger/kafkajs-logger-creator.ts +0 -28
- package/src/libs/logger/logger.ts +0 -60
- package/src/libs/s3/config.ts +0 -7
- package/src/libs/s3/index.ts +0 -3
- package/src/libs/s3/s3.lib.ts +0 -284
- package/src/processors/ChatProcessor.ts +0 -713
- package/src/processors/ModelsProcessor.ts +0 -34
- package/src/processors/index.ts +0 -2
- package/src/services/AIService.ts +0 -241
- package/src/services/InternalEventsHandler.ts +0 -61
- package/src/services/KafkaService.ts +0 -142
- package/src/services/ModelFetcher.ts +0 -286
- package/src/services/RedisService.ts +0 -285
- package/src/services/SocketService.ts +0 -153
- package/src/services/index.ts +0 -6
- package/src/store/AgentStore.ts +0 -138
- package/src/store/ArtifactStore.ts +0 -29
- package/src/store/ConfigStore.test.ts +0 -314
- package/src/store/ConfigStore.ts +0 -239
- package/src/store/ModelStore.test.ts +0 -473
- package/src/store/ModelStore.ts +0 -93
- package/src/store/index.ts +0 -4
- package/src/tools/generateChartTool.ts +0 -131
- package/src/tools/proposeFormValuesTool.ts +0 -67
- package/tsconfig.json +0 -24
- /package/dist/{config.d.ts → cjs/config.d.ts} +0 -0
- /package/dist/{helpers → cjs/helpers}/AIHelper.test.d.ts +0 -0
- /package/dist/{helpers → cjs/helpers}/ConfigHelper.d.ts +0 -0
- /package/dist/{helpers → cjs/helpers}/ContextLimiter.d.ts +0 -0
- /package/dist/{helpers → cjs/helpers}/FileHelper.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/kafka/config.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/kafka/consumer.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/kafka/kafka.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/kafka/producer.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/logger/config.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/logger/kafkajs-logger-creator.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/logger/logger.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/s3/config.d.ts +0 -0
- /package/dist/{libs → cjs/libs}/s3/s3.lib.d.ts +0 -0
- /package/dist/{processors → cjs/processors}/ModelsProcessor.d.ts +0 -0
- /package/dist/{services → cjs/services}/InternalEventsHandler.d.ts +0 -0
- /package/dist/{services → cjs/services}/KafkaService.d.ts +0 -0
- /package/dist/{services → cjs/services}/ModelFetcher.d.ts +0 -0
- /package/dist/{services → cjs/services}/RedisService.d.ts +0 -0
- /package/dist/{services → cjs/services}/SocketService.d.ts +0 -0
- /package/dist/{store → cjs/store}/AgentStore.d.ts +0 -0
- /package/dist/{store → cjs/store}/ArtifactStore.d.ts +0 -0
- /package/dist/{store → cjs/store}/ConfigStore.d.ts +0 -0
- /package/dist/{store → cjs/store}/ConfigStore.test.d.ts +0 -0
- /package/dist/{store → cjs/store}/ModelStore.d.ts +0 -0
- /package/dist/{store → cjs/store}/ModelStore.test.d.ts +0 -0
- /package/dist/{tools → cjs/tools}/generateChartTool.d.ts +0 -0
- /package/dist/{tools → cjs/tools}/proposeFormValuesTool.d.ts +0 -0
- /package/dist/{config.js → esm/config.js} +0 -0
- /package/dist/{helpers → esm/helpers}/ContextLimiter.js +0 -0
- /package/dist/{libs → esm/libs}/kafka/config.js +0 -0
- /package/dist/{libs → esm/libs}/logger/config.js +0 -0
- /package/dist/{libs → esm/libs}/logger/logger.js +0 -0
- /package/dist/{libs → esm/libs}/s3/config.js +0 -0
- /package/dist/{store → esm/store}/ArtifactStore.js +0 -0
- /package/dist/{tools → esm/tools}/generateChartTool.js +0 -0
- /package/dist/{tools → esm/tools}/proposeFormValuesTool.js +0 -0
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import type { ModelOption } from '@multiplayer-app/ai-agent-types';
|
|
2
|
-
import { config as appConfig } from '../config';
|
|
3
|
-
import { logger } from '../libs/logger';
|
|
4
|
-
|
|
5
|
-
export interface ModelFetcherConfig {
|
|
6
|
-
openaiApiKey?: string;
|
|
7
|
-
anthropicApiKey?: string;
|
|
8
|
-
googleApiKey?: string;
|
|
9
|
-
openrouterApiKey?: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface FetchedModel {
|
|
13
|
-
id: string;
|
|
14
|
-
provider: string;
|
|
15
|
-
label?: string;
|
|
16
|
-
description?: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export class ModelFetcher {
|
|
20
|
-
private config: ModelFetcherConfig;
|
|
21
|
-
|
|
22
|
-
constructor(config: ModelFetcherConfig = {}) {
|
|
23
|
-
this.config = {
|
|
24
|
-
openaiApiKey: config.openaiApiKey || appConfig.ai.openaiApiKey,
|
|
25
|
-
anthropicApiKey: config.anthropicApiKey || appConfig.ai.anthropicApiKey,
|
|
26
|
-
googleApiKey: config.googleApiKey || appConfig.ai.googleApiKey,
|
|
27
|
-
openrouterApiKey: config.openrouterApiKey || appConfig.ai.openrouterApiKey
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Analyze environment and fetch models for all available providers
|
|
33
|
-
*/
|
|
34
|
-
async fetchAllModels(): Promise<ModelOption[]> {
|
|
35
|
-
logger.info('Fetching available AI models...');
|
|
36
|
-
const allModels: ModelOption[] = [];
|
|
37
|
-
const providers = this.detectAvailableProviders();
|
|
38
|
-
|
|
39
|
-
for (const provider of providers) {
|
|
40
|
-
try {
|
|
41
|
-
const models = await this.fetchModelsForProvider(provider);
|
|
42
|
-
allModels.push(...models);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
logger.warn(`Failed to fetch models for provider ${provider}:`, error instanceof Error ? error.message : 'Unknown error');
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return allModels;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Detect which providers are available based on API keys
|
|
53
|
-
*/
|
|
54
|
-
private detectAvailableProviders(): string[] {
|
|
55
|
-
const providers: string[] = [];
|
|
56
|
-
|
|
57
|
-
if (this.config.openrouterApiKey) {
|
|
58
|
-
providers.push('openrouter');
|
|
59
|
-
return providers;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (this.config.openaiApiKey) {
|
|
63
|
-
providers.push('openai');
|
|
64
|
-
}
|
|
65
|
-
if (this.config.anthropicApiKey) {
|
|
66
|
-
providers.push('anthropic');
|
|
67
|
-
}
|
|
68
|
-
if (this.config.googleApiKey) {
|
|
69
|
-
providers.push('google');
|
|
70
|
-
}
|
|
71
|
-
return providers;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Fetch models for a specific provider
|
|
76
|
-
*/
|
|
77
|
-
async fetchModelsForProvider(provider: string): Promise<ModelOption[]> {
|
|
78
|
-
switch (provider) {
|
|
79
|
-
case 'openai':
|
|
80
|
-
return this.fetchOpenAIModels();
|
|
81
|
-
case 'anthropic':
|
|
82
|
-
return this.fetchAnthropicModels();
|
|
83
|
-
case 'google':
|
|
84
|
-
return this.fetchGoogleModels();
|
|
85
|
-
case 'openrouter':
|
|
86
|
-
return this.fetchOpenRouterModels();
|
|
87
|
-
default:
|
|
88
|
-
throw new Error(`Unsupported provider: ${provider}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Fetch models from OpenAI
|
|
94
|
-
*/
|
|
95
|
-
private async fetchOpenAIModels(): Promise<ModelOption[]> {
|
|
96
|
-
if (!this.config.openaiApiKey) {
|
|
97
|
-
return [];
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
try {
|
|
101
|
-
const response = await fetch('https://api.openai.com/v1/models', {
|
|
102
|
-
headers: {
|
|
103
|
-
'Authorization': `Bearer ${this.config.openaiApiKey}`,
|
|
104
|
-
'Content-Type': 'application/json'
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
if (!response.ok) {
|
|
109
|
-
throw new Error(`OpenAI API returned ${response.status}: ${response.statusText}`);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const data = await response.json();
|
|
113
|
-
const models: ModelOption[] = (data.data || [])
|
|
114
|
-
.filter((model: any) => model.id.startsWith('gpt-') || model.id.startsWith('o1'))
|
|
115
|
-
.map((model: any) => ({
|
|
116
|
-
id: model.id,
|
|
117
|
-
provider: 'openai',
|
|
118
|
-
label: this.formatModelLabel(model.id),
|
|
119
|
-
description: this.getModelDescription(model.id, 'openai')
|
|
120
|
-
}));
|
|
121
|
-
|
|
122
|
-
return models;
|
|
123
|
-
} catch (error) {
|
|
124
|
-
logger.error('Failed to fetch OpenAI models:', error);
|
|
125
|
-
return [];
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Fetch models from Anthropic
|
|
131
|
-
*/
|
|
132
|
-
private async fetchAnthropicModels(): Promise<ModelOption[]> {
|
|
133
|
-
if (!this.config.anthropicApiKey) {
|
|
134
|
-
return [];
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
try {
|
|
138
|
-
const response = await fetch('https://api.anthropic.com/v1/models', {
|
|
139
|
-
headers: {
|
|
140
|
-
'x-api-key': this.config.anthropicApiKey,
|
|
141
|
-
'anthropic-version': '2023-06-01',
|
|
142
|
-
'Content-Type': 'application/json'
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
if (!response.ok) {
|
|
147
|
-
throw new Error(`Anthropic API returned ${response.status}: ${response.statusText}`);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const data = await response.json();
|
|
151
|
-
const models: ModelOption[] = (data.data || [])
|
|
152
|
-
.filter((model: any) => model.id && model.id.startsWith('claude-'))
|
|
153
|
-
.map((model: any) => ({
|
|
154
|
-
id: model.id,
|
|
155
|
-
provider: 'anthropic',
|
|
156
|
-
label: this.formatModelLabel(model.id),
|
|
157
|
-
description: this.getModelDescription(model.id, 'anthropic')
|
|
158
|
-
}));
|
|
159
|
-
|
|
160
|
-
return models;
|
|
161
|
-
} catch (error) {
|
|
162
|
-
logger.error('Failed to fetch Anthropic models:', error);
|
|
163
|
-
return [];
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Fetch models from Google
|
|
169
|
-
*/
|
|
170
|
-
private async fetchGoogleModels(): Promise<ModelOption[]> {
|
|
171
|
-
if (!this.config.googleApiKey) {
|
|
172
|
-
return [];
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
try {
|
|
176
|
-
// Google SDK doesn't have a models.list() endpoint
|
|
177
|
-
// Return known Google models
|
|
178
|
-
return [
|
|
179
|
-
{
|
|
180
|
-
id: 'gemini-2.0-flash-exp',
|
|
181
|
-
provider: 'google',
|
|
182
|
-
label: 'Gemini 2.0 Flash',
|
|
183
|
-
description: 'Google\'s latest fast and efficient model'
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
id: 'gemini-1.5-pro',
|
|
187
|
-
provider: 'google',
|
|
188
|
-
label: 'Gemini 1.5 Pro',
|
|
189
|
-
description: 'Google\'s advanced multimodal model'
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
id: 'gemini-1.5-flash',
|
|
193
|
-
provider: 'google',
|
|
194
|
-
label: 'Gemini 1.5 Flash',
|
|
195
|
-
description: 'Fast and efficient Gemini model'
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
id: 'gemini-pro',
|
|
199
|
-
provider: 'google',
|
|
200
|
-
label: 'Gemini Pro',
|
|
201
|
-
description: 'Google Gemini Pro model'
|
|
202
|
-
}
|
|
203
|
-
];
|
|
204
|
-
} catch (error) {
|
|
205
|
-
logger.error('Failed to fetch Google models:', error);
|
|
206
|
-
return [];
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Fetch models from OpenRouter
|
|
212
|
-
*/
|
|
213
|
-
private async fetchOpenRouterModels(): Promise<ModelOption[]> {
|
|
214
|
-
if (!this.config.openrouterApiKey) {
|
|
215
|
-
return [];
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
try {
|
|
219
|
-
const response = await fetch('https://openrouter.ai/api/v1/models?supported_parameters=tools', {
|
|
220
|
-
headers: {
|
|
221
|
-
'Authorization': `Bearer ${this.config.openrouterApiKey}`,
|
|
222
|
-
'Content-Type': 'application/json'
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
if (!response.ok) {
|
|
227
|
-
throw new Error(`OpenRouter API returned ${response.status}: ${response.statusText}`);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
const data = await response.json();
|
|
231
|
-
const models: ModelOption[] = (data.data || []).map((model: any) => ({
|
|
232
|
-
id: model.id,
|
|
233
|
-
provider: model.id.split('/')[0],
|
|
234
|
-
label: model.name || this.formatModelLabel(model.id),
|
|
235
|
-
description: model.description || `OpenRouter model: ${model.id}`
|
|
236
|
-
}))
|
|
237
|
-
.filter((model: ModelOption) =>
|
|
238
|
-
model.provider === 'openai' ||
|
|
239
|
-
model.provider === 'anthropic' ||
|
|
240
|
-
model.provider === 'google')
|
|
241
|
-
.map((model: ModelOption) => ({
|
|
242
|
-
...model,
|
|
243
|
-
provider: 'openrouter'
|
|
244
|
-
}));
|
|
245
|
-
return models;
|
|
246
|
-
} catch (error) {
|
|
247
|
-
logger.error('Failed to fetch OpenRouter models:', error);
|
|
248
|
-
return [];
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Format model ID into a readable label
|
|
254
|
-
*/
|
|
255
|
-
private formatModelLabel(modelId: string): string {
|
|
256
|
-
// Convert "gpt-4o" to "GPT-4o"
|
|
257
|
-
return modelId
|
|
258
|
-
.split('-')
|
|
259
|
-
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
260
|
-
.join(' ');
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
/**
|
|
264
|
-
* Get description for known models
|
|
265
|
-
*/
|
|
266
|
-
private getModelDescription(modelId: string, provider: string): string | undefined {
|
|
267
|
-
const descriptions: Record<string, string> = {
|
|
268
|
-
// OpenAI models
|
|
269
|
-
'gpt-4o': 'OpenAI\'s most advanced multimodal model',
|
|
270
|
-
'gpt-4o-mini': 'Faster and more affordable GPT-4o variant',
|
|
271
|
-
'gpt-4-turbo': 'High-performance GPT-4 variant',
|
|
272
|
-
'gpt-4': 'OpenAI GPT-4 model',
|
|
273
|
-
'gpt-3.5-turbo': 'Fast and efficient GPT-3.5 model',
|
|
274
|
-
'o1-preview': 'OpenAI O1 reasoning model',
|
|
275
|
-
'o1-mini': 'OpenAI O1 Mini reasoning model',
|
|
276
|
-
// Anthropic models
|
|
277
|
-
'claude-3-5-sonnet-20241022': 'Anthropic\'s latest and most capable model',
|
|
278
|
-
'claude-3.5-sonnet-20241022': 'Anthropic\'s latest and most capable model',
|
|
279
|
-
'claude-3-opus-20240229': 'Anthropic\'s most powerful model',
|
|
280
|
-
'claude-3-sonnet-20240229': 'Balanced performance and speed',
|
|
281
|
-
'claude-3-haiku-20240307': 'Fastest and most affordable Claude model'
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
return descriptions[modelId] || `${provider} model: ${modelId}`;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import { createClient, RedisClientType } from 'redis';
|
|
2
|
-
import { config, getRedisUrl } from '../config';
|
|
3
|
-
import { logger } from '../libs/logger';
|
|
4
|
-
|
|
5
|
-
export interface RedisConfig {
|
|
6
|
-
url?: string;
|
|
7
|
-
host?: string;
|
|
8
|
-
port?: number;
|
|
9
|
-
password?: string;
|
|
10
|
-
database?: number;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
type RedisPubSubClient = ReturnType<typeof createClient>;
|
|
14
|
-
type RedisPubSubPair = { pubClient: RedisPubSubClient; subClient: RedisPubSubClient };
|
|
15
|
-
|
|
16
|
-
export class RedisService {
|
|
17
|
-
private client: RedisClientType | null = null;
|
|
18
|
-
private pubSubClients: Map<string, RedisPubSubPair> = new Map();
|
|
19
|
-
private isConnected: boolean = false;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Initialize Redis client connection
|
|
23
|
-
*/
|
|
24
|
-
async initialize(redisConfigOverride?: RedisConfig): Promise<void> {
|
|
25
|
-
if (this.client && this.isConnected) {
|
|
26
|
-
logger.info('Redis client already initialized');
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const redisUrl = redisConfigOverride?.url ||
|
|
31
|
-
config.redis.url ||
|
|
32
|
-
`redis://${redisConfigOverride?.host || config.redis.host}:${redisConfigOverride?.port || config.redis.port}`;
|
|
33
|
-
|
|
34
|
-
const redisConfig: any = {
|
|
35
|
-
url: redisUrl
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
if (redisConfigOverride?.password || config.redis.password) {
|
|
39
|
-
redisConfig.password = redisConfigOverride?.password || config.redis.password;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (redisConfigOverride?.database !== undefined || config.redis.database !== undefined) {
|
|
43
|
-
redisConfig.database = redisConfigOverride?.database ?? config.redis.database ?? 0;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
this.client = createClient(redisConfig);
|
|
47
|
-
|
|
48
|
-
this.client.on('error', (err) => {
|
|
49
|
-
logger.error('Redis Client Error:', err);
|
|
50
|
-
this.isConnected = false;
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
this.client.on('connect', () => {
|
|
54
|
-
logger.info('Redis Client connecting...');
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
this.client.on('ready', () => {
|
|
58
|
-
logger.info('Redis Client ready');
|
|
59
|
-
this.isConnected = true;
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
this.client.on('reconnecting', () => {
|
|
63
|
-
logger.info('Redis Client reconnecting...');
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
this.client.on('end', () => {
|
|
67
|
-
logger.info('Redis Client connection ended');
|
|
68
|
-
this.isConnected = false;
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
try {
|
|
72
|
-
await this.client.connect();
|
|
73
|
-
logger.info('Redis client connected successfully');
|
|
74
|
-
} catch (error) {
|
|
75
|
-
logger.error('Failed to connect to Redis:', error);
|
|
76
|
-
throw error;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Get a value by key
|
|
82
|
-
*/
|
|
83
|
-
async get(key: string): Promise<string | null> {
|
|
84
|
-
if (!this.client || !this.isConnected) {
|
|
85
|
-
throw new Error('Redis client not initialized or not connected');
|
|
86
|
-
}
|
|
87
|
-
return await this.client.get(key);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Set a key-value pair
|
|
92
|
-
*/
|
|
93
|
-
async set(key: string, value: string, options?: { EX?: number; PX?: number }): Promise<void> {
|
|
94
|
-
if (!this.client || !this.isConnected) {
|
|
95
|
-
throw new Error('Redis client not initialized or not connected');
|
|
96
|
-
}
|
|
97
|
-
await this.client.set(key, value, options);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Delete a key
|
|
102
|
-
*/
|
|
103
|
-
async del(key: string): Promise<number> {
|
|
104
|
-
if (!this.client || !this.isConnected) {
|
|
105
|
-
throw new Error('Redis client not initialized or not connected');
|
|
106
|
-
}
|
|
107
|
-
return await this.client.del(key);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Check if a key exists
|
|
112
|
-
*/
|
|
113
|
-
async exists(key: string): Promise<number> {
|
|
114
|
-
if (!this.client || !this.isConnected) {
|
|
115
|
-
throw new Error('Redis client not initialized or not connected');
|
|
116
|
-
}
|
|
117
|
-
return await this.client.exists(key);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Set expiration on a key
|
|
122
|
-
* @returns true if the timeout was set, false if the key doesn't exist
|
|
123
|
-
*/
|
|
124
|
-
async expire(key: string, seconds: number): Promise<boolean> {
|
|
125
|
-
if (!this.client || !this.isConnected) {
|
|
126
|
-
throw new Error('Redis client not initialized or not connected');
|
|
127
|
-
}
|
|
128
|
-
return (await this.client.expire(key, seconds)) === 1;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Get TTL (time to live) of a key
|
|
133
|
-
*/
|
|
134
|
-
async ttl(key: string): Promise<number> {
|
|
135
|
-
if (!this.client || !this.isConnected) {
|
|
136
|
-
throw new Error('Redis client not initialized or not connected');
|
|
137
|
-
}
|
|
138
|
-
return await this.client.ttl(key);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Increment a key's value
|
|
143
|
-
*/
|
|
144
|
-
async incr(key: string): Promise<number> {
|
|
145
|
-
if (!this.client || !this.isConnected) {
|
|
146
|
-
throw new Error('Redis client not initialized or not connected');
|
|
147
|
-
}
|
|
148
|
-
return await this.client.incr(key);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Decrement a key's value
|
|
153
|
-
*/
|
|
154
|
-
async decr(key: string): Promise<number> {
|
|
155
|
-
if (!this.client || !this.isConnected) {
|
|
156
|
-
throw new Error('Redis client not initialized or not connected');
|
|
157
|
-
}
|
|
158
|
-
return await this.client.decr(key);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Get multiple keys
|
|
163
|
-
*/
|
|
164
|
-
async mGet(keys: string[]): Promise<(string | null)[]> {
|
|
165
|
-
if (!this.client || !this.isConnected) {
|
|
166
|
-
throw new Error('Redis client not initialized or not connected');
|
|
167
|
-
}
|
|
168
|
-
return await this.client.mGet(keys);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Set multiple key-value pairs
|
|
173
|
-
*/
|
|
174
|
-
async mSet(keyValuePairs: Record<string, string>): Promise<void> {
|
|
175
|
-
if (!this.client || !this.isConnected) {
|
|
176
|
-
throw new Error('Redis client not initialized or not connected');
|
|
177
|
-
}
|
|
178
|
-
await this.client.mSet(keyValuePairs);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Get all keys matching a pattern
|
|
183
|
-
*/
|
|
184
|
-
async keys(pattern: string): Promise<string[]> {
|
|
185
|
-
if (!this.client || !this.isConnected) {
|
|
186
|
-
throw new Error('Redis client not initialized or not connected');
|
|
187
|
-
}
|
|
188
|
-
return await this.client.keys(pattern);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Get the Redis client instance
|
|
193
|
-
*/
|
|
194
|
-
getClient(): RedisClientType | null {
|
|
195
|
-
return this.client;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Get or create pub/sub clients for Socket.IO adapter
|
|
200
|
-
* These are separate clients needed for the Redis adapter
|
|
201
|
-
*/
|
|
202
|
-
async getPubSubClients(name: string = 'default'): Promise<RedisPubSubPair> {
|
|
203
|
-
const existingPair = this.pubSubClients.get(name);
|
|
204
|
-
if (existingPair) {
|
|
205
|
-
return existingPair;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const redisUrl = getRedisUrl();
|
|
209
|
-
const redisConfig: any = {
|
|
210
|
-
url: redisUrl
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
if (config.redis.password) {
|
|
214
|
-
redisConfig.password = config.redis.password;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
if (config.redis.database !== undefined) {
|
|
218
|
-
redisConfig.database = config.redis.database;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// Create pub client
|
|
222
|
-
const pubClient = createClient(redisConfig);
|
|
223
|
-
|
|
224
|
-
// Create sub client as duplicate of pub client
|
|
225
|
-
const subClient = pubClient.duplicate();
|
|
226
|
-
|
|
227
|
-
// Set up error handlers
|
|
228
|
-
pubClient.on('error', (err) => {
|
|
229
|
-
logger.error('Redis Pub Client Error:', err);
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
subClient.on('error', (err) => {
|
|
233
|
-
logger.error('Redis Sub Client Error:', err);
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
// Connect both clients
|
|
237
|
-
try {
|
|
238
|
-
await Promise.all([pubClient.connect(), subClient.connect()]);
|
|
239
|
-
logger.info(`Redis pub/sub clients connected successfully for ${name}`);
|
|
240
|
-
const pair = { pubClient, subClient };
|
|
241
|
-
this.pubSubClients.set(name, pair);
|
|
242
|
-
return pair;
|
|
243
|
-
} catch (error) {
|
|
244
|
-
logger.error(`Failed to connect Redis pub/sub clients for ${name}:`, error);
|
|
245
|
-
throw error;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* Check if the client is connected
|
|
251
|
-
*/
|
|
252
|
-
isClientConnected(): boolean {
|
|
253
|
-
return this.isConnected;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Disconnect from Redis
|
|
258
|
-
*/
|
|
259
|
-
async disconnect(): Promise<void> {
|
|
260
|
-
const disconnectPromises: Promise<void>[] = [];
|
|
261
|
-
|
|
262
|
-
if (this.client) {
|
|
263
|
-
disconnectPromises.push(this.client.quit().then(() => {
|
|
264
|
-
this.client = null;
|
|
265
|
-
}));
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
this.pubSubClients.forEach(({ pubClient, subClient }) => {
|
|
269
|
-
disconnectPromises.push(
|
|
270
|
-
pubClient.quit().then(() => undefined).catch(() => undefined)
|
|
271
|
-
);
|
|
272
|
-
disconnectPromises.push(
|
|
273
|
-
subClient.quit().then(() => undefined).catch(() => undefined)
|
|
274
|
-
);
|
|
275
|
-
});
|
|
276
|
-
this.pubSubClients.clear();
|
|
277
|
-
|
|
278
|
-
await Promise.all(disconnectPromises);
|
|
279
|
-
this.isConnected = false;
|
|
280
|
-
logger.info('Redis clients disconnected');
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
// Singleton instance
|
|
284
|
-
export const redisService = new RedisService();
|
|
285
|
-
|