@vybestack/llxprt-code-core 0.1.12 → 0.1.13-hotfix1

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 (327) hide show
  1. package/dist/src/adapters/IStreamAdapter.d.ts +18 -0
  2. package/dist/src/adapters/IStreamAdapter.js +7 -0
  3. package/dist/src/adapters/IStreamAdapter.js.map +1 -0
  4. package/dist/src/code_assist/oauth2.d.ts +1 -1
  5. package/dist/src/code_assist/oauth2.js +51 -29
  6. package/dist/src/code_assist/oauth2.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.test.js +36 -7
  8. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  9. package/dist/src/code_assist/server.test.js +10 -2
  10. package/dist/src/code_assist/server.test.js.map +1 -1
  11. package/dist/src/config/config.d.ts +28 -5
  12. package/dist/src/config/config.js +29 -4
  13. package/dist/src/config/config.js.map +1 -1
  14. package/dist/src/config/config.test.js +2 -3
  15. package/dist/src/config/config.test.js.map +1 -1
  16. package/dist/src/core/client.d.ts +4 -2
  17. package/dist/src/core/client.js +68 -7
  18. package/dist/src/core/client.js.map +1 -1
  19. package/dist/src/core/client.test.js +8 -0
  20. package/dist/src/core/client.test.js.map +1 -1
  21. package/dist/src/core/contentGenerator.d.ts +3 -2
  22. package/dist/src/core/contentGenerator.js +6 -8
  23. package/dist/src/core/contentGenerator.js.map +1 -1
  24. package/dist/src/core/contentGenerator.test.js +12 -5
  25. package/dist/src/core/contentGenerator.test.js.map +1 -1
  26. package/dist/src/core/coreToolScheduler.test.js +4 -2
  27. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  28. package/dist/src/core/geminiChat.js +50 -3
  29. package/dist/src/core/geminiChat.js.map +1 -1
  30. package/dist/src/core/modelCheck.d.ts +1 -1
  31. package/dist/src/core/modelCheck.js +10 -3
  32. package/dist/src/core/modelCheck.js.map +1 -1
  33. package/dist/src/core/nonInteractiveToolExecutor.test.js +3 -0
  34. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  35. package/dist/src/core/prompts.d.ts +1 -1
  36. package/dist/src/core/prompts.js +14 -2
  37. package/dist/src/core/prompts.js.map +1 -1
  38. package/dist/src/core/turn.js +6 -0
  39. package/dist/src/core/turn.js.map +1 -1
  40. package/dist/src/index.d.ts +29 -1
  41. package/dist/src/index.js +33 -0
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/mcp/oauth-provider.d.ts +142 -0
  44. package/dist/src/mcp/oauth-provider.js +446 -0
  45. package/dist/src/mcp/oauth-provider.js.map +1 -0
  46. package/dist/src/mcp/oauth-provider.test.js +520 -0
  47. package/dist/src/mcp/oauth-provider.test.js.map +1 -0
  48. package/dist/src/mcp/oauth-token-storage.d.ts +81 -0
  49. package/dist/src/mcp/oauth-token-storage.js +149 -0
  50. package/dist/src/mcp/oauth-token-storage.js.map +1 -0
  51. package/dist/src/mcp/oauth-token-storage.test.d.ts +6 -0
  52. package/dist/src/mcp/oauth-token-storage.test.js +205 -0
  53. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -0
  54. package/dist/src/mcp/oauth-utils.d.ts +109 -0
  55. package/dist/src/mcp/oauth-utils.js +183 -0
  56. package/dist/src/mcp/oauth-utils.js.map +1 -0
  57. package/dist/src/mcp/oauth-utils.test.d.ts +6 -0
  58. package/dist/src/mcp/oauth-utils.test.js +144 -0
  59. package/dist/src/mcp/oauth-utils.test.js.map +1 -0
  60. package/dist/src/parsers/TextToolCallParser.d.ts +35 -0
  61. package/dist/src/parsers/TextToolCallParser.js +248 -0
  62. package/dist/src/parsers/TextToolCallParser.js.map +1 -0
  63. package/dist/src/parsers/TextToolCallParser.test.d.ts +1 -0
  64. package/dist/src/parsers/TextToolCallParser.test.js +225 -0
  65. package/dist/src/parsers/TextToolCallParser.test.js.map +1 -0
  66. package/dist/src/providers/ContentGeneratorRole.d.ts +14 -0
  67. package/dist/src/providers/ContentGeneratorRole.js +16 -0
  68. package/dist/src/providers/ContentGeneratorRole.js.map +1 -0
  69. package/dist/src/providers/IMessage.d.ts +38 -0
  70. package/dist/src/providers/IMessage.js +17 -0
  71. package/dist/src/providers/IMessage.js.map +1 -0
  72. package/dist/src/providers/IModel.d.ts +23 -0
  73. package/dist/src/providers/IModel.js +17 -0
  74. package/dist/src/providers/IModel.js.map +1 -0
  75. package/dist/src/providers/IProvider.d.ts +36 -0
  76. package/dist/src/providers/IProvider.js +17 -0
  77. package/dist/src/providers/IProvider.js.map +1 -0
  78. package/dist/src/providers/IProviderConfig.d.ts +31 -0
  79. package/dist/src/providers/IProviderConfig.js +7 -0
  80. package/dist/src/providers/IProviderConfig.js.map +1 -0
  81. package/dist/src/providers/IProviderManager.d.ts +53 -0
  82. package/dist/src/providers/IProviderManager.js +7 -0
  83. package/dist/src/providers/IProviderManager.js.map +1 -0
  84. package/dist/src/providers/ITool.d.ts +23 -0
  85. package/dist/src/providers/ITool.js +17 -0
  86. package/dist/src/providers/ITool.js.map +1 -0
  87. package/dist/src/providers/ProviderContentGenerator.d.ts +1 -1
  88. package/dist/src/providers/ProviderManager.d.ts +24 -0
  89. package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +6 -0
  90. package/dist/src/providers/ProviderManager.gemini-switch.test.js +57 -0
  91. package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +1 -0
  92. package/dist/src/providers/ProviderManager.js +116 -0
  93. package/dist/src/providers/ProviderManager.js.map +1 -0
  94. package/dist/src/providers/ProviderManager.test.d.ts +6 -0
  95. package/dist/src/providers/ProviderManager.test.js +284 -0
  96. package/dist/src/providers/ProviderManager.test.js.map +1 -0
  97. package/dist/src/providers/adapters/GeminiCompatibleWrapper.d.ts +2 -1
  98. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +15 -2
  99. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +1 -1
  100. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +20 -0
  101. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +1 -1
  102. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +57 -0
  103. package/dist/src/providers/anthropic/AnthropicProvider.js +490 -0
  104. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -0
  105. package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +1 -0
  106. package/dist/src/providers/anthropic/AnthropicProvider.test.js +486 -0
  107. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +1 -0
  108. package/dist/src/providers/errors.d.ts +13 -0
  109. package/dist/src/providers/errors.js +19 -0
  110. package/dist/src/providers/errors.js.map +1 -0
  111. package/dist/src/providers/gemini/GeminiProvider.d.ts +97 -0
  112. package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +6 -0
  113. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +90 -0
  114. package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +1 -0
  115. package/dist/src/providers/gemini/GeminiProvider.js +937 -0
  116. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -0
  117. package/dist/src/providers/gemini/GeminiProvider.test.d.ts +6 -0
  118. package/dist/src/providers/gemini/GeminiProvider.test.js +136 -0
  119. package/dist/src/providers/gemini/GeminiProvider.test.js.map +1 -0
  120. package/dist/src/providers/integration/TEST_INSTRUCTIONS.md +197 -0
  121. package/dist/src/providers/integration/multi-provider.integration.test.d.ts +6 -0
  122. package/dist/src/providers/integration/multi-provider.integration.test.js +292 -0
  123. package/dist/src/providers/integration/multi-provider.integration.test.js.map +1 -0
  124. package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +1 -0
  125. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +97 -0
  126. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +1 -0
  127. package/dist/src/providers/openai/ConversationCache.d.ts +20 -0
  128. package/dist/src/providers/openai/ConversationCache.js +109 -0
  129. package/dist/src/providers/openai/ConversationCache.js.map +1 -0
  130. package/dist/src/providers/openai/ConversationCache.test.d.ts +1 -0
  131. package/dist/src/providers/openai/ConversationCache.test.js +113 -0
  132. package/dist/src/providers/openai/ConversationCache.test.js.map +1 -0
  133. package/dist/src/providers/openai/IChatGenerateParams.d.ts +11 -0
  134. package/dist/src/providers/openai/IChatGenerateParams.js +2 -0
  135. package/dist/src/providers/openai/IChatGenerateParams.js.map +1 -0
  136. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +1 -0
  137. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +189 -0
  138. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +1 -0
  139. package/dist/src/providers/openai/OpenAIProvider.d.ts +80 -0
  140. package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +6 -0
  141. package/dist/src/providers/openai/OpenAIProvider.integration.test.js +125 -0
  142. package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +1 -0
  143. package/dist/src/providers/openai/OpenAIProvider.js +523 -0
  144. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -0
  145. package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +1 -0
  146. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +326 -0
  147. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +1 -0
  148. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +1 -0
  149. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +213 -0
  150. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +1 -0
  151. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +1 -0
  152. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +58 -0
  153. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +1 -0
  154. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +6 -0
  155. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +105 -0
  156. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +1 -0
  157. package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +1 -0
  158. package/dist/src/providers/openai/OpenAIProvider.switch.test.js +256 -0
  159. package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +1 -0
  160. package/dist/src/providers/openai/OpenAIProvider.test.d.ts +16 -0
  161. package/dist/src/providers/openai/OpenAIProvider.test.js +214 -0
  162. package/dist/src/providers/openai/OpenAIProvider.test.js.map +1 -0
  163. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +2 -0
  164. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +14 -0
  165. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -0
  166. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +1 -0
  167. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +210 -0
  168. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +1 -0
  169. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +1 -0
  170. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +65 -0
  171. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +1 -0
  172. package/dist/src/providers/openai/buildResponsesRequest.d.ts +73 -0
  173. package/dist/src/providers/openai/buildResponsesRequest.js +165 -0
  174. package/dist/src/providers/openai/buildResponsesRequest.js.map +1 -0
  175. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +1 -0
  176. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +129 -0
  177. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +1 -0
  178. package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +1 -0
  179. package/dist/src/providers/openai/buildResponsesRequest.test.js +406 -0
  180. package/dist/src/providers/openai/buildResponsesRequest.test.js.map +1 -0
  181. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +1 -0
  182. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +50 -0
  183. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +1 -0
  184. package/dist/src/providers/openai/docs/accessing-provider-info.md +172 -0
  185. package/dist/src/providers/openai/docs/params-mapping.md +91 -0
  186. package/dist/src/providers/openai/docs/responses-api-tool-calls.md +96 -0
  187. package/dist/src/providers/openai/estimateRemoteTokens.d.ts +26 -0
  188. package/dist/src/providers/openai/estimateRemoteTokens.js +75 -0
  189. package/dist/src/providers/openai/estimateRemoteTokens.js.map +1 -0
  190. package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +1 -0
  191. package/dist/src/providers/openai/estimateRemoteTokens.test.js +125 -0
  192. package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +1 -0
  193. package/dist/src/providers/openai/getOpenAIProviderInfo.d.ts +46 -0
  194. package/dist/src/providers/openai/getOpenAIProviderInfo.js +75 -0
  195. package/dist/src/providers/openai/getOpenAIProviderInfo.js.map +1 -0
  196. package/dist/src/providers/openai/parseResponsesStream.d.ts +3 -0
  197. package/dist/src/providers/openai/parseResponsesStream.js +462 -0
  198. package/dist/src/providers/openai/parseResponsesStream.js.map +1 -0
  199. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +1 -0
  200. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +192 -0
  201. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +1 -0
  202. package/dist/src/providers/openai/parseResponsesStream.test.d.ts +1 -0
  203. package/dist/src/providers/openai/parseResponsesStream.test.js +151 -0
  204. package/dist/src/providers/openai/parseResponsesStream.test.js.map +1 -0
  205. package/dist/src/providers/tokenizers/AnthropicTokenizer.d.ts +19 -0
  206. package/dist/src/providers/tokenizers/AnthropicTokenizer.js +37 -0
  207. package/dist/src/providers/tokenizers/AnthropicTokenizer.js.map +1 -0
  208. package/dist/src/providers/tokenizers/ITokenizer.d.ts +18 -0
  209. package/dist/src/providers/tokenizers/ITokenizer.js +17 -0
  210. package/dist/src/providers/tokenizers/ITokenizer.js.map +1 -0
  211. package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +24 -0
  212. package/dist/src/providers/tokenizers/OpenAITokenizer.js +56 -0
  213. package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +1 -0
  214. package/dist/src/providers/types/IProviderConfig.d.ts +102 -0
  215. package/dist/src/providers/types/IProviderConfig.js +17 -0
  216. package/dist/src/providers/types/IProviderConfig.js.map +1 -0
  217. package/dist/src/providers/types.d.ts +4 -69
  218. package/dist/src/services/ideContext.d.ts +2 -0
  219. package/dist/src/services/ideContext.js +8 -0
  220. package/dist/src/services/ideContext.js.map +1 -1
  221. package/dist/src/services/ideContext.test.js +10 -0
  222. package/dist/src/services/ideContext.test.js.map +1 -1
  223. package/dist/src/services/loopDetectionService.d.ts +17 -1
  224. package/dist/src/services/loopDetectionService.js +117 -2
  225. package/dist/src/services/loopDetectionService.js.map +1 -1
  226. package/dist/src/services/loopDetectionService.test.js +109 -2
  227. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  228. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -0
  229. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +40 -2
  230. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  231. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -0
  232. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -0
  233. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  234. package/dist/src/telemetry/sdk.js +0 -2
  235. package/dist/src/telemetry/sdk.js.map +1 -1
  236. package/dist/src/telemetry/types.d.ts +2 -1
  237. package/dist/src/telemetry/types.js +1 -0
  238. package/dist/src/telemetry/types.js.map +1 -1
  239. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  240. package/dist/src/telemetry/uiTelemetry.js +7 -0
  241. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  242. package/dist/src/telemetry/uiTelemetry.test.js +92 -0
  243. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  244. package/dist/src/tools/IToolFormatter.d.ts +40 -0
  245. package/dist/src/tools/IToolFormatter.js +17 -0
  246. package/dist/src/tools/IToolFormatter.js.map +1 -0
  247. package/dist/src/tools/ToolFormatter.d.ts +45 -0
  248. package/dist/src/tools/ToolFormatter.js +216 -0
  249. package/dist/src/tools/ToolFormatter.js.map +1 -0
  250. package/dist/src/tools/ToolFormatter.test.d.ts +16 -0
  251. package/dist/src/tools/ToolFormatter.test.js +349 -0
  252. package/dist/src/tools/ToolFormatter.test.js.map +1 -0
  253. package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +1 -0
  254. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +241 -0
  255. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +1 -0
  256. package/dist/src/tools/edit.d.ts +7 -1
  257. package/dist/src/tools/edit.js +19 -7
  258. package/dist/src/tools/edit.js.map +1 -1
  259. package/dist/src/tools/glob.js +2 -2
  260. package/dist/src/tools/glob.js.map +1 -1
  261. package/dist/src/tools/grep.js +2 -2
  262. package/dist/src/tools/grep.js.map +1 -1
  263. package/dist/src/tools/ls.js +2 -2
  264. package/dist/src/tools/ls.js.map +1 -1
  265. package/dist/src/tools/mcp-client.d.ts +0 -2
  266. package/dist/src/tools/mcp-client.js +8 -20
  267. package/dist/src/tools/mcp-client.js.map +1 -1
  268. package/dist/src/tools/mcp-client.test.js +1 -72
  269. package/dist/src/tools/mcp-client.test.js.map +1 -1
  270. package/dist/src/tools/mcp-tool.d.ts +11 -5
  271. package/dist/src/tools/mcp-tool.js +33 -9
  272. package/dist/src/tools/mcp-tool.js.map +1 -1
  273. package/dist/src/tools/mcp-tool.test.js +40 -24
  274. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  275. package/dist/src/tools/memoryTool.js +2 -2
  276. package/dist/src/tools/memoryTool.js.map +1 -1
  277. package/dist/src/tools/read-file.d.ts +2 -1
  278. package/dist/src/tools/read-file.js +5 -2
  279. package/dist/src/tools/read-file.js.map +1 -1
  280. package/dist/src/tools/read-many-files.js +2 -2
  281. package/dist/src/tools/read-many-files.js.map +1 -1
  282. package/dist/src/tools/shell.js +2 -2
  283. package/dist/src/tools/shell.js.map +1 -1
  284. package/dist/src/tools/todo-read.js +2 -2
  285. package/dist/src/tools/todo-read.js.map +1 -1
  286. package/dist/src/tools/todo-write.js +2 -2
  287. package/dist/src/tools/todo-write.js.map +1 -1
  288. package/dist/src/tools/tool-registry.d.ts +0 -1
  289. package/dist/src/tools/tool-registry.js +11 -8
  290. package/dist/src/tools/tool-registry.js.map +1 -1
  291. package/dist/src/tools/tool-registry.test.js +36 -10
  292. package/dist/src/tools/tool-registry.test.js.map +1 -1
  293. package/dist/src/tools/tools.d.ts +37 -2
  294. package/dist/src/tools/tools.js +25 -2
  295. package/dist/src/tools/tools.js.map +1 -1
  296. package/dist/src/tools/web-fetch.integration.test.d.ts +6 -0
  297. package/dist/src/tools/web-fetch.integration.test.js +532 -0
  298. package/dist/src/tools/web-fetch.integration.test.js.map +1 -0
  299. package/dist/src/tools/web-fetch.js +57 -50
  300. package/dist/src/tools/web-fetch.js.map +1 -1
  301. package/dist/src/tools/web-search.js +34 -6
  302. package/dist/src/tools/web-search.js.map +1 -1
  303. package/dist/src/tools/web-search.test.d.ts +6 -0
  304. package/dist/src/tools/web-search.test.js +229 -0
  305. package/dist/src/tools/web-search.test.js.map +1 -0
  306. package/dist/src/tools/write-file.js +12 -5
  307. package/dist/src/tools/write-file.js.map +1 -1
  308. package/dist/src/utils/browser.d.ts +13 -0
  309. package/dist/src/utils/browser.js +49 -0
  310. package/dist/src/utils/browser.js.map +1 -0
  311. package/dist/src/utils/errors.js +4 -4
  312. package/dist/src/utils/errors.js.map +1 -1
  313. package/dist/src/utils/memoryDiscovery.js +5 -1
  314. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  315. package/dist/src/utils/quotaErrorDetection.js +0 -2
  316. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  317. package/dist/src/utils/retry.d.ts +6 -0
  318. package/dist/src/utils/retry.js +1 -1
  319. package/dist/src/utils/retry.js.map +1 -1
  320. package/dist/src/utils/user_account.js +6 -1
  321. package/dist/src/utils/user_account.js.map +1 -1
  322. package/dist/tsconfig.tsbuildinfo +1 -1
  323. package/package.json +6 -3
  324. package/dist/src/tools/web-fetch.test.js +0 -70
  325. package/dist/src/tools/web-fetch.test.js.map +0 -1
  326. package/dist/vybestack-llxprt-code-core-0.1.12.tgz +0 -0
  327. /package/dist/src/{tools/web-fetch.test.d.ts → mcp/oauth-provider.test.d.ts} +0 -0
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { RESPONSES_API_MODELS } from './RESPONSES_API_MODELS.js';
7
+ /**
8
+ * Retrieves OpenAI provider information from the current ProviderManager instance
9
+ * @param providerManager The ProviderManager instance
10
+ * @returns OpenAI provider info if available, null values otherwise
11
+ */
12
+ export function getOpenAIProviderInfo(providerManager) {
13
+ const result = {
14
+ provider: null,
15
+ conversationCache: null,
16
+ isResponsesAPI: false,
17
+ currentModel: null,
18
+ remoteTokenInfo: {},
19
+ };
20
+ try {
21
+ // Check if provider manager is available
22
+ if (!providerManager || !providerManager.hasActiveProvider()) {
23
+ return result;
24
+ }
25
+ // Get the active provider
26
+ const activeProvider = providerManager.getActiveProvider();
27
+ if (!activeProvider || activeProvider.name !== 'openai') {
28
+ return result;
29
+ }
30
+ // Narrow to expected provider type using feature detection
31
+ const openaiProvider = activeProvider;
32
+ result.provider = openaiProvider;
33
+ // Access the conversation cache via public getter or lax cast
34
+ if (typeof openaiProvider.getConversationCache === 'function') {
35
+ result.conversationCache = openaiProvider.getConversationCache();
36
+ }
37
+ else if ('conversationCache' in openaiProvider) {
38
+ // Cast only if property actually exists (type guard)
39
+ result.conversationCache =
40
+ openaiProvider.conversationCache ?? null;
41
+ }
42
+ // Get current model
43
+ result.currentModel = openaiProvider.getCurrentModel?.() || null;
44
+ // Check if using Responses API (fall back to static list)
45
+ if (openaiProvider.shouldUseResponses && result.currentModel) {
46
+ result.isResponsesAPI = openaiProvider.shouldUseResponses(result.currentModel);
47
+ }
48
+ else if (result.currentModel) {
49
+ result.isResponsesAPI = RESPONSES_API_MODELS.includes(result.currentModel);
50
+ }
51
+ // Note: Remote token info would need to be tracked separately during API calls
52
+ // This is a placeholder for where that information would be stored
53
+ }
54
+ catch (error) {
55
+ if (process.env.DEBUG) {
56
+ console.error('Error accessing OpenAI provider info:', error);
57
+ }
58
+ }
59
+ return result;
60
+ }
61
+ /**
62
+ * Example usage:
63
+ *
64
+ * const openAIInfo = getOpenAIProviderInfo(providerManager);
65
+ * if (openAIInfo.provider && openAIInfo.conversationCache) {
66
+ * // Access conversation cache
67
+ * const cachedMessages = openAIInfo.conversationCache.get(conversationId, parentId);
68
+ *
69
+ * // Check if using Responses API
70
+ * if (openAIInfo.isResponsesAPI) {
71
+ * console.log('Using OpenAI Responses API');
72
+ * }
73
+ * }
74
+ */
75
+ //# sourceMappingURL=getOpenAIProviderInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOpenAIProviderInfo.js","sourceRoot":"","sources":["../../../../src/providers/openai/getOpenAIProviderInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAyBjE;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,eAAmD;IAEnD,MAAM,MAAM,GAAuB;QACjC,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,IAAI,CAAC;QACH,yCAAyC;QACzC,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,0BAA0B;QAC1B,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2DAA2D;QAC3D,MAAM,cAAc,GAAG,cAA+C,CAAC;QACvE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC;QAEjC,8DAA8D;QAC9D,IAAI,OAAO,cAAc,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,iBAAiB,GAAG,cAAc,CAAC,oBAAoB,EAAE,CAAC;QACnE,CAAC;aAAM,IAAI,mBAAmB,IAAI,cAAc,EAAE,CAAC;YACjD,qDAAqD;YACrD,MAAM,CAAC,iBAAiB;gBAEpB,cAGD,CAAC,iBAAiB,IAAI,IAAI,CAAC;QAChC,CAAC;QAED,oBAAoB;QACpB,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC;QAEjE,0DAA0D;QAC1D,IAAI,cAAc,CAAC,kBAAkB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7D,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC,kBAAkB,CACvD,MAAM,CAAC,YAAY,CACpB,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/B,MAAM,CAAC,cAAc,GACnB,oBACD,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAED,+EAA+E;QAC/E,mEAAmE;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ import { IMessage } from '../IMessage.js';
2
+ export declare function parseResponsesStream(stream: ReadableStream<Uint8Array>): AsyncIterableIterator<IMessage>;
3
+ export declare function parseErrorResponse(status: number, body: string, providerName: string): Error;
@@ -0,0 +1,462 @@
1
+ import { ContentGeneratorRole } from '../ContentGeneratorRole.js';
2
+ const MAX_ACCUMULATOR_SIZE = 10000; // Prevent unbounded accumulator growth
3
+ // Helper function to convert O3 model's answer/response fields to strings
4
+ function formatArrayResponse(value) {
5
+ if (typeof value === 'string') {
6
+ return value;
7
+ }
8
+ if (Array.isArray(value)) {
9
+ // Handle numeric arrays like [4, 1] -> "4.1"
10
+ if (value.every((item) => typeof item === 'number')) {
11
+ return value.join('.');
12
+ }
13
+ // Handle mixed arrays like ["gpt", 4.1] -> "gpt 4.1"
14
+ return value.map((item) => String(item)).join(' ');
15
+ }
16
+ // Handle other types by converting to string
17
+ return String(value);
18
+ }
19
+ /** Return true if the chunk starts with "{" or "[". Used to decide
20
+ whether it even makes sense to call JSON.parse on the chunk. */
21
+ function looksLikeJSONObjectOrArray(s) {
22
+ return /^[[{]/.test(s.trim());
23
+ }
24
+ export async function* parseResponsesStream(stream) {
25
+ const decoder = new TextDecoder();
26
+ const reader = stream.getReader();
27
+ let buffer = '';
28
+ // Track function calls being assembled
29
+ const functionCalls = new Map();
30
+ // Track accumulated text to detect reasoning JSON
31
+ let textAccumulator = '';
32
+ try {
33
+ while (true) {
34
+ const { done, value } = await reader.read();
35
+ if (done)
36
+ break;
37
+ buffer += decoder.decode(value, { stream: true });
38
+ const lines = buffer.split('\n');
39
+ buffer = lines.pop() || '';
40
+ for (const line of lines) {
41
+ if (line.trim() === '')
42
+ continue;
43
+ // Parse event type
44
+ if (line.startsWith('event: ')) {
45
+ continue;
46
+ }
47
+ else if (line.startsWith('data: ')) {
48
+ const dataLine = line.slice(6);
49
+ if (dataLine === '[DONE]') {
50
+ continue;
51
+ }
52
+ try {
53
+ const event = JSON.parse(dataLine);
54
+ // Handle different event types
55
+ switch (event.type) {
56
+ case 'response.output_text.delta':
57
+ // Accumulate and check for reasoning JSON
58
+ if (event.delta) {
59
+ // Fast-path: If delta is just a number, yield it immediately
60
+ if (/^\d+(\.\d+)?$/.test(event.delta.trim())) {
61
+ yield {
62
+ role: ContentGeneratorRole.ASSISTANT,
63
+ content: event.delta,
64
+ };
65
+ continue;
66
+ }
67
+ textAccumulator += event.delta;
68
+ // Only try to parse if accumulator looks like JSON
69
+ if (looksLikeJSONObjectOrArray(textAccumulator)) {
70
+ // Check if we have complete reasoning JSON
71
+ try {
72
+ const parsed = JSON.parse(textAccumulator);
73
+ if (parsed.reasoning && parsed.next_speaker) {
74
+ // Format reasoning nicely
75
+ yield {
76
+ role: ContentGeneratorRole.ASSISTANT,
77
+ content: `🤔 Thinking: ${parsed.reasoning}\n\n`,
78
+ };
79
+ // Check if there's an answer/response field
80
+ if (parsed.answer || parsed.response) {
81
+ yield {
82
+ role: ContentGeneratorRole.ASSISTANT,
83
+ content: formatArrayResponse(parsed.answer || parsed.response),
84
+ };
85
+ }
86
+ // Reset accumulator
87
+ textAccumulator = '';
88
+ continue;
89
+ }
90
+ }
91
+ catch {
92
+ // Not complete JSON yet or not reasoning
93
+ // Check if this looks like the start of JSON
94
+ if (textAccumulator.trim().startsWith('{') &&
95
+ textAccumulator.includes('"reasoning"')) {
96
+ // Still accumulating reasoning JSON, don't yield yet
97
+ if (textAccumulator.length > MAX_ACCUMULATOR_SIZE) {
98
+ yield {
99
+ role: ContentGeneratorRole.ASSISTANT,
100
+ content: textAccumulator,
101
+ };
102
+ textAccumulator = '';
103
+ }
104
+ continue;
105
+ }
106
+ }
107
+ }
108
+ // Check if the delta itself is complete JSON (only if it looks like an object/array)
109
+ if (looksLikeJSONObjectOrArray(event.delta)) {
110
+ try {
111
+ const parsed = JSON.parse(event.delta);
112
+ if (parsed.reasoning !== undefined &&
113
+ parsed.next_speaker !== undefined) {
114
+ // This is complete O3 JSON in a single delta
115
+ yield {
116
+ role: ContentGeneratorRole.ASSISTANT,
117
+ content: `🤔 Thinking: ${parsed.reasoning}\n\n`,
118
+ };
119
+ // Check if there's an answer/response field
120
+ if (parsed.answer || parsed.response) {
121
+ yield {
122
+ role: ContentGeneratorRole.ASSISTANT,
123
+ content: formatArrayResponse(parsed.answer || parsed.response),
124
+ };
125
+ }
126
+ // Reset accumulator
127
+ textAccumulator = '';
128
+ continue;
129
+ }
130
+ }
131
+ catch {
132
+ // Not JSON, continue with regular text handling
133
+ }
134
+ }
135
+ // Regular text, yield it
136
+ yield {
137
+ role: ContentGeneratorRole.ASSISTANT,
138
+ content: event.delta,
139
+ };
140
+ // Reset accumulator since we're in regular text mode
141
+ textAccumulator = '';
142
+ }
143
+ break;
144
+ case 'response.message_content.delta':
145
+ // Handle message content deltas (might contain reasoning)
146
+ if (event.delta) {
147
+ // Fast-path: If delta is just a number, yield it immediately
148
+ if (/^\d+(\.\d+)?$/.test(event.delta.trim())) {
149
+ yield {
150
+ role: ContentGeneratorRole.ASSISTANT,
151
+ content: event.delta,
152
+ };
153
+ continue;
154
+ }
155
+ textAccumulator += event.delta;
156
+ // Only try to parse if accumulator looks like JSON
157
+ if (looksLikeJSONObjectOrArray(textAccumulator)) {
158
+ // Check if we have complete reasoning JSON
159
+ try {
160
+ const parsed = JSON.parse(textAccumulator);
161
+ if (parsed.reasoning && parsed.next_speaker) {
162
+ // Format reasoning nicely
163
+ yield {
164
+ role: ContentGeneratorRole.ASSISTANT,
165
+ content: `🤔 Thinking: ${parsed.reasoning}\n\n`,
166
+ };
167
+ // Check if there's an answer/response field
168
+ if (parsed.answer || parsed.response) {
169
+ yield {
170
+ role: ContentGeneratorRole.ASSISTANT,
171
+ content: formatArrayResponse(parsed.answer || parsed.response),
172
+ };
173
+ }
174
+ // Reset accumulator
175
+ textAccumulator = '';
176
+ continue;
177
+ }
178
+ }
179
+ catch {
180
+ // Not complete JSON yet or not reasoning
181
+ // Check if this looks like the start of JSON
182
+ if (textAccumulator.trim().startsWith('{') &&
183
+ textAccumulator.includes('"reasoning"')) {
184
+ // Still accumulating reasoning JSON, don't yield yet
185
+ if (textAccumulator.length > MAX_ACCUMULATOR_SIZE) {
186
+ yield {
187
+ role: ContentGeneratorRole.ASSISTANT,
188
+ content: textAccumulator,
189
+ };
190
+ textAccumulator = '';
191
+ }
192
+ continue;
193
+ }
194
+ }
195
+ }
196
+ // Check if the delta itself is complete JSON (only if it looks like an object/array)
197
+ if (looksLikeJSONObjectOrArray(event.delta)) {
198
+ try {
199
+ const parsed = JSON.parse(event.delta);
200
+ if (parsed.reasoning !== undefined &&
201
+ parsed.next_speaker !== undefined) {
202
+ // This is complete O3 JSON in a single delta
203
+ yield {
204
+ role: ContentGeneratorRole.ASSISTANT,
205
+ content: `🤔 Thinking: ${parsed.reasoning}\n\n`,
206
+ };
207
+ // Check if there's an answer/response field
208
+ if (parsed.answer || parsed.response) {
209
+ yield {
210
+ role: ContentGeneratorRole.ASSISTANT,
211
+ content: formatArrayResponse(parsed.answer || parsed.response),
212
+ };
213
+ }
214
+ // Reset accumulator
215
+ textAccumulator = '';
216
+ continue;
217
+ }
218
+ }
219
+ catch {
220
+ // Not JSON, continue with regular text handling
221
+ }
222
+ }
223
+ // If we have accumulated text that's not JSON, yield it all
224
+ if (textAccumulator &&
225
+ !looksLikeJSONObjectOrArray(textAccumulator)) {
226
+ yield {
227
+ role: ContentGeneratorRole.ASSISTANT,
228
+ content: textAccumulator,
229
+ };
230
+ textAccumulator = '';
231
+ }
232
+ else if (!textAccumulator) {
233
+ // No accumulator, just yield the delta
234
+ yield {
235
+ role: ContentGeneratorRole.ASSISTANT,
236
+ content: event.delta,
237
+ };
238
+ }
239
+ }
240
+ break;
241
+ case 'response.output_item.added':
242
+ // A new function call is starting
243
+ if (event.item?.type === 'function_call' && event.item.id) {
244
+ functionCalls.set(event.item.id, {
245
+ id: event.item.call_id || event.item.id,
246
+ name: event.item.name || '',
247
+ arguments: event.item.arguments || '',
248
+ output_index: event.output_index || 0,
249
+ });
250
+ }
251
+ else if (event.item?.type === 'message') {
252
+ // Handle message-type items that might contain reasoning
253
+ // These should be handled but not stop the stream
254
+ if (event.item.content?.length) {
255
+ const content = event.item.content[0];
256
+ if (content?.type === 'text' && content.text) {
257
+ // Check if this is reasoning JSON
258
+ try {
259
+ const parsed = JSON.parse(content.text);
260
+ if (parsed.reasoning && parsed.next_speaker) {
261
+ // This is reasoning JSON - format it nicely
262
+ yield {
263
+ role: ContentGeneratorRole.ASSISTANT,
264
+ content: `🤔 Thinking: ${parsed.reasoning}\n\n`,
265
+ };
266
+ // Check if there's an answer/response field
267
+ if (parsed.answer || parsed.response) {
268
+ yield {
269
+ role: ContentGeneratorRole.ASSISTANT,
270
+ content: formatArrayResponse(parsed.answer || parsed.response),
271
+ };
272
+ }
273
+ }
274
+ else {
275
+ // Valid JSON but not reasoning
276
+ yield {
277
+ role: ContentGeneratorRole.ASSISTANT,
278
+ content: content.text,
279
+ };
280
+ }
281
+ }
282
+ catch {
283
+ // Not JSON, treat as regular text
284
+ yield {
285
+ role: ContentGeneratorRole.ASSISTANT,
286
+ content: content.text,
287
+ };
288
+ }
289
+ }
290
+ }
291
+ }
292
+ // Reset accumulator after processing output_item.added
293
+ textAccumulator = '';
294
+ break;
295
+ case 'response.function_call_arguments.delta':
296
+ // Accumulate function call arguments
297
+ if (event.item_id &&
298
+ event.delta &&
299
+ functionCalls.has(event.item_id)) {
300
+ const call = functionCalls.get(event.item_id);
301
+ call.arguments += event.delta;
302
+ }
303
+ break;
304
+ case 'response.output_item.done':
305
+ // Handle completed output items
306
+ if (event.item?.type === 'function_call' && event.item.id) {
307
+ // Function call is complete, yield it
308
+ if (functionCalls.has(event.item.id)) {
309
+ const call = functionCalls.get(event.item.id);
310
+ // Update with final data from the done event
311
+ if (event.item.arguments) {
312
+ call.arguments = event.item.arguments;
313
+ }
314
+ // Convert to tool_calls array format
315
+ yield {
316
+ role: ContentGeneratorRole.ASSISTANT,
317
+ content: '',
318
+ tool_calls: [
319
+ {
320
+ id: call.id,
321
+ type: 'function',
322
+ function: {
323
+ name: call.name,
324
+ arguments: call.arguments,
325
+ },
326
+ },
327
+ ],
328
+ };
329
+ // Remove the completed call
330
+ functionCalls.delete(event.item.id);
331
+ }
332
+ }
333
+ else if (event.item?.type === 'message') {
334
+ // Reset accumulator at message boundaries
335
+ textAccumulator = '';
336
+ // Handle completed message items
337
+ if (event.item.content?.length) {
338
+ const content = event.item.content[0];
339
+ if (content?.type === 'text' && content.text) {
340
+ // Check if this is reasoning JSON
341
+ try {
342
+ const parsed = JSON.parse(content.text);
343
+ if (parsed.reasoning && parsed.next_speaker) {
344
+ // This is reasoning JSON - format it nicely
345
+ yield {
346
+ role: ContentGeneratorRole.ASSISTANT,
347
+ content: `🤔 Thinking: ${parsed.reasoning}\n\n`,
348
+ };
349
+ // Check if there's an answer/response field
350
+ if (parsed.answer || parsed.response) {
351
+ yield {
352
+ role: ContentGeneratorRole.ASSISTANT,
353
+ content: formatArrayResponse(parsed.answer || parsed.response),
354
+ };
355
+ }
356
+ }
357
+ else {
358
+ // Valid JSON but not reasoning
359
+ yield {
360
+ role: ContentGeneratorRole.ASSISTANT,
361
+ content: content.text,
362
+ };
363
+ }
364
+ }
365
+ catch {
366
+ // Not JSON, treat as regular text
367
+ yield {
368
+ role: ContentGeneratorRole.ASSISTANT,
369
+ content: content.text,
370
+ };
371
+ }
372
+ }
373
+ }
374
+ }
375
+ // Reset textAccumulator after processing response.output_item.done
376
+ textAccumulator = '';
377
+ break;
378
+ case 'response.completed':
379
+ // Reset accumulator when response is completed
380
+ textAccumulator = '';
381
+ // Extract usage data and the final response ID
382
+ if (event.response) {
383
+ const finalMessage = {
384
+ id: event.response.id,
385
+ role: ContentGeneratorRole.ASSISTANT,
386
+ content: '',
387
+ };
388
+ if (event.response.usage) {
389
+ finalMessage.usage = {
390
+ prompt_tokens: event.response.usage.input_tokens || 0,
391
+ completion_tokens: event.response.usage.output_tokens || 0,
392
+ total_tokens: event.response.usage.total_tokens || 0,
393
+ };
394
+ }
395
+ yield finalMessage;
396
+ }
397
+ break;
398
+ default:
399
+ // Ignore other event types for now
400
+ break;
401
+ }
402
+ }
403
+ catch (parseError) {
404
+ if (process.env.DEBUG) {
405
+ console.error('[parseResponsesStream] Failed to parse event:', parseError);
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ // Yield any remaining accumulated text
412
+ if (textAccumulator) {
413
+ yield {
414
+ role: ContentGeneratorRole.ASSISTANT,
415
+ content: textAccumulator,
416
+ };
417
+ }
418
+ }
419
+ finally {
420
+ reader.releaseLock();
421
+ }
422
+ }
423
+ export function parseErrorResponse(status, body, providerName) {
424
+ try {
425
+ const errorData = JSON.parse(body);
426
+ const message = errorData.error?.message || errorData.message || 'Unknown error';
427
+ // Format error message based on status code
428
+ let errorPrefix;
429
+ if (status === 409) {
430
+ errorPrefix = 'Conflict';
431
+ }
432
+ else if (status === 410) {
433
+ errorPrefix = 'Gone';
434
+ }
435
+ else if (status === 429) {
436
+ errorPrefix = 'Rate limit exceeded';
437
+ }
438
+ else if (status >= 500 && status < 600) {
439
+ errorPrefix = 'Server error';
440
+ }
441
+ else {
442
+ // For unknown status codes, just return the message without prefix
443
+ const error = new Error(message);
444
+ error.status = status;
445
+ error.code =
446
+ errorData.error?.code || errorData.code;
447
+ return error;
448
+ }
449
+ const error = new Error(`${errorPrefix}: ${message}`);
450
+ error.status = status;
451
+ error.code = errorData.error?.code || errorData.code;
452
+ return error;
453
+ }
454
+ catch {
455
+ // For invalid JSON, use a consistent format
456
+ const errorPrefix = status >= 500 && status < 600 ? 'Server error' : 'API Error';
457
+ const error = new Error(`${errorPrefix}: ${providerName} API error: ${status}`);
458
+ error.status = status;
459
+ return error;
460
+ }
461
+ }
462
+ //# sourceMappingURL=parseResponsesStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseResponsesStream.js","sourceRoot":"","sources":["../../../../src/providers/openai/parseResponsesStream.ts"],"names":[],"mappings":"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"}