@multiplayer-app/ai-agent-node 0.1.0-beta.4 → 0.1.0-beta.41

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 (299) hide show
  1. package/dist/cjs/config.cjs +88 -38
  2. package/dist/cjs/config.cjs.map +1 -1
  3. package/dist/cjs/config.d.ts +57 -23
  4. package/dist/cjs/config.d.ts.map +1 -1
  5. package/dist/cjs/helpers/AIHelper.cjs +160 -101
  6. package/dist/cjs/helpers/AIHelper.cjs.map +1 -1
  7. package/dist/cjs/helpers/AIHelper.d.ts +21 -13
  8. package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
  9. package/dist/cjs/helpers/AIHelper.test.cjs +22 -15
  10. package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -1
  11. package/dist/cjs/helpers/ConfigHelper.cjs +19 -11
  12. package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -1
  13. package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -1
  14. package/dist/cjs/helpers/ContextLimiter.cjs +2 -3
  15. package/dist/cjs/helpers/ContextLimiter.cjs.map +1 -1
  16. package/dist/cjs/helpers/FileHelper.cjs +132 -154
  17. package/dist/cjs/helpers/FileHelper.cjs.map +1 -1
  18. package/dist/cjs/helpers/FileHelper.d.ts +19 -25
  19. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
  20. package/dist/cjs/helpers/index.cjs +4 -5
  21. package/dist/cjs/helpers/index.cjs.map +1 -1
  22. package/dist/cjs/helpers/index.d.ts +4 -5
  23. package/dist/cjs/helpers/index.d.ts.map +1 -1
  24. package/dist/cjs/index.cjs +118 -31
  25. package/dist/cjs/index.cjs.map +1 -1
  26. package/dist/cjs/index.d.ts +42 -13
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/libs/index.cjs +2 -3
  29. package/dist/cjs/libs/index.cjs.map +1 -1
  30. package/dist/cjs/libs/index.d.ts +2 -3
  31. package/dist/cjs/libs/index.d.ts.map +1 -1
  32. package/dist/cjs/libs/logger/index.cjs +5 -5
  33. package/dist/cjs/libs/logger/index.cjs.map +1 -1
  34. package/dist/cjs/libs/logger/index.d.ts +2 -2
  35. package/dist/cjs/libs/logger/index.d.ts.map +1 -1
  36. package/dist/cjs/libs/logger/kafkajs-logger-creator.cjs +2 -2
  37. package/dist/cjs/libs/logger/kafkajs-logger-creator.cjs.map +1 -1
  38. package/dist/cjs/libs/s3/index.cjs +3 -39
  39. package/dist/cjs/libs/s3/index.cjs.map +1 -1
  40. package/dist/cjs/libs/s3/index.d.ts +1 -2
  41. package/dist/cjs/libs/s3/index.d.ts.map +1 -1
  42. package/dist/cjs/libs/s3/s3.lib.cjs +174 -191
  43. package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -1
  44. package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
  45. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
  46. package/dist/cjs/processors/ActivityProcessor.cjs +36 -0
  47. package/dist/cjs/processors/ActivityProcessor.cjs.map +1 -0
  48. package/dist/cjs/processors/ActivityProcessor.d.ts +27 -0
  49. package/dist/cjs/processors/ActivityProcessor.d.ts.map +1 -0
  50. package/dist/cjs/processors/ActivityProcessor.test.cjs +84 -0
  51. package/dist/cjs/processors/ActivityProcessor.test.cjs.map +1 -0
  52. package/dist/cjs/processors/ActivityProcessor.test.d.ts +2 -0
  53. package/dist/cjs/processors/ActivityProcessor.test.d.ts.map +1 -0
  54. package/dist/cjs/processors/ChatProcessor.cjs +335 -163
  55. package/dist/cjs/processors/ChatProcessor.cjs.map +1 -1
  56. package/dist/cjs/processors/ChatProcessor.d.ts +56 -9
  57. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
  58. package/dist/cjs/processors/ChatProcessor.test.cjs +450 -0
  59. package/dist/cjs/processors/ChatProcessor.test.cjs.map +1 -0
  60. package/dist/cjs/processors/ChatProcessor.test.d.ts +2 -0
  61. package/dist/cjs/processors/ChatProcessor.test.d.ts.map +1 -0
  62. package/dist/cjs/processors/ModelsProcessor.cjs +2 -2
  63. package/dist/cjs/processors/ModelsProcessor.cjs.map +1 -1
  64. package/dist/cjs/processors/index.cjs +3 -2
  65. package/dist/cjs/processors/index.cjs.map +1 -1
  66. package/dist/cjs/processors/index.d.ts +3 -2
  67. package/dist/cjs/processors/index.d.ts.map +1 -1
  68. package/dist/cjs/services/AIService.cjs +50 -31
  69. package/dist/cjs/services/AIService.cjs.map +1 -1
  70. package/dist/cjs/services/AIService.d.ts +16 -5
  71. package/dist/cjs/services/AIService.d.ts.map +1 -1
  72. package/dist/cjs/services/InternalEventsHandler.cjs +5 -5
  73. package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -1
  74. package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
  75. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
  76. package/dist/cjs/services/ModelFetcher.cjs +9 -15
  77. package/dist/cjs/services/ModelFetcher.cjs.map +1 -1
  78. package/dist/cjs/services/ModelFetcher.d.ts +2 -7
  79. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
  80. package/dist/cjs/services/RedisService.cjs +35 -32
  81. package/dist/cjs/services/RedisService.cjs.map +1 -1
  82. package/dist/cjs/services/RedisService.d.ts +5 -2
  83. package/dist/cjs/services/RedisService.d.ts.map +1 -1
  84. package/dist/cjs/services/SocketService.cjs +19 -20
  85. package/dist/cjs/services/SocketService.cjs.map +1 -1
  86. package/dist/cjs/services/SocketService.d.ts +9 -6
  87. package/dist/cjs/services/SocketService.d.ts.map +1 -1
  88. package/dist/cjs/services/index.cjs +5 -6
  89. package/dist/cjs/services/index.cjs.map +1 -1
  90. package/dist/cjs/services/index.d.ts +5 -6
  91. package/dist/cjs/services/index.d.ts.map +1 -1
  92. package/dist/cjs/store/AgentStore.cjs +4 -5
  93. package/dist/cjs/store/AgentStore.cjs.map +1 -1
  94. package/dist/cjs/store/AgentStore.d.ts +2 -1
  95. package/dist/cjs/store/AgentStore.d.ts.map +1 -1
  96. package/dist/cjs/store/ArtifactStore.cjs +2 -4
  97. package/dist/cjs/store/ArtifactStore.cjs.map +1 -1
  98. package/dist/cjs/store/ConfigStore.cjs +8 -11
  99. package/dist/cjs/store/ConfigStore.cjs.map +1 -1
  100. package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
  101. package/dist/cjs/store/ConfigStore.test.cjs +2 -2
  102. package/dist/cjs/store/ConfigStore.test.cjs.map +1 -1
  103. package/dist/cjs/store/ModelStore.cjs +4 -4
  104. package/dist/cjs/store/ModelStore.cjs.map +1 -1
  105. package/dist/cjs/store/ModelStore.test.cjs +17 -17
  106. package/dist/cjs/store/ModelStore.test.cjs.map +1 -1
  107. package/dist/cjs/store/index.cjs +4 -4
  108. package/dist/cjs/store/index.cjs.map +1 -1
  109. package/dist/cjs/store/index.d.ts +4 -4
  110. package/dist/cjs/store/index.d.ts.map +1 -1
  111. package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
  112. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  113. package/dist/esm/config.d.ts +57 -23
  114. package/dist/esm/config.d.ts.map +1 -1
  115. package/dist/esm/config.js +88 -36
  116. package/dist/esm/config.js.map +1 -1
  117. package/dist/esm/helpers/AIHelper.d.ts +21 -13
  118. package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
  119. package/dist/esm/helpers/AIHelper.js +159 -98
  120. package/dist/esm/helpers/AIHelper.js.map +1 -1
  121. package/dist/esm/helpers/AIHelper.test.js +21 -14
  122. package/dist/esm/helpers/AIHelper.test.js.map +1 -1
  123. package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -1
  124. package/dist/esm/helpers/ConfigHelper.js +17 -9
  125. package/dist/esm/helpers/ConfigHelper.js.map +1 -1
  126. package/dist/esm/helpers/ContextLimiter.js +2 -3
  127. package/dist/esm/helpers/ContextLimiter.js.map +1 -1
  128. package/dist/esm/helpers/FileHelper.d.ts +19 -25
  129. package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
  130. package/dist/esm/helpers/FileHelper.js +132 -149
  131. package/dist/esm/helpers/FileHelper.js.map +1 -1
  132. package/dist/esm/helpers/index.d.ts +4 -5
  133. package/dist/esm/helpers/index.d.ts.map +1 -1
  134. package/dist/esm/helpers/index.js +4 -5
  135. package/dist/esm/helpers/index.js.map +1 -1
  136. package/dist/esm/index.d.ts +42 -13
  137. package/dist/esm/index.d.ts.map +1 -1
  138. package/dist/esm/index.js +87 -12
  139. package/dist/esm/index.js.map +1 -1
  140. package/dist/esm/libs/index.d.ts +2 -3
  141. package/dist/esm/libs/index.d.ts.map +1 -1
  142. package/dist/esm/libs/index.js +2 -3
  143. package/dist/esm/libs/index.js.map +1 -1
  144. package/dist/esm/libs/logger/index.d.ts +2 -2
  145. package/dist/esm/libs/logger/index.d.ts.map +1 -1
  146. package/dist/esm/libs/logger/index.js +2 -2
  147. package/dist/esm/libs/logger/index.js.map +1 -1
  148. package/dist/esm/libs/logger/kafkajs-logger-creator.js +1 -1
  149. package/dist/esm/libs/logger/kafkajs-logger-creator.js.map +1 -1
  150. package/dist/esm/libs/s3/index.d.ts +1 -2
  151. package/dist/esm/libs/s3/index.d.ts.map +1 -1
  152. package/dist/esm/libs/s3/index.js +1 -2
  153. package/dist/esm/libs/s3/index.js.map +1 -1
  154. package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
  155. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
  156. package/dist/esm/libs/s3/s3.lib.js +178 -177
  157. package/dist/esm/libs/s3/s3.lib.js.map +1 -1
  158. package/dist/esm/processors/ActivityProcessor.d.ts +27 -0
  159. package/dist/esm/processors/ActivityProcessor.d.ts.map +1 -0
  160. package/dist/esm/processors/ActivityProcessor.js +33 -0
  161. package/dist/esm/processors/ActivityProcessor.js.map +1 -0
  162. package/dist/esm/processors/ActivityProcessor.test.d.ts +2 -0
  163. package/dist/esm/processors/ActivityProcessor.test.d.ts.map +1 -0
  164. package/dist/esm/processors/ActivityProcessor.test.js +82 -0
  165. package/dist/esm/processors/ActivityProcessor.test.js.map +1 -0
  166. package/dist/esm/processors/ChatProcessor.d.ts +56 -9
  167. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
  168. package/dist/esm/processors/ChatProcessor.js +334 -153
  169. package/dist/esm/processors/ChatProcessor.js.map +1 -1
  170. package/dist/esm/processors/ChatProcessor.test.d.ts +2 -0
  171. package/dist/esm/processors/ChatProcessor.test.d.ts.map +1 -0
  172. package/dist/esm/processors/ChatProcessor.test.js +448 -0
  173. package/dist/esm/processors/ChatProcessor.test.js.map +1 -0
  174. package/dist/esm/processors/ModelsProcessor.js +1 -1
  175. package/dist/esm/processors/ModelsProcessor.js.map +1 -1
  176. package/dist/esm/processors/index.d.ts +3 -2
  177. package/dist/esm/processors/index.d.ts.map +1 -1
  178. package/dist/esm/processors/index.js +3 -2
  179. package/dist/esm/processors/index.js.map +1 -1
  180. package/dist/esm/services/AIService.d.ts +16 -5
  181. package/dist/esm/services/AIService.d.ts.map +1 -1
  182. package/dist/esm/services/AIService.js +53 -32
  183. package/dist/esm/services/AIService.js.map +1 -1
  184. package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
  185. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
  186. package/dist/esm/services/InternalEventsHandler.js +10 -8
  187. package/dist/esm/services/InternalEventsHandler.js.map +1 -1
  188. package/dist/esm/services/ModelFetcher.d.ts +2 -7
  189. package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
  190. package/dist/esm/services/ModelFetcher.js +4 -9
  191. package/dist/esm/services/ModelFetcher.js.map +1 -1
  192. package/dist/esm/services/RedisService.d.ts +5 -2
  193. package/dist/esm/services/RedisService.d.ts.map +1 -1
  194. package/dist/esm/services/RedisService.js +25 -21
  195. package/dist/esm/services/RedisService.js.map +1 -1
  196. package/dist/esm/services/SocketService.d.ts +9 -6
  197. package/dist/esm/services/SocketService.d.ts.map +1 -1
  198. package/dist/esm/services/SocketService.js +15 -13
  199. package/dist/esm/services/SocketService.js.map +1 -1
  200. package/dist/esm/services/index.d.ts +5 -6
  201. package/dist/esm/services/index.d.ts.map +1 -1
  202. package/dist/esm/services/index.js +5 -6
  203. package/dist/esm/services/index.js.map +1 -1
  204. package/dist/esm/store/AgentStore.d.ts +2 -1
  205. package/dist/esm/store/AgentStore.d.ts.map +1 -1
  206. package/dist/esm/store/AgentStore.js +5 -5
  207. package/dist/esm/store/AgentStore.js.map +1 -1
  208. package/dist/esm/store/ArtifactStore.js +3 -7
  209. package/dist/esm/store/ArtifactStore.js.map +1 -1
  210. package/dist/esm/store/ConfigStore.d.ts.map +1 -1
  211. package/dist/esm/store/ConfigStore.js +16 -19
  212. package/dist/esm/store/ConfigStore.js.map +1 -1
  213. package/dist/esm/store/ConfigStore.test.js +1 -1
  214. package/dist/esm/store/ConfigStore.test.js.map +1 -1
  215. package/dist/esm/store/ModelStore.js +6 -6
  216. package/dist/esm/store/ModelStore.js.map +1 -1
  217. package/dist/esm/store/ModelStore.test.js +12 -12
  218. package/dist/esm/store/ModelStore.test.js.map +1 -1
  219. package/dist/esm/store/index.d.ts +4 -4
  220. package/dist/esm/store/index.d.ts.map +1 -1
  221. package/dist/esm/store/index.js +4 -4
  222. package/dist/esm/store/index.js.map +1 -1
  223. package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
  224. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  225. package/package.json +15 -15
  226. package/dist/cjs/helpers/SetupHelper.cjs +0 -37
  227. package/dist/cjs/helpers/SetupHelper.cjs.map +0 -1
  228. package/dist/cjs/helpers/SetupHelper.d.ts +0 -5
  229. package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
  230. package/dist/cjs/libs/kafka/config.cjs +0 -8
  231. package/dist/cjs/libs/kafka/config.cjs.map +0 -1
  232. package/dist/cjs/libs/kafka/config.d.ts +0 -5
  233. package/dist/cjs/libs/kafka/config.d.ts.map +0 -1
  234. package/dist/cjs/libs/kafka/consumer.cjs +0 -133
  235. package/dist/cjs/libs/kafka/consumer.cjs.map +0 -1
  236. package/dist/cjs/libs/kafka/consumer.d.ts +0 -16
  237. package/dist/cjs/libs/kafka/consumer.d.ts.map +0 -1
  238. package/dist/cjs/libs/kafka/index.cjs +0 -19
  239. package/dist/cjs/libs/kafka/index.cjs.map +0 -1
  240. package/dist/cjs/libs/kafka/index.d.ts +0 -3
  241. package/dist/cjs/libs/kafka/index.d.ts.map +0 -1
  242. package/dist/cjs/libs/kafka/kafka.cjs +0 -27
  243. package/dist/cjs/libs/kafka/kafka.cjs.map +0 -1
  244. package/dist/cjs/libs/kafka/kafka.d.ts +0 -3
  245. package/dist/cjs/libs/kafka/kafka.d.ts.map +0 -1
  246. package/dist/cjs/libs/kafka/producer.cjs +0 -48
  247. package/dist/cjs/libs/kafka/producer.cjs.map +0 -1
  248. package/dist/cjs/libs/kafka/producer.d.ts +0 -11
  249. package/dist/cjs/libs/kafka/producer.d.ts.map +0 -1
  250. package/dist/cjs/libs/logger/config.cjs +0 -9
  251. package/dist/cjs/libs/logger/config.cjs.map +0 -1
  252. package/dist/cjs/libs/logger/config.d.ts +0 -5
  253. package/dist/cjs/libs/logger/config.d.ts.map +0 -1
  254. package/dist/cjs/libs/s3/config.cjs +0 -10
  255. package/dist/cjs/libs/s3/config.cjs.map +0 -1
  256. package/dist/cjs/libs/s3/config.d.ts +0 -7
  257. package/dist/cjs/libs/s3/config.d.ts.map +0 -1
  258. package/dist/cjs/services/KafkaService.cjs +0 -123
  259. package/dist/cjs/services/KafkaService.cjs.map +0 -1
  260. package/dist/cjs/services/KafkaService.d.ts +0 -35
  261. package/dist/cjs/services/KafkaService.d.ts.map +0 -1
  262. package/dist/esm/helpers/SetupHelper.d.ts +0 -5
  263. package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
  264. package/dist/esm/helpers/SetupHelper.js +0 -32
  265. package/dist/esm/helpers/SetupHelper.js.map +0 -1
  266. package/dist/esm/libs/kafka/config.d.ts +0 -5
  267. package/dist/esm/libs/kafka/config.d.ts.map +0 -1
  268. package/dist/esm/libs/kafka/config.js +0 -5
  269. package/dist/esm/libs/kafka/config.js.map +0 -1
  270. package/dist/esm/libs/kafka/consumer.d.ts +0 -16
  271. package/dist/esm/libs/kafka/consumer.d.ts.map +0 -1
  272. package/dist/esm/libs/kafka/consumer.js +0 -126
  273. package/dist/esm/libs/kafka/consumer.js.map +0 -1
  274. package/dist/esm/libs/kafka/index.d.ts +0 -3
  275. package/dist/esm/libs/kafka/index.d.ts.map +0 -1
  276. package/dist/esm/libs/kafka/index.js +0 -3
  277. package/dist/esm/libs/kafka/index.js.map +0 -1
  278. package/dist/esm/libs/kafka/kafka.d.ts +0 -3
  279. package/dist/esm/libs/kafka/kafka.d.ts.map +0 -1
  280. package/dist/esm/libs/kafka/kafka.js +0 -24
  281. package/dist/esm/libs/kafka/kafka.js.map +0 -1
  282. package/dist/esm/libs/kafka/producer.d.ts +0 -11
  283. package/dist/esm/libs/kafka/producer.d.ts.map +0 -1
  284. package/dist/esm/libs/kafka/producer.js +0 -44
  285. package/dist/esm/libs/kafka/producer.js.map +0 -1
  286. package/dist/esm/libs/logger/config.d.ts +0 -5
  287. package/dist/esm/libs/logger/config.d.ts.map +0 -1
  288. package/dist/esm/libs/logger/config.js +0 -6
  289. package/dist/esm/libs/logger/config.js.map +0 -1
  290. package/dist/esm/libs/s3/config.d.ts +0 -7
  291. package/dist/esm/libs/s3/config.d.ts.map +0 -1
  292. package/dist/esm/libs/s3/config.js +0 -7
  293. package/dist/esm/libs/s3/config.js.map +0 -1
  294. package/dist/esm/services/KafkaService.d.ts +0 -35
  295. package/dist/esm/services/KafkaService.d.ts.map +0 -1
  296. package/dist/esm/services/KafkaService.js +0 -120
  297. package/dist/esm/services/KafkaService.js.map +0 -1
  298. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  299. package/dist/tsconfig.esm.tsbuildinfo +0 -1
@@ -1,17 +1,47 @@
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
+ getLanguageModelId(modelId) {
14
+ const model = this.aiService.getLanguageModelId(modelId);
15
+ return model.id;
16
+ }
17
+ clip(value, max) {
18
+ if (value.length <= max)
19
+ return value;
20
+ return `${value.slice(0, max)}…`;
21
+ }
22
+ renderContextValue(value, limits) {
23
+ if (value === null || value === undefined)
24
+ return '';
25
+ if (typeof value === 'string')
26
+ return this.clip(value, limits.maxString);
27
+ if (typeof value === 'number' || typeof value === 'boolean')
28
+ return String(value);
29
+ try {
30
+ const json = JSON.stringify(value);
31
+ return this.clip(json, limits.maxJson);
32
+ }
33
+ catch {
34
+ return '';
35
+ }
36
+ }
37
+ async convertUserMessage(msg, ignoreFileAttachments) {
38
+ const userContent = [
39
+ {
40
+ type: 'text',
12
41
  text: msg.content
13
- }];
14
- const atts = (_a = msg.attachments) !== null && _a !== void 0 ? _a : [];
42
+ }
43
+ ];
44
+ const atts = msg.attachments ?? [];
15
45
  if (!atts.length) {
16
46
  return userContent;
17
47
  }
@@ -21,21 +51,21 @@ export class AIHelper {
21
51
  if (ignoreFileAttachments) {
22
52
  continue;
23
53
  }
24
- if (isImage(att)) {
25
- const image = await prepareImageForVisionAPI(att);
54
+ if (this.fileHelper.isImage(att)) {
55
+ const image = await this.fileHelper.prepareImageForVisionAPI(att);
26
56
  if (image) {
27
57
  userContent.push({
28
- type: "image",
58
+ type: 'image',
29
59
  image: image.image_url.url,
30
- mediaType: att.mimeType,
60
+ mediaType: att.mimeType
31
61
  });
32
62
  }
33
63
  }
34
64
  else {
35
- const fileText = await extractTextFromDocument(att);
65
+ const fileText = await this.fileHelper.extractTextFromDocument(att);
36
66
  if (fileText) {
37
67
  userContent.push({
38
- type: "text",
68
+ type: 'text',
39
69
  text: `${att.type}: ${att.name}(${att.mimeType})\n ${fileText}`
40
70
  });
41
71
  }
@@ -43,31 +73,30 @@ export class AIHelper {
43
73
  continue;
44
74
  }
45
75
  const md = att.metadata;
46
- const kind = typeof (md === null || md === void 0 ? void 0 : md.kind) === 'string' ? md.kind : 'unknown';
76
+ const kind = typeof md?.kind === 'string' ? md.kind : 'unknown';
47
77
  lines.push(`- context:${kind}: ${att.name}`);
48
78
  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 : '';
79
+ const url = typeof md?.source?.url === 'string' ? md.source.url : att.url;
80
+ const title = typeof md?.title === 'string' ? md.title : undefined;
81
+ const selectedText = typeof md?.selectedText === 'string' ? md.selectedText : '';
52
82
  if (url)
53
83
  lines.push(` url: ${url}`);
54
84
  if (title)
55
85
  lines.push(` title: ${title}`);
56
86
  if (selectedText) {
57
- const clipped = selectedText.length > 4000 ? `${selectedText.slice(0, 4000)}…` : selectedText;
58
87
  lines.push(' BEGIN_UNTRUSTED_WEB_SNIPPET');
59
- lines.push(clipped);
88
+ lines.push(this.clip(selectedText, 4000));
60
89
  lines.push(' END_UNTRUSTED_WEB_SNIPPET');
61
90
  }
62
91
  continue;
63
92
  }
64
93
  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 : [];
94
+ const formId = typeof md?.formId === 'string' ? md.formId : undefined;
95
+ const fieldName = typeof md?.fieldName === 'string' ? md.fieldName : undefined;
96
+ const fieldLabel = typeof md?.fieldLabel === 'string' ? md.fieldLabel : undefined;
97
+ const value = md?.value;
98
+ const inputType = typeof md?.inputType === 'string' ? md.inputType : undefined;
99
+ const options = Array.isArray(md?.options) ? md.options : [];
71
100
  if (formId)
72
101
  lines.push(` formId: ${formId}`);
73
102
  if (fieldName)
@@ -78,44 +107,47 @@ export class AIHelper {
78
107
  const rendered = options
79
108
  .slice(0, 30)
80
109
  .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 : '';
110
+ const v = typeof o?.value === 'string' ? o.value : '';
111
+ const l = typeof o?.label === 'string' ? o.label : '';
83
112
  if (!v && !l)
84
113
  return '';
85
- return l && v ? `${l} (${v})` : (l || v);
114
+ return l && v ? `${l} (${v})` : l || v;
86
115
  })
87
116
  .filter(Boolean)
88
117
  .join(', ');
89
118
  if (rendered)
90
119
  lines.push(` options: ${rendered}${options.length > 30 ? '…' : ''}`);
91
120
  }
92
- if (value)
93
- lines.push(` value: ${value.length > 1000 ? `${value.slice(0, 1000)}…` : value}`);
121
+ if (value !== undefined) {
122
+ const rendered = this.renderContextValue(value, { maxString: 1000, maxJson: 2500 });
123
+ if (rendered)
124
+ lines.push(` value: ${rendered}`);
125
+ }
94
126
  continue;
95
127
  }
96
128
  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 : [];
129
+ const formId = typeof md?.formId === 'string' ? md.formId : undefined;
130
+ const formName = typeof md?.formName === 'string' ? md.formName : undefined;
131
+ const fields = Array.isArray(md?.fields) ? md.fields : [];
100
132
  if (formId)
101
133
  lines.push(` formId: ${formId}`);
102
134
  if (formName)
103
135
  lines.push(` formName: ${formName}`);
104
136
  lines.push(' fields:');
105
137
  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;
138
+ const name = typeof f?.name === 'string' ? f.name : 'unknown';
139
+ const label = typeof f?.label === 'string' ? f.label : undefined;
140
+ const value = f?.value;
141
+ const inputType = typeof f?.inputType === 'string' ? f.inputType : undefined;
142
+ const options = Array.isArray(f?.options) ? f.options : [];
143
+ const clipped = this.renderContextValue(value, { maxString: 1000, maxJson: 2500 });
112
144
  const meta = [];
113
145
  if (inputType)
114
146
  meta.push(`type=${inputType}`);
115
147
  if ((inputType === 'select' || inputType === 'radio') && options.length) {
116
148
  const opts = options
117
149
  .slice(0, 20)
118
- .map((o) => typeof (o === null || o === void 0 ? void 0 : o.value) === 'string' ? o.value : '')
150
+ .map((o) => (typeof o?.value === 'string' ? o.value : ''))
119
151
  .filter(Boolean)
120
152
  .join('|');
121
153
  if (opts)
@@ -125,84 +157,118 @@ export class AIHelper {
125
157
  }
126
158
  continue;
127
159
  }
160
+ if (kind === 'pageContext') {
161
+ const url = typeof md?.source?.url === 'string' ? md.source.url : att.url;
162
+ const title = typeof md?.title === 'string' ? md.title : undefined;
163
+ const route = typeof md?.source?.route === 'string' ? md.source.route : undefined;
164
+ const data = md?.data;
165
+ if (url)
166
+ lines.push(` url: ${url}`);
167
+ if (title)
168
+ lines.push(` title: ${title}`);
169
+ if (route)
170
+ lines.push(` route: ${route}`);
171
+ if (data && typeof data === 'object') {
172
+ const entries = Object.entries(data)
173
+ .filter(([k]) => typeof k === 'string' && k.length > 0)
174
+ .sort(([a], [b]) => a.localeCompare(b));
175
+ if (entries.length) {
176
+ lines.push(' data:');
177
+ const limits = { maxString: 1000, maxJson: 1500 };
178
+ for (const [k, v] of entries.slice(0, 40)) {
179
+ const rendered = this.renderContextValue(v, limits);
180
+ if (!rendered)
181
+ continue;
182
+ lines.push(` - ${k}: ${rendered}`);
183
+ }
184
+ if (entries.length > 40) {
185
+ lines.push(` - … (${entries.length - 40} more keys)`);
186
+ }
187
+ }
188
+ }
189
+ else if (data !== undefined) {
190
+ const rendered = this.renderContextValue(data, { maxString: 1000, maxJson: 2000 });
191
+ if (rendered)
192
+ lines.push(` data: ${rendered}`);
193
+ }
194
+ continue;
195
+ }
128
196
  // 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;
197
+ const title = typeof md?.title === 'string' ? md.title : undefined;
198
+ const summary = typeof md?.summary === 'string' ? md.summary : undefined;
131
199
  if (title)
132
200
  lines.push(` title: ${title}`);
133
201
  if (summary) {
134
- lines.push(` summary: ${summary.length > 4000 ? `${summary.slice(0, 4000)}…` : summary}`);
202
+ lines.push(` summary: ${this.clip(summary, 4000)}`);
135
203
  continue;
136
204
  }
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}`);
205
+ if (md?.data !== undefined) {
206
+ const rendered = this.renderContextValue(md.data, { maxString: 2000, maxJson: 5000 });
207
+ if (rendered)
208
+ lines.push(` data: ${rendered}`);
140
209
  }
141
210
  }
142
211
  if (lines.length) {
143
212
  userContent.push({
144
- type: "text",
213
+ type: 'text',
145
214
  text: `Context attachments (non-authoritative; user message is primary):\n ${lines.join('\n')}`
146
215
  });
147
216
  }
148
217
  return userContent;
149
218
  }
150
- static getAgentConfigs(contextKey) {
219
+ getAgentConfigs(contextKey) {
151
220
  const agents = ConfigStore.getInstance().getAgentsForContext(contextKey);
152
221
  if (!agents.length) {
153
222
  throw new Error(`Agent configs not found for context key: ${contextKey}`);
154
223
  }
155
224
  return agents;
156
225
  }
157
- static async getAgentOptions(params, options = {}) {
226
+ async getAgentOptions(params, options = {}) {
158
227
  const { contextKey, messages, modelId, context, agentName } = params;
159
228
  let agentConfig = ConfigStore.getInstance().getAgentConfigByName(agentName);
160
229
  if (contextKey && messages) {
161
- agentConfig = await AIHelper.selectAgentConfig(contextKey, messages);
230
+ agentConfig = await this.selectAgentConfig(contextKey, messages, options.onStepFinish);
162
231
  }
163
- const aiService = new AIService(ModelStore.getInstance());
164
- const agentOptions = aiService.getAgentOptions(agentConfig, modelId, context);
232
+ const agentOptions = this.aiService.getAgentOptions(agentConfig, modelId, context);
165
233
  return {
166
234
  ...agentOptions,
167
- ...options,
235
+ ...options
168
236
  };
169
237
  }
170
- static async selectAgentConfig(contextKey, messages) {
171
- const configs = AIHelper.getAgentConfigs(contextKey);
238
+ async selectAgentConfig(contextKey, messages, onStepFinish) {
239
+ const configs = this.getAgentConfigs(contextKey);
172
240
  if (configs.length === 1) {
173
241
  return configs[0];
174
242
  }
175
- const aiService = new AIService(ModelStore.getInstance());
176
- const systemPrompt = `Select the most appropriate agent for the given user prompt.
177
- Return only the agent name, no quotes or extra text.
178
- Available agents: ${JSON.stringify(configs.map(config => ({
243
+ const lastUsedAgent = messages.find((message) => message.agentName);
244
+ const systemPrompt = `Select the most appropriate agent for the given user message.
245
+ Return only the agent name, no quotes or extra text. ${lastUsedAgent ? `Latest Used agent: ${lastUsedAgent}` : ''}
246
+ Available agents: ${JSON.stringify(configs.map((config) => ({
179
247
  name: config.name,
180
248
  description: config.description,
181
- tools: config.tools.map(({ data }) => data.title)
249
+ tools: config.tools?.map(({ data }) => data.title)
182
250
  })))}`;
183
- const agentName = await aiService.generateText({
184
- messages,
251
+ const promptMessages = messages.length > 2 ? messages.slice(messages.length - 2) : messages;
252
+ const agentName = await this.aiService.generateText({
253
+ messages: await this.convertMessages(promptMessages, true),
185
254
  system: systemPrompt,
186
- temperature: 0.7,
187
- maxOutputTokens: 2000
255
+ temperature: 0.1,
256
+ maxOutputTokens: 2000,
257
+ onStepFinish
188
258
  });
189
- const agent = configs.find(config => config.name === agentName);
259
+ const agent = configs.find((config) => config.name === agentName);
190
260
  if (!agent) {
191
261
  // fallback, agent not found, grabbing first from the list
192
262
  return configs[0];
193
263
  }
194
264
  return agent;
195
265
  }
196
- static async getAssistantResponse(messages, signal, options = {}) {
266
+ async getAssistantResponse(messages, options = {}) {
197
267
  try {
198
- const aiService = new AIService(ModelStore.getInstance());
199
268
  const processedOptions = this.processToolChoice(options, messages);
200
- return aiService.generateText({
201
- temperature: 0.7,
202
- maxOutputTokens: 2000,
269
+ return this.aiService.generateText({
203
270
  ...processedOptions,
204
- messages: await AIHelper.convertMessages(messages),
205
- signal,
271
+ messages: await this.convertMessages(messages),
206
272
  });
207
273
  }
208
274
  catch (error) {
@@ -210,18 +276,15 @@ Available agents: ${JSON.stringify(configs.map(config => ({
210
276
  throw error;
211
277
  }
212
278
  }
213
- static processToolChoice(options, agentMessages) {
214
- var _a, _b, _c, _d;
215
- if (!(options === null || options === void 0 ? void 0 : options.toolChoice)) {
279
+ processToolChoice(options, agentMessages) {
280
+ if (!options?.toolChoice) {
216
281
  return options || {};
217
282
  }
218
283
  // Find the latest assistant message
219
- const latestAssistantMessage = [...agentMessages]
220
- .reverse()
221
- .find(msg => msg.role === MessageRole.Assistant);
284
+ const latestAssistantMessage = [...agentMessages].reverse().find((msg) => msg.role === MessageRole.Assistant);
222
285
  // Handle 'required' toolChoice: if any tool was called, set to 'auto'
223
286
  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;
287
+ const anyToolWasCalled = (latestAssistantMessage?.toolCalls?.length ?? 0) > 0;
225
288
  if (anyToolWasCalled) {
226
289
  return {
227
290
  ...options,
@@ -233,7 +296,7 @@ Available agents: ${JSON.stringify(configs.map(config => ({
233
296
  // Handle specific tool toolChoice: if that specific tool was called, set to 'auto'
234
297
  if (typeof options.toolChoice === 'object' && options.toolChoice.type === 'tool') {
235
298
  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;
299
+ const toolWasCalled = latestAssistantMessage?.toolCalls?.some((toolCall) => toolCall.name === toolName) ?? false;
237
300
  if (toolWasCalled) {
238
301
  return {
239
302
  ...options,
@@ -243,11 +306,10 @@ Available agents: ${JSON.stringify(configs.map(config => ({
243
306
  }
244
307
  return options;
245
308
  }
246
- static async streamAssistantResponse(agentMessages, signal, options) {
247
- const aiService = new AIService(ModelStore.getInstance());
309
+ async streamAssistantResponse(agentMessages, signal, options) {
248
310
  const messages = await this.convertMessages(agentMessages);
249
311
  const processedOptions = this.processToolChoice(options, agentMessages);
250
- return aiService.streamText({
312
+ return this.aiService.streamText({
251
313
  messages,
252
314
  temperature: 0.7,
253
315
  maxOutputTokens: 2000,
@@ -255,8 +317,7 @@ Available agents: ${JSON.stringify(configs.map(config => ({
255
317
  ...processedOptions
256
318
  });
257
319
  }
258
- static async convertMessages(agentMessages, ignoreToolsAndAttachments = false) {
259
- var _a;
320
+ async convertMessages(agentMessages, ignoreToolsAndAttachments = false) {
260
321
  const result = [];
261
322
  for (const msg of agentMessages) {
262
323
  if (msg.role === MessageRole.User) {
@@ -278,13 +339,13 @@ Available agents: ${JSON.stringify(configs.map(config => ({
278
339
  content: []
279
340
  };
280
341
  if (!ignoreToolsAndAttachments) {
281
- (_a = msg.toolCalls) === null || _a === void 0 ? void 0 : _a.forEach((toolCall) => {
282
- if (toolCall.output) {
342
+ msg.toolCalls?.forEach((toolCall) => {
343
+ if (toolCall.output || toolCall.error) {
283
344
  assistantMessage.content.push({
284
345
  type: 'tool-call',
285
346
  toolCallId: toolCall.id,
286
347
  toolName: toolCall.name,
287
- input: toolCall.input
348
+ input: Object.keys(toolCall.input).length ? toolCall.input : { stub: 'stub' }, // todo: remove this workaround when openrouter will have new stable version(last tested: 2.2.3 has reasoning issues)
288
349
  });
289
350
  toolMessage.content.push({
290
351
  type: 'tool-result',
@@ -292,7 +353,7 @@ Available agents: ${JSON.stringify(configs.map(config => ({
292
353
  toolName: toolCall.name,
293
354
  output: {
294
355
  type: 'text',
295
- value: JSON.stringify(toolCall.output)
356
+ value: JSON.stringify(toolCall.output || { error: toolCall.error })
296
357
  }
297
358
  });
298
359
  }
@@ -308,13 +369,13 @@ Available agents: ${JSON.stringify(configs.map(config => ({
308
369
  }
309
370
  return result;
310
371
  }
311
- static async generateTitleForMessage(contextKey, messages) {
372
+ async generateTitleForMessage(contextKey, messages, onStepFinish) {
312
373
  try {
313
- const aiService = new AIService(ModelStore.getInstance());
314
374
  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),
375
+ return this.aiService.generateText({
376
+ messages: await this.convertMessages(messages, true),
317
377
  system: systemPrompt,
378
+ onStepFinish
318
379
  });
319
380
  }
320
381
  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, {
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');