@kaitranntt/ccs 7.13.1-dev.4 → 7.13.1-dev.5

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 (56) hide show
  1. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -1
  2. package/dist/cliproxy/binary/lifecycle.js +47 -6
  3. package/dist/cliproxy/binary/lifecycle.js.map +1 -1
  4. package/dist/cliproxy/binary/types.d.ts +13 -0
  5. package/dist/cliproxy/binary/types.d.ts.map +1 -1
  6. package/dist/cliproxy/binary/types.js +3 -1
  7. package/dist/cliproxy/binary/types.js.map +1 -1
  8. package/dist/cliproxy/binary/version-cache.d.ts +13 -1
  9. package/dist/cliproxy/binary/version-cache.d.ts.map +1 -1
  10. package/dist/cliproxy/binary/version-cache.js +46 -1
  11. package/dist/cliproxy/binary/version-cache.js.map +1 -1
  12. package/dist/cliproxy/binary/version-checker.d.ts +6 -1
  13. package/dist/cliproxy/binary/version-checker.d.ts.map +1 -1
  14. package/dist/cliproxy/binary/version-checker.js +37 -1
  15. package/dist/cliproxy/binary/version-checker.js.map +1 -1
  16. package/dist/cliproxy/binary-manager.d.ts +3 -0
  17. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  18. package/dist/cliproxy/binary-manager.js +36 -1
  19. package/dist/cliproxy/binary-manager.js.map +1 -1
  20. package/dist/cliproxy/platform-detector.d.ts +6 -0
  21. package/dist/cliproxy/platform-detector.d.ts.map +1 -1
  22. package/dist/cliproxy/platform-detector.js +7 -1
  23. package/dist/cliproxy/platform-detector.js.map +1 -1
  24. package/dist/ui/assets/{accounts-DKm_BUkJ.js → accounts-wkvC_Z1E.js} +1 -1
  25. package/dist/ui/assets/{alert-dialog-BBbNIyvF.js → alert-dialog--nlDi-Dj.js} +1 -1
  26. package/dist/ui/assets/{api-p6k8BwWO.js → api-DeyefOLW.js} +1 -1
  27. package/dist/ui/assets/auth-section-BQXfw1cb.js +1 -0
  28. package/dist/ui/assets/{card-D6fGkasO.js → card-P5vPGo2D.js} +1 -1
  29. package/dist/ui/assets/cliproxy-CcMLaKpF.js +3 -0
  30. package/dist/ui/assets/{cliproxy-control-panel-D7gdCCO7.js → cliproxy-control-panel-Dbs8NAQa.js} +1 -1
  31. package/dist/ui/assets/{confirm-dialog-D55Qga4b.js → confirm-dialog-BM75Bkww.js} +1 -1
  32. package/dist/ui/assets/{copilot-fwj1xk6l.js → copilot-BwylIlO5.js} +3 -3
  33. package/dist/ui/assets/{globalenv-section-DMSdqrn_.js → globalenv-section-Cgpz_NQ0.js} +1 -1
  34. package/dist/ui/assets/{health-65nETbIF.js → health-DWUjYWDI.js} +1 -1
  35. package/dist/ui/assets/icons-U9n5DGj9.js +1 -0
  36. package/dist/ui/assets/index-1g-Hy9VA.css +1 -0
  37. package/dist/ui/assets/{index-Dc8X9bLV.js → index-4Wd5fx72.js} +1 -1
  38. package/dist/ui/assets/{index-BrijlHVl.js → index-CIWe-99u.js} +1 -1
  39. package/dist/ui/assets/{index-8HAJX3-Y.js → index-D8MFq-UJ.js} +17 -17
  40. package/dist/ui/assets/{index-CwDi6WPm.js → index-f_AuSs01.js} +1 -1
  41. package/dist/ui/assets/{radix-ui-uXQB-q0u.js → radix-ui-CBgg0XeO.js} +1 -1
  42. package/dist/ui/assets/{shared-CMWj9K3T.js → shared-I-pAdvVQ.js} +1 -1
  43. package/dist/ui/assets/{switch-D_o-N1Sa.js → switch-DHwS-NMF.js} +1 -1
  44. package/dist/ui/assets/{tanstack-Coed0rqz.js → tanstack-CxYN0q6L.js} +1 -1
  45. package/dist/ui/index.html +5 -5
  46. package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -1
  47. package/dist/web-server/health/cliproxy-checks.js +14 -0
  48. package/dist/web-server/health/cliproxy-checks.js.map +1 -1
  49. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  50. package/dist/web-server/routes/cliproxy-stats-routes.js +88 -0
  51. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  52. package/package.json +1 -1
  53. package/dist/ui/assets/auth-section-B4wvcy8z.js +0 -1
  54. package/dist/ui/assets/cliproxy-DuWY_mzK.js +0 -3
  55. package/dist/ui/assets/icons-CwFZAiDB.js +0 -1
  56. package/dist/ui/assets/index-oS2cgEFl.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAiC/C;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C/E"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA+E/C;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8C/E"}
@@ -34,18 +34,55 @@ const installer_1 = require("./installer");
34
34
  const ui_1 = require("../../utils/ui");
35
35
  const stats_fetcher_1 = require("../stats-fetcher");
36
36
  const config_generator_1 = require("../config-generator");
37
+ const platform_detector_1 = require("../platform-detector");
37
38
  /** Log helper */
38
39
  function log(message, verbose) {
39
40
  if (verbose)
40
41
  console.error(`[cliproxy] ${message}`);
41
42
  }
43
+ /**
44
+ * Check if version is above max stable (known unstable)
45
+ */
46
+ function isAboveMaxStable(version) {
47
+ return (0, version_checker_1.isNewerVersion)(version, platform_detector_1.CLIPROXY_MAX_STABLE_VERSION);
48
+ }
49
+ /**
50
+ * Clamp version to max stable if newer versions are unstable
51
+ * Returns max stable version if input is empty/invalid
52
+ */
53
+ function clampToMaxStable(version, verbose) {
54
+ if (!version) {
55
+ log(`Empty version, using max stable ${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`, verbose);
56
+ return platform_detector_1.CLIPROXY_MAX_STABLE_VERSION;
57
+ }
58
+ if (isAboveMaxStable(version)) {
59
+ log(`Clamping ${version} to max stable ${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`, verbose);
60
+ return platform_detector_1.CLIPROXY_MAX_STABLE_VERSION;
61
+ }
62
+ return version;
63
+ }
42
64
  /** Handle auto-update when binary exists */
43
65
  async function handleAutoUpdate(config, verbose) {
44
66
  const updateResult = await (0, version_checker_1.checkForUpdates)(config.binPath, config.version, verbose);
67
+ const currentVersion = updateResult.currentVersion;
68
+ const latestVersion = updateResult.latestVersion;
69
+ // Check if user is on known unstable version - inform but don't force downgrade
70
+ if (isAboveMaxStable(currentVersion)) {
71
+ console.log((0, ui_1.warn)(`CLIProxy Plus v${currentVersion} has known stability issues. ` +
72
+ `Stable version: v${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`));
73
+ console.log((0, ui_1.info)('Run "ccs cliproxy install 80" to downgrade, or wait for upstream fix'));
74
+ }
45
75
  if (!updateResult.hasUpdate)
46
76
  return;
77
+ // Clamp to max stable version
78
+ const targetVersion = clampToMaxStable(latestVersion, verbose);
79
+ if (!(0, version_checker_1.isNewerVersion)(targetVersion, currentVersion)) {
80
+ log(`Already at max stable version ${currentVersion}`, verbose);
81
+ return;
82
+ }
47
83
  const proxyRunning = await (0, stats_fetcher_1.isCliproxyRunning)(config_generator_1.CLIPROXY_DEFAULT_PORT);
48
- const updateMsg = `CLIProxy Plus update available: v${updateResult.currentVersion} -> v${updateResult.latestVersion}`;
84
+ const latestNote = isAboveMaxStable(latestVersion) ? ` (latest v${latestVersion} unstable)` : '';
85
+ const updateMsg = `CLIProxy Plus update: v${currentVersion} -> v${targetVersion}${latestNote}`;
49
86
  if (proxyRunning) {
50
87
  console.log((0, ui_1.info)(updateMsg));
51
88
  console.log((0, ui_1.info)('Run "ccs cliproxy stop" then restart to apply update'));
@@ -55,7 +92,7 @@ async function handleAutoUpdate(config, verbose) {
55
92
  console.log((0, ui_1.info)(updateMsg));
56
93
  console.log((0, ui_1.info)('Updating CLIProxy Plus...'));
57
94
  (0, installer_1.deleteBinary)(config.binPath, verbose);
58
- config.version = updateResult.latestVersion;
95
+ config.version = targetVersion;
59
96
  await (0, installer_1.downloadAndInstall)(config, verbose);
60
97
  }
61
98
  }
@@ -87,13 +124,17 @@ async function ensureBinary(config) {
87
124
  if (!config.forceVersion) {
88
125
  try {
89
126
  const latestVersion = await (0, version_checker_1.fetchLatestVersion)(verbose);
90
- if (latestVersion && (0, version_checker_1.isNewerVersion)(latestVersion, config.version)) {
91
- log(`Using latest version: ${latestVersion} (instead of ${config.version})`, verbose);
92
- config.version = latestVersion;
127
+ const targetVersion = clampToMaxStable(latestVersion, verbose);
128
+ if (targetVersion && (0, version_checker_1.isNewerVersion)(targetVersion, config.version)) {
129
+ log(`Using version: ${targetVersion} (instead of ${config.version})`, verbose);
130
+ config.version = targetVersion;
93
131
  }
94
132
  }
95
133
  catch {
96
- log(`Using pinned version: ${config.version}`, verbose);
134
+ // API failed - use fallback but still clamp to max stable
135
+ const fallbackVersion = clampToMaxStable(config.version, verbose);
136
+ config.version = fallbackVersion;
137
+ log(`Using fallback version: ${fallbackVersion}`, verbose);
97
138
  }
98
139
  }
99
140
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -21,4 +21,17 @@ export declare const VERSION_CACHE_DURATION_MS: number;
21
21
  export declare const VERSION_PIN_FILE = ".version-pin";
22
22
  /** GitHub API URL for latest release (CLIProxyAPIPlus fork with Kiro + Copilot support) */
23
23
  export declare const GITHUB_API_LATEST_RELEASE = "https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases/latest";
24
+ /** GitHub API URL for all releases */
25
+ export declare const GITHUB_API_ALL_RELEASES = "https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases";
26
+ /** Version list cache structure */
27
+ export interface VersionListCache {
28
+ versions: string[];
29
+ latestStable: string;
30
+ latest: string;
31
+ checkedAt: number;
32
+ }
33
+ /** Version list result from API */
34
+ export interface VersionListResult extends VersionListCache {
35
+ fromCache: boolean;
36
+ }
24
37
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,+EACwC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,+EACwC,CAAC;AAE/E,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,wEACmC,CAAC;AAExE,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -4,11 +4,13 @@
4
4
  * Types specific to binary management operations.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.GITHUB_API_LATEST_RELEASE = exports.VERSION_PIN_FILE = exports.VERSION_CACHE_DURATION_MS = void 0;
7
+ exports.GITHUB_API_ALL_RELEASES = exports.GITHUB_API_LATEST_RELEASE = exports.VERSION_PIN_FILE = exports.VERSION_CACHE_DURATION_MS = void 0;
8
8
  /** Cache duration for version check (1 hour in milliseconds) */
9
9
  exports.VERSION_CACHE_DURATION_MS = 60 * 60 * 1000;
10
10
  /** Version pin file name - stores user's explicit version choice */
11
11
  exports.VERSION_PIN_FILE = '.version-pin';
12
12
  /** GitHub API URL for latest release (CLIProxyAPIPlus fork with Kiro + Copilot support) */
13
13
  exports.GITHUB_API_LATEST_RELEASE = 'https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases/latest';
14
+ /** GitHub API URL for all releases */
15
+ exports.GITHUB_API_ALL_RELEASES = 'https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases';
14
16
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiBH,gEAAgE;AACnD,QAAA,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD,oEAAoE;AACvD,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAE/C,2FAA2F;AAC9E,QAAA,yBAAyB,GACpC,4EAA4E,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiBH,gEAAgE;AACnD,QAAA,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD,oEAAoE;AACvD,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAE/C,2FAA2F;AAC9E,QAAA,yBAAyB,GACpC,4EAA4E,CAAC;AAE/E,sCAAsC;AACzB,QAAA,uBAAuB,GAClC,qEAAqE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Version Cache Manager
3
3
  * Handles reading/writing version cache to avoid excessive GitHub API calls.
4
4
  */
5
- import { VersionCache } from './types';
5
+ import { VersionCache, VersionListCache } from './types';
6
6
  /**
7
7
  * Get path to version cache file
8
8
  */
@@ -43,4 +43,16 @@ export declare function clearPinnedVersion(): void;
43
43
  * Check if a version is currently pinned
44
44
  */
45
45
  export declare function isVersionPinned(): boolean;
46
+ /**
47
+ * Get path to version list cache file
48
+ */
49
+ export declare function getVersionListCachePath(): string;
50
+ /**
51
+ * Read version list cache if still valid
52
+ */
53
+ export declare function readVersionListCache(): VersionListCache | null;
54
+ /**
55
+ * Write version list to cache
56
+ */
57
+ export declare function writeVersionListCache(cache: VersionListCache): void;
46
58
  //# sourceMappingURL=version-cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-cache.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,YAAY,EAA+C,MAAM,SAAS,CAAC;AAEpF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAoBtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAavD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAUrF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAO5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAUhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
1
+ {"version":3,"file":"version-cache.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,YAAY,EAGZ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAoBtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAavD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAUrF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAO5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAUhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,GAAG,IAAI,CAmB9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CASnE"}
@@ -27,7 +27,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
27
27
  return result;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.isVersionPinned = exports.clearPinnedVersion = exports.savePinnedVersion = exports.getPinnedVersion = exports.writeInstalledVersion = exports.readInstalledVersion = exports.writeVersionCache = exports.readVersionCache = exports.getVersionPinPath = exports.getVersionCachePath = void 0;
30
+ exports.writeVersionListCache = exports.readVersionListCache = exports.getVersionListCachePath = exports.isVersionPinned = exports.clearPinnedVersion = exports.savePinnedVersion = exports.getPinnedVersion = exports.writeInstalledVersion = exports.readInstalledVersion = exports.writeVersionCache = exports.readVersionCache = exports.getVersionPinPath = exports.getVersionCachePath = void 0;
31
31
  const fs = __importStar(require("fs"));
32
32
  const path = __importStar(require("path"));
33
33
  const config_generator_1 = require("../config-generator");
@@ -168,4 +168,49 @@ function isVersionPinned() {
168
168
  return getPinnedVersion() !== null;
169
169
  }
170
170
  exports.isVersionPinned = isVersionPinned;
171
+ // ==================== Version List Cache ====================
172
+ const VERSION_LIST_CACHE_FILE = '.version-list-cache.json';
173
+ /**
174
+ * Get path to version list cache file
175
+ */
176
+ function getVersionListCachePath() {
177
+ return path.join((0, config_generator_1.getCliproxyDir)(), VERSION_LIST_CACHE_FILE);
178
+ }
179
+ exports.getVersionListCachePath = getVersionListCachePath;
180
+ /**
181
+ * Read version list cache if still valid
182
+ */
183
+ function readVersionListCache() {
184
+ const cachePath = getVersionListCachePath();
185
+ if (!fs.existsSync(cachePath)) {
186
+ return null;
187
+ }
188
+ try {
189
+ const content = fs.readFileSync(cachePath, 'utf8');
190
+ const cache = JSON.parse(content);
191
+ // Check if cache is still valid (1 hour)
192
+ if (Date.now() - cache.checkedAt < types_1.VERSION_CACHE_DURATION_MS) {
193
+ return cache;
194
+ }
195
+ return null;
196
+ }
197
+ catch {
198
+ return null;
199
+ }
200
+ }
201
+ exports.readVersionListCache = readVersionListCache;
202
+ /**
203
+ * Write version list to cache
204
+ */
205
+ function writeVersionListCache(cache) {
206
+ const cachePath = getVersionListCachePath();
207
+ try {
208
+ fs.mkdirSync(path.dirname(cachePath), { recursive: true });
209
+ fs.writeFileSync(cachePath, JSON.stringify(cache), 'utf8');
210
+ }
211
+ catch {
212
+ // Silent fail - caching is optional
213
+ }
214
+ }
215
+ exports.writeVersionListCache = writeVersionListCache;
171
216
  //# sourceMappingURL=version-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-cache.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-cache.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,0DAAgE;AAChE,mCAKiB;AAEjB;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAA,iCAAc,GAAE,EAAE,qBAAqB,CAAC,CAAC;AAC5D,CAAC;AAFD,kDAEC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAS,GAAE,EAAE,wBAAgB,CAAC,CAAC;AAClD,CAAC;AAFD,8CAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhD,gCAAgC;QAChC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,iCAAyB,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gBAAgB;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AApBD,4CAoBC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAiB;QAC1B,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;IAEF,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC;AAbD,8CAaC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,OAAe,EAAE,eAAuB;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAVD,oDAUC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,OAAe;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;AACH,CAAC;AAPD,sDAOC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAVD,4CAUC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;AACH,CAAC;AARD,8CAQC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;AACH,CAAC;AATD,gDASC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO,gBAAgB,EAAE,KAAK,IAAI,CAAC;AACrC,CAAC;AAFD,0CAEC;AAED,+DAA+D;AAE/D,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAE3D;;GAEG;AACH,SAAgB,uBAAuB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAA,iCAAc,GAAE,EAAE,uBAAuB,CAAC,CAAC;AAC9D,CAAC;AAFD,0DAEC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAqB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEpD,yCAAyC;QACzC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,iCAAyB,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAnBD,oDAmBC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,KAAuB;IAC3D,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAE5C,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC;AATD,sDASC"}
@@ -2,7 +2,7 @@
2
2
  * Version Checker
3
3
  * Handles checking GitHub API for latest version and comparing semver.
4
4
  */
5
- import { UpdateCheckResult } from './types';
5
+ import { UpdateCheckResult, VersionListResult } from './types';
6
6
  /**
7
7
  * Compare semver versions (true if latest > current)
8
8
  * Handles CLIProxyAPIPlus versioning: strips -0 suffix before comparison
@@ -17,4 +17,9 @@ export declare function fetchLatestVersion(verbose?: boolean): Promise<string>;
17
17
  * Uses cache to avoid hitting GitHub API on every run
18
18
  */
19
19
  export declare function checkForUpdates(binPath: string, configVersion: string, verbose?: boolean): Promise<UpdateCheckResult>;
20
+ /**
21
+ * Fetch all available versions from GitHub releases
22
+ * Caches result for 1 hour to avoid rate limiting
23
+ */
24
+ export declare function fetchAllVersions(verbose?: boolean): Promise<VersionListResult>;
20
25
  //# sourceMappingURL=version-checker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAA6B,MAAM,SAAS,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBvE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,UAAQ,GACd,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
1
+ {"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EACL,iBAAiB,EAGjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBvE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,UAAQ,GACd,OAAO,CAAC,iBAAiB,CAAC,CA8B5B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoClF"}
@@ -4,10 +4,11 @@
4
4
  * Handles checking GitHub API for latest version and comparing semver.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.checkForUpdates = exports.fetchLatestVersion = exports.isNewerVersion = void 0;
7
+ exports.fetchAllVersions = exports.checkForUpdates = exports.fetchLatestVersion = exports.isNewerVersion = void 0;
8
8
  const downloader_1 = require("./downloader");
9
9
  const version_cache_1 = require("./version-cache");
10
10
  const types_1 = require("./types");
11
+ const platform_detector_1 = require("../platform-detector");
11
12
  /**
12
13
  * Compare semver versions (true if latest > current)
13
14
  * Handles CLIProxyAPIPlus versioning: strips -0 suffix before comparison
@@ -78,4 +79,39 @@ async function checkForUpdates(binPath, configVersion, verbose = false) {
78
79
  };
79
80
  }
80
81
  exports.checkForUpdates = checkForUpdates;
82
+ /**
83
+ * Fetch all available versions from GitHub releases
84
+ * Caches result for 1 hour to avoid rate limiting
85
+ */
86
+ async function fetchAllVersions(verbose = false) {
87
+ // Try cache first
88
+ const cache = (0, version_cache_1.readVersionListCache)();
89
+ if (cache) {
90
+ if (verbose) {
91
+ console.error(`[cliproxy] Using cached version list (${cache.versions.length} versions)`);
92
+ }
93
+ return { ...cache, fromCache: true };
94
+ }
95
+ // Fetch from GitHub API
96
+ const response = await (0, downloader_1.fetchJson)(types_1.GITHUB_API_ALL_RELEASES, verbose);
97
+ // Extract and normalize versions
98
+ const releases = response;
99
+ const versions = releases
100
+ .map((r) => r.tag_name.replace(/^v/, ''))
101
+ .filter((v) => /^\d+\.\d+\.\d+(-\d+)?$/.test(v)); // Valid semver only
102
+ const latest = versions[0] || '';
103
+ // Find latest stable (not newer than max stable)
104
+ const latestStable = versions.find((v) => !isNewerVersion(v, platform_detector_1.CLIPROXY_MAX_STABLE_VERSION)) ||
105
+ platform_detector_1.CLIPROXY_MAX_STABLE_VERSION;
106
+ const result = {
107
+ versions,
108
+ latestStable,
109
+ latest,
110
+ fromCache: false,
111
+ checkedAt: Date.now(),
112
+ };
113
+ (0, version_cache_1.writeVersionListCache)(result);
114
+ return result;
115
+ }
116
+ exports.fetchAllVersions = fetchAllVersions;
81
117
  //# sourceMappingURL=version-checker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6CAAyC;AACzC,mDAA4F;AAC5F,mCAAuE;AAEvE;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAc,EAAE,OAAe;IAC5D,+EAA+E;IAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,4BAA4B;IAC5B,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,iBAAiB;AACjC,CAAC;AAlBD,wCAkBC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAAO,GAAG,KAAK;IACtD,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAS,EAAC,iCAAyB,EAAE,OAAO,CAAC,CAAC;IAErE,gEAAgE;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAkB,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAVD,gDAUC;AAED;;;GAGG;AACI,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,aAAqB,EACrB,OAAO,GAAG,KAAK;IAEf,MAAM,cAAc,GAAG,IAAA,oCAAoB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEpE,kBAAkB;IAClB,MAAM,KAAK,GAAG,IAAA,gCAAgB,GAAE,CAAC;IACjC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO;YACL,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC;YAC9D,cAAc;YACd,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAA,iCAAiB,EAAC,aAAa,CAAC,CAAC;IAEjC,OAAO;QACL,SAAS,EAAE,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC;QACxD,cAAc;QACd,aAAa;QACb,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAlCD,0CAkCC"}
1
+ {"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6CAAyC;AACzC,mDAMyB;AACzB,mCAKiB;AACjB,4DAAmE;AAEnE;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAc,EAAE,OAAe;IAC5D,+EAA+E;IAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,4BAA4B;IAC5B,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,iBAAiB;AACjC,CAAC;AAlBD,wCAkBC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAAO,GAAG,KAAK;IACtD,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAS,EAAC,iCAAyB,EAAE,OAAO,CAAC,CAAC;IAErE,gEAAgE;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAkB,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAVD,gDAUC;AAED;;;GAGG;AACI,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,aAAqB,EACrB,OAAO,GAAG,KAAK;IAEf,MAAM,cAAc,GAAG,IAAA,oCAAoB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEpE,kBAAkB;IAClB,MAAM,KAAK,GAAG,IAAA,gCAAgB,GAAE,CAAC;IACjC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO;YACL,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC;YAC9D,cAAc;YACd,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAA,iCAAiB,EAAC,aAAa,CAAC,CAAC;IAEjC,OAAO;QACL,SAAS,EAAE,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC;QACxD,cAAc;QACd,aAAa;QACb,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAlCD,0CAkCC;AAED;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CAAC,OAAO,GAAG,KAAK;IACpD,kBAAkB;IAClB,MAAM,KAAK,GAAG,IAAA,oCAAoB,GAAE,CAAC;IACrC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,yCAAyC,KAAK,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAS,EAAC,+BAAuB,EAAE,OAAO,CAAC,CAAC;IAEnE,iCAAiC;IACjC,MAAM,QAAQ,GAAG,QAAkD,CAAC;IACpE,MAAM,QAAQ,GAAG,QAAQ;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;IAExE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjC,iDAAiD;IACjD,MAAM,YAAY,GAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,+CAA2B,CAAC,CAAC;QACrE,+CAA2B,CAAC;IAE9B,MAAM,MAAM,GAAsB;QAChC,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;IAEF,IAAA,qCAAqB,EAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AApCD,4CAoCC"}
@@ -44,6 +44,9 @@ export interface CliproxyUpdateCheckResult {
44
44
  latestVersion: string;
45
45
  fromCache: boolean;
46
46
  checkedAt: number;
47
+ isStable: boolean;
48
+ maxStableVersion: string;
49
+ stabilityMessage?: string;
47
50
  }
48
51
  /** Check for CLIProxyAPI binary updates */
49
52
  export declare function checkCliproxyUpdate(): Promise<CliproxyUpdateCheckResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI1D,OAAO,EACL,iBAAiB,EAMjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAYlB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAIrD,2EAA2E;IACrE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,2EAA2E;IACrE,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAInD,yCAAyC;IACzC,aAAa,IAAI,MAAM;IAIvB,6BAA6B;IAC7B,iBAAiB,IAAI,OAAO;IAI5B,mCAAmC;IAC7B,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIjD,+CAA+C;IAC/C,YAAY,IAAI,IAAI;CAGrB;AAED,kDAAkD;AAClD,wBAAsB,oBAAoB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,kDAAkD;AAClD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,2DAA2D;AAC3D,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,gDAAgD;AAChD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5F;AAED,2DAA2D;AAC3D,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlE;AAED,2CAA2C;AAC3C,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2CAA2C;AAC3C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAE9E;AAGD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"binary-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI1D,OAAO,EACL,iBAAiB,EAMjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAYlB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAIrD,2EAA2E;IACrE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,2EAA2E;IACrE,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAInD,yCAAyC;IACzC,aAAa,IAAI,MAAM;IAIvB,6BAA6B;IAC7B,iBAAiB,IAAI,OAAO;IAI5B,mCAAmC;IAC7B,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIjD,+CAA+C;IAC/C,YAAY,IAAI,IAAI;CAGrB;AAED,kDAAkD;AAClD,wBAAsB,oBAAoB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,kDAAkD;AAClD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,2DAA2D;AAC3D,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,gDAAgD;AAChD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5F;AAED,2DAA2D;AAC3D,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlE;AAED,2CAA2C;AAC3C,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,2CAA2C;AAC3C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAgB9E;AAGD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -5,6 +5,29 @@
5
5
  * Facade pattern wrapper for modular binary management.
6
6
  * Pattern: Mirrors npm install behavior (fast check, download only when needed)
7
7
  */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
8
31
  Object.defineProperty(exports, "__esModule", { value: true });
9
32
  exports.isVersionPinned = exports.clearPinnedVersion = exports.savePinnedVersion = exports.getPinnedVersion = exports.getVersionPinPath = exports.checkCliproxyUpdate = exports.fetchLatestCliproxyVersion = exports.installCliproxyVersion = exports.getInstalledCliproxyVersion = exports.getCLIProxyPath = exports.isCLIProxyInstalled = exports.ensureCLIProxyBinary = exports.BinaryManager = void 0;
10
33
  const ui_1 = require("../utils/ui");
@@ -128,7 +151,19 @@ async function fetchLatestCliproxyVersion() {
128
151
  exports.fetchLatestCliproxyVersion = fetchLatestCliproxyVersion;
129
152
  /** Check for CLIProxyAPI binary updates */
130
153
  async function checkCliproxyUpdate() {
131
- return new BinaryManager().checkForUpdates();
154
+ const result = await new BinaryManager().checkForUpdates();
155
+ // Import isNewerVersion for stability check
156
+ const { isNewerVersion } = await Promise.resolve().then(() => __importStar(require('./binary/version-checker')));
157
+ const isStable = !isNewerVersion(result.currentVersion, platform_detector_1.CLIPROXY_MAX_STABLE_VERSION);
158
+ const stabilityMessage = isStable
159
+ ? undefined
160
+ : `v${result.currentVersion} has known stability issues. Max stable: v${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`;
161
+ return {
162
+ ...result,
163
+ isStable,
164
+ maxStableVersion: platform_detector_1.CLIPROXY_MAX_STABLE_VERSION,
165
+ stabilityMessage,
166
+ };
132
167
  }
133
168
  exports.checkCliproxyUpdate = checkCliproxyUpdate;
134
169
  exports.default = BinaryManager;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-manager.js","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-manager.js","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,12 @@ import { PlatformInfo } from './types';
11
11
  * Note: CLIProxyAPIPlus uses v6.6.X-0 suffix pattern
12
12
  */
13
13
  export declare const CLIPROXY_FALLBACK_VERSION = "6.6.40-0";
14
+ /**
15
+ * Maximum stable version cap - prevents auto-update to known unstable releases
16
+ * v81+ has context cancellation bugs causing intermittent 500 errors
17
+ * See: https://github.com/kaitranntt/ccs/issues/269
18
+ */
19
+ export declare const CLIPROXY_MAX_STABLE_VERSION = "6.6.80-0";
14
20
  /** @deprecated Use CLIPROXY_FALLBACK_VERSION instead */
15
21
  export declare const CLIPROXY_VERSION = "6.6.40-0";
16
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"platform-detector.d.ts","sourceRoot":"","sources":["../../src/cliproxy/platform-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAgD,MAAM,SAAS,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,aAAa,CAAC;AAEpD,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,aAA4B,CAAC;AAgB1D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAkC,GAAG,YAAY,CA6BxF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAkC,GAAG,MAAM,CAIlF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAkC,GAAG,MAAM,CAEnF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAS/C"}
1
+ {"version":3,"file":"platform-detector.d.ts","sourceRoot":"","sources":["../../src/cliproxy/platform-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAgD,MAAM,SAAS,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,aAAa,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,aAAa,CAAC;AAEtD,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,aAA4B,CAAC;AAgB1D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAkC,GAAG,YAAY,CA6BxF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAkC,GAAG,MAAM,CAIlF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAkC,GAAG,MAAM,CAEnF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAS/C"}
@@ -6,13 +6,19 @@
6
6
  * Supports 6 platforms: darwin/linux/windows x amd64/arm64
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.getPlatformDescription = exports.isPlatformSupported = exports.getChecksumsUrl = exports.getDownloadUrl = exports.getArchiveBinaryName = exports.getExecutableName = exports.detectPlatform = exports.CLIPROXY_VERSION = exports.CLIPROXY_FALLBACK_VERSION = void 0;
9
+ exports.getPlatformDescription = exports.isPlatformSupported = exports.getChecksumsUrl = exports.getDownloadUrl = exports.getArchiveBinaryName = exports.getExecutableName = exports.detectPlatform = exports.CLIPROXY_VERSION = exports.CLIPROXY_MAX_STABLE_VERSION = exports.CLIPROXY_FALLBACK_VERSION = void 0;
10
10
  /**
11
11
  * CLIProxyAPIPlus fallback version (used when GitHub API unavailable)
12
12
  * Auto-update fetches latest from GitHub; this is only a safety net
13
13
  * Note: CLIProxyAPIPlus uses v6.6.X-0 suffix pattern
14
14
  */
15
15
  exports.CLIPROXY_FALLBACK_VERSION = '6.6.40-0';
16
+ /**
17
+ * Maximum stable version cap - prevents auto-update to known unstable releases
18
+ * v81+ has context cancellation bugs causing intermittent 500 errors
19
+ * See: https://github.com/kaitranntt/ccs/issues/269
20
+ */
21
+ exports.CLIPROXY_MAX_STABLE_VERSION = '6.6.80-0';
16
22
  /** @deprecated Use CLIPROXY_FALLBACK_VERSION instead */
17
23
  exports.CLIPROXY_VERSION = exports.CLIPROXY_FALLBACK_VERSION;
18
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../src/cliproxy/platform-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../src/cliproxy/platform-detector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{j as e}from"./radix-ui-uXQB-q0u.js";import{r as p}from"./react-vendor-B_CU-WTZ.js";import{a as D,u as b,b as N,d as A,f as y,g as T}from"./tanstack-Coed0rqz.js";import{c as m,af as f,a as d,$ as k,a0 as R,a1 as S,a2 as z,a3 as P,L as C,I as q}from"./index-8HAJX3-Y.js";import{A as F,a as _,b as K,c as L,d as M,e as $,f as E,g as H}from"./alert-dialog-BBbNIyvF.js";import{t as u}from"./notifications-dJQY2-U6.js";import{R as O,j,a9 as Q,t as I,l as v,O as B}from"./icons-CwFZAiDB.js";import"./utils-CzKF5WmX.js";import"./form-utils-kUVlZZAO.js";import"./code-highlight-DKN39ySy.js";function U({className:t,...s}){return e.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:e.jsx("table",{"data-slot":"table",className:m("w-full caption-bottom text-sm",t),...s})})}function V({className:t,...s}){return e.jsx("thead",{"data-slot":"table-header",className:m("[&_tr]:border-b",t),...s})}function Z({className:t,...s}){return e.jsx("tbody",{"data-slot":"table-body",className:m("[&_tr:last-child]:border-0",t),...s})}function w({className:t,...s}){return e.jsx("tr",{"data-slot":"table-row",className:m("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",t),...s})}function G({className:t,...s}){return e.jsx("th",{"data-slot":"table-head",className:m("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function J({className:t,...s}){return e.jsx("td",{"data-slot":"table-cell",className:m("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function W(){return D({queryKey:["accounts"],queryFn:()=>f.accounts.list()})}function X(){const t=b();return N({mutationFn:s=>f.accounts.setDefault(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Default account set to "${l}"`)},onError:s=>{u.error(s.message)}})}function Y(){const t=b();return N({mutationFn:()=>f.accounts.resetDefault(),onSuccess:()=>{t.invalidateQueries({queryKey:["accounts"]}),u.success("Default account reset to CCS")},onError:s=>{u.error(s.message)}})}function ee(){const t=b();return N({mutationFn:s=>f.accounts.delete(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Account "${l}" deleted`)},onError:s=>{u.error(s.message)}})}function se({data:t,defaultAccount:s}){const l=X(),i=ee(),r=Y(),[c,o]=p.useState(null),x=A({data:t,columns:[{accessorKey:"name",header:"Name",size:200,cell:({row:a})=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:a.original.name}),a.original.name===s&&e.jsx("span",{className:"text-xs bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20",children:"default"})]})},{accessorKey:"type",header:"Type",size:100,cell:({row:a})=>e.jsx("span",{className:"capitalize text-muted-foreground",children:a.original.type||"oauth"})},{accessorKey:"created",header:"Created",size:150,cell:({row:a})=>{const n=new Date(a.original.created);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{accessorKey:"last_used",header:"Last Used",size:150,cell:({row:a})=>{if(!a.original.last_used)return e.jsx("span",{className:"text-muted-foreground/50",children:"-"});const n=new Date(a.original.last_used);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{id:"actions",header:"Actions",size:180,cell:({row:a})=>{const n=a.original.name===s,h=l.isPending||i.isPending;return e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(d,{variant:n?"secondary":"default",size:"sm",className:"h-8 px-2",disabled:n||h,onClick:()=>l.mutate(a.original.name),children:[e.jsx(j,{className:`w-3 h-3 mr-1 ${n?"opacity-50":""}`}),n?"Active":"Set Default"]}),e.jsx(d,{variant:"ghost",size:"sm",className:"h-8 px-2 text-destructive hover:text-destructive hover:bg-destructive/10",disabled:n||h,onClick:()=>o(a.original.name),title:n?"Cannot delete default account":"Delete account",children:e.jsx(Q,{className:"w-4 h-4"})})]})}}],getCoreRowModel:T()});return t.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:["No accounts found. Use"," ",e.jsx("code",{className:"text-sm bg-muted px-1 rounded",children:"ccs auth create"})," to add accounts."]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"border rounded-md",children:e.jsxs(U,{children:[e.jsx(V,{children:x.getHeaderGroups().map(a=>e.jsx(w,{children:a.headers.map(n=>{const h={name:"w-[200px]",type:"w-[100px]",created:"w-[150px]",last_used:"w-[150px]",actions:"w-[180px]"}[n.id]||"w-auto";return e.jsx(G,{className:h,children:n.isPlaceholder?null:y(n.column.columnDef.header,n.getContext())},n.id)})},a.id))}),e.jsx(Z,{children:x.getRowModel().rows.map(a=>e.jsx(w,{children:a.getVisibleCells().map(n=>e.jsx(J,{children:y(n.column.columnDef.cell,n.getContext())},n.id))},a.id))})]})}),s&&e.jsx("div",{className:"flex justify-end",children:e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>r.mutate(),disabled:r.isPending,children:[e.jsx(O,{className:"w-4 h-4 mr-2"}),"Reset to CCS Default"]})})]}),e.jsx(F,{open:!!c,onOpenChange:a=>!a&&o(null),children:e.jsxs(_,{children:[e.jsxs(K,{children:[e.jsx(L,{children:"Delete Account"}),e.jsxs(M,{children:['Are you sure you want to delete the account "',c,'"? This will remove the profile and all its session data. This action cannot be undone.']})]}),e.jsxs($,{children:[e.jsx(E,{children:"Cancel"}),e.jsx(H,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{c&&(i.mutate(c),o(null))},children:"Delete"})]})]})})]})}function te({open:t,onClose:s}){const[l,i]=p.useState(""),[r,c]=p.useState(!1),o=/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(l),g=l?`ccs auth create ${l}`:"ccs auth create <name>",x=async()=>{o&&(await navigator.clipboard.writeText(g),c(!0),setTimeout(()=>c(!1),2e3))},a=()=>{i(""),c(!1),s()};return e.jsx(k,{open:t,onOpenChange:n=>!n&&a(),children:e.jsxs(R,{className:"sm:max-w-md",children:[e.jsxs(S,{children:[e.jsx(z,{children:"Create New Account"}),e.jsx(P,{children:"Auth profiles require Claude CLI login. Run the command below in your terminal."})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{htmlFor:"profile-name",children:"Profile Name"}),e.jsx(q,{id:"profile-name",value:l,onChange:n=>i(n.target.value),placeholder:"e.g., work, personal, client",autoComplete:"off"}),l&&!o&&e.jsx("p",{className:"text-xs text-destructive",children:"Name must start with a letter and contain only letters, numbers, dashes, or underscores."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{children:"Command"}),e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-muted rounded-md font-mono text-sm",children:[e.jsx(I,{className:"w-4 h-4 text-muted-foreground shrink-0"}),e.jsx("code",{className:"flex-1 break-all",children:g}),e.jsx(d,{variant:"ghost",size:"sm",className:"shrink-0 h-8 px-2",onClick:x,disabled:!o,children:r?e.jsx(j,{className:"w-4 h-4 text-green-500"}):e.jsx(v,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"text-sm text-muted-foreground space-y-1",children:[e.jsx("p",{children:"After running the command:"}),e.jsxs("ol",{className:"list-decimal list-inside pl-2 space-y-0.5",children:[e.jsx("li",{children:"Complete the Claude login in your browser"}),e.jsx("li",{children:"Return here and refresh to see the new account"})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[e.jsx(d,{variant:"ghost",onClick:a,children:"Close"}),e.jsx(d,{onClick:x,disabled:!o,children:r?e.jsxs(e.Fragment,{children:[e.jsx(j,{className:"w-4 h-4 mr-2"}),"Copied!"]}):e.jsxs(e.Fragment,{children:[e.jsx(v,{className:"w-4 h-4 mr-2"}),"Copy Command"]})})]})]})]})})}function xe(){const{data:t,isLoading:s,refetch:l}=W(),[i,r]=p.useState(!1);return e.jsxs("div",{className:"p-6 max-w-6xl mx-auto space-y-8",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Accounts"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Manage multi-account Claude sessions (profiles.json)"})]}),e.jsxs(d,{onClick:()=>r(!0),children:[e.jsx(B,{className:"w-4 h-4 mr-2"}),"Create Account"]})]}),s?e.jsx("div",{className:"text-muted-foreground",children:"Loading accounts..."}):e.jsx(se,{data:t?.accounts||[],defaultAccount:t?.default??null,onRefresh:l}),e.jsx(te,{open:i,onClose:()=>r(!1)})]})}export{xe as AccountsPage};
1
+ import{j as e}from"./radix-ui-CBgg0XeO.js";import{r as p}from"./react-vendor-B_CU-WTZ.js";import{a as D,u as b,b as N,d as A,f as y,g as T}from"./tanstack-CxYN0q6L.js";import{c as m,af as f,a as d,$ as k,a0 as R,a1 as S,a2 as z,a3 as P,L as C,I as q}from"./index-D8MFq-UJ.js";import{A as F,a as _,b as K,c as L,d as M,e as $,f as E,g as H}from"./alert-dialog--nlDi-Dj.js";import{t as u}from"./notifications-dJQY2-U6.js";import{R as O,j,a9 as Q,t as I,l as v,O as B}from"./icons-U9n5DGj9.js";import"./utils-CzKF5WmX.js";import"./form-utils-kUVlZZAO.js";import"./code-highlight-DKN39ySy.js";function U({className:t,...s}){return e.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:e.jsx("table",{"data-slot":"table",className:m("w-full caption-bottom text-sm",t),...s})})}function V({className:t,...s}){return e.jsx("thead",{"data-slot":"table-header",className:m("[&_tr]:border-b",t),...s})}function Z({className:t,...s}){return e.jsx("tbody",{"data-slot":"table-body",className:m("[&_tr:last-child]:border-0",t),...s})}function w({className:t,...s}){return e.jsx("tr",{"data-slot":"table-row",className:m("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",t),...s})}function G({className:t,...s}){return e.jsx("th",{"data-slot":"table-head",className:m("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function J({className:t,...s}){return e.jsx("td",{"data-slot":"table-cell",className:m("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function W(){return D({queryKey:["accounts"],queryFn:()=>f.accounts.list()})}function X(){const t=b();return N({mutationFn:s=>f.accounts.setDefault(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Default account set to "${l}"`)},onError:s=>{u.error(s.message)}})}function Y(){const t=b();return N({mutationFn:()=>f.accounts.resetDefault(),onSuccess:()=>{t.invalidateQueries({queryKey:["accounts"]}),u.success("Default account reset to CCS")},onError:s=>{u.error(s.message)}})}function ee(){const t=b();return N({mutationFn:s=>f.accounts.delete(s),onSuccess:(s,l)=>{t.invalidateQueries({queryKey:["accounts"]}),u.success(`Account "${l}" deleted`)},onError:s=>{u.error(s.message)}})}function se({data:t,defaultAccount:s}){const l=X(),i=ee(),r=Y(),[c,o]=p.useState(null),x=A({data:t,columns:[{accessorKey:"name",header:"Name",size:200,cell:({row:a})=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:a.original.name}),a.original.name===s&&e.jsx("span",{className:"text-xs bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20",children:"default"})]})},{accessorKey:"type",header:"Type",size:100,cell:({row:a})=>e.jsx("span",{className:"capitalize text-muted-foreground",children:a.original.type||"oauth"})},{accessorKey:"created",header:"Created",size:150,cell:({row:a})=>{const n=new Date(a.original.created);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{accessorKey:"last_used",header:"Last Used",size:150,cell:({row:a})=>{if(!a.original.last_used)return e.jsx("span",{className:"text-muted-foreground/50",children:"-"});const n=new Date(a.original.last_used);return e.jsx("span",{className:"text-muted-foreground",children:n.toLocaleDateString()})}},{id:"actions",header:"Actions",size:180,cell:({row:a})=>{const n=a.original.name===s,h=l.isPending||i.isPending;return e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(d,{variant:n?"secondary":"default",size:"sm",className:"h-8 px-2",disabled:n||h,onClick:()=>l.mutate(a.original.name),children:[e.jsx(j,{className:`w-3 h-3 mr-1 ${n?"opacity-50":""}`}),n?"Active":"Set Default"]}),e.jsx(d,{variant:"ghost",size:"sm",className:"h-8 px-2 text-destructive hover:text-destructive hover:bg-destructive/10",disabled:n||h,onClick:()=>o(a.original.name),title:n?"Cannot delete default account":"Delete account",children:e.jsx(Q,{className:"w-4 h-4"})})]})}}],getCoreRowModel:T()});return t.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:["No accounts found. Use"," ",e.jsx("code",{className:"text-sm bg-muted px-1 rounded",children:"ccs auth create"})," to add accounts."]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"border rounded-md",children:e.jsxs(U,{children:[e.jsx(V,{children:x.getHeaderGroups().map(a=>e.jsx(w,{children:a.headers.map(n=>{const h={name:"w-[200px]",type:"w-[100px]",created:"w-[150px]",last_used:"w-[150px]",actions:"w-[180px]"}[n.id]||"w-auto";return e.jsx(G,{className:h,children:n.isPlaceholder?null:y(n.column.columnDef.header,n.getContext())},n.id)})},a.id))}),e.jsx(Z,{children:x.getRowModel().rows.map(a=>e.jsx(w,{children:a.getVisibleCells().map(n=>e.jsx(J,{children:y(n.column.columnDef.cell,n.getContext())},n.id))},a.id))})]})}),s&&e.jsx("div",{className:"flex justify-end",children:e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>r.mutate(),disabled:r.isPending,children:[e.jsx(O,{className:"w-4 h-4 mr-2"}),"Reset to CCS Default"]})})]}),e.jsx(F,{open:!!c,onOpenChange:a=>!a&&o(null),children:e.jsxs(_,{children:[e.jsxs(K,{children:[e.jsx(L,{children:"Delete Account"}),e.jsxs(M,{children:['Are you sure you want to delete the account "',c,'"? This will remove the profile and all its session data. This action cannot be undone.']})]}),e.jsxs($,{children:[e.jsx(E,{children:"Cancel"}),e.jsx(H,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{c&&(i.mutate(c),o(null))},children:"Delete"})]})]})})]})}function te({open:t,onClose:s}){const[l,i]=p.useState(""),[r,c]=p.useState(!1),o=/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(l),g=l?`ccs auth create ${l}`:"ccs auth create <name>",x=async()=>{o&&(await navigator.clipboard.writeText(g),c(!0),setTimeout(()=>c(!1),2e3))},a=()=>{i(""),c(!1),s()};return e.jsx(k,{open:t,onOpenChange:n=>!n&&a(),children:e.jsxs(R,{className:"sm:max-w-md",children:[e.jsxs(S,{children:[e.jsx(z,{children:"Create New Account"}),e.jsx(P,{children:"Auth profiles require Claude CLI login. Run the command below in your terminal."})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{htmlFor:"profile-name",children:"Profile Name"}),e.jsx(q,{id:"profile-name",value:l,onChange:n=>i(n.target.value),placeholder:"e.g., work, personal, client",autoComplete:"off"}),l&&!o&&e.jsx("p",{className:"text-xs text-destructive",children:"Name must start with a letter and contain only letters, numbers, dashes, or underscores."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(C,{children:"Command"}),e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-muted rounded-md font-mono text-sm",children:[e.jsx(I,{className:"w-4 h-4 text-muted-foreground shrink-0"}),e.jsx("code",{className:"flex-1 break-all",children:g}),e.jsx(d,{variant:"ghost",size:"sm",className:"shrink-0 h-8 px-2",onClick:x,disabled:!o,children:r?e.jsx(j,{className:"w-4 h-4 text-green-500"}):e.jsx(v,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"text-sm text-muted-foreground space-y-1",children:[e.jsx("p",{children:"After running the command:"}),e.jsxs("ol",{className:"list-decimal list-inside pl-2 space-y-0.5",children:[e.jsx("li",{children:"Complete the Claude login in your browser"}),e.jsx("li",{children:"Return here and refresh to see the new account"})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[e.jsx(d,{variant:"ghost",onClick:a,children:"Close"}),e.jsx(d,{onClick:x,disabled:!o,children:r?e.jsxs(e.Fragment,{children:[e.jsx(j,{className:"w-4 h-4 mr-2"}),"Copied!"]}):e.jsxs(e.Fragment,{children:[e.jsx(v,{className:"w-4 h-4 mr-2"}),"Copy Command"]})})]})]})]})})}function xe(){const{data:t,isLoading:s,refetch:l}=W(),[i,r]=p.useState(!1);return e.jsxs("div",{className:"p-6 max-w-6xl mx-auto space-y-8",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Accounts"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Manage multi-account Claude sessions (profiles.json)"})]}),e.jsxs(d,{onClick:()=>r(!0),children:[e.jsx(B,{className:"w-4 h-4 mr-2"}),"Create Account"]})]}),s?e.jsx("div",{className:"text-muted-foreground",children:"Loading accounts..."}):e.jsx(se,{data:t?.accounts||[],defaultAccount:t?.default??null,onRefresh:l}),e.jsx(te,{open:i,onClose:()=>r(!1)})]})}export{xe as AccountsPage};
@@ -1 +1 @@
1
- import{j as e,a0 as s,a1 as r,a2 as n,a3 as i,a4 as d,a5 as c,a6 as u,a7 as f}from"./radix-ui-uXQB-q0u.js";import"./react-vendor-B_CU-WTZ.js";import{c as o,av as l}from"./index-8HAJX3-Y.js";function A({...a}){return e.jsx(s,{"data-slot":"alert-dialog",...a})}function g({...a}){return e.jsx(u,{"data-slot":"alert-dialog-portal",...a})}function m({className:a,...t}){return e.jsx(f,{"data-slot":"alert-dialog-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...t})}function D({className:a,...t}){return e.jsxs(g,{children:[e.jsx(m,{}),e.jsx(r,{"data-slot":"alert-dialog-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",a),...t})]})}function b({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-header",className:o("flex flex-col gap-2 text-center sm:text-left",a),...t})}function v({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-footer",className:o("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...t})}function N({className:a,...t}){return e.jsx(n,{"data-slot":"alert-dialog-title",className:o("text-lg font-semibold",a),...t})}function w({className:a,...t}){return e.jsx(i,{"data-slot":"alert-dialog-description",className:o("text-muted-foreground text-sm",a),...t})}function y({className:a,...t}){return e.jsx(c,{className:o(l(),a),...t})}function z({className:a,...t}){return e.jsx(d,{className:o(l({variant:"outline"}),a),...t})}export{A,D as a,b,N as c,w as d,v as e,z as f,y as g};
1
+ import{j as e,a0 as s,a1 as r,a2 as n,a3 as i,a4 as d,a5 as c,a6 as u,a7 as f}from"./radix-ui-CBgg0XeO.js";import"./react-vendor-B_CU-WTZ.js";import{c as o,ay as l}from"./index-D8MFq-UJ.js";function A({...a}){return e.jsx(s,{"data-slot":"alert-dialog",...a})}function g({...a}){return e.jsx(u,{"data-slot":"alert-dialog-portal",...a})}function m({className:a,...t}){return e.jsx(f,{"data-slot":"alert-dialog-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...t})}function D({className:a,...t}){return e.jsxs(g,{children:[e.jsx(m,{}),e.jsx(r,{"data-slot":"alert-dialog-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",a),...t})]})}function b({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-header",className:o("flex flex-col gap-2 text-center sm:text-left",a),...t})}function N({className:a,...t}){return e.jsx("div",{"data-slot":"alert-dialog-footer",className:o("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...t})}function v({className:a,...t}){return e.jsx(n,{"data-slot":"alert-dialog-title",className:o("text-lg font-semibold",a),...t})}function y({className:a,...t}){return e.jsx(i,{"data-slot":"alert-dialog-description",className:o("text-muted-foreground text-sm",a),...t})}function w({className:a,...t}){return e.jsx(c,{className:o(l(),a),...t})}function z({className:a,...t}){return e.jsx(d,{className:o(l({variant:"outline"}),a),...t})}export{A,D as a,b,v as c,y as d,N as e,z as f,w as g};