@multiplayer-app/ai-agent-node 0.1.0-beta.2 → 0.1.0-beta.21
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.js → AIHelper.cjs} +145 -91
- package/dist/cjs/helpers/AIHelper.cjs.map +1 -0
- package/dist/cjs/helpers/AIHelper.d.ts +19 -12
- 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} +4 -5
- package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -0
- 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} +114 -132
- 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/{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} +21 -24
- package/dist/cjs/services/AIService.cjs.map +1 -0
- package/dist/cjs/services/AIService.d.ts +4 -2
- 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 +19 -12
- package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
- package/dist/esm/helpers/AIHelper.js +144 -88
- 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.js +2 -3
- 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 +109 -120
- package/dist/esm/processors/ChatProcessor.js.map +1 -1
- 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 +4 -2
- package/dist/esm/services/AIService.d.ts.map +1 -1
- package/dist/esm/services/AIService.js +24 -25
- 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 +11 -10
- package/dist/cjs/config.js +0 -48
- package/dist/cjs/config.js.map +0 -1
- 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,33 +231,39 @@ 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
|
-
if (
|
|
239
|
+
if (assistantMessage.toolCalls?.some(toolCall => toolCall.requiresConfirmation && toolCall.approvalId && !toolCall.output)) {
|
|
237
240
|
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.WaitingForUserAction });
|
|
238
241
|
}
|
|
239
|
-
else if (!assistantMessage.content &&
|
|
242
|
+
else if (!assistantMessage.content && assistantMessage.toolCalls?.length && assistantMessage.toolCalls[assistantMessage.toolCalls?.length - 1].output) {
|
|
240
243
|
// handle tool-calls stop, openrouter provider does not return valid type
|
|
241
|
-
await
|
|
244
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: assistantMessage });
|
|
242
245
|
await this.streamMessageStep(params);
|
|
243
246
|
continue;
|
|
244
247
|
}
|
|
245
248
|
else {
|
|
246
249
|
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.Finished });
|
|
250
|
+
if (chat.title && this.isTemporaryTitle(chat.title)) {
|
|
251
|
+
const title = await this.aiHelper.generateTitleForMessage(chat.contextKey, existingMessages);
|
|
252
|
+
await this.chatRepository.update(chat.id, { title });
|
|
253
|
+
this.socketService.emitChatUpdate(chat.userId, { ...chat, title, messages: [] });
|
|
254
|
+
}
|
|
247
255
|
}
|
|
248
|
-
await
|
|
256
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
|
|
249
257
|
continue;
|
|
250
258
|
}
|
|
251
259
|
if (chunk.finishReason === 'tool-calls') {
|
|
252
|
-
if (
|
|
260
|
+
if (assistantMessage.toolCalls?.some(toolCall => toolCall.requiresConfirmation && toolCall.approvalId && !toolCall.output)) {
|
|
253
261
|
await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.WaitingForUserAction });
|
|
254
|
-
await
|
|
262
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
|
|
255
263
|
}
|
|
256
264
|
else {
|
|
257
|
-
await
|
|
258
|
-
type:
|
|
265
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, {
|
|
266
|
+
type: store_1.AgentProcessEventType.Update,
|
|
259
267
|
data: assistantMessage
|
|
260
268
|
});
|
|
261
269
|
await this.streamMessageStep(params);
|
|
@@ -263,7 +271,7 @@ class ChatProcessor {
|
|
|
263
271
|
continue;
|
|
264
272
|
}
|
|
265
273
|
//todo: Handle other finish reasons // length, content, error, other, undefined
|
|
266
|
-
await
|
|
274
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
|
|
267
275
|
continue;
|
|
268
276
|
}
|
|
269
277
|
if (chunk.type === 'text-delta') {
|
|
@@ -272,8 +280,8 @@ class ChatProcessor {
|
|
|
272
280
|
...assistantMessage,
|
|
273
281
|
content: assistantMessage.content
|
|
274
282
|
};
|
|
275
|
-
|
|
276
|
-
await
|
|
283
|
+
this.socketService.emitMessageUpdate(chat.userId, updatedMessage, excludeSocketId);
|
|
284
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: updatedMessage });
|
|
277
285
|
await this.messageRepository.update(assistantMessage.id, { content: assistantMessage.content });
|
|
278
286
|
continue;
|
|
279
287
|
}
|
|
@@ -289,7 +297,7 @@ class ChatProcessor {
|
|
|
289
297
|
continue;
|
|
290
298
|
}
|
|
291
299
|
if (chunk.type === 'tool-call') { //Todo possible place to handle user-approval
|
|
292
|
-
const toolCall =
|
|
300
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
|
|
293
301
|
if (toolCall) {
|
|
294
302
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Running;
|
|
295
303
|
toolCall.input = chunk.input;
|
|
@@ -297,7 +305,7 @@ class ChatProcessor {
|
|
|
297
305
|
continue;
|
|
298
306
|
}
|
|
299
307
|
if (chunk.type === 'tool-error') {
|
|
300
|
-
const toolCall =
|
|
308
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
|
|
301
309
|
if (toolCall) {
|
|
302
310
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
|
|
303
311
|
toolCall.error = JSON.stringify(chunk.error);
|
|
@@ -305,7 +313,7 @@ class ChatProcessor {
|
|
|
305
313
|
continue;
|
|
306
314
|
}
|
|
307
315
|
if (chunk.type === 'tool-approval-request') {
|
|
308
|
-
const toolCall =
|
|
316
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCall.toolCallId);
|
|
309
317
|
if (toolCall) {
|
|
310
318
|
toolCall.requiresConfirmation = true;
|
|
311
319
|
toolCall.approvalId = chunk.approvalId;
|
|
@@ -313,7 +321,7 @@ class ChatProcessor {
|
|
|
313
321
|
continue;
|
|
314
322
|
}
|
|
315
323
|
if (chunk.type === 'tool-result') {
|
|
316
|
-
const toolCall =
|
|
324
|
+
const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
|
|
317
325
|
if (toolCall) {
|
|
318
326
|
if (chunk.output.requiresApproval) {
|
|
319
327
|
toolCall.requiresConfirmation = true;
|
|
@@ -328,9 +336,9 @@ class ChatProcessor {
|
|
|
328
336
|
if (!assistantMessage.reasoning)
|
|
329
337
|
assistantMessage.reasoning = '';
|
|
330
338
|
assistantMessage.reasoning += chunk.text;
|
|
331
|
-
|
|
339
|
+
this.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
|
|
332
340
|
await this.messageRepository.update(assistantMessage.id, { reasoning: assistantMessage.reasoning });
|
|
333
|
-
await
|
|
341
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: assistantMessage });
|
|
334
342
|
continue;
|
|
335
343
|
}
|
|
336
344
|
}
|
|
@@ -339,7 +347,7 @@ class ChatProcessor {
|
|
|
339
347
|
if (streamError instanceof Error && streamError.name === 'AbortError') {
|
|
340
348
|
return;
|
|
341
349
|
}
|
|
342
|
-
await
|
|
350
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Error, data: streamError });
|
|
343
351
|
throw streamError;
|
|
344
352
|
}
|
|
345
353
|
}
|
|
@@ -347,16 +355,15 @@ class ChatProcessor {
|
|
|
347
355
|
return 'approvalId' in payload;
|
|
348
356
|
}
|
|
349
357
|
async processApprovalPayload(chat, payload) {
|
|
350
|
-
var _a, _b, _c;
|
|
351
358
|
const assistantMessage = await this.messageRepository.findById(payload.messageId);
|
|
352
359
|
if (!assistantMessage || assistantMessage.chat !== chat.id) {
|
|
353
360
|
throw new Error(`Assistant message with id ${payload.messageId} not found`);
|
|
354
361
|
}
|
|
355
|
-
const agentOptions = await
|
|
362
|
+
const agentOptions = await this.aiHelper.getAgentOptions({
|
|
356
363
|
agentName: assistantMessage.agentName,
|
|
357
364
|
context: payload.context
|
|
358
365
|
});
|
|
359
|
-
const toolCall =
|
|
366
|
+
const toolCall = assistantMessage.toolCalls?.find(tc => tc.approvalId === payload.approvalId);
|
|
360
367
|
if (!toolCall) {
|
|
361
368
|
// continue, tool is not found
|
|
362
369
|
return {
|
|
@@ -374,14 +381,14 @@ class ChatProcessor {
|
|
|
374
381
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
|
|
375
382
|
}
|
|
376
383
|
else {
|
|
377
|
-
const executeFunction =
|
|
384
|
+
const executeFunction = agentOptions.tools?.[toolCall.name]?.execute;
|
|
378
385
|
if (executeFunction) {
|
|
379
386
|
try {
|
|
380
387
|
toolCall.output = await executeFunction(toolCall.input, { toolCallId: toolCall.id, messages: [] });
|
|
381
388
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Succeeded;
|
|
382
389
|
}
|
|
383
390
|
catch (error) {
|
|
384
|
-
|
|
391
|
+
logger_1.logger.error(error);
|
|
385
392
|
toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
|
|
386
393
|
toolCall.output = {
|
|
387
394
|
type: 'execution-denied',
|
|
@@ -405,10 +412,10 @@ class ChatProcessor {
|
|
|
405
412
|
}
|
|
406
413
|
async processNewUserMessage(chat, payload, prevMessages, excludeSocketId) {
|
|
407
414
|
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
|
|
415
|
+
await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: userMessage });
|
|
416
|
+
const agentOptions = await this.aiHelper.getAgentOptions({
|
|
410
417
|
contextKey: chat.contextKey,
|
|
411
|
-
messages: await
|
|
418
|
+
messages: await this.aiHelper.convertMessages([...prevMessages, userMessage], true),
|
|
412
419
|
context: payload.context,
|
|
413
420
|
agentName: undefined,
|
|
414
421
|
modelId: chat.model,
|
|
@@ -423,14 +430,14 @@ class ChatProcessor {
|
|
|
423
430
|
}
|
|
424
431
|
async streamMessage(chat, payload, excludeSocketId, onAgentStart) {
|
|
425
432
|
try {
|
|
426
|
-
const abortController =
|
|
427
|
-
onAgentStart
|
|
433
|
+
const abortController = this.agentStore.registerAgentProcess(chat.id);
|
|
434
|
+
onAgentStart?.();
|
|
428
435
|
let assistantMessage;
|
|
429
436
|
let agentOptions;
|
|
430
437
|
const existingMessages = await this.messageRepository.findByChatId(chat.id);
|
|
431
438
|
// Limit context to prevent exceeding token limits
|
|
432
|
-
const limitedMessages =
|
|
433
|
-
maxMessages:
|
|
439
|
+
const limitedMessages = helpers_2.ContextLimiter.limitContext(existingMessages, {
|
|
440
|
+
maxMessages: this.config.ai.maxContextMessages,
|
|
434
441
|
keepFirstUserMessage: true,
|
|
435
442
|
keepSystemMessages: true,
|
|
436
443
|
});
|
|
@@ -470,32 +477,32 @@ class ChatProcessor {
|
|
|
470
477
|
}
|
|
471
478
|
eventToChunk(event) {
|
|
472
479
|
switch (event.type) {
|
|
473
|
-
case
|
|
480
|
+
case store_1.AgentProcessEventType.Update:
|
|
474
481
|
return {
|
|
475
482
|
type: ai_agent_types_1.StreamChunkType.Message,
|
|
476
483
|
message: event.data
|
|
477
484
|
};
|
|
478
|
-
case
|
|
485
|
+
case store_1.AgentProcessEventType.Error:
|
|
479
486
|
return {
|
|
480
487
|
type: ai_agent_types_1.StreamChunkType.Error,
|
|
481
488
|
error: event.data.message || 'Unknown error occurred'
|
|
482
489
|
};
|
|
483
|
-
case
|
|
490
|
+
case store_1.AgentProcessEventType.Finished:
|
|
484
491
|
return {
|
|
485
492
|
type: ai_agent_types_1.StreamChunkType.Message,
|
|
486
493
|
message: event.data
|
|
487
494
|
};
|
|
488
|
-
case
|
|
495
|
+
case store_1.AgentProcessEventType.Aborted:
|
|
489
496
|
// Aborted events don't produce chunks, they just signal stream end
|
|
490
497
|
return null;
|
|
491
|
-
case
|
|
498
|
+
case store_1.AgentProcessEventType.Stop:
|
|
492
499
|
// Stop events don't produce chunks
|
|
493
500
|
return null;
|
|
494
501
|
default:
|
|
495
502
|
return null;
|
|
496
503
|
}
|
|
497
504
|
}
|
|
498
|
-
getMessageStream(chatId) {
|
|
505
|
+
getMessageStream(chatId, signal) {
|
|
499
506
|
const stream = new stream_1.PassThrough();
|
|
500
507
|
let ended = false;
|
|
501
508
|
const endStream = (error) => {
|
|
@@ -503,7 +510,7 @@ class ChatProcessor {
|
|
|
503
510
|
return;
|
|
504
511
|
ended = true;
|
|
505
512
|
if (error) {
|
|
506
|
-
|
|
513
|
+
logger_1.logger.error({ error }, 'Message stream error');
|
|
507
514
|
}
|
|
508
515
|
if (!stream.destroyed && !stream.writableEnded) {
|
|
509
516
|
try {
|
|
@@ -511,28 +518,29 @@ class ChatProcessor {
|
|
|
511
518
|
stream.end();
|
|
512
519
|
}
|
|
513
520
|
catch (e) {
|
|
514
|
-
|
|
521
|
+
logger_1.logger.error({ e }, 'Failed to end SSE stream');
|
|
515
522
|
}
|
|
516
523
|
}
|
|
517
524
|
};
|
|
518
525
|
const pushChunk = (chunk) => {
|
|
519
|
-
if (ended || stream.destroyed || stream.writableEnded)
|
|
526
|
+
if (ended || stream.destroyed || stream.writableEnded || signal?.aborted)
|
|
520
527
|
return;
|
|
521
528
|
stream.write(`data: ${JSON.stringify(chunk)}\n\n`);
|
|
522
529
|
};
|
|
523
530
|
const listener = (event) => {
|
|
524
|
-
if (
|
|
531
|
+
if (signal?.aborted) {
|
|
532
|
+
endStream();
|
|
525
533
|
return;
|
|
534
|
+
}
|
|
526
535
|
try {
|
|
527
536
|
const chunk = this.eventToChunk(event);
|
|
528
537
|
if (chunk) {
|
|
529
538
|
pushChunk(chunk);
|
|
530
539
|
}
|
|
531
|
-
if (event.type ===
|
|
532
|
-
event.type ===
|
|
533
|
-
event.type ===
|
|
540
|
+
if (event.type === store_1.AgentProcessEventType.Finished ||
|
|
541
|
+
event.type === store_1.AgentProcessEventType.Error ||
|
|
542
|
+
event.type === store_1.AgentProcessEventType.Aborted) {
|
|
534
543
|
endStream();
|
|
535
|
-
index_js_4.agentStore.removeListener(chatId, listener);
|
|
536
544
|
}
|
|
537
545
|
}
|
|
538
546
|
catch (err) {
|
|
@@ -541,21 +549,18 @@ class ChatProcessor {
|
|
|
541
549
|
error: err instanceof Error ? err.message : 'Unknown error occurred',
|
|
542
550
|
});
|
|
543
551
|
endStream(err);
|
|
544
|
-
index_js_4.agentStore.removeListener(chatId, listener);
|
|
545
552
|
}
|
|
546
553
|
};
|
|
547
|
-
// Cleanup on consumer side closing
|
|
548
554
|
const closeHandler = () => {
|
|
549
|
-
|
|
555
|
+
this.agentStore.removeListener(chatId, listener);
|
|
550
556
|
};
|
|
551
557
|
const errorHandler = (err) => {
|
|
552
|
-
|
|
553
|
-
index_js_4.agentStore.removeListener(chatId, listener);
|
|
558
|
+
signal?.removeEventListener('abort', endStream);
|
|
554
559
|
endStream(err);
|
|
555
560
|
};
|
|
556
561
|
stream.on('close', closeHandler);
|
|
557
562
|
stream.on('error', errorHandler);
|
|
558
|
-
const listenerAttached =
|
|
563
|
+
const listenerAttached = this.agentStore.addListener(chatId, listener);
|
|
559
564
|
if (!listenerAttached) {
|
|
560
565
|
// Remove stream listeners if listener attachment failed to prevent memory leak
|
|
561
566
|
stream.removeListener('close', closeHandler);
|
|
@@ -564,51 +569,28 @@ class ChatProcessor {
|
|
|
564
569
|
}
|
|
565
570
|
return stream;
|
|
566
571
|
}
|
|
567
|
-
async createMessageStream(payload, excludeSocketId) {
|
|
572
|
+
async createMessageStream(payload, excludeSocketId, signal) {
|
|
568
573
|
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);
|
|
574
|
+
this.runMessageStream(stream, payload, excludeSocketId, signal)
|
|
575
|
+
.catch(err => {
|
|
576
|
+
logger_1.logger.error({ err }, 'Stream task failed');
|
|
609
577
|
});
|
|
610
578
|
return stream;
|
|
611
579
|
}
|
|
580
|
+
async runMessageStream(stream, payload, excludeSocketId, signal) {
|
|
581
|
+
const chat = await this.upsertAndGetChat(payload, excludeSocketId);
|
|
582
|
+
if (!('chatId' in payload) && !('messageId' in payload) && chat) {
|
|
583
|
+
stream.write(`data: ${JSON.stringify({
|
|
584
|
+
type: ai_agent_types_1.StreamChunkType.Chat,
|
|
585
|
+
chatId: chat.id,
|
|
586
|
+
chat,
|
|
587
|
+
})}\n\n`);
|
|
588
|
+
}
|
|
589
|
+
await this.streamMessage(chat, payload, excludeSocketId, () => {
|
|
590
|
+
const messageStream = this.getMessageStream(chat.id, signal);
|
|
591
|
+
messageStream.pipe(stream);
|
|
592
|
+
});
|
|
593
|
+
}
|
|
612
594
|
}
|
|
613
595
|
exports.ChatProcessor = ChatProcessor;
|
|
614
596
|
//# sourceMappingURL=ChatProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatProcessor.js","sourceRoot":"","sources":["../../../src/processors/ChatProcessor.ts"],"names":[],"mappings":";;;AACA,oEAiByC;AAEzC,wCAAkD;AAClD,oCAAoE;AAEpE,wCAA4C;AAC5C,mCAAqC;AACrC,2CAAwC;AAOxC,MAAa,aAAa;IASxB,YAAY,MAQX;QACC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEpC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEO,iBAAiB,CAAC,UAAkB;QAC1C,OAAO,GAAG,UAAU,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC7D,CAAC;IAEO,gBAAgB,CAAC,KAAa;QACpC,4DAA4D;QAC5D,sDAAsD;QACtD,iEAAiE;QACjE,MAAM,OAAO,GAAG,0DAA0D,CAAC;QAC3E,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAGD,KAAK,CAAC,SAAS,CAAC,MAMf;QACC,kCAAkC;QAClC,MAAM,MAAM,GAAuB,EAAE,CAAC;QACtC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;YACvB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,CAAC;QAED,uDAAuD;QACvD,MAAM,OAAO,GAAG;YACd,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,WAAW;gBACvC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,0BAAS,CAAC,IAAI;aAC3C;YACD,KAAK,EAAE,MAAM,EAAE,KAAK;SACrB,CAAC;QAEF,uDAAuD;QACvD,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CACzC,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnE,OAAO;YACL,GAAG,IAAI;YACP,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAA2B,EAAE,eAAwB;QAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;QAC/C,IAAI,IAAI,GAAqB,IAAI,CAAC;QAElC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACpC,CAAC;YACD,qDAAqD;YACrD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAwC,EAAE,eAAe,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAKlB;QACC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAChE,IAAI,EAAE,4BAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAe,EAAE,IAAiB,EAAE,WAAwD,EAAE,WAA+B,EAAE,eAAwB;QACzK,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAClD,IAAI,EAAE,IAAI,CAAC,EAAE;YACb,IAAI;YACJ,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA2B,EAAE,eAAwB;QACpE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;QAC/C,MAAM,UAAU,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;YACzC,IAAI,EAAE,yBAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,4BAAW,CAAC,SAAS;YAC7B,UAAU;YACV,MAAM,EAAE,YAAY;YACpB,QAAQ;YACR,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC,CAAC;QACH,2DAA2D;QAC3D,MAAM,mBAAmB,GAAsB;YAC7C,GAAG,IAAI;YACP,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAO1B;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;QAChE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9F,CAAC,CAAE,MAAM,CAAC,KAAK,CAA6B;YAC5C,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,SAAS,CAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,MAAM,MAAM,GAAG;YACb,GAAG,EAAE;YACL,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,EAAE,EAAE,GAAG;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;aACxB;YACD,OAAO,EAAE;gBACP,GAAG,OAAO;gBACV;oBACE,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;iBACxB;aACF;SACF,CAAC;QAEF,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM;YACT,GAAG,EAAE,MAAM;SACZ,CAAC;QAEF,MAAM,cAAc,GAAiB;YACnC,GAAG,OAAO;YACV,SAAS;SACV,CAAC;QAEF,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,iEAAiE;QACjE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAS,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAE1F,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,0CAA0C;YAC1C,8GAA8G;QAChH,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,MAAiM;QAC/N,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QACnG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAEnG,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAc,EAAE,CAAC,CAAC;oBACzH,gBAAgB,CAAC,OAAO,GAAI,KAAK,CAAC,KAAgC,CAAC,OAAO,IAAI,sDAAsD,CAAC;oBACrI,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;oBAC3E,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,4BAAW,CAAC,KAAK,EAAE,CAAC,CAAC;oBACzE,SAAQ;gBACV,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;oBAChH,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,4BAAW,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3E,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;oBAC3E,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;oBAErF,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAC;oBAEjF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAC,CAAC;wBAChB,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;oBACzC,CAAC;yBAAM,CAAC;wBACN,gBAAgB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC;oBAC7C,CAAC;oBACD,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;wBAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAwF,CAAC;wBAClH,gBAAgB,CAAC,MAAM,GAAG,UAAU,CAAC,WAAW;4BAC9C,CAAC,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1E,CAAC;oBAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC;oBAClF,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;wBAClC,IAAI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,oBAAoB,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC3H,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,4BAAW,CAAC,oBAAoB,EAAE,CAAC,CAAC;wBAC1F,CAAC;6BAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,gBAAgB,CAAC,SAAS,EAAE,MAAM,IAAI,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4BACxJ,yEAAyE;4BACzE,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;4BACtH,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;4BACrC,SAAS;wBACX,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,MAAM,EAAE,4BAAW,CAAC,QAAQ,EAAC,CAAC,CAAC;4BAC1E,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gCACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;gCAC5F,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,KAAK,EAAC,CAAC,CAAA;gCAClD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;4BACjF,CAAC;wBACH,CAAC;wBACD,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;wBACxH,SAAS;oBACX,CAAC;oBACD,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;wBACxC,IAAI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,oBAAoB,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC3H,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,4BAAW,CAAC,oBAAoB,EAAE,CAAC,CAAC;4BACxF,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;wBAC1H,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE;gCACpD,IAAI,EAAE,6BAAqB,CAAC,MAAM;gCAClC,IAAI,EAAE,gBAAgB;6BACvB,CAAC,CAAC;4BACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;wBACvC,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,+EAA+E;oBAC/E,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBACxH,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,gBAAgB,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;oBACvC,MAAM,cAAc,GAAiB;wBACnC,GAAG,gBAAgB;wBACnB,OAAO,EAAE,gBAAgB,CAAC,OAAO;qBAClC,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;oBACnF,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;oBACpH,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;oBAChG,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACtC,IAAI,CAAC,gBAAgB,CAAC,SAAS;wBAAE,gBAAgB,CAAC,SAAS,GAAG,EAAE,CAAC;oBACjE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC9B,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,QAAQ;wBACpB,MAAM,EAAE,oCAAmB,CAAC,OAAO;wBACnC,KAAK,EAAE,EAAE;qBACV,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC,CAAA,6CAA6C;oBAC5E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;oBAChG,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,MAAM,GAAG,oCAAmB,CAAC,OAAO,CAAC;wBAC9C,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC/B,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;oBAChG,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,MAAM,GAAG,oCAAmB,CAAC,MAAM,CAAC;wBAC7C,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC/C,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAEzG,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC;wBACrC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;oBACzC,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;oBAEhG,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;4BAClC,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC;4BACrC,SAAS;wBACX,CAAC;wBACD,QAAQ,CAAC,MAAM,GAAG,oCAAmB,CAAC,SAAS,CAAC;wBAChD,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;oBACjC,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACrC,IAAI,CAAC,gBAAgB,CAAC,SAAS;wBAAE,gBAAgB,CAAC,SAAS,GAAG,EAAE,CAAA;oBAChE,gBAAgB,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;oBACzC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;oBACrF,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;oBACpG,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBACtH,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,IAAI,WAAW,YAAY,KAAK,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtE,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAoB,EAAE,CAAC,CAAC;YACzH,MAAM,WAAW,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,OAA2B;QACnD,OAAO,YAAY,IAAI,OAAO,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,IAAe,EAAE,OAAyE;QAC7H,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,SAAS,YAAY,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,8BAA8B;YAC9B,OAAO;gBACL,gBAAgB;gBAChB,YAAY;aACb,CAAA;QACH,CAAC;QAED,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACrC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAQ,CAAC,MAAM,GAAG;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAA;YACD,QAAQ,CAAC,MAAM,GAAG,oCAAmB,CAAC,MAAM,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YACrE,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,QAAQ,CAAC,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAA;oBAChG,QAAQ,CAAC,MAAM,GAAG,oCAAmB,CAAC,SAAS,CAAC;gBAClD,CAAC;gBAAC,OAAM,KAAK,EAAE,CAAC;oBACd,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACpB,QAAQ,CAAC,MAAM,GAAG,oCAAmB,CAAC,MAAM,CAAC;oBAC7C,QAAQ,CAAC,MAAM,GAAG;wBAChB,IAAI,EAAE,kBAAkB;wBACxB,MAAM,EAAE,wBAAwB;qBACjC,CAAA;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,MAAM,GAAG;oBAChB,IAAI,EAAE,kBAAkB;oBACxB,MAAM,EAAE,oBAAoB;iBAC7B,CAAA;gBACD,QAAQ,CAAC,MAAM,GAAG,oCAAmB,CAAC,MAAM,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC3E,OAAO;YACL,gBAAgB;YAChB,YAAY;SACb,CAAA;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAe,EAAE,OAAwE,EAAE,YAA4B,EAAE,eAAwB;QAC3K,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,4BAAW,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5I,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,6BAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAEjH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,YAAY,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC;YACnF,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,4BAAW,CAAC,SAAS,EAAE,EAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,IAAI,EAAC,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACzJ,gBAAgB,CAAC,OAAO,GAAG,EAAE,CAAA;QAE7B,OAAO;YACL,WAAW;YACX,gBAAgB;YAChB,YAAY;SACb,CAAA;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAe,EAAE,OAA6D,EAAE,eAAwB,EAAE,YAAyB;QACrJ,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtE,YAAY,EAAE,EAAE,CAAA;YAChB,IAAI,gBAA8B,CAAC;YACnC,IAAI,YAAmD,CAAC;YAExD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE5E,kDAAkD;YAClD,MAAM,eAAe,GAAG,wBAAc,CAAC,YAAY,CAC/C,gBAAgB,EAChB;gBACE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAkB;gBAC9C,oBAAoB,EAAE,IAAI;gBAC1B,kBAAkB,EAAE,IAAI;aACzB,CACJ,CAAC;YAEF,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAChE,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBAC3C,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBACnC,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBACvF,IAAG,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;oBACrB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACxD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;gBACjG,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBAC3C,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBACnC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,IAAI,CAAC,iBAAiB,CAAC;gBAC3B,IAAI;gBACJ,gBAAgB,EAAE,eAAe;gBACjC,gBAAgB;gBAChB,YAAY;gBACZ,eAAe,EAAE,eAAe;gBAChC,MAAM,EAAE,eAAe,CAAC,MAAM;aAC/B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAEO,YAAY,CAAC,KAAwB;QAC3C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,6BAAqB,CAAC,MAAM;gBAC/B,OAAO;oBACL,IAAI,EAAE,gCAAe,CAAC,OAAO;oBAC7B,OAAO,EAAE,KAAK,CAAC,IAAI;iBACpB,CAAC;YAEJ,KAAK,6BAAqB,CAAC,KAAK;gBAC9B,OAAO;oBACL,IAAI,EAAE,gCAAe,CAAC,KAAK;oBAC3B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,wBAAwB;iBACtD,CAAC;YACJ,KAAK,6BAAqB,CAAC,QAAQ;gBACjC,OAAO;oBACL,IAAI,EAAE,gCAAe,CAAC,OAAO;oBAC7B,OAAO,EAAE,KAAK,CAAC,IAAI;iBACpB,CAAC;YACJ,KAAK,6BAAqB,CAAC,OAAO;gBAChC,mEAAmE;gBACnE,OAAO,IAAI,CAAC;YACd,KAAK,6BAAqB,CAAC,IAAI;gBAC7B,mCAAmC;gBACnC,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,MAAc,EAAE,MAAqB;QACpD,MAAM,MAAM,GAAG,IAAI,oBAAW,EAAE,CAAC;QACjC,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,MAAM,SAAS,GAAG,CAAC,KAAe,EAAE,EAAE;YACpC,IAAI,KAAK;gBAAE,OAAO;YAClB,KAAK,GAAG,IAAI,CAAC;YAEb,IAAI,KAAK,EAAE,CAAC;gBACV,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAC;YAClD,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;oBACjC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACf,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,eAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,KAAkB,EAAE,EAAE;YACvC,IAAI,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO;YACjF,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAE,EAAE;YAC5C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,SAAS,EAAE,CAAA;gBACX,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,KAAK,EAAE,CAAC;oBACV,SAAS,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC;gBAED,IACE,KAAK,CAAC,IAAI,KAAK,6BAAqB,CAAC,QAAQ;oBAC7C,KAAK,CAAC,IAAI,KAAK,6BAAqB,CAAC,KAAK;oBAC1C,KAAK,CAAC,IAAI,KAAK,6BAAqB,CAAC,OAAO,EAC5C,CAAC;oBACD,SAAS,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,CAAC;oBACR,IAAI,EAAE,gCAAe,CAAC,KAAK;oBAC3B,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;iBACrE,CAAC,CAAC;gBACH,SAAS,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,GAAU,EAAE,EAAE;YAClC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAChD,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,+EAA+E;YAC/E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7C,SAAS,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM;QACxD,MAAM,MAAM,GAAG,IAAI,oBAAW,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC;aAC1D,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEP,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC1B,MAAmB,EACnB,OAA6D,EAC7D,eAAwB,EACxB,MAAoB;QAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACnE,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YAChE,MAAM,CAAC,KAAK,CACR,SAAS,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,gCAAe,CAAC,IAAI;gBAC1B,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI;aACL,CAAC,MAAM,CACX,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE;YAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7D,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA5qBD,sCA4qBC"}
|