@cortexkit/opencode-antigravity-auth 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/README.md +225 -569
  2. package/dist/cli.js +3790 -0
  3. package/dist/cli.js.map +7 -0
  4. package/dist/index.d.ts +1 -3
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +18767 -13829
  7. package/dist/index.js.map +4 -4
  8. package/dist/src/antigravity/oauth.d.ts +1 -1
  9. package/dist/src/antigravity/oauth.js +1 -1
  10. package/dist/src/cli.d.ts +21 -0
  11. package/dist/src/cli.d.ts.map +1 -0
  12. package/dist/src/cli.js +237 -0
  13. package/dist/src/cli.js.map +1 -0
  14. package/dist/src/constants.d.ts +1 -1
  15. package/dist/src/constants.js +1 -1
  16. package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -1
  17. package/dist/src/hooks/auto-update-checker/cache.js +13 -13
  18. package/dist/src/hooks/auto-update-checker/cache.js.map +1 -1
  19. package/dist/src/hooks/auto-update-checker/checker.d.ts +1 -1
  20. package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -1
  21. package/dist/src/hooks/auto-update-checker/checker.js +75 -51
  22. package/dist/src/hooks/auto-update-checker/checker.js.map +1 -1
  23. package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -1
  24. package/dist/src/hooks/auto-update-checker/constants.js +12 -12
  25. package/dist/src/hooks/auto-update-checker/constants.js.map +1 -1
  26. package/dist/src/hooks/auto-update-checker/index.d.ts +6 -6
  27. package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -1
  28. package/dist/src/hooks/auto-update-checker/index.js +17 -17
  29. package/dist/src/hooks/auto-update-checker/index.js.map +1 -1
  30. package/dist/src/hooks/auto-update-checker/logging.js +2 -2
  31. package/dist/src/hooks/auto-update-checker/logging.js.map +1 -1
  32. package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -1
  33. package/dist/src/plugin/account-access.d.ts +99 -0
  34. package/dist/src/plugin/account-access.d.ts.map +1 -0
  35. package/dist/src/plugin/account-access.js +480 -0
  36. package/dist/src/plugin/account-access.js.map +1 -0
  37. package/dist/src/plugin/accounts.d.ts +7 -256
  38. package/dist/src/plugin/accounts.d.ts.map +1 -1
  39. package/dist/src/plugin/accounts.js +31 -1367
  40. package/dist/src/plugin/accounts.js.map +1 -1
  41. package/dist/src/plugin/agy-request-metadata.d.ts +1 -1
  42. package/dist/src/plugin/agy-request-metadata.js +1 -1
  43. package/dist/src/plugin/agy-transport.d.ts +1 -1
  44. package/dist/src/plugin/agy-transport.js +1 -1
  45. package/dist/src/plugin/auth-doctor.d.ts +6 -6
  46. package/dist/src/plugin/auth-doctor.d.ts.map +1 -1
  47. package/dist/src/plugin/auth-doctor.js +74 -66
  48. package/dist/src/plugin/auth-doctor.js.map +1 -1
  49. package/dist/src/plugin/auth-drift.d.ts +4 -4
  50. package/dist/src/plugin/auth-drift.d.ts.map +1 -1
  51. package/dist/src/plugin/auth-drift.js +15 -15
  52. package/dist/src/plugin/auth-drift.js.map +1 -1
  53. package/dist/src/plugin/auth-loader.d.ts +35 -0
  54. package/dist/src/plugin/auth-loader.d.ts.map +1 -0
  55. package/dist/src/plugin/auth-loader.js +144 -0
  56. package/dist/src/plugin/auth-loader.js.map +1 -0
  57. package/dist/src/plugin/auth.d.ts +1 -1
  58. package/dist/src/plugin/auth.js +1 -1
  59. package/dist/src/plugin/cache/index.d.ts +1 -1
  60. package/dist/src/plugin/cache/index.d.ts.map +1 -1
  61. package/dist/src/plugin/cache/index.js +1 -1
  62. package/dist/src/plugin/cache/index.js.map +1 -1
  63. package/dist/src/plugin/cache/signature-cache.d.ts +1 -1
  64. package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -1
  65. package/dist/src/plugin/cache/signature-cache.js +23 -24
  66. package/dist/src/plugin/cache/signature-cache.js.map +1 -1
  67. package/dist/src/plugin/cache.d.ts +6 -5
  68. package/dist/src/plugin/cache.d.ts.map +1 -1
  69. package/dist/src/plugin/cache.js +21 -7
  70. package/dist/src/plugin/cache.js.map +1 -1
  71. package/dist/src/plugin/catalog.d.ts +23 -0
  72. package/dist/src/plugin/catalog.d.ts.map +1 -0
  73. package/dist/src/plugin/catalog.js +60 -0
  74. package/dist/src/plugin/catalog.js.map +1 -0
  75. package/dist/src/plugin/cli.d.ts +7 -7
  76. package/dist/src/plugin/cli.d.ts.map +1 -1
  77. package/dist/src/plugin/cli.js +62 -55
  78. package/dist/src/plugin/cli.js.map +1 -1
  79. package/dist/src/plugin/command-data.d.ts +276 -0
  80. package/dist/src/plugin/command-data.d.ts.map +1 -0
  81. package/dist/src/plugin/command-data.js +325 -0
  82. package/dist/src/plugin/command-data.js.map +1 -0
  83. package/dist/src/plugin/commands.d.ts +151 -0
  84. package/dist/src/plugin/commands.d.ts.map +1 -0
  85. package/dist/src/plugin/commands.js +639 -0
  86. package/dist/src/plugin/commands.js.map +1 -0
  87. package/dist/src/plugin/config/index.d.ts +2 -2
  88. package/dist/src/plugin/config/index.d.ts.map +1 -1
  89. package/dist/src/plugin/config/index.js +2 -2
  90. package/dist/src/plugin/config/index.js.map +1 -1
  91. package/dist/src/plugin/config/loader.d.ts +1 -1
  92. package/dist/src/plugin/config/loader.d.ts.map +1 -1
  93. package/dist/src/plugin/config/loader.js +18 -16
  94. package/dist/src/plugin/config/loader.js.map +1 -1
  95. package/dist/src/plugin/config/models.d.ts +2 -2
  96. package/dist/src/plugin/config/models.d.ts.map +1 -1
  97. package/dist/src/plugin/config/models.js +1 -1
  98. package/dist/src/plugin/config/models.js.map +1 -1
  99. package/dist/src/plugin/config/operator-settings-schema.d.ts +29 -0
  100. package/dist/src/plugin/config/operator-settings-schema.d.ts.map +1 -0
  101. package/dist/src/plugin/config/operator-settings-schema.js +28 -0
  102. package/dist/src/plugin/config/operator-settings-schema.js.map +1 -0
  103. package/dist/src/plugin/config/schema.d.ts +21 -2
  104. package/dist/src/plugin/config/schema.d.ts.map +1 -1
  105. package/dist/src/plugin/config/schema.js +85 -25
  106. package/dist/src/plugin/config/schema.js.map +1 -1
  107. package/dist/src/plugin/config/updater.d.ts.map +1 -1
  108. package/dist/src/plugin/config/updater.js +15 -15
  109. package/dist/src/plugin/config/updater.js.map +1 -1
  110. package/dist/src/plugin/config/writer.d.ts +34 -0
  111. package/dist/src/plugin/config/writer.d.ts.map +1 -0
  112. package/dist/src/plugin/config/writer.js +81 -0
  113. package/dist/src/plugin/config/writer.js.map +1 -0
  114. package/dist/src/plugin/core/streaming/index.d.ts +1 -1
  115. package/dist/src/plugin/core/streaming/index.d.ts.map +1 -1
  116. package/dist/src/plugin/core/streaming/index.js +1 -1
  117. package/dist/src/plugin/core/streaming/index.js.map +1 -1
  118. package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -1
  119. package/dist/src/plugin/core/streaming/transformer.js +85 -44
  120. package/dist/src/plugin/core/streaming/transformer.js.map +1 -1
  121. package/dist/src/plugin/core/streaming/types.d.ts.map +1 -1
  122. package/dist/src/plugin/debug.d.ts +3 -3
  123. package/dist/src/plugin/debug.d.ts.map +1 -1
  124. package/dist/src/plugin/debug.js +85 -47
  125. package/dist/src/plugin/debug.js.map +1 -1
  126. package/dist/src/plugin/dependencies.d.ts +129 -0
  127. package/dist/src/plugin/dependencies.d.ts.map +1 -0
  128. package/dist/src/plugin/dependencies.js +107 -0
  129. package/dist/src/plugin/dependencies.js.map +1 -0
  130. package/dist/src/plugin/errors.d.ts +27 -0
  131. package/dist/src/plugin/errors.d.ts.map +1 -1
  132. package/dist/src/plugin/errors.js +29 -3
  133. package/dist/src/plugin/errors.js.map +1 -1
  134. package/dist/src/plugin/event-handler.d.ts +53 -0
  135. package/dist/src/plugin/event-handler.d.ts.map +1 -0
  136. package/dist/src/plugin/event-handler.js +101 -0
  137. package/dist/src/plugin/event-handler.js.map +1 -0
  138. package/dist/src/plugin/fetch/retry-state.d.ts +61 -0
  139. package/dist/src/plugin/fetch/retry-state.d.ts.map +1 -0
  140. package/dist/src/plugin/fetch/retry-state.js +248 -0
  141. package/dist/src/plugin/fetch/retry-state.js.map +1 -0
  142. package/dist/src/plugin/fetch/warmup.d.ts +30 -0
  143. package/dist/src/plugin/fetch/warmup.d.ts.map +1 -0
  144. package/dist/src/plugin/fetch/warmup.js +76 -0
  145. package/dist/src/plugin/fetch/warmup.js.map +1 -0
  146. package/dist/src/plugin/fetch-interceptor.d.ts +59 -0
  147. package/dist/src/plugin/fetch-interceptor.d.ts.map +1 -0
  148. package/dist/src/plugin/fetch-interceptor.js +1387 -0
  149. package/dist/src/plugin/fetch-interceptor.js.map +1 -0
  150. package/dist/src/plugin/fetch-routing.d.ts +26 -0
  151. package/dist/src/plugin/fetch-routing.d.ts.map +1 -0
  152. package/dist/src/plugin/fetch-routing.js +99 -0
  153. package/dist/src/plugin/fetch-routing.js.map +1 -0
  154. package/dist/src/plugin/fingerprint.d.ts +1 -1
  155. package/dist/src/plugin/fingerprint.js +1 -1
  156. package/dist/src/plugin/gemini-dump.d.ts +5 -5
  157. package/dist/src/plugin/gemini-dump.d.ts.map +1 -1
  158. package/dist/src/plugin/gemini-dump.js +109 -55
  159. package/dist/src/plugin/gemini-dump.js.map +1 -1
  160. package/dist/src/plugin/google-search-tool.d.ts +9 -0
  161. package/dist/src/plugin/google-search-tool.d.ts.map +1 -0
  162. package/dist/src/plugin/google-search-tool.js +56 -0
  163. package/dist/src/plugin/google-search-tool.js.map +1 -0
  164. package/dist/src/plugin/image-saver.d.ts.map +1 -1
  165. package/dist/src/plugin/image-saver.js +16 -16
  166. package/dist/src/plugin/image-saver.js.map +1 -1
  167. package/dist/src/plugin/index.d.ts +23 -0
  168. package/dist/src/plugin/index.d.ts.map +1 -0
  169. package/dist/src/plugin/index.js +308 -0
  170. package/dist/src/plugin/index.js.map +1 -0
  171. package/dist/src/plugin/killswitch.d.ts +94 -0
  172. package/dist/src/plugin/killswitch.d.ts.map +1 -0
  173. package/dist/src/plugin/killswitch.js +194 -0
  174. package/dist/src/plugin/killswitch.js.map +1 -0
  175. package/dist/src/plugin/lifecycle.d.ts +40 -0
  176. package/dist/src/plugin/lifecycle.d.ts.map +1 -0
  177. package/dist/src/plugin/lifecycle.js +73 -0
  178. package/dist/src/plugin/lifecycle.js.map +1 -0
  179. package/dist/src/plugin/logger.d.ts +10 -1
  180. package/dist/src/plugin/logger.d.ts.map +1 -1
  181. package/dist/src/plugin/logger.js +38 -12
  182. package/dist/src/plugin/logger.js.map +1 -1
  183. package/dist/src/plugin/logging-utils.d.ts +35 -1
  184. package/dist/src/plugin/logging-utils.d.ts.map +1 -1
  185. package/dist/src/plugin/logging-utils.js +98 -15
  186. package/dist/src/plugin/logging-utils.js.map +1 -1
  187. package/dist/src/plugin/model-registry.d.ts +1 -1
  188. package/dist/src/plugin/model-registry.js +1 -1
  189. package/dist/src/plugin/oauth-login.d.ts +22 -0
  190. package/dist/src/plugin/oauth-login.d.ts.map +1 -0
  191. package/dist/src/plugin/oauth-login.js +37 -0
  192. package/dist/src/plugin/oauth-login.js.map +1 -0
  193. package/dist/src/plugin/oauth-methods.d.ts +42 -0
  194. package/dist/src/plugin/oauth-methods.d.ts.map +1 -0
  195. package/dist/src/plugin/oauth-methods.js +1284 -0
  196. package/dist/src/plugin/oauth-methods.js.map +1 -0
  197. package/dist/src/plugin/operator-settings.d.ts +40 -0
  198. package/dist/src/plugin/operator-settings.d.ts.map +1 -0
  199. package/dist/src/plugin/operator-settings.js +148 -0
  200. package/dist/src/plugin/operator-settings.js.map +1 -0
  201. package/dist/src/plugin/persist-account-pool.d.ts +37 -0
  202. package/dist/src/plugin/persist-account-pool.d.ts.map +1 -0
  203. package/dist/src/plugin/persist-account-pool.js +142 -0
  204. package/dist/src/plugin/persist-account-pool.js.map +1 -0
  205. package/dist/src/plugin/project.d.ts +1 -1
  206. package/dist/src/plugin/project.js +1 -1
  207. package/dist/src/plugin/prompt-context.d.ts.map +1 -1
  208. package/dist/src/plugin/prompt-context.js +11 -11
  209. package/dist/src/plugin/prompt-context.js.map +1 -1
  210. package/dist/src/plugin/quota.d.ts +97 -41
  211. package/dist/src/plugin/quota.d.ts.map +1 -1
  212. package/dist/src/plugin/quota.js +273 -285
  213. package/dist/src/plugin/quota.js.map +1 -1
  214. package/dist/src/plugin/recovery/constants.d.ts.map +1 -1
  215. package/dist/src/plugin/recovery/constants.js +24 -15
  216. package/dist/src/plugin/recovery/constants.js.map +1 -1
  217. package/dist/src/plugin/recovery/index.d.ts +3 -3
  218. package/dist/src/plugin/recovery/index.d.ts.map +1 -1
  219. package/dist/src/plugin/recovery/index.js +3 -3
  220. package/dist/src/plugin/recovery/index.js.map +1 -1
  221. package/dist/src/plugin/recovery/storage.d.ts +1 -1
  222. package/dist/src/plugin/recovery/storage.d.ts.map +1 -1
  223. package/dist/src/plugin/recovery/storage.js +31 -39
  224. package/dist/src/plugin/recovery/storage.js.map +1 -1
  225. package/dist/src/plugin/recovery/types.d.ts +12 -12
  226. package/dist/src/plugin/recovery/types.d.ts.map +1 -1
  227. package/dist/src/plugin/recovery.d.ts +3 -3
  228. package/dist/src/plugin/recovery.d.ts.map +1 -1
  229. package/dist/src/plugin/recovery.js +62 -58
  230. package/dist/src/plugin/recovery.js.map +1 -1
  231. package/dist/src/plugin/refresh-queue.d.ts +5 -2
  232. package/dist/src/plugin/refresh-queue.d.ts.map +1 -1
  233. package/dist/src/plugin/refresh-queue.js +37 -15
  234. package/dist/src/plugin/refresh-queue.js.map +1 -1
  235. package/dist/src/plugin/request-helpers.d.ts +1 -1
  236. package/dist/src/plugin/request-helpers.d.ts.map +1 -1
  237. package/dist/src/plugin/request-helpers.js +451 -352
  238. package/dist/src/plugin/request-helpers.js.map +1 -1
  239. package/dist/src/plugin/request.d.ts +7 -7
  240. package/dist/src/plugin/request.d.ts.map +1 -1
  241. package/dist/src/plugin/request.js +622 -384
  242. package/dist/src/plugin/request.js.map +1 -1
  243. package/dist/src/plugin/rotation.d.ts +1 -168
  244. package/dist/src/plugin/rotation.d.ts.map +1 -1
  245. package/dist/src/plugin/rotation.js +1 -327
  246. package/dist/src/plugin/rotation.js.map +1 -1
  247. package/dist/src/plugin/search.d.ts.map +1 -1
  248. package/dist/src/plugin/search.js +39 -35
  249. package/dist/src/plugin/search.js.map +1 -1
  250. package/dist/src/plugin/server.d.ts +1 -1
  251. package/dist/src/plugin/server.d.ts.map +1 -1
  252. package/dist/src/plugin/server.js +42 -37
  253. package/dist/src/plugin/server.js.map +1 -1
  254. package/dist/src/plugin/session-context.d.ts +2 -1
  255. package/dist/src/plugin/session-context.d.ts.map +1 -1
  256. package/dist/src/plugin/session-context.js +11 -7
  257. package/dist/src/plugin/session-context.js.map +1 -1
  258. package/dist/src/plugin/storage.d.ts +59 -120
  259. package/dist/src/plugin/storage.d.ts.map +1 -1
  260. package/dist/src/plugin/storage.js +140 -485
  261. package/dist/src/plugin/storage.js.map +1 -1
  262. package/dist/src/plugin/stores/signature-store.d.ts.map +1 -1
  263. package/dist/src/plugin/stores/signature-store.js.map +1 -1
  264. package/dist/src/plugin/thinking-recovery.d.ts.map +1 -1
  265. package/dist/src/plugin/thinking-recovery.js +35 -33
  266. package/dist/src/plugin/thinking-recovery.js.map +1 -1
  267. package/dist/src/plugin/token.d.ts +2 -2
  268. package/dist/src/plugin/token.d.ts.map +1 -1
  269. package/dist/src/plugin/token.js +30 -21
  270. package/dist/src/plugin/token.js.map +1 -1
  271. package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +1 -1
  272. package/dist/src/plugin/transform/cross-model-sanitizer.js +1 -1
  273. package/dist/src/plugin/transform/index.d.ts +1 -1
  274. package/dist/src/plugin/transform/index.js +1 -1
  275. package/dist/src/plugin/transform/model-resolver.d.ts +1 -1
  276. package/dist/src/plugin/transform/model-resolver.js +1 -1
  277. package/dist/src/plugin/transform/types.d.ts +1 -1
  278. package/dist/src/plugin/transform/types.js +1 -1
  279. package/dist/src/plugin/types.d.ts +25 -69
  280. package/dist/src/plugin/types.d.ts.map +1 -1
  281. package/dist/src/plugin/ui/ansi.d.ts.map +1 -1
  282. package/dist/src/plugin/ui/ansi.js.map +1 -1
  283. package/dist/src/plugin/ui/auth-menu.d.ts +1 -1
  284. package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -1
  285. package/dist/src/plugin/ui/auth-menu.js +82 -31
  286. package/dist/src/plugin/ui/auth-menu.js.map +1 -1
  287. package/dist/src/plugin/ui/confirm.d.ts.map +1 -1
  288. package/dist/src/plugin/ui/confirm.js.map +1 -1
  289. package/dist/src/plugin/ui/model-status.d.ts +3 -3
  290. package/dist/src/plugin/ui/model-status.d.ts.map +1 -1
  291. package/dist/src/plugin/ui/model-status.js +3 -3
  292. package/dist/src/plugin/ui/model-status.js.map +1 -1
  293. package/dist/src/plugin/ui/quota-status.d.ts +4 -4
  294. package/dist/src/plugin/ui/quota-status.d.ts.map +1 -1
  295. package/dist/src/plugin/ui/quota-status.js +51 -49
  296. package/dist/src/plugin/ui/quota-status.js.map +1 -1
  297. package/dist/src/plugin/ui/select.d.ts.map +1 -1
  298. package/dist/src/plugin/ui/select.js +22 -12
  299. package/dist/src/plugin/ui/select.js.map +1 -1
  300. package/dist/src/plugin/version.d.ts +1 -1
  301. package/dist/src/plugin/version.js +1 -1
  302. package/dist/src/rpc/notifications.d.ts +6 -0
  303. package/dist/src/rpc/notifications.d.ts.map +1 -0
  304. package/dist/src/rpc/notifications.js +46 -0
  305. package/dist/src/rpc/notifications.js.map +1 -0
  306. package/dist/src/rpc/port-file.d.ts +13 -0
  307. package/dist/src/rpc/port-file.d.ts.map +1 -0
  308. package/dist/src/rpc/port-file.js +109 -0
  309. package/dist/src/rpc/port-file.js.map +1 -0
  310. package/dist/src/rpc/protocol.d.ts +22 -0
  311. package/dist/src/rpc/protocol.d.ts.map +1 -0
  312. package/dist/src/rpc/protocol.js +1 -0
  313. package/dist/src/rpc/protocol.js.map +1 -0
  314. package/dist/src/rpc/rpc-client.d.ts +10 -0
  315. package/dist/src/rpc/rpc-client.d.ts.map +1 -0
  316. package/dist/src/rpc/rpc-client.js +58 -0
  317. package/dist/src/rpc/rpc-client.js.map +1 -0
  318. package/dist/src/rpc/rpc-dir.d.ts +4 -0
  319. package/dist/src/rpc/rpc-dir.d.ts.map +1 -0
  320. package/dist/src/rpc/rpc-dir.js +19 -0
  321. package/dist/src/rpc/rpc-dir.js.map +1 -0
  322. package/dist/src/rpc/rpc-server.d.ts +13 -0
  323. package/dist/src/rpc/rpc-server.d.ts.map +1 -0
  324. package/dist/src/rpc/rpc-server.js +231 -0
  325. package/dist/src/rpc/rpc-server.js.map +1 -0
  326. package/dist/src/sidebar-state.d.ts +240 -0
  327. package/dist/src/sidebar-state.d.ts.map +1 -0
  328. package/dist/src/sidebar-state.js +520 -0
  329. package/dist/src/sidebar-state.js.map +1 -0
  330. package/dist/src/tui/command-dialogs.d.ts +61 -0
  331. package/dist/src/tui/command-dialogs.d.ts.map +1 -0
  332. package/dist/src/tui/command-dialogs.js +497 -0
  333. package/dist/src/tui/command-dialogs.js.map +1 -0
  334. package/dist/src/tui/file-logger.d.ts +41 -0
  335. package/dist/src/tui/file-logger.d.ts.map +1 -0
  336. package/dist/src/tui/file-logger.js +114 -0
  337. package/dist/src/tui/file-logger.js.map +1 -0
  338. package/dist/src/tui-preferences.d.ts +40 -0
  339. package/dist/src/tui-preferences.d.ts.map +1 -0
  340. package/dist/src/tui-preferences.js +328 -0
  341. package/dist/src/tui-preferences.js.map +1 -0
  342. package/dist/src/tui.d.ts +68 -0
  343. package/dist/src/tui.d.ts.map +1 -0
  344. package/dist/src/tui.js +662 -0
  345. package/dist/src/tui.js.map +1 -0
  346. package/package.json +46 -22
  347. package/src/plugin/command-data.ts +651 -0
  348. package/src/rpc/port-file.ts +143 -0
  349. package/src/rpc/protocol.ts +31 -0
  350. package/src/rpc/rpc-client.ts +102 -0
  351. package/src/rpc/rpc-dir.ts +24 -0
  352. package/src/sidebar-state.ts +717 -0
  353. package/src/tui/command-dialogs.tsx +699 -0
  354. package/src/tui/entry.mjs +74 -0
  355. package/src/tui/file-logger.ts +145 -0
  356. package/src/tui-compiled/plugin/command-data.ts +651 -0
  357. package/src/tui-compiled/rpc/port-file.ts +143 -0
  358. package/src/tui-compiled/rpc/protocol.ts +31 -0
  359. package/src/tui-compiled/rpc/rpc-client.ts +102 -0
  360. package/src/tui-compiled/rpc/rpc-dir.ts +24 -0
  361. package/src/tui-compiled/sidebar-state.ts +717 -0
  362. package/src/tui-compiled/tui/command-dialogs.tsx +659 -0
  363. package/src/tui-compiled/tui/file-logger.ts +145 -0
  364. package/src/tui-compiled/tui-preferences.ts +416 -0
  365. package/src/tui-compiled/tui.tsx +1150 -0
  366. package/src/tui-preferences.ts +416 -0
  367. package/src/tui.tsx +1117 -0
  368. package/dist/src/plugin.d.ts +0 -48
  369. package/dist/src/plugin.d.ts.map +0 -1
  370. package/dist/src/plugin.js +0 -3311
  371. package/dist/src/plugin.js.map +0 -1
@@ -1,336 +1,324 @@
1
- import { ANTIGRAVITY_ENDPOINT_FALLBACKS, ANTIGRAVITY_PROVIDER_ID, buildGeminiCliUserAgent, } from "../constants";
2
- import { fetchWithAgyCliTransport } from "./agy-transport";
3
- import { accessTokenExpired, formatRefreshParts, parseRefreshParts } from "./auth";
4
- import { buildAntigravityHarnessUserAgent } from "./fingerprint";
5
- import { logQuotaFetch, logQuotaStatus } from "./debug";
6
- import { ensureProjectContext } from "./project";
7
- import { getQuotaGroupForModel } from "./model-registry";
8
- import { refreshAccessToken } from "./token";
9
- import { getModelFamily } from "./transform/model-resolver";
10
- const FETCH_TIMEOUT_MS = 10000;
11
- function buildAuthFromAccount(account) {
1
+ /**
2
+ * OpenCode adapter for the harness-agnostic quota manager.
3
+ *
4
+ * Re-exports the core `QuotaManager` types and helpers so call sites in
5
+ * `plugin.ts` and other modules don't need to switch imports. Also wires up
6
+ * the host-specific fetch callback that handles:
7
+ * 1. Token refresh via the existing `refreshAccessToken` path.
8
+ * 2. Persisting rotated refresh tokens via `client.auth.set` (matching
9
+ * legacy behavior).
10
+ * 3. Resolving project context via `ensureProjectContext`.
11
+ *
12
+ * The legacy `checkAccountsQuota(accounts, client, providerId)` export is
13
+ * retained as a compatibility wrapper that creates a short-lived manager
14
+ * with `force: true` — manual quota screens must always refresh, even if
15
+ * the background manager has backed off.
16
+ */
17
+ import { aggregateGeminiCliQuota, aggregateQuota, createQuotaManager, defaultKeyOf, fetchAvailableModels, fetchGeminiCliQuota, } from '@cortexkit/antigravity-auth-core';
18
+ import { ANTIGRAVITY_ENDPOINT_FALLBACKS, ANTIGRAVITY_PROVIDER_ID, buildGeminiCliUserAgent, } from '../constants';
19
+ import { buildSidebarMachineStateFromAccounts, setSidebarMachineState, } from '../sidebar-state';
20
+ import { accessTokenExpired, formatRefreshParts, parseRefreshParts, } from './auth';
21
+ import { logQuotaFetch, logQuotaStatus } from './debug';
22
+ import { buildAntigravityHarnessUserAgent } from './fingerprint';
23
+ import { createLogger } from './logger';
24
+ import { ensureProjectContext } from './project';
25
+ import { refreshAccessToken } from './token';
26
+ // Re-export the public surface so existing imports from `./quota` keep working.
27
+ const log = createLogger('quota');
28
+ export { classifyQuotaGroup, createQuotaManager, defaultKeyOf, } from '@cortexkit/antigravity-auth-core';
29
+ /**
30
+ * Build an OpenCode-wired quota manager.
31
+ *
32
+ * The returned manager owns its cache, in-flight dedupe, and backoff state.
33
+ * Register its `dispose()` with `PluginLifecycle` so refreshes abort on plugin
34
+ * shutdown.
35
+ *
36
+ * The wrapper observes `refreshAccount` / `refreshAccounts` and pushes a
37
+ * redacted sidebar snapshot after every refresh (success or backoff) so
38
+ * the TUI's next poll renders the freshest cached quota. The snapshot is
39
+ * sourced from the live AccountManager view (`getAccountsForSidebar`) so
40
+ * it carries the just-updated percentages; before bootstrapping it is a
41
+ * no-op.
42
+ */
43
+ export function createOpenCodeQuotaManager(client, providerId = ANTIGRAVITY_PROVIDER_ID, options = {}) {
44
+ const fetchAccountQuota = makeFetchAccountQuota(client, providerId, options.fetchVia);
45
+ const manager = createQuotaManager({
46
+ fetchAccountQuota,
47
+ keyOf: options.keyOf ?? defaultKeyOf,
48
+ baseBackoffMs: options.baseBackoffMs,
49
+ maxBackoffMs: options.maxBackoffMs,
50
+ fetchTimeoutMs: options.fetchTimeoutMs,
51
+ });
52
+ const originalRefreshAccount = manager.refreshAccount;
53
+ const originalRefreshAccounts = manager.refreshAccounts;
54
+ const getAccountsForSidebar = options.getAccountsForSidebar;
55
+ let disposed = false;
56
+ const inFlight = new Set();
57
+ const pushAfterRefresh = async (account) => {
58
+ if (!getAccountsForSidebar)
59
+ return;
60
+ await pushSidebarQuotaSnapshot(getAccountsForSidebar, manager.getBackoffUntil(account)).catch(() => {
61
+ // Sidebar persistence remains best-effort when lock contention
62
+ // outlives its retry budget.
63
+ });
64
+ };
65
+ const track = (operation) => {
66
+ inFlight.add(operation);
67
+ void operation.then(() => inFlight.delete(operation), () => inFlight.delete(operation));
68
+ return operation;
69
+ };
70
+ const dispose = async () => {
71
+ if (disposed)
72
+ return;
73
+ disposed = true;
74
+ await manager.dispose();
75
+ await Promise.allSettled(inFlight);
76
+ };
12
77
  return {
13
- type: "oauth",
14
- refresh: formatRefreshParts({
15
- refreshToken: account.refreshToken,
16
- projectId: account.projectId,
17
- managedProjectId: account.managedProjectId,
18
- }),
19
- access: undefined,
20
- expires: undefined,
78
+ ...manager,
79
+ async refreshAccount(account, refreshOptions) {
80
+ const shouldPush = !disposed;
81
+ return track((async () => {
82
+ const result = await originalRefreshAccount(account, refreshOptions);
83
+ if (shouldPush)
84
+ await pushAfterRefresh(account);
85
+ return result;
86
+ })());
87
+ },
88
+ async refreshAccounts(accounts, refreshOptions) {
89
+ const shouldPush = !disposed;
90
+ return track((async () => {
91
+ const results = await originalRefreshAccounts(accounts, refreshOptions);
92
+ // Push one snapshot per batch — the AccountManager's view is updated
93
+ // by the caller (oauth-methods / fetch-interceptor) BEFORE we read
94
+ // here, so a single post-batch snapshot captures the full diff.
95
+ const lastAccount = accounts[accounts.length - 1];
96
+ if (shouldPush && lastAccount)
97
+ await pushAfterRefresh(lastAccount);
98
+ return results;
99
+ })());
100
+ },
101
+ dispose,
21
102
  };
22
103
  }
23
- function normalizeRemainingFraction(value) {
24
- // If value is missing or invalid, treat as exhausted (0%)
25
- if (typeof value !== "number" || !Number.isFinite(value)) {
26
- return 0;
27
- }
28
- if (value < 0)
29
- return 0;
30
- if (value > 1)
31
- return 1;
32
- return value;
33
- }
34
- function parseResetTime(resetTime) {
35
- if (!resetTime)
36
- return null;
37
- const timestamp = Date.parse(resetTime);
38
- if (!Number.isFinite(timestamp)) {
39
- return null;
40
- }
41
- return timestamp;
42
- }
43
- export function classifyQuotaGroup(modelName, displayName) {
44
- const registryGroup = getQuotaGroupForModel(modelName);
45
- if (registryGroup) {
46
- return registryGroup;
47
- }
48
- const combined = `${modelName} ${displayName ?? ""}`.toLowerCase();
49
- if (combined.includes("claude")) {
50
- return "claude";
51
- }
52
- const isGemini3 = combined.includes("gemini-3") || combined.includes("gemini 3");
53
- if (!isGemini3) {
54
- return null;
55
- }
56
- const family = getModelFamily(modelName);
57
- return family === "gemini-flash" ? "gemini-flash" : "gemini-pro";
58
- }
59
- function aggregateQuota(models) {
60
- const groups = {};
61
- const perModel = [];
62
- if (!models) {
63
- return { groups, perModel, modelCount: 0 };
64
- }
65
- let totalCount = 0;
66
- for (const [modelName, entry] of Object.entries(models)) {
67
- const group = classifyQuotaGroup(modelName, entry.displayName ?? entry.modelName);
68
- const quotaInfo = entry.quotaInfo;
69
- const remainingFraction = quotaInfo
70
- ? normalizeRemainingFraction(quotaInfo.remainingFraction)
71
- : undefined;
72
- const resetTime = quotaInfo?.resetTime;
73
- const resetTimestamp = parseResetTime(resetTime);
74
- totalCount += 1;
75
- // Always preserve per-model data regardless of group classification
76
- perModel.push({
77
- modelId: modelName,
78
- displayName: entry.displayName ?? entry.modelName,
79
- group,
80
- remainingFraction: remainingFraction ?? 0,
81
- resetTime,
82
- });
83
- if (!group) {
84
- continue;
85
- }
86
- const existing = groups[group];
87
- const nextCount = (existing?.modelCount ?? 0) + 1;
88
- const nextRemaining = remainingFraction === undefined
89
- ? existing?.remainingFraction
90
- : existing?.remainingFraction === undefined
91
- ? remainingFraction
92
- : Math.min(existing.remainingFraction, remainingFraction);
93
- let nextResetTime = existing?.resetTime;
94
- if (resetTimestamp !== null) {
95
- if (!existing?.resetTime) {
96
- nextResetTime = resetTime;
97
- }
98
- else {
99
- const existingTimestamp = parseResetTime(existing.resetTime);
100
- if (existingTimestamp === null || resetTimestamp < existingTimestamp) {
101
- nextResetTime = resetTime;
102
- }
103
- }
104
- }
105
- groups[group] = {
106
- remainingFraction: nextRemaining,
107
- resetTime: nextResetTime,
108
- modelCount: nextCount,
109
- };
110
- }
111
- // Sort per-model entries by model ID for consistent display
112
- perModel.sort((a, b) => a.modelId.localeCompare(b.modelId));
113
- return { groups, perModel, modelCount: totalCount };
114
- }
115
- async function fetchWithTimeout(url, options, timeoutMs = FETCH_TIMEOUT_MS) {
116
- const controller = new AbortController();
117
- const timeout = setTimeout(() => controller.abort(), timeoutMs);
104
+ /**
105
+ * Compatibility wrapper used by code paths that want a one-shot check across
106
+ * the full account pool with no shared cache.
107
+ *
108
+ * Equivalent to spinning up a short-lived manager with `force: true` so
109
+ * manual quota dialogs always reflect the latest data even if the background
110
+ * manager has backed off.
111
+ */
112
+ export async function checkAccountsQuotaWith(accounts, fetchAccountQuota) {
113
+ const manager = createQuotaManager({
114
+ fetchAccountQuota,
115
+ keyOf: defaultKeyOf,
116
+ });
118
117
  try {
119
- return await fetch(url, { ...options, signal: controller.signal });
118
+ return await manager.refreshAccounts(accounts, {
119
+ indexFor: (account) => accounts.indexOf(account),
120
+ force: true,
121
+ });
120
122
  }
121
123
  finally {
122
- clearTimeout(timeout);
124
+ manager.dispose();
123
125
  }
124
126
  }
125
- async function fetchAvailableModels(accessToken, projectId) {
126
- const quotaUserAgent = buildAntigravityHarnessUserAgent();
127
- const errors = [];
128
- for (const endpoint of ANTIGRAVITY_ENDPOINT_FALLBACKS) {
129
- const body = projectId ? { project: projectId } : {};
130
- try {
131
- const response = await fetchWithAgyCliTransport(`${endpoint}/v1internal:fetchAvailableModels`, {
132
- method: "POST",
133
- headers: {
134
- "User-Agent": quotaUserAgent,
135
- Authorization: `Bearer ${accessToken}`,
136
- "Content-Type": "application/json",
137
- "Accept-Encoding": "gzip",
138
- },
139
- body: JSON.stringify(body),
140
- }, { timeoutMs: FETCH_TIMEOUT_MS });
141
- if (response.ok) {
142
- return (await response.json());
143
- }
144
- const status = response.status;
145
- // 403: retry once without project (like AntigravityManager)
146
- if (status === 403 && projectId) {
147
- try {
148
- const retryResponse = await fetchWithAgyCliTransport(`${endpoint}/v1internal:fetchAvailableModels`, {
149
- method: "POST",
150
- headers: {
151
- "User-Agent": quotaUserAgent,
152
- Authorization: `Bearer ${accessToken}`,
153
- "Content-Type": "application/json",
154
- "Accept-Encoding": "gzip",
155
- },
156
- body: JSON.stringify({}),
157
- }, { timeoutMs: FETCH_TIMEOUT_MS });
158
- if (retryResponse.ok) {
159
- return (await retryResponse.json());
160
- }
161
- }
162
- catch {
163
- // Fall through to next endpoint
164
- }
165
- }
166
- // 429/5xx: fall through to next endpoint
167
- if (status === 429 || status >= 500) {
168
- const message = await response.text().catch(() => "");
169
- const snippet = message.trim().slice(0, 200);
170
- errors.push(`fetchAvailableModels ${status} at ${endpoint}${snippet ? `: ${snippet}` : ""}`);
171
- continue;
172
- }
173
- // Other errors (4xx): don't retry on different endpoint
174
- const message = await response.text().catch(() => "");
175
- const snippet = message.trim().slice(0, 200);
176
- errors.push(`fetchAvailableModels ${status} at ${endpoint}${snippet ? `: ${snippet}` : ""}`);
177
- break;
178
- }
179
- catch (error) {
180
- // Network error or timeout: fall through to next endpoint
181
- errors.push(`fetchAvailableModels network error at ${endpoint}: ${error instanceof Error ? error.message : String(error)}`);
182
- continue;
183
- }
127
+ export async function checkAccountsQuotaStandalone(accounts, options) {
128
+ if (!options.refresh) {
129
+ return accounts.map((account, index) => ({
130
+ index,
131
+ email: account.email,
132
+ status: account.enabled === false ? 'disabled' : 'ok',
133
+ disabled: account.enabled === false,
134
+ quota: {
135
+ groups: account.cachedQuota ?? {},
136
+ modelCount: Object.keys(account.cachedQuota ?? {}).length,
137
+ },
138
+ }));
184
139
  }
185
- throw new Error(errors.join("; ") || "fetchAvailableModels failed");
140
+ return checkAccountsQuotaWith(accounts, makeFetchAccountQuota(undefined, ANTIGRAVITY_PROVIDER_ID));
186
141
  }
187
- async function fetchGeminiCliQuota(accessToken, projectId) {
188
- // Use Gemini CLI user-agent to get CLI quota buckets (not Antigravity buckets)
189
- const geminiCliUserAgent = buildGeminiCliUserAgent();
190
- for (const endpoint of ANTIGRAVITY_ENDPOINT_FALLBACKS) {
191
- const body = projectId ? { project: projectId } : {};
192
- try {
193
- const response = await fetchWithTimeout(`${endpoint}/v1internal:retrieveUserQuota`, {
194
- method: "POST",
195
- headers: {
196
- Authorization: `Bearer ${accessToken}`,
197
- "Content-Type": "application/json",
198
- "User-Agent": geminiCliUserAgent,
199
- },
200
- body: JSON.stringify(body),
201
- });
202
- if (response.ok) {
203
- return (await response.json());
204
- }
205
- const status = response.status;
206
- // 429/5xx: fall through to next endpoint
207
- if (status === 429 || status >= 500) {
208
- continue;
209
- }
210
- // Other errors: don't retry on different endpoint
211
- return { buckets: [] };
212
- }
213
- catch {
214
- // Network error or timeout: fall through to next endpoint
215
- continue;
216
- }
217
- }
218
- // All endpoints failed
219
- return { buckets: [] };
142
+ export async function checkAccountsQuota(accounts, client, providerId = ANTIGRAVITY_PROVIDER_ID) {
143
+ return checkAccountsQuotaWith(accounts, makeFetchAccountQuota(client, providerId));
220
144
  }
221
- function aggregateGeminiCliQuota(response) {
222
- const models = [];
223
- if (!response.buckets || response.buckets.length === 0) {
224
- return { models };
225
- }
226
- for (const bucket of response.buckets) {
227
- if (!bucket.modelId) {
228
- continue;
229
- }
230
- // Filter to relevant Gemini CLI quota models (premium tier)
231
- const modelId = bucket.modelId;
232
- const isRelevantModel = modelId.startsWith("gemini-3-") ||
233
- modelId.startsWith("gemini-3.") ||
234
- modelId.startsWith("gemini-2.5-");
235
- if (!isRelevantModel) {
236
- continue;
237
- }
238
- models.push({
239
- modelId: bucket.modelId,
240
- remainingFraction: normalizeRemainingFraction(bucket.remainingFraction),
241
- resetTime: bucket.resetTime,
242
- });
145
+ /**
146
+ * Push a quota refresh into the sidebar. Called by every quota refresh
147
+ * call site (manual `/antigravity-quota`, the `check` menu action, and the
148
+ * background refresh in `fetch-interceptor`) AFTER the results have been
149
+ * folded back into the AccountManager's cached quota. The function reads
150
+ * the live account snapshot through `getAccounts` so the redacted entry
151
+ * carries the just-refreshed percentages — not the previous tick's stale
152
+ * numbers and not `undefined`.
153
+ *
154
+ * The mapping is deliberately tolerant: if `getAccounts` returns `null`
155
+ * (e.g. before the plugin has finished bootstrapping) the call is a no-op.
156
+ * On lock contention the error is logged-and-swallowed so a quota dialog
157
+ * never fails just because the sidebar file is busy.
158
+ */
159
+ export async function pushSidebarQuotaSnapshot(getAccounts, backoffUntil = 0) {
160
+ const accounts = getAccounts();
161
+ if (!accounts || accounts.length === 0)
162
+ return;
163
+ try {
164
+ await setSidebarMachineState(buildSidebarMachineStateFromAccounts(accounts.map((entry) => ({
165
+ index: entry.index,
166
+ label: entry.label,
167
+ enabled: entry.enabled,
168
+ current: false,
169
+ coolingDownUntil: entry.coolingDownUntil,
170
+ cachedQuota: entry.cachedQuota,
171
+ })), {
172
+ checkedAt: Date.now(),
173
+ quotaBackoffUntil: backoffUntil > 0 ? backoffUntil : undefined,
174
+ }));
243
175
  }
244
- // Sort by model ID for consistent display
245
- models.sort((a, b) => a.modelId.localeCompare(b.modelId));
246
- return { models };
247
- }
248
- function applyAccountUpdates(account, auth) {
249
- const parts = parseRefreshParts(auth.refresh);
250
- if (!parts.refreshToken) {
251
- return undefined;
176
+ catch (error) {
177
+ log.debug('sidebar-quota-write-failed', { error: String(error) });
252
178
  }
253
- const updated = {
254
- ...account,
255
- refreshToken: parts.refreshToken,
256
- projectId: parts.projectId ?? account.projectId,
257
- managedProjectId: parts.managedProjectId ?? account.managedProjectId,
258
- };
259
- const changed = updated.refreshToken !== account.refreshToken ||
260
- updated.projectId !== account.projectId ||
261
- updated.managedProjectId !== account.managedProjectId;
262
- return changed ? updated : undefined;
263
179
  }
264
- export async function checkAccountsQuota(accounts, client, providerId = ANTIGRAVITY_PROVIDER_ID) {
265
- const results = [];
266
- logQuotaFetch("start", accounts.length);
267
- for (const [index, account] of accounts.entries()) {
180
+ function makeFetchAccountQuota(client, providerId, fetchVia) {
181
+ return async (account, signal) => {
182
+ const index = 0;
268
183
  const disabled = account.enabled === false;
184
+ if (disabled) {
185
+ return {
186
+ index,
187
+ email: account.email,
188
+ status: 'disabled',
189
+ disabled: true,
190
+ };
191
+ }
192
+ if (signal.aborted) {
193
+ return {
194
+ index,
195
+ email: account.email,
196
+ status: 'error',
197
+ error: signal.reason instanceof Error ? signal.reason.message : 'aborted',
198
+ };
199
+ }
269
200
  let auth = buildAuthFromAccount(account);
201
+ let rotatedRefresh;
270
202
  try {
271
203
  if (accessTokenExpired(auth)) {
272
204
  const refreshed = await refreshAccessToken(auth, client, providerId);
273
205
  if (!refreshed) {
274
- throw new Error("Token refresh failed");
206
+ throw new Error('Token refresh failed');
207
+ }
208
+ if (refreshed.refresh !== auth.refresh) {
209
+ rotatedRefresh = refreshed.refresh;
275
210
  }
276
211
  auth = refreshed;
277
212
  }
278
213
  const projectContext = await ensureProjectContext(auth);
279
214
  auth = projectContext.auth;
280
215
  const updatedAccount = applyAccountUpdates(account, auth);
281
- let quotaResult;
282
- let geminiCliQuotaResult;
283
- // Fetch both Antigravity and Gemini CLI quotas in parallel
216
+ if (rotatedRefresh && client) {
217
+ await persistRotatedRefresh(client, providerId, auth).catch(() => { });
218
+ }
284
219
  const [antigravityResponse, geminiCliResponse] = await Promise.all([
285
- fetchAvailableModels(auth.access ?? "", projectContext.effectiveProjectId)
286
- .catch((error) => ({ models: undefined })),
287
- fetchGeminiCliQuota(auth.access ?? "", projectContext.effectiveProjectId),
220
+ fetchAvailableModels({
221
+ accessToken: auth.access ?? '',
222
+ projectId: projectContext.effectiveProjectId,
223
+ endpoints: ANTIGRAVITY_ENDPOINT_FALLBACKS,
224
+ userAgent: buildAntigravityHarnessUserAgent(),
225
+ timeoutMs: 10_000,
226
+ ...(fetchVia ? { fetchVia } : {}),
227
+ }).catch(() => ({ models: undefined })),
228
+ fetchGeminiCliQuota({
229
+ accessToken: auth.access ?? '',
230
+ projectId: projectContext.effectiveProjectId,
231
+ endpoints: ANTIGRAVITY_ENDPOINT_FALLBACKS,
232
+ userAgent: buildGeminiCliUserAgent(),
233
+ timeoutMs: 10_000,
234
+ ...(fetchVia ? { fetchVia } : {}),
235
+ }),
288
236
  ]);
289
- // Process Antigravity quota
237
+ let quotaResult;
290
238
  if (antigravityResponse.models === undefined) {
291
239
  quotaResult = {
292
240
  groups: {},
293
241
  modelCount: 0,
294
- error: "Failed to fetch Antigravity quota",
242
+ error: 'Failed to fetch Antigravity quota',
295
243
  };
296
244
  }
297
245
  else {
298
246
  quotaResult = aggregateQuota(antigravityResponse.models);
299
247
  }
300
- // Process Gemini CLI quota
301
- geminiCliQuotaResult = aggregateGeminiCliQuota(geminiCliResponse);
302
- if (geminiCliResponse.buckets === undefined || geminiCliResponse.buckets.length === 0) {
303
- geminiCliQuotaResult.error = geminiCliQuotaResult.models.length === 0
304
- ? "No Gemini CLI quota available"
305
- : undefined;
248
+ const geminiCliQuotaResult = aggregateGeminiCliQuota(geminiCliResponse);
249
+ const annotated = geminiCliResponse.buckets === undefined ||
250
+ geminiCliResponse.buckets.length === 0
251
+ ? {
252
+ ...geminiCliQuotaResult,
253
+ error: geminiCliQuotaResult.models.length === 0
254
+ ? 'No Gemini CLI quota available'
255
+ : undefined,
256
+ }
257
+ : geminiCliQuotaResult;
258
+ for (const [family, groupQuota] of Object.entries(quotaResult.groups)) {
259
+ const remainingPercent = (groupQuota.remainingFraction ?? 0) * 100;
260
+ logQuotaStatus(account.email, index, remainingPercent, family);
306
261
  }
307
- results.push({
262
+ logQuotaFetch('complete', 1, 'ok=1 errors=0');
263
+ return {
308
264
  index,
309
265
  email: account.email,
310
- status: "ok",
311
- disabled,
266
+ status: 'ok',
267
+ disabled: false,
312
268
  quota: quotaResult,
313
- geminiCliQuota: geminiCliQuotaResult,
269
+ geminiCliQuota: annotated,
314
270
  updatedAccount,
315
- });
316
- // Log quota status for each family
317
- for (const [family, groupQuota] of Object.entries(quotaResult.groups)) {
318
- const remainingPercent = (groupQuota.remainingFraction ?? 0) * 100;
319
- logQuotaStatus(account.email, index, remainingPercent, family);
320
- }
271
+ };
321
272
  }
322
273
  catch (error) {
323
- results.push({
274
+ logQuotaFetch('error', undefined, `account=${account.email ?? index} error=${error instanceof Error ? error.message : String(error)}`);
275
+ return {
324
276
  index,
325
277
  email: account.email,
326
- status: "error",
327
- disabled,
278
+ status: 'error',
328
279
  error: error instanceof Error ? error.message : String(error),
329
- });
330
- logQuotaFetch("error", undefined, `account=${account.email ?? index} error=${error instanceof Error ? error.message : String(error)}`);
280
+ disabled: false,
281
+ };
331
282
  }
283
+ };
284
+ }
285
+ function buildAuthFromAccount(account) {
286
+ return {
287
+ type: 'oauth',
288
+ refresh: formatRefreshParts({
289
+ refreshToken: account.refreshToken,
290
+ projectId: account.projectId,
291
+ managedProjectId: account.managedProjectId,
292
+ }),
293
+ access: undefined,
294
+ expires: undefined,
295
+ };
296
+ }
297
+ function applyAccountUpdates(account, auth) {
298
+ const parts = parseRefreshParts(auth.refresh);
299
+ if (!parts.refreshToken) {
300
+ return undefined;
332
301
  }
333
- logQuotaFetch("complete", accounts.length, `ok=${results.filter(r => r.status === "ok").length} errors=${results.filter(r => r.status === "error").length}`);
334
- return results;
302
+ const updated = {
303
+ ...account,
304
+ refreshToken: parts.refreshToken,
305
+ projectId: parts.projectId ?? account.projectId,
306
+ managedProjectId: parts.managedProjectId ?? account.managedProjectId,
307
+ };
308
+ const changed = updated.refreshToken !== account.refreshToken ||
309
+ updated.projectId !== account.projectId ||
310
+ updated.managedProjectId !== account.managedProjectId;
311
+ return changed ? updated : undefined;
312
+ }
313
+ async function persistRotatedRefresh(client, providerId, auth) {
314
+ await client.auth.set({
315
+ path: { id: providerId },
316
+ body: {
317
+ type: 'oauth',
318
+ refresh: auth.refresh,
319
+ access: auth.access ?? '',
320
+ expires: auth.expires ?? 0,
321
+ },
322
+ });
335
323
  }
336
324
  //# sourceMappingURL=quota.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota.js","sourceRoot":"","sources":["../../../src/plugin/quota.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota.js","sourceRoot":"","sources":["../../../src/plugin/quota.ts"],"names":[],"mappings":"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"}