@kaitranntt/ccs 7.28.2-dev.5 → 7.29.0-dev.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 (82) hide show
  1. package/dist/cliproxy/index.d.ts +4 -0
  2. package/dist/cliproxy/index.d.ts.map +1 -1
  3. package/dist/cliproxy/index.js +12 -1
  4. package/dist/cliproxy/index.js.map +1 -1
  5. package/dist/cliproxy/management-api-client.d.ts +67 -0
  6. package/dist/cliproxy/management-api-client.d.ts.map +1 -0
  7. package/dist/cliproxy/management-api-client.js +347 -0
  8. package/dist/cliproxy/management-api-client.js.map +1 -0
  9. package/dist/cliproxy/management-api-types.d.ts +107 -0
  10. package/dist/cliproxy/management-api-types.d.ts.map +1 -0
  11. package/dist/cliproxy/management-api-types.js +9 -0
  12. package/dist/cliproxy/management-api-types.js.map +1 -0
  13. package/dist/cliproxy/sync/auto-sync-watcher.d.ts +37 -0
  14. package/dist/cliproxy/sync/auto-sync-watcher.d.ts.map +1 -0
  15. package/dist/cliproxy/sync/auto-sync-watcher.js +211 -0
  16. package/dist/cliproxy/sync/auto-sync-watcher.js.map +1 -0
  17. package/dist/cliproxy/sync/index.d.ts +10 -0
  18. package/dist/cliproxy/sync/index.d.ts.map +1 -0
  19. package/dist/cliproxy/sync/index.js +27 -0
  20. package/dist/cliproxy/sync/index.js.map +1 -0
  21. package/dist/cliproxy/sync/local-config-sync.d.ts +28 -0
  22. package/dist/cliproxy/sync/local-config-sync.d.ts.map +1 -0
  23. package/dist/cliproxy/sync/local-config-sync.js +223 -0
  24. package/dist/cliproxy/sync/local-config-sync.js.map +1 -0
  25. package/dist/cliproxy/sync/profile-mapper.d.ts +55 -0
  26. package/dist/cliproxy/sync/profile-mapper.d.ts.map +1 -0
  27. package/dist/cliproxy/sync/profile-mapper.js +173 -0
  28. package/dist/cliproxy/sync/profile-mapper.js.map +1 -0
  29. package/dist/commands/api-command.d.ts.map +1 -1
  30. package/dist/commands/api-command.js +9 -0
  31. package/dist/commands/api-command.js.map +1 -1
  32. package/dist/commands/cliproxy-command.d.ts.map +1 -1
  33. package/dist/commands/cliproxy-command.js +14 -0
  34. package/dist/commands/cliproxy-command.js.map +1 -1
  35. package/dist/commands/cliproxy-sync-handler.d.ts +19 -0
  36. package/dist/commands/cliproxy-sync-handler.d.ts.map +1 -0
  37. package/dist/commands/cliproxy-sync-handler.js +99 -0
  38. package/dist/commands/cliproxy-sync-handler.js.map +1 -0
  39. package/dist/config/unified-config-loader.d.ts.map +1 -1
  40. package/dist/config/unified-config-loader.js +2 -0
  41. package/dist/config/unified-config-loader.js.map +1 -1
  42. package/dist/config/unified-config-types.d.ts +4 -0
  43. package/dist/config/unified-config-types.d.ts.map +1 -1
  44. package/dist/config/unified-config-types.js +1 -0
  45. package/dist/config/unified-config-types.js.map +1 -1
  46. package/dist/ui/assets/{accounts-i-otxY04.js → accounts-B8Dix_pe.js} +1 -1
  47. package/dist/ui/assets/{alert-dialog-ChsM4r-x.js → alert-dialog-D9sf5LUO.js} +1 -1
  48. package/dist/ui/assets/{api-DkvcVuWP.js → api-BWEtO380.js} +1 -1
  49. package/dist/ui/assets/{auth-section-Dxn0DYSn.js → auth-section-P_VyLEhl.js} +1 -1
  50. package/dist/ui/assets/{backups-section-C69lfoMb.js → backups-section-CW5xqaz_.js} +1 -1
  51. package/dist/ui/assets/cliproxy-DKG1mewx.js +3 -0
  52. package/dist/ui/assets/{cliproxy-control-panel-BTxBMhaM.js → cliproxy-control-panel-CYsom2j0.js} +1 -1
  53. package/dist/ui/assets/{confirm-dialog-BPeUzTtR.js → confirm-dialog-ljF0cbqn.js} +1 -1
  54. package/dist/ui/assets/{copilot-BYLraNg6.js → copilot-C3Rbmcsb.js} +2 -2
  55. package/dist/ui/assets/{globalenv-section-DNTRl-KT.js → globalenv-section-BxyNnDMj.js} +1 -1
  56. package/dist/ui/assets/{health-Dke2efGa.js → health-BCIM8cr8.js} +1 -1
  57. package/dist/ui/assets/icons-BCMa0lXB.js +1 -0
  58. package/dist/ui/assets/index-BKZrzwcq.css +1 -0
  59. package/dist/ui/assets/{index-C18zRkdw.js → index-Ba9prM0F.js} +1 -1
  60. package/dist/ui/assets/{index-BjNng92J.js → index-DeImBou9.js} +1 -1
  61. package/dist/ui/assets/{index-BfEQysRw.js → index-XIGvya4z.js} +3 -3
  62. package/dist/ui/assets/{index-BJ84Cyxy.js → index-ormw_-6g.js} +1 -1
  63. package/dist/ui/assets/{index-DBbJqK7c.js → index-y_fDyk_F.js} +1 -1
  64. package/dist/ui/assets/proxy-status-widget-D0sDGRBD.js +1 -0
  65. package/dist/ui/assets/{shared-BkHNbjDz.js → shared-BrMls8CB.js} +1 -1
  66. package/dist/ui/assets/{switch-v6qJvWIp.js → switch-DlLXjuSB.js} +1 -1
  67. package/dist/ui/index.html +3 -3
  68. package/dist/web-server/index.d.ts.map +1 -1
  69. package/dist/web-server/index.js +9 -1
  70. package/dist/web-server/index.js.map +1 -1
  71. package/dist/web-server/routes/cliproxy-sync-routes.d.ts +6 -0
  72. package/dist/web-server/routes/cliproxy-sync-routes.d.ts.map +1 -0
  73. package/dist/web-server/routes/cliproxy-sync-routes.js +157 -0
  74. package/dist/web-server/routes/cliproxy-sync-routes.js.map +1 -0
  75. package/dist/web-server/routes/index.d.ts.map +1 -1
  76. package/dist/web-server/routes/index.js +2 -0
  77. package/dist/web-server/routes/index.js.map +1 -1
  78. package/package.json +1 -1
  79. package/dist/ui/assets/cliproxy-CfpQP2G7.js +0 -3
  80. package/dist/ui/assets/icons-C6UNjkCT.js +0 -1
  81. package/dist/ui/assets/index-DWVSWP6e.css +0 -1
  82. package/dist/ui/assets/proxy-status-widget-D10mZVdk.js +0 -1
@@ -28,4 +28,8 @@ export { acquireStartupLock, withStartupLock } from './startup-lock';
28
28
  export { generateSecureToken, maskToken, getEffectiveApiKey, getEffectiveManagementSecret, setGlobalApiKey, setGlobalManagementSecret, setVariantApiKey, resetAuthToDefaults, getAuthSummary, } from './auth-token-manager';
29
29
  export type { ThinkingValidationResult } from './thinking-validator';
30
30
  export { validateThinking, THINKING_LEVEL_BUDGETS, VALID_THINKING_LEVELS, VALID_THINKING_TIERS, THINKING_OFF_VALUES, THINKING_AUTO_VALUE, THINKING_BUDGET_MIN, THINKING_BUDGET_MAX, THINKING_BUDGET_DEFAULT_MIN, } from './thinking-validator';
31
+ export type { ClaudeKey, ClaudeModel, ManagementClientConfig, ManagementHealthStatus, ManagementApiErrorCode, ClaudeKeyPatch, SyncStatus, } from './management-api-types';
32
+ export { ManagementApiClient, createManagementClient } from './management-api-client';
33
+ export type { SyncableProfile, SyncPreviewItem } from './sync';
34
+ export { loadSyncableProfiles, mapProfileToClaudeKey, generateSyncPayload, generateSyncPreview, getSyncableProfileCount, isProfileSyncable, } from './sync';
31
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cliproxy/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cliproxy/index.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.configureProviderModel = exports.getCurrentModel = exports.hasUserSettings = exports.findModel = exports.getProviderCatalog = exports.supportsModelConfig = exports.MODEL_CATALOG = exports.clearConfigCache = exports.getEnvVarsFromConfig = exports.getModelMappingFromConfig = exports.loadBaseConfig = exports.CLIPROXY_CONFIG_VERSION = exports.CLIPROXY_DEFAULT_PORT = exports.deleteConfig = exports.configExists = exports.getBinDir = exports.getCliproxyConfigPath = exports.getAuthDir = exports.getProviderAuthDir = exports.getCliproxyDir = exports.getModelMapping = exports.getProviderConfig = exports.ensureProviderSettings = exports.getProviderSettingsPath = exports.getEffectiveEnvVars = exports.getClaudeEnvVars = exports.parseUserApiKeys = exports.configNeedsRegeneration = exports.regenerateConfig = exports.generateConfig = exports.getVersionPinPath = exports.isVersionPinned = exports.clearPinnedVersion = exports.savePinnedVersion = exports.getPinnedVersion = exports.fetchLatestCliproxyVersion = exports.installCliproxyVersion = exports.getInstalledCliproxyVersion = exports.getCLIProxyPath = exports.isCLIProxyInstalled = exports.ensureCLIProxyBinary = exports.BinaryManager = exports.CLIPROXY_VERSION = exports.getPlatformDescription = exports.isPlatformSupported = exports.getArchiveBinaryName = exports.getExecutableName = exports.getChecksumsUrl = exports.getDownloadUrl = exports.detectPlatform = void 0;
8
- exports.THINKING_BUDGET_DEFAULT_MIN = exports.THINKING_BUDGET_MAX = exports.THINKING_BUDGET_MIN = exports.THINKING_AUTO_VALUE = exports.THINKING_OFF_VALUES = exports.VALID_THINKING_TIERS = exports.VALID_THINKING_LEVELS = exports.THINKING_LEVEL_BUDGETS = exports.validateThinking = exports.getAuthSummary = exports.resetAuthToDefaults = exports.setVariantApiKey = exports.setGlobalManagementSecret = exports.setGlobalApiKey = exports.getEffectiveManagementSecret = exports.getEffectiveApiKey = exports.maskToken = exports.generateSecureToken = exports.withStartupLock = exports.acquireStartupLock = exports.reclaimOrphanedProxy = exports.waitForProxyHealthy = exports.detectRunningProxy = exports.getServiceStatus = exports.stopCliproxyService = exports.ensureCliproxyService = exports.TOGETHER_TEMPLATE = exports.OPENROUTER_TEMPLATE = exports.removeOpenAICompatProvider = exports.updateOpenAICompatProvider = exports.addOpenAICompatProvider = exports.getOpenAICompatProvider = exports.listOpenAICompatProviders = exports.fetchAccountQuota = exports.isCliproxyRunning = exports.fetchCliproxyStats = exports.displayAuthStatus = exports.getProviderTokenDir = exports.getOAuthConfig = exports.ensureAuth = exports.triggerOAuth = exports.clearAuth = exports.getAllAuthStatus = exports.getAuthStatus = exports.isAuthenticated = exports.findAvailablePort = exports.isPortAvailable = exports.execClaudeWithCLIProxy = exports.showCurrentConfig = void 0;
8
+ exports.ManagementApiClient = exports.THINKING_BUDGET_DEFAULT_MIN = exports.THINKING_BUDGET_MAX = exports.THINKING_BUDGET_MIN = exports.THINKING_AUTO_VALUE = exports.THINKING_OFF_VALUES = exports.VALID_THINKING_TIERS = exports.VALID_THINKING_LEVELS = exports.THINKING_LEVEL_BUDGETS = exports.validateThinking = exports.getAuthSummary = exports.resetAuthToDefaults = exports.setVariantApiKey = exports.setGlobalManagementSecret = exports.setGlobalApiKey = exports.getEffectiveManagementSecret = exports.getEffectiveApiKey = exports.maskToken = exports.generateSecureToken = exports.withStartupLock = exports.acquireStartupLock = exports.reclaimOrphanedProxy = exports.waitForProxyHealthy = exports.detectRunningProxy = exports.getServiceStatus = exports.stopCliproxyService = exports.ensureCliproxyService = exports.TOGETHER_TEMPLATE = exports.OPENROUTER_TEMPLATE = exports.removeOpenAICompatProvider = exports.updateOpenAICompatProvider = exports.addOpenAICompatProvider = exports.getOpenAICompatProvider = exports.listOpenAICompatProviders = exports.fetchAccountQuota = exports.isCliproxyRunning = exports.fetchCliproxyStats = exports.displayAuthStatus = exports.getProviderTokenDir = exports.getOAuthConfig = exports.ensureAuth = exports.triggerOAuth = exports.clearAuth = exports.getAllAuthStatus = exports.getAuthStatus = exports.isAuthenticated = exports.findAvailablePort = exports.isPortAvailable = exports.execClaudeWithCLIProxy = exports.showCurrentConfig = void 0;
9
+ exports.isProfileSyncable = exports.getSyncableProfileCount = exports.generateSyncPreview = exports.generateSyncPayload = exports.mapProfileToClaudeKey = exports.loadSyncableProfiles = exports.createManagementClient = void 0;
9
10
  // Platform detection
10
11
  var platform_detector_1 = require("./platform-detector");
11
12
  Object.defineProperty(exports, "detectPlatform", { enumerable: true, get: function () { return platform_detector_1.detectPlatform; } });
@@ -127,4 +128,14 @@ Object.defineProperty(exports, "THINKING_AUTO_VALUE", { enumerable: true, get: f
127
128
  Object.defineProperty(exports, "THINKING_BUDGET_MIN", { enumerable: true, get: function () { return thinking_validator_1.THINKING_BUDGET_MIN; } });
128
129
  Object.defineProperty(exports, "THINKING_BUDGET_MAX", { enumerable: true, get: function () { return thinking_validator_1.THINKING_BUDGET_MAX; } });
129
130
  Object.defineProperty(exports, "THINKING_BUDGET_DEFAULT_MIN", { enumerable: true, get: function () { return thinking_validator_1.THINKING_BUDGET_DEFAULT_MIN; } });
131
+ var management_api_client_1 = require("./management-api-client");
132
+ Object.defineProperty(exports, "ManagementApiClient", { enumerable: true, get: function () { return management_api_client_1.ManagementApiClient; } });
133
+ Object.defineProperty(exports, "createManagementClient", { enumerable: true, get: function () { return management_api_client_1.createManagementClient; } });
134
+ var sync_1 = require("./sync");
135
+ Object.defineProperty(exports, "loadSyncableProfiles", { enumerable: true, get: function () { return sync_1.loadSyncableProfiles; } });
136
+ Object.defineProperty(exports, "mapProfileToClaudeKey", { enumerable: true, get: function () { return sync_1.mapProfileToClaudeKey; } });
137
+ Object.defineProperty(exports, "generateSyncPayload", { enumerable: true, get: function () { return sync_1.generateSyncPayload; } });
138
+ Object.defineProperty(exports, "generateSyncPreview", { enumerable: true, get: function () { return sync_1.generateSyncPreview; } });
139
+ Object.defineProperty(exports, "getSyncableProfileCount", { enumerable: true, get: function () { return sync_1.getSyncableProfileCount; } });
140
+ Object.defineProperty(exports, "isProfileSyncable", { enumerable: true, get: function () { return sync_1.isProfileSyncable; } });
130
141
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cliproxy/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cliproxy/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Management API Client for CLIProxyAPI
3
+ *
4
+ * HTTP client for CLIProxy Management API endpoints.
5
+ * Handles authentication, error mapping, and provides typed methods for CRUD operations.
6
+ */
7
+ import type { ManagementClientConfig, ManagementHealthStatus, ClaudeKey, ClaudeKeyPatch } from './management-api-types';
8
+ /**
9
+ * Management API Client for CLIProxyAPI.
10
+ * Provides typed methods for CRUD operations on claude-api-key configuration.
11
+ */
12
+ export declare class ManagementApiClient {
13
+ private readonly config;
14
+ private readonly timeout;
15
+ constructor(config: ManagementClientConfig);
16
+ /**
17
+ * Build base URL for display purposes.
18
+ */
19
+ getBaseUrl(): string;
20
+ /**
21
+ * Check health of Management API.
22
+ * Uses GET /v0/management/claude-api-key as health check.
23
+ */
24
+ health(): Promise<ManagementHealthStatus>;
25
+ /**
26
+ * Get all claude-api-key entries from remote CLIProxy.
27
+ */
28
+ getClaudeKeys(): Promise<ClaudeKey[]>;
29
+ /**
30
+ * Replace all claude-api-key entries on remote CLIProxy.
31
+ * This is an atomic operation - all entries are replaced at once.
32
+ */
33
+ putClaudeKeys(keys: ClaudeKey[]): Promise<void>;
34
+ /**
35
+ * Update a single claude-api-key entry by index or api-key match.
36
+ */
37
+ patchClaudeKey(patch: ClaudeKeyPatch): Promise<void>;
38
+ /**
39
+ * Delete a claude-api-key entry by api-key value.
40
+ */
41
+ deleteClaudeKey(apiKey: string): Promise<void>;
42
+ /**
43
+ * Make an HTTP request to the Management API.
44
+ */
45
+ private request;
46
+ /**
47
+ * Make request using native fetch API.
48
+ */
49
+ private requestWithFetch;
50
+ /**
51
+ * Make request using native https module for self-signed cert support.
52
+ */
53
+ private requestWithHttps;
54
+ }
55
+ /**
56
+ * Create a ManagementApiClient from CCS config.
57
+ * Uses cliproxy_server.remote settings.
58
+ */
59
+ export declare function createManagementClient(remoteConfig: {
60
+ host: string;
61
+ port?: number;
62
+ protocol: 'http' | 'https';
63
+ management_key?: string;
64
+ auth_token?: string;
65
+ timeout?: number;
66
+ }, allowSelfSigned?: boolean): ManagementApiClient;
67
+ //# sourceMappingURL=management-api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management-api-client.d.ts","sourceRoot":"","sources":["../../src/cliproxy/management-api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EAEtB,SAAS,EAET,cAAc,EACf,MAAM,wBAAwB,CAAC;AA2GhC;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,sBAAsB;IAK1C;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAsB/C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAQ3C;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;YACW,OAAO;IAwBrB;;OAEG;YACW,gBAAgB;IA4D9B;;OAEG;YACW,gBAAgB;CAoF/B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EACD,eAAe,UAAO,GACrB,mBAAmB,CASrB"}
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ /**
3
+ * Management API Client for CLIProxyAPI
4
+ *
5
+ * HTTP client for CLIProxy Management API endpoints.
6
+ * Handles authentication, error mapping, and provides typed methods for CRUD operations.
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
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.createManagementClient = exports.ManagementApiClient = void 0;
33
+ const https = __importStar(require("https"));
34
+ /** Default timeout for management operations (longer than health check) */
35
+ const DEFAULT_TIMEOUT_MS = 5000;
36
+ /** Default port for HTTP protocol */
37
+ const DEFAULT_HTTP_PORT = 8317;
38
+ /** Default port for HTTPS protocol */
39
+ const DEFAULT_HTTPS_PORT = 443;
40
+ /**
41
+ * Get effective port based on config and protocol.
42
+ */
43
+ function getEffectivePort(port, protocol) {
44
+ if (port !== undefined && Number.isInteger(port) && port > 0 && port <= 65535) {
45
+ return port;
46
+ }
47
+ return protocol === 'https' ? DEFAULT_HTTPS_PORT : DEFAULT_HTTP_PORT;
48
+ }
49
+ /**
50
+ * Build URL for Management API endpoint.
51
+ */
52
+ function buildUrl(config, path) {
53
+ const port = getEffectivePort(config.port, config.protocol);
54
+ // Only omit port if it matches standard web ports
55
+ if ((config.protocol === 'https' && port === 443) ||
56
+ (config.protocol === 'http' && port === 80)) {
57
+ return `${config.protocol}://${config.host}${path}`;
58
+ }
59
+ return `${config.protocol}://${config.host}:${port}${path}`;
60
+ }
61
+ /**
62
+ * Map error to ManagementApiErrorCode.
63
+ */
64
+ function mapErrorToCode(error, statusCode) {
65
+ const message = error.message.toLowerCase();
66
+ const rawCode = error.code;
67
+ const code = typeof rawCode === 'string' ? rawCode.toLowerCase() : undefined;
68
+ // DNS resolution failed
69
+ if (code === 'enotfound' || code === 'eai_again' || message.includes('dns')) {
70
+ return 'DNS_FAILED';
71
+ }
72
+ // Network unreachable
73
+ if (code === 'enetunreach' || code === 'ehostunreach' || message.includes('unreachable')) {
74
+ return 'NETWORK_UNREACHABLE';
75
+ }
76
+ // Connection refused
77
+ if (code === 'econnrefused' || message.includes('connection refused')) {
78
+ return 'CONNECTION_REFUSED';
79
+ }
80
+ // Timeout
81
+ if (code === 'etimedout' || message.includes('timeout') || message.includes('aborted')) {
82
+ return 'TIMEOUT';
83
+ }
84
+ // HTTP status codes
85
+ if (statusCode === 401 || statusCode === 403) {
86
+ return 'AUTH_FAILED';
87
+ }
88
+ if (statusCode === 404) {
89
+ return 'NOT_FOUND';
90
+ }
91
+ if (statusCode === 400) {
92
+ return 'BAD_REQUEST';
93
+ }
94
+ if (statusCode && statusCode >= 500) {
95
+ return 'SERVER_ERROR';
96
+ }
97
+ return 'UNKNOWN';
98
+ }
99
+ /**
100
+ * Get human-readable error message from error code.
101
+ */
102
+ function getErrorMessage(errorCode, rawError) {
103
+ switch (errorCode) {
104
+ case 'CONNECTION_REFUSED':
105
+ return 'Connection refused - is CLIProxy running?';
106
+ case 'TIMEOUT':
107
+ return 'Request timed out - server may be slow or unreachable';
108
+ case 'AUTH_FAILED':
109
+ return 'Authentication failed - check management key';
110
+ case 'DNS_FAILED':
111
+ return 'DNS lookup failed - check hostname';
112
+ case 'NETWORK_UNREACHABLE':
113
+ return 'Network unreachable - check if host is accessible';
114
+ case 'NOT_FOUND':
115
+ return 'Endpoint not found - check CLIProxy version';
116
+ case 'BAD_REQUEST':
117
+ return 'Invalid request - check payload format';
118
+ case 'SERVER_ERROR':
119
+ return 'Server error - check CLIProxy logs';
120
+ default:
121
+ return rawError || 'Request failed';
122
+ }
123
+ }
124
+ /**
125
+ * Management API Client for CLIProxyAPI.
126
+ * Provides typed methods for CRUD operations on claude-api-key configuration.
127
+ */
128
+ class ManagementApiClient {
129
+ constructor(config) {
130
+ this.config = config;
131
+ this.timeout = config.timeout ?? DEFAULT_TIMEOUT_MS;
132
+ }
133
+ /**
134
+ * Build base URL for display purposes.
135
+ */
136
+ getBaseUrl() {
137
+ return buildUrl(this.config, '');
138
+ }
139
+ /**
140
+ * Check health of Management API.
141
+ * Uses GET /v0/management/claude-api-key as health check.
142
+ */
143
+ async health() {
144
+ const startTime = Date.now();
145
+ try {
146
+ const response = await this.request('GET', '/v0/management/claude-api-key');
147
+ const latencyMs = Date.now() - startTime;
148
+ return {
149
+ healthy: true,
150
+ latencyMs,
151
+ version: response.headers?.['x-cpa-version'],
152
+ commit: response.headers?.['x-cpa-commit'],
153
+ };
154
+ }
155
+ catch (error) {
156
+ const err = error;
157
+ return {
158
+ healthy: false,
159
+ error: err.message,
160
+ errorCode: err.errorCode ?? 'UNKNOWN',
161
+ };
162
+ }
163
+ }
164
+ /**
165
+ * Get all claude-api-key entries from remote CLIProxy.
166
+ */
167
+ async getClaudeKeys() {
168
+ const response = await this.request('GET', '/v0/management/claude-api-key');
169
+ return response.data?.['claude-api-key'] ?? [];
170
+ }
171
+ /**
172
+ * Replace all claude-api-key entries on remote CLIProxy.
173
+ * This is an atomic operation - all entries are replaced at once.
174
+ */
175
+ async putClaudeKeys(keys) {
176
+ await this.request('PUT', '/v0/management/claude-api-key', keys);
177
+ }
178
+ /**
179
+ * Update a single claude-api-key entry by index or api-key match.
180
+ */
181
+ async patchClaudeKey(patch) {
182
+ await this.request('PATCH', '/v0/management/claude-api-key', patch);
183
+ }
184
+ /**
185
+ * Delete a claude-api-key entry by api-key value.
186
+ */
187
+ async deleteClaudeKey(apiKey) {
188
+ const encodedKey = encodeURIComponent(apiKey);
189
+ await this.request('DELETE', `/v0/management/claude-api-key?api-key=${encodedKey}`);
190
+ }
191
+ /**
192
+ * Make an HTTP request to the Management API.
193
+ */
194
+ async request(method, path, body) {
195
+ const url = buildUrl(this.config, path);
196
+ const headers = {
197
+ Accept: 'application/json',
198
+ Authorization: `Bearer ${this.config.managementKey}`,
199
+ };
200
+ if (body !== undefined) {
201
+ headers['Content-Type'] = 'application/json';
202
+ }
203
+ // Use native https for self-signed cert support
204
+ if (this.config.protocol === 'https' && this.config.allowSelfSigned) {
205
+ return this.requestWithHttps(method, url, headers, body);
206
+ }
207
+ return this.requestWithFetch(method, url, headers, body);
208
+ }
209
+ /**
210
+ * Make request using native fetch API.
211
+ */
212
+ async requestWithFetch(method, url, headers, body) {
213
+ const controller = new AbortController();
214
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
215
+ try {
216
+ const response = await fetch(url, {
217
+ method,
218
+ headers,
219
+ body: body !== undefined ? JSON.stringify(body) : undefined,
220
+ signal: controller.signal,
221
+ });
222
+ clearTimeout(timeoutId);
223
+ if (!response.ok) {
224
+ const errorCode = mapErrorToCode(new Error(response.statusText), response.status);
225
+ const error = new Error(getErrorMessage(errorCode));
226
+ error.statusCode = response.status;
227
+ error.errorCode = errorCode;
228
+ throw error;
229
+ }
230
+ // Extract headers we care about
231
+ const responseHeaders = {};
232
+ const version = response.headers.get('x-cpa-version');
233
+ const commit = response.headers.get('x-cpa-commit');
234
+ if (version)
235
+ responseHeaders['x-cpa-version'] = version;
236
+ if (commit)
237
+ responseHeaders['x-cpa-commit'] = commit;
238
+ // Parse JSON response if present
239
+ const text = await response.text();
240
+ let data;
241
+ if (text) {
242
+ try {
243
+ data = JSON.parse(text);
244
+ }
245
+ catch {
246
+ // Non-JSON response is ok for PUT/DELETE
247
+ }
248
+ }
249
+ return { data, headers: responseHeaders };
250
+ }
251
+ catch (error) {
252
+ clearTimeout(timeoutId);
253
+ const err = error;
254
+ if (!err.errorCode) {
255
+ err.errorCode = mapErrorToCode(err, err.statusCode);
256
+ err.message = getErrorMessage(err.errorCode, err.message);
257
+ }
258
+ throw err;
259
+ }
260
+ }
261
+ /**
262
+ * Make request using native https module for self-signed cert support.
263
+ */
264
+ async requestWithHttps(method, url, headers, body) {
265
+ return new Promise((resolve, reject) => {
266
+ const agent = new https.Agent({ rejectUnauthorized: false });
267
+ const bodyStr = body !== undefined ? JSON.stringify(body) : undefined;
268
+ if (bodyStr) {
269
+ headers['Content-Length'] = Buffer.byteLength(bodyStr).toString();
270
+ }
271
+ const reqTimeout = setTimeout(() => {
272
+ reject(new Error('Request timeout'));
273
+ }, this.timeout);
274
+ const req = https.request(url, {
275
+ method,
276
+ headers,
277
+ agent,
278
+ timeout: this.timeout,
279
+ }, (res) => {
280
+ clearTimeout(reqTimeout);
281
+ let data = '';
282
+ res.on('data', (chunk) => (data += chunk));
283
+ res.on('end', () => {
284
+ if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
285
+ const errorCode = mapErrorToCode(new Error(res.statusMessage || ''), res.statusCode);
286
+ const error = new Error(getErrorMessage(errorCode));
287
+ error.statusCode = res.statusCode;
288
+ error.errorCode = errorCode;
289
+ reject(error);
290
+ return;
291
+ }
292
+ const responseHeaders = {};
293
+ const version = res.headers['x-cpa-version'];
294
+ const commit = res.headers['x-cpa-commit'];
295
+ if (typeof version === 'string')
296
+ responseHeaders['x-cpa-version'] = version;
297
+ if (typeof commit === 'string')
298
+ responseHeaders['x-cpa-commit'] = commit;
299
+ let parsed;
300
+ if (data) {
301
+ try {
302
+ parsed = JSON.parse(data);
303
+ }
304
+ catch {
305
+ // Non-JSON response is ok
306
+ }
307
+ }
308
+ resolve({ data: parsed, headers: responseHeaders });
309
+ });
310
+ });
311
+ req.on('error', (err) => {
312
+ clearTimeout(reqTimeout);
313
+ const error = err;
314
+ error.errorCode = mapErrorToCode(err);
315
+ error.message = getErrorMessage(error.errorCode, err.message);
316
+ reject(error);
317
+ });
318
+ req.on('timeout', () => {
319
+ req.destroy();
320
+ const error = new Error('Request timeout');
321
+ error.errorCode = 'TIMEOUT';
322
+ reject(error);
323
+ });
324
+ if (bodyStr) {
325
+ req.write(bodyStr);
326
+ }
327
+ req.end();
328
+ });
329
+ }
330
+ }
331
+ exports.ManagementApiClient = ManagementApiClient;
332
+ /**
333
+ * Create a ManagementApiClient from CCS config.
334
+ * Uses cliproxy_server.remote settings.
335
+ */
336
+ function createManagementClient(remoteConfig, allowSelfSigned = true) {
337
+ return new ManagementApiClient({
338
+ host: remoteConfig.host,
339
+ port: remoteConfig.port,
340
+ protocol: remoteConfig.protocol,
341
+ managementKey: remoteConfig.management_key || remoteConfig.auth_token || '',
342
+ timeout: remoteConfig.timeout,
343
+ allowSelfSigned,
344
+ });
345
+ }
346
+ exports.createManagementClient = createManagementClient;
347
+ //# sourceMappingURL=management-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management-api-client.js","sourceRoot":"","sources":["../../src/cliproxy/management-api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Management API Types for CLIProxyAPI
3
+ *
4
+ * Type definitions matching CLIProxyAPI Go structs for Management API CRUD operations.
5
+ * Used for syncing CCS API profiles to remote CLIProxy instance.
6
+ */
7
+ /**
8
+ * Model alias within a ClaudeKey entry.
9
+ * Maps Claude model names to provider-specific models.
10
+ */
11
+ export interface ClaudeModel {
12
+ /** Claude model name to match (e.g., "claude-3-5-sonnet") */
13
+ name: string;
14
+ /** Target model to use instead (e.g., "glm-4.7-airx-thinking") */
15
+ alias: string;
16
+ }
17
+ /**
18
+ * ClaudeKey configuration for CLIProxy.
19
+ * Maps to config.ClaudeKey in CLIProxyAPI Go code.
20
+ */
21
+ export interface ClaudeKey {
22
+ /** API key for the provider */
23
+ 'api-key': string;
24
+ /** Prefix for model name matching (e.g., "glm-" matches "glm-*" requests) */
25
+ prefix?: string;
26
+ /** Base URL for the provider API */
27
+ 'base-url'?: string;
28
+ /** Optional proxy URL for requests */
29
+ 'proxy-url'?: string;
30
+ /** Additional headers to include in requests */
31
+ headers?: Record<string, string>;
32
+ /** Models to exclude from this key */
33
+ 'excluded-models'?: string[];
34
+ /** Model name to alias mappings */
35
+ models?: ClaudeModel[];
36
+ }
37
+ /**
38
+ * Configuration for the Management API client.
39
+ */
40
+ export interface ManagementClientConfig {
41
+ /** Remote proxy host (IP or hostname) */
42
+ host: string;
43
+ /** Remote proxy port (default: 8317 for HTTP, 443 for HTTPS) */
44
+ port?: number;
45
+ /** Protocol to use (http or https) */
46
+ protocol: 'http' | 'https';
47
+ /** Management key for authentication (sent as Bearer token) */
48
+ managementKey: string;
49
+ /** Request timeout in milliseconds (default: 5000) */
50
+ timeout?: number;
51
+ /** Allow self-signed certificates for HTTPS (default: false) */
52
+ allowSelfSigned?: boolean;
53
+ }
54
+ /**
55
+ * Health check result from Management API.
56
+ */
57
+ export interface ManagementHealthStatus {
58
+ /** Whether the Management API is reachable */
59
+ healthy: boolean;
60
+ /** Version of CLIProxyAPI (from X-CPA-VERSION header) */
61
+ version?: string;
62
+ /** Commit hash (from X-CPA-COMMIT header) */
63
+ commit?: string;
64
+ /** Latency in milliseconds */
65
+ latencyMs?: number;
66
+ /** Error message if not healthy */
67
+ error?: string;
68
+ /** Error code for programmatic handling */
69
+ errorCode?: ManagementApiErrorCode;
70
+ }
71
+ /**
72
+ * Error codes for Management API operations.
73
+ */
74
+ export type ManagementApiErrorCode = 'CONNECTION_REFUSED' | 'TIMEOUT' | 'AUTH_FAILED' | 'DNS_FAILED' | 'NETWORK_UNREACHABLE' | 'NOT_FOUND' | 'BAD_REQUEST' | 'SERVER_ERROR' | 'UNKNOWN';
75
+ /**
76
+ * Response from GET /v0/management/claude-api-key
77
+ */
78
+ export interface GetClaudeKeysResponse {
79
+ 'claude-api-key': ClaudeKey[];
80
+ }
81
+ /**
82
+ * Patch request body for updating a single ClaudeKey.
83
+ */
84
+ export interface ClaudeKeyPatch {
85
+ /** Index of the key to update (0-based) */
86
+ index?: number;
87
+ /** Match by api-key value */
88
+ match?: string;
89
+ /** Fields to update */
90
+ value: Partial<ClaudeKey>;
91
+ }
92
+ /**
93
+ * Sync status for tracking sync operations.
94
+ */
95
+ export interface SyncStatus {
96
+ /** Last sync timestamp (ISO 8601) */
97
+ lastSyncAt?: string;
98
+ /** Number of profiles synced */
99
+ profileCount: number;
100
+ /** Whether sync was successful */
101
+ success: boolean;
102
+ /** Error message if failed */
103
+ error?: string;
104
+ /** Remote CLIProxy URL */
105
+ remoteUrl?: string;
106
+ }
107
+ //# sourceMappingURL=management-api-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management-api-types.d.ts","sourceRoot":"","sources":["../../src/cliproxy/management-api-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAC9B,oBAAoB,GACpB,SAAS,GACT,aAAa,GACb,YAAY,GACZ,qBAAqB,GACrB,WAAW,GACX,aAAa,GACb,cAAc,GACd,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,SAAS,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Management API Types for CLIProxyAPI
4
+ *
5
+ * Type definitions matching CLIProxyAPI Go structs for Management API CRUD operations.
6
+ * Used for syncing CCS API profiles to remote CLIProxy instance.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=management-api-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management-api-types.js","sourceRoot":"","sources":["../../src/cliproxy/management-api-types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}