@kaitranntt/ccs 7.7.0-dev.1 → 7.7.0-dev.3

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/auth/profile-registry.d.ts +11 -0
  2. package/dist/auth/profile-registry.d.ts.map +1 -1
  3. package/dist/auth/profile-registry.js +30 -0
  4. package/dist/auth/profile-registry.js.map +1 -1
  5. package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
  6. package/dist/cliproxy/cliproxy-executor.js +5 -3
  7. package/dist/cliproxy/cliproxy-executor.js.map +1 -1
  8. package/dist/cliproxy/config-generator.d.ts +13 -4
  9. package/dist/cliproxy/config-generator.d.ts.map +1 -1
  10. package/dist/cliproxy/config-generator.js +29 -11
  11. package/dist/cliproxy/config-generator.js.map +1 -1
  12. package/dist/cliproxy/services/variant-config-adapter.d.ts +12 -2
  13. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
  14. package/dist/cliproxy/services/variant-config-adapter.js +49 -6
  15. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
  16. package/dist/cliproxy/services/variant-service.d.ts +10 -0
  17. package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
  18. package/dist/cliproxy/services/variant-service.js +62 -6
  19. package/dist/cliproxy/services/variant-service.js.map +1 -1
  20. package/dist/cliproxy/services/variant-settings.d.ts +6 -2
  21. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  22. package/dist/cliproxy/services/variant-settings.js +36 -8
  23. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  24. package/dist/cliproxy/session-tracker.d.ts +17 -7
  25. package/dist/cliproxy/session-tracker.d.ts.map +1 -1
  26. package/dist/cliproxy/session-tracker.js +86 -40
  27. package/dist/cliproxy/session-tracker.js.map +1 -1
  28. package/dist/commands/cliproxy-command.d.ts.map +1 -1
  29. package/dist/commands/cliproxy-command.js +8 -3
  30. package/dist/commands/cliproxy-command.js.map +1 -1
  31. package/dist/config/unified-config-types.d.ts +2 -0
  32. package/dist/config/unified-config-types.d.ts.map +1 -1
  33. package/dist/config/unified-config-types.js.map +1 -1
  34. package/dist/types/config.d.ts +2 -0
  35. package/dist/types/config.d.ts.map +1 -1
  36. package/dist/types/config.js.map +1 -1
  37. package/dist/ui/assets/{accounts-BMhHiKKx.js → accounts-DJpEoAmS.js} +1 -1
  38. package/dist/ui/assets/{api-OCBlXCQa.js → api-BqefDRBx.js} +1 -1
  39. package/dist/ui/assets/{card-CLsl42We.js → card-B4h-z7Tz.js} +1 -1
  40. package/dist/ui/assets/cliproxy-ISc4EAN-.js +3 -0
  41. package/dist/ui/assets/{cliproxy-control-panel-CM6pDYK8.js → cliproxy-control-panel-C5pNVc75.js} +1 -1
  42. package/dist/ui/assets/{confirm-dialog-BtYM09Tb.js → confirm-dialog-YI-EkDVf.js} +1 -1
  43. package/dist/ui/assets/{copilot-7MWkGdns.js → copilot-ChVxPe4-.js} +2 -2
  44. package/dist/ui/assets/{globalenv-section-Co6qbs3V.js → globalenv-section-BlCex11D.js} +1 -1
  45. package/dist/ui/assets/{health-Bh1b5210.js → health-9gTuEqu9.js} +1 -1
  46. package/dist/ui/assets/icons-CSHuYZO5.js +1 -0
  47. package/dist/ui/assets/{index-B_TRzkFq.js → index-BAw2xL0I.js} +1 -1
  48. package/dist/ui/assets/{index-CXVq9xuH.js → index-CE4n4Tvo.js} +1 -1
  49. package/dist/ui/assets/{index-C8KcL2cj.js → index-DyX8Owpp.js} +1 -1
  50. package/dist/ui/assets/{index-CApIIy9d.js → index-g4X9FYWw.js} +3 -3
  51. package/dist/ui/assets/{shared-Ckt5nAjF.js → shared-BikmFWxY.js} +1 -1
  52. package/dist/ui/assets/{switch-BCFPnHGe.js → switch-C1g2Xm3F.js} +1 -1
  53. package/dist/ui/index.html +2 -2
  54. package/dist/web-server/file-watcher.d.ts.map +1 -1
  55. package/dist/web-server/file-watcher.js +3 -2
  56. package/dist/web-server/file-watcher.js.map +1 -1
  57. package/dist/web-server/health/config-checks.d.ts +3 -2
  58. package/dist/web-server/health/config-checks.d.ts.map +1 -1
  59. package/dist/web-server/health/config-checks.js +39 -2
  60. package/dist/web-server/health/config-checks.js.map +1 -1
  61. package/dist/web-server/health/profile-checks.d.ts +2 -1
  62. package/dist/web-server/health/profile-checks.d.ts.map +1 -1
  63. package/dist/web-server/health/profile-checks.js +33 -1
  64. package/dist/web-server/health/profile-checks.js.map +1 -1
  65. package/dist/web-server/health-service.d.ts.map +1 -1
  66. package/dist/web-server/health-service.js +14 -0
  67. package/dist/web-server/health-service.js.map +1 -1
  68. package/dist/web-server/overview-routes.d.ts.map +1 -1
  69. package/dist/web-server/overview-routes.js +10 -29
  70. package/dist/web-server/overview-routes.js.map +1 -1
  71. package/dist/web-server/routes/account-routes.d.ts +3 -2
  72. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  73. package/dist/web-server/routes/account-routes.js +43 -46
  74. package/dist/web-server/routes/account-routes.js.map +1 -1
  75. package/dist/web-server/routes/route-helpers.d.ts +0 -6
  76. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  77. package/dist/web-server/routes/route-helpers.js +1 -24
  78. package/dist/web-server/routes/route-helpers.js.map +1 -1
  79. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  80. package/dist/web-server/routes/settings-routes.js +32 -13
  81. package/dist/web-server/routes/settings-routes.js.map +1 -1
  82. package/dist/web-server/routes/variant-routes.d.ts +2 -0
  83. package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
  84. package/dist/web-server/routes/variant-routes.js +44 -98
  85. package/dist/web-server/routes/variant-routes.js.map +1 -1
  86. package/package.json +1 -1
  87. package/dist/ui/assets/cliproxy-C09j9zae.js +0 -3
  88. package/dist/ui/assets/icons-B9mnOvwW.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"profile-checks.d.ts","sourceRoot":"","sources":["../../../src/web-server/health/profile-checks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA2CzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA+B1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA0C3D"}
1
+ {"version":3,"file":"profile-checks.d.ts","sourceRoot":"","sources":["../../../src/web-server/health/profile-checks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA6EzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA+B1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA0C3D"}
@@ -3,6 +3,7 @@
3
3
  * Profile Health Checks
4
4
  *
5
5
  * Check profiles, instances, and delegation.
6
+ * Supports both legacy (config.json) and unified (config.yaml) modes.
6
7
  */
7
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
9
  if (k2 === undefined) k2 = k;
@@ -31,10 +32,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
32
  exports.checkDelegation = exports.checkInstances = exports.checkProfiles = void 0;
32
33
  const fs = __importStar(require("fs"));
33
34
  const path = __importStar(require("path"));
35
+ const unified_config_loader_1 = require("../../config/unified-config-loader");
34
36
  /**
35
- * Check profiles configuration
37
+ * Check profiles configuration (API profiles from config.json or config.yaml)
36
38
  */
37
39
  function checkProfiles(ccsDir) {
40
+ // Check unified config first
41
+ if ((0, unified_config_loader_1.isUnifiedMode)()) {
42
+ const config = (0, unified_config_loader_1.loadUnifiedConfig)();
43
+ if (!config) {
44
+ return {
45
+ id: 'profiles',
46
+ name: 'Profiles',
47
+ status: 'info',
48
+ message: 'config.yaml not loaded',
49
+ };
50
+ }
51
+ const profileCount = Object.keys(config.profiles || {}).length;
52
+ const profileNames = Object.keys(config.profiles || {}).join(', ');
53
+ if (profileCount === 0) {
54
+ return {
55
+ id: 'profiles',
56
+ name: 'Profiles',
57
+ status: 'ok',
58
+ message: 'No API profiles (unified mode)',
59
+ };
60
+ }
61
+ return {
62
+ id: 'profiles',
63
+ name: 'Profiles',
64
+ status: 'ok',
65
+ message: `${profileCount} configured (unified)`,
66
+ details: profileNames.length > 40 ? profileNames.substring(0, 37) + '...' : profileNames,
67
+ };
68
+ }
69
+ // Legacy mode: check config.json
38
70
  const configPath = path.join(ccsDir, 'config.json');
39
71
  if (!fs.existsSync(configPath)) {
40
72
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"profile-checks.js","sourceRoot":"","sources":["../../../src/web-server/health/profile-checks.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAG7B;;GAEG;AACH,SAAgB,aAAa,CAAC,MAAc;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,uBAAuB;SACjC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO;gBACL,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,yBAAyB;gBAClC,GAAG,EAAE,6CAA6C;aACnD,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7D,OAAO;YACL,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,GAAG,YAAY,aAAa;YACrC,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY;SACzF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,OAAO;YACf,OAAO,EAAG,CAAW,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;AACH,CAAC;AA3CD,sCA2CC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAc;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,qBAAqB;SAC/B,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7D,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,qBAAqB;SAC/B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,mBAAmB,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;KACnF,CAAC;AACJ,CAAC;AA/BD,wCA+BC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc;IAC5C,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/E,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAEhG,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1C,OAAO;YACL,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,6CAA6C;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,mBAAmB;YAC5B,GAAG,EAAE,wCAAwC;SAC9C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,iBAAiB;QACjD,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;KAClC,CAAC;AACJ,CAAC;AA1CD,0CA0CC"}
1
+ {"version":3,"file":"profile-checks.js","sourceRoot":"","sources":["../../../src/web-server/health/profile-checks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"health-service.d.ts","sourceRoot":"","sources":["../../src/web-server/health-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EAmBlB,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAEvD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAsF7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAyBrF"}
1
+ {"version":3,"file":"health-service.d.ts","sourceRoot":"","sources":["../../src/web-server/health-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EAmBlB,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAEvD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAsF7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0CrF"}
@@ -129,12 +129,26 @@ function fixHealthIssue(checkId) {
129
129
  fs.mkdirSync(ccsDir, { recursive: true });
130
130
  return { success: true, message: 'Created ~/.ccs directory' };
131
131
  case 'config-file': {
132
+ // Use appropriate config based on unified mode
133
+ const { isUnifiedMode } = require('../config/unified-config-loader');
134
+ if (isUnifiedMode()) {
135
+ const { loadOrCreateUnifiedConfig, saveUnifiedConfig, } = require('../config/unified-config-loader');
136
+ const config = loadOrCreateUnifiedConfig();
137
+ saveUnifiedConfig(config);
138
+ return { success: true, message: 'Created/updated config.yaml' };
139
+ }
132
140
  const configPath = (0, config_manager_1.getConfigPath)();
133
141
  fs.mkdirSync(path.dirname(configPath), { recursive: true });
134
142
  fs.writeFileSync(configPath, JSON.stringify({ profiles: {} }, null, 2) + '\n');
135
143
  return { success: true, message: 'Created config.json' };
136
144
  }
137
145
  case 'profiles-file': {
146
+ // Use appropriate storage based on unified mode
147
+ const { isUnifiedMode: isUnified } = require('../config/unified-config-loader');
148
+ if (isUnified()) {
149
+ // In unified mode, accounts are stored in config.yaml
150
+ return { success: true, message: 'Accounts stored in config.yaml (unified mode)' };
151
+ }
138
152
  const profilesPath = path.join(ccsDir, 'profiles.json');
139
153
  fs.mkdirSync(ccsDir, { recursive: true });
140
154
  fs.writeFileSync(profilesPath, JSON.stringify({ profiles: {} }, null, 2) + '\n');
@@ -1 +1 @@
1
- {"version":3,"file":"health-service.js","sourceRoot":"","sources":["../../src/web-server/health-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health-service.js","sourceRoot":"","sources":["../../src/web-server/health-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"overview-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/overview-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,eAAO,MAAM,cAAc,4CAAW,CAAC"}
1
+ {"version":3,"file":"overview-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/overview-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,eAAO,MAAM,cAAc,4CAAW,CAAC"}
@@ -4,38 +4,17 @@
4
4
  *
5
5
  * Dashboard overview API for counts and health summary.
6
6
  */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || function (mod) {
24
- if (mod && mod.__esModule) return mod;
25
- var result = {};
26
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
27
- __setModuleDefault(result, mod);
28
- return result;
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
9
  };
30
10
  Object.defineProperty(exports, "__esModule", { value: true });
31
11
  exports.overviewRoutes = void 0;
32
12
  const express_1 = require("express");
33
- const fs = __importStar(require("fs"));
34
- const path = __importStar(require("path"));
35
13
  const config_manager_1 = require("../utils/config-manager");
36
14
  const health_service_1 = require("./health-service");
37
15
  const auth_handler_1 = require("../cliproxy/auth-handler");
38
16
  const version_1 = require("../utils/version");
17
+ const profile_registry_1 = __importDefault(require("../auth/profile-registry"));
39
18
  exports.overviewRoutes = (0, express_1.Router)();
40
19
  /**
41
20
  * GET /api/overview
@@ -81,11 +60,13 @@ exports.overviewRoutes.get('/', async (_req, res) => {
81
60
  });
82
61
  function getAccountCount() {
83
62
  try {
84
- const profilesPath = path.join((0, config_manager_1.getCcsDir)(), 'profiles.json');
85
- if (!fs.existsSync(profilesPath))
86
- return 0;
87
- const data = JSON.parse(fs.readFileSync(profilesPath, 'utf8'));
88
- return Object.keys(data.profiles || {}).length;
63
+ const registry = new profile_registry_1.default();
64
+ // Merge legacy (profiles.json) and unified (config.yaml) accounts
65
+ const legacyProfiles = registry.getAllProfiles();
66
+ const unifiedAccounts = registry.getAllAccountsUnified();
67
+ // Count unique accounts (unified takes precedence for duplicates)
68
+ const allNames = new Set([...Object.keys(legacyProfiles), ...Object.keys(unifiedAccounts)]);
69
+ return allNames.size;
89
70
  }
90
71
  catch {
91
72
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"overview-routes.js","sourceRoot":"","sources":["../../src/web-server/overview-routes.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAAoD;AACpD,uCAAyB;AACzB,2CAA6B;AAC7B,4DAAgE;AAChE,qDAAmD;AACnD,2DAAgF;AAChF,8CAA8C;AAEjC,QAAA,cAAc,GAAG,IAAA,gBAAM,GAAE,CAAC;AAEvC;;GAEG;AACH,sBAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,2BAAU,GAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAEvE,2EAA2E;QAC3E,IAAA,iCAAkB,GAAE,CAAC;QACrB,MAAM,YAAY,GAAG,IAAA,+BAAgB,GAAE,CAAC;QACxC,MAAM,0BAA0B,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QAEtF,6DAA6D;QAC7D,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,0BAA0B,CAAC;QAE7E,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAe,GAAE,CAAC;QAEvC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAA,oBAAU,GAAE;YACrB,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,kBAAkB;YAC5B,gBAAgB,EAAE,oBAAoB;YACtC,iBAAiB,EAAE,0BAA0B;YAC7C,QAAQ,EAAE,eAAe,EAAE;YAC3B,MAAM,EAAE;gBACN,MAAM,EACJ,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACtF,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;gBAC7B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAA,oBAAU,GAAE;YACrB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SACjD,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,0BAAS,GAAE,EAAE,eAAe,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"overview-routes.js","sourceRoot":"","sources":["../../src/web-server/overview-routes.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,qCAAoD;AACpD,4DAAqD;AACrD,qDAAmD;AACnD,2DAAgF;AAChF,8CAA8C;AAC9C,gFAAuD;AAE1C,QAAA,cAAc,GAAG,IAAA,gBAAM,GAAE,CAAC;AAEvC;;GAEG;AACH,sBAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,2BAAU,GAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAEvE,2EAA2E;QAC3E,IAAA,iCAAkB,GAAE,CAAC;QACrB,MAAM,YAAY,GAAG,IAAA,+BAAgB,GAAE,CAAC;QACxC,MAAM,0BAA0B,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QAEtF,6DAA6D;QAC7D,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,0BAA0B,CAAC;QAE7E,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAe,GAAE,CAAC;QAEvC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAA,oBAAU,GAAE;YACrB,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,kBAAkB;YAC5B,gBAAgB,EAAE,oBAAoB;YACtC,iBAAiB,EAAE,0BAA0B;YAC7C,QAAQ,EAAE,eAAe,EAAE;YAC3B,MAAM,EAAE;gBACN,MAAM,EACJ,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACtF,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;gBAC7B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAA,oBAAU,GAAE;YACrB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SACjD,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,0BAAe,EAAE,CAAC;QAEvC,kEAAkE;QAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACjD,MAAM,eAAe,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAEzD,kEAAkE;QAClE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE5F,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Account Routes - CRUD operations for Claude accounts (profiles.json)
2
+ * Account Routes - CRUD operations for Claude accounts
3
3
  *
4
- * Separated from profile-routes.ts to avoid dual-mounting conflicts.
4
+ * Uses ProfileRegistry to read from both legacy (profiles.json)
5
+ * and unified config (config.yaml) for consistent data with CLI.
5
6
  */
6
7
  declare const router: import("express-serve-static-core").Router;
7
8
  export default router;
@@ -1 +1 @@
1
- {"version":3,"file":"account-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/account-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAwDxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"account-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/account-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAyExB,eAAe,MAAM,CAAC"}
@@ -1,57 +1,53 @@
1
1
  "use strict";
2
2
  /**
3
- * Account Routes - CRUD operations for Claude accounts (profiles.json)
3
+ * Account Routes - CRUD operations for Claude accounts
4
4
  *
5
- * Separated from profile-routes.ts to avoid dual-mounting conflicts.
5
+ * Uses ProfileRegistry to read from both legacy (profiles.json)
6
+ * and unified config (config.yaml) for consistent data with CLI.
6
7
  */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || function (mod) {
24
- if (mod && mod.__esModule) return mod;
25
- var result = {};
26
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
27
- __setModuleDefault(result, mod);
28
- return result;
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
10
  };
30
11
  Object.defineProperty(exports, "__esModule", { value: true });
31
12
  const express_1 = require("express");
32
- const fs = __importStar(require("fs"));
33
- const path = __importStar(require("path"));
34
- const config_manager_1 = require("../../utils/config-manager");
13
+ const profile_registry_1 = __importDefault(require("../../auth/profile-registry"));
14
+ const unified_config_loader_1 = require("../../config/unified-config-loader");
35
15
  const router = (0, express_1.Router)();
16
+ const registry = new profile_registry_1.default();
36
17
  /**
37
- * GET /api/accounts - List accounts from profiles.json
18
+ * GET /api/accounts - List accounts from both profiles.json and config.yaml
38
19
  */
39
20
  router.get('/', (_req, res) => {
40
21
  try {
41
- const profilesPath = path.join((0, config_manager_1.getCcsDir)(), 'profiles.json');
42
- if (!fs.existsSync(profilesPath)) {
43
- res.json({ accounts: [], default: null });
44
- return;
22
+ // Get profiles from both legacy and unified config (same logic as CLI)
23
+ const legacyProfiles = registry.getAllProfiles();
24
+ const unifiedAccounts = registry.getAllAccountsUnified();
25
+ // Merge profiles: unified config takes precedence
26
+ const merged = {};
27
+ // Add legacy profiles first
28
+ for (const [name, meta] of Object.entries(legacyProfiles)) {
29
+ merged[name] = {
30
+ type: meta.type || 'account',
31
+ created: meta.created,
32
+ last_used: meta.last_used || null,
33
+ };
45
34
  }
46
- const data = JSON.parse(fs.readFileSync(profilesPath, 'utf8'));
47
- const accounts = Object.entries(data.profiles || {}).map(([name, meta]) => {
48
- const metadata = meta;
49
- return {
50
- name,
51
- ...metadata,
35
+ // Override with unified config accounts (takes precedence)
36
+ for (const [name, account] of Object.entries(unifiedAccounts)) {
37
+ merged[name] = {
38
+ type: 'account',
39
+ created: account.created,
40
+ last_used: account.last_used,
52
41
  };
53
- });
54
- res.json({ accounts, default: data.default || null });
42
+ }
43
+ // Convert to array format
44
+ const accounts = Object.entries(merged).map(([name, meta]) => ({
45
+ name,
46
+ ...meta,
47
+ }));
48
+ // Get default from unified config first, fallback to legacy
49
+ const defaultProfile = registry.getDefaultUnified() ?? registry.getDefaultProfile() ?? null;
50
+ res.json({ accounts, default: defaultProfile });
55
51
  }
56
52
  catch (error) {
57
53
  res.status(500).json({ error: error.message });
@@ -67,12 +63,13 @@ router.post('/default', (req, res) => {
67
63
  res.status(400).json({ error: 'Missing required field: name' });
68
64
  return;
69
65
  }
70
- const profilesPath = path.join((0, config_manager_1.getCcsDir)(), 'profiles.json');
71
- const data = fs.existsSync(profilesPath)
72
- ? JSON.parse(fs.readFileSync(profilesPath, 'utf8'))
73
- : { profiles: {} };
74
- data.default = name;
75
- fs.writeFileSync(profilesPath, JSON.stringify(data, null, 2) + '\n');
66
+ // Use unified config if in unified mode, otherwise use legacy
67
+ if ((0, unified_config_loader_1.isUnifiedMode)()) {
68
+ registry.setDefaultUnified(name);
69
+ }
70
+ else {
71
+ registry.setDefaultProfile(name);
72
+ }
76
73
  res.json({ default: name });
77
74
  }
78
75
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"account-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/account-routes.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAAoD;AACpD,uCAAyB;AACzB,2CAA6B;AAC7B,+DAAuD;AAEvD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,0BAAS,GAAE,EAAE,eAAe,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACxE,MAAM,QAAQ,GAAG,IAA+B,CAAC;YACjD,OAAO;gBACL,IAAI;gBACJ,GAAG,QAAQ;aACZ,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,0BAAS,GAAE,EAAE,eAAe,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAErB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAErE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"account-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/account-routes.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@
2
2
  * Route Helpers - Shared utility functions for route handlers
3
3
  */
4
4
  import type { Config } from '../../types/config';
5
- import type { CLIProxyProvider } from '../../cliproxy/types';
6
5
  /** Model mapping for API profiles */
7
6
  export interface ModelMapping {
8
7
  model?: string;
@@ -37,11 +36,6 @@ export declare function updateSettingsFile(name: string, updates: {
37
36
  sonnetModel?: string;
38
37
  haikuModel?: string;
39
38
  }): void;
40
- /**
41
- * Create cliproxy variant settings
42
- * Includes base URL and auth token for proper Claude CLI integration
43
- */
44
- export declare function createCliproxySettings(name: string, provider: CLIProxyProvider, model?: string): string;
45
39
  /**
46
40
  * Security: Validate file path is within allowed directories
47
41
  * - ~/.ccs/ directory: read/write allowed
@@ -1 +1 @@
1
- {"version":3,"file":"route-helpers.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/route-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAazE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAAiB,GACxB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,IAAI,CAyDN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAqBR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAsBA"}
1
+ {"version":3,"file":"route-helpers.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/route-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,oBAAoB,CAAC;AAE3D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAazE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAAiB,GACxB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,IAAI,CAyDN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAsBA"}
@@ -26,12 +26,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  return result;
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.validateFilePath = exports.createCliproxySettings = exports.updateSettingsFile = exports.createSettingsFile = exports.isConfigured = exports.writeConfig = exports.readConfigSafe = void 0;
29
+ exports.validateFilePath = exports.updateSettingsFile = exports.createSettingsFile = exports.isConfigured = exports.writeConfig = exports.readConfigSafe = void 0;
30
30
  const fs = __importStar(require("fs"));
31
31
  const path = __importStar(require("path"));
32
32
  const config_manager_1 = require("../../utils/config-manager");
33
33
  const helpers_1 = require("../../utils/helpers");
34
- const config_generator_1 = require("../../cliproxy/config-generator");
35
34
  /**
36
35
  * Read config safely with fallback
37
36
  */
@@ -150,28 +149,6 @@ function updateSettingsFile(name, updates) {
150
149
  fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
151
150
  }
152
151
  exports.updateSettingsFile = updateSettingsFile;
153
- /**
154
- * Create cliproxy variant settings
155
- * Includes base URL and auth token for proper Claude CLI integration
156
- */
157
- function createCliproxySettings(name, provider, model) {
158
- const settingsPath = path.join((0, config_manager_1.getCcsDir)(), `${name}.settings.json`);
159
- // Get base env vars from provider config (includes BASE_URL, AUTH_TOKEN)
160
- const baseEnv = (0, config_generator_1.getClaudeEnvVars)(provider);
161
- const settings = {
162
- env: {
163
- ANTHROPIC_BASE_URL: baseEnv.ANTHROPIC_BASE_URL || '',
164
- ANTHROPIC_AUTH_TOKEN: baseEnv.ANTHROPIC_AUTH_TOKEN || '',
165
- ANTHROPIC_MODEL: model || baseEnv.ANTHROPIC_MODEL || '',
166
- ANTHROPIC_DEFAULT_OPUS_MODEL: model || baseEnv.ANTHROPIC_DEFAULT_OPUS_MODEL || '',
167
- ANTHROPIC_DEFAULT_SONNET_MODEL: model || baseEnv.ANTHROPIC_DEFAULT_SONNET_MODEL || '',
168
- ANTHROPIC_DEFAULT_HAIKU_MODEL: baseEnv.ANTHROPIC_DEFAULT_HAIKU_MODEL || model || '',
169
- },
170
- };
171
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
172
- return `~/.ccs/${name}.settings.json`;
173
- }
174
- exports.createCliproxySettings = createCliproxySettings;
175
152
  /**
176
153
  * Security: Validate file path is within allowed directories
177
154
  * - ~/.ccs/ directory: read/write allowed
@@ -1 +1 @@
1
- {"version":3,"file":"route-helpers.js","sourceRoot":"","sources":["../../../src/web-server/routes/route-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-helpers.js","sourceRoot":"","sources":["../../../src/web-server/routes/route-helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/settings-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAyOxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"settings-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/settings-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAgQxB,eAAe,MAAM,CAAC"}
@@ -31,7 +31,24 @@ const fs = __importStar(require("fs"));
31
31
  const path = __importStar(require("path"));
32
32
  const config_manager_1 = require("../../utils/config-manager");
33
33
  const sensitive_keys_1 = require("../../utils/sensitive-keys");
34
+ const variant_service_1 = require("../../cliproxy/services/variant-service");
34
35
  const router = (0, express_1.Router)();
36
+ /**
37
+ * Helper: Resolve settings path for profile or variant
38
+ * Variants have settings paths in config, regular profiles use {name}.settings.json
39
+ */
40
+ function resolveSettingsPath(profileOrVariant) {
41
+ const ccsDir = (0, config_manager_1.getCcsDir)();
42
+ // Check if this is a variant
43
+ const variants = (0, variant_service_1.listVariants)();
44
+ const variant = variants[profileOrVariant];
45
+ if (variant?.settings) {
46
+ // Variant settings path (e.g., ~/.ccs/agy-g3.settings.json)
47
+ return variant.settings.replace(/^~/, process.env.HOME || '');
48
+ }
49
+ // Regular profile settings
50
+ return path.join(ccsDir, `${profileOrVariant}.settings.json`);
51
+ }
35
52
  /**
36
53
  * Helper: Mask API keys in settings
37
54
  */
@@ -52,8 +69,7 @@ function maskApiKeys(settings) {
52
69
  router.get('/:profile', (req, res) => {
53
70
  try {
54
71
  const { profile } = req.params;
55
- const ccsDir = (0, config_manager_1.getCcsDir)();
56
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
72
+ const settingsPath = resolveSettingsPath(profile);
57
73
  if (!fs.existsSync(settingsPath)) {
58
74
  res.status(404).json({ error: 'Settings not found' });
59
75
  return;
@@ -78,8 +94,7 @@ router.get('/:profile', (req, res) => {
78
94
  router.get('/:profile/raw', (req, res) => {
79
95
  try {
80
96
  const { profile } = req.params;
81
- const ccsDir = (0, config_manager_1.getCcsDir)();
82
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
97
+ const settingsPath = resolveSettingsPath(profile);
83
98
  if (!fs.existsSync(settingsPath)) {
84
99
  res.status(404).json({ error: 'Settings not found' });
85
100
  return;
@@ -105,7 +120,7 @@ router.put('/:profile', (req, res) => {
105
120
  const { profile } = req.params;
106
121
  const { settings, expectedMtime } = req.body;
107
122
  const ccsDir = (0, config_manager_1.getCcsDir)();
108
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
123
+ const settingsPath = resolveSettingsPath(profile);
109
124
  const fileExists = fs.existsSync(settingsPath);
110
125
  // Only check conflict if file exists and expectedMtime was provided
111
126
  if (fileExists && expectedMtime) {
@@ -156,8 +171,7 @@ router.put('/:profile', (req, res) => {
156
171
  router.get('/:profile/presets', (req, res) => {
157
172
  try {
158
173
  const { profile } = req.params;
159
- const ccsDir = (0, config_manager_1.getCcsDir)();
160
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
174
+ const settingsPath = resolveSettingsPath(profile);
161
175
  if (!fs.existsSync(settingsPath)) {
162
176
  res.json({ presets: [] });
163
177
  return;
@@ -180,10 +194,10 @@ router.post('/:profile/presets', (req, res) => {
180
194
  res.status(400).json({ error: 'Missing required fields: name, default' });
181
195
  return;
182
196
  }
183
- const ccsDir = (0, config_manager_1.getCcsDir)();
184
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
197
+ const settingsPath = resolveSettingsPath(profile);
185
198
  // Create settings file if it doesn't exist
186
199
  if (!fs.existsSync(settingsPath)) {
200
+ fs.mkdirSync(path.dirname(settingsPath), { recursive: true });
187
201
  fs.writeFileSync(settingsPath, JSON.stringify({ env: {}, presets: [] }, null, 2) + '\n');
188
202
  }
189
203
  const settings = (0, config_manager_1.loadSettings)(settingsPath);
@@ -201,7 +215,10 @@ router.post('/:profile/presets', (req, res) => {
201
215
  haiku: haiku || defaultModel,
202
216
  };
203
217
  settings.presets.push(preset);
204
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
218
+ // Atomic write: temp file + rename
219
+ const tempPath = settingsPath + '.tmp';
220
+ fs.writeFileSync(tempPath, JSON.stringify(settings, null, 2) + '\n');
221
+ fs.renameSync(tempPath, settingsPath);
205
222
  res.status(201).json({ preset });
206
223
  }
207
224
  catch (error) {
@@ -214,8 +231,7 @@ router.post('/:profile/presets', (req, res) => {
214
231
  router.delete('/:profile/presets/:name', (req, res) => {
215
232
  try {
216
233
  const { profile, name } = req.params;
217
- const ccsDir = (0, config_manager_1.getCcsDir)();
218
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
234
+ const settingsPath = resolveSettingsPath(profile);
219
235
  if (!fs.existsSync(settingsPath)) {
220
236
  res.status(404).json({ error: 'Settings not found' });
221
237
  return;
@@ -226,7 +242,10 @@ router.delete('/:profile/presets/:name', (req, res) => {
226
242
  return;
227
243
  }
228
244
  settings.presets = settings.presets.filter((p) => p.name !== name);
229
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
245
+ // Atomic write: temp file + rename
246
+ const tempPath = settingsPath + '.tmp';
247
+ fs.writeFileSync(tempPath, JSON.stringify(settings, null, 2) + '\n');
248
+ fs.renameSync(tempPath, settingsPath);
230
249
  res.json({ success: true });
231
250
  }
232
251
  catch (error) {