@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
@@ -0,0 +1,334 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const AIHelper_js_1 = require("./AIHelper.js");
5
+ const ModelStore_js_1 = require("../store/ModelStore.js");
6
+ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
7
+ (0, vitest_1.describe)('AIHelper.getAssistantResponse', () => {
8
+ let modelStore;
9
+ let configStore;
10
+ (0, vitest_1.beforeAll)(() => {
11
+ // Setup real ModelStore instance
12
+ modelStore = ModelStore_js_1.ModelStore.getInstance();
13
+ modelStore.setModels([
14
+ { id: 'openai/gpt-4o', label: 'GPT-4o Mini', provider: 'openrouter' }
15
+ ]);
16
+ });
17
+ (0, vitest_1.describe)('with tool approval responses', () => {
18
+ (0, vitest_1.it)('should handle approved tool with successful execution', async () => {
19
+ // Note: getAssistantResponse accepts Pick<AgentMessage, 'role' | 'content'>[]
20
+ // but convertMessages internally handles toolCalls, so we cast for testing
21
+ const messages = [
22
+ {
23
+ role: ai_agent_types_1.MessageRole.User,
24
+ content: 'Please execute the tool'
25
+ },
26
+ {
27
+ role: ai_agent_types_1.MessageRole.Assistant,
28
+ content: 'I will execute the tool for you.',
29
+ toolCalls: [
30
+ {
31
+ id: 'tool-call-1',
32
+ name: 'test-tool',
33
+ input: { param: 'value' },
34
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
35
+ approved: true,
36
+ output: { result: 'success', data: { executed: true } }
37
+ }
38
+ ]
39
+ }
40
+ ];
41
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
42
+ // Verify we get a response (actual model call)
43
+ (0, vitest_1.expect)(response).toBeDefined();
44
+ (0, vitest_1.expect)(typeof response).toBe('string');
45
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
46
+ // The response should acknowledge the tool execution
47
+ // (exact text depends on model, so we just verify it's a valid response)
48
+ }, 30000);
49
+ (0, vitest_1.it)('should handle denied tool with execution-denied output', async () => {
50
+ const messages = [
51
+ {
52
+ role: ai_agent_types_1.MessageRole.User,
53
+ content: 'Please execute the tool'
54
+ },
55
+ {
56
+ role: ai_agent_types_1.MessageRole.Assistant,
57
+ content: 'I will execute the tool for you.',
58
+ toolCalls: [
59
+ {
60
+ id: 'tool-call-1',
61
+ name: 'test-tool',
62
+ input: { param: 'value' },
63
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
64
+ approved: false,
65
+ reason: 'User denied execution',
66
+ output: {
67
+ type: 'execution-denied',
68
+ reason: 'User denied execution'
69
+ }
70
+ }
71
+ ]
72
+ }
73
+ ];
74
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
75
+ // Verify we get a response acknowledging the denial
76
+ (0, vitest_1.expect)(response).toBeDefined();
77
+ (0, vitest_1.expect)(typeof response).toBe('string');
78
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
79
+ // The model should respond to the execution-denied output
80
+ }, 30000);
81
+ (0, vitest_1.it)('should handle multiple tools with mixed approvals', async () => {
82
+ const messages = [
83
+ {
84
+ role: ai_agent_types_1.MessageRole.User,
85
+ content: 'Execute multiple tools'
86
+ },
87
+ {
88
+ role: ai_agent_types_1.MessageRole.Assistant,
89
+ content: 'I will execute the tools.',
90
+ toolCalls: [
91
+ {
92
+ id: 'tool-call-1',
93
+ name: 'approved-tool',
94
+ input: { param: 'value1' },
95
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
96
+ approved: true,
97
+ output: { result: 'approved-result' }
98
+ },
99
+ {
100
+ id: 'tool-call-2',
101
+ name: 'denied-tool',
102
+ input: { param: 'value2' },
103
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
104
+ approved: false,
105
+ reason: 'Not allowed',
106
+ output: {
107
+ type: 'execution-denied',
108
+ reason: 'Not allowed'
109
+ }
110
+ }
111
+ ]
112
+ }
113
+ ];
114
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
115
+ // Verify we get a response handling both tool results
116
+ (0, vitest_1.expect)(response).toBeDefined();
117
+ (0, vitest_1.expect)(typeof response).toBe('string');
118
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
119
+ // The model should process both approved and denied tool results
120
+ }, 30000);
121
+ (0, vitest_1.it)('should handle tool execution failure', async () => {
122
+ const messages = [
123
+ {
124
+ role: ai_agent_types_1.MessageRole.User,
125
+ content: 'Execute the tool'
126
+ },
127
+ {
128
+ role: ai_agent_types_1.MessageRole.Assistant,
129
+ content: 'I will execute the tool.',
130
+ toolCalls: [
131
+ {
132
+ id: 'tool-call-1',
133
+ name: 'failing-tool',
134
+ input: { param: 'value' },
135
+ status: ai_agent_types_1.AgentToolCallStatus.Failed,
136
+ approved: true,
137
+ error: 'Tool execution failed: Network error'
138
+ }
139
+ ]
140
+ }
141
+ ];
142
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
143
+ // Verify we get a response even when tool execution failed
144
+ (0, vitest_1.expect)(response).toBeDefined();
145
+ (0, vitest_1.expect)(typeof response).toBe('string');
146
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
147
+ }, 30000);
148
+ (0, vitest_1.it)('should handle tool with execution-denied due to tool not found', async () => {
149
+ const messages = [
150
+ {
151
+ role: ai_agent_types_1.MessageRole.User,
152
+ content: 'Execute the tool'
153
+ },
154
+ {
155
+ role: ai_agent_types_1.MessageRole.Assistant,
156
+ content: 'I will execute the tool.',
157
+ toolCalls: [
158
+ {
159
+ id: 'tool-call-1',
160
+ name: 'missing-tool',
161
+ input: { param: 'value' },
162
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
163
+ approved: true,
164
+ output: {
165
+ type: 'execution-denied',
166
+ reason: 'Tool was not found'
167
+ }
168
+ }
169
+ ]
170
+ }
171
+ ];
172
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
173
+ // Verify we get a response when tool was not found
174
+ (0, vitest_1.expect)(response).toBeDefined();
175
+ (0, vitest_1.expect)(typeof response).toBe('string');
176
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
177
+ }, 30000);
178
+ (0, vitest_1.it)('should handle tool with execution-denied due to tool execution error', async () => {
179
+ const messages = [
180
+ {
181
+ role: ai_agent_types_1.MessageRole.User,
182
+ content: 'Execute the tool'
183
+ },
184
+ {
185
+ role: ai_agent_types_1.MessageRole.Assistant,
186
+ content: 'I will execute the tool.',
187
+ toolCalls: [
188
+ {
189
+ id: 'tool-call-1',
190
+ name: 'error-tool',
191
+ input: { param: 'value' },
192
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
193
+ approved: true,
194
+ output: {
195
+ type: 'execution-denied',
196
+ reason: 'Tool failed with error'
197
+ }
198
+ }
199
+ ]
200
+ }
201
+ ];
202
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
203
+ // Verify we get a response when tool execution had an error
204
+ (0, vitest_1.expect)(response).toBeDefined();
205
+ (0, vitest_1.expect)(typeof response).toBe('string');
206
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
207
+ }, 30000);
208
+ (0, vitest_1.it)('should handle messages without tool calls', async () => {
209
+ const messages = [
210
+ {
211
+ role: ai_agent_types_1.MessageRole.User,
212
+ content: 'Hello, how are you?'
213
+ },
214
+ {
215
+ role: ai_agent_types_1.MessageRole.Assistant,
216
+ content: 'I am doing well, thank you!'
217
+ }
218
+ ];
219
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
220
+ // Verify we get a response for normal conversation
221
+ (0, vitest_1.expect)(response).toBeDefined();
222
+ (0, vitest_1.expect)(typeof response).toBe('string');
223
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
224
+ }, 30000);
225
+ (0, vitest_1.it)('should handle tool calls without output (pending approval)', async () => {
226
+ const messages = [
227
+ {
228
+ role: ai_agent_types_1.MessageRole.User,
229
+ content: 'Execute the tool'
230
+ },
231
+ {
232
+ role: ai_agent_types_1.MessageRole.Assistant,
233
+ content: 'I need to execute a tool.',
234
+ toolCalls: [
235
+ {
236
+ id: 'tool-call-1',
237
+ name: 'pending-tool',
238
+ input: { param: 'value' },
239
+ status: ai_agent_types_1.AgentToolCallStatus.Pending,
240
+ requiresConfirmation: true,
241
+ approvalId: 'approval-123'
242
+ }
243
+ ]
244
+ }
245
+ ];
246
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
247
+ // Verify we get a response even when tool is pending approval
248
+ // (tool calls without output should not include tool-result in messages)
249
+ (0, vitest_1.expect)(response).toBeDefined();
250
+ (0, vitest_1.expect)(typeof response).toBe('string');
251
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
252
+ }, 30000);
253
+ (0, vitest_1.it)('should handle sequential tool approvals', async () => {
254
+ const messages = [
255
+ {
256
+ role: ai_agent_types_1.MessageRole.User,
257
+ content: 'First request'
258
+ },
259
+ {
260
+ role: ai_agent_types_1.MessageRole.Assistant,
261
+ content: 'Executing first tool.',
262
+ toolCalls: [
263
+ {
264
+ id: 'tool-call-1',
265
+ name: 'first-tool',
266
+ input: { step: 1 },
267
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
268
+ approved: true,
269
+ output: { result: 'first-result' }
270
+ }
271
+ ]
272
+ },
273
+ {
274
+ role: ai_agent_types_1.MessageRole.Assistant,
275
+ content: 'Now executing second tool.',
276
+ toolCalls: [
277
+ {
278
+ id: 'tool-call-2',
279
+ name: 'second-tool',
280
+ input: { step: 2 },
281
+ status: ai_agent_types_1.AgentToolCallStatus.Succeeded,
282
+ approved: false,
283
+ reason: 'User denied',
284
+ output: {
285
+ type: 'execution-denied',
286
+ reason: 'User denied'
287
+ }
288
+ }
289
+ ]
290
+ }
291
+ ];
292
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages);
293
+ // Verify we get a response for sequential tool calls
294
+ (0, vitest_1.expect)(response).toBeDefined();
295
+ (0, vitest_1.expect)(typeof response).toBe('string');
296
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
297
+ // The model should process both sequential tool results
298
+ }, 30000);
299
+ (0, vitest_1.it)('should pass through options correctly', async () => {
300
+ const messages = [
301
+ {
302
+ role: ai_agent_types_1.MessageRole.User,
303
+ content: 'Test message'
304
+ }
305
+ ];
306
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages, undefined, {
307
+ temperature: 0.9,
308
+ maxOutputTokens: 1000
309
+ });
310
+ // Verify we get a response with custom options applied
311
+ (0, vitest_1.expect)(response).toBeDefined();
312
+ (0, vitest_1.expect)(typeof response).toBe('string');
313
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
314
+ // Options are passed through to the model
315
+ }, 30000);
316
+ (0, vitest_1.it)('should handle abort signal', async () => {
317
+ const messages = [
318
+ {
319
+ role: ai_agent_types_1.MessageRole.User,
320
+ content: 'Test message'
321
+ }
322
+ ];
323
+ const abortController = new AbortController();
324
+ const signal = abortController.signal;
325
+ const response = await AIHelper_js_1.AIHelper.getAssistantResponse(messages, signal);
326
+ // Verify we get a response with abort signal passed through
327
+ (0, vitest_1.expect)(response).toBeDefined();
328
+ (0, vitest_1.expect)(typeof response).toBe('string');
329
+ (0, vitest_1.expect)(response.length).toBeGreaterThan(0);
330
+ // Signal is passed through to the model for cancellation support
331
+ }, 30000);
332
+ });
333
+ });
334
+ //# sourceMappingURL=AIHelper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIHelper.test.js","sourceRoot":"","sources":["../../../src/helpers/AIHelper.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigHelper.d.ts","sourceRoot":"","sources":["../../../src/helpers/ConfigHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,iCAAiC,CAAC;AAIjF,qBAAa,YAAY;IAEvB,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc;IAcjE,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAwBtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA8B1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAsC9B"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigHelper = void 0;
4
+ const zod_1 = require("zod");
5
+ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
6
+ const index_js_1 = require("../libs/logger/index.js");
7
+ class ConfigHelper {
8
+ static loadConfig(rawConfig) {
9
+ try {
10
+ // Convert to AgentAppConfig format
11
+ return ConfigHelper.convertToAgentAppConfig(rawConfig);
12
+ }
13
+ catch (error) {
14
+ if (error instanceof SyntaxError) {
15
+ index_js_1.logger.error(`Failed to parse config.json: ${error.message}`);
16
+ throw new Error(`Invalid JSON in config file: ${error.message}`);
17
+ }
18
+ index_js_1.logger.error(`Failed to load config: ${error}`);
19
+ throw error;
20
+ }
21
+ }
22
+ static jsonSchemaToZod(schema) {
23
+ if (!schema)
24
+ return null;
25
+ return zod_1.z.fromJSONSchema(schema);
26
+ }
27
+ /**
28
+ * Converts raw JSON config to AgentAppConfig format
29
+ * Validates structure and converts JSON schemas to Zod schemas
30
+ */
31
+ static convertToAgentAppConfig(rawConfig) {
32
+ // Convert agents, transforming JSON schemas to Zod schemas
33
+ const config = rawConfig.agents.reduce((config, agent) => {
34
+ agent.contextKeys.forEach((contextKey) => {
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) => ConfigHelper.convertTool(tool)),
46
+ outputSchema: agent.outputSchema ? ConfigHelper.jsonSchemaToZod(agent.outputSchema) : undefined
47
+ });
48
+ });
49
+ return config;
50
+ }, {});
51
+ return config;
52
+ }
53
+ /**
54
+ * Converts a tool from JSON format (with JSON schemas) to AgentTool format (with Zod schemas)
55
+ */
56
+ static convertTool(tool) {
57
+ var _a;
58
+ if (tool.type === ai_agent_types_1.AgentToolType.WEB_SEARCH) {
59
+ return {
60
+ type: ai_agent_types_1.AgentToolType.WEB_SEARCH,
61
+ data: {
62
+ title: ai_agent_types_1.AgentToolType.WEB_SEARCH,
63
+ }
64
+ };
65
+ }
66
+ if (tool.type === ai_agent_types_1.AgentToolType.API_TOOL) {
67
+ return {
68
+ type: ai_agent_types_1.AgentToolType.API_TOOL,
69
+ data: {
70
+ title: tool.data.title,
71
+ description: tool.data.description,
72
+ headersToPass: tool.data.headersToPass,
73
+ method: tool.data.method,
74
+ url: tool.data.url,
75
+ body: tool.data.body ? ConfigHelper.jsonSchemaToZod(tool.data.body) : undefined,
76
+ queryParams: tool.data.queryParams ? ConfigHelper.jsonSchemaToZod(tool.data.queryParams) : undefined,
77
+ needsApproval: (_a = tool.data.needsApproval) !== null && _a !== void 0 ? _a : false,
78
+ }
79
+ };
80
+ }
81
+ throw new Error(`Unknown tool type: ${tool.type}`);
82
+ }
83
+ /**
84
+ * Validates the AgentAppConfig structure
85
+ * @throws Error if validation fails
86
+ */
87
+ static validateConfig(config) {
88
+ if (!config.agents || !Array.isArray(config.agents)) {
89
+ throw new Error('Config must have an "agents" array');
90
+ }
91
+ if (!config.contexts || typeof config.contexts !== 'object') {
92
+ throw new Error('Config must have a "contexts" object');
93
+ }
94
+ // Validate agents
95
+ const agentNames = new Set();
96
+ for (const agent of config.agents) {
97
+ if (!agent.name) {
98
+ throw new Error('All agents must have a "name" field');
99
+ }
100
+ if (agentNames.has(agent.name)) {
101
+ throw new Error(`Duplicate agent name found: ${agent.name}`);
102
+ }
103
+ agentNames.add(agent.name);
104
+ if (!agent.systemPrompt) {
105
+ throw new Error(`Agent "${agent.name}" must have a "systemPrompt" field`);
106
+ }
107
+ }
108
+ // Validate contexts reference valid agents
109
+ for (const [contextKey, contextAgentNames] of Object.entries(config.contexts)) {
110
+ if (!Array.isArray(contextAgentNames)) {
111
+ throw new Error(`Context "${contextKey}" must have an array of agent names`);
112
+ }
113
+ for (const agentName of contextAgentNames) {
114
+ if (!agentNames.has(agentName)) {
115
+ throw new Error(`Context "${contextKey}" references unknown agent: ${agentName}`);
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+ exports.ConfigHelper = ConfigHelper;
122
+ //# sourceMappingURL=ConfigHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigHelper.js","sourceRoot":"","sources":["../../../src/helpers/ConfigHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextLimiter.d.ts","sourceRoot":"","sources":["../../../src/helpers/ContextLimiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,iCAAiC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,cAAc;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE,mBAAwB,GAChC,YAAY,EAAE;IA0EjB;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAwBpD;;;;;;;OAOG;IACH,MAAM,CAAC,aAAa,CAClB,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,EAAE,MAAM,GAChB,YAAY,EAAE;CAwClB"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextLimiter = void 0;
4
+ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
5
+ /**
6
+ * Common practices for limiting AI context:
7
+ *
8
+ * 1. **Message Count Limiting** (implemented here)
9
+ * - Keep only the last N messages
10
+ * - Most common and simplest approach
11
+ * - Typical values: 20-100 messages depending on use case
12
+ *
13
+ * 2. **Token-Based Limiting** (future enhancement)
14
+ * - Count tokens and keep messages until hitting token budget
15
+ * - More accurate for cost control
16
+ * - Requires token counting library (e.g., tiktoken, @anthropic-ai/tokenizer)
17
+ *
18
+ * 3. **Hybrid Approach** (future enhancement)
19
+ * - Combine message count with token budget as safety check
20
+ * - Best of both worlds
21
+ *
22
+ * 4. **Sliding Window with Summary** (advanced)
23
+ * - Keep recent messages + summarize older ones
24
+ * - Requires summarization step
25
+ *
26
+ * 5. **Priority-Based** (implemented via keepFirstUserMessage)
27
+ * - Always keep system messages, first user message, and recent messages
28
+ * - Preserves important context while limiting size
29
+ */
30
+ class ContextLimiter {
31
+ /**
32
+ * Limits the context by keeping only the most recent messages
33
+ * while preserving important messages (first user message, system messages).
34
+ *
35
+ * @param messages - All messages from the chat (assumed to be in chronological order)
36
+ * @param options - Limiting options
37
+ * @returns Limited array of messages in original order
38
+ */
39
+ static limitContext(messages, options = {}) {
40
+ const { maxMessages = 5, keepFirstUserMessage = true, keepSystemMessages = true, } = options;
41
+ // If we have fewer messages than the limit, return all
42
+ if (messages.length <= maxMessages) {
43
+ return messages;
44
+ }
45
+ // Separate system messages from the rest
46
+ const systemMessages = [];
47
+ const nonSystemMessages = [];
48
+ messages.forEach((msg) => {
49
+ if (msg.role === ai_agent_types_1.MessageRole.System && keepSystemMessages) {
50
+ systemMessages.push(msg);
51
+ }
52
+ else {
53
+ nonSystemMessages.push(msg);
54
+ }
55
+ });
56
+ // Find the first user message (if we need to keep it)
57
+ const firstUserMessageIndex = keepFirstUserMessage
58
+ ? nonSystemMessages.findIndex((msg) => msg.role === ai_agent_types_1.MessageRole.User)
59
+ : -1;
60
+ const firstUserMessage = firstUserMessageIndex >= 0
61
+ ? nonSystemMessages[firstUserMessageIndex]
62
+ : undefined;
63
+ // Calculate how many recent messages we can keep
64
+ // Reserve slots for: system messages
65
+ let availableSlots = maxMessages - systemMessages.length;
66
+ const shouldKeepFirstUser = keepFirstUserMessage && firstUserMessage !== undefined;
67
+ // Get the most recent messages (from the end)
68
+ // We'll check if first user is in recent messages after slicing
69
+ const recentCount = Math.max(0, availableSlots);
70
+ const recentStartIndex = Math.max(0, nonSystemMessages.length - recentCount);
71
+ const recentMessages = nonSystemMessages.slice(recentStartIndex);
72
+ // Check if first user message is already in recent messages
73
+ const firstUserInRecent = shouldKeepFirstUser && firstUserMessage
74
+ ? recentMessages.some((msg) => msg.id === firstUserMessage.id)
75
+ : false;
76
+ // If first user is not in recent and we need to keep it, we need to make room
77
+ if (shouldKeepFirstUser && firstUserMessage && !firstUserInRecent) {
78
+ // Remove the oldest recent message to make room for first user message
79
+ if (recentMessages.length > 0) {
80
+ recentMessages.shift();
81
+ }
82
+ }
83
+ // Build the set of messages to keep
84
+ const messagesToKeep = new Set();
85
+ // Add system messages
86
+ systemMessages.forEach((msg) => messagesToKeep.add(msg.id));
87
+ // Add first user message if needed
88
+ if (shouldKeepFirstUser && firstUserMessage) {
89
+ messagesToKeep.add(firstUserMessage.id);
90
+ }
91
+ // Add recent messages
92
+ recentMessages.forEach((msg) => messagesToKeep.add(msg.id));
93
+ // Reconstruct in original order
94
+ return messages.filter((msg) => messagesToKeep.has(msg.id));
95
+ }
96
+ /**
97
+ * Estimates token count for a message (rough approximation).
98
+ * For accurate token counting, use a proper tokenizer library.
99
+ *
100
+ * This is a simple approximation: ~4 characters per token for English text.
101
+ *
102
+ * @param message - Message to estimate tokens for
103
+ * @returns Estimated token count
104
+ */
105
+ static estimateTokens(message) {
106
+ var _a;
107
+ const content = typeof message.content === 'string'
108
+ ? message.content
109
+ : JSON.stringify(message.content);
110
+ // Rough approximation: 1 token ≈ 4 characters for English
111
+ // This is a simplified estimate - actual tokenization varies by model
112
+ const baseTokens = Math.ceil(content.length / 4);
113
+ // Add overhead for message structure (role, formatting, etc.)
114
+ const overhead = 10;
115
+ // Add tokens for tool calls if present
116
+ const toolCallTokens = ((_a = message.toolCalls) === null || _a === void 0 ? void 0 : _a.reduce((acc, toolCall) => {
117
+ const inputTokens = Math.ceil(JSON.stringify(toolCall.input).length / 4);
118
+ const outputTokens = toolCall.output
119
+ ? Math.ceil(JSON.stringify(toolCall.output).length / 4)
120
+ : 0;
121
+ return acc + inputTokens + outputTokens + 20; // 20 for tool call structure
122
+ }, 0)) || 0;
123
+ return baseTokens + overhead + toolCallTokens;
124
+ }
125
+ /**
126
+ * Limits context by token count (future enhancement).
127
+ * Currently not implemented - requires proper tokenizer.
128
+ *
129
+ * @param messages - All messages from the chat
130
+ * @param maxTokens - Maximum token count
131
+ * @returns Limited array of messages
132
+ */
133
+ static limitByTokens(messages, maxTokens) {
134
+ // This is a placeholder for token-based limiting
135
+ // To implement properly, you would:
136
+ // 1. Install a tokenizer (e.g., tiktoken for OpenAI, @anthropic-ai/tokenizer for Claude)
137
+ // 2. Count tokens for each message
138
+ // 3. Keep messages from the end until hitting the token limit
139
+ // 4. Always keep system messages and optionally first user message
140
+ let totalTokens = 0;
141
+ const limitedMessages = [];
142
+ // Keep system messages first
143
+ const systemMessages = messages.filter((msg) => msg.role === ai_agent_types_1.MessageRole.System);
144
+ systemMessages.forEach((msg) => {
145
+ const tokens = this.estimateTokens(msg);
146
+ if (totalTokens + tokens <= maxTokens) {
147
+ limitedMessages.push(msg);
148
+ totalTokens += tokens;
149
+ }
150
+ });
151
+ // Then keep messages from the end
152
+ const nonSystemMessages = messages
153
+ .filter((msg) => msg.role !== ai_agent_types_1.MessageRole.System)
154
+ .reverse();
155
+ for (const message of nonSystemMessages) {
156
+ const tokens = this.estimateTokens(message);
157
+ if (totalTokens + tokens <= maxTokens) {
158
+ limitedMessages.unshift(message); // Add to beginning to maintain order
159
+ totalTokens += tokens;
160
+ }
161
+ else {
162
+ break;
163
+ }
164
+ }
165
+ return limitedMessages;
166
+ }
167
+ }
168
+ exports.ContextLimiter = ContextLimiter;
169
+ //# sourceMappingURL=ContextLimiter.js.map