@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/README.md CHANGED
@@ -46,10 +46,14 @@ bun add -g @kaitranntt/ccs
46
46
  ```
47
47
 
48
48
  <details>
49
- <summary><strong>Alternative: Direct Install (Traditional)</strong></summary>
49
+ <summary><strong>[!] DEPRECATED: Native Shell Installers (Legacy)</strong></summary>
50
50
 
51
51
  <br>
52
52
 
53
+ > [!WARNING]
54
+ > **These installers are deprecated and will be removed in a future version.**
55
+ > They now auto-redirect to npm installation. Please use npm directly.
56
+
53
57
  **macOS / Linux**
54
58
  ```bash
55
59
  curl -fsSL ccs.kaitran.ca/install | bash
@@ -60,7 +64,7 @@ curl -fsSL ccs.kaitran.ca/install | bash
60
64
  irm ccs.kaitran.ca/install | iex
61
65
  ```
62
66
 
63
- **Note:** Traditional installs bypass Node.js routing for faster startup, but npm is prioritized for easier deployment automation.
67
+ **Note:** Scripts show deprecation warning and automatically run npm installation if Node.js is available.
64
68
 
65
69
  </details>
66
70
 
@@ -748,15 +752,18 @@ ccs sync
748
752
 
749
753
  ## Uninstall
750
754
 
755
+ ### npm (Recommended)
756
+
757
+ ```bash
758
+ npm uninstall -g @kaitranntt/ccs
759
+ ```
760
+
751
761
  <details>
752
- <summary><h3>Package Managers</h3></summary>
762
+ <summary><strong>Alternative Package Managers</strong></summary>
753
763
 
754
764
  <br>
755
765
 
756
766
  ```bash
757
- # npm
758
- npm uninstall -g @kaitranntt/ccs
759
-
760
767
  # yarn
761
768
  yarn global remove @kaitranntt/ccs
762
769
 
@@ -770,7 +777,7 @@ bun remove -g @kaitranntt/ccs
770
777
  </details>
771
778
 
772
779
  <details>
773
- <summary><h3>Official Uninstaller</h3></summary>
780
+ <summary><strong>Legacy Uninstallers (for native installs)</strong></summary>
774
781
 
775
782
  <br>
776
783
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 4.4.0
1
+ 5.0.0
@@ -0,0 +1,10 @@
1
+ {
2
+ "env": {
3
+ "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317/api/provider/agy",
4
+ "ANTHROPIC_AUTH_TOKEN": "ccs-internal-managed",
5
+ "ANTHROPIC_MODEL": "gemini-3-pro-preview",
6
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "gemini-3-pro-preview",
7
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "gemini-3-pro-preview",
8
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gemini-2.5-flash"
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "env": {
3
+ "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317/api/provider/codex",
4
+ "ANTHROPIC_AUTH_TOKEN": "ccs-internal-managed",
5
+ "ANTHROPIC_MODEL": "gpt-5.1-codex-max",
6
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-5.1-codex-max-high",
7
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-5.1-codex-max",
8
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gpt-5.1-codex-mini-high"
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "env": {
3
+ "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317/api/provider/gemini",
4
+ "ANTHROPIC_AUTH_TOKEN": "ccs-internal-managed",
5
+ "ANTHROPIC_MODEL": "gemini-2.5-pro",
6
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "gemini-2.5-pro",
7
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "gemini-2.5-pro",
8
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gemini-2.5-flash"
9
+ }
10
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Auth Commands (Simplified)
3
+ *
4
+ * CLI interface for CCS multi-account management.
5
+ * Commands: create, list, show, remove, default
6
+ *
7
+ * Login-per-profile model: Each profile is an isolated Claude instance.
8
+ * Users login directly in each instance (no credential copying).
9
+ */
10
+ /**
11
+ * Auth Commands Class
12
+ */
13
+ declare class AuthCommands {
14
+ private registry;
15
+ private instanceMgr;
16
+ private readonly version;
17
+ constructor();
18
+ /**
19
+ * Show help for auth commands
20
+ */
21
+ showHelp(): void;
22
+ /**
23
+ * Parse command arguments
24
+ */
25
+ private parseArgs;
26
+ /**
27
+ * Create new profile and prompt for login
28
+ */
29
+ handleCreate(args: string[]): Promise<void>;
30
+ /**
31
+ * List all saved profiles
32
+ */
33
+ handleList(args: string[]): Promise<void>;
34
+ /**
35
+ * Show details for a specific profile
36
+ */
37
+ handleShow(args: string[]): Promise<void>;
38
+ /**
39
+ * Remove a saved profile
40
+ */
41
+ handleRemove(args: string[]): Promise<void>;
42
+ /**
43
+ * Set default profile
44
+ */
45
+ handleDefault(args: string[]): Promise<void>;
46
+ /**
47
+ * Route auth command to appropriate handler
48
+ */
49
+ route(args: string[]): Promise<void>;
50
+ }
51
+ export default AuthCommands;
52
+ //# sourceMappingURL=auth-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-commands.d.ts","sourceRoot":"","sources":["../../src/auth/auth-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmCH;;GAEG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;;IAOvD;;OAEG;IACH,QAAQ,IAAI,IAAI;IAsDhB;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgGjD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkG/C;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE/C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiEjD;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBlD;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA8D3C;AAED,eAAe,YAAY,CAAC"}
@@ -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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"}