@machina.ai/cell-cli-core 1.0.13-rc3

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 (435) hide show
  1. package/dist/.last_build +0 -0
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.js +8 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/__mocks__/fs/promises.d.ts +11 -0
  6. package/dist/src/__mocks__/fs/promises.js +17 -0
  7. package/dist/src/__mocks__/fs/promises.js.map +1 -0
  8. package/dist/src/code_assist/codeAssist.d.ts +9 -0
  9. package/dist/src/code_assist/codeAssist.js +19 -0
  10. package/dist/src/code_assist/codeAssist.js.map +1 -0
  11. package/dist/src/code_assist/converter.d.ts +68 -0
  12. package/dist/src/code_assist/converter.js +125 -0
  13. package/dist/src/code_assist/converter.js.map +1 -0
  14. package/dist/src/code_assist/converter.test.d.ts +6 -0
  15. package/dist/src/code_assist/converter.test.js +229 -0
  16. package/dist/src/code_assist/converter.test.js.map +1 -0
  17. package/dist/src/code_assist/oauth2.d.ts +20 -0
  18. package/dist/src/code_assist/oauth2.js +329 -0
  19. package/dist/src/code_assist/oauth2.js.map +1 -0
  20. package/dist/src/code_assist/oauth2.test.d.ts +6 -0
  21. package/dist/src/code_assist/oauth2.test.js +244 -0
  22. package/dist/src/code_assist/oauth2.test.js.map +1 -0
  23. package/dist/src/code_assist/server.d.ts +37 -0
  24. package/dist/src/code_assist/server.js +125 -0
  25. package/dist/src/code_assist/server.js.map +1 -0
  26. package/dist/src/code_assist/server.test.d.ts +6 -0
  27. package/dist/src/code_assist/server.test.js +131 -0
  28. package/dist/src/code_assist/server.test.js.map +1 -0
  29. package/dist/src/code_assist/setup.d.ts +20 -0
  30. package/dist/src/code_assist/setup.js +70 -0
  31. package/dist/src/code_assist/setup.js.map +1 -0
  32. package/dist/src/code_assist/setup.test.d.ts +6 -0
  33. package/dist/src/code_assist/setup.test.js +65 -0
  34. package/dist/src/code_assist/setup.test.js.map +1 -0
  35. package/dist/src/code_assist/types.d.ts +148 -0
  36. package/dist/src/code_assist/types.js +46 -0
  37. package/dist/src/code_assist/types.js.map +1 -0
  38. package/dist/src/config/config.d.ts +239 -0
  39. package/dist/src/config/config.js +484 -0
  40. package/dist/src/config/config.js.map +1 -0
  41. package/dist/src/config/config.test.d.ts +6 -0
  42. package/dist/src/config/config.test.js +304 -0
  43. package/dist/src/config/config.test.js.map +1 -0
  44. package/dist/src/config/flashFallback.test.d.ts +6 -0
  45. package/dist/src/config/flashFallback.test.js +115 -0
  46. package/dist/src/config/flashFallback.test.js.map +1 -0
  47. package/dist/src/config/models.d.ts +8 -0
  48. package/dist/src/config/models.js +9 -0
  49. package/dist/src/config/models.js.map +1 -0
  50. package/dist/src/core/client.d.ts +60 -0
  51. package/dist/src/core/client.js +502 -0
  52. package/dist/src/core/client.js.map +1 -0
  53. package/dist/src/core/client.test.d.ts +6 -0
  54. package/dist/src/core/client.test.js +853 -0
  55. package/dist/src/core/client.test.js.map +1 -0
  56. package/dist/src/core/contentGenerator.d.ts +36 -0
  57. package/dist/src/core/contentGenerator.js +110 -0
  58. package/dist/src/core/contentGenerator.js.map +1 -0
  59. package/dist/src/core/contentGenerator.test.d.ts +6 -0
  60. package/dist/src/core/contentGenerator.test.js +225 -0
  61. package/dist/src/core/contentGenerator.test.js.map +1 -0
  62. package/dist/src/core/coreToolScheduler.d.ts +104 -0
  63. package/dist/src/core/coreToolScheduler.js +410 -0
  64. package/dist/src/core/coreToolScheduler.js.map +1 -0
  65. package/dist/src/core/coreToolScheduler.test.d.ts +6 -0
  66. package/dist/src/core/coreToolScheduler.test.js +402 -0
  67. package/dist/src/core/coreToolScheduler.test.js.map +1 -0
  68. package/dist/src/core/geminiChat.d.ts +116 -0
  69. package/dist/src/core/geminiChat.js +511 -0
  70. package/dist/src/core/geminiChat.js.map +1 -0
  71. package/dist/src/core/geminiChat.test.d.ts +6 -0
  72. package/dist/src/core/geminiChat.test.js +424 -0
  73. package/dist/src/core/geminiChat.test.js.map +1 -0
  74. package/dist/src/core/geminiRequest.d.ts +13 -0
  75. package/dist/src/core/geminiRequest.js +45 -0
  76. package/dist/src/core/geminiRequest.js.map +1 -0
  77. package/dist/src/core/geminiRequest.test.d.ts +6 -0
  78. package/dist/src/core/geminiRequest.test.js +72 -0
  79. package/dist/src/core/geminiRequest.test.js.map +1 -0
  80. package/dist/src/core/logger.d.ts +35 -0
  81. package/dist/src/core/logger.js +235 -0
  82. package/dist/src/core/logger.js.map +1 -0
  83. package/dist/src/core/logger.test.d.ts +6 -0
  84. package/dist/src/core/logger.test.js +387 -0
  85. package/dist/src/core/logger.test.js.map +1 -0
  86. package/dist/src/core/modelCheck.d.ts +14 -0
  87. package/dist/src/core/modelCheck.js +62 -0
  88. package/dist/src/core/modelCheck.js.map +1 -0
  89. package/dist/src/core/nonInteractiveToolExecutor.d.ts +12 -0
  90. package/dist/src/core/nonInteractiveToolExecutor.js +97 -0
  91. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
  92. package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +6 -0
  93. package/dist/src/core/nonInteractiveToolExecutor.test.js +189 -0
  94. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -0
  95. package/dist/src/core/prompts.d.ts +12 -0
  96. package/dist/src/core/prompts.js +335 -0
  97. package/dist/src/core/prompts.js.map +1 -0
  98. package/dist/src/core/prompts.test.d.ts +6 -0
  99. package/dist/src/core/prompts.test.js +97 -0
  100. package/dist/src/core/prompts.test.js.map +1 -0
  101. package/dist/src/core/tokenLimits.d.ts +10 -0
  102. package/dist/src/core/tokenLimits.js +27 -0
  103. package/dist/src/core/tokenLimits.js.map +1 -0
  104. package/dist/src/core/turn.d.ts +111 -0
  105. package/dist/src/core/turn.js +139 -0
  106. package/dist/src/core/turn.js.map +1 -0
  107. package/dist/src/core/turn.test.d.ts +6 -0
  108. package/dist/src/core/turn.test.js +365 -0
  109. package/dist/src/core/turn.test.js.map +1 -0
  110. package/dist/src/index.d.ts +57 -0
  111. package/dist/src/index.js +64 -0
  112. package/dist/src/index.js.map +1 -0
  113. package/dist/src/index.test.d.ts +6 -0
  114. package/dist/src/index.test.js +12 -0
  115. package/dist/src/index.test.js.map +1 -0
  116. package/dist/src/mcp/oauth-provider.d.ts +142 -0
  117. package/dist/src/mcp/oauth-provider.js +446 -0
  118. package/dist/src/mcp/oauth-provider.js.map +1 -0
  119. package/dist/src/mcp/oauth-provider.test.d.ts +6 -0
  120. package/dist/src/mcp/oauth-provider.test.js +520 -0
  121. package/dist/src/mcp/oauth-provider.test.js.map +1 -0
  122. package/dist/src/mcp/oauth-token-storage.d.ts +81 -0
  123. package/dist/src/mcp/oauth-token-storage.js +149 -0
  124. package/dist/src/mcp/oauth-token-storage.js.map +1 -0
  125. package/dist/src/mcp/oauth-token-storage.test.d.ts +6 -0
  126. package/dist/src/mcp/oauth-token-storage.test.js +205 -0
  127. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -0
  128. package/dist/src/mcp/oauth-utils.d.ts +109 -0
  129. package/dist/src/mcp/oauth-utils.js +183 -0
  130. package/dist/src/mcp/oauth-utils.js.map +1 -0
  131. package/dist/src/mcp/oauth-utils.test.d.ts +6 -0
  132. package/dist/src/mcp/oauth-utils.test.js +144 -0
  133. package/dist/src/mcp/oauth-utils.test.js.map +1 -0
  134. package/dist/src/services/fileDiscoveryService.d.ts +35 -0
  135. package/dist/src/services/fileDiscoveryService.js +91 -0
  136. package/dist/src/services/fileDiscoveryService.js.map +1 -0
  137. package/dist/src/services/fileDiscoveryService.test.d.ts +6 -0
  138. package/dist/src/services/fileDiscoveryService.test.js +102 -0
  139. package/dist/src/services/fileDiscoveryService.test.js.map +1 -0
  140. package/dist/src/services/gitService.d.ts +21 -0
  141. package/dist/src/services/gitService.js +101 -0
  142. package/dist/src/services/gitService.js.map +1 -0
  143. package/dist/src/services/gitService.test.d.ts +6 -0
  144. package/dist/src/services/gitService.test.js +228 -0
  145. package/dist/src/services/gitService.test.js.map +1 -0
  146. package/dist/src/services/ideContext.d.ts +178 -0
  147. package/dist/src/services/ideContext.js +105 -0
  148. package/dist/src/services/ideContext.js.map +1 -0
  149. package/dist/src/services/ideContext.test.d.ts +6 -0
  150. package/dist/src/services/ideContext.test.js +111 -0
  151. package/dist/src/services/ideContext.test.js.map +1 -0
  152. package/dist/src/services/loopDetectionService.d.ts +51 -0
  153. package/dist/src/services/loopDetectionService.js +232 -0
  154. package/dist/src/services/loopDetectionService.js.map +1 -0
  155. package/dist/src/services/loopDetectionService.test.d.ts +6 -0
  156. package/dist/src/services/loopDetectionService.test.js +339 -0
  157. package/dist/src/services/loopDetectionService.test.js.map +1 -0
  158. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +37 -0
  159. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +456 -0
  160. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
  161. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +49 -0
  162. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +127 -0
  163. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
  164. package/dist/src/telemetry/constants.d.ts +20 -0
  165. package/dist/src/telemetry/constants.js +21 -0
  166. package/dist/src/telemetry/constants.js.map +1 -0
  167. package/dist/src/telemetry/index.d.ts +18 -0
  168. package/dist/src/telemetry/index.js +20 -0
  169. package/dist/src/telemetry/index.js.map +1 -0
  170. package/dist/src/telemetry/integration.test.circular.d.ts +6 -0
  171. package/dist/src/telemetry/integration.test.circular.js +53 -0
  172. package/dist/src/telemetry/integration.test.circular.js.map +1 -0
  173. package/dist/src/telemetry/loggers.d.ts +15 -0
  174. package/dist/src/telemetry/loggers.js +220 -0
  175. package/dist/src/telemetry/loggers.js.map +1 -0
  176. package/dist/src/telemetry/loggers.test.circular.d.ts +6 -0
  177. package/dist/src/telemetry/loggers.test.circular.js +100 -0
  178. package/dist/src/telemetry/loggers.test.circular.js.map +1 -0
  179. package/dist/src/telemetry/loggers.test.d.ts +6 -0
  180. package/dist/src/telemetry/loggers.test.js +558 -0
  181. package/dist/src/telemetry/loggers.test.js.map +1 -0
  182. package/dist/src/telemetry/metrics.d.ts +19 -0
  183. package/dist/src/telemetry/metrics.js +144 -0
  184. package/dist/src/telemetry/metrics.js.map +1 -0
  185. package/dist/src/telemetry/metrics.test.d.ts +6 -0
  186. package/dist/src/telemetry/metrics.test.js +162 -0
  187. package/dist/src/telemetry/metrics.test.js.map +1 -0
  188. package/dist/src/telemetry/sdk.d.ts +9 -0
  189. package/dist/src/telemetry/sdk.js +116 -0
  190. package/dist/src/telemetry/sdk.js.map +1 -0
  191. package/dist/src/telemetry/telemetry.test.d.ts +6 -0
  192. package/dist/src/telemetry/telemetry.test.js +50 -0
  193. package/dist/src/telemetry/telemetry.test.js.map +1 -0
  194. package/dist/src/telemetry/types.d.ts +116 -0
  195. package/dist/src/telemetry/types.js +218 -0
  196. package/dist/src/telemetry/types.js.map +1 -0
  197. package/dist/src/telemetry/uiTelemetry.d.ts +68 -0
  198. package/dist/src/telemetry/uiTelemetry.js +138 -0
  199. package/dist/src/telemetry/uiTelemetry.js.map +1 -0
  200. package/dist/src/telemetry/uiTelemetry.test.d.ts +6 -0
  201. package/dist/src/telemetry/uiTelemetry.test.js +504 -0
  202. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -0
  203. package/dist/src/tools/diffOptions.d.ts +7 -0
  204. package/dist/src/tools/diffOptions.js +10 -0
  205. package/dist/src/tools/diffOptions.js.map +1 -0
  206. package/dist/src/tools/edit.d.ts +79 -0
  207. package/dist/src/tools/edit.js +362 -0
  208. package/dist/src/tools/edit.js.map +1 -0
  209. package/dist/src/tools/edit.test.d.ts +6 -0
  210. package/dist/src/tools/edit.test.js +512 -0
  211. package/dist/src/tools/edit.test.js.map +1 -0
  212. package/dist/src/tools/glob.d.ts +58 -0
  213. package/dist/src/tools/glob.js +193 -0
  214. package/dist/src/tools/glob.js.map +1 -0
  215. package/dist/src/tools/glob.test.d.ts +6 -0
  216. package/dist/src/tools/glob.test.js +294 -0
  217. package/dist/src/tools/glob.test.js.map +1 -0
  218. package/dist/src/tools/grep.d.ts +78 -0
  219. package/dist/src/tools/grep.js +422 -0
  220. package/dist/src/tools/grep.js.map +1 -0
  221. package/dist/src/tools/grep.test.d.ts +6 -0
  222. package/dist/src/tools/grep.test.js +188 -0
  223. package/dist/src/tools/grep.test.js.map +1 -0
  224. package/dist/src/tools/ls.d.ts +86 -0
  225. package/dist/src/tools/ls.js +223 -0
  226. package/dist/src/tools/ls.js.map +1 -0
  227. package/dist/src/tools/mcp-client.d.ts +110 -0
  228. package/dist/src/tools/mcp-client.js +319 -0
  229. package/dist/src/tools/mcp-client.js.map +1 -0
  230. package/dist/src/tools/mcp-client.test.d.ts +6 -0
  231. package/dist/src/tools/mcp-client.test.js +156 -0
  232. package/dist/src/tools/mcp-client.test.js.map +1 -0
  233. package/dist/src/tools/mcp-tool.d.ts +29 -0
  234. package/dist/src/tools/mcp-tool.js +143 -0
  235. package/dist/src/tools/mcp-tool.js.map +1 -0
  236. package/dist/src/tools/mcp-tool.test.d.ts +6 -0
  237. package/dist/src/tools/mcp-tool.test.js +189 -0
  238. package/dist/src/tools/mcp-tool.test.js.map +1 -0
  239. package/dist/src/tools/memoryTool.d.ts +28 -0
  240. package/dist/src/tools/memoryTool.js +172 -0
  241. package/dist/src/tools/memoryTool.js.map +1 -0
  242. package/dist/src/tools/memoryTool.test.d.ts +6 -0
  243. package/dist/src/tools/memoryTool.test.js +181 -0
  244. package/dist/src/tools/memoryTool.test.js.map +1 -0
  245. package/dist/src/tools/modifiable-tool.d.ts +29 -0
  246. package/dist/src/tools/modifiable-tool.js +85 -0
  247. package/dist/src/tools/modifiable-tool.js.map +1 -0
  248. package/dist/src/tools/modifiable-tool.test.d.ts +6 -0
  249. package/dist/src/tools/modifiable-tool.test.js +204 -0
  250. package/dist/src/tools/modifiable-tool.test.js.map +1 -0
  251. package/dist/src/tools/read-file.d.ts +36 -0
  252. package/dist/src/tools/read-file.js +102 -0
  253. package/dist/src/tools/read-file.js.map +1 -0
  254. package/dist/src/tools/read-file.test.d.ts +6 -0
  255. package/dist/src/tools/read-file.test.js +181 -0
  256. package/dist/src/tools/read-file.test.js.map +1 -0
  257. package/dist/src/tools/read-many-files.d.ts +62 -0
  258. package/dist/src/tools/read-many-files.js +362 -0
  259. package/dist/src/tools/read-many-files.js.map +1 -0
  260. package/dist/src/tools/read-many-files.test.d.ts +6 -0
  261. package/dist/src/tools/read-many-files.test.js +315 -0
  262. package/dist/src/tools/read-many-files.test.js.map +1 -0
  263. package/dist/src/tools/shell.d.ts +43 -0
  264. package/dist/src/tools/shell.js +435 -0
  265. package/dist/src/tools/shell.js.map +1 -0
  266. package/dist/src/tools/shell.test.d.ts +6 -0
  267. package/dist/src/tools/shell.test.js +406 -0
  268. package/dist/src/tools/shell.test.js.map +1 -0
  269. package/dist/src/tools/tool-registry.d.ts +66 -0
  270. package/dist/src/tools/tool-registry.js +329 -0
  271. package/dist/src/tools/tool-registry.js.map +1 -0
  272. package/dist/src/tools/tool-registry.test.d.ts +6 -0
  273. package/dist/src/tools/tool-registry.test.js +424 -0
  274. package/dist/src/tools/tool-registry.test.js.map +1 -0
  275. package/dist/src/tools/tools.d.ts +219 -0
  276. package/dist/src/tools/tools.js +111 -0
  277. package/dist/src/tools/tools.js.map +1 -0
  278. package/dist/src/tools/web-fetch.d.ts +29 -0
  279. package/dist/src/tools/web-fetch.js +246 -0
  280. package/dist/src/tools/web-fetch.js.map +1 -0
  281. package/dist/src/tools/web-fetch.test.d.ts +6 -0
  282. package/dist/src/tools/web-fetch.test.js +71 -0
  283. package/dist/src/tools/web-fetch.test.js.map +1 -0
  284. package/dist/src/tools/web-search.d.ts +49 -0
  285. package/dist/src/tools/web-search.js +120 -0
  286. package/dist/src/tools/web-search.js.map +1 -0
  287. package/dist/src/tools/write-file.d.ts +42 -0
  288. package/dist/src/tools/write-file.js +253 -0
  289. package/dist/src/tools/write-file.js.map +1 -0
  290. package/dist/src/tools/write-file.test.d.ts +6 -0
  291. package/dist/src/tools/write-file.test.js +413 -0
  292. package/dist/src/tools/write-file.test.js.map +1 -0
  293. package/dist/src/utils/LruCache.d.ts +13 -0
  294. package/dist/src/utils/LruCache.js +38 -0
  295. package/dist/src/utils/LruCache.js.map +1 -0
  296. package/dist/src/utils/bfsFileSearch.d.ts +24 -0
  297. package/dist/src/utils/bfsFileSearch.js +65 -0
  298. package/dist/src/utils/bfsFileSearch.js.map +1 -0
  299. package/dist/src/utils/bfsFileSearch.test.d.ts +6 -0
  300. package/dist/src/utils/bfsFileSearch.test.js +162 -0
  301. package/dist/src/utils/bfsFileSearch.test.js.map +1 -0
  302. package/dist/src/utils/browser.d.ts +13 -0
  303. package/dist/src/utils/browser.js +49 -0
  304. package/dist/src/utils/browser.js.map +1 -0
  305. package/dist/src/utils/editCorrector.d.ts +53 -0
  306. package/dist/src/utils/editCorrector.js +546 -0
  307. package/dist/src/utils/editCorrector.js.map +1 -0
  308. package/dist/src/utils/editCorrector.test.d.ts +6 -0
  309. package/dist/src/utils/editCorrector.test.js +564 -0
  310. package/dist/src/utils/editCorrector.test.js.map +1 -0
  311. package/dist/src/utils/editor.d.ts +28 -0
  312. package/dist/src/utils/editor.js +169 -0
  313. package/dist/src/utils/editor.js.map +1 -0
  314. package/dist/src/utils/editor.test.d.ts +6 -0
  315. package/dist/src/utils/editor.test.js +393 -0
  316. package/dist/src/utils/editor.test.js.map +1 -0
  317. package/dist/src/utils/errorReporting.d.ts +14 -0
  318. package/dist/src/utils/errorReporting.js +88 -0
  319. package/dist/src/utils/errorReporting.js.map +1 -0
  320. package/dist/src/utils/errorReporting.test.d.ts +6 -0
  321. package/dist/src/utils/errorReporting.test.js +124 -0
  322. package/dist/src/utils/errorReporting.test.js.map +1 -0
  323. package/dist/src/utils/errors.d.ts +14 -0
  324. package/dist/src/utils/errors.js +54 -0
  325. package/dist/src/utils/errors.js.map +1 -0
  326. package/dist/src/utils/fetch.d.ts +11 -0
  327. package/dist/src/utils/fetch.js +51 -0
  328. package/dist/src/utils/fetch.js.map +1 -0
  329. package/dist/src/utils/fileUtils.d.ts +49 -0
  330. package/dist/src/utils/fileUtils.js +300 -0
  331. package/dist/src/utils/fileUtils.js.map +1 -0
  332. package/dist/src/utils/fileUtils.test.d.ts +6 -0
  333. package/dist/src/utils/fileUtils.test.js +321 -0
  334. package/dist/src/utils/fileUtils.test.js.map +1 -0
  335. package/dist/src/utils/flashFallback.integration.test.d.ts +6 -0
  336. package/dist/src/utils/flashFallback.integration.test.js +112 -0
  337. package/dist/src/utils/flashFallback.integration.test.js.map +1 -0
  338. package/dist/src/utils/generateContentResponseUtilities.d.ts +14 -0
  339. package/dist/src/utils/generateContentResponseUtilities.js +92 -0
  340. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
  341. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +6 -0
  342. package/dist/src/utils/generateContentResponseUtilities.test.js +273 -0
  343. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -0
  344. package/dist/src/utils/getFolderStructure.d.ts +31 -0
  345. package/dist/src/utils/getFolderStructure.js +246 -0
  346. package/dist/src/utils/getFolderStructure.js.map +1 -0
  347. package/dist/src/utils/getFolderStructure.test.d.ts +6 -0
  348. package/dist/src/utils/getFolderStructure.test.js +284 -0
  349. package/dist/src/utils/getFolderStructure.test.js.map +1 -0
  350. package/dist/src/utils/gitIgnoreParser.d.ts +20 -0
  351. package/dist/src/utils/gitIgnoreParser.js +67 -0
  352. package/dist/src/utils/gitIgnoreParser.js.map +1 -0
  353. package/dist/src/utils/gitIgnoreParser.test.d.ts +6 -0
  354. package/dist/src/utils/gitIgnoreParser.test.js +157 -0
  355. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -0
  356. package/dist/src/utils/gitUtils.d.ts +17 -0
  357. package/dist/src/utils/gitUtils.js +61 -0
  358. package/dist/src/utils/gitUtils.js.map +1 -0
  359. package/dist/src/utils/memoryDiscovery.d.ts +15 -0
  360. package/dist/src/utils/memoryDiscovery.js +226 -0
  361. package/dist/src/utils/memoryDiscovery.js.map +1 -0
  362. package/dist/src/utils/memoryDiscovery.test.d.ts +6 -0
  363. package/dist/src/utils/memoryDiscovery.test.js +432 -0
  364. package/dist/src/utils/memoryDiscovery.test.js.map +1 -0
  365. package/dist/src/utils/memoryImportProcessor.d.ts +35 -0
  366. package/dist/src/utils/memoryImportProcessor.js +141 -0
  367. package/dist/src/utils/memoryImportProcessor.js.map +1 -0
  368. package/dist/src/utils/memoryImportProcessor.test.d.ts +6 -0
  369. package/dist/src/utils/memoryImportProcessor.test.js +170 -0
  370. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -0
  371. package/dist/src/utils/messageInspectors.d.ts +8 -0
  372. package/dist/src/utils/messageInspectors.js +16 -0
  373. package/dist/src/utils/messageInspectors.js.map +1 -0
  374. package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
  375. package/dist/src/utils/nextSpeakerChecker.js +112 -0
  376. package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
  377. package/dist/src/utils/nextSpeakerChecker.test.d.ts +6 -0
  378. package/dist/src/utils/nextSpeakerChecker.test.js +168 -0
  379. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -0
  380. package/dist/src/utils/paths.d.ts +59 -0
  381. package/dist/src/utils/paths.js +153 -0
  382. package/dist/src/utils/paths.js.map +1 -0
  383. package/dist/src/utils/quotaErrorDetection.d.ts +22 -0
  384. package/dist/src/utils/quotaErrorDetection.js +65 -0
  385. package/dist/src/utils/quotaErrorDetection.js.map +1 -0
  386. package/dist/src/utils/retry.d.ts +27 -0
  387. package/dist/src/utils/retry.js +276 -0
  388. package/dist/src/utils/retry.js.map +1 -0
  389. package/dist/src/utils/retry.test.d.ts +6 -0
  390. package/dist/src/utils/retry.test.js +322 -0
  391. package/dist/src/utils/retry.test.js.map +1 -0
  392. package/dist/src/utils/safeJsonStringify.d.ts +13 -0
  393. package/dist/src/utils/safeJsonStringify.js +25 -0
  394. package/dist/src/utils/safeJsonStringify.js.map +1 -0
  395. package/dist/src/utils/safeJsonStringify.test.d.ts +6 -0
  396. package/dist/src/utils/safeJsonStringify.test.js +61 -0
  397. package/dist/src/utils/safeJsonStringify.test.js.map +1 -0
  398. package/dist/src/utils/schemaValidator.d.ts +22 -0
  399. package/dist/src/utils/schemaValidator.js +65 -0
  400. package/dist/src/utils/schemaValidator.js.map +1 -0
  401. package/dist/src/utils/session.d.ts +6 -0
  402. package/dist/src/utils/session.js +8 -0
  403. package/dist/src/utils/session.js.map +1 -0
  404. package/dist/src/utils/stripJsonCodeBlock.d.ts +13 -0
  405. package/dist/src/utils/stripJsonCodeBlock.js +21 -0
  406. package/dist/src/utils/stripJsonCodeBlock.js.map +1 -0
  407. package/dist/src/utils/summarizer.d.ts +25 -0
  408. package/dist/src/utils/summarizer.js +80 -0
  409. package/dist/src/utils/summarizer.js.map +1 -0
  410. package/dist/src/utils/summarizer.test.d.ts +6 -0
  411. package/dist/src/utils/summarizer.test.js +131 -0
  412. package/dist/src/utils/summarizer.test.js.map +1 -0
  413. package/dist/src/utils/systemEncoding.d.ts +40 -0
  414. package/dist/src/utils/systemEncoding.js +149 -0
  415. package/dist/src/utils/systemEncoding.js.map +1 -0
  416. package/dist/src/utils/systemEncoding.test.d.ts +6 -0
  417. package/dist/src/utils/systemEncoding.test.js +368 -0
  418. package/dist/src/utils/systemEncoding.test.js.map +1 -0
  419. package/dist/src/utils/testUtils.d.ts +29 -0
  420. package/dist/src/utils/testUtils.js +70 -0
  421. package/dist/src/utils/testUtils.js.map +1 -0
  422. package/dist/src/utils/user_account.d.ts +9 -0
  423. package/dist/src/utils/user_account.js +99 -0
  424. package/dist/src/utils/user_account.js.map +1 -0
  425. package/dist/src/utils/user_account.test.d.ts +6 -0
  426. package/dist/src/utils/user_account.test.js +153 -0
  427. package/dist/src/utils/user_account.test.js.map +1 -0
  428. package/dist/src/utils/user_id.d.ts +11 -0
  429. package/dist/src/utils/user_id.js +49 -0
  430. package/dist/src/utils/user_id.js.map +1 -0
  431. package/dist/src/utils/user_id.test.d.ts +6 -0
  432. package/dist/src/utils/user_id.test.js +21 -0
  433. package/dist/src/utils/user_id.test.js.map +1 -0
  434. package/dist/tsconfig.tsbuildinfo +1 -0
  435. package/package.json +62 -0
@@ -0,0 +1,368 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
7
+ import { execSync } from 'child_process';
8
+ import * as os from 'os';
9
+ import { detect as chardetDetect } from 'chardet';
10
+ // Mock dependencies
11
+ vi.mock('child_process');
12
+ vi.mock('os');
13
+ vi.mock('chardet');
14
+ // Import the functions we want to test after refactoring
15
+ import { getCachedEncodingForBuffer, getSystemEncoding, windowsCodePageToEncoding, detectEncodingFromBuffer, resetEncodingCache, } from './systemEncoding.js';
16
+ describe('Shell Command Processor - Encoding Functions', () => {
17
+ let consoleWarnSpy;
18
+ let mockedExecSync;
19
+ let mockedOsPlatform;
20
+ let mockedChardetDetect;
21
+ beforeEach(() => {
22
+ consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
23
+ mockedExecSync = vi.mocked(execSync);
24
+ mockedOsPlatform = vi.mocked(os.platform);
25
+ mockedChardetDetect = vi.mocked(chardetDetect);
26
+ // Reset the encoding cache before each test
27
+ resetEncodingCache();
28
+ // Clear environment variables that might affect tests
29
+ delete process.env.LC_ALL;
30
+ delete process.env.LC_CTYPE;
31
+ delete process.env.LANG;
32
+ });
33
+ afterEach(() => {
34
+ vi.restoreAllMocks();
35
+ resetEncodingCache();
36
+ });
37
+ describe('windowsCodePageToEncoding', () => {
38
+ it('should map common Windows code pages correctly', () => {
39
+ expect(windowsCodePageToEncoding(437)).toBe('cp437');
40
+ expect(windowsCodePageToEncoding(850)).toBe('cp850');
41
+ expect(windowsCodePageToEncoding(65001)).toBe('utf-8');
42
+ expect(windowsCodePageToEncoding(1252)).toBe('windows-1252');
43
+ expect(windowsCodePageToEncoding(932)).toBe('shift_jis');
44
+ expect(windowsCodePageToEncoding(936)).toBe('gb2312');
45
+ expect(windowsCodePageToEncoding(949)).toBe('euc-kr');
46
+ expect(windowsCodePageToEncoding(950)).toBe('big5');
47
+ expect(windowsCodePageToEncoding(1200)).toBe('utf-16le');
48
+ expect(windowsCodePageToEncoding(1201)).toBe('utf-16be');
49
+ });
50
+ it('should return null for unmapped code pages and warn', () => {
51
+ expect(windowsCodePageToEncoding(99999)).toBe(null);
52
+ expect(consoleWarnSpy).toHaveBeenCalledWith('Unable to determine encoding for windows code page 99999.');
53
+ });
54
+ it('should handle all Windows-specific code pages', () => {
55
+ expect(windowsCodePageToEncoding(874)).toBe('windows-874');
56
+ expect(windowsCodePageToEncoding(1250)).toBe('windows-1250');
57
+ expect(windowsCodePageToEncoding(1251)).toBe('windows-1251');
58
+ expect(windowsCodePageToEncoding(1253)).toBe('windows-1253');
59
+ expect(windowsCodePageToEncoding(1254)).toBe('windows-1254');
60
+ expect(windowsCodePageToEncoding(1255)).toBe('windows-1255');
61
+ expect(windowsCodePageToEncoding(1256)).toBe('windows-1256');
62
+ expect(windowsCodePageToEncoding(1257)).toBe('windows-1257');
63
+ expect(windowsCodePageToEncoding(1258)).toBe('windows-1258');
64
+ });
65
+ });
66
+ describe('detectEncodingFromBuffer', () => {
67
+ it('should detect encoding using chardet successfully', () => {
68
+ const buffer = Buffer.from('test content', 'utf8');
69
+ mockedChardetDetect.mockReturnValue('UTF-8');
70
+ const result = detectEncodingFromBuffer(buffer);
71
+ expect(result).toBe('utf-8');
72
+ expect(mockedChardetDetect).toHaveBeenCalledWith(buffer);
73
+ });
74
+ it('should handle chardet returning mixed case encoding', () => {
75
+ const buffer = Buffer.from('test content', 'utf8');
76
+ mockedChardetDetect.mockReturnValue('ISO-8859-1');
77
+ const result = detectEncodingFromBuffer(buffer);
78
+ expect(result).toBe('iso-8859-1');
79
+ });
80
+ it('should return null when chardet fails', () => {
81
+ const buffer = Buffer.from('test content', 'utf8');
82
+ mockedChardetDetect.mockImplementation(() => {
83
+ throw new Error('Detection failed');
84
+ });
85
+ const result = detectEncodingFromBuffer(buffer);
86
+ expect(result).toBe(null);
87
+ expect(consoleWarnSpy).toHaveBeenCalledWith('Failed to detect encoding with chardet:', expect.any(Error));
88
+ });
89
+ it('should return null when chardet returns null', () => {
90
+ const buffer = Buffer.from('test content', 'utf8');
91
+ mockedChardetDetect.mockReturnValue(null);
92
+ const result = detectEncodingFromBuffer(buffer);
93
+ expect(result).toBe(null);
94
+ });
95
+ it('should return null when chardet returns non-string', () => {
96
+ const buffer = Buffer.from('test content', 'utf8');
97
+ mockedChardetDetect.mockReturnValue([
98
+ 'utf-8',
99
+ 'iso-8859-1',
100
+ ]);
101
+ const result = detectEncodingFromBuffer(buffer);
102
+ expect(result).toBe(null);
103
+ });
104
+ });
105
+ describe('getSystemEncoding - Windows', () => {
106
+ beforeEach(() => {
107
+ mockedOsPlatform.mockReturnValue('win32');
108
+ });
109
+ it('should parse Windows chcp output correctly', () => {
110
+ mockedExecSync.mockReturnValue('Active code page: 65001');
111
+ const result = getSystemEncoding();
112
+ expect(result).toBe('utf-8');
113
+ expect(mockedExecSync).toHaveBeenCalledWith('chcp', { encoding: 'utf8' });
114
+ });
115
+ it('should handle different chcp output formats', () => {
116
+ mockedExecSync.mockReturnValue('Current code page: 1252');
117
+ const result = getSystemEncoding();
118
+ expect(result).toBe('windows-1252');
119
+ });
120
+ it('should handle chcp output with extra whitespace', () => {
121
+ mockedExecSync.mockReturnValue('Active code page: 437 ');
122
+ const result = getSystemEncoding();
123
+ expect(result).toBe('cp437');
124
+ });
125
+ it('should return null when chcp command fails', () => {
126
+ mockedExecSync.mockImplementation(() => {
127
+ throw new Error('Command failed');
128
+ });
129
+ const result = getSystemEncoding();
130
+ expect(result).toBe(null);
131
+ expect(consoleWarnSpy).toHaveBeenCalledWith(expect.stringContaining("Failed to get Windows code page using 'chcp' command"));
132
+ });
133
+ it('should return null when chcp output cannot be parsed', () => {
134
+ mockedExecSync.mockReturnValue('Unexpected output format');
135
+ const result = getSystemEncoding();
136
+ expect(result).toBe(null);
137
+ expect(consoleWarnSpy).toHaveBeenCalledWith(expect.stringContaining("Failed to get Windows code page using 'chcp' command"));
138
+ });
139
+ it('should return null when code page is not a number', () => {
140
+ mockedExecSync.mockReturnValue('Active code page: abc');
141
+ const result = getSystemEncoding();
142
+ expect(result).toBe(null);
143
+ expect(consoleWarnSpy).toHaveBeenCalledWith(expect.stringContaining("Failed to get Windows code page using 'chcp' command"));
144
+ });
145
+ it('should return null when code page maps to null', () => {
146
+ mockedExecSync.mockReturnValue('Active code page: 99999');
147
+ const result = getSystemEncoding();
148
+ expect(result).toBe(null);
149
+ // Should warn about unknown code page from windowsCodePageToEncoding
150
+ expect(consoleWarnSpy).toHaveBeenCalledWith('Unable to determine encoding for windows code page 99999.');
151
+ });
152
+ });
153
+ describe('getSystemEncoding - Unix-like', () => {
154
+ beforeEach(() => {
155
+ mockedOsPlatform.mockReturnValue('linux');
156
+ });
157
+ it('should parse locale from LC_ALL environment variable', () => {
158
+ process.env.LC_ALL = 'en_US.UTF-8';
159
+ const result = getSystemEncoding();
160
+ expect(result).toBe('utf-8');
161
+ });
162
+ it('should parse locale from LC_CTYPE when LC_ALL is not set', () => {
163
+ process.env.LC_CTYPE = 'fr_FR.ISO-8859-1';
164
+ const result = getSystemEncoding();
165
+ expect(result).toBe('iso-8859-1');
166
+ });
167
+ it('should parse locale from LANG when LC_ALL and LC_CTYPE are not set', () => {
168
+ process.env.LANG = 'de_DE.UTF-8';
169
+ const result = getSystemEncoding();
170
+ expect(result).toBe('utf-8');
171
+ });
172
+ it('should handle locale charmap command when environment variables are empty', () => {
173
+ mockedExecSync.mockReturnValue('UTF-8\n');
174
+ const result = getSystemEncoding();
175
+ expect(result).toBe('utf-8');
176
+ expect(mockedExecSync).toHaveBeenCalledWith('locale charmap', {
177
+ encoding: 'utf8',
178
+ });
179
+ });
180
+ it('should handle locale charmap with mixed case', () => {
181
+ mockedExecSync.mockReturnValue('ISO-8859-1\n');
182
+ const result = getSystemEncoding();
183
+ expect(result).toBe('iso-8859-1');
184
+ });
185
+ it('should return null when locale charmap fails', () => {
186
+ mockedExecSync.mockImplementation(() => {
187
+ throw new Error('Command failed');
188
+ });
189
+ const result = getSystemEncoding();
190
+ expect(result).toBe(null);
191
+ expect(consoleWarnSpy).toHaveBeenCalledWith('Failed to get locale charmap.');
192
+ });
193
+ it('should handle locale without encoding (no dot)', () => {
194
+ process.env.LANG = 'C';
195
+ const result = getSystemEncoding();
196
+ expect(result).toBe('c');
197
+ });
198
+ it('should handle empty locale environment variables', () => {
199
+ process.env.LC_ALL = '';
200
+ process.env.LC_CTYPE = '';
201
+ process.env.LANG = '';
202
+ mockedExecSync.mockReturnValue('UTF-8');
203
+ const result = getSystemEncoding();
204
+ expect(result).toBe('utf-8');
205
+ });
206
+ it('should return locale as-is when locale format has no dot', () => {
207
+ process.env.LANG = 'invalid_format';
208
+ const result = getSystemEncoding();
209
+ expect(result).toBe('invalid_format');
210
+ });
211
+ it('should prioritize LC_ALL over other environment variables', () => {
212
+ process.env.LC_ALL = 'en_US.UTF-8';
213
+ process.env.LC_CTYPE = 'fr_FR.ISO-8859-1';
214
+ process.env.LANG = 'de_DE.CP1252';
215
+ const result = getSystemEncoding();
216
+ expect(result).toBe('utf-8');
217
+ });
218
+ it('should prioritize LC_CTYPE over LANG', () => {
219
+ process.env.LC_CTYPE = 'fr_FR.ISO-8859-1';
220
+ process.env.LANG = 'de_DE.CP1252';
221
+ const result = getSystemEncoding();
222
+ expect(result).toBe('iso-8859-1');
223
+ });
224
+ });
225
+ describe('getEncodingForBuffer', () => {
226
+ beforeEach(() => {
227
+ mockedOsPlatform.mockReturnValue('linux');
228
+ });
229
+ it('should use cached system encoding on subsequent calls', () => {
230
+ process.env.LANG = 'en_US.UTF-8';
231
+ const buffer = Buffer.from('test');
232
+ // First call
233
+ const result1 = getCachedEncodingForBuffer(buffer);
234
+ expect(result1).toBe('utf-8');
235
+ // Change environment (should not affect cached result)
236
+ process.env.LANG = 'fr_FR.ISO-8859-1';
237
+ // Second call should use cached value
238
+ const result2 = getCachedEncodingForBuffer(buffer);
239
+ expect(result2).toBe('utf-8');
240
+ });
241
+ it('should fall back to buffer detection when system encoding fails', () => {
242
+ // No environment variables set
243
+ mockedExecSync.mockImplementation(() => {
244
+ throw new Error('locale command failed');
245
+ });
246
+ const buffer = Buffer.from('test');
247
+ mockedChardetDetect.mockReturnValue('ISO-8859-1');
248
+ const result = getCachedEncodingForBuffer(buffer);
249
+ expect(result).toBe('iso-8859-1');
250
+ expect(mockedChardetDetect).toHaveBeenCalledWith(buffer);
251
+ });
252
+ it('should fall back to utf-8 when both system and buffer detection fail', () => {
253
+ // System encoding fails
254
+ mockedExecSync.mockImplementation(() => {
255
+ throw new Error('locale command failed');
256
+ });
257
+ // Buffer detection fails
258
+ mockedChardetDetect.mockImplementation(() => {
259
+ throw new Error('chardet failed');
260
+ });
261
+ const buffer = Buffer.from('test');
262
+ const result = getCachedEncodingForBuffer(buffer);
263
+ expect(result).toBe('utf-8');
264
+ });
265
+ it('should not cache buffer detection results', () => {
266
+ // System encoding fails initially
267
+ mockedExecSync.mockImplementation(() => {
268
+ throw new Error('locale command failed');
269
+ });
270
+ const buffer1 = Buffer.from('test1');
271
+ const buffer2 = Buffer.from('test2');
272
+ mockedChardetDetect
273
+ .mockReturnValueOnce('ISO-8859-1')
274
+ .mockReturnValueOnce('UTF-16');
275
+ const result1 = getCachedEncodingForBuffer(buffer1);
276
+ const result2 = getCachedEncodingForBuffer(buffer2);
277
+ expect(result1).toBe('iso-8859-1');
278
+ expect(result2).toBe('utf-16');
279
+ expect(mockedChardetDetect).toHaveBeenCalledTimes(2);
280
+ });
281
+ it('should handle Windows system encoding', () => {
282
+ mockedOsPlatform.mockReturnValue('win32');
283
+ mockedExecSync.mockReturnValue('Active code page: 1252');
284
+ const buffer = Buffer.from('test');
285
+ const result = getCachedEncodingForBuffer(buffer);
286
+ expect(result).toBe('windows-1252');
287
+ });
288
+ it('should cache null system encoding result', () => {
289
+ // Reset the cache specifically for this test
290
+ resetEncodingCache();
291
+ // Ensure we're on Unix-like for this test
292
+ mockedOsPlatform.mockReturnValue('linux');
293
+ // System encoding detection returns null
294
+ mockedExecSync.mockImplementation(() => {
295
+ throw new Error('locale command failed');
296
+ });
297
+ const buffer1 = Buffer.from('test1');
298
+ const buffer2 = Buffer.from('test2');
299
+ mockedChardetDetect
300
+ .mockReturnValueOnce('ISO-8859-1')
301
+ .mockReturnValueOnce('UTF-16');
302
+ // Clear any previous calls from beforeEach setup or previous tests
303
+ mockedExecSync.mockClear();
304
+ const result1 = getCachedEncodingForBuffer(buffer1);
305
+ const result2 = getCachedEncodingForBuffer(buffer2);
306
+ // Should call execSync only once due to caching (null result is cached)
307
+ expect(mockedExecSync).toHaveBeenCalledTimes(1);
308
+ expect(result1).toBe('iso-8859-1');
309
+ expect(result2).toBe('utf-16');
310
+ // Call a third time to verify cache is still used
311
+ const buffer3 = Buffer.from('test3');
312
+ mockedChardetDetect.mockReturnValueOnce('UTF-32');
313
+ const result3 = getCachedEncodingForBuffer(buffer3);
314
+ // Still should be only one call to execSync
315
+ expect(mockedExecSync).toHaveBeenCalledTimes(1);
316
+ expect(result3).toBe('utf-32');
317
+ });
318
+ });
319
+ describe('Cross-platform behavior', () => {
320
+ it('should work correctly on macOS', () => {
321
+ mockedOsPlatform.mockReturnValue('darwin');
322
+ process.env.LANG = 'en_US.UTF-8';
323
+ const result = getSystemEncoding();
324
+ expect(result).toBe('utf-8');
325
+ });
326
+ it('should work correctly on other Unix-like systems', () => {
327
+ mockedOsPlatform.mockReturnValue('freebsd');
328
+ process.env.LANG = 'en_US.UTF-8';
329
+ const result = getSystemEncoding();
330
+ expect(result).toBe('utf-8');
331
+ });
332
+ it('should handle unknown platforms as Unix-like', () => {
333
+ mockedOsPlatform.mockReturnValue('unknown');
334
+ process.env.LANG = 'en_US.UTF-8';
335
+ const result = getSystemEncoding();
336
+ expect(result).toBe('utf-8');
337
+ });
338
+ });
339
+ describe('Edge cases and error handling', () => {
340
+ it('should handle empty buffer gracefully', () => {
341
+ mockedOsPlatform.mockReturnValue('linux');
342
+ process.env.LANG = 'en_US.UTF-8';
343
+ const buffer = Buffer.alloc(0);
344
+ const result = getCachedEncodingForBuffer(buffer);
345
+ expect(result).toBe('utf-8');
346
+ });
347
+ it('should handle very large buffers', () => {
348
+ mockedOsPlatform.mockReturnValue('linux');
349
+ process.env.LANG = 'en_US.UTF-8';
350
+ const buffer = Buffer.alloc(1024 * 1024, 'a');
351
+ const result = getCachedEncodingForBuffer(buffer);
352
+ expect(result).toBe('utf-8');
353
+ });
354
+ it('should handle Unicode content', () => {
355
+ mockedOsPlatform.mockReturnValue('linux');
356
+ const unicodeText = '你好世界 🌍 ñoño';
357
+ // System encoding fails
358
+ mockedExecSync.mockImplementation(() => {
359
+ throw new Error('locale command failed');
360
+ });
361
+ mockedChardetDetect.mockReturnValue('UTF-8');
362
+ const buffer = Buffer.from(unicodeText, 'utf8');
363
+ const result = getCachedEncodingForBuffer(buffer);
364
+ expect(result).toBe('utf-8');
365
+ });
366
+ });
367
+ });
368
+ //# sourceMappingURL=systemEncoding.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemEncoding.test.js","sourceRoot":"","sources":["../../../src/utils/systemEncoding.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Check if we should simulate a 429 error for the current request
8
+ */
9
+ export declare function shouldSimulate429(authType?: string): boolean;
10
+ /**
11
+ * Reset the request counter (useful for tests)
12
+ */
13
+ export declare function resetRequestCounter(): void;
14
+ /**
15
+ * Disable 429 simulation after successful fallback
16
+ */
17
+ export declare function disableSimulationAfterFallback(): void;
18
+ /**
19
+ * Create a simulated 429 error response
20
+ */
21
+ export declare function createSimulated429Error(): Error;
22
+ /**
23
+ * Reset simulation state when switching auth methods
24
+ */
25
+ export declare function resetSimulationState(): void;
26
+ /**
27
+ * Enable/disable 429 simulation programmatically (for tests)
28
+ */
29
+ export declare function setSimulate429(enabled: boolean, afterRequests?: number, forAuthType?: string): void;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Testing utilities for simulating 429 errors in unit tests
8
+ */
9
+ let requestCounter = 0;
10
+ let simulate429Enabled = false;
11
+ let simulate429AfterRequests = 0;
12
+ let simulate429ForAuthType;
13
+ let fallbackOccurred = false;
14
+ /**
15
+ * Check if we should simulate a 429 error for the current request
16
+ */
17
+ export function shouldSimulate429(authType) {
18
+ if (!simulate429Enabled || fallbackOccurred) {
19
+ return false;
20
+ }
21
+ // If auth type filter is set, only simulate for that auth type
22
+ if (simulate429ForAuthType && authType !== simulate429ForAuthType) {
23
+ return false;
24
+ }
25
+ requestCounter++;
26
+ // If afterRequests is set, only simulate after that many requests
27
+ if (simulate429AfterRequests > 0) {
28
+ return requestCounter > simulate429AfterRequests;
29
+ }
30
+ // Otherwise, simulate for every request
31
+ return true;
32
+ }
33
+ /**
34
+ * Reset the request counter (useful for tests)
35
+ */
36
+ export function resetRequestCounter() {
37
+ requestCounter = 0;
38
+ }
39
+ /**
40
+ * Disable 429 simulation after successful fallback
41
+ */
42
+ export function disableSimulationAfterFallback() {
43
+ fallbackOccurred = true;
44
+ }
45
+ /**
46
+ * Create a simulated 429 error response
47
+ */
48
+ export function createSimulated429Error() {
49
+ const error = new Error('Rate limit exceeded (simulated)');
50
+ error.status = 429;
51
+ return error;
52
+ }
53
+ /**
54
+ * Reset simulation state when switching auth methods
55
+ */
56
+ export function resetSimulationState() {
57
+ fallbackOccurred = false;
58
+ resetRequestCounter();
59
+ }
60
+ /**
61
+ * Enable/disable 429 simulation programmatically (for tests)
62
+ */
63
+ export function setSimulate429(enabled, afterRequests = 0, forAuthType) {
64
+ simulate429Enabled = enabled;
65
+ simulate429AfterRequests = afterRequests;
66
+ simulate429ForAuthType = forAuthType;
67
+ fallbackOccurred = false; // Reset fallback state when simulation is re-enabled
68
+ resetRequestCounter();
69
+ }
70
+ //# sourceMappingURL=testUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../../src/utils/testUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AAEH,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,IAAI,wBAAwB,GAAG,CAAC,CAAC;AACjC,IAAI,sBAA0C,CAAC;AAC/C,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,IAAI,CAAC,kBAAkB,IAAI,gBAAgB,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+DAA+D;IAC/D,IAAI,sBAAsB,IAAI,QAAQ,KAAK,sBAAsB,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc,EAAE,CAAC;IAEjB,kEAAkE;IAClE,IAAI,wBAAwB,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,cAAc,GAAG,wBAAwB,CAAC;IACnD,CAAC;IAED,wCAAwC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,cAAc,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC5C,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,iCAAiC,CAExD,CAAC;IACF,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,gBAAgB,GAAG,KAAK,CAAC;IACzB,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgB,EAChB,aAAa,GAAG,CAAC,EACjB,WAAoB;IAEpB,kBAAkB,GAAG,OAAO,CAAC;IAC7B,wBAAwB,GAAG,aAAa,CAAC;IACzC,sBAAsB,GAAG,WAAW,CAAC;IACrC,gBAAgB,GAAG,KAAK,CAAC,CAAC,qDAAqD;IAC/E,mBAAmB,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare function cacheGoogleAccount(email: string): Promise<void>;
7
+ export declare function getCachedGoogleAccount(): string | null;
8
+ export declare function getLifetimeGoogleAccounts(): number;
9
+ export declare function clearCachedGoogleAccount(): Promise<void>;
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import path from 'node:path';
7
+ import { promises as fsp, existsSync, readFileSync } from 'node:fs';
8
+ import * as os from 'os';
9
+ import { GEMINI_DIR, GOOGLE_ACCOUNTS_FILENAME } from './paths.js';
10
+ function getGoogleAccountsCachePath() {
11
+ return path.join(os.homedir(), GEMINI_DIR, GOOGLE_ACCOUNTS_FILENAME);
12
+ }
13
+ async function readAccounts(filePath) {
14
+ try {
15
+ const content = await fsp.readFile(filePath, 'utf-8');
16
+ if (!content.trim()) {
17
+ return { active: null, old: [] };
18
+ }
19
+ return JSON.parse(content);
20
+ }
21
+ catch (error) {
22
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
23
+ // File doesn't exist, which is fine.
24
+ return { active: null, old: [] };
25
+ }
26
+ // File is corrupted or not valid JSON, start with a fresh object.
27
+ console.debug('Could not parse accounts file, starting fresh.', error);
28
+ return { active: null, old: [] };
29
+ }
30
+ }
31
+ export async function cacheGoogleAccount(email) {
32
+ const filePath = getGoogleAccountsCachePath();
33
+ await fsp.mkdir(path.dirname(filePath), { recursive: true });
34
+ const accounts = await readAccounts(filePath);
35
+ if (accounts.active && accounts.active !== email) {
36
+ if (!accounts.old.includes(accounts.active)) {
37
+ accounts.old.push(accounts.active);
38
+ }
39
+ }
40
+ // If the new email was in the old list, remove it
41
+ accounts.old = accounts.old.filter((oldEmail) => oldEmail !== email);
42
+ accounts.active = email;
43
+ await fsp.writeFile(filePath, JSON.stringify(accounts, null, 2), 'utf-8');
44
+ }
45
+ export function getCachedGoogleAccount() {
46
+ try {
47
+ const filePath = getGoogleAccountsCachePath();
48
+ if (existsSync(filePath)) {
49
+ const content = readFileSync(filePath, 'utf-8').trim();
50
+ if (!content) {
51
+ return null;
52
+ }
53
+ const accounts = JSON.parse(content);
54
+ return accounts.active;
55
+ }
56
+ return null;
57
+ }
58
+ catch (error) {
59
+ console.debug('Error reading cached Google Account:', error);
60
+ return null;
61
+ }
62
+ }
63
+ export function getLifetimeGoogleAccounts() {
64
+ try {
65
+ const filePath = getGoogleAccountsCachePath();
66
+ if (!existsSync(filePath)) {
67
+ return 0;
68
+ }
69
+ const content = readFileSync(filePath, 'utf-8').trim();
70
+ if (!content) {
71
+ return 0;
72
+ }
73
+ const accounts = JSON.parse(content);
74
+ let count = accounts.old.length;
75
+ if (accounts.active) {
76
+ count++;
77
+ }
78
+ return count;
79
+ }
80
+ catch (error) {
81
+ console.debug('Error reading lifetime Google Accounts:', error);
82
+ return 0;
83
+ }
84
+ }
85
+ export async function clearCachedGoogleAccount() {
86
+ const filePath = getGoogleAccountsCachePath();
87
+ if (!existsSync(filePath)) {
88
+ return;
89
+ }
90
+ const accounts = await readAccounts(filePath);
91
+ if (accounts.active) {
92
+ if (!accounts.old.includes(accounts.active)) {
93
+ accounts.old.push(accounts.active);
94
+ }
95
+ accounts.active = null;
96
+ }
97
+ await fsp.writeFile(filePath, JSON.stringify(accounts, null, 2), 'utf-8');
98
+ }
99
+ //# sourceMappingURL=user_account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user_account.js","sourceRoot":"","sources":["../../../src/utils/user_account.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAOlE,SAAS,0BAA0B;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,qCAAqC;YACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;QACD,kEAAkE;QAClE,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;QACvE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAa;IACpD,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAC;IAC9C,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAErE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,QAAQ,GAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO,QAAQ,CAAC,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,QAAQ,GAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QAChC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,EAAE,CAAC;QACV,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};