@kaitranntt/ccs 6.7.1-dev.6 → 6.7.1-dev.7

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 (88) hide show
  1. package/dist/api/services/index.d.ts +3 -0
  2. package/dist/api/services/index.d.ts.map +1 -1
  3. package/dist/api/services/index.js +14 -1
  4. package/dist/api/services/index.js.map +1 -1
  5. package/dist/api/services/openrouter-catalog.d.ts +30 -0
  6. package/dist/api/services/openrouter-catalog.d.ts.map +1 -0
  7. package/dist/api/services/openrouter-catalog.js +130 -0
  8. package/dist/api/services/openrouter-catalog.js.map +1 -0
  9. package/dist/api/services/openrouter-picker.d.ts +15 -0
  10. package/dist/api/services/openrouter-picker.d.ts.map +1 -0
  11. package/dist/api/services/openrouter-picker.js +113 -0
  12. package/dist/api/services/openrouter-picker.js.map +1 -0
  13. package/dist/api/services/profile-reader.d.ts +3 -0
  14. package/dist/api/services/profile-reader.d.ts.map +1 -1
  15. package/dist/api/services/profile-reader.js +14 -9
  16. package/dist/api/services/profile-reader.js.map +1 -1
  17. package/dist/api/services/profile-writer.d.ts.map +1 -1
  18. package/dist/api/services/profile-writer.js +8 -3
  19. package/dist/api/services/profile-writer.js.map +1 -1
  20. package/dist/api/services/provider-presets.d.ts +36 -0
  21. package/dist/api/services/provider-presets.d.ts.map +1 -0
  22. package/dist/api/services/provider-presets.js +89 -0
  23. package/dist/api/services/provider-presets.js.map +1 -0
  24. package/dist/auth/profile-detector.d.ts.map +1 -1
  25. package/dist/auth/profile-detector.js +1 -4
  26. package/dist/auth/profile-detector.js.map +1 -1
  27. package/dist/commands/api-command.d.ts.map +1 -1
  28. package/dist/commands/api-command.js +82 -30
  29. package/dist/commands/api-command.js.map +1 -1
  30. package/dist/config/index.d.ts +0 -1
  31. package/dist/config/index.d.ts.map +1 -1
  32. package/dist/config/index.js +0 -1
  33. package/dist/config/index.js.map +1 -1
  34. package/dist/config/migration-manager.d.ts.map +1 -1
  35. package/dist/config/migration-manager.js +0 -3
  36. package/dist/config/migration-manager.js.map +1 -1
  37. package/dist/config/unified-config-types.d.ts +1 -20
  38. package/dist/config/unified-config-types.d.ts.map +1 -1
  39. package/dist/config/unified-config-types.js +2 -22
  40. package/dist/config/unified-config-types.js.map +1 -1
  41. package/dist/management/recovery-manager.d.ts +3 -0
  42. package/dist/management/recovery-manager.d.ts.map +1 -1
  43. package/dist/management/recovery-manager.js +6 -11
  44. package/dist/management/recovery-manager.js.map +1 -1
  45. package/dist/ui/assets/{accounts-CveDKAVc.js → accounts-CseTPPSx.js} +1 -1
  46. package/dist/ui/assets/{analytics-D-bqA31W.js → analytics-CxcV9QVU.js} +1 -1
  47. package/dist/ui/assets/api-BW7rRy1o.js +1 -0
  48. package/dist/ui/assets/card-CLNWVVCT.js +1 -0
  49. package/dist/ui/assets/{cliproxy-BY70Tlxq.js → cliproxy-CU7ficOZ.js} +2 -2
  50. package/dist/ui/assets/{cliproxy-control-panel-CJ2CfYod.js → cliproxy-control-panel-CvVI3tSn.js} +1 -1
  51. package/dist/ui/assets/{code-editor-x2Bhd_zz.js → code-editor-BR3VZzGS.js} +2 -2
  52. package/dist/ui/assets/{confirm-dialog-BCZXbxwW.js → confirm-dialog-D4q_SQxy.js} +1 -1
  53. package/dist/ui/assets/copilot-nTRRDeje.js +4 -0
  54. package/dist/ui/assets/health-HdqPsZNE.js +1 -0
  55. package/dist/ui/assets/icons-DvvDkxaF.js +1 -0
  56. package/dist/ui/assets/index-Bd7UMLZU.js +46 -0
  57. package/dist/ui/assets/index-z58HV9Tm.css +1 -0
  58. package/dist/ui/assets/{settings-BTIPjkGQ.js → settings-CbO9TBgU.js} +1 -1
  59. package/dist/ui/assets/{shared-BlJYKD4s.js → shared-DoV2dJpJ.js} +1 -1
  60. package/dist/ui/assets/{switch-BR9MWG-V.js → switch-DiStdeQp.js} +1 -1
  61. package/dist/ui/icons/openrouter.svg +1 -0
  62. package/dist/ui/index.html +3 -3
  63. package/dist/utils/config-manager.d.ts +3 -1
  64. package/dist/utils/config-manager.d.ts.map +1 -1
  65. package/dist/utils/config-manager.js +41 -5
  66. package/dist/utils/config-manager.js.map +1 -1
  67. package/dist/web-server/routes/config-routes.d.ts.map +1 -1
  68. package/dist/web-server/routes/config-routes.js +0 -30
  69. package/dist/web-server/routes/config-routes.js.map +1 -1
  70. package/dist/web-server/routes/index.js +1 -2
  71. package/dist/web-server/routes/index.js.map +1 -1
  72. package/dist/web-server/routes/profile-routes.d.ts +2 -0
  73. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  74. package/dist/web-server/routes/profile-routes.js +32 -32
  75. package/dist/web-server/routes/profile-routes.js.map +1 -1
  76. package/package.json +1 -1
  77. package/scripts/postinstall.js +11 -220
  78. package/dist/config/secrets-manager.d.ts +0 -51
  79. package/dist/config/secrets-manager.d.ts.map +0 -1
  80. package/dist/config/secrets-manager.js +0 -194
  81. package/dist/config/secrets-manager.js.map +0 -1
  82. package/dist/ui/assets/api-A3IeN2JZ.js +0 -1
  83. package/dist/ui/assets/card-Dh2Mk43l.js +0 -1
  84. package/dist/ui/assets/copilot-BRJK1ZW-.js +0 -4
  85. package/dist/ui/assets/health-626qMQvS.js +0 -1
  86. package/dist/ui/assets/icons-ZmwVoUeR.js +0 -1
  87. package/dist/ui/assets/index-BJVyJi5-.js +0 -46
  88. package/dist/ui/assets/index-It66SkKf.css +0 -1
@@ -30,6 +30,7 @@ const os = __importStar(require("os"));
30
30
  const types_1 = require("../types");
31
31
  const helpers_1 = require("./helpers");
32
32
  const ui_1 = require("./ui");
33
+ const unified_config_loader_1 = require("../config/unified-config-loader");
33
34
  // TODO: Replace with proper imports after converting these files
34
35
  // const { ErrorManager } = require('./error-manager');
35
36
  // const RecoveryManager = require('./recovery-manager');
@@ -98,14 +99,49 @@ function readConfig() {
98
99
  }
99
100
  exports.readConfig = readConfig;
100
101
  /**
101
- * Get settings path for profile
102
+ * Get settings path for profile.
103
+ * In unified mode (config.yaml exists), reads from config.yaml first,
104
+ * then falls back to config.json for backward compatibility.
102
105
  */
103
106
  function getSettingsPath(profile) {
104
- const config = readConfig();
105
- // Get settings path
106
- const settingsPath = config.profiles[profile];
107
+ let settingsPath;
108
+ let availableProfiles = [];
109
+ // Check unified config first (config.yaml)
110
+ if ((0, unified_config_loader_1.isUnifiedMode)()) {
111
+ const unifiedConfig = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
112
+ // Check if profile exists in unified config
113
+ const profileConfig = unifiedConfig.profiles[profile];
114
+ if (profileConfig?.settings) {
115
+ settingsPath = profileConfig.settings;
116
+ }
117
+ // Collect available profiles from unified config
118
+ availableProfiles = Object.keys(unifiedConfig.profiles);
119
+ // If not found in unified config, try legacy config.json as fallback
120
+ if (!settingsPath) {
121
+ try {
122
+ const legacyConfig = loadConfig();
123
+ if (legacyConfig.profiles[profile]) {
124
+ settingsPath = legacyConfig.profiles[profile];
125
+ // Merge legacy profiles into available list (avoid duplicates)
126
+ for (const p of Object.keys(legacyConfig.profiles)) {
127
+ if (!availableProfiles.includes(p)) {
128
+ availableProfiles.push(p);
129
+ }
130
+ }
131
+ }
132
+ }
133
+ catch {
134
+ // Legacy config doesn't exist or is invalid - that's OK in unified mode
135
+ }
136
+ }
137
+ }
138
+ else {
139
+ // Legacy mode - read from config.json only
140
+ const config = readConfig();
141
+ settingsPath = config.profiles[profile];
142
+ availableProfiles = Object.keys(config.profiles);
143
+ }
107
144
  if (!settingsPath) {
108
- const availableProfiles = Object.keys(config.profiles);
109
145
  const profileList = availableProfiles.map((p) => ` - ${p}`);
110
146
  (0, helpers_1.error)(`Profile '${profile}' not found. Available profiles:\n${profileList.join('\n')}`);
111
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/config-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA2HxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"config-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/config-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA2FxB,eAAe,MAAM,CAAC"}
@@ -30,7 +30,6 @@ const express_1 = require("express");
30
30
  const fs = __importStar(require("fs"));
31
31
  const unified_config_loader_1 = require("../../config/unified-config-loader");
32
32
  const migration_manager_1 = require("../../config/migration-manager");
33
- const secrets_manager_1 = require("../../config/secrets-manager");
34
33
  const unified_config_types_1 = require("../../config/unified-config-types");
35
34
  const router = (0, express_1.Router)();
36
35
  /**
@@ -112,34 +111,5 @@ router.post('/rollback', async (req, res) => {
112
111
  const success = await (0, migration_manager_1.rollback)(backupPath);
113
112
  res.json({ success });
114
113
  });
115
- /**
116
- * PUT /api/secrets/:profile - Update profile secrets (write-only)
117
- */
118
- router.put('/secrets/:profile', (req, res) => {
119
- const { profile } = req.params;
120
- const secrets = req.body;
121
- if (!secrets || typeof secrets !== 'object') {
122
- res.status(400).json({ error: 'Invalid secrets format' });
123
- return;
124
- }
125
- try {
126
- (0, secrets_manager_1.setProfileSecrets)(profile, secrets);
127
- res.json({ success: true });
128
- }
129
- catch (err) {
130
- res.status(500).json({ error: err.message });
131
- }
132
- });
133
- /**
134
- * GET /api/secrets/:profile/exists - Check if secrets exist (no values returned)
135
- */
136
- router.get('/secrets/:profile/exists', (req, res) => {
137
- const { profile } = req.params;
138
- const secrets = (0, secrets_manager_1.getProfileSecrets)(profile);
139
- res.json({
140
- exists: Object.keys(secrets).length > 0,
141
- keys: Object.keys(secrets), // Only key names, not values
142
- });
143
- });
144
114
  exports.default = router;
145
115
  //# sourceMappingURL=config-routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/config-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/config-routes.ts"],"names":[],"mappings":"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"}
@@ -32,9 +32,8 @@ exports.apiRoutes.use('/profiles', profile_routes_1.default);
32
32
  exports.apiRoutes.use('/settings', settings_routes_1.default);
33
33
  exports.apiRoutes.use('/accounts', profile_routes_1.default);
34
34
  // ==================== Unified Config ====================
35
- // Config format, migration, secrets
35
+ // Config format, migration
36
36
  exports.apiRoutes.use('/config', config_routes_1.default);
37
- exports.apiRoutes.use('/secrets', config_routes_1.default);
38
37
  // ==================== Health Checks ====================
39
38
  exports.apiRoutes.use('/health', health_routes_1.default);
40
39
  // ==================== CLIProxy ====================
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web-server/routes/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,qCAAiC;AAEjC,wBAAwB;AACxB,sEAA6C;AAC7C,oEAA2C;AAC3C,oEAA2C;AAC3C,wEAA+C;AAC/C,sEAA6C;AAC7C,wEAA+C;AAC/C,0EAAiD;AACjD,kFAAwD;AACxD,oFAA0D;AAC1D,sEAA6C;AAC7C,gEAAuC;AACvC,kEAAkD;AAElD,6BAA6B;AAChB,QAAA,SAAS,GAAG,IAAA,gBAAM,GAAE,CAAC;AAElC,+DAA+D;AAC/D,uDAAuD;AACvD,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAa,CAAC,CAAC;AAC1C,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,yBAAc,CAAC,CAAC;AAC3C,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAa,CAAC,CAAC;AAE1C,2DAA2D;AAC3D,oCAAoC;AACpC,iBAAS,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AACvC,iBAAS,CAAC,GAAG,CAAC,UAAU,EAAE,uBAAY,CAAC,CAAC;AAExC,0DAA0D;AAC1D,iBAAS,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEvC,qDAAqD;AACrD,8DAA8D;AAC9D,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAa,CAAC,CAAC;AAC1C,iBAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,8BAAkB,CAAC,CAAC;AACpD,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,+BAAmB,CAAC,CAAC;AAChD,iBAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE,yBAAc,CAAC,CAAC;AAEzD,sDAAsD;AACtD,iBAAS,CAAC,GAAG,CAAC,YAAY,EAAE,0BAAe,CAAC,CAAC;AAE7C,oDAAoD;AACpD,iBAAS,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAa,CAAC,CAAC;AAEzC,qEAAqE;AACrE,iBAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,sBAAoB,CAAC,CAAC;AAExD,wEAAwE;AACxE,iBAAS,CAAC,GAAG,CAAC,GAAG,EAAE,qBAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web-server/routes/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,qCAAiC;AAEjC,wBAAwB;AACxB,sEAA6C;AAC7C,oEAA2C;AAC3C,oEAA2C;AAC3C,wEAA+C;AAC/C,sEAA6C;AAC7C,wEAA+C;AAC/C,0EAAiD;AACjD,kFAAwD;AACxD,oFAA0D;AAC1D,sEAA6C;AAC7C,gEAAuC;AACvC,kEAAkD;AAElD,6BAA6B;AAChB,QAAA,SAAS,GAAG,IAAA,gBAAM,GAAE,CAAC;AAElC,+DAA+D;AAC/D,uDAAuD;AACvD,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAa,CAAC,CAAC;AAC1C,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,yBAAc,CAAC,CAAC;AAC3C,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAa,CAAC,CAAC;AAE1C,2DAA2D;AAC3D,2BAA2B;AAC3B,iBAAS,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEvC,0DAA0D;AAC1D,iBAAS,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEvC,qDAAqD;AACrD,8DAA8D;AAC9D,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAa,CAAC,CAAC;AAC1C,iBAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,8BAAkB,CAAC,CAAC;AACpD,iBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,+BAAmB,CAAC,CAAC;AAChD,iBAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE,yBAAc,CAAC,CAAC;AAEzD,sDAAsD;AACtD,iBAAS,CAAC,GAAG,CAAC,YAAY,EAAE,0BAAe,CAAC,CAAC;AAE7C,oDAAoD;AACpD,iBAAS,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAa,CAAC,CAAC;AAEzC,qEAAqE;AACrE,iBAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,sBAAoB,CAAC,CAAC;AAExD,wEAAwE;AACxE,iBAAS,CAAC,GAAG,CAAC,GAAG,EAAE,qBAAU,CAAC,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Profile Routes - CRUD operations for user profiles and accounts
3
+ *
4
+ * Uses unified config (config.yaml) when available, falls back to legacy (config.json).
3
5
  */
4
6
  declare const router: import("express-serve-static-core").Router;
5
7
  export default router;
@@ -1 +1 @@
1
- {"version":3,"file":"profile-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/profile-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAiKxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"profile-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/profile-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAwJxB,eAAe,MAAM,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  /**
3
3
  * Profile Routes - CRUD operations for user profiles and accounts
4
+ *
5
+ * Uses unified config (config.yaml) when available, falls back to legacy (config.json).
4
6
  */
5
7
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
8
  if (k2 === undefined) k2 = k;
@@ -31,6 +33,8 @@ const fs = __importStar(require("fs"));
31
33
  const path = __importStar(require("path"));
32
34
  const config_manager_1 = require("../../utils/config-manager");
33
35
  const reserved_names_1 = require("../../config/reserved-names");
36
+ const profile_writer_1 = require("../../api/services/profile-writer");
37
+ const profile_reader_1 = require("../../api/services/profile-reader");
34
38
  const route_helpers_1 = require("./route-helpers");
35
39
  const router = (0, express_1.Router)();
36
40
  // ==================== Profile CRUD ====================
@@ -38,11 +42,12 @@ const router = (0, express_1.Router)();
38
42
  * GET /api/profiles - List all profiles
39
43
  */
40
44
  router.get('/', (_req, res) => {
41
- const config = (0, route_helpers_1.readConfigSafe)();
42
- const profiles = Object.entries(config.profiles).map(([name, settingsPath]) => ({
43
- name,
44
- settingsPath,
45
- configured: (0, route_helpers_1.isConfigured)(name, config),
45
+ const result = (0, profile_reader_1.listApiProfiles)();
46
+ // Map isConfigured -> configured for UI compatibility
47
+ const profiles = result.profiles.map((p) => ({
48
+ name: p.name,
49
+ settingsPath: p.settingsPath,
50
+ configured: p.isConfigured,
46
51
  }));
47
52
  res.json({ profiles });
48
53
  });
@@ -63,26 +68,23 @@ router.post('/', (req, res) => {
63
68
  });
64
69
  return;
65
70
  }
66
- const config = (0, route_helpers_1.readConfigSafe)();
67
- if (config.profiles[name]) {
71
+ // Check if profile already exists (uses unified config when available)
72
+ if ((0, profile_reader_1.apiProfileExists)(name)) {
68
73
  res.status(409).json({ error: 'Profile already exists' });
69
74
  return;
70
75
  }
71
- // Ensure .ccs directory exists
72
- if (!fs.existsSync((0, config_manager_1.getCcsDir)())) {
73
- fs.mkdirSync((0, config_manager_1.getCcsDir)(), { recursive: true });
74
- }
75
- // Create settings file with model mapping
76
- const settingsPath = (0, route_helpers_1.createSettingsFile)(name, baseUrl, apiKey, {
77
- model,
78
- opusModel,
79
- sonnetModel,
80
- haikuModel,
76
+ // Create profile using unified-config-aware service
77
+ const result = (0, profile_writer_1.createApiProfile)(name, baseUrl, apiKey, {
78
+ default: model || '',
79
+ opus: opusModel || model || '',
80
+ sonnet: sonnetModel || model || '',
81
+ haiku: haikuModel || model || '',
81
82
  });
82
- // Update config
83
- config.profiles[name] = settingsPath;
84
- (0, route_helpers_1.writeConfig)(config);
85
- res.status(201).json({ name, settingsPath });
83
+ if (!result.success) {
84
+ res.status(500).json({ error: result.error || 'Failed to create profile' });
85
+ return;
86
+ }
87
+ res.status(201).json({ name, settingsPath: result.settingsFile });
86
88
  });
87
89
  /**
88
90
  * PUT /api/profiles/:name - Update profile
@@ -90,8 +92,8 @@ router.post('/', (req, res) => {
90
92
  router.put('/:name', (req, res) => {
91
93
  const { name } = req.params;
92
94
  const { baseUrl, apiKey, model, opusModel, sonnetModel, haikuModel } = req.body;
93
- const config = (0, route_helpers_1.readConfigSafe)();
94
- if (!config.profiles[name]) {
95
+ // Check if profile exists (uses unified config when available)
96
+ if (!(0, profile_reader_1.apiProfileExists)(name)) {
95
97
  res.status(404).json({ error: 'Profile not found' });
96
98
  return;
97
99
  }
@@ -108,19 +110,17 @@ router.put('/:name', (req, res) => {
108
110
  */
109
111
  router.delete('/:name', (req, res) => {
110
112
  const { name } = req.params;
111
- const config = (0, route_helpers_1.readConfigSafe)();
112
- if (!config.profiles[name]) {
113
+ // Check if profile exists (uses unified config when available)
114
+ if (!(0, profile_reader_1.apiProfileExists)(name)) {
113
115
  res.status(404).json({ error: 'Profile not found' });
114
116
  return;
115
117
  }
116
- // Delete settings file
117
- const settingsPath = path.join((0, config_manager_1.getCcsDir)(), `${name}.settings.json`);
118
- if (fs.existsSync(settingsPath)) {
119
- fs.unlinkSync(settingsPath);
118
+ // Remove profile using unified-config-aware service
119
+ const result = (0, profile_writer_1.removeApiProfile)(name);
120
+ if (!result.success) {
121
+ res.status(500).json({ error: result.error || 'Failed to delete profile' });
122
+ return;
120
123
  }
121
- // Remove from config
122
- delete config.profiles[name];
123
- (0, route_helpers_1.writeConfig)(config);
124
124
  res.json({ name, deleted: true });
125
125
  });
126
126
  // ==================== Accounts ====================
@@ -1 +1 @@
1
- {"version":3,"file":"profile-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/profile-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/profile-routes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaitranntt/ccs",
3
- "version": "6.7.1-dev.6",
3
+ "version": "6.7.1-dev.7",
4
4
  "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6",
5
5
  "keywords": [
6
6
  "cli",
@@ -68,12 +68,9 @@ function validateConfiguration() {
68
68
  errors.push('~/.ccs/ directory not found');
69
69
  }
70
70
 
71
- // Check required files
71
+ // Check required files (GLM/GLMT/Kimi are now optional - created via presets)
72
72
  const requiredFiles = [
73
- { path: path.join(ccsDir, 'config.json'), name: 'config.json' },
74
- { path: path.join(ccsDir, 'glm.settings.json'), name: 'glm.settings.json' },
75
- { path: path.join(ccsDir, 'glmt.settings.json'), name: 'glmt.settings.json' },
76
- { path: path.join(ccsDir, 'kimi.settings.json'), name: 'kimi.settings.json' }
73
+ { path: path.join(ccsDir, 'config.json'), name: 'config.json' }
77
74
  ];
78
75
 
79
76
  for (const file of requiredFiles) {
@@ -156,17 +153,15 @@ function createConfigFiles() {
156
153
  // Create config.json if missing
157
154
  // NOTE: gemini/codex profiles NOT included - they are added on-demand when user
158
155
  // runs `ccs gemini` or `ccs codex` for first time (requires OAuth auth first)
156
+ // NOTE: GLM/GLMT/Kimi profiles are now created via UI/CLI presets, not auto-created
159
157
  const configPath = path.join(ccsDir, 'config.json');
160
158
  if (!fs.existsSync(configPath)) {
161
159
  // NOTE: No 'default' entry - when no profile specified, CCS passes through
162
160
  // to Claude's native auth without --settings flag. This prevents env var
163
161
  // pollution from affecting the default profile.
162
+ // Profiles are empty by default - users create via `ccs api create --preset` or UI
164
163
  const config = {
165
- profiles: {
166
- glm: '~/.ccs/glm.settings.json',
167
- glmt: '~/.ccs/glmt.settings.json',
168
- kimi: '~/.ccs/kimi.settings.json'
169
- }
164
+ profiles: {}
170
165
  };
171
166
 
172
167
  // Atomic write: temp file → rename
@@ -213,216 +208,12 @@ function createConfigFiles() {
213
208
  }
214
209
  }
215
210
 
216
- // Create glm.settings.json if missing
217
- const glmSettingsPath = path.join(ccsDir, 'glm.settings.json');
218
- if (!fs.existsSync(glmSettingsPath)) {
219
- const glmSettings = {
220
- env: {
221
- ANTHROPIC_BASE_URL: 'https://api.z.ai/api/anthropic',
222
- ANTHROPIC_AUTH_TOKEN: 'YOUR_GLM_API_KEY_HERE',
223
- ANTHROPIC_MODEL: 'glm-4.6',
224
- ANTHROPIC_DEFAULT_OPUS_MODEL: 'glm-4.6',
225
- ANTHROPIC_DEFAULT_SONNET_MODEL: 'glm-4.6',
226
- ANTHROPIC_DEFAULT_HAIKU_MODEL: 'glm-4.6'
227
- }
228
- };
229
-
230
- // Atomic write
231
- const tmpPath = `${glmSettingsPath}.tmp`;
232
- fs.writeFileSync(tmpPath, JSON.stringify(glmSettings, null, 2) + '\n', 'utf8');
233
- fs.renameSync(tmpPath, glmSettingsPath);
234
-
235
- console.log('[OK] Created GLM profile: ~/.ccs/glm.settings.json');
236
- console.log('');
237
- console.log(' [!] Configure GLM API key:');
238
- console.log(' 1. Get key from: https://api.z.ai');
239
- console.log(' 2. Edit: ~/.ccs/glm.settings.json');
240
- console.log(' 3. Replace: YOUR_GLM_API_KEY_HERE');
241
- } else {
242
- console.log('[OK] GLM profile exists: ~/.ccs/glm.settings.json (preserved)');
243
- }
244
-
245
- // Create glmt.settings.json if missing
246
- const glmtSettingsPath = path.join(ccsDir, 'glmt.settings.json');
247
- if (!fs.existsSync(glmtSettingsPath)) {
248
- const glmtSettings = {
249
- env: {
250
- ANTHROPIC_BASE_URL: 'https://api.z.ai/api/coding/paas/v4/chat/completions',
251
- ANTHROPIC_AUTH_TOKEN: 'YOUR_GLM_API_KEY_HERE',
252
- ANTHROPIC_MODEL: 'glm-4.6',
253
- ANTHROPIC_DEFAULT_OPUS_MODEL: 'glm-4.6',
254
- ANTHROPIC_DEFAULT_SONNET_MODEL: 'glm-4.6',
255
- ANTHROPIC_DEFAULT_HAIKU_MODEL: 'glm-4.6',
256
- ANTHROPIC_TEMPERATURE: '0.2',
257
- ANTHROPIC_MAX_TOKENS: '65536',
258
- MAX_THINKING_TOKENS: '32768',
259
- ENABLE_STREAMING: 'true',
260
- ANTHROPIC_SAFE_MODE: 'false',
261
- API_TIMEOUT_MS: '3000000'
262
- },
263
- alwaysThinkingEnabled: true
264
- };
265
-
266
- // Atomic write
267
- const tmpPath = `${glmtSettingsPath}.tmp`;
268
- fs.writeFileSync(tmpPath, JSON.stringify(glmtSettings, null, 2) + '\n', 'utf8');
269
- fs.renameSync(tmpPath, glmtSettingsPath);
270
-
271
- console.log('[OK] Created GLMT profile: ~/.ccs/glmt.settings.json');
272
- console.log('');
273
- console.log(' [!] Configure GLMT API key:');
274
- console.log(' 1. Get key from: https://api.z.ai');
275
- console.log(' 2. Edit: ~/.ccs/glmt.settings.json');
276
- console.log(' 3. Replace: YOUR_GLM_API_KEY_HERE');
277
- console.log(' Note: GLMT enables GLM thinking mode (reasoning)');
278
- console.log(' Defaults: Temperature 0.2, thinking enabled, 50min timeout');
279
- } else {
280
- console.log('[OK] GLMT profile exists: ~/.ccs/glmt.settings.json (preserved)');
281
- }
282
-
283
- // Migrate existing GLMT configs to include new defaults (v3.3.0)
284
- if (fs.existsSync(glmtSettingsPath)) {
285
- try {
286
- const existing = JSON.parse(fs.readFileSync(glmtSettingsPath, 'utf8'));
287
- let updated = false;
288
-
289
- // Ensure env object exists
290
- if (!existing.env) {
291
- existing.env = {};
292
- updated = true;
293
- }
294
-
295
- // Add missing env vars (preserve existing values)
296
- const envDefaults = {
297
- ANTHROPIC_TEMPERATURE: '0.2',
298
- ANTHROPIC_MAX_TOKENS: '65536',
299
- MAX_THINKING_TOKENS: '32768',
300
- ENABLE_STREAMING: 'true',
301
- ANTHROPIC_SAFE_MODE: 'false',
302
- API_TIMEOUT_MS: '3000000'
303
- };
304
-
305
- for (const [key, value] of Object.entries(envDefaults)) {
306
- if (existing.env[key] === undefined) {
307
- existing.env[key] = value;
308
- updated = true;
309
- }
310
- }
311
-
312
- // Add alwaysThinkingEnabled if missing
313
- if (existing.alwaysThinkingEnabled === undefined) {
314
- existing.alwaysThinkingEnabled = true;
315
- updated = true;
316
- }
317
-
318
- // Write back if updated
319
- if (updated) {
320
- const tmpPath = `${glmtSettingsPath}.tmp`;
321
- fs.writeFileSync(tmpPath, JSON.stringify(existing, null, 2) + '\n', 'utf8');
322
- fs.renameSync(tmpPath, glmtSettingsPath);
323
- console.log('[OK] Migrated GLMT config with new defaults (v3.3.0)');
324
- console.log(' Added: temperature, max_tokens, thinking settings, alwaysThinkingEnabled');
325
- }
326
- } catch (err) {
327
- console.warn('[!] GLMT config migration failed:', err.message);
328
- console.warn(' Existing config preserved, may be missing new defaults');
329
- console.warn(' You can manually add fields or delete file to regenerate');
330
- }
331
- }
332
-
333
- // Create kimi.settings.json if missing
334
- const kimiSettingsPath = path.join(ccsDir, 'kimi.settings.json');
335
- if (!fs.existsSync(kimiSettingsPath)) {
336
- const kimiSettings = {
337
- env: {
338
- ANTHROPIC_BASE_URL: 'https://api.kimi.com/coding/',
339
- ANTHROPIC_AUTH_TOKEN: 'YOUR_KIMI_API_KEY_HERE',
340
- ANTHROPIC_MODEL: 'kimi-k2-thinking-turbo',
341
- ANTHROPIC_DEFAULT_OPUS_MODEL: 'kimi-k2-thinking-turbo',
342
- ANTHROPIC_DEFAULT_SONNET_MODEL: 'kimi-k2-thinking-turbo',
343
- ANTHROPIC_DEFAULT_HAIKU_MODEL: 'kimi-k2-thinking-turbo'
344
- },
345
- alwaysThinkingEnabled: true
346
- };
347
-
348
- // Atomic write
349
- const tmpPath = `${kimiSettingsPath}.tmp`;
350
- fs.writeFileSync(tmpPath, JSON.stringify(kimiSettings, null, 2) + '\n', 'utf8');
351
- fs.renameSync(tmpPath, kimiSettingsPath);
352
-
353
- console.log('[OK] Created Kimi profile: ~/.ccs/kimi.settings.json');
354
- console.log('');
355
- console.log(' [!] Configure Kimi API key:');
356
- console.log(' 1. Get key from: https://www.kimi.com/coding (membership page)');
357
- console.log(' 2. Edit: ~/.ccs/kimi.settings.json');
358
- console.log(' 3. Replace: YOUR_KIMI_API_KEY_HERE');
359
- } else {
360
- console.log('[OK] Kimi profile exists: ~/.ccs/kimi.settings.json (preserved)');
361
- }
362
-
363
- // NOTE: gemini.settings.json and codex.settings.json are NOT created during install
364
- // They are created on-demand when user runs `ccs gemini` or `ccs codex` for the first time
365
- // This prevents confusion - users need to run `--auth` first anyway
366
-
367
- // Migrate existing Kimi configs to use kimi-k2-thinking-turbo model (v5.5.0)
368
- // Kimi API now supports model specification with thinking models
369
- if (fs.existsSync(kimiSettingsPath)) {
370
- try {
371
- const existing = JSON.parse(fs.readFileSync(kimiSettingsPath, 'utf8'));
372
- let updated = false;
373
- const defaultModel = 'kimi-k2-thinking-turbo';
374
-
375
- // Ensure env object exists
376
- if (!existing.env) {
377
- existing.env = {};
378
- updated = true;
379
- }
380
-
381
- // Add/update model fields to use kimi-k2-thinking-turbo
382
- const modelFields = {
383
- ANTHROPIC_MODEL: defaultModel,
384
- ANTHROPIC_DEFAULT_OPUS_MODEL: defaultModel,
385
- ANTHROPIC_DEFAULT_SONNET_MODEL: defaultModel,
386
- ANTHROPIC_DEFAULT_HAIKU_MODEL: defaultModel
387
- };
388
-
389
- for (const [field, value] of Object.entries(modelFields)) {
390
- if (existing.env[field] !== value) {
391
- existing.env[field] = value;
392
- updated = true;
393
- }
394
- }
395
-
396
- // Remove deprecated ANTHROPIC_SMALL_FAST_MODEL if present
397
- if (existing.env.ANTHROPIC_SMALL_FAST_MODEL !== undefined) {
398
- delete existing.env.ANTHROPIC_SMALL_FAST_MODEL;
399
- updated = true;
400
- }
401
-
402
- // Ensure required fields exist
403
- if (!existing.env.ANTHROPIC_BASE_URL) {
404
- existing.env.ANTHROPIC_BASE_URL = 'https://api.kimi.com/coding/';
405
- updated = true;
406
- }
407
-
408
- // Add alwaysThinkingEnabled if missing
409
- if (existing.alwaysThinkingEnabled === undefined) {
410
- existing.alwaysThinkingEnabled = true;
411
- updated = true;
412
- }
413
-
414
- // Write back if updated
415
- if (updated) {
416
- const tmpPath = `${kimiSettingsPath}.tmp`;
417
- fs.writeFileSync(tmpPath, JSON.stringify(existing, null, 2) + '\n', 'utf8');
418
- fs.renameSync(tmpPath, kimiSettingsPath);
419
- console.log('[OK] Migrated Kimi config (v5.5.0): updated to kimi-k2-thinking-turbo model');
420
- }
421
- } catch (err) {
422
- console.warn('[!] Kimi config migration failed:', err.message);
423
- console.warn(' Existing config preserved');
424
- }
425
- }
211
+ // NOTE: GLM, GLMT, and Kimi profiles are NO LONGER auto-created during install
212
+ // Users can create these via:
213
+ // - UI: Profile Create Dialog → Provider Presets
214
+ // - CLI: ccs api create --preset glm|glmt|kimi
215
+ // This gives users control over which providers they want to use
216
+ // Existing profiles are preserved for backward compatibility
426
217
 
427
218
  // Copy shell completion files to ~/.ccs/completions/
428
219
  const completionsDir = path.join(ccsDir, 'completions');
@@ -1,51 +0,0 @@
1
- /**
2
- * Secrets Manager
3
- *
4
- * Handles loading and saving secrets (API keys, tokens) in a separate file
5
- * with restricted permissions (chmod 600).
6
- */
7
- import { SecretsConfig } from './unified-config-types';
8
- export { isSensitiveKey as isSecretKey } from '../utils/sensitive-keys';
9
- /**
10
- * Get path to secrets.yaml
11
- */
12
- export declare function getSecretsPath(): string;
13
- /**
14
- * Check if secrets.yaml exists
15
- */
16
- export declare function hasSecrets(): boolean;
17
- /**
18
- * Load secrets from YAML file.
19
- * Returns empty secrets config if file doesn't exist.
20
- */
21
- export declare function loadSecrets(): SecretsConfig;
22
- /**
23
- * Save secrets to YAML file with restricted permissions.
24
- * Uses atomic write (temp file + rename) to prevent corruption.
25
- */
26
- export declare function saveSecrets(secrets: SecretsConfig): void;
27
- /**
28
- * Get a secret value for a specific profile.
29
- */
30
- export declare function getProfileSecret(profileName: string, key: string): string | undefined;
31
- /**
32
- * Set a secret value for a specific profile.
33
- */
34
- export declare function setProfileSecret(profileName: string, key: string, value: string): void;
35
- /**
36
- * Delete a secret value for a specific profile.
37
- */
38
- export declare function deleteProfileSecret(profileName: string, key: string): boolean;
39
- /**
40
- * Get all secrets for a profile.
41
- */
42
- export declare function getProfileSecrets(profileName: string): Record<string, string>;
43
- /**
44
- * Set all secrets for a profile (replaces existing).
45
- */
46
- export declare function setProfileSecrets(profileName: string, profileSecrets: Record<string, string>): void;
47
- /**
48
- * Delete all secrets for a profile.
49
- */
50
- export declare function deleteAllProfileSecrets(profileName: string): boolean;
51
- //# sourceMappingURL=secrets-manager.d.ts.map