@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.
- package/README.md +7 -1
- package/dist/api/services/index.d.ts +1 -1
- package/dist/api/services/index.d.ts.map +1 -1
- package/dist/api/services/index.js +3 -1
- package/dist/api/services/index.js.map +1 -1
- package/dist/api/services/provider-presets.d.ts +9 -23
- package/dist/api/services/provider-presets.d.ts.map +1 -1
- package/dist/api/services/provider-presets.js +13 -140
- package/dist/api/services/provider-presets.js.map +1 -1
- package/dist/auth/commands/create-command.d.ts.map +1 -1
- package/dist/auth/commands/create-command.js +3 -2
- package/dist/auth/commands/create-command.js.map +1 -1
- package/dist/auth/profile-detector.d.ts +1 -1
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +31 -13
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/ccs.js +77 -102
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/account-safety.d.ts +13 -0
- package/dist/cliproxy/account-safety.d.ts.map +1 -1
- package/dist/cliproxy/account-safety.js +54 -1
- package/dist/cliproxy/account-safety.js.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
- package/dist/cliproxy/auth/auth-types.js +12 -55
- package/dist/cliproxy/auth/auth-types.js.map +1 -1
- package/dist/cliproxy/auth/gemini-token-refresh.d.ts +5 -3
- package/dist/cliproxy/auth/gemini-token-refresh.d.ts.map +1 -1
- package/dist/cliproxy/auth/gemini-token-refresh.js +51 -35
- package/dist/cliproxy/auth/gemini-token-refresh.js.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +6 -1
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/auth/provider-refreshers/index.d.ts +2 -2
- package/dist/cliproxy/auth/provider-refreshers/index.d.ts.map +1 -1
- package/dist/cliproxy/auth/provider-refreshers/index.js +34 -34
- package/dist/cliproxy/auth/provider-refreshers/index.js.map +1 -1
- package/dist/cliproxy/catalog-cache.d.ts.map +1 -1
- package/dist/cliproxy/catalog-cache.js +2 -1
- package/dist/cliproxy/catalog-cache.js.map +1 -1
- package/dist/cliproxy/codex-reasoning-proxy.d.ts +7 -0
- package/dist/cliproxy/codex-reasoning-proxy.d.ts.map +1 -1
- package/dist/cliproxy/codex-reasoning-proxy.js +54 -9
- package/dist/cliproxy/codex-reasoning-proxy.js.map +1 -1
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.js +56 -15
- package/dist/cliproxy/config/env-builder.js.map +1 -1
- package/dist/cliproxy/config/extended-context-config.d.ts +1 -8
- package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
- package/dist/cliproxy/config/extended-context-config.js +8 -24
- package/dist/cliproxy/config/extended-context-config.js.map +1 -1
- package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
- package/dist/cliproxy/config/thinking-config.js +11 -9
- package/dist/cliproxy/config/thinking-config.js.map +1 -1
- package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
- package/dist/cliproxy/executor/env-resolver.js +7 -3
- package/dist/cliproxy/executor/env-resolver.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +11 -1
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
- package/dist/cliproxy/executor/retry-handler.js +1 -0
- package/dist/cliproxy/executor/retry-handler.js.map +1 -1
- package/dist/cliproxy/executor/thinking-override-resolver.d.ts +28 -0
- package/dist/cliproxy/executor/thinking-override-resolver.d.ts.map +1 -0
- package/dist/cliproxy/executor/thinking-override-resolver.js +109 -0
- package/dist/cliproxy/executor/thinking-override-resolver.js.map +1 -0
- package/dist/cliproxy/index.d.ts +1 -0
- package/dist/cliproxy/index.d.ts.map +1 -1
- package/dist/cliproxy/index.js +12 -3
- package/dist/cliproxy/index.js.map +1 -1
- package/dist/cliproxy/management-api-client.d.ts.map +1 -1
- package/dist/cliproxy/management-api-client.js +16 -4
- package/dist/cliproxy/management-api-client.js.map +1 -1
- package/dist/cliproxy/model-catalog.d.ts.map +1 -1
- package/dist/cliproxy/model-catalog.js +7 -2
- package/dist/cliproxy/model-catalog.js.map +1 -1
- package/dist/cliproxy/model-id-normalizer.d.ts +70 -0
- package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -0
- package/dist/cliproxy/model-id-normalizer.js +120 -0
- package/dist/cliproxy/model-id-normalizer.js.map +1 -0
- package/dist/cliproxy/provider-capabilities.d.ts +27 -0
- package/dist/cliproxy/provider-capabilities.d.ts.map +1 -1
- package/dist/cliproxy/provider-capabilities.js +138 -14
- package/dist/cliproxy/provider-capabilities.js.map +1 -1
- package/dist/cliproxy/quota-fetcher-ghcp.d.ts +38 -0
- package/dist/cliproxy/quota-fetcher-ghcp.d.ts.map +1 -0
- package/dist/cliproxy/quota-fetcher-ghcp.js +207 -0
- package/dist/cliproxy/quota-fetcher-ghcp.js.map +1 -0
- package/dist/cliproxy/quota-types.d.ts +49 -2
- package/dist/cliproxy/quota-types.d.ts.map +1 -1
- package/dist/cliproxy/quota-types.js +1 -1
- package/dist/cliproxy/thinking-validator.d.ts +5 -0
- package/dist/cliproxy/thinking-validator.d.ts.map +1 -1
- package/dist/cliproxy/thinking-validator.js +18 -6
- package/dist/cliproxy/thinking-validator.js.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.js +15 -5
- package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
- package/dist/cliproxy/types.d.ts +1 -1
- package/dist/cliproxy/types.d.ts.map +1 -1
- package/dist/commands/api-command.d.ts +13 -0
- package/dist/commands/api-command.d.ts.map +1 -1
- package/dist/commands/api-command.js +112 -36
- package/dist/commands/api-command.js.map +1 -1
- package/dist/commands/arg-extractor.d.ts +29 -0
- package/dist/commands/arg-extractor.d.ts.map +1 -0
- package/dist/commands/arg-extractor.js +81 -0
- package/dist/commands/arg-extractor.js.map +1 -0
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +2 -1
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/index.d.ts.map +1 -1
- package/dist/commands/cliproxy/index.js +60 -118
- package/dist/commands/cliproxy/index.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts +2 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +100 -35
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/config-command.d.ts.map +1 -1
- package/dist/commands/config-command.js +33 -16
- package/dist/commands/config-command.js.map +1 -1
- package/dist/commands/config-image-analysis-command.d.ts.map +1 -1
- package/dist/commands/config-image-analysis-command.js +37 -27
- package/dist/commands/config-image-analysis-command.js.map +1 -1
- package/dist/commands/config-thinking-command.d.ts +9 -0
- package/dist/commands/config-thinking-command.d.ts.map +1 -0
- package/dist/commands/config-thinking-command.js +237 -0
- package/dist/commands/config-thinking-command.js.map +1 -0
- package/dist/commands/config-thinking-parser.d.ts +37 -0
- package/dist/commands/config-thinking-parser.d.ts.map +1 -0
- package/dist/commands/config-thinking-parser.js +135 -0
- package/dist/commands/config-thinking-parser.js.map +1 -0
- package/dist/commands/copilot-command.d.ts.map +1 -1
- package/dist/commands/copilot-command.js +51 -0
- package/dist/commands/copilot-command.js.map +1 -1
- package/dist/commands/env-command.d.ts.map +1 -1
- package/dist/commands/env-command.js +12 -4
- package/dist/commands/env-command.js.map +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +8 -2
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/persist-command.d.ts.map +1 -1
- package/dist/commands/persist-command.js +77 -50
- package/dist/commands/persist-command.js.map +1 -1
- package/dist/commands/setup-command.d.ts.map +1 -1
- package/dist/commands/setup-command.js +5 -4
- package/dist/commands/setup-command.js.map +1 -1
- package/dist/commands/version-command.d.ts.map +1 -1
- package/dist/commands/version-command.js +16 -12
- package/dist/commands/version-command.js.map +1 -1
- package/dist/config/migration-manager.d.ts.map +1 -1
- package/dist/config/migration-manager.js +51 -10
- package/dist/config/migration-manager.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +1 -1
- package/dist/copilot/copilot-executor.d.ts.map +1 -1
- package/dist/copilot/copilot-executor.js +3 -2
- package/dist/copilot/copilot-executor.js.map +1 -1
- package/dist/copilot/copilot-usage.d.ts +16 -0
- package/dist/copilot/copilot-usage.d.ts.map +1 -0
- package/dist/copilot/copilot-usage.js +117 -0
- package/dist/copilot/copilot-usage.js.map +1 -0
- package/dist/copilot/index.d.ts +1 -0
- package/dist/copilot/index.d.ts.map +1 -1
- package/dist/copilot/index.js +6 -1
- package/dist/copilot/index.js.map +1 -1
- package/dist/copilot/types.d.ts +31 -0
- package/dist/copilot/types.d.ts.map +1 -1
- package/dist/delegation/delegation-handler.js +1 -1
- package/dist/delegation/delegation-handler.js.map +1 -1
- package/dist/delegation/headless-executor.d.ts +1 -1
- package/dist/delegation/headless-executor.d.ts.map +1 -1
- package/dist/delegation/headless-executor.js +14 -5
- package/dist/delegation/headless-executor.js.map +1 -1
- package/dist/management/checks/config-check.d.ts.map +1 -1
- package/dist/management/checks/config-check.js +2 -2
- package/dist/management/checks/config-check.js.map +1 -1
- package/dist/management/checks/system-check.d.ts.map +1 -1
- package/dist/management/checks/system-check.js +2 -0
- package/dist/management/checks/system-check.js.map +1 -1
- package/dist/shared/extended-context-utils.d.ts +14 -0
- package/dist/shared/extended-context-utils.d.ts.map +1 -0
- package/dist/shared/extended-context-utils.js +35 -0
- package/dist/shared/extended-context-utils.js.map +1 -0
- package/dist/shared/provider-preset-catalog.d.ts +39 -0
- package/dist/shared/provider-preset-catalog.d.ts.map +1 -0
- package/dist/shared/provider-preset-catalog.js +241 -0
- package/dist/shared/provider-preset-catalog.js.map +1 -0
- package/dist/targets/claude-adapter.js +1 -1
- package/dist/targets/claude-adapter.js.map +1 -1
- package/dist/ui/assets/{accounts-DSbC2KOq.js → accounts-X_MzF4zx.js} +1 -1
- package/dist/ui/assets/{alert-dialog-Dj5MBrPS.js → alert-dialog-Cw-P0uZM.js} +1 -1
- package/dist/ui/assets/{api-BIGOe-xE.js → api-BcwoMARb.js} +1 -1
- package/dist/ui/assets/{auth-section-BFJ1CozG.js → auth-section-BqSvZ_5J.js} +1 -1
- package/dist/ui/assets/{backups-section-pfBnyzOg.js → backups-section-CGOotFRy.js} +1 -1
- package/dist/ui/assets/cliproxy-CWhMMbBa.js +3 -0
- package/dist/ui/assets/cliproxy-control-panel-DAirmXSD.js +1 -0
- package/dist/ui/assets/{confirm-dialog-gV1ql3Ts.js → confirm-dialog-BjFaR6B6.js} +1 -1
- package/dist/ui/assets/copilot-DCp1_azM.js +3 -0
- package/dist/ui/assets/cursor-DEUfi3ZN.js +1 -0
- package/dist/ui/assets/default-ports-1QQSffYX.js +1 -0
- package/dist/ui/assets/{globalenv-section-CYGF1tAO.js → globalenv-section-Cu4vanAq.js} +1 -1
- package/dist/ui/assets/{health-CmKa7iS7.js → health-ChhDKSPa.js} +1 -1
- package/dist/ui/assets/index-BZ51hp4b.js +1 -0
- package/dist/ui/assets/{index-DZJVwR0i.js → index-CHArFy3-.js} +1 -1
- package/dist/ui/assets/{index-BhguKKYm.js → index-FdjOeYn2.js} +1 -1
- package/dist/ui/assets/index-UX7yyQwV.js +47 -0
- package/dist/ui/assets/index-s9bW25En.js +1 -0
- package/dist/ui/assets/{proxy-status-widget-B0TxmrB5.js → proxy-status-widget-BLLMunUG.js} +1 -1
- package/dist/ui/assets/{separator-D_VeEEnJ.js → separator-Nl0gQ6QN.js} +1 -1
- package/dist/ui/assets/{shared-Buwj9ixP.js → shared-D7ILUK83.js} +1 -1
- package/dist/ui/assets/{switch-DPU26P6C.js → switch-P5H3pmrk.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/utils/claude-config-path.d.ts +11 -0
- package/dist/utils/claude-config-path.d.ts.map +1 -0
- package/dist/utils/claude-config-path.js +51 -0
- package/dist/utils/claude-config-path.js.map +1 -0
- package/dist/utils/claude-spawner.d.ts.map +1 -1
- package/dist/utils/claude-spawner.js +2 -1
- package/dist/utils/claude-spawner.js.map +1 -1
- package/dist/utils/delegation-validator.d.ts +1 -1
- package/dist/utils/delegation-validator.d.ts.map +1 -1
- package/dist/utils/delegation-validator.js +10 -4
- package/dist/utils/delegation-validator.js.map +1 -1
- package/dist/utils/percentage.d.ts +5 -0
- package/dist/utils/percentage.d.ts.map +1 -0
- package/dist/utils/percentage.js +13 -0
- package/dist/utils/percentage.js.map +1 -0
- package/dist/utils/profile-compat.d.ts +22 -0
- package/dist/utils/profile-compat.d.ts.map +1 -0
- package/dist/utils/profile-compat.js +54 -0
- package/dist/utils/profile-compat.js.map +1 -0
- package/dist/utils/shell-executor.d.ts +7 -0
- package/dist/utils/shell-executor.d.ts.map +1 -1
- package/dist/utils/shell-executor.js +21 -2
- package/dist/utils/shell-executor.js.map +1 -1
- package/dist/utils/websearch/hook-config.d.ts.map +1 -1
- package/dist/utils/websearch/hook-config.js +9 -23
- package/dist/utils/websearch/hook-config.js.map +1 -1
- package/dist/web-server/health/config-checks.d.ts +1 -1
- package/dist/web-server/health/config-checks.d.ts.map +1 -1
- package/dist/web-server/health/config-checks.js +43 -45
- package/dist/web-server/health/config-checks.js.map +1 -1
- package/dist/web-server/jsonl-parser.d.ts +0 -4
- package/dist/web-server/jsonl-parser.d.ts.map +1 -1
- package/dist/web-server/jsonl-parser.js +52 -29
- package/dist/web-server/jsonl-parser.js.map +1 -1
- package/dist/web-server/model-pricing.d.ts.map +1 -1
- package/dist/web-server/model-pricing.js +29 -16
- package/dist/web-server/model-pricing.js.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +57 -3
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/dist/web-server/routes/copilot-routes.d.ts.map +1 -1
- package/dist/web-server/routes/copilot-routes.js +29 -0
- package/dist/web-server/routes/copilot-routes.js.map +1 -1
- package/dist/web-server/routes/misc-routes.d.ts +2 -0
- package/dist/web-server/routes/misc-routes.d.ts.map +1 -1
- package/dist/web-server/routes/misc-routes.js +38 -7
- package/dist/web-server/routes/misc-routes.js.map +1 -1
- package/dist/web-server/routes/persist-routes.d.ts.map +1 -1
- package/dist/web-server/routes/persist-routes.js +54 -44
- package/dist/web-server/routes/persist-routes.js.map +1 -1
- package/dist/web-server/routes/route-helpers.d.ts +0 -5
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
- package/dist/web-server/routes/route-helpers.js +52 -6
- package/dist/web-server/routes/route-helpers.js.map +1 -1
- package/dist/web-server/shared-routes.js +2 -2
- package/dist/web-server/shared-routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/cliproxy-DHNUC4SO.js +0 -3
- package/dist/ui/assets/cliproxy-control-panel-CGHjj5lg.js +0 -1
- package/dist/ui/assets/copilot-ECO8m-1E.js +0 -3
- package/dist/ui/assets/cursor-CvqxaXRD.js +0 -1
- package/dist/ui/assets/index-Ctljzi2I.js +0 -1
- package/dist/ui/assets/index-DzvaSlcG.js +0 -47
- 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;
|
|
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>',
|
|
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":";AAAA;;;;;GAKG;;;AAEH,uCAAuE;AACvE,wEAI0C;
|
|
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;
|
|
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
|
|
27
|
-
if (
|
|
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
|
-
|
|
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:
|
|
39
|
+
return { backend: undefined, remainingArgs: extracted.remainingArgs };
|
|
46
40
|
}
|
|
47
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
|
67
|
-
if (
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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 =
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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 {
|
|
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 =
|
|
89
|
+
const verbose = (0, arg_extractor_1.hasAnyFlag)(remainingArgs, ['--verbose', '-v']);
|
|
119
90
|
const command = remainingArgs[0];
|
|
120
|
-
if (
|
|
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":";AAAA;;;;;GAKG;;;AAGH,wEAAmE;AACnE,8EAA+E;AAC/E,oEAAsD;
|
|
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
|
-
|
|
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;
|
|
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
|
|
342
|
-
|
|
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
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
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
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
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
|
}
|