@kaitranntt/ccs 4.4.0 → 5.0.1

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 +98 -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 +95 -0
  23. package/dist/cliproxy/auth-handler.d.ts.map +1 -0
  24. package/dist/cliproxy/auth-handler.js +443 -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
@@ -0,0 +1,479 @@
1
+ "use strict";
2
+ /**
3
+ * Auth Commands (Simplified)
4
+ *
5
+ * CLI interface for CCS multi-account management.
6
+ * Commands: create, list, show, remove, default
7
+ *
8
+ * Login-per-profile model: Each profile is an isolated Claude instance.
9
+ * Users login directly in each instance (no credential copying).
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const child_process_1 = require("child_process");
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const profile_registry_1 = __importDefault(require("./profile-registry"));
42
+ const instance_manager_1 = require("../management/instance-manager");
43
+ const helpers_1 = require("../utils/helpers");
44
+ const claude_detector_1 = require("../utils/claude-detector");
45
+ const prompt_1 = require("../utils/prompt");
46
+ const package_json_1 = __importDefault(require("../../package.json"));
47
+ /**
48
+ * Auth Commands Class
49
+ */
50
+ class AuthCommands {
51
+ constructor() {
52
+ this.version = package_json_1.default.version;
53
+ this.registry = new profile_registry_1.default();
54
+ this.instanceMgr = new instance_manager_1.InstanceManager();
55
+ }
56
+ /**
57
+ * Show help for auth commands
58
+ */
59
+ showHelp() {
60
+ console.log((0, helpers_1.colored)('CCS Concurrent Account Management', 'bold'));
61
+ console.log('');
62
+ console.log((0, helpers_1.colored)('Usage:', 'cyan'));
63
+ console.log(` ${(0, helpers_1.colored)('ccs auth', 'yellow')} <command> [options]`);
64
+ console.log('');
65
+ console.log((0, helpers_1.colored)('Commands:', 'cyan'));
66
+ console.log(` ${(0, helpers_1.colored)('create <profile>', 'yellow')} Create new profile and login`);
67
+ console.log(` ${(0, helpers_1.colored)('list', 'yellow')} List all saved profiles`);
68
+ console.log(` ${(0, helpers_1.colored)('show <profile>', 'yellow')} Show profile details`);
69
+ console.log(` ${(0, helpers_1.colored)('remove <profile>', 'yellow')} Remove saved profile`);
70
+ console.log(` ${(0, helpers_1.colored)('default <profile>', 'yellow')} Set default profile`);
71
+ console.log('');
72
+ console.log((0, helpers_1.colored)('Examples:', 'cyan'));
73
+ console.log(` ${(0, helpers_1.colored)('ccs auth create work', 'yellow')} # Create & login to work profile`);
74
+ console.log(` ${(0, helpers_1.colored)('ccs auth default work', 'yellow')} # Set work as default`);
75
+ console.log(` ${(0, helpers_1.colored)('ccs auth list', 'yellow')} # List all profiles`);
76
+ console.log(` ${(0, helpers_1.colored)('ccs work "review code"', 'yellow')} # Use work profile`);
77
+ console.log(` ${(0, helpers_1.colored)('ccs "review code"', 'yellow')} # Use default profile`);
78
+ console.log('');
79
+ console.log((0, helpers_1.colored)('Options:', 'cyan'));
80
+ console.log(` ${(0, helpers_1.colored)('--force', 'yellow')} Allow overwriting existing profile (create)`);
81
+ console.log(` ${(0, helpers_1.colored)('--yes, -y', 'yellow')} Skip confirmation prompts (remove)`);
82
+ console.log(` ${(0, helpers_1.colored)('--json', 'yellow')} Output in JSON format (list, show)`);
83
+ console.log(` ${(0, helpers_1.colored)('--verbose', 'yellow')} Show additional details (list)`);
84
+ console.log('');
85
+ console.log((0, helpers_1.colored)('Note:', 'cyan'));
86
+ console.log(` By default, ${(0, helpers_1.colored)('ccs', 'yellow')} uses Claude CLI defaults from ~/.claude/`);
87
+ console.log(` Use ${(0, helpers_1.colored)('ccs auth default <profile>', 'yellow')} to change the default profile.`);
88
+ console.log('');
89
+ }
90
+ /**
91
+ * Parse command arguments
92
+ */
93
+ parseArgs(args) {
94
+ const profileName = args.find((arg) => !arg.startsWith('--'));
95
+ return {
96
+ profileName,
97
+ force: args.includes('--force'),
98
+ verbose: args.includes('--verbose'),
99
+ json: args.includes('--json'),
100
+ yes: args.includes('--yes') || args.includes('-y'),
101
+ };
102
+ }
103
+ /**
104
+ * Create new profile and prompt for login
105
+ */
106
+ async handleCreate(args) {
107
+ const { profileName, force } = this.parseArgs(args);
108
+ if (!profileName) {
109
+ console.error('[X] Profile name is required');
110
+ console.log('');
111
+ console.log(`Usage: ${(0, helpers_1.colored)('ccs auth create <profile> [--force]', 'yellow')}`);
112
+ console.log('');
113
+ console.log('Example:');
114
+ console.log(` ${(0, helpers_1.colored)('ccs auth create work', 'yellow')}`);
115
+ process.exit(1);
116
+ }
117
+ // Check if profile already exists
118
+ if (!force && this.registry.hasProfile(profileName)) {
119
+ console.error(`[X] Profile already exists: ${profileName}`);
120
+ console.log(` Use ${(0, helpers_1.colored)('--force', 'yellow')} to overwrite`);
121
+ process.exit(1);
122
+ }
123
+ try {
124
+ // Create instance directory
125
+ console.log(`[i] Creating profile: ${profileName}`);
126
+ const instancePath = this.instanceMgr.ensureInstance(profileName);
127
+ // Create/update profile entry
128
+ if (this.registry.hasProfile(profileName)) {
129
+ this.registry.updateProfile(profileName, {
130
+ type: 'account',
131
+ });
132
+ }
133
+ else {
134
+ this.registry.createProfile(profileName, {
135
+ type: 'account',
136
+ });
137
+ }
138
+ console.log(`[i] Instance directory: ${instancePath}`);
139
+ console.log('');
140
+ console.log((0, helpers_1.colored)('[i] Starting Claude in isolated instance...', 'yellow'));
141
+ console.log((0, helpers_1.colored)('[i] You will be prompted to login with your account.', 'yellow'));
142
+ console.log('');
143
+ // Detect Claude CLI
144
+ const claudeCli = (0, claude_detector_1.detectClaudeCli)();
145
+ if (!claudeCli) {
146
+ console.error('[X] Claude CLI not found');
147
+ console.log('');
148
+ console.log('Please install Claude CLI first:');
149
+ console.log(' https://claude.ai/download');
150
+ process.exit(1);
151
+ }
152
+ // Execute Claude in isolated instance (will auto-prompt for login if no credentials)
153
+ const child = (0, child_process_1.spawn)(claudeCli, [], {
154
+ stdio: 'inherit',
155
+ env: { ...process.env, CLAUDE_CONFIG_DIR: instancePath },
156
+ });
157
+ child.on('exit', (code) => {
158
+ if (code === 0) {
159
+ console.log('');
160
+ console.log((0, helpers_1.colored)('[OK] Profile created successfully', 'green'));
161
+ console.log('');
162
+ console.log(` Profile: ${profileName}`);
163
+ console.log(` Instance: ${instancePath}`);
164
+ console.log('');
165
+ console.log('Usage:');
166
+ console.log(` ${(0, helpers_1.colored)(`ccs ${profileName} "your prompt here"`, 'yellow')} # Use this specific profile`);
167
+ console.log('');
168
+ console.log('To set as default (so you can use just "ccs"):');
169
+ console.log(` ${(0, helpers_1.colored)(`ccs auth default ${profileName}`, 'yellow')}`);
170
+ console.log('');
171
+ process.exit(0);
172
+ }
173
+ else {
174
+ console.log('');
175
+ console.error('[X] Login failed or cancelled');
176
+ console.log('');
177
+ console.log('To retry:');
178
+ console.log(` ${(0, helpers_1.colored)(`ccs auth create ${profileName} --force`, 'yellow')}`);
179
+ console.log('');
180
+ process.exit(1);
181
+ }
182
+ });
183
+ child.on('error', (err) => {
184
+ console.error(`[X] Failed to execute Claude CLI: ${err.message}`);
185
+ process.exit(1);
186
+ });
187
+ }
188
+ catch (error) {
189
+ console.error(`[X] Failed to create profile: ${error.message}`);
190
+ process.exit(1);
191
+ }
192
+ }
193
+ /**
194
+ * List all saved profiles
195
+ */
196
+ async handleList(args) {
197
+ const { verbose, json } = this.parseArgs(args);
198
+ try {
199
+ const profiles = this.registry.getAllProfiles();
200
+ const defaultProfile = this.registry.getDefaultProfile();
201
+ const profileNames = Object.keys(profiles);
202
+ // JSON output mode
203
+ if (json) {
204
+ const output = {
205
+ version: this.version,
206
+ profiles: profileNames.map((name) => {
207
+ const profile = profiles[name];
208
+ const isDefault = name === defaultProfile;
209
+ const instancePath = this.instanceMgr.getInstancePath(name);
210
+ return {
211
+ name: name,
212
+ type: profile.type || 'account',
213
+ is_default: isDefault,
214
+ created: profile.created,
215
+ last_used: profile.last_used || null,
216
+ instance_path: instancePath,
217
+ };
218
+ }),
219
+ };
220
+ console.log(JSON.stringify(output, null, 2));
221
+ return;
222
+ }
223
+ // Human-readable output
224
+ if (profileNames.length === 0) {
225
+ console.log((0, helpers_1.colored)('No account profiles found', 'yellow'));
226
+ console.log('');
227
+ console.log('To create your first profile:');
228
+ console.log(` ${(0, helpers_1.colored)('ccs auth create <profile>', 'yellow')} # Create and login to profile`);
229
+ console.log('');
230
+ console.log('Example:');
231
+ console.log(` ${(0, helpers_1.colored)('ccs auth create work', 'yellow')}`);
232
+ console.log('');
233
+ return;
234
+ }
235
+ console.log((0, helpers_1.colored)('Saved Account Profiles:', 'bold'));
236
+ console.log('');
237
+ // Sort by last_used (descending), then alphabetically
238
+ const sorted = profileNames.sort((a, b) => {
239
+ const aProfile = profiles[a];
240
+ const bProfile = profiles[b];
241
+ // Default first
242
+ if (a === defaultProfile)
243
+ return -1;
244
+ if (b === defaultProfile)
245
+ return 1;
246
+ // Then by last_used
247
+ if (aProfile.last_used && bProfile.last_used) {
248
+ return new Date(bProfile.last_used).getTime() - new Date(aProfile.last_used).getTime();
249
+ }
250
+ if (aProfile.last_used)
251
+ return -1;
252
+ if (bProfile.last_used)
253
+ return 1;
254
+ // Then alphabetically
255
+ return a.localeCompare(b);
256
+ });
257
+ sorted.forEach((name) => {
258
+ const profile = profiles[name];
259
+ const isDefault = name === defaultProfile;
260
+ const indicator = isDefault ? (0, helpers_1.colored)('[*]', 'green') : '[ ]';
261
+ console.log(`${indicator} ${(0, helpers_1.colored)(name, 'cyan')}${isDefault ? (0, helpers_1.colored)(' (default)', 'green') : ''}`);
262
+ console.log(` Type: ${profile.type || 'account'}`);
263
+ if (verbose) {
264
+ console.log(` Created: ${new Date(profile.created).toLocaleString()}`);
265
+ if (profile.last_used) {
266
+ console.log(` Last used: ${new Date(profile.last_used).toLocaleString()}`);
267
+ }
268
+ }
269
+ console.log('');
270
+ });
271
+ console.log(`Total profiles: ${profileNames.length}`);
272
+ console.log('');
273
+ }
274
+ catch (error) {
275
+ console.error(`[X] Failed to list profiles: ${error.message}`);
276
+ process.exit(1);
277
+ }
278
+ }
279
+ /**
280
+ * Show details for a specific profile
281
+ */
282
+ async handleShow(args) {
283
+ const { profileName, json } = this.parseArgs(args);
284
+ if (!profileName) {
285
+ console.error('[X] Profile name is required');
286
+ console.log('');
287
+ console.log(`Usage: ${(0, helpers_1.colored)('ccs auth show <profile> [--json]', 'yellow')}`);
288
+ process.exit(1);
289
+ }
290
+ try {
291
+ const profile = this.registry.getProfile(profileName);
292
+ const defaultProfile = this.registry.getDefaultProfile();
293
+ const isDefault = profileName === defaultProfile;
294
+ const instancePath = this.instanceMgr.getInstancePath(profileName);
295
+ // Count sessions
296
+ let sessionCount = 0;
297
+ try {
298
+ const sessionsDir = path.join(instancePath, 'session-env');
299
+ if (fs.existsSync(sessionsDir)) {
300
+ const files = fs.readdirSync(sessionsDir);
301
+ sessionCount = files.filter((f) => f.endsWith('.json')).length;
302
+ }
303
+ }
304
+ catch (_e) {
305
+ // Ignore errors counting sessions
306
+ }
307
+ // JSON output mode
308
+ if (json) {
309
+ const output = {
310
+ name: profileName,
311
+ type: profile.type || 'account',
312
+ is_default: isDefault,
313
+ created: profile.created,
314
+ last_used: profile.last_used || null,
315
+ instance_path: instancePath,
316
+ session_count: sessionCount,
317
+ };
318
+ console.log(JSON.stringify(output, null, 2));
319
+ return;
320
+ }
321
+ // Human-readable output
322
+ console.log((0, helpers_1.colored)(`Profile: ${profileName}`, 'bold'));
323
+ console.log('');
324
+ console.log(` Type: ${profile.type || 'account'}`);
325
+ console.log(` Default: ${isDefault ? 'Yes' : 'No'}`);
326
+ console.log(` Instance: ${instancePath}`);
327
+ console.log(` Created: ${new Date(profile.created).toLocaleString()}`);
328
+ if (profile.last_used) {
329
+ console.log(` Last used: ${new Date(profile.last_used).toLocaleString()}`);
330
+ }
331
+ else {
332
+ console.log(` Last used: Never`);
333
+ }
334
+ console.log('');
335
+ }
336
+ catch (error) {
337
+ console.error(`[X] ${error.message}`);
338
+ process.exit(1);
339
+ }
340
+ }
341
+ /**
342
+ * Remove a saved profile
343
+ */
344
+ async handleRemove(args) {
345
+ const { profileName, yes } = this.parseArgs(args);
346
+ if (!profileName) {
347
+ console.error('[X] Profile name is required');
348
+ console.log('');
349
+ console.log(`Usage: ${(0, helpers_1.colored)('ccs auth remove <profile> [--yes]', 'yellow')}`);
350
+ process.exit(1);
351
+ }
352
+ if (!this.registry.hasProfile(profileName)) {
353
+ console.error(`[X] Profile not found: ${profileName}`);
354
+ process.exit(1);
355
+ }
356
+ try {
357
+ // Get instance path and session count for impact display
358
+ const instancePath = this.instanceMgr.getInstancePath(profileName);
359
+ let sessionCount = 0;
360
+ try {
361
+ const sessionsDir = path.join(instancePath, 'session-env');
362
+ if (fs.existsSync(sessionsDir)) {
363
+ const files = fs.readdirSync(sessionsDir);
364
+ sessionCount = files.filter((f) => f.endsWith('.json')).length;
365
+ }
366
+ }
367
+ catch (_e) {
368
+ // Ignore errors counting sessions
369
+ }
370
+ // Display impact
371
+ console.log('');
372
+ console.log(`Profile '${(0, helpers_1.colored)(profileName, 'cyan')}' will be permanently deleted.`);
373
+ console.log(` Instance path: ${instancePath}`);
374
+ console.log(` Sessions: ${sessionCount} conversation${sessionCount !== 1 ? 's' : ''}`);
375
+ console.log('');
376
+ // Interactive confirmation (or --yes flag)
377
+ const confirmed = yes ||
378
+ (await prompt_1.InteractivePrompt.confirm('Delete this profile?', { default: false } // Default to NO (safe)
379
+ ));
380
+ if (!confirmed) {
381
+ console.log('[i] Cancelled');
382
+ process.exit(0);
383
+ }
384
+ // Delete instance
385
+ this.instanceMgr.deleteInstance(profileName);
386
+ // Delete profile
387
+ this.registry.deleteProfile(profileName);
388
+ console.log((0, helpers_1.colored)('[OK] Profile removed successfully', 'green'));
389
+ console.log(` Profile: ${profileName}`);
390
+ console.log('');
391
+ }
392
+ catch (error) {
393
+ console.error(`[X] Failed to remove profile: ${error.message}`);
394
+ process.exit(1);
395
+ }
396
+ }
397
+ /**
398
+ * Set default profile
399
+ */
400
+ async handleDefault(args) {
401
+ const { profileName } = this.parseArgs(args);
402
+ if (!profileName) {
403
+ console.error('[X] Profile name is required');
404
+ console.log('');
405
+ console.log(`Usage: ${(0, helpers_1.colored)('ccs auth default <profile>', 'yellow')}`);
406
+ process.exit(1);
407
+ }
408
+ try {
409
+ this.registry.setDefaultProfile(profileName);
410
+ console.log((0, helpers_1.colored)('[OK] Default profile set', 'green'));
411
+ console.log(` Profile: ${profileName}`);
412
+ console.log('');
413
+ console.log('Now you can use:');
414
+ console.log(` ${(0, helpers_1.colored)('ccs "your prompt"', 'yellow')} # Uses ${profileName} profile`);
415
+ console.log('');
416
+ }
417
+ catch (error) {
418
+ console.error(`[X] ${error.message}`);
419
+ process.exit(1);
420
+ }
421
+ }
422
+ /**
423
+ * Route auth command to appropriate handler
424
+ */
425
+ async route(args) {
426
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h' || args[0] === 'help') {
427
+ this.showHelp();
428
+ return;
429
+ }
430
+ const command = args[0];
431
+ const commandArgs = args.slice(1);
432
+ switch (command) {
433
+ case 'create':
434
+ await this.handleCreate(commandArgs);
435
+ break;
436
+ case 'save':
437
+ // Deprecated - redirect to create
438
+ console.log((0, helpers_1.colored)('[!] Command "save" is deprecated', 'yellow'));
439
+ console.log(` Use: ${(0, helpers_1.colored)('ccs auth create <profile>', 'yellow')} instead`);
440
+ console.log('');
441
+ await this.handleCreate(commandArgs);
442
+ break;
443
+ case 'list':
444
+ await this.handleList(commandArgs);
445
+ break;
446
+ case 'show':
447
+ await this.handleShow(commandArgs);
448
+ break;
449
+ case 'remove':
450
+ await this.handleRemove(commandArgs);
451
+ break;
452
+ case 'default':
453
+ await this.handleDefault(commandArgs);
454
+ break;
455
+ case 'current':
456
+ console.log((0, helpers_1.colored)('[!] Command "current" has been removed', 'yellow'));
457
+ console.log('');
458
+ console.log('Each profile has its own login in an isolated instance.');
459
+ console.log('Use "ccs auth list" to see all profiles.');
460
+ console.log('');
461
+ break;
462
+ case 'cleanup':
463
+ console.log((0, helpers_1.colored)('[!] Command "cleanup" has been removed', 'yellow'));
464
+ console.log('');
465
+ console.log('No cleanup needed - no separate vault files.');
466
+ console.log('Use "ccs auth list" to see all profiles.');
467
+ console.log('');
468
+ break;
469
+ default:
470
+ console.error(`[X] Unknown command: ${command}`);
471
+ console.log('');
472
+ console.log('Run for help:');
473
+ console.log(` ${(0, helpers_1.colored)('ccs auth --help', 'yellow')}`);
474
+ process.exit(1);
475
+ }
476
+ }
477
+ }
478
+ exports.default = AuthCommands;
479
+ //# sourceMappingURL=auth-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-commands.js","sourceRoot":"","sources":["../../src/auth/auth-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Profile Detector
3
+ *
4
+ * Determines profile type (settings-based vs account-based) for routing.
5
+ * Priority: settings-based profiles (glm/kimi) checked FIRST for backward compatibility.
6
+ */
7
+ import { Settings, ProfileMetadata } from '../types';
8
+ export type ProfileType = 'settings' | 'account' | 'cliproxy' | 'default';
9
+ /** CLIProxy profile names (OAuth-based, zero config) */
10
+ export declare const CLIPROXY_PROFILES: readonly ["gemini", "codex", "agy"];
11
+ export type CLIProxyProfileName = (typeof CLIPROXY_PROFILES)[number];
12
+ export interface ProfileDetectionResult {
13
+ type: ProfileType;
14
+ name: string;
15
+ settingsPath?: string;
16
+ profile?: Settings | ProfileMetadata;
17
+ message?: string;
18
+ }
19
+ export interface AllProfiles {
20
+ settings: string[];
21
+ accounts: string[];
22
+ default?: string;
23
+ }
24
+ export interface ProfileNotFoundError extends Error {
25
+ profileName: string;
26
+ suggestions: string[];
27
+ availableProfiles: string;
28
+ }
29
+ /**
30
+ * Profile Detector Class
31
+ */
32
+ declare class ProfileDetector {
33
+ private readonly configPath;
34
+ private readonly profilesPath;
35
+ constructor();
36
+ /**
37
+ * Read settings-based config (config.json)
38
+ */
39
+ private readConfig;
40
+ /**
41
+ * Read account-based profiles (profiles.json)
42
+ */
43
+ private readProfiles;
44
+ /**
45
+ * Detect profile type and return routing information
46
+ */
47
+ detectProfileType(profileName: string | null | undefined): ProfileDetectionResult;
48
+ /**
49
+ * Resolve default profile
50
+ */
51
+ private resolveDefaultProfile;
52
+ /**
53
+ * List available profiles (for error messages)
54
+ */
55
+ private listAvailableProfiles;
56
+ /**
57
+ * Check if profile exists (any type)
58
+ */
59
+ hasProfile(profileName: string): boolean;
60
+ /**
61
+ * Get all available profile names
62
+ */
63
+ getAllProfiles(): AllProfiles & {
64
+ cliproxy: string[];
65
+ };
66
+ }
67
+ export default ProfileDetector;
68
+ //# sourceMappingURL=profile-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-detector.d.ts","sourceRoot":"","sources":["../../src/auth/profile-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAU,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE7D,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1E,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,qCAAsC,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAqB,SAAQ,KAAK;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;;IAOtC;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,sBAAsB;IAgDjF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IASxC;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;CAWvD;AAED,eAAe,eAAe,CAAC"}