@multiplayer-app/ai-agent-node 0.0.1 → 0.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/dist/cjs/config.d.ts.map +1 -0
  2. package/dist/cjs/config.js +48 -0
  3. package/dist/cjs/config.js.map +1 -0
  4. package/dist/{helpers → cjs/helpers}/AIHelper.d.ts +1 -1
  5. package/dist/cjs/helpers/AIHelper.d.ts.map +1 -0
  6. package/dist/cjs/helpers/AIHelper.js +330 -0
  7. package/dist/cjs/helpers/AIHelper.js.map +1 -0
  8. package/dist/cjs/helpers/AIHelper.test.d.ts.map +1 -0
  9. package/dist/cjs/helpers/AIHelper.test.js +334 -0
  10. package/dist/cjs/helpers/AIHelper.test.js.map +1 -0
  11. package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -0
  12. package/dist/cjs/helpers/ConfigHelper.js +122 -0
  13. package/dist/cjs/helpers/ConfigHelper.js.map +1 -0
  14. package/dist/cjs/helpers/ContextLimiter.d.ts.map +1 -0
  15. package/dist/cjs/helpers/ContextLimiter.js +169 -0
  16. package/dist/cjs/helpers/ContextLimiter.js.map +1 -0
  17. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -0
  18. package/dist/cjs/helpers/FileHelper.js +215 -0
  19. package/dist/cjs/helpers/FileHelper.js.map +1 -0
  20. package/dist/{helpers → cjs/helpers}/SetupHelper.d.ts +1 -1
  21. package/dist/cjs/helpers/SetupHelper.d.ts.map +1 -0
  22. package/dist/cjs/helpers/SetupHelper.js +37 -0
  23. package/dist/cjs/helpers/SetupHelper.js.map +1 -0
  24. package/dist/cjs/helpers/index.d.ts +6 -0
  25. package/dist/cjs/helpers/index.d.ts.map +1 -0
  26. package/dist/cjs/helpers/index.js +22 -0
  27. package/dist/cjs/helpers/index.js.map +1 -0
  28. package/dist/cjs/index.d.ts +14 -0
  29. package/dist/cjs/index.d.ts.map +1 -0
  30. package/dist/cjs/index.js +34 -0
  31. package/dist/cjs/index.js.map +1 -0
  32. package/dist/cjs/libs/index.d.ts +4 -0
  33. package/dist/cjs/libs/index.d.ts.map +1 -0
  34. package/dist/cjs/libs/index.js +20 -0
  35. package/dist/cjs/libs/index.js.map +1 -0
  36. package/dist/cjs/libs/kafka/config.d.ts.map +1 -0
  37. package/dist/cjs/libs/kafka/config.js +8 -0
  38. package/dist/cjs/libs/kafka/config.js.map +1 -0
  39. package/dist/cjs/libs/kafka/consumer.d.ts.map +1 -0
  40. package/dist/cjs/libs/kafka/consumer.js +133 -0
  41. package/dist/cjs/libs/kafka/consumer.js.map +1 -0
  42. package/dist/cjs/libs/kafka/index.d.ts +3 -0
  43. package/dist/cjs/libs/kafka/index.d.ts.map +1 -0
  44. package/dist/cjs/libs/kafka/index.js +19 -0
  45. package/dist/cjs/libs/kafka/index.js.map +1 -0
  46. package/dist/cjs/libs/kafka/kafka.d.ts.map +1 -0
  47. package/dist/cjs/libs/kafka/kafka.js +27 -0
  48. package/dist/cjs/libs/kafka/kafka.js.map +1 -0
  49. package/dist/cjs/libs/kafka/producer.d.ts.map +1 -0
  50. package/dist/cjs/libs/kafka/producer.js +48 -0
  51. package/dist/cjs/libs/kafka/producer.js.map +1 -0
  52. package/dist/cjs/libs/logger/config.d.ts.map +1 -0
  53. package/dist/cjs/libs/logger/config.js +9 -0
  54. package/dist/cjs/libs/logger/config.js.map +1 -0
  55. package/dist/{libs → cjs/libs}/logger/index.d.ts +2 -2
  56. package/dist/cjs/libs/logger/index.d.ts.map +1 -0
  57. package/dist/cjs/libs/logger/index.js +38 -0
  58. package/dist/cjs/libs/logger/index.js.map +1 -0
  59. package/dist/cjs/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
  60. package/dist/cjs/libs/logger/kafkajs-logger-creator.js +33 -0
  61. package/dist/cjs/libs/logger/kafkajs-logger-creator.js.map +1 -0
  62. package/dist/cjs/libs/logger/logger.d.ts.map +1 -0
  63. package/dist/cjs/libs/logger/logger.js +48 -0
  64. package/dist/cjs/libs/logger/logger.js.map +1 -0
  65. package/dist/cjs/libs/s3/config.d.ts.map +1 -0
  66. package/dist/cjs/libs/s3/config.js +10 -0
  67. package/dist/cjs/libs/s3/config.js.map +1 -0
  68. package/dist/cjs/libs/s3/index.d.ts +4 -0
  69. package/dist/cjs/libs/s3/index.d.ts.map +1 -0
  70. package/dist/cjs/libs/s3/index.js +44 -0
  71. package/dist/cjs/libs/s3/index.js.map +1 -0
  72. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -0
  73. package/dist/cjs/libs/s3/s3.lib.js +224 -0
  74. package/dist/cjs/libs/s3/s3.lib.js.map +1 -0
  75. package/dist/{processors → cjs/processors}/ChatProcessor.d.ts +2 -2
  76. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -0
  77. package/dist/cjs/processors/ChatProcessor.js +614 -0
  78. package/dist/cjs/processors/ChatProcessor.js.map +1 -0
  79. package/dist/cjs/processors/ModelsProcessor.d.ts.map +1 -0
  80. package/dist/cjs/processors/ModelsProcessor.js +34 -0
  81. package/dist/cjs/processors/ModelsProcessor.js.map +1 -0
  82. package/dist/cjs/processors/index.d.ts +3 -0
  83. package/dist/cjs/processors/index.d.ts.map +1 -0
  84. package/dist/cjs/processors/index.js +19 -0
  85. package/dist/cjs/processors/index.js.map +1 -0
  86. package/dist/{services → cjs/services}/AIService.d.ts +1 -1
  87. package/dist/cjs/services/AIService.d.ts.map +1 -0
  88. package/dist/cjs/services/AIService.js +200 -0
  89. package/dist/cjs/services/AIService.js.map +1 -0
  90. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -0
  91. package/dist/cjs/services/InternalEventsHandler.js +60 -0
  92. package/dist/cjs/services/InternalEventsHandler.js.map +1 -0
  93. package/dist/cjs/services/KafkaService.d.ts.map +1 -0
  94. package/dist/cjs/services/KafkaService.js +123 -0
  95. package/dist/cjs/services/KafkaService.js.map +1 -0
  96. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -0
  97. package/dist/cjs/services/ModelFetcher.js +251 -0
  98. package/dist/cjs/services/ModelFetcher.js.map +1 -0
  99. package/dist/cjs/services/RedisService.d.ts.map +1 -0
  100. package/dist/cjs/services/RedisService.js +240 -0
  101. package/dist/cjs/services/RedisService.js.map +1 -0
  102. package/dist/cjs/services/SocketService.d.ts.map +1 -0
  103. package/dist/cjs/services/SocketService.js +133 -0
  104. package/dist/cjs/services/SocketService.js.map +1 -0
  105. package/dist/cjs/services/index.d.ts +7 -0
  106. package/dist/cjs/services/index.d.ts.map +1 -0
  107. package/dist/cjs/services/index.js +23 -0
  108. package/dist/cjs/services/index.js.map +1 -0
  109. package/dist/cjs/store/AgentStore.d.ts.map +1 -0
  110. package/dist/cjs/store/AgentStore.js +102 -0
  111. package/dist/cjs/store/AgentStore.js.map +1 -0
  112. package/dist/cjs/store/ArtifactStore.d.ts.map +1 -0
  113. package/dist/cjs/store/ArtifactStore.js +31 -0
  114. package/dist/cjs/store/ArtifactStore.js.map +1 -0
  115. package/dist/cjs/store/ConfigStore.d.ts.map +1 -0
  116. package/dist/cjs/store/ConfigStore.js +218 -0
  117. package/dist/cjs/store/ConfigStore.js.map +1 -0
  118. package/dist/cjs/store/ConfigStore.test.d.ts.map +1 -0
  119. package/dist/cjs/store/ConfigStore.test.js +261 -0
  120. package/dist/cjs/store/ConfigStore.test.js.map +1 -0
  121. package/dist/cjs/store/ModelStore.d.ts.map +1 -0
  122. package/dist/cjs/store/ModelStore.js +85 -0
  123. package/dist/cjs/store/ModelStore.js.map +1 -0
  124. package/dist/cjs/store/ModelStore.test.d.ts.map +1 -0
  125. package/dist/cjs/store/ModelStore.test.js +392 -0
  126. package/dist/cjs/store/ModelStore.test.js.map +1 -0
  127. package/dist/cjs/store/index.d.ts +5 -0
  128. package/dist/cjs/store/index.d.ts.map +1 -0
  129. package/dist/cjs/store/index.js +21 -0
  130. package/dist/cjs/store/index.js.map +1 -0
  131. package/dist/cjs/tools/generateChartTool.d.ts.map +1 -0
  132. package/dist/cjs/tools/generateChartTool.js +128 -0
  133. package/dist/cjs/tools/generateChartTool.js.map +1 -0
  134. package/dist/cjs/tools/proposeFormValuesTool.d.ts.map +1 -0
  135. package/dist/cjs/tools/proposeFormValuesTool.js +60 -0
  136. package/dist/cjs/tools/proposeFormValuesTool.js.map +1 -0
  137. package/dist/esm/config.d.ts +35 -0
  138. package/dist/esm/config.d.ts.map +1 -0
  139. package/dist/esm/config.js.map +1 -0
  140. package/dist/esm/helpers/AIHelper.d.ts +23 -0
  141. package/dist/esm/helpers/AIHelper.d.ts.map +1 -0
  142. package/dist/{helpers → esm/helpers}/AIHelper.js +5 -5
  143. package/dist/esm/helpers/AIHelper.js.map +1 -0
  144. package/dist/esm/helpers/AIHelper.test.d.ts +2 -0
  145. package/dist/esm/helpers/AIHelper.test.d.ts.map +1 -0
  146. package/dist/{helpers → esm/helpers}/AIHelper.test.js +2 -2
  147. package/dist/esm/helpers/AIHelper.test.js.map +1 -0
  148. package/dist/esm/helpers/ConfigHelper.d.ts +20 -0
  149. package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -0
  150. package/dist/{helpers → esm/helpers}/ConfigHelper.js +1 -1
  151. package/dist/esm/helpers/ConfigHelper.js.map +1 -0
  152. package/dist/esm/helpers/ContextLimiter.d.ts +82 -0
  153. package/dist/esm/helpers/ContextLimiter.d.ts.map +1 -0
  154. package/dist/esm/helpers/ContextLimiter.js.map +1 -0
  155. package/dist/esm/helpers/FileHelper.d.ts +31 -0
  156. package/dist/esm/helpers/FileHelper.d.ts.map +1 -0
  157. package/dist/{helpers → esm/helpers}/FileHelper.js +3 -3
  158. package/dist/esm/helpers/FileHelper.js.map +1 -0
  159. package/dist/esm/helpers/SetupHelper.d.ts +5 -0
  160. package/dist/esm/helpers/SetupHelper.d.ts.map +1 -0
  161. package/dist/{helpers → esm/helpers}/SetupHelper.js +5 -5
  162. package/dist/esm/helpers/SetupHelper.js.map +1 -0
  163. package/dist/esm/helpers/index.d.ts +6 -0
  164. package/dist/esm/helpers/index.d.ts.map +1 -0
  165. package/dist/esm/helpers/index.js +6 -0
  166. package/dist/esm/helpers/index.js.map +1 -0
  167. package/dist/esm/index.d.ts +14 -0
  168. package/dist/esm/index.d.ts.map +1 -0
  169. package/dist/esm/index.js +13 -0
  170. package/dist/esm/index.js.map +1 -0
  171. package/dist/esm/libs/index.d.ts +4 -0
  172. package/dist/esm/libs/index.d.ts.map +1 -0
  173. package/dist/esm/libs/index.js +4 -0
  174. package/dist/esm/libs/index.js.map +1 -0
  175. package/dist/esm/libs/kafka/config.d.ts +5 -0
  176. package/dist/esm/libs/kafka/config.d.ts.map +1 -0
  177. package/dist/esm/libs/kafka/config.js.map +1 -0
  178. package/dist/esm/libs/kafka/consumer.d.ts +16 -0
  179. package/dist/esm/libs/kafka/consumer.d.ts.map +1 -0
  180. package/dist/{libs → esm/libs}/kafka/consumer.js +3 -3
  181. package/dist/esm/libs/kafka/consumer.js.map +1 -0
  182. package/dist/esm/libs/kafka/index.d.ts +3 -0
  183. package/dist/esm/libs/kafka/index.d.ts.map +1 -0
  184. package/dist/esm/libs/kafka/index.js +3 -0
  185. package/dist/esm/libs/kafka/index.js.map +1 -0
  186. package/dist/esm/libs/kafka/kafka.d.ts +3 -0
  187. package/dist/esm/libs/kafka/kafka.d.ts.map +1 -0
  188. package/dist/{libs → esm/libs}/kafka/kafka.js +2 -2
  189. package/dist/esm/libs/kafka/kafka.js.map +1 -0
  190. package/dist/esm/libs/kafka/producer.d.ts +11 -0
  191. package/dist/esm/libs/kafka/producer.d.ts.map +1 -0
  192. package/dist/{libs → esm/libs}/kafka/producer.js +1 -1
  193. package/dist/esm/libs/kafka/producer.js.map +1 -0
  194. package/dist/esm/libs/logger/config.d.ts +5 -0
  195. package/dist/esm/libs/logger/config.d.ts.map +1 -0
  196. package/dist/esm/libs/logger/config.js.map +1 -0
  197. package/dist/esm/libs/logger/index.d.ts +10 -0
  198. package/dist/esm/libs/logger/index.d.ts.map +1 -0
  199. package/dist/{libs → esm/libs}/logger/index.js +2 -2
  200. package/dist/esm/libs/logger/index.js.map +1 -0
  201. package/dist/esm/libs/logger/kafkajs-logger-creator.d.ts +12 -0
  202. package/dist/esm/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
  203. package/dist/{libs → esm/libs}/logger/kafkajs-logger-creator.js +1 -1
  204. package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -0
  205. package/dist/esm/libs/logger/logger.d.ts +42 -0
  206. package/dist/esm/libs/logger/logger.d.ts.map +1 -0
  207. package/dist/esm/libs/logger/logger.js.map +1 -0
  208. package/dist/esm/libs/s3/config.d.ts +7 -0
  209. package/dist/esm/libs/s3/config.d.ts.map +1 -0
  210. package/dist/esm/libs/s3/config.js.map +1 -0
  211. package/dist/esm/libs/s3/index.d.ts +4 -0
  212. package/dist/esm/libs/s3/index.d.ts.map +1 -0
  213. package/dist/esm/libs/s3/index.js +4 -0
  214. package/dist/esm/libs/s3/index.js.map +1 -0
  215. package/dist/esm/libs/s3/s3.lib.d.ts +25 -0
  216. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -0
  217. package/dist/{libs → esm/libs}/s3/s3.lib.js +2 -2
  218. package/dist/esm/libs/s3/s3.lib.js.map +1 -0
  219. package/dist/esm/processors/ChatProcessor.d.ts +66 -0
  220. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -0
  221. package/dist/{processors → esm/processors}/ChatProcessor.js +7 -7
  222. package/dist/esm/processors/ChatProcessor.js.map +1 -0
  223. package/dist/esm/processors/ModelsProcessor.d.ts +11 -0
  224. package/dist/esm/processors/ModelsProcessor.d.ts.map +1 -0
  225. package/dist/{processors → esm/processors}/ModelsProcessor.js +1 -1
  226. package/dist/esm/processors/ModelsProcessor.js.map +1 -0
  227. package/dist/esm/processors/index.d.ts +3 -0
  228. package/dist/esm/processors/index.d.ts.map +1 -0
  229. package/dist/esm/processors/index.js +3 -0
  230. package/dist/esm/processors/index.js.map +1 -0
  231. package/dist/esm/services/AIService.d.ts +48 -0
  232. package/dist/esm/services/AIService.d.ts.map +1 -0
  233. package/dist/{services → esm/services}/AIService.js +2 -2
  234. package/dist/esm/services/AIService.js.map +1 -0
  235. package/dist/esm/services/InternalEventsHandler.d.ts +21 -0
  236. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -0
  237. package/dist/{services → esm/services}/InternalEventsHandler.js +2 -2
  238. package/dist/esm/services/InternalEventsHandler.js.map +1 -0
  239. package/dist/esm/services/KafkaService.d.ts +35 -0
  240. package/dist/esm/services/KafkaService.d.ts.map +1 -0
  241. package/dist/{services → esm/services}/KafkaService.js +5 -5
  242. package/dist/esm/services/KafkaService.js.map +1 -0
  243. package/dist/esm/services/ModelFetcher.d.ts +54 -0
  244. package/dist/esm/services/ModelFetcher.d.ts.map +1 -0
  245. package/dist/{services → esm/services}/ModelFetcher.js +2 -2
  246. package/dist/esm/services/ModelFetcher.js.map +1 -0
  247. package/dist/esm/services/RedisService.d.ts +90 -0
  248. package/dist/esm/services/RedisService.d.ts.map +1 -0
  249. package/dist/{services → esm/services}/RedisService.js +2 -2
  250. package/dist/esm/services/RedisService.js.map +1 -0
  251. package/dist/esm/services/SocketService.d.ts +39 -0
  252. package/dist/esm/services/SocketService.d.ts.map +1 -0
  253. package/dist/{services → esm/services}/SocketService.js +2 -2
  254. package/dist/esm/services/SocketService.js.map +1 -0
  255. package/dist/esm/services/index.d.ts +7 -0
  256. package/dist/esm/services/index.d.ts.map +1 -0
  257. package/dist/esm/services/index.js +7 -0
  258. package/dist/esm/services/index.js.map +1 -0
  259. package/dist/esm/store/AgentStore.d.ts +48 -0
  260. package/dist/esm/store/AgentStore.d.ts.map +1 -0
  261. package/dist/{store → esm/store}/AgentStore.js +1 -1
  262. package/dist/esm/store/AgentStore.js.map +1 -0
  263. package/dist/esm/store/ArtifactStore.d.ts +13 -0
  264. package/dist/esm/store/ArtifactStore.d.ts.map +1 -0
  265. package/dist/esm/store/ArtifactStore.js.map +1 -0
  266. package/dist/esm/store/ConfigStore.d.ts +89 -0
  267. package/dist/esm/store/ConfigStore.d.ts.map +1 -0
  268. package/dist/{store → esm/store}/ConfigStore.js +3 -3
  269. package/dist/esm/store/ConfigStore.js.map +1 -0
  270. package/dist/esm/store/ConfigStore.test.d.ts +2 -0
  271. package/dist/esm/store/ConfigStore.test.d.ts.map +1 -0
  272. package/dist/{store → esm/store}/ConfigStore.test.js +1 -1
  273. package/dist/esm/store/ConfigStore.test.js.map +1 -0
  274. package/dist/esm/store/ModelStore.d.ts +44 -0
  275. package/dist/esm/store/ModelStore.d.ts.map +1 -0
  276. package/dist/{store → esm/store}/ModelStore.js +2 -2
  277. package/dist/esm/store/ModelStore.js.map +1 -0
  278. package/dist/esm/store/ModelStore.test.d.ts +2 -0
  279. package/dist/esm/store/ModelStore.test.d.ts.map +1 -0
  280. package/dist/{store → esm/store}/ModelStore.test.js +1 -1
  281. package/dist/esm/store/ModelStore.test.js.map +1 -0
  282. package/dist/esm/store/index.d.ts +5 -0
  283. package/dist/esm/store/index.d.ts.map +1 -0
  284. package/dist/esm/store/index.js +5 -0
  285. package/dist/esm/store/index.js.map +1 -0
  286. package/dist/esm/tools/generateChartTool.d.ts +24 -0
  287. package/dist/esm/tools/generateChartTool.d.ts.map +1 -0
  288. package/dist/esm/tools/generateChartTool.js.map +1 -0
  289. package/dist/esm/tools/proposeFormValuesTool.d.ts +35 -0
  290. package/dist/esm/tools/proposeFormValuesTool.d.ts.map +1 -0
  291. package/dist/esm/tools/proposeFormValuesTool.js.map +1 -0
  292. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  293. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  294. package/package.json +18 -8
  295. package/.env.example +0 -45
  296. package/config.example.json +0 -73
  297. package/dist/config.d.ts.map +0 -1
  298. package/dist/config.js.map +0 -1
  299. package/dist/helpers/AIHelper.d.ts.map +0 -1
  300. package/dist/helpers/AIHelper.js.map +0 -1
  301. package/dist/helpers/AIHelper.test.d.ts.map +0 -1
  302. package/dist/helpers/AIHelper.test.js.map +0 -1
  303. package/dist/helpers/ConfigHelper.d.ts.map +0 -1
  304. package/dist/helpers/ConfigHelper.js.map +0 -1
  305. package/dist/helpers/ContextLimiter.d.ts.map +0 -1
  306. package/dist/helpers/ContextLimiter.js.map +0 -1
  307. package/dist/helpers/FileHelper.d.ts.map +0 -1
  308. package/dist/helpers/FileHelper.js.map +0 -1
  309. package/dist/helpers/SetupHelper.d.ts.map +0 -1
  310. package/dist/helpers/SetupHelper.js.map +0 -1
  311. package/dist/helpers/index.d.ts +0 -6
  312. package/dist/helpers/index.d.ts.map +0 -1
  313. package/dist/helpers/index.js +0 -6
  314. package/dist/helpers/index.js.map +0 -1
  315. package/dist/index.d.ts +0 -18
  316. package/dist/index.d.ts.map +0 -1
  317. package/dist/index.js +0 -17
  318. package/dist/index.js.map +0 -1
  319. package/dist/libs/index.d.ts +0 -4
  320. package/dist/libs/index.d.ts.map +0 -1
  321. package/dist/libs/index.js +0 -4
  322. package/dist/libs/index.js.map +0 -1
  323. package/dist/libs/kafka/config.d.ts.map +0 -1
  324. package/dist/libs/kafka/config.js.map +0 -1
  325. package/dist/libs/kafka/consumer.d.ts.map +0 -1
  326. package/dist/libs/kafka/consumer.js.map +0 -1
  327. package/dist/libs/kafka/index.d.ts +0 -3
  328. package/dist/libs/kafka/index.d.ts.map +0 -1
  329. package/dist/libs/kafka/index.js +0 -3
  330. package/dist/libs/kafka/index.js.map +0 -1
  331. package/dist/libs/kafka/kafka.d.ts.map +0 -1
  332. package/dist/libs/kafka/kafka.js.map +0 -1
  333. package/dist/libs/kafka/producer.d.ts.map +0 -1
  334. package/dist/libs/kafka/producer.js.map +0 -1
  335. package/dist/libs/logger/config.d.ts.map +0 -1
  336. package/dist/libs/logger/config.js.map +0 -1
  337. package/dist/libs/logger/index.d.ts.map +0 -1
  338. package/dist/libs/logger/index.js.map +0 -1
  339. package/dist/libs/logger/kafkajs-logger-creator.d.ts.map +0 -1
  340. package/dist/libs/logger/kafkajs-logger-creator.js.map +0 -1
  341. package/dist/libs/logger/logger.d.ts.map +0 -1
  342. package/dist/libs/logger/logger.js.map +0 -1
  343. package/dist/libs/s3/config.d.ts.map +0 -1
  344. package/dist/libs/s3/config.js.map +0 -1
  345. package/dist/libs/s3/index.d.ts +0 -4
  346. package/dist/libs/s3/index.d.ts.map +0 -1
  347. package/dist/libs/s3/index.js +0 -4
  348. package/dist/libs/s3/index.js.map +0 -1
  349. package/dist/libs/s3/s3.lib.d.ts.map +0 -1
  350. package/dist/libs/s3/s3.lib.js.map +0 -1
  351. package/dist/processors/ChatProcessor.d.ts.map +0 -1
  352. package/dist/processors/ChatProcessor.js.map +0 -1
  353. package/dist/processors/ModelsProcessor.d.ts.map +0 -1
  354. package/dist/processors/ModelsProcessor.js.map +0 -1
  355. package/dist/processors/index.d.ts +0 -3
  356. package/dist/processors/index.d.ts.map +0 -1
  357. package/dist/processors/index.js +0 -3
  358. package/dist/processors/index.js.map +0 -1
  359. package/dist/services/AIService.d.ts.map +0 -1
  360. package/dist/services/AIService.js.map +0 -1
  361. package/dist/services/InternalEventsHandler.d.ts.map +0 -1
  362. package/dist/services/InternalEventsHandler.js.map +0 -1
  363. package/dist/services/KafkaService.d.ts.map +0 -1
  364. package/dist/services/KafkaService.js.map +0 -1
  365. package/dist/services/ModelFetcher.d.ts.map +0 -1
  366. package/dist/services/ModelFetcher.js.map +0 -1
  367. package/dist/services/RedisService.d.ts.map +0 -1
  368. package/dist/services/RedisService.js.map +0 -1
  369. package/dist/services/SocketService.d.ts.map +0 -1
  370. package/dist/services/SocketService.js.map +0 -1
  371. package/dist/services/index.d.ts +0 -7
  372. package/dist/services/index.d.ts.map +0 -1
  373. package/dist/services/index.js +0 -7
  374. package/dist/services/index.js.map +0 -1
  375. package/dist/store/AgentStore.d.ts.map +0 -1
  376. package/dist/store/AgentStore.js.map +0 -1
  377. package/dist/store/ArtifactStore.d.ts.map +0 -1
  378. package/dist/store/ArtifactStore.js.map +0 -1
  379. package/dist/store/ConfigStore.d.ts.map +0 -1
  380. package/dist/store/ConfigStore.js.map +0 -1
  381. package/dist/store/ConfigStore.test.d.ts.map +0 -1
  382. package/dist/store/ConfigStore.test.js.map +0 -1
  383. package/dist/store/ModelStore.d.ts.map +0 -1
  384. package/dist/store/ModelStore.js.map +0 -1
  385. package/dist/store/ModelStore.test.d.ts.map +0 -1
  386. package/dist/store/ModelStore.test.js.map +0 -1
  387. package/dist/store/index.d.ts +0 -5
  388. package/dist/store/index.d.ts.map +0 -1
  389. package/dist/store/index.js +0 -5
  390. package/dist/store/index.js.map +0 -1
  391. package/dist/tools/generateChartTool.d.ts.map +0 -1
  392. package/dist/tools/generateChartTool.js.map +0 -1
  393. package/dist/tools/proposeFormValuesTool.d.ts.map +0 -1
  394. package/dist/tools/proposeFormValuesTool.js.map +0 -1
  395. package/src/config.ts +0 -46
  396. package/src/helpers/AIHelper.test.ts +0 -375
  397. package/src/helpers/AIHelper.ts +0 -353
  398. package/src/helpers/ConfigHelper.ts +0 -130
  399. package/src/helpers/ContextLimiter.ts +0 -228
  400. package/src/helpers/FileHelper.ts +0 -197
  401. package/src/helpers/SetupHelper.ts +0 -35
  402. package/src/helpers/index.ts +0 -5
  403. package/src/index.ts +0 -18
  404. package/src/libs/index.ts +0 -3
  405. package/src/libs/kafka/config.ts +0 -4
  406. package/src/libs/kafka/consumer.ts +0 -161
  407. package/src/libs/kafka/index.ts +0 -2
  408. package/src/libs/kafka/kafka.ts +0 -27
  409. package/src/libs/kafka/producer.ts +0 -48
  410. package/src/libs/logger/config.ts +0 -4
  411. package/src/libs/logger/index.ts +0 -21
  412. package/src/libs/logger/kafkajs-logger-creator.ts +0 -28
  413. package/src/libs/logger/logger.ts +0 -60
  414. package/src/libs/s3/config.ts +0 -7
  415. package/src/libs/s3/index.ts +0 -3
  416. package/src/libs/s3/s3.lib.ts +0 -284
  417. package/src/processors/ChatProcessor.ts +0 -713
  418. package/src/processors/ModelsProcessor.ts +0 -34
  419. package/src/processors/index.ts +0 -2
  420. package/src/services/AIService.ts +0 -241
  421. package/src/services/InternalEventsHandler.ts +0 -61
  422. package/src/services/KafkaService.ts +0 -142
  423. package/src/services/ModelFetcher.ts +0 -286
  424. package/src/services/RedisService.ts +0 -285
  425. package/src/services/SocketService.ts +0 -153
  426. package/src/services/index.ts +0 -6
  427. package/src/store/AgentStore.ts +0 -138
  428. package/src/store/ArtifactStore.ts +0 -29
  429. package/src/store/ConfigStore.test.ts +0 -314
  430. package/src/store/ConfigStore.ts +0 -239
  431. package/src/store/ModelStore.test.ts +0 -473
  432. package/src/store/ModelStore.ts +0 -93
  433. package/src/store/index.ts +0 -4
  434. package/src/tools/generateChartTool.ts +0 -131
  435. package/src/tools/proposeFormValuesTool.ts +0 -67
  436. package/tsconfig.json +0 -24
  437. /package/dist/{config.d.ts → cjs/config.d.ts} +0 -0
  438. /package/dist/{helpers → cjs/helpers}/AIHelper.test.d.ts +0 -0
  439. /package/dist/{helpers → cjs/helpers}/ConfigHelper.d.ts +0 -0
  440. /package/dist/{helpers → cjs/helpers}/ContextLimiter.d.ts +0 -0
  441. /package/dist/{helpers → cjs/helpers}/FileHelper.d.ts +0 -0
  442. /package/dist/{libs → cjs/libs}/kafka/config.d.ts +0 -0
  443. /package/dist/{libs → cjs/libs}/kafka/consumer.d.ts +0 -0
  444. /package/dist/{libs → cjs/libs}/kafka/kafka.d.ts +0 -0
  445. /package/dist/{libs → cjs/libs}/kafka/producer.d.ts +0 -0
  446. /package/dist/{libs → cjs/libs}/logger/config.d.ts +0 -0
  447. /package/dist/{libs → cjs/libs}/logger/kafkajs-logger-creator.d.ts +0 -0
  448. /package/dist/{libs → cjs/libs}/logger/logger.d.ts +0 -0
  449. /package/dist/{libs → cjs/libs}/s3/config.d.ts +0 -0
  450. /package/dist/{libs → cjs/libs}/s3/s3.lib.d.ts +0 -0
  451. /package/dist/{processors → cjs/processors}/ModelsProcessor.d.ts +0 -0
  452. /package/dist/{services → cjs/services}/InternalEventsHandler.d.ts +0 -0
  453. /package/dist/{services → cjs/services}/KafkaService.d.ts +0 -0
  454. /package/dist/{services → cjs/services}/ModelFetcher.d.ts +0 -0
  455. /package/dist/{services → cjs/services}/RedisService.d.ts +0 -0
  456. /package/dist/{services → cjs/services}/SocketService.d.ts +0 -0
  457. /package/dist/{store → cjs/store}/AgentStore.d.ts +0 -0
  458. /package/dist/{store → cjs/store}/ArtifactStore.d.ts +0 -0
  459. /package/dist/{store → cjs/store}/ConfigStore.d.ts +0 -0
  460. /package/dist/{store → cjs/store}/ConfigStore.test.d.ts +0 -0
  461. /package/dist/{store → cjs/store}/ModelStore.d.ts +0 -0
  462. /package/dist/{store → cjs/store}/ModelStore.test.d.ts +0 -0
  463. /package/dist/{tools → cjs/tools}/generateChartTool.d.ts +0 -0
  464. /package/dist/{tools → cjs/tools}/proposeFormValuesTool.d.ts +0 -0
  465. /package/dist/{config.js → esm/config.js} +0 -0
  466. /package/dist/{helpers → esm/helpers}/ContextLimiter.js +0 -0
  467. /package/dist/{libs → esm/libs}/kafka/config.js +0 -0
  468. /package/dist/{libs → esm/libs}/logger/config.js +0 -0
  469. /package/dist/{libs → esm/libs}/logger/logger.js +0 -0
  470. /package/dist/{libs → esm/libs}/s3/config.js +0 -0
  471. /package/dist/{store → esm/store}/ArtifactStore.js +0 -0
  472. /package/dist/{tools → esm/tools}/generateChartTool.js +0 -0
  473. /package/dist/{tools → esm/tools}/proposeFormValuesTool.js +0 -0
@@ -1,34 +0,0 @@
1
- import { ModelStore } from "../store";
2
-
3
- const providerNames: Record<string, string> = {
4
- openai: 'OpenAI',
5
- anthropic: 'Anthropic',
6
- google: 'Google',
7
- openrouter: 'OpenRouter'
8
- };
9
- export class ModelsProcessor {
10
-
11
- async getModels() {
12
- const modelStore = ModelStore.getInstance();
13
-
14
- if (!modelStore.hasModels()) {
15
- // Return empty if models haven't been loaded yet
16
- return {
17
- models: [],
18
- providers: []
19
- };
20
- }
21
-
22
- const models = modelStore.getModels();
23
- const providers = modelStore.getProviders();
24
-
25
- return {
26
- models,
27
- providers: providers.map((providerId) => ({
28
- id: providerId,
29
- name: providerNames[providerId] || providerId,
30
- models: modelStore.getModelsByProvider(providerId)
31
- }))
32
- };
33
- }
34
- }
@@ -1,2 +0,0 @@
1
- export * from './ChatProcessor';
2
- export * from './ModelsProcessor';
@@ -1,241 +0,0 @@
1
- import { openai } from '@ai-sdk/openai';
2
- import { anthropic } from '@ai-sdk/anthropic';
3
- import { google } from '@ai-sdk/google';
4
- import { z } from 'zod';
5
- import {
6
- generateText,
7
- streamText,
8
- type LanguageModel,
9
- ModelMessage,
10
- ToolSet,
11
- tool,
12
- Tool,
13
- ToolExecutionOptions,
14
- } from 'ai';
15
- import type { AgentApiTool, AgentLocalFunctionTool, AgentConfig, ToolChoice, AgentTool, ModelOption, AdditionalContext} from '@multiplayer-app/ai-agent-types';
16
- import { AgentToolType } from '@multiplayer-app/ai-agent-types';
17
- import { ModelStore } from '../store/ModelStore';
18
- import { createOpenRouter } from '@openrouter/ai-sdk-provider';
19
- import { config } from '../config';
20
- import { logger } from '../libs/logger';
21
- export interface GenerateTextOptions {
22
- messages: ModelMessage[],
23
- system?: string;
24
- temperature?: number;
25
- maxOutputTokens?: number;
26
- topP?: number;
27
- toolChoice?: ToolChoice<ToolSet>;
28
- tools?: ToolSet;
29
- model?: string;
30
- signal?: AbortSignal;
31
- }
32
-
33
- export interface StreamTextOptions extends GenerateTextOptions {
34
- onChunk?: (chunk: any) => void;
35
- onError?: (error: Error) => void;
36
- onFinish?: (data: { text: string, finishReason: string, usage: any, response: any, steps: any, totalUsage: any }) => void;
37
- onAbort?: (data: any) => void;
38
- onStepFinish?: (step: any) => void;
39
- }
40
-
41
- export interface LocalFunctionTool extends Omit<Tool, 'title'> {
42
- title: string;
43
- }
44
-
45
- export class AIService {
46
- private modelStore: ModelStore;
47
-
48
- constructor(modelStore: ModelStore) {
49
- this.modelStore = modelStore;
50
- }
51
-
52
- getLanguageModel(modelId: string | undefined, websearchEnabled: boolean): LanguageModel {
53
- const selectedModel = modelId || config.ai.defaultModel || this.modelStore.getModels()[0].id;
54
- const model = selectedModel ?
55
- this.modelStore.getModelById(selectedModel) :
56
- this.modelStore.getModels()[0]; //get first model if no model is selected
57
- if (!model) {
58
- throw new Error(`Model with id "${selectedModel}" is not available. Ensure you have appropriate key in the environment variables.`);
59
- }
60
- return this.createLanguageModel(model, websearchEnabled);
61
- }
62
-
63
- /**
64
- * Create a language model instance based on the provider
65
- */
66
- private createLanguageModel(model: ModelOption, websearchEnabled = false): LanguageModel {
67
- const provider = model.provider || 'openai'; // Default to openai if provider not specified
68
- switch (provider) {
69
- case 'openai':
70
- return openai(model.id)
71
- case 'anthropic':
72
- return anthropic(model.id)
73
- case 'google':
74
- return google(model.id)
75
- case 'openrouter':
76
- return createOpenRouter({
77
- apiKey: config.ai.openrouterApiKey,
78
- })(model.id, { plugins: websearchEnabled ? [{ id: "web", engine: undefined, max_results: 2 }] : [] }) as unknown as LanguageModel;
79
- default:
80
- throw new Error(`Unsupported provider: ${provider}`);
81
- }
82
- }
83
-
84
- private getWebSearchTool(modelId?: string): Tool | undefined {
85
- const selectedModel = modelId || config.ai.defaultModel || this.modelStore.getModels()[0].id;
86
- const model = selectedModel ?
87
- this.modelStore.getModelById(selectedModel) :
88
- this.modelStore.getModels()[0]; //get first model if no model is selected
89
- if (!model) {
90
- throw new Error(`Model with id "${selectedModel}" is not available. Ensure you have appropriate key in the environment variables.`);
91
- }
92
- switch (model.provider) {
93
- case 'openai':
94
- return openai.tools.webSearch() as Tool
95
- case 'anthropic':
96
- return anthropic.tools.webSearch_20250305() as Tool
97
- case 'google':
98
- return google.tools.googleSearch({}) as Tool
99
- case 'openrouter': // is set through plugins
100
- return undefined
101
- default:
102
- return undefined;
103
- }
104
- }
105
-
106
- private getTool(toolConfig: AgentTool<LocalFunctionTool>, modelId?: string, context?: AdditionalContext): Tool | undefined {
107
- if (toolConfig.type === AgentToolType.API_TOOL) {
108
- const data = toolConfig.data as AgentApiTool;
109
- return tool<{ body: Record<string, any>, queryParams: Record<string, any> }, any>({
110
- title: data.title,
111
- description: data.description,
112
- needsApproval: data.needsApproval,
113
- inputSchema: z.object({
114
- body: data.body ? data.body : z.any().optional(),
115
- queryParams: data.queryParams ? data.queryParams : z.any().optional()
116
- }),
117
- execute: async (input: { body: Record<string, any>, queryParams: Record<string, any> }) => {
118
- try {
119
- let url = data.url;
120
- const params: RequestInit = { method: data.method }
121
- if (data.body) {
122
- params.body = JSON.stringify(input.body);
123
- }
124
- if (data.queryParams) {
125
- url = url + '?' + new URLSearchParams(input.queryParams as Record<string, string>).toString();
126
- }
127
- if (data.headersToPass) {
128
- params.headers = data.headersToPass.reduce((acc, headerName) => {
129
- acc[headerName] = context?.headers?.[headerName] ?? '';
130
- return acc;
131
- }, {})
132
- }
133
-
134
- const response = await fetch(url, params);
135
- const result = await response.json();
136
- return result;
137
- } catch (error) {
138
- return error;
139
- }
140
- }
141
- })
142
- }
143
-
144
- if (toolConfig.type === AgentToolType.WEB_SEARCH) {
145
- return this.getWebSearchTool(modelId);
146
- }
147
- if (toolConfig.type === AgentToolType.LOCAL_FUNCTION) {
148
- const data = toolConfig.data as AgentLocalFunctionTool<Tool>;
149
- // Support both "tool definition" objects and already-constructed Tool instances.
150
- if (data && typeof data.execute === 'function') {
151
- type ExecuteInput = Parameters<typeof data.execute>[0];
152
- return tool({
153
- ...data,
154
- execute: async (input: ExecuteInput, options?: ToolExecutionOptions) => {
155
- return data.execute(input, context, options)
156
- }
157
- });
158
- }
159
- return tool(data as Tool);
160
- }
161
- return undefined;
162
- }
163
-
164
-
165
- // getToolLoopAgent(config: AgentConfig, modelId?: string): Agent<ToolSet, never, never> {
166
- // const tools: ToolSet = config.tools.reduce((acc, toolConfig) => {
167
- // const tool = this.getTool(toolConfig, modelId);
168
- // if (tool && toolConfig.data?.name) {
169
- // acc[toolConfig.data.name] = tool
170
- // }
171
- // return acc;
172
- // }, {} as ToolSet);
173
-
174
- // return new Agent({
175
- // model: this.getLanguageModel(modelId || config.defaultModel),
176
- // system: config.systemPrompt,
177
- // tools,
178
- // ...(config.outputSchema ? { output: Output.object({ schema: config.outputSchema})} : {})
179
- // });
180
- // }
181
-
182
- getAgentOptions(config: AgentConfig<LocalFunctionTool>, modelId?: string, context?: AdditionalContext): Omit<GenerateTextOptions, 'messages'> & {name: string} {
183
- const tools: ToolSet = config.tools.reduce((acc, toolConfig) => {
184
- const tool = this.getTool(toolConfig, modelId, context);
185
- if (tool && toolConfig.data?.title) {
186
- acc[toolConfig.data.title] = tool
187
- }
188
- return acc;
189
- }, {} as ToolSet);
190
- return {
191
- model: modelId || config.defaultModel,
192
- tools,
193
- system: config.systemPrompt,
194
- toolChoice: config.toolChoice,
195
- name: config.name,
196
- };
197
- }
198
-
199
-
200
- async generateText(options: GenerateTextOptions): Promise<string> {
201
- const websearchEnabled = !!options.tools?.[AgentToolType.WEB_SEARCH];
202
- try {
203
- const { text } = await generateText({
204
- ...options,
205
- model: this.getLanguageModel(options.model, websearchEnabled),
206
- });
207
-
208
- return text;
209
- } catch (error) {
210
- logger.error(error);
211
- throw new Error(`Failed to generate text: ${error instanceof Error ? error.message : 'Unknown error'}`);
212
- }
213
- }
214
-
215
- streamText(options: StreamTextOptions): ReturnType<typeof streamText> {
216
- const { onError, onChunk, onFinish, onStepFinish } = options;
217
-
218
- const websearchEnabled = !!options.tools?.[AgentToolType.WEB_SEARCH];
219
- try {
220
- return streamText({
221
- ...options,
222
- model: this.getLanguageModel(options.model, websearchEnabled),
223
- onError({ error }) {
224
- logger.error(error);
225
- onError?.(error as Error);
226
- },
227
- onChunk(chunk) {
228
- onChunk?.(chunk);
229
- },
230
- onFinish({ text, finishReason, usage, response, steps, totalUsage }) {
231
- onFinish?.({ text, finishReason, usage, response, steps, totalUsage });
232
- },
233
- onStepFinish(step) {
234
- onStepFinish?.(step);
235
- }
236
- });
237
- } catch (error) {
238
- throw new Error(`Failed to stream text: ${error instanceof Error ? error.message : 'Unknown error'}`);
239
- }
240
- }
241
- }
@@ -1,61 +0,0 @@
1
- import { redisService } from './RedisService';
2
- import { logger } from '../libs/logger';
3
-
4
- type RedisPubSubClient = Awaited<ReturnType<typeof redisService.getPubSubClients>>['pubClient'];
5
-
6
- /**
7
- * Lightweight Redis pub/sub helper to share events across service replicas.
8
- */
9
- export class InternalEventsHandler<T = unknown> {
10
- constructor(private readonly channel: string) {}
11
-
12
- private pubClient: RedisPubSubClient | null = null;
13
- private subClient: RedisPubSubClient | null = null;
14
- private initialized = false;
15
- private subscribed = false;
16
-
17
- private async ensureClients(): Promise<void> {
18
- if (this.initialized) return;
19
-
20
- const { pubClient, subClient } = await redisService.getPubSubClients(this.channel);
21
- this.pubClient = pubClient;
22
- this.subClient = subClient;
23
- this.initialized = true;
24
- }
25
-
26
- /**
27
- * Publish a payload to a channel.
28
- */
29
- async publish<T>(payload: T): Promise<number> {
30
- await this.ensureClients();
31
- if (!this.pubClient) {
32
- throw new Error('Redis pub client not available');
33
- }
34
- const message = JSON.stringify(payload);
35
- return this.pubClient.publish(this.channel, message);
36
- }
37
-
38
- /**
39
- * Subscribe to a channel and handle messages.
40
- */
41
- async listen<T>(handler: (payload: T) => void | Promise<void>): Promise<void> {
42
- await this.ensureClients();
43
- if (!this.subClient) {
44
- throw new Error('Redis sub client not available');
45
- }
46
-
47
- if (this.subscribed) {
48
- return;
49
- }
50
- this.subscribed = true;
51
-
52
- await this.subClient.subscribe(this.channel, async (message) => {
53
- try {
54
- const parsed = JSON.parse(message) as T;
55
- await handler(parsed);
56
- } catch (error) {
57
- logger.error(`InternalEventsHandler failed to process message on ${this.channel}:`, error);
58
- }
59
- });
60
- }
61
- }
@@ -1,142 +0,0 @@
1
- import { KafkaConsumer, KafkaProducer } from '../libs/kafka'
2
- import { config } from '../config'
3
-
4
- import { AIHelper } from '../helpers/AIHelper'
5
- import {logger} from "../libs/logger";
6
- import {socketService} from "./SocketService";
7
- import type { AgentChatRepository, AgentMessageRepository } from '@multiplayer-app/ai-agent-db';
8
-
9
- enum BackgroundChatProcessingEvent {
10
- Start = 'start',
11
- }
12
-
13
- class KafkaService {
14
- private kafkaConsumer: KafkaConsumer
15
- private kafkaProducer: KafkaProducer
16
- private chatRepository?: AgentChatRepository
17
- private messageRepository?: AgentMessageRepository
18
-
19
- private readonly MAX_RETRIES = 5
20
- private readonly BASE_DELAY_MS = 1000 // 1 second base delay
21
- private readonly MAX_DELAY_MS = 60000 // 60 seconds max delay
22
-
23
- constructor(chatRepository?: AgentChatRepository, messageRepository?: AgentMessageRepository) {
24
- this.kafkaConsumer = new KafkaConsumer(config.kafka.groupId)
25
- this.kafkaProducer = new KafkaProducer()
26
- this.chatRepository = chatRepository
27
- this.messageRepository = messageRepository
28
- }
29
-
30
- setRepositories(chatRepository: AgentChatRepository, messageRepository: AgentMessageRepository) {
31
- this.chatRepository = chatRepository
32
- this.messageRepository = messageRepository
33
- }
34
-
35
- async start() {
36
- await Promise.all([this.connect(), this.kafkaProducer.connect()])
37
- }
38
-
39
- async stop() {
40
- await Promise.all([this.kafkaConsumer.disconnect(), this.kafkaProducer.disconnect()])
41
- }
42
-
43
- async sendStartBackgroundAgentEvent(chatId: string) {
44
- await this.kafkaProducer.send(config.kafka.backgroundChatProcessingTopic, { event: BackgroundChatProcessingEvent.Start, chatId })
45
- }
46
-
47
- async sendChatTitleGenerationEvent(chatId: string, retryCount: number = 0) {
48
- await this.kafkaProducer.send(config.kafka.chatTitleGenerationTopic, { chatId, retryCount })
49
- }
50
-
51
- private async sleep(ms: number): Promise<void> {
52
- return new Promise(resolve => setTimeout(resolve, ms))
53
- }
54
-
55
- private calculateBackoffDelay(retryCount: number): number {
56
- // Exponential backoff: baseDelay * 2^retryCount with jitter
57
- const exponentialDelay = this.BASE_DELAY_MS * Math.pow(2, retryCount)
58
- // Add jitter (random 0-25% of delay) to prevent thundering herd
59
- const jitter = Math.random() * 0.25 * exponentialDelay
60
- const delay = exponentialDelay + jitter
61
- // Cap at max delay
62
- return Math.min(delay, this.MAX_DELAY_MS)
63
- }
64
-
65
- async onBackgroundAgentEvent(key, message: { event: BackgroundChatProcessingEvent, chatId: string }) {
66
- switch (message.event) {
67
- case BackgroundChatProcessingEvent.Start:
68
- await this.onStartBackgroundAgentEvent(message.chatId)
69
- break
70
- }
71
- }
72
-
73
- async onChatTitleGenerationEvent(key, message: { chatId: string; retryCount?: number }) {
74
- if (!this.chatRepository || !this.messageRepository) {
75
- logger.warn('KafkaService: Repositories not set, skipping chat title generation')
76
- return
77
- }
78
- const retryCount = message.retryCount ?? 0
79
- try {
80
- const chat = await this.chatRepository.findById(message.chatId)
81
- if (!chat) {
82
- return
83
- }
84
- const messages = await this.messageRepository.findByChatId(message.chatId)
85
- if (messages.length === 0) {
86
- return
87
- }
88
-
89
- const title = await AIHelper.generateTitleForMessage(chat.contextKey, messages)
90
- await this.chatRepository.update(chat.id, {title})
91
- // Update the chat object with the new title before emitting
92
- const updatedChat = {
93
- ...chat,
94
- title
95
- }
96
- if (chat.userId) socketService.emitChatUpdate(chat.userId, {...updatedChat, messages});
97
- } catch (error) {
98
- logger.error(`KafkaService: Error generating chat title for chatId ${message.chatId}, retryCount: ${retryCount}`, error)
99
-
100
- if (retryCount < this.MAX_RETRIES) {
101
- const delay = this.calculateBackoffDelay(retryCount)
102
- logger.info(`KafkaService: Retrying chat title generation for chatId ${message.chatId} after ${Math.round(delay)}ms (attempt ${retryCount + 1}/${this.MAX_RETRIES})`)
103
-
104
- await this.sleep(delay)
105
- await this.sendChatTitleGenerationEvent(message.chatId, retryCount + 1)
106
- } else {
107
- logger.error(`KafkaService: Max retries (${this.MAX_RETRIES}) exceeded for chat title generation, chatId: ${message.chatId}`)
108
- }
109
- }
110
- }
111
-
112
- async onStartBackgroundAgentEvent(chatId: string) {
113
- if (!this.chatRepository || !this.messageRepository) {
114
- logger.warn('KafkaService: Repositories not set, skipping background agent event')
115
- return
116
- }
117
- const chat = await this.chatRepository.findById(chatId)
118
- if (!chat) {
119
- return
120
- }
121
- const messages = await this.messageRepository.findByChatId(chatId)
122
- if (messages.length === 0) {
123
- return
124
- }
125
-
126
- // TODO: Implement background agent processing
127
-
128
- }
129
-
130
- async connect() {
131
- await this.kafkaConsumer.connect()
132
- await this.kafkaConsumer.subscribe(config.kafka.chatTitleGenerationTopic, this.onChatTitleGenerationEvent.bind(this))
133
- await this.kafkaConsumer.subscribe(config.kafka.backgroundChatProcessingTopic, this.onBackgroundAgentEvent.bind(this))
134
- await this.kafkaConsumer.listen()
135
- }
136
-
137
- async disconnect() {
138
- await this.kafkaConsumer.disconnect()
139
- }
140
- }
141
- export const kafkaService = new KafkaService()
142
-