@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,161 +0,0 @@
1
- import { Consumer, ConsumerRunConfig, IHeaders, Message } from 'kafkajs'
2
- import logger from '../logger'
3
- import { kafka } from './kafka'
4
- import { KAFKA_SESSION_TIMEOUT } from './config'
5
-
6
- const startTimer = () => {
7
- const startTime = process.hrtime()
8
- return startTime
9
- }
10
- const getDuration = (startTime) => {
11
- const diff = process.hrtime(startTime)
12
- return diff[0] * 1e3 + diff[1] * 1e-6
13
- }
14
-
15
- export type KafkaConsumerListener = (key, value, headers?: IHeaders) => void | Promise<void>
16
- export class KafkaConsumer {
17
- private consumer: Consumer
18
- private listeners: Record<string, KafkaConsumerListener[]> = {}
19
- private lastHeartbeat: number = 0
20
-
21
- constructor(groupId: string) {
22
- this.consumer = kafka.consumer({
23
- groupId,
24
- sessionTimeout: KAFKA_SESSION_TIMEOUT,
25
- })
26
- this.consumer.on(this.consumer.events.HEARTBEAT, ({ timestamp }) => {
27
- this.lastHeartbeat = timestamp
28
- })
29
- this.consumer.on(this.consumer.events.REQUEST_TIMEOUT, ({ timestamp }) => {
30
- this.lastHeartbeat = 0
31
- })
32
- this.consumer.on(this.consumer.events.CRASH, ({ timestamp }) => {
33
- this.lastHeartbeat = 0
34
- })
35
- }
36
-
37
- public async isConnected() {
38
- if (Date.now() - this.lastHeartbeat < KAFKA_SESSION_TIMEOUT) {
39
- return true
40
- }
41
- try {
42
- const { state } = await this.consumer.describeGroup()
43
- return ['CompletingRebalance', 'PreparingRebalance', 'Stable'].includes(state)
44
- } catch (err) {
45
- return false
46
- }
47
- }
48
-
49
- public async connect() {
50
- await this.consumer.connect()
51
- }
52
-
53
- public async disconnect() {
54
- await this.consumer.disconnect()
55
- }
56
-
57
- public async subscribe(topic: string, listener: KafkaConsumerListener) {
58
- logger.info({ topic }, '[KAFKAJS] Subscribing for topic')
59
-
60
- if (!this.listeners[topic]) {
61
- this.listeners[topic] = []
62
- }
63
- this.listeners[topic].push(listener)
64
- }
65
-
66
- private async listenFnWrapper(
67
- topic: string,
68
- message: Message,
69
- ) {
70
-
71
- const parseStartTime = startTimer()
72
- try {
73
- if (!this.listeners[topic]?.length) {
74
- logger.error(`[KAFKAJS] Missing handler for topic ${topic}`)
75
- }
76
-
77
- if (!message?.value) {
78
- return
79
- }
80
-
81
- const key = message?.key?.toString('utf8')
82
- const value = JSON.parse(message.value.toString('utf8'))
83
- const headers = message.headers
84
-
85
- logger.debug(
86
- {
87
- topic,
88
- key,
89
- value,
90
- },
91
- `[KAFKAJS] Received message from topic ${topic}`,
92
- )
93
-
94
- await Promise.all(this.listeners[topic].map(func => func(key, value, headers)))
95
-
96
- logger.debug({
97
- key,
98
- topic,
99
- duration: getDuration(parseStartTime),
100
- }, '[KAFKAJS] Done with processing data from kafka')
101
- } catch (err) {
102
- logger.error(err, '[KAFKAJS] Error on handling incoming message')
103
- }
104
- }
105
-
106
- public async listen(options: Omit<ConsumerRunConfig, 'eachMessage' | 'eachBatch'> = {
107
- partitionsConsumedConcurrently: 3, autoCommit: true,
108
- }) {
109
- const topics = Object.keys(this.listeners)
110
-
111
- await this.consumer.subscribe({
112
- topics,
113
- fromBeginning: true,
114
- })
115
-
116
- await this.consumer.run({
117
- autoCommit: true,
118
- ...options,
119
- eachMessage: async ({ topic, message }) => this.listenFnWrapper(topic, message),
120
- })
121
- }
122
-
123
- public async listenBatch(options: Omit<ConsumerRunConfig, 'eachMessage' | 'eachBatch'>) {
124
- const topics = Object.keys(this.listeners)
125
-
126
- await this.consumer.subscribe({
127
- topics,
128
- fromBeginning: true,
129
- })
130
-
131
- await this.consumer.run({
132
- eachBatchAutoResolve: true,
133
- ...options,
134
- eachBatch: async ({
135
- batch,
136
- resolveOffset,
137
- heartbeat,
138
- commitOffsetsIfNecessary,
139
- uncommittedOffsets,
140
- isRunning,
141
- isStale,
142
- pause,
143
- }) => {
144
- for (const message of batch.messages) {
145
- if (!this.listeners[batch.topic]?.length) {
146
- logger.error(`[KAFKAJS] Missing handler for topic ${batch.topic}`)
147
- }
148
-
149
- try {
150
- await Promise.all(batch.messages.map(message => this.listenFnWrapper(batch.topic, message)))
151
- } catch (batchError) {
152
- logger.error(batchError, '[KAFKAJS] Batch fn error')
153
- }
154
-
155
- resolveOffset(message.offset)
156
- await heartbeat()
157
- }
158
- },
159
- })
160
- }
161
- }
@@ -1,2 +0,0 @@
1
- export * from './consumer'
2
- export * from './producer'
@@ -1,27 +0,0 @@
1
- import { Kafka, logLevel } from 'kafkajs'
2
- import { KAFKA_CLIENT_ID, KAFKA_URI } from './config'
3
- import { KafkaJsLogCreator } from '../logger'
4
-
5
-
6
- const toBunyanLogLevel = level => {
7
- switch (level) {
8
- case logLevel.ERROR:
9
- case logLevel.NOTHING:
10
- return 'error'
11
- case logLevel.WARN:
12
- return 'warn'
13
- case logLevel.INFO:
14
- return 'info'
15
- case logLevel.DEBUG:
16
- return 'debug'
17
- default:
18
- return 'info'
19
- }
20
- }
21
-
22
-
23
- export const kafka = new Kafka({
24
- clientId: KAFKA_CLIENT_ID,
25
- brokers: KAFKA_URI,
26
- logCreator: KafkaJsLogCreator(toBunyanLogLevel),
27
- })
@@ -1,48 +0,0 @@
1
- import { IHeaders, Producer, ProducerConfig } from 'kafkajs'
2
- import { kafka } from './kafka'
3
-
4
- export class KafkaProducer {
5
- private producer: Producer
6
- private _isConnected = false
7
- constructor(config: ProducerConfig = {}) {
8
- this.producer = kafka.producer(config)
9
- }
10
-
11
- public async connect() {
12
- try {
13
- await this.producer.connect()
14
- this._isConnected = true
15
- } catch (err) {
16
- this._isConnected = false
17
- throw err
18
- }
19
- }
20
-
21
- public isConnected() {
22
- return this._isConnected
23
- }
24
-
25
- public async disconnect() {
26
- await this.producer.disconnect()
27
- this._isConnected = false
28
- }
29
-
30
- public async send(topic: string, value: Record<string, any>, key?: string, headers?: IHeaders) {
31
- try {
32
- await this.producer.send({
33
- topic,
34
- messages: [
35
- {
36
- key,
37
- value: JSON.stringify(value),
38
- headers: headers
39
- },
40
- ],
41
- })
42
- this._isConnected = true
43
- } catch (err) {
44
- this._isConnected = false
45
- throw err
46
- }
47
- }
48
- }
@@ -1,4 +0,0 @@
1
- export const NODE_ENV = process.env.NODE_ENV || 'development'
2
- export const isProduction = NODE_ENV === 'production'
3
- export const APP_NAME = process.env.npm_package_name?.split('/').pop() as string || 'tests'
4
- export const LOG_LEVEL = process.env.LOG_LEVEL || (isProduction ? 'info' : 'debug')
@@ -1,21 +0,0 @@
1
- import { getLogger, setLogger, type AgentLogger } from './logger'
2
- export { getLogger, setLogger, type AgentLogger }
3
- export * from './kafkajs-logger-creator'
4
-
5
- /**
6
- * Logger object for backward compatibility.
7
- * All method calls proxy to the current logger instance.
8
- */
9
- export const logger = new Proxy({} as AgentLogger, {
10
- get(_target, prop) {
11
- const currentLogger = getLogger()
12
- const method = (currentLogger as any)[prop]
13
- if (typeof method === 'function') {
14
- return method.bind(currentLogger)
15
- }
16
- // Return no-op for missing methods
17
- return () => {}
18
- }
19
- })
20
-
21
- export default logger
@@ -1,28 +0,0 @@
1
- import { getLogger } from './logger'
2
-
3
- /**
4
- * Creates a KafkaJS log creator that uses the injected logger.
5
- * If no logger is set, logs are silently discarded.
6
- *
7
- * @param logLevelConverter - Function to convert KafkaJS log levels to logger levels
8
- * @returns KafkaJS log creator function
9
- */
10
- export const KafkaJsLogCreator = (logLevelConverter: any) => (level: any) => {
11
- const logger = getLogger()
12
-
13
- return ({ level, log }) => {
14
- const { message, ...extra } = log
15
- const logLevel = logLevelConverter(level)
16
-
17
- // Use the logger's error, warn, info, or debug method based on level
18
- if (logLevel === 'error' && logger.error) {
19
- logger.error({ extra }, message)
20
- } else if (logLevel === 'warn' && logger.warn) {
21
- logger.warn({ extra }, message)
22
- } else if (logLevel === 'info' && logger.info) {
23
- logger.info({ extra }, message)
24
- } else if (logLevel === 'debug' && logger.debug) {
25
- logger.debug({ extra }, message)
26
- }
27
- }
28
- }
@@ -1,60 +0,0 @@
1
- /**
2
- * Logger interface for AI Agent Node operations.
3
- * Compatible with bunyan-style loggers and most common Node.js loggers (pino, winston, bunyan, etc.)
4
- */
5
- export interface AgentLogger {
6
- info(messageOrFields: string | object, message?: string): void;
7
- error(messageOrFields: string | object | Error | unknown, message?: string | unknown): void;
8
- error(message: string, error: unknown): void;
9
- warn(messageOrFields: string | object, message?: string): void;
10
- warn(message: string, fields: object): void;
11
- debug(messageOrFields: string | object, message?: string): void;
12
- debug(message: string, fields: object): void;
13
- }
14
-
15
- /**
16
- * No-op logger that discards all log messages.
17
- * Used as default when no logger is provided.
18
- */
19
- const noOpLogger: AgentLogger = {
20
- info: () => {},
21
- error: () => {},
22
- warn: () => {},
23
- debug: () => {},
24
- };
25
-
26
- let logger: AgentLogger = noOpLogger;
27
-
28
- /**
29
- * Sets a custom logger for AI Agent Node operations.
30
- * If not called, all logging is silently discarded.
31
- *
32
- * @param customLogger - Logger instance implementing AgentLogger interface
33
- *
34
- * @example
35
- * ```ts
36
- * import { setLogger } from '@multiplayer-app/ai-agent-node';
37
- * import bunyan from 'bunyan';
38
- *
39
- * setLogger(bunyan.createLogger({ name: 'my-app' }));
40
- * ```
41
- *
42
- * @example
43
- * ```ts
44
- * import { setLogger } from '@multiplayer-app/ai-agent-node';
45
- * import pino from 'pino';
46
- *
47
- * setLogger(pino());
48
- * ```
49
- */
50
- export function setLogger(customLogger: AgentLogger): void {
51
- logger = customLogger;
52
- }
53
-
54
- /**
55
- * Gets the current logger instance.
56
- * @internal
57
- */
58
- export function getLogger(): AgentLogger {
59
- return logger;
60
- }
@@ -1,7 +0,0 @@
1
- export const S3_HOST = process.env.S3_HOST || 'https://s3.amazonaws.com'
2
- export const S3_EXPORT_HOST = process.env.S3_EXPORT_HOST || S3_HOST
3
- export const S3_PRESIGNED_URL_EXPIRES = Number(process.env.S3_PRESIGNED_URL_EXPIRES) || 120
4
-
5
- export const AWS_REGION = process.env.AWS_REGION as string
6
- export const AWS_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID as string
7
- export const AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY as string
@@ -1,3 +0,0 @@
1
- export { ObjectCannedACL } from '@aws-sdk/client-s3'
2
- export * as s3 from './s3.lib'
3
- export * from './config'
@@ -1,284 +0,0 @@
1
- import {
2
- S3,
3
- GetObjectCommand,
4
- PutObjectCommand,
5
- CompleteMultipartUploadOutput,
6
- ObjectCannedACL, GetObjectOutput,
7
- GetObjectCommandOutput, ListObjectsV2CommandOutput,
8
- ListObjectsV2Command,
9
- HeadBucketCommand,
10
- CreateBucketCommand,
11
- } from '@aws-sdk/client-s3'
12
- import { S3RequestPresigner } from '@aws-sdk/s3-request-presigner'
13
- import { createRequest } from '@aws-sdk/util-create-request'
14
- import { formatUrl } from '@aws-sdk/util-format-url'
15
- import { Upload } from '@aws-sdk/lib-storage'
16
- import stream from 'stream'
17
- import {
18
- S3_HOST,
19
- S3_PRESIGNED_URL_EXPIRES,
20
- AWS_REGION,
21
- } from './config'
22
- import logger from '../logger'
23
-
24
- const S3Client = new S3({
25
- ...S3_HOST ? {
26
- endpoint: S3_HOST,
27
- forcePathStyle: true,
28
- }
29
- : {},
30
- })
31
-
32
- const signer = new S3RequestPresigner({
33
- ...S3Client.config,
34
- })
35
-
36
- export const uploadFile = (Key: string, Bucket: string, Body: any, Expires?: Date) => {
37
- return S3Client.putObject({
38
- Key,
39
- Bucket,
40
- Body,
41
- Expires,
42
- })
43
- }
44
-
45
- export const downloadFile = (Key: string, Bucket: string): Promise<GetObjectOutput> => {
46
- const command = new GetObjectCommand({
47
- Bucket,
48
- Key,
49
- })
50
-
51
- return S3Client.send(command)
52
- }
53
-
54
- export const downloadFileAsString = async (
55
- Key: string,
56
- Bucket: string,
57
- ): Promise<string | undefined> => {
58
- try {
59
- const command = new GetObjectCommand({
60
- Bucket,
61
- Key,
62
- })
63
-
64
- const response = await S3Client.send(command)
65
- return response.Body?.transformToString()
66
- } catch (err) {
67
- if ((err as any)?.name === 'NoSuchKey') {
68
- return undefined
69
- }
70
- throw err
71
- }
72
- }
73
-
74
- export const downloadFileAsByteArray = async (Key: string, Bucket: string): Promise<Uint8Array | undefined> => {
75
- try {
76
- const command = new GetObjectCommand({
77
- Bucket,
78
- Key,
79
- })
80
-
81
- const response = await S3Client.send(command)
82
- return response.Body?.transformToByteArray()
83
- } catch (err) {
84
- if ((err as any)?.name === 'NoSuchKey') {
85
- return undefined
86
- }
87
- throw err
88
- }
89
- }
90
-
91
- export const streamUpload = (Key: string, Bucket: string, ACL?: ObjectCannedACL) => {
92
- const passThroughStream = new stream.PassThrough()
93
-
94
- const options: any = {
95
- client: S3Client,
96
- params: {
97
- Bucket,
98
- Key,
99
- Body: passThroughStream,
100
- },
101
- leavePartsOnError: false,
102
- }
103
-
104
- if (ACL) {
105
- options.params.ACL = ACL
106
- }
107
-
108
- const upload = new Upload(options)
109
-
110
- return {
111
- writeStream: passThroughStream,
112
- promise: upload.done() as Promise<CompleteMultipartUploadOutput>,
113
- }
114
- }
115
-
116
- export const getPresignedUploadUrl = async (
117
- Key: string,
118
- Bucket: string,
119
- expiresIn?: number,
120
- ) => {
121
- const request = await createRequest(
122
- S3Client,
123
- new PutObjectCommand({ Key, Bucket }),
124
- )
125
-
126
- const signedUrl = formatUrl(await signer.presign(
127
- request,
128
- {
129
- expiresIn: expiresIn || S3_PRESIGNED_URL_EXPIRES,
130
- },
131
- ))
132
-
133
- return signedUrl
134
- }
135
-
136
- export const getPresignedDownloadUrl = async (Key: string, Bucket: string) => {
137
- const request = await createRequest(
138
- S3Client,
139
- new GetObjectCommand({ Key, Bucket }),
140
- )
141
-
142
- const signedUrl = formatUrl(
143
- await signer.presign(
144
- request,
145
- {
146
- expiresIn: S3_PRESIGNED_URL_EXPIRES,
147
- },
148
- ),
149
- )
150
-
151
- return signedUrl
152
- }
153
-
154
- export const getDownloadUrl = (Key: string, Bucket: string) => {
155
- if (S3_HOST) {
156
- return `${S3_HOST}/${Bucket}/${Key}`
157
- }
158
-
159
- const regionString = AWS_REGION.includes('us-east-1') ? '' : '-' + AWS_REGION
160
- return `https://${Bucket}.s3${regionString}.amazonaws.com/${Key}`
161
- }
162
-
163
- export const copy = (
164
- Bucket: string,
165
- KeyFrom: string,
166
- KeyTo: string,
167
- ) => {
168
- return S3Client.copyObject({
169
- CopySource: `/${Bucket}/${KeyFrom}`,
170
- Bucket,
171
- Key: KeyTo,
172
- })
173
- }
174
-
175
- export const copyBetweenBuckets = (
176
- BucketFrom: string,
177
- KeyFrom: string,
178
- BucketTo: string,
179
- KeyTo: string,
180
- ) => {
181
- return S3Client.copyObject({
182
- CopySource: `/${BucketFrom}/${KeyFrom}`,
183
- Bucket: BucketTo,
184
- Key: KeyTo,
185
- })
186
- }
187
-
188
- export const getObject = async (
189
- Bucket: string,
190
- Key: string,
191
- ): Promise<GetObjectCommandOutput> => {
192
- return S3Client.getObject({
193
- Bucket,
194
- Key,
195
- })
196
- }
197
-
198
- export const listObjectsByPrefix = async (
199
- Bucket: string,
200
- Prefix: string,
201
- ): Promise<ListObjectsV2CommandOutput> => {
202
- return S3Client.send(
203
- new ListObjectsV2Command({
204
- Bucket,
205
- Prefix,
206
- }),
207
- )
208
- }
209
-
210
- export const headObject = async (
211
- Bucket: string,
212
- Key: string,
213
- ): Promise<GetObjectCommandOutput> => {
214
- return S3Client.headObject({
215
- Bucket,
216
- Key,
217
- })
218
- }
219
-
220
- export const deleteObject = async (
221
- Bucket: string,
222
- Key: string,
223
- ): Promise<GetObjectCommandOutput> => {
224
- return S3Client.deleteObject({
225
- Bucket,
226
- Key,
227
- })
228
- }
229
-
230
- export const deleteObjectsByPrefix = async (
231
- Bucket: string,
232
- Prefix: string,
233
- ContinuationToken?: string,
234
- ): Promise<void> => {
235
- const objects = await S3Client.listObjectsV2({ Bucket, Prefix, ContinuationToken })
236
- if (!objects.Contents?.length) return
237
-
238
- const deleteParams = {
239
- Bucket,
240
- Delete: { Objects: [] as { Key: string }[] },
241
- }
242
-
243
- objects.Contents.forEach(({ Key }) => {
244
- if (!Key) return
245
- deleteParams.Delete.Objects.push({ Key })
246
- })
247
- logger.info(deleteParams, '[S3] Deleting objects')
248
- const deletedResp = await S3Client.deleteObjects(deleteParams)
249
- if (deletedResp.Errors?.length) {
250
- logger.error(deletedResp.Errors, '[S3] Error during deleteObjectsByPrefix')
251
- }
252
- if (objects.IsTruncated) {
253
- await deleteObjectsByPrefix(Bucket, Prefix, objects.NextContinuationToken)
254
- }
255
- }
256
-
257
- /**
258
- * Ensures a bucket exists, creating it if it doesn't
259
- */
260
- export const ensureBucketExists = async (Bucket: string): Promise<void> => {
261
- try {
262
- await S3Client.send(new HeadBucketCommand({ Bucket }))
263
- // Bucket exists
264
- return
265
- } catch (error: any) {
266
- // If bucket doesn't exist, create it
267
- if (error.$metadata?.httpStatusCode === 404) {
268
- try {
269
- await S3Client.send(new CreateBucketCommand({ Bucket }))
270
- logger.info({ Bucket }, '[S3] Created bucket')
271
- } catch (createError: any) {
272
- // Ignore if bucket was created by another process
273
- if (createError.$metadata?.httpStatusCode !== 409) {
274
- logger.error({ Bucket, error: createError }, '[S3] Failed to create bucket')
275
- throw createError
276
- }
277
- }
278
- } else {
279
- // Some other error (permissions, etc.)
280
- logger.error({ Bucket, error }, '[S3] Failed to check bucket existence')
281
- throw error
282
- }
283
- }
284
- }