@vybestack/llxprt-code-core 0.1.19-alpha → 0.1.19-gamma

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 (553) hide show
  1. package/README.md +49 -2
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.js +5 -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/precedence.d.ts +55 -0
  9. package/dist/src/auth/precedence.js +211 -0
  10. package/dist/src/auth/precedence.js.map +1 -0
  11. package/dist/src/auth/qwen-device-flow.d.ts +45 -0
  12. package/dist/src/auth/qwen-device-flow.js +179 -0
  13. package/dist/src/auth/qwen-device-flow.js.map +1 -0
  14. package/dist/src/auth/token-store.d.ts +66 -0
  15. package/dist/src/auth/token-store.js +151 -0
  16. package/dist/src/auth/token-store.js.map +1 -0
  17. package/dist/src/auth/types.d.ts +130 -0
  18. package/dist/src/auth/types.js +60 -0
  19. package/dist/src/auth/types.js.map +1 -0
  20. package/dist/src/code_assist/converter.d.ts +2 -1
  21. package/dist/src/code_assist/converter.js +1 -1
  22. package/dist/src/code_assist/converter.js.map +1 -1
  23. package/dist/src/code_assist/oauth2.js +2 -1
  24. package/dist/src/code_assist/oauth2.js.map +1 -1
  25. package/dist/src/config/config.d.ts +61 -2
  26. package/dist/src/config/config.js +134 -4
  27. package/dist/src/config/config.js.map +1 -1
  28. package/dist/src/config/endpoints.d.ts +60 -0
  29. package/dist/src/config/endpoints.js +126 -0
  30. package/dist/src/config/endpoints.js.map +1 -0
  31. package/dist/src/config/profileManager.d.ts +14 -4
  32. package/dist/src/config/profileManager.js +90 -11
  33. package/dist/src/config/profileManager.js.map +1 -1
  34. package/dist/src/core/client.js +9 -12
  35. package/dist/src/core/client.js.map +1 -1
  36. package/dist/src/core/contentGenerator.d.ts +4 -1
  37. package/dist/src/core/contentGenerator.js +3 -0
  38. package/dist/src/core/contentGenerator.js.map +1 -1
  39. package/dist/src/core/logger.d.ts +1 -0
  40. package/dist/src/core/logger.js +18 -0
  41. package/dist/src/core/logger.js.map +1 -1
  42. package/dist/src/core/loggingContentGenerator.d.ts +24 -0
  43. package/dist/src/core/loggingContentGenerator.js +89 -0
  44. package/dist/src/core/loggingContentGenerator.js.map +1 -0
  45. package/dist/src/core/nonInteractiveToolExecutor.js +17 -0
  46. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  47. package/dist/src/core/subagent.js +12 -10
  48. package/dist/src/core/subagent.js.map +1 -1
  49. package/dist/src/ide/ide-client.d.ts +1 -1
  50. package/dist/src/ide/ide-client.js +21 -7
  51. package/dist/src/ide/ide-client.js.map +1 -1
  52. package/dist/src/index.d.ts +11 -0
  53. package/dist/src/index.js +12 -0
  54. package/dist/src/index.js.map +1 -1
  55. package/dist/src/providers/BaseProvider.d.ts +149 -0
  56. package/dist/src/providers/BaseProvider.js +315 -0
  57. package/dist/src/providers/BaseProvider.js.map +1 -0
  58. package/dist/src/providers/IProvider.d.ts +1 -0
  59. package/dist/src/providers/IProviderManager.d.ts +5 -0
  60. package/dist/src/providers/LoggingProviderWrapper.d.ts +54 -0
  61. package/dist/src/providers/LoggingProviderWrapper.js +350 -0
  62. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -0
  63. package/dist/src/providers/ProviderManager.d.ts +20 -1
  64. package/dist/src/providers/ProviderManager.js +236 -14
  65. package/dist/src/providers/ProviderManager.js.map +1 -1
  66. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +20 -6
  67. package/dist/src/providers/anthropic/AnthropicProvider.js +172 -26
  68. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  69. package/dist/src/providers/gemini/GeminiProvider.d.ts +16 -7
  70. package/dist/src/providers/gemini/GeminiProvider.js +163 -148
  71. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  72. package/dist/src/providers/logging/ProviderContentExtractor.d.ts +27 -0
  73. package/dist/src/providers/logging/ProviderContentExtractor.js +198 -0
  74. package/dist/src/providers/logging/ProviderContentExtractor.js.map +1 -0
  75. package/dist/src/providers/logging/ProviderPerformanceTracker.d.ts +43 -0
  76. package/dist/src/providers/logging/ProviderPerformanceTracker.js +98 -0
  77. package/dist/src/providers/logging/ProviderPerformanceTracker.js.map +1 -0
  78. package/dist/src/providers/openai/OpenAIProvider.d.ts +53 -6
  79. package/dist/src/providers/openai/OpenAIProvider.js +373 -40
  80. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  81. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +1 -1
  82. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +1 -0
  83. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +1 -1
  84. package/dist/src/providers/openai/syntheticToolResponses.d.ts +52 -0
  85. package/dist/src/providers/openai/syntheticToolResponses.js +129 -0
  86. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -0
  87. package/dist/src/providers/types.d.ts +47 -0
  88. package/dist/src/services/git-stats-service.d.ts +32 -0
  89. package/dist/src/services/git-stats-service.js +22 -0
  90. package/dist/src/services/git-stats-service.js.map +1 -0
  91. package/dist/src/services/loopDetectionService.js +10 -6
  92. package/dist/src/services/loopDetectionService.js.map +1 -1
  93. package/dist/src/services/shellExecutionService.js +44 -8
  94. package/dist/src/services/shellExecutionService.js.map +1 -1
  95. package/dist/src/settings/SettingsService.d.ts +32 -0
  96. package/dist/src/settings/SettingsService.js +204 -0
  97. package/dist/src/settings/SettingsService.js.map +1 -0
  98. package/dist/src/settings/settingsServiceInstance.d.ts +12 -0
  99. package/dist/src/settings/settingsServiceInstance.js +24 -0
  100. package/dist/src/settings/settingsServiceInstance.js.map +1 -0
  101. package/dist/src/settings/types.d.ts +141 -0
  102. package/dist/src/settings/types.js +5 -0
  103. package/dist/src/settings/types.js.map +1 -0
  104. package/dist/src/storage/ConversationFileWriter.d.ts +16 -0
  105. package/dist/src/storage/ConversationFileWriter.js +69 -0
  106. package/dist/src/storage/ConversationFileWriter.js.map +1 -0
  107. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +8 -0
  108. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +56 -3
  109. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  110. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
  111. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +11 -0
  112. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  113. package/dist/src/telemetry/constants.d.ts +5 -0
  114. package/dist/src/telemetry/constants.js +5 -0
  115. package/dist/src/telemetry/constants.js.map +1 -1
  116. package/dist/src/telemetry/loggers.d.ts +5 -1
  117. package/dist/src/telemetry/loggers.js +87 -1
  118. package/dist/src/telemetry/loggers.js.map +1 -1
  119. package/dist/src/telemetry/metrics.d.ts +2 -1
  120. package/dist/src/telemetry/metrics.js +7 -1
  121. package/dist/src/telemetry/metrics.js.map +1 -1
  122. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  123. package/dist/src/telemetry/tool-call-decision.js +29 -0
  124. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  125. package/dist/src/telemetry/types.d.ts +56 -1
  126. package/dist/src/telemetry/types.js +123 -0
  127. package/dist/src/telemetry/types.js.map +1 -1
  128. package/dist/src/telemetry/uiTelemetry.d.ts +2 -1
  129. package/dist/src/telemetry/uiTelemetry.js +1 -1
  130. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  131. package/dist/src/tools/diffOptions.d.ts +2 -0
  132. package/dist/src/tools/diffOptions.js +28 -0
  133. package/dist/src/tools/diffOptions.js.map +1 -1
  134. package/dist/src/tools/edit.d.ts +4 -0
  135. package/dist/src/tools/edit.js +38 -8
  136. package/dist/src/tools/edit.js.map +1 -1
  137. package/dist/src/tools/mcp-client.d.ts +4 -3
  138. package/dist/src/tools/mcp-client.js +23 -6
  139. package/dist/src/tools/mcp-client.js.map +1 -1
  140. package/dist/src/tools/read-file.js +34 -2
  141. package/dist/src/tools/read-file.js.map +1 -1
  142. package/dist/src/tools/todo-pause.d.ts +22 -0
  143. package/dist/src/tools/todo-pause.js +93 -0
  144. package/dist/src/tools/todo-pause.js.map +1 -0
  145. package/dist/src/tools/tool-error.d.ts +4 -0
  146. package/dist/src/tools/tool-error.js +4 -0
  147. package/dist/src/tools/tool-error.js.map +1 -1
  148. package/dist/src/tools/tool-registry.js +3 -3
  149. package/dist/src/tools/tool-registry.js.map +1 -1
  150. package/dist/src/tools/tools.d.ts +7 -0
  151. package/dist/src/tools/tools.js.map +1 -1
  152. package/dist/src/tools/write-file.d.ts +4 -0
  153. package/dist/src/tools/write-file.js +90 -16
  154. package/dist/src/tools/write-file.js.map +1 -1
  155. package/dist/src/types/modelParams.d.ts +2 -0
  156. package/dist/src/utils/environmentContext.js +1 -1
  157. package/dist/src/utils/errors.d.ts +3 -0
  158. package/dist/src/utils/errors.js +6 -0
  159. package/dist/src/utils/errors.js.map +1 -1
  160. package/dist/src/utils/fileUtils.d.ts +7 -0
  161. package/dist/src/utils/fileUtils.js +9 -0
  162. package/dist/src/utils/fileUtils.js.map +1 -1
  163. package/package.json +4 -2
  164. package/dist/src/code_assist/converter.test.d.ts +0 -6
  165. package/dist/src/code_assist/converter.test.js +0 -232
  166. package/dist/src/code_assist/converter.test.js.map +0 -1
  167. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  168. package/dist/src/code_assist/oauth2.test.js +0 -370
  169. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  170. package/dist/src/code_assist/server.test.d.ts +0 -6
  171. package/dist/src/code_assist/server.test.js +0 -131
  172. package/dist/src/code_assist/server.test.js.map +0 -1
  173. package/dist/src/code_assist/setup.test.d.ts +0 -6
  174. package/dist/src/code_assist/setup.test.js +0 -65
  175. package/dist/src/code_assist/setup.test.js.map +0 -1
  176. package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
  177. package/dist/src/config/config.alwaysAllow.test.js +0 -84
  178. package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
  179. package/dist/src/config/config.test.d.ts +0 -6
  180. package/dist/src/config/config.test.js +0 -369
  181. package/dist/src/config/config.test.js.map +0 -1
  182. package/dist/src/config/flashFallback.test.d.ts +0 -6
  183. package/dist/src/config/flashFallback.test.js +0 -91
  184. package/dist/src/config/flashFallback.test.js.map +0 -1
  185. package/dist/src/core/client.test.d.ts +0 -6
  186. package/dist/src/core/client.test.js +0 -1322
  187. package/dist/src/core/client.test.js.map +0 -1
  188. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  189. package/dist/src/core/contentGenerator.test.js +0 -103
  190. package/dist/src/core/contentGenerator.test.js.map +0 -1
  191. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  192. package/dist/src/core/coreToolScheduler.test.js +0 -637
  193. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  194. package/dist/src/core/geminiChat.test.d.ts +0 -6
  195. package/dist/src/core/geminiChat.test.js +0 -425
  196. package/dist/src/core/geminiChat.test.js.map +0 -1
  197. package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
  198. package/dist/src/core/googleGenAIWrapper.test.js +0 -104
  199. package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
  200. package/dist/src/core/logger.test.d.ts +0 -6
  201. package/dist/src/core/logger.test.js +0 -438
  202. package/dist/src/core/logger.test.js.map +0 -1
  203. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
  204. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
  205. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
  206. package/dist/src/core/prompts-async.test.d.ts +0 -6
  207. package/dist/src/core/prompts-async.test.js +0 -115
  208. package/dist/src/core/prompts-async.test.js.map +0 -1
  209. package/dist/src/core/prompts.test.d.ts +0 -6
  210. package/dist/src/core/prompts.test.js +0 -68
  211. package/dist/src/core/prompts.test.js.map +0 -1
  212. package/dist/src/core/subagent.test.d.ts +0 -6
  213. package/dist/src/core/subagent.test.js +0 -519
  214. package/dist/src/core/subagent.test.js.map +0 -1
  215. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  216. package/dist/src/core/tokenLimits.test.js +0 -66
  217. package/dist/src/core/tokenLimits.test.js.map +0 -1
  218. package/dist/src/core/turn.test.d.ts +0 -6
  219. package/dist/src/core/turn.test.js +0 -366
  220. package/dist/src/core/turn.test.js.map +0 -1
  221. package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
  222. package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
  223. package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
  224. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  225. package/dist/src/ide/ide-installer.test.js +0 -55
  226. package/dist/src/ide/ide-installer.test.js.map +0 -1
  227. package/dist/src/ide/ideContext.test.d.ts +0 -6
  228. package/dist/src/ide/ideContext.test.js +0 -265
  229. package/dist/src/ide/ideContext.test.js.map +0 -1
  230. package/dist/src/index.test.d.ts +0 -6
  231. package/dist/src/index.test.js +0 -12
  232. package/dist/src/index.test.js.map +0 -1
  233. package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
  234. package/dist/src/integration-tests/todo-system.test.js +0 -46
  235. package/dist/src/integration-tests/todo-system.test.js.map +0 -1
  236. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  237. package/dist/src/mcp/google-auth-provider.test.js +0 -54
  238. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  239. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  240. package/dist/src/mcp/oauth-provider.test.js +0 -602
  241. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  242. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  243. package/dist/src/mcp/oauth-token-storage.test.js +0 -205
  244. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  245. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  246. package/dist/src/mcp/oauth-utils.test.js +0 -144
  247. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  248. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
  249. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
  250. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
  251. package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
  252. package/dist/src/parsers/TextToolCallParser.test.js +0 -225
  253. package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
  254. package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
  255. package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
  256. package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
  257. package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
  258. package/dist/src/prompt-config/prompt-cache.test.js +0 -437
  259. package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
  260. package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
  261. package/dist/src/prompt-config/prompt-installer.test.js +0 -503
  262. package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
  263. package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
  264. package/dist/src/prompt-config/prompt-loader.test.js +0 -413
  265. package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
  266. package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
  267. package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
  268. package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
  269. package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
  270. package/dist/src/prompt-config/prompt-service.test.js +0 -811
  271. package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
  272. package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
  273. package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
  274. package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
  275. package/dist/src/providers/ProviderManager.test.d.ts +0 -6
  276. package/dist/src/providers/ProviderManager.test.js +0 -284
  277. package/dist/src/providers/ProviderManager.test.js.map +0 -1
  278. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
  279. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
  280. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
  281. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
  282. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
  283. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
  284. package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
  285. package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
  286. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
  287. package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
  288. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
  289. package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
  290. package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
  291. package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
  292. package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
  293. package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
  294. package/dist/src/providers/integration/multi-provider.integration.test.js +0 -292
  295. package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
  296. package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
  297. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
  298. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
  299. package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
  300. package/dist/src/providers/openai/ConversationCache.test.js +0 -113
  301. package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
  302. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
  303. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
  304. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
  305. package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
  306. package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
  307. package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
  308. package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
  309. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
  310. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
  311. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
  312. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
  313. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
  314. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
  315. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
  316. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
  317. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
  318. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
  319. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
  320. package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
  321. package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
  322. package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
  323. package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
  324. package/dist/src/providers/openai/OpenAIProvider.test.js +0 -620
  325. package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
  326. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
  327. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
  328. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
  329. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
  330. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
  331. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
  332. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
  333. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
  334. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
  335. package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
  336. package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
  337. package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
  338. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
  339. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
  340. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
  341. package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
  342. package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
  343. package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
  344. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
  345. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
  346. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
  347. package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
  348. package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
  349. package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
  350. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  351. package/dist/src/services/fileDiscoveryService.test.js +0 -143
  352. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  353. package/dist/src/services/gitService.test.d.ts +0 -6
  354. package/dist/src/services/gitService.test.js +0 -209
  355. package/dist/src/services/gitService.test.js.map +0 -1
  356. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  357. package/dist/src/services/loopDetectionService.test.js +0 -345
  358. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  359. package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
  360. package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
  361. package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
  362. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  363. package/dist/src/services/shellExecutionService.test.js +0 -272
  364. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  365. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
  366. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
  367. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
  368. package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
  369. package/dist/src/services/shellExecutionService.windows.test.js +0 -79
  370. package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
  371. package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
  372. package/dist/src/services/tool-call-tracker-service.test.js +0 -99
  373. package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
  374. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  375. package/dist/src/telemetry/loggers.test.js +0 -572
  376. package/dist/src/telemetry/loggers.test.js.map +0 -1
  377. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  378. package/dist/src/telemetry/metrics.test.js +0 -162
  379. package/dist/src/telemetry/metrics.test.js.map +0 -1
  380. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  381. package/dist/src/telemetry/telemetry.test.js +0 -54
  382. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  383. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  384. package/dist/src/telemetry/uiTelemetry.test.js +0 -517
  385. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  386. package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
  387. package/dist/src/tools/ToolFormatter.test.js +0 -349
  388. package/dist/src/tools/ToolFormatter.test.js.map +0 -1
  389. package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
  390. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
  391. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
  392. package/dist/src/tools/edit.test.d.ts +0 -6
  393. package/dist/src/tools/edit.test.js +0 -688
  394. package/dist/src/tools/edit.test.js.map +0 -1
  395. package/dist/src/tools/glob.test.d.ts +0 -6
  396. package/dist/src/tools/glob.test.js +0 -332
  397. package/dist/src/tools/glob.test.js.map +0 -1
  398. package/dist/src/tools/grep.test.d.ts +0 -6
  399. package/dist/src/tools/grep.test.js +0 -272
  400. package/dist/src/tools/grep.test.js.map +0 -1
  401. package/dist/src/tools/ls.test.d.ts +0 -6
  402. package/dist/src/tools/ls.test.js +0 -357
  403. package/dist/src/tools/ls.test.js.map +0 -1
  404. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  405. package/dist/src/tools/mcp-client.test.js +0 -575
  406. package/dist/src/tools/mcp-client.test.js.map +0 -1
  407. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  408. package/dist/src/tools/mcp-tool.test.js +0 -501
  409. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  410. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  411. package/dist/src/tools/memoryTool.test.js +0 -266
  412. package/dist/src/tools/memoryTool.test.js.map +0 -1
  413. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  414. package/dist/src/tools/modifiable-tool.test.js +0 -193
  415. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  416. package/dist/src/tools/read-file.test.d.ts +0 -6
  417. package/dist/src/tools/read-file.test.js +0 -313
  418. package/dist/src/tools/read-file.test.js.map +0 -1
  419. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  420. package/dist/src/tools/read-many-files.test.js +0 -644
  421. package/dist/src/tools/read-many-files.test.js.map +0 -1
  422. package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
  423. package/dist/src/tools/shell.multibyte.test.js +0 -75
  424. package/dist/src/tools/shell.multibyte.test.js.map +0 -1
  425. package/dist/src/tools/shell.test.d.ts +0 -6
  426. package/dist/src/tools/shell.test.js +0 -350
  427. package/dist/src/tools/shell.test.js.map +0 -1
  428. package/dist/src/tools/todo-read.test.d.ts +0 -6
  429. package/dist/src/tools/todo-read.test.js +0 -162
  430. package/dist/src/tools/todo-read.test.js.map +0 -1
  431. package/dist/src/tools/todo-schemas.test.d.ts +0 -6
  432. package/dist/src/tools/todo-schemas.test.js +0 -341
  433. package/dist/src/tools/todo-schemas.test.js.map +0 -1
  434. package/dist/src/tools/todo-store.test.d.ts +0 -6
  435. package/dist/src/tools/todo-store.test.js +0 -169
  436. package/dist/src/tools/todo-store.test.js.map +0 -1
  437. package/dist/src/tools/todo-write.test.d.ts +0 -6
  438. package/dist/src/tools/todo-write.test.js +0 -226
  439. package/dist/src/tools/todo-write.test.js.map +0 -1
  440. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  441. package/dist/src/tools/tool-registry.test.js +0 -468
  442. package/dist/src/tools/tool-registry.test.js.map +0 -1
  443. package/dist/src/tools/tools.test.d.ts +0 -6
  444. package/dist/src/tools/tools.test.js +0 -117
  445. package/dist/src/tools/tools.test.js.map +0 -1
  446. package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
  447. package/dist/src/tools/web-fetch.integration.test.js +0 -532
  448. package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
  449. package/dist/src/tools/web-search.test.d.ts +0 -6
  450. package/dist/src/tools/web-search.test.js +0 -229
  451. package/dist/src/tools/web-search.test.js.map +0 -1
  452. package/dist/src/tools/write-file.test.d.ts +0 -6
  453. package/dist/src/tools/write-file.test.js +0 -464
  454. package/dist/src/tools/write-file.test.js.map +0 -1
  455. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  456. package/dist/src/utils/bfsFileSearch.test.js +0 -191
  457. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  458. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  459. package/dist/src/utils/editCorrector.test.js +0 -564
  460. package/dist/src/utils/editCorrector.test.js.map +0 -1
  461. package/dist/src/utils/editor.test.d.ts +0 -6
  462. package/dist/src/utils/editor.test.js +0 -445
  463. package/dist/src/utils/editor.test.js.map +0 -1
  464. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  465. package/dist/src/utils/environmentContext.test.js +0 -139
  466. package/dist/src/utils/environmentContext.test.js.map +0 -1
  467. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  468. package/dist/src/utils/errorReporting.test.js +0 -130
  469. package/dist/src/utils/errorReporting.test.js.map +0 -1
  470. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  471. package/dist/src/utils/fileUtils.test.js +0 -363
  472. package/dist/src/utils/fileUtils.test.js.map +0 -1
  473. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  474. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  475. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  476. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  477. package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
  478. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  479. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  480. package/dist/src/utils/filesearch/ignore.test.js +0 -57
  481. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  482. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  483. package/dist/src/utils/filesearch/result-cache.test.js +0 -47
  484. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  485. package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
  486. package/dist/src/utils/flashFallback.integration.test.js +0 -120
  487. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  488. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  489. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
  490. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  491. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  492. package/dist/src/utils/getFolderStructure.test.js +0 -282
  493. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  494. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  495. package/dist/src/utils/gitIgnoreParser.test.js +0 -154
  496. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  497. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  498. package/dist/src/utils/memoryDiscovery.test.js +0 -181
  499. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  500. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  501. package/dist/src/utils/memoryImportProcessor.test.js +0 -715
  502. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  503. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  504. package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
  505. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  506. package/dist/src/utils/partUtils.test.d.ts +0 -6
  507. package/dist/src/utils/partUtils.test.js +0 -130
  508. package/dist/src/utils/partUtils.test.js.map +0 -1
  509. package/dist/src/utils/paths.test.d.ts +0 -6
  510. package/dist/src/utils/paths.test.js +0 -153
  511. package/dist/src/utils/paths.test.js.map +0 -1
  512. package/dist/src/utils/retry.test.d.ts +0 -6
  513. package/dist/src/utils/retry.test.js +0 -322
  514. package/dist/src/utils/retry.test.js.map +0 -1
  515. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  516. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  517. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  518. package/dist/src/utils/sanitization.test.d.ts +0 -6
  519. package/dist/src/utils/sanitization.test.js +0 -81
  520. package/dist/src/utils/sanitization.test.js.map +0 -1
  521. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  522. package/dist/src/utils/schemaValidator.test.js +0 -146
  523. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  524. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  525. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  526. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  527. package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
  528. package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
  529. package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
  530. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  531. package/dist/src/utils/shell-utils.test.js +0 -200
  532. package/dist/src/utils/shell-utils.test.js.map +0 -1
  533. package/dist/src/utils/summarizer.test.d.ts +0 -6
  534. package/dist/src/utils/summarizer.test.js +0 -131
  535. package/dist/src/utils/summarizer.test.js.map +0 -1
  536. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  537. package/dist/src/utils/systemEncoding.test.js +0 -368
  538. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  539. package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
  540. package/dist/src/utils/toolOutputLimiter.test.js +0 -164
  541. package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
  542. package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
  543. package/dist/src/utils/unicodeUtils.test.js +0 -120
  544. package/dist/src/utils/unicodeUtils.test.js.map +0 -1
  545. package/dist/src/utils/user_account.test.d.ts +0 -6
  546. package/dist/src/utils/user_account.test.js +0 -153
  547. package/dist/src/utils/user_account.test.js.map +0 -1
  548. package/dist/src/utils/user_id.test.d.ts +0 -6
  549. package/dist/src/utils/user_id.test.js +0 -21
  550. package/dist/src/utils/user_id.test.js.map +0 -1
  551. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  552. package/dist/src/utils/workspaceContext.test.js +0 -209
  553. package/dist/src/utils/workspaceContext.test.js.map +0 -1
@@ -1,445 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { vi, describe, it, expect, beforeEach, afterEach, } from 'vitest';
7
- import { checkHasEditorType, getDiffCommand, openDiff, allowEditorTypeInSandbox, isEditorAvailable, } from './editor.js';
8
- import { execSync, spawn } from 'child_process';
9
- vi.mock('child_process', () => ({
10
- execSync: vi.fn(),
11
- spawn: vi.fn(),
12
- }));
13
- const originalPlatform = process.platform;
14
- describe('editor utils', () => {
15
- beforeEach(() => {
16
- vi.clearAllMocks();
17
- delete process.env.SANDBOX;
18
- Object.defineProperty(process, 'platform', {
19
- value: originalPlatform,
20
- writable: true,
21
- });
22
- });
23
- afterEach(() => {
24
- vi.restoreAllMocks();
25
- delete process.env.SANDBOX;
26
- Object.defineProperty(process, 'platform', {
27
- value: originalPlatform,
28
- writable: true,
29
- });
30
- });
31
- describe('checkHasEditorType', () => {
32
- const testCases = [
33
- { editor: 'vscode', commands: ['code'], win32Commands: ['code.cmd'] },
34
- {
35
- editor: 'vscodium',
36
- commands: ['codium'],
37
- win32Commands: ['codium.cmd'],
38
- },
39
- {
40
- editor: 'windsurf',
41
- commands: ['windsurf'],
42
- win32Commands: ['windsurf'],
43
- },
44
- { editor: 'cursor', commands: ['cursor'], win32Commands: ['cursor'] },
45
- { editor: 'vim', commands: ['vim'], win32Commands: ['vim'] },
46
- { editor: 'neovim', commands: ['nvim'], win32Commands: ['nvim'] },
47
- { editor: 'zed', commands: ['zed', 'zeditor'], win32Commands: ['zed'] },
48
- { editor: 'emacs', commands: ['emacs'], win32Commands: ['emacs.exe'] },
49
- ];
50
- for (const { editor, commands, win32Commands } of testCases) {
51
- describe(`${editor}`, () => {
52
- // Non-windows tests
53
- it(`should return true if first command "${commands[0]}" exists on non-windows`, () => {
54
- Object.defineProperty(process, 'platform', { value: 'linux' });
55
- execSync.mockReturnValue(Buffer.from(`/usr/bin/${commands[0]}`));
56
- expect(checkHasEditorType(editor)).toBe(true);
57
- expect(execSync).toHaveBeenCalledWith(`command -v ${commands[0]}`, {
58
- stdio: 'ignore',
59
- });
60
- });
61
- if (commands.length > 1) {
62
- it(`should return true if first command doesn't exist but second command "${commands[1]}" exists on non-windows`, () => {
63
- Object.defineProperty(process, 'platform', { value: 'linux' });
64
- execSync
65
- .mockImplementationOnce(() => {
66
- throw new Error(); // first command not found
67
- })
68
- .mockReturnValueOnce(Buffer.from(`/usr/bin/${commands[1]}`)); // second command found
69
- expect(checkHasEditorType(editor)).toBe(true);
70
- expect(execSync).toHaveBeenCalledTimes(2);
71
- });
72
- }
73
- it(`should return false if none of the commands exist on non-windows`, () => {
74
- Object.defineProperty(process, 'platform', { value: 'linux' });
75
- execSync.mockImplementation(() => {
76
- throw new Error(); // all commands not found
77
- });
78
- expect(checkHasEditorType(editor)).toBe(false);
79
- expect(execSync).toHaveBeenCalledTimes(commands.length);
80
- });
81
- // Windows tests
82
- it(`should return true if first command "${win32Commands[0]}" exists on windows`, () => {
83
- Object.defineProperty(process, 'platform', { value: 'win32' });
84
- execSync.mockReturnValue(Buffer.from(`C:\\Program Files\\...\\${win32Commands[0]}`));
85
- expect(checkHasEditorType(editor)).toBe(true);
86
- expect(execSync).toHaveBeenCalledWith(`where.exe ${win32Commands[0]}`, {
87
- stdio: 'ignore',
88
- });
89
- });
90
- if (win32Commands.length > 1) {
91
- it(`should return true if first command doesn't exist but second command "${win32Commands[1]}" exists on windows`, () => {
92
- Object.defineProperty(process, 'platform', { value: 'win32' });
93
- execSync
94
- .mockImplementationOnce(() => {
95
- throw new Error(); // first command not found
96
- })
97
- .mockReturnValueOnce(Buffer.from(`C:\\Program Files\\...\\${win32Commands[1]}`)); // second command found
98
- expect(checkHasEditorType(editor)).toBe(true);
99
- expect(execSync).toHaveBeenCalledTimes(2);
100
- });
101
- }
102
- it(`should return false if none of the commands exist on windows`, () => {
103
- Object.defineProperty(process, 'platform', { value: 'win32' });
104
- execSync.mockImplementation(() => {
105
- throw new Error(); // all commands not found
106
- });
107
- expect(checkHasEditorType(editor)).toBe(false);
108
- expect(execSync).toHaveBeenCalledTimes(win32Commands.length);
109
- });
110
- });
111
- }
112
- });
113
- describe('getDiffCommand', () => {
114
- const guiEditors = [
115
- { editor: 'vscode', commands: ['code'], win32Commands: ['code.cmd'] },
116
- {
117
- editor: 'vscodium',
118
- commands: ['codium'],
119
- win32Commands: ['codium.cmd'],
120
- },
121
- {
122
- editor: 'windsurf',
123
- commands: ['windsurf'],
124
- win32Commands: ['windsurf'],
125
- },
126
- { editor: 'cursor', commands: ['cursor'], win32Commands: ['cursor'] },
127
- { editor: 'zed', commands: ['zed', 'zeditor'], win32Commands: ['zed'] },
128
- ];
129
- for (const { editor, commands, win32Commands } of guiEditors) {
130
- // Non-windows tests
131
- it(`should use first command "${commands[0]}" when it exists on non-windows`, () => {
132
- Object.defineProperty(process, 'platform', { value: 'linux' });
133
- execSync.mockReturnValue(Buffer.from(`/usr/bin/${commands[0]}`));
134
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
135
- expect(diffCommand).toEqual({
136
- command: commands[0],
137
- args: ['--wait', '--diff', 'old.txt', 'new.txt'],
138
- });
139
- });
140
- if (commands.length > 1) {
141
- it(`should use second command "${commands[1]}" when first doesn't exist on non-windows`, () => {
142
- Object.defineProperty(process, 'platform', { value: 'linux' });
143
- execSync
144
- .mockImplementationOnce(() => {
145
- throw new Error(); // first command not found
146
- })
147
- .mockReturnValueOnce(Buffer.from(`/usr/bin/${commands[1]}`)); // second command found
148
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
149
- expect(diffCommand).toEqual({
150
- command: commands[1],
151
- args: ['--wait', '--diff', 'old.txt', 'new.txt'],
152
- });
153
- });
154
- }
155
- it(`should fall back to last command "${commands[commands.length - 1]}" when none exist on non-windows`, () => {
156
- Object.defineProperty(process, 'platform', { value: 'linux' });
157
- execSync.mockImplementation(() => {
158
- throw new Error(); // all commands not found
159
- });
160
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
161
- expect(diffCommand).toEqual({
162
- command: commands[commands.length - 1],
163
- args: ['--wait', '--diff', 'old.txt', 'new.txt'],
164
- });
165
- });
166
- // Windows tests
167
- it(`should use first command "${win32Commands[0]}" when it exists on windows`, () => {
168
- Object.defineProperty(process, 'platform', { value: 'win32' });
169
- execSync.mockReturnValue(Buffer.from(`C:\\Program Files\\...\\${win32Commands[0]}`));
170
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
171
- expect(diffCommand).toEqual({
172
- command: win32Commands[0],
173
- args: ['--wait', '--diff', 'old.txt', 'new.txt'],
174
- });
175
- });
176
- if (win32Commands.length > 1) {
177
- it(`should use second command "${win32Commands[1]}" when first doesn't exist on windows`, () => {
178
- Object.defineProperty(process, 'platform', { value: 'win32' });
179
- execSync
180
- .mockImplementationOnce(() => {
181
- throw new Error(); // first command not found
182
- })
183
- .mockReturnValueOnce(Buffer.from(`C:\\Program Files\\...\\${win32Commands[1]}`)); // second command found
184
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
185
- expect(diffCommand).toEqual({
186
- command: win32Commands[1],
187
- args: ['--wait', '--diff', 'old.txt', 'new.txt'],
188
- });
189
- });
190
- }
191
- it(`should fall back to last command "${win32Commands[win32Commands.length - 1]}" when none exist on windows`, () => {
192
- Object.defineProperty(process, 'platform', { value: 'win32' });
193
- execSync.mockImplementation(() => {
194
- throw new Error(); // all commands not found
195
- });
196
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
197
- expect(diffCommand).toEqual({
198
- command: win32Commands[win32Commands.length - 1],
199
- args: ['--wait', '--diff', 'old.txt', 'new.txt'],
200
- });
201
- });
202
- }
203
- const terminalEditors = [
204
- { editor: 'vim', command: 'vim' },
205
- { editor: 'neovim', command: 'nvim' },
206
- ];
207
- for (const { editor, command } of terminalEditors) {
208
- it(`should return the correct command for ${editor}`, () => {
209
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
210
- expect(diffCommand).toEqual({
211
- command,
212
- args: [
213
- '-d',
214
- '-i',
215
- 'NONE',
216
- '-c',
217
- 'wincmd h | set readonly | wincmd l',
218
- '-c',
219
- 'highlight DiffAdd cterm=bold ctermbg=22 guibg=#005f00 | highlight DiffChange cterm=bold ctermbg=24 guibg=#005f87 | highlight DiffText ctermbg=21 guibg=#0000af | highlight DiffDelete ctermbg=52 guibg=#5f0000',
220
- '-c',
221
- 'set showtabline=2 | set tabline=[Instructions]\\ :wqa(save\\ &\\ quit)\\ \\|\\ i/esc(toggle\\ edit\\ mode)',
222
- '-c',
223
- 'wincmd h | setlocal statusline=OLD\\ FILE',
224
- '-c',
225
- 'wincmd l | setlocal statusline=%#StatusBold#NEW\\ FILE\\ :wqa(save\\ &\\ quit)\\ \\|\\ i/esc(toggle\\ edit\\ mode)',
226
- '-c',
227
- 'autocmd WinClosed * wqa',
228
- 'old.txt',
229
- 'new.txt',
230
- ],
231
- });
232
- });
233
- }
234
- it('should return the correct command for emacs', () => {
235
- const command = getDiffCommand('old.txt', 'new.txt', 'emacs');
236
- expect(command).toEqual({
237
- command: 'emacs',
238
- args: ['--eval', '(ediff "old.txt" "new.txt")'],
239
- });
240
- });
241
- it('should return null for an unsupported editor', () => {
242
- // @ts-expect-error Testing unsupported editor
243
- const command = getDiffCommand('old.txt', 'new.txt', 'foobar');
244
- expect(command).toBeNull();
245
- });
246
- });
247
- describe('openDiff', () => {
248
- const spawnEditors = [
249
- 'vscode',
250
- 'vscodium',
251
- 'windsurf',
252
- 'cursor',
253
- 'zed',
254
- ];
255
- for (const editor of spawnEditors) {
256
- it(`should call spawn for ${editor}`, async () => {
257
- const mockSpawn = {
258
- on: vi.fn((event, cb) => {
259
- if (event === 'close') {
260
- cb(0);
261
- }
262
- }),
263
- };
264
- spawn.mockReturnValue(mockSpawn);
265
- await openDiff('old.txt', 'new.txt', editor, () => { });
266
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
267
- expect(spawn).toHaveBeenCalledWith(diffCommand.command, diffCommand.args, {
268
- stdio: 'inherit',
269
- shell: true,
270
- });
271
- expect(mockSpawn.on).toHaveBeenCalledWith('close', expect.any(Function));
272
- expect(mockSpawn.on).toHaveBeenCalledWith('error', expect.any(Function));
273
- });
274
- it(`should reject if spawn for ${editor} fails`, async () => {
275
- const mockError = new Error('spawn error');
276
- const mockSpawn = {
277
- on: vi.fn((event, cb) => {
278
- if (event === 'error') {
279
- cb(mockError);
280
- }
281
- }),
282
- };
283
- spawn.mockReturnValue(mockSpawn);
284
- await expect(openDiff('old.txt', 'new.txt', editor, () => { })).rejects.toThrow('spawn error');
285
- });
286
- it(`should reject if ${editor} exits with non-zero code`, async () => {
287
- const mockSpawn = {
288
- on: vi.fn((event, cb) => {
289
- if (event === 'close') {
290
- cb(1);
291
- }
292
- }),
293
- };
294
- spawn.mockReturnValue(mockSpawn);
295
- await expect(openDiff('old.txt', 'new.txt', editor, () => { })).rejects.toThrow(`${editor} exited with code 1`);
296
- });
297
- }
298
- const execSyncEditors = ['vim', 'neovim', 'emacs'];
299
- for (const editor of execSyncEditors) {
300
- it(`should call execSync for ${editor} on non-windows`, async () => {
301
- Object.defineProperty(process, 'platform', { value: 'linux' });
302
- await openDiff('old.txt', 'new.txt', editor, () => { });
303
- expect(execSync).toHaveBeenCalledTimes(1);
304
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
305
- const expectedCommand = `${diffCommand.command} ${diffCommand.args.map((arg) => `"${arg}"`).join(' ')}`;
306
- expect(execSync).toHaveBeenCalledWith(expectedCommand, {
307
- stdio: 'inherit',
308
- encoding: 'utf8',
309
- });
310
- });
311
- it(`should call execSync for ${editor} on windows`, async () => {
312
- Object.defineProperty(process, 'platform', { value: 'win32' });
313
- await openDiff('old.txt', 'new.txt', editor, () => { });
314
- expect(execSync).toHaveBeenCalledTimes(1);
315
- const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
316
- const expectedCommand = `${diffCommand.command} ${diffCommand.args.join(' ')}`;
317
- expect(execSync).toHaveBeenCalledWith(expectedCommand, {
318
- stdio: 'inherit',
319
- encoding: 'utf8',
320
- });
321
- });
322
- }
323
- it('should log an error if diff command is not available', async () => {
324
- const consoleErrorSpy = vi
325
- .spyOn(console, 'error')
326
- .mockImplementation(() => { });
327
- // @ts-expect-error Testing unsupported editor
328
- await openDiff('old.txt', 'new.txt', 'foobar', () => { });
329
- expect(consoleErrorSpy).toHaveBeenCalledWith('No diff tool available. Install a supported editor.');
330
- });
331
- describe('onEditorClose callback', () => {
332
- it('should call onEditorClose for execSync editors', async () => {
333
- execSync.mockReturnValue(Buffer.from(`/usr/bin/`));
334
- const onEditorClose = vi.fn();
335
- await openDiff('old.txt', 'new.txt', 'vim', onEditorClose);
336
- expect(execSync).toHaveBeenCalledTimes(1);
337
- expect(onEditorClose).toHaveBeenCalledTimes(1);
338
- });
339
- it('should call onEditorClose for execSync editors when an error is thrown', async () => {
340
- execSync.mockImplementation(() => {
341
- throw new Error('test error');
342
- });
343
- const onEditorClose = vi.fn();
344
- openDiff('old.txt', 'new.txt', 'vim', onEditorClose);
345
- expect(execSync).toHaveBeenCalledTimes(1);
346
- expect(onEditorClose).toHaveBeenCalledTimes(1);
347
- });
348
- it('should not call onEditorClose for spawn editors', async () => {
349
- const onEditorClose = vi.fn();
350
- const mockSpawn = {
351
- on: vi.fn((event, cb) => {
352
- if (event === 'close') {
353
- cb(0);
354
- }
355
- }),
356
- };
357
- spawn.mockReturnValue(mockSpawn);
358
- await openDiff('old.txt', 'new.txt', 'vscode', onEditorClose);
359
- expect(spawn).toHaveBeenCalledTimes(1);
360
- expect(onEditorClose).not.toHaveBeenCalled();
361
- });
362
- });
363
- });
364
- describe('allowEditorTypeInSandbox', () => {
365
- it('should allow vim in sandbox mode', () => {
366
- process.env.SANDBOX = 'sandbox';
367
- expect(allowEditorTypeInSandbox('vim')).toBe(true);
368
- });
369
- it('should allow vim when not in sandbox mode', () => {
370
- expect(allowEditorTypeInSandbox('vim')).toBe(true);
371
- });
372
- it('should allow emacs in sandbox mode', () => {
373
- process.env.SANDBOX = 'sandbox';
374
- expect(allowEditorTypeInSandbox('emacs')).toBe(true);
375
- });
376
- it('should allow emacs when not in sandbox mode', () => {
377
- expect(allowEditorTypeInSandbox('emacs')).toBe(true);
378
- });
379
- it('should allow neovim in sandbox mode', () => {
380
- process.env.SANDBOX = 'sandbox';
381
- expect(allowEditorTypeInSandbox('neovim')).toBe(true);
382
- });
383
- it('should allow neovim when not in sandbox mode', () => {
384
- expect(allowEditorTypeInSandbox('neovim')).toBe(true);
385
- });
386
- const guiEditors = [
387
- 'vscode',
388
- 'vscodium',
389
- 'windsurf',
390
- 'cursor',
391
- 'zed',
392
- ];
393
- for (const editor of guiEditors) {
394
- it(`should not allow ${editor} in sandbox mode`, () => {
395
- process.env.SANDBOX = 'sandbox';
396
- expect(allowEditorTypeInSandbox(editor)).toBe(false);
397
- });
398
- it(`should allow ${editor} when not in sandbox mode`, () => {
399
- expect(allowEditorTypeInSandbox(editor)).toBe(true);
400
- });
401
- }
402
- });
403
- describe('isEditorAvailable', () => {
404
- it('should return false for undefined editor', () => {
405
- expect(isEditorAvailable(undefined)).toBe(false);
406
- });
407
- it('should return false for empty string editor', () => {
408
- expect(isEditorAvailable('')).toBe(false);
409
- });
410
- it('should return false for invalid editor type', () => {
411
- expect(isEditorAvailable('invalid-editor')).toBe(false);
412
- });
413
- it('should return true for vscode when installed and not in sandbox mode', () => {
414
- execSync.mockReturnValue(Buffer.from('/usr/bin/code'));
415
- expect(isEditorAvailable('vscode')).toBe(true);
416
- });
417
- it('should return false for vscode when not installed and not in sandbox mode', () => {
418
- execSync.mockImplementation(() => {
419
- throw new Error();
420
- });
421
- expect(isEditorAvailable('vscode')).toBe(false);
422
- });
423
- it('should return false for vscode when installed and in sandbox mode', () => {
424
- execSync.mockReturnValue(Buffer.from('/usr/bin/code'));
425
- process.env.SANDBOX = 'sandbox';
426
- expect(isEditorAvailable('vscode')).toBe(false);
427
- });
428
- it('should return true for vim when installed and in sandbox mode', () => {
429
- execSync.mockReturnValue(Buffer.from('/usr/bin/vim'));
430
- process.env.SANDBOX = 'sandbox';
431
- expect(isEditorAvailable('vim')).toBe(true);
432
- });
433
- it('should return true for emacs when installed and in sandbox mode', () => {
434
- execSync.mockReturnValue(Buffer.from('/usr/bin/emacs'));
435
- process.env.SANDBOX = 'sandbox';
436
- expect(isEditorAvailable('emacs')).toBe(true);
437
- });
438
- it('should return true for neovim when installed and in sandbox mode', () => {
439
- execSync.mockReturnValue(Buffer.from('/usr/bin/nvim'));
440
- process.env.SANDBOX = 'sandbox';
441
- expect(isEditorAvailable('neovim')).toBe(true);
442
- });
443
- });
444
- });
445
- //# sourceMappingURL=editor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor.test.js","sourceRoot":"","sources":["../../../src/utils/editor.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,139 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach, afterEach, } from 'vitest';
7
- import { getEnvironmentContext, getDirectoryContextString, } from './environmentContext.js';
8
- import { getFolderStructure } from './getFolderStructure.js';
9
- vi.mock('../config/config.js');
10
- vi.mock('./getFolderStructure.js', () => ({
11
- getFolderStructure: vi.fn(),
12
- }));
13
- vi.mock('../tools/read-many-files.js');
14
- describe('getDirectoryContextString', () => {
15
- let mockConfig;
16
- beforeEach(() => {
17
- mockConfig = {
18
- getWorkspaceContext: vi.fn().mockReturnValue({
19
- getDirectories: vi.fn().mockReturnValue(['/test/dir']),
20
- }),
21
- getFileService: vi.fn(),
22
- };
23
- vi.mocked(getFolderStructure).mockResolvedValue('Mock Folder Structure');
24
- });
25
- afterEach(() => {
26
- vi.resetAllMocks();
27
- });
28
- it('should return context string for a single directory', async () => {
29
- const contextString = await getDirectoryContextString(mockConfig);
30
- expect(contextString).toContain("I'm currently working in the directory: /test/dir");
31
- expect(contextString).toContain('Here is the folder structure of the current working directories:\n\nMock Folder Structure');
32
- });
33
- it('should return context string for multiple directories', async () => {
34
- vi.mocked(mockConfig.getWorkspaceContext)().getDirectories.mockReturnValue(['/test/dir1', '/test/dir2']);
35
- vi.mocked(getFolderStructure)
36
- .mockResolvedValueOnce('Structure 1')
37
- .mockResolvedValueOnce('Structure 2');
38
- const contextString = await getDirectoryContextString(mockConfig);
39
- expect(contextString).toContain("I'm currently working in the following directories:\n - /test/dir1\n - /test/dir2");
40
- expect(contextString).toContain('Here is the folder structure of the current working directories:\n\nStructure 1\nStructure 2');
41
- });
42
- });
43
- describe('getEnvironmentContext', () => {
44
- let mockConfig;
45
- let mockToolRegistry;
46
- beforeEach(() => {
47
- vi.useFakeTimers();
48
- vi.setSystemTime(new Date('2025-08-05T12:00:00Z'));
49
- mockToolRegistry = {
50
- getTool: vi.fn(),
51
- };
52
- mockConfig = {
53
- getWorkspaceContext: vi.fn().mockReturnValue({
54
- getDirectories: vi.fn().mockReturnValue(['/test/dir']),
55
- }),
56
- getFileService: vi.fn(),
57
- getFullContext: vi.fn().mockReturnValue(false),
58
- getToolRegistry: vi.fn().mockResolvedValue(mockToolRegistry),
59
- };
60
- vi.mocked(getFolderStructure).mockResolvedValue('Mock Folder Structure');
61
- });
62
- afterEach(() => {
63
- vi.useRealTimers();
64
- vi.resetAllMocks();
65
- });
66
- it('should return basic environment context for a single directory', async () => {
67
- const parts = await getEnvironmentContext(mockConfig);
68
- expect(parts.length).toBe(1);
69
- const context = parts[0].text;
70
- expect(context).toContain("Today's date is Tuesday, August 5, 2025");
71
- expect(context).toContain(`My operating system is: ${process.platform}`);
72
- expect(context).toContain("I'm currently working in the directory: /test/dir");
73
- expect(context).toContain('Here is the folder structure of the current working directories:\n\nMock Folder Structure');
74
- expect(getFolderStructure).toHaveBeenCalledWith('/test/dir', {
75
- fileService: undefined,
76
- });
77
- });
78
- it('should return basic environment context for multiple directories', async () => {
79
- vi.mocked(mockConfig.getWorkspaceContext)().getDirectories.mockReturnValue(['/test/dir1', '/test/dir2']);
80
- vi.mocked(getFolderStructure)
81
- .mockResolvedValueOnce('Structure 1')
82
- .mockResolvedValueOnce('Structure 2');
83
- const parts = await getEnvironmentContext(mockConfig);
84
- expect(parts.length).toBe(1);
85
- const context = parts[0].text;
86
- expect(context).toContain("I'm currently working in the following directories:\n - /test/dir1\n - /test/dir2");
87
- expect(context).toContain('Here is the folder structure of the current working directories:\n\nStructure 1\nStructure 2');
88
- expect(getFolderStructure).toHaveBeenCalledTimes(2);
89
- });
90
- it('should include full file context when getFullContext is true', async () => {
91
- mockConfig.getFullContext = vi.fn().mockReturnValue(true);
92
- const mockReadManyFilesTool = {
93
- build: vi.fn().mockReturnValue({
94
- execute: vi
95
- .fn()
96
- .mockResolvedValue({ llmContent: 'Full file content here' }),
97
- }),
98
- };
99
- mockToolRegistry.getTool.mockReturnValue(mockReadManyFilesTool);
100
- const parts = await getEnvironmentContext(mockConfig);
101
- expect(parts.length).toBe(2);
102
- expect(parts[1].text).toBe('\n--- Full File Context ---\nFull file content here');
103
- expect(mockToolRegistry.getTool).toHaveBeenCalledWith('read_many_files');
104
- expect(mockReadManyFilesTool.build).toHaveBeenCalledWith({
105
- paths: ['**/*'],
106
- useDefaultExcludes: true,
107
- });
108
- });
109
- it('should handle read_many_files returning no content', async () => {
110
- mockConfig.getFullContext = vi.fn().mockReturnValue(true);
111
- const mockReadManyFilesTool = {
112
- build: vi.fn().mockReturnValue({
113
- execute: vi.fn().mockResolvedValue({ llmContent: '' }),
114
- }),
115
- };
116
- mockToolRegistry.getTool.mockReturnValue(mockReadManyFilesTool);
117
- const parts = await getEnvironmentContext(mockConfig);
118
- expect(parts.length).toBe(1); // No extra part added
119
- });
120
- it('should handle read_many_files tool not being found', async () => {
121
- mockConfig.getFullContext = vi.fn().mockReturnValue(true);
122
- mockToolRegistry.getTool.mockReturnValue(null);
123
- const parts = await getEnvironmentContext(mockConfig);
124
- expect(parts.length).toBe(1); // No extra part added
125
- });
126
- it('should handle errors when reading full file context', async () => {
127
- mockConfig.getFullContext = vi.fn().mockReturnValue(true);
128
- const mockReadManyFilesTool = {
129
- build: vi.fn().mockReturnValue({
130
- execute: vi.fn().mockRejectedValue(new Error('Read error')),
131
- }),
132
- };
133
- mockToolRegistry.getTool.mockReturnValue(mockReadManyFilesTool);
134
- const parts = await getEnvironmentContext(mockConfig);
135
- expect(parts.length).toBe(2);
136
- expect(parts[1].text).toBe('\n--- Error reading full file context ---');
137
- });
138
- });
139
- //# sourceMappingURL=environmentContext.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environmentContext.test.js","sourceRoot":"","sources":["../../../src/utils/environmentContext.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};