@google/gemini-cli-core 0.0.8999999 → 0.0.77777773

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 (362) hide show
  1. package/README.md +105 -62
  2. package/dist/index.d.ts +5 -2
  3. package/dist/index.js +4 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/agents/codebase-investigator.d.ts +46 -0
  6. package/dist/src/agents/codebase-investigator.js +136 -0
  7. package/dist/src/agents/codebase-investigator.js.map +1 -0
  8. package/dist/src/agents/executor.d.ts +92 -0
  9. package/dist/src/agents/executor.js +579 -0
  10. package/dist/src/agents/executor.js.map +1 -0
  11. package/dist/src/agents/executor.test.d.ts +6 -0
  12. package/dist/src/agents/executor.test.js +595 -0
  13. package/dist/src/agents/executor.test.js.map +1 -0
  14. package/dist/src/agents/invocation.d.ts +46 -0
  15. package/dist/src/agents/invocation.js +102 -0
  16. package/dist/src/agents/invocation.js.map +1 -0
  17. package/dist/src/agents/invocation.test.d.ts +6 -0
  18. package/dist/src/agents/invocation.test.js +215 -0
  19. package/dist/src/agents/invocation.test.js.map +1 -0
  20. package/dist/src/agents/registry.d.ts +36 -0
  21. package/dist/src/agents/registry.js +60 -0
  22. package/dist/src/agents/registry.js.map +1 -0
  23. package/dist/src/agents/registry.test.d.ts +6 -0
  24. package/dist/src/agents/registry.test.js +146 -0
  25. package/dist/src/agents/registry.test.js.map +1 -0
  26. package/dist/src/agents/schema-utils.d.ts +39 -0
  27. package/dist/src/agents/schema-utils.js +57 -0
  28. package/dist/src/agents/schema-utils.js.map +1 -0
  29. package/dist/src/agents/schema-utils.test.d.ts +6 -0
  30. package/dist/src/agents/schema-utils.test.js +144 -0
  31. package/dist/src/agents/schema-utils.test.js.map +1 -0
  32. package/dist/src/agents/subagent-tool-wrapper.d.ts +38 -0
  33. package/dist/src/agents/subagent-tool-wrapper.js +48 -0
  34. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
  35. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +6 -0
  36. package/dist/src/agents/subagent-tool-wrapper.test.js +112 -0
  37. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
  38. package/dist/src/agents/types.d.ts +145 -0
  39. package/dist/src/agents/types.js +18 -0
  40. package/dist/src/agents/types.js.map +1 -0
  41. package/dist/src/agents/utils.d.ts +15 -0
  42. package/dist/src/agents/utils.js +29 -0
  43. package/dist/src/agents/utils.js.map +1 -0
  44. package/dist/src/agents/utils.test.d.ts +6 -0
  45. package/dist/src/agents/utils.test.js +87 -0
  46. package/dist/src/agents/utils.test.js.map +1 -0
  47. package/dist/src/code_assist/oauth-credential-storage.js +1 -1
  48. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  49. package/dist/src/code_assist/oauth2.test.js +14 -13
  50. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  51. package/dist/src/code_assist/setup.js +4 -2
  52. package/dist/src/code_assist/setup.js.map +1 -1
  53. package/dist/src/config/config.d.ts +46 -15
  54. package/dist/src/config/config.js +106 -27
  55. package/dist/src/config/config.js.map +1 -1
  56. package/dist/src/config/config.test.js +88 -3
  57. package/dist/src/config/config.test.js.map +1 -1
  58. package/dist/src/config/constants.d.ts +11 -0
  59. package/dist/src/config/constants.js +16 -0
  60. package/dist/src/config/constants.js.map +1 -0
  61. package/dist/src/config/storage.d.ts +0 -1
  62. package/dist/src/config/storage.js +2 -2
  63. package/dist/src/config/storage.js.map +1 -1
  64. package/dist/src/config/storage.test.js +7 -6
  65. package/dist/src/config/storage.test.js.map +1 -1
  66. package/dist/src/core/baseLlmClient.d.ts +4 -0
  67. package/dist/src/core/baseLlmClient.js +24 -23
  68. package/dist/src/core/baseLlmClient.js.map +1 -1
  69. package/dist/src/core/baseLlmClient.test.js +76 -13
  70. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  71. package/dist/src/core/client.d.ts +3 -1
  72. package/dist/src/core/client.js +68 -47
  73. package/dist/src/core/client.js.map +1 -1
  74. package/dist/src/core/client.test.js +385 -134
  75. package/dist/src/core/client.test.js.map +1 -1
  76. package/dist/src/core/contentGenerator.js +3 -1
  77. package/dist/src/core/contentGenerator.js.map +1 -1
  78. package/dist/src/core/coreToolScheduler.js +24 -15
  79. package/dist/src/core/coreToolScheduler.js.map +1 -1
  80. package/dist/src/core/coreToolScheduler.test.js +359 -23
  81. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  82. package/dist/src/core/geminiChat.d.ts +11 -14
  83. package/dist/src/core/geminiChat.js +75 -124
  84. package/dist/src/core/geminiChat.js.map +1 -1
  85. package/dist/src/core/geminiChat.test.js +260 -239
  86. package/dist/src/core/geminiChat.test.js.map +1 -1
  87. package/dist/src/core/logger.test.js +2 -2
  88. package/dist/src/core/logger.test.js.map +1 -1
  89. package/dist/src/core/nonInteractiveToolExecutor.test.js +11 -11
  90. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  91. package/dist/src/core/prompts.d.ts +2 -1
  92. package/dist/src/core/prompts.js +93 -18
  93. package/dist/src/core/prompts.js.map +1 -1
  94. package/dist/src/core/prompts.test.js +78 -29
  95. package/dist/src/core/prompts.test.js.map +1 -1
  96. package/dist/src/core/turn.d.ts +15 -6
  97. package/dist/src/core/turn.js +14 -13
  98. package/dist/src/core/turn.js.map +1 -1
  99. package/dist/src/core/turn.test.js +14 -2
  100. package/dist/src/core/turn.test.js.map +1 -1
  101. package/dist/src/generated/git-commit.d.ts +2 -2
  102. package/dist/src/generated/git-commit.js +2 -2
  103. package/dist/src/generated/git-commit.js.map +1 -1
  104. package/dist/src/ide/detect-ide.d.ts +5 -2
  105. package/dist/src/ide/detect-ide.js +11 -2
  106. package/dist/src/ide/detect-ide.js.map +1 -1
  107. package/dist/src/ide/detect-ide.test.js +34 -0
  108. package/dist/src/ide/detect-ide.test.js.map +1 -1
  109. package/dist/src/ide/ide-client.d.ts +2 -1
  110. package/dist/src/ide/ide-client.js +25 -20
  111. package/dist/src/ide/ide-client.js.map +1 -1
  112. package/dist/src/ide/ide-client.test.js +6 -6
  113. package/dist/src/ide/ide-client.test.js.map +1 -1
  114. package/dist/src/ide/ide-installer.js +1 -1
  115. package/dist/src/ide/ide-installer.js.map +1 -1
  116. package/dist/src/ide/ide-installer.test.js +13 -1
  117. package/dist/src/ide/ide-installer.test.js.map +1 -1
  118. package/dist/src/index.d.ts +3 -0
  119. package/dist/src/index.js +3 -0
  120. package/dist/src/index.js.map +1 -1
  121. package/dist/src/mcp/oauth-provider.d.ts +1 -0
  122. package/dist/src/mcp/oauth-provider.js +19 -14
  123. package/dist/src/mcp/oauth-provider.js.map +1 -1
  124. package/dist/src/mcp/oauth-provider.test.js +137 -1
  125. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  126. package/dist/src/mcp/oauth-utils.js +1 -0
  127. package/dist/src/mcp/oauth-utils.js.map +1 -1
  128. package/dist/src/mcp/sa-impersonation-provider.d.ts +33 -0
  129. package/dist/src/mcp/sa-impersonation-provider.js +130 -0
  130. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  131. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
  132. package/dist/src/mcp/sa-impersonation-provider.test.js +117 -0
  133. package/dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
  134. package/dist/src/mcp/token-storage/file-token-storage.js +2 -1
  135. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
  136. package/dist/src/mcp/token-storage/file-token-storage.test.js +4 -3
  137. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -1
  138. package/dist/src/routing/strategies/compositeStrategy.js +4 -3
  139. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  140. package/dist/src/services/chatRecordingService.d.ts +3 -2
  141. package/dist/src/services/chatRecordingService.js +3 -2
  142. package/dist/src/services/chatRecordingService.js.map +1 -1
  143. package/dist/src/services/fileSystemService.d.ts +9 -0
  144. package/dist/src/services/fileSystemService.js +11 -0
  145. package/dist/src/services/fileSystemService.js.map +1 -1
  146. package/dist/src/services/shellExecutionService.d.ts +3 -0
  147. package/dist/src/services/shellExecutionService.js +165 -49
  148. package/dist/src/services/shellExecutionService.js.map +1 -1
  149. package/dist/src/services/shellExecutionService.test.js +74 -5
  150. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  151. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +18 -2
  152. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +156 -11
  153. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  154. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +1 -0
  155. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +226 -1
  156. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  157. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +19 -3
  158. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +44 -5
  159. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  160. package/dist/src/telemetry/config.d.ts +31 -0
  161. package/dist/src/telemetry/config.js +76 -0
  162. package/dist/src/telemetry/config.js.map +1 -0
  163. package/dist/src/telemetry/config.test.d.ts +6 -0
  164. package/dist/src/telemetry/config.test.js +124 -0
  165. package/dist/src/telemetry/config.test.js.map +1 -0
  166. package/dist/src/telemetry/constants.d.ts +0 -34
  167. package/dist/src/telemetry/constants.js +0 -34
  168. package/dist/src/telemetry/constants.js.map +1 -1
  169. package/dist/src/telemetry/index.d.ts +6 -2
  170. package/dist/src/telemetry/index.js +17 -2
  171. package/dist/src/telemetry/index.js.map +1 -1
  172. package/dist/src/telemetry/loggers.d.ts +10 -2
  173. package/dist/src/telemetry/loggers.js +206 -273
  174. package/dist/src/telemetry/loggers.js.map +1 -1
  175. package/dist/src/telemetry/loggers.test.circular.js +3 -3
  176. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  177. package/dist/src/telemetry/loggers.test.js +260 -13
  178. package/dist/src/telemetry/loggers.test.js.map +1 -1
  179. package/dist/src/telemetry/memory-monitor.d.ts +149 -0
  180. package/dist/src/telemetry/memory-monitor.js +335 -0
  181. package/dist/src/telemetry/memory-monitor.js.map +1 -0
  182. package/dist/src/telemetry/memory-monitor.test.d.ts +6 -0
  183. package/dist/src/telemetry/memory-monitor.test.js +472 -0
  184. package/dist/src/telemetry/memory-monitor.test.js.map +1 -0
  185. package/dist/src/telemetry/metrics.d.ts +436 -11
  186. package/dist/src/telemetry/metrics.js +600 -110
  187. package/dist/src/telemetry/metrics.js.map +1 -1
  188. package/dist/src/telemetry/metrics.test.js +898 -16
  189. package/dist/src/telemetry/metrics.test.js.map +1 -1
  190. package/dist/src/telemetry/sdk.js +4 -1
  191. package/dist/src/telemetry/sdk.js.map +1 -1
  192. package/dist/src/telemetry/sdk.test.js +13 -0
  193. package/dist/src/telemetry/sdk.test.js.map +1 -1
  194. package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
  195. package/dist/src/telemetry/telemetryAttributes.js +18 -0
  196. package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
  197. package/dist/src/telemetry/types.d.ts +167 -5
  198. package/dist/src/telemetry/types.js +692 -35
  199. package/dist/src/telemetry/types.js.map +1 -1
  200. package/dist/src/telemetry/uiTelemetry.d.ts +1 -1
  201. package/dist/src/telemetry/uiTelemetry.js +1 -1
  202. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  203. package/dist/src/telemetry/uiTelemetry.test.js +3 -3
  204. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  205. package/dist/src/test-utils/mock-tool.d.ts +28 -3
  206. package/dist/src/test-utils/mock-tool.js +71 -1
  207. package/dist/src/test-utils/mock-tool.js.map +1 -1
  208. package/dist/src/tools/edit.js +6 -0
  209. package/dist/src/tools/edit.js.map +1 -1
  210. package/dist/src/tools/edit.test.js +41 -0
  211. package/dist/src/tools/edit.test.js.map +1 -1
  212. package/dist/src/tools/glob.js +4 -2
  213. package/dist/src/tools/glob.js.map +1 -1
  214. package/dist/src/tools/ls.js +1 -1
  215. package/dist/src/tools/ls.js.map +1 -1
  216. package/dist/src/tools/mcp-client.d.ts +5 -14
  217. package/dist/src/tools/mcp-client.js +50 -97
  218. package/dist/src/tools/mcp-client.js.map +1 -1
  219. package/dist/src/tools/mcp-client.test.js +175 -157
  220. package/dist/src/tools/mcp-client.test.js.map +1 -1
  221. package/dist/src/tools/mcp-tool.js +30 -2
  222. package/dist/src/tools/mcp-tool.js.map +1 -1
  223. package/dist/src/tools/mcp-tool.test.js +117 -0
  224. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  225. package/dist/src/tools/memoryTool.d.ts +1 -1
  226. package/dist/src/tools/memoryTool.js +1 -2
  227. package/dist/src/tools/memoryTool.js.map +1 -1
  228. package/dist/src/tools/memoryTool.test.js +9 -8
  229. package/dist/src/tools/memoryTool.test.js.map +1 -1
  230. package/dist/src/tools/message-bus-integration.test.d.ts +6 -0
  231. package/dist/src/tools/message-bus-integration.test.js +183 -0
  232. package/dist/src/tools/message-bus-integration.test.js.map +1 -0
  233. package/dist/src/tools/shell.js +60 -4
  234. package/dist/src/tools/shell.js.map +1 -1
  235. package/dist/src/tools/shell.test.js +2 -1
  236. package/dist/src/tools/shell.test.js.map +1 -1
  237. package/dist/src/tools/smart-edit.d.ts +1 -1
  238. package/dist/src/tools/smart-edit.js +122 -12
  239. package/dist/src/tools/smart-edit.js.map +1 -1
  240. package/dist/src/tools/smart-edit.test.js +136 -29
  241. package/dist/src/tools/smart-edit.test.js.map +1 -1
  242. package/dist/src/tools/tool-error.d.ts +22 -0
  243. package/dist/src/tools/tool-error.js +28 -0
  244. package/dist/src/tools/tool-error.js.map +1 -1
  245. package/dist/src/tools/tool-names.d.ts +9 -0
  246. package/dist/src/tools/tool-names.js +18 -0
  247. package/dist/src/tools/tool-names.js.map +1 -0
  248. package/dist/src/tools/tool-registry.test.js +10 -10
  249. package/dist/src/tools/tool-registry.test.js.map +1 -1
  250. package/dist/src/tools/tools.d.ts +11 -3
  251. package/dist/src/tools/tools.js +94 -3
  252. package/dist/src/tools/tools.js.map +1 -1
  253. package/dist/src/tools/web-fetch.js +3 -0
  254. package/dist/src/tools/web-fetch.js.map +1 -1
  255. package/dist/src/tools/web-fetch.test.js +44 -0
  256. package/dist/src/tools/web-fetch.test.js.map +1 -1
  257. package/dist/src/tools/web-search.js +2 -1
  258. package/dist/src/tools/web-search.js.map +1 -1
  259. package/dist/src/tools/write-file.js +2 -1
  260. package/dist/src/tools/write-file.js.map +1 -1
  261. package/dist/src/tools/write-todos.d.ts +25 -0
  262. package/dist/src/tools/write-todos.js +151 -0
  263. package/dist/src/tools/write-todos.js.map +1 -0
  264. package/dist/src/tools/write-todos.test.d.ts +6 -0
  265. package/dist/src/tools/write-todos.test.js +89 -0
  266. package/dist/src/tools/write-todos.test.js.map +1 -0
  267. package/dist/src/utils/bfsFileSearch.d.ts +1 -1
  268. package/dist/src/utils/editCorrector.js +2 -2
  269. package/dist/src/utils/editCorrector.js.map +1 -1
  270. package/dist/src/utils/editor.js +1 -0
  271. package/dist/src/utils/editor.js.map +1 -1
  272. package/dist/src/utils/editor.test.js +1 -0
  273. package/dist/src/utils/editor.test.js.map +1 -1
  274. package/dist/src/utils/errorParsing.d.ts +1 -1
  275. package/dist/src/utils/errorParsing.js +5 -33
  276. package/dist/src/utils/errorParsing.js.map +1 -1
  277. package/dist/src/utils/errorParsing.test.js +0 -88
  278. package/dist/src/utils/errorParsing.test.js.map +1 -1
  279. package/dist/src/utils/flashFallback.test.js +26 -45
  280. package/dist/src/utils/flashFallback.test.js.map +1 -1
  281. package/dist/src/utils/formatters.d.ts +1 -0
  282. package/dist/src/utils/formatters.js +2 -1
  283. package/dist/src/utils/formatters.js.map +1 -1
  284. package/dist/src/utils/formatters.test.d.ts +6 -0
  285. package/dist/src/utils/formatters.test.js +26 -0
  286. package/dist/src/utils/formatters.test.js.map +1 -0
  287. package/dist/src/utils/getFolderStructure.d.ts +1 -1
  288. package/dist/src/utils/getFolderStructure.js +1 -1
  289. package/dist/src/utils/getFolderStructure.js.map +1 -1
  290. package/dist/src/utils/getFolderStructure.test.js +7 -6
  291. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  292. package/dist/src/utils/googleErrors.d.ts +104 -0
  293. package/dist/src/utils/googleErrors.js +108 -0
  294. package/dist/src/utils/googleErrors.js.map +1 -0
  295. package/dist/src/utils/googleErrors.test.d.ts +6 -0
  296. package/dist/src/utils/googleErrors.test.js +212 -0
  297. package/dist/src/utils/googleErrors.test.js.map +1 -0
  298. package/dist/src/utils/googleQuotaErrors.d.ts +35 -0
  299. package/dist/src/utils/googleQuotaErrors.js +108 -0
  300. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  301. package/dist/src/utils/googleQuotaErrors.test.d.ts +6 -0
  302. package/dist/src/utils/googleQuotaErrors.test.js +189 -0
  303. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -0
  304. package/dist/src/utils/installationManager.test.js +2 -1
  305. package/dist/src/utils/installationManager.test.js.map +1 -1
  306. package/dist/src/utils/llm-edit-fixer.js +14 -4
  307. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  308. package/dist/src/utils/llm-edit-fixer.test.js +81 -0
  309. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
  310. package/dist/src/utils/memoryDiscovery.d.ts +2 -1
  311. package/dist/src/utils/memoryDiscovery.js +3 -2
  312. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  313. package/dist/src/utils/memoryDiscovery.test.js +99 -21
  314. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  315. package/dist/src/utils/memoryImportProcessor.js +13 -20
  316. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  317. package/dist/src/utils/memoryImportProcessor.test.js +14 -0
  318. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  319. package/dist/src/utils/pathCorrector.d.ts +25 -0
  320. package/dist/src/utils/pathCorrector.js +33 -0
  321. package/dist/src/utils/pathCorrector.js.map +1 -0
  322. package/dist/src/utils/pathCorrector.test.d.ts +6 -0
  323. package/dist/src/utils/pathCorrector.test.js +83 -0
  324. package/dist/src/utils/pathCorrector.test.js.map +1 -0
  325. package/dist/src/utils/quotaErrorDetection.d.ts +0 -2
  326. package/dist/src/utils/quotaErrorDetection.js +0 -46
  327. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  328. package/dist/src/utils/retry.d.ts +3 -1
  329. package/dist/src/utils/retry.js +60 -162
  330. package/dist/src/utils/retry.js.map +1 -1
  331. package/dist/src/utils/retry.test.js +105 -135
  332. package/dist/src/utils/retry.test.js.map +1 -1
  333. package/dist/src/utils/schemaValidator.js +11 -1
  334. package/dist/src/utils/schemaValidator.js.map +1 -1
  335. package/dist/src/utils/schemaValidator.test.d.ts +6 -0
  336. package/dist/src/utils/schemaValidator.test.js +113 -0
  337. package/dist/src/utils/schemaValidator.test.js.map +1 -0
  338. package/dist/src/utils/shell-utils.d.ts +1 -0
  339. package/dist/src/utils/shell-utils.js +6 -2
  340. package/dist/src/utils/shell-utils.js.map +1 -1
  341. package/dist/src/utils/shell-utils.test.js +5 -0
  342. package/dist/src/utils/shell-utils.test.js.map +1 -1
  343. package/dist/src/utils/terminalSerializer.d.ts +1 -4
  344. package/dist/src/utils/terminalSerializer.js +3 -3
  345. package/dist/src/utils/terminalSerializer.js.map +1 -1
  346. package/dist/src/utils/thoughtUtils.d.ts +21 -0
  347. package/dist/src/utils/thoughtUtils.js +39 -0
  348. package/dist/src/utils/thoughtUtils.js.map +1 -0
  349. package/dist/src/utils/thoughtUtils.test.d.ts +6 -0
  350. package/dist/src/utils/thoughtUtils.test.js +78 -0
  351. package/dist/src/utils/thoughtUtils.test.js.map +1 -0
  352. package/dist/src/utils/tool-utils.js +2 -2
  353. package/dist/src/utils/tool-utils.js.map +1 -1
  354. package/dist/src/utils/tool-utils.test.js +8 -0
  355. package/dist/src/utils/tool-utils.test.js.map +1 -1
  356. package/dist/src/utils/userAccountManager.test.js +2 -1
  357. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  358. package/dist/tsconfig.tsbuildinfo +1 -1
  359. package/package.json +2 -2
  360. package/dist/src/test-utils/tools.d.ts +0 -45
  361. package/dist/src/test-utils/tools.js +0 -105
  362. package/dist/src/test-utils/tools.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathCorrector.js","sourceRoot":"","sources":["../../../src/utils/pathCorrector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAwBlC,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,MAAc;IAEd,kEAAkE;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;IACtD,CAAC;IAED,wFAAwF;IACxF,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE/D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,uBAAuB,QAAQ,6BAA6B;SACpE,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kBAAkB,QAAQ,4FAA4F,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACrJ,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC"}
@@ -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,83 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import * as os from 'node:os';
10
+ import { createMockWorkspaceContext } from '../test-utils/mockWorkspaceContext.js';
11
+ import { StandardFileSystemService } from '../services/fileSystemService.js';
12
+ import { correctPath } from './pathCorrector.js';
13
+ describe('pathCorrector', () => {
14
+ let tempDir;
15
+ let rootDir;
16
+ let otherWorkspaceDir;
17
+ let mockConfig;
18
+ beforeEach(() => {
19
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'path-corrector-test-'));
20
+ rootDir = path.join(tempDir, 'root');
21
+ otherWorkspaceDir = path.join(tempDir, 'other');
22
+ fs.mkdirSync(rootDir, { recursive: true });
23
+ fs.mkdirSync(otherWorkspaceDir, { recursive: true });
24
+ mockConfig = {
25
+ getTargetDir: () => rootDir,
26
+ getWorkspaceContext: () => createMockWorkspaceContext(rootDir, [otherWorkspaceDir]),
27
+ getFileSystemService: () => new StandardFileSystemService(),
28
+ };
29
+ });
30
+ afterEach(() => {
31
+ fs.rmSync(tempDir, { recursive: true, force: true });
32
+ vi.restoreAllMocks();
33
+ });
34
+ it('should correct a relative path if it is unambiguous in the target dir', () => {
35
+ const testFile = 'unique.txt';
36
+ fs.writeFileSync(path.join(rootDir, testFile), 'content');
37
+ const result = correctPath(testFile, mockConfig);
38
+ expect(result.success).toBe(true);
39
+ if (result.success) {
40
+ expect(result.correctedPath).toBe(path.join(rootDir, testFile));
41
+ }
42
+ });
43
+ it('should correct a partial relative path if it is unambiguous in another workspace dir', () => {
44
+ const subDir = path.join(otherWorkspaceDir, 'sub');
45
+ fs.mkdirSync(subDir);
46
+ const testFile = 'file.txt';
47
+ const fullPath = path.join(subDir, testFile);
48
+ fs.writeFileSync(fullPath, 'content');
49
+ const result = correctPath(testFile, mockConfig);
50
+ expect(result.success).toBe(true);
51
+ if (result.success) {
52
+ expect(result.correctedPath).toBe(fullPath);
53
+ }
54
+ });
55
+ it('should return an error for a relative path that does not exist', () => {
56
+ const result = correctPath('nonexistent.txt', mockConfig);
57
+ expect(result.success).toBe(false);
58
+ if (!result.success) {
59
+ expect(result.error).toMatch(/File not found for 'nonexistent.txt' and path is not absolute./);
60
+ }
61
+ else {
62
+ expect.fail('Expected path correction to fail.');
63
+ }
64
+ });
65
+ it('should return an error for an ambiguous path', () => {
66
+ const ambiguousFile = 'component.ts';
67
+ const subDir1 = path.join(rootDir, 'module1');
68
+ const subDir2 = path.join(otherWorkspaceDir, 'module2');
69
+ fs.mkdirSync(subDir1, { recursive: true });
70
+ fs.mkdirSync(subDir2, { recursive: true });
71
+ fs.writeFileSync(path.join(subDir1, ambiguousFile), 'content 1');
72
+ fs.writeFileSync(path.join(subDir2, ambiguousFile), 'content 2');
73
+ const result = correctPath(ambiguousFile, mockConfig);
74
+ expect(result.success).toBe(false);
75
+ if (!result.success) {
76
+ expect(result.error).toMatch(/The file path 'component.ts' is ambiguous and matches multiple files./);
77
+ }
78
+ else {
79
+ expect.fail('Expected path correction to fail.');
80
+ }
81
+ });
82
+ });
83
+ //# sourceMappingURL=pathCorrector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathCorrector.test.js","sourceRoot":"","sources":["../../../src/utils/pathCorrector.test.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,3 @@ export interface ApiError {
14
14
  }
15
15
  export declare function isApiError(error: unknown): error is ApiError;
16
16
  export declare function isStructuredError(error: unknown): error is StructuredError;
17
- export declare function isProQuotaExceededError(error: unknown): boolean;
18
- export declare function isGenericQuotaExceededError(error: unknown): boolean;
@@ -16,50 +16,4 @@ export function isStructuredError(error) {
16
16
  'message' in error &&
17
17
  typeof error.message === 'string');
18
18
  }
19
- export function isProQuotaExceededError(error) {
20
- // Check for Pro quota exceeded errors by looking for the specific pattern
21
- // This will match patterns like:
22
- // - "Quota exceeded for quota metric 'Gemini 2.5 Pro Requests'"
23
- // - "Quota exceeded for quota metric 'Gemini 2.5-preview Pro Requests'"
24
- // We use string methods instead of regex to avoid ReDoS vulnerabilities
25
- const checkMessage = (message) => message.includes("Quota exceeded for quota metric 'Gemini") &&
26
- message.includes("Pro Requests'");
27
- if (typeof error === 'string') {
28
- return checkMessage(error);
29
- }
30
- if (isStructuredError(error)) {
31
- return checkMessage(error.message);
32
- }
33
- if (isApiError(error)) {
34
- return checkMessage(error.error.message);
35
- }
36
- // Check if it's a Gaxios error with response data
37
- if (error && typeof error === 'object' && 'response' in error) {
38
- const gaxiosError = error;
39
- if (gaxiosError.response && gaxiosError.response.data) {
40
- if (typeof gaxiosError.response.data === 'string') {
41
- return checkMessage(gaxiosError.response.data);
42
- }
43
- if (typeof gaxiosError.response.data === 'object' &&
44
- gaxiosError.response.data !== null &&
45
- 'error' in gaxiosError.response.data) {
46
- const errorData = gaxiosError.response.data;
47
- return checkMessage(errorData.error?.message || '');
48
- }
49
- }
50
- }
51
- return false;
52
- }
53
- export function isGenericQuotaExceededError(error) {
54
- if (typeof error === 'string') {
55
- return error.includes('Quota exceeded for quota metric');
56
- }
57
- if (isStructuredError(error)) {
58
- return error.message.includes('Quota exceeded for quota metric');
59
- }
60
- if (isApiError(error)) {
61
- return error.error.message.includes('Quota exceeded for quota metric');
62
- }
63
- return false;
64
- }
65
19
  //# sourceMappingURL=quotaErrorDetection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quotaErrorDetection.js","sourceRoot":"","sources":["../../../src/utils/quotaErrorDetection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ;QAC7C,SAAS,IAAK,KAAkB,CAAC,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAyB,CAAC,OAAO,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,0EAA0E;IAC1E,iCAAiC;IACjC,gEAAgE;IAChE,wEAAwE;IACxE,wEAAwE;IAExE,MAAM,YAAY,GAAG,CAAC,OAAe,EAAW,EAAE,CAChD,OAAO,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,kDAAkD;IAClD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,KAInB,CAAC;QACF,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,IACE,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBAC7C,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI;gBAClC,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EACpC,CAAC;gBACD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,IAEtC,CAAC;gBACF,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"quotaErrorDetection.js","sourceRoot":"","sources":["../../../src/utils/quotaErrorDetection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ;QAC7C,SAAS,IAAK,KAAkB,CAAC,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAyB,CAAC,OAAO,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import type { GenerateContentResponse } from '@google/genai';
6
7
  export interface HttpError extends Error {
7
8
  status?: number;
8
9
  }
@@ -10,7 +11,8 @@ export interface RetryOptions {
10
11
  maxAttempts: number;
11
12
  initialDelayMs: number;
12
13
  maxDelayMs: number;
13
- shouldRetry: (error: Error) => boolean;
14
+ shouldRetryOnError: (error: Error) => boolean;
15
+ shouldRetryOnContent?: (content: GenerateContentResponse) => boolean;
14
16
  onPersistent429?: (authType?: string, error?: unknown) => Promise<string | boolean | null>;
15
17
  authType?: string;
16
18
  }
@@ -3,13 +3,14 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { ApiError } from '@google/genai';
6
7
  import { AuthType } from '../core/contentGenerator.js';
7
- import { isProQuotaExceededError, isGenericQuotaExceededError, } from './quotaErrorDetection.js';
8
+ import { classifyGoogleError, RetryableQuotaError, TerminalQuotaError, } from './googleQuotaErrors.js';
8
9
  const DEFAULT_RETRY_OPTIONS = {
9
- maxAttempts: 5,
10
+ maxAttempts: 3,
10
11
  initialDelayMs: 5000,
11
12
  maxDelayMs: 30000, // 30 seconds
12
- shouldRetry: defaultShouldRetry,
13
+ shouldRetryOnError: defaultShouldRetry,
13
14
  };
14
15
  /**
15
16
  * Default predicate function to determine if a retry should be attempted.
@@ -18,18 +19,17 @@ const DEFAULT_RETRY_OPTIONS = {
18
19
  * @returns True if the error is a transient error, false otherwise.
19
20
  */
20
21
  function defaultShouldRetry(error) {
21
- // Check for common transient error status codes either in message or a status property
22
- if (error && typeof error.status === 'number') {
23
- const status = error.status;
24
- if (status === 429 || (status >= 500 && status < 600)) {
25
- return true;
26
- }
22
+ // Priority check for ApiError
23
+ if (error instanceof ApiError) {
24
+ // Explicitly do not retry 400 (Bad Request)
25
+ if (error.status === 400)
26
+ return false;
27
+ return error.status === 429 || (error.status >= 500 && error.status < 600);
27
28
  }
28
- if (error instanceof Error && error.message) {
29
- if (error.message.includes('429'))
30
- return true;
31
- if (error.message.match(/5\d{2}/))
32
- return true;
29
+ // Check for status using helper (handles other error shapes)
30
+ const status = getErrorStatus(error);
31
+ if (status !== undefined) {
32
+ return status === 429 || (status >= 500 && status < 600);
33
33
  }
34
34
  return false;
35
35
  }
@@ -49,127 +49,71 @@ function delay(ms) {
49
49
  * @throws The last error encountered if all attempts fail.
50
50
  */
51
51
  export async function retryWithBackoff(fn, options) {
52
- const { maxAttempts, initialDelayMs, maxDelayMs, onPersistent429, authType, shouldRetry, } = {
52
+ if (options?.maxAttempts !== undefined && options.maxAttempts <= 0) {
53
+ throw new Error('maxAttempts must be a positive number.');
54
+ }
55
+ const cleanOptions = options
56
+ ? Object.fromEntries(Object.entries(options).filter(([_, v]) => v != null))
57
+ : {};
58
+ const { maxAttempts, initialDelayMs, maxDelayMs, onPersistent429, authType, shouldRetryOnError, shouldRetryOnContent, } = {
53
59
  ...DEFAULT_RETRY_OPTIONS,
54
- ...options,
60
+ ...cleanOptions,
55
61
  };
56
62
  let attempt = 0;
57
63
  let currentDelay = initialDelayMs;
58
- let consecutive429Count = 0;
59
64
  while (attempt < maxAttempts) {
60
65
  attempt++;
61
66
  try {
62
- return await fn();
67
+ const result = await fn();
68
+ if (shouldRetryOnContent &&
69
+ shouldRetryOnContent(result)) {
70
+ const jitter = currentDelay * 0.3 * (Math.random() * 2 - 1);
71
+ const delayWithJitter = Math.max(0, currentDelay + jitter);
72
+ await delay(delayWithJitter);
73
+ currentDelay = Math.min(maxDelayMs, currentDelay * 2);
74
+ continue;
75
+ }
76
+ return result;
63
77
  }
64
78
  catch (error) {
65
- const errorStatus = getErrorStatus(error);
66
- // Check for Pro quota exceeded error first - immediate fallback for OAuth users
67
- if (errorStatus === 429 &&
68
- authType === AuthType.LOGIN_WITH_GOOGLE &&
69
- isProQuotaExceededError(error) &&
70
- onPersistent429) {
71
- try {
72
- const fallbackModel = await onPersistent429(authType, error);
73
- if (fallbackModel !== false && fallbackModel !== null) {
74
- // Reset attempt counter and try with new model
75
- attempt = 0;
76
- consecutive429Count = 0;
77
- currentDelay = initialDelayMs;
78
- // With the model updated, we continue to the next attempt
79
- continue;
80
- }
81
- else {
82
- // Fallback handler returned null/false, meaning don't continue - stop retry process
83
- throw error;
84
- }
85
- }
86
- catch (fallbackError) {
87
- // If fallback fails, continue with original error
88
- console.warn('Fallback to Flash model failed:', fallbackError);
89
- }
90
- }
91
- // Check for generic quota exceeded error (but not Pro, which was handled above) - immediate fallback for OAuth users
92
- if (errorStatus === 429 &&
93
- authType === AuthType.LOGIN_WITH_GOOGLE &&
94
- !isProQuotaExceededError(error) &&
95
- isGenericQuotaExceededError(error) &&
96
- onPersistent429) {
97
- try {
98
- const fallbackModel = await onPersistent429(authType, error);
99
- if (fallbackModel !== false && fallbackModel !== null) {
100
- // Reset attempt counter and try with new model
101
- attempt = 0;
102
- consecutive429Count = 0;
103
- currentDelay = initialDelayMs;
104
- // With the model updated, we continue to the next attempt
105
- continue;
79
+ const classifiedError = classifyGoogleError(error);
80
+ if (classifiedError instanceof TerminalQuotaError) {
81
+ if (onPersistent429 && authType === AuthType.LOGIN_WITH_GOOGLE) {
82
+ try {
83
+ const fallbackModel = await onPersistent429(authType, classifiedError);
84
+ if (fallbackModel) {
85
+ attempt = 0; // Reset attempts and retry with the new model.
86
+ currentDelay = initialDelayMs;
87
+ continue;
88
+ }
106
89
  }
107
- else {
108
- // Fallback handler returned null/false, meaning don't continue - stop retry process
109
- throw error;
90
+ catch (fallbackError) {
91
+ console.warn('Model fallback failed:', fallbackError);
110
92
  }
111
93
  }
112
- catch (fallbackError) {
113
- // If fallback fails, continue with original error
114
- console.warn('Fallback to Flash model failed:', fallbackError);
115
- }
116
- }
117
- // Track consecutive 429 errors
118
- if (errorStatus === 429) {
119
- consecutive429Count++;
94
+ throw classifiedError; // Throw if no fallback or fallback failed.
120
95
  }
121
- else {
122
- consecutive429Count = 0;
123
- }
124
- // If we have persistent 429s and a fallback callback for OAuth
125
- if (consecutive429Count >= 2 &&
126
- onPersistent429 &&
127
- authType === AuthType.LOGIN_WITH_GOOGLE) {
128
- try {
129
- const fallbackModel = await onPersistent429(authType, error);
130
- if (fallbackModel !== false && fallbackModel !== null) {
131
- // Reset attempt counter and try with new model
132
- attempt = 0;
133
- consecutive429Count = 0;
134
- currentDelay = initialDelayMs;
135
- // With the model updated, we continue to the next attempt
136
- continue;
137
- }
138
- else {
139
- // Fallback handler returned null/false, meaning don't continue - stop retry process
140
- throw error;
141
- }
142
- }
143
- catch (fallbackError) {
144
- // If fallback fails, continue with original error
145
- console.warn('Fallback to Flash model failed:', fallbackError);
96
+ if (classifiedError instanceof RetryableQuotaError) {
97
+ if (attempt >= maxAttempts) {
98
+ throw classifiedError;
146
99
  }
100
+ console.warn(`Attempt ${attempt} failed: ${classifiedError.message}. Retrying after ${classifiedError.retryDelayMs}ms...`);
101
+ await delay(classifiedError.retryDelayMs);
102
+ continue;
147
103
  }
148
- // Check if we've exhausted retries or shouldn't retry
149
- if (attempt >= maxAttempts || !shouldRetry(error)) {
104
+ // Generic retry logic for other errors
105
+ if (attempt >= maxAttempts || !shouldRetryOnError(error)) {
150
106
  throw error;
151
107
  }
152
- const { delayDurationMs, errorStatus: delayErrorStatus } = getDelayDurationAndStatus(error);
153
- if (delayDurationMs > 0) {
154
- // Respect Retry-After header if present and parsed
155
- console.warn(`Attempt ${attempt} failed with status ${delayErrorStatus ?? 'unknown'}. Retrying after explicit delay of ${delayDurationMs}ms...`, error);
156
- await delay(delayDurationMs);
157
- // Reset currentDelay for next potential non-429 error, or if Retry-After is not present next time
158
- currentDelay = initialDelayMs;
159
- }
160
- else {
161
- // Fall back to exponential backoff with jitter
162
- logRetryAttempt(attempt, error, errorStatus);
163
- // Add jitter: +/- 30% of currentDelay
164
- const jitter = currentDelay * 0.3 * (Math.random() * 2 - 1);
165
- const delayWithJitter = Math.max(0, currentDelay + jitter);
166
- await delay(delayWithJitter);
167
- currentDelay = Math.min(maxDelayMs, currentDelay * 2);
168
- }
108
+ const errorStatus = getErrorStatus(error);
109
+ logRetryAttempt(attempt, error, errorStatus);
110
+ // Exponential backoff with jitter for non-quota errors
111
+ const jitter = currentDelay * 0.3 * (Math.random() * 2 - 1);
112
+ const delayWithJitter = Math.max(0, currentDelay + jitter);
113
+ await delay(delayWithJitter);
114
+ currentDelay = Math.min(maxDelayMs, currentDelay * 2);
169
115
  }
170
116
  }
171
- // This line should theoretically be unreachable due to the throw in the catch block.
172
- // Added for type safety and to satisfy the compiler that a promise is always returned.
173
117
  throw new Error('Retry attempts exhausted');
174
118
  }
175
119
  /**
@@ -194,52 +138,6 @@ export function getErrorStatus(error) {
194
138
  }
195
139
  return undefined;
196
140
  }
197
- /**
198
- * Extracts the Retry-After delay from an error object's headers.
199
- * @param error The error object.
200
- * @returns The delay in milliseconds, or 0 if not found or invalid.
201
- */
202
- function getRetryAfterDelayMs(error) {
203
- if (typeof error === 'object' && error !== null) {
204
- // Check for error.response.headers (common in axios errors)
205
- if ('response' in error &&
206
- typeof error.response === 'object' &&
207
- error.response !== null) {
208
- const response = error.response;
209
- if ('headers' in response &&
210
- typeof response.headers === 'object' &&
211
- response.headers !== null) {
212
- const headers = response.headers;
213
- const retryAfterHeader = headers['retry-after'];
214
- if (typeof retryAfterHeader === 'string') {
215
- const retryAfterSeconds = parseInt(retryAfterHeader, 10);
216
- if (!isNaN(retryAfterSeconds)) {
217
- return retryAfterSeconds * 1000;
218
- }
219
- // It might be an HTTP date
220
- const retryAfterDate = new Date(retryAfterHeader);
221
- if (!isNaN(retryAfterDate.getTime())) {
222
- return Math.max(0, retryAfterDate.getTime() - Date.now());
223
- }
224
- }
225
- }
226
- }
227
- }
228
- return 0;
229
- }
230
- /**
231
- * Determines the delay duration based on the error, prioritizing Retry-After header.
232
- * @param error The error object.
233
- * @returns An object containing the delay duration in milliseconds and the error status.
234
- */
235
- function getDelayDurationAndStatus(error) {
236
- const errorStatus = getErrorStatus(error);
237
- let delayDurationMs = 0;
238
- if (errorStatus === 429) {
239
- delayDurationMs = getRetryAfterDelayMs(error);
240
- }
241
- return { delayDurationMs, errorStatus };
242
- }
243
141
  /**
244
142
  * Logs a message for a retry attempt when using exponential backoff.
245
143
  * @param attempt The current attempt number.
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"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"}