@kaitranntt/ccs 7.46.0 → 7.47.0-dev.2

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 (277) hide show
  1. package/README.md +7 -1
  2. package/dist/api/services/index.d.ts +1 -1
  3. package/dist/api/services/index.d.ts.map +1 -1
  4. package/dist/api/services/index.js +3 -1
  5. package/dist/api/services/index.js.map +1 -1
  6. package/dist/api/services/provider-presets.d.ts +9 -23
  7. package/dist/api/services/provider-presets.d.ts.map +1 -1
  8. package/dist/api/services/provider-presets.js +13 -140
  9. package/dist/api/services/provider-presets.js.map +1 -1
  10. package/dist/auth/commands/create-command.d.ts.map +1 -1
  11. package/dist/auth/commands/create-command.js +3 -2
  12. package/dist/auth/commands/create-command.js.map +1 -1
  13. package/dist/auth/profile-detector.d.ts +1 -1
  14. package/dist/auth/profile-detector.d.ts.map +1 -1
  15. package/dist/auth/profile-detector.js +31 -13
  16. package/dist/auth/profile-detector.js.map +1 -1
  17. package/dist/ccs.js +77 -102
  18. package/dist/ccs.js.map +1 -1
  19. package/dist/cliproxy/account-safety.d.ts +13 -0
  20. package/dist/cliproxy/account-safety.d.ts.map +1 -1
  21. package/dist/cliproxy/account-safety.js +54 -1
  22. package/dist/cliproxy/account-safety.js.map +1 -1
  23. package/dist/cliproxy/auth/auth-types.d.ts +1 -1
  24. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  25. package/dist/cliproxy/auth/auth-types.js +12 -55
  26. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  27. package/dist/cliproxy/auth/gemini-token-refresh.d.ts +5 -3
  28. package/dist/cliproxy/auth/gemini-token-refresh.d.ts.map +1 -1
  29. package/dist/cliproxy/auth/gemini-token-refresh.js +51 -35
  30. package/dist/cliproxy/auth/gemini-token-refresh.js.map +1 -1
  31. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  32. package/dist/cliproxy/auth/oauth-handler.js +6 -1
  33. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  34. package/dist/cliproxy/auth/provider-refreshers/index.d.ts +2 -2
  35. package/dist/cliproxy/auth/provider-refreshers/index.d.ts.map +1 -1
  36. package/dist/cliproxy/auth/provider-refreshers/index.js +34 -34
  37. package/dist/cliproxy/auth/provider-refreshers/index.js.map +1 -1
  38. package/dist/cliproxy/catalog-cache.d.ts.map +1 -1
  39. package/dist/cliproxy/catalog-cache.js +2 -1
  40. package/dist/cliproxy/catalog-cache.js.map +1 -1
  41. package/dist/cliproxy/codex-reasoning-proxy.d.ts +7 -0
  42. package/dist/cliproxy/codex-reasoning-proxy.d.ts.map +1 -1
  43. package/dist/cliproxy/codex-reasoning-proxy.js +54 -9
  44. package/dist/cliproxy/codex-reasoning-proxy.js.map +1 -1
  45. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  46. package/dist/cliproxy/config/env-builder.js +56 -15
  47. package/dist/cliproxy/config/env-builder.js.map +1 -1
  48. package/dist/cliproxy/config/extended-context-config.d.ts +1 -8
  49. package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
  50. package/dist/cliproxy/config/extended-context-config.js +8 -24
  51. package/dist/cliproxy/config/extended-context-config.js.map +1 -1
  52. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  53. package/dist/cliproxy/config/thinking-config.js +11 -9
  54. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  55. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  56. package/dist/cliproxy/executor/env-resolver.js +7 -3
  57. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  58. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  59. package/dist/cliproxy/executor/index.js +11 -1
  60. package/dist/cliproxy/executor/index.js.map +1 -1
  61. package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
  62. package/dist/cliproxy/executor/retry-handler.js +1 -0
  63. package/dist/cliproxy/executor/retry-handler.js.map +1 -1
  64. package/dist/cliproxy/executor/thinking-override-resolver.d.ts +28 -0
  65. package/dist/cliproxy/executor/thinking-override-resolver.d.ts.map +1 -0
  66. package/dist/cliproxy/executor/thinking-override-resolver.js +109 -0
  67. package/dist/cliproxy/executor/thinking-override-resolver.js.map +1 -0
  68. package/dist/cliproxy/index.d.ts +1 -0
  69. package/dist/cliproxy/index.d.ts.map +1 -1
  70. package/dist/cliproxy/index.js +12 -3
  71. package/dist/cliproxy/index.js.map +1 -1
  72. package/dist/cliproxy/management-api-client.d.ts.map +1 -1
  73. package/dist/cliproxy/management-api-client.js +16 -4
  74. package/dist/cliproxy/management-api-client.js.map +1 -1
  75. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  76. package/dist/cliproxy/model-catalog.js +7 -2
  77. package/dist/cliproxy/model-catalog.js.map +1 -1
  78. package/dist/cliproxy/model-id-normalizer.d.ts +70 -0
  79. package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -0
  80. package/dist/cliproxy/model-id-normalizer.js +120 -0
  81. package/dist/cliproxy/model-id-normalizer.js.map +1 -0
  82. package/dist/cliproxy/provider-capabilities.d.ts +27 -0
  83. package/dist/cliproxy/provider-capabilities.d.ts.map +1 -1
  84. package/dist/cliproxy/provider-capabilities.js +138 -14
  85. package/dist/cliproxy/provider-capabilities.js.map +1 -1
  86. package/dist/cliproxy/quota-fetcher-ghcp.d.ts +38 -0
  87. package/dist/cliproxy/quota-fetcher-ghcp.d.ts.map +1 -0
  88. package/dist/cliproxy/quota-fetcher-ghcp.js +207 -0
  89. package/dist/cliproxy/quota-fetcher-ghcp.js.map +1 -0
  90. package/dist/cliproxy/quota-types.d.ts +49 -2
  91. package/dist/cliproxy/quota-types.d.ts.map +1 -1
  92. package/dist/cliproxy/quota-types.js +1 -1
  93. package/dist/cliproxy/thinking-validator.d.ts +5 -0
  94. package/dist/cliproxy/thinking-validator.d.ts.map +1 -1
  95. package/dist/cliproxy/thinking-validator.js +18 -6
  96. package/dist/cliproxy/thinking-validator.js.map +1 -1
  97. package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
  98. package/dist/cliproxy/tool-sanitization-proxy.js +15 -5
  99. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
  100. package/dist/cliproxy/types.d.ts +1 -1
  101. package/dist/cliproxy/types.d.ts.map +1 -1
  102. package/dist/commands/api-command.d.ts +13 -0
  103. package/dist/commands/api-command.d.ts.map +1 -1
  104. package/dist/commands/api-command.js +112 -36
  105. package/dist/commands/api-command.js.map +1 -1
  106. package/dist/commands/arg-extractor.d.ts +29 -0
  107. package/dist/commands/arg-extractor.d.ts.map +1 -0
  108. package/dist/commands/arg-extractor.js +81 -0
  109. package/dist/commands/arg-extractor.js.map +1 -0
  110. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  111. package/dist/commands/cliproxy/help-subcommand.js +2 -1
  112. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  113. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  114. package/dist/commands/cliproxy/index.js +60 -118
  115. package/dist/commands/cliproxy/index.js.map +1 -1
  116. package/dist/commands/cliproxy/quota-subcommand.d.ts +2 -1
  117. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  118. package/dist/commands/cliproxy/quota-subcommand.js +100 -35
  119. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  120. package/dist/commands/config-command.d.ts.map +1 -1
  121. package/dist/commands/config-command.js +33 -16
  122. package/dist/commands/config-command.js.map +1 -1
  123. package/dist/commands/config-image-analysis-command.d.ts.map +1 -1
  124. package/dist/commands/config-image-analysis-command.js +37 -27
  125. package/dist/commands/config-image-analysis-command.js.map +1 -1
  126. package/dist/commands/config-thinking-command.d.ts +9 -0
  127. package/dist/commands/config-thinking-command.d.ts.map +1 -0
  128. package/dist/commands/config-thinking-command.js +237 -0
  129. package/dist/commands/config-thinking-command.js.map +1 -0
  130. package/dist/commands/config-thinking-parser.d.ts +37 -0
  131. package/dist/commands/config-thinking-parser.d.ts.map +1 -0
  132. package/dist/commands/config-thinking-parser.js +135 -0
  133. package/dist/commands/config-thinking-parser.js.map +1 -0
  134. package/dist/commands/copilot-command.d.ts.map +1 -1
  135. package/dist/commands/copilot-command.js +51 -0
  136. package/dist/commands/copilot-command.js.map +1 -1
  137. package/dist/commands/env-command.d.ts.map +1 -1
  138. package/dist/commands/env-command.js +12 -4
  139. package/dist/commands/env-command.js.map +1 -1
  140. package/dist/commands/help-command.d.ts.map +1 -1
  141. package/dist/commands/help-command.js +8 -2
  142. package/dist/commands/help-command.js.map +1 -1
  143. package/dist/commands/persist-command.d.ts.map +1 -1
  144. package/dist/commands/persist-command.js +77 -50
  145. package/dist/commands/persist-command.js.map +1 -1
  146. package/dist/commands/setup-command.d.ts.map +1 -1
  147. package/dist/commands/setup-command.js +5 -4
  148. package/dist/commands/setup-command.js.map +1 -1
  149. package/dist/commands/version-command.d.ts.map +1 -1
  150. package/dist/commands/version-command.js +16 -12
  151. package/dist/commands/version-command.js.map +1 -1
  152. package/dist/config/migration-manager.d.ts.map +1 -1
  153. package/dist/config/migration-manager.js +51 -10
  154. package/dist/config/migration-manager.js.map +1 -1
  155. package/dist/config/unified-config-types.d.ts +1 -1
  156. package/dist/copilot/copilot-executor.d.ts.map +1 -1
  157. package/dist/copilot/copilot-executor.js +3 -2
  158. package/dist/copilot/copilot-executor.js.map +1 -1
  159. package/dist/copilot/copilot-usage.d.ts +16 -0
  160. package/dist/copilot/copilot-usage.d.ts.map +1 -0
  161. package/dist/copilot/copilot-usage.js +117 -0
  162. package/dist/copilot/copilot-usage.js.map +1 -0
  163. package/dist/copilot/index.d.ts +1 -0
  164. package/dist/copilot/index.d.ts.map +1 -1
  165. package/dist/copilot/index.js +6 -1
  166. package/dist/copilot/index.js.map +1 -1
  167. package/dist/copilot/types.d.ts +31 -0
  168. package/dist/copilot/types.d.ts.map +1 -1
  169. package/dist/delegation/delegation-handler.js +1 -1
  170. package/dist/delegation/delegation-handler.js.map +1 -1
  171. package/dist/delegation/headless-executor.d.ts +1 -1
  172. package/dist/delegation/headless-executor.d.ts.map +1 -1
  173. package/dist/delegation/headless-executor.js +14 -5
  174. package/dist/delegation/headless-executor.js.map +1 -1
  175. package/dist/management/checks/config-check.d.ts.map +1 -1
  176. package/dist/management/checks/config-check.js +2 -2
  177. package/dist/management/checks/config-check.js.map +1 -1
  178. package/dist/management/checks/system-check.d.ts.map +1 -1
  179. package/dist/management/checks/system-check.js +2 -0
  180. package/dist/management/checks/system-check.js.map +1 -1
  181. package/dist/shared/extended-context-utils.d.ts +14 -0
  182. package/dist/shared/extended-context-utils.d.ts.map +1 -0
  183. package/dist/shared/extended-context-utils.js +35 -0
  184. package/dist/shared/extended-context-utils.js.map +1 -0
  185. package/dist/shared/provider-preset-catalog.d.ts +39 -0
  186. package/dist/shared/provider-preset-catalog.d.ts.map +1 -0
  187. package/dist/shared/provider-preset-catalog.js +241 -0
  188. package/dist/shared/provider-preset-catalog.js.map +1 -0
  189. package/dist/targets/claude-adapter.js +1 -1
  190. package/dist/targets/claude-adapter.js.map +1 -1
  191. package/dist/ui/assets/{accounts-DSbC2KOq.js → accounts-X_MzF4zx.js} +1 -1
  192. package/dist/ui/assets/{alert-dialog-Dj5MBrPS.js → alert-dialog-Cw-P0uZM.js} +1 -1
  193. package/dist/ui/assets/{api-BIGOe-xE.js → api-BcwoMARb.js} +1 -1
  194. package/dist/ui/assets/{auth-section-BFJ1CozG.js → auth-section-BqSvZ_5J.js} +1 -1
  195. package/dist/ui/assets/{backups-section-pfBnyzOg.js → backups-section-CGOotFRy.js} +1 -1
  196. package/dist/ui/assets/cliproxy-CWhMMbBa.js +3 -0
  197. package/dist/ui/assets/cliproxy-control-panel-DAirmXSD.js +1 -0
  198. package/dist/ui/assets/{confirm-dialog-gV1ql3Ts.js → confirm-dialog-BjFaR6B6.js} +1 -1
  199. package/dist/ui/assets/copilot-DCp1_azM.js +3 -0
  200. package/dist/ui/assets/cursor-DEUfi3ZN.js +1 -0
  201. package/dist/ui/assets/default-ports-1QQSffYX.js +1 -0
  202. package/dist/ui/assets/{globalenv-section-CYGF1tAO.js → globalenv-section-Cu4vanAq.js} +1 -1
  203. package/dist/ui/assets/{health-CmKa7iS7.js → health-ChhDKSPa.js} +1 -1
  204. package/dist/ui/assets/index-BZ51hp4b.js +1 -0
  205. package/dist/ui/assets/{index-DZJVwR0i.js → index-CHArFy3-.js} +1 -1
  206. package/dist/ui/assets/{index-BhguKKYm.js → index-FdjOeYn2.js} +1 -1
  207. package/dist/ui/assets/index-UX7yyQwV.js +47 -0
  208. package/dist/ui/assets/index-s9bW25En.js +1 -0
  209. package/dist/ui/assets/{proxy-status-widget-B0TxmrB5.js → proxy-status-widget-BLLMunUG.js} +1 -1
  210. package/dist/ui/assets/{separator-D_VeEEnJ.js → separator-Nl0gQ6QN.js} +1 -1
  211. package/dist/ui/assets/{shared-Buwj9ixP.js → shared-D7ILUK83.js} +1 -1
  212. package/dist/ui/assets/{switch-DPU26P6C.js → switch-P5H3pmrk.js} +1 -1
  213. package/dist/ui/index.html +1 -1
  214. package/dist/utils/claude-config-path.d.ts +11 -0
  215. package/dist/utils/claude-config-path.d.ts.map +1 -0
  216. package/dist/utils/claude-config-path.js +51 -0
  217. package/dist/utils/claude-config-path.js.map +1 -0
  218. package/dist/utils/claude-spawner.d.ts.map +1 -1
  219. package/dist/utils/claude-spawner.js +2 -1
  220. package/dist/utils/claude-spawner.js.map +1 -1
  221. package/dist/utils/delegation-validator.d.ts +1 -1
  222. package/dist/utils/delegation-validator.d.ts.map +1 -1
  223. package/dist/utils/delegation-validator.js +10 -4
  224. package/dist/utils/delegation-validator.js.map +1 -1
  225. package/dist/utils/percentage.d.ts +5 -0
  226. package/dist/utils/percentage.d.ts.map +1 -0
  227. package/dist/utils/percentage.js +13 -0
  228. package/dist/utils/percentage.js.map +1 -0
  229. package/dist/utils/profile-compat.d.ts +22 -0
  230. package/dist/utils/profile-compat.d.ts.map +1 -0
  231. package/dist/utils/profile-compat.js +54 -0
  232. package/dist/utils/profile-compat.js.map +1 -0
  233. package/dist/utils/shell-executor.d.ts +7 -0
  234. package/dist/utils/shell-executor.d.ts.map +1 -1
  235. package/dist/utils/shell-executor.js +21 -2
  236. package/dist/utils/shell-executor.js.map +1 -1
  237. package/dist/utils/websearch/hook-config.d.ts.map +1 -1
  238. package/dist/utils/websearch/hook-config.js +9 -23
  239. package/dist/utils/websearch/hook-config.js.map +1 -1
  240. package/dist/web-server/health/config-checks.d.ts +1 -1
  241. package/dist/web-server/health/config-checks.d.ts.map +1 -1
  242. package/dist/web-server/health/config-checks.js +43 -45
  243. package/dist/web-server/health/config-checks.js.map +1 -1
  244. package/dist/web-server/jsonl-parser.d.ts +0 -4
  245. package/dist/web-server/jsonl-parser.d.ts.map +1 -1
  246. package/dist/web-server/jsonl-parser.js +52 -29
  247. package/dist/web-server/jsonl-parser.js.map +1 -1
  248. package/dist/web-server/model-pricing.d.ts.map +1 -1
  249. package/dist/web-server/model-pricing.js +29 -16
  250. package/dist/web-server/model-pricing.js.map +1 -1
  251. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  252. package/dist/web-server/routes/cliproxy-stats-routes.js +57 -3
  253. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  254. package/dist/web-server/routes/copilot-routes.d.ts.map +1 -1
  255. package/dist/web-server/routes/copilot-routes.js +29 -0
  256. package/dist/web-server/routes/copilot-routes.js.map +1 -1
  257. package/dist/web-server/routes/misc-routes.d.ts +2 -0
  258. package/dist/web-server/routes/misc-routes.d.ts.map +1 -1
  259. package/dist/web-server/routes/misc-routes.js +38 -7
  260. package/dist/web-server/routes/misc-routes.js.map +1 -1
  261. package/dist/web-server/routes/persist-routes.d.ts.map +1 -1
  262. package/dist/web-server/routes/persist-routes.js +54 -44
  263. package/dist/web-server/routes/persist-routes.js.map +1 -1
  264. package/dist/web-server/routes/route-helpers.d.ts +0 -5
  265. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  266. package/dist/web-server/routes/route-helpers.js +52 -6
  267. package/dist/web-server/routes/route-helpers.js.map +1 -1
  268. package/dist/web-server/shared-routes.js +2 -2
  269. package/dist/web-server/shared-routes.js.map +1 -1
  270. package/package.json +1 -1
  271. package/dist/ui/assets/cliproxy-DHNUC4SO.js +0 -3
  272. package/dist/ui/assets/cliproxy-control-panel-CGHjj5lg.js +0 -1
  273. package/dist/ui/assets/copilot-ECO8m-1E.js +0 -3
  274. package/dist/ui/assets/cursor-CvqxaXRD.js +0 -1
  275. package/dist/ui/assets/index-Ctljzi2I.js +0 -1
  276. package/dist/ui/assets/index-DzvaSlcG.js +0 -47
  277. package/dist/ui/assets/index-WfdZ4D-M.js +0 -1
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Small helpers for consistent CLI option extraction.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.hasAnyFlag = exports.extractOption = void 0;
7
+ function findInlineOption(arg, flag) {
8
+ const prefix = `${flag}=`;
9
+ return arg.startsWith(prefix) ? arg.slice(prefix.length) : undefined;
10
+ }
11
+ function isKnownFlagToken(token, knownFlags) {
12
+ if (!knownFlags || knownFlags.length === 0) {
13
+ return false;
14
+ }
15
+ return knownFlags.some((flag) => token === flag || token.startsWith(`${flag}=`));
16
+ }
17
+ /**
18
+ * Extract a single-value option and remove it from args.
19
+ * Supports `--flag value` and `--flag=value` forms.
20
+ */
21
+ function extractOption(args, flags, options = {}) {
22
+ const remaining = [...args];
23
+ const allowDashValue = options.allowDashValue ?? false;
24
+ for (let i = 0; i < remaining.length; i++) {
25
+ const token = remaining[i];
26
+ for (const flag of flags) {
27
+ if (token === flag) {
28
+ const next = remaining[i + 1];
29
+ if (!next) {
30
+ remaining.splice(i, 1);
31
+ return { found: true, missingValue: true, remainingArgs: remaining };
32
+ }
33
+ const nextLooksLikeFlag = next.startsWith('-');
34
+ const nextIsKnownFlag = isKnownFlagToken(next, options.knownFlags);
35
+ if (nextLooksLikeFlag && (!allowDashValue || nextIsKnownFlag)) {
36
+ remaining.splice(i, 1);
37
+ return { found: true, missingValue: true, remainingArgs: remaining };
38
+ }
39
+ remaining.splice(i, 2);
40
+ return {
41
+ found: true,
42
+ value: next,
43
+ missingValue: false,
44
+ remainingArgs: remaining,
45
+ };
46
+ }
47
+ const inlineValue = findInlineOption(token, flag);
48
+ if (inlineValue !== undefined) {
49
+ remaining.splice(i, 1);
50
+ if (!inlineValue.trim()) {
51
+ return { found: true, missingValue: true, remainingArgs: remaining };
52
+ }
53
+ return {
54
+ found: true,
55
+ value: inlineValue,
56
+ missingValue: false,
57
+ remainingArgs: remaining,
58
+ };
59
+ }
60
+ }
61
+ }
62
+ return { found: false, missingValue: false, remainingArgs: remaining };
63
+ }
64
+ exports.extractOption = extractOption;
65
+ /** Returns true if any of the provided boolean flags are present. */
66
+ function hasAnyFlag(args, flags) {
67
+ const truthyValues = new Set(['1', 'true', 'yes', 'on']);
68
+ return args.some((arg) => flags.some((flag) => {
69
+ if (arg === flag) {
70
+ return true;
71
+ }
72
+ const prefix = `${flag}=`;
73
+ if (!arg.startsWith(prefix)) {
74
+ return false;
75
+ }
76
+ const value = arg.slice(prefix.length).trim().toLowerCase();
77
+ return truthyValues.has(value);
78
+ }));
79
+ }
80
+ exports.hasAnyFlag = hasAnyFlag;
81
+ //# sourceMappingURL=arg-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arg-extractor.js","sourceRoot":"","sources":["../../src/commands/arg-extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"help-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/cliproxy/help-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA0F9C"}
1
+ {"version":3,"file":"help-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/cliproxy/help-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA0F9C"}
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.showHelp = void 0;
10
10
  const ui_1 = require("../../utils/ui");
11
11
  const platform_detector_1 = require("../../cliproxy/platform-detector");
12
+ const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
12
13
  async function showHelp() {
13
14
  await (0, ui_1.initUI)();
14
15
  console.log('');
@@ -51,7 +52,7 @@ async function showHelp() {
51
52
  ['pause <account>', 'Pause account (skip in rotation)'],
52
53
  ['resume <account>', 'Resume paused account'],
53
54
  ['quota', 'Show quota status for all providers (Codex includes 5h + weekly reset)'],
54
- ['quota --provider <name>', 'Filter by provider (agy|codex|gemini)'],
55
+ ['quota --provider <name>', `Filter by provider (${provider_capabilities_1.QUOTA_PROVIDER_HELP_TEXT})`],
55
56
  ],
56
57
  ],
57
58
  [
@@ -1 +1 @@
1
- {"version":3,"file":"help-subcommand.js","sourceRoot":"","sources":["../../../src/commands/cliproxy/help-subcommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help-subcommand.js","sourceRoot":"","sources":["../../../src/commands/cliproxy/help-subcommand.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/cliproxy/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6IH;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+HzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/cliproxy/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0HH;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFzE"}
@@ -8,8 +8,10 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.handleCliproxyCommand = void 0;
10
10
  const platform_detector_1 = require("../../cliproxy/platform-detector");
11
+ const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
11
12
  const unified_config_loader_1 = require("../../config/unified-config-loader");
12
13
  const cliproxy_sync_handler_1 = require("../cliproxy-sync-handler");
14
+ const arg_extractor_1 = require("../arg-extractor");
13
15
  // Import subcommand handlers
14
16
  const auth_subcommand_1 = require("./auth-subcommand");
15
17
  const quota_subcommand_1 = require("./quota-subcommand");
@@ -23,30 +25,20 @@ const catalog_subcommand_1 = require("./catalog-subcommand");
23
25
  * Returns the backend value and remaining args without --backend flag
24
26
  */
25
27
  function parseBackendArg(args) {
26
- const backendIdx = args.indexOf('--backend');
27
- if (backendIdx === -1) {
28
- // Also check for --backend=value format
29
- const backendEqualsIdx = args.findIndex((a) => a.startsWith('--backend='));
30
- if (backendEqualsIdx !== -1) {
31
- const value = args[backendEqualsIdx].split('=')[1];
32
- if (value !== 'original' && value !== 'plus') {
33
- console.warn(`Invalid backend '${value}'. Valid options: original, plus`);
34
- return { backend: undefined, remainingArgs: args };
35
- }
36
- const remainingArgs = [...args];
37
- remainingArgs.splice(backendEqualsIdx, 1);
38
- return { backend: value, remainingArgs };
39
- }
28
+ const extracted = (0, arg_extractor_1.extractOption)(args, ['--backend']);
29
+ if (!extracted.found) {
40
30
  return { backend: undefined, remainingArgs: args };
41
31
  }
42
- const value = args[backendIdx + 1];
32
+ if (extracted.missingValue || !extracted.value) {
33
+ console.warn(`Invalid backend ''. Valid options: original, plus`);
34
+ return { backend: undefined, remainingArgs: extracted.remainingArgs };
35
+ }
36
+ const value = extracted.value;
43
37
  if (value !== 'original' && value !== 'plus') {
44
38
  console.warn(`Invalid backend '${value}'. Valid options: original, plus`);
45
- return { backend: undefined, remainingArgs: args };
39
+ return { backend: undefined, remainingArgs: extracted.remainingArgs };
46
40
  }
47
- const remainingArgs = [...args];
48
- remainingArgs.splice(backendIdx, 2);
49
- return { backend: value, remainingArgs };
41
+ return { backend: value, remainingArgs: extracted.remainingArgs };
50
42
  }
51
43
  /**
52
44
  * Get effective backend (CLI flag > config.yaml > default)
@@ -57,56 +49,35 @@ function getEffectiveBackend(cliBackend) {
57
49
  const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
58
50
  return config.cliproxy?.backend ?? platform_detector_1.DEFAULT_BACKEND;
59
51
  }
60
- /**
61
- * Parse --provider flag from args for quota command
62
- * Returns the provider filter value and remaining args
63
- * Accepts: agy, codex, gemini, gemini-cli, all
64
- */
52
+ function normalizeQuotaProvider(value) {
53
+ if (value === 'all') {
54
+ return 'all';
55
+ }
56
+ const canonicalProvider = (0, provider_capabilities_1.mapExternalProviderName)(value);
57
+ if (!canonicalProvider || !(0, provider_capabilities_1.isQuotaSupportedProvider)(canonicalProvider)) {
58
+ return null;
59
+ }
60
+ return canonicalProvider;
61
+ }
65
62
  function parseProviderArg(args) {
66
- const providerIdx = args.indexOf('--provider');
67
- if (providerIdx === -1) {
68
- // Also check for --provider=value format
69
- const providerEqualsIdx = args.findIndex((a) => a.startsWith('--provider='));
70
- if (providerEqualsIdx !== -1) {
71
- const value = args[providerEqualsIdx].split('=')[1]?.toLowerCase() || '';
72
- const remainingArgs = [...args];
73
- remainingArgs.splice(providerEqualsIdx, 1);
74
- // Handle empty value
75
- if (!value) {
76
- console.error('Warning: --provider requires a value. Valid options: agy, codex, gemini, gemini-cli, all');
77
- return { provider: 'all', remainingArgs };
78
- }
79
- // Normalize gemini-cli to gemini
80
- const normalized = value === 'gemini-cli' ? 'gemini' : value;
81
- if (normalized !== 'agy' &&
82
- normalized !== 'codex' &&
83
- normalized !== 'gemini' &&
84
- normalized !== 'all') {
85
- console.error(`Invalid provider '${value}'. Valid options: agy, codex, gemini, gemini-cli, all`);
86
- return { provider: 'all', remainingArgs };
87
- }
88
- return { provider: normalized, remainingArgs };
89
- }
63
+ const extracted = (0, arg_extractor_1.extractOption)(args, ['--provider']);
64
+ if (!extracted.found) {
90
65
  return { provider: 'all', remainingArgs: args };
91
66
  }
92
- const rawValue = args[providerIdx + 1];
93
- // Warn if no value or value looks like another flag
94
- if (!rawValue || rawValue.startsWith('-')) {
95
- console.error('Warning: --provider requires a value. Valid options: agy, codex, gemini, gemini-cli, all');
67
+ if (extracted.missingValue || !extracted.value) {
68
+ console.error(`Warning: --provider requires a value. Valid options: ${provider_capabilities_1.QUOTA_PROVIDER_HELP_TEXT}`);
69
+ return { provider: 'all', remainingArgs: extracted.remainingArgs };
96
70
  }
97
- const value = rawValue?.toLowerCase() || 'all';
98
- const remainingArgs = [...args];
99
- remainingArgs.splice(providerIdx, 2);
100
- // Normalize gemini-cli to gemini
101
- const normalized = value === 'gemini-cli' ? 'gemini' : value;
102
- if (normalized !== 'agy' &&
103
- normalized !== 'codex' &&
104
- normalized !== 'gemini' &&
105
- normalized !== 'all') {
106
- console.error(`Invalid provider '${value}'. Valid options: agy, codex, gemini, gemini-cli, all`);
107
- return { provider: 'all', remainingArgs };
71
+ const value = extracted.value.toLowerCase();
72
+ const normalized = normalizeQuotaProvider(value);
73
+ if (!normalized) {
74
+ console.error(`Invalid provider '${value}'. Valid options: ${provider_capabilities_1.QUOTA_PROVIDER_HELP_TEXT}`);
75
+ return { provider: 'all', remainingArgs: extracted.remainingArgs };
108
76
  }
109
- return { provider: normalized, remainingArgs };
77
+ return {
78
+ provider: normalized,
79
+ remainingArgs: extracted.remainingArgs,
80
+ };
110
81
  }
111
82
  /**
112
83
  * Main router for cliproxy commands
@@ -115,29 +86,12 @@ async function handleCliproxyCommand(args) {
115
86
  // Parse --backend flag first (before other processing)
116
87
  const { backend: cliBackend, remainingArgs } = parseBackendArg(args);
117
88
  const effectiveBackend = getEffectiveBackend(cliBackend);
118
- const verbose = remainingArgs.includes('--verbose') || remainingArgs.includes('-v');
89
+ const verbose = (0, arg_extractor_1.hasAnyFlag)(remainingArgs, ['--verbose', '-v']);
119
90
  const command = remainingArgs[0];
120
- if (remainingArgs.includes('--help') || remainingArgs.includes('-h')) {
91
+ if ((0, arg_extractor_1.hasAnyFlag)(remainingArgs, ['--help', '-h'])) {
121
92
  await (0, help_subcommand_1.showHelp)();
122
93
  return;
123
94
  }
124
- // Profile commands
125
- if (command === 'create') {
126
- await (0, variant_subcommand_1.handleCreate)(remainingArgs.slice(1), effectiveBackend);
127
- return;
128
- }
129
- if (command === 'edit') {
130
- await (0, variant_subcommand_1.handleEdit)(remainingArgs.slice(1), effectiveBackend);
131
- return;
132
- }
133
- if (command === 'list' || command === 'ls') {
134
- await (0, auth_subcommand_1.handleList)();
135
- return;
136
- }
137
- if (command === 'remove' || command === 'delete' || command === 'rm') {
138
- await (0, variant_subcommand_1.handleRemove)(remainingArgs.slice(1));
139
- return;
140
- }
141
95
  // Catalog commands
142
96
  if (command === 'catalog') {
143
97
  const subcommand = remainingArgs[1];
@@ -157,46 +111,34 @@ async function handleCliproxyCommand(args) {
157
111
  await (0, cliproxy_sync_handler_1.handleSync)(remainingArgs.slice(1));
158
112
  return;
159
113
  }
160
- // Proxy lifecycle commands
161
- if (command === 'start') {
162
- await (0, proxy_lifecycle_subcommand_1.handleStart)(verbose);
163
- return;
164
- }
165
- if (command === 'stop') {
166
- await (0, proxy_lifecycle_subcommand_1.handleStop)();
167
- return;
168
- }
169
- if (command === 'restart') {
170
- await (0, proxy_lifecycle_subcommand_1.handleRestart)(verbose);
171
- return;
172
- }
173
- if (command === 'status') {
174
- await (0, proxy_lifecycle_subcommand_1.handleProxyStatus)();
175
- return;
176
- }
177
- // Diagnostics
178
- if (command === 'doctor' || command === 'diag') {
179
- await (0, quota_subcommand_1.handleDoctor)(verbose);
180
- return;
181
- }
182
- // Quota management commands
183
- if (command === 'default') {
184
- await (0, quota_subcommand_1.handleSetDefault)(remainingArgs.slice(1));
185
- return;
186
- }
187
- if (command === 'pause') {
188
- await (0, quota_subcommand_1.handlePauseAccount)(remainingArgs.slice(1));
189
- return;
190
- }
191
- if (command === 'resume') {
192
- await (0, quota_subcommand_1.handleResumeAccount)(remainingArgs.slice(1));
193
- return;
194
- }
195
114
  if (command === 'quota') {
196
115
  const { provider: providerFilter } = parseProviderArg(remainingArgs.slice(1));
197
116
  await (0, quota_subcommand_1.handleQuotaStatus)(verbose, providerFilter);
198
117
  return;
199
118
  }
119
+ const commandHandlers = {
120
+ create: async () => (0, variant_subcommand_1.handleCreate)(remainingArgs.slice(1), effectiveBackend),
121
+ edit: async () => (0, variant_subcommand_1.handleEdit)(remainingArgs.slice(1), effectiveBackend),
122
+ list: async () => (0, auth_subcommand_1.handleList)(),
123
+ ls: async () => (0, auth_subcommand_1.handleList)(),
124
+ remove: async () => (0, variant_subcommand_1.handleRemove)(remainingArgs.slice(1)),
125
+ delete: async () => (0, variant_subcommand_1.handleRemove)(remainingArgs.slice(1)),
126
+ rm: async () => (0, variant_subcommand_1.handleRemove)(remainingArgs.slice(1)),
127
+ start: async () => (0, proxy_lifecycle_subcommand_1.handleStart)(verbose),
128
+ stop: async () => (0, proxy_lifecycle_subcommand_1.handleStop)(),
129
+ restart: async () => (0, proxy_lifecycle_subcommand_1.handleRestart)(verbose),
130
+ status: async () => (0, proxy_lifecycle_subcommand_1.handleProxyStatus)(),
131
+ doctor: async () => (0, quota_subcommand_1.handleDoctor)(verbose),
132
+ diag: async () => (0, quota_subcommand_1.handleDoctor)(verbose),
133
+ default: async () => (0, quota_subcommand_1.handleSetDefault)(remainingArgs.slice(1)),
134
+ pause: async () => (0, quota_subcommand_1.handlePauseAccount)(remainingArgs.slice(1)),
135
+ resume: async () => (0, quota_subcommand_1.handleResumeAccount)(remainingArgs.slice(1)),
136
+ };
137
+ const commandHandler = command ? commandHandlers[command] : undefined;
138
+ if (commandHandler) {
139
+ await commandHandler();
140
+ return;
141
+ }
200
142
  // Binary installation commands
201
143
  const installIdx = remainingArgs.indexOf('--install');
202
144
  if (installIdx !== -1) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/cliproxy/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/cliproxy/index.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@
8
8
  * - ccs cliproxy resume <account>
9
9
  * - ccs cliproxy doctor
10
10
  */
11
- export declare function handleQuotaStatus(verbose?: boolean, providerFilter?: 'agy' | 'codex' | 'gemini' | 'all'): Promise<void>;
11
+ import { type QuotaSupportedProvider } from '../../cliproxy/provider-capabilities';
12
+ export declare function handleQuotaStatus(verbose?: boolean, providerFilter?: QuotaSupportedProvider | 'all'): Promise<void>;
12
13
  export declare function handleDoctor(verbose?: boolean): Promise<void>;
13
14
  export declare function handleSetDefault(args: string[]): Promise<void>;
14
15
  export declare function handlePauseAccount(args: string[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"quota-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/cliproxy/quota-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0ZH,wBAAsB,iBAAiB,CACrC,OAAO,UAAQ,EACf,cAAc,GAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAa,GACzD,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED,wBAAsB,YAAY,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFjE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CpE;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCtE;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCvE"}
1
+ {"version":3,"file":"quota-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/cliproxy/quota-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,sCAAsC,CAAC;AAwf9C,wBAAsB,iBAAiB,CACrC,OAAO,UAAQ,EACf,cAAc,GAAE,sBAAsB,GAAG,KAAa,GACrD,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,wBAAsB,YAAY,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFjE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CpE;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCtE;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCvE"}
@@ -15,7 +15,9 @@ const account_manager_1 = require("../../cliproxy/account-manager");
15
15
  const quota_fetcher_1 = require("../../cliproxy/quota-fetcher");
16
16
  const quota_fetcher_codex_1 = require("../../cliproxy/quota-fetcher-codex");
17
17
  const quota_fetcher_gemini_cli_1 = require("../../cliproxy/quota-fetcher-gemini-cli");
18
+ const quota_fetcher_ghcp_1 = require("../../cliproxy/quota-fetcher-ghcp");
18
19
  const quota_manager_1 = require("../../cliproxy/quota-manager");
20
+ const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
19
21
  const ui_1 = require("../../utils/ui");
20
22
  function parseProfileArgs(args) {
21
23
  const result = {};
@@ -334,47 +336,110 @@ function displayGeminiCliQuotaSection(results) {
334
336
  console.log('');
335
337
  }
336
338
  }
339
+ function formatSnapshotLabel(snapshot) {
340
+ if (snapshot.unlimited) {
341
+ return `${snapshot.percentUsed.toFixed(0)}% used (unlimited)`;
342
+ }
343
+ return `${snapshot.used}/${snapshot.entitlement} used`;
344
+ }
345
+ function displayGhcpQuotaSection(results) {
346
+ console.log((0, ui_1.subheader)(`GitHub Copilot (${results.length} account${results.length !== 1 ? 's' : ''})`));
347
+ console.log('');
348
+ for (const { account, quota } of results) {
349
+ const accountInfo = (0, account_manager_1.findAccountByQuery)('ghcp', account);
350
+ const defaultMark = accountInfo?.isDefault ? (0, ui_1.color)(' (default)', 'info') : '';
351
+ if (!quota.success) {
352
+ console.log(` ${(0, ui_1.fail)(account)}${defaultMark}`);
353
+ console.log(` ${(0, ui_1.color)(quota.error || 'Failed to fetch quota', 'error')}`);
354
+ console.log('');
355
+ continue;
356
+ }
357
+ const rows = [
358
+ quota.snapshots.premiumInteractions.percentRemaining,
359
+ quota.snapshots.chat.percentRemaining,
360
+ quota.snapshots.completions.percentRemaining,
361
+ ];
362
+ const minQuota = rows.length > 0 ? Math.min(...rows) : 0;
363
+ const statusIcon = minQuota > 50 ? (0, ui_1.ok)('') : minQuota > 10 ? (0, ui_1.warn)('') : (0, ui_1.fail)('');
364
+ const planBadge = quota.planType ? (0, ui_1.color)(` [${quota.planType}]`, 'info') : '';
365
+ console.log(` ${statusIcon}${account}${defaultMark}${planBadge}`);
366
+ if (quota.quotaResetDate) {
367
+ console.log(` ${(0, ui_1.dim)(`Resets ${formatResetTimeISO(quota.quotaResetDate)}`)}`);
368
+ }
369
+ const items = [
370
+ ['Premium interactions', quota.snapshots.premiumInteractions],
371
+ ['Chat', quota.snapshots.chat],
372
+ ['Completions', quota.snapshots.completions],
373
+ ];
374
+ for (const [label, snapshot] of items) {
375
+ const bar = formatQuotaBar(snapshot.percentRemaining);
376
+ const usageLabel = (0, ui_1.dim)(` ${formatSnapshotLabel(snapshot)}`);
377
+ console.log(` ${label.padEnd(24)} ${bar} ${snapshot.percentRemaining.toFixed(0)}%${usageLabel}`);
378
+ }
379
+ console.log('');
380
+ }
381
+ }
382
+ const QUOTA_PROVIDER_RUNTIME = {
383
+ agy: {
384
+ fetch: (verbose) => (0, quota_fetcher_1.fetchAllProviderQuotas)('agy', verbose),
385
+ hasData: (result) => result.accounts.length > 0,
386
+ render: (result) => displayAntigravityQuotaSection(result),
387
+ emptyTitle: 'Antigravity (0 accounts)',
388
+ emptyMessage: 'No Antigravity accounts configured',
389
+ authCommand: 'ccs agy --auth',
390
+ },
391
+ codex: {
392
+ fetch: (verbose) => (0, quota_fetcher_codex_1.fetchAllCodexQuotas)(verbose),
393
+ hasData: (result) => result.length > 0,
394
+ render: (result) => displayCodexQuotaSection(result),
395
+ emptyTitle: 'Codex (0 accounts)',
396
+ emptyMessage: 'No Codex accounts configured',
397
+ authCommand: 'ccs codex --auth',
398
+ },
399
+ gemini: {
400
+ fetch: (verbose) => (0, quota_fetcher_gemini_cli_1.fetchAllGeminiCliQuotas)(verbose),
401
+ hasData: (result) => result.length > 0,
402
+ render: (result) => displayGeminiCliQuotaSection(result),
403
+ emptyTitle: 'Gemini CLI (0 accounts)',
404
+ emptyMessage: 'No Gemini CLI accounts configured',
405
+ authCommand: 'ccs gemini --auth',
406
+ },
407
+ ghcp: {
408
+ fetch: (verbose) => (0, quota_fetcher_ghcp_1.fetchAllGhcpQuotas)(verbose),
409
+ hasData: (result) => result.length > 0,
410
+ render: (result) => displayGhcpQuotaSection(result),
411
+ emptyTitle: 'GitHub Copilot (0 accounts)',
412
+ emptyMessage: 'No GitHub Copilot accounts configured',
413
+ authCommand: 'ccs ghcp --auth',
414
+ },
415
+ };
337
416
  async function handleQuotaStatus(verbose = false, providerFilter = 'all') {
338
417
  await (0, ui_1.initUI)();
339
418
  console.log((0, ui_1.header)('Quota Status'));
340
419
  console.log('');
341
- const shouldFetch = {
342
- agy: providerFilter === 'all' || providerFilter === 'agy',
343
- codex: providerFilter === 'all' || providerFilter === 'codex',
344
- gemini: providerFilter === 'all' || providerFilter === 'gemini',
345
- };
420
+ const requestedProviders = new Set(providerFilter === 'all' ? provider_capabilities_1.QUOTA_SUPPORTED_PROVIDER_IDS : [providerFilter]);
421
+ const shouldFetch = (provider) => requestedProviders.has(provider);
346
422
  console.log((0, ui_1.dim)('Fetching quotas...'));
347
- const [agyResults, codexResults, geminiResults] = await Promise.all([
348
- shouldFetch.agy ? (0, quota_fetcher_1.fetchAllProviderQuotas)('agy', verbose) : null,
349
- shouldFetch.codex ? (0, quota_fetcher_codex_1.fetchAllCodexQuotas)(verbose) : null,
350
- shouldFetch.gemini ? (0, quota_fetcher_gemini_cli_1.fetchAllGeminiCliQuotas)(verbose) : null,
351
- ]);
423
+ const providerResults = new Map(await Promise.all(provider_capabilities_1.QUOTA_SUPPORTED_PROVIDER_IDS.map(async (provider) => {
424
+ if (!shouldFetch(provider)) {
425
+ return [provider, null];
426
+ }
427
+ return [provider, await QUOTA_PROVIDER_RUNTIME[provider].fetch(verbose)];
428
+ })));
352
429
  console.log('');
353
- if (agyResults && agyResults.accounts.length > 0) {
354
- displayAntigravityQuotaSection(agyResults);
355
- }
356
- else if (shouldFetch.agy) {
357
- console.log((0, ui_1.subheader)('Antigravity (0 accounts)'));
358
- console.log((0, ui_1.info)('No Antigravity accounts configured'));
359
- console.log(` Run: ${(0, ui_1.color)('ccs agy --auth', 'command')} to authenticate`);
360
- console.log('');
361
- }
362
- if (codexResults && codexResults.length > 0) {
363
- displayCodexQuotaSection(codexResults);
364
- }
365
- else if (shouldFetch.codex) {
366
- console.log((0, ui_1.subheader)('Codex (0 accounts)'));
367
- console.log((0, ui_1.info)('No Codex accounts configured'));
368
- console.log(` Run: ${(0, ui_1.color)('ccs codex --auth', 'command')} to authenticate`);
369
- console.log('');
370
- }
371
- if (geminiResults && geminiResults.length > 0) {
372
- displayGeminiCliQuotaSection(geminiResults);
373
- }
374
- else if (shouldFetch.gemini) {
375
- console.log((0, ui_1.subheader)('Gemini CLI (0 accounts)'));
376
- console.log((0, ui_1.info)('No Gemini CLI accounts configured'));
377
- console.log(` Run: ${(0, ui_1.color)('ccs gemini --auth', 'command')} to authenticate`);
430
+ for (const provider of provider_capabilities_1.QUOTA_SUPPORTED_PROVIDER_IDS) {
431
+ if (!shouldFetch(provider)) {
432
+ continue;
433
+ }
434
+ const runtime = QUOTA_PROVIDER_RUNTIME[provider];
435
+ const result = providerResults.get(provider) ?? null;
436
+ if (result !== null && runtime.hasData(result)) {
437
+ runtime.render(result);
438
+ continue;
439
+ }
440
+ console.log((0, ui_1.subheader)(runtime.emptyTitle));
441
+ console.log((0, ui_1.info)(runtime.emptyMessage));
442
+ console.log(` Run: ${(0, ui_1.color)(runtime.authCommand, 'command')} to authenticate`);
378
443
  console.log('');
379
444
  }
380
445
  }