@multiplayer-app/ai-agent-node 0.1.0-beta.3 → 0.1.0-beta.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) 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.cjs +386 -0
  6. package/dist/cjs/helpers/AIHelper.cjs.map +1 -0
  7. package/dist/cjs/helpers/AIHelper.d.ts +20 -13
  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} +15 -7
  12. package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -0
  13. package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -1
  14. package/dist/cjs/helpers/{ContextLimiter.js → ContextLimiter.cjs} +2 -3
  15. package/dist/cjs/helpers/{ContextLimiter.js.map → ContextLimiter.cjs.map} +1 -1
  16. package/dist/cjs/helpers/FileHelper.cjs +193 -0
  17. package/dist/cjs/helpers/FileHelper.cjs.map +1 -0
  18. package/dist/cjs/helpers/FileHelper.d.ts +19 -25
  19. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
  20. package/dist/cjs/{store/index.js → helpers/index.cjs} +4 -4
  21. package/dist/cjs/helpers/{index.js.map → index.cjs.map} +1 -1
  22. package/dist/cjs/helpers/index.d.ts +4 -5
  23. package/dist/cjs/helpers/index.d.ts.map +1 -1
  24. package/dist/cjs/index.cjs +114 -0
  25. package/dist/cjs/index.cjs.map +1 -0
  26. package/dist/cjs/index.d.ts +39 -13
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/libs/{kafka/index.js → index.cjs} +2 -2
  29. package/dist/cjs/libs/{index.js.map → index.cjs.map} +1 -1
  30. package/dist/cjs/libs/index.d.ts +2 -3
  31. package/dist/cjs/libs/index.d.ts.map +1 -1
  32. package/dist/cjs/libs/logger/{index.js → index.cjs} +5 -5
  33. package/dist/cjs/libs/logger/{index.js.map → index.cjs.map} +1 -1
  34. package/dist/cjs/libs/logger/index.d.ts +2 -2
  35. package/dist/cjs/libs/logger/index.d.ts.map +1 -1
  36. package/dist/cjs/libs/logger/{kafkajs-logger-creator.js → kafkajs-logger-creator.cjs} +2 -2
  37. package/dist/cjs/libs/logger/{kafkajs-logger-creator.js.map → kafkajs-logger-creator.cjs.map} +1 -1
  38. package/dist/cjs/libs/s3/index.cjs +8 -0
  39. package/dist/cjs/libs/s3/index.cjs.map +1 -0
  40. package/dist/cjs/libs/s3/index.d.ts +1 -2
  41. package/dist/cjs/libs/s3/index.d.ts.map +1 -1
  42. package/dist/cjs/libs/s3/s3.lib.cjs +207 -0
  43. package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -0
  44. package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
  45. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
  46. package/dist/cjs/processors/{ChatProcessor.js → ChatProcessor.cjs} +111 -149
  47. package/dist/cjs/processors/ChatProcessor.cjs.map +1 -0
  48. package/dist/cjs/processors/ChatProcessor.d.ts +23 -7
  49. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
  50. package/dist/cjs/processors/ChatProcessor.test.cjs +276 -0
  51. package/dist/cjs/processors/ChatProcessor.test.cjs.map +1 -0
  52. package/dist/cjs/processors/ChatProcessor.test.d.ts +2 -0
  53. package/dist/cjs/processors/ChatProcessor.test.d.ts.map +1 -0
  54. package/dist/cjs/processors/{ModelsProcessor.js → ModelsProcessor.cjs} +2 -2
  55. package/dist/cjs/processors/{ModelsProcessor.js.map → ModelsProcessor.cjs.map} +1 -1
  56. package/dist/cjs/processors/{index.js → index.cjs} +2 -2
  57. package/dist/cjs/processors/{index.js.map → index.cjs.map} +1 -1
  58. package/dist/cjs/processors/index.d.ts +2 -2
  59. package/dist/cjs/processors/index.d.ts.map +1 -1
  60. package/dist/cjs/services/{AIService.js → AIService.cjs} +42 -30
  61. package/dist/cjs/services/AIService.cjs.map +1 -0
  62. package/dist/cjs/services/AIService.d.ts +13 -4
  63. package/dist/cjs/services/AIService.d.ts.map +1 -1
  64. package/dist/cjs/services/{InternalEventsHandler.js → InternalEventsHandler.cjs} +5 -5
  65. package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -0
  66. package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
  67. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
  68. package/dist/cjs/services/{ModelFetcher.js → ModelFetcher.cjs} +9 -15
  69. package/dist/cjs/services/ModelFetcher.cjs.map +1 -0
  70. package/dist/cjs/services/ModelFetcher.d.ts +2 -7
  71. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
  72. package/dist/cjs/services/{RedisService.js → RedisService.cjs} +35 -32
  73. package/dist/cjs/services/RedisService.cjs.map +1 -0
  74. package/dist/cjs/services/RedisService.d.ts +5 -2
  75. package/dist/cjs/services/RedisService.d.ts.map +1 -1
  76. package/dist/cjs/services/{SocketService.js → SocketService.cjs} +19 -20
  77. package/dist/cjs/services/SocketService.cjs.map +1 -0
  78. package/dist/cjs/services/SocketService.d.ts +7 -4
  79. package/dist/cjs/services/SocketService.d.ts.map +1 -1
  80. package/dist/cjs/{helpers/index.js → services/index.cjs} +5 -5
  81. package/dist/cjs/services/{index.js.map → index.cjs.map} +1 -1
  82. package/dist/cjs/services/index.d.ts +5 -6
  83. package/dist/cjs/services/index.d.ts.map +1 -1
  84. package/dist/cjs/store/{AgentStore.js → AgentStore.cjs} +4 -5
  85. package/dist/cjs/store/AgentStore.cjs.map +1 -0
  86. package/dist/cjs/store/AgentStore.d.ts +2 -1
  87. package/dist/cjs/store/AgentStore.d.ts.map +1 -1
  88. package/dist/cjs/store/{ArtifactStore.js → ArtifactStore.cjs} +2 -4
  89. package/dist/cjs/store/ArtifactStore.cjs.map +1 -0
  90. package/dist/cjs/store/{ConfigStore.js → ConfigStore.cjs} +8 -11
  91. package/dist/cjs/store/ConfigStore.cjs.map +1 -0
  92. package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
  93. package/dist/cjs/store/{ConfigStore.test.js → ConfigStore.test.cjs} +2 -2
  94. package/dist/cjs/store/{ConfigStore.test.js.map → ConfigStore.test.cjs.map} +1 -1
  95. package/dist/cjs/store/{ModelStore.js → ModelStore.cjs} +4 -4
  96. package/dist/cjs/store/ModelStore.cjs.map +1 -0
  97. package/dist/cjs/store/{ModelStore.test.js → ModelStore.test.cjs} +17 -17
  98. package/dist/cjs/store/ModelStore.test.cjs.map +1 -0
  99. package/dist/cjs/{libs/index.js → store/index.cjs} +4 -3
  100. package/dist/cjs/store/{index.js.map → index.cjs.map} +1 -1
  101. package/dist/cjs/store/index.d.ts +4 -4
  102. package/dist/cjs/store/index.d.ts.map +1 -1
  103. package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
  104. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  105. package/dist/esm/config.d.ts +56 -23
  106. package/dist/esm/config.d.ts.map +1 -1
  107. package/dist/esm/config.js +88 -36
  108. package/dist/esm/config.js.map +1 -1
  109. package/dist/esm/helpers/AIHelper.d.ts +20 -13
  110. package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
  111. package/dist/esm/helpers/AIHelper.js +152 -94
  112. package/dist/esm/helpers/AIHelper.js.map +1 -1
  113. package/dist/esm/helpers/AIHelper.test.js +21 -14
  114. package/dist/esm/helpers/AIHelper.test.js.map +1 -1
  115. package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -1
  116. package/dist/esm/helpers/ConfigHelper.js +13 -5
  117. package/dist/esm/helpers/ConfigHelper.js.map +1 -1
  118. package/dist/esm/helpers/ContextLimiter.js +2 -3
  119. package/dist/esm/helpers/ContextLimiter.js.map +1 -1
  120. package/dist/esm/helpers/FileHelper.d.ts +19 -25
  121. package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
  122. package/dist/esm/helpers/FileHelper.js +132 -149
  123. package/dist/esm/helpers/FileHelper.js.map +1 -1
  124. package/dist/esm/helpers/index.d.ts +4 -5
  125. package/dist/esm/helpers/index.d.ts.map +1 -1
  126. package/dist/esm/helpers/index.js +4 -5
  127. package/dist/esm/helpers/index.js.map +1 -1
  128. package/dist/esm/index.d.ts +39 -13
  129. package/dist/esm/index.d.ts.map +1 -1
  130. package/dist/esm/index.js +79 -12
  131. package/dist/esm/index.js.map +1 -1
  132. package/dist/esm/libs/index.d.ts +2 -3
  133. package/dist/esm/libs/index.d.ts.map +1 -1
  134. package/dist/esm/libs/index.js +2 -3
  135. package/dist/esm/libs/index.js.map +1 -1
  136. package/dist/esm/libs/logger/index.d.ts +2 -2
  137. package/dist/esm/libs/logger/index.d.ts.map +1 -1
  138. package/dist/esm/libs/logger/index.js +2 -2
  139. package/dist/esm/libs/logger/index.js.map +1 -1
  140. package/dist/esm/libs/logger/kafkajs-logger-creator.js +1 -1
  141. package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -1
  142. package/dist/esm/libs/s3/index.d.ts +1 -2
  143. package/dist/esm/libs/s3/index.d.ts.map +1 -1
  144. package/dist/esm/libs/s3/index.js +1 -2
  145. package/dist/esm/libs/s3/index.js.map +1 -1
  146. package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
  147. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
  148. package/dist/esm/libs/s3/s3.lib.js +178 -177
  149. package/dist/esm/libs/s3/s3.lib.js.map +1 -1
  150. package/dist/esm/processors/ChatProcessor.d.ts +23 -7
  151. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
  152. package/dist/esm/processors/ChatProcessor.js +107 -138
  153. package/dist/esm/processors/ChatProcessor.js.map +1 -1
  154. package/dist/esm/processors/ChatProcessor.test.d.ts +2 -0
  155. package/dist/esm/processors/ChatProcessor.test.d.ts.map +1 -0
  156. package/dist/esm/processors/ChatProcessor.test.js +274 -0
  157. package/dist/esm/processors/ChatProcessor.test.js.map +1 -0
  158. package/dist/esm/processors/ModelsProcessor.js +1 -1
  159. package/dist/esm/processors/ModelsProcessor.js.map +1 -1
  160. package/dist/esm/processors/index.d.ts +2 -2
  161. package/dist/esm/processors/index.d.ts.map +1 -1
  162. package/dist/esm/processors/index.js +2 -2
  163. package/dist/esm/processors/index.js.map +1 -1
  164. package/dist/esm/services/AIService.d.ts +13 -4
  165. package/dist/esm/services/AIService.d.ts.map +1 -1
  166. package/dist/esm/services/AIService.js +45 -31
  167. package/dist/esm/services/AIService.js.map +1 -1
  168. package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
  169. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
  170. package/dist/esm/services/InternalEventsHandler.js +10 -8
  171. package/dist/esm/services/InternalEventsHandler.js.map +1 -1
  172. package/dist/esm/services/ModelFetcher.d.ts +2 -7
  173. package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
  174. package/dist/esm/services/ModelFetcher.js +4 -9
  175. package/dist/esm/services/ModelFetcher.js.map +1 -1
  176. package/dist/esm/services/RedisService.d.ts +5 -2
  177. package/dist/esm/services/RedisService.d.ts.map +1 -1
  178. package/dist/esm/services/RedisService.js +25 -21
  179. package/dist/esm/services/RedisService.js.map +1 -1
  180. package/dist/esm/services/SocketService.d.ts +7 -4
  181. package/dist/esm/services/SocketService.d.ts.map +1 -1
  182. package/dist/esm/services/SocketService.js +15 -13
  183. package/dist/esm/services/SocketService.js.map +1 -1
  184. package/dist/esm/services/index.d.ts +5 -6
  185. package/dist/esm/services/index.d.ts.map +1 -1
  186. package/dist/esm/services/index.js +5 -6
  187. package/dist/esm/services/index.js.map +1 -1
  188. package/dist/esm/store/AgentStore.d.ts +2 -1
  189. package/dist/esm/store/AgentStore.d.ts.map +1 -1
  190. package/dist/esm/store/AgentStore.js +5 -5
  191. package/dist/esm/store/AgentStore.js.map +1 -1
  192. package/dist/esm/store/ArtifactStore.js +3 -7
  193. package/dist/esm/store/ArtifactStore.js.map +1 -1
  194. package/dist/esm/store/ConfigStore.d.ts.map +1 -1
  195. package/dist/esm/store/ConfigStore.js +16 -19
  196. package/dist/esm/store/ConfigStore.js.map +1 -1
  197. package/dist/esm/store/ConfigStore.test.js +1 -1
  198. package/dist/esm/store/ConfigStore.test.js.map +1 -1
  199. package/dist/esm/store/ModelStore.js +6 -6
  200. package/dist/esm/store/ModelStore.js.map +1 -1
  201. package/dist/esm/store/ModelStore.test.js +12 -12
  202. package/dist/esm/store/ModelStore.test.js.map +1 -1
  203. package/dist/esm/store/index.d.ts +4 -4
  204. package/dist/esm/store/index.d.ts.map +1 -1
  205. package/dist/esm/store/index.js +4 -4
  206. package/dist/esm/store/index.js.map +1 -1
  207. package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
  208. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  209. package/package.json +13 -12
  210. package/dist/cjs/config.js +0 -48
  211. package/dist/cjs/config.js.map +0 -1
  212. package/dist/cjs/helpers/AIHelper.js +0 -330
  213. package/dist/cjs/helpers/AIHelper.js.map +0 -1
  214. package/dist/cjs/helpers/AIHelper.test.js.map +0 -1
  215. package/dist/cjs/helpers/ConfigHelper.js.map +0 -1
  216. package/dist/cjs/helpers/FileHelper.js +0 -215
  217. package/dist/cjs/helpers/FileHelper.js.map +0 -1
  218. package/dist/cjs/helpers/SetupHelper.d.ts +0 -5
  219. package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
  220. package/dist/cjs/helpers/SetupHelper.js +0 -37
  221. package/dist/cjs/helpers/SetupHelper.js.map +0 -1
  222. package/dist/cjs/index.js +0 -34
  223. package/dist/cjs/index.js.map +0 -1
  224. package/dist/cjs/libs/kafka/config.d.ts +0 -5
  225. package/dist/cjs/libs/kafka/config.d.ts.map +0 -1
  226. package/dist/cjs/libs/kafka/config.js +0 -8
  227. package/dist/cjs/libs/kafka/config.js.map +0 -1
  228. package/dist/cjs/libs/kafka/consumer.d.ts +0 -16
  229. package/dist/cjs/libs/kafka/consumer.d.ts.map +0 -1
  230. package/dist/cjs/libs/kafka/consumer.js +0 -133
  231. package/dist/cjs/libs/kafka/consumer.js.map +0 -1
  232. package/dist/cjs/libs/kafka/index.d.ts +0 -3
  233. package/dist/cjs/libs/kafka/index.d.ts.map +0 -1
  234. package/dist/cjs/libs/kafka/index.js.map +0 -1
  235. package/dist/cjs/libs/kafka/kafka.d.ts +0 -3
  236. package/dist/cjs/libs/kafka/kafka.d.ts.map +0 -1
  237. package/dist/cjs/libs/kafka/kafka.js +0 -27
  238. package/dist/cjs/libs/kafka/kafka.js.map +0 -1
  239. package/dist/cjs/libs/kafka/producer.d.ts +0 -11
  240. package/dist/cjs/libs/kafka/producer.d.ts.map +0 -1
  241. package/dist/cjs/libs/kafka/producer.js +0 -48
  242. package/dist/cjs/libs/kafka/producer.js.map +0 -1
  243. package/dist/cjs/libs/logger/config.d.ts +0 -5
  244. package/dist/cjs/libs/logger/config.d.ts.map +0 -1
  245. package/dist/cjs/libs/logger/config.js +0 -9
  246. package/dist/cjs/libs/logger/config.js.map +0 -1
  247. package/dist/cjs/libs/s3/config.d.ts +0 -7
  248. package/dist/cjs/libs/s3/config.d.ts.map +0 -1
  249. package/dist/cjs/libs/s3/config.js +0 -10
  250. package/dist/cjs/libs/s3/config.js.map +0 -1
  251. package/dist/cjs/libs/s3/index.js +0 -44
  252. package/dist/cjs/libs/s3/index.js.map +0 -1
  253. package/dist/cjs/libs/s3/s3.lib.js +0 -224
  254. package/dist/cjs/libs/s3/s3.lib.js.map +0 -1
  255. package/dist/cjs/processors/ChatProcessor.js.map +0 -1
  256. package/dist/cjs/services/AIService.js.map +0 -1
  257. package/dist/cjs/services/InternalEventsHandler.js.map +0 -1
  258. package/dist/cjs/services/KafkaService.d.ts +0 -35
  259. package/dist/cjs/services/KafkaService.d.ts.map +0 -1
  260. package/dist/cjs/services/KafkaService.js +0 -123
  261. package/dist/cjs/services/KafkaService.js.map +0 -1
  262. package/dist/cjs/services/ModelFetcher.js.map +0 -1
  263. package/dist/cjs/services/RedisService.js.map +0 -1
  264. package/dist/cjs/services/SocketService.js.map +0 -1
  265. package/dist/cjs/services/index.js +0 -23
  266. package/dist/cjs/store/AgentStore.js.map +0 -1
  267. package/dist/cjs/store/ArtifactStore.js.map +0 -1
  268. package/dist/cjs/store/ConfigStore.js.map +0 -1
  269. package/dist/cjs/store/ModelStore.js.map +0 -1
  270. package/dist/cjs/store/ModelStore.test.js.map +0 -1
  271. package/dist/esm/helpers/SetupHelper.d.ts +0 -5
  272. package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
  273. package/dist/esm/helpers/SetupHelper.js +0 -32
  274. package/dist/esm/helpers/SetupHelper.js.map +0 -1
  275. package/dist/esm/libs/kafka/config.d.ts +0 -5
  276. package/dist/esm/libs/kafka/config.d.ts.map +0 -1
  277. package/dist/esm/libs/kafka/config.js +0 -5
  278. package/dist/esm/libs/kafka/config.js.map +0 -1
  279. package/dist/esm/libs/kafka/consumer.d.ts +0 -16
  280. package/dist/esm/libs/kafka/consumer.d.ts.map +0 -1
  281. package/dist/esm/libs/kafka/consumer.js +0 -126
  282. package/dist/esm/libs/kafka/consumer.js.map +0 -1
  283. package/dist/esm/libs/kafka/index.d.ts +0 -3
  284. package/dist/esm/libs/kafka/index.d.ts.map +0 -1
  285. package/dist/esm/libs/kafka/index.js +0 -3
  286. package/dist/esm/libs/kafka/index.js.map +0 -1
  287. package/dist/esm/libs/kafka/kafka.d.ts +0 -3
  288. package/dist/esm/libs/kafka/kafka.d.ts.map +0 -1
  289. package/dist/esm/libs/kafka/kafka.js +0 -24
  290. package/dist/esm/libs/kafka/kafka.js.map +0 -1
  291. package/dist/esm/libs/kafka/producer.d.ts +0 -11
  292. package/dist/esm/libs/kafka/producer.d.ts.map +0 -1
  293. package/dist/esm/libs/kafka/producer.js +0 -44
  294. package/dist/esm/libs/kafka/producer.js.map +0 -1
  295. package/dist/esm/libs/logger/config.d.ts +0 -5
  296. package/dist/esm/libs/logger/config.d.ts.map +0 -1
  297. package/dist/esm/libs/logger/config.js +0 -6
  298. package/dist/esm/libs/logger/config.js.map +0 -1
  299. package/dist/esm/libs/s3/config.d.ts +0 -7
  300. package/dist/esm/libs/s3/config.d.ts.map +0 -1
  301. package/dist/esm/libs/s3/config.js +0 -7
  302. package/dist/esm/libs/s3/config.js.map +0 -1
  303. package/dist/esm/services/KafkaService.d.ts +0 -35
  304. package/dist/esm/services/KafkaService.d.ts.map +0 -1
  305. package/dist/esm/services/KafkaService.js +0 -120
  306. package/dist/esm/services/KafkaService.js.map +0 -1
  307. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  308. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  309. /package/dist/cjs/libs/logger/{logger.js → logger.cjs} +0 -0
  310. /package/dist/cjs/libs/logger/{logger.js.map → logger.cjs.map} +0 -0
  311. /package/dist/cjs/tools/{generateChartTool.js → generateChartTool.cjs} +0 -0
  312. /package/dist/cjs/tools/{generateChartTool.js.map → generateChartTool.cjs.map} +0 -0
  313. /package/dist/cjs/tools/{proposeFormValuesTool.js → proposeFormValuesTool.cjs} +0 -0
  314. /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,41 +231,27 @@ class ChatProcessor {
229
231
  }
230
232
  if (chunk.totalUsage && typeof chunk.totalUsage === 'object') {
231
233
  const totalUsage = chunk.totalUsage;
232
- assistantMessage.tokens = (_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)) {
237
- await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.WaitingForUserAction });
238
- }
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) {
240
- // 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 });
242
- await this.streamMessageStep(params);
243
- continue;
244
- }
245
- else {
246
- await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.Finished });
239
+ await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.Finished });
240
+ if (chat.title && this.isTemporaryTitle(chat.title)) {
241
+ const title = await this.aiHelper.generateTitleForMessage(chat.contextKey, existingMessages);
242
+ await this.chatRepository.update(chat.id, { title });
243
+ this.socketService.emitChatUpdate(chat.userId, { ...chat, title, messages: [] });
247
244
  }
248
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Finished, data: assistantMessage });
249
- continue;
250
245
  }
251
246
  if (chunk.finishReason === 'tool-calls') {
252
- if ((_g = assistantMessage.toolCalls) === null || _g === void 0 ? void 0 : _g.some(toolCall => toolCall.requiresConfirmation && toolCall.approvalId && !toolCall.output)) {
247
+ if (assistantMessage.toolCalls?.some(toolCall => toolCall.requiresConfirmation && toolCall.approvalId && !toolCall.output)) {
253
248
  await this.chatRepository.update(chat.id, { status: ai_agent_types_1.AgentStatus.WaitingForUserAction });
254
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Finished, data: assistantMessage });
255
- }
256
- else {
257
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, {
258
- type: index_js_4.AgentProcessEventType.Update,
259
- data: assistantMessage
260
- });
261
- await this.streamMessageStep(params);
249
+ await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
250
+ continue;
262
251
  }
263
- continue;
264
252
  }
265
253
  //todo: Handle other finish reasons // length, content, error, other, undefined
266
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Finished, data: assistantMessage });
254
+ await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Finished, data: assistantMessage });
267
255
  continue;
268
256
  }
269
257
  if (chunk.type === 'text-delta') {
@@ -272,8 +260,8 @@ class ChatProcessor {
272
260
  ...assistantMessage,
273
261
  content: assistantMessage.content
274
262
  };
275
- 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 });
263
+ this.socketService.emitMessageUpdate(chat.userId, updatedMessage, excludeSocketId);
264
+ await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: updatedMessage });
277
265
  await this.messageRepository.update(assistantMessage.id, { content: assistantMessage.content });
278
266
  continue;
279
267
  }
@@ -288,8 +276,8 @@ class ChatProcessor {
288
276
  });
289
277
  continue;
290
278
  }
291
- if (chunk.type === 'tool-call') { //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);
279
+ if (chunk.type === 'tool-call') {
280
+ const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
293
281
  if (toolCall) {
294
282
  toolCall.status = ai_agent_types_1.AgentToolCallStatus.Running;
295
283
  toolCall.input = chunk.input;
@@ -297,15 +285,15 @@ class ChatProcessor {
297
285
  continue;
298
286
  }
299
287
  if (chunk.type === 'tool-error') {
300
- const toolCall = (_j = assistantMessage.toolCalls) === null || _j === void 0 ? void 0 : _j.find(toolCall => toolCall.id === chunk.toolCallId);
288
+ const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
301
289
  if (toolCall) {
302
290
  toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
303
- toolCall.error = JSON.stringify(chunk.error);
291
+ toolCall.error = chunk.error.message || JSON.stringify(chunk.error);
304
292
  }
305
293
  continue;
306
294
  }
307
295
  if (chunk.type === 'tool-approval-request') {
308
- const toolCall = (_k = assistantMessage.toolCalls) === null || _k === void 0 ? void 0 : _k.find(toolCall => toolCall.id === chunk.toolCall.toolCallId);
296
+ const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCall.toolCallId);
309
297
  if (toolCall) {
310
298
  toolCall.requiresConfirmation = true;
311
299
  toolCall.approvalId = chunk.approvalId;
@@ -313,7 +301,7 @@ class ChatProcessor {
313
301
  continue;
314
302
  }
315
303
  if (chunk.type === 'tool-result') {
316
- const toolCall = (_l = assistantMessage.toolCalls) === null || _l === void 0 ? void 0 : _l.find(toolCall => toolCall.id === chunk.toolCallId);
304
+ const toolCall = assistantMessage.toolCalls?.find(toolCall => toolCall.id === chunk.toolCallId);
317
305
  if (toolCall) {
318
306
  if (chunk.output.requiresApproval) {
319
307
  toolCall.requiresConfirmation = true;
@@ -328,9 +316,9 @@ class ChatProcessor {
328
316
  if (!assistantMessage.reasoning)
329
317
  assistantMessage.reasoning = '';
330
318
  assistantMessage.reasoning += chunk.text;
331
- index_js_1.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
319
+ this.socketService.emitMessageUpdate(chat.userId, assistantMessage, excludeSocketId);
332
320
  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 });
321
+ await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: assistantMessage });
334
322
  continue;
335
323
  }
336
324
  }
@@ -339,7 +327,7 @@ class ChatProcessor {
339
327
  if (streamError instanceof Error && streamError.name === 'AbortError') {
340
328
  return;
341
329
  }
342
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Error, data: streamError });
330
+ await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Error, data: streamError });
343
331
  throw streamError;
344
332
  }
345
333
  }
@@ -347,16 +335,15 @@ class ChatProcessor {
347
335
  return 'approvalId' in payload;
348
336
  }
349
337
  async processApprovalPayload(chat, payload) {
350
- var _a, _b, _c;
351
338
  const assistantMessage = await this.messageRepository.findById(payload.messageId);
352
339
  if (!assistantMessage || assistantMessage.chat !== chat.id) {
353
340
  throw new Error(`Assistant message with id ${payload.messageId} not found`);
354
341
  }
355
- const agentOptions = await index_js_3.AIHelper.getAgentOptions({
342
+ const agentOptions = await this.aiHelper.getAgentOptions({
356
343
  agentName: assistantMessage.agentName,
357
344
  context: payload.context
358
345
  });
359
- const toolCall = (_a = assistantMessage.toolCalls) === null || _a === void 0 ? void 0 : _a.find(tc => tc.approvalId === payload.approvalId);
346
+ const toolCall = assistantMessage.toolCalls?.find(tc => tc.approvalId === payload.approvalId);
360
347
  if (!toolCall) {
361
348
  // continue, tool is not found
362
349
  return {
@@ -374,14 +361,14 @@ class ChatProcessor {
374
361
  toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
375
362
  }
376
363
  else {
377
- const executeFunction = (_c = (_b = agentOptions.tools) === null || _b === void 0 ? void 0 : _b[toolCall.name]) === null || _c === void 0 ? void 0 : _c.execute;
364
+ const executeFunction = agentOptions.tools?.[toolCall.name]?.execute;
378
365
  if (executeFunction) {
379
366
  try {
380
367
  toolCall.output = await executeFunction(toolCall.input, { toolCallId: toolCall.id, messages: [] });
381
368
  toolCall.status = ai_agent_types_1.AgentToolCallStatus.Succeeded;
382
369
  }
383
370
  catch (error) {
384
- index_js_6.logger.error(error);
371
+ logger_1.logger.error(error);
385
372
  toolCall.status = ai_agent_types_1.AgentToolCallStatus.Failed;
386
373
  toolCall.output = {
387
374
  type: 'execution-denied',
@@ -405,10 +392,10 @@ class ChatProcessor {
405
392
  }
406
393
  async processNewUserMessage(chat, payload, prevMessages, excludeSocketId) {
407
394
  const userMessage = await this.createMessage(chat, ai_agent_types_1.MessageRole.User, { content: payload.content, agentName: undefined }, payload.attachments);
408
- await index_js_4.agentStore.shareAgentProcessEvent(chat.id, { type: index_js_4.AgentProcessEventType.Update, data: userMessage });
409
- const agentOptions = await index_js_3.AIHelper.getAgentOptions({
395
+ await this.agentStore.shareAgentProcessEvent(chat.id, { type: store_1.AgentProcessEventType.Update, data: userMessage });
396
+ const agentOptions = await this.aiHelper.getAgentOptions({
410
397
  contextKey: chat.contextKey,
411
- messages: await index_js_3.AIHelper.convertMessages([...prevMessages, userMessage], true),
398
+ messages: [...prevMessages, userMessage],
412
399
  context: payload.context,
413
400
  agentName: undefined,
414
401
  modelId: chat.model,
@@ -423,14 +410,14 @@ class ChatProcessor {
423
410
  }
424
411
  async streamMessage(chat, payload, excludeSocketId, onAgentStart) {
425
412
  try {
426
- const abortController = index_js_4.agentStore.registerAgentProcess(chat.id);
427
- onAgentStart === null || onAgentStart === void 0 ? void 0 : onAgentStart();
413
+ const abortController = this.agentStore.registerAgentProcess(chat.id);
414
+ onAgentStart?.();
428
415
  let assistantMessage;
429
416
  let agentOptions;
430
417
  const existingMessages = await this.messageRepository.findByChatId(chat.id);
431
418
  // Limit context to prevent exceeding token limits
432
- const limitedMessages = index_js_5.ContextLimiter.limitContext(existingMessages, {
433
- maxMessages: config_js_1.config.ai.maxContextMessages,
419
+ const limitedMessages = helpers_2.ContextLimiter.limitContext(existingMessages, {
420
+ maxMessages: this.config.ai.maxContextMessages,
434
421
  keepFirstUserMessage: true,
435
422
  keepSystemMessages: true,
436
423
  });
@@ -470,32 +457,32 @@ class ChatProcessor {
470
457
  }
471
458
  eventToChunk(event) {
472
459
  switch (event.type) {
473
- case index_js_4.AgentProcessEventType.Update:
460
+ case store_1.AgentProcessEventType.Update:
474
461
  return {
475
462
  type: ai_agent_types_1.StreamChunkType.Message,
476
463
  message: event.data
477
464
  };
478
- case index_js_4.AgentProcessEventType.Error:
465
+ case store_1.AgentProcessEventType.Error:
479
466
  return {
480
467
  type: ai_agent_types_1.StreamChunkType.Error,
481
468
  error: event.data.message || 'Unknown error occurred'
482
469
  };
483
- case index_js_4.AgentProcessEventType.Finished:
470
+ case store_1.AgentProcessEventType.Finished:
484
471
  return {
485
472
  type: ai_agent_types_1.StreamChunkType.Message,
486
473
  message: event.data
487
474
  };
488
- case index_js_4.AgentProcessEventType.Aborted:
475
+ case store_1.AgentProcessEventType.Aborted:
489
476
  // Aborted events don't produce chunks, they just signal stream end
490
477
  return null;
491
- case index_js_4.AgentProcessEventType.Stop:
478
+ case store_1.AgentProcessEventType.Stop:
492
479
  // Stop events don't produce chunks
493
480
  return null;
494
481
  default:
495
482
  return null;
496
483
  }
497
484
  }
498
- getMessageStream(chatId) {
485
+ getMessageStream(chatId, signal) {
499
486
  const stream = new stream_1.PassThrough();
500
487
  let ended = false;
501
488
  const endStream = (error) => {
@@ -503,7 +490,7 @@ class ChatProcessor {
503
490
  return;
504
491
  ended = true;
505
492
  if (error) {
506
- index_js_6.logger.error({ error }, 'Message stream error');
493
+ logger_1.logger.error({ error }, 'Message stream error');
507
494
  }
508
495
  if (!stream.destroyed && !stream.writableEnded) {
509
496
  try {
@@ -511,28 +498,29 @@ class ChatProcessor {
511
498
  stream.end();
512
499
  }
513
500
  catch (e) {
514
- index_js_6.logger.error({ e }, 'Failed to end SSE stream');
501
+ logger_1.logger.error({ e }, 'Failed to end SSE stream');
515
502
  }
516
503
  }
517
504
  };
518
505
  const pushChunk = (chunk) => {
519
- if (ended || stream.destroyed || stream.writableEnded)
506
+ if (ended || stream.destroyed || stream.writableEnded || signal?.aborted)
520
507
  return;
521
508
  stream.write(`data: ${JSON.stringify(chunk)}\n\n`);
522
509
  };
523
510
  const listener = (event) => {
524
- if (ended)
511
+ if (signal?.aborted) {
512
+ endStream();
525
513
  return;
514
+ }
526
515
  try {
527
516
  const chunk = this.eventToChunk(event);
528
517
  if (chunk) {
529
518
  pushChunk(chunk);
530
519
  }
531
- if (event.type === index_js_4.AgentProcessEventType.Finished ||
532
- event.type === index_js_4.AgentProcessEventType.Error ||
533
- event.type === index_js_4.AgentProcessEventType.Aborted) {
520
+ if (event.type === store_1.AgentProcessEventType.Finished ||
521
+ event.type === store_1.AgentProcessEventType.Error ||
522
+ event.type === store_1.AgentProcessEventType.Aborted) {
534
523
  endStream();
535
- index_js_4.agentStore.removeListener(chatId, listener);
536
524
  }
537
525
  }
538
526
  catch (err) {
@@ -541,21 +529,18 @@ class ChatProcessor {
541
529
  error: err instanceof Error ? err.message : 'Unknown error occurred',
542
530
  });
543
531
  endStream(err);
544
- index_js_4.agentStore.removeListener(chatId, listener);
545
532
  }
546
533
  };
547
- // Cleanup on consumer side closing
548
534
  const closeHandler = () => {
549
- index_js_4.agentStore.removeListener(chatId, listener);
535
+ this.agentStore.removeListener(chatId, listener);
550
536
  };
551
537
  const errorHandler = (err) => {
552
- index_js_6.logger.error({ err }, 'Readable stream error');
553
- index_js_4.agentStore.removeListener(chatId, listener);
538
+ signal?.removeEventListener('abort', endStream);
554
539
  endStream(err);
555
540
  };
556
541
  stream.on('close', closeHandler);
557
542
  stream.on('error', errorHandler);
558
- const listenerAttached = index_js_4.agentStore.addListener(chatId, listener);
543
+ const listenerAttached = this.agentStore.addListener(chatId, listener);
559
544
  if (!listenerAttached) {
560
545
  // Remove stream listeners if listener attachment failed to prevent memory leak
561
546
  stream.removeListener('close', closeHandler);
@@ -564,51 +549,28 @@ class ChatProcessor {
564
549
  }
565
550
  return stream;
566
551
  }
567
- async createMessageStream(payload, excludeSocketId) {
552
+ async createMessageStream(payload, excludeSocketId, signal) {
568
553
  const stream = new stream_1.PassThrough();
569
- (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);
554
+ this.runMessageStream(stream, payload, excludeSocketId, signal)
555
+ .catch(err => {
556
+ logger_1.logger.error({ err }, 'Stream task failed');
609
557
  });
610
558
  return stream;
611
559
  }
560
+ async runMessageStream(stream, payload, excludeSocketId, signal) {
561
+ const chat = await this.upsertAndGetChat(payload, excludeSocketId);
562
+ if (!('chatId' in payload) && !('messageId' in payload) && chat) {
563
+ stream.write(`data: ${JSON.stringify({
564
+ type: ai_agent_types_1.StreamChunkType.Chat,
565
+ chatId: chat.id,
566
+ chat,
567
+ })}\n\n`);
568
+ }
569
+ await this.streamMessage(chat, payload, excludeSocketId, () => {
570
+ const messageStream = this.getMessageStream(chat.id, signal);
571
+ messageStream.pipe(stream);
572
+ });
573
+ }
612
574
  }
613
575
  exports.ChatProcessor = ChatProcessor;
614
576
  //# sourceMappingURL=ChatProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatProcessor.js","sourceRoot":"","sources":["../../../src/processors/ChatProcessor.ts"],"names":[],"mappings":"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"}