@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
@@ -1,74 +1,163 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapExternalProviderName = exports.getOAuthCallbackPort = exports.getOAuthFlowType = exports.getProvidersByOAuthFlow = exports.getProviderDisplayName = exports.getProviderCapabilities = exports.isCLIProxyProvider = exports.CLIPROXY_PROVIDER_IDS = exports.PROVIDER_CAPABILITIES = void 0;
3
+ exports.isQuotaSupportedProvider = exports.mapExternalProviderName = exports.getProviderTokenTypeValues = exports.getProviderAuthFilePrefixes = exports.isRefreshDelegatedToCLIProxy = exports.getTokenRefreshOwnership = exports.getCLIProxyAuthUrlProviderName = exports.getCLIProxyCallbackProviderName = exports.getOAuthCallbackPort = exports.getOAuthFlowType = exports.getProvidersByOAuthFlow = exports.getProviderDescription = exports.getProviderDisplayName = exports.getProviderCapabilities = exports.isCLIProxyProvider = exports.buildProviderAliasMap = exports.buildProviderMap = exports.QUOTA_PROVIDER_HELP_TEXT = exports.QUOTA_PROVIDER_OPTION_VALUES = exports.QUOTA_SUPPORTED_PROVIDER_IDS = exports.CLIPROXY_PROVIDER_IDS = exports.PROVIDER_CAPABILITIES = void 0;
4
4
  exports.PROVIDER_CAPABILITIES = {
5
5
  gemini: {
6
6
  displayName: 'Google Gemini',
7
+ description: 'Gemini Pro/Flash models',
7
8
  oauthFlow: 'authorization_code',
8
9
  callbackPort: 8085,
10
+ callbackProviderName: 'gemini',
11
+ authUrlProviderName: 'gemini-cli',
12
+ refreshOwnership: 'ccs',
13
+ authFilePrefixes: ['gemini-', 'google-'],
14
+ tokenTypeValues: ['gemini'],
9
15
  aliases: ['gemini-cli'],
10
16
  },
11
17
  codex: {
12
- displayName: 'Codex',
18
+ displayName: 'OpenAI Codex',
19
+ description: 'GPT-4 and codex models',
13
20
  oauthFlow: 'authorization_code',
14
21
  callbackPort: 1455,
22
+ callbackProviderName: 'codex',
23
+ authUrlProviderName: 'codex',
24
+ refreshOwnership: 'cliproxy',
25
+ authFilePrefixes: ['codex-', 'openai-'],
26
+ tokenTypeValues: ['codex'],
15
27
  aliases: [],
16
28
  },
17
29
  agy: {
18
- displayName: 'AntiGravity',
30
+ displayName: 'Antigravity',
31
+ description: 'Antigravity AI models',
19
32
  oauthFlow: 'authorization_code',
20
33
  callbackPort: 51121,
34
+ callbackProviderName: 'antigravity',
35
+ authUrlProviderName: 'antigravity',
36
+ refreshOwnership: 'cliproxy',
37
+ authFilePrefixes: ['antigravity-', 'agy-'],
38
+ tokenTypeValues: ['antigravity'],
21
39
  aliases: ['antigravity'],
22
40
  },
23
41
  qwen: {
24
- displayName: 'Qwen',
42
+ displayName: 'Alibaba Qwen',
43
+ description: 'Qwen Code models',
25
44
  oauthFlow: 'device_code',
26
45
  callbackPort: null,
46
+ callbackProviderName: 'qwen',
47
+ authUrlProviderName: 'qwen',
48
+ refreshOwnership: 'cliproxy',
49
+ authFilePrefixes: ['qwen-'],
50
+ tokenTypeValues: ['qwen'],
27
51
  aliases: [],
28
52
  },
29
53
  iflow: {
30
54
  displayName: 'iFlow',
55
+ description: 'iFlow AI models',
31
56
  oauthFlow: 'authorization_code',
32
57
  callbackPort: 11451,
58
+ callbackProviderName: 'iflow',
59
+ authUrlProviderName: 'iflow',
60
+ refreshOwnership: 'cliproxy',
61
+ authFilePrefixes: ['iflow-'],
62
+ tokenTypeValues: ['iflow'],
33
63
  aliases: [],
34
64
  },
35
65
  kiro: {
36
66
  displayName: 'Kiro (AWS)',
67
+ description: 'AWS CodeWhisperer models',
37
68
  oauthFlow: 'device_code',
38
69
  callbackPort: null,
70
+ callbackProviderName: 'kiro',
71
+ authUrlProviderName: 'kiro',
72
+ refreshOwnership: 'cliproxy',
73
+ authFilePrefixes: ['kiro-', 'aws-', 'codewhisperer-'],
74
+ tokenTypeValues: ['kiro', 'codewhisperer'],
39
75
  aliases: ['codewhisperer'],
40
76
  },
41
77
  ghcp: {
42
78
  displayName: 'GitHub Copilot (OAuth)',
79
+ description: 'GitHub Copilot via OAuth',
43
80
  oauthFlow: 'device_code',
44
81
  callbackPort: null,
82
+ callbackProviderName: 'copilot',
83
+ authUrlProviderName: 'github',
84
+ refreshOwnership: 'cliproxy',
85
+ authFilePrefixes: ['github-copilot-', 'copilot-', 'gh-'],
86
+ tokenTypeValues: ['github-copilot', 'copilot'],
45
87
  aliases: ['github-copilot', 'copilot'],
46
88
  },
47
89
  claude: {
48
- displayName: 'Claude',
90
+ displayName: 'Claude (Anthropic)',
91
+ description: 'Claude Opus/Sonnet models',
49
92
  oauthFlow: 'authorization_code',
50
93
  callbackPort: 54545,
94
+ callbackProviderName: 'anthropic',
95
+ authUrlProviderName: 'anthropic',
96
+ refreshOwnership: 'unsupported',
97
+ authFilePrefixes: ['claude-', 'anthropic-'],
98
+ tokenTypeValues: ['claude', 'anthropic'],
51
99
  aliases: ['anthropic'],
52
100
  },
53
101
  kimi: {
54
102
  displayName: 'Kimi (Moonshot)',
103
+ description: 'Moonshot AI K2/K2.5 models',
55
104
  oauthFlow: 'device_code',
56
105
  callbackPort: null,
106
+ callbackProviderName: 'kimi',
107
+ authUrlProviderName: 'kimi',
108
+ refreshOwnership: 'cliproxy',
109
+ authFilePrefixes: ['kimi-'],
110
+ tokenTypeValues: ['kimi'],
57
111
  aliases: ['moonshot'],
58
112
  },
59
113
  };
60
114
  exports.CLIPROXY_PROVIDER_IDS = Object.freeze(Object.keys(exports.PROVIDER_CAPABILITIES));
115
+ /** Providers currently supported by quota status fetchers. */
116
+ exports.QUOTA_SUPPORTED_PROVIDER_IDS = Object.freeze([
117
+ 'agy',
118
+ 'codex',
119
+ 'gemini',
120
+ 'ghcp',
121
+ ]);
122
+ const QUOTA_SUPPORTED_PROVIDER_SET = new Set(exports.QUOTA_SUPPORTED_PROVIDER_IDS);
123
+ exports.QUOTA_PROVIDER_OPTION_VALUES = Object.freeze([
124
+ ...exports.QUOTA_SUPPORTED_PROVIDER_IDS,
125
+ ...exports.QUOTA_SUPPORTED_PROVIDER_IDS.flatMap((provider) => exports.PROVIDER_CAPABILITIES[provider].aliases),
126
+ 'all',
127
+ ].filter((value, index, values) => values.indexOf(value) === index));
128
+ exports.QUOTA_PROVIDER_HELP_TEXT = exports.QUOTA_PROVIDER_OPTION_VALUES.join(', ');
129
+ function buildProviderMap(valueFor) {
130
+ return exports.CLIPROXY_PROVIDER_IDS.reduce((acc, provider) => {
131
+ acc[provider] = valueFor(provider);
132
+ return acc;
133
+ }, {});
134
+ }
135
+ exports.buildProviderMap = buildProviderMap;
61
136
  const PROVIDER_ID_SET = new Set(exports.CLIPROXY_PROVIDER_IDS);
62
- const PROVIDER_ALIAS_MAP = (() => {
63
- const entries = [];
64
- for (const provider of exports.CLIPROXY_PROVIDER_IDS) {
65
- entries.push([provider, provider]);
66
- for (const alias of exports.PROVIDER_CAPABILITIES[provider].aliases) {
67
- entries.push([alias.toLowerCase(), provider]);
137
+ function buildProviderAliasMap(capabilities = exports.PROVIDER_CAPABILITIES) {
138
+ const aliasMap = new Map();
139
+ const providers = Object.keys(capabilities);
140
+ const registerAlias = (alias, provider) => {
141
+ const normalized = alias.trim().toLowerCase();
142
+ if (!normalized) {
143
+ return;
144
+ }
145
+ const existingProvider = aliasMap.get(normalized);
146
+ if (existingProvider && existingProvider !== provider) {
147
+ throw new Error(`Provider alias collision for "${normalized}": ${existingProvider} and ${provider}`);
148
+ }
149
+ aliasMap.set(normalized, provider);
150
+ };
151
+ for (const provider of providers) {
152
+ registerAlias(provider, provider);
153
+ for (const alias of capabilities[provider].aliases) {
154
+ registerAlias(alias, provider);
68
155
  }
69
156
  }
70
- return new Map(entries);
71
- })();
157
+ return aliasMap;
158
+ }
159
+ exports.buildProviderAliasMap = buildProviderAliasMap;
160
+ const PROVIDER_ALIAS_MAP = buildProviderAliasMap();
72
161
  function isCLIProxyProvider(provider) {
73
162
  return PROVIDER_ID_SET.has(provider);
74
163
  }
@@ -81,6 +170,10 @@ function getProviderDisplayName(provider) {
81
170
  return exports.PROVIDER_CAPABILITIES[provider].displayName;
82
171
  }
83
172
  exports.getProviderDisplayName = getProviderDisplayName;
173
+ function getProviderDescription(provider) {
174
+ return exports.PROVIDER_CAPABILITIES[provider].description;
175
+ }
176
+ exports.getProviderDescription = getProviderDescription;
84
177
  function getProvidersByOAuthFlow(flowType) {
85
178
  return exports.CLIPROXY_PROVIDER_IDS.filter((provider) => exports.PROVIDER_CAPABILITIES[provider].oauthFlow === flowType);
86
179
  }
@@ -93,9 +186,40 @@ function getOAuthCallbackPort(provider) {
93
186
  return exports.PROVIDER_CAPABILITIES[provider].callbackPort;
94
187
  }
95
188
  exports.getOAuthCallbackPort = getOAuthCallbackPort;
189
+ function getCLIProxyCallbackProviderName(provider) {
190
+ return exports.PROVIDER_CAPABILITIES[provider].callbackProviderName;
191
+ }
192
+ exports.getCLIProxyCallbackProviderName = getCLIProxyCallbackProviderName;
193
+ function getCLIProxyAuthUrlProviderName(provider) {
194
+ return exports.PROVIDER_CAPABILITIES[provider].authUrlProviderName;
195
+ }
196
+ exports.getCLIProxyAuthUrlProviderName = getCLIProxyAuthUrlProviderName;
197
+ function getTokenRefreshOwnership(provider) {
198
+ return exports.PROVIDER_CAPABILITIES[provider].refreshOwnership;
199
+ }
200
+ exports.getTokenRefreshOwnership = getTokenRefreshOwnership;
201
+ function isRefreshDelegatedToCLIProxy(provider) {
202
+ return exports.PROVIDER_CAPABILITIES[provider].refreshOwnership === 'cliproxy';
203
+ }
204
+ exports.isRefreshDelegatedToCLIProxy = isRefreshDelegatedToCLIProxy;
205
+ function getProviderAuthFilePrefixes(provider) {
206
+ return exports.PROVIDER_CAPABILITIES[provider].authFilePrefixes;
207
+ }
208
+ exports.getProviderAuthFilePrefixes = getProviderAuthFilePrefixes;
209
+ function getProviderTokenTypeValues(provider) {
210
+ return exports.PROVIDER_CAPABILITIES[provider].tokenTypeValues;
211
+ }
212
+ exports.getProviderTokenTypeValues = getProviderTokenTypeValues;
96
213
  function mapExternalProviderName(providerName) {
97
- const normalized = providerName.toLowerCase();
214
+ const normalized = providerName.trim().toLowerCase();
215
+ if (!normalized) {
216
+ return null;
217
+ }
98
218
  return PROVIDER_ALIAS_MAP.get(normalized) ?? null;
99
219
  }
100
220
  exports.mapExternalProviderName = mapExternalProviderName;
221
+ function isQuotaSupportedProvider(provider) {
222
+ return QUOTA_SUPPORTED_PROVIDER_SET.has(provider);
223
+ }
224
+ exports.isQuotaSupportedProvider = isQuotaSupportedProvider;
101
225
  //# sourceMappingURL=provider-capabilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-capabilities.js","sourceRoot":"","sources":["../../src/cliproxy/provider-capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-capabilities.js","sourceRoot":"","sources":["../../src/cliproxy/provider-capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Quota Fetcher for GitHub Copilot OAuth (ghcp) Accounts
3
+ *
4
+ * Fetches quota information from GitHub `/copilot_internal/user` endpoint
5
+ * using the account token managed by CLIProxy auth flow.
6
+ */
7
+ import type { GhcpQuotaResult, GhcpQuotaSnapshot } from './quota-types';
8
+ interface RawGhcpQuotaSnapshot {
9
+ entitlement?: number;
10
+ overage_count?: number;
11
+ overage_permitted?: boolean;
12
+ percent_remaining?: number;
13
+ quota_id?: string;
14
+ quota_remaining?: number;
15
+ remaining?: number;
16
+ unlimited?: boolean;
17
+ }
18
+ interface TokenData {
19
+ access_token?: string;
20
+ token?: {
21
+ access_token?: string;
22
+ };
23
+ }
24
+ declare function normalizeSnapshot(raw?: RawGhcpQuotaSnapshot): GhcpQuotaSnapshot;
25
+ declare function extractAccessToken(tokenData: TokenData): string | null;
26
+ /**
27
+ * Fetch quota for one ghcp account.
28
+ */
29
+ export declare function fetchGhcpQuota(accountId: string, verbose?: boolean): Promise<GhcpQuotaResult>;
30
+ /**
31
+ * Fetch quota for all ghcp accounts.
32
+ */
33
+ export declare function fetchAllGhcpQuotas(verbose?: boolean): Promise<{
34
+ account: string;
35
+ quota: GhcpQuotaResult;
36
+ }[]>;
37
+ export { normalizeSnapshot as normalizeGhcpSnapshot, extractAccessToken as extractGhcpAccessToken };
38
+ //# sourceMappingURL=quota-fetcher-ghcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-fetcher-ghcp.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-ghcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAYxE,UAAU,oBAAoB;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAYD,UAAU,SAAS;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,iBAAS,iBAAiB,CAAC,GAAG,CAAC,EAAE,oBAAoB,GAAG,iBAAiB,CA+BxE;AAED,iBAAS,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAe/D;AA4DD;;GAEG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAyDjG;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,EAAE,CAAC,CASxD;AAGD,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * Quota Fetcher for GitHub Copilot OAuth (ghcp) Accounts
4
+ *
5
+ * Fetches quota information from GitHub `/copilot_internal/user` endpoint
6
+ * using the account token managed by CLIProxy auth flow.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.extractGhcpAccessToken = exports.normalizeGhcpSnapshot = exports.fetchAllGhcpQuotas = exports.fetchGhcpQuota = void 0;
33
+ const fs = __importStar(require("node:fs"));
34
+ const account_manager_1 = require("./account-manager");
35
+ const percentage_1 = require("../utils/percentage");
36
+ const GHCP_USAGE_URL = 'https://api.github.com/copilot_internal/user';
37
+ const GHCP_USAGE_TIMEOUT_MS = 10000;
38
+ /**
39
+ * Mirrors headers currently accepted by GitHub Copilot internal usage endpoint.
40
+ * Keep aligned with upstream Copilot client/API changes when quota calls break.
41
+ */
42
+ const GHCP_USER_AGENT = 'GitHubCopilotChat/0.26.7';
43
+ const GHCP_API_VERSION = '2025-04-01';
44
+ function normalizeSnapshot(raw) {
45
+ const entitlement = Number(raw?.entitlement ?? 0);
46
+ const remainingRaw = raw?.remaining ?? raw?.quota_remaining ?? 0;
47
+ const remaining = Number(remainingRaw);
48
+ const safeEntitlement = Number.isFinite(entitlement) ? Math.max(0, entitlement) : 0;
49
+ const safeRemaining = Number.isFinite(remaining) ? Math.max(0, remaining) : 0;
50
+ const used = Math.max(0, safeEntitlement - safeRemaining);
51
+ const percentRemainingRaw = typeof raw?.percent_remaining === 'number' ? raw.percent_remaining : null;
52
+ const percentRemaining = percentRemainingRaw !== null
53
+ ? (0, percentage_1.clampPercent)(percentRemainingRaw)
54
+ : safeEntitlement > 0
55
+ ? (0, percentage_1.clampPercent)((safeRemaining / safeEntitlement) * 100)
56
+ : 0;
57
+ return {
58
+ entitlement: safeEntitlement,
59
+ remaining: safeRemaining,
60
+ used,
61
+ percentRemaining,
62
+ percentUsed: (0, percentage_1.clampPercent)(100 - percentRemaining),
63
+ unlimited: Boolean(raw?.unlimited),
64
+ overageCount: typeof raw?.overage_count === 'number' && Number.isFinite(raw.overage_count)
65
+ ? Math.max(0, raw.overage_count)
66
+ : 0,
67
+ overagePermitted: Boolean(raw?.overage_permitted),
68
+ quotaId: raw?.quota_id || null,
69
+ };
70
+ }
71
+ exports.normalizeGhcpSnapshot = normalizeSnapshot;
72
+ function extractAccessToken(tokenData) {
73
+ if (typeof tokenData.access_token === 'string' && tokenData.access_token.trim()) {
74
+ return tokenData.access_token.trim();
75
+ }
76
+ if (tokenData.token &&
77
+ typeof tokenData.token === 'object' &&
78
+ typeof tokenData.token.access_token === 'string' &&
79
+ tokenData.token.access_token.trim()) {
80
+ return tokenData.token.access_token.trim();
81
+ }
82
+ return null;
83
+ }
84
+ exports.extractGhcpAccessToken = extractAccessToken;
85
+ function readGhcpAccessToken(accountId) {
86
+ const account = (0, account_manager_1.getProviderAccounts)('ghcp').find((item) => item.id === accountId);
87
+ if (!account) {
88
+ return { accessToken: null, error: `Account not found: ${accountId}` };
89
+ }
90
+ const tokenPath = (0, account_manager_1.getAccountTokenPath)(account);
91
+ if (!tokenPath || !fs.existsSync(tokenPath)) {
92
+ return { accessToken: null, error: 'Auth token file not found' };
93
+ }
94
+ try {
95
+ const raw = fs.readFileSync(tokenPath, 'utf-8');
96
+ const data = JSON.parse(raw);
97
+ const accessToken = extractAccessToken(data);
98
+ if (!accessToken) {
99
+ return { accessToken: null, error: 'No access token in auth file' };
100
+ }
101
+ return { accessToken };
102
+ }
103
+ catch (error) {
104
+ return {
105
+ accessToken: null,
106
+ error: error instanceof Error ? error.message : 'Failed to parse auth token file',
107
+ };
108
+ }
109
+ }
110
+ function buildEmptyQuotaResult(error, accountId) {
111
+ return {
112
+ success: false,
113
+ planType: null,
114
+ quotaResetDate: null,
115
+ snapshots: {
116
+ premiumInteractions: normalizeSnapshot(),
117
+ chat: normalizeSnapshot(),
118
+ completions: normalizeSnapshot(),
119
+ },
120
+ lastUpdated: Date.now(),
121
+ error,
122
+ accountId,
123
+ };
124
+ }
125
+ function normalizeUsageResponse(raw) {
126
+ const snapshots = raw.quota_snapshots || {};
127
+ return {
128
+ success: true,
129
+ planType: raw.copilot_plan ?? null,
130
+ quotaResetDate: raw.quota_reset_date ?? null,
131
+ snapshots: {
132
+ premiumInteractions: normalizeSnapshot(snapshots.premium_interactions),
133
+ chat: normalizeSnapshot(snapshots.chat),
134
+ completions: normalizeSnapshot(snapshots.completions),
135
+ },
136
+ lastUpdated: Date.now(),
137
+ };
138
+ }
139
+ /**
140
+ * Fetch quota for one ghcp account.
141
+ */
142
+ async function fetchGhcpQuota(accountId, verbose = false) {
143
+ const { accessToken, error } = readGhcpAccessToken(accountId);
144
+ if (!accessToken) {
145
+ // Safe diagnostic: accountId + generic error only (never log token values/file contents).
146
+ if (verbose)
147
+ console.error(`[!] ghcp quota token error (${accountId}): ${error}`);
148
+ return buildEmptyQuotaResult(error || 'Failed to load auth token', accountId);
149
+ }
150
+ if (verbose)
151
+ console.error(`[i] Fetching ghcp quota for ${accountId}...`);
152
+ const controller = new AbortController();
153
+ const timeoutId = setTimeout(() => controller.abort(), GHCP_USAGE_TIMEOUT_MS);
154
+ try {
155
+ const response = await fetch(GHCP_USAGE_URL, {
156
+ method: 'GET',
157
+ signal: controller.signal,
158
+ headers: {
159
+ Accept: 'application/json',
160
+ Authorization: `token ${accessToken}`,
161
+ 'User-Agent': GHCP_USER_AGENT,
162
+ 'x-github-api-version': GHCP_API_VERSION,
163
+ },
164
+ });
165
+ clearTimeout(timeoutId);
166
+ if (response.status === 401 || response.status === 403) {
167
+ return {
168
+ ...buildEmptyQuotaResult('Authentication expired or invalid', accountId),
169
+ needsReauth: true,
170
+ };
171
+ }
172
+ if (response.status === 429) {
173
+ return buildEmptyQuotaResult('Rate limited - try again later', accountId);
174
+ }
175
+ if (!response.ok) {
176
+ return buildEmptyQuotaResult(`GitHub API error: ${response.status}`, accountId);
177
+ }
178
+ const data = (await response.json());
179
+ return {
180
+ ...normalizeUsageResponse(data),
181
+ accountId,
182
+ };
183
+ }
184
+ catch (error) {
185
+ clearTimeout(timeoutId);
186
+ const message = error instanceof Error && error.name === 'AbortError'
187
+ ? 'Request timeout'
188
+ : error instanceof Error
189
+ ? error.message
190
+ : 'Unknown error';
191
+ return buildEmptyQuotaResult(message, accountId);
192
+ }
193
+ }
194
+ exports.fetchGhcpQuota = fetchGhcpQuota;
195
+ /**
196
+ * Fetch quota for all ghcp accounts.
197
+ */
198
+ async function fetchAllGhcpQuotas(verbose = false) {
199
+ const accounts = (0, account_manager_1.getProviderAccounts)('ghcp');
200
+ const results = await Promise.all(accounts.map(async (account) => ({
201
+ account: account.id,
202
+ quota: await fetchGhcpQuota(account.id, verbose),
203
+ })));
204
+ return results;
205
+ }
206
+ exports.fetchAllGhcpQuotas = fetchAllGhcpQuotas;
207
+ //# sourceMappingURL=quota-fetcher-ghcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-fetcher-ghcp.js","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-ghcp.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
  * Shared Quota Type Definitions
3
3
  *
4
4
  * Unified types for multi-provider quota system.
5
- * Supports Antigravity, Codex, and Gemini CLI providers.
5
+ * Supports Antigravity, Codex, Gemini CLI, and GitHub Copilot OAuth providers.
6
6
  */
7
7
  /** Supported quota providers */
8
- export type QuotaProvider = 'agy' | 'codex' | 'gemini';
8
+ export type QuotaProvider = 'agy' | 'codex' | 'gemini' | 'ghcp';
9
9
  export type { QuotaResult as AntigravityQuotaResult } from './quota-fetcher';
10
10
  /**
11
11
  * Codex quota window (primary, secondary, code review)
@@ -101,4 +101,51 @@ export interface GeminiCliQuotaResult {
101
101
  /** True if token is expired and needs re-authentication */
102
102
  needsReauth?: boolean;
103
103
  }
104
+ /**
105
+ * GitHub Copilot quota snapshot.
106
+ */
107
+ export interface GhcpQuotaSnapshot {
108
+ /** Total quota allocation for this category */
109
+ entitlement: number;
110
+ /** Remaining quota count */
111
+ remaining: number;
112
+ /** Used quota count */
113
+ used: number;
114
+ /** Remaining quota percentage (0-100) */
115
+ percentRemaining: number;
116
+ /** Used quota percentage (0-100) */
117
+ percentUsed: number;
118
+ /** Whether this quota category is unlimited */
119
+ unlimited: boolean;
120
+ /** Overage usage count */
121
+ overageCount: number;
122
+ /** Whether overage is permitted */
123
+ overagePermitted: boolean;
124
+ /** Upstream quota identifier if available */
125
+ quotaId: string | null;
126
+ }
127
+ /**
128
+ * GitHub Copilot quota fetch result.
129
+ */
130
+ export interface GhcpQuotaResult {
131
+ /** Whether fetch succeeded */
132
+ success: boolean;
133
+ /** Copilot plan type (individual/business/enterprise/free) */
134
+ planType: string | null;
135
+ /** Quota reset date/time (ISO string) */
136
+ quotaResetDate: string | null;
137
+ snapshots: {
138
+ premiumInteractions: GhcpQuotaSnapshot;
139
+ chat: GhcpQuotaSnapshot;
140
+ completions: GhcpQuotaSnapshot;
141
+ };
142
+ /** Timestamp of fetch */
143
+ lastUpdated: number;
144
+ /** Error message if fetch failed */
145
+ error?: string;
146
+ /** Account ID this quota belongs to */
147
+ accountId?: string;
148
+ /** True if token is expired/invalid and user needs re-authentication */
149
+ needsReauth?: boolean;
150
+ }
104
151
  //# sourceMappingURL=quota-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-types.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAGvD,YAAY,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,uDAAuD;IACvD,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,sDAAsD;IACtD,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,sCAAsC;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"quota-types.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAGhE,YAAY,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,uDAAuD;IACvD,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,sDAAsD;IACtD,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,sCAAsC;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yCAAyC;IACzC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE;QACT,mBAAmB,EAAE,iBAAiB,CAAC;QACvC,IAAI,EAAE,iBAAiB,CAAC;QACxB,WAAW,EAAE,iBAAiB,CAAC;KAChC,CAAC;IACF,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -3,7 +3,7 @@
3
3
  * Shared Quota Type Definitions
4
4
  *
5
5
  * Unified types for multi-provider quota system.
6
- * Supports Antigravity, Codex, and Gemini CLI providers.
6
+ * Supports Antigravity, Codex, Gemini CLI, and GitHub Copilot OAuth providers.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  //# sourceMappingURL=quota-types.js.map
@@ -55,6 +55,11 @@ export declare function capLevelAtMax(level: string, maxLevel: string | undefine
55
55
  */
56
56
  export declare const THINKING_OFF_VALUES: readonly ["off", "none", "disabled", "0"];
57
57
  export declare const THINKING_AUTO_VALUE = "auto";
58
+ /**
59
+ * Check whether a value should disable thinking.
60
+ * Accepts common string aliases and numeric 0.
61
+ */
62
+ export declare function isThinkingOffValue(value: unknown): boolean;
58
63
  /**
59
64
  * Validate a thinking value against model capabilities
60
65
  *
@@ -1 +1 @@
1
- {"version":3,"file":"thinking-validator.d.ts","sourceRoot":"","sources":["../../src/cliproxy/thinking-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,gEAAiE,CAAC;AACpG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,oBAAoB,sCAAuC,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAQpC;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,2CAA4C,CAAC;AAC7E,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAwC1C;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,wBAAwB,CAwE1B"}
1
+ {"version":3,"file":"thinking-validator.d.ts","sourceRoot":"","sources":["../../src/cliproxy/thinking-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,gEAAiE,CAAC;AACpG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,oBAAoB,sCAAuC,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAQpC;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,2CAA4C,CAAC;AAC7E,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS1D;AAwCD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,wBAAwB,CAqE1B"}