@google/gemini-cli-core 0.1.0-development.1

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 (365) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +156 -0
  3. package/dist/.last_build +0 -0
  4. package/dist/index.d.ts +7 -0
  5. package/dist/index.js +8 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/__mocks__/fs/promises.d.ts +11 -0
  8. package/dist/src/__mocks__/fs/promises.js +17 -0
  9. package/dist/src/__mocks__/fs/promises.js.map +1 -0
  10. package/dist/src/code_assist/codeAssist.d.ts +8 -0
  11. package/dist/src/code_assist/codeAssist.js +19 -0
  12. package/dist/src/code_assist/codeAssist.js.map +1 -0
  13. package/dist/src/code_assist/converter.d.ts +68 -0
  14. package/dist/src/code_assist/converter.js +125 -0
  15. package/dist/src/code_assist/converter.js.map +1 -0
  16. package/dist/src/code_assist/converter.test.d.ts +6 -0
  17. package/dist/src/code_assist/converter.test.js +229 -0
  18. package/dist/src/code_assist/converter.test.js.map +1 -0
  19. package/dist/src/code_assist/oauth2.d.ts +26 -0
  20. package/dist/src/code_assist/oauth2.js +277 -0
  21. package/dist/src/code_assist/oauth2.js.map +1 -0
  22. package/dist/src/code_assist/oauth2.test.d.ts +6 -0
  23. package/dist/src/code_assist/oauth2.test.js +195 -0
  24. package/dist/src/code_assist/oauth2.test.js.map +1 -0
  25. package/dist/src/code_assist/server.d.ts +35 -0
  26. package/dist/src/code_assist/server.js +123 -0
  27. package/dist/src/code_assist/server.js.map +1 -0
  28. package/dist/src/code_assist/server.test.d.ts +6 -0
  29. package/dist/src/code_assist/server.test.js +123 -0
  30. package/dist/src/code_assist/server.test.js.map +1 -0
  31. package/dist/src/code_assist/setup.d.ts +15 -0
  32. package/dist/src/code_assist/setup.js +67 -0
  33. package/dist/src/code_assist/setup.js.map +1 -0
  34. package/dist/src/code_assist/types.d.ts +148 -0
  35. package/dist/src/code_assist/types.js +46 -0
  36. package/dist/src/code_assist/types.js.map +1 -0
  37. package/dist/src/config/config.d.ts +175 -0
  38. package/dist/src/config/config.js +385 -0
  39. package/dist/src/config/config.js.map +1 -0
  40. package/dist/src/config/config.test.d.ts +6 -0
  41. package/dist/src/config/config.test.js +263 -0
  42. package/dist/src/config/config.test.js.map +1 -0
  43. package/dist/src/config/flashFallback.test.d.ts +6 -0
  44. package/dist/src/config/flashFallback.test.js +115 -0
  45. package/dist/src/config/flashFallback.test.js.map +1 -0
  46. package/dist/src/config/models.d.ts +8 -0
  47. package/dist/src/config/models.js +9 -0
  48. package/dist/src/config/models.js.map +1 -0
  49. package/dist/src/core/client.d.ts +39 -0
  50. package/dist/src/core/client.js +386 -0
  51. package/dist/src/core/client.js.map +1 -0
  52. package/dist/src/core/client.test.d.ts +6 -0
  53. package/dist/src/core/client.test.js +630 -0
  54. package/dist/src/core/client.test.js.map +1 -0
  55. package/dist/src/core/contentGenerator.d.ts +29 -0
  56. package/dist/src/core/contentGenerator.js +71 -0
  57. package/dist/src/core/contentGenerator.js.map +1 -0
  58. package/dist/src/core/contentGenerator.test.d.ts +6 -0
  59. package/dist/src/core/contentGenerator.test.js +45 -0
  60. package/dist/src/core/contentGenerator.test.js.map +1 -0
  61. package/dist/src/core/coreToolScheduler.d.ts +104 -0
  62. package/dist/src/core/coreToolScheduler.js +397 -0
  63. package/dist/src/core/coreToolScheduler.js.map +1 -0
  64. package/dist/src/core/coreToolScheduler.test.d.ts +6 -0
  65. package/dist/src/core/coreToolScheduler.test.js +318 -0
  66. package/dist/src/core/coreToolScheduler.test.js.map +1 -0
  67. package/dist/src/core/geminiChat.d.ts +116 -0
  68. package/dist/src/core/geminiChat.js +491 -0
  69. package/dist/src/core/geminiChat.js.map +1 -0
  70. package/dist/src/core/geminiChat.test.d.ts +6 -0
  71. package/dist/src/core/geminiChat.test.js +422 -0
  72. package/dist/src/core/geminiChat.test.js.map +1 -0
  73. package/dist/src/core/geminiRequest.d.ts +13 -0
  74. package/dist/src/core/geminiRequest.js +45 -0
  75. package/dist/src/core/geminiRequest.js.map +1 -0
  76. package/dist/src/core/geminiRequest.test.d.ts +6 -0
  77. package/dist/src/core/geminiRequest.test.js +72 -0
  78. package/dist/src/core/geminiRequest.test.js.map +1 -0
  79. package/dist/src/core/logger.d.ts +35 -0
  80. package/dist/src/core/logger.js +235 -0
  81. package/dist/src/core/logger.js.map +1 -0
  82. package/dist/src/core/logger.test.d.ts +6 -0
  83. package/dist/src/core/logger.test.js +387 -0
  84. package/dist/src/core/logger.test.js.map +1 -0
  85. package/dist/src/core/modelCheck.d.ts +14 -0
  86. package/dist/src/core/modelCheck.js +55 -0
  87. package/dist/src/core/modelCheck.js.map +1 -0
  88. package/dist/src/core/nonInteractiveToolExecutor.d.ts +12 -0
  89. package/dist/src/core/nonInteractiveToolExecutor.js +92 -0
  90. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
  91. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +6 -0
  92. package/dist/src/core/nonInteractiveToolExecutor.test.js +181 -0
  93. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -0
  94. package/dist/src/core/prompts.d.ts +12 -0
  95. package/dist/src/core/prompts.js +334 -0
  96. package/dist/src/core/prompts.js.map +1 -0
  97. package/dist/src/core/prompts.test.d.ts +6 -0
  98. package/dist/src/core/prompts.test.js +97 -0
  99. package/dist/src/core/prompts.test.js.map +1 -0
  100. package/dist/src/core/tokenLimits.d.ts +10 -0
  101. package/dist/src/core/tokenLimits.js +27 -0
  102. package/dist/src/core/tokenLimits.js.map +1 -0
  103. package/dist/src/core/turn.d.ts +96 -0
  104. package/dist/src/core/turn.js +125 -0
  105. package/dist/src/core/turn.js.map +1 -0
  106. package/dist/src/core/turn.test.d.ts +6 -0
  107. package/dist/src/core/turn.test.js +236 -0
  108. package/dist/src/core/turn.test.js.map +1 -0
  109. package/dist/src/index.d.ts +46 -0
  110. package/dist/src/index.js +54 -0
  111. package/dist/src/index.js.map +1 -0
  112. package/dist/src/index.test.d.ts +6 -0
  113. package/dist/src/index.test.js +12 -0
  114. package/dist/src/index.test.js.map +1 -0
  115. package/dist/src/services/fileDiscoveryService.d.ts +35 -0
  116. package/dist/src/services/fileDiscoveryService.js +91 -0
  117. package/dist/src/services/fileDiscoveryService.js.map +1 -0
  118. package/dist/src/services/fileDiscoveryService.test.d.ts +6 -0
  119. package/dist/src/services/fileDiscoveryService.test.js +102 -0
  120. package/dist/src/services/fileDiscoveryService.test.js.map +1 -0
  121. package/dist/src/services/gitService.d.ts +21 -0
  122. package/dist/src/services/gitService.js +105 -0
  123. package/dist/src/services/gitService.js.map +1 -0
  124. package/dist/src/services/gitService.test.d.ts +6 -0
  125. package/dist/src/services/gitService.test.js +233 -0
  126. package/dist/src/services/gitService.test.js.map +1 -0
  127. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +33 -0
  128. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +364 -0
  129. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
  130. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +43 -0
  131. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +109 -0
  132. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
  133. package/dist/src/telemetry/constants.d.ts +19 -0
  134. package/dist/src/telemetry/constants.js +20 -0
  135. package/dist/src/telemetry/constants.js.map +1 -0
  136. package/dist/src/telemetry/index.d.ts +18 -0
  137. package/dist/src/telemetry/index.js +20 -0
  138. package/dist/src/telemetry/index.js.map +1 -0
  139. package/dist/src/telemetry/loggers.d.ts +13 -0
  140. package/dist/src/telemetry/loggers.js +187 -0
  141. package/dist/src/telemetry/loggers.js.map +1 -0
  142. package/dist/src/telemetry/loggers.test.d.ts +6 -0
  143. package/dist/src/telemetry/loggers.test.js +525 -0
  144. package/dist/src/telemetry/loggers.test.js.map +1 -0
  145. package/dist/src/telemetry/metrics.d.ts +19 -0
  146. package/dist/src/telemetry/metrics.js +144 -0
  147. package/dist/src/telemetry/metrics.js.map +1 -0
  148. package/dist/src/telemetry/metrics.test.d.ts +6 -0
  149. package/dist/src/telemetry/metrics.test.js +162 -0
  150. package/dist/src/telemetry/metrics.test.js.map +1 -0
  151. package/dist/src/telemetry/sdk.d.ts +9 -0
  152. package/dist/src/telemetry/sdk.js +116 -0
  153. package/dist/src/telemetry/sdk.js.map +1 -0
  154. package/dist/src/telemetry/telemetry.test.d.ts +6 -0
  155. package/dist/src/telemetry/telemetry.test.js +50 -0
  156. package/dist/src/telemetry/telemetry.test.js.map +1 -0
  157. package/dist/src/telemetry/types.d.ts +91 -0
  158. package/dist/src/telemetry/types.js +176 -0
  159. package/dist/src/telemetry/types.js.map +1 -0
  160. package/dist/src/telemetry/uiTelemetry.d.ts +67 -0
  161. package/dist/src/telemetry/uiTelemetry.js +131 -0
  162. package/dist/src/telemetry/uiTelemetry.js.map +1 -0
  163. package/dist/src/telemetry/uiTelemetry.test.d.ts +6 -0
  164. package/dist/src/telemetry/uiTelemetry.test.js +411 -0
  165. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -0
  166. package/dist/src/tools/diffOptions.d.ts +7 -0
  167. package/dist/src/tools/diffOptions.js +10 -0
  168. package/dist/src/tools/diffOptions.js.map +1 -0
  169. package/dist/src/tools/edit.d.ts +84 -0
  170. package/dist/src/tools/edit.js +359 -0
  171. package/dist/src/tools/edit.js.map +1 -0
  172. package/dist/src/tools/edit.test.d.ts +6 -0
  173. package/dist/src/tools/edit.test.js +500 -0
  174. package/dist/src/tools/edit.test.js.map +1 -0
  175. package/dist/src/tools/glob.d.ts +71 -0
  176. package/dist/src/tools/glob.js +215 -0
  177. package/dist/src/tools/glob.js.map +1 -0
  178. package/dist/src/tools/glob.test.d.ts +6 -0
  179. package/dist/src/tools/glob.test.js +293 -0
  180. package/dist/src/tools/glob.test.js.map +1 -0
  181. package/dist/src/tools/grep.d.ts +81 -0
  182. package/dist/src/tools/grep.js +427 -0
  183. package/dist/src/tools/grep.js.map +1 -0
  184. package/dist/src/tools/grep.test.d.ts +6 -0
  185. package/dist/src/tools/grep.test.js +185 -0
  186. package/dist/src/tools/grep.test.js.map +1 -0
  187. package/dist/src/tools/ls.d.ts +94 -0
  188. package/dist/src/tools/ls.js +215 -0
  189. package/dist/src/tools/ls.js.map +1 -0
  190. package/dist/src/tools/mcp-client.d.ts +56 -0
  191. package/dist/src/tools/mcp-client.js +302 -0
  192. package/dist/src/tools/mcp-client.js.map +1 -0
  193. package/dist/src/tools/mcp-client.test.d.ts +6 -0
  194. package/dist/src/tools/mcp-client.test.js +608 -0
  195. package/dist/src/tools/mcp-client.test.js.map +1 -0
  196. package/dist/src/tools/mcp-tool.d.ts +23 -0
  197. package/dist/src/tools/mcp-tool.js +119 -0
  198. package/dist/src/tools/mcp-tool.js.map +1 -0
  199. package/dist/src/tools/mcp-tool.test.d.ts +6 -0
  200. package/dist/src/tools/mcp-tool.test.js +173 -0
  201. package/dist/src/tools/mcp-tool.test.js.map +1 -0
  202. package/dist/src/tools/memoryTool.d.ts +28 -0
  203. package/dist/src/tools/memoryTool.js +171 -0
  204. package/dist/src/tools/memoryTool.js.map +1 -0
  205. package/dist/src/tools/memoryTool.test.d.ts +6 -0
  206. package/dist/src/tools/memoryTool.test.js +181 -0
  207. package/dist/src/tools/memoryTool.test.js.map +1 -0
  208. package/dist/src/tools/modifiable-tool.d.ts +29 -0
  209. package/dist/src/tools/modifiable-tool.js +85 -0
  210. package/dist/src/tools/modifiable-tool.js.map +1 -0
  211. package/dist/src/tools/modifiable-tool.test.d.ts +6 -0
  212. package/dist/src/tools/modifiable-tool.test.js +204 -0
  213. package/dist/src/tools/modifiable-tool.test.js.map +1 -0
  214. package/dist/src/tools/read-file.d.ts +36 -0
  215. package/dist/src/tools/read-file.js +103 -0
  216. package/dist/src/tools/read-file.js.map +1 -0
  217. package/dist/src/tools/read-file.test.d.ts +6 -0
  218. package/dist/src/tools/read-file.test.js +180 -0
  219. package/dist/src/tools/read-file.test.js.map +1 -0
  220. package/dist/src/tools/read-many-files.d.ts +65 -0
  221. package/dist/src/tools/read-many-files.js +344 -0
  222. package/dist/src/tools/read-many-files.js.map +1 -0
  223. package/dist/src/tools/read-many-files.test.d.ts +6 -0
  224. package/dist/src/tools/read-many-files.test.js +300 -0
  225. package/dist/src/tools/read-many-files.test.js.map +1 -0
  226. package/dist/src/tools/shell.d.ts +43 -0
  227. package/dist/src/tools/shell.js +421 -0
  228. package/dist/src/tools/shell.js.map +1 -0
  229. package/dist/src/tools/shell.test.d.ts +6 -0
  230. package/dist/src/tools/shell.test.js +321 -0
  231. package/dist/src/tools/shell.test.js.map +1 -0
  232. package/dist/src/tools/tool-registry.d.ts +67 -0
  233. package/dist/src/tools/tool-registry.js +326 -0
  234. package/dist/src/tools/tool-registry.js.map +1 -0
  235. package/dist/src/tools/tool-registry.test.d.ts +6 -0
  236. package/dist/src/tools/tool-registry.test.js +353 -0
  237. package/dist/src/tools/tool-registry.test.js.map +1 -0
  238. package/dist/src/tools/tools.d.ts +179 -0
  239. package/dist/src/tools/tools.js +88 -0
  240. package/dist/src/tools/tools.js.map +1 -0
  241. package/dist/src/tools/web-fetch.d.ts +29 -0
  242. package/dist/src/tools/web-fetch.js +240 -0
  243. package/dist/src/tools/web-fetch.js.map +1 -0
  244. package/dist/src/tools/web-fetch.test.d.ts +6 -0
  245. package/dist/src/tools/web-fetch.test.js +70 -0
  246. package/dist/src/tools/web-fetch.test.js.map +1 -0
  247. package/dist/src/tools/web-search.d.ts +49 -0
  248. package/dist/src/tools/web-search.js +119 -0
  249. package/dist/src/tools/web-search.js.map +1 -0
  250. package/dist/src/tools/write-file.d.ts +50 -0
  251. package/dist/src/tools/write-file.js +261 -0
  252. package/dist/src/tools/write-file.js.map +1 -0
  253. package/dist/src/tools/write-file.test.d.ts +6 -0
  254. package/dist/src/tools/write-file.test.js +413 -0
  255. package/dist/src/tools/write-file.test.js.map +1 -0
  256. package/dist/src/utils/LruCache.d.ts +13 -0
  257. package/dist/src/utils/LruCache.js +38 -0
  258. package/dist/src/utils/LruCache.js.map +1 -0
  259. package/dist/src/utils/bfsFileSearch.d.ts +22 -0
  260. package/dist/src/utils/bfsFileSearch.js +62 -0
  261. package/dist/src/utils/bfsFileSearch.js.map +1 -0
  262. package/dist/src/utils/bfsFileSearch.test.d.ts +6 -0
  263. package/dist/src/utils/bfsFileSearch.test.js +129 -0
  264. package/dist/src/utils/bfsFileSearch.test.js.map +1 -0
  265. package/dist/src/utils/editCorrector.d.ts +53 -0
  266. package/dist/src/utils/editCorrector.js +546 -0
  267. package/dist/src/utils/editCorrector.js.map +1 -0
  268. package/dist/src/utils/editCorrector.test.d.ts +6 -0
  269. package/dist/src/utils/editCorrector.test.js +560 -0
  270. package/dist/src/utils/editCorrector.test.js.map +1 -0
  271. package/dist/src/utils/editor.d.ts +28 -0
  272. package/dist/src/utils/editor.js +163 -0
  273. package/dist/src/utils/editor.js.map +1 -0
  274. package/dist/src/utils/editor.test.d.ts +6 -0
  275. package/dist/src/utils/editor.test.js +293 -0
  276. package/dist/src/utils/editor.test.js.map +1 -0
  277. package/dist/src/utils/errorReporting.d.ts +14 -0
  278. package/dist/src/utils/errorReporting.js +88 -0
  279. package/dist/src/utils/errorReporting.js.map +1 -0
  280. package/dist/src/utils/errorReporting.test.d.ts +6 -0
  281. package/dist/src/utils/errorReporting.test.js +124 -0
  282. package/dist/src/utils/errorReporting.test.js.map +1 -0
  283. package/dist/src/utils/errors.d.ts +14 -0
  284. package/dist/src/utils/errors.js +54 -0
  285. package/dist/src/utils/errors.js.map +1 -0
  286. package/dist/src/utils/fetch.d.ts +11 -0
  287. package/dist/src/utils/fetch.js +51 -0
  288. package/dist/src/utils/fetch.js.map +1 -0
  289. package/dist/src/utils/fileUtils.d.ts +49 -0
  290. package/dist/src/utils/fileUtils.js +284 -0
  291. package/dist/src/utils/fileUtils.js.map +1 -0
  292. package/dist/src/utils/fileUtils.test.d.ts +6 -0
  293. package/dist/src/utils/fileUtils.test.js +321 -0
  294. package/dist/src/utils/fileUtils.test.js.map +1 -0
  295. package/dist/src/utils/flashFallback.integration.test.d.ts +6 -0
  296. package/dist/src/utils/flashFallback.integration.test.js +112 -0
  297. package/dist/src/utils/flashFallback.integration.test.js.map +1 -0
  298. package/dist/src/utils/generateContentResponseUtilities.d.ts +14 -0
  299. package/dist/src/utils/generateContentResponseUtilities.js +92 -0
  300. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
  301. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +6 -0
  302. package/dist/src/utils/generateContentResponseUtilities.test.js +273 -0
  303. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -0
  304. package/dist/src/utils/getFolderStructure.d.ts +30 -0
  305. package/dist/src/utils/getFolderStructure.js +247 -0
  306. package/dist/src/utils/getFolderStructure.js.map +1 -0
  307. package/dist/src/utils/getFolderStructure.test.d.ts +6 -0
  308. package/dist/src/utils/getFolderStructure.test.js +300 -0
  309. package/dist/src/utils/getFolderStructure.test.js.map +1 -0
  310. package/dist/src/utils/gitIgnoreParser.d.ts +20 -0
  311. package/dist/src/utils/gitIgnoreParser.js +64 -0
  312. package/dist/src/utils/gitIgnoreParser.js.map +1 -0
  313. package/dist/src/utils/gitIgnoreParser.test.d.ts +6 -0
  314. package/dist/src/utils/gitIgnoreParser.test.js +145 -0
  315. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -0
  316. package/dist/src/utils/gitUtils.d.ts +17 -0
  317. package/dist/src/utils/gitUtils.js +61 -0
  318. package/dist/src/utils/gitUtils.js.map +1 -0
  319. package/dist/src/utils/memoryDiscovery.d.ts +14 -0
  320. package/dist/src/utils/memoryDiscovery.js +219 -0
  321. package/dist/src/utils/memoryDiscovery.js.map +1 -0
  322. package/dist/src/utils/memoryDiscovery.test.d.ts +6 -0
  323. package/dist/src/utils/memoryDiscovery.test.js +432 -0
  324. package/dist/src/utils/memoryDiscovery.test.js.map +1 -0
  325. package/dist/src/utils/memoryImportProcessor.d.ts +35 -0
  326. package/dist/src/utils/memoryImportProcessor.js +141 -0
  327. package/dist/src/utils/memoryImportProcessor.js.map +1 -0
  328. package/dist/src/utils/memoryImportProcessor.test.d.ts +6 -0
  329. package/dist/src/utils/memoryImportProcessor.test.js +170 -0
  330. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -0
  331. package/dist/src/utils/messageInspectors.d.ts +8 -0
  332. package/dist/src/utils/messageInspectors.js +16 -0
  333. package/dist/src/utils/messageInspectors.js.map +1 -0
  334. package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
  335. package/dist/src/utils/nextSpeakerChecker.js +111 -0
  336. package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
  337. package/dist/src/utils/nextSpeakerChecker.test.d.ts +6 -0
  338. package/dist/src/utils/nextSpeakerChecker.test.js +152 -0
  339. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -0
  340. package/dist/src/utils/paths.d.ts +47 -0
  341. package/dist/src/utils/paths.js +136 -0
  342. package/dist/src/utils/paths.js.map +1 -0
  343. package/dist/src/utils/retry.d.ts +21 -0
  344. package/dist/src/utils/retry.js +220 -0
  345. package/dist/src/utils/retry.js.map +1 -0
  346. package/dist/src/utils/retry.test.d.ts +6 -0
  347. package/dist/src/utils/retry.test.js +322 -0
  348. package/dist/src/utils/retry.test.js.map +1 -0
  349. package/dist/src/utils/schemaValidator.d.ts +17 -0
  350. package/dist/src/utils/schemaValidator.js +50 -0
  351. package/dist/src/utils/schemaValidator.js.map +1 -0
  352. package/dist/src/utils/session.d.ts +6 -0
  353. package/dist/src/utils/session.js +8 -0
  354. package/dist/src/utils/session.js.map +1 -0
  355. package/dist/src/utils/testUtils.d.ts +29 -0
  356. package/dist/src/utils/testUtils.js +70 -0
  357. package/dist/src/utils/testUtils.js.map +1 -0
  358. package/dist/src/utils/user_id.d.ts +17 -0
  359. package/dist/src/utils/user_id.js +70 -0
  360. package/dist/src/utils/user_id.js.map +1 -0
  361. package/dist/src/utils/user_id.test.d.ts +6 -0
  362. package/dist/src/utils/user_id.test.js +42 -0
  363. package/dist/src/utils/user_id.test.js.map +1 -0
  364. package/dist/tsconfig.tsbuildinfo +1 -0
  365. package/package.json +60 -0
@@ -0,0 +1,385 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import * as path from 'node:path';
7
+ import process from 'node:process';
8
+ import { createContentGeneratorConfig, } from '../core/contentGenerator.js';
9
+ import { ToolRegistry } from '../tools/tool-registry.js';
10
+ import { LSTool } from '../tools/ls.js';
11
+ import { ReadFileTool } from '../tools/read-file.js';
12
+ import { GrepTool } from '../tools/grep.js';
13
+ import { GlobTool } from '../tools/glob.js';
14
+ import { EditTool } from '../tools/edit.js';
15
+ import { ShellTool } from '../tools/shell.js';
16
+ import { WriteFileTool } from '../tools/write-file.js';
17
+ import { WebFetchTool } from '../tools/web-fetch.js';
18
+ import { ReadManyFilesTool } from '../tools/read-many-files.js';
19
+ import { MemoryTool, setGeminiMdFilename, GEMINI_CONFIG_DIR as GEMINI_DIR, } from '../tools/memoryTool.js';
20
+ import { WebSearchTool } from '../tools/web-search.js';
21
+ import { GeminiClient } from '../core/client.js';
22
+ import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
23
+ import { GitService } from '../services/gitService.js';
24
+ import { loadServerHierarchicalMemory } from '../utils/memoryDiscovery.js';
25
+ import { getProjectTempDir } from '../utils/paths.js';
26
+ import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, StartSessionEvent, } from '../telemetry/index.js';
27
+ import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, } from './models.js';
28
+ import { ClearcutLogger } from '../telemetry/clearcut-logger/clearcut-logger.js';
29
+ export var ApprovalMode;
30
+ (function (ApprovalMode) {
31
+ ApprovalMode["DEFAULT"] = "default";
32
+ ApprovalMode["AUTO_EDIT"] = "autoEdit";
33
+ ApprovalMode["YOLO"] = "yolo";
34
+ })(ApprovalMode || (ApprovalMode = {}));
35
+ export class MCPServerConfig {
36
+ command;
37
+ args;
38
+ env;
39
+ cwd;
40
+ url;
41
+ httpUrl;
42
+ headers;
43
+ tcp;
44
+ timeout;
45
+ trust;
46
+ description;
47
+ includeTools;
48
+ excludeTools;
49
+ constructor(
50
+ // For stdio transport
51
+ command, args, env, cwd,
52
+ // For sse transport
53
+ url,
54
+ // For streamable http transport
55
+ httpUrl, headers,
56
+ // For websocket transport
57
+ tcp,
58
+ // Common
59
+ timeout, trust,
60
+ // Metadata
61
+ description, includeTools, excludeTools) {
62
+ this.command = command;
63
+ this.args = args;
64
+ this.env = env;
65
+ this.cwd = cwd;
66
+ this.url = url;
67
+ this.httpUrl = httpUrl;
68
+ this.headers = headers;
69
+ this.tcp = tcp;
70
+ this.timeout = timeout;
71
+ this.trust = trust;
72
+ this.description = description;
73
+ this.includeTools = includeTools;
74
+ this.excludeTools = excludeTools;
75
+ }
76
+ }
77
+ export class Config {
78
+ toolRegistry;
79
+ sessionId;
80
+ contentGeneratorConfig;
81
+ embeddingModel;
82
+ sandbox;
83
+ targetDir;
84
+ debugMode;
85
+ question;
86
+ fullContext;
87
+ coreTools;
88
+ excludeTools;
89
+ toolDiscoveryCommand;
90
+ toolCallCommand;
91
+ mcpServerCommand;
92
+ mcpServers;
93
+ userMemory;
94
+ geminiMdFileCount;
95
+ approvalMode;
96
+ showMemoryUsage;
97
+ accessibility;
98
+ telemetrySettings;
99
+ usageStatisticsEnabled;
100
+ geminiClient;
101
+ fileFiltering;
102
+ fileDiscoveryService = null;
103
+ gitService = undefined;
104
+ checkpointing;
105
+ proxy;
106
+ cwd;
107
+ bugCommand;
108
+ model;
109
+ extensionContextFilePaths;
110
+ modelSwitchedDuringSession = false;
111
+ flashFallbackHandler;
112
+ constructor(params) {
113
+ this.sessionId = params.sessionId;
114
+ this.embeddingModel =
115
+ params.embeddingModel ?? DEFAULT_GEMINI_EMBEDDING_MODEL;
116
+ this.sandbox = params.sandbox;
117
+ this.targetDir = path.resolve(params.targetDir);
118
+ this.debugMode = params.debugMode;
119
+ this.question = params.question;
120
+ this.fullContext = params.fullContext ?? false;
121
+ this.coreTools = params.coreTools;
122
+ this.excludeTools = params.excludeTools;
123
+ this.toolDiscoveryCommand = params.toolDiscoveryCommand;
124
+ this.toolCallCommand = params.toolCallCommand;
125
+ this.mcpServerCommand = params.mcpServerCommand;
126
+ this.mcpServers = params.mcpServers;
127
+ this.userMemory = params.userMemory ?? '';
128
+ this.geminiMdFileCount = params.geminiMdFileCount ?? 0;
129
+ this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT;
130
+ this.showMemoryUsage = params.showMemoryUsage ?? false;
131
+ this.accessibility = params.accessibility ?? {};
132
+ this.telemetrySettings = {
133
+ enabled: params.telemetry?.enabled ?? false,
134
+ target: params.telemetry?.target ?? DEFAULT_TELEMETRY_TARGET,
135
+ otlpEndpoint: params.telemetry?.otlpEndpoint ?? DEFAULT_OTLP_ENDPOINT,
136
+ logPrompts: params.telemetry?.logPrompts ?? true,
137
+ };
138
+ this.usageStatisticsEnabled = params.usageStatisticsEnabled ?? true;
139
+ this.fileFiltering = {
140
+ respectGitIgnore: params.fileFiltering?.respectGitIgnore ?? true,
141
+ enableRecursiveFileSearch: params.fileFiltering?.enableRecursiveFileSearch ?? true,
142
+ };
143
+ this.checkpointing = params.checkpointing ?? false;
144
+ this.proxy = params.proxy;
145
+ this.cwd = params.cwd ?? process.cwd();
146
+ this.fileDiscoveryService = params.fileDiscoveryService ?? null;
147
+ this.bugCommand = params.bugCommand;
148
+ this.model = params.model;
149
+ this.extensionContextFilePaths = params.extensionContextFilePaths ?? [];
150
+ if (params.contextFileName) {
151
+ setGeminiMdFilename(params.contextFileName);
152
+ }
153
+ if (this.telemetrySettings.enabled) {
154
+ initializeTelemetry(this);
155
+ }
156
+ if (this.getUsageStatisticsEnabled()) {
157
+ ClearcutLogger.getInstance(this)?.logStartSessionEvent(new StartSessionEvent(this));
158
+ }
159
+ else {
160
+ console.log('Data collection is disabled.');
161
+ }
162
+ }
163
+ async initialize() {
164
+ // Initialize centralized FileDiscoveryService
165
+ this.getFileService();
166
+ if (this.getCheckpointingEnabled()) {
167
+ try {
168
+ await this.getGitService();
169
+ }
170
+ catch {
171
+ // For now swallow the error, later log it.
172
+ }
173
+ }
174
+ this.toolRegistry = await this.createToolRegistry();
175
+ }
176
+ async refreshAuth(authMethod) {
177
+ this.contentGeneratorConfig = await createContentGeneratorConfig(this.model, authMethod);
178
+ this.geminiClient = new GeminiClient(this);
179
+ await this.geminiClient.initialize(this.contentGeneratorConfig);
180
+ // Reset the session flag since we're explicitly changing auth and using default model
181
+ this.modelSwitchedDuringSession = false;
182
+ }
183
+ getSessionId() {
184
+ return this.sessionId;
185
+ }
186
+ getContentGeneratorConfig() {
187
+ return this.contentGeneratorConfig;
188
+ }
189
+ getModel() {
190
+ return this.contentGeneratorConfig?.model || this.model;
191
+ }
192
+ setModel(newModel) {
193
+ if (this.contentGeneratorConfig) {
194
+ this.contentGeneratorConfig.model = newModel;
195
+ this.modelSwitchedDuringSession = true;
196
+ }
197
+ }
198
+ isModelSwitchedDuringSession() {
199
+ return this.modelSwitchedDuringSession;
200
+ }
201
+ resetModelToDefault() {
202
+ if (this.contentGeneratorConfig) {
203
+ this.contentGeneratorConfig.model = this.model; // Reset to the original default model
204
+ this.modelSwitchedDuringSession = false;
205
+ }
206
+ }
207
+ setFlashFallbackHandler(handler) {
208
+ this.flashFallbackHandler = handler;
209
+ }
210
+ getEmbeddingModel() {
211
+ return this.embeddingModel;
212
+ }
213
+ getSandbox() {
214
+ return this.sandbox;
215
+ }
216
+ getTargetDir() {
217
+ return this.targetDir;
218
+ }
219
+ getProjectRoot() {
220
+ return this.targetDir;
221
+ }
222
+ getToolRegistry() {
223
+ return Promise.resolve(this.toolRegistry);
224
+ }
225
+ getDebugMode() {
226
+ return this.debugMode;
227
+ }
228
+ getQuestion() {
229
+ return this.question;
230
+ }
231
+ getFullContext() {
232
+ return this.fullContext;
233
+ }
234
+ getCoreTools() {
235
+ return this.coreTools;
236
+ }
237
+ getExcludeTools() {
238
+ return this.excludeTools;
239
+ }
240
+ getToolDiscoveryCommand() {
241
+ return this.toolDiscoveryCommand;
242
+ }
243
+ getToolCallCommand() {
244
+ return this.toolCallCommand;
245
+ }
246
+ getMcpServerCommand() {
247
+ return this.mcpServerCommand;
248
+ }
249
+ getMcpServers() {
250
+ return this.mcpServers;
251
+ }
252
+ getUserMemory() {
253
+ return this.userMemory;
254
+ }
255
+ setUserMemory(newUserMemory) {
256
+ this.userMemory = newUserMemory;
257
+ }
258
+ getGeminiMdFileCount() {
259
+ return this.geminiMdFileCount;
260
+ }
261
+ setGeminiMdFileCount(count) {
262
+ this.geminiMdFileCount = count;
263
+ }
264
+ getApprovalMode() {
265
+ return this.approvalMode;
266
+ }
267
+ setApprovalMode(mode) {
268
+ this.approvalMode = mode;
269
+ }
270
+ getShowMemoryUsage() {
271
+ return this.showMemoryUsage;
272
+ }
273
+ getAccessibility() {
274
+ return this.accessibility;
275
+ }
276
+ getTelemetryEnabled() {
277
+ return this.telemetrySettings.enabled ?? false;
278
+ }
279
+ getTelemetryLogPromptsEnabled() {
280
+ return this.telemetrySettings.logPrompts ?? true;
281
+ }
282
+ getTelemetryOtlpEndpoint() {
283
+ return this.telemetrySettings.otlpEndpoint ?? DEFAULT_OTLP_ENDPOINT;
284
+ }
285
+ getTelemetryTarget() {
286
+ return this.telemetrySettings.target ?? DEFAULT_TELEMETRY_TARGET;
287
+ }
288
+ getGeminiClient() {
289
+ return this.geminiClient;
290
+ }
291
+ getGeminiDir() {
292
+ return path.join(this.targetDir, GEMINI_DIR);
293
+ }
294
+ getProjectTempDir() {
295
+ return getProjectTempDir(this.getProjectRoot());
296
+ }
297
+ getEnableRecursiveFileSearch() {
298
+ return this.fileFiltering.enableRecursiveFileSearch;
299
+ }
300
+ getFileFilteringRespectGitIgnore() {
301
+ return this.fileFiltering.respectGitIgnore;
302
+ }
303
+ getCheckpointingEnabled() {
304
+ return this.checkpointing;
305
+ }
306
+ getProxy() {
307
+ return this.proxy;
308
+ }
309
+ getWorkingDir() {
310
+ return this.cwd;
311
+ }
312
+ getBugCommand() {
313
+ return this.bugCommand;
314
+ }
315
+ getFileService() {
316
+ if (!this.fileDiscoveryService) {
317
+ this.fileDiscoveryService = new FileDiscoveryService(this.targetDir);
318
+ }
319
+ return this.fileDiscoveryService;
320
+ }
321
+ getUsageStatisticsEnabled() {
322
+ return this.usageStatisticsEnabled;
323
+ }
324
+ getExtensionContextFilePaths() {
325
+ return this.extensionContextFilePaths;
326
+ }
327
+ async getGitService() {
328
+ if (!this.gitService) {
329
+ this.gitService = new GitService(this.targetDir);
330
+ await this.gitService.initialize();
331
+ }
332
+ return this.gitService;
333
+ }
334
+ async refreshMemory() {
335
+ const { memoryContent, fileCount } = await loadServerHierarchicalMemory(this.getWorkingDir(), this.getDebugMode(), this.getFileService(), this.getExtensionContextFilePaths());
336
+ this.setUserMemory(memoryContent);
337
+ this.setGeminiMdFileCount(fileCount);
338
+ return { memoryContent, fileCount };
339
+ }
340
+ async createToolRegistry() {
341
+ const registry = new ToolRegistry(this);
342
+ const targetDir = this.getTargetDir();
343
+ // helper to create & register core tools that are enabled
344
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
345
+ const registerCoreTool = (ToolClass, ...args) => {
346
+ const className = ToolClass.name;
347
+ const toolName = ToolClass.Name || className;
348
+ const coreTools = this.getCoreTools();
349
+ const excludeTools = this.getExcludeTools();
350
+ let isEnabled = false;
351
+ if (coreTools === undefined) {
352
+ isEnabled = true;
353
+ }
354
+ else {
355
+ isEnabled = coreTools.some((tool) => tool === className ||
356
+ tool === toolName ||
357
+ tool.startsWith(`${className}(`) ||
358
+ tool.startsWith(`${toolName}(`));
359
+ }
360
+ if (excludeTools?.includes(className) ||
361
+ excludeTools?.includes(toolName)) {
362
+ isEnabled = false;
363
+ }
364
+ if (isEnabled) {
365
+ registry.registerTool(new ToolClass(...args));
366
+ }
367
+ };
368
+ registerCoreTool(LSTool, targetDir, this);
369
+ registerCoreTool(ReadFileTool, targetDir, this);
370
+ registerCoreTool(GrepTool, targetDir);
371
+ registerCoreTool(GlobTool, targetDir, this);
372
+ registerCoreTool(EditTool, this);
373
+ registerCoreTool(WriteFileTool, this);
374
+ registerCoreTool(WebFetchTool, this);
375
+ registerCoreTool(ReadManyFilesTool, targetDir, this);
376
+ registerCoreTool(ShellTool, this);
377
+ registerCoreTool(MemoryTool);
378
+ registerCoreTool(WebSearchTool, this);
379
+ await registry.discoverTools();
380
+ return registry;
381
+ }
382
+ }
383
+ // Export model constants for use in CLI
384
+ export { DEFAULT_GEMINI_FLASH_MODEL };
385
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,263 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
7
+ import { Config } from './config.js';
8
+ import * as path from 'path';
9
+ import { setGeminiMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js';
10
+ import { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, } from '../telemetry/index.js';
11
+ import { loadServerHierarchicalMemory } from '../utils/memoryDiscovery.js';
12
+ // Mock dependencies that might be called during Config construction or createServerConfig
13
+ vi.mock('../tools/tool-registry', () => {
14
+ const ToolRegistryMock = vi.fn();
15
+ ToolRegistryMock.prototype.registerTool = vi.fn();
16
+ ToolRegistryMock.prototype.discoverTools = vi.fn();
17
+ ToolRegistryMock.prototype.getAllTools = vi.fn(() => []); // Mock methods if needed
18
+ ToolRegistryMock.prototype.getTool = vi.fn();
19
+ ToolRegistryMock.prototype.getFunctionDeclarations = vi.fn(() => []);
20
+ return { ToolRegistry: ToolRegistryMock };
21
+ });
22
+ vi.mock('../utils/memoryDiscovery.js', () => ({
23
+ loadServerHierarchicalMemory: vi.fn(),
24
+ }));
25
+ // Mock individual tools if their constructors are complex or have side effects
26
+ vi.mock('../tools/ls');
27
+ vi.mock('../tools/read-file');
28
+ vi.mock('../tools/grep');
29
+ vi.mock('../tools/glob');
30
+ vi.mock('../tools/edit');
31
+ vi.mock('../tools/shell');
32
+ vi.mock('../tools/write-file');
33
+ vi.mock('../tools/web-fetch');
34
+ vi.mock('../tools/read-many-files');
35
+ vi.mock('../tools/memoryTool', () => ({
36
+ MemoryTool: vi.fn(),
37
+ setGeminiMdFilename: vi.fn(),
38
+ getCurrentGeminiMdFilename: vi.fn(() => 'GEMINI.md'), // Mock the original filename
39
+ DEFAULT_CONTEXT_FILENAME: 'GEMINI.md',
40
+ GEMINI_CONFIG_DIR: '.gemini',
41
+ }));
42
+ vi.mock('../core/contentGenerator.js', async (importOriginal) => {
43
+ const actual = await importOriginal();
44
+ return {
45
+ ...actual,
46
+ createContentGeneratorConfig: vi.fn(),
47
+ };
48
+ });
49
+ vi.mock('../core/client.js', () => ({
50
+ GeminiClient: vi.fn().mockImplementation(() => ({
51
+ // Mock any methods on GeminiClient that might be used.
52
+ })),
53
+ }));
54
+ vi.mock('../telemetry/index.js', async (importOriginal) => {
55
+ const actual = await importOriginal();
56
+ return {
57
+ ...actual,
58
+ initializeTelemetry: vi.fn(),
59
+ };
60
+ });
61
+ describe('Server Config (config.ts)', () => {
62
+ const MODEL = 'gemini-pro';
63
+ const SANDBOX = {
64
+ command: 'docker',
65
+ image: 'gemini-cli-sandbox',
66
+ };
67
+ const TARGET_DIR = '/path/to/target';
68
+ const DEBUG_MODE = false;
69
+ const QUESTION = 'test question';
70
+ const FULL_CONTEXT = false;
71
+ const USER_MEMORY = 'Test User Memory';
72
+ const TELEMETRY_SETTINGS = { enabled: false };
73
+ const EMBEDDING_MODEL = 'gemini-embedding';
74
+ const SESSION_ID = 'test-session-id';
75
+ const baseParams = {
76
+ cwd: '/tmp',
77
+ embeddingModel: EMBEDDING_MODEL,
78
+ sandbox: SANDBOX,
79
+ targetDir: TARGET_DIR,
80
+ debugMode: DEBUG_MODE,
81
+ question: QUESTION,
82
+ fullContext: FULL_CONTEXT,
83
+ userMemory: USER_MEMORY,
84
+ telemetry: TELEMETRY_SETTINGS,
85
+ sessionId: SESSION_ID,
86
+ model: MODEL,
87
+ };
88
+ beforeEach(() => {
89
+ // Reset mocks if necessary
90
+ vi.clearAllMocks();
91
+ });
92
+ // i can't get vi mocking to import in core. only in cli. can't fix it now.
93
+ // describe('refreshAuth', () => {
94
+ // it('should refresh auth and update config', async () => {
95
+ // const config = new Config(baseParams);
96
+ // const newModel = 'gemini-ultra';
97
+ // const authType = AuthType.USE_GEMINI;
98
+ // const mockContentConfig = {
99
+ // model: newModel,
100
+ // apiKey: 'test-key',
101
+ // };
102
+ // (createContentGeneratorConfig as vi.Mock).mockResolvedValue(
103
+ // mockContentConfig,
104
+ // );
105
+ // await config.refreshAuth(authType);
106
+ // expect(createContentGeneratorConfig).toHaveBeenCalledWith(
107
+ // newModel,
108
+ // authType,
109
+ // );
110
+ // expect(config.getContentGeneratorConfig()).toEqual(mockContentConfig);
111
+ // expect(GeminiClient).toHaveBeenCalledWith(config);
112
+ // });
113
+ // });
114
+ it('Config constructor should store userMemory correctly', () => {
115
+ const config = new Config(baseParams);
116
+ expect(config.getUserMemory()).toBe(USER_MEMORY);
117
+ // Verify other getters if needed
118
+ expect(config.getTargetDir()).toBe(path.resolve(TARGET_DIR)); // Check resolved path
119
+ });
120
+ it('Config constructor should default userMemory to empty string if not provided', () => {
121
+ const paramsWithoutMemory = { ...baseParams };
122
+ delete paramsWithoutMemory.userMemory;
123
+ const config = new Config(paramsWithoutMemory);
124
+ expect(config.getUserMemory()).toBe('');
125
+ });
126
+ it('Config constructor should call setGeminiMdFilename with contextFileName if provided', () => {
127
+ const contextFileName = 'CUSTOM_AGENTS.md';
128
+ const paramsWithContextFile = {
129
+ ...baseParams,
130
+ contextFileName,
131
+ };
132
+ new Config(paramsWithContextFile);
133
+ expect(mockSetGeminiMdFilename).toHaveBeenCalledWith(contextFileName);
134
+ });
135
+ it('Config constructor should not call setGeminiMdFilename if contextFileName is not provided', () => {
136
+ new Config(baseParams); // baseParams does not have contextFileName
137
+ expect(mockSetGeminiMdFilename).not.toHaveBeenCalled();
138
+ });
139
+ it('should set default file filtering settings when not provided', () => {
140
+ const config = new Config(baseParams);
141
+ expect(config.getFileFilteringRespectGitIgnore()).toBe(true);
142
+ });
143
+ it('should set custom file filtering settings when provided', () => {
144
+ const paramsWithFileFiltering = {
145
+ ...baseParams,
146
+ fileFiltering: {
147
+ respectGitIgnore: false,
148
+ },
149
+ };
150
+ const config = new Config(paramsWithFileFiltering);
151
+ expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
152
+ });
153
+ it('Config constructor should set telemetry to true when provided as true', () => {
154
+ const paramsWithTelemetry = {
155
+ ...baseParams,
156
+ telemetry: { enabled: true },
157
+ };
158
+ const config = new Config(paramsWithTelemetry);
159
+ expect(config.getTelemetryEnabled()).toBe(true);
160
+ });
161
+ it('Config constructor should set telemetry to false when provided as false', () => {
162
+ const paramsWithTelemetry = {
163
+ ...baseParams,
164
+ telemetry: { enabled: false },
165
+ };
166
+ const config = new Config(paramsWithTelemetry);
167
+ expect(config.getTelemetryEnabled()).toBe(false);
168
+ });
169
+ it('Config constructor should default telemetry to default value if not provided', () => {
170
+ const paramsWithoutTelemetry = { ...baseParams };
171
+ delete paramsWithoutTelemetry.telemetry;
172
+ const config = new Config(paramsWithoutTelemetry);
173
+ expect(config.getTelemetryEnabled()).toBe(TELEMETRY_SETTINGS.enabled);
174
+ });
175
+ it('should have a getFileService method that returns FileDiscoveryService', () => {
176
+ const config = new Config(baseParams);
177
+ const fileService = config.getFileService();
178
+ expect(fileService).toBeDefined();
179
+ });
180
+ describe('Telemetry Settings', () => {
181
+ it('should return default telemetry target if not provided', () => {
182
+ const params = {
183
+ ...baseParams,
184
+ telemetry: { enabled: true },
185
+ };
186
+ const config = new Config(params);
187
+ expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
188
+ });
189
+ it('should return provided OTLP endpoint', () => {
190
+ const endpoint = 'http://custom.otel.collector:4317';
191
+ const params = {
192
+ ...baseParams,
193
+ telemetry: { enabled: true, otlpEndpoint: endpoint },
194
+ };
195
+ const config = new Config(params);
196
+ expect(config.getTelemetryOtlpEndpoint()).toBe(endpoint);
197
+ });
198
+ it('should return default OTLP endpoint if not provided', () => {
199
+ const params = {
200
+ ...baseParams,
201
+ telemetry: { enabled: true },
202
+ };
203
+ const config = new Config(params);
204
+ expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
205
+ });
206
+ it('should return provided logPrompts setting', () => {
207
+ const params = {
208
+ ...baseParams,
209
+ telemetry: { enabled: true, logPrompts: false },
210
+ };
211
+ const config = new Config(params);
212
+ expect(config.getTelemetryLogPromptsEnabled()).toBe(false);
213
+ });
214
+ it('should return default logPrompts setting (true) if not provided', () => {
215
+ const params = {
216
+ ...baseParams,
217
+ telemetry: { enabled: true },
218
+ };
219
+ const config = new Config(params);
220
+ expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
221
+ });
222
+ it('should return default logPrompts setting (true) if telemetry object is not provided', () => {
223
+ const paramsWithoutTelemetry = { ...baseParams };
224
+ delete paramsWithoutTelemetry.telemetry;
225
+ const config = new Config(paramsWithoutTelemetry);
226
+ expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
227
+ });
228
+ it('should return default telemetry target if telemetry object is not provided', () => {
229
+ const paramsWithoutTelemetry = { ...baseParams };
230
+ delete paramsWithoutTelemetry.telemetry;
231
+ const config = new Config(paramsWithoutTelemetry);
232
+ expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
233
+ });
234
+ it('should return default OTLP endpoint if telemetry object is not provided', () => {
235
+ const paramsWithoutTelemetry = { ...baseParams };
236
+ delete paramsWithoutTelemetry.telemetry;
237
+ const config = new Config(paramsWithoutTelemetry);
238
+ expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
239
+ });
240
+ });
241
+ describe('refreshMemory', () => {
242
+ it('should update memory and file count on successful refresh', async () => {
243
+ const config = new Config(baseParams);
244
+ const mockMemoryData = {
245
+ memoryContent: 'new memory content',
246
+ fileCount: 5,
247
+ };
248
+ loadServerHierarchicalMemory.mockResolvedValue(mockMemoryData);
249
+ const result = await config.refreshMemory();
250
+ expect(loadServerHierarchicalMemory).toHaveBeenCalledWith(config.getWorkingDir(), config.getDebugMode(), config.getFileService(), config.getExtensionContextFilePaths());
251
+ expect(config.getUserMemory()).toBe(mockMemoryData.memoryContent);
252
+ expect(config.getGeminiMdFileCount()).toBe(mockMemoryData.fileCount);
253
+ expect(result).toEqual(mockMemoryData);
254
+ });
255
+ it('should propagate errors from loadServerHierarchicalMemory', async () => {
256
+ const config = new Config(baseParams);
257
+ const testError = new Error('Failed to load memory');
258
+ loadServerHierarchicalMemory.mockRejectedValue(testError);
259
+ await expect(config.refreshMemory()).rejects.toThrow(testError);
260
+ });
261
+ });
262
+ });
263
+ //# sourceMappingURL=config.test.js.map