@kaitranntt/ccs 7.37.0 → 7.37.1-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 (143) hide show
  1. package/dist/cliproxy/account-manager.d.ts +5 -207
  2. package/dist/cliproxy/account-manager.d.ts.map +1 -1
  3. package/dist/cliproxy/account-manager.js +35 -795
  4. package/dist/cliproxy/account-manager.js.map +1 -1
  5. package/dist/cliproxy/accounts/bulk-ops.d.ts +22 -0
  6. package/dist/cliproxy/accounts/bulk-ops.d.ts.map +1 -0
  7. package/dist/cliproxy/accounts/bulk-ops.js +88 -0
  8. package/dist/cliproxy/accounts/bulk-ops.js.map +1 -0
  9. package/dist/cliproxy/accounts/index.d.ts +19 -0
  10. package/dist/cliproxy/accounts/index.d.ts.map +1 -0
  11. package/dist/cliproxy/accounts/index.js +54 -0
  12. package/dist/cliproxy/accounts/index.js.map +1 -0
  13. package/dist/cliproxy/accounts/query.d.ts +36 -0
  14. package/dist/cliproxy/accounts/query.d.ts.map +1 -0
  15. package/dist/cliproxy/accounts/query.js +94 -0
  16. package/dist/cliproxy/accounts/query.js.map +1 -0
  17. package/dist/cliproxy/accounts/registry.d.ts +74 -0
  18. package/dist/cliproxy/accounts/registry.d.ts.map +1 -0
  19. package/dist/cliproxy/accounts/registry.js +510 -0
  20. package/dist/cliproxy/accounts/registry.js.map +1 -0
  21. package/dist/cliproxy/accounts/token-file-ops.d.ts +64 -0
  22. package/dist/cliproxy/accounts/token-file-ops.d.ts.map +1 -0
  23. package/dist/cliproxy/accounts/token-file-ops.js +206 -0
  24. package/dist/cliproxy/accounts/token-file-ops.js.map +1 -0
  25. package/dist/cliproxy/accounts/types.d.ts +66 -0
  26. package/dist/cliproxy/accounts/types.d.ts.map +1 -0
  27. package/dist/cliproxy/accounts/types.js +12 -0
  28. package/dist/cliproxy/accounts/types.js.map +1 -0
  29. package/dist/cliproxy/auth/token-expiry-checker.d.ts.map +1 -1
  30. package/dist/cliproxy/auth/token-expiry-checker.js +5 -1
  31. package/dist/cliproxy/auth/token-expiry-checker.js.map +1 -1
  32. package/dist/cliproxy/cliproxy-executor.d.ts +11 -28
  33. package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
  34. package/dist/cliproxy/cliproxy-executor.js +20 -1028
  35. package/dist/cliproxy/cliproxy-executor.js.map +1 -1
  36. package/dist/cliproxy/config/env-builder.d.ts +60 -0
  37. package/dist/cliproxy/config/env-builder.d.ts.map +1 -0
  38. package/dist/cliproxy/config/env-builder.js +311 -0
  39. package/dist/cliproxy/config/env-builder.js.map +1 -0
  40. package/dist/cliproxy/config/generator.d.ts +63 -0
  41. package/dist/cliproxy/config/generator.d.ts.map +1 -0
  42. package/dist/cliproxy/config/generator.js +336 -0
  43. package/dist/cliproxy/config/generator.js.map +1 -0
  44. package/dist/cliproxy/config/index.d.ts +10 -0
  45. package/dist/cliproxy/config/index.d.ts.map +1 -0
  46. package/dist/cliproxy/config/index.js +26 -0
  47. package/dist/cliproxy/config/index.js.map +1 -0
  48. package/dist/cliproxy/config/path-resolver.d.ts +47 -0
  49. package/dist/cliproxy/config/path-resolver.d.ts.map +1 -0
  50. package/dist/cliproxy/config/path-resolver.js +104 -0
  51. package/dist/cliproxy/config/path-resolver.js.map +1 -0
  52. package/dist/cliproxy/config/port-manager.d.ts +33 -0
  53. package/dist/cliproxy/config/port-manager.d.ts.map +1 -0
  54. package/dist/cliproxy/config/port-manager.js +68 -0
  55. package/dist/cliproxy/config/port-manager.js.map +1 -0
  56. package/dist/cliproxy/config/thinking-config.d.ts +39 -0
  57. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -0
  58. package/dist/cliproxy/config/thinking-config.js +143 -0
  59. package/dist/cliproxy/config/thinking-config.js.map +1 -0
  60. package/dist/cliproxy/config-generator.d.ts +9 -221
  61. package/dist/cliproxy/config-generator.d.ts.map +1 -1
  62. package/dist/cliproxy/config-generator.js +12 -856
  63. package/dist/cliproxy/config-generator.js.map +1 -1
  64. package/dist/cliproxy/executor/env-resolver.d.ts +45 -0
  65. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -0
  66. package/dist/cliproxy/executor/env-resolver.js +106 -0
  67. package/dist/cliproxy/executor/env-resolver.js.map +1 -0
  68. package/dist/cliproxy/executor/index.d.ts +24 -0
  69. package/dist/cliproxy/executor/index.d.ts.map +1 -0
  70. package/dist/cliproxy/executor/index.js +669 -0
  71. package/dist/cliproxy/executor/index.js.map +1 -0
  72. package/dist/cliproxy/executor/lifecycle-manager.d.ts +33 -0
  73. package/dist/cliproxy/executor/lifecycle-manager.d.ts.map +1 -0
  74. package/dist/cliproxy/executor/lifecycle-manager.js +161 -0
  75. package/dist/cliproxy/executor/lifecycle-manager.js.map +1 -0
  76. package/dist/cliproxy/executor/retry-handler.d.ts +27 -0
  77. package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -0
  78. package/dist/cliproxy/executor/retry-handler.js +109 -0
  79. package/dist/cliproxy/executor/retry-handler.js.map +1 -0
  80. package/dist/cliproxy/executor/session-bridge.d.ts +30 -0
  81. package/dist/cliproxy/executor/session-bridge.d.ts.map +1 -0
  82. package/dist/cliproxy/executor/session-bridge.js +232 -0
  83. package/dist/cliproxy/executor/session-bridge.js.map +1 -0
  84. package/dist/commands/cliproxy/auth-subcommand.d.ts +10 -0
  85. package/dist/commands/cliproxy/auth-subcommand.d.ts.map +1 -0
  86. package/dist/commands/cliproxy/auth-subcommand.js +55 -0
  87. package/dist/commands/cliproxy/auth-subcommand.js.map +1 -0
  88. package/dist/commands/cliproxy/help-subcommand.d.ts +8 -0
  89. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -0
  90. package/dist/commands/cliproxy/help-subcommand.js +87 -0
  91. package/dist/commands/cliproxy/help-subcommand.js.map +1 -0
  92. package/dist/commands/cliproxy/index.d.ts +11 -0
  93. package/dist/commands/cliproxy/index.d.ts.map +1 -0
  94. package/dist/commands/cliproxy/index.js +196 -0
  95. package/dist/commands/cliproxy/index.js.map +1 -0
  96. package/dist/commands/cliproxy/install-subcommand.d.ts +14 -0
  97. package/dist/commands/cliproxy/install-subcommand.d.ts.map +1 -0
  98. package/dist/commands/cliproxy/install-subcommand.js +112 -0
  99. package/dist/commands/cliproxy/install-subcommand.js.map +1 -0
  100. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts +10 -0
  101. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts.map +1 -0
  102. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js +54 -0
  103. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js.map +1 -0
  104. package/dist/commands/cliproxy/quota-subcommand.d.ts +16 -0
  105. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -0
  106. package/dist/commands/cliproxy/quota-subcommand.js +383 -0
  107. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -0
  108. package/dist/commands/cliproxy/variant-subcommand.d.ts +11 -0
  109. package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -0
  110. package/dist/commands/cliproxy/variant-subcommand.js +292 -0
  111. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -0
  112. package/dist/commands/cliproxy-command.d.ts +4 -15
  113. package/dist/commands/cliproxy-command.d.ts.map +1 -1
  114. package/dist/commands/cliproxy-command.js +5 -1090
  115. package/dist/commands/cliproxy-command.js.map +1 -1
  116. package/dist/commands/version-command.js +1 -1
  117. package/dist/commands/version-command.js.map +1 -1
  118. package/dist/ui/assets/{accounts-DmKrgrCj.js → accounts-D0KU1a-4.js} +1 -1
  119. package/dist/ui/assets/{alert-dialog-CHcjWgRn.js → alert-dialog-BNRDV_Kh.js} +1 -1
  120. package/dist/ui/assets/{api-BFHZ3RKb.js → api-ClkFu9LY.js} +1 -1
  121. package/dist/ui/assets/{auth-section-DAI6Q5vU.js → auth-section-CNhNN1Jp.js} +1 -1
  122. package/dist/ui/assets/{backups-section-B1O8i4FM.js → backups-section-CZ721HIu.js} +1 -1
  123. package/dist/ui/assets/cliproxy-DeGucfVg.js +3 -0
  124. package/dist/ui/assets/{cliproxy-control-panel-3zVE7jZH.js → cliproxy-control-panel-T9i_Ldh0.js} +1 -1
  125. package/dist/ui/assets/{confirm-dialog-DV0JzL4A.js → confirm-dialog-Cy1__gRc.js} +1 -1
  126. package/dist/ui/assets/{copilot-BX8vT5RR.js → copilot-Cdqs2Jbh.js} +3 -3
  127. package/dist/ui/assets/{globalenv-section-BAft0m9b.js → globalenv-section-BEKtYN6I.js} +1 -1
  128. package/dist/ui/assets/{health-ct5TpFUE.js → health-BaHazGgS.js} +1 -1
  129. package/dist/ui/assets/{index-BOsGipAU.js → index-BTBpI5th.js} +1 -1
  130. package/dist/ui/assets/{index-CU3zgD6n.js → index-BZn6kF0u.js} +1 -1
  131. package/dist/ui/assets/{index-B8-K01HW.js → index-C2MS84sf.js} +1 -1
  132. package/dist/ui/assets/{index-gfWiPznS.js → index-CiULLjNI.js} +8 -8
  133. package/dist/ui/assets/{index-RZ6b7YTz.js → index-PjscK1jS.js} +1 -1
  134. package/dist/ui/assets/{proxy-status-widget-Ng9oZdrw.js → proxy-status-widget-BY6Lnr80.js} +1 -1
  135. package/dist/ui/assets/{shared-DpInRmag.js → shared-dZGNvBe9.js} +1 -1
  136. package/dist/ui/assets/{switch-DkRSlAu-.js → switch-BCFbehJz.js} +1 -1
  137. package/dist/ui/index.html +1 -1
  138. package/dist/utils/ui/init.d.ts +1 -1
  139. package/dist/utils/ui/init.d.ts.map +1 -1
  140. package/dist/utils/ui/init.js +25 -36
  141. package/dist/utils/ui/init.js.map +1 -1
  142. package/package.json +1 -1
  143. package/dist/ui/assets/cliproxy-BsSI8qFW.js +0 -3
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ /**
3
+ * Token file operations and path management
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.validateNickname = exports.generateNickname = exports.extractAccountIdFromTokenFile = exports.tokenFileExists = exports.deleteTokenFile = exports.moveTokenFromPaused = exports.moveTokenToPaused = exports.getAccountTokenPath = exports.getPausedDir = exports.getAccountsRegistryPath = void 0;
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const config_generator_1 = require("../config-generator");
33
+ /**
34
+ * Get path to accounts registry file
35
+ */
36
+ function getAccountsRegistryPath() {
37
+ return path.join((0, config_generator_1.getCliproxyDir)(), 'accounts.json');
38
+ }
39
+ exports.getAccountsRegistryPath = getAccountsRegistryPath;
40
+ /**
41
+ * Get path to paused tokens directory
42
+ * Paused tokens are moved here so CLIProxyAPI won't discover them
43
+ *
44
+ * Uses sibling directory (auth-paused/) instead of subdirectory (auth/paused/)
45
+ * because CLIProxyAPI's watcher uses filepath.Walk() which recursively scans
46
+ * all subdirectories of auth/. A sibling directory is completely outside
47
+ * CLIProxyAPI's scan path, preventing token refresh loops.
48
+ */
49
+ function getPausedDir() {
50
+ return path.join((0, config_generator_1.getCliproxyDir)(), 'auth-paused');
51
+ }
52
+ exports.getPausedDir = getPausedDir;
53
+ /**
54
+ * Get token file path for an account
55
+ * Returns path in paused/ dir if account is paused, otherwise auth/
56
+ */
57
+ function getAccountTokenPath(account) {
58
+ const baseDir = account.paused ? getPausedDir() : (0, config_generator_1.getAuthDir)();
59
+ return path.join(baseDir, account.tokenFile);
60
+ }
61
+ exports.getAccountTokenPath = getAccountTokenPath;
62
+ /**
63
+ * Move token file to paused directory
64
+ * Creates paused directory if needed, idempotent
65
+ */
66
+ function moveTokenToPaused(tokenFile) {
67
+ const authDir = (0, config_generator_1.getAuthDir)();
68
+ const pausedDir = getPausedDir();
69
+ const tokenPath = path.join(authDir, tokenFile);
70
+ const pausedPath = path.join(pausedDir, tokenFile);
71
+ // Skip if already in paused directory
72
+ if (!fs.existsSync(tokenPath)) {
73
+ return true;
74
+ }
75
+ try {
76
+ // Create paused directory if it doesn't exist
77
+ if (!fs.existsSync(pausedDir)) {
78
+ fs.mkdirSync(pausedDir, { recursive: true, mode: 0o700 });
79
+ }
80
+ fs.renameSync(tokenPath, pausedPath);
81
+ return true;
82
+ }
83
+ catch {
84
+ // File operation failed, caller handles recovery
85
+ return false;
86
+ }
87
+ }
88
+ exports.moveTokenToPaused = moveTokenToPaused;
89
+ /**
90
+ * Move token file from paused directory back to auth
91
+ * Idempotent
92
+ */
93
+ function moveTokenFromPaused(tokenFile) {
94
+ const authDir = (0, config_generator_1.getAuthDir)();
95
+ const pausedDir = getPausedDir();
96
+ const tokenPath = path.join(authDir, tokenFile);
97
+ const pausedPath = path.join(pausedDir, tokenFile);
98
+ // Skip if already in auth directory
99
+ if (!fs.existsSync(pausedPath)) {
100
+ return true;
101
+ }
102
+ try {
103
+ fs.renameSync(pausedPath, tokenPath);
104
+ return true;
105
+ }
106
+ catch {
107
+ // File operation failed, caller handles recovery
108
+ return false;
109
+ }
110
+ }
111
+ exports.moveTokenFromPaused = moveTokenFromPaused;
112
+ /**
113
+ * Delete token file from both auth and paused directories
114
+ * Idempotent
115
+ */
116
+ function deleteTokenFile(tokenFile) {
117
+ const tokenPath = path.join((0, config_generator_1.getAuthDir)(), tokenFile);
118
+ const pausedPath = path.join(getPausedDir(), tokenFile);
119
+ // Delete from auth directory
120
+ if (fs.existsSync(tokenPath)) {
121
+ try {
122
+ fs.unlinkSync(tokenPath);
123
+ }
124
+ catch {
125
+ // Ignore deletion errors
126
+ }
127
+ }
128
+ // Also delete from paused directory if it exists there
129
+ if (fs.existsSync(pausedPath)) {
130
+ try {
131
+ fs.unlinkSync(pausedPath);
132
+ }
133
+ catch {
134
+ // Ignore deletion errors
135
+ }
136
+ }
137
+ }
138
+ exports.deleteTokenFile = deleteTokenFile;
139
+ /**
140
+ * Check if token file exists in either auth or paused directory
141
+ */
142
+ function tokenFileExists(tokenFile) {
143
+ const tokenPath = path.join((0, config_generator_1.getAuthDir)(), tokenFile);
144
+ const pausedPath = path.join(getPausedDir(), tokenFile);
145
+ return fs.existsSync(tokenPath) || fs.existsSync(pausedPath);
146
+ }
147
+ exports.tokenFileExists = tokenFileExists;
148
+ /**
149
+ * Extract unique account ID from token filename when email is unavailable
150
+ * For Kiro/GHCP OAuth, filenames are: <provider>-<oauth>-<profile_id>.json
151
+ * Extracts: <oauth>-<profile_id> as unique identifier
152
+ * @example kiro-github-ABC123.json → github-ABC123
153
+ * @example ghcp-amazon-XYZ789.json → amazon-XYZ789
154
+ * @example kiro-nomail.json → default (no OAuth structure)
155
+ */
156
+ function extractAccountIdFromTokenFile(filename, email) {
157
+ if (email)
158
+ return email;
159
+ // Pattern: <provider>-<oauth>-<profile_id>.json → extract <oauth>-<profile_id>
160
+ // Requires at least 2 hyphens to distinguish from simple filenames like "kiro-nomail.json"
161
+ const match = filename.match(/^[^-]+-([^-]+-[^.]+)\.json$/);
162
+ if (match)
163
+ return match[1];
164
+ return 'default';
165
+ }
166
+ exports.extractAccountIdFromTokenFile = extractAccountIdFromTokenFile;
167
+ /**
168
+ * Generate nickname from email
169
+ * Takes prefix before @ symbol, sanitizes whitespace
170
+ * Validation: 1-50 chars, any non-whitespace (permissive per user preference)
171
+ */
172
+ function generateNickname(email) {
173
+ if (!email)
174
+ return 'default';
175
+ const prefix = email.split('@')[0];
176
+ // Sanitize: remove whitespace, limit to 50 chars
177
+ return prefix.replace(/\s+/g, '').slice(0, 50) || 'default';
178
+ }
179
+ exports.generateNickname = generateNickname;
180
+ /**
181
+ * Validate nickname
182
+ * Rules: 1-50 chars, no whitespace, URL-safe, no reserved patterns
183
+ * @returns null if valid, error message if invalid
184
+ */
185
+ function validateNickname(nickname) {
186
+ if (!nickname || nickname.length === 0) {
187
+ return 'Nickname is required';
188
+ }
189
+ if (nickname.length > 50) {
190
+ return 'Nickname must be 50 characters or less';
191
+ }
192
+ if (/\s/.test(nickname)) {
193
+ return 'Nickname cannot contain whitespace';
194
+ }
195
+ // Block URL-unsafe chars that break routing
196
+ if (/[%\/&?#]/.test(nickname)) {
197
+ return 'Nickname cannot contain special URL characters (%, /, &, ?, #)';
198
+ }
199
+ // Block reserved patterns used by auto-discovery (kiro-1, ghcp-2, etc.)
200
+ if (/^(kiro|ghcp)-\d+$/i.test(nickname)) {
201
+ return 'Nickname cannot match reserved pattern (kiro-N, ghcp-N)';
202
+ }
203
+ return null;
204
+ }
205
+ exports.validateNickname = validateNickname;
206
+ //# sourceMappingURL=token-file-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-file-ops.js","sourceRoot":"","sources":["../../../src/cliproxy/accounts/token-file-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Shared types and constants for account management
3
+ */
4
+ import { CLIProxyProvider } from '../types';
5
+ /** Account tier for quota management: ultra > pro > free */
6
+ export type AccountTier = 'free' | 'pro' | 'ultra' | 'unknown';
7
+ /**
8
+ * Providers that typically have empty email in OAuth token files.
9
+ * For these providers, nickname is used as accountId instead of email.
10
+ */
11
+ export declare const PROVIDERS_WITHOUT_EMAIL: CLIProxyProvider[];
12
+ /** Account information */
13
+ export interface AccountInfo {
14
+ /** Account identifier (email or custom name) */
15
+ id: string;
16
+ /** Email address from OAuth (if available) */
17
+ email?: string;
18
+ /** User-friendly nickname for quick reference (auto-generated from email prefix) */
19
+ nickname?: string;
20
+ /** Provider this account belongs to */
21
+ provider: CLIProxyProvider;
22
+ /** Whether this is the default account for the provider */
23
+ isDefault: boolean;
24
+ /** Token file name in auth directory */
25
+ tokenFile: string;
26
+ /** When account was added */
27
+ createdAt: string;
28
+ /** Last usage time */
29
+ lastUsedAt?: string;
30
+ /** User-paused state (skip in quota rotation) */
31
+ paused?: boolean;
32
+ /** ISO timestamp when paused */
33
+ pausedAt?: string;
34
+ /** Account tier: ultra, pro, or free */
35
+ tier?: AccountTier;
36
+ /** GCP Project ID (Antigravity only) - read-only, fetched from auth token */
37
+ projectId?: string;
38
+ }
39
+ /** Provider accounts configuration */
40
+ export interface ProviderAccounts {
41
+ /** Default account ID for this provider */
42
+ default: string;
43
+ /** Map of account ID to account metadata */
44
+ accounts: Record<string, Omit<AccountInfo, 'id' | 'provider' | 'isDefault'>>;
45
+ }
46
+ /** Accounts registry structure */
47
+ export interface AccountsRegistry {
48
+ /** Version for future migrations */
49
+ version: number;
50
+ /** Accounts organized by provider */
51
+ providers: Partial<Record<CLIProxyProvider, ProviderAccounts>>;
52
+ }
53
+ /** Result of bulk pause/resume operations */
54
+ export interface BulkOperationResult {
55
+ succeeded: string[];
56
+ failed: Array<{
57
+ id: string;
58
+ reason: string;
59
+ }>;
60
+ }
61
+ /** Result of solo account operation */
62
+ export interface SoloOperationResult {
63
+ activated: string;
64
+ paused: string[];
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/accounts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,EAAqB,CAAC;AAE5E,0BAA0B;AAC1B,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;CAC9E;AAED,kCAAkC;AAClC,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAChE;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Shared types and constants for account management
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PROVIDERS_WITHOUT_EMAIL = void 0;
7
+ /**
8
+ * Providers that typically have empty email in OAuth token files.
9
+ * For these providers, nickname is used as accountId instead of email.
10
+ */
11
+ exports.PROVIDERS_WITHOUT_EMAIL = ['kiro', 'ghcp'];
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cliproxy/accounts/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAOH;;;GAGG;AACU,QAAA,uBAAuB,GAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"token-expiry-checker.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/token-expiry-checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI5C,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAK1C,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,YAAY,EAAE,IAAI,CAAC;CACpB;AAYD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,IAAI,CAsDxB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,EAAE,CAgBzD"}
1
+ {"version":3,"file":"token-expiry-checker.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/token-expiry-checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI5C,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAK1C,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,YAAY,EAAE,IAAI,CAAC;CACpB;AAYD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,IAAI,CA0DxB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,EAAE,CAgBzD"}
@@ -45,7 +45,11 @@ const MAX_TOKEN_FILE_SIZE = 1024 * 1024;
45
45
  * @returns null if token file doesn't exist or is invalid
46
46
  */
47
47
  function getTokenExpiryInfo(provider, accountId) {
48
- const tokenPath = (0, account_manager_1.getAccountTokenPath)(provider, accountId);
48
+ const account = (0, account_manager_1.getProviderAccounts)(provider).find((a) => a.id === accountId);
49
+ if (!account) {
50
+ return null;
51
+ }
52
+ const tokenPath = (0, account_manager_1.getAccountTokenPath)(account);
49
53
  if (!tokenPath || !fs.existsSync(tokenPath)) {
50
54
  return null;
51
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-expiry-checker.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/token-expiry-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-expiry-checker.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/token-expiry-checker.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,16 @@
1
1
  /**
2
- * CLIProxy Executor - Spawn/Kill Pattern for CLIProxyAPI
2
+ * CLIProxy Executor - Backwards Compatibility Shim
3
3
  *
4
- * Mirrors GLMT architecture:
5
- * 1. Ensure binary exists (Phase 1)
6
- * 2. Generate config for provider
7
- * 3. Spawn CLIProxyAPI binary
8
- * 4. Poll port for readiness (no stdout signal)
9
- * 5. Execute Claude CLI with proxied environment
10
- * 6. Kill proxy on Claude exit
4
+ * This file re-exports from the modular executor/ structure.
5
+ * All implementation has been moved to:
6
+ * - executor/index.ts - Main orchestrator
7
+ * - executor/lifecycle-manager.ts - Spawn/kill/poll operations
8
+ * - executor/env-resolver.ts - Environment variable resolution
9
+ * - executor/retry-handler.ts - Error recovery and retry logic
10
+ * - executor/session-bridge.ts - Session tracking integration
11
11
  *
12
- * Key difference from GLMT: Uses TCP port polling instead of PROXY_READY signal
12
+ * @deprecated Import from './executor' instead
13
13
  */
14
- import { CLIProxyProvider, ExecutorConfig } from './types';
15
- /**
16
- * Execute Claude CLI with CLIProxy (main entry point)
17
- *
18
- * @param claudeCli Path to Claude CLI executable
19
- * @param provider CLIProxy provider (gemini, codex, agy, qwen)
20
- * @param args Arguments to pass to Claude CLI
21
- * @param config Optional executor configuration
22
- */
23
- export declare function execClaudeWithCLIProxy(claudeCli: string, provider: CLIProxyProvider, args: string[], config?: Partial<ExecutorConfig>): Promise<void>;
24
- /**
25
- * Check if a port is available
26
- */
27
- export declare function isPortAvailable(port: number): Promise<boolean>;
28
- /**
29
- * Find an available port in range
30
- */
31
- export declare function findAvailablePort(startPort?: number, range?: number): Promise<number>;
32
- export default execClaudeWithCLIProxy;
14
+ export { execClaudeWithCLIProxy, isPortAvailable, findAvailablePort } from './executor';
15
+ export { default } from './executor';
33
16
  //# sourceMappingURL=cliproxy-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cliproxy-executor.d.ts","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuBH,OAAO,EAAE,gBAAgB,EAAwC,cAAc,EAAE,MAAM,SAAS,CAAC;AAoFjG;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,OAAO,CAAC,IAAI,CAAC,CAk/Bf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAepE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,GAAE,MAA8B,EACzC,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"cliproxy-executor.d.ts","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}