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

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 (303) hide show
  1. package/dist/cjs/config.cjs +98 -0
  2. package/dist/cjs/config.cjs.map +1 -0
  3. package/dist/cjs/config.d.ts +56 -23
  4. package/dist/cjs/config.d.ts.map +1 -1
  5. package/dist/cjs/helpers/{AIHelper.js → AIHelper.cjs} +145 -91
  6. package/dist/cjs/helpers/AIHelper.cjs.map +1 -0
  7. package/dist/cjs/helpers/AIHelper.d.ts +19 -12
  8. package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
  9. package/dist/cjs/helpers/{AIHelper.test.js → AIHelper.test.cjs} +22 -15
  10. package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -0
  11. package/dist/cjs/helpers/{ConfigHelper.js → ConfigHelper.cjs} +4 -5
  12. package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -0
  13. package/dist/cjs/helpers/{ContextLimiter.js → ContextLimiter.cjs} +2 -3
  14. package/dist/cjs/helpers/{ContextLimiter.js.map → ContextLimiter.cjs.map} +1 -1
  15. package/dist/cjs/helpers/FileHelper.cjs +193 -0
  16. package/dist/cjs/helpers/FileHelper.cjs.map +1 -0
  17. package/dist/cjs/helpers/FileHelper.d.ts +19 -25
  18. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
  19. package/dist/cjs/{store/index.js → helpers/index.cjs} +4 -4
  20. package/dist/cjs/helpers/{index.js.map → index.cjs.map} +1 -1
  21. package/dist/cjs/helpers/index.d.ts +4 -5
  22. package/dist/cjs/helpers/index.d.ts.map +1 -1
  23. package/dist/cjs/index.cjs +114 -0
  24. package/dist/cjs/index.cjs.map +1 -0
  25. package/dist/cjs/index.d.ts +39 -13
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/libs/{kafka/index.js → index.cjs} +2 -2
  28. package/dist/cjs/libs/{index.js.map → index.cjs.map} +1 -1
  29. package/dist/cjs/libs/index.d.ts +2 -3
  30. package/dist/cjs/libs/index.d.ts.map +1 -1
  31. package/dist/cjs/libs/logger/{index.js → index.cjs} +5 -5
  32. package/dist/cjs/libs/logger/{index.js.map → index.cjs.map} +1 -1
  33. package/dist/cjs/libs/logger/index.d.ts +2 -2
  34. package/dist/cjs/libs/logger/index.d.ts.map +1 -1
  35. package/dist/cjs/libs/logger/{kafkajs-logger-creator.js → kafkajs-logger-creator.cjs} +2 -2
  36. package/dist/cjs/libs/logger/{kafkajs-logger-creator.js.map → kafkajs-logger-creator.cjs.map} +1 -1
  37. package/dist/cjs/libs/s3/index.cjs +8 -0
  38. package/dist/cjs/libs/s3/index.cjs.map +1 -0
  39. package/dist/cjs/libs/s3/index.d.ts +1 -2
  40. package/dist/cjs/libs/s3/index.d.ts.map +1 -1
  41. package/dist/cjs/libs/s3/s3.lib.cjs +207 -0
  42. package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -0
  43. package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
  44. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
  45. package/dist/cjs/processors/{ChatProcessor.js → ChatProcessor.cjs} +114 -132
  46. package/dist/cjs/processors/ChatProcessor.cjs.map +1 -0
  47. package/dist/cjs/processors/ChatProcessor.d.ts +23 -7
  48. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
  49. package/dist/cjs/processors/{ModelsProcessor.js → ModelsProcessor.cjs} +2 -2
  50. package/dist/cjs/processors/{ModelsProcessor.js.map → ModelsProcessor.cjs.map} +1 -1
  51. package/dist/cjs/processors/{index.js → index.cjs} +2 -2
  52. package/dist/cjs/processors/{index.js.map → index.cjs.map} +1 -1
  53. package/dist/cjs/processors/index.d.ts +2 -2
  54. package/dist/cjs/processors/index.d.ts.map +1 -1
  55. package/dist/cjs/services/{AIService.js → AIService.cjs} +21 -24
  56. package/dist/cjs/services/AIService.cjs.map +1 -0
  57. package/dist/cjs/services/AIService.d.ts +4 -2
  58. package/dist/cjs/services/AIService.d.ts.map +1 -1
  59. package/dist/cjs/services/{InternalEventsHandler.js → InternalEventsHandler.cjs} +5 -5
  60. package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -0
  61. package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
  62. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
  63. package/dist/cjs/services/{ModelFetcher.js → ModelFetcher.cjs} +9 -15
  64. package/dist/cjs/services/ModelFetcher.cjs.map +1 -0
  65. package/dist/cjs/services/ModelFetcher.d.ts +2 -7
  66. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
  67. package/dist/cjs/services/{RedisService.js → RedisService.cjs} +35 -32
  68. package/dist/cjs/services/RedisService.cjs.map +1 -0
  69. package/dist/cjs/services/RedisService.d.ts +5 -2
  70. package/dist/cjs/services/RedisService.d.ts.map +1 -1
  71. package/dist/cjs/services/{SocketService.js → SocketService.cjs} +19 -20
  72. package/dist/cjs/services/SocketService.cjs.map +1 -0
  73. package/dist/cjs/services/SocketService.d.ts +7 -4
  74. package/dist/cjs/services/SocketService.d.ts.map +1 -1
  75. package/dist/cjs/{helpers/index.js → services/index.cjs} +5 -5
  76. package/dist/cjs/services/{index.js.map → index.cjs.map} +1 -1
  77. package/dist/cjs/services/index.d.ts +5 -6
  78. package/dist/cjs/services/index.d.ts.map +1 -1
  79. package/dist/cjs/store/{AgentStore.js → AgentStore.cjs} +4 -5
  80. package/dist/cjs/store/AgentStore.cjs.map +1 -0
  81. package/dist/cjs/store/AgentStore.d.ts +2 -1
  82. package/dist/cjs/store/AgentStore.d.ts.map +1 -1
  83. package/dist/cjs/store/{ArtifactStore.js → ArtifactStore.cjs} +2 -4
  84. package/dist/cjs/store/ArtifactStore.cjs.map +1 -0
  85. package/dist/cjs/store/{ConfigStore.js → ConfigStore.cjs} +8 -11
  86. package/dist/cjs/store/ConfigStore.cjs.map +1 -0
  87. package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
  88. package/dist/cjs/store/{ConfigStore.test.js → ConfigStore.test.cjs} +2 -2
  89. package/dist/cjs/store/{ConfigStore.test.js.map → ConfigStore.test.cjs.map} +1 -1
  90. package/dist/cjs/store/{ModelStore.js → ModelStore.cjs} +4 -4
  91. package/dist/cjs/store/ModelStore.cjs.map +1 -0
  92. package/dist/cjs/store/{ModelStore.test.js → ModelStore.test.cjs} +17 -17
  93. package/dist/cjs/store/ModelStore.test.cjs.map +1 -0
  94. package/dist/cjs/{libs/index.js → store/index.cjs} +4 -3
  95. package/dist/cjs/store/{index.js.map → index.cjs.map} +1 -1
  96. package/dist/cjs/store/index.d.ts +4 -4
  97. package/dist/cjs/store/index.d.ts.map +1 -1
  98. package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
  99. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  100. package/dist/esm/config.d.ts +56 -23
  101. package/dist/esm/config.d.ts.map +1 -1
  102. package/dist/esm/config.js +88 -36
  103. package/dist/esm/config.js.map +1 -1
  104. package/dist/esm/helpers/AIHelper.d.ts +19 -12
  105. package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
  106. package/dist/esm/helpers/AIHelper.js +144 -88
  107. package/dist/esm/helpers/AIHelper.js.map +1 -1
  108. package/dist/esm/helpers/AIHelper.test.js +21 -14
  109. package/dist/esm/helpers/AIHelper.test.js.map +1 -1
  110. package/dist/esm/helpers/ConfigHelper.js +2 -3
  111. package/dist/esm/helpers/ConfigHelper.js.map +1 -1
  112. package/dist/esm/helpers/ContextLimiter.js +2 -3
  113. package/dist/esm/helpers/ContextLimiter.js.map +1 -1
  114. package/dist/esm/helpers/FileHelper.d.ts +19 -25
  115. package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
  116. package/dist/esm/helpers/FileHelper.js +132 -149
  117. package/dist/esm/helpers/FileHelper.js.map +1 -1
  118. package/dist/esm/helpers/index.d.ts +4 -5
  119. package/dist/esm/helpers/index.d.ts.map +1 -1
  120. package/dist/esm/helpers/index.js +4 -5
  121. package/dist/esm/helpers/index.js.map +1 -1
  122. package/dist/esm/index.d.ts +39 -13
  123. package/dist/esm/index.d.ts.map +1 -1
  124. package/dist/esm/index.js +79 -12
  125. package/dist/esm/index.js.map +1 -1
  126. package/dist/esm/libs/index.d.ts +2 -3
  127. package/dist/esm/libs/index.d.ts.map +1 -1
  128. package/dist/esm/libs/index.js +2 -3
  129. package/dist/esm/libs/index.js.map +1 -1
  130. package/dist/esm/libs/logger/index.d.ts +2 -2
  131. package/dist/esm/libs/logger/index.d.ts.map +1 -1
  132. package/dist/esm/libs/logger/index.js +2 -2
  133. package/dist/esm/libs/logger/index.js.map +1 -1
  134. package/dist/esm/libs/logger/kafkajs-logger-creator.js +1 -1
  135. package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -1
  136. package/dist/esm/libs/s3/index.d.ts +1 -2
  137. package/dist/esm/libs/s3/index.d.ts.map +1 -1
  138. package/dist/esm/libs/s3/index.js +1 -2
  139. package/dist/esm/libs/s3/index.js.map +1 -1
  140. package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
  141. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
  142. package/dist/esm/libs/s3/s3.lib.js +178 -177
  143. package/dist/esm/libs/s3/s3.lib.js.map +1 -1
  144. package/dist/esm/processors/ChatProcessor.d.ts +23 -7
  145. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
  146. package/dist/esm/processors/ChatProcessor.js +109 -120
  147. package/dist/esm/processors/ChatProcessor.js.map +1 -1
  148. package/dist/esm/processors/ModelsProcessor.js +1 -1
  149. package/dist/esm/processors/ModelsProcessor.js.map +1 -1
  150. package/dist/esm/processors/index.d.ts +2 -2
  151. package/dist/esm/processors/index.d.ts.map +1 -1
  152. package/dist/esm/processors/index.js +2 -2
  153. package/dist/esm/processors/index.js.map +1 -1
  154. package/dist/esm/services/AIService.d.ts +4 -2
  155. package/dist/esm/services/AIService.d.ts.map +1 -1
  156. package/dist/esm/services/AIService.js +24 -25
  157. package/dist/esm/services/AIService.js.map +1 -1
  158. package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
  159. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
  160. package/dist/esm/services/InternalEventsHandler.js +10 -8
  161. package/dist/esm/services/InternalEventsHandler.js.map +1 -1
  162. package/dist/esm/services/ModelFetcher.d.ts +2 -7
  163. package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
  164. package/dist/esm/services/ModelFetcher.js +4 -9
  165. package/dist/esm/services/ModelFetcher.js.map +1 -1
  166. package/dist/esm/services/RedisService.d.ts +5 -2
  167. package/dist/esm/services/RedisService.d.ts.map +1 -1
  168. package/dist/esm/services/RedisService.js +25 -21
  169. package/dist/esm/services/RedisService.js.map +1 -1
  170. package/dist/esm/services/SocketService.d.ts +7 -4
  171. package/dist/esm/services/SocketService.d.ts.map +1 -1
  172. package/dist/esm/services/SocketService.js +15 -13
  173. package/dist/esm/services/SocketService.js.map +1 -1
  174. package/dist/esm/services/index.d.ts +5 -6
  175. package/dist/esm/services/index.d.ts.map +1 -1
  176. package/dist/esm/services/index.js +5 -6
  177. package/dist/esm/services/index.js.map +1 -1
  178. package/dist/esm/store/AgentStore.d.ts +2 -1
  179. package/dist/esm/store/AgentStore.d.ts.map +1 -1
  180. package/dist/esm/store/AgentStore.js +5 -5
  181. package/dist/esm/store/AgentStore.js.map +1 -1
  182. package/dist/esm/store/ArtifactStore.js +3 -7
  183. package/dist/esm/store/ArtifactStore.js.map +1 -1
  184. package/dist/esm/store/ConfigStore.d.ts.map +1 -1
  185. package/dist/esm/store/ConfigStore.js +16 -19
  186. package/dist/esm/store/ConfigStore.js.map +1 -1
  187. package/dist/esm/store/ConfigStore.test.js +1 -1
  188. package/dist/esm/store/ConfigStore.test.js.map +1 -1
  189. package/dist/esm/store/ModelStore.js +6 -6
  190. package/dist/esm/store/ModelStore.js.map +1 -1
  191. package/dist/esm/store/ModelStore.test.js +12 -12
  192. package/dist/esm/store/ModelStore.test.js.map +1 -1
  193. package/dist/esm/store/index.d.ts +4 -4
  194. package/dist/esm/store/index.d.ts.map +1 -1
  195. package/dist/esm/store/index.js +4 -4
  196. package/dist/esm/store/index.js.map +1 -1
  197. package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
  198. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  199. package/package.json +11 -10
  200. package/dist/cjs/config.js +0 -48
  201. package/dist/cjs/config.js.map +0 -1
  202. package/dist/cjs/helpers/AIHelper.js.map +0 -1
  203. package/dist/cjs/helpers/AIHelper.test.js.map +0 -1
  204. package/dist/cjs/helpers/ConfigHelper.js.map +0 -1
  205. package/dist/cjs/helpers/FileHelper.js +0 -215
  206. package/dist/cjs/helpers/FileHelper.js.map +0 -1
  207. package/dist/cjs/helpers/SetupHelper.d.ts +0 -5
  208. package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
  209. package/dist/cjs/helpers/SetupHelper.js +0 -37
  210. package/dist/cjs/helpers/SetupHelper.js.map +0 -1
  211. package/dist/cjs/index.js +0 -34
  212. package/dist/cjs/index.js.map +0 -1
  213. package/dist/cjs/libs/kafka/config.d.ts +0 -5
  214. package/dist/cjs/libs/kafka/config.d.ts.map +0 -1
  215. package/dist/cjs/libs/kafka/config.js +0 -8
  216. package/dist/cjs/libs/kafka/config.js.map +0 -1
  217. package/dist/cjs/libs/kafka/consumer.d.ts +0 -16
  218. package/dist/cjs/libs/kafka/consumer.d.ts.map +0 -1
  219. package/dist/cjs/libs/kafka/consumer.js +0 -133
  220. package/dist/cjs/libs/kafka/consumer.js.map +0 -1
  221. package/dist/cjs/libs/kafka/index.d.ts +0 -3
  222. package/dist/cjs/libs/kafka/index.d.ts.map +0 -1
  223. package/dist/cjs/libs/kafka/index.js.map +0 -1
  224. package/dist/cjs/libs/kafka/kafka.d.ts +0 -3
  225. package/dist/cjs/libs/kafka/kafka.d.ts.map +0 -1
  226. package/dist/cjs/libs/kafka/kafka.js +0 -27
  227. package/dist/cjs/libs/kafka/kafka.js.map +0 -1
  228. package/dist/cjs/libs/kafka/producer.d.ts +0 -11
  229. package/dist/cjs/libs/kafka/producer.d.ts.map +0 -1
  230. package/dist/cjs/libs/kafka/producer.js +0 -48
  231. package/dist/cjs/libs/kafka/producer.js.map +0 -1
  232. package/dist/cjs/libs/logger/config.d.ts +0 -5
  233. package/dist/cjs/libs/logger/config.d.ts.map +0 -1
  234. package/dist/cjs/libs/logger/config.js +0 -9
  235. package/dist/cjs/libs/logger/config.js.map +0 -1
  236. package/dist/cjs/libs/s3/config.d.ts +0 -7
  237. package/dist/cjs/libs/s3/config.d.ts.map +0 -1
  238. package/dist/cjs/libs/s3/config.js +0 -10
  239. package/dist/cjs/libs/s3/config.js.map +0 -1
  240. package/dist/cjs/libs/s3/index.js +0 -44
  241. package/dist/cjs/libs/s3/index.js.map +0 -1
  242. package/dist/cjs/libs/s3/s3.lib.js +0 -224
  243. package/dist/cjs/libs/s3/s3.lib.js.map +0 -1
  244. package/dist/cjs/processors/ChatProcessor.js.map +0 -1
  245. package/dist/cjs/services/AIService.js.map +0 -1
  246. package/dist/cjs/services/InternalEventsHandler.js.map +0 -1
  247. package/dist/cjs/services/KafkaService.d.ts +0 -35
  248. package/dist/cjs/services/KafkaService.d.ts.map +0 -1
  249. package/dist/cjs/services/KafkaService.js +0 -123
  250. package/dist/cjs/services/KafkaService.js.map +0 -1
  251. package/dist/cjs/services/ModelFetcher.js.map +0 -1
  252. package/dist/cjs/services/RedisService.js.map +0 -1
  253. package/dist/cjs/services/SocketService.js.map +0 -1
  254. package/dist/cjs/services/index.js +0 -23
  255. package/dist/cjs/store/AgentStore.js.map +0 -1
  256. package/dist/cjs/store/ArtifactStore.js.map +0 -1
  257. package/dist/cjs/store/ConfigStore.js.map +0 -1
  258. package/dist/cjs/store/ModelStore.js.map +0 -1
  259. package/dist/cjs/store/ModelStore.test.js.map +0 -1
  260. package/dist/esm/helpers/SetupHelper.d.ts +0 -5
  261. package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
  262. package/dist/esm/helpers/SetupHelper.js +0 -32
  263. package/dist/esm/helpers/SetupHelper.js.map +0 -1
  264. package/dist/esm/libs/kafka/config.d.ts +0 -5
  265. package/dist/esm/libs/kafka/config.d.ts.map +0 -1
  266. package/dist/esm/libs/kafka/config.js +0 -5
  267. package/dist/esm/libs/kafka/config.js.map +0 -1
  268. package/dist/esm/libs/kafka/consumer.d.ts +0 -16
  269. package/dist/esm/libs/kafka/consumer.d.ts.map +0 -1
  270. package/dist/esm/libs/kafka/consumer.js +0 -126
  271. package/dist/esm/libs/kafka/consumer.js.map +0 -1
  272. package/dist/esm/libs/kafka/index.d.ts +0 -3
  273. package/dist/esm/libs/kafka/index.d.ts.map +0 -1
  274. package/dist/esm/libs/kafka/index.js +0 -3
  275. package/dist/esm/libs/kafka/index.js.map +0 -1
  276. package/dist/esm/libs/kafka/kafka.d.ts +0 -3
  277. package/dist/esm/libs/kafka/kafka.d.ts.map +0 -1
  278. package/dist/esm/libs/kafka/kafka.js +0 -24
  279. package/dist/esm/libs/kafka/kafka.js.map +0 -1
  280. package/dist/esm/libs/kafka/producer.d.ts +0 -11
  281. package/dist/esm/libs/kafka/producer.d.ts.map +0 -1
  282. package/dist/esm/libs/kafka/producer.js +0 -44
  283. package/dist/esm/libs/kafka/producer.js.map +0 -1
  284. package/dist/esm/libs/logger/config.d.ts +0 -5
  285. package/dist/esm/libs/logger/config.d.ts.map +0 -1
  286. package/dist/esm/libs/logger/config.js +0 -6
  287. package/dist/esm/libs/logger/config.js.map +0 -1
  288. package/dist/esm/libs/s3/config.d.ts +0 -7
  289. package/dist/esm/libs/s3/config.d.ts.map +0 -1
  290. package/dist/esm/libs/s3/config.js +0 -7
  291. package/dist/esm/libs/s3/config.js.map +0 -1
  292. package/dist/esm/services/KafkaService.d.ts +0 -35
  293. package/dist/esm/services/KafkaService.d.ts.map +0 -1
  294. package/dist/esm/services/KafkaService.js +0 -120
  295. package/dist/esm/services/KafkaService.js.map +0 -1
  296. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  297. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  298. /package/dist/cjs/libs/logger/{logger.js → logger.cjs} +0 -0
  299. /package/dist/cjs/libs/logger/{logger.js.map → logger.cjs.map} +0 -0
  300. /package/dist/cjs/tools/{generateChartTool.js → generateChartTool.cjs} +0 -0
  301. /package/dist/cjs/tools/{generateChartTool.js.map → generateChartTool.cjs.map} +0 -0
  302. /package/dist/cjs/tools/{proposeFormValuesTool.js → proposeFormValuesTool.cjs} +0 -0
  303. /package/dist/cjs/tools/{proposeFormValuesTool.js.map → proposeFormValuesTool.cjs.map} +0 -0
@@ -1,17 +1,43 @@
1
- import { AgentAttachmentType, MessageRole } from "@multiplayer-app/ai-agent-types";
2
- import { AIService } from "../services/index.js";
3
- import { ModelStore } from "../store/index.js";
4
- import { logger } from "../libs/logger/index.js";
5
- import { ConfigStore } from "../store/index.js";
6
- import { isImage, prepareImageForVisionAPI, extractTextFromDocument } from "./FileHelper.js";
1
+ import { AgentAttachmentType, MessageRole } from '@multiplayer-app/ai-agent-types';
2
+ import { AIService } from '../services';
3
+ import { ModelStore } from '../store';
4
+ import { logger } from '../libs/logger';
5
+ import { ConfigStore } from '../store';
7
6
  export class AIHelper {
8
- static async convertUserMessage(msg, ignoreFileAttachments) {
9
- var _a, _b;
10
- const userContent = [{
11
- type: "text",
7
+ fileHelper;
8
+ aiService;
9
+ constructor(fileHelper, config) {
10
+ this.fileHelper = fileHelper;
11
+ this.aiService = new AIService(ModelStore.getInstance(), config.ai);
12
+ }
13
+ clip(value, max) {
14
+ if (value.length <= max)
15
+ return value;
16
+ return `${value.slice(0, max)}…`;
17
+ }
18
+ renderContextValue(value, limits) {
19
+ if (value === null || value === undefined)
20
+ return '';
21
+ if (typeof value === 'string')
22
+ return this.clip(value, limits.maxString);
23
+ if (typeof value === 'number' || typeof value === 'boolean')
24
+ return String(value);
25
+ try {
26
+ const json = JSON.stringify(value);
27
+ return this.clip(json, limits.maxJson);
28
+ }
29
+ catch {
30
+ return '';
31
+ }
32
+ }
33
+ async convertUserMessage(msg, ignoreFileAttachments) {
34
+ const userContent = [
35
+ {
36
+ type: 'text',
12
37
  text: msg.content
13
- }];
14
- const atts = (_a = msg.attachments) !== null && _a !== void 0 ? _a : [];
38
+ }
39
+ ];
40
+ const atts = msg.attachments ?? [];
15
41
  if (!atts.length) {
16
42
  return userContent;
17
43
  }
@@ -21,21 +47,21 @@ export class AIHelper {
21
47
  if (ignoreFileAttachments) {
22
48
  continue;
23
49
  }
24
- if (isImage(att)) {
25
- const image = await prepareImageForVisionAPI(att);
50
+ if (this.fileHelper.isImage(att)) {
51
+ const image = await this.fileHelper.prepareImageForVisionAPI(att);
26
52
  if (image) {
27
53
  userContent.push({
28
- type: "image",
54
+ type: 'image',
29
55
  image: image.image_url.url,
30
- mediaType: att.mimeType,
56
+ mediaType: att.mimeType
31
57
  });
32
58
  }
33
59
  }
34
60
  else {
35
- const fileText = await extractTextFromDocument(att);
61
+ const fileText = await this.fileHelper.extractTextFromDocument(att);
36
62
  if (fileText) {
37
63
  userContent.push({
38
- type: "text",
64
+ type: 'text',
39
65
  text: `${att.type}: ${att.name}(${att.mimeType})\n ${fileText}`
40
66
  });
41
67
  }
@@ -43,31 +69,30 @@ export class AIHelper {
43
69
  continue;
44
70
  }
45
71
  const md = att.metadata;
46
- const kind = typeof (md === null || md === void 0 ? void 0 : md.kind) === 'string' ? md.kind : 'unknown';
72
+ const kind = typeof md?.kind === 'string' ? md.kind : 'unknown';
47
73
  lines.push(`- context:${kind}: ${att.name}`);
48
74
  if (kind === 'webSnippet') {
49
- const url = typeof ((_b = md === null || md === void 0 ? void 0 : md.source) === null || _b === void 0 ? void 0 : _b.url) === 'string' ? md.source.url : att.url;
50
- const title = typeof (md === null || md === void 0 ? void 0 : md.title) === 'string' ? md.title : undefined;
51
- const selectedText = typeof (md === null || md === void 0 ? void 0 : md.selectedText) === 'string' ? md.selectedText : '';
75
+ const url = typeof md?.source?.url === 'string' ? md.source.url : att.url;
76
+ const title = typeof md?.title === 'string' ? md.title : undefined;
77
+ const selectedText = typeof md?.selectedText === 'string' ? md.selectedText : '';
52
78
  if (url)
53
79
  lines.push(` url: ${url}`);
54
80
  if (title)
55
81
  lines.push(` title: ${title}`);
56
82
  if (selectedText) {
57
- const clipped = selectedText.length > 4000 ? `${selectedText.slice(0, 4000)}…` : selectedText;
58
83
  lines.push(' BEGIN_UNTRUSTED_WEB_SNIPPET');
59
- lines.push(clipped);
84
+ lines.push(this.clip(selectedText, 4000));
60
85
  lines.push(' END_UNTRUSTED_WEB_SNIPPET');
61
86
  }
62
87
  continue;
63
88
  }
64
89
  if (kind === 'formField') {
65
- const formId = typeof (md === null || md === void 0 ? void 0 : md.formId) === 'string' ? md.formId : undefined;
66
- const fieldName = typeof (md === null || md === void 0 ? void 0 : md.fieldName) === 'string' ? md.fieldName : undefined;
67
- const fieldLabel = typeof (md === null || md === void 0 ? void 0 : md.fieldLabel) === 'string' ? md.fieldLabel : undefined;
68
- const value = typeof (md === null || md === void 0 ? void 0 : md.value) === 'string' ? md.value : '';
69
- const inputType = typeof (md === null || md === void 0 ? void 0 : md.inputType) === 'string' ? md.inputType : undefined;
70
- const options = Array.isArray(md === null || md === void 0 ? void 0 : md.options) ? md.options : [];
90
+ const formId = typeof md?.formId === 'string' ? md.formId : undefined;
91
+ const fieldName = typeof md?.fieldName === 'string' ? md.fieldName : undefined;
92
+ const fieldLabel = typeof md?.fieldLabel === 'string' ? md.fieldLabel : undefined;
93
+ const value = md?.value;
94
+ const inputType = typeof md?.inputType === 'string' ? md.inputType : undefined;
95
+ const options = Array.isArray(md?.options) ? md.options : [];
71
96
  if (formId)
72
97
  lines.push(` formId: ${formId}`);
73
98
  if (fieldName)
@@ -78,44 +103,47 @@ export class AIHelper {
78
103
  const rendered = options
79
104
  .slice(0, 30)
80
105
  .map((o) => {
81
- const v = typeof (o === null || o === void 0 ? void 0 : o.value) === 'string' ? o.value : '';
82
- const l = typeof (o === null || o === void 0 ? void 0 : o.label) === 'string' ? o.label : '';
106
+ const v = typeof o?.value === 'string' ? o.value : '';
107
+ const l = typeof o?.label === 'string' ? o.label : '';
83
108
  if (!v && !l)
84
109
  return '';
85
- return l && v ? `${l} (${v})` : (l || v);
110
+ return l && v ? `${l} (${v})` : l || v;
86
111
  })
87
112
  .filter(Boolean)
88
113
  .join(', ');
89
114
  if (rendered)
90
115
  lines.push(` options: ${rendered}${options.length > 30 ? '…' : ''}`);
91
116
  }
92
- if (value)
93
- lines.push(` value: ${value.length > 1000 ? `${value.slice(0, 1000)}…` : value}`);
117
+ if (value !== undefined) {
118
+ const rendered = this.renderContextValue(value, { maxString: 1000, maxJson: 2500 });
119
+ if (rendered)
120
+ lines.push(` value: ${rendered}`);
121
+ }
94
122
  continue;
95
123
  }
96
124
  if (kind === 'formSnapshot') {
97
- const formId = typeof (md === null || md === void 0 ? void 0 : md.formId) === 'string' ? md.formId : undefined;
98
- const formName = typeof (md === null || md === void 0 ? void 0 : md.formName) === 'string' ? md.formName : undefined;
99
- const fields = Array.isArray(md === null || md === void 0 ? void 0 : md.fields) ? md.fields : [];
125
+ const formId = typeof md?.formId === 'string' ? md.formId : undefined;
126
+ const formName = typeof md?.formName === 'string' ? md.formName : undefined;
127
+ const fields = Array.isArray(md?.fields) ? md.fields : [];
100
128
  if (formId)
101
129
  lines.push(` formId: ${formId}`);
102
130
  if (formName)
103
131
  lines.push(` formName: ${formName}`);
104
132
  lines.push(' fields:');
105
133
  for (const f of fields.slice(0, 50)) {
106
- const name = typeof (f === null || f === void 0 ? void 0 : f.name) === 'string' ? f.name : 'unknown';
107
- const label = typeof (f === null || f === void 0 ? void 0 : f.label) === 'string' ? f.label : undefined;
108
- const value = typeof (f === null || f === void 0 ? void 0 : f.value) === 'string' ? f.value : '';
109
- const inputType = typeof (f === null || f === void 0 ? void 0 : f.inputType) === 'string' ? f.inputType : undefined;
110
- const options = Array.isArray(f === null || f === void 0 ? void 0 : f.options) ? f.options : [];
111
- const clipped = value.length > 1000 ? `${value.slice(0, 1000)}…` : value;
134
+ const name = typeof f?.name === 'string' ? f.name : 'unknown';
135
+ const label = typeof f?.label === 'string' ? f.label : undefined;
136
+ const value = f?.value;
137
+ const inputType = typeof f?.inputType === 'string' ? f.inputType : undefined;
138
+ const options = Array.isArray(f?.options) ? f.options : [];
139
+ const clipped = this.renderContextValue(value, { maxString: 1000, maxJson: 2500 });
112
140
  const meta = [];
113
141
  if (inputType)
114
142
  meta.push(`type=${inputType}`);
115
143
  if ((inputType === 'select' || inputType === 'radio') && options.length) {
116
144
  const opts = options
117
145
  .slice(0, 20)
118
- .map((o) => typeof (o === null || o === void 0 ? void 0 : o.value) === 'string' ? o.value : '')
146
+ .map((o) => (typeof o?.value === 'string' ? o.value : ''))
119
147
  .filter(Boolean)
120
148
  .join('|');
121
149
  if (opts)
@@ -125,84 +153,118 @@ export class AIHelper {
125
153
  }
126
154
  continue;
127
155
  }
156
+ if (kind === 'pageContext') {
157
+ const url = typeof md?.source?.url === 'string' ? md.source.url : att.url;
158
+ const title = typeof md?.title === 'string' ? md.title : undefined;
159
+ const route = typeof md?.source?.route === 'string' ? md.source.route : undefined;
160
+ const data = md?.data;
161
+ if (url)
162
+ lines.push(` url: ${url}`);
163
+ if (title)
164
+ lines.push(` title: ${title}`);
165
+ if (route)
166
+ lines.push(` route: ${route}`);
167
+ if (data && typeof data === 'object') {
168
+ const entries = Object.entries(data)
169
+ .filter(([k]) => typeof k === 'string' && k.length > 0)
170
+ .sort(([a], [b]) => a.localeCompare(b));
171
+ if (entries.length) {
172
+ lines.push(' data:');
173
+ const limits = { maxString: 1000, maxJson: 1500 };
174
+ for (const [k, v] of entries.slice(0, 40)) {
175
+ const rendered = this.renderContextValue(v, limits);
176
+ if (!rendered)
177
+ continue;
178
+ lines.push(` - ${k}: ${rendered}`);
179
+ }
180
+ if (entries.length > 40) {
181
+ lines.push(` - … (${entries.length - 40} more keys)`);
182
+ }
183
+ }
184
+ }
185
+ else if (data !== undefined) {
186
+ const rendered = this.renderContextValue(data, { maxString: 1000, maxJson: 2000 });
187
+ if (rendered)
188
+ lines.push(` data: ${rendered}`);
189
+ }
190
+ continue;
191
+ }
128
192
  // Custom kind: prefer summary, fall back to minimal JSON.
129
- const title = typeof (md === null || md === void 0 ? void 0 : md.title) === 'string' ? md.title : undefined;
130
- const summary = typeof (md === null || md === void 0 ? void 0 : md.summary) === 'string' ? md.summary : undefined;
193
+ const title = typeof md?.title === 'string' ? md.title : undefined;
194
+ const summary = typeof md?.summary === 'string' ? md.summary : undefined;
131
195
  if (title)
132
196
  lines.push(` title: ${title}`);
133
197
  if (summary) {
134
- lines.push(` summary: ${summary.length > 4000 ? `${summary.slice(0, 4000)}…` : summary}`);
198
+ lines.push(` summary: ${this.clip(summary, 4000)}`);
135
199
  continue;
136
200
  }
137
- if ((md === null || md === void 0 ? void 0 : md.data) !== undefined) {
138
- const json = JSON.stringify(md.data);
139
- lines.push(` data: ${json.length > 2000 ? `${json.slice(0, 2000)}…` : json}`);
201
+ if (md?.data !== undefined) {
202
+ const rendered = this.renderContextValue(md.data, { maxString: 2000, maxJson: 5000 });
203
+ if (rendered)
204
+ lines.push(` data: ${rendered}`);
140
205
  }
141
206
  }
142
207
  if (lines.length) {
143
208
  userContent.push({
144
- type: "text",
209
+ type: 'text',
145
210
  text: `Context attachments (non-authoritative; user message is primary):\n ${lines.join('\n')}`
146
211
  });
147
212
  }
148
213
  return userContent;
149
214
  }
150
- static getAgentConfigs(contextKey) {
215
+ getAgentConfigs(contextKey) {
151
216
  const agents = ConfigStore.getInstance().getAgentsForContext(contextKey);
152
217
  if (!agents.length) {
153
218
  throw new Error(`Agent configs not found for context key: ${contextKey}`);
154
219
  }
155
220
  return agents;
156
221
  }
157
- static async getAgentOptions(params, options = {}) {
222
+ async getAgentOptions(params, options = {}) {
158
223
  const { contextKey, messages, modelId, context, agentName } = params;
159
224
  let agentConfig = ConfigStore.getInstance().getAgentConfigByName(agentName);
160
225
  if (contextKey && messages) {
161
- agentConfig = await AIHelper.selectAgentConfig(contextKey, messages);
226
+ agentConfig = await this.selectAgentConfig(contextKey, messages);
162
227
  }
163
- const aiService = new AIService(ModelStore.getInstance());
164
- const agentOptions = aiService.getAgentOptions(agentConfig, modelId, context);
228
+ const agentOptions = this.aiService.getAgentOptions(agentConfig, modelId, context);
165
229
  return {
166
230
  ...agentOptions,
167
- ...options,
231
+ ...options
168
232
  };
169
233
  }
170
- static async selectAgentConfig(contextKey, messages) {
171
- const configs = AIHelper.getAgentConfigs(contextKey);
234
+ async selectAgentConfig(contextKey, messages) {
235
+ const configs = this.getAgentConfigs(contextKey);
172
236
  if (configs.length === 1) {
173
237
  return configs[0];
174
238
  }
175
- const aiService = new AIService(ModelStore.getInstance());
176
239
  const systemPrompt = `Select the most appropriate agent for the given user prompt.
177
240
  Return only the agent name, no quotes or extra text.
178
- Available agents: ${JSON.stringify(configs.map(config => ({
241
+ Available agents: ${JSON.stringify(configs.map((config) => ({
179
242
  name: config.name,
180
243
  description: config.description,
181
244
  tools: config.tools.map(({ data }) => data.title)
182
245
  })))}`;
183
- const agentName = await aiService.generateText({
246
+ const agentName = await this.aiService.generateText({
184
247
  messages,
185
248
  system: systemPrompt,
186
249
  temperature: 0.7,
187
250
  maxOutputTokens: 2000
188
251
  });
189
- const agent = configs.find(config => config.name === agentName);
252
+ const agent = configs.find((config) => config.name === agentName);
190
253
  if (!agent) {
191
254
  // fallback, agent not found, grabbing first from the list
192
255
  return configs[0];
193
256
  }
194
257
  return agent;
195
258
  }
196
- static async getAssistantResponse(messages, signal, options = {}) {
259
+ async getAssistantResponse(messages, signal, options = {}) {
197
260
  try {
198
- const aiService = new AIService(ModelStore.getInstance());
199
261
  const processedOptions = this.processToolChoice(options, messages);
200
- return aiService.generateText({
262
+ return this.aiService.generateText({
201
263
  temperature: 0.7,
202
264
  maxOutputTokens: 2000,
203
265
  ...processedOptions,
204
- messages: await AIHelper.convertMessages(messages),
205
- signal,
266
+ messages: await this.convertMessages(messages),
267
+ signal
206
268
  });
207
269
  }
208
270
  catch (error) {
@@ -210,18 +272,15 @@ Available agents: ${JSON.stringify(configs.map(config => ({
210
272
  throw error;
211
273
  }
212
274
  }
213
- static processToolChoice(options, agentMessages) {
214
- var _a, _b, _c, _d;
215
- if (!(options === null || options === void 0 ? void 0 : options.toolChoice)) {
275
+ processToolChoice(options, agentMessages) {
276
+ if (!options?.toolChoice) {
216
277
  return options || {};
217
278
  }
218
279
  // Find the latest assistant message
219
- const latestAssistantMessage = [...agentMessages]
220
- .reverse()
221
- .find(msg => msg.role === MessageRole.Assistant);
280
+ const latestAssistantMessage = [...agentMessages].reverse().find((msg) => msg.role === MessageRole.Assistant);
222
281
  // Handle 'required' toolChoice: if any tool was called, set to 'auto'
223
282
  if (options.toolChoice === 'required') {
224
- const anyToolWasCalled = ((_b = (_a = latestAssistantMessage === null || latestAssistantMessage === void 0 ? void 0 : latestAssistantMessage.toolCalls) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0;
283
+ const anyToolWasCalled = (latestAssistantMessage?.toolCalls?.length ?? 0) > 0;
225
284
  if (anyToolWasCalled) {
226
285
  return {
227
286
  ...options,
@@ -233,7 +292,7 @@ Available agents: ${JSON.stringify(configs.map(config => ({
233
292
  // Handle specific tool toolChoice: if that specific tool was called, set to 'auto'
234
293
  if (typeof options.toolChoice === 'object' && options.toolChoice.type === 'tool') {
235
294
  const toolName = options.toolChoice.toolName;
236
- const toolWasCalled = (_d = (_c = latestAssistantMessage === null || latestAssistantMessage === void 0 ? void 0 : latestAssistantMessage.toolCalls) === null || _c === void 0 ? void 0 : _c.some(toolCall => toolCall.name === toolName)) !== null && _d !== void 0 ? _d : false;
295
+ const toolWasCalled = latestAssistantMessage?.toolCalls?.some((toolCall) => toolCall.name === toolName) ?? false;
237
296
  if (toolWasCalled) {
238
297
  return {
239
298
  ...options,
@@ -243,11 +302,10 @@ Available agents: ${JSON.stringify(configs.map(config => ({
243
302
  }
244
303
  return options;
245
304
  }
246
- static async streamAssistantResponse(agentMessages, signal, options) {
247
- const aiService = new AIService(ModelStore.getInstance());
305
+ async streamAssistantResponse(agentMessages, signal, options) {
248
306
  const messages = await this.convertMessages(agentMessages);
249
307
  const processedOptions = this.processToolChoice(options, agentMessages);
250
- return aiService.streamText({
308
+ return this.aiService.streamText({
251
309
  messages,
252
310
  temperature: 0.7,
253
311
  maxOutputTokens: 2000,
@@ -255,8 +313,7 @@ Available agents: ${JSON.stringify(configs.map(config => ({
255
313
  ...processedOptions
256
314
  });
257
315
  }
258
- static async convertMessages(agentMessages, ignoreToolsAndAttachments = false) {
259
- var _a;
316
+ async convertMessages(agentMessages, ignoreToolsAndAttachments = false) {
260
317
  const result = [];
261
318
  for (const msg of agentMessages) {
262
319
  if (msg.role === MessageRole.User) {
@@ -278,7 +335,7 @@ Available agents: ${JSON.stringify(configs.map(config => ({
278
335
  content: []
279
336
  };
280
337
  if (!ignoreToolsAndAttachments) {
281
- (_a = msg.toolCalls) === null || _a === void 0 ? void 0 : _a.forEach((toolCall) => {
338
+ msg.toolCalls?.forEach((toolCall) => {
282
339
  if (toolCall.output) {
283
340
  assistantMessage.content.push({
284
341
  type: 'tool-call',
@@ -308,13 +365,12 @@ Available agents: ${JSON.stringify(configs.map(config => ({
308
365
  }
309
366
  return result;
310
367
  }
311
- static async generateTitleForMessage(contextKey, messages) {
368
+ async generateTitleForMessage(contextKey, messages) {
312
369
  try {
313
- const aiService = new AIService(ModelStore.getInstance());
314
370
  const systemPrompt = `Generate descriptive title 5 words maximum for a chat conversation. Return only the title, no quotes or extra text. If user question is opaque, assume it is related to ${contextKey} topic.`;
315
- return aiService.generateText({
316
- messages: await AIHelper.convertMessages(messages, true),
317
- system: systemPrompt,
371
+ return this.aiService.generateText({
372
+ messages: await this.convertMessages(messages, true),
373
+ system: systemPrompt
318
374
  });
319
375
  }
320
376
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"AIHelper.js","sourceRoot":"","sources":["../../../src/helpers/AIHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AIHelper.js","sourceRoot":"","sources":["../../../src/helpers/AIHelper.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,23 @@
1
1
  import { describe, it, expect, beforeAll } from 'vitest';
2
- import { AIHelper } from './AIHelper.js';
3
- import { ModelStore } from '../store/ModelStore.js';
2
+ import { AIHelper } from './AIHelper';
3
+ import { FileHelper } from './FileHelper';
4
+ import { ModelStore } from '../store/ModelStore';
5
+ import { ConfigProvider } from '../config';
6
+ import { S3Lib } from '../libs/s3';
4
7
  import { MessageRole, AgentToolCallStatus } from '@multiplayer-app/ai-agent-types';
5
8
  describe('AIHelper.getAssistantResponse', () => {
6
9
  let modelStore;
7
- let configStore;
10
+ let aiHelper;
8
11
  beforeAll(() => {
9
12
  // Setup real ModelStore instance
10
13
  modelStore = ModelStore.getInstance();
11
14
  modelStore.setModels([
12
15
  { id: 'openai/gpt-4o', label: 'GPT-4o Mini', provider: 'openrouter' }
13
16
  ]);
17
+ const config = ConfigProvider.getInstance().getConfig();
18
+ const s3Lib = new S3Lib(config.s3);
19
+ const fileHelper = new FileHelper(s3Lib, config);
20
+ aiHelper = new AIHelper(fileHelper, config);
14
21
  });
15
22
  describe('with tool approval responses', () => {
16
23
  it('should handle approved tool with successful execution', async () => {
@@ -36,7 +43,7 @@ describe('AIHelper.getAssistantResponse', () => {
36
43
  ]
37
44
  }
38
45
  ];
39
- const response = await AIHelper.getAssistantResponse(messages);
46
+ const response = await aiHelper.getAssistantResponse(messages);
40
47
  // Verify we get a response (actual model call)
41
48
  expect(response).toBeDefined();
42
49
  expect(typeof response).toBe('string');
@@ -69,7 +76,7 @@ describe('AIHelper.getAssistantResponse', () => {
69
76
  ]
70
77
  }
71
78
  ];
72
- const response = await AIHelper.getAssistantResponse(messages);
79
+ const response = await aiHelper.getAssistantResponse(messages);
73
80
  // Verify we get a response acknowledging the denial
74
81
  expect(response).toBeDefined();
75
82
  expect(typeof response).toBe('string');
@@ -109,7 +116,7 @@ describe('AIHelper.getAssistantResponse', () => {
109
116
  ]
110
117
  }
111
118
  ];
112
- const response = await AIHelper.getAssistantResponse(messages);
119
+ const response = await aiHelper.getAssistantResponse(messages);
113
120
  // Verify we get a response handling both tool results
114
121
  expect(response).toBeDefined();
115
122
  expect(typeof response).toBe('string');
@@ -137,7 +144,7 @@ describe('AIHelper.getAssistantResponse', () => {
137
144
  ]
138
145
  }
139
146
  ];
140
- const response = await AIHelper.getAssistantResponse(messages);
147
+ const response = await aiHelper.getAssistantResponse(messages);
141
148
  // Verify we get a response even when tool execution failed
142
149
  expect(response).toBeDefined();
143
150
  expect(typeof response).toBe('string');
@@ -167,7 +174,7 @@ describe('AIHelper.getAssistantResponse', () => {
167
174
  ]
168
175
  }
169
176
  ];
170
- const response = await AIHelper.getAssistantResponse(messages);
177
+ const response = await aiHelper.getAssistantResponse(messages);
171
178
  // Verify we get a response when tool was not found
172
179
  expect(response).toBeDefined();
173
180
  expect(typeof response).toBe('string');
@@ -197,7 +204,7 @@ describe('AIHelper.getAssistantResponse', () => {
197
204
  ]
198
205
  }
199
206
  ];
200
- const response = await AIHelper.getAssistantResponse(messages);
207
+ const response = await aiHelper.getAssistantResponse(messages);
201
208
  // Verify we get a response when tool execution had an error
202
209
  expect(response).toBeDefined();
203
210
  expect(typeof response).toBe('string');
@@ -214,7 +221,7 @@ describe('AIHelper.getAssistantResponse', () => {
214
221
  content: 'I am doing well, thank you!'
215
222
  }
216
223
  ];
217
- const response = await AIHelper.getAssistantResponse(messages);
224
+ const response = await aiHelper.getAssistantResponse(messages);
218
225
  // Verify we get a response for normal conversation
219
226
  expect(response).toBeDefined();
220
227
  expect(typeof response).toBe('string');
@@ -241,7 +248,7 @@ describe('AIHelper.getAssistantResponse', () => {
241
248
  ]
242
249
  }
243
250
  ];
244
- const response = await AIHelper.getAssistantResponse(messages);
251
+ const response = await aiHelper.getAssistantResponse(messages);
245
252
  // Verify we get a response even when tool is pending approval
246
253
  // (tool calls without output should not include tool-result in messages)
247
254
  expect(response).toBeDefined();
@@ -287,7 +294,7 @@ describe('AIHelper.getAssistantResponse', () => {
287
294
  ]
288
295
  }
289
296
  ];
290
- const response = await AIHelper.getAssistantResponse(messages);
297
+ const response = await aiHelper.getAssistantResponse(messages);
291
298
  // Verify we get a response for sequential tool calls
292
299
  expect(response).toBeDefined();
293
300
  expect(typeof response).toBe('string');
@@ -301,7 +308,7 @@ describe('AIHelper.getAssistantResponse', () => {
301
308
  content: 'Test message'
302
309
  }
303
310
  ];
304
- const response = await AIHelper.getAssistantResponse(messages, undefined, {
311
+ const response = await aiHelper.getAssistantResponse(messages, undefined, {
305
312
  temperature: 0.9,
306
313
  maxOutputTokens: 1000
307
314
  });
@@ -320,7 +327,7 @@ describe('AIHelper.getAssistantResponse', () => {
320
327
  ];
321
328
  const abortController = new AbortController();
322
329
  const signal = abortController.signal;
323
- const response = await AIHelper.getAssistantResponse(messages, signal);
330
+ const response = await aiHelper.getAssistantResponse(messages, signal);
324
331
  // Verify we get a response with abort signal passed through
325
332
  expect(response).toBeDefined();
326
333
  expect(typeof response).toBe('string');