@vybestack/llxprt-code-core 0.1.18-nightly.250808.f9b79d74 → 0.1.18-nightly.250812.12fa8ad2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) 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 +78 -3
  26. package/dist/src/config/config.js +159 -6
  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 +16 -16
  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 +2 -2
  50. package/dist/src/ide/ide-client.js +56 -18
  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 +8 -32
  135. package/dist/src/tools/edit.js +153 -136
  136. package/dist/src/tools/edit.js.map +1 -1
  137. package/dist/src/tools/glob.d.ts +3 -10
  138. package/dist/src/tools/glob.js +97 -99
  139. package/dist/src/tools/glob.js.map +1 -1
  140. package/dist/src/tools/grep.d.ts +3 -35
  141. package/dist/src/tools/grep.js +117 -88
  142. package/dist/src/tools/grep.js.map +1 -1
  143. package/dist/src/tools/mcp-client.d.ts +4 -3
  144. package/dist/src/tools/mcp-client.js +23 -6
  145. package/dist/src/tools/mcp-client.js.map +1 -1
  146. package/dist/src/tools/read-file.js +37 -9
  147. package/dist/src/tools/read-file.js.map +1 -1
  148. package/dist/src/tools/todo-pause.d.ts +22 -0
  149. package/dist/src/tools/todo-pause.js +93 -0
  150. package/dist/src/tools/todo-pause.js.map +1 -0
  151. package/dist/src/tools/tool-error.d.ts +4 -0
  152. package/dist/src/tools/tool-error.js +4 -0
  153. package/dist/src/tools/tool-error.js.map +1 -1
  154. package/dist/src/tools/tool-registry.js +3 -3
  155. package/dist/src/tools/tool-registry.js.map +1 -1
  156. package/dist/src/tools/tools.d.ts +18 -0
  157. package/dist/src/tools/tools.js +15 -0
  158. package/dist/src/tools/tools.js.map +1 -1
  159. package/dist/src/tools/write-file.d.ts +4 -0
  160. package/dist/src/tools/write-file.js +90 -16
  161. package/dist/src/tools/write-file.js.map +1 -1
  162. package/dist/src/types/modelParams.d.ts +2 -0
  163. package/dist/src/utils/environmentContext.js +1 -1
  164. package/dist/src/utils/errors.d.ts +3 -0
  165. package/dist/src/utils/errors.js +6 -0
  166. package/dist/src/utils/errors.js.map +1 -1
  167. package/dist/src/utils/fileUtils.d.ts +7 -0
  168. package/dist/src/utils/fileUtils.js +9 -0
  169. package/dist/src/utils/fileUtils.js.map +1 -1
  170. package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
  171. package/dist/src/utils/filesearch/fileSearch.js +27 -19
  172. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  173. package/package.json +4 -2
  174. package/dist/src/code_assist/converter.test.d.ts +0 -6
  175. package/dist/src/code_assist/converter.test.js +0 -232
  176. package/dist/src/code_assist/converter.test.js.map +0 -1
  177. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  178. package/dist/src/code_assist/oauth2.test.js +0 -370
  179. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  180. package/dist/src/code_assist/server.test.d.ts +0 -6
  181. package/dist/src/code_assist/server.test.js +0 -131
  182. package/dist/src/code_assist/server.test.js.map +0 -1
  183. package/dist/src/code_assist/setup.test.d.ts +0 -6
  184. package/dist/src/code_assist/setup.test.js +0 -65
  185. package/dist/src/code_assist/setup.test.js.map +0 -1
  186. package/dist/src/config/config.alwaysAllow.test.d.ts +0 -6
  187. package/dist/src/config/config.alwaysAllow.test.js +0 -84
  188. package/dist/src/config/config.alwaysAllow.test.js.map +0 -1
  189. package/dist/src/config/config.test.d.ts +0 -6
  190. package/dist/src/config/config.test.js +0 -361
  191. package/dist/src/config/config.test.js.map +0 -1
  192. package/dist/src/config/flashFallback.test.d.ts +0 -6
  193. package/dist/src/config/flashFallback.test.js +0 -91
  194. package/dist/src/config/flashFallback.test.js.map +0 -1
  195. package/dist/src/core/client.test.d.ts +0 -6
  196. package/dist/src/core/client.test.js +0 -1317
  197. package/dist/src/core/client.test.js.map +0 -1
  198. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  199. package/dist/src/core/contentGenerator.test.js +0 -103
  200. package/dist/src/core/contentGenerator.test.js.map +0 -1
  201. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  202. package/dist/src/core/coreToolScheduler.test.js +0 -637
  203. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  204. package/dist/src/core/geminiChat.test.d.ts +0 -6
  205. package/dist/src/core/geminiChat.test.js +0 -425
  206. package/dist/src/core/geminiChat.test.js.map +0 -1
  207. package/dist/src/core/googleGenAIWrapper.test.d.ts +0 -6
  208. package/dist/src/core/googleGenAIWrapper.test.js +0 -104
  209. package/dist/src/core/googleGenAIWrapper.test.js.map +0 -1
  210. package/dist/src/core/logger.test.d.ts +0 -6
  211. package/dist/src/core/logger.test.js +0 -438
  212. package/dist/src/core/logger.test.js.map +0 -1
  213. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +0 -6
  214. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -165
  215. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +0 -1
  216. package/dist/src/core/prompts-async.test.d.ts +0 -6
  217. package/dist/src/core/prompts-async.test.js +0 -115
  218. package/dist/src/core/prompts-async.test.js.map +0 -1
  219. package/dist/src/core/prompts.test.d.ts +0 -6
  220. package/dist/src/core/prompts.test.js +0 -68
  221. package/dist/src/core/prompts.test.js.map +0 -1
  222. package/dist/src/core/subagent.test.d.ts +0 -6
  223. package/dist/src/core/subagent.test.js +0 -519
  224. package/dist/src/core/subagent.test.js.map +0 -1
  225. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  226. package/dist/src/core/tokenLimits.test.js +0 -66
  227. package/dist/src/core/tokenLimits.test.js.map +0 -1
  228. package/dist/src/core/turn.test.d.ts +0 -6
  229. package/dist/src/core/turn.test.js +0 -366
  230. package/dist/src/core/turn.test.js.map +0 -1
  231. package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +0 -6
  232. package/dist/src/hooks/tool-render-suppression-hook.test.js +0 -59
  233. package/dist/src/hooks/tool-render-suppression-hook.test.js.map +0 -1
  234. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  235. package/dist/src/ide/ide-installer.test.js +0 -55
  236. package/dist/src/ide/ide-installer.test.js.map +0 -1
  237. package/dist/src/ide/ideContext.test.d.ts +0 -6
  238. package/dist/src/ide/ideContext.test.js +0 -265
  239. package/dist/src/ide/ideContext.test.js.map +0 -1
  240. package/dist/src/index.test.d.ts +0 -6
  241. package/dist/src/index.test.js +0 -12
  242. package/dist/src/index.test.js.map +0 -1
  243. package/dist/src/integration-tests/todo-system.test.d.ts +0 -6
  244. package/dist/src/integration-tests/todo-system.test.js +0 -46
  245. package/dist/src/integration-tests/todo-system.test.js.map +0 -1
  246. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  247. package/dist/src/mcp/google-auth-provider.test.js +0 -54
  248. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  249. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  250. package/dist/src/mcp/oauth-provider.test.js +0 -602
  251. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  252. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  253. package/dist/src/mcp/oauth-token-storage.test.js +0 -205
  254. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  255. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  256. package/dist/src/mcp/oauth-utils.test.js +0 -144
  257. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  258. package/dist/src/parsers/TextToolCallParser.multibyte.test.d.ts +0 -1
  259. package/dist/src/parsers/TextToolCallParser.multibyte.test.js +0 -42
  260. package/dist/src/parsers/TextToolCallParser.multibyte.test.js.map +0 -1
  261. package/dist/src/parsers/TextToolCallParser.test.d.ts +0 -1
  262. package/dist/src/parsers/TextToolCallParser.test.js +0 -225
  263. package/dist/src/parsers/TextToolCallParser.test.js.map +0 -1
  264. package/dist/src/prompt-config/TemplateEngine.test.d.ts +0 -1
  265. package/dist/src/prompt-config/TemplateEngine.test.js +0 -494
  266. package/dist/src/prompt-config/TemplateEngine.test.js.map +0 -1
  267. package/dist/src/prompt-config/prompt-cache.test.d.ts +0 -6
  268. package/dist/src/prompt-config/prompt-cache.test.js +0 -437
  269. package/dist/src/prompt-config/prompt-cache.test.js.map +0 -1
  270. package/dist/src/prompt-config/prompt-installer.test.d.ts +0 -7
  271. package/dist/src/prompt-config/prompt-installer.test.js +0 -503
  272. package/dist/src/prompt-config/prompt-installer.test.js.map +0 -1
  273. package/dist/src/prompt-config/prompt-loader.test.d.ts +0 -5
  274. package/dist/src/prompt-config/prompt-loader.test.js +0 -413
  275. package/dist/src/prompt-config/prompt-loader.test.js.map +0 -1
  276. package/dist/src/prompt-config/prompt-resolver.test.d.ts +0 -1
  277. package/dist/src/prompt-config/prompt-resolver.test.js +0 -529
  278. package/dist/src/prompt-config/prompt-resolver.test.js.map +0 -1
  279. package/dist/src/prompt-config/prompt-service.test.d.ts +0 -1
  280. package/dist/src/prompt-config/prompt-service.test.js +0 -811
  281. package/dist/src/prompt-config/prompt-service.test.js.map +0 -1
  282. package/dist/src/providers/ProviderManager.gemini-switch.test.d.ts +0 -6
  283. package/dist/src/providers/ProviderManager.gemini-switch.test.js +0 -57
  284. package/dist/src/providers/ProviderManager.gemini-switch.test.js.map +0 -1
  285. package/dist/src/providers/ProviderManager.test.d.ts +0 -6
  286. package/dist/src/providers/ProviderManager.test.js +0 -284
  287. package/dist/src/providers/ProviderManager.test.js.map +0 -1
  288. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.d.ts +0 -6
  289. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js +0 -273
  290. package/dist/src/providers/adapters/GeminiCompatibleWrapper.test.js.map +0 -1
  291. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.d.ts +0 -1
  292. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js +0 -48
  293. package/dist/src/providers/anthropic/AnthropicProvider.modelParams.test.js.map +0 -1
  294. package/dist/src/providers/anthropic/AnthropicProvider.test.d.ts +0 -1
  295. package/dist/src/providers/anthropic/AnthropicProvider.test.js +0 -487
  296. package/dist/src/providers/anthropic/AnthropicProvider.test.js.map +0 -1
  297. package/dist/src/providers/gemini/GeminiProvider.integration.test.d.ts +0 -6
  298. package/dist/src/providers/gemini/GeminiProvider.integration.test.js +0 -126
  299. package/dist/src/providers/gemini/GeminiProvider.integration.test.js.map +0 -1
  300. package/dist/src/providers/gemini/GeminiProvider.test.d.ts +0 -6
  301. package/dist/src/providers/gemini/GeminiProvider.test.js +0 -136
  302. package/dist/src/providers/gemini/GeminiProvider.test.js.map +0 -1
  303. package/dist/src/providers/integration/multi-provider.integration.test.d.ts +0 -6
  304. package/dist/src/providers/integration/multi-provider.integration.test.js +0 -292
  305. package/dist/src/providers/integration/multi-provider.integration.test.js.map +0 -1
  306. package/dist/src/providers/openai/ConversationCache.accumTokens.test.d.ts +0 -1
  307. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js +0 -97
  308. package/dist/src/providers/openai/ConversationCache.accumTokens.test.js.map +0 -1
  309. package/dist/src/providers/openai/ConversationCache.test.d.ts +0 -1
  310. package/dist/src/providers/openai/ConversationCache.test.js +0 -113
  311. package/dist/src/providers/openai/ConversationCache.test.js.map +0 -1
  312. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.d.ts +0 -1
  313. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js +0 -189
  314. package/dist/src/providers/openai/OpenAIProvider.callResponses.stateless.test.js.map +0 -1
  315. package/dist/src/providers/openai/OpenAIProvider.integration.test.d.ts +0 -6
  316. package/dist/src/providers/openai/OpenAIProvider.integration.test.js +0 -125
  317. package/dist/src/providers/openai/OpenAIProvider.integration.test.js.map +0 -1
  318. package/dist/src/providers/openai/OpenAIProvider.responses.test.d.ts +0 -1
  319. package/dist/src/providers/openai/OpenAIProvider.responses.test.js +0 -350
  320. package/dist/src/providers/openai/OpenAIProvider.responses.test.js.map +0 -1
  321. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.d.ts +0 -1
  322. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js +0 -213
  323. package/dist/src/providers/openai/OpenAIProvider.responsesIntegration.test.js.map +0 -1
  324. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.d.ts +0 -1
  325. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js +0 -59
  326. package/dist/src/providers/openai/OpenAIProvider.shouldUseResponses.test.js.map +0 -1
  327. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.d.ts +0 -6
  328. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js +0 -105
  329. package/dist/src/providers/openai/OpenAIProvider.stateful.integration.test.js.map +0 -1
  330. package/dist/src/providers/openai/OpenAIProvider.switch.test.d.ts +0 -1
  331. package/dist/src/providers/openai/OpenAIProvider.switch.test.js +0 -256
  332. package/dist/src/providers/openai/OpenAIProvider.switch.test.js.map +0 -1
  333. package/dist/src/providers/openai/OpenAIProvider.test.d.ts +0 -16
  334. package/dist/src/providers/openai/OpenAIProvider.test.js +0 -620
  335. package/dist/src/providers/openai/OpenAIProvider.test.js.map +0 -1
  336. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.d.ts +0 -1
  337. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js +0 -210
  338. package/dist/src/providers/openai/ResponsesContextTrim.integration.test.js.map +0 -1
  339. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.d.ts +0 -1
  340. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js +0 -65
  341. package/dist/src/providers/openai/__tests__/formatArrayResponse.test.js.map +0 -1
  342. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.d.ts +0 -1
  343. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js +0 -129
  344. package/dist/src/providers/openai/buildResponsesRequest.stripToolCalls.test.js.map +0 -1
  345. package/dist/src/providers/openai/buildResponsesRequest.test.d.ts +0 -1
  346. package/dist/src/providers/openai/buildResponsesRequest.test.js +0 -406
  347. package/dist/src/providers/openai/buildResponsesRequest.test.js.map +0 -1
  348. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.d.ts +0 -1
  349. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js +0 -50
  350. package/dist/src/providers/openai/buildResponsesRequest.undefined.test.js.map +0 -1
  351. package/dist/src/providers/openai/estimateRemoteTokens.test.d.ts +0 -1
  352. package/dist/src/providers/openai/estimateRemoteTokens.test.js +0 -125
  353. package/dist/src/providers/openai/estimateRemoteTokens.test.js.map +0 -1
  354. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.d.ts +0 -1
  355. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js +0 -192
  356. package/dist/src/providers/openai/parseResponsesStream.responsesToolCalls.test.js.map +0 -1
  357. package/dist/src/providers/openai/parseResponsesStream.test.d.ts +0 -1
  358. package/dist/src/providers/openai/parseResponsesStream.test.js +0 -151
  359. package/dist/src/providers/openai/parseResponsesStream.test.js.map +0 -1
  360. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  361. package/dist/src/services/fileDiscoveryService.test.js +0 -143
  362. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  363. package/dist/src/services/gitService.test.d.ts +0 -6
  364. package/dist/src/services/gitService.test.js +0 -209
  365. package/dist/src/services/gitService.test.js.map +0 -1
  366. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  367. package/dist/src/services/loopDetectionService.test.js +0 -345
  368. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  369. package/dist/src/services/shellExecutionService.multibyte.test.d.ts +0 -6
  370. package/dist/src/services/shellExecutionService.multibyte.test.js +0 -72
  371. package/dist/src/services/shellExecutionService.multibyte.test.js.map +0 -1
  372. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  373. package/dist/src/services/shellExecutionService.test.js +0 -272
  374. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  375. package/dist/src/services/shellExecutionService.windows.multibyte.test.d.ts +0 -6
  376. package/dist/src/services/shellExecutionService.windows.multibyte.test.js +0 -98
  377. package/dist/src/services/shellExecutionService.windows.multibyte.test.js.map +0 -1
  378. package/dist/src/services/shellExecutionService.windows.test.d.ts +0 -6
  379. package/dist/src/services/shellExecutionService.windows.test.js +0 -79
  380. package/dist/src/services/shellExecutionService.windows.test.js.map +0 -1
  381. package/dist/src/services/tool-call-tracker-service.test.d.ts +0 -6
  382. package/dist/src/services/tool-call-tracker-service.test.js +0 -99
  383. package/dist/src/services/tool-call-tracker-service.test.js.map +0 -1
  384. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  385. package/dist/src/telemetry/loggers.test.js +0 -572
  386. package/dist/src/telemetry/loggers.test.js.map +0 -1
  387. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  388. package/dist/src/telemetry/metrics.test.js +0 -162
  389. package/dist/src/telemetry/metrics.test.js.map +0 -1
  390. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  391. package/dist/src/telemetry/telemetry.test.js +0 -54
  392. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  393. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  394. package/dist/src/telemetry/uiTelemetry.test.js +0 -517
  395. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  396. package/dist/src/tools/ToolFormatter.test.d.ts +0 -16
  397. package/dist/src/tools/ToolFormatter.test.js +0 -349
  398. package/dist/src/tools/ToolFormatter.test.js.map +0 -1
  399. package/dist/src/tools/ToolFormatter.toResponsesTool.test.d.ts +0 -1
  400. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js +0 -241
  401. package/dist/src/tools/ToolFormatter.toResponsesTool.test.js.map +0 -1
  402. package/dist/src/tools/edit.test.d.ts +0 -6
  403. package/dist/src/tools/edit.test.js +0 -663
  404. package/dist/src/tools/edit.test.js.map +0 -1
  405. package/dist/src/tools/glob.test.d.ts +0 -6
  406. package/dist/src/tools/glob.test.js +0 -321
  407. package/dist/src/tools/glob.test.js.map +0 -1
  408. package/dist/src/tools/grep.test.d.ts +0 -6
  409. package/dist/src/tools/grep.test.js +0 -258
  410. package/dist/src/tools/grep.test.js.map +0 -1
  411. package/dist/src/tools/ls.test.d.ts +0 -6
  412. package/dist/src/tools/ls.test.js +0 -357
  413. package/dist/src/tools/ls.test.js.map +0 -1
  414. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  415. package/dist/src/tools/mcp-client.test.js +0 -575
  416. package/dist/src/tools/mcp-client.test.js.map +0 -1
  417. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  418. package/dist/src/tools/mcp-tool.test.js +0 -501
  419. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  420. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  421. package/dist/src/tools/memoryTool.test.js +0 -266
  422. package/dist/src/tools/memoryTool.test.js.map +0 -1
  423. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  424. package/dist/src/tools/modifiable-tool.test.js +0 -193
  425. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  426. package/dist/src/tools/read-file.test.d.ts +0 -6
  427. package/dist/src/tools/read-file.test.js +0 -313
  428. package/dist/src/tools/read-file.test.js.map +0 -1
  429. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  430. package/dist/src/tools/read-many-files.test.js +0 -644
  431. package/dist/src/tools/read-many-files.test.js.map +0 -1
  432. package/dist/src/tools/shell.multibyte.test.d.ts +0 -6
  433. package/dist/src/tools/shell.multibyte.test.js +0 -75
  434. package/dist/src/tools/shell.multibyte.test.js.map +0 -1
  435. package/dist/src/tools/shell.test.d.ts +0 -6
  436. package/dist/src/tools/shell.test.js +0 -350
  437. package/dist/src/tools/shell.test.js.map +0 -1
  438. package/dist/src/tools/todo-read.test.d.ts +0 -6
  439. package/dist/src/tools/todo-read.test.js +0 -162
  440. package/dist/src/tools/todo-read.test.js.map +0 -1
  441. package/dist/src/tools/todo-schemas.test.d.ts +0 -6
  442. package/dist/src/tools/todo-schemas.test.js +0 -341
  443. package/dist/src/tools/todo-schemas.test.js.map +0 -1
  444. package/dist/src/tools/todo-store.test.d.ts +0 -6
  445. package/dist/src/tools/todo-store.test.js +0 -169
  446. package/dist/src/tools/todo-store.test.js.map +0 -1
  447. package/dist/src/tools/todo-write.test.d.ts +0 -6
  448. package/dist/src/tools/todo-write.test.js +0 -226
  449. package/dist/src/tools/todo-write.test.js.map +0 -1
  450. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  451. package/dist/src/tools/tool-registry.test.js +0 -468
  452. package/dist/src/tools/tool-registry.test.js.map +0 -1
  453. package/dist/src/tools/tools.test.d.ts +0 -6
  454. package/dist/src/tools/tools.test.js +0 -117
  455. package/dist/src/tools/tools.test.js.map +0 -1
  456. package/dist/src/tools/web-fetch.integration.test.d.ts +0 -6
  457. package/dist/src/tools/web-fetch.integration.test.js +0 -532
  458. package/dist/src/tools/web-fetch.integration.test.js.map +0 -1
  459. package/dist/src/tools/web-search.test.d.ts +0 -6
  460. package/dist/src/tools/web-search.test.js +0 -229
  461. package/dist/src/tools/web-search.test.js.map +0 -1
  462. package/dist/src/tools/write-file.test.d.ts +0 -6
  463. package/dist/src/tools/write-file.test.js +0 -464
  464. package/dist/src/tools/write-file.test.js.map +0 -1
  465. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  466. package/dist/src/utils/bfsFileSearch.test.js +0 -191
  467. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  468. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  469. package/dist/src/utils/editCorrector.test.js +0 -564
  470. package/dist/src/utils/editCorrector.test.js.map +0 -1
  471. package/dist/src/utils/editor.test.d.ts +0 -6
  472. package/dist/src/utils/editor.test.js +0 -445
  473. package/dist/src/utils/editor.test.js.map +0 -1
  474. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  475. package/dist/src/utils/environmentContext.test.js +0 -139
  476. package/dist/src/utils/environmentContext.test.js.map +0 -1
  477. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  478. package/dist/src/utils/errorReporting.test.js +0 -130
  479. package/dist/src/utils/errorReporting.test.js.map +0 -1
  480. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  481. package/dist/src/utils/fileUtils.test.js +0 -363
  482. package/dist/src/utils/fileUtils.test.js.map +0 -1
  483. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  484. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  485. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  486. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  487. package/dist/src/utils/filesearch/fileSearch.test.js +0 -654
  488. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  489. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  490. package/dist/src/utils/filesearch/ignore.test.js +0 -57
  491. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  492. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  493. package/dist/src/utils/filesearch/result-cache.test.js +0 -47
  494. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  495. package/dist/src/utils/flashFallback.integration.test.d.ts +0 -6
  496. package/dist/src/utils/flashFallback.integration.test.js +0 -120
  497. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  498. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  499. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -273
  500. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  501. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  502. package/dist/src/utils/getFolderStructure.test.js +0 -282
  503. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  504. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  505. package/dist/src/utils/gitIgnoreParser.test.js +0 -154
  506. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  507. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  508. package/dist/src/utils/memoryDiscovery.test.js +0 -181
  509. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  510. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  511. package/dist/src/utils/memoryImportProcessor.test.js +0 -715
  512. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  513. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  514. package/dist/src/utils/nextSpeakerChecker.test.js +0 -172
  515. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  516. package/dist/src/utils/partUtils.test.d.ts +0 -6
  517. package/dist/src/utils/partUtils.test.js +0 -130
  518. package/dist/src/utils/partUtils.test.js.map +0 -1
  519. package/dist/src/utils/paths.test.d.ts +0 -6
  520. package/dist/src/utils/paths.test.js +0 -153
  521. package/dist/src/utils/paths.test.js.map +0 -1
  522. package/dist/src/utils/retry.test.d.ts +0 -6
  523. package/dist/src/utils/retry.test.js +0 -322
  524. package/dist/src/utils/retry.test.js.map +0 -1
  525. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  526. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  527. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  528. package/dist/src/utils/sanitization.test.d.ts +0 -6
  529. package/dist/src/utils/sanitization.test.js +0 -81
  530. package/dist/src/utils/sanitization.test.js.map +0 -1
  531. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  532. package/dist/src/utils/schemaValidator.test.js +0 -146
  533. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  534. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  535. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  536. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  537. package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +0 -6
  538. package/dist/src/utils/shell-utils.shellReplacement.test.js +0 -149
  539. package/dist/src/utils/shell-utils.shellReplacement.test.js.map +0 -1
  540. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  541. package/dist/src/utils/shell-utils.test.js +0 -200
  542. package/dist/src/utils/shell-utils.test.js.map +0 -1
  543. package/dist/src/utils/summarizer.test.d.ts +0 -6
  544. package/dist/src/utils/summarizer.test.js +0 -131
  545. package/dist/src/utils/summarizer.test.js.map +0 -1
  546. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  547. package/dist/src/utils/systemEncoding.test.js +0 -368
  548. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  549. package/dist/src/utils/toolOutputLimiter.test.d.ts +0 -6
  550. package/dist/src/utils/toolOutputLimiter.test.js +0 -164
  551. package/dist/src/utils/toolOutputLimiter.test.js.map +0 -1
  552. package/dist/src/utils/unicodeUtils.test.d.ts +0 -6
  553. package/dist/src/utils/unicodeUtils.test.js +0 -120
  554. package/dist/src/utils/unicodeUtils.test.js.map +0 -1
  555. package/dist/src/utils/user_account.test.d.ts +0 -6
  556. package/dist/src/utils/user_account.test.js +0 -153
  557. package/dist/src/utils/user_account.test.js.map +0 -1
  558. package/dist/src/utils/user_id.test.d.ts +0 -6
  559. package/dist/src/utils/user_id.test.js +0 -21
  560. package/dist/src/utils/user_id.test.js.map +0 -1
  561. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  562. package/dist/src/utils/workspaceContext.test.js +0 -209
  563. package/dist/src/utils/workspaceContext.test.js.map +0 -1
@@ -1,654 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
- import * as fs from 'fs/promises';
8
- import * as path from 'path';
9
- import * as cache from './crawlCache.js';
10
- import { FileSearch, AbortError, filter } from './fileSearch.js';
11
- import { createTmpDir, cleanupTmpDir } from '@vybestack/llxprt-code-test-utils';
12
- describe('FileSearch', () => {
13
- let tmpDir;
14
- afterEach(async () => {
15
- if (tmpDir) {
16
- await cleanupTmpDir(tmpDir);
17
- }
18
- vi.restoreAllMocks();
19
- });
20
- it('should use .geminiignore rules', async () => {
21
- tmpDir = await createTmpDir({
22
- '.geminiignore': 'dist/',
23
- dist: ['ignored.js'],
24
- src: ['not-ignored.js'],
25
- });
26
- const fileSearch = new FileSearch({
27
- projectRoot: tmpDir,
28
- useGitignore: false,
29
- useGeminiignore: true,
30
- ignoreDirs: [],
31
- cache: false,
32
- cacheTtl: 0,
33
- });
34
- await fileSearch.initialize();
35
- const results = await fileSearch.search('');
36
- expect(results).toEqual(['src/', '.geminiignore', 'src/not-ignored.js']);
37
- });
38
- it('should combine .gitignore and .geminiignore rules', async () => {
39
- tmpDir = await createTmpDir({
40
- '.gitignore': 'dist/',
41
- '.geminiignore': 'build/',
42
- dist: ['ignored-by-git.js'],
43
- build: ['ignored-by-gemini.js'],
44
- src: ['not-ignored.js'],
45
- });
46
- const fileSearch = new FileSearch({
47
- projectRoot: tmpDir,
48
- useGitignore: true,
49
- useGeminiignore: true,
50
- ignoreDirs: [],
51
- cache: false,
52
- cacheTtl: 0,
53
- });
54
- await fileSearch.initialize();
55
- const results = await fileSearch.search('');
56
- expect(results).toEqual([
57
- 'src/',
58
- '.geminiignore',
59
- '.gitignore',
60
- 'src/not-ignored.js',
61
- ]);
62
- });
63
- it('should use ignoreDirs option', async () => {
64
- tmpDir = await createTmpDir({
65
- logs: ['some.log'],
66
- src: ['main.js'],
67
- });
68
- const fileSearch = new FileSearch({
69
- projectRoot: tmpDir,
70
- useGitignore: false,
71
- useGeminiignore: false,
72
- ignoreDirs: ['logs'],
73
- cache: false,
74
- cacheTtl: 0,
75
- });
76
- await fileSearch.initialize();
77
- const results = await fileSearch.search('');
78
- expect(results).toEqual(['src/', 'src/main.js']);
79
- });
80
- it('should handle negated directories', async () => {
81
- tmpDir = await createTmpDir({
82
- '.gitignore': ['build/**', '!build/public', '!build/public/**'].join('\n'),
83
- build: {
84
- 'private.js': '',
85
- public: ['index.html'],
86
- },
87
- src: ['main.js'],
88
- });
89
- const fileSearch = new FileSearch({
90
- projectRoot: tmpDir,
91
- useGitignore: true,
92
- useGeminiignore: false,
93
- ignoreDirs: [],
94
- cache: false,
95
- cacheTtl: 0,
96
- });
97
- await fileSearch.initialize();
98
- const results = await fileSearch.search('');
99
- expect(results).toEqual([
100
- 'build/',
101
- 'build/public/',
102
- 'src/',
103
- '.gitignore',
104
- 'build/public/index.html',
105
- 'src/main.js',
106
- ]);
107
- });
108
- it('should filter results with a search pattern', async () => {
109
- tmpDir = await createTmpDir({
110
- src: {
111
- 'main.js': '',
112
- 'util.ts': '',
113
- 'style.css': '',
114
- },
115
- });
116
- const fileSearch = new FileSearch({
117
- projectRoot: tmpDir,
118
- useGitignore: false,
119
- useGeminiignore: false,
120
- ignoreDirs: [],
121
- cache: false,
122
- cacheTtl: 0,
123
- });
124
- await fileSearch.initialize();
125
- const results = await fileSearch.search('**/*.js');
126
- expect(results).toEqual(['src/main.js']);
127
- });
128
- it('should handle root-level file negation', async () => {
129
- tmpDir = await createTmpDir({
130
- '.gitignore': ['*.mk', '!Foo.mk'].join('\n'),
131
- 'bar.mk': '',
132
- 'Foo.mk': '',
133
- });
134
- const fileSearch = new FileSearch({
135
- projectRoot: tmpDir,
136
- useGitignore: true,
137
- useGeminiignore: false,
138
- ignoreDirs: [],
139
- cache: false,
140
- cacheTtl: 0,
141
- });
142
- await fileSearch.initialize();
143
- const results = await fileSearch.search('');
144
- expect(results).toEqual(['.gitignore', 'Foo.mk']);
145
- });
146
- it('should handle directory negation with glob', async () => {
147
- tmpDir = await createTmpDir({
148
- '.gitignore': [
149
- 'third_party/**',
150
- '!third_party/foo',
151
- '!third_party/foo/bar',
152
- '!third_party/foo/bar/baz_buffer',
153
- ].join('\n'),
154
- third_party: {
155
- foo: {
156
- bar: {
157
- baz_buffer: '',
158
- },
159
- },
160
- ignore_this: '',
161
- },
162
- });
163
- const fileSearch = new FileSearch({
164
- projectRoot: tmpDir,
165
- useGitignore: true,
166
- useGeminiignore: false,
167
- ignoreDirs: [],
168
- cache: false,
169
- cacheTtl: 0,
170
- });
171
- await fileSearch.initialize();
172
- const results = await fileSearch.search('');
173
- expect(results).toEqual([
174
- 'third_party/',
175
- 'third_party/foo/',
176
- 'third_party/foo/bar/',
177
- '.gitignore',
178
- 'third_party/foo/bar/baz_buffer',
179
- ]);
180
- });
181
- it('should correctly handle negated patterns in .gitignore', async () => {
182
- tmpDir = await createTmpDir({
183
- '.gitignore': ['dist/**', '!dist/keep.js'].join('\n'),
184
- dist: ['ignore.js', 'keep.js'],
185
- src: ['main.js'],
186
- });
187
- const fileSearch = new FileSearch({
188
- projectRoot: tmpDir,
189
- useGitignore: true,
190
- useGeminiignore: false,
191
- ignoreDirs: [],
192
- cache: false,
193
- cacheTtl: 0,
194
- });
195
- await fileSearch.initialize();
196
- const results = await fileSearch.search('');
197
- expect(results).toEqual([
198
- 'dist/',
199
- 'src/',
200
- '.gitignore',
201
- 'dist/keep.js',
202
- 'src/main.js',
203
- ]);
204
- });
205
- // New test cases start here
206
- it('should initialize correctly when ignore files are missing', async () => {
207
- tmpDir = await createTmpDir({
208
- src: ['file1.js'],
209
- });
210
- const fileSearch = new FileSearch({
211
- projectRoot: tmpDir,
212
- useGitignore: true,
213
- useGeminiignore: true,
214
- ignoreDirs: [],
215
- cache: false,
216
- cacheTtl: 0,
217
- });
218
- // Expect no errors to be thrown during initialization
219
- await expect(fileSearch.initialize()).resolves.toBeUndefined();
220
- const results = await fileSearch.search('');
221
- expect(results).toEqual(['src/', 'src/file1.js']);
222
- });
223
- it('should respect maxResults option in search', async () => {
224
- tmpDir = await createTmpDir({
225
- src: {
226
- 'file1.js': '',
227
- 'file2.js': '',
228
- 'file3.js': '',
229
- 'file4.js': '',
230
- },
231
- });
232
- const fileSearch = new FileSearch({
233
- projectRoot: tmpDir,
234
- useGitignore: false,
235
- useGeminiignore: false,
236
- ignoreDirs: [],
237
- cache: false,
238
- cacheTtl: 0,
239
- });
240
- await fileSearch.initialize();
241
- const results = await fileSearch.search('**/*.js', { maxResults: 2 });
242
- expect(results).toEqual(['src/file1.js', 'src/file2.js']); // Assuming alphabetical sort
243
- });
244
- it('should use fzf for fuzzy matching when pattern does not contain wildcards', async () => {
245
- tmpDir = await createTmpDir({
246
- src: {
247
- 'main.js': '',
248
- 'util.ts': '',
249
- 'style.css': '',
250
- },
251
- });
252
- const fileSearch = new FileSearch({
253
- projectRoot: tmpDir,
254
- useGitignore: false,
255
- useGeminiignore: false,
256
- ignoreDirs: [],
257
- cache: false,
258
- cacheTtl: 0,
259
- });
260
- await fileSearch.initialize();
261
- const results = await fileSearch.search('sst');
262
- expect(results).toEqual(['src/style.css']);
263
- });
264
- it('should return empty array when no matches are found', async () => {
265
- tmpDir = await createTmpDir({
266
- src: ['file1.js'],
267
- });
268
- const fileSearch = new FileSearch({
269
- projectRoot: tmpDir,
270
- useGitignore: false,
271
- useGeminiignore: false,
272
- ignoreDirs: [],
273
- cache: false,
274
- cacheTtl: 0,
275
- });
276
- await fileSearch.initialize();
277
- const results = await fileSearch.search('nonexistent-file.xyz');
278
- expect(results).toEqual([]);
279
- });
280
- it('should throw AbortError when filter is aborted', async () => {
281
- const controller = new AbortController();
282
- const dummyPaths = Array.from({ length: 5000 }, (_, i) => `file${i}.js`); // Large array to ensure yielding
283
- const filterPromise = filter(dummyPaths, '*.js', controller.signal);
284
- // Abort after a short delay to ensure filter has started
285
- setTimeout(() => controller.abort(), 1);
286
- await expect(filterPromise).rejects.toThrow(AbortError);
287
- });
288
- describe('with in-memory cache', () => {
289
- beforeEach(() => {
290
- cache.clear();
291
- });
292
- afterEach(() => {
293
- vi.useRealTimers();
294
- });
295
- it('should throw an error if search is called before initialization', async () => {
296
- tmpDir = await createTmpDir({});
297
- const fileSearch = new FileSearch({
298
- projectRoot: tmpDir,
299
- useGitignore: false,
300
- useGeminiignore: false,
301
- ignoreDirs: [],
302
- cache: false,
303
- cacheTtl: 0,
304
- });
305
- await expect(fileSearch.search('')).rejects.toThrow('Engine not initialized. Call initialize() first.');
306
- });
307
- it('should hit the cache for subsequent searches', async () => {
308
- tmpDir = await createTmpDir({ 'file1.js': '' });
309
- const getOptions = () => ({
310
- projectRoot: tmpDir,
311
- useGitignore: false,
312
- useGeminiignore: false,
313
- ignoreDirs: [],
314
- cache: true,
315
- cacheTtl: 10,
316
- });
317
- const fs1 = new FileSearch(getOptions());
318
- const crawlSpy1 = vi.spyOn(fs1, 'performCrawl');
319
- await fs1.initialize();
320
- expect(crawlSpy1).toHaveBeenCalledTimes(1);
321
- // Second search should hit the cache because the options are identical
322
- const fs2 = new FileSearch(getOptions());
323
- const crawlSpy2 = vi.spyOn(fs2, 'performCrawl');
324
- await fs2.initialize();
325
- expect(crawlSpy2).not.toHaveBeenCalled();
326
- });
327
- it('should miss the cache when ignore rules change', async () => {
328
- tmpDir = await createTmpDir({
329
- '.gitignore': 'a.txt',
330
- 'a.txt': '',
331
- 'b.txt': '',
332
- });
333
- const options = {
334
- projectRoot: tmpDir,
335
- useGitignore: true,
336
- useGeminiignore: false,
337
- ignoreDirs: [],
338
- cache: true,
339
- cacheTtl: 10000,
340
- };
341
- // Initial search to populate the cache
342
- const fs1 = new FileSearch(options);
343
- const crawlSpy1 = vi.spyOn(fs1, 'performCrawl');
344
- await fs1.initialize();
345
- const results1 = await fs1.search('');
346
- expect(crawlSpy1).toHaveBeenCalledTimes(1);
347
- expect(results1).toEqual(['.gitignore', 'b.txt']);
348
- // Modify the ignore file
349
- await fs.writeFile(path.join(tmpDir, '.gitignore'), 'b.txt');
350
- // Second search should miss the cache and trigger a recrawl
351
- const fs2 = new FileSearch(options);
352
- const crawlSpy2 = vi.spyOn(fs2, 'performCrawl');
353
- await fs2.initialize();
354
- const results2 = await fs2.search('');
355
- expect(crawlSpy2).toHaveBeenCalledTimes(1);
356
- expect(results2).toEqual(['.gitignore', 'a.txt']);
357
- });
358
- it('should miss the cache after TTL expires', async () => {
359
- vi.useFakeTimers();
360
- tmpDir = await createTmpDir({ 'file1.js': '' });
361
- const options = {
362
- projectRoot: tmpDir,
363
- useGitignore: false,
364
- useGeminiignore: false,
365
- ignoreDirs: [],
366
- cache: true,
367
- cacheTtl: 10, // 10 seconds
368
- };
369
- // Initial search to populate the cache
370
- const fs1 = new FileSearch(options);
371
- await fs1.initialize();
372
- // Advance time past the TTL
373
- await vi.advanceTimersByTimeAsync(11000);
374
- // Second search should miss the cache and trigger a recrawl
375
- const fs2 = new FileSearch(options);
376
- const crawlSpy = vi.spyOn(fs2, 'performCrawl');
377
- await fs2.initialize();
378
- expect(crawlSpy).toHaveBeenCalledTimes(1);
379
- });
380
- it('should miss the cache when maxDepth changes', async () => {
381
- tmpDir = await createTmpDir({ 'file1.js': '' });
382
- const getOptions = (maxDepth) => ({
383
- projectRoot: tmpDir,
384
- useGitignore: false,
385
- useGeminiignore: false,
386
- ignoreDirs: [],
387
- cache: true,
388
- cacheTtl: 10000,
389
- maxDepth,
390
- });
391
- // 1. First search with maxDepth: 1, should trigger a crawl.
392
- const fs1 = new FileSearch(getOptions(1));
393
- const crawlSpy1 = vi.spyOn(fs1, 'performCrawl');
394
- await fs1.initialize();
395
- expect(crawlSpy1).toHaveBeenCalledTimes(1);
396
- // 2. Second search with maxDepth: 2, should be a cache miss and trigger a crawl.
397
- const fs2 = new FileSearch(getOptions(2));
398
- const crawlSpy2 = vi.spyOn(fs2, 'performCrawl');
399
- await fs2.initialize();
400
- expect(crawlSpy2).toHaveBeenCalledTimes(1);
401
- // 3. Third search with maxDepth: 1 again, should be a cache hit.
402
- const fs3 = new FileSearch(getOptions(1));
403
- const crawlSpy3 = vi.spyOn(fs3, 'performCrawl');
404
- await fs3.initialize();
405
- expect(crawlSpy3).not.toHaveBeenCalled();
406
- });
407
- });
408
- it('should handle empty or commented-only ignore files', async () => {
409
- tmpDir = await createTmpDir({
410
- '.gitignore': '# This is a comment\n\n \n',
411
- src: ['main.js'],
412
- });
413
- const fileSearch = new FileSearch({
414
- projectRoot: tmpDir,
415
- useGitignore: true,
416
- useGeminiignore: false,
417
- ignoreDirs: [],
418
- cache: false,
419
- cacheTtl: 0,
420
- });
421
- await fileSearch.initialize();
422
- const results = await fileSearch.search('');
423
- expect(results).toEqual(['src/', '.gitignore', 'src/main.js']);
424
- });
425
- it('should always ignore the .git directory', async () => {
426
- tmpDir = await createTmpDir({
427
- '.git': ['config', 'HEAD'],
428
- src: ['main.js'],
429
- });
430
- const fileSearch = new FileSearch({
431
- projectRoot: tmpDir,
432
- useGitignore: false, // Explicitly disable .gitignore to isolate this rule
433
- useGeminiignore: false,
434
- ignoreDirs: [],
435
- cache: false,
436
- cacheTtl: 0,
437
- });
438
- await fileSearch.initialize();
439
- const results = await fileSearch.search('');
440
- expect(results).toEqual(['src/', 'src/main.js']);
441
- });
442
- it('should be cancellable via AbortSignal', async () => {
443
- const largeDir = {};
444
- for (let i = 0; i < 100; i++) {
445
- largeDir[`file${i}.js`] = '';
446
- }
447
- tmpDir = await createTmpDir(largeDir);
448
- const fileSearch = new FileSearch({
449
- projectRoot: tmpDir,
450
- useGitignore: false,
451
- useGeminiignore: false,
452
- ignoreDirs: [],
453
- cache: false,
454
- cacheTtl: 0,
455
- });
456
- await fileSearch.initialize();
457
- const controller = new AbortController();
458
- const searchPromise = fileSearch.search('**/*.js', {
459
- signal: controller.signal,
460
- });
461
- // Yield to allow the search to start before aborting.
462
- await new Promise((resolve) => setImmediate(resolve));
463
- controller.abort();
464
- await expect(searchPromise).rejects.toThrow(AbortError);
465
- });
466
- it('should leverage ResultCache for bestBaseQuery optimization', async () => {
467
- tmpDir = await createTmpDir({
468
- src: {
469
- 'foo.js': '',
470
- 'bar.ts': '',
471
- nested: {
472
- 'baz.js': '',
473
- },
474
- },
475
- });
476
- const fileSearch = new FileSearch({
477
- projectRoot: tmpDir,
478
- useGitignore: false,
479
- useGeminiignore: false,
480
- ignoreDirs: [],
481
- cache: true, // Enable caching for this test
482
- cacheTtl: 0,
483
- });
484
- await fileSearch.initialize();
485
- // Perform a broad search to prime the cache
486
- const broadResults = await fileSearch.search('src/**');
487
- expect(broadResults).toEqual([
488
- 'src/',
489
- 'src/nested/',
490
- 'src/bar.ts',
491
- 'src/foo.js',
492
- 'src/nested/baz.js',
493
- ]);
494
- // Perform a more specific search that should leverage the broad search's cached results
495
- const specificResults = await fileSearch.search('src/**/*.js');
496
- expect(specificResults).toEqual(['src/foo.js', 'src/nested/baz.js']);
497
- // Although we can't directly inspect ResultCache.hits/misses from here,
498
- // the correctness of specificResults after a broad search implicitly
499
- // verifies that the caching mechanism, including bestBaseQuery, is working.
500
- });
501
- it('should be case-insensitive by default', async () => {
502
- tmpDir = await createTmpDir({
503
- 'File1.Js': '',
504
- 'file2.js': '',
505
- 'FILE3.JS': '',
506
- 'other.txt': '',
507
- });
508
- const fileSearch = new FileSearch({
509
- projectRoot: tmpDir,
510
- useGitignore: false,
511
- useGeminiignore: false,
512
- ignoreDirs: [],
513
- cache: false,
514
- cacheTtl: 0,
515
- });
516
- await fileSearch.initialize();
517
- // Search with a lowercase pattern
518
- let results = await fileSearch.search('file*.js');
519
- expect(results).toHaveLength(3);
520
- expect(results).toEqual(expect.arrayContaining(['File1.Js', 'file2.js', 'FILE3.JS']));
521
- // Search with an uppercase pattern
522
- results = await fileSearch.search('FILE*.JS');
523
- expect(results).toHaveLength(3);
524
- expect(results).toEqual(expect.arrayContaining(['File1.Js', 'file2.js', 'FILE3.JS']));
525
- // Search with a mixed-case pattern
526
- results = await fileSearch.search('FiLe*.Js');
527
- expect(results).toHaveLength(3);
528
- expect(results).toEqual(expect.arrayContaining(['File1.Js', 'file2.js', 'FILE3.JS']));
529
- });
530
- it('should respect maxResults even when the cache returns an exact match', async () => {
531
- tmpDir = await createTmpDir({
532
- 'file1.js': '',
533
- 'file2.js': '',
534
- 'file3.js': '',
535
- 'file4.js': '',
536
- 'file5.js': '',
537
- });
538
- const fileSearch = new FileSearch({
539
- projectRoot: tmpDir,
540
- useGitignore: false,
541
- useGeminiignore: false,
542
- ignoreDirs: [],
543
- cache: true, // Ensure caching is enabled
544
- cacheTtl: 10000,
545
- });
546
- await fileSearch.initialize();
547
- // 1. Perform a broad search to populate the cache with an exact match.
548
- const initialResults = await fileSearch.search('*.js');
549
- expect(initialResults).toEqual([
550
- 'file1.js',
551
- 'file2.js',
552
- 'file3.js',
553
- 'file4.js',
554
- 'file5.js',
555
- ]);
556
- // 2. Perform the same search again, but this time with a maxResults limit.
557
- const limitedResults = await fileSearch.search('*.js', { maxResults: 2 });
558
- // 3. Assert that the maxResults limit was respected, even with a cache hit.
559
- expect(limitedResults).toEqual(['file1.js', 'file2.js']);
560
- });
561
- describe('with maxDepth', () => {
562
- beforeEach(async () => {
563
- tmpDir = await createTmpDir({
564
- 'file-root.txt': '',
565
- level1: {
566
- 'file-level1.txt': '',
567
- level2: {
568
- 'file-level2.txt': '',
569
- level3: {
570
- 'file-level3.txt': '',
571
- },
572
- },
573
- },
574
- });
575
- });
576
- it('should only search top-level files when maxDepth is 0', async () => {
577
- const fileSearch = new FileSearch({
578
- projectRoot: tmpDir,
579
- useGitignore: false,
580
- useGeminiignore: false,
581
- ignoreDirs: [],
582
- cache: false,
583
- cacheTtl: 0,
584
- maxDepth: 0,
585
- });
586
- await fileSearch.initialize();
587
- const results = await fileSearch.search('');
588
- expect(results).toEqual(['level1/', 'file-root.txt']);
589
- });
590
- it('should search one level deep when maxDepth is 1', async () => {
591
- const fileSearch = new FileSearch({
592
- projectRoot: tmpDir,
593
- useGitignore: false,
594
- useGeminiignore: false,
595
- ignoreDirs: [],
596
- cache: false,
597
- cacheTtl: 0,
598
- maxDepth: 1,
599
- });
600
- await fileSearch.initialize();
601
- const results = await fileSearch.search('');
602
- expect(results).toEqual([
603
- 'level1/',
604
- 'level1/level2/',
605
- 'file-root.txt',
606
- 'level1/file-level1.txt',
607
- ]);
608
- });
609
- it('should search two levels deep when maxDepth is 2', async () => {
610
- const fileSearch = new FileSearch({
611
- projectRoot: tmpDir,
612
- useGitignore: false,
613
- useGeminiignore: false,
614
- ignoreDirs: [],
615
- cache: false,
616
- cacheTtl: 0,
617
- maxDepth: 2,
618
- });
619
- await fileSearch.initialize();
620
- const results = await fileSearch.search('');
621
- expect(results).toEqual([
622
- 'level1/',
623
- 'level1/level2/',
624
- 'level1/level2/level3/',
625
- 'file-root.txt',
626
- 'level1/file-level1.txt',
627
- 'level1/level2/file-level2.txt',
628
- ]);
629
- });
630
- it('should perform a full recursive search when maxDepth is undefined', async () => {
631
- const fileSearch = new FileSearch({
632
- projectRoot: tmpDir,
633
- useGitignore: false,
634
- useGeminiignore: false,
635
- ignoreDirs: [],
636
- cache: false,
637
- cacheTtl: 0,
638
- maxDepth: undefined, // Explicitly undefined
639
- });
640
- await fileSearch.initialize();
641
- const results = await fileSearch.search('');
642
- expect(results).toEqual([
643
- 'level1/',
644
- 'level1/level2/',
645
- 'level1/level2/level3/',
646
- 'file-root.txt',
647
- 'level1/file-level1.txt',
648
- 'level1/level2/file-level2.txt',
649
- 'level1/level2/level3/file-level3.txt',
650
- ]);
651
- });
652
- });
653
- });
654
- //# sourceMappingURL=fileSearch.test.js.map