@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,228 +0,0 @@
1
- import { AgentMessage, MessageRole } from '@multiplayer-app/ai-agent-types';
2
-
3
- /**
4
- * Options for limiting chat context
5
- */
6
- export interface ContextLimitOptions {
7
- /**
8
- * Maximum number of messages to include in context.
9
- * Default: 50 (common practice: 20-100 messages depending on use case)
10
- */
11
- maxMessages?: number;
12
-
13
- /**
14
- * Maximum token count (if token counting is implemented).
15
- * This is a future enhancement - currently not used.
16
- */
17
- maxTokens?: number;
18
-
19
- /**
20
- * Whether to always keep the first user message (often contains important context).
21
- * Default: true
22
- */
23
- keepFirstUserMessage?: boolean;
24
-
25
- /**
26
- * Whether to keep all system messages (if any exist).
27
- * Default: true
28
- */
29
- keepSystemMessages?: boolean;
30
- }
31
-
32
- /**
33
- * Common practices for limiting AI context:
34
- *
35
- * 1. **Message Count Limiting** (implemented here)
36
- * - Keep only the last N messages
37
- * - Most common and simplest approach
38
- * - Typical values: 20-100 messages depending on use case
39
- *
40
- * 2. **Token-Based Limiting** (future enhancement)
41
- * - Count tokens and keep messages until hitting token budget
42
- * - More accurate for cost control
43
- * - Requires token counting library (e.g., tiktoken, @anthropic-ai/tokenizer)
44
- *
45
- * 3. **Hybrid Approach** (future enhancement)
46
- * - Combine message count with token budget as safety check
47
- * - Best of both worlds
48
- *
49
- * 4. **Sliding Window with Summary** (advanced)
50
- * - Keep recent messages + summarize older ones
51
- * - Requires summarization step
52
- *
53
- * 5. **Priority-Based** (implemented via keepFirstUserMessage)
54
- * - Always keep system messages, first user message, and recent messages
55
- * - Preserves important context while limiting size
56
- */
57
- export class ContextLimiter {
58
- /**
59
- * Limits the context by keeping only the most recent messages
60
- * while preserving important messages (first user message, system messages).
61
- *
62
- * @param messages - All messages from the chat (assumed to be in chronological order)
63
- * @param options - Limiting options
64
- * @returns Limited array of messages in original order
65
- */
66
- static limitContext(
67
- messages: AgentMessage[],
68
- options: ContextLimitOptions = {}
69
- ): AgentMessage[] {
70
- const {
71
- maxMessages = 5,
72
- keepFirstUserMessage = true,
73
- keepSystemMessages = true,
74
- } = options;
75
-
76
- // If we have fewer messages than the limit, return all
77
- if (messages.length <= maxMessages) {
78
- return messages;
79
- }
80
-
81
- // Separate system messages from the rest
82
- const systemMessages: AgentMessage[] = [];
83
- const nonSystemMessages: AgentMessage[] = [];
84
-
85
- messages.forEach((msg) => {
86
- if (msg.role === MessageRole.System && keepSystemMessages) {
87
- systemMessages.push(msg);
88
- } else {
89
- nonSystemMessages.push(msg);
90
- }
91
- });
92
-
93
- // Find the first user message (if we need to keep it)
94
- const firstUserMessageIndex = keepFirstUserMessage
95
- ? nonSystemMessages.findIndex((msg) => msg.role === MessageRole.User)
96
- : -1;
97
- const firstUserMessage = firstUserMessageIndex >= 0
98
- ? nonSystemMessages[firstUserMessageIndex]
99
- : undefined;
100
-
101
- // Calculate how many recent messages we can keep
102
- // Reserve slots for: system messages
103
- let availableSlots = maxMessages - systemMessages.length;
104
- const shouldKeepFirstUser = keepFirstUserMessage && firstUserMessage !== undefined;
105
-
106
- // Get the most recent messages (from the end)
107
- // We'll check if first user is in recent messages after slicing
108
- const recentCount = Math.max(0, availableSlots);
109
- const recentStartIndex = Math.max(0, nonSystemMessages.length - recentCount);
110
- const recentMessages = nonSystemMessages.slice(recentStartIndex);
111
-
112
- // Check if first user message is already in recent messages
113
- const firstUserInRecent = shouldKeepFirstUser && firstUserMessage
114
- ? recentMessages.some((msg) => msg.id === firstUserMessage.id)
115
- : false;
116
-
117
- // If first user is not in recent and we need to keep it, we need to make room
118
- if (shouldKeepFirstUser && firstUserMessage && !firstUserInRecent) {
119
- // Remove the oldest recent message to make room for first user message
120
- if (recentMessages.length > 0) {
121
- recentMessages.shift();
122
- }
123
- }
124
-
125
- // Build the set of messages to keep
126
- const messagesToKeep = new Set<string>();
127
-
128
- // Add system messages
129
- systemMessages.forEach((msg) => messagesToKeep.add(msg.id));
130
-
131
- // Add first user message if needed
132
- if (shouldKeepFirstUser && firstUserMessage) {
133
- messagesToKeep.add(firstUserMessage.id);
134
- }
135
-
136
- // Add recent messages
137
- recentMessages.forEach((msg) => messagesToKeep.add(msg.id));
138
-
139
- // Reconstruct in original order
140
- return messages.filter((msg) => messagesToKeep.has(msg.id));
141
- }
142
-
143
- /**
144
- * Estimates token count for a message (rough approximation).
145
- * For accurate token counting, use a proper tokenizer library.
146
- *
147
- * This is a simple approximation: ~4 characters per token for English text.
148
- *
149
- * @param message - Message to estimate tokens for
150
- * @returns Estimated token count
151
- */
152
- static estimateTokens(message: AgentMessage): number {
153
- const content = typeof message.content === 'string'
154
- ? message.content
155
- : JSON.stringify(message.content);
156
-
157
- // Rough approximation: 1 token ≈ 4 characters for English
158
- // This is a simplified estimate - actual tokenization varies by model
159
- const baseTokens = Math.ceil(content.length / 4);
160
-
161
- // Add overhead for message structure (role, formatting, etc.)
162
- const overhead = 10;
163
-
164
- // Add tokens for tool calls if present
165
- const toolCallTokens = message.toolCalls?.reduce((acc, toolCall) => {
166
- const inputTokens = Math.ceil(JSON.stringify(toolCall.input).length / 4);
167
- const outputTokens = toolCall.output
168
- ? Math.ceil(JSON.stringify(toolCall.output).length / 4)
169
- : 0;
170
- return acc + inputTokens + outputTokens + 20; // 20 for tool call structure
171
- }, 0) || 0;
172
-
173
- return baseTokens + overhead + toolCallTokens;
174
- }
175
-
176
- /**
177
- * Limits context by token count (future enhancement).
178
- * Currently not implemented - requires proper tokenizer.
179
- *
180
- * @param messages - All messages from the chat
181
- * @param maxTokens - Maximum token count
182
- * @returns Limited array of messages
183
- */
184
- static limitByTokens(
185
- messages: AgentMessage[],
186
- maxTokens: number
187
- ): AgentMessage[] {
188
- // This is a placeholder for token-based limiting
189
- // To implement properly, you would:
190
- // 1. Install a tokenizer (e.g., tiktoken for OpenAI, @anthropic-ai/tokenizer for Claude)
191
- // 2. Count tokens for each message
192
- // 3. Keep messages from the end until hitting the token limit
193
- // 4. Always keep system messages and optionally first user message
194
-
195
- let totalTokens = 0;
196
- const limitedMessages: AgentMessage[] = [];
197
-
198
- // Keep system messages first
199
- const systemMessages = messages.filter(
200
- (msg) => msg.role === MessageRole.System
201
- );
202
- systemMessages.forEach((msg) => {
203
- const tokens = this.estimateTokens(msg);
204
- if (totalTokens + tokens <= maxTokens) {
205
- limitedMessages.push(msg);
206
- totalTokens += tokens;
207
- }
208
- });
209
-
210
- // Then keep messages from the end
211
- const nonSystemMessages = messages
212
- .filter((msg) => msg.role !== MessageRole.System)
213
- .reverse();
214
-
215
- for (const message of nonSystemMessages) {
216
- const tokens = this.estimateTokens(message);
217
- if (totalTokens + tokens <= maxTokens) {
218
- limitedMessages.unshift(message); // Add to beginning to maintain order
219
- totalTokens += tokens;
220
- } else {
221
- break;
222
- }
223
- }
224
-
225
- return limitedMessages;
226
- }
227
- }
228
-
@@ -1,197 +0,0 @@
1
- import type { AgentAttachment } from '@multiplayer-app/ai-agent-types';
2
- import { AgentAttachmentType } from '@multiplayer-app/ai-agent-types';
3
- import { s3 } from '../libs/s3';
4
- import { logger } from '../libs/logger';
5
- import { PDFParse } from 'pdf-parse';
6
- import {config} from "../config";
7
-
8
- export interface ProcessedAttachment extends AgentAttachment {
9
- extractedText?: string;
10
- processingStatus?: 'pending' | 'processed' | 'failed';
11
- }
12
-
13
- /**
14
- * Checks if an attachment is an image
15
- */
16
- export function isImage(attachment: AgentAttachment): boolean {
17
- if (attachment.type !== AgentAttachmentType.File) return false;
18
- const mimeType = attachment.mimeType || '';
19
- return mimeType.startsWith('image/');
20
- }
21
-
22
- /**
23
- * Checks if an attachment is a document that can have text extracted
24
- */
25
- export function isDocument(attachment: AgentAttachment): boolean {
26
- if (attachment.type !== AgentAttachmentType.File) return false;
27
- const mimeType = attachment.mimeType || '';
28
- return mimeType.startsWith('text/') || mimeType.startsWith('application/')
29
- }
30
-
31
- /**
32
- * Extracts text from a document attachment
33
- */
34
- export async function extractTextFromDocument(
35
- attachment: AgentAttachment
36
- ): Promise<string | undefined> {
37
- if (!isDocument(attachment) || attachment.type !== AgentAttachmentType.File) {
38
- logger.debug('Attachment is not a document or not a file type', {
39
- attachmentId: attachment.id,
40
- type: attachment.type,
41
- mimeType: attachment.mimeType
42
- });
43
- return undefined;
44
- }
45
-
46
- try {
47
- const mimeType = attachment.mimeType || '';
48
-
49
- // All files are stored in S3 (s3Key is in metadata)
50
- if (attachment.metadata?.s3Key) {
51
- const s3Key = attachment.metadata.s3Key as string;
52
- const bucket = config.s3.bucket;
53
- if (mimeType === 'application/pdf') {
54
- const buffer = await s3.downloadFileAsByteArray(s3Key, bucket);
55
- if (buffer) {
56
- // Convert Uint8Array to Buffer
57
- const nodeBuffer = Buffer.from(buffer);
58
- return await extractTextFromPDF(nodeBuffer);
59
- }
60
- } else if (
61
- mimeType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
62
- ) {
63
- const buffer = await s3.downloadFileAsByteArray(s3Key, bucket);
64
- if (buffer) {
65
- // Convert Uint8Array to Buffer
66
- const nodeBuffer = Buffer.from(buffer);
67
- return await extractTextFromDOCX(nodeBuffer);
68
- }
69
- } else {
70
- const text = await s3.downloadFileAsString(s3Key, bucket);
71
- return text || undefined;
72
- }
73
- }
74
-
75
- return undefined;
76
- } catch (error) {
77
- logger.error('Failed to extract text from document', { error, attachmentId: attachment.id });
78
- return undefined;
79
- }
80
- }
81
-
82
- /**
83
- * Extracts text from PDF buffer
84
- */
85
- async function extractTextFromPDF(buffer: Buffer): Promise<string | undefined> {
86
- try {
87
- const {PDFParse} = await import('pdf-parse');
88
- const parser = new PDFParse({ data: buffer });
89
- const text = (await parser.getText()).text || '';
90
-
91
- // Limit extracted text size
92
- const maxSize = Number(process.env.MAX_EXTRACTED_TEXT_SIZE) || 51200;
93
- return text.length > maxSize ? text.substring(0, maxSize) + '...' : text;
94
- } catch (error) {
95
- logger.warn('PDF text extraction failed (pdf-parse may not be installed)', { error });
96
- return undefined;
97
- }
98
- }
99
-
100
- /**
101
- * Extracts text from DOCX buffer
102
- */
103
- async function extractTextFromDOCX(buffer: Buffer): Promise<string | undefined> {
104
- try {
105
- const mammoth = await import('mammoth');
106
- const result = await mammoth.extractRawText({ buffer });
107
- const text = result.value || '';
108
-
109
- // Limit extracted text size
110
- const maxSize = Number(process.env.MAX_EXTRACTED_TEXT_SIZE) || 51200;
111
- return text.length > maxSize ? text.substring(0, maxSize) + '...' : text;
112
- } catch (error) {
113
- logger.warn('DOCX text extraction failed (mammoth may not be installed)', { error });
114
- return undefined;
115
- }
116
- }
117
-
118
- /**
119
- * Processes an attachment and extracts content as needed
120
- */
121
- export async function processAttachment(
122
- attachment: AgentAttachment
123
- ): Promise<ProcessedAttachment> {
124
- const processed: ProcessedAttachment = { ...attachment };
125
-
126
- // Only process file attachments
127
- if (attachment.type !== AgentAttachmentType.File) {
128
- return processed;
129
- }
130
-
131
- // Check if text extraction is enabled
132
- const enableTextExtraction = process.env.ENABLE_TEXT_EXTRACTION !== 'false';
133
-
134
- if (enableTextExtraction && isDocument(attachment)) {
135
- try {
136
- processed.processingStatus = 'pending';
137
- const extractedText = await extractTextFromDocument(attachment);
138
- if (extractedText) {
139
- processed.extractedText = extractedText;
140
- processed.processingStatus = 'processed';
141
- } else {
142
- processed.processingStatus = 'failed';
143
- }
144
- } catch (error) {
145
- logger.error('Failed to process document attachment', { error, attachmentId: attachment.id });
146
- processed.processingStatus = 'failed';
147
- }
148
- }
149
-
150
- return processed;
151
- }
152
-
153
- /**
154
- * Prepares an image attachment for vision API
155
- */
156
- export async function prepareImageForVisionAPI(attachment: AgentAttachment): Promise<{
157
- type: 'image_url';
158
- image_url: { url: string };
159
- } | null> {
160
- if (!isImage(attachment) || attachment.type !== AgentAttachmentType.File) {
161
- return null;
162
- }
163
-
164
- // All files are stored in S3 - generate presigned download URL
165
- if (attachment.metadata?.s3Key) {
166
- try {
167
- const s3Key = attachment.metadata.s3Key as string;
168
- const bucket = config.s3.bucket;
169
- const buffer = await s3.downloadFileAsByteArray(s3Key, bucket);
170
- if(!buffer) {
171
- return null;
172
- }
173
- const mimeType = attachment.mimeType || 'image/png';
174
- return {
175
- type: 'image_url',
176
- image_url: {
177
- url: `data:${mimeType};base64,${Buffer.from(buffer).toString('base64')}`,
178
- },
179
- };
180
- } catch (error) {
181
- logger.error('Failed to generate presigned URL for S3 image', { error, attachmentId: attachment.id });
182
- return null;
183
- }
184
- }
185
-
186
- // Fallback: If we have a URL (backward compatibility)
187
- if (attachment.url) {
188
- return {
189
- type: 'image_url',
190
- image_url: {
191
- url: attachment.url,
192
- },
193
- };
194
- }
195
-
196
- return null;
197
- }
@@ -1,35 +0,0 @@
1
- import { logger } from '../libs/logger';
2
- import { agentStore, ModelStore } from '../store';
3
- import { redisService, kafkaService, ModelFetcher } from '../services';
4
- import { s3 } from "../libs/s3";
5
- import { config } from "../config";
6
- import { AgentChatRepository, AgentMessageRepository } from '@multiplayer-app/ai-agent-db';
7
-
8
- export async function fetchModels() {
9
- try {
10
- const modelFetcher = new ModelFetcher();
11
- const models = await modelFetcher.fetchAllModels();
12
- ModelStore.getInstance().setModels(models);
13
- } catch (error) {
14
- logger.error('Failed to fetch models on startup:', error);
15
- throw error;
16
- }
17
- }
18
-
19
- export function startServices(agentChatRepository: AgentChatRepository, agentMessageRepository: AgentMessageRepository) {
20
- kafkaService.setRepositories(agentChatRepository, agentMessageRepository);
21
-
22
- return Promise.all([
23
- kafkaService.start(),
24
- agentStore.initialize(),
25
- fetchModels(),
26
- s3.ensureBucketExists(config.s3.bucket),
27
- ])
28
- }
29
-
30
- export function stopServices() {
31
- return Promise.all([
32
- redisService.disconnect(),
33
- kafkaService.stop()
34
- ])
35
- }
@@ -1,5 +0,0 @@
1
- export * from './AIHelper';
2
- export * from './ConfigHelper';
3
- export * from './ContextLimiter';
4
- export * from './FileHelper';
5
- export * from './SetupHelper';
package/src/index.ts DELETED
@@ -1,18 +0,0 @@
1
- export { kafkaService } from './services/KafkaService';
2
- export { redisService } from './services/RedisService';
3
- export { socketService } from './services/SocketService';
4
- export { agentStore, AgentProcessEventType } from './store/AgentStore';
5
- export type { AgentProcessEvent, AgentProcessListener, AgentProcess, AgentProcessEventPayload } from './store/AgentStore';
6
- export { ConfigStore } from './store/ConfigStore';
7
- export { ModelStore } from './store/ModelStore';
8
- export { ArtifactStore } from './store/ArtifactStore';
9
- export { ChatProcessor, ModelsProcessor } from './processors';
10
- export { startServices, stopServices } from './helpers/SetupHelper';
11
- export { createProposeFormValuesTool, proposeFormValuesToolName } from './tools/proposeFormValuesTool';
12
- export { s3 } from './libs/s3';
13
- export { setLogger, getLogger, logger, type AgentLogger } from './libs/logger';
14
-
15
- export * as store from "./store";
16
- export * as services from "./services";
17
- export * as processors from "./processors";
18
- export * as helpers from "./helpers";
package/src/libs/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './kafka';
2
- export * from './logger';
3
- export * from './s3';
@@ -1,4 +0,0 @@
1
- export const SERVICE_NAME = process.env.npm_package_name
2
- export const KAFKA_URI = (process.env.KAFKA_URI as string || 'localhost:9092').split(',')
3
- export const KAFKA_CLIENT_ID = process.env.KAFKA_CLIENT_ID as string || SERVICE_NAME
4
- export const KAFKA_SESSION_TIMEOUT = Number.parseInt(process.env.KAFKA_SESSION_TIMEOUT || '30000')
@@ -1,161 +0,0 @@
1
- import { Consumer, ConsumerRunConfig, IHeaders, Message } from 'kafkajs'
2
- import logger from '../logger'
3
- import { kafka } from './kafka'
4
- import { KAFKA_SESSION_TIMEOUT } from './config'
5
-
6
- const startTimer = () => {
7
- const startTime = process.hrtime()
8
- return startTime
9
- }
10
- const getDuration = (startTime) => {
11
- const diff = process.hrtime(startTime)
12
- return diff[0] * 1e3 + diff[1] * 1e-6
13
- }
14
-
15
- export type KafkaConsumerListener = (key, value, headers?: IHeaders) => void | Promise<void>
16
- export class KafkaConsumer {
17
- private consumer: Consumer
18
- private listeners: Record<string, KafkaConsumerListener[]> = {}
19
- private lastHeartbeat: number = 0
20
-
21
- constructor(groupId: string) {
22
- this.consumer = kafka.consumer({
23
- groupId,
24
- sessionTimeout: KAFKA_SESSION_TIMEOUT,
25
- })
26
- this.consumer.on(this.consumer.events.HEARTBEAT, ({ timestamp }) => {
27
- this.lastHeartbeat = timestamp
28
- })
29
- this.consumer.on(this.consumer.events.REQUEST_TIMEOUT, ({ timestamp }) => {
30
- this.lastHeartbeat = 0
31
- })
32
- this.consumer.on(this.consumer.events.CRASH, ({ timestamp }) => {
33
- this.lastHeartbeat = 0
34
- })
35
- }
36
-
37
- public async isConnected() {
38
- if (Date.now() - this.lastHeartbeat < KAFKA_SESSION_TIMEOUT) {
39
- return true
40
- }
41
- try {
42
- const { state } = await this.consumer.describeGroup()
43
- return ['CompletingRebalance', 'PreparingRebalance', 'Stable'].includes(state)
44
- } catch (err) {
45
- return false
46
- }
47
- }
48
-
49
- public async connect() {
50
- await this.consumer.connect()
51
- }
52
-
53
- public async disconnect() {
54
- await this.consumer.disconnect()
55
- }
56
-
57
- public async subscribe(topic: string, listener: KafkaConsumerListener) {
58
- logger.info({ topic }, '[KAFKAJS] Subscribing for topic')
59
-
60
- if (!this.listeners[topic]) {
61
- this.listeners[topic] = []
62
- }
63
- this.listeners[topic].push(listener)
64
- }
65
-
66
- private async listenFnWrapper(
67
- topic: string,
68
- message: Message,
69
- ) {
70
-
71
- const parseStartTime = startTimer()
72
- try {
73
- if (!this.listeners[topic]?.length) {
74
- logger.error(`[KAFKAJS] Missing handler for topic ${topic}`)
75
- }
76
-
77
- if (!message?.value) {
78
- return
79
- }
80
-
81
- const key = message?.key?.toString('utf8')
82
- const value = JSON.parse(message.value.toString('utf8'))
83
- const headers = message.headers
84
-
85
- logger.debug(
86
- {
87
- topic,
88
- key,
89
- value,
90
- },
91
- `[KAFKAJS] Received message from topic ${topic}`,
92
- )
93
-
94
- await Promise.all(this.listeners[topic].map(func => func(key, value, headers)))
95
-
96
- logger.debug({
97
- key,
98
- topic,
99
- duration: getDuration(parseStartTime),
100
- }, '[KAFKAJS] Done with processing data from kafka')
101
- } catch (err) {
102
- logger.error(err, '[KAFKAJS] Error on handling incoming message')
103
- }
104
- }
105
-
106
- public async listen(options: Omit<ConsumerRunConfig, 'eachMessage' | 'eachBatch'> = {
107
- partitionsConsumedConcurrently: 3, autoCommit: true,
108
- }) {
109
- const topics = Object.keys(this.listeners)
110
-
111
- await this.consumer.subscribe({
112
- topics,
113
- fromBeginning: true,
114
- })
115
-
116
- await this.consumer.run({
117
- autoCommit: true,
118
- ...options,
119
- eachMessage: async ({ topic, message }) => this.listenFnWrapper(topic, message),
120
- })
121
- }
122
-
123
- public async listenBatch(options: Omit<ConsumerRunConfig, 'eachMessage' | 'eachBatch'>) {
124
- const topics = Object.keys(this.listeners)
125
-
126
- await this.consumer.subscribe({
127
- topics,
128
- fromBeginning: true,
129
- })
130
-
131
- await this.consumer.run({
132
- eachBatchAutoResolve: true,
133
- ...options,
134
- eachBatch: async ({
135
- batch,
136
- resolveOffset,
137
- heartbeat,
138
- commitOffsetsIfNecessary,
139
- uncommittedOffsets,
140
- isRunning,
141
- isStale,
142
- pause,
143
- }) => {
144
- for (const message of batch.messages) {
145
- if (!this.listeners[batch.topic]?.length) {
146
- logger.error(`[KAFKAJS] Missing handler for topic ${batch.topic}`)
147
- }
148
-
149
- try {
150
- await Promise.all(batch.messages.map(message => this.listenFnWrapper(batch.topic, message)))
151
- } catch (batchError) {
152
- logger.error(batchError, '[KAFKAJS] Batch fn error')
153
- }
154
-
155
- resolveOffset(message.offset)
156
- await heartbeat()
157
- }
158
- },
159
- })
160
- }
161
- }
@@ -1,2 +0,0 @@
1
- export * from './consumer'
2
- export * from './producer'
@@ -1,27 +0,0 @@
1
- import { Kafka, logLevel } from 'kafkajs'
2
- import { KAFKA_CLIENT_ID, KAFKA_URI } from './config'
3
- import { KafkaJsLogCreator } from '../logger'
4
-
5
-
6
- const toBunyanLogLevel = level => {
7
- switch (level) {
8
- case logLevel.ERROR:
9
- case logLevel.NOTHING:
10
- return 'error'
11
- case logLevel.WARN:
12
- return 'warn'
13
- case logLevel.INFO:
14
- return 'info'
15
- case logLevel.DEBUG:
16
- return 'debug'
17
- default:
18
- return 'info'
19
- }
20
- }
21
-
22
-
23
- export const kafka = new Kafka({
24
- clientId: KAFKA_CLIENT_ID,
25
- brokers: KAFKA_URI,
26
- logCreator: KafkaJsLogCreator(toBunyanLogLevel),
27
- })