@vybestack/llxprt-code-core 0.1.15 → 0.1.16-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 (358) hide show
  1. package/README.md +37 -2
  2. package/dist/src/code_assist/converter.d.ts +2 -1
  3. package/dist/src/code_assist/converter.js +2 -1
  4. package/dist/src/code_assist/converter.js.map +1 -1
  5. package/dist/src/code_assist/converter.test.js +13 -10
  6. package/dist/src/code_assist/converter.test.js.map +1 -1
  7. package/dist/src/code_assist/server.d.ts +2 -2
  8. package/dist/src/code_assist/server.js +4 -4
  9. package/dist/src/code_assist/server.js.map +1 -1
  10. package/dist/src/code_assist/server.test.js +9 -9
  11. package/dist/src/code_assist/server.test.js.map +1 -1
  12. package/dist/src/code_assist/setup.js +1 -1
  13. package/dist/src/code_assist/setup.js.map +1 -1
  14. package/dist/src/code_assist/setup.test.js +2 -2
  15. package/dist/src/code_assist/setup.test.js.map +1 -1
  16. package/dist/src/config/config.d.ts +22 -4
  17. package/dist/src/config/config.js +58 -10
  18. package/dist/src/config/config.js.map +1 -1
  19. package/dist/src/config/config.test.js +28 -0
  20. package/dist/src/config/config.test.js.map +1 -1
  21. package/dist/src/config/flashFallback.test.js +11 -1
  22. package/dist/src/config/flashFallback.test.js.map +1 -1
  23. package/dist/src/config/models.js.map +1 -1
  24. package/dist/src/config/profileManager.d.ts +42 -0
  25. package/dist/src/config/profileManager.js +114 -0
  26. package/dist/src/config/profileManager.js.map +1 -0
  27. package/dist/src/core/client.d.ts +11 -1
  28. package/dist/src/core/client.js +86 -30
  29. package/dist/src/core/client.js.map +1 -1
  30. package/dist/src/core/client.test.d.ts +1 -1
  31. package/dist/src/core/client.test.js +95 -28
  32. package/dist/src/core/client.test.js.map +1 -1
  33. package/dist/src/core/contentGenerator.d.ts +2 -2
  34. package/dist/src/core/contentGenerator.js.map +1 -1
  35. package/dist/src/core/coreToolScheduler.js +39 -15
  36. package/dist/src/core/coreToolScheduler.js.map +1 -1
  37. package/dist/src/core/coreToolScheduler.test.js +14 -17
  38. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  39. package/dist/src/core/geminiChat.js +36 -2
  40. package/dist/src/core/geminiChat.js.map +1 -1
  41. package/dist/src/core/geminiChat.test.js +2 -2
  42. package/dist/src/core/geminiChat.test.js.map +1 -1
  43. package/dist/src/core/nonInteractiveToolExecutor.js +11 -3
  44. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  45. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -2
  46. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  47. package/dist/src/core/prompts-async.test.d.ts +6 -0
  48. package/dist/src/core/prompts-async.test.js +115 -0
  49. package/dist/src/core/prompts-async.test.js.map +1 -0
  50. package/dist/src/core/prompts.d.ts +8 -1
  51. package/dist/src/core/prompts.js +97 -377
  52. package/dist/src/core/prompts.js.map +1 -1
  53. package/dist/src/core/prompts.test.js +46 -192
  54. package/dist/src/core/prompts.test.js.map +1 -1
  55. package/dist/src/core/tokenLimits.d.ts +1 -1
  56. package/dist/src/core/tokenLimits.js +5 -1
  57. package/dist/src/core/tokenLimits.js.map +1 -1
  58. package/dist/src/core/turn.d.ts +3 -0
  59. package/dist/src/core/turn.js +3 -0
  60. package/dist/src/core/turn.js.map +1 -1
  61. package/dist/src/ide/detect-ide.d.ts +10 -0
  62. package/dist/src/ide/detect-ide.js +24 -0
  63. package/dist/src/ide/detect-ide.js.map +1 -0
  64. package/dist/src/ide/ide-client.d.ts +11 -1
  65. package/dist/src/ide/ide-client.js +37 -1
  66. package/dist/src/ide/ide-client.js.map +1 -1
  67. package/dist/src/ide/ide-installer.d.ts +15 -0
  68. package/dist/src/ide/ide-installer.js +111 -0
  69. package/dist/src/ide/ide-installer.js.map +1 -0
  70. package/dist/src/ide/ide-installer.test.d.ts +6 -0
  71. package/dist/src/ide/ide-installer.test.js +78 -0
  72. package/dist/src/ide/ide-installer.test.js.map +1 -0
  73. package/dist/src/index.d.ts +9 -0
  74. package/dist/src/index.js +11 -0
  75. package/dist/src/index.js.map +1 -1
  76. package/dist/src/mcp/oauth-provider.js +3 -3
  77. package/dist/src/mcp/oauth-provider.js.map +1 -1
  78. package/dist/src/mcp/oauth-provider.test.js +9 -8
  79. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  80. package/dist/src/mcp/oauth-utils.js +12 -4
  81. package/dist/src/mcp/oauth-utils.js.map +1 -1
  82. package/dist/src/parsers/TextToolCallParser.d.ts +1 -0
  83. package/dist/src/parsers/TextToolCallParser.js +45 -3
  84. package/dist/src/parsers/TextToolCallParser.js.map +1 -1
  85. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +1 -0
  86. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +42 -0
  87. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +1 -0
  88. package/dist/src/prompt-config/TemplateEngine.d.ts +35 -0
  89. package/dist/src/prompt-config/TemplateEngine.js +149 -0
  90. package/dist/src/prompt-config/TemplateEngine.js.map +1 -0
  91. package/dist/src/prompt-config/TemplateEngine.test.d.ts +1 -0
  92. package/dist/src/prompt-config/TemplateEngine.test.js +494 -0
  93. package/dist/src/prompt-config/TemplateEngine.test.js.map +1 -0
  94. package/dist/src/prompt-config/defaults/compression.md +58 -0
  95. package/dist/src/prompt-config/defaults/core-defaults.d.ts +5 -0
  96. package/dist/src/prompt-config/defaults/core-defaults.js +332 -0
  97. package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -0
  98. package/dist/src/prompt-config/defaults/core.md +267 -0
  99. package/dist/src/prompt-config/defaults/env/git-repository.md +15 -0
  100. package/dist/src/prompt-config/defaults/env/ide-mode.md +3 -0
  101. package/dist/src/prompt-config/defaults/env/macos-seatbelt.md +3 -0
  102. package/dist/src/prompt-config/defaults/env/outside-of-sandbox.md +3 -0
  103. package/dist/src/prompt-config/defaults/env/sandbox.md +3 -0
  104. package/dist/src/prompt-config/defaults/index.d.ts +14 -0
  105. package/dist/src/prompt-config/defaults/index.js +21 -0
  106. package/dist/src/prompt-config/defaults/index.js.map +1 -0
  107. package/dist/src/prompt-config/defaults/provider-defaults.d.ts +5 -0
  108. package/dist/src/prompt-config/defaults/provider-defaults.js +26 -0
  109. package/dist/src/prompt-config/defaults/provider-defaults.js.map +1 -0
  110. package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/core.md +10 -0
  111. package/dist/src/prompt-config/defaults/service-defaults.d.ts +5 -0
  112. package/dist/src/prompt-config/defaults/service-defaults.js +52 -0
  113. package/dist/src/prompt-config/defaults/service-defaults.js.map +1 -0
  114. package/dist/src/prompt-config/defaults/tool-defaults.d.ts +5 -0
  115. package/dist/src/prompt-config/defaults/tool-defaults.js +81 -0
  116. package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -0
  117. package/dist/src/prompt-config/defaults/tools/edit.md +2 -0
  118. package/dist/src/prompt-config/defaults/tools/glob.md +2 -0
  119. package/dist/src/prompt-config/defaults/tools/grep.md +2 -0
  120. package/dist/src/prompt-config/defaults/tools/ls.md +1 -0
  121. package/dist/src/prompt-config/defaults/tools/memory.md +1 -0
  122. package/dist/src/prompt-config/defaults/tools/read-file.md +4 -0
  123. package/dist/src/prompt-config/defaults/tools/read-many-files.md +2 -0
  124. package/dist/src/prompt-config/defaults/tools/shell.md +5 -0
  125. package/dist/src/prompt-config/defaults/tools/todo-read.md +3 -0
  126. package/dist/src/prompt-config/defaults/tools/todo-write.md +50 -0
  127. package/dist/src/prompt-config/defaults/tools/web-fetch.md +3 -0
  128. package/dist/src/prompt-config/defaults/tools/web-search.md +3 -0
  129. package/dist/src/prompt-config/defaults/tools/write-file.md +4 -0
  130. package/dist/src/prompt-config/index.d.ts +16 -0
  131. package/dist/src/prompt-config/index.js +11 -0
  132. package/dist/src/prompt-config/index.js.map +1 -0
  133. package/dist/src/prompt-config/prompt-cache.d.ts +72 -0
  134. package/dist/src/prompt-config/prompt-cache.js +271 -0
  135. package/dist/src/prompt-config/prompt-cache.js.map +1 -0
  136. package/dist/src/prompt-config/prompt-cache.test.d.ts +6 -0
  137. package/dist/src/prompt-config/prompt-cache.test.js +437 -0
  138. package/dist/src/prompt-config/prompt-cache.test.js.map +1 -0
  139. package/dist/src/prompt-config/prompt-installer.d.ts +118 -0
  140. package/dist/src/prompt-config/prompt-installer.js +723 -0
  141. package/dist/src/prompt-config/prompt-installer.js.map +1 -0
  142. package/dist/src/prompt-config/prompt-installer.test.d.ts +7 -0
  143. package/dist/src/prompt-config/prompt-installer.test.js +503 -0
  144. package/dist/src/prompt-config/prompt-installer.test.js.map +1 -0
  145. package/dist/src/prompt-config/prompt-loader.d.ts +49 -0
  146. package/dist/src/prompt-config/prompt-loader.js +331 -0
  147. package/dist/src/prompt-config/prompt-loader.js.map +1 -0
  148. package/dist/src/prompt-config/prompt-loader.test.d.ts +5 -0
  149. package/dist/src/prompt-config/prompt-loader.test.js +413 -0
  150. package/dist/src/prompt-config/prompt-loader.test.js.map +1 -0
  151. package/dist/src/prompt-config/prompt-resolver.d.ts +74 -0
  152. package/dist/src/prompt-config/prompt-resolver.js +600 -0
  153. package/dist/src/prompt-config/prompt-resolver.js.map +1 -0
  154. package/dist/src/prompt-config/prompt-resolver.test.d.ts +1 -0
  155. package/dist/src/prompt-config/prompt-resolver.test.js +529 -0
  156. package/dist/src/prompt-config/prompt-resolver.test.js.map +1 -0
  157. package/dist/src/prompt-config/prompt-service.d.ts +108 -0
  158. package/dist/src/prompt-config/prompt-service.js +435 -0
  159. package/dist/src/prompt-config/prompt-service.js.map +1 -0
  160. package/dist/src/prompt-config/prompt-service.test.d.ts +1 -0
  161. package/dist/src/prompt-config/prompt-service.test.js +811 -0
  162. package/dist/src/prompt-config/prompt-service.test.js.map +1 -0
  163. package/dist/src/prompt-config/types.d.ts +30 -0
  164. package/dist/src/prompt-config/types.js +10 -0
  165. package/dist/src/prompt-config/types.js.map +1 -0
  166. package/dist/src/providers/IProvider.d.ts +10 -0
  167. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +14 -1
  168. package/dist/src/providers/anthropic/AnthropicProvider.js +28 -2
  169. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  170. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +1 -0
  171. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +48 -0
  172. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +1 -0
  173. package/dist/src/providers/anthropic/AnthropicProvider.test.js +2 -1
  174. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +1 -1
  175. package/dist/src/providers/gemini/GeminiProvider.d.ts +11 -2
  176. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +1 -1
  177. package/dist/src/providers/gemini/GeminiProvider.js +34 -9
  178. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  179. package/dist/src/providers/openai/OpenAIProvider.d.ts +11 -0
  180. package/dist/src/providers/openai/OpenAIProvider.js +100 -31
  181. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  182. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +27 -3
  183. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +1 -1
  184. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +2 -1
  185. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +1 -1
  186. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +1 -1
  187. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +1 -1
  188. package/dist/src/providers/openai/OpenAIProvider.test.js +307 -7
  189. package/dist/src/providers/openai/OpenAIProvider.test.js.map +1 -1
  190. package/dist/src/providers/openai/buildResponsesRequest.js +19 -2
  191. package/dist/src/providers/openai/buildResponsesRequest.js.map +1 -1
  192. package/dist/src/providers/test-utils/providerTestConfig.d.ts +21 -0
  193. package/dist/src/providers/test-utils/providerTestConfig.js +23 -0
  194. package/dist/src/providers/test-utils/providerTestConfig.js.map +1 -0
  195. package/dist/src/providers/types/IProviderConfig.d.ts +6 -0
  196. package/dist/src/services/loopDetectionService.d.ts +9 -0
  197. package/dist/src/services/loopDetectionService.js +44 -12
  198. package/dist/src/services/loopDetectionService.js.map +1 -1
  199. package/dist/src/services/shellExecutionService.d.ts +1 -37
  200. package/dist/src/services/shellExecutionService.js +24 -55
  201. package/dist/src/services/shellExecutionService.js.map +1 -1
  202. package/dist/src/{providers/IProviderConfig.js → services/shellExecutionService.multibyte.test.d.ts} +0 -1
  203. package/dist/src/services/shellExecutionService.multibyte.test.js +72 -0
  204. package/dist/src/services/shellExecutionService.multibyte.test.js.map +1 -0
  205. package/dist/src/services/shellExecutionService.test.js +11 -5
  206. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  207. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +6 -0
  208. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +98 -0
  209. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +1 -0
  210. package/dist/src/services/shellExecutionService.windows.test.d.ts +6 -0
  211. package/dist/src/services/shellExecutionService.windows.test.js +79 -0
  212. package/dist/src/services/shellExecutionService.windows.test.js.map +1 -0
  213. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +3 -2
  214. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +22 -3
  215. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  216. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +4 -1
  217. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +12 -0
  218. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  219. package/dist/src/telemetry/constants.d.ts +1 -1
  220. package/dist/src/telemetry/constants.js +1 -1
  221. package/dist/src/telemetry/constants.js.map +1 -1
  222. package/dist/src/telemetry/file-exporters.d.ts +2 -2
  223. package/dist/src/telemetry/file-exporters.js +47 -20
  224. package/dist/src/telemetry/file-exporters.js.map +1 -1
  225. package/dist/src/telemetry/loggers.d.ts +2 -2
  226. package/dist/src/telemetry/loggers.js +13 -6
  227. package/dist/src/telemetry/loggers.js.map +1 -1
  228. package/dist/src/telemetry/loggers.test.circular.js +2 -0
  229. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  230. package/dist/src/telemetry/loggers.test.js +8 -3
  231. package/dist/src/telemetry/loggers.test.js.map +1 -1
  232. package/dist/src/telemetry/sdk.d.ts +1 -1
  233. package/dist/src/telemetry/sdk.js +71 -73
  234. package/dist/src/telemetry/sdk.js.map +1 -1
  235. package/dist/src/telemetry/telemetry.test.js +7 -5
  236. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  237. package/dist/src/telemetry/types.d.ts +12 -4
  238. package/dist/src/telemetry/types.js +18 -4
  239. package/dist/src/telemetry/types.js.map +1 -1
  240. package/dist/src/telemetry/uiTelemetry.test.js +3 -0
  241. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  242. package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  243. package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
  244. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  245. package/dist/src/tools/edit.js +27 -3
  246. package/dist/src/tools/edit.js.map +1 -1
  247. package/dist/src/tools/edit.test.js +104 -1
  248. package/dist/src/tools/edit.test.js.map +1 -1
  249. package/dist/src/tools/glob.js +53 -17
  250. package/dist/src/tools/glob.js.map +1 -1
  251. package/dist/src/tools/glob.test.js +25 -2
  252. package/dist/src/tools/glob.test.js.map +1 -1
  253. package/dist/src/tools/grep.d.ts +1 -1
  254. package/dist/src/tools/grep.js +81 -29
  255. package/dist/src/tools/grep.js.map +1 -1
  256. package/dist/src/tools/grep.test.js +72 -5
  257. package/dist/src/tools/grep.test.js.map +1 -1
  258. package/dist/src/tools/ls.js +4 -3
  259. package/dist/src/tools/ls.js.map +1 -1
  260. package/dist/src/tools/ls.test.d.ts +6 -0
  261. package/dist/src/tools/ls.test.js +356 -0
  262. package/dist/src/tools/ls.test.js.map +1 -0
  263. package/dist/src/tools/mcp-client.js +32 -11
  264. package/dist/src/tools/mcp-client.js.map +1 -1
  265. package/dist/src/tools/mcp-client.test.js +34 -0
  266. package/dist/src/tools/mcp-client.test.js.map +1 -1
  267. package/dist/src/tools/memoryTool.d.ts +17 -2
  268. package/dist/src/tools/memoryTool.js +130 -13
  269. package/dist/src/tools/memoryTool.js.map +1 -1
  270. package/dist/src/tools/memoryTool.test.js +88 -3
  271. package/dist/src/tools/memoryTool.test.js.map +1 -1
  272. package/dist/src/tools/read-file.js +8 -6
  273. package/dist/src/tools/read-file.js.map +1 -1
  274. package/dist/src/tools/read-file.test.js +30 -2
  275. package/dist/src/tools/read-file.test.js.map +1 -1
  276. package/dist/src/tools/read-many-files.js +22 -12
  277. package/dist/src/tools/read-many-files.js.map +1 -1
  278. package/dist/src/tools/read-many-files.test.js +35 -2
  279. package/dist/src/tools/read-many-files.test.js.map +1 -1
  280. package/dist/src/tools/shell.js +16 -0
  281. package/dist/src/tools/shell.js.map +1 -1
  282. package/dist/src/tools/shell.multibyte.test.d.ts +6 -0
  283. package/dist/src/tools/shell.multibyte.test.js +74 -0
  284. package/dist/src/tools/shell.multibyte.test.js.map +1 -0
  285. package/dist/src/tools/shell.test.js +33 -1
  286. package/dist/src/tools/shell.test.js.map +1 -1
  287. package/dist/src/tools/tool-error.d.ts +22 -0
  288. package/dist/src/tools/tool-error.js +27 -0
  289. package/dist/src/tools/tool-error.js.map +1 -0
  290. package/dist/src/tools/tool-registry.test.js +8 -0
  291. package/dist/src/tools/tool-registry.test.js.map +1 -1
  292. package/dist/src/tools/tools.d.ts +8 -0
  293. package/dist/src/tools/tools.js.map +1 -1
  294. package/dist/src/tools/write-file.js +5 -3
  295. package/dist/src/tools/write-file.js.map +1 -1
  296. package/dist/src/tools/write-file.test.js +36 -2
  297. package/dist/src/tools/write-file.test.js.map +1 -1
  298. package/dist/src/types/modelParams.d.ts +62 -0
  299. package/dist/src/types/modelParams.js +7 -0
  300. package/dist/src/types/modelParams.js.map +1 -0
  301. package/dist/src/utils/bfsFileSearch.test.js +4 -2
  302. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  303. package/dist/src/utils/editCorrector.js +2 -2
  304. package/dist/src/utils/editCorrector.js.map +1 -1
  305. package/dist/src/utils/editor.d.ts +1 -1
  306. package/dist/src/utils/editor.js +9 -0
  307. package/dist/src/utils/editor.js.map +1 -1
  308. package/dist/src/utils/editor.test.js +21 -1
  309. package/dist/src/utils/editor.test.js.map +1 -1
  310. package/dist/src/utils/fileUtils.js +12 -1
  311. package/dist/src/utils/fileUtils.js.map +1 -1
  312. package/dist/src/utils/fileUtils.test.js +29 -1
  313. package/dist/src/utils/fileUtils.test.js.map +1 -1
  314. package/dist/src/utils/flashFallback.integration.test.js +8 -0
  315. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  316. package/dist/src/utils/memoryDiscovery.d.ts +1 -1
  317. package/dist/src/utils/memoryDiscovery.js +61 -73
  318. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  319. package/dist/src/utils/memoryDiscovery.test.js +4 -3
  320. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  321. package/dist/src/utils/memoryImportProcessor.d.ts +19 -12
  322. package/dist/src/utils/memoryImportProcessor.js +241 -82
  323. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  324. package/dist/src/utils/memoryImportProcessor.test.js +595 -50
  325. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  326. package/dist/src/utils/nextSpeakerChecker.js +10 -25
  327. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  328. package/dist/src/utils/nextSpeakerChecker.test.js +6 -2
  329. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  330. package/dist/src/utils/sanitization.d.ts +20 -0
  331. package/dist/src/utils/sanitization.js +66 -0
  332. package/dist/src/utils/sanitization.js.map +1 -0
  333. package/dist/src/utils/sanitization.test.d.ts +6 -0
  334. package/dist/src/utils/sanitization.test.js +81 -0
  335. package/dist/src/utils/sanitization.test.js.map +1 -0
  336. package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
  337. package/dist/src/utils/secure-browser-launcher.js +164 -0
  338. package/dist/src/utils/secure-browser-launcher.js.map +1 -0
  339. package/dist/src/utils/secure-browser-launcher.test.d.ts +6 -0
  340. package/dist/src/utils/secure-browser-launcher.test.js +149 -0
  341. package/dist/src/utils/secure-browser-launcher.test.js.map +1 -0
  342. package/dist/src/utils/summarizer.js +2 -2
  343. package/dist/src/utils/summarizer.js.map +1 -1
  344. package/dist/src/utils/unicodeUtils.d.ts +44 -0
  345. package/dist/src/utils/unicodeUtils.js +93 -0
  346. package/dist/src/utils/unicodeUtils.js.map +1 -0
  347. package/dist/src/utils/unicodeUtils.test.d.ts +6 -0
  348. package/dist/src/utils/unicodeUtils.test.js +120 -0
  349. package/dist/src/utils/unicodeUtils.test.js.map +1 -0
  350. package/dist/src/utils/workspaceContext.d.ts +47 -0
  351. package/dist/src/utils/workspaceContext.js +106 -0
  352. package/dist/src/utils/workspaceContext.js.map +1 -0
  353. package/dist/src/utils/workspaceContext.test.d.ts +6 -0
  354. package/dist/src/utils/workspaceContext.test.js +209 -0
  355. package/dist/src/utils/workspaceContext.test.js.map +1 -0
  356. package/package.json +2 -1
  357. package/dist/src/providers/IProviderConfig.d.ts +0 -31
  358. package/dist/src/providers/IProviderConfig.js.map +0 -1
@@ -5,9 +5,8 @@
5
5
  */
6
6
  import { getFolderStructure } from '../utils/getFolderStructure.js';
7
7
  import { Turn, GeminiEventType, } from './turn.js';
8
- import { getCoreSystemPrompt, getCompressionPrompt } from './prompts.js';
8
+ import { getCoreSystemPromptAsync, getCompressionPrompt } from './prompts.js';
9
9
  import { getResponseText } from '../utils/generateContentResponseUtilities.js';
10
- import { checkNextSpeaker } from '../utils/nextSpeakerChecker.js';
11
10
  import { reportError } from '../utils/errorReporting.js';
12
11
  import { GeminiChat } from './geminiChat.js';
13
12
  import { retryWithBackoff } from '../utils/retry.js';
@@ -19,8 +18,8 @@ import { ProxyAgent, setGlobalDispatcher } from 'undici';
19
18
  import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
20
19
  import { LoopDetectionService } from '../services/loopDetectionService.js';
21
20
  import { ideContext } from '../ide/ideContext.js';
22
- import { logFlashDecidedToContinue } from '../telemetry/loggers.js';
23
- import { FlashDecidedToContinueEvent } from '../telemetry/types.js';
21
+ import { MalformedJsonResponseEvent } from '../telemetry/types.js';
22
+ import { ClearcutLogger } from '../telemetry/clearcut-logger/clearcut-logger.js';
24
23
  import { ComplexityAnalyzer } from '../services/complexity-analyzer.js';
25
24
  import { TodoReminderService } from '../services/todo-reminder-service.js';
26
25
  function isThinkingSupported(model) {
@@ -86,6 +85,10 @@ export class GeminiClient {
86
85
  * means that only the last 30% of the chat history will be kept after compression.
87
86
  */
88
87
  COMPRESSION_PRESERVE_THRESHOLD = 0.3;
88
+ /**
89
+ * User-defined context limit override
90
+ */
91
+ userContextLimit;
89
92
  loopDetector;
90
93
  lastPromptId;
91
94
  complexityAnalyzer;
@@ -99,6 +102,7 @@ export class GeminiClient {
99
102
  }
100
103
  this.embeddingModel = config.getEmbeddingModel();
101
104
  this.loopDetector = new LoopDetectionService(config);
105
+ this.lastPromptId = this.config.getSessionId();
102
106
  // Initialize complexity analyzer with config settings
103
107
  const complexitySettings = config.getComplexityAnalyzerSettings();
104
108
  this.complexityAnalyzer = new ComplexityAnalyzer({
@@ -109,6 +113,19 @@ export class GeminiClient {
109
113
  complexitySettings.suggestionCooldownMs ?? 300000;
110
114
  this.todoReminderService = new TodoReminderService();
111
115
  }
116
+ /**
117
+ * Set the compression threshold and context limit overrides
118
+ */
119
+ setCompressionSettings(compressionThreshold, contextLimit) {
120
+ if (compressionThreshold !== undefined &&
121
+ compressionThreshold > 0 &&
122
+ compressionThreshold <= 1) {
123
+ this.COMPRESSION_TOKEN_THRESHOLD = compressionThreshold;
124
+ }
125
+ if (contextLimit !== undefined && contextLimit > 0) {
126
+ this.userContextLimit = contextLimit;
127
+ }
128
+ }
112
129
  async initialize(contentGeneratorConfig) {
113
130
  // Preserve chat history before resetting
114
131
  const previousHistory = this.chat?.getHistory();
@@ -182,8 +199,27 @@ export class GeminiClient {
182
199
  async resetChat() {
183
200
  this.chat = await this.startChat();
184
201
  }
202
+ async addDirectoryContext() {
203
+ if (!this.chat) {
204
+ return;
205
+ }
206
+ this.getChat().addHistory({
207
+ role: 'user',
208
+ parts: [{ text: await this.getDirectoryContext() }],
209
+ });
210
+ }
211
+ async getDirectoryContext() {
212
+ const workspaceContext = this.config.getWorkspaceContext();
213
+ const workspaceDirectories = workspaceContext.getDirectories();
214
+ const folderStructures = await Promise.all(workspaceDirectories.map((dir) => getFolderStructure(dir, {
215
+ fileService: this.config.getFileService(),
216
+ })));
217
+ const folderStructure = folderStructures.join('\n');
218
+ const dirList = workspaceDirectories.map((dir) => ` - ${dir}`).join('\n');
219
+ const workingDirPreamble = `I'm currently working in the following directories:\n${dirList}\n Folder structures are as follows:\n${folderStructure}`;
220
+ return workingDirPreamble;
221
+ }
185
222
  async getEnvironment() {
186
- const cwd = this.config.getWorkingDir();
187
223
  const today = new Date().toLocaleDateString(undefined, {
188
224
  weekday: 'long',
189
225
  year: 'numeric',
@@ -191,14 +227,28 @@ export class GeminiClient {
191
227
  day: 'numeric',
192
228
  });
193
229
  const platform = process.platform;
194
- const folderStructure = await getFolderStructure(cwd, {
230
+ const workspaceContext = this.config.getWorkspaceContext();
231
+ const workspaceDirectories = workspaceContext.getDirectories();
232
+ const folderStructures = await Promise.all(workspaceDirectories.map((dir) => getFolderStructure(dir, {
195
233
  fileService: this.config.getFileService(),
196
- });
234
+ })));
235
+ const folderStructure = folderStructures.join('\n');
236
+ let workingDirPreamble;
237
+ if (workspaceDirectories.length === 1) {
238
+ workingDirPreamble = `I'm currently working in the directory: ${workspaceDirectories[0]}`;
239
+ }
240
+ else {
241
+ const dirList = workspaceDirectories
242
+ .map((dir) => ` - ${dir}`)
243
+ .join('\n');
244
+ workingDirPreamble = `I'm currently working in the following directories:\n${dirList}`;
245
+ }
197
246
  const context = `
198
247
  This is the CLI. We are setting up the context for our chat.
199
248
  Today's date is ${today}.
200
249
  My operating system is: ${platform}
201
- I'm currently working in the directory: ${cwd}
250
+ ${workingDirPreamble}
251
+ Here is the folder structure of the current working directories:\n
202
252
  ${folderStructure}
203
253
  `.trim();
204
254
  const initialParts = [{ text: context }];
@@ -258,7 +308,7 @@ export class GeminiClient {
258
308
  if (process.env.DEBUG) {
259
309
  console.log('DEBUG [client.startChat]: Model from config:', model);
260
310
  }
261
- const systemInstruction = getCoreSystemPrompt(userMemory, model);
311
+ const systemInstruction = await getCoreSystemPromptAsync(userMemory, model);
262
312
  if (process.env.DEBUG) {
263
313
  console.log('DEBUG [client.startChat]: System instruction includes Flash instructions:', systemInstruction.includes('IMPORTANT: You MUST use the provided tools'));
264
314
  }
@@ -316,7 +366,7 @@ export class GeminiClient {
316
366
  if (compressed) {
317
367
  yield { type: GeminiEventType.ChatCompressed, value: compressed };
318
368
  }
319
- if (this.config.getIdeMode()) {
369
+ if (this.config.getIdeModeFeature() && this.config.getIdeMode()) {
320
370
  const ideContextState = ideContext.getIdeContext();
321
371
  const openFiles = ideContextState?.workspaceState?.openFiles;
322
372
  if (openFiles && openFiles.length > 0) {
@@ -403,20 +453,7 @@ export class GeminiClient {
403
453
  // Don't continue with recursive call to prevent unwanted Flash execution
404
454
  return turn;
405
455
  }
406
- // Only check next speaker for Gemini provider
407
- const contentGenConfig = this.config.getContentGeneratorConfig();
408
- const providerManager = contentGenConfig?.providerManager;
409
- const providerName = providerManager?.getActiveProviderName() || 'gemini';
410
- if (providerName === 'gemini') {
411
- const nextSpeakerCheck = await checkNextSpeaker(this.getChat(), this, signal);
412
- if (nextSpeakerCheck?.next_speaker === 'model') {
413
- logFlashDecidedToContinue(this.config, new FlashDecidedToContinueEvent(prompt_id));
414
- const nextRequest = [{ text: 'Please continue.' }];
415
- // This recursive call's events will be yielded out, but the final
416
- // turn object will be from the top-level call.
417
- yield* this.sendMessageStream(nextRequest, signal, prompt_id, boundedTurns - 1, initialModel);
418
- }
419
- }
456
+ // nextSpeakerChecker disabled
420
457
  }
421
458
  return turn;
422
459
  }
@@ -426,7 +463,7 @@ export class GeminiClient {
426
463
  const modelToUse = model || this.config.getModel() || DEFAULT_GEMINI_FLASH_MODEL;
427
464
  try {
428
465
  const userMemory = this.config.getUserMemory();
429
- const systemInstruction = getCoreSystemPrompt(userMemory, modelToUse);
466
+ const systemInstruction = await getCoreSystemPromptAsync(userMemory, modelToUse);
430
467
  const requestConfig = {
431
468
  abortSignal,
432
469
  ...this.generateContentConfig,
@@ -441,20 +478,38 @@ export class GeminiClient {
441
478
  responseMimeType: 'application/json',
442
479
  },
443
480
  contents,
444
- });
481
+ }, this.lastPromptId || this.config.getSessionId());
445
482
  const result = await retryWithBackoff(apiCall, {
446
483
  onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
447
484
  authType: this.config.getContentGeneratorConfig()?.authType,
448
485
  });
449
- const text = getResponseText(result);
486
+ let text = getResponseText(result);
450
487
  if (!text) {
451
488
  const error = new Error('API returned an empty response for generateJson.');
452
489
  await reportError(error, 'Error in generateJson: API returned an empty response.', contents, 'generateJson-empty-response');
453
490
  throw error;
454
491
  }
492
+ const prefix = '```json';
493
+ const suffix = '```';
494
+ if (text.startsWith(prefix) && text.endsWith(suffix)) {
495
+ ClearcutLogger.getInstance(this.config)?.logMalformedJsonResponseEvent(new MalformedJsonResponseEvent(modelToUse));
496
+ text = text
497
+ .substring(prefix.length, text.length - suffix.length)
498
+ .trim();
499
+ }
455
500
  try {
456
501
  // Extract JSON from potential markdown wrapper
457
502
  const cleanedText = extractJsonFromMarkdown(text);
503
+ // Special case: Gemini sometimes returns just "user" or "model" for next speaker checks
504
+ // This happens particularly with non-ASCII content in the conversation
505
+ if ((cleanedText === 'user' || cleanedText === 'model') &&
506
+ contents.some((c) => c.parts?.some((p) => 'text' in p && p.text?.includes('next_speaker')))) {
507
+ console.warn(`[generateJson] Gemini returned plain text "${cleanedText}" instead of JSON for next speaker check. Converting to valid response.`);
508
+ return {
509
+ reasoning: 'Gemini returned plain text response',
510
+ next_speaker: cleanedText,
511
+ };
512
+ }
458
513
  return JSON.parse(cleanedText);
459
514
  }
460
515
  catch (parseError) {
@@ -489,7 +544,7 @@ export class GeminiClient {
489
544
  };
490
545
  try {
491
546
  const userMemory = this.config.getUserMemory();
492
- const systemInstruction = getCoreSystemPrompt(userMemory, modelToUse);
547
+ const systemInstruction = await getCoreSystemPromptAsync(userMemory, modelToUse);
493
548
  const requestConfig = {
494
549
  abortSignal,
495
550
  ...configToUse,
@@ -499,7 +554,7 @@ export class GeminiClient {
499
554
  model: modelToUse,
500
555
  config: requestConfig,
501
556
  contents,
502
- });
557
+ }, this.lastPromptId || this.config.getSessionId());
503
558
  const result = await retryWithBackoff(apiCall, {
504
559
  onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
505
560
  authType: this.config.getContentGeneratorConfig()?.authType,
@@ -559,8 +614,9 @@ export class GeminiClient {
559
614
  return null;
560
615
  }
561
616
  // Don't compress if not forced and we are under the limit.
617
+ const contextLimit = tokenLimit(model, this.userContextLimit);
562
618
  if (!force &&
563
- originalTokenCount < this.COMPRESSION_TOKEN_THRESHOLD * tokenLimit(model)) {
619
+ originalTokenCount < this.COMPRESSION_TOKEN_THRESHOLD * contextLimit) {
564
620
  return null;
565
621
  }
566
622
  let compressBeforeIndex = findIndexAfterFraction(curatedHistory, 1 - this.COMPRESSION_PRESERVE_THRESHOLD);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Vybestack LLC
3
+ * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  export {};
@@ -1,15 +1,23 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Vybestack LLC
3
+ * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ // Mock prompts module before imports
8
+ vi.mock('./prompts.js', () => ({
9
+ getCoreSystemPromptAsync: vi
10
+ .fn()
11
+ .mockResolvedValue('Test system instruction'),
12
+ getCompressionPrompt: vi.fn().mockReturnValue('Test compression prompt'),
13
+ initializePromptSystem: vi.fn().mockResolvedValue(undefined),
14
+ }));
7
15
  import { GoogleGenAI, } from '@google/genai';
8
16
  import { findIndexAfterFraction, GeminiClient } from './client.js';
9
- import { AuthType } from './contentGenerator.js';
17
+ import { getCoreSystemPromptAsync } from './prompts.js';
18
+ import { AuthType, } from './contentGenerator.js';
10
19
  import { Config } from '../config/config.js';
11
20
  import { GeminiEventType, Turn } from './turn.js';
12
- import { getCoreSystemPrompt } from './prompts.js';
13
21
  import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
14
22
  import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
15
23
  import { setSimulate429 } from '../utils/testUtils.js';
@@ -60,14 +68,10 @@ vi.mock('./turn', () => {
60
68
  };
61
69
  });
62
70
  vi.mock('../config/config.js');
63
- vi.mock('./prompts');
64
71
  vi.mock('../utils/getFolderStructure', () => ({
65
72
  getFolderStructure: vi.fn().mockResolvedValue('Mock Folder Structure'),
66
73
  }));
67
74
  vi.mock('../utils/errorReporting', () => ({ reportError: vi.fn() }));
68
- vi.mock('../utils/nextSpeakerChecker', () => ({
69
- checkNextSpeaker: vi.fn().mockResolvedValue(null),
70
- }));
71
75
  vi.mock('../utils/generateContentResponseUtilities', () => ({
72
76
  getResponseText: (result) => result.candidates?.[0]?.content?.parts?.map((part) => part.text).join('') ||
73
77
  undefined,
@@ -131,6 +135,8 @@ describe('Gemini Client (client.ts)', () => {
131
135
  let client;
132
136
  beforeEach(async () => {
133
137
  vi.resetAllMocks();
138
+ // Re-setup prompts mocks after reset
139
+ vi.mocked(getCoreSystemPromptAsync).mockResolvedValue('Test system instruction');
134
140
  // Re-setup mocks after reset
135
141
  vi.mocked(ComplexityAnalyzer).mockImplementation(() => ({
136
142
  analyzeComplexity: vi.fn().mockReturnValue({
@@ -205,7 +211,11 @@ describe('Gemini Client (client.ts)', () => {
205
211
  setQuotaErrorOccurred: vi.fn(),
206
212
  getNoBrowser: vi.fn().mockReturnValue(false),
207
213
  getUsageStatisticsEnabled: vi.fn().mockReturnValue(true),
208
- getIdeMode: vi.fn().mockReturnValue(false),
214
+ getIdeModeFeature: vi.fn().mockReturnValue(false),
215
+ getIdeMode: vi.fn().mockReturnValue(true),
216
+ getWorkspaceContext: vi.fn().mockReturnValue({
217
+ getDirectories: vi.fn().mockReturnValue(['/test/dir']),
218
+ }),
209
219
  getGeminiClient: vi.fn(),
210
220
  getDebugMode: vi.fn().mockReturnValue(false),
211
221
  setFallbackMode: vi.fn(),
@@ -349,12 +359,12 @@ describe('Gemini Client (client.ts)', () => {
349
359
  model: 'test-model',
350
360
  config: {
351
361
  abortSignal,
352
- systemInstruction: getCoreSystemPrompt(''),
362
+ systemInstruction: 'Test system instruction',
353
363
  temperature: 0.5,
354
364
  topP: 1,
355
365
  },
356
366
  contents,
357
- });
367
+ }, 'test-session-id');
358
368
  });
359
369
  });
360
370
  describe('generateJson', () => {
@@ -362,20 +372,45 @@ describe('Gemini Client (client.ts)', () => {
362
372
  const contents = [{ role: 'user', parts: [{ text: 'hello' }] }];
363
373
  const schema = { type: 'string' };
364
374
  const abortSignal = new AbortController().signal;
365
- // Mock countTokens
375
+ // Mock lazyInitialize to prevent it from overriding our mock
376
+ client['lazyInitialize'] = vi.fn().mockResolvedValue(undefined);
377
+ // Track the arguments manually
378
+ let capturedRequest;
379
+ let capturedPromptId;
366
380
  const mockGenerator = {
367
381
  countTokens: vi.fn().mockResolvedValue({ totalTokens: 1 }),
368
- generateContent: mockGenerateContentFn,
382
+ generateContent: vi.fn(async (request, promptId) => {
383
+ capturedRequest = request;
384
+ capturedPromptId = promptId;
385
+ return {
386
+ candidates: [
387
+ {
388
+ content: {
389
+ parts: [{ text: '{"key": "value"}' }],
390
+ },
391
+ },
392
+ ],
393
+ };
394
+ }),
369
395
  generateContentStream: vi.fn(),
370
396
  embedContent: vi.fn(),
371
397
  };
372
398
  client['contentGenerator'] = mockGenerator;
373
- await client.generateJson(contents, schema, abortSignal);
374
- expect(mockGenerateContentFn).toHaveBeenCalledWith({
399
+ try {
400
+ await client.generateJson(contents, schema, abortSignal);
401
+ }
402
+ catch (error) {
403
+ console.error('Error in generateJson:', error);
404
+ throw error;
405
+ }
406
+ // Check the captured arguments
407
+ expect(capturedRequest).toBeDefined();
408
+ expect(capturedPromptId).toBe('test-session-id');
409
+ expect(capturedRequest).toMatchObject({
375
410
  model: 'test-model', // Should use current model from config
376
411
  config: {
377
412
  abortSignal,
378
- systemInstruction: getCoreSystemPrompt(''),
413
+ systemInstruction: 'Test system instruction',
379
414
  temperature: 0,
380
415
  topP: 1,
381
416
  responseSchema: schema,
@@ -390,17 +425,37 @@ describe('Gemini Client (client.ts)', () => {
390
425
  const abortSignal = new AbortController().signal;
391
426
  const customModel = 'custom-json-model';
392
427
  const customConfig = { temperature: 0.9, topK: 20 };
428
+ // Mock lazyInitialize to prevent it from overriding our mock
429
+ client['lazyInitialize'] = vi.fn().mockResolvedValue(undefined);
430
+ // Track the arguments manually
431
+ let capturedRequest;
432
+ let capturedPromptId;
393
433
  const mockGenerator = {
394
434
  countTokens: vi.fn().mockResolvedValue({ totalTokens: 1 }),
395
- generateContent: mockGenerateContentFn,
435
+ generateContent: vi.fn(async (request, promptId) => {
436
+ capturedRequest = request;
437
+ capturedPromptId = promptId;
438
+ return {
439
+ candidates: [
440
+ {
441
+ content: {
442
+ parts: [{ text: '{"key": "value"}' }],
443
+ },
444
+ },
445
+ ],
446
+ };
447
+ }),
396
448
  };
397
449
  client['contentGenerator'] = mockGenerator;
398
450
  await client.generateJson(contents, schema, abortSignal, customModel, customConfig);
399
- expect(mockGenerateContentFn).toHaveBeenCalledWith({
451
+ // Check the captured arguments
452
+ expect(capturedRequest).toBeDefined();
453
+ expect(capturedPromptId).toBe('test-session-id');
454
+ expect(capturedRequest).toMatchObject({
400
455
  model: customModel,
401
456
  config: {
402
457
  abortSignal,
403
- systemInstruction: getCoreSystemPrompt(''),
458
+ systemInstruction: 'Test system instruction',
404
459
  temperature: 0.9,
405
460
  topP: 1, // from default
406
461
  topK: 20,
@@ -626,7 +681,7 @@ describe('Gemini Client (client.ts)', () => {
626
681
  });
627
682
  });
628
683
  describe('sendMessageStream', () => {
629
- it('should include IDE context when ideMode is enabled', async () => {
684
+ it('should include IDE context when ideModeFeature is enabled', async () => {
630
685
  // Arrange
631
686
  vi.mocked(ideContext.getIdeContext).mockReturnValue({
632
687
  workspaceState: {
@@ -649,7 +704,7 @@ describe('Gemini Client (client.ts)', () => {
649
704
  ],
650
705
  },
651
706
  });
652
- vi.spyOn(client['config'], 'getIdeMode').mockReturnValue(true);
707
+ vi.spyOn(client['config'], 'getIdeModeFeature').mockReturnValue(true);
653
708
  const mockStream = (async function* () {
654
709
  yield { type: 'content', value: 'Hello' };
655
710
  })();
@@ -686,14 +741,14 @@ Here are some other files the user has open, with the most recent at the top:
686
741
  const expectedRequest = [{ text: expectedContext }, ...initialRequest];
687
742
  expect(mockTurnRunFn).toHaveBeenCalledWith(expectedRequest, expect.any(Object));
688
743
  });
689
- it('should not add context if ideMode is enabled but no open files', async () => {
744
+ it('should not add context if ideModeFeature is enabled but no open files', async () => {
690
745
  // Arrange
691
746
  vi.mocked(ideContext.getIdeContext).mockReturnValue({
692
747
  workspaceState: {
693
748
  openFiles: [],
694
749
  },
695
750
  });
696
- vi.spyOn(client['config'], 'getIdeMode').mockReturnValue(true);
751
+ vi.spyOn(client['config'], 'getIdeModeFeature').mockReturnValue(true);
697
752
  const mockStream = (async function* () {
698
753
  yield { type: 'content', value: 'Hello' };
699
754
  })();
@@ -718,7 +773,7 @@ Here are some other files the user has open, with the most recent at the top:
718
773
  expect(ideContext.getIdeContext).toHaveBeenCalled();
719
774
  expect(mockTurnRunFn).toHaveBeenCalledWith(initialRequest, expect.any(Object));
720
775
  });
721
- it('should add context if ideMode is enabled and there is one active file', async () => {
776
+ it('should add context if ideModeFeature is enabled and there is one active file', async () => {
722
777
  // Arrange
723
778
  vi.mocked(ideContext.getIdeContext).mockReturnValue({
724
779
  workspaceState: {
@@ -733,7 +788,7 @@ Here are some other files the user has open, with the most recent at the top:
733
788
  ],
734
789
  },
735
790
  });
736
- vi.spyOn(client['config'], 'getIdeMode').mockReturnValue(true);
791
+ vi.spyOn(client['config'], 'getIdeModeFeature').mockReturnValue(true);
737
792
  const mockStream = (async function* () {
738
793
  yield { type: 'content', value: 'Hello' };
739
794
  })();
@@ -767,7 +822,7 @@ This is the selected text in the file:
767
822
  const expectedRequest = [{ text: expectedContext }, ...initialRequest];
768
823
  expect(mockTurnRunFn).toHaveBeenCalledWith(expectedRequest, expect.any(Object));
769
824
  });
770
- it('should add context if ideMode is enabled and there are open files but no active file', async () => {
825
+ it('should add context if ideModeFeature is enabled and there are open files but no active file', async () => {
771
826
  // Arrange
772
827
  vi.mocked(ideContext.getIdeContext).mockReturnValue({
773
828
  workspaceState: {
@@ -783,7 +838,7 @@ This is the selected text in the file:
783
838
  ],
784
839
  },
785
840
  });
786
- vi.spyOn(client['config'], 'getIdeMode').mockReturnValue(true);
841
+ vi.spyOn(client['config'], 'getIdeModeFeature').mockReturnValue(true);
787
842
  const mockStream = (async function* () {
788
843
  yield { type: 'content', value: 'Hello' };
789
844
  })();
@@ -846,7 +901,7 @@ Here are some files the user has open, with the most recent at the top:
846
901
  // Assert
847
902
  expect(finalResult).toBeInstanceOf(Turn);
848
903
  });
849
- it('should stop infinite loop after MAX_TURNS when nextSpeaker always returns model', async () => {
904
+ it.skip('should stop infinite loop after MAX_TURNS when nextSpeaker always returns model', async () => {
850
905
  // Get the mocked checkNextSpeaker function and configure it to trigger infinite loop
851
906
  const { checkNextSpeaker } = await import('../utils/nextSpeakerChecker.js');
852
907
  const mockCheckNextSpeaker = vi.mocked(checkNextSpeaker);
@@ -854,6 +909,16 @@ Here are some files the user has open, with the most recent at the top:
854
909
  next_speaker: 'model',
855
910
  reasoning: 'Test case - always continue',
856
911
  });
912
+ // Mock provider manager to return 'gemini' provider
913
+ const mockProviderManager = {
914
+ getActiveProviderName: vi.fn().mockReturnValue('gemini'),
915
+ getActiveProvider: vi.fn().mockReturnValue(null),
916
+ };
917
+ const mockContentGenConfig = {
918
+ model: 'test-model',
919
+ providerManager: mockProviderManager,
920
+ };
921
+ vi.spyOn(client['config'], 'getContentGeneratorConfig').mockReturnValue(mockContentGenConfig);
857
922
  // Mock Turn to have no pending tool calls (which would allow nextSpeaker check)
858
923
  const mockStream = (async function* () {
859
924
  yield { type: 'content', value: 'Continue...' };
@@ -952,7 +1017,7 @@ Here are some files the user has open, with the most recent at the top:
952
1017
  expect(events).toEqual([{ type: GeminiEventType.MaxSessionTurns }]);
953
1018
  expect(mockTurnRunFn).toHaveBeenCalledTimes(MAX_SESSION_TURNS);
954
1019
  });
955
- it('should respect MAX_TURNS limit even when turns parameter is set to a large value', async () => {
1020
+ it.skip('should respect MAX_TURNS limit even when turns parameter is set to a large value', async () => {
956
1021
  // This test verifies that the infinite loop protection works even when
957
1022
  // someone tries to bypass it by calling with a very large turns value
958
1023
  // Get the mocked checkNextSpeaker function and configure it to trigger infinite loop
@@ -1056,6 +1121,8 @@ Here are some files the user has open, with the most recent at the top:
1056
1121
  expect(actualCall[0]).toHaveProperty('config');
1057
1122
  expect(actualCall[0].config).toHaveProperty('abortSignal');
1058
1123
  expect(actualCall[0].config).toHaveProperty('systemInstruction');
1124
+ // Verify prompt_id was passed
1125
+ expect(actualCall[1]).toBe('test-session-id');
1059
1126
  });
1060
1127
  });
1061
1128
  describe('tryCompressChat model usage', () => {