@multiplayer-app/ai-agent-node 0.1.0-beta.3 → 0.1.0-beta.30
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.cjs +98 -0
- package/dist/cjs/config.cjs.map +1 -0
- package/dist/cjs/config.d.ts +56 -23
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/helpers/AIHelper.cjs +386 -0
- package/dist/cjs/helpers/AIHelper.cjs.map +1 -0
- package/dist/cjs/helpers/AIHelper.d.ts +20 -13
- package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
- package/dist/cjs/helpers/{AIHelper.test.js → AIHelper.test.cjs} +22 -15
- package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -0
- package/dist/cjs/helpers/{ConfigHelper.js → ConfigHelper.cjs} +15 -7
- package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -0
- package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -1
- package/dist/cjs/helpers/{ContextLimiter.js → ContextLimiter.cjs} +2 -3
- package/dist/cjs/helpers/{ContextLimiter.js.map → ContextLimiter.cjs.map} +1 -1
- package/dist/cjs/helpers/FileHelper.cjs +193 -0
- package/dist/cjs/helpers/FileHelper.cjs.map +1 -0
- package/dist/cjs/helpers/FileHelper.d.ts +19 -25
- package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
- package/dist/cjs/{store/index.js → helpers/index.cjs} +4 -4
- package/dist/cjs/helpers/{index.js.map → index.cjs.map} +1 -1
- package/dist/cjs/helpers/index.d.ts +4 -5
- package/dist/cjs/helpers/index.d.ts.map +1 -1
- package/dist/cjs/index.cjs +114 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.ts +39 -13
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/libs/{kafka/index.js → index.cjs} +2 -2
- package/dist/cjs/libs/{index.js.map → index.cjs.map} +1 -1
- package/dist/cjs/libs/index.d.ts +2 -3
- package/dist/cjs/libs/index.d.ts.map +1 -1
- package/dist/cjs/libs/logger/{index.js → index.cjs} +5 -5
- package/dist/cjs/libs/logger/{index.js.map → index.cjs.map} +1 -1
- package/dist/cjs/libs/logger/index.d.ts +2 -2
- package/dist/cjs/libs/logger/index.d.ts.map +1 -1
- package/dist/cjs/libs/logger/{kafkajs-logger-creator.js → kafkajs-logger-creator.cjs} +2 -2
- package/dist/cjs/libs/logger/{kafkajs-logger-creator.js.map → kafkajs-logger-creator.cjs.map} +1 -1
- package/dist/cjs/libs/s3/index.cjs +8 -0
- package/dist/cjs/libs/s3/index.cjs.map +1 -0
- package/dist/cjs/libs/s3/index.d.ts +1 -2
- package/dist/cjs/libs/s3/index.d.ts.map +1 -1
- package/dist/cjs/libs/s3/s3.lib.cjs +207 -0
- package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -0
- package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
- package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
- package/dist/cjs/processors/{ChatProcessor.js → ChatProcessor.cjs} +111 -149
- package/dist/cjs/processors/ChatProcessor.cjs.map +1 -0
- package/dist/cjs/processors/ChatProcessor.d.ts +23 -7
- package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
- package/dist/cjs/processors/ChatProcessor.test.cjs +276 -0
- package/dist/cjs/processors/ChatProcessor.test.cjs.map +1 -0
- package/dist/cjs/processors/ChatProcessor.test.d.ts +2 -0
- package/dist/cjs/processors/ChatProcessor.test.d.ts.map +1 -0
- package/dist/cjs/processors/{ModelsProcessor.js → ModelsProcessor.cjs} +2 -2
- package/dist/cjs/processors/{ModelsProcessor.js.map → ModelsProcessor.cjs.map} +1 -1
- package/dist/cjs/processors/{index.js → index.cjs} +2 -2
- package/dist/cjs/processors/{index.js.map → index.cjs.map} +1 -1
- package/dist/cjs/processors/index.d.ts +2 -2
- package/dist/cjs/processors/index.d.ts.map +1 -1
- package/dist/cjs/services/{AIService.js → AIService.cjs} +42 -30
- package/dist/cjs/services/AIService.cjs.map +1 -0
- package/dist/cjs/services/AIService.d.ts +13 -4
- package/dist/cjs/services/AIService.d.ts.map +1 -1
- package/dist/cjs/services/{InternalEventsHandler.js → InternalEventsHandler.cjs} +5 -5
- package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -0
- package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
- package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
- package/dist/cjs/services/{ModelFetcher.js → ModelFetcher.cjs} +9 -15
- package/dist/cjs/services/ModelFetcher.cjs.map +1 -0
- package/dist/cjs/services/ModelFetcher.d.ts +2 -7
- package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
- package/dist/cjs/services/{RedisService.js → RedisService.cjs} +35 -32
- package/dist/cjs/services/RedisService.cjs.map +1 -0
- package/dist/cjs/services/RedisService.d.ts +5 -2
- package/dist/cjs/services/RedisService.d.ts.map +1 -1
- package/dist/cjs/services/{SocketService.js → SocketService.cjs} +19 -20
- package/dist/cjs/services/SocketService.cjs.map +1 -0
- package/dist/cjs/services/SocketService.d.ts +7 -4
- package/dist/cjs/services/SocketService.d.ts.map +1 -1
- package/dist/cjs/{helpers/index.js → services/index.cjs} +5 -5
- package/dist/cjs/services/{index.js.map → index.cjs.map} +1 -1
- package/dist/cjs/services/index.d.ts +5 -6
- package/dist/cjs/services/index.d.ts.map +1 -1
- package/dist/cjs/store/{AgentStore.js → AgentStore.cjs} +4 -5
- package/dist/cjs/store/AgentStore.cjs.map +1 -0
- package/dist/cjs/store/AgentStore.d.ts +2 -1
- package/dist/cjs/store/AgentStore.d.ts.map +1 -1
- package/dist/cjs/store/{ArtifactStore.js → ArtifactStore.cjs} +2 -4
- package/dist/cjs/store/ArtifactStore.cjs.map +1 -0
- package/dist/cjs/store/{ConfigStore.js → ConfigStore.cjs} +8 -11
- package/dist/cjs/store/ConfigStore.cjs.map +1 -0
- package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
- package/dist/cjs/store/{ConfigStore.test.js → ConfigStore.test.cjs} +2 -2
- package/dist/cjs/store/{ConfigStore.test.js.map → ConfigStore.test.cjs.map} +1 -1
- package/dist/cjs/store/{ModelStore.js → ModelStore.cjs} +4 -4
- package/dist/cjs/store/ModelStore.cjs.map +1 -0
- package/dist/cjs/store/{ModelStore.test.js → ModelStore.test.cjs} +17 -17
- package/dist/cjs/store/ModelStore.test.cjs.map +1 -0
- package/dist/cjs/{libs/index.js → store/index.cjs} +4 -3
- package/dist/cjs/store/{index.js.map → index.cjs.map} +1 -1
- package/dist/cjs/store/index.d.ts +4 -4
- package/dist/cjs/store/index.d.ts.map +1 -1
- package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/esm/config.d.ts +56 -23
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +88 -36
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/helpers/AIHelper.d.ts +20 -13
- package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
- package/dist/esm/helpers/AIHelper.js +152 -94
- package/dist/esm/helpers/AIHelper.js.map +1 -1
- package/dist/esm/helpers/AIHelper.test.js +21 -14
- package/dist/esm/helpers/AIHelper.test.js.map +1 -1
- package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -1
- package/dist/esm/helpers/ConfigHelper.js +13 -5
- package/dist/esm/helpers/ConfigHelper.js.map +1 -1
- package/dist/esm/helpers/ContextLimiter.js +2 -3
- package/dist/esm/helpers/ContextLimiter.js.map +1 -1
- package/dist/esm/helpers/FileHelper.d.ts +19 -25
- package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
- package/dist/esm/helpers/FileHelper.js +132 -149
- package/dist/esm/helpers/FileHelper.js.map +1 -1
- package/dist/esm/helpers/index.d.ts +4 -5
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/index.js +4 -5
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/esm/index.d.ts +39 -13
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +79 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/libs/index.d.ts +2 -3
- package/dist/esm/libs/index.d.ts.map +1 -1
- package/dist/esm/libs/index.js +2 -3
- package/dist/esm/libs/index.js.map +1 -1
- package/dist/esm/libs/logger/index.d.ts +2 -2
- package/dist/esm/libs/logger/index.d.ts.map +1 -1
- package/dist/esm/libs/logger/index.js +2 -2
- package/dist/esm/libs/logger/index.js.map +1 -1
- package/dist/esm/libs/logger/kafkajs-logger-creator.js +1 -1
- package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -1
- package/dist/esm/libs/s3/index.d.ts +1 -2
- package/dist/esm/libs/s3/index.d.ts.map +1 -1
- package/dist/esm/libs/s3/index.js +1 -2
- package/dist/esm/libs/s3/index.js.map +1 -1
- package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
- package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
- package/dist/esm/libs/s3/s3.lib.js +178 -177
- package/dist/esm/libs/s3/s3.lib.js.map +1 -1
- package/dist/esm/processors/ChatProcessor.d.ts +23 -7
- package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
- package/dist/esm/processors/ChatProcessor.js +107 -138
- package/dist/esm/processors/ChatProcessor.js.map +1 -1
- package/dist/esm/processors/ChatProcessor.test.d.ts +2 -0
- package/dist/esm/processors/ChatProcessor.test.d.ts.map +1 -0
- package/dist/esm/processors/ChatProcessor.test.js +274 -0
- package/dist/esm/processors/ChatProcessor.test.js.map +1 -0
- package/dist/esm/processors/ModelsProcessor.js +1 -1
- package/dist/esm/processors/ModelsProcessor.js.map +1 -1
- package/dist/esm/processors/index.d.ts +2 -2
- package/dist/esm/processors/index.d.ts.map +1 -1
- package/dist/esm/processors/index.js +2 -2
- package/dist/esm/processors/index.js.map +1 -1
- package/dist/esm/services/AIService.d.ts +13 -4
- package/dist/esm/services/AIService.d.ts.map +1 -1
- package/dist/esm/services/AIService.js +45 -31
- package/dist/esm/services/AIService.js.map +1 -1
- package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
- package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
- package/dist/esm/services/InternalEventsHandler.js +10 -8
- package/dist/esm/services/InternalEventsHandler.js.map +1 -1
- package/dist/esm/services/ModelFetcher.d.ts +2 -7
- package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
- package/dist/esm/services/ModelFetcher.js +4 -9
- package/dist/esm/services/ModelFetcher.js.map +1 -1
- package/dist/esm/services/RedisService.d.ts +5 -2
- package/dist/esm/services/RedisService.d.ts.map +1 -1
- package/dist/esm/services/RedisService.js +25 -21
- package/dist/esm/services/RedisService.js.map +1 -1
- package/dist/esm/services/SocketService.d.ts +7 -4
- package/dist/esm/services/SocketService.d.ts.map +1 -1
- package/dist/esm/services/SocketService.js +15 -13
- package/dist/esm/services/SocketService.js.map +1 -1
- package/dist/esm/services/index.d.ts +5 -6
- package/dist/esm/services/index.d.ts.map +1 -1
- package/dist/esm/services/index.js +5 -6
- package/dist/esm/services/index.js.map +1 -1
- package/dist/esm/store/AgentStore.d.ts +2 -1
- package/dist/esm/store/AgentStore.d.ts.map +1 -1
- package/dist/esm/store/AgentStore.js +5 -5
- package/dist/esm/store/AgentStore.js.map +1 -1
- package/dist/esm/store/ArtifactStore.js +3 -7
- package/dist/esm/store/ArtifactStore.js.map +1 -1
- package/dist/esm/store/ConfigStore.d.ts.map +1 -1
- package/dist/esm/store/ConfigStore.js +16 -19
- package/dist/esm/store/ConfigStore.js.map +1 -1
- package/dist/esm/store/ConfigStore.test.js +1 -1
- package/dist/esm/store/ConfigStore.test.js.map +1 -1
- package/dist/esm/store/ModelStore.js +6 -6
- package/dist/esm/store/ModelStore.js.map +1 -1
- package/dist/esm/store/ModelStore.test.js +12 -12
- package/dist/esm/store/ModelStore.test.js.map +1 -1
- package/dist/esm/store/index.d.ts +4 -4
- package/dist/esm/store/index.d.ts.map +1 -1
- package/dist/esm/store/index.js +4 -4
- package/dist/esm/store/index.js.map +1 -1
- package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +13 -12
- package/dist/cjs/config.js +0 -48
- package/dist/cjs/config.js.map +0 -1
- package/dist/cjs/helpers/AIHelper.js +0 -330
- package/dist/cjs/helpers/AIHelper.js.map +0 -1
- package/dist/cjs/helpers/AIHelper.test.js.map +0 -1
- package/dist/cjs/helpers/ConfigHelper.js.map +0 -1
- package/dist/cjs/helpers/FileHelper.js +0 -215
- package/dist/cjs/helpers/FileHelper.js.map +0 -1
- package/dist/cjs/helpers/SetupHelper.d.ts +0 -5
- package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
- package/dist/cjs/helpers/SetupHelper.js +0 -37
- package/dist/cjs/helpers/SetupHelper.js.map +0 -1
- package/dist/cjs/index.js +0 -34
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/libs/kafka/config.d.ts +0 -5
- package/dist/cjs/libs/kafka/config.d.ts.map +0 -1
- package/dist/cjs/libs/kafka/config.js +0 -8
- package/dist/cjs/libs/kafka/config.js.map +0 -1
- package/dist/cjs/libs/kafka/consumer.d.ts +0 -16
- package/dist/cjs/libs/kafka/consumer.d.ts.map +0 -1
- package/dist/cjs/libs/kafka/consumer.js +0 -133
- package/dist/cjs/libs/kafka/consumer.js.map +0 -1
- package/dist/cjs/libs/kafka/index.d.ts +0 -3
- package/dist/cjs/libs/kafka/index.d.ts.map +0 -1
- package/dist/cjs/libs/kafka/index.js.map +0 -1
- package/dist/cjs/libs/kafka/kafka.d.ts +0 -3
- package/dist/cjs/libs/kafka/kafka.d.ts.map +0 -1
- package/dist/cjs/libs/kafka/kafka.js +0 -27
- package/dist/cjs/libs/kafka/kafka.js.map +0 -1
- package/dist/cjs/libs/kafka/producer.d.ts +0 -11
- package/dist/cjs/libs/kafka/producer.d.ts.map +0 -1
- package/dist/cjs/libs/kafka/producer.js +0 -48
- package/dist/cjs/libs/kafka/producer.js.map +0 -1
- package/dist/cjs/libs/logger/config.d.ts +0 -5
- package/dist/cjs/libs/logger/config.d.ts.map +0 -1
- package/dist/cjs/libs/logger/config.js +0 -9
- package/dist/cjs/libs/logger/config.js.map +0 -1
- package/dist/cjs/libs/s3/config.d.ts +0 -7
- package/dist/cjs/libs/s3/config.d.ts.map +0 -1
- package/dist/cjs/libs/s3/config.js +0 -10
- package/dist/cjs/libs/s3/config.js.map +0 -1
- package/dist/cjs/libs/s3/index.js +0 -44
- package/dist/cjs/libs/s3/index.js.map +0 -1
- package/dist/cjs/libs/s3/s3.lib.js +0 -224
- package/dist/cjs/libs/s3/s3.lib.js.map +0 -1
- package/dist/cjs/processors/ChatProcessor.js.map +0 -1
- package/dist/cjs/services/AIService.js.map +0 -1
- package/dist/cjs/services/InternalEventsHandler.js.map +0 -1
- package/dist/cjs/services/KafkaService.d.ts +0 -35
- package/dist/cjs/services/KafkaService.d.ts.map +0 -1
- package/dist/cjs/services/KafkaService.js +0 -123
- package/dist/cjs/services/KafkaService.js.map +0 -1
- package/dist/cjs/services/ModelFetcher.js.map +0 -1
- package/dist/cjs/services/RedisService.js.map +0 -1
- package/dist/cjs/services/SocketService.js.map +0 -1
- package/dist/cjs/services/index.js +0 -23
- package/dist/cjs/store/AgentStore.js.map +0 -1
- package/dist/cjs/store/ArtifactStore.js.map +0 -1
- package/dist/cjs/store/ConfigStore.js.map +0 -1
- package/dist/cjs/store/ModelStore.js.map +0 -1
- package/dist/cjs/store/ModelStore.test.js.map +0 -1
- package/dist/esm/helpers/SetupHelper.d.ts +0 -5
- package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
- package/dist/esm/helpers/SetupHelper.js +0 -32
- package/dist/esm/helpers/SetupHelper.js.map +0 -1
- package/dist/esm/libs/kafka/config.d.ts +0 -5
- package/dist/esm/libs/kafka/config.d.ts.map +0 -1
- package/dist/esm/libs/kafka/config.js +0 -5
- package/dist/esm/libs/kafka/config.js.map +0 -1
- package/dist/esm/libs/kafka/consumer.d.ts +0 -16
- package/dist/esm/libs/kafka/consumer.d.ts.map +0 -1
- package/dist/esm/libs/kafka/consumer.js +0 -126
- package/dist/esm/libs/kafka/consumer.js.map +0 -1
- package/dist/esm/libs/kafka/index.d.ts +0 -3
- package/dist/esm/libs/kafka/index.d.ts.map +0 -1
- package/dist/esm/libs/kafka/index.js +0 -3
- package/dist/esm/libs/kafka/index.js.map +0 -1
- package/dist/esm/libs/kafka/kafka.d.ts +0 -3
- package/dist/esm/libs/kafka/kafka.d.ts.map +0 -1
- package/dist/esm/libs/kafka/kafka.js +0 -24
- package/dist/esm/libs/kafka/kafka.js.map +0 -1
- package/dist/esm/libs/kafka/producer.d.ts +0 -11
- package/dist/esm/libs/kafka/producer.d.ts.map +0 -1
- package/dist/esm/libs/kafka/producer.js +0 -44
- package/dist/esm/libs/kafka/producer.js.map +0 -1
- package/dist/esm/libs/logger/config.d.ts +0 -5
- package/dist/esm/libs/logger/config.d.ts.map +0 -1
- package/dist/esm/libs/logger/config.js +0 -6
- package/dist/esm/libs/logger/config.js.map +0 -1
- package/dist/esm/libs/s3/config.d.ts +0 -7
- package/dist/esm/libs/s3/config.d.ts.map +0 -1
- package/dist/esm/libs/s3/config.js +0 -7
- package/dist/esm/libs/s3/config.js.map +0 -1
- package/dist/esm/services/KafkaService.d.ts +0 -35
- package/dist/esm/services/KafkaService.d.ts.map +0 -1
- package/dist/esm/services/KafkaService.js +0 -120
- package/dist/esm/services/KafkaService.js.map +0 -1
- package/dist/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
- /package/dist/cjs/libs/logger/{logger.js → logger.cjs} +0 -0
- /package/dist/cjs/libs/logger/{logger.js.map → logger.cjs.map} +0 -0
- /package/dist/cjs/tools/{generateChartTool.js → generateChartTool.cjs} +0 -0
- /package/dist/cjs/tools/{generateChartTool.js.map → generateChartTool.cjs.map} +0 -0
- /package/dist/cjs/tools/{proposeFormValuesTool.js → proposeFormValuesTool.cjs} +0 -0
- /package/dist/cjs/tools/{proposeFormValuesTool.js.map → proposeFormValuesTool.cjs.map} +0 -0
|
@@ -2,42 +2,48 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ChatProcessor = void 0;
|
|
4
4
|
const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const index_js_4 = require("../store/index.js");
|
|
9
|
-
const index_js_5 = require("../helpers/index.js");
|
|
10
|
-
const config_js_1 = require("../config.js");
|
|
5
|
+
const helpers_1 = require("../helpers/index.cjs");
|
|
6
|
+
const store_1 = require("../store/index.cjs");
|
|
7
|
+
const helpers_2 = require("../helpers/index.cjs");
|
|
11
8
|
const stream_1 = require("stream");
|
|
12
|
-
const
|
|
13
|
-
const index_js_6 = require("../libs/logger/index.js");
|
|
14
|
-
const pipelineAsync = (0, util_1.promisify)(stream_1.pipeline);
|
|
9
|
+
const logger_1 = require("../libs/logger/index.cjs");
|
|
15
10
|
class ChatProcessor {
|
|
16
|
-
constructor(
|
|
17
|
-
this.chatRepository = chatRepository;
|
|
18
|
-
this.messageRepository = messageRepository;
|
|
19
|
-
this.artifactStore = artifactStore;
|
|
11
|
+
constructor(params) {
|
|
12
|
+
this.chatRepository = params.chatRepository;
|
|
13
|
+
this.messageRepository = params.messageRepository;
|
|
14
|
+
this.artifactStore = params.artifactStore;
|
|
15
|
+
this.config = params.config;
|
|
16
|
+
this.socketService = params.socketService;
|
|
17
|
+
this.agentStore = params.agentStore;
|
|
18
|
+
const fileHelper = new helpers_1.FileHelper(params.s3Lib, this.config);
|
|
19
|
+
this.aiHelper = new helpers_1.AIHelper(fileHelper, this.config);
|
|
20
20
|
}
|
|
21
21
|
getTemporaryTitle(contextKey) {
|
|
22
22
|
return `${contextKey} session ${new Date().toISOString()}`;
|
|
23
23
|
}
|
|
24
|
+
isTemporaryTitle(title) {
|
|
25
|
+
// Matches pattern: "{contextKey} session {ISO_DATE_STRING}"
|
|
26
|
+
// Example: "default session 2026-01-23T10:30:45.123Z"
|
|
27
|
+
// toISOString() always includes milliseconds, so we require them
|
|
28
|
+
const pattern = /^.+ session \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
29
|
+
return pattern.test(title);
|
|
30
|
+
}
|
|
24
31
|
async listChats(params) {
|
|
25
|
-
var _a, _b;
|
|
26
32
|
// Build filter object from params
|
|
27
33
|
const filter = {};
|
|
28
|
-
if (params
|
|
34
|
+
if (params?.userId) {
|
|
29
35
|
filter.userId = params.userId;
|
|
30
36
|
}
|
|
31
|
-
if (params
|
|
37
|
+
if (params?.contextKey) {
|
|
32
38
|
filter.contextKey = params.contextKey;
|
|
33
39
|
}
|
|
34
40
|
// Build query options for sort and limit with defaults
|
|
35
41
|
const options = {
|
|
36
42
|
sort: {
|
|
37
|
-
field:
|
|
38
|
-
order:
|
|
43
|
+
field: params?.sortField ?? 'updatedAt',
|
|
44
|
+
order: params?.sortOrder ?? ai_agent_types_1.SortOrder.Desc
|
|
39
45
|
},
|
|
40
|
-
limit: params
|
|
46
|
+
limit: params?.limit
|
|
41
47
|
};
|
|
42
48
|
// Use aggregation to fetch chats with related messages
|
|
43
49
|
return this.chatRepository.findWithMessages(filter, options);
|
|
@@ -61,8 +67,7 @@ class ChatProcessor {
|
|
|
61
67
|
this.artifactStore.deleteArtifacts(chatId);
|
|
62
68
|
}
|
|
63
69
|
async upsertAndGetChat(payload, excludeSocketId) {
|
|
64
|
-
|
|
65
|
-
const targetUserId = (_a = payload.userId) !== null && _a !== void 0 ? _a : 'guest';
|
|
70
|
+
const targetUserId = payload.userId ?? 'guest';
|
|
66
71
|
let chat = null;
|
|
67
72
|
if (payload.chatId) {
|
|
68
73
|
chat = await this.chatRepository.findById(payload.chatId);
|
|
@@ -94,7 +99,7 @@ class ChatProcessor {
|
|
|
94
99
|
if (!content) {
|
|
95
100
|
return this.getTemporaryTitle(payload.contextKey);
|
|
96
101
|
}
|
|
97
|
-
return
|
|
102
|
+
return this.aiHelper.generateTitleForMessage(payload.contextKey, [{
|
|
98
103
|
role: ai_agent_types_1.MessageRole.User,
|
|
99
104
|
content: content
|
|
100
105
|
}]);
|
|
@@ -105,18 +110,17 @@ class ChatProcessor {
|
|
|
105
110
|
role,
|
|
106
111
|
content: messageData.content,
|
|
107
112
|
agentName: messageData.agentName,
|
|
108
|
-
attachments: attachments
|
|
113
|
+
attachments: attachments ?? [],
|
|
109
114
|
reasoning: "",
|
|
110
115
|
toolCalls: []
|
|
111
116
|
});
|
|
112
117
|
if (chat.userId) {
|
|
113
|
-
|
|
118
|
+
this.socketService.emitMessageUpdate(chat.userId, message, excludeSocketId);
|
|
114
119
|
}
|
|
115
120
|
return message;
|
|
116
121
|
}
|
|
117
122
|
async createChat(payload, excludeSocketId) {
|
|
118
|
-
|
|
119
|
-
const targetUserId = (_a = payload.userId) !== null && _a !== void 0 ? _a : 'guest';
|
|
123
|
+
const targetUserId = payload.userId ?? 'guest';
|
|
120
124
|
const contextKey = 'contextKey' in payload ? payload.contextKey : 'default';
|
|
121
125
|
const metadata = 'metadata' in payload ? payload.metadata : {};
|
|
122
126
|
const chat = await this.chatRepository.create({
|
|
@@ -128,12 +132,12 @@ class ChatProcessor {
|
|
|
128
132
|
metadata,
|
|
129
133
|
...(payload.model ? { model: payload.model } : {})
|
|
130
134
|
});
|
|
131
|
-
await
|
|
135
|
+
//await kafkaService.sendChatTitleGenerationEvent(chat.id);
|
|
132
136
|
const initialChatResponse = {
|
|
133
137
|
...chat,
|
|
134
138
|
messages: []
|
|
135
139
|
};
|
|
136
|
-
|
|
140
|
+
this.socketService.emitChatUpdate(targetUserId, initialChatResponse, excludeSocketId);
|
|
137
141
|
return chat;
|
|
138
142
|
}
|
|
139
143
|
/**
|
|
@@ -141,23 +145,22 @@ class ChatProcessor {
|
|
|
141
145
|
* This updates the message containing the tool call and optionally appends a System message.
|
|
142
146
|
*/
|
|
143
147
|
async recordToolCallAction(params) {
|
|
144
|
-
var _a, _b, _c, _d;
|
|
145
148
|
const chat = await this.chatRepository.findById(params.chatId);
|
|
146
149
|
if (!chat) {
|
|
147
150
|
throw new Error('Chat not found');
|
|
148
151
|
}
|
|
149
152
|
const messages = await this.messageRepository.findByChatId(params.chatId);
|
|
150
|
-
const message = messages.find((m) =>
|
|
153
|
+
const message = messages.find((m) => (m.toolCalls ?? []).some((c) => c.id === params.toolCallId));
|
|
151
154
|
if (!message) {
|
|
152
155
|
throw new Error('Tool call not found');
|
|
153
156
|
}
|
|
154
|
-
const toolCalls =
|
|
157
|
+
const toolCalls = message.toolCalls ?? [];
|
|
155
158
|
const target = toolCalls.find((c) => c.id === params.toolCallId);
|
|
156
159
|
if (!target) {
|
|
157
160
|
throw new Error('Tool call not found');
|
|
158
161
|
}
|
|
159
162
|
const now = new Date().toISOString();
|
|
160
|
-
const output = (
|
|
163
|
+
const output = (target.output ?? {});
|
|
161
164
|
const mp = (output['_mp'] && typeof output['_mp'] === 'object' && !Array.isArray(output['_mp']))
|
|
162
165
|
? output['_mp']
|
|
163
166
|
: {};
|
|
@@ -167,14 +170,14 @@ class ChatProcessor {
|
|
|
167
170
|
lastAction: {
|
|
168
171
|
action: params.action,
|
|
169
172
|
at: now,
|
|
170
|
-
data:
|
|
173
|
+
data: params.data ?? {},
|
|
171
174
|
},
|
|
172
175
|
actions: [
|
|
173
176
|
...actions,
|
|
174
177
|
{
|
|
175
178
|
action: params.action,
|
|
176
179
|
at: now,
|
|
177
|
-
data:
|
|
180
|
+
data: params.data ?? {},
|
|
178
181
|
}
|
|
179
182
|
]
|
|
180
183
|
};
|
|
@@ -189,7 +192,7 @@ class ChatProcessor {
|
|
|
189
192
|
await this.messageRepository.update(message.id, { toolCalls });
|
|
190
193
|
// Bump chat updatedAt so listChats ordering reflects the action.
|
|
191
194
|
await this.chatRepository.update(chat.id, { updatedAt: now });
|
|
192
|
-
|
|
195
|
+
this.socketService.emitMessageUpdate(chat.userId, updatedMessage, params.excludeSocketId);
|
|
193
196
|
if (params.systemMessage) {
|
|
194
197
|
//todo discuss support for system messages
|
|
195
198
|
//await this.createMessage(chat, MessageRole.System, params.systemMessage, undefined, params.excludeSocketId);
|
|
@@ -197,26 +200,25 @@ class ChatProcessor {
|
|
|
197
200
|
return { ok: true };
|
|
198
201
|
}
|
|
199
202
|
async streamMessageStep(params) {
|
|
200
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
201
203
|
const { chat, assistantMessage, existingMessages, signal, excludeSocketId, agentOptions } = params;
|
|
202
204
|
if (signal.aborted) {
|
|
203
205
|
return;
|
|
204
206
|
}
|
|
205
|
-
const result = await
|
|
207
|
+
const result = await this.aiHelper.streamAssistantResponse(existingMessages, signal, agentOptions);
|
|
206
208
|
try {
|
|
207
209
|
for await (const chunk of result.fullStream) {
|
|
208
210
|
if (chunk.type === 'error') {
|
|
209
|
-
await
|
|
211
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Error, data: chunk.error });
|
|
210
212
|
assistantMessage.content = chunk.error.message || 'Sorry, I cannot process you request due to the error';
|
|
211
213
|
await this.messageRepository.update(assistantMessage.id, assistantMessage);
|
|
212
214
|
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.Error });
|
|
213
215
|
continue;
|
|
214
216
|
}
|
|
215
217
|
if (chunk.type === 'abort') {
|
|
216
|
-
await
|
|
218
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Aborted, data: undefined });
|
|
217
219
|
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.Aborted });
|
|
218
220
|
await this.messageRepository.update(assistantMessage.id, assistantMessage);
|
|
219
|
-
|
|
221
|
+
this.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
|
|
220
222
|
continue;
|
|
221
223
|
}
|
|
222
224
|
if (chunk.type === 'finish') {
|
|
@@ -229,41 +231,27 @@ class ChatProcessor {
|
|
|
229
231
|
}
|
|
230
232
|
if (chunk.totalUsage && typeof chunk.totalUsage === 'object') {
|
|
231
233
|
const totalUsage = chunk.totalUsage;
|
|
232
|
-
assistantMessage.tokens =
|
|
234
|
+
assistantMessage.tokens = totalUsage.totalTokens ??
|
|
235
|
+
((totalUsage.promptTokens ?? 0) + (totalUsage.completionTokens ?? 0));
|
|
233
236
|
}
|
|
234
237
|
await this.messageRepository.update(assistantMessage.id, { ...assistantMessage });
|
|
235
238
|
if (chunk.finishReason === 'stop') {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Update, data: assistantMessage });
|
|
242
|
-
await this.streamMessageStep(params);
|
|
243
|
-
continue;
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.Finished });
|
|
239
|
+
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.Finished });
|
|
240
|
+
if (chat.title && this.isTemporaryTitle(chat.title)) {
|
|
241
|
+
const title = await this.aiHelper.generateTitleForMessage(chat.contextKey, existingMessages);
|
|
242
|
+
await this.chatRepository.update(chat.id, { title });
|
|
243
|
+
this.socketService.emitChatUpdate(chat.userId, { ...chat, title, messages: [] });
|
|
247
244
|
}
|
|
248
|
-
await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Finished, data: assistantMessage });
|
|
249
|
-
continue;
|
|
250
245
|
}
|
|
251
246
|
if (chunk.finishReason === 'tool-calls') {
|
|
252
|
-
if (
|
|
247
|
+
if (assistantMessage.toolCalls?.some(toolCall => toolCall.requiresConfirmation && toolCall.approvalId && !toolCall.output)) {
|
|
253
248
|
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.WaitingForUserAction });
|
|
254
|
-
await
|
|
255
|
-
|
|
256
|
-
else {
|
|
257
|
-
await index_js_4.agentStore.shareAgentProcessEvent(chat.id, {
|
|
258
|
-
type: index_js_4.AgentProcessEventType.Update,
|
|
259
|
-
data: assistantMessage
|
|
260
|
-
});
|
|
261
|
-
await this.streamMessageStep(params);
|
|
249
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
|
|
250
|
+
continue;
|
|
262
251
|
}
|
|
263
|
-
continue;
|
|
264
252
|
}
|
|
265
253
|
//todo: Handle other finish reasons // length, content, error, other, undefined
|
|
266
|
-
await
|
|
254
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
|
|
267
255
|
continue;
|
|
268
256
|
}
|
|
269
257
|
if (chunk.type === 'text-delta') {
|
|
@@ -272,8 +260,8 @@ class ChatProcessor {
|
|
|
272
260
|
...assistantMessage,
|
|
273
261
|
content: assistantMessage.content
|
|
274
262
|
};
|
|
275
|
-
|
|
276
|
-
await
|
|
263
|
+
this.socketService.emitMessageUpdate(chat.userId, updatedMessage, excludeSocketId);
|
|
264
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: updatedMessage });
|
|
277
265
|
await this.messageRepository.update(assistantMessage.id, { content: assistantMessage.content });
|
|
278
266
|
continue;
|
|
279
267
|
}
|
|
@@ -288,8 +276,8 @@ class ChatProcessor {
|
|
|
288
276
|
});
|
|
289
277
|
continue;
|
|
290
278
|
}
|
|
291
|
-
if (chunk.type === 'tool-call') {
|
|
292
|
-
const toolCall =
|
|
279
|
+
if (chunk.type === 'tool-call') {
|
|
280
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
|
|
293
281
|
if (toolCall) {
|
|
294
282
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Running;
|
|
295
283
|
toolCall.input = chunk.input;
|
|
@@ -297,15 +285,15 @@ class ChatProcessor {
|
|
|
297
285
|
continue;
|
|
298
286
|
}
|
|
299
287
|
if (chunk.type === 'tool-error') {
|
|
300
|
-
const toolCall =
|
|
288
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
|
|
301
289
|
if (toolCall) {
|
|
302
290
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
|
|
303
|
-
toolCall.error = JSON.stringify(chunk.error);
|
|
291
|
+
toolCall.error = chunk.error.message || JSON.stringify(chunk.error);
|
|
304
292
|
}
|
|
305
293
|
continue;
|
|
306
294
|
}
|
|
307
295
|
if (chunk.type === 'tool-approval-request') {
|
|
308
|
-
const toolCall =
|
|
296
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCall.toolCallId);
|
|
309
297
|
if (toolCall) {
|
|
310
298
|
toolCall.requiresConfirmation = true;
|
|
311
299
|
toolCall.approvalId = chunk.approvalId;
|
|
@@ -313,7 +301,7 @@ class ChatProcessor {
|
|
|
313
301
|
continue;
|
|
314
302
|
}
|
|
315
303
|
if (chunk.type === 'tool-result') {
|
|
316
|
-
const toolCall =
|
|
304
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
|
|
317
305
|
if (toolCall) {
|
|
318
306
|
if (chunk.output.requiresApproval) {
|
|
319
307
|
toolCall.requiresConfirmation = true;
|
|
@@ -328,9 +316,9 @@ class ChatProcessor {
|
|
|
328
316
|
if (!assistantMessage.reasoning)
|
|
329
317
|
assistantMessage.reasoning = '';
|
|
330
318
|
assistantMessage.reasoning += chunk.text;
|
|
331
|
-
|
|
319
|
+
this.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
|
|
332
320
|
await this.messageRepository.update(assistantMessage.id, { reasoning: assistantMessage.reasoning });
|
|
333
|
-
await
|
|
321
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: assistantMessage });
|
|
334
322
|
continue;
|
|
335
323
|
}
|
|
336
324
|
}
|
|
@@ -339,7 +327,7 @@ class ChatProcessor {
|
|
|
339
327
|
if (streamError instanceof Error && streamError.name === 'AbortError') {
|
|
340
328
|
return;
|
|
341
329
|
}
|
|
342
|
-
await
|
|
330
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Error, data: streamError });
|
|
343
331
|
throw streamError;
|
|
344
332
|
}
|
|
345
333
|
}
|
|
@@ -347,16 +335,15 @@ class ChatProcessor {
|
|
|
347
335
|
return 'approvalId' in payload;
|
|
348
336
|
}
|
|
349
337
|
async processApprovalPayload(chat, payload) {
|
|
350
|
-
var _a, _b, _c;
|
|
351
338
|
const assistantMessage = await this.messageRepository.findById(payload.messageId);
|
|
352
339
|
if (!assistantMessage || assistantMessage.chat !== chat.id) {
|
|
353
340
|
throw new Error(`Assistant message with id ${payload.messageId} not found`);
|
|
354
341
|
}
|
|
355
|
-
const agentOptions = await
|
|
342
|
+
const agentOptions = await this.aiHelper.getAgentOptions({
|
|
356
343
|
agentName: assistantMessage.agentName,
|
|
357
344
|
context: payload.context
|
|
358
345
|
});
|
|
359
|
-
const toolCall =
|
|
346
|
+
const toolCall = assistantMessage.toolCalls?.find(tc => tc.approvalId === payload.approvalId);
|
|
360
347
|
if (!toolCall) {
|
|
361
348
|
// continue, tool is not found
|
|
362
349
|
return {
|
|
@@ -374,14 +361,14 @@ class ChatProcessor {
|
|
|
374
361
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
|
|
375
362
|
}
|
|
376
363
|
else {
|
|
377
|
-
const executeFunction =
|
|
364
|
+
const executeFunction = agentOptions.tools?.[toolCall.name]?.execute;
|
|
378
365
|
if (executeFunction) {
|
|
379
366
|
try {
|
|
380
367
|
toolCall.output = await executeFunction(toolCall.input, { toolCallId: toolCall.id, messages: [] });
|
|
381
368
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Succeeded;
|
|
382
369
|
}
|
|
383
370
|
catch (error) {
|
|
384
|
-
|
|
371
|
+
logger_1.logger.error(error);
|
|
385
372
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
|
|
386
373
|
toolCall.output = {
|
|
387
374
|
type: 'execution-denied',
|
|
@@ -405,10 +392,10 @@ class ChatProcessor {
|
|
|
405
392
|
}
|
|
406
393
|
async processNewUserMessage(chat, payload, prevMessages, excludeSocketId) {
|
|
407
394
|
const userMessage = await this.createMessage(chat, ai_agent_types_1.MessageRole.User, { content: payload.content, agentName: undefined }, payload.attachments);
|
|
408
|
-
await
|
|
409
|
-
const agentOptions = await
|
|
395
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: userMessage });
|
|
396
|
+
const agentOptions = await this.aiHelper.getAgentOptions({
|
|
410
397
|
contextKey: chat.contextKey,
|
|
411
|
-
messages:
|
|
398
|
+
messages: [...prevMessages, userMessage],
|
|
412
399
|
context: payload.context,
|
|
413
400
|
agentName: undefined,
|
|
414
401
|
modelId: chat.model,
|
|
@@ -423,14 +410,14 @@ class ChatProcessor {
|
|
|
423
410
|
}
|
|
424
411
|
async streamMessage(chat, payload, excludeSocketId, onAgentStart) {
|
|
425
412
|
try {
|
|
426
|
-
const abortController =
|
|
427
|
-
onAgentStart
|
|
413
|
+
const abortController = this.agentStore.registerAgentProcess(chat.id);
|
|
414
|
+
onAgentStart?.();
|
|
428
415
|
let assistantMessage;
|
|
429
416
|
let agentOptions;
|
|
430
417
|
const existingMessages = await this.messageRepository.findByChatId(chat.id);
|
|
431
418
|
// Limit context to prevent exceeding token limits
|
|
432
|
-
const limitedMessages =
|
|
433
|
-
maxMessages:
|
|
419
|
+
const limitedMessages = helpers_2.ContextLimiter.limitContext(existingMessages, {
|
|
420
|
+
maxMessages: this.config.ai.maxContextMessages,
|
|
434
421
|
keepFirstUserMessage: true,
|
|
435
422
|
keepSystemMessages: true,
|
|
436
423
|
});
|
|
@@ -470,32 +457,32 @@ class ChatProcessor {
|
|
|
470
457
|
}
|
|
471
458
|
eventToChunk(event) {
|
|
472
459
|
switch (event.type) {
|
|
473
|
-
case
|
|
460
|
+
case store_1.AgentProcessEventType.Update:
|
|
474
461
|
return {
|
|
475
462
|
type: ai_agent_types_1.StreamChunkType.Message,
|
|
476
463
|
message: event.data
|
|
477
464
|
};
|
|
478
|
-
case
|
|
465
|
+
case store_1.AgentProcessEventType.Error:
|
|
479
466
|
return {
|
|
480
467
|
type: ai_agent_types_1.StreamChunkType.Error,
|
|
481
468
|
error: event.data.message || 'Unknown error occurred'
|
|
482
469
|
};
|
|
483
|
-
case
|
|
470
|
+
case store_1.AgentProcessEventType.Finished:
|
|
484
471
|
return {
|
|
485
472
|
type: ai_agent_types_1.StreamChunkType.Message,
|
|
486
473
|
message: event.data
|
|
487
474
|
};
|
|
488
|
-
case
|
|
475
|
+
case store_1.AgentProcessEventType.Aborted:
|
|
489
476
|
// Aborted events don't produce chunks, they just signal stream end
|
|
490
477
|
return null;
|
|
491
|
-
case
|
|
478
|
+
case store_1.AgentProcessEventType.Stop:
|
|
492
479
|
// Stop events don't produce chunks
|
|
493
480
|
return null;
|
|
494
481
|
default:
|
|
495
482
|
return null;
|
|
496
483
|
}
|
|
497
484
|
}
|
|
498
|
-
getMessageStream(chatId) {
|
|
485
|
+
getMessageStream(chatId, signal) {
|
|
499
486
|
const stream = new stream_1.PassThrough();
|
|
500
487
|
let ended = false;
|
|
501
488
|
const endStream = (error) => {
|
|
@@ -503,7 +490,7 @@ class ChatProcessor {
|
|
|
503
490
|
return;
|
|
504
491
|
ended = true;
|
|
505
492
|
if (error) {
|
|
506
|
-
|
|
493
|
+
logger_1.logger.error({ error }, 'Message stream error');
|
|
507
494
|
}
|
|
508
495
|
if (!stream.destroyed && !stream.writableEnded) {
|
|
509
496
|
try {
|
|
@@ -511,28 +498,29 @@ class ChatProcessor {
|
|
|
511
498
|
stream.end();
|
|
512
499
|
}
|
|
513
500
|
catch (e) {
|
|
514
|
-
|
|
501
|
+
logger_1.logger.error({ e }, 'Failed to end SSE stream');
|
|
515
502
|
}
|
|
516
503
|
}
|
|
517
504
|
};
|
|
518
505
|
const pushChunk = (chunk) => {
|
|
519
|
-
if (ended || stream.destroyed || stream.writableEnded)
|
|
506
|
+
if (ended || stream.destroyed || stream.writableEnded || signal?.aborted)
|
|
520
507
|
return;
|
|
521
508
|
stream.write(`data: ${JSON.stringify(chunk)}\n\n`);
|
|
522
509
|
};
|
|
523
510
|
const listener = (event) => {
|
|
524
|
-
if (
|
|
511
|
+
if (signal?.aborted) {
|
|
512
|
+
endStream();
|
|
525
513
|
return;
|
|
514
|
+
}
|
|
526
515
|
try {
|
|
527
516
|
const chunk = this.eventToChunk(event);
|
|
528
517
|
if (chunk) {
|
|
529
518
|
pushChunk(chunk);
|
|
530
519
|
}
|
|
531
|
-
if (event.type ===
|
|
532
|
-
event.type ===
|
|
533
|
-
event.type ===
|
|
520
|
+
if (event.type === store_1.AgentProcessEventType.Finished ||
|
|
521
|
+
event.type === store_1.AgentProcessEventType.Error ||
|
|
522
|
+
event.type === store_1.AgentProcessEventType.Aborted) {
|
|
534
523
|
endStream();
|
|
535
|
-
index_js_4.agentStore.removeListener(chatId, listener);
|
|
536
524
|
}
|
|
537
525
|
}
|
|
538
526
|
catch (err) {
|
|
@@ -541,21 +529,18 @@ class ChatProcessor {
|
|
|
541
529
|
error: err instanceof Error ? err.message : 'Unknown error occurred',
|
|
542
530
|
});
|
|
543
531
|
endStream(err);
|
|
544
|
-
index_js_4.agentStore.removeListener(chatId, listener);
|
|
545
532
|
}
|
|
546
533
|
};
|
|
547
|
-
// Cleanup on consumer side closing
|
|
548
534
|
const closeHandler = () => {
|
|
549
|
-
|
|
535
|
+
this.agentStore.removeListener(chatId, listener);
|
|
550
536
|
};
|
|
551
537
|
const errorHandler = (err) => {
|
|
552
|
-
|
|
553
|
-
index_js_4.agentStore.removeListener(chatId, listener);
|
|
538
|
+
signal?.removeEventListener('abort', endStream);
|
|
554
539
|
endStream(err);
|
|
555
540
|
};
|
|
556
541
|
stream.on('close', closeHandler);
|
|
557
542
|
stream.on('error', errorHandler);
|
|
558
|
-
const listenerAttached =
|
|
543
|
+
const listenerAttached = this.agentStore.addListener(chatId, listener);
|
|
559
544
|
if (!listenerAttached) {
|
|
560
545
|
// Remove stream listeners if listener attachment failed to prevent memory leak
|
|
561
546
|
stream.removeListener('close', closeHandler);
|
|
@@ -564,51 +549,28 @@ class ChatProcessor {
|
|
|
564
549
|
}
|
|
565
550
|
return stream;
|
|
566
551
|
}
|
|
567
|
-
async createMessageStream(payload, excludeSocketId) {
|
|
552
|
+
async createMessageStream(payload, excludeSocketId, signal) {
|
|
568
553
|
const stream = new stream_1.PassThrough();
|
|
569
|
-
(
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
// Send chat metadata first
|
|
573
|
-
if (!('chatId' in payload) && !('messageId' in payload) && chat) {
|
|
574
|
-
stream.write(`data: ${JSON.stringify({
|
|
575
|
-
type: ai_agent_types_1.StreamChunkType.Chat,
|
|
576
|
-
chatId: chat.id,
|
|
577
|
-
chat,
|
|
578
|
-
})}\n\n`);
|
|
579
|
-
}
|
|
580
|
-
await this.streamMessage(chat, payload, excludeSocketId, async () => {
|
|
581
|
-
if (stream.destroyed || stream.writableEnded) {
|
|
582
|
-
return;
|
|
583
|
-
}
|
|
584
|
-
const messageStream = this.getMessageStream(chat.id);
|
|
585
|
-
// If client disconnects, destroy inner stream
|
|
586
|
-
stream.on('close', () => {
|
|
587
|
-
if (!messageStream.destroyed) {
|
|
588
|
-
messageStream.destroy();
|
|
589
|
-
}
|
|
590
|
-
});
|
|
591
|
-
await pipelineAsync(messageStream, stream);
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
catch (error) {
|
|
595
|
-
index_js_6.logger.error({ error }, 'createMessageStream failed');
|
|
596
|
-
if (!stream.destroyed && !stream.writableEnded) {
|
|
597
|
-
stream.write(`data: ${JSON.stringify({
|
|
598
|
-
type: ai_agent_types_1.StreamChunkType.Error,
|
|
599
|
-
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
600
|
-
})}\n\n`);
|
|
601
|
-
stream.write('data: [DONE]\n\n');
|
|
602
|
-
stream.end();
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
})().catch((err) => {
|
|
606
|
-
index_js_6.logger.error({ err }, 'Unhandled stream task error');
|
|
607
|
-
if (!stream.destroyed)
|
|
608
|
-
stream.destroy(err);
|
|
554
|
+
this.runMessageStream(stream, payload, excludeSocketId, signal)
|
|
555
|
+
.catch(err => {
|
|
556
|
+
logger_1.logger.error({ err }, 'Stream task failed');
|
|
609
557
|
});
|
|
610
558
|
return stream;
|
|
611
559
|
}
|
|
560
|
+
async runMessageStream(stream, payload, excludeSocketId, signal) {
|
|
561
|
+
const chat = await this.upsertAndGetChat(payload, excludeSocketId);
|
|
562
|
+
if (!('chatId' in payload) && !('messageId' in payload) && chat) {
|
|
563
|
+
stream.write(`data: ${JSON.stringify({
|
|
564
|
+
type: ai_agent_types_1.StreamChunkType.Chat,
|
|
565
|
+
chatId: chat.id,
|
|
566
|
+
chat,
|
|
567
|
+
})}\n\n`);
|
|
568
|
+
}
|
|
569
|
+
await this.streamMessage(chat, payload, excludeSocketId, () => {
|
|
570
|
+
const messageStream = this.getMessageStream(chat.id, signal);
|
|
571
|
+
messageStream.pipe(stream);
|
|
572
|
+
});
|
|
573
|
+
}
|
|
612
574
|
}
|
|
613
575
|
exports.ChatProcessor = ChatProcessor;
|
|
614
576
|
//# sourceMappingURL=ChatProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatProcessor.js","sourceRoot":"","sources":["../../../src/processors/ChatProcessor.ts"],"names":[],"mappings":"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"}
|