@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
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const AIHelper_js_1 = require("./AIHelper.js");
|
|
5
|
+
const ModelStore_js_1 = require("../store/ModelStore.js");
|
|
6
|
+
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
7
|
+
(0, vitest_1.describe)('AIHelper.getAssistantResponse', () => {
|
|
8
|
+
let modelStore;
|
|
9
|
+
let configStore;
|
|
10
|
+
(0, vitest_1.beforeAll)(() => {
|
|
11
|
+
// Setup real ModelStore instance
|
|
12
|
+
modelStore = ModelStore_js_1.ModelStore.getInstance();
|
|
13
|
+
modelStore.setModels([
|
|
14
|
+
{ id: 'openai/gpt-4o', label: 'GPT-4o Mini', provider: 'openrouter' }
|
|
15
|
+
]);
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.describe)('with tool approval responses', () => {
|
|
18
|
+
(0, vitest_1.it)('should handle approved tool with successful execution', async () => {
|
|
19
|
+
// Note: getAssistantResponse accepts Pick<AgentMessage, 'role' | 'content'>[]
|
|
20
|
+
// but convertMessages internally handles toolCalls, so we cast for testing
|
|
21
|
+
const messages = [
|
|
22
|
+
{
|
|
23
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
24
|
+
content: 'Please execute the tool'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
28
|
+
content: 'I will execute the tool for you.',
|
|
29
|
+
toolCalls: [
|
|
30
|
+
{
|
|
31
|
+
id: 'tool-call-1',
|
|
32
|
+
name: 'test-tool',
|
|
33
|
+
input: { param: 'value' },
|
|
34
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
35
|
+
approved: true,
|
|
36
|
+
output: { result: 'success', data: { executed: true } }
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
42
|
+
// Verify we get a response (actual model call)
|
|
43
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
44
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
45
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
46
|
+
// The response should acknowledge the tool execution
|
|
47
|
+
// (exact text depends on model, so we just verify it's a valid response)
|
|
48
|
+
}, 30000);
|
|
49
|
+
(0, vitest_1.it)('should handle denied tool with execution-denied output', async () => {
|
|
50
|
+
const messages = [
|
|
51
|
+
{
|
|
52
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
53
|
+
content: 'Please execute the tool'
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
57
|
+
content: 'I will execute the tool for you.',
|
|
58
|
+
toolCalls: [
|
|
59
|
+
{
|
|
60
|
+
id: 'tool-call-1',
|
|
61
|
+
name: 'test-tool',
|
|
62
|
+
input: { param: 'value' },
|
|
63
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
64
|
+
approved: false,
|
|
65
|
+
reason: 'User denied execution',
|
|
66
|
+
output: {
|
|
67
|
+
type: 'execution-denied',
|
|
68
|
+
reason: 'User denied execution'
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
];
|
|
74
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
75
|
+
// Verify we get a response acknowledging the denial
|
|
76
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
77
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
78
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
79
|
+
// The model should respond to the execution-denied output
|
|
80
|
+
}, 30000);
|
|
81
|
+
(0, vitest_1.it)('should handle multiple tools with mixed approvals', async () => {
|
|
82
|
+
const messages = [
|
|
83
|
+
{
|
|
84
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
85
|
+
content: 'Execute multiple tools'
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
89
|
+
content: 'I will execute the tools.',
|
|
90
|
+
toolCalls: [
|
|
91
|
+
{
|
|
92
|
+
id: 'tool-call-1',
|
|
93
|
+
name: 'approved-tool',
|
|
94
|
+
input: { param: 'value1' },
|
|
95
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
96
|
+
approved: true,
|
|
97
|
+
output: { result: 'approved-result' }
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 'tool-call-2',
|
|
101
|
+
name: 'denied-tool',
|
|
102
|
+
input: { param: 'value2' },
|
|
103
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
104
|
+
approved: false,
|
|
105
|
+
reason: 'Not allowed',
|
|
106
|
+
output: {
|
|
107
|
+
type: 'execution-denied',
|
|
108
|
+
reason: 'Not allowed'
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
];
|
|
114
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
115
|
+
// Verify we get a response handling both tool results
|
|
116
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
117
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
118
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
119
|
+
// The model should process both approved and denied tool results
|
|
120
|
+
}, 30000);
|
|
121
|
+
(0, vitest_1.it)('should handle tool execution failure', async () => {
|
|
122
|
+
const messages = [
|
|
123
|
+
{
|
|
124
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
125
|
+
content: 'Execute the tool'
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
129
|
+
content: 'I will execute the tool.',
|
|
130
|
+
toolCalls: [
|
|
131
|
+
{
|
|
132
|
+
id: 'tool-call-1',
|
|
133
|
+
name: 'failing-tool',
|
|
134
|
+
input: { param: 'value' },
|
|
135
|
+
status: ai_agent_types_1.AgentToolCallStatus.Failed,
|
|
136
|
+
approved: true,
|
|
137
|
+
error: 'Tool execution failed: Network error'
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
143
|
+
// Verify we get a response even when tool execution failed
|
|
144
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
145
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
146
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
147
|
+
}, 30000);
|
|
148
|
+
(0, vitest_1.it)('should handle tool with execution-denied due to tool not found', async () => {
|
|
149
|
+
const messages = [
|
|
150
|
+
{
|
|
151
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
152
|
+
content: 'Execute the tool'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
156
|
+
content: 'I will execute the tool.',
|
|
157
|
+
toolCalls: [
|
|
158
|
+
{
|
|
159
|
+
id: 'tool-call-1',
|
|
160
|
+
name: 'missing-tool',
|
|
161
|
+
input: { param: 'value' },
|
|
162
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
163
|
+
approved: true,
|
|
164
|
+
output: {
|
|
165
|
+
type: 'execution-denied',
|
|
166
|
+
reason: 'Tool was not found'
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
];
|
|
172
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
173
|
+
// Verify we get a response when tool was not found
|
|
174
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
175
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
176
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
177
|
+
}, 30000);
|
|
178
|
+
(0, vitest_1.it)('should handle tool with execution-denied due to tool execution error', async () => {
|
|
179
|
+
const messages = [
|
|
180
|
+
{
|
|
181
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
182
|
+
content: 'Execute the tool'
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
186
|
+
content: 'I will execute the tool.',
|
|
187
|
+
toolCalls: [
|
|
188
|
+
{
|
|
189
|
+
id: 'tool-call-1',
|
|
190
|
+
name: 'error-tool',
|
|
191
|
+
input: { param: 'value' },
|
|
192
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
193
|
+
approved: true,
|
|
194
|
+
output: {
|
|
195
|
+
type: 'execution-denied',
|
|
196
|
+
reason: 'Tool failed with error'
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
}
|
|
201
|
+
];
|
|
202
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
203
|
+
// Verify we get a response when tool execution had an error
|
|
204
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
205
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
206
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
207
|
+
}, 30000);
|
|
208
|
+
(0, vitest_1.it)('should handle messages without tool calls', async () => {
|
|
209
|
+
const messages = [
|
|
210
|
+
{
|
|
211
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
212
|
+
content: 'Hello, how are you?'
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
216
|
+
content: 'I am doing well, thank you!'
|
|
217
|
+
}
|
|
218
|
+
];
|
|
219
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
220
|
+
// Verify we get a response for normal conversation
|
|
221
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
222
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
223
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
224
|
+
}, 30000);
|
|
225
|
+
(0, vitest_1.it)('should handle tool calls without output (pending approval)', async () => {
|
|
226
|
+
const messages = [
|
|
227
|
+
{
|
|
228
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
229
|
+
content: 'Execute the tool'
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
233
|
+
content: 'I need to execute a tool.',
|
|
234
|
+
toolCalls: [
|
|
235
|
+
{
|
|
236
|
+
id: 'tool-call-1',
|
|
237
|
+
name: 'pending-tool',
|
|
238
|
+
input: { param: 'value' },
|
|
239
|
+
status: ai_agent_types_1.AgentToolCallStatus.Pending,
|
|
240
|
+
requiresConfirmation: true,
|
|
241
|
+
approvalId: 'approval-123'
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
];
|
|
246
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
247
|
+
// Verify we get a response even when tool is pending approval
|
|
248
|
+
// (tool calls without output should not include tool-result in messages)
|
|
249
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
250
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
251
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
252
|
+
}, 30000);
|
|
253
|
+
(0, vitest_1.it)('should handle sequential tool approvals', async () => {
|
|
254
|
+
const messages = [
|
|
255
|
+
{
|
|
256
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
257
|
+
content: 'First request'
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
261
|
+
content: 'Executing first tool.',
|
|
262
|
+
toolCalls: [
|
|
263
|
+
{
|
|
264
|
+
id: 'tool-call-1',
|
|
265
|
+
name: 'first-tool',
|
|
266
|
+
input: { step: 1 },
|
|
267
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
268
|
+
approved: true,
|
|
269
|
+
output: { result: 'first-result' }
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
role: ai_agent_types_1.MessageRole.Assistant,
|
|
275
|
+
content: 'Now executing second tool.',
|
|
276
|
+
toolCalls: [
|
|
277
|
+
{
|
|
278
|
+
id: 'tool-call-2',
|
|
279
|
+
name: 'second-tool',
|
|
280
|
+
input: { step: 2 },
|
|
281
|
+
status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
|
|
282
|
+
approved: false,
|
|
283
|
+
reason: 'User denied',
|
|
284
|
+
output: {
|
|
285
|
+
type: 'execution-denied',
|
|
286
|
+
reason: 'User denied'
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
}
|
|
291
|
+
];
|
|
292
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
|
|
293
|
+
// Verify we get a response for sequential tool calls
|
|
294
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
295
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
296
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
297
|
+
// The model should process both sequential tool results
|
|
298
|
+
}, 30000);
|
|
299
|
+
(0, vitest_1.it)('should pass through options correctly', async () => {
|
|
300
|
+
const messages = [
|
|
301
|
+
{
|
|
302
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
303
|
+
content: 'Test message'
|
|
304
|
+
}
|
|
305
|
+
];
|
|
306
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages, undefined, {
|
|
307
|
+
temperature: 0.9,
|
|
308
|
+
maxOutputTokens: 1000
|
|
309
|
+
});
|
|
310
|
+
// Verify we get a response with custom options applied
|
|
311
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
312
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
313
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
314
|
+
// Options are passed through to the model
|
|
315
|
+
}, 30000);
|
|
316
|
+
(0, vitest_1.it)('should handle abort signal', async () => {
|
|
317
|
+
const messages = [
|
|
318
|
+
{
|
|
319
|
+
role: ai_agent_types_1.MessageRole.User,
|
|
320
|
+
content: 'Test message'
|
|
321
|
+
}
|
|
322
|
+
];
|
|
323
|
+
const abortController = new AbortController();
|
|
324
|
+
const signal = abortController.signal;
|
|
325
|
+
const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages, signal);
|
|
326
|
+
// Verify we get a response with abort signal passed through
|
|
327
|
+
(0, vitest_1.expect)(response).toBeDefined();
|
|
328
|
+
(0, vitest_1.expect)(typeof response).toBe('string');
|
|
329
|
+
(0, vitest_1.expect)(response.length).toBeGreaterThan(0);
|
|
330
|
+
// Signal is passed through to the model for cancellation support
|
|
331
|
+
}, 30000);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
//# sourceMappingURL=AIHelper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIHelper.test.js","sourceRoot":"","sources":["../../../src/helpers/AIHelper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigHelper.d.ts","sourceRoot":"","sources":["../../../src/helpers/ConfigHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,iCAAiC,CAAC;AAIjF,qBAAa,YAAY;IAEvB,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc;IAcjE,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAwBtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA8B1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAsC9B"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigHelper = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
6
|
+
const index_js_1 = require("../libs/logger/index.js");
|
|
7
|
+
class ConfigHelper {
|
|
8
|
+
static loadConfig(rawConfig) {
|
|
9
|
+
try {
|
|
10
|
+
// Convert to AgentAppConfig format
|
|
11
|
+
return ConfigHelper.convertToAgentAppConfig(rawConfig);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (error instanceof SyntaxError) {
|
|
15
|
+
index_js_1.logger.error(`Failed to parse config.json: ${error.message}`);
|
|
16
|
+
throw new Error(`Invalid JSON in config file: ${error.message}`);
|
|
17
|
+
}
|
|
18
|
+
index_js_1.logger.error(`Failed to load config: ${error}`);
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
static jsonSchemaToZod(schema) {
|
|
23
|
+
if (!schema)
|
|
24
|
+
return null;
|
|
25
|
+
return zod_1.z.fromJSONSchema(schema);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Converts raw JSON config to AgentAppConfig format
|
|
29
|
+
* Validates structure and converts JSON schemas to Zod schemas
|
|
30
|
+
*/
|
|
31
|
+
static convertToAgentAppConfig(rawConfig) {
|
|
32
|
+
// Convert agents, transforming JSON schemas to Zod schemas
|
|
33
|
+
const config = rawConfig.agents.reduce((config, agent) => {
|
|
34
|
+
agent.contextKeys.forEach((contextKey) => {
|
|
35
|
+
if (!config[contextKey]) {
|
|
36
|
+
config[contextKey] = [];
|
|
37
|
+
}
|
|
38
|
+
config[contextKey].push({
|
|
39
|
+
name: agent.name,
|
|
40
|
+
description: agent.description,
|
|
41
|
+
defaultModel: agent.defaultModel,
|
|
42
|
+
systemPrompt: agent.systemPrompt,
|
|
43
|
+
temperature: agent.temperature || 0.1,
|
|
44
|
+
maxTokens: agent.maxTokens || 2000,
|
|
45
|
+
tools: agent.tools.map((tool) => ConfigHelper.convertTool(tool)),
|
|
46
|
+
outputSchema: agent.outputSchema ? ConfigHelper.jsonSchemaToZod(agent.outputSchema) : undefined
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
return config;
|
|
50
|
+
}, {});
|
|
51
|
+
return config;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Converts a tool from JSON format (with JSON schemas) to AgentTool format (with Zod schemas)
|
|
55
|
+
*/
|
|
56
|
+
static convertTool(tool) {
|
|
57
|
+
var _a;
|
|
58
|
+
if (tool.type === ai_agent_types_1.AgentToolType.WEB_SEARCH) {
|
|
59
|
+
return {
|
|
60
|
+
type: ai_agent_types_1.AgentToolType.WEB_SEARCH,
|
|
61
|
+
data: {
|
|
62
|
+
title: ai_agent_types_1.AgentToolType.WEB_SEARCH,
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (tool.type === ai_agent_types_1.AgentToolType.API_TOOL) {
|
|
67
|
+
return {
|
|
68
|
+
type: ai_agent_types_1.AgentToolType.API_TOOL,
|
|
69
|
+
data: {
|
|
70
|
+
title: tool.data.title,
|
|
71
|
+
description: tool.data.description,
|
|
72
|
+
headersToPass: tool.data.headersToPass,
|
|
73
|
+
method: tool.data.method,
|
|
74
|
+
url: tool.data.url,
|
|
75
|
+
body: tool.data.body ? ConfigHelper.jsonSchemaToZod(tool.data.body) : undefined,
|
|
76
|
+
queryParams: tool.data.queryParams ? ConfigHelper.jsonSchemaToZod(tool.data.queryParams) : undefined,
|
|
77
|
+
needsApproval: (_a = tool.data.needsApproval) !== null && _a !== void 0 ? _a : false,
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
throw new Error(`Unknown tool type: ${tool.type}`);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Validates the AgentAppConfig structure
|
|
85
|
+
* @throws Error if validation fails
|
|
86
|
+
*/
|
|
87
|
+
static validateConfig(config) {
|
|
88
|
+
if (!config.agents || !Array.isArray(config.agents)) {
|
|
89
|
+
throw new Error('Config must have an "agents" array');
|
|
90
|
+
}
|
|
91
|
+
if (!config.contexts || typeof config.contexts !== 'object') {
|
|
92
|
+
throw new Error('Config must have a "contexts" object');
|
|
93
|
+
}
|
|
94
|
+
// Validate agents
|
|
95
|
+
const agentNames = new Set();
|
|
96
|
+
for (const agent of config.agents) {
|
|
97
|
+
if (!agent.name) {
|
|
98
|
+
throw new Error('All agents must have a "name" field');
|
|
99
|
+
}
|
|
100
|
+
if (agentNames.has(agent.name)) {
|
|
101
|
+
throw new Error(`Duplicate agent name found: ${agent.name}`);
|
|
102
|
+
}
|
|
103
|
+
agentNames.add(agent.name);
|
|
104
|
+
if (!agent.systemPrompt) {
|
|
105
|
+
throw new Error(`Agent "${agent.name}" must have a "systemPrompt" field`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Validate contexts reference valid agents
|
|
109
|
+
for (const [contextKey, contextAgentNames] of Object.entries(config.contexts)) {
|
|
110
|
+
if (!Array.isArray(contextAgentNames)) {
|
|
111
|
+
throw new Error(`Context "${contextKey}" must have an array of agent names`);
|
|
112
|
+
}
|
|
113
|
+
for (const agentName of contextAgentNames) {
|
|
114
|
+
if (!agentNames.has(agentName)) {
|
|
115
|
+
throw new Error(`Context "${contextKey}" references unknown agent: ${agentName}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.ConfigHelper = ConfigHelper;
|
|
122
|
+
//# sourceMappingURL=ConfigHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigHelper.js","sourceRoot":"","sources":["../../../src/helpers/ConfigHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextLimiter.d.ts","sourceRoot":"","sources":["../../../src/helpers/ContextLimiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,iCAAiC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,cAAc;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE,mBAAwB,GAChC,YAAY,EAAE;IA0EjB;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAwBpD;;;;;;;OAOG;IACH,MAAM,CAAC,aAAa,CAClB,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,EAAE,MAAM,GAChB,YAAY,EAAE;CAwClB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextLimiter = void 0;
|
|
4
|
+
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
5
|
+
/**
|
|
6
|
+
* Common practices for limiting AI context:
|
|
7
|
+
*
|
|
8
|
+
* 1. **Message Count Limiting** (implemented here)
|
|
9
|
+
* - Keep only the last N messages
|
|
10
|
+
* - Most common and simplest approach
|
|
11
|
+
* - Typical values: 20-100 messages depending on use case
|
|
12
|
+
*
|
|
13
|
+
* 2. **Token-Based Limiting** (future enhancement)
|
|
14
|
+
* - Count tokens and keep messages until hitting token budget
|
|
15
|
+
* - More accurate for cost control
|
|
16
|
+
* - Requires token counting library (e.g., tiktoken, @anthropic-ai/tokenizer)
|
|
17
|
+
*
|
|
18
|
+
* 3. **Hybrid Approach** (future enhancement)
|
|
19
|
+
* - Combine message count with token budget as safety check
|
|
20
|
+
* - Best of both worlds
|
|
21
|
+
*
|
|
22
|
+
* 4. **Sliding Window with Summary** (advanced)
|
|
23
|
+
* - Keep recent messages + summarize older ones
|
|
24
|
+
* - Requires summarization step
|
|
25
|
+
*
|
|
26
|
+
* 5. **Priority-Based** (implemented via keepFirstUserMessage)
|
|
27
|
+
* - Always keep system messages, first user message, and recent messages
|
|
28
|
+
* - Preserves important context while limiting size
|
|
29
|
+
*/
|
|
30
|
+
class ContextLimiter {
|
|
31
|
+
/**
|
|
32
|
+
* Limits the context by keeping only the most recent messages
|
|
33
|
+
* while preserving important messages (first user message, system messages).
|
|
34
|
+
*
|
|
35
|
+
* @param messages - All messages from the chat (assumed to be in chronological order)
|
|
36
|
+
* @param options - Limiting options
|
|
37
|
+
* @returns Limited array of messages in original order
|
|
38
|
+
*/
|
|
39
|
+
static limitContext(messages, options = {}) {
|
|
40
|
+
const { maxMessages = 5, keepFirstUserMessage = true, keepSystemMessages = true, } = options;
|
|
41
|
+
// If we have fewer messages than the limit, return all
|
|
42
|
+
if (messages.length <= maxMessages) {
|
|
43
|
+
return messages;
|
|
44
|
+
}
|
|
45
|
+
// Separate system messages from the rest
|
|
46
|
+
const systemMessages = [];
|
|
47
|
+
const nonSystemMessages = [];
|
|
48
|
+
messages.forEach((msg) => {
|
|
49
|
+
if (msg.role === ai_agent_types_1.MessageRole.System && keepSystemMessages) {
|
|
50
|
+
systemMessages.push(msg);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
nonSystemMessages.push(msg);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
// Find the first user message (if we need to keep it)
|
|
57
|
+
const firstUserMessageIndex = keepFirstUserMessage
|
|
58
|
+
? nonSystemMessages.findIndex((msg) => msg.role === ai_agent_types_1.MessageRole.User)
|
|
59
|
+
: -1;
|
|
60
|
+
const firstUserMessage = firstUserMessageIndex >= 0
|
|
61
|
+
? nonSystemMessages[firstUserMessageIndex]
|
|
62
|
+
: undefined;
|
|
63
|
+
// Calculate how many recent messages we can keep
|
|
64
|
+
// Reserve slots for: system messages
|
|
65
|
+
let availableSlots = maxMessages - systemMessages.length;
|
|
66
|
+
const shouldKeepFirstUser = keepFirstUserMessage && firstUserMessage !== undefined;
|
|
67
|
+
// Get the most recent messages (from the end)
|
|
68
|
+
// We'll check if first user is in recent messages after slicing
|
|
69
|
+
const recentCount = Math.max(0, availableSlots);
|
|
70
|
+
const recentStartIndex = Math.max(0, nonSystemMessages.length - recentCount);
|
|
71
|
+
const recentMessages = nonSystemMessages.slice(recentStartIndex);
|
|
72
|
+
// Check if first user message is already in recent messages
|
|
73
|
+
const firstUserInRecent = shouldKeepFirstUser && firstUserMessage
|
|
74
|
+
? recentMessages.some((msg) => msg.id === firstUserMessage.id)
|
|
75
|
+
: false;
|
|
76
|
+
// If first user is not in recent and we need to keep it, we need to make room
|
|
77
|
+
if (shouldKeepFirstUser && firstUserMessage && !firstUserInRecent) {
|
|
78
|
+
// Remove the oldest recent message to make room for first user message
|
|
79
|
+
if (recentMessages.length > 0) {
|
|
80
|
+
recentMessages.shift();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Build the set of messages to keep
|
|
84
|
+
const messagesToKeep = new Set();
|
|
85
|
+
// Add system messages
|
|
86
|
+
systemMessages.forEach((msg) => messagesToKeep.add(msg.id));
|
|
87
|
+
// Add first user message if needed
|
|
88
|
+
if (shouldKeepFirstUser && firstUserMessage) {
|
|
89
|
+
messagesToKeep.add(firstUserMessage.id);
|
|
90
|
+
}
|
|
91
|
+
// Add recent messages
|
|
92
|
+
recentMessages.forEach((msg) => messagesToKeep.add(msg.id));
|
|
93
|
+
// Reconstruct in original order
|
|
94
|
+
return messages.filter((msg) => messagesToKeep.has(msg.id));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Estimates token count for a message (rough approximation).
|
|
98
|
+
* For accurate token counting, use a proper tokenizer library.
|
|
99
|
+
*
|
|
100
|
+
* This is a simple approximation: ~4 characters per token for English text.
|
|
101
|
+
*
|
|
102
|
+
* @param message - Message to estimate tokens for
|
|
103
|
+
* @returns Estimated token count
|
|
104
|
+
*/
|
|
105
|
+
static estimateTokens(message) {
|
|
106
|
+
var _a;
|
|
107
|
+
const content = typeof message.content === 'string'
|
|
108
|
+
? message.content
|
|
109
|
+
: JSON.stringify(message.content);
|
|
110
|
+
// Rough approximation: 1 token ≈ 4 characters for English
|
|
111
|
+
// This is a simplified estimate - actual tokenization varies by model
|
|
112
|
+
const baseTokens = Math.ceil(content.length / 4);
|
|
113
|
+
// Add overhead for message structure (role, formatting, etc.)
|
|
114
|
+
const overhead = 10;
|
|
115
|
+
// Add tokens for tool calls if present
|
|
116
|
+
const toolCallTokens = ((_a = message.toolCalls) === null || _a === void 0 ? void 0 : _a.reduce((acc, toolCall) => {
|
|
117
|
+
const inputTokens = Math.ceil(JSON.stringify(toolCall.input).length / 4);
|
|
118
|
+
const outputTokens = toolCall.output
|
|
119
|
+
? Math.ceil(JSON.stringify(toolCall.output).length / 4)
|
|
120
|
+
: 0;
|
|
121
|
+
return acc + inputTokens + outputTokens + 20; // 20 for tool call structure
|
|
122
|
+
}, 0)) || 0;
|
|
123
|
+
return baseTokens + overhead + toolCallTokens;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Limits context by token count (future enhancement).
|
|
127
|
+
* Currently not implemented - requires proper tokenizer.
|
|
128
|
+
*
|
|
129
|
+
* @param messages - All messages from the chat
|
|
130
|
+
* @param maxTokens - Maximum token count
|
|
131
|
+
* @returns Limited array of messages
|
|
132
|
+
*/
|
|
133
|
+
static limitByTokens(messages, maxTokens) {
|
|
134
|
+
// This is a placeholder for token-based limiting
|
|
135
|
+
// To implement properly, you would:
|
|
136
|
+
// 1. Install a tokenizer (e.g., tiktoken for OpenAI, @anthropic-ai/tokenizer for Claude)
|
|
137
|
+
// 2. Count tokens for each message
|
|
138
|
+
// 3. Keep messages from the end until hitting the token limit
|
|
139
|
+
// 4. Always keep system messages and optionally first user message
|
|
140
|
+
let totalTokens = 0;
|
|
141
|
+
const limitedMessages = [];
|
|
142
|
+
// Keep system messages first
|
|
143
|
+
const systemMessages = messages.filter((msg) => msg.role === ai_agent_types_1.MessageRole.System);
|
|
144
|
+
systemMessages.forEach((msg) => {
|
|
145
|
+
const tokens = this.estimateTokens(msg);
|
|
146
|
+
if (totalTokens + tokens <= maxTokens) {
|
|
147
|
+
limitedMessages.push(msg);
|
|
148
|
+
totalTokens += tokens;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
// Then keep messages from the end
|
|
152
|
+
const nonSystemMessages = messages
|
|
153
|
+
.filter((msg) => msg.role !== ai_agent_types_1.MessageRole.System)
|
|
154
|
+
.reverse();
|
|
155
|
+
for (const message of nonSystemMessages) {
|
|
156
|
+
const tokens = this.estimateTokens(message);
|
|
157
|
+
if (totalTokens + tokens <= maxTokens) {
|
|
158
|
+
limitedMessages.unshift(message); // Add to beginning to maintain order
|
|
159
|
+
totalTokens += tokens;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return limitedMessages;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exports.ContextLimiter = ContextLimiter;
|
|
169
|
+
//# sourceMappingURL=ContextLimiter.js.map
|