@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.
Files changed (303) hide show
  1. package/dist/cjs/config.cjs +98 -0
  2. package/dist/cjs/config.cjs.map +1 -0
  3. package/dist/cjs/config.d.ts +56 -23
  4. package/dist/cjs/config.d.ts.map +1 -1
  5. package/dist/cjs/helpers/{AIHelper.js → AIHelper.cjs} +145 -91
  6. package/dist/cjs/helpers/AIHelper.cjs.map +1 -0
  7. package/dist/cjs/helpers/AIHelper.d.ts +19 -12
  8. package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
  9. package/dist/cjs/helpers/{AIHelper.test.js → AIHelper.test.cjs} +22 -15
  10. package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -0
  11. package/dist/cjs/helpers/{ConfigHelper.js → ConfigHelper.cjs} +4 -5
  12. package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -0
  13. package/dist/cjs/helpers/{ContextLimiter.js → ContextLimiter.cjs} +2 -3
  14. package/dist/cjs/helpers/{ContextLimiter.js.map → ContextLimiter.cjs.map} +1 -1
  15. package/dist/cjs/helpers/FileHelper.cjs +193 -0
  16. package/dist/cjs/helpers/FileHelper.cjs.map +1 -0
  17. package/dist/cjs/helpers/FileHelper.d.ts +19 -25
  18. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
  19. package/dist/cjs/{store/index.js → helpers/index.cjs} +4 -4
  20. package/dist/cjs/helpers/{index.js.map → index.cjs.map} +1 -1
  21. package/dist/cjs/helpers/index.d.ts +4 -5
  22. package/dist/cjs/helpers/index.d.ts.map +1 -1
  23. package/dist/cjs/index.cjs +114 -0
  24. package/dist/cjs/index.cjs.map +1 -0
  25. package/dist/cjs/index.d.ts +39 -13
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/libs/{kafka/index.js → index.cjs} +2 -2
  28. package/dist/cjs/libs/{index.js.map → index.cjs.map} +1 -1
  29. package/dist/cjs/libs/index.d.ts +2 -3
  30. package/dist/cjs/libs/index.d.ts.map +1 -1
  31. package/dist/cjs/libs/logger/{index.js → index.cjs} +5 -5
  32. package/dist/cjs/libs/logger/{index.js.map → index.cjs.map} +1 -1
  33. package/dist/cjs/libs/logger/index.d.ts +2 -2
  34. package/dist/cjs/libs/logger/index.d.ts.map +1 -1
  35. package/dist/cjs/libs/logger/{kafkajs-logger-creator.js → kafkajs-logger-creator.cjs} +2 -2
  36. package/dist/cjs/libs/logger/{kafkajs-logger-creator.js.map → kafkajs-logger-creator.cjs.map} +1 -1
  37. package/dist/cjs/libs/s3/index.cjs +8 -0
  38. package/dist/cjs/libs/s3/index.cjs.map +1 -0
  39. package/dist/cjs/libs/s3/index.d.ts +1 -2
  40. package/dist/cjs/libs/s3/index.d.ts.map +1 -1
  41. package/dist/cjs/libs/s3/s3.lib.cjs +207 -0
  42. package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -0
  43. package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
  44. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
  45. package/dist/cjs/processors/{ChatProcessor.js → ChatProcessor.cjs} +114 -132
  46. package/dist/cjs/processors/ChatProcessor.cjs.map +1 -0
  47. package/dist/cjs/processors/ChatProcessor.d.ts +23 -7
  48. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
  49. package/dist/cjs/processors/{ModelsProcessor.js → ModelsProcessor.cjs} +2 -2
  50. package/dist/cjs/processors/{ModelsProcessor.js.map → ModelsProcessor.cjs.map} +1 -1
  51. package/dist/cjs/processors/{index.js → index.cjs} +2 -2
  52. package/dist/cjs/processors/{index.js.map → index.cjs.map} +1 -1
  53. package/dist/cjs/processors/index.d.ts +2 -2
  54. package/dist/cjs/processors/index.d.ts.map +1 -1
  55. package/dist/cjs/services/{AIService.js → AIService.cjs} +21 -24
  56. package/dist/cjs/services/AIService.cjs.map +1 -0
  57. package/dist/cjs/services/AIService.d.ts +4 -2
  58. package/dist/cjs/services/AIService.d.ts.map +1 -1
  59. package/dist/cjs/services/{InternalEventsHandler.js → InternalEventsHandler.cjs} +5 -5
  60. package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -0
  61. package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
  62. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
  63. package/dist/cjs/services/{ModelFetcher.js → ModelFetcher.cjs} +9 -15
  64. package/dist/cjs/services/ModelFetcher.cjs.map +1 -0
  65. package/dist/cjs/services/ModelFetcher.d.ts +2 -7
  66. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
  67. package/dist/cjs/services/{RedisService.js → RedisService.cjs} +35 -32
  68. package/dist/cjs/services/RedisService.cjs.map +1 -0
  69. package/dist/cjs/services/RedisService.d.ts +5 -2
  70. package/dist/cjs/services/RedisService.d.ts.map +1 -1
  71. package/dist/cjs/services/{SocketService.js → SocketService.cjs} +19 -20
  72. package/dist/cjs/services/SocketService.cjs.map +1 -0
  73. package/dist/cjs/services/SocketService.d.ts +7 -4
  74. package/dist/cjs/services/SocketService.d.ts.map +1 -1
  75. package/dist/cjs/{helpers/index.js → services/index.cjs} +5 -5
  76. package/dist/cjs/services/{index.js.map → index.cjs.map} +1 -1
  77. package/dist/cjs/services/index.d.ts +5 -6
  78. package/dist/cjs/services/index.d.ts.map +1 -1
  79. package/dist/cjs/store/{AgentStore.js → AgentStore.cjs} +4 -5
  80. package/dist/cjs/store/AgentStore.cjs.map +1 -0
  81. package/dist/cjs/store/AgentStore.d.ts +2 -1
  82. package/dist/cjs/store/AgentStore.d.ts.map +1 -1
  83. package/dist/cjs/store/{ArtifactStore.js → ArtifactStore.cjs} +2 -4
  84. package/dist/cjs/store/ArtifactStore.cjs.map +1 -0
  85. package/dist/cjs/store/{ConfigStore.js → ConfigStore.cjs} +8 -11
  86. package/dist/cjs/store/ConfigStore.cjs.map +1 -0
  87. package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
  88. package/dist/cjs/store/{ConfigStore.test.js → ConfigStore.test.cjs} +2 -2
  89. package/dist/cjs/store/{ConfigStore.test.js.map → ConfigStore.test.cjs.map} +1 -1
  90. package/dist/cjs/store/{ModelStore.js → ModelStore.cjs} +4 -4
  91. package/dist/cjs/store/ModelStore.cjs.map +1 -0
  92. package/dist/cjs/store/{ModelStore.test.js → ModelStore.test.cjs} +17 -17
  93. package/dist/cjs/store/ModelStore.test.cjs.map +1 -0
  94. package/dist/cjs/{libs/index.js → store/index.cjs} +4 -3
  95. package/dist/cjs/store/{index.js.map → index.cjs.map} +1 -1
  96. package/dist/cjs/store/index.d.ts +4 -4
  97. package/dist/cjs/store/index.d.ts.map +1 -1
  98. package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
  99. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  100. package/dist/esm/config.d.ts +56 -23
  101. package/dist/esm/config.d.ts.map +1 -1
  102. package/dist/esm/config.js +88 -36
  103. package/dist/esm/config.js.map +1 -1
  104. package/dist/esm/helpers/AIHelper.d.ts +19 -12
  105. package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
  106. package/dist/esm/helpers/AIHelper.js +144 -88
  107. package/dist/esm/helpers/AIHelper.js.map +1 -1
  108. package/dist/esm/helpers/AIHelper.test.js +21 -14
  109. package/dist/esm/helpers/AIHelper.test.js.map +1 -1
  110. package/dist/esm/helpers/ConfigHelper.js +2 -3
  111. package/dist/esm/helpers/ConfigHelper.js.map +1 -1
  112. package/dist/esm/helpers/ContextLimiter.js +2 -3
  113. package/dist/esm/helpers/ContextLimiter.js.map +1 -1
  114. package/dist/esm/helpers/FileHelper.d.ts +19 -25
  115. package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
  116. package/dist/esm/helpers/FileHelper.js +132 -149
  117. package/dist/esm/helpers/FileHelper.js.map +1 -1
  118. package/dist/esm/helpers/index.d.ts +4 -5
  119. package/dist/esm/helpers/index.d.ts.map +1 -1
  120. package/dist/esm/helpers/index.js +4 -5
  121. package/dist/esm/helpers/index.js.map +1 -1
  122. package/dist/esm/index.d.ts +39 -13
  123. package/dist/esm/index.d.ts.map +1 -1
  124. package/dist/esm/index.js +79 -12
  125. package/dist/esm/index.js.map +1 -1
  126. package/dist/esm/libs/index.d.ts +2 -3
  127. package/dist/esm/libs/index.d.ts.map +1 -1
  128. package/dist/esm/libs/index.js +2 -3
  129. package/dist/esm/libs/index.js.map +1 -1
  130. package/dist/esm/libs/logger/index.d.ts +2 -2
  131. package/dist/esm/libs/logger/index.d.ts.map +1 -1
  132. package/dist/esm/libs/logger/index.js +2 -2
  133. package/dist/esm/libs/logger/index.js.map +1 -1
  134. package/dist/esm/libs/logger/kafkajs-logger-creator.js +1 -1
  135. package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -1
  136. package/dist/esm/libs/s3/index.d.ts +1 -2
  137. package/dist/esm/libs/s3/index.d.ts.map +1 -1
  138. package/dist/esm/libs/s3/index.js +1 -2
  139. package/dist/esm/libs/s3/index.js.map +1 -1
  140. package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
  141. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
  142. package/dist/esm/libs/s3/s3.lib.js +178 -177
  143. package/dist/esm/libs/s3/s3.lib.js.map +1 -1
  144. package/dist/esm/processors/ChatProcessor.d.ts +23 -7
  145. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
  146. package/dist/esm/processors/ChatProcessor.js +109 -120
  147. package/dist/esm/processors/ChatProcessor.js.map +1 -1
  148. package/dist/esm/processors/ModelsProcessor.js +1 -1
  149. package/dist/esm/processors/ModelsProcessor.js.map +1 -1
  150. package/dist/esm/processors/index.d.ts +2 -2
  151. package/dist/esm/processors/index.d.ts.map +1 -1
  152. package/dist/esm/processors/index.js +2 -2
  153. package/dist/esm/processors/index.js.map +1 -1
  154. package/dist/esm/services/AIService.d.ts +4 -2
  155. package/dist/esm/services/AIService.d.ts.map +1 -1
  156. package/dist/esm/services/AIService.js +24 -25
  157. package/dist/esm/services/AIService.js.map +1 -1
  158. package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
  159. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
  160. package/dist/esm/services/InternalEventsHandler.js +10 -8
  161. package/dist/esm/services/InternalEventsHandler.js.map +1 -1
  162. package/dist/esm/services/ModelFetcher.d.ts +2 -7
  163. package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
  164. package/dist/esm/services/ModelFetcher.js +4 -9
  165. package/dist/esm/services/ModelFetcher.js.map +1 -1
  166. package/dist/esm/services/RedisService.d.ts +5 -2
  167. package/dist/esm/services/RedisService.d.ts.map +1 -1
  168. package/dist/esm/services/RedisService.js +25 -21
  169. package/dist/esm/services/RedisService.js.map +1 -1
  170. package/dist/esm/services/SocketService.d.ts +7 -4
  171. package/dist/esm/services/SocketService.d.ts.map +1 -1
  172. package/dist/esm/services/SocketService.js +15 -13
  173. package/dist/esm/services/SocketService.js.map +1 -1
  174. package/dist/esm/services/index.d.ts +5 -6
  175. package/dist/esm/services/index.d.ts.map +1 -1
  176. package/dist/esm/services/index.js +5 -6
  177. package/dist/esm/services/index.js.map +1 -1
  178. package/dist/esm/store/AgentStore.d.ts +2 -1
  179. package/dist/esm/store/AgentStore.d.ts.map +1 -1
  180. package/dist/esm/store/AgentStore.js +5 -5
  181. package/dist/esm/store/AgentStore.js.map +1 -1
  182. package/dist/esm/store/ArtifactStore.js +3 -7
  183. package/dist/esm/store/ArtifactStore.js.map +1 -1
  184. package/dist/esm/store/ConfigStore.d.ts.map +1 -1
  185. package/dist/esm/store/ConfigStore.js +16 -19
  186. package/dist/esm/store/ConfigStore.js.map +1 -1
  187. package/dist/esm/store/ConfigStore.test.js +1 -1
  188. package/dist/esm/store/ConfigStore.test.js.map +1 -1
  189. package/dist/esm/store/ModelStore.js +6 -6
  190. package/dist/esm/store/ModelStore.js.map +1 -1
  191. package/dist/esm/store/ModelStore.test.js +12 -12
  192. package/dist/esm/store/ModelStore.test.js.map +1 -1
  193. package/dist/esm/store/index.d.ts +4 -4
  194. package/dist/esm/store/index.d.ts.map +1 -1
  195. package/dist/esm/store/index.js +4 -4
  196. package/dist/esm/store/index.js.map +1 -1
  197. package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
  198. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  199. package/package.json +11 -10
  200. package/dist/cjs/config.js +0 -48
  201. package/dist/cjs/config.js.map +0 -1
  202. package/dist/cjs/helpers/AIHelper.js.map +0 -1
  203. package/dist/cjs/helpers/AIHelper.test.js.map +0 -1
  204. package/dist/cjs/helpers/ConfigHelper.js.map +0 -1
  205. package/dist/cjs/helpers/FileHelper.js +0 -215
  206. package/dist/cjs/helpers/FileHelper.js.map +0 -1
  207. package/dist/cjs/helpers/SetupHelper.d.ts +0 -5
  208. package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
  209. package/dist/cjs/helpers/SetupHelper.js +0 -37
  210. package/dist/cjs/helpers/SetupHelper.js.map +0 -1
  211. package/dist/cjs/index.js +0 -34
  212. package/dist/cjs/index.js.map +0 -1
  213. package/dist/cjs/libs/kafka/config.d.ts +0 -5
  214. package/dist/cjs/libs/kafka/config.d.ts.map +0 -1
  215. package/dist/cjs/libs/kafka/config.js +0 -8
  216. package/dist/cjs/libs/kafka/config.js.map +0 -1
  217. package/dist/cjs/libs/kafka/consumer.d.ts +0 -16
  218. package/dist/cjs/libs/kafka/consumer.d.ts.map +0 -1
  219. package/dist/cjs/libs/kafka/consumer.js +0 -133
  220. package/dist/cjs/libs/kafka/consumer.js.map +0 -1
  221. package/dist/cjs/libs/kafka/index.d.ts +0 -3
  222. package/dist/cjs/libs/kafka/index.d.ts.map +0 -1
  223. package/dist/cjs/libs/kafka/index.js.map +0 -1
  224. package/dist/cjs/libs/kafka/kafka.d.ts +0 -3
  225. package/dist/cjs/libs/kafka/kafka.d.ts.map +0 -1
  226. package/dist/cjs/libs/kafka/kafka.js +0 -27
  227. package/dist/cjs/libs/kafka/kafka.js.map +0 -1
  228. package/dist/cjs/libs/kafka/producer.d.ts +0 -11
  229. package/dist/cjs/libs/kafka/producer.d.ts.map +0 -1
  230. package/dist/cjs/libs/kafka/producer.js +0 -48
  231. package/dist/cjs/libs/kafka/producer.js.map +0 -1
  232. package/dist/cjs/libs/logger/config.d.ts +0 -5
  233. package/dist/cjs/libs/logger/config.d.ts.map +0 -1
  234. package/dist/cjs/libs/logger/config.js +0 -9
  235. package/dist/cjs/libs/logger/config.js.map +0 -1
  236. package/dist/cjs/libs/s3/config.d.ts +0 -7
  237. package/dist/cjs/libs/s3/config.d.ts.map +0 -1
  238. package/dist/cjs/libs/s3/config.js +0 -10
  239. package/dist/cjs/libs/s3/config.js.map +0 -1
  240. package/dist/cjs/libs/s3/index.js +0 -44
  241. package/dist/cjs/libs/s3/index.js.map +0 -1
  242. package/dist/cjs/libs/s3/s3.lib.js +0 -224
  243. package/dist/cjs/libs/s3/s3.lib.js.map +0 -1
  244. package/dist/cjs/processors/ChatProcessor.js.map +0 -1
  245. package/dist/cjs/services/AIService.js.map +0 -1
  246. package/dist/cjs/services/InternalEventsHandler.js.map +0 -1
  247. package/dist/cjs/services/KafkaService.d.ts +0 -35
  248. package/dist/cjs/services/KafkaService.d.ts.map +0 -1
  249. package/dist/cjs/services/KafkaService.js +0 -123
  250. package/dist/cjs/services/KafkaService.js.map +0 -1
  251. package/dist/cjs/services/ModelFetcher.js.map +0 -1
  252. package/dist/cjs/services/RedisService.js.map +0 -1
  253. package/dist/cjs/services/SocketService.js.map +0 -1
  254. package/dist/cjs/services/index.js +0 -23
  255. package/dist/cjs/store/AgentStore.js.map +0 -1
  256. package/dist/cjs/store/ArtifactStore.js.map +0 -1
  257. package/dist/cjs/store/ConfigStore.js.map +0 -1
  258. package/dist/cjs/store/ModelStore.js.map +0 -1
  259. package/dist/cjs/store/ModelStore.test.js.map +0 -1
  260. package/dist/esm/helpers/SetupHelper.d.ts +0 -5
  261. package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
  262. package/dist/esm/helpers/SetupHelper.js +0 -32
  263. package/dist/esm/helpers/SetupHelper.js.map +0 -1
  264. package/dist/esm/libs/kafka/config.d.ts +0 -5
  265. package/dist/esm/libs/kafka/config.d.ts.map +0 -1
  266. package/dist/esm/libs/kafka/config.js +0 -5
  267. package/dist/esm/libs/kafka/config.js.map +0 -1
  268. package/dist/esm/libs/kafka/consumer.d.ts +0 -16
  269. package/dist/esm/libs/kafka/consumer.d.ts.map +0 -1
  270. package/dist/esm/libs/kafka/consumer.js +0 -126
  271. package/dist/esm/libs/kafka/consumer.js.map +0 -1
  272. package/dist/esm/libs/kafka/index.d.ts +0 -3
  273. package/dist/esm/libs/kafka/index.d.ts.map +0 -1
  274. package/dist/esm/libs/kafka/index.js +0 -3
  275. package/dist/esm/libs/kafka/index.js.map +0 -1
  276. package/dist/esm/libs/kafka/kafka.d.ts +0 -3
  277. package/dist/esm/libs/kafka/kafka.d.ts.map +0 -1
  278. package/dist/esm/libs/kafka/kafka.js +0 -24
  279. package/dist/esm/libs/kafka/kafka.js.map +0 -1
  280. package/dist/esm/libs/kafka/producer.d.ts +0 -11
  281. package/dist/esm/libs/kafka/producer.d.ts.map +0 -1
  282. package/dist/esm/libs/kafka/producer.js +0 -44
  283. package/dist/esm/libs/kafka/producer.js.map +0 -1
  284. package/dist/esm/libs/logger/config.d.ts +0 -5
  285. package/dist/esm/libs/logger/config.d.ts.map +0 -1
  286. package/dist/esm/libs/logger/config.js +0 -6
  287. package/dist/esm/libs/logger/config.js.map +0 -1
  288. package/dist/esm/libs/s3/config.d.ts +0 -7
  289. package/dist/esm/libs/s3/config.d.ts.map +0 -1
  290. package/dist/esm/libs/s3/config.js +0 -7
  291. package/dist/esm/libs/s3/config.js.map +0 -1
  292. package/dist/esm/services/KafkaService.d.ts +0 -35
  293. package/dist/esm/services/KafkaService.d.ts.map +0 -1
  294. package/dist/esm/services/KafkaService.js +0 -120
  295. package/dist/esm/services/KafkaService.js.map +0 -1
  296. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  297. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  298. /package/dist/cjs/libs/logger/{logger.js → logger.cjs} +0 -0
  299. /package/dist/cjs/libs/logger/{logger.js.map → logger.cjs.map} +0 -0
  300. /package/dist/cjs/tools/{generateChartTool.js → generateChartTool.cjs} +0 -0
  301. /package/dist/cjs/tools/{generateChartTool.js.map → generateChartTool.cjs.map} +0 -0
  302. /package/dist/cjs/tools/{proposeFormValuesTool.js → proposeFormValuesTool.cjs} +0 -0
  303. /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 index_js_1 = require("../services/index.js");
6
- const index_js_2 = require("../services/index.js");
7
- const index_js_3 = require("../helpers/index.js");
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 util_1 = require("util");
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(chatRepository, messageRepository, artifactStore) {
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 === null || params === void 0 ? void 0 : params.userId) {
34
+ if (params?.userId) {
29
35
  filter.userId = params.userId;
30
36
  }
31
- if (params === null || params === void 0 ? void 0 : params.contextKey) {
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: (_a = params === null || params === void 0 ? void 0 : params.sortField) !== null && _a !== void 0 ? _a : 'updatedAt',
38
- order: (_b = params === null || params === void 0 ? void 0 : params.sortOrder) !== null && _b !== void 0 ? _b : ai_agent_types_1.SortOrder.Desc
43
+ field: params?.sortField ?? 'updatedAt',
44
+ order: params?.sortOrder ?? ai_agent_types_1.SortOrder.Desc
39
45
  },
40
- limit: params === null || params === void 0 ? void 0 : params.limit
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
- var _a;
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 index_js_3.AIHelper.generateTitleForMessage(payload.contextKey, [{
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 !== null && attachments !== void 0 ? attachments : [],
113
+ attachments: attachments ?? [],
109
114
  reasoning: "",
110
115
  toolCalls: []
111
116
  });
112
117
  if (chat.userId) {
113
- index_js_1.socketService.emitMessageUpdate(chat.userId, message, excludeSocketId);
118
+ this.socketService.emitMessageUpdate(chat.userId, message, excludeSocketId);
114
119
  }
115
120
  return message;
116
121
  }
117
122
  async createChat(payload, excludeSocketId) {
118
- var _a;
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 index_js_2.kafkaService.sendChatTitleGenerationEvent(chat.id);
135
+ //await kafkaService.sendChatTitleGenerationEvent(chat.id);
132
136
  const initialChatResponse = {
133
137
  ...chat,
134
138
  messages: []
135
139
  };
136
- index_js_1.socketService.emitChatUpdate(targetUserId, initialChatResponse, excludeSocketId);
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) => { var _a; return ((_a = m.toolCalls) !== null && _a !== void 0 ? _a : []).some((c) => c.id === params.toolCallId); });
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 = (_a = message.toolCalls) !== null && _a !== void 0 ? _a : [];
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 = ((_b = target.output) !== null && _b !== void 0 ? _b : {});
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: (_c = params.data) !== null && _c !== void 0 ? _c : {},
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: (_d = params.data) !== null && _d !== void 0 ? _d : {},
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
- index_js_1.socketService.emitMessageUpdate(chat.userId, updatedMessage, params.excludeSocketId);
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 index_js_3.AIHelper.streamAssistantResponse(existingMessages, signal, agentOptions);
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Error, data: chunk.error });
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Aborted, data: undefined });
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
- index_js_1.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
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 = (_a = totalUsage.totalTokens) !== null && _a !== void 0 ? _a : (((_b = totalUsage.promptTokens) !== null && _b !== void 0 ? _b : 0) + ((_c = totalUsage.completionTokens) !== null && _c !== void 0 ? _c : 0));
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 ((_d = assistantMessage.toolCalls) === null || _d === void 0 ? void 0 : _d.some(toolCall => toolCall.requiresConfirmation && toolCall.approvalId && !toolCall.output)) {
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 && ((_e = assistantMessage.toolCalls) === null || _e === void 0 ? void 0 : _e.length) && assistantMessage.toolCalls[((_f = assistantMessage.toolCalls) === null || _f === void 0 ? void 0 : _f.length) - 1].output) {
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Update, data: assistantMessage });
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Finished, data: assistantMessage });
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 ((_g = assistantMessage.toolCalls) === null || _g === void 0 ? void 0 : _g.some(toolCall => toolCall.requiresConfirmation && toolCall.approvalId && !toolCall.output)) {
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Finished, data: assistantMessage });
262
+ await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
255
263
  }
256
264
  else {
257
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, {
258
- type: index_js_4.AgentProcessEventType.Update,
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Finished, data: assistantMessage });
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
- index_js_1.socketService.emitMessageUpdate(chat.userId, updatedMessage, excludeSocketId);
276
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Update, data: updatedMessage });
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 = (_h = assistantMessage.toolCalls) === null || _h === void 0 ? void 0 : _h.find(toolCall => toolCall.id === chunk.toolCallId);
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 = (_j = assistantMessage.toolCalls) === null || _j === void 0 ? void 0 : _j.find(toolCall => toolCall.id === chunk.toolCallId);
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 = (_k = assistantMessage.toolCalls) === null || _k === void 0 ? void 0 : _k.find(toolCall => toolCall.id === chunk.toolCall.toolCallId);
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 = (_l = assistantMessage.toolCalls) === null || _l === void 0 ? void 0 : _l.find(toolCall => toolCall.id === chunk.toolCallId);
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
- index_js_1.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
339
+ this.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
332
340
  await this.messageRepository.update(assistantMessage.id, { reasoning: assistantMessage.reasoning });
333
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Update, data: assistantMessage });
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Error, data: streamError });
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 index_js_3.AIHelper.getAgentOptions({
362
+ const agentOptions = await this.aiHelper.getAgentOptions({
356
363
  agentName: assistantMessage.agentName,
357
364
  context: payload.context
358
365
  });
359
- const toolCall = (_a = assistantMessage.toolCalls) === null || _a === void 0 ? void 0 : _a.find(tc => tc.approvalId === payload.approvalId);
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 = (_c = (_b = agentOptions.tools) === null || _b === void 0 ? void 0 : _b[toolCall.name]) === null || _c === void 0 ? void 0 : _c.execute;
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
- index_js_6.logger.error(error);
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 index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Update, data: userMessage });
409
- const agentOptions = await index_js_3.AIHelper.getAgentOptions({
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 index_js_3.AIHelper.convertMessages([...prevMessages, userMessage], true),
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 = index_js_4.agentStore.registerAgentProcess(chat.id);
427
- onAgentStart === null || onAgentStart === void 0 ? void 0 : 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 = index_js_5.ContextLimiter.limitContext(existingMessages, {
433
- maxMessages: config_js_1.config.ai.maxContextMessages,
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 index_js_4.AgentProcessEventType.Update:
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 index_js_4.AgentProcessEventType.Error:
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 index_js_4.AgentProcessEventType.Finished:
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 index_js_4.AgentProcessEventType.Aborted:
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 index_js_4.AgentProcessEventType.Stop:
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
- index_js_6.logger.error({ error }, 'Message stream error');
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
- index_js_6.logger.error({ e }, 'Failed to end SSE stream');
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 (ended)
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 === index_js_4.AgentProcessEventType.Finished ||
532
- event.type === index_js_4.AgentProcessEventType.Error ||
533
- event.type === index_js_4.AgentProcessEventType.Aborted) {
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
- index_js_4.agentStore.removeListener(chatId, listener);
555
+ this.agentStore.removeListener(chatId, listener);
550
556
  };
551
557
  const errorHandler = (err) => {
552
- index_js_6.logger.error({ err }, 'Readable stream error');
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 = index_js_4.agentStore.addListener(chatId, listener);
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
- (async () => {
570
- try {
571
- const chat = await this.upsertAndGetChat(payload, excludeSocketId);
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":"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"}