@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,57 @@
1
+ "use strict";
2
+ /**
3
+ * Shell Executor Utilities
4
+ *
5
+ * Cross-platform shell execution utilities for CCS.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.execClaude = exports.escapeShellArg = void 0;
9
+ const child_process_1 = require("child_process");
10
+ const error_manager_1 = require("./error-manager");
11
+ /**
12
+ * Escape arguments for shell execution (Windows compatibility)
13
+ */
14
+ function escapeShellArg(arg) {
15
+ return '"' + String(arg).replace(/"/g, '""') + '"';
16
+ }
17
+ exports.escapeShellArg = escapeShellArg;
18
+ /**
19
+ * Execute Claude CLI with unified spawn logic
20
+ */
21
+ function execClaude(claudeCli, args, envVars = null) {
22
+ const isWindows = process.platform === 'win32';
23
+ const needsShell = isWindows && /\.(cmd|bat|ps1)$/i.test(claudeCli);
24
+ // Prepare environment (merge with process.env if envVars provided)
25
+ const env = envVars ? { ...process.env, ...envVars } : process.env;
26
+ let child;
27
+ if (needsShell) {
28
+ // When shell needed: concatenate into string to avoid DEP0190 warning
29
+ const cmdString = [claudeCli, ...args].map(escapeShellArg).join(' ');
30
+ child = (0, child_process_1.spawn)(cmdString, {
31
+ stdio: 'inherit',
32
+ windowsHide: true,
33
+ shell: true,
34
+ env,
35
+ });
36
+ }
37
+ else {
38
+ // When no shell needed: use array form (faster, no shell overhead)
39
+ child = (0, child_process_1.spawn)(claudeCli, args, {
40
+ stdio: 'inherit',
41
+ windowsHide: true,
42
+ env,
43
+ });
44
+ }
45
+ child.on('exit', (code, signal) => {
46
+ if (signal)
47
+ process.kill(process.pid, signal);
48
+ else
49
+ process.exit(code || 0);
50
+ });
51
+ child.on('error', () => {
52
+ error_manager_1.ErrorManager.showClaudeNotFound();
53
+ process.exit(1);
54
+ });
55
+ }
56
+ exports.execClaude = execClaude;
57
+ //# sourceMappingURL=shell-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-executor.js","sourceRoot":"","sources":["../../src/utils/shell-executor.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAAoD;AACpD,mDAA+C;AAE/C;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACrD,CAAC;AAFD,wCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,SAAiB,EACjB,IAAc,EACd,UAAoC,IAAI;IAExC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,MAAM,UAAU,GAAG,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpE,mEAAmE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAEnE,IAAI,KAAmB,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QACf,sEAAsE;QACtE,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE;YACvB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAwB,CAAC,CAAC;;YAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,4BAAY,CAAC,kBAAkB,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAvCD,gCAuCC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Update Checker - Check for new CCS versions from npm registry or GitHub
3
+ */
4
+ interface UpdateCache {
5
+ last_check: number;
6
+ latest_version: string | null;
7
+ dismissed_version: string | null;
8
+ }
9
+ interface UpdateResult {
10
+ status: 'update_available' | 'no_update' | 'check_failed';
11
+ reason?: string;
12
+ latest?: string;
13
+ current?: string;
14
+ message?: string;
15
+ }
16
+ /**
17
+ * Compare semantic versions
18
+ * @returns 1 if v1 > v2, -1 if v1 < v2, 0 if equal
19
+ */
20
+ export declare function compareVersions(v1: string, v2: string): number;
21
+ /**
22
+ * Read update check cache
23
+ */
24
+ export declare function readCache(): UpdateCache;
25
+ /**
26
+ * Write update check cache
27
+ */
28
+ export declare function writeCache(cache: UpdateCache): void;
29
+ /**
30
+ * Check for updates (async, non-blocking)
31
+ * @param currentVersion - Current CCS version
32
+ * @param force - Force check even if within interval
33
+ * @param installMethod - Installation method ('npm' or 'direct')
34
+ */
35
+ export declare function checkForUpdates(currentVersion: string, force?: boolean, installMethod?: 'npm' | 'direct'): Promise<UpdateResult>;
36
+ /**
37
+ * Show update notification
38
+ */
39
+ export declare function showUpdateNotification(updateInfo: {
40
+ current: string;
41
+ latest: string;
42
+ }): void;
43
+ /**
44
+ * Dismiss update notification for a specific version
45
+ */
46
+ export declare function dismissUpdate(version: string): void;
47
+ export {};
48
+ //# sourceMappingURL=update-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,UAAU,YAAY;IACpB,MAAM,EAAE,kBAAkB,GAAG,WAAW,GAAG,cAAc,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAW9D;AAwFD;;GAEG;AACH,wBAAgB,SAAS,IAAI,WAAW,CAWvC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAWnD;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,EACtB,KAAK,UAAQ,EACb,aAAa,GAAE,KAAK,GAAG,QAAmB,GACzC,OAAO,CAAC,YAAY,CAAC,CAuDvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU5F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAInD"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ /**
3
+ * Update Checker - Check for new CCS versions from npm registry or GitHub
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.dismissUpdate = exports.showUpdateNotification = exports.checkForUpdates = exports.writeCache = exports.readCache = exports.compareVersions = void 0;
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const os = __importStar(require("os"));
33
+ const https = __importStar(require("https"));
34
+ const helpers_1 = require("./helpers");
35
+ const UPDATE_CHECK_FILE = path.join(os.homedir(), '.ccs', 'update-check.json');
36
+ const CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
37
+ const GITHUB_API_URL = 'https://api.github.com/repos/kaitranntt/ccs/releases/latest';
38
+ const NPM_REGISTRY_URL = 'https://registry.npmjs.org/@kaitranntt/ccs/latest';
39
+ const REQUEST_TIMEOUT = 5000; // 5 seconds
40
+ /**
41
+ * Compare semantic versions
42
+ * @returns 1 if v1 > v2, -1 if v1 < v2, 0 if equal
43
+ */
44
+ function compareVersions(v1, v2) {
45
+ const parts1 = v1.replace(/^v/, '').split('.').map(Number);
46
+ const parts2 = v2.replace(/^v/, '').split('.').map(Number);
47
+ for (let i = 0; i < 3; i++) {
48
+ const p1 = parts1[i] || 0;
49
+ const p2 = parts2[i] || 0;
50
+ if (p1 > p2)
51
+ return 1;
52
+ if (p1 < p2)
53
+ return -1;
54
+ }
55
+ return 0;
56
+ }
57
+ exports.compareVersions = compareVersions;
58
+ /**
59
+ * Fetch latest version from GitHub releases
60
+ */
61
+ function fetchLatestVersionFromGitHub() {
62
+ return new Promise((resolve) => {
63
+ const req = https.get(GITHUB_API_URL, {
64
+ headers: { 'User-Agent': 'CCS-Update-Checker' },
65
+ timeout: REQUEST_TIMEOUT,
66
+ }, (res) => {
67
+ let data = '';
68
+ res.on('data', (chunk) => {
69
+ data += chunk.toString();
70
+ });
71
+ res.on('end', () => {
72
+ try {
73
+ if (res.statusCode !== 200) {
74
+ resolve(null);
75
+ return;
76
+ }
77
+ const release = JSON.parse(data);
78
+ const version = release.tag_name?.replace(/^v/, '') || null;
79
+ resolve(version);
80
+ }
81
+ catch {
82
+ resolve(null);
83
+ }
84
+ });
85
+ });
86
+ req.on('error', () => resolve(null));
87
+ req.on('timeout', () => {
88
+ req.destroy();
89
+ resolve(null);
90
+ });
91
+ });
92
+ }
93
+ /**
94
+ * Fetch latest version from npm registry
95
+ */
96
+ function fetchLatestVersionFromNpm() {
97
+ return new Promise((resolve) => {
98
+ const req = https.get(NPM_REGISTRY_URL, {
99
+ headers: { 'User-Agent': 'CCS-Update-Checker' },
100
+ timeout: REQUEST_TIMEOUT,
101
+ }, (res) => {
102
+ let data = '';
103
+ res.on('data', (chunk) => {
104
+ data += chunk.toString();
105
+ });
106
+ res.on('end', () => {
107
+ try {
108
+ if (res.statusCode !== 200) {
109
+ resolve(null);
110
+ return;
111
+ }
112
+ const packageData = JSON.parse(data);
113
+ const version = packageData.version || null;
114
+ resolve(version);
115
+ }
116
+ catch {
117
+ resolve(null);
118
+ }
119
+ });
120
+ });
121
+ req.on('error', () => resolve(null));
122
+ req.on('timeout', () => {
123
+ req.destroy();
124
+ resolve(null);
125
+ });
126
+ });
127
+ }
128
+ /**
129
+ * Read update check cache
130
+ */
131
+ function readCache() {
132
+ try {
133
+ if (!fs.existsSync(UPDATE_CHECK_FILE)) {
134
+ return { last_check: 0, latest_version: null, dismissed_version: null };
135
+ }
136
+ const data = fs.readFileSync(UPDATE_CHECK_FILE, 'utf8');
137
+ return JSON.parse(data);
138
+ }
139
+ catch {
140
+ return { last_check: 0, latest_version: null, dismissed_version: null };
141
+ }
142
+ }
143
+ exports.readCache = readCache;
144
+ /**
145
+ * Write update check cache
146
+ */
147
+ function writeCache(cache) {
148
+ try {
149
+ const ccsDir = path.join(os.homedir(), '.ccs');
150
+ if (!fs.existsSync(ccsDir)) {
151
+ fs.mkdirSync(ccsDir, { recursive: true, mode: 0o700 });
152
+ }
153
+ fs.writeFileSync(UPDATE_CHECK_FILE, JSON.stringify(cache, null, 2), 'utf8');
154
+ }
155
+ catch {
156
+ // Silently fail - not critical
157
+ }
158
+ }
159
+ exports.writeCache = writeCache;
160
+ /**
161
+ * Check for updates (async, non-blocking)
162
+ * @param currentVersion - Current CCS version
163
+ * @param force - Force check even if within interval
164
+ * @param installMethod - Installation method ('npm' or 'direct')
165
+ */
166
+ async function checkForUpdates(currentVersion, force = false, installMethod = 'direct') {
167
+ const cache = readCache();
168
+ const now = Date.now();
169
+ // Check if we should check for updates
170
+ if (!force && now - cache.last_check < CHECK_INTERVAL) {
171
+ // Use cached result if available
172
+ if (cache.latest_version && compareVersions(cache.latest_version, currentVersion) > 0) {
173
+ // Don't show if user dismissed this version
174
+ if (cache.dismissed_version === cache.latest_version) {
175
+ return { status: 'no_update', reason: 'dismissed' };
176
+ }
177
+ return { status: 'update_available', latest: cache.latest_version, current: currentVersion };
178
+ }
179
+ return { status: 'no_update', reason: 'cached' };
180
+ }
181
+ // Fetch latest version from appropriate source
182
+ let latestVersion;
183
+ let fetchError = null;
184
+ if (installMethod === 'npm') {
185
+ latestVersion = await fetchLatestVersionFromNpm();
186
+ if (!latestVersion)
187
+ fetchError = 'npm_registry_error';
188
+ }
189
+ else {
190
+ latestVersion = await fetchLatestVersionFromGitHub();
191
+ if (!latestVersion)
192
+ fetchError = 'github_api_error';
193
+ }
194
+ // Update cache
195
+ cache.last_check = now;
196
+ if (latestVersion) {
197
+ cache.latest_version = latestVersion;
198
+ }
199
+ writeCache(cache);
200
+ // Handle fetch errors
201
+ if (fetchError) {
202
+ return {
203
+ status: 'check_failed',
204
+ reason: fetchError,
205
+ message: `Failed to check for updates: ${fetchError.replace(/_/g, ' ')}`,
206
+ };
207
+ }
208
+ // Check if update available
209
+ if (latestVersion && compareVersions(latestVersion, currentVersion) > 0) {
210
+ // Don't show if user dismissed this version
211
+ if (cache.dismissed_version === latestVersion) {
212
+ return { status: 'no_update', reason: 'dismissed' };
213
+ }
214
+ return { status: 'update_available', latest: latestVersion, current: currentVersion };
215
+ }
216
+ return { status: 'no_update', reason: 'latest' };
217
+ }
218
+ exports.checkForUpdates = checkForUpdates;
219
+ /**
220
+ * Show update notification
221
+ */
222
+ function showUpdateNotification(updateInfo) {
223
+ console.log('');
224
+ console.log((0, helpers_1.colored)('═══════════════════════════════════════════════════════', 'cyan'));
225
+ console.log((0, helpers_1.colored)(` Update available: ${updateInfo.current} → ${updateInfo.latest}`, 'yellow'));
226
+ console.log((0, helpers_1.colored)('═══════════════════════════════════════════════════════', 'cyan'));
227
+ console.log('');
228
+ console.log(` Run ${(0, helpers_1.colored)('ccs update', 'yellow')} to update`);
229
+ console.log('');
230
+ }
231
+ exports.showUpdateNotification = showUpdateNotification;
232
+ /**
233
+ * Dismiss update notification for a specific version
234
+ */
235
+ function dismissUpdate(version) {
236
+ const cache = readCache();
237
+ cache.dismissed_version = version;
238
+ writeCache(cache);
239
+ }
240
+ exports.dismissUpdate = dismissUpdate;
241
+ //# sourceMappingURL=update-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"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"}