@multiplayer-app/ai-agent-node 0.1.0-beta.1 → 0.1.0-beta.10

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 (423) hide show
  1. package/dist/cjs/config.cjs +56 -0
  2. package/dist/cjs/config.cjs.map +1 -0
  3. package/dist/{config.d.ts → cjs/config.d.ts} +11 -8
  4. package/dist/cjs/config.d.ts.map +1 -0
  5. package/{src/helpers/AIHelper.ts → dist/cjs/helpers/AIHelper.cjs} +115 -141
  6. package/dist/cjs/helpers/AIHelper.cjs.map +1 -0
  7. package/dist/cjs/helpers/AIHelper.d.ts.map +1 -0
  8. package/dist/cjs/helpers/AIHelper.test.cjs +334 -0
  9. package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -0
  10. package/dist/cjs/helpers/AIHelper.test.d.ts.map +1 -0
  11. package/dist/cjs/helpers/ConfigHelper.cjs +121 -0
  12. package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -0
  13. package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -0
  14. package/dist/cjs/helpers/ContextLimiter.cjs +168 -0
  15. package/dist/cjs/helpers/ContextLimiter.cjs.map +1 -0
  16. package/dist/cjs/helpers/ContextLimiter.d.ts.map +1 -0
  17. package/dist/cjs/helpers/FileHelper.cjs +213 -0
  18. package/dist/cjs/helpers/FileHelper.cjs.map +1 -0
  19. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -0
  20. package/dist/cjs/helpers/SetupHelper.cjs +34 -0
  21. package/dist/cjs/helpers/SetupHelper.cjs.map +1 -0
  22. package/dist/cjs/helpers/SetupHelper.d.ts +4 -0
  23. package/dist/cjs/helpers/SetupHelper.d.ts.map +1 -0
  24. package/dist/cjs/helpers/index.cjs +22 -0
  25. package/dist/cjs/helpers/index.cjs.map +1 -0
  26. package/dist/cjs/helpers/index.d.ts.map +1 -0
  27. package/dist/cjs/index.cjs +32 -0
  28. package/dist/cjs/index.cjs.map +1 -0
  29. package/{src/index.ts → dist/cjs/index.d.ts} +1 -6
  30. package/dist/cjs/index.d.ts.map +1 -0
  31. package/dist/cjs/libs/index.cjs +19 -0
  32. package/dist/cjs/libs/index.cjs.map +1 -0
  33. package/dist/cjs/libs/index.d.ts +3 -0
  34. package/dist/cjs/libs/index.d.ts.map +1 -0
  35. package/dist/cjs/libs/logger/config.cjs +9 -0
  36. package/dist/cjs/libs/logger/config.cjs.map +1 -0
  37. package/dist/cjs/libs/logger/config.d.ts.map +1 -0
  38. package/dist/cjs/libs/logger/index.cjs +38 -0
  39. package/dist/cjs/libs/logger/index.cjs.map +1 -0
  40. package/dist/cjs/libs/logger/index.d.ts.map +1 -0
  41. package/dist/cjs/libs/logger/kafkajs-logger-creator.cjs +33 -0
  42. package/dist/cjs/libs/logger/kafkajs-logger-creator.cjs.map +1 -0
  43. package/dist/cjs/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
  44. package/dist/cjs/libs/logger/logger.cjs +48 -0
  45. package/dist/cjs/libs/logger/logger.cjs.map +1 -0
  46. package/dist/cjs/libs/logger/logger.d.ts.map +1 -0
  47. package/dist/cjs/libs/s3/config.cjs +8 -0
  48. package/dist/cjs/libs/s3/config.cjs.map +1 -0
  49. package/dist/cjs/libs/s3/config.d.ts +4 -0
  50. package/dist/cjs/libs/s3/config.d.ts.map +1 -0
  51. package/dist/cjs/libs/s3/index.cjs +44 -0
  52. package/dist/cjs/libs/s3/index.cjs.map +1 -0
  53. package/dist/cjs/libs/s3/index.d.ts.map +1 -0
  54. package/dist/cjs/libs/s3/s3.lib.cjs +220 -0
  55. package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -0
  56. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -0
  57. package/dist/cjs/processors/ChatProcessor.cjs +620 -0
  58. package/dist/cjs/processors/ChatProcessor.cjs.map +1 -0
  59. package/dist/{processors → cjs/processors}/ChatProcessor.d.ts +1 -0
  60. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -0
  61. package/dist/cjs/processors/ModelsProcessor.cjs +34 -0
  62. package/dist/cjs/processors/ModelsProcessor.cjs.map +1 -0
  63. package/dist/cjs/processors/ModelsProcessor.d.ts.map +1 -0
  64. package/dist/cjs/processors/index.cjs +19 -0
  65. package/dist/cjs/processors/index.cjs.map +1 -0
  66. package/dist/cjs/processors/index.d.ts.map +1 -0
  67. package/dist/cjs/services/AIService.cjs +196 -0
  68. package/dist/cjs/services/AIService.cjs.map +1 -0
  69. package/dist/cjs/services/AIService.d.ts.map +1 -0
  70. package/dist/cjs/services/InternalEventsHandler.cjs +60 -0
  71. package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -0
  72. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -0
  73. package/dist/cjs/services/ModelFetcher.cjs +251 -0
  74. package/dist/cjs/services/ModelFetcher.cjs.map +1 -0
  75. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -0
  76. package/dist/cjs/services/RedisService.cjs +239 -0
  77. package/dist/cjs/services/RedisService.cjs.map +1 -0
  78. package/dist/cjs/services/RedisService.d.ts.map +1 -0
  79. package/dist/cjs/services/SocketService.cjs +132 -0
  80. package/dist/cjs/services/SocketService.cjs.map +1 -0
  81. package/dist/{services → cjs/services}/SocketService.d.ts +1 -1
  82. package/dist/cjs/services/SocketService.d.ts.map +1 -0
  83. package/dist/cjs/services/index.cjs +22 -0
  84. package/dist/cjs/services/index.cjs.map +1 -0
  85. package/dist/{services → cjs/services}/index.d.ts +0 -1
  86. package/dist/cjs/services/index.d.ts.map +1 -0
  87. package/dist/cjs/store/AgentStore.cjs +102 -0
  88. package/dist/cjs/store/AgentStore.cjs.map +1 -0
  89. package/dist/cjs/store/AgentStore.d.ts.map +1 -0
  90. package/dist/{store/ArtifactStore.js → cjs/store/ArtifactStore.cjs} +7 -5
  91. package/dist/cjs/store/ArtifactStore.cjs.map +1 -0
  92. package/dist/cjs/store/ArtifactStore.d.ts.map +1 -0
  93. package/dist/cjs/store/ConfigStore.cjs +217 -0
  94. package/dist/cjs/store/ConfigStore.cjs.map +1 -0
  95. package/dist/cjs/store/ConfigStore.d.ts.map +1 -0
  96. package/dist/cjs/store/ConfigStore.test.cjs +261 -0
  97. package/dist/cjs/store/ConfigStore.test.cjs.map +1 -0
  98. package/dist/cjs/store/ConfigStore.test.d.ts.map +1 -0
  99. package/dist/cjs/store/ModelStore.cjs +85 -0
  100. package/dist/cjs/store/ModelStore.cjs.map +1 -0
  101. package/dist/cjs/store/ModelStore.d.ts.map +1 -0
  102. package/dist/cjs/store/ModelStore.test.cjs +392 -0
  103. package/dist/cjs/store/ModelStore.test.cjs.map +1 -0
  104. package/dist/cjs/store/ModelStore.test.d.ts.map +1 -0
  105. package/dist/cjs/store/index.cjs +21 -0
  106. package/dist/cjs/store/index.cjs.map +1 -0
  107. package/dist/cjs/store/index.d.ts.map +1 -0
  108. package/dist/cjs/tools/generateChartTool.cjs +128 -0
  109. package/dist/cjs/tools/generateChartTool.cjs.map +1 -0
  110. package/dist/cjs/tools/generateChartTool.d.ts.map +1 -0
  111. package/dist/cjs/tools/proposeFormValuesTool.cjs +60 -0
  112. package/dist/cjs/tools/proposeFormValuesTool.cjs.map +1 -0
  113. package/dist/{tools → cjs/tools}/proposeFormValuesTool.d.ts +2 -2
  114. package/dist/cjs/tools/proposeFormValuesTool.d.ts.map +1 -0
  115. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  116. package/dist/esm/config.d.ts +38 -0
  117. package/dist/esm/config.d.ts.map +1 -0
  118. package/dist/esm/config.js +52 -0
  119. package/dist/esm/config.js.map +1 -0
  120. package/dist/esm/helpers/AIHelper.d.ts +23 -0
  121. package/dist/esm/helpers/AIHelper.d.ts.map +1 -0
  122. package/dist/{helpers → esm/helpers}/AIHelper.js +29 -32
  123. package/dist/esm/helpers/AIHelper.js.map +1 -0
  124. package/dist/esm/helpers/AIHelper.test.d.ts +2 -0
  125. package/dist/esm/helpers/AIHelper.test.d.ts.map +1 -0
  126. package/dist/esm/helpers/AIHelper.test.js.map +1 -0
  127. package/dist/esm/helpers/ConfigHelper.d.ts +20 -0
  128. package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -0
  129. package/dist/{helpers → esm/helpers}/ConfigHelper.js +1 -2
  130. package/dist/esm/helpers/ConfigHelper.js.map +1 -0
  131. package/dist/esm/helpers/ContextLimiter.d.ts +82 -0
  132. package/dist/esm/helpers/ContextLimiter.d.ts.map +1 -0
  133. package/dist/{helpers → esm/helpers}/ContextLimiter.js +2 -3
  134. package/dist/esm/helpers/ContextLimiter.js.map +1 -0
  135. package/dist/esm/helpers/FileHelper.d.ts +31 -0
  136. package/dist/esm/helpers/FileHelper.d.ts.map +1 -0
  137. package/dist/{helpers → esm/helpers}/FileHelper.js +5 -7
  138. package/dist/esm/helpers/FileHelper.js.map +1 -0
  139. package/dist/esm/helpers/SetupHelper.d.ts +4 -0
  140. package/dist/esm/helpers/SetupHelper.d.ts.map +1 -0
  141. package/dist/{helpers → esm/helpers}/SetupHelper.js +4 -7
  142. package/dist/esm/helpers/SetupHelper.js.map +1 -0
  143. package/{src/helpers/index.ts → dist/esm/helpers/index.d.ts} +2 -1
  144. package/dist/esm/helpers/index.d.ts.map +1 -0
  145. package/dist/esm/helpers/index.js.map +1 -0
  146. package/dist/{index.d.ts → esm/index.d.ts} +0 -5
  147. package/dist/esm/index.d.ts.map +1 -0
  148. package/dist/{index.js → esm/index.js} +0 -5
  149. package/dist/esm/index.js.map +1 -0
  150. package/dist/esm/libs/index.d.ts +3 -0
  151. package/dist/esm/libs/index.d.ts.map +1 -0
  152. package/dist/esm/libs/index.js +3 -0
  153. package/dist/esm/libs/index.js.map +1 -0
  154. package/dist/esm/libs/logger/config.d.ts +5 -0
  155. package/dist/esm/libs/logger/config.d.ts.map +1 -0
  156. package/dist/esm/libs/logger/config.js +6 -0
  157. package/dist/esm/libs/logger/config.js.map +1 -0
  158. package/dist/esm/libs/logger/index.d.ts +10 -0
  159. package/dist/esm/libs/logger/index.d.ts.map +1 -0
  160. package/dist/esm/libs/logger/index.js.map +1 -0
  161. package/dist/esm/libs/logger/kafkajs-logger-creator.d.ts +12 -0
  162. package/dist/esm/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
  163. package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -0
  164. package/dist/esm/libs/logger/logger.d.ts +42 -0
  165. package/dist/esm/libs/logger/logger.d.ts.map +1 -0
  166. package/dist/esm/libs/logger/logger.js.map +1 -0
  167. package/dist/esm/libs/s3/config.d.ts +4 -0
  168. package/dist/esm/libs/s3/config.d.ts.map +1 -0
  169. package/dist/esm/libs/s3/config.js +5 -0
  170. package/dist/esm/libs/s3/config.js.map +1 -0
  171. package/dist/esm/libs/s3/index.d.ts +4 -0
  172. package/dist/esm/libs/s3/index.d.ts.map +1 -0
  173. package/dist/esm/libs/s3/index.js.map +1 -0
  174. package/dist/esm/libs/s3/s3.lib.d.ts +25 -0
  175. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -0
  176. package/dist/{libs → esm/libs}/s3/s3.lib.js +8 -12
  177. package/dist/esm/libs/s3/s3.lib.js.map +1 -0
  178. package/dist/esm/processors/ChatProcessor.d.ts +67 -0
  179. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -0
  180. package/dist/{processors → esm/processors}/ChatProcessor.js +41 -32
  181. package/dist/esm/processors/ChatProcessor.js.map +1 -0
  182. package/dist/esm/processors/ModelsProcessor.d.ts +11 -0
  183. package/dist/esm/processors/ModelsProcessor.d.ts.map +1 -0
  184. package/dist/esm/processors/ModelsProcessor.js.map +1 -0
  185. package/dist/esm/processors/index.d.ts +3 -0
  186. package/dist/esm/processors/index.d.ts.map +1 -0
  187. package/dist/esm/processors/index.js.map +1 -0
  188. package/dist/esm/services/AIService.d.ts +48 -0
  189. package/dist/esm/services/AIService.d.ts.map +1 -0
  190. package/dist/{services → esm/services}/AIService.js +9 -12
  191. package/dist/esm/services/AIService.js.map +1 -0
  192. package/dist/esm/services/InternalEventsHandler.d.ts +21 -0
  193. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -0
  194. package/dist/{services → esm/services}/InternalEventsHandler.js +5 -4
  195. package/dist/esm/services/InternalEventsHandler.js.map +1 -0
  196. package/dist/esm/services/ModelFetcher.d.ts +54 -0
  197. package/dist/esm/services/ModelFetcher.d.ts.map +1 -0
  198. package/dist/{services → esm/services}/ModelFetcher.js +1 -0
  199. package/dist/esm/services/ModelFetcher.js.map +1 -0
  200. package/dist/esm/services/RedisService.d.ts +90 -0
  201. package/dist/esm/services/RedisService.d.ts.map +1 -0
  202. package/dist/{services → esm/services}/RedisService.js +9 -12
  203. package/dist/esm/services/RedisService.js.map +1 -0
  204. package/dist/esm/services/SocketService.d.ts +39 -0
  205. package/dist/esm/services/SocketService.d.ts.map +1 -0
  206. package/dist/{services → esm/services}/SocketService.js +6 -8
  207. package/dist/esm/services/SocketService.js.map +1 -0
  208. package/{src/services/index.ts → dist/esm/services/index.d.ts} +2 -2
  209. package/dist/esm/services/index.d.ts.map +1 -0
  210. package/dist/{services → esm/services}/index.js +0 -1
  211. package/dist/esm/services/index.js.map +1 -0
  212. package/dist/esm/store/AgentStore.d.ts +48 -0
  213. package/dist/esm/store/AgentStore.d.ts.map +1 -0
  214. package/dist/{store → esm/store}/AgentStore.js +2 -4
  215. package/dist/esm/store/AgentStore.js.map +1 -0
  216. package/dist/esm/store/ArtifactStore.d.ts +13 -0
  217. package/dist/esm/store/ArtifactStore.d.ts.map +1 -0
  218. package/dist/esm/store/ArtifactStore.js +23 -0
  219. package/dist/esm/store/ArtifactStore.js.map +1 -0
  220. package/dist/esm/store/ConfigStore.d.ts +89 -0
  221. package/dist/esm/store/ConfigStore.d.ts.map +1 -0
  222. package/dist/{store → esm/store}/ConfigStore.js +15 -16
  223. package/dist/esm/store/ConfigStore.js.map +1 -0
  224. package/dist/esm/store/ConfigStore.test.d.ts +2 -0
  225. package/dist/esm/store/ConfigStore.test.d.ts.map +1 -0
  226. package/dist/esm/store/ConfigStore.test.js.map +1 -0
  227. package/dist/esm/store/ModelStore.d.ts +44 -0
  228. package/dist/esm/store/ModelStore.d.ts.map +1 -0
  229. package/dist/{store → esm/store}/ModelStore.js +4 -4
  230. package/dist/esm/store/ModelStore.js.map +1 -0
  231. package/dist/esm/store/ModelStore.test.d.ts +2 -0
  232. package/dist/esm/store/ModelStore.test.d.ts.map +1 -0
  233. package/dist/{store → esm/store}/ModelStore.test.js +11 -11
  234. package/dist/esm/store/ModelStore.test.js.map +1 -0
  235. package/{src/store/index.ts → dist/esm/store/index.d.ts} +1 -0
  236. package/dist/esm/store/index.d.ts.map +1 -0
  237. package/dist/esm/store/index.js.map +1 -0
  238. package/dist/esm/tools/generateChartTool.d.ts +24 -0
  239. package/dist/esm/tools/generateChartTool.d.ts.map +1 -0
  240. package/dist/esm/tools/generateChartTool.js.map +1 -0
  241. package/dist/esm/tools/proposeFormValuesTool.d.ts +35 -0
  242. package/dist/esm/tools/proposeFormValuesTool.d.ts.map +1 -0
  243. package/dist/esm/tools/proposeFormValuesTool.js.map +1 -0
  244. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  245. package/package.json +20 -9
  246. package/.env.example +0 -45
  247. package/config.example.json +0 -73
  248. package/dist/config.d.ts.map +0 -1
  249. package/dist/config.js +0 -44
  250. package/dist/config.js.map +0 -1
  251. package/dist/helpers/AIHelper.d.ts.map +0 -1
  252. package/dist/helpers/AIHelper.js.map +0 -1
  253. package/dist/helpers/AIHelper.test.d.ts.map +0 -1
  254. package/dist/helpers/AIHelper.test.js.map +0 -1
  255. package/dist/helpers/ConfigHelper.d.ts.map +0 -1
  256. package/dist/helpers/ConfigHelper.js.map +0 -1
  257. package/dist/helpers/ContextLimiter.d.ts.map +0 -1
  258. package/dist/helpers/ContextLimiter.js.map +0 -1
  259. package/dist/helpers/FileHelper.d.ts.map +0 -1
  260. package/dist/helpers/FileHelper.js.map +0 -1
  261. package/dist/helpers/SetupHelper.d.ts +0 -5
  262. package/dist/helpers/SetupHelper.d.ts.map +0 -1
  263. package/dist/helpers/SetupHelper.js.map +0 -1
  264. package/dist/helpers/index.d.ts.map +0 -1
  265. package/dist/helpers/index.js.map +0 -1
  266. package/dist/index.d.ts.map +0 -1
  267. package/dist/index.js.map +0 -1
  268. package/dist/libs/index.d.ts +0 -4
  269. package/dist/libs/index.d.ts.map +0 -1
  270. package/dist/libs/index.js +0 -4
  271. package/dist/libs/index.js.map +0 -1
  272. package/dist/libs/kafka/config.d.ts +0 -5
  273. package/dist/libs/kafka/config.d.ts.map +0 -1
  274. package/dist/libs/kafka/config.js +0 -5
  275. package/dist/libs/kafka/config.js.map +0 -1
  276. package/dist/libs/kafka/consumer.d.ts +0 -16
  277. package/dist/libs/kafka/consumer.d.ts.map +0 -1
  278. package/dist/libs/kafka/consumer.js +0 -126
  279. package/dist/libs/kafka/consumer.js.map +0 -1
  280. package/dist/libs/kafka/index.d.ts +0 -3
  281. package/dist/libs/kafka/index.d.ts.map +0 -1
  282. package/dist/libs/kafka/index.js +0 -3
  283. package/dist/libs/kafka/index.js.map +0 -1
  284. package/dist/libs/kafka/kafka.d.ts +0 -3
  285. package/dist/libs/kafka/kafka.d.ts.map +0 -1
  286. package/dist/libs/kafka/kafka.js +0 -24
  287. package/dist/libs/kafka/kafka.js.map +0 -1
  288. package/dist/libs/kafka/producer.d.ts +0 -11
  289. package/dist/libs/kafka/producer.d.ts.map +0 -1
  290. package/dist/libs/kafka/producer.js +0 -44
  291. package/dist/libs/kafka/producer.js.map +0 -1
  292. package/dist/libs/logger/config.d.ts.map +0 -1
  293. package/dist/libs/logger/config.js +0 -6
  294. package/dist/libs/logger/config.js.map +0 -1
  295. package/dist/libs/logger/index.d.ts.map +0 -1
  296. package/dist/libs/logger/index.js.map +0 -1
  297. package/dist/libs/logger/kafkajs-logger-creator.d.ts.map +0 -1
  298. package/dist/libs/logger/kafkajs-logger-creator.js.map +0 -1
  299. package/dist/libs/logger/logger.d.ts.map +0 -1
  300. package/dist/libs/logger/logger.js.map +0 -1
  301. package/dist/libs/s3/config.d.ts +0 -7
  302. package/dist/libs/s3/config.d.ts.map +0 -1
  303. package/dist/libs/s3/config.js +0 -7
  304. package/dist/libs/s3/config.js.map +0 -1
  305. package/dist/libs/s3/index.d.ts.map +0 -1
  306. package/dist/libs/s3/index.js.map +0 -1
  307. package/dist/libs/s3/s3.lib.d.ts.map +0 -1
  308. package/dist/libs/s3/s3.lib.js.map +0 -1
  309. package/dist/processors/ChatProcessor.d.ts.map +0 -1
  310. package/dist/processors/ChatProcessor.js.map +0 -1
  311. package/dist/processors/ModelsProcessor.d.ts.map +0 -1
  312. package/dist/processors/ModelsProcessor.js.map +0 -1
  313. package/dist/processors/index.d.ts.map +0 -1
  314. package/dist/processors/index.js.map +0 -1
  315. package/dist/services/AIService.d.ts.map +0 -1
  316. package/dist/services/AIService.js.map +0 -1
  317. package/dist/services/InternalEventsHandler.d.ts.map +0 -1
  318. package/dist/services/InternalEventsHandler.js.map +0 -1
  319. package/dist/services/KafkaService.d.ts +0 -35
  320. package/dist/services/KafkaService.d.ts.map +0 -1
  321. package/dist/services/KafkaService.js +0 -120
  322. package/dist/services/KafkaService.js.map +0 -1
  323. package/dist/services/ModelFetcher.d.ts.map +0 -1
  324. package/dist/services/ModelFetcher.js.map +0 -1
  325. package/dist/services/RedisService.d.ts.map +0 -1
  326. package/dist/services/RedisService.js.map +0 -1
  327. package/dist/services/SocketService.d.ts.map +0 -1
  328. package/dist/services/SocketService.js.map +0 -1
  329. package/dist/services/index.d.ts.map +0 -1
  330. package/dist/services/index.js.map +0 -1
  331. package/dist/store/AgentStore.d.ts.map +0 -1
  332. package/dist/store/AgentStore.js.map +0 -1
  333. package/dist/store/ArtifactStore.d.ts.map +0 -1
  334. package/dist/store/ArtifactStore.js.map +0 -1
  335. package/dist/store/ConfigStore.d.ts.map +0 -1
  336. package/dist/store/ConfigStore.js.map +0 -1
  337. package/dist/store/ConfigStore.test.d.ts.map +0 -1
  338. package/dist/store/ConfigStore.test.js.map +0 -1
  339. package/dist/store/ModelStore.d.ts.map +0 -1
  340. package/dist/store/ModelStore.js.map +0 -1
  341. package/dist/store/ModelStore.test.d.ts.map +0 -1
  342. package/dist/store/ModelStore.test.js.map +0 -1
  343. package/dist/store/index.d.ts.map +0 -1
  344. package/dist/store/index.js.map +0 -1
  345. package/dist/tools/generateChartTool.d.ts.map +0 -1
  346. package/dist/tools/generateChartTool.js.map +0 -1
  347. package/dist/tools/proposeFormValuesTool.d.ts.map +0 -1
  348. package/dist/tools/proposeFormValuesTool.js.map +0 -1
  349. package/src/config.ts +0 -46
  350. package/src/helpers/AIHelper.test.ts +0 -375
  351. package/src/helpers/ConfigHelper.ts +0 -130
  352. package/src/helpers/ContextLimiter.ts +0 -228
  353. package/src/helpers/FileHelper.ts +0 -197
  354. package/src/helpers/SetupHelper.ts +0 -35
  355. package/src/libs/index.ts +0 -3
  356. package/src/libs/kafka/config.ts +0 -4
  357. package/src/libs/kafka/consumer.ts +0 -161
  358. package/src/libs/kafka/index.ts +0 -2
  359. package/src/libs/kafka/kafka.ts +0 -27
  360. package/src/libs/kafka/producer.ts +0 -48
  361. package/src/libs/logger/config.ts +0 -4
  362. package/src/libs/logger/index.ts +0 -21
  363. package/src/libs/logger/kafkajs-logger-creator.ts +0 -28
  364. package/src/libs/logger/logger.ts +0 -60
  365. package/src/libs/s3/config.ts +0 -7
  366. package/src/libs/s3/index.ts +0 -3
  367. package/src/libs/s3/s3.lib.ts +0 -284
  368. package/src/processors/ChatProcessor.ts +0 -713
  369. package/src/processors/ModelsProcessor.ts +0 -34
  370. package/src/processors/index.ts +0 -2
  371. package/src/services/AIService.ts +0 -241
  372. package/src/services/InternalEventsHandler.ts +0 -61
  373. package/src/services/KafkaService.ts +0 -142
  374. package/src/services/ModelFetcher.ts +0 -286
  375. package/src/services/RedisService.ts +0 -285
  376. package/src/services/SocketService.ts +0 -153
  377. package/src/store/AgentStore.ts +0 -138
  378. package/src/store/ArtifactStore.ts +0 -29
  379. package/src/store/ConfigStore.test.ts +0 -314
  380. package/src/store/ConfigStore.ts +0 -239
  381. package/src/store/ModelStore.test.ts +0 -473
  382. package/src/store/ModelStore.ts +0 -93
  383. package/src/tools/generateChartTool.ts +0 -131
  384. package/src/tools/proposeFormValuesTool.ts +0 -67
  385. package/tsconfig.json +0 -23
  386. /package/dist/{helpers → cjs/helpers}/AIHelper.d.ts +0 -0
  387. /package/dist/{helpers → cjs/helpers}/AIHelper.test.d.ts +0 -0
  388. /package/dist/{helpers → cjs/helpers}/ConfigHelper.d.ts +0 -0
  389. /package/dist/{helpers → cjs/helpers}/ContextLimiter.d.ts +0 -0
  390. /package/dist/{helpers → cjs/helpers}/FileHelper.d.ts +0 -0
  391. /package/dist/{helpers → cjs/helpers}/index.d.ts +0 -0
  392. /package/dist/{libs → cjs/libs}/logger/config.d.ts +0 -0
  393. /package/dist/{libs → cjs/libs}/logger/index.d.ts +0 -0
  394. /package/dist/{libs → cjs/libs}/logger/kafkajs-logger-creator.d.ts +0 -0
  395. /package/dist/{libs → cjs/libs}/logger/logger.d.ts +0 -0
  396. /package/dist/{libs → cjs/libs}/s3/index.d.ts +0 -0
  397. /package/dist/{libs → cjs/libs}/s3/s3.lib.d.ts +0 -0
  398. /package/dist/{processors → cjs/processors}/ModelsProcessor.d.ts +0 -0
  399. /package/dist/{processors → cjs/processors}/index.d.ts +0 -0
  400. /package/dist/{services → cjs/services}/AIService.d.ts +0 -0
  401. /package/dist/{services → cjs/services}/InternalEventsHandler.d.ts +0 -0
  402. /package/dist/{services → cjs/services}/ModelFetcher.d.ts +0 -0
  403. /package/dist/{services → cjs/services}/RedisService.d.ts +0 -0
  404. /package/dist/{store → cjs/store}/AgentStore.d.ts +0 -0
  405. /package/dist/{store → cjs/store}/ArtifactStore.d.ts +0 -0
  406. /package/dist/{store → cjs/store}/ConfigStore.d.ts +0 -0
  407. /package/dist/{store → cjs/store}/ConfigStore.test.d.ts +0 -0
  408. /package/dist/{store → cjs/store}/ModelStore.d.ts +0 -0
  409. /package/dist/{store → cjs/store}/ModelStore.test.d.ts +0 -0
  410. /package/dist/{store → cjs/store}/index.d.ts +0 -0
  411. /package/dist/{tools → cjs/tools}/generateChartTool.d.ts +0 -0
  412. /package/dist/{helpers → esm/helpers}/AIHelper.test.js +0 -0
  413. /package/dist/{helpers → esm/helpers}/index.js +0 -0
  414. /package/dist/{libs → esm/libs}/logger/index.js +0 -0
  415. /package/dist/{libs → esm/libs}/logger/kafkajs-logger-creator.js +0 -0
  416. /package/dist/{libs → esm/libs}/logger/logger.js +0 -0
  417. /package/dist/{libs → esm/libs}/s3/index.js +0 -0
  418. /package/dist/{processors → esm/processors}/ModelsProcessor.js +0 -0
  419. /package/dist/{processors → esm/processors}/index.js +0 -0
  420. /package/dist/{store → esm/store}/ConfigStore.test.js +0 -0
  421. /package/dist/{store → esm/store}/index.js +0 -0
  422. /package/dist/{tools → esm/tools}/generateChartTool.js +0 -0
  423. /package/dist/{tools → esm/tools}/proposeFormValuesTool.js +0 -0
@@ -1,130 +0,0 @@
1
- import { z } from 'zod';
2
- import type { AgentAppConfig, AgentTool } from '@multiplayer-app/ai-agent-types';
3
- import { AgentToolType } from '@multiplayer-app/ai-agent-types';
4
- import { logger } from '../libs/logger';
5
-
6
- export class ConfigHelper {
7
-
8
- static loadConfig(rawConfig: Record<string, any>): AgentAppConfig {
9
- try {
10
- // Convert to AgentAppConfig format
11
- return ConfigHelper.convertToAgentAppConfig(rawConfig);
12
- } catch (error) {
13
- if (error instanceof SyntaxError) {
14
- logger.error(`Failed to parse config.json: ${error.message}`);
15
- throw new Error(`Invalid JSON in config file: ${error.message}`);
16
- }
17
- logger.error(`Failed to load config: ${error}`);
18
- throw error;
19
- }
20
- }
21
-
22
- private static jsonSchemaToZod (schema: any): z.ZodSchema<any> | null {
23
- if (!schema) return null;
24
- return z.fromJSONSchema(schema);
25
- }
26
-
27
- /**
28
- * Converts raw JSON config to AgentAppConfig format
29
- * Validates structure and converts JSON schemas to Zod schemas
30
- */
31
- private static convertToAgentAppConfig(rawConfig: any): AgentAppConfig {
32
- // Convert agents, transforming JSON schemas to Zod schemas
33
- const config: AgentAppConfig = rawConfig.agents.reduce((config: AgentAppConfig, agent: any) => {
34
- agent.contextKeys.forEach((contextKey: string) => {
35
- if (!config[contextKey]) {
36
- config[contextKey] = [];
37
- }
38
- config[contextKey].push({
39
- name: agent.name,
40
- description: agent.description,
41
- defaultModel: agent.defaultModel,
42
- systemPrompt: agent.systemPrompt,
43
- temperature: agent.temperature || 0.1,
44
- maxTokens: agent.maxTokens || 2000,
45
- tools: agent.tools.map((tool: any) => ConfigHelper.convertTool(tool)),
46
- outputSchema: agent.outputSchema ? ConfigHelper.jsonSchemaToZod(agent.outputSchema) as any : undefined
47
- });
48
- });
49
- return config;
50
- }, {} as AgentAppConfig);
51
-
52
- return config
53
- }
54
-
55
- /**
56
- * Converts a tool from JSON format (with JSON schemas) to AgentTool format (with Zod schemas)
57
- */
58
- private static convertTool(tool: any): AgentTool {
59
- if (tool.type === AgentToolType.WEB_SEARCH) {
60
- return {
61
- type: AgentToolType.WEB_SEARCH,
62
- data: {
63
- title: AgentToolType.WEB_SEARCH,
64
- }
65
- };
66
- }
67
-
68
- if (tool.type === AgentToolType.API_TOOL) {
69
- return {
70
- type: AgentToolType.API_TOOL,
71
- data: {
72
- title: tool.data.title,
73
- description: tool.data.description,
74
- headersToPass: tool.data.headersToPass,
75
- method: tool.data.method,
76
- url: tool.data.url,
77
- body: tool.data.body ? ConfigHelper.jsonSchemaToZod(tool.data.body) as any : undefined,
78
- queryParams: tool.data.queryParams ? ConfigHelper.jsonSchemaToZod(tool.data.queryParams) as any : undefined,
79
- needsApproval: tool.data.needsApproval ?? false,
80
- }
81
- };
82
- }
83
-
84
- throw new Error(`Unknown tool type: ${tool.type}`);
85
- }
86
-
87
-
88
- /**
89
- * Validates the AgentAppConfig structure
90
- * @throws Error if validation fails
91
- */
92
- private static validateConfig(config: AgentAppConfig): void {
93
- if (!config.agents || !Array.isArray(config.agents)) {
94
- throw new Error('Config must have an "agents" array');
95
- }
96
-
97
- if (!config.contexts || typeof config.contexts !== 'object') {
98
- throw new Error('Config must have a "contexts" object');
99
- }
100
-
101
- // Validate agents
102
- const agentNames = new Set<string>();
103
- for (const agent of config.agents) {
104
- if (!agent.name) {
105
- throw new Error('All agents must have a "name" field');
106
- }
107
- if (agentNames.has(agent.name)) {
108
- throw new Error(`Duplicate agent name found: ${agent.name}`);
109
- }
110
- agentNames.add(agent.name);
111
-
112
- if (!agent.systemPrompt) {
113
- throw new Error(`Agent "${agent.name}" must have a "systemPrompt" field`);
114
- }
115
- }
116
-
117
- // Validate contexts reference valid agents
118
- for (const [contextKey, contextAgentNames] of Object.entries(config.contexts)) {
119
- if (!Array.isArray(contextAgentNames)) {
120
- throw new Error(`Context "${contextKey}" must have an array of agent names`);
121
- }
122
-
123
- for (const agentName of contextAgentNames) {
124
- if (!agentNames.has(agentName)) {
125
- throw new Error(`Context "${contextKey}" references unknown agent: ${agentName}`);
126
- }
127
- }
128
- }
129
- }
130
- }
@@ -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
- }
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')