@anh3d0nic/qwen-code-termux-ice 21.0.1 → 21.2.0

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 (1281) hide show
  1. package/bin/qwen-ice +127 -331
  2. package/core/ice-core.js +101 -0
  3. package/core-dist/index.d.ts +6 -0
  4. package/core-dist/index.js +7 -0
  5. package/core-dist/index.js.map +1 -0
  6. package/core-dist/src/__mocks__/fs/promises.d.ts +11 -0
  7. package/core-dist/src/__mocks__/fs/promises.js +17 -0
  8. package/core-dist/src/__mocks__/fs/promises.js.map +1 -0
  9. package/core-dist/src/config/config.d.ts +648 -0
  10. package/core-dist/src/config/config.js +1374 -0
  11. package/core-dist/src/config/config.js.map +1 -0
  12. package/core-dist/src/config/config.test.d.ts +6 -0
  13. package/core-dist/src/config/config.test.js +1116 -0
  14. package/core-dist/src/config/config.test.js.map +1 -0
  15. package/core-dist/src/config/constants.d.ts +11 -0
  16. package/core-dist/src/config/constants.js +16 -0
  17. package/core-dist/src/config/constants.js.map +1 -0
  18. package/core-dist/src/config/models.d.ts +9 -0
  19. package/core-dist/src/config/models.js +10 -0
  20. package/core-dist/src/config/models.js.map +1 -0
  21. package/core-dist/src/config/storage.d.ts +38 -0
  22. package/core-dist/src/config/storage.js +114 -0
  23. package/core-dist/src/config/storage.js.map +1 -0
  24. package/core-dist/src/config/storage.test.d.ts +6 -0
  25. package/core-dist/src/config/storage.test.js +36 -0
  26. package/core-dist/src/config/storage.test.js.map +1 -0
  27. package/core-dist/src/confirmation-bus/message-bus.d.ts +22 -0
  28. package/core-dist/src/confirmation-bus/message-bus.js +98 -0
  29. package/core-dist/src/confirmation-bus/message-bus.js.map +1 -0
  30. package/core-dist/src/confirmation-bus/types.d.ts +104 -0
  31. package/core-dist/src/confirmation-bus/types.js +16 -0
  32. package/core-dist/src/confirmation-bus/types.js.map +1 -0
  33. package/core-dist/src/core/__tests__/openaiTimeoutHandling.test.d.ts +6 -0
  34. package/core-dist/src/core/__tests__/openaiTimeoutHandling.test.js +298 -0
  35. package/core-dist/src/core/__tests__/openaiTimeoutHandling.test.js.map +1 -0
  36. package/core-dist/src/core/__tests__/orphanedToolCallsTest.d.ts +64 -0
  37. package/core-dist/src/core/__tests__/orphanedToolCallsTest.js +122 -0
  38. package/core-dist/src/core/__tests__/orphanedToolCallsTest.js.map +1 -0
  39. package/core-dist/src/core/anthropicContentGenerator/anthropicContentGenerator.d.ts +28 -0
  40. package/core-dist/src/core/anthropicContentGenerator/anthropicContentGenerator.js +349 -0
  41. package/core-dist/src/core/anthropicContentGenerator/anthropicContentGenerator.js.map +1 -0
  42. package/core-dist/src/core/anthropicContentGenerator/anthropicContentGenerator.test.d.ts +6 -0
  43. package/core-dist/src/core/anthropicContentGenerator/anthropicContentGenerator.test.js +396 -0
  44. package/core-dist/src/core/anthropicContentGenerator/anthropicContentGenerator.test.js.map +1 -0
  45. package/core-dist/src/core/anthropicContentGenerator/converter.d.ts +48 -0
  46. package/core-dist/src/core/anthropicContentGenerator/converter.js +449 -0
  47. package/core-dist/src/core/anthropicContentGenerator/converter.js.map +1 -0
  48. package/core-dist/src/core/anthropicContentGenerator/converter.test.d.ts +6 -0
  49. package/core-dist/src/core/anthropicContentGenerator/converter.test.js +843 -0
  50. package/core-dist/src/core/anthropicContentGenerator/converter.test.js.map +1 -0
  51. package/core-dist/src/core/anthropicContentGenerator/index.d.ts +9 -0
  52. package/core-dist/src/core/anthropicContentGenerator/index.js +11 -0
  53. package/core-dist/src/core/anthropicContentGenerator/index.js.map +1 -0
  54. package/core-dist/src/core/baseLlmClient.d.ts +48 -0
  55. package/core-dist/src/core/baseLlmClient.js +98 -0
  56. package/core-dist/src/core/baseLlmClient.js.map +1 -0
  57. package/core-dist/src/core/baseLlmClient.test.d.ts +6 -0
  58. package/core-dist/src/core/baseLlmClient.test.js +319 -0
  59. package/core-dist/src/core/baseLlmClient.test.js.map +1 -0
  60. package/core-dist/src/core/client.d.ts +48 -0
  61. package/core-dist/src/core/client.js +547 -0
  62. package/core-dist/src/core/client.js.map +1 -0
  63. package/core-dist/src/core/client.test.d.ts +6 -0
  64. package/core-dist/src/core/client.test.js +1885 -0
  65. package/core-dist/src/core/client.test.js.map +1 -0
  66. package/core-dist/src/core/contentGenerator.d.ts +100 -0
  67. package/core-dist/src/core/contentGenerator.js +162 -0
  68. package/core-dist/src/core/contentGenerator.js.map +1 -0
  69. package/core-dist/src/core/contentGenerator.test.d.ts +6 -0
  70. package/core-dist/src/core/contentGenerator.test.js +95 -0
  71. package/core-dist/src/core/contentGenerator.test.js.map +1 -0
  72. package/core-dist/src/core/coreToolScheduler.d.ts +142 -0
  73. package/core-dist/src/core/coreToolScheduler.js +872 -0
  74. package/core-dist/src/core/coreToolScheduler.js.map +1 -0
  75. package/core-dist/src/core/coreToolScheduler.test.d.ts +6 -0
  76. package/core-dist/src/core/coreToolScheduler.test.js +2221 -0
  77. package/core-dist/src/core/coreToolScheduler.test.js.map +1 -0
  78. package/core-dist/src/core/geminiChat.d.ts +122 -0
  79. package/core-dist/src/core/geminiChat.js +571 -0
  80. package/core-dist/src/core/geminiChat.js.map +1 -0
  81. package/core-dist/src/core/geminiChat.test.d.ts +6 -0
  82. package/core-dist/src/core/geminiChat.test.js +1276 -0
  83. package/core-dist/src/core/geminiChat.test.js.map +1 -0
  84. package/core-dist/src/core/geminiContentGenerator/geminiContentGenerator.d.ts +38 -0
  85. package/core-dist/src/core/geminiContentGenerator/geminiContentGenerator.js +193 -0
  86. package/core-dist/src/core/geminiContentGenerator/geminiContentGenerator.js.map +1 -0
  87. package/core-dist/src/core/geminiContentGenerator/geminiContentGenerator.test.d.ts +6 -0
  88. package/core-dist/src/core/geminiContentGenerator/geminiContentGenerator.test.js +304 -0
  89. package/core-dist/src/core/geminiContentGenerator/geminiContentGenerator.test.js.map +1 -0
  90. package/core-dist/src/core/geminiContentGenerator/index.d.ts +12 -0
  91. package/core-dist/src/core/geminiContentGenerator/index.js +36 -0
  92. package/core-dist/src/core/geminiContentGenerator/index.js.map +1 -0
  93. package/core-dist/src/core/geminiContentGenerator/index.test.d.ts +6 -0
  94. package/core-dist/src/core/geminiContentGenerator/index.test.js +34 -0
  95. package/core-dist/src/core/geminiContentGenerator/index.test.js.map +1 -0
  96. package/core-dist/src/core/geminiRequest.d.ts +13 -0
  97. package/core-dist/src/core/geminiRequest.js +11 -0
  98. package/core-dist/src/core/geminiRequest.js.map +1 -0
  99. package/core-dist/src/core/geminiRequest.test.d.ts +6 -0
  100. package/core-dist/src/core/geminiRequest.test.js +73 -0
  101. package/core-dist/src/core/geminiRequest.test.js.map +1 -0
  102. package/core-dist/src/core/logger.d.ts +68 -0
  103. package/core-dist/src/core/logger.js +364 -0
  104. package/core-dist/src/core/logger.js.map +1 -0
  105. package/core-dist/src/core/logger.test.d.ts +6 -0
  106. package/core-dist/src/core/logger.test.js +520 -0
  107. package/core-dist/src/core/logger.test.js.map +1 -0
  108. package/core-dist/src/core/loggingContentGenerator/index.d.ts +6 -0
  109. package/core-dist/src/core/loggingContentGenerator/index.js +7 -0
  110. package/core-dist/src/core/loggingContentGenerator/index.js.map +1 -0
  111. package/core-dist/src/core/loggingContentGenerator/loggingContentGenerator.d.ts +36 -0
  112. package/core-dist/src/core/loggingContentGenerator/loggingContentGenerator.js +321 -0
  113. package/core-dist/src/core/loggingContentGenerator/loggingContentGenerator.js.map +1 -0
  114. package/core-dist/src/core/loggingContentGenerator/loggingContentGenerator.test.d.ts +6 -0
  115. package/core-dist/src/core/loggingContentGenerator/loggingContentGenerator.test.js +287 -0
  116. package/core-dist/src/core/loggingContentGenerator/loggingContentGenerator.test.js.map +1 -0
  117. package/core-dist/src/core/modalityDefaults.d.ts +14 -0
  118. package/core-dist/src/core/modalityDefaults.js +81 -0
  119. package/core-dist/src/core/modalityDefaults.js.map +1 -0
  120. package/core-dist/src/core/modalityDefaults.test.d.ts +6 -0
  121. package/core-dist/src/core/modalityDefaults.test.js +181 -0
  122. package/core-dist/src/core/modalityDefaults.test.js.map +1 -0
  123. package/core-dist/src/core/nonInteractiveToolExecutor.d.ts +16 -0
  124. package/core-dist/src/core/nonInteractiveToolExecutor.js +30 -0
  125. package/core-dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
  126. package/core-dist/src/core/nonInteractiveToolExecutor.test.d.ts +6 -0
  127. package/core-dist/src/core/nonInteractiveToolExecutor.test.js +296 -0
  128. package/core-dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -0
  129. package/core-dist/src/core/openaiContentGenerator/constants.d.ts +6 -0
  130. package/core-dist/src/core/openaiContentGenerator/constants.js +7 -0
  131. package/core-dist/src/core/openaiContentGenerator/constants.js.map +1 -0
  132. package/core-dist/src/core/openaiContentGenerator/converter.d.ts +133 -0
  133. package/core-dist/src/core/openaiContentGenerator/converter.js +1020 -0
  134. package/core-dist/src/core/openaiContentGenerator/converter.js.map +1 -0
  135. package/core-dist/src/core/openaiContentGenerator/converter.test.d.ts +6 -0
  136. package/core-dist/src/core/openaiContentGenerator/converter.test.js +1966 -0
  137. package/core-dist/src/core/openaiContentGenerator/converter.test.js.map +1 -0
  138. package/core-dist/src/core/openaiContentGenerator/errorHandler.d.ts +27 -0
  139. package/core-dist/src/core/openaiContentGenerator/errorHandler.js +84 -0
  140. package/core-dist/src/core/openaiContentGenerator/errorHandler.js.map +1 -0
  141. package/core-dist/src/core/openaiContentGenerator/errorHandler.test.d.ts +6 -0
  142. package/core-dist/src/core/openaiContentGenerator/errorHandler.test.js +267 -0
  143. package/core-dist/src/core/openaiContentGenerator/errorHandler.test.js.map +1 -0
  144. package/core-dist/src/core/openaiContentGenerator/index.d.ts +21 -0
  145. package/core-dist/src/core/openaiContentGenerator/index.js +43 -0
  146. package/core-dist/src/core/openaiContentGenerator/index.js.map +1 -0
  147. package/core-dist/src/core/openaiContentGenerator/openaiContentGenerator.d.ts +22 -0
  148. package/core-dist/src/core/openaiContentGenerator/openaiContentGenerator.js +117 -0
  149. package/core-dist/src/core/openaiContentGenerator/openaiContentGenerator.js.map +1 -0
  150. package/core-dist/src/core/openaiContentGenerator/openaiContentGenerator.test.d.ts +6 -0
  151. package/core-dist/src/core/openaiContentGenerator/openaiContentGenerator.test.js +298 -0
  152. package/core-dist/src/core/openaiContentGenerator/openaiContentGenerator.test.js.map +1 -0
  153. package/core-dist/src/core/openaiContentGenerator/pipeline.d.ts +74 -0
  154. package/core-dist/src/core/openaiContentGenerator/pipeline.js +327 -0
  155. package/core-dist/src/core/openaiContentGenerator/pipeline.js.map +1 -0
  156. package/core-dist/src/core/openaiContentGenerator/pipeline.test.d.ts +6 -0
  157. package/core-dist/src/core/openaiContentGenerator/pipeline.test.js +1143 -0
  158. package/core-dist/src/core/openaiContentGenerator/pipeline.test.js.map +1 -0
  159. package/core-dist/src/core/openaiContentGenerator/provider/README.md +61 -0
  160. package/core-dist/src/core/openaiContentGenerator/provider/dashscope.d.ts +70 -0
  161. package/core-dist/src/core/openaiContentGenerator/provider/dashscope.js +258 -0
  162. package/core-dist/src/core/openaiContentGenerator/provider/dashscope.js.map +1 -0
  163. package/core-dist/src/core/openaiContentGenerator/provider/dashscope.test.d.ts +6 -0
  164. package/core-dist/src/core/openaiContentGenerator/provider/dashscope.test.js +781 -0
  165. package/core-dist/src/core/openaiContentGenerator/provider/dashscope.test.js.map +1 -0
  166. package/core-dist/src/core/openaiContentGenerator/provider/deepseek.d.ts +14 -0
  167. package/core-dist/src/core/openaiContentGenerator/provider/deepseek.js +21 -0
  168. package/core-dist/src/core/openaiContentGenerator/provider/deepseek.js.map +1 -0
  169. package/core-dist/src/core/openaiContentGenerator/provider/deepseek.test.d.ts +6 -0
  170. package/core-dist/src/core/openaiContentGenerator/provider/deepseek.test.js +51 -0
  171. package/core-dist/src/core/openaiContentGenerator/provider/deepseek.test.js.map +1 -0
  172. package/core-dist/src/core/openaiContentGenerator/provider/default.d.ts +17 -0
  173. package/core-dist/src/core/openaiContentGenerator/provider/default.js +52 -0
  174. package/core-dist/src/core/openaiContentGenerator/provider/default.js.map +1 -0
  175. package/core-dist/src/core/openaiContentGenerator/provider/default.test.d.ts +6 -0
  176. package/core-dist/src/core/openaiContentGenerator/provider/default.test.js +227 -0
  177. package/core-dist/src/core/openaiContentGenerator/provider/default.test.js.map +1 -0
  178. package/core-dist/src/core/openaiContentGenerator/provider/index.d.ts +6 -0
  179. package/core-dist/src/core/openaiContentGenerator/provider/index.js +6 -0
  180. package/core-dist/src/core/openaiContentGenerator/provider/index.js.map +1 -0
  181. package/core-dist/src/core/openaiContentGenerator/provider/modelscope.d.ts +17 -0
  182. package/core-dist/src/core/openaiContentGenerator/provider/modelscope.js +25 -0
  183. package/core-dist/src/core/openaiContentGenerator/provider/modelscope.js.map +1 -0
  184. package/core-dist/src/core/openaiContentGenerator/provider/modelscope.test.d.ts +6 -0
  185. package/core-dist/src/core/openaiContentGenerator/provider/modelscope.test.js +66 -0
  186. package/core-dist/src/core/openaiContentGenerator/provider/modelscope.test.js.map +1 -0
  187. package/core-dist/src/core/openaiContentGenerator/provider/openrouter.d.ts +8 -0
  188. package/core-dist/src/core/openaiContentGenerator/provider/openrouter.js +21 -0
  189. package/core-dist/src/core/openaiContentGenerator/provider/openrouter.js.map +1 -0
  190. package/core-dist/src/core/openaiContentGenerator/provider/openrouter.test.d.ts +6 -0
  191. package/core-dist/src/core/openaiContentGenerator/provider/openrouter.test.js +152 -0
  192. package/core-dist/src/core/openaiContentGenerator/provider/openrouter.test.js.map +1 -0
  193. package/core-dist/src/core/openaiContentGenerator/provider/types.d.ts +26 -0
  194. package/core-dist/src/core/openaiContentGenerator/provider/types.js +2 -0
  195. package/core-dist/src/core/openaiContentGenerator/provider/types.js.map +1 -0
  196. package/core-dist/src/core/openaiContentGenerator/streamingToolCallParser.d.ts +157 -0
  197. package/core-dist/src/core/openaiContentGenerator/streamingToolCallParser.js +390 -0
  198. package/core-dist/src/core/openaiContentGenerator/streamingToolCallParser.js.map +1 -0
  199. package/core-dist/src/core/openaiContentGenerator/streamingToolCallParser.test.d.ts +6 -0
  200. package/core-dist/src/core/openaiContentGenerator/streamingToolCallParser.test.js +585 -0
  201. package/core-dist/src/core/openaiContentGenerator/streamingToolCallParser.test.js.map +1 -0
  202. package/core-dist/src/core/prompts.d.ts +81 -0
  203. package/core-dist/src/core/prompts.js +996 -0
  204. package/core-dist/src/core/prompts.js.map +1 -0
  205. package/core-dist/src/core/prompts.test.d.ts +6 -0
  206. package/core-dist/src/core/prompts.test.js +485 -0
  207. package/core-dist/src/core/prompts.test.js.map +1 -0
  208. package/core-dist/src/core/tokenLimits.d.ts +29 -0
  209. package/core-dist/src/core/tokenLimits.js +171 -0
  210. package/core-dist/src/core/tokenLimits.js.map +1 -0
  211. package/core-dist/src/core/tokenLimits.test.d.ts +1 -0
  212. package/core-dist/src/core/tokenLimits.test.js +270 -0
  213. package/core-dist/src/core/tokenLimits.test.js.map +1 -0
  214. package/core-dist/src/core/turn.d.ts +161 -0
  215. package/core-dist/src/core/turn.js +197 -0
  216. package/core-dist/src/core/turn.js.map +1 -0
  217. package/core-dist/src/core/turn.test.d.ts +6 -0
  218. package/core-dist/src/core/turn.test.js +817 -0
  219. package/core-dist/src/core/turn.test.js.map +1 -0
  220. package/core-dist/src/extension/claude-converter.d.ts +121 -0
  221. package/core-dist/src/extension/claude-converter.js +572 -0
  222. package/core-dist/src/extension/claude-converter.js.map +1 -0
  223. package/core-dist/src/extension/claude-converter.test.d.ts +6 -0
  224. package/core-dist/src/extension/claude-converter.test.js +305 -0
  225. package/core-dist/src/extension/claude-converter.test.js.map +1 -0
  226. package/core-dist/src/extension/extensionManager.d.ts +159 -0
  227. package/core-dist/src/extension/extensionManager.js +829 -0
  228. package/core-dist/src/extension/extensionManager.js.map +1 -0
  229. package/core-dist/src/extension/extensionManager.test.d.ts +6 -0
  230. package/core-dist/src/extension/extensionManager.test.js +598 -0
  231. package/core-dist/src/extension/extensionManager.test.js.map +1 -0
  232. package/core-dist/src/extension/extensionSettings.d.ts +33 -0
  233. package/core-dist/src/extension/extensionSettings.js +186 -0
  234. package/core-dist/src/extension/extensionSettings.js.map +1 -0
  235. package/core-dist/src/extension/extensionSettings.test.d.ts +1 -0
  236. package/core-dist/src/extension/extensionSettings.test.js +488 -0
  237. package/core-dist/src/extension/extensionSettings.test.js.map +1 -0
  238. package/core-dist/src/extension/gemini-converter.d.ts +47 -0
  239. package/core-dist/src/extension/gemini-converter.js +185 -0
  240. package/core-dist/src/extension/gemini-converter.js.map +1 -0
  241. package/core-dist/src/extension/gemini-converter.test.d.ts +6 -0
  242. package/core-dist/src/extension/gemini-converter.test.js +128 -0
  243. package/core-dist/src/extension/gemini-converter.test.js.map +1 -0
  244. package/core-dist/src/extension/github.d.ts +30 -0
  245. package/core-dist/src/extension/github.js +330 -0
  246. package/core-dist/src/extension/github.js.map +1 -0
  247. package/core-dist/src/extension/github.test.d.ts +6 -0
  248. package/core-dist/src/extension/github.test.js +376 -0
  249. package/core-dist/src/extension/github.test.js.map +1 -0
  250. package/core-dist/src/extension/index.d.ts +6 -0
  251. package/core-dist/src/extension/index.js +7 -0
  252. package/core-dist/src/extension/index.js.map +1 -0
  253. package/core-dist/src/extension/marketplace.d.ts +19 -0
  254. package/core-dist/src/extension/marketplace.js +222 -0
  255. package/core-dist/src/extension/marketplace.js.map +1 -0
  256. package/core-dist/src/extension/marketplace.test.d.ts +6 -0
  257. package/core-dist/src/extension/marketplace.test.js +215 -0
  258. package/core-dist/src/extension/marketplace.test.js.map +1 -0
  259. package/core-dist/src/extension/override.d.ts +25 -0
  260. package/core-dist/src/extension/override.js +82 -0
  261. package/core-dist/src/extension/override.js.map +1 -0
  262. package/core-dist/src/extension/override.test.d.ts +6 -0
  263. package/core-dist/src/extension/override.test.js +94 -0
  264. package/core-dist/src/extension/override.test.js.map +1 -0
  265. package/core-dist/src/extension/settings.d.ts +39 -0
  266. package/core-dist/src/extension/settings.js +116 -0
  267. package/core-dist/src/extension/settings.js.map +1 -0
  268. package/core-dist/src/extension/settings.test.d.ts +6 -0
  269. package/core-dist/src/extension/settings.test.js +125 -0
  270. package/core-dist/src/extension/settings.test.js.map +1 -0
  271. package/core-dist/src/extension/storage.d.ts +9 -0
  272. package/core-dist/src/extension/storage.js +38 -0
  273. package/core-dist/src/extension/storage.js.map +1 -0
  274. package/core-dist/src/extension/storage.test.d.ts +6 -0
  275. package/core-dist/src/extension/storage.test.js +64 -0
  276. package/core-dist/src/extension/storage.test.js.map +1 -0
  277. package/core-dist/src/extension/variableSchema.d.ts +40 -0
  278. package/core-dist/src/extension/variableSchema.js +26 -0
  279. package/core-dist/src/extension/variableSchema.js.map +1 -0
  280. package/core-dist/src/extension/variables.d.ts +21 -0
  281. package/core-dist/src/extension/variables.js +46 -0
  282. package/core-dist/src/extension/variables.js.map +1 -0
  283. package/core-dist/src/extension/variables.test.d.ts +6 -0
  284. package/core-dist/src/extension/variables.test.js +17 -0
  285. package/core-dist/src/extension/variables.test.js.map +1 -0
  286. package/core-dist/src/hooks/hookAggregator.d.ts +66 -0
  287. package/core-dist/src/hooks/hookAggregator.js +280 -0
  288. package/core-dist/src/hooks/hookAggregator.js.map +1 -0
  289. package/core-dist/src/hooks/hookAggregator.test.d.ts +6 -0
  290. package/core-dist/src/hooks/hookAggregator.test.js +449 -0
  291. package/core-dist/src/hooks/hookAggregator.test.js.map +1 -0
  292. package/core-dist/src/hooks/hookEventHandler.d.ts +42 -0
  293. package/core-dist/src/hooks/hookEventHandler.js +127 -0
  294. package/core-dist/src/hooks/hookEventHandler.js.map +1 -0
  295. package/core-dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  296. package/core-dist/src/hooks/hookEventHandler.test.js +183 -0
  297. package/core-dist/src/hooks/hookEventHandler.test.js.map +1 -0
  298. package/core-dist/src/hooks/hookPlanner.d.ts +42 -0
  299. package/core-dist/src/hooks/hookPlanner.js +101 -0
  300. package/core-dist/src/hooks/hookPlanner.js.map +1 -0
  301. package/core-dist/src/hooks/hookPlanner.test.d.ts +6 -0
  302. package/core-dist/src/hooks/hookPlanner.test.js +303 -0
  303. package/core-dist/src/hooks/hookPlanner.test.js.map +1 -0
  304. package/core-dist/src/hooks/hookRegistry.d.ts +106 -0
  305. package/core-dist/src/hooks/hookRegistry.js +225 -0
  306. package/core-dist/src/hooks/hookRegistry.js.map +1 -0
  307. package/core-dist/src/hooks/hookRegistry.test.d.ts +6 -0
  308. package/core-dist/src/hooks/hookRegistry.test.js +539 -0
  309. package/core-dist/src/hooks/hookRegistry.test.js.map +1 -0
  310. package/core-dist/src/hooks/hookRunner.d.ts +40 -0
  311. package/core-dist/src/hooks/hookRunner.js +318 -0
  312. package/core-dist/src/hooks/hookRunner.js.map +1 -0
  313. package/core-dist/src/hooks/hookRunner.test.d.ts +6 -0
  314. package/core-dist/src/hooks/hookRunner.test.js +466 -0
  315. package/core-dist/src/hooks/hookRunner.test.js.map +1 -0
  316. package/core-dist/src/hooks/hookSystem.d.ts +43 -0
  317. package/core-dist/src/hooks/hookSystem.js +75 -0
  318. package/core-dist/src/hooks/hookSystem.js.map +1 -0
  319. package/core-dist/src/hooks/hookSystem.test.d.ts +6 -0
  320. package/core-dist/src/hooks/hookSystem.test.js +237 -0
  321. package/core-dist/src/hooks/hookSystem.test.js.map +1 -0
  322. package/core-dist/src/hooks/index.d.ts +16 -0
  323. package/core-dist/src/hooks/index.js +16 -0
  324. package/core-dist/src/hooks/index.js.map +1 -0
  325. package/core-dist/src/hooks/trustedHooks.d.ts +28 -0
  326. package/core-dist/src/hooks/trustedHooks.js +91 -0
  327. package/core-dist/src/hooks/trustedHooks.js.map +1 -0
  328. package/core-dist/src/hooks/types.d.ts +498 -0
  329. package/core-dist/src/hooks/types.js +292 -0
  330. package/core-dist/src/hooks/types.js.map +1 -0
  331. package/core-dist/src/ide/constants.d.ts +9 -0
  332. package/core-dist/src/ide/constants.js +10 -0
  333. package/core-dist/src/ide/constants.js.map +1 -0
  334. package/core-dist/src/ide/detect-ide.d.ts +56 -0
  335. package/core-dist/src/ide/detect-ide.js +68 -0
  336. package/core-dist/src/ide/detect-ide.js.map +1 -0
  337. package/core-dist/src/ide/detect-ide.test.d.ts +6 -0
  338. package/core-dist/src/ide/detect-ide.test.js +113 -0
  339. package/core-dist/src/ide/detect-ide.test.js.map +1 -0
  340. package/core-dist/src/ide/ide-client.d.ts +132 -0
  341. package/core-dist/src/ide/ide-client.js +750 -0
  342. package/core-dist/src/ide/ide-client.js.map +1 -0
  343. package/core-dist/src/ide/ide-client.test.d.ts +6 -0
  344. package/core-dist/src/ide/ide-client.test.js +463 -0
  345. package/core-dist/src/ide/ide-client.test.js.map +1 -0
  346. package/core-dist/src/ide/ide-installer.d.ts +14 -0
  347. package/core-dist/src/ide/ide-installer.js +112 -0
  348. package/core-dist/src/ide/ide-installer.js.map +1 -0
  349. package/core-dist/src/ide/ide-installer.test.d.ts +6 -0
  350. package/core-dist/src/ide/ide-installer.test.js +134 -0
  351. package/core-dist/src/ide/ide-installer.test.js.map +1 -0
  352. package/core-dist/src/ide/ideContext.d.ts +44 -0
  353. package/core-dist/src/ide/ideContext.js +101 -0
  354. package/core-dist/src/ide/ideContext.js.map +1 -0
  355. package/core-dist/src/ide/ideContext.test.d.ts +6 -0
  356. package/core-dist/src/ide/ideContext.test.js +393 -0
  357. package/core-dist/src/ide/ideContext.test.js.map +1 -0
  358. package/core-dist/src/ide/process-utils.d.ts +21 -0
  359. package/core-dist/src/ide/process-utils.js +170 -0
  360. package/core-dist/src/ide/process-utils.js.map +1 -0
  361. package/core-dist/src/ide/process-utils.test.d.ts +6 -0
  362. package/core-dist/src/ide/process-utils.test.js +130 -0
  363. package/core-dist/src/ide/process-utils.test.js.map +1 -0
  364. package/core-dist/src/ide/types.d.ts +486 -0
  365. package/core-dist/src/ide/types.js +138 -0
  366. package/core-dist/src/ide/types.js.map +1 -0
  367. package/core-dist/src/index.d.ts +179 -0
  368. package/core-dist/src/index.js +225 -0
  369. package/core-dist/src/index.js.map +1 -0
  370. package/core-dist/src/index.test.d.ts +6 -0
  371. package/core-dist/src/index.test.js +12 -0
  372. package/core-dist/src/index.test.js.map +1 -0
  373. package/core-dist/src/lsp/LspConfigLoader.d.ts +46 -0
  374. package/core-dist/src/lsp/LspConfigLoader.js +381 -0
  375. package/core-dist/src/lsp/LspConfigLoader.js.map +1 -0
  376. package/core-dist/src/lsp/LspConfigLoader.test.d.ts +6 -0
  377. package/core-dist/src/lsp/LspConfigLoader.test.js +80 -0
  378. package/core-dist/src/lsp/LspConfigLoader.test.js.map +1 -0
  379. package/core-dist/src/lsp/LspConnectionFactory.d.ts +62 -0
  380. package/core-dist/src/lsp/LspConnectionFactory.js +305 -0
  381. package/core-dist/src/lsp/LspConnectionFactory.js.map +1 -0
  382. package/core-dist/src/lsp/LspLanguageDetector.d.ts +39 -0
  383. package/core-dist/src/lsp/LspLanguageDetector.js +199 -0
  384. package/core-dist/src/lsp/LspLanguageDetector.js.map +1 -0
  385. package/core-dist/src/lsp/LspResponseNormalizer.d.ts +122 -0
  386. package/core-dist/src/lsp/LspResponseNormalizer.js +710 -0
  387. package/core-dist/src/lsp/LspResponseNormalizer.js.map +1 -0
  388. package/core-dist/src/lsp/LspServerManager.d.ts +87 -0
  389. package/core-dist/src/lsp/LspServerManager.js +563 -0
  390. package/core-dist/src/lsp/LspServerManager.js.map +1 -0
  391. package/core-dist/src/lsp/NativeLspClient.d.ts +149 -0
  392. package/core-dist/src/lsp/NativeLspClient.js +169 -0
  393. package/core-dist/src/lsp/NativeLspClient.js.map +1 -0
  394. package/core-dist/src/lsp/NativeLspService.d.ts +106 -0
  395. package/core-dist/src/lsp/NativeLspService.integration.test.d.ts +6 -0
  396. package/core-dist/src/lsp/NativeLspService.integration.test.js +663 -0
  397. package/core-dist/src/lsp/NativeLspService.integration.test.js.map +1 -0
  398. package/core-dist/src/lsp/NativeLspService.js +623 -0
  399. package/core-dist/src/lsp/NativeLspService.js.map +1 -0
  400. package/core-dist/src/lsp/NativeLspService.test.d.ts +6 -0
  401. package/core-dist/src/lsp/NativeLspService.test.js +99 -0
  402. package/core-dist/src/lsp/NativeLspService.test.js.map +1 -0
  403. package/core-dist/src/lsp/constants.d.ts +35 -0
  404. package/core-dist/src/lsp/constants.js +86 -0
  405. package/core-dist/src/lsp/constants.js.map +1 -0
  406. package/core-dist/src/lsp/types.d.ts +409 -0
  407. package/core-dist/src/lsp/types.js +7 -0
  408. package/core-dist/src/lsp/types.js.map +1 -0
  409. package/core-dist/src/mcp/constants.d.ts +22 -0
  410. package/core-dist/src/mcp/constants.js +23 -0
  411. package/core-dist/src/mcp/constants.js.map +1 -0
  412. package/core-dist/src/mcp/google-auth-provider.d.ts +23 -0
  413. package/core-dist/src/mcp/google-auth-provider.js +75 -0
  414. package/core-dist/src/mcp/google-auth-provider.js.map +1 -0
  415. package/core-dist/src/mcp/google-auth-provider.test.d.ts +6 -0
  416. package/core-dist/src/mcp/google-auth-provider.test.js +89 -0
  417. package/core-dist/src/mcp/google-auth-provider.test.js.map +1 -0
  418. package/core-dist/src/mcp/oauth-provider.d.ts +150 -0
  419. package/core-dist/src/mcp/oauth-provider.js +617 -0
  420. package/core-dist/src/mcp/oauth-provider.js.map +1 -0
  421. package/core-dist/src/mcp/oauth-provider.test.d.ts +6 -0
  422. package/core-dist/src/mcp/oauth-provider.test.js +917 -0
  423. package/core-dist/src/mcp/oauth-provider.test.js.map +1 -0
  424. package/core-dist/src/mcp/oauth-token-storage.d.ts +65 -0
  425. package/core-dist/src/mcp/oauth-token-storage.js +182 -0
  426. package/core-dist/src/mcp/oauth-token-storage.js.map +1 -0
  427. package/core-dist/src/mcp/oauth-token-storage.test.d.ts +6 -0
  428. package/core-dist/src/mcp/oauth-token-storage.test.js +307 -0
  429. package/core-dist/src/mcp/oauth-token-storage.test.js.map +1 -0
  430. package/core-dist/src/mcp/oauth-utils.d.ts +124 -0
  431. package/core-dist/src/mcp/oauth-utils.js +252 -0
  432. package/core-dist/src/mcp/oauth-utils.js.map +1 -0
  433. package/core-dist/src/mcp/oauth-utils.test.d.ts +6 -0
  434. package/core-dist/src/mcp/oauth-utils.test.js +220 -0
  435. package/core-dist/src/mcp/oauth-utils.test.js.map +1 -0
  436. package/core-dist/src/mcp/sa-impersonation-provider.d.ts +33 -0
  437. package/core-dist/src/mcp/sa-impersonation-provider.js +133 -0
  438. package/core-dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  439. package/core-dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
  440. package/core-dist/src/mcp/sa-impersonation-provider.test.js +117 -0
  441. package/core-dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
  442. package/core-dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  443. package/core-dist/src/mcp/token-storage/base-token-storage.js +36 -0
  444. package/core-dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  445. package/core-dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
  446. package/core-dist/src/mcp/token-storage/base-token-storage.test.js +160 -0
  447. package/core-dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
  448. package/core-dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
  449. package/core-dist/src/mcp/token-storage/file-token-storage.js +144 -0
  450. package/core-dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
  451. package/core-dist/src/mcp/token-storage/file-token-storage.test.d.ts +6 -0
  452. package/core-dist/src/mcp/token-storage/file-token-storage.test.js +235 -0
  453. package/core-dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -0
  454. package/core-dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
  455. package/core-dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
  456. package/core-dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
  457. package/core-dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +6 -0
  458. package/core-dist/src/mcp/token-storage/hybrid-token-storage.test.js +193 -0
  459. package/core-dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -0
  460. package/core-dist/src/mcp/token-storage/index.d.ts +11 -0
  461. package/core-dist/src/mcp/token-storage/index.js +12 -0
  462. package/core-dist/src/mcp/token-storage/index.js.map +1 -0
  463. package/core-dist/src/mcp/token-storage/keychain-token-storage.d.ts +35 -0
  464. package/core-dist/src/mcp/token-storage/keychain-token-storage.js +248 -0
  465. package/core-dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
  466. package/core-dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +6 -0
  467. package/core-dist/src/mcp/token-storage/keychain-token-storage.test.js +254 -0
  468. package/core-dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -0
  469. package/core-dist/src/mcp/token-storage/types.d.ts +38 -0
  470. package/core-dist/src/mcp/token-storage/types.js +11 -0
  471. package/core-dist/src/mcp/token-storage/types.js.map +1 -0
  472. package/core-dist/src/mocks/msw.d.ts +6 -0
  473. package/core-dist/src/mocks/msw.js +8 -0
  474. package/core-dist/src/mocks/msw.js.map +1 -0
  475. package/core-dist/src/models/constants.d.ts +71 -0
  476. package/core-dist/src/models/constants.js +92 -0
  477. package/core-dist/src/models/constants.js.map +1 -0
  478. package/core-dist/src/models/index.d.ts +10 -0
  479. package/core-dist/src/models/index.js +12 -0
  480. package/core-dist/src/models/index.js.map +1 -0
  481. package/core-dist/src/models/modelConfigErrors.d.ts +46 -0
  482. package/core-dist/src/models/modelConfigErrors.js +87 -0
  483. package/core-dist/src/models/modelConfigErrors.js.map +1 -0
  484. package/core-dist/src/models/modelConfigResolver.d.ts +84 -0
  485. package/core-dist/src/models/modelConfigResolver.js +204 -0
  486. package/core-dist/src/models/modelConfigResolver.js.map +1 -0
  487. package/core-dist/src/models/modelConfigResolver.test.d.ts +6 -0
  488. package/core-dist/src/models/modelConfigResolver.test.js +302 -0
  489. package/core-dist/src/models/modelConfigResolver.test.js.map +1 -0
  490. package/core-dist/src/models/modelRegistry.d.ts +55 -0
  491. package/core-dist/src/models/modelRegistry.js +182 -0
  492. package/core-dist/src/models/modelRegistry.js.map +1 -0
  493. package/core-dist/src/models/modelRegistry.test.d.ts +6 -0
  494. package/core-dist/src/models/modelRegistry.test.js +408 -0
  495. package/core-dist/src/models/modelRegistry.test.js.map +1 -0
  496. package/core-dist/src/models/modelsConfig.d.ts +343 -0
  497. package/core-dist/src/models/modelsConfig.js +957 -0
  498. package/core-dist/src/models/modelsConfig.js.map +1 -0
  499. package/core-dist/src/models/modelsConfig.test.d.ts +6 -0
  500. package/core-dist/src/models/modelsConfig.test.js +1242 -0
  501. package/core-dist/src/models/modelsConfig.test.js.map +1 -0
  502. package/core-dist/src/models/types.d.ts +114 -0
  503. package/core-dist/src/models/types.js +7 -0
  504. package/core-dist/src/models/types.js.map +1 -0
  505. package/core-dist/src/output/json-formatter.d.ts +11 -0
  506. package/core-dist/src/output/json-formatter.js +30 -0
  507. package/core-dist/src/output/json-formatter.js.map +1 -0
  508. package/core-dist/src/output/json-formatter.test.d.ts +6 -0
  509. package/core-dist/src/output/json-formatter.test.js +266 -0
  510. package/core-dist/src/output/json-formatter.test.js.map +1 -0
  511. package/core-dist/src/output/types.d.ts +25 -0
  512. package/core-dist/src/output/types.js +17 -0
  513. package/core-dist/src/output/types.js.map +1 -0
  514. package/core-dist/src/prompts/mcp-prompts.d.ts +8 -0
  515. package/core-dist/src/prompts/mcp-prompts.js +13 -0
  516. package/core-dist/src/prompts/mcp-prompts.js.map +1 -0
  517. package/core-dist/src/prompts/prompt-registry.d.ts +34 -0
  518. package/core-dist/src/prompts/prompt-registry.js +65 -0
  519. package/core-dist/src/prompts/prompt-registry.js.map +1 -0
  520. package/core-dist/src/qwen/qwenContentGenerator.d.ts +71 -0
  521. package/core-dist/src/qwen/qwenContentGenerator.js +182 -0
  522. package/core-dist/src/qwen/qwenContentGenerator.js.map +1 -0
  523. package/core-dist/src/qwen/qwenContentGenerator.test.d.ts +6 -0
  524. package/core-dist/src/qwen/qwenContentGenerator.test.js +1175 -0
  525. package/core-dist/src/qwen/qwenContentGenerator.test.js.map +1 -0
  526. package/core-dist/src/qwen/qwenOAuth2.d.ts +195 -0
  527. package/core-dist/src/qwen/qwenOAuth2.js +677 -0
  528. package/core-dist/src/qwen/qwenOAuth2.js.map +1 -0
  529. package/core-dist/src/qwen/qwenOAuth2.test.d.ts +6 -0
  530. package/core-dist/src/qwen/qwenOAuth2.test.js +1621 -0
  531. package/core-dist/src/qwen/qwenOAuth2.test.js.map +1 -0
  532. package/core-dist/src/qwen/sharedTokenManager.d.ts +196 -0
  533. package/core-dist/src/qwen/sharedTokenManager.js +649 -0
  534. package/core-dist/src/qwen/sharedTokenManager.js.map +1 -0
  535. package/core-dist/src/qwen/sharedTokenManager.test.d.ts +7 -0
  536. package/core-dist/src/qwen/sharedTokenManager.test.js +662 -0
  537. package/core-dist/src/qwen/sharedTokenManager.test.js.map +1 -0
  538. package/core-dist/src/services/chatCompressionService.d.ts +32 -0
  539. package/core-dist/src/services/chatCompressionService.js +213 -0
  540. package/core-dist/src/services/chatCompressionService.js.map +1 -0
  541. package/core-dist/src/services/chatCompressionService.test.d.ts +6 -0
  542. package/core-dist/src/services/chatCompressionService.test.js +343 -0
  543. package/core-dist/src/services/chatCompressionService.test.js.map +1 -0
  544. package/core-dist/src/services/chatRecordingService.d.ts +215 -0
  545. package/core-dist/src/services/chatRecordingService.js +285 -0
  546. package/core-dist/src/services/chatRecordingService.js.map +1 -0
  547. package/core-dist/src/services/chatRecordingService.test.d.ts +6 -0
  548. package/core-dist/src/services/chatRecordingService.test.js +299 -0
  549. package/core-dist/src/services/chatRecordingService.test.js.map +1 -0
  550. package/core-dist/src/services/fileDiscoveryService.d.ts +45 -0
  551. package/core-dist/src/services/fileDiscoveryService.js +104 -0
  552. package/core-dist/src/services/fileDiscoveryService.js.map +1 -0
  553. package/core-dist/src/services/fileDiscoveryService.test.d.ts +6 -0
  554. package/core-dist/src/services/fileDiscoveryService.test.js +143 -0
  555. package/core-dist/src/services/fileDiscoveryService.test.js.map +1 -0
  556. package/core-dist/src/services/fileSystemService.d.ts +88 -0
  557. package/core-dist/src/services/fileSystemService.js +131 -0
  558. package/core-dist/src/services/fileSystemService.js.map +1 -0
  559. package/core-dist/src/services/fileSystemService.test.d.ts +6 -0
  560. package/core-dist/src/services/fileSystemService.test.js +216 -0
  561. package/core-dist/src/services/fileSystemService.test.js.map +1 -0
  562. package/core-dist/src/services/gitService.d.ts +22 -0
  563. package/core-dist/src/services/gitService.js +98 -0
  564. package/core-dist/src/services/gitService.js.map +1 -0
  565. package/core-dist/src/services/gitService.test.d.ts +6 -0
  566. package/core-dist/src/services/gitService.test.js +187 -0
  567. package/core-dist/src/services/gitService.test.js.map +1 -0
  568. package/core-dist/src/services/loopDetectionService.d.ts +86 -0
  569. package/core-dist/src/services/loopDetectionService.js +239 -0
  570. package/core-dist/src/services/loopDetectionService.js.map +1 -0
  571. package/core-dist/src/services/loopDetectionService.test.d.ts +6 -0
  572. package/core-dist/src/services/loopDetectionService.test.js +478 -0
  573. package/core-dist/src/services/loopDetectionService.test.js.map +1 -0
  574. package/core-dist/src/services/sessionService.d.ts +200 -0
  575. package/core-dist/src/services/sessionService.js +527 -0
  576. package/core-dist/src/services/sessionService.js.map +1 -0
  577. package/core-dist/src/services/sessionService.test.d.ts +6 -0
  578. package/core-dist/src/services/sessionService.test.js +576 -0
  579. package/core-dist/src/services/sessionService.test.js.map +1 -0
  580. package/core-dist/src/services/shellExecutionService.d.ts +104 -0
  581. package/core-dist/src/services/shellExecutionService.js +626 -0
  582. package/core-dist/src/services/shellExecutionService.js.map +1 -0
  583. package/core-dist/src/services/shellExecutionService.test.d.ts +6 -0
  584. package/core-dist/src/services/shellExecutionService.test.js +684 -0
  585. package/core-dist/src/services/shellExecutionService.test.js.map +1 -0
  586. package/core-dist/src/skills/index.d.ts +19 -0
  587. package/core-dist/src/skills/index.js +9 -0
  588. package/core-dist/src/skills/index.js.map +1 -0
  589. package/core-dist/src/skills/skill-load.d.ts +4 -0
  590. package/core-dist/src/skills/skill-load.js +137 -0
  591. package/core-dist/src/skills/skill-load.js.map +1 -0
  592. package/core-dist/src/skills/skill-load.test.d.ts +6 -0
  593. package/core-dist/src/skills/skill-load.test.js +237 -0
  594. package/core-dist/src/skills/skill-load.test.js.map +1 -0
  595. package/core-dist/src/skills/skill-manager.d.ts +134 -0
  596. package/core-dist/src/skills/skill-manager.js +505 -0
  597. package/core-dist/src/skills/skill-manager.js.map +1 -0
  598. package/core-dist/src/skills/skill-manager.test.d.ts +6 -0
  599. package/core-dist/src/skills/skill-manager.test.js +527 -0
  600. package/core-dist/src/skills/skill-manager.test.js.map +1 -0
  601. package/core-dist/src/skills/types.d.ts +88 -0
  602. package/core-dist/src/skills/types.js +29 -0
  603. package/core-dist/src/skills/types.js.map +1 -0
  604. package/core-dist/src/subagents/builtin-agents.d.ts +35 -0
  605. package/core-dist/src/subagents/builtin-agents.js +85 -0
  606. package/core-dist/src/subagents/builtin-agents.js.map +1 -0
  607. package/core-dist/src/subagents/builtin-agents.test.d.ts +6 -0
  608. package/core-dist/src/subagents/builtin-agents.test.js +78 -0
  609. package/core-dist/src/subagents/builtin-agents.test.js.map +1 -0
  610. package/core-dist/src/subagents/index.d.ts +29 -0
  611. package/core-dist/src/subagents/index.js +15 -0
  612. package/core-dist/src/subagents/index.js.map +1 -0
  613. package/core-dist/src/subagents/subagent-events.d.ts +105 -0
  614. package/core-dist/src/subagents/subagent-events.js +32 -0
  615. package/core-dist/src/subagents/subagent-events.js.map +1 -0
  616. package/core-dist/src/subagents/subagent-hooks.d.ts +29 -0
  617. package/core-dist/src/subagents/subagent-hooks.js +7 -0
  618. package/core-dist/src/subagents/subagent-hooks.js.map +1 -0
  619. package/core-dist/src/subagents/subagent-manager.d.ts +178 -0
  620. package/core-dist/src/subagents/subagent-manager.js +711 -0
  621. package/core-dist/src/subagents/subagent-manager.js.map +1 -0
  622. package/core-dist/src/subagents/subagent-manager.test.d.ts +6 -0
  623. package/core-dist/src/subagents/subagent-manager.test.js +829 -0
  624. package/core-dist/src/subagents/subagent-manager.test.js.map +1 -0
  625. package/core-dist/src/subagents/subagent-statistics.d.ts +50 -0
  626. package/core-dist/src/subagents/subagent-statistics.js +210 -0
  627. package/core-dist/src/subagents/subagent-statistics.js.map +1 -0
  628. package/core-dist/src/subagents/subagent-statistics.test.d.ts +6 -0
  629. package/core-dist/src/subagents/subagent-statistics.test.js +238 -0
  630. package/core-dist/src/subagents/subagent-statistics.test.js.map +1 -0
  631. package/core-dist/src/subagents/subagent.d.ts +167 -0
  632. package/core-dist/src/subagents/subagent.js +758 -0
  633. package/core-dist/src/subagents/subagent.js.map +1 -0
  634. package/core-dist/src/subagents/subagent.test.d.ts +6 -0
  635. package/core-dist/src/subagents/subagent.test.js +819 -0
  636. package/core-dist/src/subagents/subagent.test.js.map +1 -0
  637. package/core-dist/src/subagents/types.d.ts +224 -0
  638. package/core-dist/src/subagents/types.js +58 -0
  639. package/core-dist/src/subagents/types.js.map +1 -0
  640. package/core-dist/src/subagents/types.test.d.ts +6 -0
  641. package/core-dist/src/subagents/types.test.js +31 -0
  642. package/core-dist/src/subagents/types.test.js.map +1 -0
  643. package/core-dist/src/subagents/validation.d.ts +63 -0
  644. package/core-dist/src/subagents/validation.js +293 -0
  645. package/core-dist/src/subagents/validation.js.map +1 -0
  646. package/core-dist/src/subagents/validation.test.d.ts +6 -0
  647. package/core-dist/src/subagents/validation.test.js +330 -0
  648. package/core-dist/src/subagents/validation.test.js.map +1 -0
  649. package/core-dist/src/telemetry/config.d.ts +31 -0
  650. package/core-dist/src/telemetry/config.js +74 -0
  651. package/core-dist/src/telemetry/config.js.map +1 -0
  652. package/core-dist/src/telemetry/config.test.d.ts +6 -0
  653. package/core-dist/src/telemetry/config.test.js +124 -0
  654. package/core-dist/src/telemetry/config.test.js.map +1 -0
  655. package/core-dist/src/telemetry/constants.d.ts +39 -0
  656. package/core-dist/src/telemetry/constants.js +41 -0
  657. package/core-dist/src/telemetry/constants.js.map +1 -0
  658. package/core-dist/src/telemetry/file-exporters.d.ts +29 -0
  659. package/core-dist/src/telemetry/file-exporters.js +62 -0
  660. package/core-dist/src/telemetry/file-exporters.js.map +1 -0
  661. package/core-dist/src/telemetry/index.d.ts +25 -0
  662. package/core-dist/src/telemetry/index.js +31 -0
  663. package/core-dist/src/telemetry/index.js.map +1 -0
  664. package/core-dist/src/telemetry/integration.test.circular.d.ts +6 -0
  665. package/core-dist/src/telemetry/integration.test.circular.js +95 -0
  666. package/core-dist/src/telemetry/integration.test.circular.js.map +1 -0
  667. package/core-dist/src/telemetry/loggers.d.ts +40 -0
  668. package/core-dist/src/telemetry/loggers.js +712 -0
  669. package/core-dist/src/telemetry/loggers.js.map +1 -0
  670. package/core-dist/src/telemetry/loggers.test.circular.d.ts +6 -0
  671. package/core-dist/src/telemetry/loggers.test.circular.js +107 -0
  672. package/core-dist/src/telemetry/loggers.test.circular.js.map +1 -0
  673. package/core-dist/src/telemetry/loggers.test.d.ts +6 -0
  674. package/core-dist/src/telemetry/loggers.test.js +961 -0
  675. package/core-dist/src/telemetry/loggers.test.js.map +1 -0
  676. package/core-dist/src/telemetry/metrics.d.ts +320 -0
  677. package/core-dist/src/telemetry/metrics.js +532 -0
  678. package/core-dist/src/telemetry/metrics.js.map +1 -0
  679. package/core-dist/src/telemetry/metrics.test.d.ts +6 -0
  680. package/core-dist/src/telemetry/metrics.test.js +746 -0
  681. package/core-dist/src/telemetry/metrics.test.js.map +1 -0
  682. package/core-dist/src/telemetry/qwen-logger/event-types.d.ts +89 -0
  683. package/core-dist/src/telemetry/qwen-logger/event-types.js +2 -0
  684. package/core-dist/src/telemetry/qwen-logger/event-types.js.map +1 -0
  685. package/core-dist/src/telemetry/qwen-logger/qwen-logger.d.ts +102 -0
  686. package/core-dist/src/telemetry/qwen-logger/qwen-logger.js +739 -0
  687. package/core-dist/src/telemetry/qwen-logger/qwen-logger.js.map +1 -0
  688. package/core-dist/src/telemetry/qwen-logger/qwen-logger.test.d.ts +6 -0
  689. package/core-dist/src/telemetry/qwen-logger/qwen-logger.test.js +380 -0
  690. package/core-dist/src/telemetry/qwen-logger/qwen-logger.test.js.map +1 -0
  691. package/core-dist/src/telemetry/sdk.d.ts +9 -0
  692. package/core-dist/src/telemetry/sdk.js +163 -0
  693. package/core-dist/src/telemetry/sdk.js.map +1 -0
  694. package/core-dist/src/telemetry/sdk.test.d.ts +6 -0
  695. package/core-dist/src/telemetry/sdk.test.js +116 -0
  696. package/core-dist/src/telemetry/sdk.test.js.map +1 -0
  697. package/core-dist/src/telemetry/telemetry-utils.d.ts +6 -0
  698. package/core-dist/src/telemetry/telemetry-utils.js +14 -0
  699. package/core-dist/src/telemetry/telemetry-utils.js.map +1 -0
  700. package/core-dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
  701. package/core-dist/src/telemetry/telemetry-utils.test.js +40 -0
  702. package/core-dist/src/telemetry/telemetry-utils.test.js.map +1 -0
  703. package/core-dist/src/telemetry/telemetry.test.d.ts +6 -0
  704. package/core-dist/src/telemetry/telemetry.test.js +49 -0
  705. package/core-dist/src/telemetry/telemetry.test.js.map +1 -0
  706. package/core-dist/src/telemetry/tool-call-decision.d.ts +13 -0
  707. package/core-dist/src/telemetry/tool-call-decision.js +29 -0
  708. package/core-dist/src/telemetry/tool-call-decision.js.map +1 -0
  709. package/core-dist/src/telemetry/types.d.ts +363 -0
  710. package/core-dist/src/telemetry/types.js +635 -0
  711. package/core-dist/src/telemetry/types.js.map +1 -0
  712. package/core-dist/src/telemetry/uiTelemetry.d.ts +80 -0
  713. package/core-dist/src/telemetry/uiTelemetry.js +164 -0
  714. package/core-dist/src/telemetry/uiTelemetry.js.map +1 -0
  715. package/core-dist/src/telemetry/uiTelemetry.test.d.ts +6 -0
  716. package/core-dist/src/telemetry/uiTelemetry.test.js +625 -0
  717. package/core-dist/src/telemetry/uiTelemetry.test.js.map +1 -0
  718. package/core-dist/src/test-utils/config.d.ts +17 -0
  719. package/core-dist/src/test-utils/config.js +31 -0
  720. package/core-dist/src/test-utils/config.js.map +1 -0
  721. package/core-dist/src/test-utils/index.d.ts +6 -0
  722. package/core-dist/src/test-utils/index.js +7 -0
  723. package/core-dist/src/test-utils/index.js.map +1 -0
  724. package/core-dist/src/test-utils/mock-tool.d.ts +66 -0
  725. package/core-dist/src/test-utils/mock-tool.js +121 -0
  726. package/core-dist/src/test-utils/mock-tool.js.map +1 -0
  727. package/core-dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  728. package/core-dist/src/test-utils/mockWorkspaceContext.js +24 -0
  729. package/core-dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  730. package/core-dist/src/tools/askUserQuestion.d.ts +41 -0
  731. package/core-dist/src/tools/askUserQuestion.js +247 -0
  732. package/core-dist/src/tools/askUserQuestion.js.map +1 -0
  733. package/core-dist/src/tools/askUserQuestion.test.d.ts +6 -0
  734. package/core-dist/src/tools/askUserQuestion.test.js +218 -0
  735. package/core-dist/src/tools/askUserQuestion.test.js.map +1 -0
  736. package/core-dist/src/tools/diffOptions.d.ts +9 -0
  737. package/core-dist/src/tools/diffOptions.js +46 -0
  738. package/core-dist/src/tools/diffOptions.js.map +1 -0
  739. package/core-dist/src/tools/diffOptions.test.d.ts +6 -0
  740. package/core-dist/src/tools/diffOptions.test.js +155 -0
  741. package/core-dist/src/tools/diffOptions.test.js.map +1 -0
  742. package/core-dist/src/tools/edit.d.ts +55 -0
  743. package/core-dist/src/tools/edit.js +446 -0
  744. package/core-dist/src/tools/edit.js.map +1 -0
  745. package/core-dist/src/tools/edit.test.d.ts +6 -0
  746. package/core-dist/src/tools/edit.test.js +742 -0
  747. package/core-dist/src/tools/edit.test.js.map +1 -0
  748. package/core-dist/src/tools/exitPlanMode.d.ts +28 -0
  749. package/core-dist/src/tools/exitPlanMode.js +144 -0
  750. package/core-dist/src/tools/exitPlanMode.js.map +1 -0
  751. package/core-dist/src/tools/exitPlanMode.test.d.ts +6 -0
  752. package/core-dist/src/tools/exitPlanMode.test.js +178 -0
  753. package/core-dist/src/tools/exitPlanMode.test.js.map +1 -0
  754. package/core-dist/src/tools/glob.d.ts +44 -0
  755. package/core-dist/src/tools/glob.js +195 -0
  756. package/core-dist/src/tools/glob.js.map +1 -0
  757. package/core-dist/src/tools/glob.test.d.ts +6 -0
  758. package/core-dist/src/tools/glob.test.js +481 -0
  759. package/core-dist/src/tools/glob.test.js.map +1 -0
  760. package/core-dist/src/tools/grep.d.ts +44 -0
  761. package/core-dist/src/tools/grep.js +427 -0
  762. package/core-dist/src/tools/grep.js.map +1 -0
  763. package/core-dist/src/tools/grep.test.d.ts +6 -0
  764. package/core-dist/src/tools/grep.test.js +360 -0
  765. package/core-dist/src/tools/grep.test.js.map +1 -0
  766. package/core-dist/src/tools/ls.d.ts +68 -0
  767. package/core-dist/src/tools/ls.js +221 -0
  768. package/core-dist/src/tools/ls.js.map +1 -0
  769. package/core-dist/src/tools/ls.test.d.ts +6 -0
  770. package/core-dist/src/tools/ls.test.js +246 -0
  771. package/core-dist/src/tools/ls.test.js.map +1 -0
  772. package/core-dist/src/tools/lsp.d.ts +66 -0
  773. package/core-dist/src/tools/lsp.js +894 -0
  774. package/core-dist/src/tools/lsp.js.map +1 -0
  775. package/core-dist/src/tools/lsp.test.d.ts +6 -0
  776. package/core-dist/src/tools/lsp.test.js +960 -0
  777. package/core-dist/src/tools/lsp.test.js.map +1 -0
  778. package/core-dist/src/tools/mcp-client-manager.d.ts +110 -0
  779. package/core-dist/src/tools/mcp-client-manager.js +381 -0
  780. package/core-dist/src/tools/mcp-client-manager.js.map +1 -0
  781. package/core-dist/src/tools/mcp-client-manager.test.d.ts +6 -0
  782. package/core-dist/src/tools/mcp-client-manager.test.js +207 -0
  783. package/core-dist/src/tools/mcp-client-manager.test.js.map +1 -0
  784. package/core-dist/src/tools/mcp-client.d.ts +199 -0
  785. package/core-dist/src/tools/mcp-client.js +1001 -0
  786. package/core-dist/src/tools/mcp-client.js.map +1 -0
  787. package/core-dist/src/tools/mcp-client.test.d.ts +6 -0
  788. package/core-dist/src/tools/mcp-client.test.js +307 -0
  789. package/core-dist/src/tools/mcp-client.test.js.map +1 -0
  790. package/core-dist/src/tools/mcp-tool.d.ts +69 -0
  791. package/core-dist/src/tools/mcp-tool.js +365 -0
  792. package/core-dist/src/tools/mcp-tool.js.map +1 -0
  793. package/core-dist/src/tools/mcp-tool.test.d.ts +6 -0
  794. package/core-dist/src/tools/mcp-tool.test.js +827 -0
  795. package/core-dist/src/tools/mcp-tool.test.js.map +1 -0
  796. package/core-dist/src/tools/memoryTool.d.ts +42 -0
  797. package/core-dist/src/tools/memoryTool.js +403 -0
  798. package/core-dist/src/tools/memoryTool.js.map +1 -0
  799. package/core-dist/src/tools/memoryTool.test.d.ts +6 -0
  800. package/core-dist/src/tools/memoryTool.test.js +416 -0
  801. package/core-dist/src/tools/memoryTool.test.js.map +1 -0
  802. package/core-dist/src/tools/modifiable-tool.d.ts +32 -0
  803. package/core-dist/src/tools/modifiable-tool.js +90 -0
  804. package/core-dist/src/tools/modifiable-tool.js.map +1 -0
  805. package/core-dist/src/tools/modifiable-tool.test.d.ts +6 -0
  806. package/core-dist/src/tools/modifiable-tool.test.js +188 -0
  807. package/core-dist/src/tools/modifiable-tool.test.js.map +1 -0
  808. package/core-dist/src/tools/read-file.d.ts +35 -0
  809. package/core-dist/src/tools/read-file.js +141 -0
  810. package/core-dist/src/tools/read-file.js.map +1 -0
  811. package/core-dist/src/tools/read-file.test.d.ts +6 -0
  812. package/core-dist/src/tools/read-file.test.js +333 -0
  813. package/core-dist/src/tools/read-file.test.js.map +1 -0
  814. package/core-dist/src/tools/ripGrep.d.ts +44 -0
  815. package/core-dist/src/tools/ripGrep.js +235 -0
  816. package/core-dist/src/tools/ripGrep.js.map +1 -0
  817. package/core-dist/src/tools/ripGrep.test.d.ts +6 -0
  818. package/core-dist/src/tools/ripGrep.test.js +529 -0
  819. package/core-dist/src/tools/ripGrep.test.js.map +1 -0
  820. package/core-dist/src/tools/sdk-control-client-transport.d.ts +67 -0
  821. package/core-dist/src/tools/sdk-control-client-transport.js +93 -0
  822. package/core-dist/src/tools/sdk-control-client-transport.js.map +1 -0
  823. package/core-dist/src/tools/shell.d.ts +34 -0
  824. package/core-dist/src/tools/shell.js +509 -0
  825. package/core-dist/src/tools/shell.js.map +1 -0
  826. package/core-dist/src/tools/shell.test.d.ts +6 -0
  827. package/core-dist/src/tools/shell.test.js +880 -0
  828. package/core-dist/src/tools/shell.test.js.map +1 -0
  829. package/core-dist/src/tools/skill.d.ts +45 -0
  830. package/core-dist/src/tools/skill.js +214 -0
  831. package/core-dist/src/tools/skill.js.map +1 -0
  832. package/core-dist/src/tools/skill.test.d.ts +6 -0
  833. package/core-dist/src/tools/skill.test.js +280 -0
  834. package/core-dist/src/tools/skill.test.js.map +1 -0
  835. package/core-dist/src/tools/task.d.ts +60 -0
  836. package/core-dist/src/tools/task.js +417 -0
  837. package/core-dist/src/tools/task.js.map +1 -0
  838. package/core-dist/src/tools/task.test.d.ts +6 -0
  839. package/core-dist/src/tools/task.test.js +367 -0
  840. package/core-dist/src/tools/task.test.js.map +1 -0
  841. package/core-dist/src/tools/todoWrite.d.ts +42 -0
  842. package/core-dist/src/tools/todoWrite.js +409 -0
  843. package/core-dist/src/tools/todoWrite.js.map +1 -0
  844. package/core-dist/src/tools/todoWrite.test.d.ts +6 -0
  845. package/core-dist/src/tools/todoWrite.test.js +234 -0
  846. package/core-dist/src/tools/todoWrite.test.js.map +1 -0
  847. package/core-dist/src/tools/tool-error.d.ts +45 -0
  848. package/core-dist/src/tools/tool-error.js +61 -0
  849. package/core-dist/src/tools/tool-error.js.map +1 -0
  850. package/core-dist/src/tools/tool-names.d.ts +60 -0
  851. package/core-dist/src/tools/tool-names.js +66 -0
  852. package/core-dist/src/tools/tool-names.js.map +1 -0
  853. package/core-dist/src/tools/tool-registry.d.ts +103 -0
  854. package/core-dist/src/tools/tool-registry.js +404 -0
  855. package/core-dist/src/tools/tool-registry.js.map +1 -0
  856. package/core-dist/src/tools/tool-registry.test.d.ts +6 -0
  857. package/core-dist/src/tools/tool-registry.test.js +331 -0
  858. package/core-dist/src/tools/tool-registry.test.js.map +1 -0
  859. package/core-dist/src/tools/tools.d.ts +364 -0
  860. package/core-dist/src/tools/tools.js +263 -0
  861. package/core-dist/src/tools/tools.js.map +1 -0
  862. package/core-dist/src/tools/tools.test.d.ts +6 -0
  863. package/core-dist/src/tools/tools.test.js +205 -0
  864. package/core-dist/src/tools/tools.test.js.map +1 -0
  865. package/core-dist/src/tools/web-fetch.d.ts +31 -0
  866. package/core-dist/src/tools/web-fetch.js +168 -0
  867. package/core-dist/src/tools/web-fetch.js.map +1 -0
  868. package/core-dist/src/tools/web-fetch.test.d.ts +6 -0
  869. package/core-dist/src/tools/web-fetch.test.js +134 -0
  870. package/core-dist/src/tools/web-fetch.test.js.map +1 -0
  871. package/core-dist/src/tools/web-search/base-provider.d.ts +31 -0
  872. package/core-dist/src/tools/web-search/base-provider.js +34 -0
  873. package/core-dist/src/tools/web-search/base-provider.js.map +1 -0
  874. package/core-dist/src/tools/web-search/index.d.ts +24 -0
  875. package/core-dist/src/tools/web-search/index.js +249 -0
  876. package/core-dist/src/tools/web-search/index.js.map +1 -0
  877. package/core-dist/src/tools/web-search/index.test.d.ts +6 -0
  878. package/core-dist/src/tools/web-search/index.test.js +237 -0
  879. package/core-dist/src/tools/web-search/index.test.js.map +1 -0
  880. package/core-dist/src/tools/web-search/providers/dashscope-provider.d.ts +23 -0
  881. package/core-dist/src/tools/web-search/providers/dashscope-provider.js +120 -0
  882. package/core-dist/src/tools/web-search/providers/dashscope-provider.js.map +1 -0
  883. package/core-dist/src/tools/web-search/providers/google-provider.d.ts +17 -0
  884. package/core-dist/src/tools/web-search/providers/google-provider.js +55 -0
  885. package/core-dist/src/tools/web-search/providers/google-provider.js.map +1 -0
  886. package/core-dist/src/tools/web-search/providers/tavily-provider.d.ts +17 -0
  887. package/core-dist/src/tools/web-search/providers/tavily-provider.js +54 -0
  888. package/core-dist/src/tools/web-search/providers/tavily-provider.js.map +1 -0
  889. package/core-dist/src/tools/web-search/types.d.ts +138 -0
  890. package/core-dist/src/tools/web-search/types.js +7 -0
  891. package/core-dist/src/tools/web-search/types.js.map +1 -0
  892. package/core-dist/src/tools/web-search/utils.d.ts +28 -0
  893. package/core-dist/src/tools/web-search/utils.js +35 -0
  894. package/core-dist/src/tools/web-search/utils.js.map +1 -0
  895. package/core-dist/src/tools/write-file.d.ts +52 -0
  896. package/core-dist/src/tools/write-file.js +316 -0
  897. package/core-dist/src/tools/write-file.js.map +1 -0
  898. package/core-dist/src/tools/write-file.test.d.ts +6 -0
  899. package/core-dist/src/tools/write-file.test.js +613 -0
  900. package/core-dist/src/tools/write-file.test.js.map +1 -0
  901. package/core-dist/src/utils/LruCache.d.ts +13 -0
  902. package/core-dist/src/utils/LruCache.js +38 -0
  903. package/core-dist/src/utils/LruCache.js.map +1 -0
  904. package/core-dist/src/utils/browser.d.ts +13 -0
  905. package/core-dist/src/utils/browser.js +50 -0
  906. package/core-dist/src/utils/browser.js.map +1 -0
  907. package/core-dist/src/utils/configResolver.d.ts +120 -0
  908. package/core-dist/src/utils/configResolver.js +125 -0
  909. package/core-dist/src/utils/configResolver.js.map +1 -0
  910. package/core-dist/src/utils/configResolver.test.d.ts +6 -0
  911. package/core-dist/src/utils/configResolver.test.js +99 -0
  912. package/core-dist/src/utils/configResolver.test.js.map +1 -0
  913. package/core-dist/src/utils/debugLogger.d.ts +46 -0
  914. package/core-dist/src/utils/debugLogger.js +159 -0
  915. package/core-dist/src/utils/debugLogger.js.map +1 -0
  916. package/core-dist/src/utils/debugLogger.test.d.ts +6 -0
  917. package/core-dist/src/utils/debugLogger.test.js +188 -0
  918. package/core-dist/src/utils/debugLogger.test.js.map +1 -0
  919. package/core-dist/src/utils/editHelper.d.ts +58 -0
  920. package/core-dist/src/utils/editHelper.js +342 -0
  921. package/core-dist/src/utils/editHelper.js.map +1 -0
  922. package/core-dist/src/utils/editHelper.test.d.ts +6 -0
  923. package/core-dist/src/utils/editHelper.test.js +127 -0
  924. package/core-dist/src/utils/editHelper.test.js.map +1 -0
  925. package/core-dist/src/utils/editor.d.ts +37 -0
  926. package/core-dist/src/utils/editor.js +179 -0
  927. package/core-dist/src/utils/editor.js.map +1 -0
  928. package/core-dist/src/utils/editor.test.d.ts +6 -0
  929. package/core-dist/src/utils/editor.test.js +434 -0
  930. package/core-dist/src/utils/editor.test.js.map +1 -0
  931. package/core-dist/src/utils/envVarResolver.d.ts +39 -0
  932. package/core-dist/src/utils/envVarResolver.js +100 -0
  933. package/core-dist/src/utils/envVarResolver.js.map +1 -0
  934. package/core-dist/src/utils/envVarResolver.test.d.ts +6 -0
  935. package/core-dist/src/utils/envVarResolver.test.js +221 -0
  936. package/core-dist/src/utils/envVarResolver.test.js.map +1 -0
  937. package/core-dist/src/utils/environmentContext.d.ts +21 -0
  938. package/core-dist/src/utils/environmentContext.js +73 -0
  939. package/core-dist/src/utils/environmentContext.js.map +1 -0
  940. package/core-dist/src/utils/environmentContext.test.d.ts +6 -0
  941. package/core-dist/src/utils/environmentContext.test.js +151 -0
  942. package/core-dist/src/utils/environmentContext.test.js.map +1 -0
  943. package/core-dist/src/utils/errorParsing.d.ts +7 -0
  944. package/core-dist/src/utils/errorParsing.js +72 -0
  945. package/core-dist/src/utils/errorParsing.js.map +1 -0
  946. package/core-dist/src/utils/errorParsing.test.d.ts +6 -0
  947. package/core-dist/src/utils/errorParsing.test.js +87 -0
  948. package/core-dist/src/utils/errorParsing.test.js.map +1 -0
  949. package/core-dist/src/utils/errorReporting.d.ts +14 -0
  950. package/core-dist/src/utils/errorReporting.js +56 -0
  951. package/core-dist/src/utils/errorReporting.js.map +1 -0
  952. package/core-dist/src/utils/errorReporting.test.d.ts +6 -0
  953. package/core-dist/src/utils/errorReporting.test.js +84 -0
  954. package/core-dist/src/utils/errorReporting.test.js.map +1 -0
  955. package/core-dist/src/utils/errors.d.ts +44 -0
  956. package/core-dist/src/utils/errors.js +114 -0
  957. package/core-dist/src/utils/errors.js.map +1 -0
  958. package/core-dist/src/utils/errors.test.d.ts +6 -0
  959. package/core-dist/src/utils/errors.test.js +70 -0
  960. package/core-dist/src/utils/errors.test.js.map +1 -0
  961. package/core-dist/src/utils/fetch.d.ts +14 -0
  962. package/core-dist/src/utils/fetch.js +152 -0
  963. package/core-dist/src/utils/fetch.js.map +1 -0
  964. package/core-dist/src/utils/fetch.test.d.ts +6 -0
  965. package/core-dist/src/utils/fetch.test.js +40 -0
  966. package/core-dist/src/utils/fetch.test.js.map +1 -0
  967. package/core-dist/src/utils/fileUtils.d.ts +102 -0
  968. package/core-dist/src/utils/fileUtils.js +584 -0
  969. package/core-dist/src/utils/fileUtils.js.map +1 -0
  970. package/core-dist/src/utils/fileUtils.test.d.ts +6 -0
  971. package/core-dist/src/utils/fileUtils.test.js +808 -0
  972. package/core-dist/src/utils/fileUtils.test.js.map +1 -0
  973. package/core-dist/src/utils/filesearch/crawlCache.d.ts +25 -0
  974. package/core-dist/src/utils/filesearch/crawlCache.js +57 -0
  975. package/core-dist/src/utils/filesearch/crawlCache.js.map +1 -0
  976. package/core-dist/src/utils/filesearch/crawlCache.test.d.ts +6 -0
  977. package/core-dist/src/utils/filesearch/crawlCache.test.js +103 -0
  978. package/core-dist/src/utils/filesearch/crawlCache.test.js.map +1 -0
  979. package/core-dist/src/utils/filesearch/crawler.d.ts +15 -0
  980. package/core-dist/src/utils/filesearch/crawler.js +50 -0
  981. package/core-dist/src/utils/filesearch/crawler.js.map +1 -0
  982. package/core-dist/src/utils/filesearch/crawler.test.d.ts +6 -0
  983. package/core-dist/src/utils/filesearch/crawler.test.js +468 -0
  984. package/core-dist/src/utils/filesearch/crawler.test.js.map +1 -0
  985. package/core-dist/src/utils/filesearch/fileSearch.d.ts +38 -0
  986. package/core-dist/src/utils/filesearch/fileSearch.js +194 -0
  987. package/core-dist/src/utils/filesearch/fileSearch.js.map +1 -0
  988. package/core-dist/src/utils/filesearch/fileSearch.test.d.ts +6 -0
  989. package/core-dist/src/utils/filesearch/fileSearch.test.js +642 -0
  990. package/core-dist/src/utils/filesearch/fileSearch.test.js.map +1 -0
  991. package/core-dist/src/utils/filesearch/ignore.d.ts +42 -0
  992. package/core-dist/src/utils/filesearch/ignore.js +106 -0
  993. package/core-dist/src/utils/filesearch/ignore.js.map +1 -0
  994. package/core-dist/src/utils/filesearch/ignore.test.d.ts +6 -0
  995. package/core-dist/src/utils/filesearch/ignore.test.js +144 -0
  996. package/core-dist/src/utils/filesearch/ignore.test.js.map +1 -0
  997. package/core-dist/src/utils/filesearch/result-cache.d.ts +33 -0
  998. package/core-dist/src/utils/filesearch/result-cache.js +59 -0
  999. package/core-dist/src/utils/filesearch/result-cache.js.map +1 -0
  1000. package/core-dist/src/utils/filesearch/result-cache.test.d.ts +6 -0
  1001. package/core-dist/src/utils/filesearch/result-cache.test.js +46 -0
  1002. package/core-dist/src/utils/filesearch/result-cache.test.js.map +1 -0
  1003. package/core-dist/src/utils/formatters.d.ts +6 -0
  1004. package/core-dist/src/utils/formatters.js +16 -0
  1005. package/core-dist/src/utils/formatters.js.map +1 -0
  1006. package/core-dist/src/utils/generateContentResponseUtilities.d.ts +13 -0
  1007. package/core-dist/src/utils/generateContentResponseUtilities.js +95 -0
  1008. package/core-dist/src/utils/generateContentResponseUtilities.js.map +1 -0
  1009. package/core-dist/src/utils/generateContentResponseUtilities.test.d.ts +6 -0
  1010. package/core-dist/src/utils/generateContentResponseUtilities.test.js +235 -0
  1011. package/core-dist/src/utils/generateContentResponseUtilities.test.js.map +1 -0
  1012. package/core-dist/src/utils/getFolderStructure.d.ts +31 -0
  1013. package/core-dist/src/utils/getFolderStructure.js +233 -0
  1014. package/core-dist/src/utils/getFolderStructure.js.map +1 -0
  1015. package/core-dist/src/utils/getFolderStructure.test.d.ts +6 -0
  1016. package/core-dist/src/utils/getFolderStructure.test.js +282 -0
  1017. package/core-dist/src/utils/getFolderStructure.test.js.map +1 -0
  1018. package/core-dist/src/utils/getPty.d.ts +7 -0
  1019. package/core-dist/src/utils/getPty.js +7 -0
  1020. package/core-dist/src/utils/getPty.js.map +1 -0
  1021. package/core-dist/src/utils/gitIgnoreParser.d.ts +16 -0
  1022. package/core-dist/src/utils/gitIgnoreParser.js +152 -0
  1023. package/core-dist/src/utils/gitIgnoreParser.js.map +1 -0
  1024. package/core-dist/src/utils/gitIgnoreParser.test.d.ts +6 -0
  1025. package/core-dist/src/utils/gitIgnoreParser.test.js +185 -0
  1026. package/core-dist/src/utils/gitIgnoreParser.test.js.map +1 -0
  1027. package/core-dist/src/utils/gitUtils.d.ts +21 -0
  1028. package/core-dist/src/utils/gitUtils.js +78 -0
  1029. package/core-dist/src/utils/gitUtils.js.map +1 -0
  1030. package/core-dist/src/utils/iconvHelper.d.ts +33 -0
  1031. package/core-dist/src/utils/iconvHelper.js +48 -0
  1032. package/core-dist/src/utils/iconvHelper.js.map +1 -0
  1033. package/core-dist/src/utils/ignorePatterns.d.ts +103 -0
  1034. package/core-dist/src/utils/ignorePatterns.js +222 -0
  1035. package/core-dist/src/utils/ignorePatterns.js.map +1 -0
  1036. package/core-dist/src/utils/ignorePatterns.test.d.ts +6 -0
  1037. package/core-dist/src/utils/ignorePatterns.test.js +255 -0
  1038. package/core-dist/src/utils/ignorePatterns.test.js.map +1 -0
  1039. package/core-dist/src/utils/installationManager.d.ts +16 -0
  1040. package/core-dist/src/utils/installationManager.js +52 -0
  1041. package/core-dist/src/utils/installationManager.js.map +1 -0
  1042. package/core-dist/src/utils/installationManager.test.d.ts +6 -0
  1043. package/core-dist/src/utils/installationManager.test.js +79 -0
  1044. package/core-dist/src/utils/installationManager.test.js.map +1 -0
  1045. package/core-dist/src/utils/jsonl-utils.d.ts +38 -0
  1046. package/core-dist/src/utils/jsonl-utils.js +176 -0
  1047. package/core-dist/src/utils/jsonl-utils.js.map +1 -0
  1048. package/core-dist/src/utils/language-detection.d.ts +6 -0
  1049. package/core-dist/src/utils/language-detection.js +101 -0
  1050. package/core-dist/src/utils/language-detection.js.map +1 -0
  1051. package/core-dist/src/utils/memoryDiscovery.d.ts +15 -0
  1052. package/core-dist/src/utils/memoryDiscovery.js +238 -0
  1053. package/core-dist/src/utils/memoryDiscovery.js.map +1 -0
  1054. package/core-dist/src/utils/memoryDiscovery.test.d.ts +6 -0
  1055. package/core-dist/src/utils/memoryDiscovery.test.js +212 -0
  1056. package/core-dist/src/utils/memoryDiscovery.test.js.map +1 -0
  1057. package/core-dist/src/utils/memoryImportProcessor.d.ts +41 -0
  1058. package/core-dist/src/utils/memoryImportProcessor.js +296 -0
  1059. package/core-dist/src/utils/memoryImportProcessor.js.map +1 -0
  1060. package/core-dist/src/utils/memoryImportProcessor.test.d.ts +6 -0
  1061. package/core-dist/src/utils/memoryImportProcessor.test.js +631 -0
  1062. package/core-dist/src/utils/memoryImportProcessor.test.js.map +1 -0
  1063. package/core-dist/src/utils/messageInspectors.d.ts +8 -0
  1064. package/core-dist/src/utils/messageInspectors.js +16 -0
  1065. package/core-dist/src/utils/messageInspectors.js.map +1 -0
  1066. package/core-dist/src/utils/nextSpeakerChecker.d.ts +12 -0
  1067. package/core-dist/src/utils/nextSpeakerChecker.js +99 -0
  1068. package/core-dist/src/utils/nextSpeakerChecker.js.map +1 -0
  1069. package/core-dist/src/utils/nextSpeakerChecker.test.d.ts +6 -0
  1070. package/core-dist/src/utils/nextSpeakerChecker.test.js +183 -0
  1071. package/core-dist/src/utils/nextSpeakerChecker.test.js.map +1 -0
  1072. package/core-dist/src/utils/openaiLogger.d.ts +42 -0
  1073. package/core-dist/src/utils/openaiLogger.js +140 -0
  1074. package/core-dist/src/utils/openaiLogger.js.map +1 -0
  1075. package/core-dist/src/utils/openaiLogger.test.d.ts +6 -0
  1076. package/core-dist/src/utils/openaiLogger.test.js +314 -0
  1077. package/core-dist/src/utils/openaiLogger.test.js.map +1 -0
  1078. package/core-dist/src/utils/partUtils.d.ts +35 -0
  1079. package/core-dist/src/utils/partUtils.js +133 -0
  1080. package/core-dist/src/utils/partUtils.js.map +1 -0
  1081. package/core-dist/src/utils/partUtils.test.d.ts +6 -0
  1082. package/core-dist/src/utils/partUtils.test.js +241 -0
  1083. package/core-dist/src/utils/partUtils.test.js.map +1 -0
  1084. package/core-dist/src/utils/pathReader.d.ts +17 -0
  1085. package/core-dist/src/utils/pathReader.js +92 -0
  1086. package/core-dist/src/utils/pathReader.js.map +1 -0
  1087. package/core-dist/src/utils/pathReader.test.d.ts +6 -0
  1088. package/core-dist/src/utils/pathReader.test.js +367 -0
  1089. package/core-dist/src/utils/pathReader.test.js.map +1 -0
  1090. package/core-dist/src/utils/paths.d.ts +110 -0
  1091. package/core-dist/src/utils/paths.js +269 -0
  1092. package/core-dist/src/utils/paths.js.map +1 -0
  1093. package/core-dist/src/utils/paths.test.d.ts +6 -0
  1094. package/core-dist/src/utils/paths.test.js +633 -0
  1095. package/core-dist/src/utils/paths.test.js.map +1 -0
  1096. package/core-dist/src/utils/projectSummary.d.ts +22 -0
  1097. package/core-dist/src/utils/projectSummary.js +86 -0
  1098. package/core-dist/src/utils/projectSummary.js.map +1 -0
  1099. package/core-dist/src/utils/promptIdContext.d.ts +7 -0
  1100. package/core-dist/src/utils/promptIdContext.js +8 -0
  1101. package/core-dist/src/utils/promptIdContext.js.map +1 -0
  1102. package/core-dist/src/utils/quotaErrorDetection.d.ts +19 -0
  1103. package/core-dist/src/utils/quotaErrorDetection.js +84 -0
  1104. package/core-dist/src/utils/quotaErrorDetection.js.map +1 -0
  1105. package/core-dist/src/utils/quotaErrorDetection.test.d.ts +6 -0
  1106. package/core-dist/src/utils/quotaErrorDetection.test.js +104 -0
  1107. package/core-dist/src/utils/quotaErrorDetection.test.js.map +1 -0
  1108. package/core-dist/src/utils/qwenIgnoreParser.d.ts +18 -0
  1109. package/core-dist/src/utils/qwenIgnoreParser.js +61 -0
  1110. package/core-dist/src/utils/qwenIgnoreParser.js.map +1 -0
  1111. package/core-dist/src/utils/qwenIgnoreParser.test.d.ts +6 -0
  1112. package/core-dist/src/utils/qwenIgnoreParser.test.js +50 -0
  1113. package/core-dist/src/utils/qwenIgnoreParser.test.js.map +1 -0
  1114. package/core-dist/src/utils/rateLimit.d.ts +23 -0
  1115. package/core-dist/src/utils/rateLimit.js +69 -0
  1116. package/core-dist/src/utils/rateLimit.js.map +1 -0
  1117. package/core-dist/src/utils/rateLimit.test.d.ts +6 -0
  1118. package/core-dist/src/utils/rateLimit.test.js +72 -0
  1119. package/core-dist/src/utils/rateLimit.test.js.map +1 -0
  1120. package/core-dist/src/utils/readManyFiles.d.ts +67 -0
  1121. package/core-dist/src/utils/readManyFiles.js +133 -0
  1122. package/core-dist/src/utils/readManyFiles.js.map +1 -0
  1123. package/core-dist/src/utils/readManyFiles.test.d.ts +6 -0
  1124. package/core-dist/src/utils/readManyFiles.test.js +230 -0
  1125. package/core-dist/src/utils/readManyFiles.test.js.map +1 -0
  1126. package/core-dist/src/utils/request-tokenizer/imageTokenizer.d.ts +112 -0
  1127. package/core-dist/src/utils/request-tokenizer/imageTokenizer.js +403 -0
  1128. package/core-dist/src/utils/request-tokenizer/imageTokenizer.js.map +1 -0
  1129. package/core-dist/src/utils/request-tokenizer/imageTokenizer.test.d.ts +6 -0
  1130. package/core-dist/src/utils/request-tokenizer/imageTokenizer.test.js +114 -0
  1131. package/core-dist/src/utils/request-tokenizer/imageTokenizer.test.js.map +1 -0
  1132. package/core-dist/src/utils/request-tokenizer/index.d.ts +9 -0
  1133. package/core-dist/src/utils/request-tokenizer/index.js +9 -0
  1134. package/core-dist/src/utils/request-tokenizer/index.js.map +1 -0
  1135. package/core-dist/src/utils/request-tokenizer/requestTokenizer.d.ts +52 -0
  1136. package/core-dist/src/utils/request-tokenizer/requestTokenizer.js +252 -0
  1137. package/core-dist/src/utils/request-tokenizer/requestTokenizer.js.map +1 -0
  1138. package/core-dist/src/utils/request-tokenizer/requestTokenizer.test.d.ts +6 -0
  1139. package/core-dist/src/utils/request-tokenizer/requestTokenizer.test.js +227 -0
  1140. package/core-dist/src/utils/request-tokenizer/requestTokenizer.test.js.map +1 -0
  1141. package/core-dist/src/utils/request-tokenizer/supportedImageFormats.d.ts +30 -0
  1142. package/core-dist/src/utils/request-tokenizer/supportedImageFormats.js +41 -0
  1143. package/core-dist/src/utils/request-tokenizer/supportedImageFormats.js.map +1 -0
  1144. package/core-dist/src/utils/request-tokenizer/textTokenizer.d.ts +32 -0
  1145. package/core-dist/src/utils/request-tokenizer/textTokenizer.js +54 -0
  1146. package/core-dist/src/utils/request-tokenizer/textTokenizer.js.map +1 -0
  1147. package/core-dist/src/utils/request-tokenizer/textTokenizer.test.d.ts +6 -0
  1148. package/core-dist/src/utils/request-tokenizer/textTokenizer.test.js +237 -0
  1149. package/core-dist/src/utils/request-tokenizer/textTokenizer.test.js.map +1 -0
  1150. package/core-dist/src/utils/request-tokenizer/types.d.ts +34 -0
  1151. package/core-dist/src/utils/request-tokenizer/types.js +7 -0
  1152. package/core-dist/src/utils/request-tokenizer/types.js.map +1 -0
  1153. package/core-dist/src/utils/retry.d.ts +38 -0
  1154. package/core-dist/src/utils/retry.js +180 -0
  1155. package/core-dist/src/utils/retry.js.map +1 -0
  1156. package/core-dist/src/utils/retry.test.d.ts +6 -0
  1157. package/core-dist/src/utils/retry.test.js +402 -0
  1158. package/core-dist/src/utils/retry.test.js.map +1 -0
  1159. package/core-dist/src/utils/ripgrepUtils.d.ts +61 -0
  1160. package/core-dist/src/utils/ripgrepUtils.js +227 -0
  1161. package/core-dist/src/utils/ripgrepUtils.js.map +1 -0
  1162. package/core-dist/src/utils/ripgrepUtils.test.d.ts +6 -0
  1163. package/core-dist/src/utils/ripgrepUtils.test.js +101 -0
  1164. package/core-dist/src/utils/ripgrepUtils.test.js.map +1 -0
  1165. package/core-dist/src/utils/runtimeFetchOptions.d.ts +44 -0
  1166. package/core-dist/src/utils/runtimeFetchOptions.js +92 -0
  1167. package/core-dist/src/utils/runtimeFetchOptions.js.map +1 -0
  1168. package/core-dist/src/utils/runtimeFetchOptions.test.d.ts +6 -0
  1169. package/core-dist/src/utils/runtimeFetchOptions.test.js +70 -0
  1170. package/core-dist/src/utils/runtimeFetchOptions.test.js.map +1 -0
  1171. package/core-dist/src/utils/safeJsonParse.d.ts +15 -0
  1172. package/core-dist/src/utils/safeJsonParse.js +43 -0
  1173. package/core-dist/src/utils/safeJsonParse.js.map +1 -0
  1174. package/core-dist/src/utils/safeJsonParse.test.d.ts +6 -0
  1175. package/core-dist/src/utils/safeJsonParse.test.js +112 -0
  1176. package/core-dist/src/utils/safeJsonParse.test.js.map +1 -0
  1177. package/core-dist/src/utils/safeJsonStringify.d.ts +13 -0
  1178. package/core-dist/src/utils/safeJsonStringify.js +25 -0
  1179. package/core-dist/src/utils/safeJsonStringify.js.map +1 -0
  1180. package/core-dist/src/utils/safeJsonStringify.test.d.ts +6 -0
  1181. package/core-dist/src/utils/safeJsonStringify.test.js +61 -0
  1182. package/core-dist/src/utils/safeJsonStringify.test.js.map +1 -0
  1183. package/core-dist/src/utils/schemaConverter.d.ts +15 -0
  1184. package/core-dist/src/utils/schemaConverter.js +109 -0
  1185. package/core-dist/src/utils/schemaConverter.js.map +1 -0
  1186. package/core-dist/src/utils/schemaConverter.test.d.ts +6 -0
  1187. package/core-dist/src/utils/schemaConverter.test.js +106 -0
  1188. package/core-dist/src/utils/schemaConverter.test.js.map +1 -0
  1189. package/core-dist/src/utils/schemaValidator.d.ts +16 -0
  1190. package/core-dist/src/utils/schemaValidator.js +123 -0
  1191. package/core-dist/src/utils/schemaValidator.js.map +1 -0
  1192. package/core-dist/src/utils/schemaValidator.test.d.ts +6 -0
  1193. package/core-dist/src/utils/schemaValidator.test.js +266 -0
  1194. package/core-dist/src/utils/schemaValidator.test.js.map +1 -0
  1195. package/core-dist/src/utils/secure-browser-launcher.d.ts +23 -0
  1196. package/core-dist/src/utils/secure-browser-launcher.js +165 -0
  1197. package/core-dist/src/utils/secure-browser-launcher.js.map +1 -0
  1198. package/core-dist/src/utils/secure-browser-launcher.test.d.ts +6 -0
  1199. package/core-dist/src/utils/secure-browser-launcher.test.js +149 -0
  1200. package/core-dist/src/utils/secure-browser-launcher.test.js.map +1 -0
  1201. package/core-dist/src/utils/shell-utils.d.ts +158 -0
  1202. package/core-dist/src/utils/shell-utils.js +739 -0
  1203. package/core-dist/src/utils/shell-utils.js.map +1 -0
  1204. package/core-dist/src/utils/shell-utils.test.d.ts +6 -0
  1205. package/core-dist/src/utils/shell-utils.test.js +466 -0
  1206. package/core-dist/src/utils/shell-utils.test.js.map +1 -0
  1207. package/core-dist/src/utils/shellReadOnlyChecker.d.ts +6 -0
  1208. package/core-dist/src/utils/shellReadOnlyChecker.js +290 -0
  1209. package/core-dist/src/utils/shellReadOnlyChecker.js.map +1 -0
  1210. package/core-dist/src/utils/shellReadOnlyChecker.test.d.ts +6 -0
  1211. package/core-dist/src/utils/shellReadOnlyChecker.test.js +157 -0
  1212. package/core-dist/src/utils/shellReadOnlyChecker.test.js.map +1 -0
  1213. package/core-dist/src/utils/subagentGenerator.d.ts +20 -0
  1214. package/core-dist/src/utils/subagentGenerator.js +120 -0
  1215. package/core-dist/src/utils/subagentGenerator.js.map +1 -0
  1216. package/core-dist/src/utils/subagentGenerator.test.d.ts +6 -0
  1217. package/core-dist/src/utils/subagentGenerator.test.js +135 -0
  1218. package/core-dist/src/utils/subagentGenerator.test.js.map +1 -0
  1219. package/core-dist/src/utils/summarizer.d.ts +25 -0
  1220. package/core-dist/src/utils/summarizer.js +53 -0
  1221. package/core-dist/src/utils/summarizer.js.map +1 -0
  1222. package/core-dist/src/utils/summarizer.test.d.ts +6 -0
  1223. package/core-dist/src/utils/summarizer.test.js +128 -0
  1224. package/core-dist/src/utils/summarizer.test.js.map +1 -0
  1225. package/core-dist/src/utils/symlink.d.ts +26 -0
  1226. package/core-dist/src/utils/symlink.js +43 -0
  1227. package/core-dist/src/utils/symlink.js.map +1 -0
  1228. package/core-dist/src/utils/systemEncoding.d.ts +40 -0
  1229. package/core-dist/src/utils/systemEncoding.js +160 -0
  1230. package/core-dist/src/utils/systemEncoding.js.map +1 -0
  1231. package/core-dist/src/utils/systemEncoding.test.d.ts +6 -0
  1232. package/core-dist/src/utils/systemEncoding.test.js +367 -0
  1233. package/core-dist/src/utils/systemEncoding.test.js.map +1 -0
  1234. package/core-dist/src/utils/terminalSerializer.d.ts +25 -0
  1235. package/core-dist/src/utils/terminalSerializer.js +432 -0
  1236. package/core-dist/src/utils/terminalSerializer.js.map +1 -0
  1237. package/core-dist/src/utils/terminalSerializer.test.d.ts +6 -0
  1238. package/core-dist/src/utils/terminalSerializer.test.js +176 -0
  1239. package/core-dist/src/utils/terminalSerializer.test.js.map +1 -0
  1240. package/core-dist/src/utils/testUtils.d.ts +29 -0
  1241. package/core-dist/src/utils/testUtils.js +70 -0
  1242. package/core-dist/src/utils/testUtils.js.map +1 -0
  1243. package/core-dist/src/utils/textUtils.d.ts +29 -0
  1244. package/core-dist/src/utils/textUtils.js +59 -0
  1245. package/core-dist/src/utils/textUtils.js.map +1 -0
  1246. package/core-dist/src/utils/textUtils.test.d.ts +6 -0
  1247. package/core-dist/src/utils/textUtils.test.js +91 -0
  1248. package/core-dist/src/utils/textUtils.test.js.map +1 -0
  1249. package/core-dist/src/utils/thoughtUtils.d.ts +23 -0
  1250. package/core-dist/src/utils/thoughtUtils.js +53 -0
  1251. package/core-dist/src/utils/thoughtUtils.js.map +1 -0
  1252. package/core-dist/src/utils/thoughtUtils.test.d.ts +6 -0
  1253. package/core-dist/src/utils/thoughtUtils.test.js +78 -0
  1254. package/core-dist/src/utils/thoughtUtils.test.js.map +1 -0
  1255. package/core-dist/src/utils/toml-to-markdown-converter.d.ts +22 -0
  1256. package/core-dist/src/utils/toml-to-markdown-converter.js +61 -0
  1257. package/core-dist/src/utils/toml-to-markdown-converter.js.map +1 -0
  1258. package/core-dist/src/utils/toml-to-markdown-converter.test.d.ts +6 -0
  1259. package/core-dist/src/utils/toml-to-markdown-converter.test.js +73 -0
  1260. package/core-dist/src/utils/toml-to-markdown-converter.test.js.map +1 -0
  1261. package/core-dist/src/utils/tool-utils.d.ts +22 -0
  1262. package/core-dist/src/utils/tool-utils.js +121 -0
  1263. package/core-dist/src/utils/tool-utils.js.map +1 -0
  1264. package/core-dist/src/utils/tool-utils.test.d.ts +6 -0
  1265. package/core-dist/src/utils/tool-utils.test.js +100 -0
  1266. package/core-dist/src/utils/tool-utils.test.js.map +1 -0
  1267. package/core-dist/src/utils/workspaceContext.d.ts +66 -0
  1268. package/core-dist/src/utils/workspaceContext.js +173 -0
  1269. package/core-dist/src/utils/workspaceContext.js.map +1 -0
  1270. package/core-dist/src/utils/workspaceContext.test.d.ts +6 -0
  1271. package/core-dist/src/utils/workspaceContext.test.js +313 -0
  1272. package/core-dist/src/utils/workspaceContext.test.js.map +1 -0
  1273. package/core-dist/src/utils/yaml-parser.d.ts +29 -0
  1274. package/core-dist/src/utils/yaml-parser.js +172 -0
  1275. package/core-dist/src/utils/yaml-parser.js.map +1 -0
  1276. package/core-dist/src/utils/yaml-parser.test.d.ts +6 -0
  1277. package/core-dist/src/utils/yaml-parser.test.js +170 -0
  1278. package/core-dist/src/utils/yaml-parser.test.js.map +1 -0
  1279. package/core-dist/tsconfig.tsbuildinfo +1 -0
  1280. package/package.json +3 -1
  1281. package/scripts/postinstall.cjs +102 -203
@@ -0,0 +1,1116 @@
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 { Config, ApprovalMode } from './config.js';
8
+ import * as path from 'node:path';
9
+ import { setGeminiMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js';
10
+ import { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, QwenLogger, } from '../telemetry/index.js';
11
+ import { DEFAULT_DASHSCOPE_BASE_URL } from '../core/openaiContentGenerator/constants.js';
12
+ import { AuthType, createContentGenerator, createContentGeneratorConfig, resolveContentGeneratorConfigWithSources, } from '../core/contentGenerator.js';
13
+ import { GeminiClient } from '../core/client.js';
14
+ import { GitService } from '../services/gitService.js';
15
+ import { ShellTool } from '../tools/shell.js';
16
+ import { ReadFileTool } from '../tools/read-file.js';
17
+ import { GrepTool } from '../tools/grep.js';
18
+ import { canUseRipgrep } from '../utils/ripgrepUtils.js';
19
+ import { RipGrepTool } from '../tools/ripGrep.js';
20
+ import { logRipgrepFallback } from '../telemetry/loggers.js';
21
+ import { RipgrepFallbackEvent } from '../telemetry/types.js';
22
+ import { ToolRegistry } from '../tools/tool-registry.js';
23
+ function createToolMock(toolName) {
24
+ const ToolMock = vi.fn();
25
+ Object.defineProperty(ToolMock, 'Name', {
26
+ value: toolName,
27
+ writable: true,
28
+ });
29
+ return ToolMock;
30
+ }
31
+ vi.mock('node:fs', async (importOriginal) => {
32
+ const actual = await importOriginal();
33
+ const mocked = {
34
+ ...actual,
35
+ existsSync: vi.fn().mockReturnValue(true),
36
+ statSync: vi.fn().mockReturnValue({
37
+ isDirectory: vi.fn().mockReturnValue(true),
38
+ }),
39
+ realpathSync: vi.fn((path) => path),
40
+ };
41
+ return {
42
+ ...mocked,
43
+ default: mocked, // Required for ESM default imports (import fs from 'node:fs')
44
+ };
45
+ });
46
+ // Mock dependencies that might be called during Config construction or createServerConfig
47
+ vi.mock('../tools/tool-registry', () => {
48
+ const ToolRegistryMock = vi.fn();
49
+ ToolRegistryMock.prototype.registerTool = vi.fn();
50
+ ToolRegistryMock.prototype.discoverAllTools = vi.fn();
51
+ ToolRegistryMock.prototype.getAllTools = vi.fn(() => []); // Mock methods if needed
52
+ ToolRegistryMock.prototype.getAllToolNames = vi.fn(() => []);
53
+ ToolRegistryMock.prototype.getTool = vi.fn();
54
+ ToolRegistryMock.prototype.getFunctionDeclarations = vi.fn(() => []);
55
+ return { ToolRegistry: ToolRegistryMock };
56
+ });
57
+ vi.mock('../utils/memoryDiscovery.js', () => ({
58
+ loadServerHierarchicalMemory: vi
59
+ .fn()
60
+ .mockResolvedValue({ memoryContent: '', fileCount: 0 }),
61
+ }));
62
+ // Mock individual tools if their constructors are complex or have side effects
63
+ vi.mock('../tools/ls', () => ({
64
+ LSTool: createToolMock('list_directory'),
65
+ }));
66
+ vi.mock('../tools/read-file', () => ({
67
+ ReadFileTool: createToolMock('read_file'),
68
+ }));
69
+ vi.mock('../tools/grep.js', () => ({
70
+ GrepTool: createToolMock('grep_search'),
71
+ }));
72
+ vi.mock('../tools/ripGrep.js', () => ({
73
+ RipGrepTool: createToolMock('grep_search'),
74
+ }));
75
+ vi.mock('../utils/ripgrepUtils.js', () => ({
76
+ canUseRipgrep: vi.fn(),
77
+ }));
78
+ vi.mock('../tools/glob', () => ({
79
+ GlobTool: createToolMock('glob'),
80
+ }));
81
+ vi.mock('../tools/edit', () => ({
82
+ EditTool: createToolMock('edit'),
83
+ }));
84
+ vi.mock('../tools/shell', () => ({
85
+ ShellTool: createToolMock('run_shell_command'),
86
+ }));
87
+ vi.mock('../tools/write-file', () => ({
88
+ WriteFileTool: createToolMock('write_file'),
89
+ }));
90
+ vi.mock('../tools/web-fetch', () => ({
91
+ WebFetchTool: createToolMock('web_fetch'),
92
+ }));
93
+ vi.mock('../tools/read-many-files', () => ({
94
+ ReadManyFilesTool: createToolMock('read_many_files'),
95
+ }));
96
+ vi.mock('../tools/memoryTool', () => ({
97
+ MemoryTool: createToolMock('save_memory'),
98
+ setGeminiMdFilename: vi.fn(),
99
+ getCurrentGeminiMdFilename: vi.fn(() => 'QWEN.md'), // Mock the original filename
100
+ getAllGeminiMdFilenames: vi.fn(() => ['QWEN.md', 'AGENTS.md']),
101
+ DEFAULT_CONTEXT_FILENAME: 'QWEN.md',
102
+ QWEN_CONFIG_DIR: '.qwen',
103
+ }));
104
+ vi.mock('../core/contentGenerator.js');
105
+ vi.mock('../core/client.js', () => ({
106
+ GeminiClient: vi.fn().mockImplementation(() => ({
107
+ initialize: vi.fn().mockResolvedValue(undefined),
108
+ isInitialized: vi.fn().mockReturnValue(true),
109
+ stripThoughtsFromHistory: vi.fn(),
110
+ setTools: vi.fn(),
111
+ })),
112
+ }));
113
+ vi.mock('../telemetry/index.js', async (importOriginal) => {
114
+ const actual = await importOriginal();
115
+ return {
116
+ ...actual,
117
+ initializeTelemetry: vi.fn(),
118
+ uiTelemetryService: {
119
+ getLastPromptTokenCount: vi.fn(),
120
+ },
121
+ };
122
+ });
123
+ vi.mock('../telemetry/loggers.js', async (importOriginal) => {
124
+ const actual = await importOriginal();
125
+ return {
126
+ ...actual,
127
+ logRipgrepFallback: vi.fn(),
128
+ };
129
+ });
130
+ vi.mock('../services/gitService.js', () => {
131
+ const GitServiceMock = vi.fn();
132
+ GitServiceMock.prototype.initialize = vi.fn();
133
+ return { GitService: GitServiceMock };
134
+ });
135
+ vi.mock('../skills/skill-manager.js', () => {
136
+ const SkillManagerMock = vi.fn();
137
+ SkillManagerMock.prototype.startWatching = vi
138
+ .fn()
139
+ .mockResolvedValue(undefined);
140
+ SkillManagerMock.prototype.stopWatching = vi.fn();
141
+ SkillManagerMock.prototype.listSkills = vi.fn().mockResolvedValue([]);
142
+ SkillManagerMock.prototype.addChangeListener = vi.fn();
143
+ SkillManagerMock.prototype.removeChangeListener = vi.fn();
144
+ return { SkillManager: SkillManagerMock };
145
+ });
146
+ vi.mock('../subagents/subagent-manager.js', () => {
147
+ const SubagentManagerMock = vi.fn();
148
+ SubagentManagerMock.prototype.loadSessionSubagents = vi.fn();
149
+ SubagentManagerMock.prototype.addChangeListener = vi
150
+ .fn()
151
+ .mockReturnValue(() => { });
152
+ SubagentManagerMock.prototype.listSubagents = vi.fn().mockResolvedValue([]);
153
+ return { SubagentManager: SubagentManagerMock };
154
+ });
155
+ vi.mock('../ide/ide-client.js', () => ({
156
+ IdeClient: {
157
+ getInstance: vi.fn().mockResolvedValue({
158
+ getConnectionStatus: vi.fn(),
159
+ initialize: vi.fn(),
160
+ shutdown: vi.fn(),
161
+ }),
162
+ },
163
+ }));
164
+ import { BaseLlmClient } from '../core/baseLlmClient.js';
165
+ vi.mock('../core/baseLlmClient.js');
166
+ describe('Server Config (config.ts)', () => {
167
+ const MODEL = 'qwen3-coder-plus';
168
+ // Default mock for canUseRipgrep to return true (tests that care about ripgrep will override this)
169
+ beforeEach(() => {
170
+ vi.mocked(canUseRipgrep).mockResolvedValue(true);
171
+ });
172
+ const SANDBOX = {
173
+ command: 'docker',
174
+ image: 'qwen-code-sandbox',
175
+ };
176
+ const TARGET_DIR = '/path/to/target';
177
+ const DEBUG_MODE = false;
178
+ const QUESTION = 'test question';
179
+ const USER_MEMORY = 'Test User Memory';
180
+ const TELEMETRY_SETTINGS = { enabled: false };
181
+ const EMBEDDING_MODEL = 'gemini-embedding';
182
+ const baseParams = {
183
+ cwd: '/tmp',
184
+ embeddingModel: EMBEDDING_MODEL,
185
+ sandbox: SANDBOX,
186
+ targetDir: TARGET_DIR,
187
+ debugMode: DEBUG_MODE,
188
+ question: QUESTION,
189
+ userMemory: USER_MEMORY,
190
+ telemetry: TELEMETRY_SETTINGS,
191
+ model: MODEL,
192
+ usageStatisticsEnabled: false,
193
+ overrideExtensions: [],
194
+ };
195
+ beforeEach(() => {
196
+ // Reset mocks if necessary
197
+ vi.clearAllMocks();
198
+ vi.spyOn(QwenLogger.prototype, 'logStartSessionEvent').mockImplementation(async () => undefined);
199
+ // Setup default mock for resolveContentGeneratorConfigWithSources
200
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockImplementation((_config, authType, generationConfig) => ({
201
+ config: {
202
+ ...generationConfig,
203
+ authType,
204
+ model: generationConfig?.model || MODEL,
205
+ apiKey: 'test-key',
206
+ },
207
+ sources: {},
208
+ }));
209
+ });
210
+ describe('initialize', () => {
211
+ it('should throw an error if checkpointing is enabled and GitService fails', async () => {
212
+ const gitError = new Error('Git is not installed');
213
+ GitService.prototype.initialize.mockRejectedValue(gitError);
214
+ const config = new Config({
215
+ ...baseParams,
216
+ checkpointing: true,
217
+ });
218
+ await expect(config.initialize()).rejects.toThrow(gitError);
219
+ });
220
+ it('should not throw an error if checkpointing is disabled and GitService fails', async () => {
221
+ const gitError = new Error('Git is not installed');
222
+ GitService.prototype.initialize.mockRejectedValue(gitError);
223
+ const config = new Config({
224
+ ...baseParams,
225
+ checkpointing: false,
226
+ });
227
+ await expect(config.initialize()).resolves.toBeUndefined();
228
+ });
229
+ it('should throw an error if initialized more than once', async () => {
230
+ const config = new Config({
231
+ ...baseParams,
232
+ checkpointing: false,
233
+ });
234
+ await expect(config.initialize()).resolves.toBeUndefined();
235
+ await expect(config.initialize()).rejects.toThrow('Config was already initialized');
236
+ });
237
+ });
238
+ describe('refreshAuth', () => {
239
+ it('should refresh auth and update config', async () => {
240
+ const config = new Config(baseParams);
241
+ const authType = AuthType.USE_GEMINI;
242
+ const mockContentConfig = {
243
+ apiKey: 'test-key',
244
+ model: 'qwen3-coder-plus',
245
+ authType,
246
+ };
247
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
248
+ config: mockContentConfig,
249
+ sources: {},
250
+ });
251
+ await config.refreshAuth(authType);
252
+ expect(resolveContentGeneratorConfigWithSources).toHaveBeenCalledWith(config, authType, expect.objectContaining({
253
+ model: MODEL,
254
+ }), expect.anything(), expect.anything());
255
+ // Verify that contentGeneratorConfig is updated
256
+ expect(config.getContentGeneratorConfig()).toEqual(mockContentConfig);
257
+ expect(GeminiClient).toHaveBeenCalledWith(config);
258
+ });
259
+ it('should not strip thoughts when switching from Vertex to GenAI', async () => {
260
+ const config = new Config(baseParams);
261
+ vi.mocked(createContentGeneratorConfig).mockImplementation((_, authType) => ({ authType }));
262
+ await config.refreshAuth(AuthType.USE_VERTEX_AI);
263
+ await config.refreshAuth(AuthType.USE_GEMINI);
264
+ expect(config.getGeminiClient().stripThoughtsFromHistory).not.toHaveBeenCalledWith();
265
+ });
266
+ });
267
+ describe('model switching optimization (QWEN_OAUTH)', () => {
268
+ it('should switch qwen-oauth model in-place without refreshing auth when safe', async () => {
269
+ const config = new Config(baseParams);
270
+ const mockContentConfig = {
271
+ authType: AuthType.QWEN_OAUTH,
272
+ model: 'coder-model',
273
+ apiKey: 'QWEN_OAUTH_DYNAMIC_TOKEN',
274
+ baseUrl: DEFAULT_DASHSCOPE_BASE_URL,
275
+ timeout: 60000,
276
+ maxRetries: 3,
277
+ };
278
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockImplementation((_config, authType, generationConfig) => ({
279
+ config: {
280
+ ...mockContentConfig,
281
+ authType,
282
+ model: generationConfig?.model ?? mockContentConfig.model,
283
+ },
284
+ sources: {},
285
+ }));
286
+ vi.mocked(createContentGenerator).mockResolvedValue({
287
+ generateContent: vi.fn(),
288
+ generateContentStream: vi.fn(),
289
+ countTokens: vi.fn(),
290
+ embedContent: vi.fn(),
291
+ });
292
+ // Establish initial qwen-oauth content generator config/content generator.
293
+ await config.refreshAuth(AuthType.QWEN_OAUTH);
294
+ // Spy after initial refresh to ensure model switch does not re-trigger refreshAuth.
295
+ const refreshSpy = vi.spyOn(config, 'refreshAuth');
296
+ await config.switchModel(AuthType.QWEN_OAUTH, 'coder-model');
297
+ expect(config.getModel()).toBe('coder-model');
298
+ expect(refreshSpy).not.toHaveBeenCalled();
299
+ // Called once during initial refreshAuth + once during handleModelChange diffing.
300
+ expect(vi.mocked(resolveContentGeneratorConfigWithSources)).toHaveBeenCalledTimes(2);
301
+ expect(vi.mocked(createContentGenerator)).toHaveBeenCalledTimes(1);
302
+ });
303
+ });
304
+ describe('model switching with different credentials (OpenAI)', () => {
305
+ it('should refresh auth when switching to model with different envKey', async () => {
306
+ // This test verifies the fix for switching between modelProvider models
307
+ // with different envKeys (e.g., deepseek-chat with DEEPSEEK_API_KEY)
308
+ const configWithModelProviders = new Config({
309
+ ...baseParams,
310
+ authType: AuthType.USE_OPENAI,
311
+ modelProvidersConfig: {
312
+ openai: [
313
+ {
314
+ id: 'model-a',
315
+ name: 'Model A',
316
+ baseUrl: 'https://api.example.com/v1',
317
+ envKey: 'API_KEY_A',
318
+ },
319
+ {
320
+ id: 'model-b',
321
+ name: 'Model B',
322
+ baseUrl: 'https://api.example.com/v1',
323
+ envKey: 'API_KEY_B',
324
+ },
325
+ ],
326
+ },
327
+ });
328
+ const mockContentConfigA = {
329
+ authType: AuthType.USE_OPENAI,
330
+ model: 'model-a',
331
+ apiKey: 'key-a',
332
+ baseUrl: 'https://api.example.com/v1',
333
+ };
334
+ const mockContentConfigB = {
335
+ authType: AuthType.USE_OPENAI,
336
+ model: 'model-b',
337
+ apiKey: 'key-b',
338
+ baseUrl: 'https://api.example.com/v1',
339
+ };
340
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockImplementation((_config, _authType, generationConfig) => {
341
+ const model = generationConfig?.model;
342
+ return {
343
+ config: model === 'model-b' ? mockContentConfigB : mockContentConfigA,
344
+ sources: {},
345
+ };
346
+ });
347
+ vi.mocked(createContentGenerator).mockResolvedValue({
348
+ generateContent: vi.fn(),
349
+ generateContentStream: vi.fn(),
350
+ countTokens: vi.fn(),
351
+ embedContent: vi.fn(),
352
+ });
353
+ // Initialize with model-a
354
+ await configWithModelProviders.refreshAuth(AuthType.USE_OPENAI);
355
+ // Spy on refreshAuth to verify it's called when switching to model-b
356
+ const refreshSpy = vi.spyOn(configWithModelProviders, 'refreshAuth');
357
+ // Switch to model-b (different envKey)
358
+ await configWithModelProviders.switchModel(AuthType.USE_OPENAI, 'model-b');
359
+ // Should trigger full refresh because envKey changed
360
+ expect(refreshSpy).toHaveBeenCalledWith(AuthType.USE_OPENAI);
361
+ expect(configWithModelProviders.getModel()).toBe('model-b');
362
+ });
363
+ });
364
+ it('Config constructor should store userMemory correctly', () => {
365
+ const config = new Config(baseParams);
366
+ expect(config.getUserMemory()).toBe(USER_MEMORY);
367
+ // Verify other getters if needed
368
+ expect(config.getTargetDir()).toBe(path.resolve(TARGET_DIR)); // Check resolved path
369
+ });
370
+ it('Config constructor should default userMemory to empty string if not provided', () => {
371
+ const paramsWithoutMemory = { ...baseParams };
372
+ delete paramsWithoutMemory.userMemory;
373
+ const config = new Config(paramsWithoutMemory);
374
+ expect(config.getUserMemory()).toBe('');
375
+ });
376
+ it('Config constructor should call setGeminiMdFilename with contextFileName if provided', () => {
377
+ const contextFileName = 'CUSTOM_AGENTS.md';
378
+ const paramsWithContextFile = {
379
+ ...baseParams,
380
+ contextFileName,
381
+ };
382
+ new Config(paramsWithContextFile);
383
+ expect(mockSetGeminiMdFilename).toHaveBeenCalledWith(contextFileName);
384
+ });
385
+ it('Config constructor should not call setGeminiMdFilename if contextFileName is not provided', () => {
386
+ new Config(baseParams); // baseParams does not have contextFileName
387
+ expect(mockSetGeminiMdFilename).not.toHaveBeenCalled();
388
+ });
389
+ it('should set default file filtering settings when not provided', () => {
390
+ const config = new Config(baseParams);
391
+ expect(config.getFileFilteringRespectGitIgnore()).toBe(true);
392
+ });
393
+ it('should set custom file filtering settings when provided', () => {
394
+ const paramsWithFileFiltering = {
395
+ ...baseParams,
396
+ fileFiltering: {
397
+ respectGitIgnore: false,
398
+ },
399
+ };
400
+ const config = new Config(paramsWithFileFiltering);
401
+ expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
402
+ });
403
+ it('should initialize WorkspaceContext with includeDirectories', () => {
404
+ const includeDirectories = ['/path/to/dir1', '/path/to/dir2'];
405
+ const paramsWithIncludeDirs = {
406
+ ...baseParams,
407
+ includeDirectories,
408
+ };
409
+ const config = new Config(paramsWithIncludeDirs);
410
+ const workspaceContext = config.getWorkspaceContext();
411
+ const directories = workspaceContext.getDirectories();
412
+ // Should include the target directory plus the included directories
413
+ expect(directories).toHaveLength(3);
414
+ expect(directories).toContain(path.resolve(baseParams.targetDir));
415
+ expect(directories).toContain('/path/to/dir1');
416
+ expect(directories).toContain('/path/to/dir2');
417
+ });
418
+ it('Config constructor should set telemetry to true when provided as true', () => {
419
+ const paramsWithTelemetry = {
420
+ ...baseParams,
421
+ telemetry: { enabled: true },
422
+ };
423
+ const config = new Config(paramsWithTelemetry);
424
+ expect(config.getTelemetryEnabled()).toBe(true);
425
+ });
426
+ it('Config constructor should set telemetry to false when provided as false', () => {
427
+ const paramsWithTelemetry = {
428
+ ...baseParams,
429
+ telemetry: { enabled: false },
430
+ };
431
+ const config = new Config(paramsWithTelemetry);
432
+ expect(config.getTelemetryEnabled()).toBe(false);
433
+ });
434
+ it('Config constructor should default telemetry to default value if not provided', () => {
435
+ const paramsWithoutTelemetry = { ...baseParams };
436
+ delete paramsWithoutTelemetry.telemetry;
437
+ const config = new Config(paramsWithoutTelemetry);
438
+ expect(config.getTelemetryEnabled()).toBe(TELEMETRY_SETTINGS.enabled);
439
+ });
440
+ it('Config constructor should set telemetry useCollector to true when provided', () => {
441
+ const paramsWithTelemetry = {
442
+ ...baseParams,
443
+ telemetry: { enabled: true, useCollector: true },
444
+ };
445
+ const config = new Config(paramsWithTelemetry);
446
+ expect(config.getTelemetryUseCollector()).toBe(true);
447
+ });
448
+ it('Config constructor should set telemetry useCollector to false when provided', () => {
449
+ const paramsWithTelemetry = {
450
+ ...baseParams,
451
+ telemetry: { enabled: true, useCollector: false },
452
+ };
453
+ const config = new Config(paramsWithTelemetry);
454
+ expect(config.getTelemetryUseCollector()).toBe(false);
455
+ });
456
+ it('Config constructor should default telemetry useCollector to false if not provided', () => {
457
+ const paramsWithTelemetry = {
458
+ ...baseParams,
459
+ telemetry: { enabled: true },
460
+ };
461
+ const config = new Config(paramsWithTelemetry);
462
+ expect(config.getTelemetryUseCollector()).toBe(false);
463
+ });
464
+ it('should have a getFileService method that returns FileDiscoveryService', () => {
465
+ const config = new Config(baseParams);
466
+ const fileService = config.getFileService();
467
+ expect(fileService).toBeDefined();
468
+ });
469
+ describe('Usage Statistics', () => {
470
+ it('defaults usage statistics to enabled if not specified', () => {
471
+ const config = new Config({
472
+ ...baseParams,
473
+ usageStatisticsEnabled: undefined,
474
+ });
475
+ expect(config.getUsageStatisticsEnabled()).toBe(true);
476
+ });
477
+ it.each([{ enabled: true }, { enabled: false }])('sets usage statistics based on the provided value (enabled: $enabled)', ({ enabled }) => {
478
+ const config = new Config({
479
+ ...baseParams,
480
+ usageStatisticsEnabled: enabled,
481
+ });
482
+ expect(config.getUsageStatisticsEnabled()).toBe(enabled);
483
+ });
484
+ it('logs the session start event', async () => {
485
+ const config = new Config({
486
+ ...baseParams,
487
+ usageStatisticsEnabled: true,
488
+ });
489
+ await config.initialize();
490
+ expect(QwenLogger.prototype.logStartSessionEvent).toHaveBeenCalledOnce();
491
+ });
492
+ });
493
+ describe('Telemetry Settings', () => {
494
+ it('should return default telemetry target if not provided', () => {
495
+ const params = {
496
+ ...baseParams,
497
+ telemetry: { enabled: true },
498
+ };
499
+ const config = new Config(params);
500
+ expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
501
+ });
502
+ it('should return provided OTLP endpoint', () => {
503
+ const endpoint = 'http://custom.otel.collector:4317';
504
+ const params = {
505
+ ...baseParams,
506
+ telemetry: { enabled: true, otlpEndpoint: endpoint },
507
+ };
508
+ const config = new Config(params);
509
+ expect(config.getTelemetryOtlpEndpoint()).toBe(endpoint);
510
+ });
511
+ it('should return default OTLP endpoint if not provided', () => {
512
+ const params = {
513
+ ...baseParams,
514
+ telemetry: { enabled: true },
515
+ };
516
+ const config = new Config(params);
517
+ expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
518
+ });
519
+ it('should return provided logPrompts setting', () => {
520
+ const params = {
521
+ ...baseParams,
522
+ telemetry: { enabled: true, logPrompts: false },
523
+ };
524
+ const config = new Config(params);
525
+ expect(config.getTelemetryLogPromptsEnabled()).toBe(false);
526
+ });
527
+ it('should return default logPrompts setting (true) if not provided', () => {
528
+ const params = {
529
+ ...baseParams,
530
+ telemetry: { enabled: true },
531
+ };
532
+ const config = new Config(params);
533
+ expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
534
+ });
535
+ it('should return default logPrompts setting (true) if telemetry object is not provided', () => {
536
+ const paramsWithoutTelemetry = { ...baseParams };
537
+ delete paramsWithoutTelemetry.telemetry;
538
+ const config = new Config(paramsWithoutTelemetry);
539
+ expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
540
+ });
541
+ it('should return default telemetry target if telemetry object is not provided', () => {
542
+ const paramsWithoutTelemetry = { ...baseParams };
543
+ delete paramsWithoutTelemetry.telemetry;
544
+ const config = new Config(paramsWithoutTelemetry);
545
+ expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
546
+ });
547
+ it('should return default OTLP endpoint if telemetry object is not provided', () => {
548
+ const paramsWithoutTelemetry = { ...baseParams };
549
+ delete paramsWithoutTelemetry.telemetry;
550
+ const config = new Config(paramsWithoutTelemetry);
551
+ expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
552
+ });
553
+ it('should return provided OTLP protocol', () => {
554
+ const params = {
555
+ ...baseParams,
556
+ telemetry: { enabled: true, otlpProtocol: 'http' },
557
+ };
558
+ const config = new Config(params);
559
+ expect(config.getTelemetryOtlpProtocol()).toBe('http');
560
+ });
561
+ it('should return default OTLP protocol if not provided', () => {
562
+ const params = {
563
+ ...baseParams,
564
+ telemetry: { enabled: true },
565
+ };
566
+ const config = new Config(params);
567
+ expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
568
+ });
569
+ it('should return default OTLP protocol if telemetry object is not provided', () => {
570
+ const paramsWithoutTelemetry = { ...baseParams };
571
+ delete paramsWithoutTelemetry.telemetry;
572
+ const config = new Config(paramsWithoutTelemetry);
573
+ expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
574
+ });
575
+ });
576
+ describe('UseRipgrep Configuration', () => {
577
+ it('should default useRipgrep to true when not provided', () => {
578
+ const config = new Config(baseParams);
579
+ expect(config.getUseRipgrep()).toBe(true);
580
+ });
581
+ it('should set useRipgrep to false when provided as false', () => {
582
+ const paramsWithRipgrep = {
583
+ ...baseParams,
584
+ useRipgrep: false,
585
+ };
586
+ const config = new Config(paramsWithRipgrep);
587
+ expect(config.getUseRipgrep()).toBe(false);
588
+ });
589
+ it('should set useRipgrep to true when explicitly provided as true', () => {
590
+ const paramsWithRipgrep = {
591
+ ...baseParams,
592
+ useRipgrep: true,
593
+ };
594
+ const config = new Config(paramsWithRipgrep);
595
+ expect(config.getUseRipgrep()).toBe(true);
596
+ });
597
+ it('should default useRipgrep to true when undefined', () => {
598
+ const paramsWithUndefinedRipgrep = {
599
+ ...baseParams,
600
+ useRipgrep: undefined,
601
+ };
602
+ const config = new Config(paramsWithUndefinedRipgrep);
603
+ expect(config.getUseRipgrep()).toBe(true);
604
+ });
605
+ });
606
+ describe('UseBuiltinRipgrep Configuration', () => {
607
+ it('should default useBuiltinRipgrep to true when not provided', () => {
608
+ const config = new Config(baseParams);
609
+ expect(config.getUseBuiltinRipgrep()).toBe(true);
610
+ });
611
+ it('should set useBuiltinRipgrep to false when provided as false', () => {
612
+ const paramsWithBuiltinRipgrep = {
613
+ ...baseParams,
614
+ useBuiltinRipgrep: false,
615
+ };
616
+ const config = new Config(paramsWithBuiltinRipgrep);
617
+ expect(config.getUseBuiltinRipgrep()).toBe(false);
618
+ });
619
+ it('should set useBuiltinRipgrep to true when explicitly provided as true', () => {
620
+ const paramsWithBuiltinRipgrep = {
621
+ ...baseParams,
622
+ useBuiltinRipgrep: true,
623
+ };
624
+ const config = new Config(paramsWithBuiltinRipgrep);
625
+ expect(config.getUseBuiltinRipgrep()).toBe(true);
626
+ });
627
+ it('should default useBuiltinRipgrep to true when undefined', () => {
628
+ const paramsWithUndefinedBuiltinRipgrep = {
629
+ ...baseParams,
630
+ useBuiltinRipgrep: undefined,
631
+ };
632
+ const config = new Config(paramsWithUndefinedBuiltinRipgrep);
633
+ expect(config.getUseBuiltinRipgrep()).toBe(true);
634
+ });
635
+ });
636
+ describe('createToolRegistry', () => {
637
+ it('should register a tool if coreTools contains an argument-specific pattern', async () => {
638
+ const params = {
639
+ ...baseParams,
640
+ coreTools: ['Shell(git status)'], // Use display name instead of class name
641
+ };
642
+ const config = new Config(params);
643
+ await config.initialize();
644
+ // The ToolRegistry class is mocked, so we can inspect its prototype's methods.
645
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
646
+ // Check that registerTool was called for ShellTool
647
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
648
+ expect(wasShellToolRegistered).toBe(true);
649
+ // Check that registerTool was NOT called for ReadFileTool
650
+ const wasReadFileToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ReadFileTool));
651
+ expect(wasReadFileToolRegistered).toBe(false);
652
+ });
653
+ it('should register a tool if coreTools contains the displayName', async () => {
654
+ const params = {
655
+ ...baseParams,
656
+ coreTools: ['Shell'],
657
+ };
658
+ const config = new Config(params);
659
+ await config.initialize();
660
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
661
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
662
+ expect(wasShellToolRegistered).toBe(true);
663
+ });
664
+ it('should register a tool if coreTools contains the displayName with argument-specific pattern', async () => {
665
+ const params = {
666
+ ...baseParams,
667
+ coreTools: ['Shell(git status)'],
668
+ };
669
+ const config = new Config(params);
670
+ await config.initialize();
671
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
672
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
673
+ expect(wasShellToolRegistered).toBe(true);
674
+ });
675
+ it('should register a tool if coreTools contains a legacy tool name alias', async () => {
676
+ const params = {
677
+ ...baseParams,
678
+ useRipgrep: false,
679
+ coreTools: ['search_file_content'],
680
+ };
681
+ const config = new Config(params);
682
+ await config.initialize();
683
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
684
+ const wasGrepToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
685
+ expect(wasGrepToolRegistered).toBe(true);
686
+ });
687
+ it('should not register a tool if excludeTools contains a legacy display name alias', async () => {
688
+ const params = {
689
+ ...baseParams,
690
+ useRipgrep: false,
691
+ coreTools: undefined,
692
+ excludeTools: ['SearchFiles'],
693
+ };
694
+ const config = new Config(params);
695
+ await config.initialize();
696
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
697
+ const wasGrepToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
698
+ expect(wasGrepToolRegistered).toBe(false);
699
+ });
700
+ describe('with minified tool class names', () => {
701
+ beforeEach(() => {
702
+ Object.defineProperty(vi.mocked(ShellTool).prototype.constructor, 'name', {
703
+ value: '_ShellTool',
704
+ configurable: true,
705
+ });
706
+ });
707
+ afterEach(() => {
708
+ Object.defineProperty(vi.mocked(ShellTool).prototype.constructor, 'name', {
709
+ value: 'ShellTool',
710
+ });
711
+ });
712
+ it('should register a tool if coreTools contains the non-minified class name', async () => {
713
+ const params = {
714
+ ...baseParams,
715
+ coreTools: ['Shell'], // Use display name instead of class name
716
+ };
717
+ const config = new Config(params);
718
+ await config.initialize();
719
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
720
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
721
+ expect(wasShellToolRegistered).toBe(true);
722
+ });
723
+ it('should register a tool if coreTools contains the displayName', async () => {
724
+ const params = {
725
+ ...baseParams,
726
+ coreTools: ['Shell'],
727
+ };
728
+ const config = new Config(params);
729
+ await config.initialize();
730
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
731
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
732
+ expect(wasShellToolRegistered).toBe(true);
733
+ });
734
+ it('should not register a tool if excludeTools contains the non-minified class name', async () => {
735
+ const params = {
736
+ ...baseParams,
737
+ coreTools: undefined, // all tools enabled by default
738
+ excludeTools: ['Shell'], // Use display name instead of class name
739
+ };
740
+ const config = new Config(params);
741
+ await config.initialize();
742
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
743
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
744
+ expect(wasShellToolRegistered).toBe(false);
745
+ });
746
+ it('should not register a tool if excludeTools contains the displayName', async () => {
747
+ const params = {
748
+ ...baseParams,
749
+ coreTools: undefined, // all tools enabled by default
750
+ excludeTools: ['Shell'],
751
+ };
752
+ const config = new Config(params);
753
+ await config.initialize();
754
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
755
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
756
+ expect(wasShellToolRegistered).toBe(false);
757
+ });
758
+ it('should register a tool if coreTools contains an argument-specific pattern with the non-minified class name', async () => {
759
+ const params = {
760
+ ...baseParams,
761
+ coreTools: ['Shell(git status)'], // Use display name instead of class name
762
+ };
763
+ const config = new Config(params);
764
+ await config.initialize();
765
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
766
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
767
+ expect(wasShellToolRegistered).toBe(true);
768
+ });
769
+ it('should register a tool if coreTools contains an argument-specific pattern with the displayName', async () => {
770
+ const params = {
771
+ ...baseParams,
772
+ coreTools: ['Shell(git status)'],
773
+ };
774
+ const config = new Config(params);
775
+ await config.initialize();
776
+ const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
777
+ const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
778
+ expect(wasShellToolRegistered).toBe(true);
779
+ });
780
+ });
781
+ });
782
+ describe('getTruncateToolOutputThreshold', () => {
783
+ it('should return the default threshold', () => {
784
+ const config = new Config(baseParams);
785
+ expect(config.getTruncateToolOutputThreshold()).toBe(25_000);
786
+ });
787
+ it('should use a custom truncateToolOutputThreshold if provided', () => {
788
+ const customParams = {
789
+ ...baseParams,
790
+ truncateToolOutputThreshold: 50000,
791
+ };
792
+ const config = new Config(customParams);
793
+ expect(config.getTruncateToolOutputThreshold()).toBe(50000);
794
+ });
795
+ it('should return infinity when truncation is disabled', () => {
796
+ const customParams = {
797
+ ...baseParams,
798
+ enableToolOutputTruncation: false,
799
+ };
800
+ const config = new Config(customParams);
801
+ expect(config.getTruncateToolOutputThreshold()).toBe(Number.POSITIVE_INFINITY);
802
+ });
803
+ });
804
+ });
805
+ describe('setApprovalMode with folder trust', () => {
806
+ const baseParams = {
807
+ targetDir: '.',
808
+ debugMode: false,
809
+ model: 'test-model',
810
+ cwd: '.',
811
+ };
812
+ it('should throw an error when setting YOLO mode in an untrusted folder', () => {
813
+ const config = new Config(baseParams);
814
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
815
+ expect(() => config.setApprovalMode(ApprovalMode.YOLO)).toThrow('Cannot enable privileged approval modes in an untrusted folder.');
816
+ });
817
+ it('should throw an error when setting AUTO_EDIT mode in an untrusted folder', () => {
818
+ const config = new Config(baseParams);
819
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
820
+ expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).toThrow('Cannot enable privileged approval modes in an untrusted folder.');
821
+ });
822
+ it('should NOT throw an error when setting DEFAULT mode in an untrusted folder', () => {
823
+ const config = new Config(baseParams);
824
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
825
+ expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
826
+ });
827
+ it('should NOT throw an error when setting PLAN mode in an untrusted folder', () => {
828
+ const config = new Config({
829
+ targetDir: '.',
830
+ debugMode: false,
831
+ model: 'test-model',
832
+ cwd: '.',
833
+ trustedFolder: false, // Untrusted
834
+ });
835
+ expect(() => config.setApprovalMode(ApprovalMode.PLAN)).not.toThrow();
836
+ });
837
+ it('should NOT throw an error when setting any mode in a trusted folder', () => {
838
+ const config = new Config(baseParams);
839
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
840
+ expect(() => config.setApprovalMode(ApprovalMode.YOLO)).not.toThrow();
841
+ expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).not.toThrow();
842
+ expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
843
+ expect(() => config.setApprovalMode(ApprovalMode.PLAN)).not.toThrow();
844
+ });
845
+ it('should NOT throw an error when setting any mode if trustedFolder is undefined', () => {
846
+ const config = new Config(baseParams);
847
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true); // isTrustedFolder defaults to true
848
+ expect(() => config.setApprovalMode(ApprovalMode.YOLO)).not.toThrow();
849
+ expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).not.toThrow();
850
+ expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
851
+ expect(() => config.setApprovalMode(ApprovalMode.PLAN)).not.toThrow();
852
+ });
853
+ describe('registerCoreTools', () => {
854
+ beforeEach(() => {
855
+ vi.clearAllMocks();
856
+ });
857
+ it('should register RipGrepTool when useRipgrep is true and it is available', async () => {
858
+ canUseRipgrep.mockResolvedValue(true);
859
+ const config = new Config({ ...baseParams, useRipgrep: true });
860
+ await config.initialize();
861
+ const calls = ToolRegistry.prototype.registerTool.mock.calls;
862
+ const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
863
+ const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
864
+ expect(wasRipGrepRegistered).toBe(true);
865
+ expect(wasGrepRegistered).toBe(false);
866
+ expect(canUseRipgrep).toHaveBeenCalledWith(true);
867
+ });
868
+ it('should register RipGrepTool with system ripgrep when useBuiltinRipgrep is false', async () => {
869
+ canUseRipgrep.mockResolvedValue(true);
870
+ const config = new Config({
871
+ ...baseParams,
872
+ useRipgrep: true,
873
+ useBuiltinRipgrep: false,
874
+ });
875
+ await config.initialize();
876
+ const calls = ToolRegistry.prototype.registerTool.mock.calls;
877
+ const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
878
+ const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
879
+ expect(wasRipGrepRegistered).toBe(true);
880
+ expect(wasGrepRegistered).toBe(false);
881
+ expect(canUseRipgrep).toHaveBeenCalledWith(false);
882
+ });
883
+ it('should fall back to GrepTool and log error when useBuiltinRipgrep is false but system ripgrep is not available', async () => {
884
+ canUseRipgrep.mockResolvedValue(false);
885
+ const config = new Config({
886
+ ...baseParams,
887
+ useRipgrep: true,
888
+ useBuiltinRipgrep: false,
889
+ });
890
+ await config.initialize();
891
+ const calls = ToolRegistry.prototype.registerTool.mock.calls;
892
+ const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
893
+ const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
894
+ expect(wasRipGrepRegistered).toBe(false);
895
+ expect(wasGrepRegistered).toBe(true);
896
+ expect(canUseRipgrep).toHaveBeenCalledWith(false);
897
+ expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
898
+ const event = logRipgrepFallback.mock.calls[0][1];
899
+ expect(event.error).toContain('ripgrep is not available');
900
+ });
901
+ it('should fall back to GrepTool and log error when useRipgrep is true and builtin ripgrep is not available', async () => {
902
+ canUseRipgrep.mockResolvedValue(false);
903
+ const config = new Config({ ...baseParams, useRipgrep: true });
904
+ await config.initialize();
905
+ const calls = ToolRegistry.prototype.registerTool.mock.calls;
906
+ const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
907
+ const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
908
+ expect(wasRipGrepRegistered).toBe(false);
909
+ expect(wasGrepRegistered).toBe(true);
910
+ expect(canUseRipgrep).toHaveBeenCalledWith(true);
911
+ expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
912
+ const event = logRipgrepFallback.mock.calls[0][1];
913
+ expect(event.error).toContain('ripgrep is not available');
914
+ });
915
+ it('should fall back to GrepTool and log error when canUseRipgrep throws an error', async () => {
916
+ const error = new Error('ripGrep check failed');
917
+ canUseRipgrep.mockRejectedValue(error);
918
+ const config = new Config({ ...baseParams, useRipgrep: true });
919
+ await config.initialize();
920
+ const calls = ToolRegistry.prototype.registerTool.mock.calls;
921
+ const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
922
+ const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
923
+ expect(wasRipGrepRegistered).toBe(false);
924
+ expect(wasGrepRegistered).toBe(true);
925
+ expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
926
+ const event = logRipgrepFallback.mock.calls[0][1];
927
+ expect(event.error).toBe(`ripGrep check failed`);
928
+ });
929
+ it('should register GrepTool when useRipgrep is false', async () => {
930
+ const config = new Config({ ...baseParams, useRipgrep: false });
931
+ await config.initialize();
932
+ const calls = ToolRegistry.prototype.registerTool.mock.calls;
933
+ const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
934
+ const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
935
+ expect(wasRipGrepRegistered).toBe(false);
936
+ expect(wasGrepRegistered).toBe(true);
937
+ expect(canUseRipgrep).not.toHaveBeenCalled();
938
+ });
939
+ });
940
+ });
941
+ describe('BaseLlmClient Lifecycle', () => {
942
+ const MODEL = 'gemini-pro';
943
+ const SANDBOX = {
944
+ command: 'docker',
945
+ image: 'gemini-cli-sandbox',
946
+ };
947
+ const TARGET_DIR = '/path/to/target';
948
+ const DEBUG_MODE = false;
949
+ const QUESTION = 'test question';
950
+ const USER_MEMORY = 'Test User Memory';
951
+ const TELEMETRY_SETTINGS = { enabled: false };
952
+ const EMBEDDING_MODEL = 'gemini-embedding';
953
+ const baseParams = {
954
+ cwd: '/tmp',
955
+ embeddingModel: EMBEDDING_MODEL,
956
+ sandbox: SANDBOX,
957
+ targetDir: TARGET_DIR,
958
+ debugMode: DEBUG_MODE,
959
+ question: QUESTION,
960
+ userMemory: USER_MEMORY,
961
+ telemetry: TELEMETRY_SETTINGS,
962
+ model: MODEL,
963
+ usageStatisticsEnabled: false,
964
+ };
965
+ it('should throw an error if getBaseLlmClient is called before refreshAuth', () => {
966
+ const config = new Config(baseParams);
967
+ expect(() => config.getBaseLlmClient()).toThrow('BaseLlmClient not initialized. Ensure authentication has occurred and ContentGenerator is ready.');
968
+ });
969
+ it('should successfully initialize BaseLlmClient after refreshAuth is called', async () => {
970
+ const config = new Config(baseParams);
971
+ const authType = AuthType.USE_GEMINI;
972
+ const mockContentConfig = { model: 'gemini-flash', apiKey: 'test-key' };
973
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
974
+ config: mockContentConfig,
975
+ sources: {},
976
+ });
977
+ await config.refreshAuth(authType);
978
+ // Should not throw
979
+ const llmService = config.getBaseLlmClient();
980
+ expect(llmService).toBeDefined();
981
+ expect(BaseLlmClient).toHaveBeenCalledWith(config.getContentGenerator(), config);
982
+ });
983
+ });
984
+ describe('Model Switching and Config Updates', () => {
985
+ const baseParams = {
986
+ cwd: '/tmp',
987
+ targetDir: '/path/to/target',
988
+ debugMode: false,
989
+ model: 'qwen3-coder-plus',
990
+ usageStatisticsEnabled: false,
991
+ telemetry: { enabled: false },
992
+ };
993
+ beforeEach(() => {
994
+ vi.clearAllMocks();
995
+ });
996
+ it('should update contextWindowSize when switching models with hot-update', async () => {
997
+ const config = new Config(baseParams);
998
+ // Initialize with first model
999
+ const initialConfig = {
1000
+ ['model']: 'qwen3-coder-plus',
1001
+ ['authType']: AuthType.QWEN_OAUTH,
1002
+ ['apiKey']: 'test-key',
1003
+ ['contextWindowSize']: 1_000_000,
1004
+ ['samplingParams']: { temperature: 0.7 },
1005
+ ['enableCacheControl']: true,
1006
+ };
1007
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
1008
+ config: initialConfig,
1009
+ sources: {
1010
+ model: { kind: 'settings' },
1011
+ contextWindowSize: { kind: 'computed', detail: 'auto' },
1012
+ },
1013
+ });
1014
+ await config.refreshAuth(AuthType.QWEN_OAUTH);
1015
+ // Verify initial config
1016
+ const contentGenConfig = config.getContentGeneratorConfig();
1017
+ expect(contentGenConfig['model']).toBe('qwen3-coder-plus');
1018
+ expect(contentGenConfig['contextWindowSize']).toBe(1_000_000);
1019
+ // Switch to a different model with different token limits
1020
+ const newConfig = {
1021
+ ['model']: 'qwen-max',
1022
+ ['authType']: AuthType.QWEN_OAUTH,
1023
+ ['apiKey']: 'test-key',
1024
+ ['contextWindowSize']: 128_000,
1025
+ ['samplingParams']: { temperature: 0.8 },
1026
+ ['enableCacheControl']: false,
1027
+ };
1028
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
1029
+ config: newConfig,
1030
+ sources: {
1031
+ model: { kind: 'programmatic', detail: 'user' },
1032
+ contextWindowSize: { kind: 'computed', detail: 'auto' },
1033
+ samplingParams: { kind: 'settings' },
1034
+ enableCacheControl: { kind: 'settings' },
1035
+ },
1036
+ });
1037
+ // Simulate model switch (this would be called by ModelsConfig.switchModel)
1038
+ await config.handleModelChange(AuthType.QWEN_OAUTH, false);
1039
+ // Verify all fields are updated
1040
+ const updatedConfig = config.getContentGeneratorConfig();
1041
+ expect(updatedConfig['model']).toBe('qwen-max');
1042
+ expect(updatedConfig['contextWindowSize']).toBe(128_000);
1043
+ expect(updatedConfig['samplingParams']?.temperature).toBe(0.8);
1044
+ expect(updatedConfig['enableCacheControl']).toBe(false);
1045
+ // Verify sources are also updated
1046
+ const sources = config.getContentGeneratorConfigSources();
1047
+ expect(sources['model']?.kind).toBe('programmatic');
1048
+ expect(sources['model']?.detail).toBe('user');
1049
+ expect(sources['contextWindowSize']?.kind).toBe('computed');
1050
+ expect(sources['contextWindowSize']?.detail).toBe('auto');
1051
+ expect(sources['samplingParams']?.kind).toBe('settings');
1052
+ expect(sources['enableCacheControl']?.kind).toBe('settings');
1053
+ });
1054
+ it('should trigger full refresh when switching to non-qwen-oauth provider', async () => {
1055
+ const config = new Config(baseParams);
1056
+ // Initialize with qwen-oauth
1057
+ const initialConfig = {
1058
+ ['model']: 'qwen3-coder-plus',
1059
+ ['authType']: AuthType.QWEN_OAUTH,
1060
+ ['apiKey']: 'test-key',
1061
+ ['contextWindowSize']: 1_000_000,
1062
+ };
1063
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
1064
+ config: initialConfig,
1065
+ sources: {},
1066
+ });
1067
+ await config.refreshAuth(AuthType.QWEN_OAUTH);
1068
+ // Switch to different auth type (should trigger full refresh)
1069
+ const newConfig = {
1070
+ ['model']: 'gemini-flash',
1071
+ ['authType']: AuthType.USE_GEMINI,
1072
+ ['apiKey']: 'gemini-key',
1073
+ ['contextWindowSize']: 32_000,
1074
+ };
1075
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
1076
+ config: newConfig,
1077
+ sources: {},
1078
+ });
1079
+ const refreshAuthSpy = vi.spyOn(config, 'refreshAuth');
1080
+ // Simulate model switch with different auth type
1081
+ await config.handleModelChange(AuthType.USE_GEMINI, true);
1082
+ // Verify refreshAuth was called (full refresh path)
1083
+ expect(refreshAuthSpy).toHaveBeenCalledWith(AuthType.USE_GEMINI);
1084
+ });
1085
+ it('should handle model switch when contextWindowSize is undefined', async () => {
1086
+ const config = new Config(baseParams);
1087
+ // Initialize with config that has undefined token limits
1088
+ const initialConfig = {
1089
+ ['model']: 'qwen3-coder-plus',
1090
+ ['authType']: AuthType.QWEN_OAUTH,
1091
+ ['apiKey']: 'test-key',
1092
+ ['contextWindowSize']: undefined,
1093
+ };
1094
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
1095
+ config: initialConfig,
1096
+ sources: {},
1097
+ });
1098
+ await config.refreshAuth(AuthType.QWEN_OAUTH);
1099
+ // Switch to model with defined limits
1100
+ const newConfig = {
1101
+ ['model']: 'qwen-max',
1102
+ ['authType']: AuthType.QWEN_OAUTH,
1103
+ ['apiKey']: 'test-key',
1104
+ ['contextWindowSize']: 128_000,
1105
+ };
1106
+ vi.mocked(resolveContentGeneratorConfigWithSources).mockReturnValue({
1107
+ config: newConfig,
1108
+ sources: {},
1109
+ });
1110
+ await config.handleModelChange(AuthType.QWEN_OAUTH, false);
1111
+ // Verify limits are now defined
1112
+ const updatedConfig = config.getContentGeneratorConfig();
1113
+ expect(updatedConfig['contextWindowSize']).toBe(128_000);
1114
+ });
1115
+ });
1116
+ //# sourceMappingURL=config.test.js.map