@vybestack/llxprt-code-core 0.1.18-nightly.250811.b0db22c6 → 0.1.18-nightly.250812.12fa8ad2

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 (485) hide show
  1. package/README.md +49 -2
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/auth/anthropic-device-flow.d.ts +53 -0
  6. package/dist/src/auth/anthropic-device-flow.js +208 -0
  7. package/dist/src/auth/anthropic-device-flow.js.map +1 -0
  8. package/dist/src/auth/token-store.js +11 -7
  9. package/dist/src/auth/token-store.js.map +1 -1
  10. package/dist/src/config/config.d.ts +7 -1
  11. package/dist/src/config/config.js +42 -4
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/config/profileManager.d.ts +14 -4
  14. package/dist/src/config/profileManager.js +90 -11
  15. package/dist/src/config/profileManager.js.map +1 -1
  16. package/dist/src/core/contentGenerator.d.ts +2 -1
  17. package/dist/src/core/contentGenerator.js +1 -0
  18. package/dist/src/core/contentGenerator.js.map +1 -1
  19. package/dist/src/index.d.ts +6 -0
  20. package/dist/src/index.js +5 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/providers/BaseProvider.d.ts +51 -0
  23. package/dist/src/providers/BaseProvider.js +136 -1
  24. package/dist/src/providers/BaseProvider.js.map +1 -1
  25. package/dist/src/providers/IProvider.d.ts +1 -0
  26. package/dist/src/providers/LoggingProviderWrapper.d.ts +1 -0
  27. package/dist/src/providers/LoggingProviderWrapper.js +3 -0
  28. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  29. package/dist/src/providers/ProviderManager.d.ts +0 -1
  30. package/dist/src/providers/ProviderManager.js +23 -14
  31. package/dist/src/providers/ProviderManager.js.map +1 -1
  32. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
  33. package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
  34. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  35. package/dist/src/providers/gemini/GeminiProvider.d.ts +4 -0
  36. package/dist/src/providers/gemini/GeminiProvider.js +33 -1
  37. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  38. package/dist/src/providers/openai/OpenAIProvider.d.ts +32 -0
  39. package/dist/src/providers/openai/OpenAIProvider.js +200 -13
  40. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  41. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
  42. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
  43. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
  44. package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
  45. package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
  46. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
  47. package/dist/src/settings/SettingsService.d.ts +32 -0
  48. package/dist/src/settings/SettingsService.js +204 -0
  49. package/dist/src/settings/SettingsService.js.map +1 -0
  50. package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
  51. package/dist/src/settings/settingsServiceInstance.js +24 -0
  52. package/dist/src/settings/settingsServiceInstance.js.map +1 -0
  53. package/dist/src/settings/types.d.ts +141 -0
  54. package/dist/src/settings/types.js +5 -0
  55. package/dist/src/settings/types.js.map +1 -0
  56. package/package.json +4 -2
  57. package/dist/src/auth/auth-integration.spec.d.ts +0 -6
  58. package/dist/src/auth/auth-integration.spec.js +0 -384
  59. package/dist/src/auth/auth-integration.spec.js.map +0 -1
  60. package/dist/src/auth/precedence.test.d.ts +0 -6
  61. package/dist/src/auth/precedence.test.js +0 -374
  62. package/dist/src/auth/precedence.test.js.map +0 -1
  63. package/dist/src/auth/qwen-device-flow.spec.d.ts +0 -6
  64. package/dist/src/auth/qwen-device-flow.spec.js +0 -793
  65. package/dist/src/auth/qwen-device-flow.spec.js.map +0 -1
  66. package/dist/src/auth/token-store.spec.d.ts +0 -6
  67. package/dist/src/auth/token-store.spec.js +0 -405
  68. package/dist/src/auth/token-store.spec.js.map +0 -1
  69. package/dist/src/code_assist/converter.test.d.ts +0 -6
  70. package/dist/src/code_assist/converter.test.js +0 -279
  71. package/dist/src/code_assist/converter.test.js.map +0 -1
  72. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  73. package/dist/src/code_assist/oauth2.test.js +0 -370
  74. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  75. package/dist/src/code_assist/server.test.d.ts +0 -6
  76. package/dist/src/code_assist/server.test.js +0 -134
  77. package/dist/src/code_assist/server.test.js.map +0 -1
  78. package/dist/src/code_assist/setup.test.d.ts +0 -6
  79. package/dist/src/code_assist/setup.test.js +0 -65
  80. package/dist/src/code_assist/setup.test.js.map +0 -1
  81. package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
  82. package/dist/src/config/config.alwaysAllow.test.js +0 -84
  83. package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
  84. package/dist/src/config/config.ephemeral.test.d.ts +0 -6
  85. package/dist/src/config/config.ephemeral.test.js +0 -152
  86. package/dist/src/config/config.ephemeral.test.js.map +0 -1
  87. package/dist/src/config/config.test.d.ts +0 -6
  88. package/dist/src/config/config.test.js +0 -369
  89. package/dist/src/config/config.test.js.map +0 -1
  90. package/dist/src/config/endpoints.test.d.ts +0 -6
  91. package/dist/src/config/endpoints.test.js +0 -196
  92. package/dist/src/config/endpoints.test.js.map +0 -1
  93. package/dist/src/config/flashFallback.test.d.ts +0 -6
  94. package/dist/src/config/flashFallback.test.js +0 -91
  95. package/dist/src/config/flashFallback.test.js.map +0 -1
  96. package/dist/src/core/client.test.d.ts +0 -6
  97. package/dist/src/core/client.test.js +0 -1323
  98. package/dist/src/core/client.test.js.map +0 -1
  99. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  100. package/dist/src/core/contentGenerator.test.js +0 -103
  101. package/dist/src/core/contentGenerator.test.js.map +0 -1
  102. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  103. package/dist/src/core/coreToolScheduler.test.js +0 -637
  104. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  105. package/dist/src/core/geminiChat.test.d.ts +0 -6
  106. package/dist/src/core/geminiChat.test.js +0 -425
  107. package/dist/src/core/geminiChat.test.js.map +0 -1
  108. package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
  109. package/dist/src/core/googleGenAIWrapper.test.js +0 -104
  110. package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
  111. package/dist/src/core/logger.test.d.ts +0 -6
  112. package/dist/src/core/logger.test.js +0 -467
  113. package/dist/src/core/logger.test.js.map +0 -1
  114. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
  115. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
  116. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
  117. package/dist/src/core/prompts-async.test.d.ts +0 -6
  118. package/dist/src/core/prompts-async.test.js +0 -115
  119. package/dist/src/core/prompts-async.test.js.map +0 -1
  120. package/dist/src/core/prompts.test.d.ts +0 -6
  121. package/dist/src/core/prompts.test.js +0 -68
  122. package/dist/src/core/prompts.test.js.map +0 -1
  123. package/dist/src/core/subagent.test.d.ts +0 -6
  124. package/dist/src/core/subagent.test.js +0 -510
  125. package/dist/src/core/subagent.test.js.map +0 -1
  126. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  127. package/dist/src/core/tokenLimits.test.js +0 -66
  128. package/dist/src/core/tokenLimits.test.js.map +0 -1
  129. package/dist/src/core/turn.test.d.ts +0 -6
  130. package/dist/src/core/turn.test.js +0 -366
  131. package/dist/src/core/turn.test.js.map +0 -1
  132. package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
  133. package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
  134. package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
  135. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  136. package/dist/src/ide/ide-installer.test.js +0 -55
  137. package/dist/src/ide/ide-installer.test.js.map +0 -1
  138. package/dist/src/ide/ideContext.test.d.ts +0 -6
  139. package/dist/src/ide/ideContext.test.js +0 -265
  140. package/dist/src/ide/ideContext.test.js.map +0 -1
  141. package/dist/src/index.test.d.ts +0 -6
  142. package/dist/src/index.test.js +0 -12
  143. package/dist/src/index.test.js.map +0 -1
  144. package/dist/src/integration-tests/oauth-integration.spec.d.ts +0 -6
  145. package/dist/src/integration-tests/oauth-integration.spec.js +0 -518
  146. package/dist/src/integration-tests/oauth-integration.spec.js.map +0 -1
  147. package/dist/src/integration-tests/oauth-simple-test.spec.d.ts +0 -1
  148. package/dist/src/integration-tests/oauth-simple-test.spec.js +0 -88
  149. package/dist/src/integration-tests/oauth-simple-test.spec.js.map +0 -1
  150. package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
  151. package/dist/src/integration-tests/todo-system.test.js +0 -46
  152. package/dist/src/integration-tests/todo-system.test.js.map +0 -1
  153. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  154. package/dist/src/mcp/google-auth-provider.test.js +0 -54
  155. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  156. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  157. package/dist/src/mcp/oauth-provider.test.js +0 -602
  158. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  159. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  160. package/dist/src/mcp/oauth-token-storage.test.js +0 -205
  161. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  162. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  163. package/dist/src/mcp/oauth-utils.test.js +0 -144
  164. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  165. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
  166. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
  167. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
  168. package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
  169. package/dist/src/parsers/TextToolCallParser.test.js +0 -225
  170. package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
  171. package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
  172. package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
  173. package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
  174. package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
  175. package/dist/src/prompt-config/prompt-cache.test.js +0 -437
  176. package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
  177. package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
  178. package/dist/src/prompt-config/prompt-installer.test.js +0 -503
  179. package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
  180. package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
  181. package/dist/src/prompt-config/prompt-loader.test.js +0 -413
  182. package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
  183. package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
  184. package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
  185. package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
  186. package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
  187. package/dist/src/prompt-config/prompt-service.test.js +0 -811
  188. package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
  189. package/dist/src/providers/BaseProvider.test.d.ts +0 -6
  190. package/dist/src/providers/BaseProvider.test.js +0 -472
  191. package/dist/src/providers/BaseProvider.test.js.map +0 -1
  192. package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
  193. package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
  194. package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
  195. package/dist/src/providers/ProviderManager.test.d.ts +0 -6
  196. package/dist/src/providers/ProviderManager.test.js +0 -284
  197. package/dist/src/providers/ProviderManager.test.js.map +0 -1
  198. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
  199. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
  200. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
  201. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
  202. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
  203. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
  204. package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
  205. package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
  206. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
  207. package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
  208. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
  209. package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
  210. package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
  211. package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
  212. package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
  213. package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
  214. package/dist/src/providers/integration/multi-provider.integration.test.js +0 -308
  215. package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
  216. package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
  217. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
  218. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
  219. package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
  220. package/dist/src/providers/openai/ConversationCache.test.js +0 -113
  221. package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
  222. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
  223. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
  224. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
  225. package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
  226. package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
  227. package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
  228. package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
  229. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
  230. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
  231. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
  232. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
  233. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
  234. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
  235. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
  236. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
  237. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
  238. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
  239. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
  240. package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
  241. package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
  242. package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
  243. package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
  244. package/dist/src/providers/openai/OpenAIProvider.test.js +0 -621
  245. package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
  246. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
  247. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
  248. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
  249. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
  250. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
  251. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
  252. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
  253. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
  254. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
  255. package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
  256. package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
  257. package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
  258. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
  259. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
  260. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
  261. package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
  262. package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
  263. package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
  264. package/dist/src/providers/openai/openai-oauth.spec.d.ts +0 -16
  265. package/dist/src/providers/openai/openai-oauth.spec.js +0 -544
  266. package/dist/src/providers/openai/openai-oauth.spec.js.map +0 -1
  267. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
  268. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
  269. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
  270. package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
  271. package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
  272. package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
  273. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  274. package/dist/src/services/fileDiscoveryService.test.js +0 -143
  275. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  276. package/dist/src/services/gitService.test.d.ts +0 -6
  277. package/dist/src/services/gitService.test.js +0 -209
  278. package/dist/src/services/gitService.test.js.map +0 -1
  279. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  280. package/dist/src/services/loopDetectionService.test.js +0 -484
  281. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  282. package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
  283. package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
  284. package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
  285. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  286. package/dist/src/services/shellExecutionService.test.js +0 -272
  287. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  288. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
  289. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
  290. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
  291. package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
  292. package/dist/src/services/shellExecutionService.windows.test.js +0 -79
  293. package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
  294. package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
  295. package/dist/src/services/tool-call-tracker-service.test.js +0 -99
  296. package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
  297. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -6
  298. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -187
  299. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
  300. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  301. package/dist/src/telemetry/loggers.test.js +0 -573
  302. package/dist/src/telemetry/loggers.test.js.map +0 -1
  303. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  304. package/dist/src/telemetry/metrics.test.js +0 -212
  305. package/dist/src/telemetry/metrics.test.js.map +0 -1
  306. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  307. package/dist/src/telemetry/telemetry.test.js +0 -54
  308. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  309. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  310. package/dist/src/telemetry/uiTelemetry.test.js +0 -518
  311. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  312. package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
  313. package/dist/src/tools/ToolFormatter.test.js +0 -349
  314. package/dist/src/tools/ToolFormatter.test.js.map +0 -1
  315. package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
  316. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
  317. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
  318. package/dist/src/tools/diffOptions.test.d.ts +0 -6
  319. package/dist/src/tools/diffOptions.test.js +0 -119
  320. package/dist/src/tools/diffOptions.test.js.map +0 -1
  321. package/dist/src/tools/edit.test.d.ts +0 -6
  322. package/dist/src/tools/edit.test.js +0 -689
  323. package/dist/src/tools/edit.test.js.map +0 -1
  324. package/dist/src/tools/glob.test.d.ts +0 -6
  325. package/dist/src/tools/glob.test.js +0 -332
  326. package/dist/src/tools/glob.test.js.map +0 -1
  327. package/dist/src/tools/grep.test.d.ts +0 -6
  328. package/dist/src/tools/grep.test.js +0 -272
  329. package/dist/src/tools/grep.test.js.map +0 -1
  330. package/dist/src/tools/ls.test.d.ts +0 -6
  331. package/dist/src/tools/ls.test.js +0 -357
  332. package/dist/src/tools/ls.test.js.map +0 -1
  333. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  334. package/dist/src/tools/mcp-client.test.js +0 -617
  335. package/dist/src/tools/mcp-client.test.js.map +0 -1
  336. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  337. package/dist/src/tools/mcp-tool.test.js +0 -501
  338. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  339. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  340. package/dist/src/tools/memoryTool.test.js +0 -266
  341. package/dist/src/tools/memoryTool.test.js.map +0 -1
  342. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  343. package/dist/src/tools/modifiable-tool.test.js +0 -193
  344. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  345. package/dist/src/tools/read-file.test.d.ts +0 -6
  346. package/dist/src/tools/read-file.test.js +0 -319
  347. package/dist/src/tools/read-file.test.js.map +0 -1
  348. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  349. package/dist/src/tools/read-many-files.test.js +0 -644
  350. package/dist/src/tools/read-many-files.test.js.map +0 -1
  351. package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
  352. package/dist/src/tools/shell.multibyte.test.js +0 -75
  353. package/dist/src/tools/shell.multibyte.test.js.map +0 -1
  354. package/dist/src/tools/shell.test.d.ts +0 -6
  355. package/dist/src/tools/shell.test.js +0 -367
  356. package/dist/src/tools/shell.test.js.map +0 -1
  357. package/dist/src/tools/todo-pause.spec.d.ts +0 -6
  358. package/dist/src/tools/todo-pause.spec.js +0 -287
  359. package/dist/src/tools/todo-pause.spec.js.map +0 -1
  360. package/dist/src/tools/todo-read.test.d.ts +0 -6
  361. package/dist/src/tools/todo-read.test.js +0 -162
  362. package/dist/src/tools/todo-read.test.js.map +0 -1
  363. package/dist/src/tools/todo-schemas.test.d.ts +0 -6
  364. package/dist/src/tools/todo-schemas.test.js +0 -341
  365. package/dist/src/tools/todo-schemas.test.js.map +0 -1
  366. package/dist/src/tools/todo-store.test.d.ts +0 -6
  367. package/dist/src/tools/todo-store.test.js +0 -169
  368. package/dist/src/tools/todo-store.test.js.map +0 -1
  369. package/dist/src/tools/todo-write.test.d.ts +0 -6
  370. package/dist/src/tools/todo-write.test.js +0 -226
  371. package/dist/src/tools/todo-write.test.js.map +0 -1
  372. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  373. package/dist/src/tools/tool-registry.test.js +0 -468
  374. package/dist/src/tools/tool-registry.test.js.map +0 -1
  375. package/dist/src/tools/tools.test.d.ts +0 -6
  376. package/dist/src/tools/tools.test.js +0 -117
  377. package/dist/src/tools/tools.test.js.map +0 -1
  378. package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
  379. package/dist/src/tools/web-fetch.integration.test.js +0 -532
  380. package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
  381. package/dist/src/tools/web-search.test.d.ts +0 -6
  382. package/dist/src/tools/web-search.test.js +0 -230
  383. package/dist/src/tools/web-search.test.js.map +0 -1
  384. package/dist/src/tools/write-file.test.d.ts +0 -6
  385. package/dist/src/tools/write-file.test.js +0 -465
  386. package/dist/src/tools/write-file.test.js.map +0 -1
  387. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  388. package/dist/src/utils/bfsFileSearch.test.js +0 -191
  389. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  390. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  391. package/dist/src/utils/editCorrector.test.js +0 -564
  392. package/dist/src/utils/editCorrector.test.js.map +0 -1
  393. package/dist/src/utils/editor.test.d.ts +0 -6
  394. package/dist/src/utils/editor.test.js +0 -445
  395. package/dist/src/utils/editor.test.js.map +0 -1
  396. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  397. package/dist/src/utils/environmentContext.test.js +0 -139
  398. package/dist/src/utils/environmentContext.test.js.map +0 -1
  399. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  400. package/dist/src/utils/errorReporting.test.js +0 -130
  401. package/dist/src/utils/errorReporting.test.js.map +0 -1
  402. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  403. package/dist/src/utils/fileUtils.test.js +0 -363
  404. package/dist/src/utils/fileUtils.test.js.map +0 -1
  405. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  406. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  407. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  408. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  409. package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
  410. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  411. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  412. package/dist/src/utils/filesearch/ignore.test.js +0 -57
  413. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  414. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  415. package/dist/src/utils/filesearch/result-cache.test.js +0 -47
  416. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  417. package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
  418. package/dist/src/utils/flashFallback.integration.test.js +0 -120
  419. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  420. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  421. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
  422. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  423. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  424. package/dist/src/utils/getFolderStructure.test.js +0 -282
  425. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  426. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  427. package/dist/src/utils/gitIgnoreParser.test.js +0 -154
  428. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  429. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  430. package/dist/src/utils/memoryDiscovery.test.js +0 -181
  431. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  432. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  433. package/dist/src/utils/memoryImportProcessor.test.js +0 -715
  434. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  435. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  436. package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
  437. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  438. package/dist/src/utils/partUtils.test.d.ts +0 -6
  439. package/dist/src/utils/partUtils.test.js +0 -130
  440. package/dist/src/utils/partUtils.test.js.map +0 -1
  441. package/dist/src/utils/paths.test.d.ts +0 -6
  442. package/dist/src/utils/paths.test.js +0 -153
  443. package/dist/src/utils/paths.test.js.map +0 -1
  444. package/dist/src/utils/retry.test.d.ts +0 -6
  445. package/dist/src/utils/retry.test.js +0 -322
  446. package/dist/src/utils/retry.test.js.map +0 -1
  447. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  448. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  449. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  450. package/dist/src/utils/sanitization.test.d.ts +0 -6
  451. package/dist/src/utils/sanitization.test.js +0 -81
  452. package/dist/src/utils/sanitization.test.js.map +0 -1
  453. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  454. package/dist/src/utils/schemaValidator.test.js +0 -146
  455. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  456. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  457. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  458. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  459. package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
  460. package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
  461. package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
  462. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  463. package/dist/src/utils/shell-utils.test.js +0 -200
  464. package/dist/src/utils/shell-utils.test.js.map +0 -1
  465. package/dist/src/utils/summarizer.test.d.ts +0 -6
  466. package/dist/src/utils/summarizer.test.js +0 -131
  467. package/dist/src/utils/summarizer.test.js.map +0 -1
  468. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  469. package/dist/src/utils/systemEncoding.test.js +0 -368
  470. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  471. package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
  472. package/dist/src/utils/toolOutputLimiter.test.js +0 -164
  473. package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
  474. package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
  475. package/dist/src/utils/unicodeUtils.test.js +0 -120
  476. package/dist/src/utils/unicodeUtils.test.js.map +0 -1
  477. package/dist/src/utils/user_account.test.d.ts +0 -6
  478. package/dist/src/utils/user_account.test.js +0 -153
  479. package/dist/src/utils/user_account.test.js.map +0 -1
  480. package/dist/src/utils/user_id.test.d.ts +0 -6
  481. package/dist/src/utils/user_id.test.js +0 -21
  482. package/dist/src/utils/user_id.test.js.map +0 -1
  483. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  484. package/dist/src/utils/workspaceContext.test.js +0 -209
  485. package/dist/src/utils/workspaceContext.test.js.map +0 -1
@@ -1,350 +0,0 @@
1
- import { expect, test, vi, beforeEach, describe } from 'vitest';
2
- import { OpenAIProvider } from './OpenAIProvider.js';
3
- import { ContentGeneratorRole } from '../ContentGeneratorRole.js';
4
- // Mock fetch
5
- global.fetch = vi.fn();
6
- // Setup environment - read API key from file
7
- import { readFileSync } from 'fs';
8
- import { homedir } from 'os';
9
- import { join } from 'path';
10
- // Read API key from ~/.openai_key if not in environment
11
- if (!process.env.OPENAI_API_KEY) {
12
- try {
13
- const keyPath = join(homedir(), '.openai_key');
14
- process.env.OPENAI_API_KEY = readFileSync(keyPath, 'utf-8').trim();
15
- }
16
- catch (_error) {
17
- // If file doesn't exist, tests will use mock
18
- process.env.OPENAI_API_KEY = 'test-key-for-mocked-tests';
19
- }
20
- }
21
- describe('OpenAIProvider - Responses API Tool Calls', () => {
22
- let provider;
23
- let mockTool;
24
- beforeEach(() => {
25
- console.log('=== Test Setup ===');
26
- // Clear mocks
27
- vi.clearAllMocks();
28
- // Create a mock tool that simulates read operation
29
- mockTool = {
30
- type: 'function',
31
- function: {
32
- name: 'read_file',
33
- description: 'Read contents of a file',
34
- parameters: {
35
- type: 'object',
36
- properties: {
37
- path: { type: 'string' },
38
- },
39
- required: ['path'],
40
- },
41
- },
42
- };
43
- // Create provider
44
- provider = new OpenAIProvider(process.env.OPENAI_API_KEY);
45
- provider.setModel('gpt-4o');
46
- });
47
- test('should properly format tool responses in subsequent requests', async () => {
48
- console.log('\n=== Testing Tool Response Formatting ===');
49
- console.log('Test starting with model:', provider.getCurrentModel?.());
50
- // Create messages array with a tool call and response
51
- const messages = [
52
- {
53
- role: ContentGeneratorRole.USER,
54
- content: 'Read the file /test.txt',
55
- },
56
- {
57
- role: ContentGeneratorRole.ASSISTANT,
58
- content: '',
59
- tool_calls: [
60
- {
61
- id: 'call_123',
62
- type: 'function',
63
- function: {
64
- name: 'read_file',
65
- arguments: JSON.stringify({ path: '/test.txt' }),
66
- },
67
- },
68
- ],
69
- },
70
- {
71
- role: ContentGeneratorRole.TOOL,
72
- tool_call_id: 'call_123',
73
- content: 'File contents: Hello World',
74
- },
75
- {
76
- role: ContentGeneratorRole.USER,
77
- content: 'What did the file contain?',
78
- },
79
- ];
80
- // Mock response for continuation
81
- const mockResponse = {
82
- id: 'chatcmpl-456',
83
- object: 'chat.completion',
84
- created: Date.now(),
85
- model: 'gpt-4o',
86
- choices: [
87
- {
88
- index: 0,
89
- message: {
90
- role: ContentGeneratorRole.ASSISTANT,
91
- content: 'The file contains: Hello World',
92
- },
93
- finish_reason: 'stop',
94
- },
95
- ],
96
- };
97
- let capturedRequest = null;
98
- fetch.mockImplementation(async (url, options) => {
99
- console.log('Fetch called with URL:', url);
100
- console.log('Fetch options:', options);
101
- console.log('Request body (raw):', options?.body);
102
- try {
103
- // Handle body as Blob (for UTF-8 encoding support)
104
- let bodyText;
105
- if (options?.body instanceof Blob) {
106
- bodyText = await options.body.text();
107
- }
108
- else {
109
- bodyText = options?.body;
110
- }
111
- capturedRequest = {
112
- url: url,
113
- body: JSON.parse(bodyText),
114
- };
115
- }
116
- catch (e) {
117
- console.error('Failed to parse request body:', e);
118
- capturedRequest = {
119
- url: url,
120
- body: { raw: options?.body },
121
- };
122
- }
123
- return {
124
- ok: true,
125
- status: 200,
126
- json: async () => mockResponse,
127
- text: async () => JSON.stringify(mockResponse),
128
- };
129
- });
130
- // Send request with messages containing tool responses
131
- console.log('Starting generateChatCompletion...');
132
- const stream = provider.generateChatCompletion(messages, [mockTool]);
133
- // Consume the stream to trigger the request
134
- const chunks = [];
135
- try {
136
- for await (const chunk of stream) {
137
- console.log('Received chunk:', chunk);
138
- chunks.push(chunk);
139
- }
140
- }
141
- catch (error) {
142
- console.error('Error consuming stream:', error);
143
- throw error;
144
- }
145
- // Now check the captured request
146
- if (!capturedRequest) {
147
- console.error('No request was captured!');
148
- console.error('Fetch mock calls:', fetch.mock.calls.length);
149
- throw new Error('No request was made to the API');
150
- }
151
- console.log('Full request to OpenAI:', JSON.stringify(capturedRequest, null, 2));
152
- // TypeScript needs explicit assertion even after null check
153
- const request = capturedRequest;
154
- // Check if it's using the responses API endpoint
155
- expect(request.url).toContain('/responses');
156
- // Check if body exists - Responses API uses 'input' field, not 'messages'
157
- if (!request.body || !request.body.input) {
158
- console.error('Request body or input missing:', request.body);
159
- throw new Error('Request body is malformed');
160
- }
161
- // Verify tool response is included in the request as function_call_output
162
- const toolMessage = request.body.input.find((item) => item.type === 'function_call_output' && item.call_id === 'call_123');
163
- if (!toolMessage) {
164
- console.error('ERROR: No tool output found in request!');
165
- console.error('Input items in request:', JSON.stringify(request.body.input, null, 2));
166
- throw new Error('No tool output found for function call');
167
- }
168
- console.log('Tool message found:', JSON.stringify(toolMessage, null, 2));
169
- expect(toolMessage).toBeDefined();
170
- expect(toolMessage.output).toBe('File contents: Hello World');
171
- });
172
- test('should handle edge case where tool response might be missing', async () => {
173
- console.log('\n=== Testing Edge Case: Missing Tool Response ===');
174
- // Create messages with tool call but NO tool response
175
- const messages = [
176
- {
177
- role: ContentGeneratorRole.USER,
178
- content: 'What files are in the current directory?',
179
- },
180
- {
181
- role: ContentGeneratorRole.ASSISTANT,
182
- content: '',
183
- tool_calls: [
184
- {
185
- id: 'call_missing',
186
- type: 'function',
187
- function: {
188
- name: 'list_files',
189
- arguments: JSON.stringify({ directory: '.' }),
190
- },
191
- },
192
- ],
193
- },
194
- // NOTE: No tool response message here!
195
- {
196
- role: ContentGeneratorRole.USER,
197
- content: 'Please tell me what files you found',
198
- },
199
- ];
200
- let capturedRequest = null;
201
- fetch.mockImplementation(async (url, options) => {
202
- // Handle body as Blob (for UTF-8 encoding support)
203
- let bodyText;
204
- if (options?.body instanceof Blob) {
205
- bodyText = await options.body.text();
206
- }
207
- else {
208
- bodyText = options?.body;
209
- }
210
- capturedRequest = {
211
- url: url,
212
- body: JSON.parse(bodyText),
213
- };
214
- return {
215
- ok: true,
216
- status: 200,
217
- json: async () => ({
218
- id: 'chatcmpl-edge',
219
- object: 'chat.completion',
220
- created: Date.now(),
221
- model: 'gpt-4o',
222
- choices: [
223
- {
224
- index: 0,
225
- message: {
226
- role: ContentGeneratorRole.ASSISTANT,
227
- content: 'I need to run the tool first to see the files.',
228
- },
229
- finish_reason: 'stop',
230
- },
231
- ],
232
- }),
233
- };
234
- });
235
- // Generate completion
236
- const stream = provider.generateChatCompletion(messages, [mockTool]);
237
- // Consume stream
238
- for await (const _chunk of stream) {
239
- // Just consume it
240
- }
241
- // Verify the request was made
242
- expect(capturedRequest).toBeTruthy();
243
- // Check that there are NO function_call_output items since we didn't provide tool responses
244
- const functionCallOutputs = capturedRequest.body.input?.filter((item) => item.type === 'function_call_output') || [];
245
- console.log('Function call outputs in edge case:', functionCallOutputs.length);
246
- expect(functionCallOutputs.length).toBe(0);
247
- });
248
- test('should include function_call_output in responses API format', async () => {
249
- console.log('\n=== Testing function_call_output Format ===');
250
- // Create messages with tool call and response
251
- const messages = [
252
- {
253
- role: ContentGeneratorRole.USER,
254
- content: 'What files are in the current directory?',
255
- },
256
- {
257
- role: ContentGeneratorRole.ASSISTANT,
258
- content: '',
259
- tool_calls: [
260
- {
261
- id: 'call_abc',
262
- type: 'function',
263
- function: {
264
- name: 'list_files',
265
- arguments: JSON.stringify({ directory: '.' }),
266
- },
267
- },
268
- ],
269
- },
270
- {
271
- role: ContentGeneratorRole.TOOL,
272
- tool_call_id: 'call_abc',
273
- content: 'Files: file1.txt, file2.js, README.md',
274
- },
275
- ];
276
- // Mock tool
277
- const listTool = {
278
- type: 'function',
279
- function: {
280
- name: 'list_files',
281
- description: 'List files in a directory',
282
- parameters: {
283
- type: 'object',
284
- properties: {
285
- directory: { type: 'string' },
286
- },
287
- required: ['directory'],
288
- },
289
- },
290
- };
291
- let capturedRequest = null;
292
- fetch.mockImplementation(async (url, options) => {
293
- // Handle body as Blob (for UTF-8 encoding support)
294
- let bodyText;
295
- if (options?.body instanceof Blob) {
296
- bodyText = await options.body.text();
297
- }
298
- else {
299
- bodyText = options?.body;
300
- }
301
- capturedRequest = {
302
- url: url,
303
- body: JSON.parse(bodyText),
304
- };
305
- return {
306
- ok: true,
307
- status: 200,
308
- json: async () => ({
309
- id: 'chatcmpl-789',
310
- object: 'chat.completion',
311
- created: Date.now(),
312
- model: 'gpt-4o',
313
- choices: [
314
- {
315
- index: 0,
316
- message: {
317
- role: ContentGeneratorRole.ASSISTANT,
318
- content: 'The directory contains: file1.txt, file2.js, and README.md',
319
- },
320
- finish_reason: 'stop',
321
- },
322
- ],
323
- }),
324
- };
325
- });
326
- // Generate completion
327
- const stream = provider.generateChatCompletion(messages, [listTool]);
328
- // Consume stream
329
- for await (const _chunk of stream) {
330
- // Just consume it
331
- }
332
- // Verify the request format
333
- expect(capturedRequest).toBeTruthy();
334
- console.log('Request body structure:', JSON.stringify(capturedRequest.body, null, 2));
335
- // Check for function_call_output items in the input array
336
- const functionCallOutputs = capturedRequest.body.input?.filter((item) => item.type === 'function_call_output') || [];
337
- console.log('Function call outputs found:', functionCallOutputs.length);
338
- console.log('Function call outputs:', JSON.stringify(functionCallOutputs, null, 2));
339
- // The key test: verify tool responses are properly formatted as function_call_output
340
- const toolOutput = capturedRequest.body.input?.find((item) => item.type === 'function_call_output' && item.call_id === 'call_abc');
341
- if (!toolOutput) {
342
- console.error('Tool output not found in request!');
343
- console.error('Full input array:', JSON.stringify(capturedRequest.body.input, null, 2));
344
- throw new Error('Tool output missing from request');
345
- }
346
- console.log('Tool output in request:', toolOutput);
347
- expect(toolOutput.output).toBe('Files: file1.txt, file2.js, README.md');
348
- });
349
- });
350
- //# sourceMappingURL=OpenAIProvider.responses.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenAIProvider.responses.test.js","sourceRoot":"","sources":["../../../../src/providers/openai/OpenAIProvider.responses.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,aAAa;AACb,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAEvB,6CAA6C;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,wDAAwD;AACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,6CAA6C;QAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,2BAA2B,CAAC;IAC3D,CAAC;AACH,CAAC;AAuCD,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,IAAI,QAAwB,CAAC;IAC7B,IAAI,QAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,cAAc;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,mDAAmD;QACnD,QAAQ,GAAG;YACT,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,yBAAyB;gBACtC,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACzB;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;aACF;SACF,CAAC;QAEF,kBAAkB;QAClB,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,cAAe,CAAC,CAAC;QAC3D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC9E,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAEvE,sDAAsD;QACtD,MAAM,QAAQ,GAAe;YAC3B;gBACE,IAAI,EAAE,oBAAoB,CAAC,IAAI;gBAC/B,OAAO,EAAE,yBAAyB;aACnC;YACD;gBACE,IAAI,EAAE,oBAAoB,CAAC,SAAS;gBACpC,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE;oBACV;wBACE,EAAE,EAAE,UAAU;wBACd,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE;4BACR,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;yBACjD;qBACF;iBACF;aACF;YACD;gBACE,IAAI,EAAE,oBAAoB,CAAC,IAAI;gBAC/B,YAAY,EAAE,UAAU;gBACxB,OAAO,EAAE,4BAA4B;aACtC;YACD;gBACE,IAAI,EAAE,oBAAoB,CAAC,IAAI;gBAC/B,OAAO,EAAE,4BAA4B;aACtC;SACF,CAAC;QAEF,iCAAiC;QACjC,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,cAAc;YAClB,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACnB,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE;wBACP,IAAI,EAAE,oBAAoB,CAAC,SAAS;wBACpC,OAAO,EAAE,gCAAgC;qBAC1C;oBACD,aAAa,EAAE,MAAM;iBACtB;aACF;SACF,CAAC;QAEF,IAAI,eAAe,GAA2B,IAAI,CAAC;QAElD,KAAuC,CAAC,kBAAkB,CACzD,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC;gBACH,mDAAmD;gBACnD,IAAI,QAAgB,CAAC;gBACrB,IAAI,OAAO,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC;oBAClC,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,OAAO,EAAE,IAAc,CAAC;gBACrC,CAAC;gBAED,eAAe,GAAG;oBAChB,GAAG,EAAE,GAAa;oBAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA4B;iBACtD,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;gBAClD,eAAe,GAAG;oBAChB,GAAG,EAAE,GAAa;oBAClB,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;iBAC7B,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY;gBAC9B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;aACnC,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,uDAAuD;QACvD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAErE,4CAA4C;QAC5C,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,OAAO,CAAC,KAAK,CACX,mBAAmB,EAClB,KAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAC3D,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,CAAC,GAAG,CACT,yBAAyB,EACzB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CACzC,CAAC;QAEF,4DAA4D;QAC5D,MAAM,OAAO,GAAG,eAAkC,CAAC;QAEnD,iDAAiD;QACjD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE5C,0EAA0E;QAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,0EAA0E;QAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACzC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,CACtE,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACzD,OAAO,CAAC,KAAK,CACX,yBAAyB,EACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAC5C,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC9E,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAElE,sDAAsD;QACtD,MAAM,QAAQ,GAAe;YAC3B;gBACE,IAAI,EAAE,oBAAoB,CAAC,IAAI;gBAC/B,OAAO,EAAE,0CAA0C;aACpD;YACD;gBACE,IAAI,EAAE,oBAAoB,CAAC,SAAS;gBACpC,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE;oBACV;wBACE,EAAE,EAAE,cAAc;wBAClB,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE;4BACR,IAAI,EAAE,YAAY;4BAClB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;yBAC9C;qBACF;iBACF;aACF;YACD,uCAAuC;YACvC;gBACE,IAAI,EAAE,oBAAoB,CAAC,IAAI;gBAC/B,OAAO,EAAE,qCAAqC;aAC/C;SACF,CAAC;QAEF,IAAI,eAAe,GAA2B,IAAI,CAAC;QAElD,KAAuC,CAAC,kBAAkB,CACzD,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACrB,mDAAmD;YACnD,IAAI,QAAgB,CAAC;YACrB,IAAI,OAAO,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC;gBAClC,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,OAAO,EAAE,IAAc,CAAC;YACrC,CAAC;YAED,eAAe,GAAG;gBAChB,GAAG,EAAE,GAAa;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA4B;aACtD,CAAC;YAEF,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,EAAE,EAAE,eAAe;oBACnB,MAAM,EAAE,iBAAiB;oBACzB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;oBACnB,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE;wBACP;4BACE,KAAK,EAAE,CAAC;4BACR,OAAO,EAAE;gCACP,IAAI,EAAE,oBAAoB,CAAC,SAAS;gCACpC,OAAO,EAAE,gDAAgD;6BAC1D;4BACD,aAAa,EAAE,MAAM;yBACtB;qBACF;iBACF,CAAC;aACS,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,sBAAsB;QACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAErE,iBAAiB;QACjB,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAClC,kBAAkB;QACpB,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAC;QAErC,4FAA4F;QAC5F,MAAM,mBAAmB,GACvB,eAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CACjC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAC/C,IAAI,EAAE,CAAC;QAEV,OAAO,CAAC,GAAG,CACT,qCAAqC,EACrC,mBAAmB,CAAC,MAAM,CAC3B,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC7E,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAE7D,8CAA8C;QAC9C,MAAM,QAAQ,GAAe;YAC3B;gBACE,IAAI,EAAE,oBAAoB,CAAC,IAAI;gBAC/B,OAAO,EAAE,0CAA0C;aACpD;YACD;gBACE,IAAI,EAAE,oBAAoB,CAAC,SAAS;gBACpC,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE;oBACV;wBACE,EAAE,EAAE,UAAU;wBACd,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE;4BACR,IAAI,EAAE,YAAY;4BAClB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;yBAC9C;qBACF;iBACF;aACF;YACD;gBACE,IAAI,EAAE,oBAAoB,CAAC,IAAI;gBAC/B,YAAY,EAAE,UAAU;gBACxB,OAAO,EAAE,uCAAuC;aACjD;SACF,CAAC;QAEF,YAAY;QACZ,MAAM,QAAQ,GAAU;YACtB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,2BAA2B;gBACxC,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC9B;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF;SACF,CAAC;QAEF,IAAI,eAAe,GAA2B,IAAI,CAAC;QAElD,KAAuC,CAAC,kBAAkB,CACzD,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACrB,mDAAmD;YACnD,IAAI,QAAgB,CAAC;YACrB,IAAI,OAAO,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC;gBAClC,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,OAAO,EAAE,IAAc,CAAC;YACrC,CAAC;YAED,eAAe,GAAG;gBAChB,GAAG,EAAE,GAAa;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA4B;aACtD,CAAC;YAEF,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,EAAE,EAAE,cAAc;oBAClB,MAAM,EAAE,iBAAiB;oBACzB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;oBACnB,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE;wBACP;4BACE,KAAK,EAAE,CAAC;4BACR,OAAO,EAAE;gCACP,IAAI,EAAE,oBAAoB,CAAC,SAAS;gCACpC,OAAO,EACL,4DAA4D;6BAC/D;4BACD,aAAa,EAAE,MAAM;yBACtB;qBACF;iBACF,CAAC;aACS,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,sBAAsB;QACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAErE,iBAAiB;QACjB,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAClC,kBAAkB;QACpB,CAAC;QAED,4BAA4B;QAC5B,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CACT,yBAAyB,EACzB,IAAI,CAAC,SAAS,CAAC,eAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAC/C,CAAC;QAEF,0DAA0D;QAC1D,MAAM,mBAAmB,GACvB,eAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CACjC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAC/C,IAAI,EAAE,CAAC;QAEV,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CACT,wBAAwB,EACxB,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7C,CAAC;QAEF,qFAAqF;QACrF,MAAM,UAAU,GAAG,eAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAClD,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,CACtE,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CACX,mBAAmB,EACnB,IAAI,CAAC,SAAS,CAAC,eAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CACrD,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,213 +0,0 @@
1
- import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
2
- import { OpenAIProvider } from './OpenAIProvider.js';
3
- import { ContentGeneratorRole } from '../ContentGeneratorRole.js';
4
- // Mock fetch globally
5
- global.fetch = vi.fn();
6
- describe.skip('OpenAIProvider Responses Integration', () => {
7
- // SKIPPING: Integration tests that depend on responses API implementation which is not complete
8
- let provider;
9
- beforeEach(() => {
10
- vi.clearAllMocks();
11
- provider = new OpenAIProvider('test-api-key');
12
- // Set a model that uses responses API
13
- provider.setModel('gpt-4o-realtime');
14
- });
15
- afterEach(() => {
16
- vi.restoreAllMocks();
17
- });
18
- function createSSEResponse(chunks) {
19
- const encoder = new TextEncoder();
20
- const stream = new ReadableStream({
21
- start(controller) {
22
- chunks.forEach((chunk) => {
23
- controller.enqueue(encoder.encode(chunk));
24
- });
25
- controller.close();
26
- },
27
- });
28
- return new Response(stream, {
29
- status: 200,
30
- headers: { 'content-type': 'text/event-stream' },
31
- });
32
- }
33
- it('should make a successful streaming request', async () => {
34
- const chunks = [
35
- 'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"}}]}\n\n',
36
- 'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" world"}}]}\n\n',
37
- 'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":10,"completion_tokens":2,"total_tokens":12}}\n\n',
38
- 'data: [DONE]\n\n',
39
- ];
40
- vi.mocked(global.fetch).mockResolvedValueOnce(createSSEResponse(chunks));
41
- const messages = [
42
- { role: ContentGeneratorRole.USER, content: 'Say hello' },
43
- ];
44
- const result = await provider.generateChatCompletion(messages);
45
- const collectedMessages = [];
46
- for await (const message of result) {
47
- collectedMessages.push(message);
48
- }
49
- // Verify the API call
50
- expect(global.fetch).toHaveBeenCalledWith('https://api.openai.com/v1/responses', expect.objectContaining({
51
- method: 'POST',
52
- headers: {
53
- Authorization: 'Bearer test-api-key',
54
- 'Content-Type': 'application/json',
55
- },
56
- body: expect.stringContaining('"model":"gpt-4o-realtime"'),
57
- }));
58
- // Verify the collected messages
59
- expect(collectedMessages.length).toBeGreaterThanOrEqual(2);
60
- expect(collectedMessages.some((m) => m.content === 'Hello')).toBe(true);
61
- expect(collectedMessages.some((m) => m.content === ' world')).toBe(true);
62
- });
63
- it('should cache and reuse conversations', async () => {
64
- const chunks = [
65
- 'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Cached response"}}]}\n\n',
66
- 'data: [DONE]\n\n',
67
- ];
68
- vi.mocked(global.fetch).mockResolvedValueOnce(createSSEResponse(chunks));
69
- const messages = [
70
- { role: ContentGeneratorRole.USER, content: 'Test caching' },
71
- ];
72
- const options = {
73
- conversationId: 'test-conv',
74
- parentId: 'test-parent',
75
- };
76
- // Access private method for testing
77
- const callResponsesEndpoint = provider.callResponsesEndpoint.bind(provider);
78
- // First call - should hit the API
79
- const result1 = await callResponsesEndpoint(messages, undefined, options);
80
- const collected1 = [];
81
- for await (const message of result1) {
82
- collected1.push(message);
83
- }
84
- expect(global.fetch).toHaveBeenCalledTimes(1);
85
- // Second call with same IDs - should use cache
86
- const result2 = await callResponsesEndpoint(messages, undefined, options);
87
- const collected2 = [];
88
- for await (const message of result2) {
89
- collected2.push(message);
90
- }
91
- // Should not have made another API call
92
- expect(global.fetch).toHaveBeenCalledTimes(1);
93
- // Should get the same messages
94
- expect(collected2).toHaveLength(collected1.length);
95
- expect(collected2[0].content).toBe('Cached response');
96
- });
97
- it('should handle tool calls correctly', async () => {
98
- const chunks = [
99
- 'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"id":"call_123","type":"function","function":{"name":"search","arguments":"{\\"q"}}]}}]}\n\n',
100
- 'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"uery\\": \\"weather\\"}"}}]}}]}\n\n',
101
- 'data: {"id":"resp-123","model":"gpt-4o","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}\n\n',
102
- 'data: [DONE]\n\n',
103
- ];
104
- vi.mocked(global.fetch).mockResolvedValueOnce(createSSEResponse(chunks));
105
- const messages = [
106
- { role: ContentGeneratorRole.USER, content: 'What is the weather?' },
107
- ];
108
- const tools = [
109
- {
110
- type: 'function',
111
- function: {
112
- name: 'search',
113
- description: 'Search for information',
114
- parameters: {
115
- type: 'object',
116
- properties: {
117
- query: { type: 'string' },
118
- },
119
- required: ['query'],
120
- },
121
- },
122
- },
123
- ];
124
- const result = await provider.generateChatCompletion(messages, tools);
125
- const collectedMessages = [];
126
- for await (const message of result) {
127
- collectedMessages.push(message);
128
- }
129
- // Find the message with tool calls
130
- const toolCallMessage = collectedMessages.find((m) => m.tool_calls);
131
- expect(toolCallMessage).toBeDefined();
132
- expect(toolCallMessage?.tool_calls).toHaveLength(1);
133
- expect(toolCallMessage?.tool_calls?.[0]).toEqual({
134
- id: 'call_123',
135
- type: 'function',
136
- function: {
137
- name: 'search',
138
- arguments: '{"query": "weather"}',
139
- },
140
- });
141
- });
142
- it('should handle API errors correctly', async () => {
143
- vi.mocked(global.fetch).mockResolvedValueOnce(new Response('{"error":{"message":"Rate limit exceeded"}}', {
144
- status: 429,
145
- headers: { 'content-type': 'application/json' },
146
- }));
147
- const messages = [
148
- { role: ContentGeneratorRole.USER, content: 'Test error' },
149
- ];
150
- const generator = provider.generateChatCompletion(messages);
151
- await expect(async () => {
152
- for await (const _message of generator) {
153
- // Should throw before yielding any messages
154
- }
155
- }).rejects.toThrow('Rate limit exceeded');
156
- });
157
- it('should handle non-streaming responses', async () => {
158
- const responseData = {
159
- id: 'resp-123',
160
- model: 'gpt-4o',
161
- object: 'chat.completion',
162
- choices: [
163
- {
164
- message: {
165
- role: ContentGeneratorRole.ASSISTANT,
166
- content: 'Non-streaming response',
167
- },
168
- finish_reason: 'stop',
169
- },
170
- ],
171
- usage: {
172
- prompt_tokens: 10,
173
- completion_tokens: 5,
174
- total_tokens: 15,
175
- },
176
- };
177
- vi.mocked(global.fetch).mockResolvedValueOnce(new Response(JSON.stringify(responseData), {
178
- status: 200,
179
- headers: { 'content-type': 'application/json' },
180
- }));
181
- const messages = [
182
- { role: ContentGeneratorRole.USER, content: 'Test non-streaming' },
183
- ];
184
- // Access private method for testing
185
- const callResponsesEndpoint = provider.callResponsesEndpoint.bind(provider);
186
- const result = await callResponsesEndpoint(messages, undefined, {
187
- stream: false,
188
- });
189
- const collectedMessages = [];
190
- for await (const message of result) {
191
- collectedMessages.push(message);
192
- }
193
- expect(collectedMessages).toHaveLength(1);
194
- expect(collectedMessages[0]).toEqual({
195
- role: ContentGeneratorRole.ASSISTANT,
196
- content: 'Non-streaming response',
197
- usage: {
198
- prompt_tokens: 10,
199
- completion_tokens: 5,
200
- total_tokens: 15,
201
- },
202
- });
203
- });
204
- it('should throw error for stateful mode', async () => {
205
- const messages = [
206
- { role: ContentGeneratorRole.USER, content: 'Test stateful' },
207
- ];
208
- // Access private method for testing
209
- const callResponsesEndpoint = provider.callResponsesEndpoint.bind(provider);
210
- await expect(callResponsesEndpoint(messages, undefined, { stateful: true })).rejects.toThrow('Stateful mode not yet implemented for Responses API');
211
- });
212
- });
213
- //# sourceMappingURL=OpenAIProvider.responsesIntegration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenAIProvider.responsesIntegration.test.js","sourceRoot":"","sources":["../../../../src/providers/openai/OpenAIProvider.responsesIntegration.test.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import { OpenAIProvider } from './OpenAIProvider.js';
3
- import { TEST_PROVIDER_CONFIG } from '../test-utils/providerTestConfig.js';
4
- describe('OpenAIProvider.shouldUseResponses', () => {
5
- let provider;
6
- const originalEnv = process.env;
7
- beforeEach(() => {
8
- // Reset environment
9
- process.env = { ...originalEnv };
10
- provider = new OpenAIProvider('test-key', undefined, TEST_PROVIDER_CONFIG);
11
- });
12
- afterEach(() => {
13
- process.env = originalEnv;
14
- });
15
- it('should return true for gpt-4o model', () => {
16
- provider.setModel('gpt-4o');
17
- expect(provider.shouldUseResponses('gpt-4o')).toBe(true);
18
- });
19
- it('should return true for gpt-4o-mini model', () => {
20
- provider.setModel('gpt-4o-mini');
21
- expect(provider.shouldUseResponses('gpt-4o-mini')).toBe(true);
22
- });
23
- it('should return true for gpt-4o-realtime model', () => {
24
- provider.setModel('gpt-4o-realtime');
25
- expect(provider.shouldUseResponses('gpt-4o-realtime')).toBe(true);
26
- });
27
- it('should return true for gpt-4-turbo model', () => {
28
- provider.setModel('gpt-4-turbo');
29
- expect(provider.shouldUseResponses('gpt-4-turbo')).toBe(true);
30
- });
31
- it('should return true for gpt-4-turbo-preview model', () => {
32
- provider.setModel('gpt-4-turbo-preview');
33
- expect(provider.shouldUseResponses('gpt-4-turbo-preview')).toBe(true);
34
- });
35
- it('should return false for legacy gpt-3.5-turbo model', () => {
36
- provider.setModel('gpt-3.5-turbo');
37
- expect(provider.shouldUseResponses('gpt-3.5-turbo')).toBe(false);
38
- });
39
- it('should return false for unknown model', () => {
40
- provider.setModel('custom-model');
41
- expect(provider.shouldUseResponses('custom-model')).toBe(false);
42
- });
43
- it('should return false when OPENAI_RESPONSES_DISABLE is set to true', () => {
44
- process.env.OPENAI_RESPONSES_DISABLE = 'true';
45
- provider.setModel('gpt-4o');
46
- expect(provider.shouldUseResponses('gpt-4o')).toBe(false);
47
- });
48
- it('should return true when OPENAI_RESPONSES_DISABLE is not true', () => {
49
- process.env.OPENAI_RESPONSES_DISABLE = 'false';
50
- provider.setModel('gpt-4o');
51
- expect(provider.shouldUseResponses('gpt-4o')).toBe(true);
52
- });
53
- it('should return true when OPENAI_RESPONSES_DISABLE is not set', () => {
54
- delete process.env.OPENAI_RESPONSES_DISABLE;
55
- provider.setModel('gpt-4o');
56
- expect(provider.shouldUseResponses('gpt-4o')).toBe(true);
57
- });
58
- });
59
- //# sourceMappingURL=OpenAIProvider.shouldUseResponses.test.js.map