@kaitranntt/ccs 8.4.0 → 8.5.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (749) hide show
  1. package/README.md +5 -2
  2. package/config/base-claude.settings.json +1 -1
  3. package/config/base-glm.settings.json +4 -4
  4. package/config/base-glmt.settings.json +4 -4
  5. package/config/base-km.settings.json +4 -4
  6. package/config/base-mm.settings.json +4 -4
  7. package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -1
  8. package/dist/api/services/cliproxy-profile-bridge.js +20 -9
  9. package/dist/api/services/cliproxy-profile-bridge.js.map +1 -1
  10. package/dist/api/services/profile-lifecycle-validation.d.ts.map +1 -1
  11. package/dist/api/services/profile-lifecycle-validation.js +2 -0
  12. package/dist/api/services/profile-lifecycle-validation.js.map +1 -1
  13. package/dist/auth/commands/backup-command.d.ts.map +1 -1
  14. package/dist/auth/commands/backup-command.js +0 -1
  15. package/dist/auth/commands/backup-command.js.map +1 -1
  16. package/dist/auth/commands/create-command.d.ts.map +1 -1
  17. package/dist/auth/commands/create-command.js +4 -14
  18. package/dist/auth/commands/create-command.js.map +1 -1
  19. package/dist/auth/commands/default-command.d.ts.map +1 -1
  20. package/dist/auth/commands/default-command.js +0 -1
  21. package/dist/auth/commands/default-command.js.map +1 -1
  22. package/dist/auth/commands/index.d.ts +2 -1
  23. package/dist/auth/commands/index.d.ts.map +1 -1
  24. package/dist/auth/commands/index.js +0 -1
  25. package/dist/auth/commands/index.js.map +1 -1
  26. package/dist/auth/commands/remove-command.d.ts.map +1 -1
  27. package/dist/auth/commands/remove-command.js +0 -2
  28. package/dist/auth/commands/remove-command.js.map +1 -1
  29. package/dist/auth/commands/resources-command.d.ts.map +1 -1
  30. package/dist/auth/commands/resources-command.js +0 -1
  31. package/dist/auth/commands/resources-command.js.map +1 -1
  32. package/dist/auth/commands/show-command.d.ts.map +1 -1
  33. package/dist/auth/commands/show-command.js +0 -1
  34. package/dist/auth/commands/show-command.js.map +1 -1
  35. package/dist/auth/commands/types.d.ts.map +1 -1
  36. package/dist/auth/commands/types.js +0 -1
  37. package/dist/auth/commands/types.js.map +1 -1
  38. package/dist/auth/profile-registry.d.ts +3 -1
  39. package/dist/auth/profile-registry.d.ts.map +1 -1
  40. package/dist/auth/profile-registry.js +21 -15
  41. package/dist/auth/profile-registry.js.map +1 -1
  42. package/dist/ccs.js +27 -21
  43. package/dist/ccs.js.map +1 -1
  44. package/dist/cliproxy/accounts/account-safety.d.ts.map +1 -1
  45. package/dist/cliproxy/accounts/account-safety.js +56 -56
  46. package/dist/cliproxy/accounts/account-safety.js.map +1 -1
  47. package/dist/cliproxy/auth/antigravity-responsibility.d.ts.map +1 -1
  48. package/dist/cliproxy/auth/antigravity-responsibility.js +15 -15
  49. package/dist/cliproxy/auth/antigravity-responsibility.js.map +1 -1
  50. package/dist/cliproxy/auth/auth-token-manager.d.ts.map +1 -1
  51. package/dist/cliproxy/auth/auth-token-manager.js +2 -1
  52. package/dist/cliproxy/auth/auth-token-manager.js.map +1 -1
  53. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  54. package/dist/cliproxy/auth/auth-types.js +3 -2
  55. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  56. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  57. package/dist/cliproxy/auth/oauth-handler.js +16 -5
  58. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  59. package/dist/cliproxy/auth/provider-refreshers/index.d.ts +2 -1
  60. package/dist/cliproxy/auth/provider-refreshers/index.d.ts.map +1 -1
  61. package/dist/cliproxy/auth/provider-refreshers/index.js +4 -2
  62. package/dist/cliproxy/auth/provider-refreshers/index.js.map +1 -1
  63. package/dist/cliproxy/auth/token-manager.d.ts +2 -1
  64. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -1
  65. package/dist/cliproxy/auth/token-manager.js +2 -1
  66. package/dist/cliproxy/auth/token-manager.js.map +1 -1
  67. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -1
  68. package/dist/cliproxy/binary/lifecycle.js +3 -2
  69. package/dist/cliproxy/binary/lifecycle.js.map +1 -1
  70. package/dist/cliproxy/config/env-builder.d.ts +19 -2
  71. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  72. package/dist/cliproxy/config/env-builder.js +58 -9
  73. package/dist/cliproxy/config/env-builder.js.map +1 -1
  74. package/dist/cliproxy/config/model-config.d.ts.map +1 -1
  75. package/dist/cliproxy/config/model-config.js +32 -32
  76. package/dist/cliproxy/config/model-config.js.map +1 -1
  77. package/dist/cliproxy/executor/arg-parser.d.ts.map +1 -1
  78. package/dist/cliproxy/executor/arg-parser.js +26 -26
  79. package/dist/cliproxy/executor/arg-parser.js.map +1 -1
  80. package/dist/cliproxy/executor/auth-coordinator.d.ts.map +1 -1
  81. package/dist/cliproxy/executor/auth-coordinator.js +15 -14
  82. package/dist/cliproxy/executor/auth-coordinator.js.map +1 -1
  83. package/dist/cliproxy/executor/browser-launch-setup.d.ts.map +1 -1
  84. package/dist/cliproxy/executor/browser-launch-setup.js +6 -2
  85. package/dist/cliproxy/executor/browser-launch-setup.js.map +1 -1
  86. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  87. package/dist/cliproxy/executor/index.js +27 -17
  88. package/dist/cliproxy/executor/index.js.map +1 -1
  89. package/dist/cliproxy/executor/lifecycle-manager.d.ts.map +1 -1
  90. package/dist/cliproxy/executor/lifecycle-manager.js +18 -16
  91. package/dist/cliproxy/executor/lifecycle-manager.js.map +1 -1
  92. package/dist/cliproxy/executor/model-warnings.d.ts.map +1 -1
  93. package/dist/cliproxy/executor/model-warnings.js +24 -13
  94. package/dist/cliproxy/executor/model-warnings.js.map +1 -1
  95. package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
  96. package/dist/cliproxy/executor/retry-handler.js +13 -11
  97. package/dist/cliproxy/executor/retry-handler.js.map +1 -1
  98. package/dist/cliproxy/executor/session-bridge.d.ts.map +1 -1
  99. package/dist/cliproxy/executor/session-bridge.js +18 -10
  100. package/dist/cliproxy/executor/session-bridge.js.map +1 -1
  101. package/dist/cliproxy/management/remote-token-uploader.d.ts.map +1 -1
  102. package/dist/cliproxy/management/remote-token-uploader.js +11 -11
  103. package/dist/cliproxy/management/remote-token-uploader.js.map +1 -1
  104. package/dist/cliproxy/provider-capabilities.d.ts +6 -0
  105. package/dist/cliproxy/provider-capabilities.d.ts.map +1 -1
  106. package/dist/cliproxy/provider-capabilities.js +28 -3
  107. package/dist/cliproxy/provider-capabilities.js.map +1 -1
  108. package/dist/cliproxy/proxy/https-tunnel-proxy.d.ts +5 -1
  109. package/dist/cliproxy/proxy/https-tunnel-proxy.d.ts.map +1 -1
  110. package/dist/cliproxy/proxy/https-tunnel-proxy.js +22 -10
  111. package/dist/cliproxy/proxy/https-tunnel-proxy.js.map +1 -1
  112. package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts +0 -12
  113. package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts.map +1 -1
  114. package/dist/cliproxy/proxy/tool-sanitization-proxy.js +42 -72
  115. package/dist/cliproxy/proxy/tool-sanitization-proxy.js.map +1 -1
  116. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.d.ts +21 -0
  117. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.d.ts.map +1 -0
  118. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.js +154 -0
  119. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.js.map +1 -0
  120. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.d.ts +35 -0
  121. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.d.ts.map +1 -0
  122. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.js +98 -0
  123. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.js.map +1 -0
  124. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.d.ts +22 -0
  125. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.d.ts.map +1 -0
  126. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.js +111 -0
  127. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.js.map +1 -0
  128. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.d.ts +17 -0
  129. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.d.ts.map +1 -0
  130. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.js +85 -0
  131. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.js.map +1 -0
  132. package/dist/cliproxy/quota/quota-fetcher/constants.d.ts +25 -0
  133. package/dist/cliproxy/quota/quota-fetcher/constants.d.ts.map +1 -0
  134. package/dist/cliproxy/quota/quota-fetcher/constants.js +31 -0
  135. package/dist/cliproxy/quota/quota-fetcher/constants.js.map +1 -0
  136. package/dist/cliproxy/quota/quota-fetcher/http-client.d.ts +29 -0
  137. package/dist/cliproxy/quota/quota-fetcher/http-client.d.ts.map +1 -0
  138. package/dist/cliproxy/quota/quota-fetcher/http-client.js +199 -0
  139. package/dist/cliproxy/quota/quota-fetcher/http-client.js.map +1 -0
  140. package/dist/cliproxy/quota/quota-fetcher/project-lookup.d.ts +16 -0
  141. package/dist/cliproxy/quota/quota-fetcher/project-lookup.d.ts.map +1 -0
  142. package/dist/cliproxy/quota/quota-fetcher/project-lookup.js +89 -0
  143. package/dist/cliproxy/quota/quota-fetcher/project-lookup.js.map +1 -0
  144. package/dist/cliproxy/quota/quota-fetcher/status-classifier.d.ts +29 -0
  145. package/dist/cliproxy/quota/quota-fetcher/status-classifier.d.ts.map +1 -0
  146. package/dist/cliproxy/quota/quota-fetcher/status-classifier.js +168 -0
  147. package/dist/cliproxy/quota/quota-fetcher/status-classifier.js.map +1 -0
  148. package/dist/cliproxy/quota/quota-fetcher/types.d.ts +165 -0
  149. package/dist/cliproxy/quota/quota-fetcher/types.d.ts.map +1 -0
  150. package/dist/cliproxy/quota/quota-fetcher/types.js +9 -0
  151. package/dist/cliproxy/quota/quota-fetcher/types.js.map +1 -0
  152. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  153. package/dist/cliproxy/quota/quota-fetcher-claude.js +14 -3
  154. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  155. package/dist/cliproxy/quota/quota-fetcher-codex.d.ts.map +1 -1
  156. package/dist/cliproxy/quota/quota-fetcher-codex.js +36 -9
  157. package/dist/cliproxy/quota/quota-fetcher-codex.js.map +1 -1
  158. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.d.ts +26 -0
  159. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.d.ts.map +1 -0
  160. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.js +132 -0
  161. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.js.map +1 -0
  162. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.d.ts +23 -0
  163. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.d.ts.map +1 -0
  164. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.js +54 -0
  165. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.js.map +1 -0
  166. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.d.ts +26 -0
  167. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.d.ts.map +1 -0
  168. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.js +29 -0
  169. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.js.map +1 -0
  170. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.d.ts +61 -0
  171. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.d.ts.map +1 -0
  172. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.js +259 -0
  173. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.js.map +1 -0
  174. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.d.ts +20 -0
  175. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.d.ts.map +1 -0
  176. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.js +38 -0
  177. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.js.map +1 -0
  178. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.d.ts +82 -0
  179. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.d.ts.map +1 -0
  180. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.js +263 -0
  181. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.js.map +1 -0
  182. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.d.ts +46 -0
  183. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.d.ts.map +1 -0
  184. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.js +188 -0
  185. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.js.map +1 -0
  186. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.d.ts +35 -0
  187. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.d.ts.map +1 -0
  188. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.js +65 -0
  189. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.js.map +1 -0
  190. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.d.ts +37 -0
  191. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.d.ts.map +1 -0
  192. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.js +117 -0
  193. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.js.map +1 -0
  194. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.d.ts +31 -0
  195. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.d.ts.map +1 -0
  196. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.js +77 -0
  197. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.js.map +1 -0
  198. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.d.ts +114 -0
  199. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.d.ts.map +1 -0
  200. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.js +10 -0
  201. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.js.map +1 -0
  202. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.d.ts +13 -58
  203. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.d.ts.map +1 -1
  204. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.js +20 -819
  205. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.js.map +1 -1
  206. package/dist/cliproxy/quota/quota-fetcher-ghcp.d.ts.map +1 -1
  207. package/dist/cliproxy/quota/quota-fetcher-ghcp.js +19 -4
  208. package/dist/cliproxy/quota/quota-fetcher-ghcp.js.map +1 -1
  209. package/dist/cliproxy/quota/quota-fetcher.d.ts +12 -108
  210. package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
  211. package/dist/cliproxy/quota/quota-fetcher.js +23 -766
  212. package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
  213. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  214. package/dist/cliproxy/quota/quota-manager.js +7 -3
  215. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  216. package/dist/cliproxy/routing/routing-strategy.d.ts.map +1 -1
  217. package/dist/cliproxy/routing/routing-strategy.js +11 -3
  218. package/dist/cliproxy/routing/routing-strategy.js.map +1 -1
  219. package/dist/commands/api-command/create-command.d.ts.map +1 -1
  220. package/dist/commands/api-command/create-command.js +17 -8
  221. package/dist/commands/api-command/create-command.js.map +1 -1
  222. package/dist/commands/bar/bar-server-probe.d.ts +16 -3
  223. package/dist/commands/bar/bar-server-probe.d.ts.map +1 -1
  224. package/dist/commands/bar/bar-server-probe.js +83 -18
  225. package/dist/commands/bar/bar-server-probe.js.map +1 -1
  226. package/dist/commands/bar/help-subcommand.d.ts.map +1 -1
  227. package/dist/commands/bar/help-subcommand.js +3 -2
  228. package/dist/commands/bar/help-subcommand.js.map +1 -1
  229. package/dist/commands/bar/index.d.ts.map +1 -1
  230. package/dist/commands/bar/index.js +1 -0
  231. package/dist/commands/bar/index.js.map +1 -1
  232. package/dist/commands/bar/install-subcommand.d.ts +4 -10
  233. package/dist/commands/bar/install-subcommand.d.ts.map +1 -1
  234. package/dist/commands/bar/install-subcommand.js +44 -53
  235. package/dist/commands/bar/install-subcommand.js.map +1 -1
  236. package/dist/commands/bar/launch-subcommand.d.ts +11 -1
  237. package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
  238. package/dist/commands/bar/launch-subcommand.js +82 -15
  239. package/dist/commands/bar/launch-subcommand.js.map +1 -1
  240. package/dist/commands/cliproxy/help-subcommand.js +5 -5
  241. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  242. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  243. package/dist/commands/cliproxy/index.js +7 -2
  244. package/dist/commands/cliproxy/index.js.map +1 -1
  245. package/dist/commands/cliproxy/pool-subcommand.d.ts.map +1 -1
  246. package/dist/commands/cliproxy/pool-subcommand.js +4 -2
  247. package/dist/commands/cliproxy/pool-subcommand.js.map +1 -1
  248. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts +1 -1
  249. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts.map +1 -1
  250. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js +13 -1
  251. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js.map +1 -1
  252. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts +26 -0
  253. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts.map +1 -0
  254. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js +82 -0
  255. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js.map +1 -0
  256. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.d.ts +41 -0
  257. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.d.ts.map +1 -0
  258. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.js +202 -0
  259. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.js.map +1 -0
  260. package/dist/commands/cliproxy/quota-subcommand/format-helpers.d.ts +32 -0
  261. package/dist/commands/cliproxy/quota-subcommand/format-helpers.d.ts.map +1 -0
  262. package/dist/commands/cliproxy/quota-subcommand/format-helpers.js +90 -0
  263. package/dist/commands/cliproxy/quota-subcommand/format-helpers.js.map +1 -0
  264. package/dist/commands/cliproxy/quota-subcommand/handlers.d.ts +25 -0
  265. package/dist/commands/cliproxy/quota-subcommand/handlers.d.ts.map +1 -0
  266. package/dist/commands/cliproxy/quota-subcommand/handlers.js +245 -0
  267. package/dist/commands/cliproxy/quota-subcommand/handlers.js.map +1 -0
  268. package/dist/commands/cliproxy/quota-subcommand/profile-args.d.ts +10 -0
  269. package/dist/commands/cliproxy/quota-subcommand/profile-args.d.ts.map +1 -0
  270. package/dist/commands/cliproxy/quota-subcommand/profile-args.js +37 -0
  271. package/dist/commands/cliproxy/quota-subcommand/profile-args.js.map +1 -0
  272. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.d.ts +12 -0
  273. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.d.ts.map +1 -0
  274. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.js +64 -0
  275. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.js.map +1 -0
  276. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.d.ts +27 -0
  277. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.d.ts.map +1 -0
  278. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.js +74 -0
  279. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.js.map +1 -0
  280. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.d.ts +10 -0
  281. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.d.ts.map +1 -0
  282. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.js +46 -0
  283. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.js.map +1 -0
  284. package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts +14 -0
  285. package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts.map +1 -0
  286. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js +68 -0
  287. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js.map +1 -0
  288. package/dist/commands/cliproxy/quota-subcommand/sections/codex.d.ts +14 -0
  289. package/dist/commands/cliproxy/quota-subcommand/sections/codex.d.ts.map +1 -0
  290. package/dist/commands/cliproxy/quota-subcommand/sections/codex.js +82 -0
  291. package/dist/commands/cliproxy/quota-subcommand/sections/codex.js.map +1 -0
  292. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.d.ts +14 -0
  293. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.d.ts.map +1 -0
  294. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js +61 -0
  295. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js.map +1 -0
  296. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.d.ts +13 -0
  297. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.d.ts.map +1 -0
  298. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.js +63 -0
  299. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.js.map +1 -0
  300. package/dist/commands/cliproxy/quota-subcommand/test-exports.d.ts +19 -0
  301. package/dist/commands/cliproxy/quota-subcommand/test-exports.d.ts.map +1 -0
  302. package/dist/commands/cliproxy/quota-subcommand/test-exports.js +22 -0
  303. package/dist/commands/cliproxy/quota-subcommand/test-exports.js.map +1 -0
  304. package/dist/commands/cliproxy/quota-subcommand/types.d.ts +42 -0
  305. package/dist/commands/cliproxy/quota-subcommand/types.d.ts.map +1 -0
  306. package/dist/commands/cliproxy/quota-subcommand/types.js +9 -0
  307. package/dist/commands/cliproxy/quota-subcommand/types.js.map +1 -0
  308. package/dist/commands/cliproxy/quota-subcommand.d.ts +14 -36
  309. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  310. package/dist/commands/cliproxy/quota-subcommand.js +21 -872
  311. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  312. package/dist/commands/command-catalog.js +1 -1
  313. package/dist/commands/command-catalog.js.map +1 -1
  314. package/dist/commands/config-channels-command.d.ts +1 -1
  315. package/dist/commands/config-channels-command.d.ts.map +1 -1
  316. package/dist/commands/config-channels-command.js +3 -3
  317. package/dist/commands/config-channels-command.js.map +1 -1
  318. package/dist/commands/config-command-options.d.ts.map +1 -1
  319. package/dist/commands/config-command-options.js +11 -2
  320. package/dist/commands/config-command-options.js.map +1 -1
  321. package/dist/commands/persist-command/arg-parsing.d.ts +14 -0
  322. package/dist/commands/persist-command/arg-parsing.d.ts.map +1 -0
  323. package/dist/commands/persist-command/arg-parsing.js +84 -0
  324. package/dist/commands/persist-command/arg-parsing.js.map +1 -0
  325. package/dist/commands/persist-command/backup-rotation.d.ts +23 -0
  326. package/dist/commands/persist-command/backup-rotation.d.ts.map +1 -0
  327. package/dist/commands/persist-command/backup-rotation.js +265 -0
  328. package/dist/commands/persist-command/backup-rotation.js.map +1 -0
  329. package/dist/commands/persist-command/handler.d.ts +10 -0
  330. package/dist/commands/persist-command/handler.d.ts.map +1 -0
  331. package/dist/commands/persist-command/handler.js +267 -0
  332. package/dist/commands/persist-command/handler.js.map +1 -0
  333. package/dist/commands/persist-command/help.d.ts +9 -0
  334. package/dist/commands/persist-command/help.d.ts.map +1 -0
  335. package/dist/commands/persist-command/help.js +86 -0
  336. package/dist/commands/persist-command/help.js.map +1 -0
  337. package/dist/commands/persist-command/receipt.d.ts +13 -0
  338. package/dist/commands/persist-command/receipt.d.ts.map +1 -0
  339. package/dist/commands/persist-command/receipt.js +102 -0
  340. package/dist/commands/persist-command/receipt.js.map +1 -0
  341. package/dist/commands/persist-command/secret-detection.d.ts +11 -0
  342. package/dist/commands/persist-command/secret-detection.d.ts.map +1 -0
  343. package/dist/commands/persist-command/secret-detection.js +54 -0
  344. package/dist/commands/persist-command/secret-detection.js.map +1 -0
  345. package/dist/commands/persist-command/secure-file.d.ts +21 -0
  346. package/dist/commands/persist-command/secure-file.d.ts.map +1 -0
  347. package/dist/commands/persist-command/secure-file.js +231 -0
  348. package/dist/commands/persist-command/secure-file.js.map +1 -0
  349. package/dist/commands/persist-command/types.d.ts +42 -0
  350. package/dist/commands/persist-command/types.d.ts.map +1 -0
  351. package/dist/commands/persist-command/types.js +34 -0
  352. package/dist/commands/persist-command/types.js.map +1 -0
  353. package/dist/commands/persist-command.d.ts +7 -2
  354. package/dist/commands/persist-command.d.ts.map +1 -1
  355. package/dist/commands/persist-command.js +17 -933
  356. package/dist/commands/persist-command.js.map +1 -1
  357. package/dist/commands/proxy-command.d.ts.map +1 -1
  358. package/dist/commands/proxy-command.js +7 -1
  359. package/dist/commands/proxy-command.js.map +1 -1
  360. package/dist/commands/setup-command.d.ts.map +1 -1
  361. package/dist/commands/setup-command.js +11 -1
  362. package/dist/commands/setup-command.js.map +1 -1
  363. package/dist/commands/tokens-command.d.ts.map +1 -1
  364. package/dist/commands/tokens-command.js +6 -0
  365. package/dist/commands/tokens-command.js.map +1 -1
  366. package/dist/config/config-loader-facade.d.ts +1 -1
  367. package/dist/config/config-loader-facade.d.ts.map +1 -1
  368. package/dist/config/config-loader-facade.js +3 -1
  369. package/dist/config/config-loader-facade.js.map +1 -1
  370. package/dist/config/loader/config-getters.d.ts +16 -0
  371. package/dist/config/loader/config-getters.d.ts.map +1 -1
  372. package/dist/config/loader/config-getters.js +33 -1
  373. package/dist/config/loader/config-getters.js.map +1 -1
  374. package/dist/config/loader/defaults-merger.d.ts.map +1 -1
  375. package/dist/config/loader/defaults-merger.js +4 -0
  376. package/dist/config/loader/defaults-merger.js.map +1 -1
  377. package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
  378. package/dist/config/loader/yaml-serializer.js +13 -0
  379. package/dist/config/loader/yaml-serializer.js.map +1 -1
  380. package/dist/config/schemas/index.d.ts +2 -0
  381. package/dist/config/schemas/index.d.ts.map +1 -1
  382. package/dist/config/schemas/index.js +5 -1
  383. package/dist/config/schemas/index.js.map +1 -1
  384. package/dist/config/schemas/runtime.d.ts +57 -0
  385. package/dist/config/schemas/runtime.d.ts.map +1 -0
  386. package/dist/config/schemas/runtime.js +51 -0
  387. package/dist/config/schemas/runtime.js.map +1 -0
  388. package/dist/config/schemas/unified-config.d.ts +3 -0
  389. package/dist/config/schemas/unified-config.d.ts.map +1 -1
  390. package/dist/config/schemas/unified-config.js.map +1 -1
  391. package/dist/config/unified-config-loader.d.ts +1 -1
  392. package/dist/config/unified-config-loader.d.ts.map +1 -1
  393. package/dist/config/unified-config-loader.js +25 -13
  394. package/dist/config/unified-config-loader.js.map +1 -1
  395. package/dist/copilot/copilot-executor.js +25 -25
  396. package/dist/copilot/copilot-executor.js.map +1 -1
  397. package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
  398. package/dist/cursor/cursor-daemon-entry.js +34 -9
  399. package/dist/cursor/cursor-daemon-entry.js.map +1 -1
  400. package/dist/cursor/cursor-daemon.d.ts.map +1 -1
  401. package/dist/cursor/cursor-daemon.js +1 -0
  402. package/dist/cursor/cursor-daemon.js.map +1 -1
  403. package/dist/cursor/cursor-profile-executor.d.ts.map +1 -1
  404. package/dist/cursor/cursor-profile-executor.js +18 -17
  405. package/dist/cursor/cursor-profile-executor.js.map +1 -1
  406. package/dist/delegation/delegation-handler.d.ts.map +1 -1
  407. package/dist/delegation/delegation-handler.js +29 -23
  408. package/dist/delegation/delegation-handler.js.map +1 -1
  409. package/dist/delegation/headless-executor.d.ts +1 -0
  410. package/dist/delegation/headless-executor.d.ts.map +1 -1
  411. package/dist/delegation/headless-executor.js +36 -15
  412. package/dist/delegation/headless-executor.js.map +1 -1
  413. package/dist/delegation/session-manager.d.ts.map +1 -1
  414. package/dist/delegation/session-manager.js +12 -4
  415. package/dist/delegation/session-manager.js.map +1 -1
  416. package/dist/dispatcher/cli-argument-parser.d.ts +1 -1
  417. package/dist/dispatcher/cli-argument-parser.d.ts.map +1 -1
  418. package/dist/dispatcher/cli-argument-parser.js +24 -23
  419. package/dist/dispatcher/cli-argument-parser.js.map +1 -1
  420. package/dist/dispatcher/flows/cliproxy-flow.d.ts.map +1 -1
  421. package/dist/dispatcher/flows/cliproxy-flow.js +12 -15
  422. package/dist/dispatcher/flows/cliproxy-flow.js.map +1 -1
  423. package/dist/dispatcher/flows/copilot-flow.js +1 -1
  424. package/dist/dispatcher/flows/copilot-flow.js.map +1 -1
  425. package/dist/dispatcher/flows/cursor-flow.js +1 -1
  426. package/dist/dispatcher/flows/cursor-flow.js.map +1 -1
  427. package/dist/dispatcher/flows/settings-flow.d.ts.map +1 -1
  428. package/dist/dispatcher/flows/settings-flow.js +32 -29
  429. package/dist/dispatcher/flows/settings-flow.js.map +1 -1
  430. package/dist/dispatcher/pre-dispatch.d.ts.map +1 -1
  431. package/dist/dispatcher/pre-dispatch.js +26 -10
  432. package/dist/dispatcher/pre-dispatch.js.map +1 -1
  433. package/dist/dispatcher/profile-resolver.d.ts +1 -1
  434. package/dist/dispatcher/profile-resolver.d.ts.map +1 -1
  435. package/dist/dispatcher/profile-resolver.js +36 -23
  436. package/dist/dispatcher/profile-resolver.js.map +1 -1
  437. package/dist/docker/supervisord-lifecycle.d.ts.map +1 -1
  438. package/dist/docker/supervisord-lifecycle.js +5 -1
  439. package/dist/docker/supervisord-lifecycle.js.map +1 -1
  440. package/dist/errors/error-types.d.ts +26 -22
  441. package/dist/errors/error-types.d.ts.map +1 -1
  442. package/dist/errors/error-types.js +15 -12
  443. package/dist/errors/error-types.js.map +1 -1
  444. package/dist/errors/exit-codes.d.ts +20 -13
  445. package/dist/errors/exit-codes.d.ts.map +1 -1
  446. package/dist/errors/exit-codes.js +32 -28
  447. package/dist/errors/exit-codes.js.map +1 -1
  448. package/dist/glmt/delta-accumulator.d.ts +1 -0
  449. package/dist/glmt/delta-accumulator.d.ts.map +1 -1
  450. package/dist/glmt/delta-accumulator.js +12 -4
  451. package/dist/glmt/delta-accumulator.js.map +1 -1
  452. package/dist/glmt/glmt-proxy.d.ts.map +1 -1
  453. package/dist/glmt/glmt-proxy.js +39 -10
  454. package/dist/glmt/glmt-proxy.js.map +1 -1
  455. package/dist/glmt/glmt-transformer.d.ts.map +1 -1
  456. package/dist/glmt/glmt-transformer.js +1 -4
  457. package/dist/glmt/glmt-transformer.js.map +1 -1
  458. package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -1
  459. package/dist/glmt/pipeline/request-transformer.js +5 -1
  460. package/dist/glmt/pipeline/request-transformer.js.map +1 -1
  461. package/dist/glmt/pipeline/response-builder.d.ts.map +1 -1
  462. package/dist/glmt/pipeline/response-builder.js +7 -3
  463. package/dist/glmt/pipeline/response-builder.js.map +1 -1
  464. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -1
  465. package/dist/glmt/pipeline/stream-parser.js +11 -5
  466. package/dist/glmt/pipeline/stream-parser.js.map +1 -1
  467. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -1
  468. package/dist/glmt/pipeline/tool-call-handler.js +7 -1
  469. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -1
  470. package/dist/glmt/sse-parser.d.ts +1 -0
  471. package/dist/glmt/sse-parser.d.ts.map +1 -1
  472. package/dist/glmt/sse-parser.js +7 -3
  473. package/dist/glmt/sse-parser.js.map +1 -1
  474. package/dist/management/checks/cliproxy-check.d.ts.map +1 -1
  475. package/dist/management/checks/cliproxy-check.js +15 -1
  476. package/dist/management/checks/cliproxy-check.js.map +1 -1
  477. package/dist/management/checks/config-check.d.ts.map +1 -1
  478. package/dist/management/checks/config-check.js +4 -1
  479. package/dist/management/checks/config-check.js.map +1 -1
  480. package/dist/management/checks/profile-check.d.ts.map +1 -1
  481. package/dist/management/checks/profile-check.js +10 -6
  482. package/dist/management/checks/profile-check.js.map +1 -1
  483. package/dist/management/doctor.d.ts +7 -0
  484. package/dist/management/doctor.d.ts.map +1 -1
  485. package/dist/management/doctor.js +31 -9
  486. package/dist/management/doctor.js.map +1 -1
  487. package/dist/management/shared-manager/fs-helpers.d.ts +69 -0
  488. package/dist/management/shared-manager/fs-helpers.d.ts.map +1 -0
  489. package/dist/management/shared-manager/fs-helpers.js +241 -0
  490. package/dist/management/shared-manager/fs-helpers.js.map +1 -0
  491. package/dist/management/shared-manager/migrations.d.ts +21 -0
  492. package/dist/management/shared-manager/migrations.d.ts.map +1 -0
  493. package/dist/management/shared-manager/migrations.js +187 -0
  494. package/dist/management/shared-manager/migrations.js.map +1 -0
  495. package/dist/management/shared-manager/orchestrator.d.ts +87 -0
  496. package/dist/management/shared-manager/orchestrator.d.ts.map +1 -0
  497. package/dist/management/shared-manager/orchestrator.js +161 -0
  498. package/dist/management/shared-manager/orchestrator.js.map +1 -0
  499. package/dist/management/shared-manager/plugin-layout-internals.d.ts +42 -0
  500. package/dist/management/shared-manager/plugin-layout-internals.d.ts.map +1 -0
  501. package/dist/management/shared-manager/plugin-layout-internals.js +192 -0
  502. package/dist/management/shared-manager/plugin-layout-internals.js.map +1 -0
  503. package/dist/management/shared-manager/plugin-metadata-normalizer.d.ts +53 -0
  504. package/dist/management/shared-manager/plugin-metadata-normalizer.d.ts.map +1 -0
  505. package/dist/management/shared-manager/plugin-metadata-normalizer.js +253 -0
  506. package/dist/management/shared-manager/plugin-metadata-normalizer.js.map +1 -0
  507. package/dist/management/shared-manager/project-context-sync.d.ts +36 -0
  508. package/dist/management/shared-manager/project-context-sync.d.ts.map +1 -0
  509. package/dist/management/shared-manager/project-context-sync.js +204 -0
  510. package/dist/management/shared-manager/project-context-sync.js.map +1 -0
  511. package/dist/management/shared-manager/project-memory-sync.d.ts +21 -0
  512. package/dist/management/shared-manager/project-memory-sync.d.ts.map +1 -0
  513. package/dist/management/shared-manager/project-memory-sync.js +113 -0
  514. package/dist/management/shared-manager/project-memory-sync.js.map +1 -0
  515. package/dist/management/shared-manager/shared-dir-linker.d.ts +41 -0
  516. package/dist/management/shared-manager/shared-dir-linker.d.ts.map +1 -0
  517. package/dist/management/shared-manager/shared-dir-linker.js +227 -0
  518. package/dist/management/shared-manager/shared-dir-linker.js.map +1 -0
  519. package/dist/management/shared-manager/symlink-helpers.d.ts +61 -0
  520. package/dist/management/shared-manager/symlink-helpers.d.ts.map +1 -0
  521. package/dist/management/shared-manager/symlink-helpers.js +243 -0
  522. package/dist/management/shared-manager/symlink-helpers.js.map +1 -0
  523. package/dist/management/shared-manager/types.d.ts +45 -0
  524. package/dist/management/shared-manager/types.d.ts.map +1 -0
  525. package/dist/management/shared-manager/types.js +57 -0
  526. package/dist/management/shared-manager/types.js.map +1 -0
  527. package/dist/management/shared-manager.d.ts +13 -160
  528. package/dist/management/shared-manager.d.ts.map +1 -1
  529. package/dist/management/shared-manager.js +18 -1294
  530. package/dist/management/shared-manager.js.map +1 -1
  531. package/dist/proxy/proxy-daemon-entry.js +1 -1
  532. package/dist/proxy/proxy-daemon-entry.js.map +1 -1
  533. package/dist/proxy/server/messages-route.d.ts +10 -0
  534. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  535. package/dist/proxy/server/messages-route.js +34 -7
  536. package/dist/proxy/server/messages-route.js.map +1 -1
  537. package/dist/proxy/server/proxy-server.d.ts.map +1 -1
  538. package/dist/proxy/server/proxy-server.js +1 -1
  539. package/dist/proxy/server/proxy-server.js.map +1 -1
  540. package/dist/proxy/transformers/sse-stream-transformer.d.ts.map +1 -1
  541. package/dist/proxy/transformers/sse-stream-transformer.js +12 -17
  542. package/dist/proxy/transformers/sse-stream-transformer.js.map +1 -1
  543. package/dist/services/logging/index.d.ts +1 -1
  544. package/dist/services/logging/index.d.ts.map +1 -1
  545. package/dist/services/logging/index.js +6 -1
  546. package/dist/services/logging/index.js.map +1 -1
  547. package/dist/services/logging/log-context.d.ts +27 -2
  548. package/dist/services/logging/log-context.d.ts.map +1 -1
  549. package/dist/services/logging/log-context.js +43 -4
  550. package/dist/services/logging/log-context.js.map +1 -1
  551. package/dist/services/logging/log-redaction.d.ts +9 -0
  552. package/dist/services/logging/log-redaction.d.ts.map +1 -1
  553. package/dist/services/logging/log-redaction.js +31 -3
  554. package/dist/services/logging/log-redaction.js.map +1 -1
  555. package/dist/services/logging/logger.js +2 -2
  556. package/dist/services/logging/logger.js.map +1 -1
  557. package/dist/shared/provider-preset-catalog.d.ts +1 -1
  558. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  559. package/dist/shared/provider-preset-catalog.js +21 -7
  560. package/dist/shared/provider-preset-catalog.js.map +1 -1
  561. package/dist/targets/claude-adapter.d.ts.map +1 -1
  562. package/dist/targets/claude-adapter.js +5 -0
  563. package/dist/targets/claude-adapter.js.map +1 -1
  564. package/dist/targets/codex-adapter.d.ts.map +1 -1
  565. package/dist/targets/codex-adapter.js +11 -10
  566. package/dist/targets/codex-adapter.js.map +1 -1
  567. package/dist/targets/codex-detector.d.ts.map +1 -1
  568. package/dist/targets/codex-detector.js +14 -0
  569. package/dist/targets/codex-detector.js.map +1 -1
  570. package/dist/targets/droid-adapter.d.ts.map +1 -1
  571. package/dist/targets/droid-adapter.js +12 -12
  572. package/dist/targets/droid-adapter.js.map +1 -1
  573. package/dist/ui/assets/{Trans-RG_sMDEu.js → Trans-GYzYLs2D.js} +1 -1
  574. package/dist/ui/assets/{accounts-yTXURc-q.js → accounts-DC1QuyI9.js} +1 -1
  575. package/dist/ui/assets/{alert-dialog-DjvPgzFs.js → alert-dialog-6SiedqmE.js} +1 -1
  576. package/dist/ui/assets/{api-Ck1dtNEM.js → api-3s21dbNJ.js} +1 -1
  577. package/dist/ui/assets/{auth-section-DBnY_LPz.js → auth-section-XBfNgVN4.js} +1 -1
  578. package/dist/ui/assets/{backups-section-Ci-uL4Of.js → backups-section-BidiiVlq.js} +1 -1
  579. package/dist/ui/assets/{channels-BeS9O5q0.js → channels-pfgPUDGt.js} +1 -1
  580. package/dist/ui/assets/{checkbox-DFeFDZBp.js → checkbox-CJw_-nvC.js} +1 -1
  581. package/dist/ui/assets/{claude-extension-DS5qN19Z.js → claude-extension-BIIUOvTJ.js} +1 -1
  582. package/dist/ui/assets/{cliproxy-D7HJH4mZ.js → cliproxy-Cq8OX0Pu.js} +1 -1
  583. package/dist/ui/assets/{cliproxy-ai-providers-oJQZXrtc.js → cliproxy-ai-providers-DI760ZF0.js} +1 -1
  584. package/dist/ui/assets/{cliproxy-control-panel-2mRPEcRj.js → cliproxy-control-panel-CBqvpOqj.js} +1 -1
  585. package/dist/ui/assets/{codex-D0AUQ6jA.js → codex-DL4OLBUu.js} +1 -1
  586. package/dist/ui/assets/{confirm-dialog-B37-CVuq.js → confirm-dialog-CC_Cc3EO.js} +1 -1
  587. package/dist/ui/assets/{copilot-KaaW-mko.js → copilot-D2kEhTXR.js} +1 -1
  588. package/dist/ui/assets/{cursor-BKiTgYi5.js → cursor-BashLrYk.js} +1 -1
  589. package/dist/ui/assets/{droid-DHdqGnFw.js → droid-DaKTINFL.js} +1 -1
  590. package/dist/ui/assets/{globalenv-section-SfZO97nU.js → globalenv-section-BQicL8L0.js} +1 -1
  591. package/dist/ui/assets/{health-CSRS9O0D.js → health-bRbE_ADg.js} +1 -1
  592. package/dist/ui/assets/{index-CGgavq2X.js → index-B2JEyN3d.js} +36 -36
  593. package/dist/ui/assets/{index-Cu_F55_O.js → index-BwZdl1HU.js} +1 -1
  594. package/dist/ui/assets/{index-DWUuSBUe.js → index-CgeAb1-K.js} +1 -1
  595. package/dist/ui/assets/{index-iQuEEGbH.js → index-DAQ0qIQ_.js} +1 -1
  596. package/dist/ui/assets/{index-ChTYEBCZ.js → index-O2x1grGh.js} +1 -1
  597. package/dist/ui/assets/{index-DycwEe96.js → index-WA7tK6np.js} +1 -1
  598. package/dist/ui/assets/{index-DJ66NrBH.js → index-mf2X1GwS.js} +1 -1
  599. package/dist/ui/assets/{logs-tiZ_51mo.js → logs-qrBHUJ0H.js} +1 -1
  600. package/dist/ui/assets/{masked-input-D9FVoeMA.js → masked-input-CXwQ4E-g.js} +1 -1
  601. package/dist/ui/assets/{proxy-status-widget-2k26d8pS.js → proxy-status-widget-DPz4nCzR.js} +1 -1
  602. package/dist/ui/assets/{raw-json-settings-editor-panel-CguBh93H.js → raw-json-settings-editor-panel-CcvsWVh1.js} +1 -1
  603. package/dist/ui/assets/{searchable-select-C4wShshD.js → searchable-select-EXSjNCRu.js} +1 -1
  604. package/dist/ui/assets/{separator-mvGlDdEW.js → separator-D2CTfWBQ.js} +1 -1
  605. package/dist/ui/assets/{shared-Ck0yAwbs.js → shared-DpgzhFqe.js} +1 -1
  606. package/dist/ui/assets/{table-DrUJOxKL.js → table-DwbiGRYk.js} +1 -1
  607. package/dist/ui/assets/{updates-BVHBFcq8.js → updates-D8jfIb2y.js} +1 -1
  608. package/dist/ui/assets/{use-accounts-DLtuaniS.js → use-accounts-Bwtpnx-x.js} +1 -1
  609. package/dist/ui/index.html +1 -1
  610. package/dist/utils/bar-auth-token.d.ts +4 -0
  611. package/dist/utils/bar-auth-token.d.ts.map +1 -0
  612. package/dist/utils/bar-auth-token.js +60 -0
  613. package/dist/utils/bar-auth-token.js.map +1 -0
  614. package/dist/utils/browser/browser-settings.d.ts +3 -1
  615. package/dist/utils/browser/browser-settings.d.ts.map +1 -1
  616. package/dist/utils/browser/browser-settings.js +2 -2
  617. package/dist/utils/browser/browser-settings.js.map +1 -1
  618. package/dist/utils/browser/browser-setup.d.ts.map +1 -1
  619. package/dist/utils/browser/browser-setup.js +3 -1
  620. package/dist/utils/browser/browser-setup.js.map +1 -1
  621. package/dist/utils/browser/browser-status.d.ts.map +1 -1
  622. package/dist/utils/browser/browser-status.js +4 -2
  623. package/dist/utils/browser/browser-status.js.map +1 -1
  624. package/dist/utils/fetch-proxy-setup.d.ts +3 -2
  625. package/dist/utils/fetch-proxy-setup.d.ts.map +1 -1
  626. package/dist/utils/fetch-proxy-setup.js +10 -6
  627. package/dist/utils/fetch-proxy-setup.js.map +1 -1
  628. package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -1
  629. package/dist/utils/image-analysis/mcp-installer.js +16 -13
  630. package/dist/utils/image-analysis/mcp-installer.js.map +1 -1
  631. package/dist/utils/websearch/index.d.ts +1 -1
  632. package/dist/utils/websearch/index.d.ts.map +1 -1
  633. package/dist/utils/websearch/index.js +2 -1
  634. package/dist/utils/websearch/index.js.map +1 -1
  635. package/dist/utils/websearch/mcp-installer.d.ts +8 -0
  636. package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
  637. package/dist/utils/websearch/mcp-installer.js +34 -13
  638. package/dist/utils/websearch/mcp-installer.js.map +1 -1
  639. package/dist/utils/websearch-manager.d.ts +1 -1
  640. package/dist/utils/websearch-manager.d.ts.map +1 -1
  641. package/dist/utils/websearch-manager.js +2 -1
  642. package/dist/utils/websearch-manager.js.map +1 -1
  643. package/dist/web-server/middleware/request-logging-middleware.d.ts.map +1 -1
  644. package/dist/web-server/middleware/request-logging-middleware.js +14 -9
  645. package/dist/web-server/middleware/request-logging-middleware.js.map +1 -1
  646. package/dist/web-server/model-pricing.d.ts.map +1 -1
  647. package/dist/web-server/model-pricing.js +22 -2
  648. package/dist/web-server/model-pricing.js.map +1 -1
  649. package/dist/web-server/routes/bar-routes.d.ts +12 -1
  650. package/dist/web-server/routes/bar-routes.d.ts.map +1 -1
  651. package/dist/web-server/routes/bar-routes.js +22 -6
  652. package/dist/web-server/routes/bar-routes.js.map +1 -1
  653. package/dist/web-server/routes/claude-extension-routes.d.ts.map +1 -1
  654. package/dist/web-server/routes/claude-extension-routes.js +3 -2
  655. package/dist/web-server/routes/claude-extension-routes.js.map +1 -1
  656. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +1 -0
  657. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  658. package/dist/web-server/routes/cliproxy-auth-routes.js +20 -5
  659. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  660. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.d.ts +16 -0
  661. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.d.ts.map +1 -0
  662. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.js +219 -0
  663. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.js.map +1 -0
  664. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.d.ts +12 -0
  665. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.d.ts.map +1 -0
  666. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.js +153 -0
  667. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.js.map +1 -0
  668. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.d.ts +19 -0
  669. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.d.ts.map +1 -0
  670. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.js +38 -0
  671. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.js.map +1 -0
  672. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.d.ts +13 -0
  673. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.d.ts.map +1 -0
  674. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.js +195 -0
  675. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.js.map +1 -0
  676. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.d.ts +17 -0
  677. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.d.ts.map +1 -0
  678. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.js +34 -0
  679. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.js.map +1 -0
  680. package/dist/web-server/routes/cliproxy-stats-routes/router.d.ts +10 -0
  681. package/dist/web-server/routes/cliproxy-stats-routes/router.d.ts.map +1 -0
  682. package/dist/web-server/routes/cliproxy-stats-routes/router.js +245 -0
  683. package/dist/web-server/routes/cliproxy-stats-routes/router.js.map +1 -0
  684. package/dist/web-server/routes/cliproxy-stats-routes/shared.d.ts +35 -0
  685. package/dist/web-server/routes/cliproxy-stats-routes/shared.d.ts.map +1 -0
  686. package/dist/web-server/routes/cliproxy-stats-routes/shared.js +59 -0
  687. package/dist/web-server/routes/cliproxy-stats-routes/shared.js.map +1 -0
  688. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.d.ts +44 -0
  689. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.d.ts.map +1 -0
  690. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.js +66 -0
  691. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.js.map +1 -0
  692. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +16 -57
  693. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  694. package/dist/web-server/routes/cliproxy-stats-routes.js +25 -926
  695. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  696. package/dist/web-server/routes/cliproxy-sync-routes.d.ts.map +1 -1
  697. package/dist/web-server/routes/cliproxy-sync-routes.js +9 -2
  698. package/dist/web-server/routes/cliproxy-sync-routes.js.map +1 -1
  699. package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -1
  700. package/dist/web-server/routes/copilot-settings-routes.js +2 -1
  701. package/dist/web-server/routes/copilot-settings-routes.js.map +1 -1
  702. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
  703. package/dist/web-server/routes/cursor-routes.js +3 -1
  704. package/dist/web-server/routes/cursor-routes.js.map +1 -1
  705. package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
  706. package/dist/web-server/routes/image-analysis-routes.js +2 -1
  707. package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
  708. package/dist/web-server/routes/index.d.ts.map +1 -1
  709. package/dist/web-server/routes/index.js +6 -0
  710. package/dist/web-server/routes/index.js.map +1 -1
  711. package/dist/web-server/routes/persist-routes.d.ts.map +1 -1
  712. package/dist/web-server/routes/persist-routes.js +8 -1
  713. package/dist/web-server/routes/persist-routes.js.map +1 -1
  714. package/dist/web-server/routes/proxy-routes.d.ts.map +1 -1
  715. package/dist/web-server/routes/proxy-routes.js +33 -5
  716. package/dist/web-server/routes/proxy-routes.js.map +1 -1
  717. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  718. package/dist/web-server/routes/route-helpers.js +18 -6
  719. package/dist/web-server/routes/route-helpers.js.map +1 -1
  720. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  721. package/dist/web-server/routes/settings-routes.js +7 -6
  722. package/dist/web-server/routes/settings-routes.js.map +1 -1
  723. package/dist/web-server/usage/aggregator.d.ts.map +1 -1
  724. package/dist/web-server/usage/aggregator.js +8 -8
  725. package/dist/web-server/usage/aggregator.js.map +1 -1
  726. package/dist/web-server/usage/bar-analytics.d.ts +21 -0
  727. package/dist/web-server/usage/bar-analytics.d.ts.map +1 -1
  728. package/dist/web-server/usage/bar-analytics.js +78 -9
  729. package/dist/web-server/usage/bar-analytics.js.map +1 -1
  730. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
  731. package/dist/web-server/usage/cliproxy-usage-transformer.js +9 -4
  732. package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
  733. package/dist/web-server/usage/codex-local-quota-collector.d.ts +2 -2
  734. package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -1
  735. package/dist/web-server/usage/codex-local-quota-collector.js +39 -11
  736. package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -1
  737. package/dist/web-server/usage/handlers.d.ts.map +1 -1
  738. package/dist/web-server/usage/handlers.js +1 -1
  739. package/dist/web-server/usage/handlers.js.map +1 -1
  740. package/dist/web-server/usage/native-quota-collector.d.ts +37 -9
  741. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
  742. package/dist/web-server/usage/native-quota-collector.js +226 -23
  743. package/dist/web-server/usage/native-quota-collector.js.map +1 -1
  744. package/package.json +1 -1
  745. package/scripts/ci-parity-gate.sh +31 -0
  746. package/scripts/generate-throw-error-baseline.js +103 -0
  747. package/scripts/github/stable-release-issue-cleanup-lib.mjs +51 -11
  748. package/scripts/hardening-inventory.js +62 -4
  749. package/scripts/maintainability-metrics.js +356 -0
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ /**
3
+ * Managed and direct HTTP request machinery for the Gemini CLI quota fetcher.
4
+ *
5
+ * Wraps the two upstream call paths used when fetching Gemini CLI quota and
6
+ * supplementary metadata:
7
+ * - managed: delegated through the CLIProxy management API (uses $TOKEN$
8
+ * substitution so the local process never holds the live token)
9
+ * - direct: bearer-token fetch against the Google Cloud Code endpoint
10
+ *
11
+ * The preferred path is configurable per call. On a 401 from the direct path,
12
+ * the managed path is retried as a delegated-auth refresh fallback. A
13
+ * `GeminiManagedAuthUnavailableError` is thrown when managed auth is required
14
+ * but unreachable, so callers can surface a retryable failure result.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.performGeminiCliRequest = exports.performManagedGeminiRequest = exports.getManagedGeminiAuthIndex = exports.findManagedGeminiAuthIndex = exports.isGeminiAuthFileForAccount = exports.isGeminiAuthFile = exports.readManagedResponse = exports.GeminiManagedAuthUnavailableError = void 0;
18
+ const proxy_target_resolver_1 = require("../../proxy/proxy-target-resolver");
19
+ const provider_capabilities_1 = require("../../provider-capabilities");
20
+ const auth_utils_1 = require("../../auth/auth-utils");
21
+ const constants_1 = require("./constants");
22
+ const shared_utils_1 = require("./shared-utils");
23
+ /**
24
+ * Thrown when Gemini delegated auth refresh via the CLIProxy management API
25
+ * is required but temporarily unreachable. Callers translate this into a
26
+ * retryable failure result.
27
+ */
28
+ class GeminiManagedAuthUnavailableError extends Error {
29
+ constructor() {
30
+ super('CLIProxy managed Gemini auth is temporarily unavailable');
31
+ this.name = 'GeminiManagedAuthUnavailableError';
32
+ }
33
+ }
34
+ exports.GeminiManagedAuthUnavailableError = GeminiManagedAuthUnavailableError;
35
+ /**
36
+ * Read a fetch Response into the normalized {@link ManagedResponse} shape.
37
+ * `viaManagement` marks whether the response came through the managed API so
38
+ * downstream log messages can attribute the source correctly.
39
+ */
40
+ async function readManagedResponse(response, viaManagement) {
41
+ const bodyText = await response.text();
42
+ return {
43
+ status: response.status,
44
+ bodyText,
45
+ json: (0, shared_utils_1.safeParseJson)(bodyText),
46
+ viaManagement,
47
+ };
48
+ }
49
+ exports.readManagedResponse = readManagedResponse;
50
+ /**
51
+ * Check whether a filename matches the Gemini CLI auth file naming patterns.
52
+ * Recognizes three patterns:
53
+ * - legacy: gemini-*.json
54
+ * - new: *-gen-lang-client-*.json
55
+ * - email: contains "@" (verified against type inside the payload later)
56
+ */
57
+ function isGeminiAuthFile(filename) {
58
+ if (!filename.endsWith('.json'))
59
+ return false;
60
+ // Legacy pattern: gemini-email.json
61
+ if (filename.startsWith('gemini-'))
62
+ return true;
63
+ // New pattern: email-gen-lang-client-projectId.json
64
+ if (filename.includes('-gen-lang-client-'))
65
+ return true;
66
+ // Check if contains @ (email pattern) - will verify type inside
67
+ if (filename.includes('@'))
68
+ return true;
69
+ return false;
70
+ }
71
+ exports.isGeminiAuthFile = isGeminiAuthFile;
72
+ /**
73
+ * Determine whether a management-API auth-file descriptor belongs to the
74
+ * given Gemini account. Matches on provider/type normalized to "gemini",
75
+ * then on email, filename, or sanitized email substring.
76
+ */
77
+ function isGeminiAuthFileForAccount(file, accountId) {
78
+ const rawProvider = (0, shared_utils_1.normalizeStringValue)(file.provider ?? file.type);
79
+ if (!rawProvider || (0, provider_capabilities_1.mapExternalProviderName)(rawProvider) !== 'gemini') {
80
+ return false;
81
+ }
82
+ const email = (0, shared_utils_1.normalizeStringValue)(file.email);
83
+ const normalizedAccountId = accountId.trim().toLowerCase();
84
+ if (email?.toLowerCase() === normalizedAccountId) {
85
+ return true;
86
+ }
87
+ const normalizedName = (0, shared_utils_1.normalizeStringValue)(file.name);
88
+ if (!normalizedName) {
89
+ return false;
90
+ }
91
+ const normalizedFileName = normalizedName.toLowerCase();
92
+ const sanitizedAccount = (0, auth_utils_1.sanitizeEmail)(accountId).toLowerCase();
93
+ return (normalizedFileName === `gemini-${sanitizedAccount}.json` ||
94
+ normalizedFileName.startsWith(`${normalizedAccountId}-gen-lang-client-`) ||
95
+ normalizedFileName.includes(sanitizedAccount));
96
+ }
97
+ exports.isGeminiAuthFileForAccount = isGeminiAuthFileForAccount;
98
+ /**
99
+ * Look up the management-API auth index for a Gemini account.
100
+ * Hits `/v0/management/auth-files` and matches the entry for this account.
101
+ * Returns `{ unavailable: true }` if the management API is unreachable or
102
+ * returns a non-OK response, so callers can fall back to direct auth.
103
+ */
104
+ async function findManagedGeminiAuthIndex(accountId, timeoutMs) {
105
+ const target = (0, proxy_target_resolver_1.getProxyTarget)();
106
+ const controller = new AbortController();
107
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
108
+ try {
109
+ const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, '/v0/management/auth-files'), {
110
+ signal: controller.signal,
111
+ headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target),
112
+ });
113
+ clearTimeout(timeoutId);
114
+ if (!response.ok) {
115
+ return { authIndex: null, unavailable: true };
116
+ }
117
+ const data = (await response.json());
118
+ const match = data.files?.find((file) => isGeminiAuthFileForAccount(file, accountId));
119
+ return { authIndex: match?.auth_index ?? null, unavailable: false };
120
+ }
121
+ catch {
122
+ clearTimeout(timeoutId);
123
+ return { authIndex: null, unavailable: true };
124
+ }
125
+ }
126
+ exports.findManagedGeminiAuthIndex = findManagedGeminiAuthIndex;
127
+ /**
128
+ * Look up the management auth index for a Gemini account, deduping concurrent
129
+ * lookups for the same account via the shared {@link ManagedGeminiAuthContext}.
130
+ * The first caller wins; subsequent callers await the same promise.
131
+ */
132
+ async function getManagedGeminiAuthIndex(accountId, timeoutMs, context) {
133
+ if (!context) {
134
+ return await findManagedGeminiAuthIndex(accountId, timeoutMs);
135
+ }
136
+ context.authIndexLookupPromise ?? (context.authIndexLookupPromise = findManagedGeminiAuthIndex(accountId, timeoutMs));
137
+ return await context.authIndexLookupPromise;
138
+ }
139
+ exports.getManagedGeminiAuthIndex = getManagedGeminiAuthIndex;
140
+ /**
141
+ * Perform a single upstream request to the Gemini CLI API via the CLIProxy
142
+ * management `/v0/management/api-call` endpoint. Uses `$TOKEN$` substitution
143
+ * so the live token never leaves the management API. Returns
144
+ * `{ unavailable: true }` if the management path is unreachable; returns
145
+ * `{ response: null, unavailable: false }` if the request succeeded but no
146
+ * matching auth file was found.
147
+ */
148
+ async function performManagedGeminiRequest(accountId, url, body, timeoutMs, authContext) {
149
+ const deadlineMs = Date.now() + timeoutMs;
150
+ const lookupResult = await getManagedGeminiAuthIndex(accountId, (0, shared_utils_1.getRemainingTimeoutMs)(deadlineMs), authContext);
151
+ if (lookupResult.unavailable) {
152
+ return { response: null, unavailable: true };
153
+ }
154
+ const authIndex = lookupResult.authIndex;
155
+ if (authIndex === null || authIndex === undefined) {
156
+ return { response: null, unavailable: false };
157
+ }
158
+ const target = (0, proxy_target_resolver_1.getProxyTarget)();
159
+ const controller = new AbortController();
160
+ const timeoutId = setTimeout(() => controller.abort(), (0, shared_utils_1.getRemainingTimeoutMs)(deadlineMs));
161
+ try {
162
+ const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, '/v0/management/api-call'), {
163
+ method: 'POST',
164
+ signal: controller.signal,
165
+ headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target, {
166
+ 'Content-Type': 'application/json',
167
+ }),
168
+ body: JSON.stringify({
169
+ auth_index: authIndex,
170
+ method: 'POST',
171
+ url,
172
+ header: {
173
+ Authorization: 'Bearer $TOKEN$',
174
+ 'Content-Type': 'application/json',
175
+ },
176
+ data: body,
177
+ }),
178
+ });
179
+ clearTimeout(timeoutId);
180
+ if (!response.ok) {
181
+ return { response: null, unavailable: true };
182
+ }
183
+ const apiResponse = (await response.json());
184
+ const bodyText = typeof apiResponse.body === 'string' ? apiResponse.body : '';
185
+ return {
186
+ response: {
187
+ status: typeof apiResponse.status_code === 'number' ? apiResponse.status_code : 500,
188
+ bodyText,
189
+ json: (0, shared_utils_1.safeParseJson)(bodyText),
190
+ viaManagement: true,
191
+ },
192
+ unavailable: false,
193
+ };
194
+ }
195
+ catch {
196
+ clearTimeout(timeoutId);
197
+ return { response: null, unavailable: true };
198
+ }
199
+ }
200
+ exports.performManagedGeminiRequest = performManagedGeminiRequest;
201
+ /**
202
+ * Perform a Gemini CLI upstream request, preferring the managed path when
203
+ * requested and falling back to direct bearer-token auth. On a 401 from the
204
+ * direct path, retries via managed auth as a delegated-auth refresh; throws
205
+ * {@link GeminiManagedAuthUnavailableError} if that retry is unreachable.
206
+ *
207
+ * @param accountId Account identifier (email), used for managed auth lookup.
208
+ * @param accessToken Bearer token for the direct path. Never logged.
209
+ * @param url Target Gemini CLI API URL.
210
+ * @param body JSON request body string.
211
+ * @param preferManagement When true, try the managed path first.
212
+ * @param authContext Optional shared context to dedupe auth-index lookups.
213
+ */
214
+ async function performGeminiCliRequest(accountId, accessToken, url, body, preferManagement = false, authContext) {
215
+ let managementAttempted = false;
216
+ let managementUnavailable = false;
217
+ if (preferManagement) {
218
+ managementAttempted = true;
219
+ const managedResult = await performManagedGeminiRequest(accountId, url, body, constants_1.MANAGEMENT_API_TIMEOUT_MS, authContext);
220
+ managementUnavailable = managedResult.unavailable;
221
+ if (managedResult.response) {
222
+ return managedResult.response;
223
+ }
224
+ }
225
+ const controller = new AbortController();
226
+ const timeoutId = setTimeout(() => controller.abort(), managementAttempted ? constants_1.SECONDARY_REQUEST_TIMEOUT_MS : constants_1.MANAGEMENT_API_TIMEOUT_MS);
227
+ try {
228
+ const response = await fetch(url, {
229
+ method: 'POST',
230
+ signal: controller.signal,
231
+ headers: {
232
+ Authorization: `Bearer ${accessToken}`,
233
+ 'Content-Type': 'application/json',
234
+ },
235
+ body,
236
+ });
237
+ clearTimeout(timeoutId);
238
+ const directResult = await readManagedResponse(response, false);
239
+ if (directResult.status !== 401) {
240
+ return directResult;
241
+ }
242
+ if (managementAttempted) {
243
+ if (managementUnavailable) {
244
+ throw new GeminiManagedAuthUnavailableError();
245
+ }
246
+ return directResult;
247
+ }
248
+ const managedResult = await performManagedGeminiRequest(accountId, url, body, constants_1.SECONDARY_REQUEST_TIMEOUT_MS, authContext);
249
+ if (managedResult.response) {
250
+ return managedResult.response;
251
+ }
252
+ if (managedResult.unavailable) {
253
+ throw new GeminiManagedAuthUnavailableError();
254
+ }
255
+ return directResult;
256
+ }
257
+ catch (error) {
258
+ clearTimeout(timeoutId);
259
+ throw error;
260
+ }
261
+ }
262
+ exports.performGeminiCliRequest = performGeminiCliRequest;
263
+ //# sourceMappingURL=managed-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-request.js","sourceRoot":"","sources":["../../../../src/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,6EAI2C;AAC3C,uEAAsE;AACtE,sDAAsD;AACtD,2CAAsF;AACtF,iDAA4F;AAU5F;;;;GAIG;AACH,MAAa,iCAAkC,SAAQ,KAAK;IAC1D;QACE,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;IAClD,CAAC;CACF;AALD,8EAKC;AAED;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CACvC,QAAkB,EAClB,aAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ;QACR,IAAI,EAAE,IAAA,4BAAa,EAAC,QAAQ,CAAC;QAC7B,aAAa;KACd,CAAC;AACJ,CAAC;AAXD,kDAWC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,oCAAoC;IACpC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,oDAAoD;IACpD,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,gEAAgE;IAChE,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AATD,4CASC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,IAAwB,EAAE,SAAiB;IACpF,MAAM,WAAW,GAAG,IAAA,mCAAoB,EAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW,IAAI,IAAA,+CAAuB,EAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,mCAAoB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,IAAI,KAAK,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,IAAA,mCAAoB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,OAAO,CACL,kBAAkB,KAAK,UAAU,gBAAgB,OAAO;QACxD,kBAAkB,CAAC,UAAU,CAAC,GAAG,mBAAmB,mBAAmB,CAAC;QACxE,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAC9C,CAAC;AACJ,CAAC;AAxBD,gEAwBC;AAED;;;;;GAKG;AACI,KAAK,UAAU,0BAA0B,CAC9C,SAAiB,EACjB,SAAiB;IAEjB,MAAM,MAAM,GAAG,IAAA,sCAAc,GAAE,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAA,qCAAa,EAAC,MAAM,EAAE,2BAA2B,CAAC,EAAE;YAC/E,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,IAAA,8CAAsB,EAAC,MAAM,CAAC;SACxC,CAAC,CAAC;QACH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACtF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AA1BD,gEA0BC;AAED;;;;GAIG;AACI,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EACjB,SAAiB,EACjB,OAAkC;IAElC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,sBAAsB,KAA9B,OAAO,CAAC,sBAAsB,GAAK,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,EAAC;IACpF,OAAO,MAAM,OAAO,CAAC,sBAAsB,CAAC;AAC9C,CAAC;AAXD,8DAWC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,2BAA2B,CAC/C,SAAiB,EACjB,GAAW,EACX,IAAY,EACZ,SAAiB,EACjB,WAAsC;IAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAClD,SAAS,EACT,IAAA,oCAAqB,EAAC,UAAU,CAAC,EACjC,WAAW,CACZ,CAAC;IACF,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IACzC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,sCAAc,GAAE,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAA,oCAAqB,EAAC,UAAU,CAAC,CAAC,CAAC;IAE1F,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAA,qCAAa,EAAC,MAAM,EAAE,yBAAyB,CAAC,EAAE;YAC7E,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,IAAA,8CAAsB,EAAC,MAAM,EAAE;gBACtC,cAAc,EAAE,kBAAkB;aACnC,CAAC;YACF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,MAAM;gBACd,GAAG;gBACH,MAAM,EAAE;oBACN,aAAa,EAAE,gBAAgB;oBAC/B,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI;aACX,CAAC;SACH,CAAC,CAAC;QACH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;QACzE,MAAM,QAAQ,GAAG,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO;YACL,QAAQ,EAAE;gBACR,MAAM,EAAE,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;gBACnF,QAAQ;gBACR,IAAI,EAAE,IAAA,4BAAa,EAAC,QAAQ,CAAC;gBAC7B,aAAa,EAAE,IAAI;aACpB;YACD,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC;AAjED,kEAiEC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,WAAmB,EACnB,GAAW,EACX,IAAY,EACZ,gBAAgB,GAAG,KAAK,EACxB,WAAsC;IAEtC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAElC,IAAI,gBAAgB,EAAE,CAAC;QACrB,mBAAmB,GAAG,IAAI,CAAC;QAC3B,MAAM,aAAa,GAAG,MAAM,2BAA2B,CACrD,SAAS,EACT,GAAG,EACH,IAAI,EACJ,qCAAyB,EACzB,WAAW,CACZ,CAAC;QACF,qBAAqB,GAAG,aAAa,CAAC,WAAW,CAAC;QAClD,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC,QAAQ,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,mBAAmB,CAAC,CAAC,CAAC,wCAA4B,CAAC,CAAC,CAAC,qCAAyB,CAC/E,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI;SACL,CAAC,CAAC;QACH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,YAAY,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChC,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,MAAM,IAAI,iCAAiC,EAAE,CAAC;YAChD,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,2BAA2B,CACrD,SAAS,EACT,GAAG,EACH,IAAI,EACJ,wCAA4B,EAC5B,WAAW,CACZ,CAAC;QACF,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC,QAAQ,CAAC;QAChC,CAAC;QACD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,iCAAiC,EAAE,CAAC;QAChD,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AA1ED,0DA0EC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Top-level quota fetch orchestration for Gemini CLI accounts.
3
+ *
4
+ * Coordinates auth-file discovery, the managed/direct upstream quota request,
5
+ * supplementary tier/credit metadata, and structured failure-result building.
6
+ * Preserves the structured logging from the original god file (events:
7
+ * gemini_cli.fetch_start, gemini_cli.auth_file_missing, gemini_cli.token_expired,
8
+ * gemini_cli.missing_project_id, gemini_cli.api_status, gemini_cli.buckets_found,
9
+ * gemini_cli.quota_fetch_error). Token values are never logged.
10
+ */
11
+ import type { GeminiCliQuotaResult } from '../quota-types';
12
+ import type { GeminiCliAuthData } from './types';
13
+ /**
14
+ * Internal helper: fetch quota with already-validated auth data.
15
+ *
16
+ * Extracted to support the auto-refresh retry path: the caller resolves auth
17
+ * data once (legacy file or managed), then this function performs the upstream
18
+ * quota request and supplementary metadata fetch in parallel. On success it
19
+ * persists the resolved tier back to the account via `setAccountTier`.
20
+ */
21
+ export declare function fetchWithAuthData(authData: GeminiCliAuthData, accountId: string, verbose: boolean): Promise<GeminiCliQuotaResult>;
22
+ /**
23
+ * Fetch quota for a single Gemini CLI account.
24
+ *
25
+ * Reads the on-disk auth file, emits the structured `gemini_cli.fetch_start`
26
+ * and `gemini_cli.auth_file_missing` / `gemini_cli.token_expired` log events
27
+ * (gated on `verbose`), and delegates to {@link fetchWithAuthData}. Token
28
+ * values are never logged; only the expiry label is surfaced.
29
+ *
30
+ * @param accountId - Account identifier (email)
31
+ * @param verbose - Show detailed diagnostics
32
+ * @returns Quota result with buckets, percentages, tier, and entitlement evidence
33
+ */
34
+ export declare function fetchGeminiCliQuota(accountId: string, verbose?: boolean): Promise<GeminiCliQuotaResult>;
35
+ /**
36
+ * Fetch quota for all configured Gemini CLI accounts in parallel.
37
+ *
38
+ * @param verbose - Show detailed diagnostics (forwarded to each per-account fetch)
39
+ * @returns Array of `{ account, quota }` entries, one per active Gemini account.
40
+ * Returns an empty array when there are no Gemini accounts configured.
41
+ */
42
+ export declare function fetchAllGeminiCliQuotas(verbose?: boolean): Promise<{
43
+ account: string;
44
+ quota: GeminiCliQuotaResult;
45
+ }[]>;
46
+ //# sourceMappingURL=quota-fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-fetcher.d.ts","sourceRoot":"","sources":["../../../../src/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAQ3D,OAAO,KAAK,EAAE,iBAAiB,EAAoD,MAAM,SAAS,CAAC;AAEnG;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,CAAC,CA8H/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,GACd,OAAO,CAAC,oBAAoB,CAAC,CAoC/B;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,EAAE,CAAC,CAe7D"}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ /**
3
+ * Top-level quota fetch orchestration for Gemini CLI accounts.
4
+ *
5
+ * Coordinates auth-file discovery, the managed/direct upstream quota request,
6
+ * supplementary tier/credit metadata, and structured failure-result building.
7
+ * Preserves the structured logging from the original god file (events:
8
+ * gemini_cli.fetch_start, gemini_cli.auth_file_missing, gemini_cli.token_expired,
9
+ * gemini_cli.missing_project_id, gemini_cli.api_status, gemini_cli.buckets_found,
10
+ * gemini_cli.quota_fetch_error). Token values are never logged.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.fetchAllGeminiCliQuotas = exports.fetchGeminiCliQuota = exports.fetchWithAuthData = void 0;
14
+ const account_manager_1 = require("../../accounts/account-manager");
15
+ const auth_utils_1 = require("../../auth/auth-utils");
16
+ const provider_entitlement_evidence_1 = require("../../auth/provider-entitlement-evidence");
17
+ const auth_file_discovery_1 = require("./auth-file-discovery");
18
+ const bucket_building_1 = require("./bucket-building");
19
+ const error_parsing_1 = require("./error-parsing");
20
+ const managed_request_1 = require("./managed-request");
21
+ const supplementary_metadata_1 = require("./supplementary-metadata");
22
+ const shared_utils_1 = require("./shared-utils");
23
+ const constants_1 = require("./constants");
24
+ /**
25
+ * Internal helper: fetch quota with already-validated auth data.
26
+ *
27
+ * Extracted to support the auto-refresh retry path: the caller resolves auth
28
+ * data once (legacy file or managed), then this function performs the upstream
29
+ * quota request and supplementary metadata fetch in parallel. On success it
30
+ * persists the resolved tier back to the account via `setAccountTier`.
31
+ */
32
+ async function fetchWithAuthData(authData, accountId, verbose) {
33
+ if (!authData.projectId) {
34
+ const error = 'Cannot resolve project ID from auth file';
35
+ if (verbose) {
36
+ shared_utils_1.logger.error('gemini_cli.missing_project_id', `Error: ${error}`, {
37
+ provider: 'gemini',
38
+ accountId,
39
+ });
40
+ }
41
+ return (0, error_parsing_1.buildGeminiCliFailureResult)(accountId, null, {
42
+ error,
43
+ errorCode: 'missing_project_id',
44
+ actionHint: 'Run ccs gemini --auth to reconnect this account and recover the project ID.',
45
+ retryable: false,
46
+ });
47
+ }
48
+ const authContext = {};
49
+ const supplementaryPromise = (0, supplementary_metadata_1.fetchGeminiCliSupplementary)(accountId, authData.accessToken, authData.projectId, verbose, authContext);
50
+ const requestBody = JSON.stringify({ project: authData.projectId });
51
+ try {
52
+ const response = await (0, managed_request_1.performGeminiCliRequest)(accountId, authData.accessToken, constants_1.GEMINI_CLI_QUOTA_URL, requestBody, authData.isExpired, authContext);
53
+ if (verbose) {
54
+ const source = response.viaManagement ? 'managed' : 'direct';
55
+ shared_utils_1.logger.info('gemini_cli.api_status', `Gemini CLI API status via ${source}: ${response.status}`, { provider: 'gemini', accountId, httpStatus: response.status, source });
56
+ }
57
+ if (response.status !== 200) {
58
+ return (0, error_parsing_1.buildGeminiCliHttpFailureResult)(accountId, authData.projectId, response.status, response.bodyText);
59
+ }
60
+ const data = response.json;
61
+ const rawBuckets = data?.buckets || [];
62
+ const buckets = (0, bucket_building_1.buildGeminiCliBuckets)(rawBuckets);
63
+ const supplementary = await supplementaryPromise;
64
+ if (verbose) {
65
+ shared_utils_1.logger.info('gemini_cli.buckets_found', `Gemini CLI buckets found: ${buckets.length}`, {
66
+ provider: 'gemini',
67
+ accountId,
68
+ bucketCount: buckets.length,
69
+ });
70
+ }
71
+ if (supplementary.normalizedTier !== 'unknown') {
72
+ (0, account_manager_1.setAccountTier)('gemini', accountId, supplementary.normalizedTier);
73
+ }
74
+ return {
75
+ success: true,
76
+ buckets,
77
+ projectId: authData.projectId,
78
+ tierLabel: supplementary.tierLabel,
79
+ tierId: supplementary.tierId,
80
+ creditBalance: supplementary.creditBalance,
81
+ entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
82
+ normalizedTier: supplementary.normalizedTier,
83
+ rawTierId: supplementary.tierId,
84
+ rawTierLabel: supplementary.tierLabel,
85
+ source: supplementary.tierId ? 'runtime_api' : 'runtime_inference',
86
+ confidence: supplementary.tierId ? 'high' : 'medium',
87
+ accessState: 'entitled',
88
+ capacityState: 'available',
89
+ }),
90
+ lastUpdated: Date.now(),
91
+ accountId,
92
+ };
93
+ }
94
+ catch (err) {
95
+ if (err instanceof managed_request_1.GeminiManagedAuthUnavailableError) {
96
+ return (0, error_parsing_1.buildGeminiCliFailureResult)(accountId, authData.projectId, {
97
+ error: 'Gemini delegated auth refresh is temporarily unavailable',
98
+ errorCode: 'managed_auth_unavailable',
99
+ errorDetail: err.message,
100
+ actionHint: 'Retry later. CLIProxy management could not refresh this Gemini account.',
101
+ retryable: true,
102
+ });
103
+ }
104
+ const errorMsg = err instanceof Error && err.name === 'AbortError'
105
+ ? 'Request timeout'
106
+ : err instanceof Error
107
+ ? err.message
108
+ : 'Unknown error';
109
+ if (verbose) {
110
+ shared_utils_1.logger.error('gemini_cli.quota_fetch_error', `Gemini CLI quota error: ${errorMsg}`, {
111
+ provider: 'gemini',
112
+ accountId,
113
+ err: err instanceof Error ? { name: err.name, message: errorMsg } : { message: errorMsg },
114
+ });
115
+ }
116
+ return (0, error_parsing_1.buildGeminiCliFailureResult)(accountId, authData.projectId, {
117
+ error: errorMsg,
118
+ errorCode: err instanceof Error && err.name === 'AbortError' ? 'network_timeout' : 'network_error',
119
+ actionHint: 'Retry later. This looks temporary.',
120
+ retryable: true,
121
+ httpStatus: err instanceof Error && err.name === 'AbortError' ? 408 : undefined,
122
+ });
123
+ }
124
+ }
125
+ exports.fetchWithAuthData = fetchWithAuthData;
126
+ /**
127
+ * Fetch quota for a single Gemini CLI account.
128
+ *
129
+ * Reads the on-disk auth file, emits the structured `gemini_cli.fetch_start`
130
+ * and `gemini_cli.auth_file_missing` / `gemini_cli.token_expired` log events
131
+ * (gated on `verbose`), and delegates to {@link fetchWithAuthData}. Token
132
+ * values are never logged; only the expiry label is surfaced.
133
+ *
134
+ * @param accountId - Account identifier (email)
135
+ * @param verbose - Show detailed diagnostics
136
+ * @returns Quota result with buckets, percentages, tier, and entitlement evidence
137
+ */
138
+ async function fetchGeminiCliQuota(accountId, verbose = false) {
139
+ if (verbose) {
140
+ shared_utils_1.logger.info('gemini_cli.fetch_start', `Fetching Gemini CLI quota for ${accountId}...`, {
141
+ provider: 'gemini',
142
+ accountId,
143
+ });
144
+ }
145
+ const authData = (0, auth_file_discovery_1.readGeminiCliAuthData)(accountId);
146
+ if (!authData) {
147
+ const error = 'Auth file not found for Gemini account';
148
+ if (verbose) {
149
+ shared_utils_1.logger.error('gemini_cli.auth_file_missing', `Error: ${error}`, {
150
+ provider: 'gemini',
151
+ accountId,
152
+ });
153
+ }
154
+ return (0, error_parsing_1.buildGeminiCliFailureResult)(accountId, null, {
155
+ error,
156
+ errorCode: 'auth_file_missing',
157
+ actionHint: 'Run ccs gemini --auth to reconnect this account.',
158
+ retryable: false,
159
+ });
160
+ }
161
+ if (authData.isExpired && verbose) {
162
+ const expiresAt = (0, auth_utils_1.getTokenExpiryTimestamp)(authData.expiresAt);
163
+ const expiryLabel = expiresAt ? new Date(expiresAt).toISOString() : 'unknown';
164
+ shared_utils_1.logger.info('gemini_cli.token_expired', `Gemini access token is expired (${expiryLabel}); quota requests will defer to managed auth when available.`, { provider: 'gemini', accountId, tokenExpired: true, expiresAt: expiryLabel });
165
+ }
166
+ return await fetchWithAuthData(authData, accountId, verbose);
167
+ }
168
+ exports.fetchGeminiCliQuota = fetchGeminiCliQuota;
169
+ /**
170
+ * Fetch quota for all configured Gemini CLI accounts in parallel.
171
+ *
172
+ * @param verbose - Show detailed diagnostics (forwarded to each per-account fetch)
173
+ * @returns Array of `{ account, quota }` entries, one per active Gemini account.
174
+ * Returns an empty array when there are no Gemini accounts configured.
175
+ */
176
+ async function fetchAllGeminiCliQuotas(verbose = false) {
177
+ const accounts = (0, account_manager_1.getProviderAccounts)('gemini');
178
+ if (accounts.length === 0) {
179
+ return [];
180
+ }
181
+ const results = await Promise.all(accounts.map(async (account) => ({
182
+ account: account.id,
183
+ quota: await fetchGeminiCliQuota(account.id, verbose),
184
+ })));
185
+ return results;
186
+ }
187
+ exports.fetchAllGeminiCliQuotas = fetchAllGeminiCliQuotas;
188
+ //# sourceMappingURL=quota-fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-fetcher.js","sourceRoot":"","sources":["../../../../src/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Shared utilities for the Gemini CLI quota fetcher submodule.
3
+ *
4
+ * Includes the diagnostic logger (provider context = cliproxy:quota:gemini-cli)
5
+ * and small value-normalization helpers used by multiple submodules. Token
6
+ * values are never logged here; accountId is attached as provider context
7
+ * only.
8
+ */
9
+ /**
10
+ * Diagnostic-only logger for Gemini CLI quota fetch progress, upstream HTTP
11
+ * status, and recovery hints. Token values live in auth files and are never
12
+ * read into log messages.
13
+ */
14
+ export declare const logger: import("../../../services/logging").Logger;
15
+ /**
16
+ * Normalize a raw value into a trimmed non-empty string, or null.
17
+ * Returns null for empty strings, non-strings, or whitespace-only input.
18
+ */
19
+ export declare function normalizeStringValue(value: unknown): string | null;
20
+ /**
21
+ * Normalize a raw value into a finite number, or null.
22
+ * Accepts actual numbers and numeric strings; rejects NaN/Infinity.
23
+ */
24
+ export declare function normalizeNumberValue(value: unknown): number | null;
25
+ /**
26
+ * Best-effort JSON.parse that returns null on failure instead of throwing.
27
+ * Used when normalizing upstream response bodies into a `json` field.
28
+ */
29
+ export declare function safeParseJson(bodyText: string): unknown;
30
+ /**
31
+ * Compute the remaining milliseconds available before a deadline, clamped
32
+ * to a minimum of 1ms so AbortController timeouts are always positive.
33
+ */
34
+ export declare function getRemainingTimeoutMs(deadlineMs: number): number;
35
+ //# sourceMappingURL=shared-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-utils.d.ts","sourceRoot":"","sources":["../../../../src/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;GAIG;AACH,eAAO,MAAM,MAAM,4CAA4C,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAElE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWlE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /**
3
+ * Shared utilities for the Gemini CLI quota fetcher submodule.
4
+ *
5
+ * Includes the diagnostic logger (provider context = cliproxy:quota:gemini-cli)
6
+ * and small value-normalization helpers used by multiple submodules. Token
7
+ * values are never logged here; accountId is attached as provider context
8
+ * only.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.getRemainingTimeoutMs = exports.safeParseJson = exports.normalizeNumberValue = exports.normalizeStringValue = exports.logger = void 0;
12
+ const logging_1 = require("../../../services/logging");
13
+ /**
14
+ * Diagnostic-only logger for Gemini CLI quota fetch progress, upstream HTTP
15
+ * status, and recovery hints. Token values live in auth files and are never
16
+ * read into log messages.
17
+ */
18
+ exports.logger = (0, logging_1.createLogger)('cliproxy:quota:gemini-cli');
19
+ /**
20
+ * Normalize a raw value into a trimmed non-empty string, or null.
21
+ * Returns null for empty strings, non-strings, or whitespace-only input.
22
+ */
23
+ function normalizeStringValue(value) {
24
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
25
+ }
26
+ exports.normalizeStringValue = normalizeStringValue;
27
+ /**
28
+ * Normalize a raw value into a finite number, or null.
29
+ * Accepts actual numbers and numeric strings; rejects NaN/Infinity.
30
+ */
31
+ function normalizeNumberValue(value) {
32
+ if (typeof value === 'number' && Number.isFinite(value)) {
33
+ return value;
34
+ }
35
+ if (typeof value === 'string' && value.trim().length > 0) {
36
+ const parsed = Number(value);
37
+ if (Number.isFinite(parsed)) {
38
+ return parsed;
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+ exports.normalizeNumberValue = normalizeNumberValue;
44
+ /**
45
+ * Best-effort JSON.parse that returns null on failure instead of throwing.
46
+ * Used when normalizing upstream response bodies into a `json` field.
47
+ */
48
+ function safeParseJson(bodyText) {
49
+ try {
50
+ return JSON.parse(bodyText);
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ }
56
+ exports.safeParseJson = safeParseJson;
57
+ /**
58
+ * Compute the remaining milliseconds available before a deadline, clamped
59
+ * to a minimum of 1ms so AbortController timeouts are always positive.
60
+ */
61
+ function getRemainingTimeoutMs(deadlineMs) {
62
+ return Math.max(1, deadlineMs - Date.now());
63
+ }
64
+ exports.getRemainingTimeoutMs = getRemainingTimeoutMs;
65
+ //# sourceMappingURL=shared-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-utils.js","sourceRoot":"","sources":["../../../../src/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,uDAAyD;AAEzD;;;;GAIG;AACU,QAAA,MAAM,GAAG,IAAA,sBAAY,EAAC,2BAA2B,CAAC,CAAC;AAEhE;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpF,CAAC;AAFD,oDAEC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAc;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAXD,oDAWC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAND,sCAMC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,UAAkB;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC;AAFD,sDAEC"}