@kaitranntt/ccs 4.4.0 → 5.0.0

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 (262) hide show
  1. package/README.md +14 -7
  2. package/VERSION +1 -1
  3. package/config/base-agy.settings.json +10 -0
  4. package/config/base-codex.settings.json +10 -0
  5. package/config/base-gemini.settings.json +10 -0
  6. package/dist/auth/auth-commands.d.ts +52 -0
  7. package/dist/auth/auth-commands.d.ts.map +1 -0
  8. package/dist/auth/auth-commands.js +479 -0
  9. package/dist/auth/auth-commands.js.map +1 -0
  10. package/dist/auth/profile-detector.d.ts +68 -0
  11. package/dist/auth/profile-detector.d.ts.map +1 -0
  12. package/dist/auth/profile-detector.js +209 -0
  13. package/dist/auth/profile-detector.js.map +1 -0
  14. package/dist/auth/profile-registry.d.ts +60 -0
  15. package/dist/auth/profile-registry.d.ts.map +1 -0
  16. package/dist/auth/profile-registry.js +188 -0
  17. package/dist/auth/profile-registry.js.map +1 -0
  18. package/dist/ccs.d.ts +10 -0
  19. package/dist/ccs.d.ts.map +1 -0
  20. package/dist/ccs.js +320 -0
  21. package/dist/ccs.js.map +1 -0
  22. package/dist/cliproxy/auth-handler.d.ts +93 -0
  23. package/dist/cliproxy/auth-handler.d.ts.map +1 -0
  24. package/dist/cliproxy/auth-handler.js +402 -0
  25. package/dist/cliproxy/auth-handler.js.map +1 -0
  26. package/dist/cliproxy/base-config-loader.d.ts +42 -0
  27. package/dist/cliproxy/base-config-loader.d.ts.map +1 -0
  28. package/dist/cliproxy/base-config-loader.js +123 -0
  29. package/dist/cliproxy/base-config-loader.js.map +1 -0
  30. package/dist/cliproxy/binary-manager.d.ts +104 -0
  31. package/dist/cliproxy/binary-manager.d.ts.map +1 -0
  32. package/dist/cliproxy/binary-manager.js +567 -0
  33. package/dist/cliproxy/binary-manager.js.map +1 -0
  34. package/dist/cliproxy/cliproxy-executor.d.ts +33 -0
  35. package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -0
  36. package/dist/cliproxy/cliproxy-executor.js +297 -0
  37. package/dist/cliproxy/cliproxy-executor.js.map +1 -0
  38. package/dist/cliproxy/config-generator.d.ts +89 -0
  39. package/dist/cliproxy/config-generator.d.ts.map +1 -0
  40. package/dist/cliproxy/config-generator.js +263 -0
  41. package/dist/cliproxy/config-generator.js.map +1 -0
  42. package/dist/cliproxy/index.d.ts +13 -0
  43. package/dist/cliproxy/index.d.ts.map +1 -0
  44. package/dist/cliproxy/index.js +62 -0
  45. package/dist/cliproxy/index.js.map +1 -0
  46. package/dist/cliproxy/platform-detector.d.ts +48 -0
  47. package/dist/cliproxy/platform-detector.d.ts.map +1 -0
  48. package/dist/cliproxy/platform-detector.js +118 -0
  49. package/dist/cliproxy/platform-detector.js.map +1 -0
  50. package/dist/cliproxy/types.d.ts +169 -0
  51. package/dist/cliproxy/types.d.ts.map +1 -0
  52. package/dist/cliproxy/types.js +7 -0
  53. package/dist/cliproxy/types.js.map +1 -0
  54. package/dist/commands/doctor-command.d.ts +10 -0
  55. package/dist/commands/doctor-command.d.ts.map +1 -0
  56. package/dist/commands/doctor-command.js +44 -0
  57. package/dist/commands/doctor-command.js.map +1 -0
  58. package/dist/commands/help-command.d.ts +5 -0
  59. package/dist/commands/help-command.d.ts.map +1 -0
  60. package/dist/commands/help-command.js +104 -0
  61. package/dist/commands/help-command.js.map +1 -0
  62. package/dist/commands/install-command.d.ts +14 -0
  63. package/dist/commands/install-command.d.ts.map +1 -0
  64. package/dist/commands/install-command.js +39 -0
  65. package/dist/commands/install-command.js.map +1 -0
  66. package/dist/commands/shell-completion-command.d.ts +10 -0
  67. package/dist/commands/shell-completion-command.d.ts.map +1 -0
  68. package/dist/commands/shell-completion-command.js +85 -0
  69. package/dist/commands/shell-completion-command.js.map +1 -0
  70. package/dist/commands/sync-command.d.ts +10 -0
  71. package/dist/commands/sync-command.d.ts.map +1 -0
  72. package/dist/commands/sync-command.js +59 -0
  73. package/dist/commands/sync-command.js.map +1 -0
  74. package/dist/commands/update-command.d.ts +12 -0
  75. package/dist/commands/update-command.d.ts.map +1 -0
  76. package/dist/commands/update-command.js +295 -0
  77. package/dist/commands/update-command.js.map +1 -0
  78. package/dist/commands/version-command.d.ts +10 -0
  79. package/dist/commands/version-command.d.ts.map +1 -0
  80. package/dist/commands/version-command.js +100 -0
  81. package/dist/commands/version-command.js.map +1 -0
  82. package/dist/delegation/delegation-handler.d.ts +60 -0
  83. package/dist/delegation/delegation-handler.d.ts.map +1 -0
  84. package/dist/delegation/delegation-handler.js +174 -0
  85. package/dist/delegation/delegation-handler.js.map +1 -0
  86. package/dist/delegation/headless-executor.d.ts +114 -0
  87. package/dist/delegation/headless-executor.d.ts.map +1 -0
  88. package/dist/delegation/headless-executor.js +562 -0
  89. package/dist/delegation/headless-executor.js.map +1 -0
  90. package/dist/delegation/result-formatter.d.ts +108 -0
  91. package/dist/delegation/result-formatter.d.ts.map +1 -0
  92. package/dist/delegation/result-formatter.js +391 -0
  93. package/dist/delegation/result-formatter.js.map +1 -0
  94. package/dist/delegation/session-manager.d.ts +58 -0
  95. package/dist/delegation/session-manager.d.ts.map +1 -0
  96. package/dist/delegation/session-manager.js +153 -0
  97. package/dist/delegation/session-manager.js.map +1 -0
  98. package/dist/delegation/settings-parser.d.ts +31 -0
  99. package/dist/delegation/settings-parser.d.ts.map +1 -0
  100. package/dist/delegation/settings-parser.js +107 -0
  101. package/dist/delegation/settings-parser.js.map +1 -0
  102. package/dist/glmt/delta-accumulator.d.ts +210 -0
  103. package/dist/glmt/delta-accumulator.d.ts.map +1 -0
  104. package/dist/glmt/delta-accumulator.js +351 -0
  105. package/dist/glmt/delta-accumulator.js.map +1 -0
  106. package/dist/glmt/glmt-proxy.d.ts +72 -0
  107. package/dist/glmt/glmt-proxy.d.ts.map +1 -0
  108. package/dist/glmt/glmt-proxy.js +427 -0
  109. package/dist/glmt/glmt-proxy.js.map +1 -0
  110. package/dist/glmt/glmt-transformer.d.ts +265 -0
  111. package/dist/glmt/glmt-transformer.d.ts.map +1 -0
  112. package/dist/glmt/glmt-transformer.js +832 -0
  113. package/dist/glmt/glmt-transformer.js.map +1 -0
  114. package/dist/glmt/locale-enforcer.d.ts +38 -0
  115. package/dist/glmt/locale-enforcer.d.ts.map +1 -0
  116. package/dist/glmt/locale-enforcer.js +69 -0
  117. package/dist/glmt/locale-enforcer.js.map +1 -0
  118. package/dist/glmt/reasoning-enforcer.d.ts +52 -0
  119. package/dist/glmt/reasoning-enforcer.d.ts.map +1 -0
  120. package/dist/glmt/reasoning-enforcer.js +151 -0
  121. package/dist/glmt/reasoning-enforcer.js.map +1 -0
  122. package/dist/glmt/sse-parser.d.ts +47 -0
  123. package/dist/glmt/sse-parser.d.ts.map +1 -0
  124. package/dist/glmt/sse-parser.js +93 -0
  125. package/dist/glmt/sse-parser.js.map +1 -0
  126. package/dist/management/doctor.d.ts +104 -0
  127. package/dist/management/doctor.d.ts.map +1 -0
  128. package/dist/management/doctor.js +673 -0
  129. package/dist/management/doctor.js.map +1 -0
  130. package/dist/management/instance-manager.d.ts +57 -0
  131. package/dist/management/instance-manager.d.ts.map +1 -0
  132. package/dist/management/instance-manager.js +195 -0
  133. package/dist/management/instance-manager.js.map +1 -0
  134. package/dist/management/recovery-manager.d.ts +39 -0
  135. package/dist/management/recovery-manager.d.ts.map +1 -0
  136. package/dist/management/recovery-manager.js +141 -0
  137. package/dist/management/recovery-manager.js.map +1 -0
  138. package/dist/management/shared-manager.d.ts +47 -0
  139. package/dist/management/shared-manager.d.ts.map +1 -0
  140. package/dist/management/shared-manager.js +388 -0
  141. package/dist/management/shared-manager.js.map +1 -0
  142. package/dist/types/cli.d.ts +50 -0
  143. package/dist/types/cli.d.ts.map +1 -0
  144. package/dist/types/cli.js +16 -0
  145. package/dist/types/cli.js.map +1 -0
  146. package/dist/types/config.d.ts +51 -0
  147. package/dist/types/config.d.ts.map +1 -0
  148. package/dist/types/config.js +26 -0
  149. package/dist/types/config.js.map +1 -0
  150. package/dist/types/delegation.d.ts +61 -0
  151. package/dist/types/delegation.d.ts.map +1 -0
  152. package/dist/types/delegation.js +6 -0
  153. package/dist/types/delegation.js.map +1 -0
  154. package/dist/types/glmt.d.ts +95 -0
  155. package/dist/types/glmt.d.ts.map +1 -0
  156. package/dist/types/glmt.js +7 -0
  157. package/dist/types/glmt.js.map +1 -0
  158. package/dist/types/index.d.ts +13 -0
  159. package/dist/types/index.d.ts.map +1 -0
  160. package/dist/types/index.js +16 -0
  161. package/dist/types/index.js.map +1 -0
  162. package/dist/types/utils.d.ts +36 -0
  163. package/dist/types/utils.d.ts.map +1 -0
  164. package/dist/types/utils.js +22 -0
  165. package/dist/types/utils.js.map +1 -0
  166. package/dist/utils/claude-detector.d.ts +14 -0
  167. package/dist/utils/claude-detector.d.ts.map +1 -0
  168. package/dist/utils/claude-detector.js +112 -0
  169. package/dist/utils/claude-detector.js.map +1 -0
  170. package/dist/utils/claude-dir-installer.d.ts +46 -0
  171. package/dist/utils/claude-dir-installer.d.ts.map +1 -0
  172. package/dist/utils/claude-dir-installer.js +289 -0
  173. package/dist/utils/claude-dir-installer.js.map +1 -0
  174. package/dist/utils/claude-symlink-manager.d.ts +61 -0
  175. package/dist/utils/claude-symlink-manager.d.ts.map +1 -0
  176. package/dist/utils/claude-symlink-manager.js +291 -0
  177. package/dist/utils/claude-symlink-manager.js.map +1 -0
  178. package/dist/utils/config-manager.d.ts +32 -0
  179. package/dist/utils/config-manager.d.ts.map +1 -0
  180. package/dist/utils/config-manager.js +143 -0
  181. package/dist/utils/config-manager.js.map +1 -0
  182. package/dist/utils/delegation-validator.d.ts +39 -0
  183. package/dist/utils/delegation-validator.d.ts.map +1 -0
  184. package/dist/utils/delegation-validator.js +161 -0
  185. package/dist/utils/delegation-validator.js.map +1 -0
  186. package/dist/utils/error-codes.d.ts +36 -0
  187. package/dist/utils/error-codes.d.ts.map +1 -0
  188. package/dist/utils/error-codes.js +63 -0
  189. package/dist/utils/error-codes.js.map +1 -0
  190. package/dist/utils/error-manager.d.ts +59 -0
  191. package/dist/utils/error-manager.d.ts.map +1 -0
  192. package/dist/utils/error-manager.js +228 -0
  193. package/dist/utils/error-manager.js.map +1 -0
  194. package/dist/utils/helpers.d.ts +27 -0
  195. package/dist/utils/helpers.d.ts.map +1 -0
  196. package/dist/utils/helpers.js +150 -0
  197. package/dist/utils/helpers.js.map +1 -0
  198. package/dist/utils/package-manager-detector.d.ts +14 -0
  199. package/dist/utils/package-manager-detector.d.ts.map +1 -0
  200. package/dist/utils/package-manager-detector.js +162 -0
  201. package/dist/utils/package-manager-detector.js.map +1 -0
  202. package/dist/utils/progress-indicator.d.ts +52 -0
  203. package/dist/utils/progress-indicator.d.ts.map +1 -0
  204. package/dist/utils/progress-indicator.js +102 -0
  205. package/dist/utils/progress-indicator.js.map +1 -0
  206. package/dist/utils/prompt.d.ts +29 -0
  207. package/dist/utils/prompt.d.ts.map +1 -0
  208. package/dist/utils/prompt.js +116 -0
  209. package/dist/utils/prompt.js.map +1 -0
  210. package/dist/utils/shell-completion.d.ts +52 -0
  211. package/dist/utils/shell-completion.d.ts.map +1 -0
  212. package/dist/utils/shell-completion.js +231 -0
  213. package/dist/utils/shell-completion.js.map +1 -0
  214. package/dist/utils/shell-executor.d.ts +15 -0
  215. package/dist/utils/shell-executor.d.ts.map +1 -0
  216. package/dist/utils/shell-executor.js +57 -0
  217. package/dist/utils/shell-executor.js.map +1 -0
  218. package/dist/utils/update-checker.d.ts +48 -0
  219. package/dist/utils/update-checker.d.ts.map +1 -0
  220. package/dist/utils/update-checker.js +241 -0
  221. package/dist/utils/update-checker.js.map +1 -0
  222. package/lib/ccs +21 -1907
  223. package/lib/ccs.ps1 +26 -1800
  224. package/lib/error-codes.ps1 +2 -1
  225. package/lib/prompt.ps1 +2 -2
  226. package/package.json +31 -11
  227. package/scripts/add-shebang.js +39 -0
  228. package/scripts/bump-version.sh +25 -37
  229. package/scripts/dev-install.sh +32 -11
  230. package/scripts/postinstall.js +29 -29
  231. package/bin/auth/auth-commands.js +0 -499
  232. package/bin/auth/profile-detector.js +0 -204
  233. package/bin/auth/profile-registry.js +0 -225
  234. package/bin/ccs.js +0 -1034
  235. package/bin/delegation/README.md +0 -191
  236. package/bin/delegation/delegation-handler.js +0 -212
  237. package/bin/delegation/headless-executor.js +0 -618
  238. package/bin/delegation/result-formatter.js +0 -485
  239. package/bin/delegation/session-manager.js +0 -157
  240. package/bin/delegation/settings-parser.js +0 -109
  241. package/bin/glmt/delta-accumulator.js +0 -276
  242. package/bin/glmt/glmt-proxy.js +0 -495
  243. package/bin/glmt/glmt-transformer.js +0 -999
  244. package/bin/glmt/locale-enforcer.js +0 -72
  245. package/bin/glmt/reasoning-enforcer.js +0 -173
  246. package/bin/glmt/sse-parser.js +0 -96
  247. package/bin/management/doctor.js +0 -721
  248. package/bin/management/instance-manager.js +0 -202
  249. package/bin/management/recovery-manager.js +0 -135
  250. package/bin/management/shared-manager.js +0 -402
  251. package/bin/utils/claude-detector.js +0 -73
  252. package/bin/utils/claude-dir-installer.js +0 -283
  253. package/bin/utils/claude-symlink-manager.js +0 -289
  254. package/bin/utils/config-manager.js +0 -103
  255. package/bin/utils/delegation-validator.js +0 -154
  256. package/bin/utils/error-codes.js +0 -59
  257. package/bin/utils/error-manager.js +0 -165
  258. package/bin/utils/helpers.js +0 -136
  259. package/bin/utils/progress-indicator.js +0 -111
  260. package/bin/utils/prompt.js +0 -134
  261. package/bin/utils/shell-completion.js +0 -256
  262. package/bin/utils/update-checker.js +0 -243
package/dist/ccs.js ADDED
@@ -0,0 +1,320 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * CCS (Claude Code Switch) - Entry Point
5
+ *
6
+ * Instant profile switching for Claude CLI.
7
+ * Supports multiple accounts, alternative models (GLM, Kimi),
8
+ * and cost-optimized delegation.
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || function (mod) {
27
+ if (mod && mod.__esModule) return mod;
28
+ var result = {};
29
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
30
+ __setModuleDefault(result, mod);
31
+ return result;
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ const child_process_1 = require("child_process");
35
+ const path = __importStar(require("path"));
36
+ const fs = __importStar(require("fs"));
37
+ const claude_detector_1 = require("./utils/claude-detector");
38
+ const config_manager_1 = require("./utils/config-manager");
39
+ const error_manager_1 = require("./utils/error-manager");
40
+ const cliproxy_1 = require("./cliproxy");
41
+ // Import extracted command handlers
42
+ const version_command_1 = require("./commands/version-command");
43
+ const help_command_1 = require("./commands/help-command");
44
+ const install_command_1 = require("./commands/install-command");
45
+ const doctor_command_1 = require("./commands/doctor-command");
46
+ const sync_command_1 = require("./commands/sync-command");
47
+ const shell_completion_command_1 = require("./commands/shell-completion-command");
48
+ const update_command_1 = require("./commands/update-command");
49
+ // Import extracted utility functions
50
+ const shell_executor_1 = require("./utils/shell-executor");
51
+ /**
52
+ * Smart profile detection
53
+ */
54
+ function detectProfile(args) {
55
+ if (args.length === 0 || args[0].startsWith('-')) {
56
+ // No args or first arg is a flag → use default profile
57
+ return { profile: 'default', remainingArgs: args };
58
+ }
59
+ else {
60
+ // First arg doesn't start with '-' → treat as profile name
61
+ return { profile: args[0], remainingArgs: args.slice(1) };
62
+ }
63
+ }
64
+ // ========== GLMT Proxy Execution ==========
65
+ /**
66
+ * Execute Claude CLI with embedded proxy (for GLMT profile)
67
+ */
68
+ async function execClaudeWithProxy(claudeCli, profileName, args) {
69
+ // 1. Read settings to get API key
70
+ const settingsPath = (0, config_manager_1.getSettingsPath)(profileName);
71
+ const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
72
+ const apiKey = settings.env.ANTHROPIC_AUTH_TOKEN;
73
+ if (!apiKey || apiKey === 'YOUR_GLM_API_KEY_HERE') {
74
+ console.error('[X] GLMT profile requires Z.AI API key');
75
+ console.error(' Edit ~/.ccs/glmt.settings.json and set ANTHROPIC_AUTH_TOKEN');
76
+ process.exit(1);
77
+ }
78
+ // Detect verbose flag
79
+ const verbose = args.includes('--verbose') || args.includes('-v');
80
+ // 2. Spawn embedded proxy with verbose flag
81
+ const proxyPath = path.join(__dirname, 'glmt', 'glmt-proxy.js');
82
+ const proxyArgs = verbose ? ['--verbose'] : [];
83
+ // Use process.execPath for Windows compatibility (CVE-2024-27980)
84
+ const proxy = (0, child_process_1.spawn)(process.execPath, [proxyPath, ...proxyArgs], {
85
+ stdio: ['ignore', 'pipe', verbose ? 'pipe' : 'inherit'],
86
+ });
87
+ // 3. Wait for proxy ready signal (with timeout)
88
+ const { ProgressIndicator } = await Promise.resolve().then(() => __importStar(require('./utils/progress-indicator')));
89
+ const spinner = new ProgressIndicator('Starting GLMT proxy');
90
+ spinner.start();
91
+ let port;
92
+ try {
93
+ port = await new Promise((resolve, reject) => {
94
+ const timeout = setTimeout(() => {
95
+ reject(new Error('Proxy startup timeout (5s)'));
96
+ }, 5000);
97
+ proxy.stdout?.on('data', (data) => {
98
+ const match = data.toString().match(/PROXY_READY:(\d+)/);
99
+ if (match) {
100
+ clearTimeout(timeout);
101
+ resolve(parseInt(match[1]));
102
+ }
103
+ });
104
+ proxy.on('error', (error) => {
105
+ clearTimeout(timeout);
106
+ reject(error);
107
+ });
108
+ proxy.on('exit', (code) => {
109
+ if (code !== 0 && code !== null) {
110
+ clearTimeout(timeout);
111
+ reject(new Error(`Proxy exited with code ${code}`));
112
+ }
113
+ });
114
+ });
115
+ spinner.succeed(`GLMT proxy ready on port ${port}`);
116
+ }
117
+ catch (error) {
118
+ const err = error;
119
+ spinner.fail('Failed to start GLMT proxy');
120
+ console.error('[X] Error:', err.message);
121
+ console.error('');
122
+ console.error('Possible causes:');
123
+ console.error(' 1. Port conflict (unlikely with random port)');
124
+ console.error(' 2. Node.js permission issue');
125
+ console.error(' 3. Firewall blocking localhost');
126
+ console.error('');
127
+ console.error('Workarounds:');
128
+ console.error(' - Use non-thinking mode: ccs glm "prompt"');
129
+ console.error(' - Enable verbose logging: ccs glmt --verbose "prompt"');
130
+ console.error(' - Check proxy logs in ~/.ccs/logs/ (if debug enabled)');
131
+ console.error('');
132
+ proxy.kill();
133
+ process.exit(1);
134
+ }
135
+ // 4. Spawn Claude CLI with proxy URL
136
+ const envVars = {
137
+ ANTHROPIC_BASE_URL: `http://127.0.0.1:${port}`,
138
+ ANTHROPIC_AUTH_TOKEN: apiKey,
139
+ ANTHROPIC_MODEL: 'glm-4.6',
140
+ };
141
+ const isWindows = process.platform === 'win32';
142
+ const needsShell = isWindows && /\.(cmd|bat|ps1)$/i.test(claudeCli);
143
+ const env = { ...process.env, ...envVars };
144
+ let claude;
145
+ if (needsShell) {
146
+ const cmdString = [claudeCli, ...args].map(shell_executor_1.escapeShellArg).join(' ');
147
+ claude = (0, child_process_1.spawn)(cmdString, {
148
+ stdio: 'inherit',
149
+ windowsHide: true,
150
+ shell: true,
151
+ env,
152
+ });
153
+ }
154
+ else {
155
+ claude = (0, child_process_1.spawn)(claudeCli, args, {
156
+ stdio: 'inherit',
157
+ windowsHide: true,
158
+ env,
159
+ });
160
+ }
161
+ // 5. Cleanup: kill proxy when Claude exits
162
+ claude.on('exit', (code, signal) => {
163
+ proxy.kill('SIGTERM');
164
+ if (signal)
165
+ process.kill(process.pid, signal);
166
+ else
167
+ process.exit(code || 0);
168
+ });
169
+ claude.on('error', (error) => {
170
+ console.error('[X] Claude CLI error:', error);
171
+ proxy.kill('SIGTERM');
172
+ process.exit(1);
173
+ });
174
+ // Also handle parent process termination
175
+ process.once('SIGTERM', () => {
176
+ proxy.kill('SIGTERM');
177
+ claude.kill('SIGTERM');
178
+ });
179
+ process.once('SIGINT', () => {
180
+ proxy.kill('SIGTERM');
181
+ claude.kill('SIGTERM');
182
+ });
183
+ }
184
+ async function main() {
185
+ const args = process.argv.slice(2);
186
+ // Special case: version command (check BEFORE profile detection)
187
+ const firstArg = args[0];
188
+ if (firstArg === 'version' || firstArg === '--version' || firstArg === '-v') {
189
+ (0, version_command_1.handleVersionCommand)();
190
+ }
191
+ // Special case: help command
192
+ if (firstArg === '--help' || firstArg === '-h' || firstArg === 'help') {
193
+ (0, help_command_1.handleHelpCommand)();
194
+ return;
195
+ }
196
+ // Special case: install command
197
+ if (firstArg === '--install') {
198
+ (0, install_command_1.handleInstallCommand)();
199
+ return;
200
+ }
201
+ // Special case: uninstall command
202
+ if (firstArg === '--uninstall') {
203
+ (0, install_command_1.handleUninstallCommand)();
204
+ return;
205
+ }
206
+ // Special case: shell completion installer
207
+ if (firstArg === '--shell-completion' || firstArg === '-sc') {
208
+ await (0, shell_completion_command_1.handleShellCompletionCommand)(args.slice(1));
209
+ return;
210
+ }
211
+ // Special case: doctor command
212
+ if (firstArg === 'doctor' || firstArg === '--doctor') {
213
+ await (0, doctor_command_1.handleDoctorCommand)();
214
+ return;
215
+ }
216
+ // Special case: sync command
217
+ if (firstArg === 'sync' || firstArg === '--sync') {
218
+ await (0, sync_command_1.handleSyncCommand)();
219
+ return;
220
+ }
221
+ // Special case: update command
222
+ if (firstArg === 'update' || firstArg === '--update') {
223
+ await (0, update_command_1.handleUpdateCommand)();
224
+ return;
225
+ }
226
+ // Special case: auth command
227
+ if (firstArg === 'auth') {
228
+ const AuthCommandsModule = await Promise.resolve().then(() => __importStar(require('./auth/auth-commands')));
229
+ const AuthCommands = AuthCommandsModule.default;
230
+ const authCommands = new AuthCommands();
231
+ await authCommands.route(args.slice(1));
232
+ return;
233
+ }
234
+ // Special case: headless delegation (-p flag)
235
+ if (args.includes('-p') || args.includes('--prompt')) {
236
+ const { DelegationHandler } = await Promise.resolve().then(() => __importStar(require('./delegation/delegation-handler')));
237
+ const handler = new DelegationHandler();
238
+ await handler.route(args);
239
+ return;
240
+ }
241
+ // Auto-recovery for missing configuration
242
+ const RecoveryManagerModule = await Promise.resolve().then(() => __importStar(require('./management/recovery-manager')));
243
+ const RecoveryManager = RecoveryManagerModule.default;
244
+ const recovery = new RecoveryManager();
245
+ const recovered = recovery.recoverAll();
246
+ if (recovered) {
247
+ recovery.showRecoveryHints();
248
+ }
249
+ // Detect profile
250
+ const { profile, remainingArgs } = detectProfile(args);
251
+ // Detect Claude CLI first (needed for all paths)
252
+ const claudeCli = (0, claude_detector_1.detectClaudeCli)();
253
+ if (!claudeCli) {
254
+ error_manager_1.ErrorManager.showClaudeNotFound();
255
+ process.exit(1);
256
+ }
257
+ // Use ProfileDetector to determine profile type
258
+ const ProfileDetectorModule = await Promise.resolve().then(() => __importStar(require('./auth/profile-detector')));
259
+ const ProfileDetector = ProfileDetectorModule.default;
260
+ const InstanceManagerModule = await Promise.resolve().then(() => __importStar(require('./management/instance-manager')));
261
+ const InstanceManager = InstanceManagerModule.default;
262
+ const ProfileRegistryModule = await Promise.resolve().then(() => __importStar(require('./auth/profile-registry')));
263
+ const ProfileRegistry = ProfileRegistryModule.default;
264
+ const detector = new ProfileDetector();
265
+ try {
266
+ const profileInfo = detector.detectProfileType(profile);
267
+ if (profileInfo.type === 'cliproxy') {
268
+ // CLIPROXY FLOW: OAuth-based profiles (gemini, codex, agy)
269
+ await (0, cliproxy_1.execClaudeWithCLIProxy)(claudeCli, profileInfo.name, remainingArgs);
270
+ }
271
+ else if (profileInfo.type === 'settings') {
272
+ // Check if this is GLMT profile (requires proxy)
273
+ if (profileInfo.name === 'glmt') {
274
+ // GLMT FLOW: Settings-based with embedded proxy for thinking support
275
+ await execClaudeWithProxy(claudeCli, profileInfo.name, remainingArgs);
276
+ }
277
+ else {
278
+ // EXISTING FLOW: Settings-based profile (glm, kimi)
279
+ // Use --settings flag (backward compatible)
280
+ const expandedSettingsPath = (0, config_manager_1.getSettingsPath)(profileInfo.name);
281
+ (0, shell_executor_1.execClaude)(claudeCli, ['--settings', expandedSettingsPath, ...remainingArgs]);
282
+ }
283
+ }
284
+ else if (profileInfo.type === 'account') {
285
+ // NEW FLOW: Account-based profile (work, personal)
286
+ // All platforms: Use instance isolation with CLAUDE_CONFIG_DIR
287
+ const registry = new ProfileRegistry();
288
+ const instanceMgr = new InstanceManager();
289
+ // Ensure instance exists (lazy init if needed)
290
+ const instancePath = instanceMgr.ensureInstance(profileInfo.name);
291
+ // Update last_used timestamp
292
+ registry.touchProfile(profileInfo.name);
293
+ // Execute Claude with instance isolation
294
+ const envVars = { CLAUDE_CONFIG_DIR: instancePath };
295
+ (0, shell_executor_1.execClaude)(claudeCli, remainingArgs, envVars);
296
+ }
297
+ else {
298
+ // DEFAULT: No profile configured, use Claude's own defaults
299
+ (0, shell_executor_1.execClaude)(claudeCli, remainingArgs);
300
+ }
301
+ }
302
+ catch (error) {
303
+ const err = error;
304
+ // Check if this is a profile not found error with suggestions
305
+ if (err.profileName && err.availableProfiles !== undefined) {
306
+ const allProfiles = err.availableProfiles.split('\n');
307
+ error_manager_1.ErrorManager.showProfileNotFound(err.profileName, allProfiles, err.suggestions);
308
+ }
309
+ else {
310
+ console.error(`[X] ${err.message}`);
311
+ }
312
+ process.exit(1);
313
+ }
314
+ }
315
+ // Run main
316
+ main().catch((error) => {
317
+ console.error('Fatal error:', error.message);
318
+ process.exit(1);
319
+ });
320
+ //# sourceMappingURL=ccs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ccs.js","sourceRoot":"","sources":["../src/ccs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Auth Handler for CLIProxyAPI
3
+ *
4
+ * Manages OAuth authentication for CLIProxy providers (Gemini, Codex, Antigravity).
5
+ * CLIProxyAPI handles OAuth internally - we just need to:
6
+ * 1. Check if auth exists (token files in CCS auth directory)
7
+ * 2. Trigger OAuth flow by spawning binary with auth flag
8
+ * 3. Auto-detect headless environments (SSH, no DISPLAY)
9
+ * 4. Use -no-browser flag for headless, display OAuth URL for manual auth
10
+ *
11
+ * Token storage: ~/.ccs/cliproxy/auth/<provider>/
12
+ * Each provider has its own directory to avoid conflicts.
13
+ */
14
+ import { CLIProxyProvider } from './types';
15
+ /**
16
+ * Auth status for a provider
17
+ */
18
+ export interface AuthStatus {
19
+ /** Provider name */
20
+ provider: CLIProxyProvider;
21
+ /** Whether authentication exists */
22
+ authenticated: boolean;
23
+ /** Path to token directory */
24
+ tokenDir: string;
25
+ /** Token file paths found */
26
+ tokenFiles: string[];
27
+ /** When last authenticated (if known) */
28
+ lastAuth?: Date;
29
+ }
30
+ /**
31
+ * OAuth config for each provider
32
+ */
33
+ interface ProviderOAuthConfig {
34
+ /** Provider identifier */
35
+ provider: CLIProxyProvider;
36
+ /** Display name */
37
+ displayName: string;
38
+ /** OAuth authorization URL (for manual flow) */
39
+ authUrl: string;
40
+ /** Scopes required */
41
+ scopes: string[];
42
+ /** CLI flag for auth */
43
+ authFlag: string;
44
+ }
45
+ /**
46
+ * Get OAuth config for provider
47
+ */
48
+ export declare function getOAuthConfig(provider: CLIProxyProvider): ProviderOAuthConfig;
49
+ /**
50
+ * Get token directory for provider
51
+ */
52
+ export declare function getProviderTokenDir(provider: CLIProxyProvider): string;
53
+ /**
54
+ * Check if provider has valid authentication
55
+ * CLIProxyAPI stores OAuth tokens as JSON files in the auth directory.
56
+ * Files are named with provider prefix (e.g., "antigravity-user@email.json").
57
+ * We MUST check for provider-specific files, not just any .json file.
58
+ */
59
+ export declare function isAuthenticated(provider: CLIProxyProvider): boolean;
60
+ /**
61
+ * Get detailed auth status for provider
62
+ */
63
+ export declare function getAuthStatus(provider: CLIProxyProvider): AuthStatus;
64
+ /**
65
+ * Get auth status for all providers
66
+ */
67
+ export declare function getAllAuthStatus(): AuthStatus[];
68
+ /**
69
+ * Clear authentication for provider
70
+ */
71
+ export declare function clearAuth(provider: CLIProxyProvider): boolean;
72
+ /**
73
+ * Trigger OAuth flow for provider
74
+ * Auto-detects headless environment and uses -no-browser flag accordingly
75
+ */
76
+ export declare function triggerOAuth(provider: CLIProxyProvider, options?: {
77
+ verbose?: boolean;
78
+ headless?: boolean;
79
+ }): Promise<boolean>;
80
+ /**
81
+ * Ensure provider is authenticated
82
+ * Triggers OAuth flow if not authenticated
83
+ */
84
+ export declare function ensureAuth(provider: CLIProxyProvider, options?: {
85
+ verbose?: boolean;
86
+ headless?: boolean;
87
+ }): Promise<boolean>;
88
+ /**
89
+ * Display auth status for all providers
90
+ */
91
+ export declare function displayAuthStatus(): void;
92
+ export {};
93
+ //# sourceMappingURL=auth-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-handler.d.ts","sourceRoot":"","sources":["../../src/cliproxy/auth-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAwB3C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,0BAA0B;IAC1B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,mBAAmB,CAM9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEtE;AAYD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CA0BnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,UAAU,CAoCpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,EAAE,CAG/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAiB7D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,OAAO,CAAC,OAAO,CAAC,CA4JlB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAkBxC"}