@kaitranntt/ccs 7.1.0 → 7.1.1-dev.2

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 (64) hide show
  1. package/dist/ui/assets/{accounts-CcJgVDDp.js → accounts-BizFaUGS.js} +1 -1
  2. package/dist/ui/assets/api-C3V-B-cE.js +1 -0
  3. package/dist/ui/assets/{card-CezJoi0r.js → card-C0EqRPKG.js} +1 -1
  4. package/dist/ui/assets/{charts-B9Jh-s-X.js → charts-CJC4bH8P.js} +1 -1
  5. package/dist/ui/assets/{cliproxy-CaReUuLP.js → cliproxy-DcFTswFj.js} +1 -1
  6. package/dist/ui/assets/cliproxy-control-panel-Q3Xqk6tr.js +1 -0
  7. package/dist/ui/assets/{code-highlight-BoHWVYut.js → code-highlight-DKN39ySy.js} +1 -1
  8. package/dist/ui/assets/{confirm-dialog-6Y2gj7Ec.js → confirm-dialog-84xKqMmi.js} +1 -1
  9. package/dist/ui/assets/copilot-CUmMxLHs.js +4 -0
  10. package/dist/ui/assets/{form-utils-DP6ILe7Z.js → form-utils-kUVlZZAO.js} +1 -1
  11. package/dist/ui/assets/globalenv-section-C1AExs8i.js +1 -0
  12. package/dist/ui/assets/health-C5gze9aT.js +1 -0
  13. package/dist/ui/assets/{icons-DvvDkxaF.js → icons-ChQ4a4K4.js} +1 -1
  14. package/dist/ui/assets/index-BJ3zJcNv.js +1 -0
  15. package/dist/ui/assets/index-BgZLsOHg.css +1 -0
  16. package/dist/ui/assets/index-CS89p2xU.js +1 -0
  17. package/dist/ui/assets/index-CsNpLT3U.js +1 -0
  18. package/dist/ui/assets/index-DcJzEuyk.js +47 -0
  19. package/dist/ui/assets/{notifications-B2Pz7lik.js → notifications-dJQY2-U6.js} +1 -1
  20. package/dist/ui/assets/{radix-ui-CV3R9pD6.js → radix-ui-CrW4rUOS.js} +2 -2
  21. package/dist/ui/assets/{react-vendor-FspHSO0w.js → react-vendor-B_CU-WTZ.js} +1 -1
  22. package/dist/ui/assets/{shared-DVUTjurR.js → shared-zkhjLsj5.js} +1 -1
  23. package/dist/ui/assets/{switch-zvB1rRb3.js → switch-Cx_ruSRV.js} +1 -1
  24. package/dist/ui/assets/{tanstack-Df9bCj5R.js → tanstack-Dbfprw6o.js} +1 -1
  25. package/dist/ui/index.html +9 -9
  26. package/dist/web-server/routes/account-routes.d.ts +8 -0
  27. package/dist/web-server/routes/account-routes.d.ts.map +1 -0
  28. package/dist/web-server/routes/account-routes.js +83 -0
  29. package/dist/web-server/routes/account-routes.js.map +1 -0
  30. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  31. package/dist/web-server/routes/cliproxy-auth-routes.js +87 -54
  32. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  33. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  34. package/dist/web-server/routes/cliproxy-stats-routes.js +156 -4
  35. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  36. package/dist/web-server/routes/config-routes.d.ts.map +1 -1
  37. package/dist/web-server/routes/config-routes.js +29 -14
  38. package/dist/web-server/routes/config-routes.js.map +1 -1
  39. package/dist/web-server/routes/health-routes.d.ts.map +1 -1
  40. package/dist/web-server/routes/health-routes.js +18 -8
  41. package/dist/web-server/routes/health-routes.js.map +1 -1
  42. package/dist/web-server/routes/index.d.ts.map +1 -1
  43. package/dist/web-server/routes/index.js +2 -1
  44. package/dist/web-server/routes/index.js.map +1 -1
  45. package/dist/web-server/routes/profile-routes.d.ts +2 -1
  46. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  47. package/dist/web-server/routes/profile-routes.js +15 -72
  48. package/dist/web-server/routes/profile-routes.js.map +1 -1
  49. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  50. package/dist/web-server/routes/settings-routes.js +145 -115
  51. package/dist/web-server/routes/settings-routes.js.map +1 -1
  52. package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
  53. package/dist/web-server/routes/variant-routes.js +62 -52
  54. package/dist/web-server/routes/variant-routes.js.map +1 -1
  55. package/package.json +1 -1
  56. package/dist/ui/assets/analytics-DcDtu3aa.js +0 -1
  57. package/dist/ui/assets/api-Ds6sAo17.js +0 -1
  58. package/dist/ui/assets/cliproxy-control-panel-CvVI3tSn.js +0 -1
  59. package/dist/ui/assets/code-editor-DfVjW-mp.js +0 -2
  60. package/dist/ui/assets/copilot-BQlMf28R.js +0 -4
  61. package/dist/ui/assets/health-BTsUXH8a.js +0 -1
  62. package/dist/ui/assets/index-Dfyx0piD.css +0 -1
  63. package/dist/ui/assets/index-DsZFSLh_.js +0 -46
  64. package/dist/ui/assets/settings-uldbpXMK.js +0 -1
@@ -10,20 +10,30 @@ const router = (0, express_1.Router)();
10
10
  * GET /api/health - Run health checks
11
11
  */
12
12
  router.get('/', async (_req, res) => {
13
- const report = await (0, health_service_1.runHealthChecks)();
14
- res.json(report);
13
+ try {
14
+ const report = await (0, health_service_1.runHealthChecks)();
15
+ res.json(report);
16
+ }
17
+ catch (error) {
18
+ res.status(500).json({ error: error.message });
19
+ }
15
20
  });
16
21
  /**
17
22
  * POST /api/health/fix/:checkId - Fix a health issue
18
23
  */
19
24
  router.post('/fix/:checkId', (req, res) => {
20
- const { checkId } = req.params;
21
- const result = (0, health_service_1.fixHealthIssue)(checkId);
22
- if (result.success) {
23
- res.json({ success: true, message: result.message });
25
+ try {
26
+ const { checkId } = req.params;
27
+ const result = (0, health_service_1.fixHealthIssue)(checkId);
28
+ if (result.success) {
29
+ res.json({ success: true, message: result.message });
30
+ }
31
+ else {
32
+ res.status(400).json({ success: false, message: result.message });
33
+ }
24
34
  }
25
- else {
26
- res.status(400).json({ success: false, message: result.message });
35
+ catch (error) {
36
+ res.status(500).json({ error: error.message });
27
37
  }
28
38
  });
29
39
  exports.default = router;
@@ -1 +1 @@
1
- {"version":3,"file":"health-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/health-routes.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,qCAAoD;AACpD,sDAAoE;AAEpE,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAe,GAAE,CAAC;IACvC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IACjE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"health-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/health-routes.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,qCAAoD;AACpD,sDAAoE;AAEpE,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAiB,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAe,GAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,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,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IACjE,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,eAAO,MAAM,SAAS,4CAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,eAAO,MAAM,SAAS,4CAAW,CAAC"}
@@ -13,6 +13,7 @@ exports.apiRoutes = void 0;
13
13
  const express_1 = require("express");
14
14
  // Import domain routers
15
15
  const profile_routes_1 = __importDefault(require("./profile-routes"));
16
+ const account_routes_1 = __importDefault(require("./account-routes"));
16
17
  const config_routes_1 = __importDefault(require("./config-routes"));
17
18
  const health_routes_1 = __importDefault(require("./health-routes"));
18
19
  const provider_routes_1 = __importDefault(require("./provider-routes"));
@@ -30,7 +31,7 @@ exports.apiRoutes = (0, express_1.Router)();
30
31
  // Profile CRUD, settings management, presets, accounts
31
32
  exports.apiRoutes.use('/profiles', profile_routes_1.default);
32
33
  exports.apiRoutes.use('/settings', settings_routes_1.default);
33
- exports.apiRoutes.use('/accounts', profile_routes_1.default);
34
+ exports.apiRoutes.use('/accounts', account_routes_1.default);
34
35
  // ==================== Unified Config ====================
35
36
  // Config format, migration
36
37
  exports.apiRoutes.use('/config', config_routes_1.default);
@@ -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,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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web-server/routes/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,qCAAiC;AAEjC,wBAAwB;AACxB,sEAA6C;AAC7C,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,7 +1,8 @@
1
1
  /**
2
- * Profile Routes - CRUD operations for user profiles and accounts
2
+ * Profile Routes - CRUD operations for user profiles
3
3
  *
4
4
  * Uses unified config (config.yaml) when available, falls back to legacy (config.json).
5
+ * Note: Account routes have been moved to account-routes.ts
5
6
  */
6
7
  declare const router: import("express-serve-static-core").Router;
7
8
  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;;;;GAIG;AAWH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAwJxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"profile-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/profile-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA4GxB,eAAe,MAAM,CAAC"}
@@ -1,37 +1,12 @@
1
1
  "use strict";
2
2
  /**
3
- * Profile Routes - CRUD operations for user profiles and accounts
3
+ * Profile Routes - CRUD operations for user profiles
4
4
  *
5
5
  * Uses unified config (config.yaml) when available, falls back to legacy (config.json).
6
+ * Note: Account routes have been moved to account-routes.ts
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;
29
- };
30
8
  Object.defineProperty(exports, "__esModule", { value: true });
31
9
  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");
35
10
  const reserved_names_1 = require("../../config/reserved-names");
36
11
  const profile_writer_1 = require("../../api/services/profile-writer");
37
12
  const profile_reader_1 = require("../../api/services/profile-reader");
@@ -42,14 +17,19 @@ const router = (0, express_1.Router)();
42
17
  * GET /api/profiles - List all profiles
43
18
  */
44
19
  router.get('/', (_req, res) => {
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,
51
- }));
52
- res.json({ profiles });
20
+ try {
21
+ const result = (0, profile_reader_1.listApiProfiles)();
22
+ // Map isConfigured -> configured for UI compatibility
23
+ const profiles = result.profiles.map((p) => ({
24
+ name: p.name,
25
+ settingsPath: p.settingsPath,
26
+ configured: p.isConfigured,
27
+ }));
28
+ res.json({ profiles });
29
+ }
30
+ catch (error) {
31
+ res.status(500).json({ error: error.message });
32
+ }
53
33
  });
54
34
  /**
55
35
  * POST /api/profiles - Create new profile
@@ -123,42 +103,5 @@ router.delete('/:name', (req, res) => {
123
103
  }
124
104
  res.json({ name, deleted: true });
125
105
  });
126
- // ==================== Accounts ====================
127
- /**
128
- * GET /api/accounts - List accounts from profiles.json
129
- */
130
- router.get('/accounts', (_req, res) => {
131
- const profilesPath = path.join((0, config_manager_1.getCcsDir)(), 'profiles.json');
132
- if (!fs.existsSync(profilesPath)) {
133
- res.json({ accounts: [], default: null });
134
- return;
135
- }
136
- const data = JSON.parse(fs.readFileSync(profilesPath, 'utf8'));
137
- const accounts = Object.entries(data.profiles || {}).map(([name, meta]) => {
138
- const metadata = meta;
139
- return {
140
- name,
141
- ...metadata,
142
- };
143
- });
144
- res.json({ accounts, default: data.default || null });
145
- });
146
- /**
147
- * POST /api/accounts/default - Set default account
148
- */
149
- router.post('/accounts/default', (req, res) => {
150
- const { name } = req.body;
151
- if (!name) {
152
- res.status(400).json({ error: 'Missing required field: name' });
153
- return;
154
- }
155
- const profilesPath = path.join((0, config_manager_1.getCcsDir)(), 'profiles.json');
156
- const data = fs.existsSync(profilesPath)
157
- ? JSON.parse(fs.readFileSync(profilesPath, 'utf8'))
158
- : { profiles: {} };
159
- data.default = name;
160
- fs.writeFileSync(profilesPath, JSON.stringify(data, null, 2) + '\n');
161
- res.json({ default: name });
162
- });
163
106
  exports.default = router;
164
107
  //# sourceMappingURL=profile-routes.js.map
@@ -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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"}
@@ -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;AAiNxB,eAAe,MAAM,CAAC"}
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"}
@@ -50,158 +50,188 @@ function maskApiKeys(settings) {
50
50
  * GET /api/settings/:profile - Get settings with masked API keys
51
51
  */
52
52
  router.get('/:profile', (req, res) => {
53
- const { profile } = req.params;
54
- const ccsDir = (0, config_manager_1.getCcsDir)();
55
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
56
- if (!fs.existsSync(settingsPath)) {
57
- res.status(404).json({ error: 'Settings not found' });
58
- return;
53
+ try {
54
+ const { profile } = req.params;
55
+ const ccsDir = (0, config_manager_1.getCcsDir)();
56
+ const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
57
+ if (!fs.existsSync(settingsPath)) {
58
+ res.status(404).json({ error: 'Settings not found' });
59
+ return;
60
+ }
61
+ const stat = fs.statSync(settingsPath);
62
+ const settings = (0, config_manager_1.loadSettings)(settingsPath);
63
+ const masked = maskApiKeys(settings);
64
+ res.json({
65
+ profile,
66
+ settings: masked,
67
+ mtime: stat.mtime.getTime(),
68
+ path: settingsPath,
69
+ });
70
+ }
71
+ catch (error) {
72
+ res.status(500).json({ error: error.message });
59
73
  }
60
- const stat = fs.statSync(settingsPath);
61
- const settings = (0, config_manager_1.loadSettings)(settingsPath);
62
- const masked = maskApiKeys(settings);
63
- res.json({
64
- profile,
65
- settings: masked,
66
- mtime: stat.mtime.getTime(),
67
- path: settingsPath,
68
- });
69
74
  });
70
75
  /**
71
76
  * GET /api/settings/:profile/raw - Get full settings (for editing)
72
77
  */
73
78
  router.get('/:profile/raw', (req, res) => {
74
- const { profile } = req.params;
75
- const ccsDir = (0, config_manager_1.getCcsDir)();
76
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
77
- if (!fs.existsSync(settingsPath)) {
78
- res.status(404).json({ error: 'Settings not found' });
79
- return;
79
+ try {
80
+ const { profile } = req.params;
81
+ const ccsDir = (0, config_manager_1.getCcsDir)();
82
+ const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
83
+ if (!fs.existsSync(settingsPath)) {
84
+ res.status(404).json({ error: 'Settings not found' });
85
+ return;
86
+ }
87
+ const stat = fs.statSync(settingsPath);
88
+ const settings = (0, config_manager_1.loadSettings)(settingsPath);
89
+ res.json({
90
+ profile,
91
+ settings,
92
+ mtime: stat.mtime.getTime(),
93
+ path: settingsPath,
94
+ });
95
+ }
96
+ catch (error) {
97
+ res.status(500).json({ error: error.message });
80
98
  }
81
- const stat = fs.statSync(settingsPath);
82
- const settings = (0, config_manager_1.loadSettings)(settingsPath);
83
- res.json({
84
- profile,
85
- settings,
86
- mtime: stat.mtime.getTime(),
87
- path: settingsPath,
88
- });
89
99
  });
90
100
  /**
91
101
  * PUT /api/settings/:profile - Update settings with conflict detection and backup
92
102
  */
93
103
  router.put('/:profile', (req, res) => {
94
- const { profile } = req.params;
95
- const { settings, expectedMtime } = req.body;
96
- const ccsDir = (0, config_manager_1.getCcsDir)();
97
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
98
- const fileExists = fs.existsSync(settingsPath);
99
- // Only check conflict if file exists and expectedMtime was provided
100
- if (fileExists && expectedMtime) {
101
- const stat = fs.statSync(settingsPath);
102
- if (stat.mtime.getTime() !== expectedMtime) {
103
- res.status(409).json({
104
- error: 'File modified externally',
105
- currentMtime: stat.mtime.getTime(),
106
- });
107
- return;
104
+ try {
105
+ const { profile } = req.params;
106
+ const { settings, expectedMtime } = req.body;
107
+ const ccsDir = (0, config_manager_1.getCcsDir)();
108
+ const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
109
+ const fileExists = fs.existsSync(settingsPath);
110
+ // Only check conflict if file exists and expectedMtime was provided
111
+ if (fileExists && expectedMtime) {
112
+ const stat = fs.statSync(settingsPath);
113
+ if (stat.mtime.getTime() !== expectedMtime) {
114
+ res.status(409).json({
115
+ error: 'File modified externally',
116
+ currentMtime: stat.mtime.getTime(),
117
+ });
118
+ return;
119
+ }
108
120
  }
109
- }
110
- // Create backup only if file exists
111
- let backupPath;
112
- if (fileExists) {
113
- const backupDir = path.join(ccsDir, 'backups');
114
- if (!fs.existsSync(backupDir)) {
115
- fs.mkdirSync(backupDir, { recursive: true });
121
+ // Create backup only if file exists
122
+ let backupPath;
123
+ if (fileExists) {
124
+ const backupDir = path.join(ccsDir, 'backups');
125
+ if (!fs.existsSync(backupDir)) {
126
+ fs.mkdirSync(backupDir, { recursive: true });
127
+ }
128
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
129
+ backupPath = path.join(backupDir, `${profile}.${timestamp}.settings.json`);
130
+ fs.copyFileSync(settingsPath, backupPath);
131
+ }
132
+ // Ensure directory exists for new files
133
+ if (!fileExists) {
134
+ fs.mkdirSync(path.dirname(settingsPath), { recursive: true });
116
135
  }
117
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
118
- backupPath = path.join(backupDir, `${profile}.${timestamp}.settings.json`);
119
- fs.copyFileSync(settingsPath, backupPath);
136
+ // Write new settings atomically
137
+ const tempPath = settingsPath + '.tmp';
138
+ fs.writeFileSync(tempPath, JSON.stringify(settings, null, 2) + '\n');
139
+ fs.renameSync(tempPath, settingsPath);
140
+ const newStat = fs.statSync(settingsPath);
141
+ res.json({
142
+ profile,
143
+ mtime: newStat.mtime.getTime(),
144
+ backupPath,
145
+ created: !fileExists,
146
+ });
120
147
  }
121
- // Ensure directory exists for new files
122
- if (!fileExists) {
123
- fs.mkdirSync(path.dirname(settingsPath), { recursive: true });
148
+ catch (error) {
149
+ res.status(500).json({ error: error.message });
124
150
  }
125
- // Write new settings atomically
126
- const tempPath = settingsPath + '.tmp';
127
- fs.writeFileSync(tempPath, JSON.stringify(settings, null, 2) + '\n');
128
- fs.renameSync(tempPath, settingsPath);
129
- const newStat = fs.statSync(settingsPath);
130
- res.json({
131
- profile,
132
- mtime: newStat.mtime.getTime(),
133
- backupPath,
134
- created: !fileExists,
135
- });
136
151
  });
137
152
  // ==================== Presets ====================
138
153
  /**
139
154
  * GET /api/settings/:profile/presets - Get saved presets for a provider
140
155
  */
141
156
  router.get('/:profile/presets', (req, res) => {
142
- const { profile } = req.params;
143
- const ccsDir = (0, config_manager_1.getCcsDir)();
144
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
145
- if (!fs.existsSync(settingsPath)) {
146
- res.json({ presets: [] });
147
- return;
157
+ try {
158
+ const { profile } = req.params;
159
+ const ccsDir = (0, config_manager_1.getCcsDir)();
160
+ const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
161
+ if (!fs.existsSync(settingsPath)) {
162
+ res.json({ presets: [] });
163
+ return;
164
+ }
165
+ const settings = (0, config_manager_1.loadSettings)(settingsPath);
166
+ res.json({ presets: settings.presets || [] });
167
+ }
168
+ catch (error) {
169
+ res.status(500).json({ error: error.message });
148
170
  }
149
- const settings = (0, config_manager_1.loadSettings)(settingsPath);
150
- res.json({ presets: settings.presets || [] });
151
171
  });
152
172
  /**
153
173
  * POST /api/settings/:profile/presets - Create a new preset
154
174
  */
155
175
  router.post('/:profile/presets', (req, res) => {
156
- const { profile } = req.params;
157
- const { name, default: defaultModel, opus, sonnet, haiku } = req.body;
158
- if (!name || !defaultModel) {
159
- res.status(400).json({ error: 'Missing required fields: name, default' });
160
- return;
161
- }
162
- const ccsDir = (0, config_manager_1.getCcsDir)();
163
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
164
- // Create settings file if it doesn't exist
165
- if (!fs.existsSync(settingsPath)) {
166
- fs.writeFileSync(settingsPath, JSON.stringify({ env: {}, presets: [] }, null, 2) + '\n');
176
+ try {
177
+ const { profile } = req.params;
178
+ const { name, default: defaultModel, opus, sonnet, haiku } = req.body;
179
+ if (!name || !defaultModel) {
180
+ res.status(400).json({ error: 'Missing required fields: name, default' });
181
+ return;
182
+ }
183
+ const ccsDir = (0, config_manager_1.getCcsDir)();
184
+ const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
185
+ // Create settings file if it doesn't exist
186
+ if (!fs.existsSync(settingsPath)) {
187
+ fs.writeFileSync(settingsPath, JSON.stringify({ env: {}, presets: [] }, null, 2) + '\n');
188
+ }
189
+ const settings = (0, config_manager_1.loadSettings)(settingsPath);
190
+ settings.presets = settings.presets || [];
191
+ // Check for duplicate name
192
+ if (settings.presets.some((p) => p.name === name)) {
193
+ res.status(409).json({ error: 'Preset with this name already exists' });
194
+ return;
195
+ }
196
+ const preset = {
197
+ name,
198
+ default: defaultModel,
199
+ opus: opus || defaultModel,
200
+ sonnet: sonnet || defaultModel,
201
+ haiku: haiku || defaultModel,
202
+ };
203
+ settings.presets.push(preset);
204
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
205
+ res.status(201).json({ preset });
167
206
  }
168
- const settings = (0, config_manager_1.loadSettings)(settingsPath);
169
- settings.presets = settings.presets || [];
170
- // Check for duplicate name
171
- if (settings.presets.some((p) => p.name === name)) {
172
- res.status(409).json({ error: 'Preset with this name already exists' });
173
- return;
207
+ catch (error) {
208
+ res.status(500).json({ error: error.message });
174
209
  }
175
- const preset = {
176
- name,
177
- default: defaultModel,
178
- opus: opus || defaultModel,
179
- sonnet: sonnet || defaultModel,
180
- haiku: haiku || defaultModel,
181
- };
182
- settings.presets.push(preset);
183
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
184
- res.status(201).json({ preset });
185
210
  });
186
211
  /**
187
212
  * DELETE /api/settings/:profile/presets/:name - Delete a preset
188
213
  */
189
214
  router.delete('/:profile/presets/:name', (req, res) => {
190
- const { profile, name } = req.params;
191
- const ccsDir = (0, config_manager_1.getCcsDir)();
192
- const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
193
- if (!fs.existsSync(settingsPath)) {
194
- res.status(404).json({ error: 'Settings not found' });
195
- return;
215
+ try {
216
+ const { profile, name } = req.params;
217
+ const ccsDir = (0, config_manager_1.getCcsDir)();
218
+ const settingsPath = path.join(ccsDir, `${profile}.settings.json`);
219
+ if (!fs.existsSync(settingsPath)) {
220
+ res.status(404).json({ error: 'Settings not found' });
221
+ return;
222
+ }
223
+ const settings = (0, config_manager_1.loadSettings)(settingsPath);
224
+ if (!settings.presets || !settings.presets.some((p) => p.name === name)) {
225
+ res.status(404).json({ error: 'Preset not found' });
226
+ return;
227
+ }
228
+ settings.presets = settings.presets.filter((p) => p.name !== name);
229
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
230
+ res.json({ success: true });
196
231
  }
197
- const settings = (0, config_manager_1.loadSettings)(settingsPath);
198
- if (!settings.presets || !settings.presets.some((p) => p.name === name)) {
199
- res.status(404).json({ error: 'Preset not found' });
200
- return;
232
+ catch (error) {
233
+ res.status(500).json({ error: error.message });
201
234
  }
202
- settings.presets = settings.presets.filter((p) => p.name !== name);
203
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
204
- res.json({ success: true });
205
235
  });
206
236
  exports.default = router;
207
237
  //# sourceMappingURL=settings-routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/settings-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/settings-routes.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAAoD;AACpD,uCAAyB;AACzB,2CAA6B;AAC7B,+DAAqE;AACrE,+DAAgF;AAGhF,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB;;GAEG;AACH,SAAS,WAAW,CAAC,QAAkB;IACrC,IAAI,CAAC,QAAQ,CAAC,GAAG;QAAE,OAAO,QAAQ,CAAC;IAEnC,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,IAAI,IAAA,+BAAc,EAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAA,mCAAkB,EAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAEnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAA,6BAAY,EAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAErC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO;YACP,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC3B,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,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,GAAG,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAEnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAA,6BAAY,EAAC,YAAY,CAAC,CAAC;QAE5C,GAAG,CAAC,IAAI,CAAC;YACP,OAAO;YACP,QAAQ;YACR,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC3B,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,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,GAAG,CAAC,WAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAE/C,oEAAoE;QACpE,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,aAAa,EAAE,CAAC;gBAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,0BAA0B;oBACjC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;iBACnC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,UAA8B,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACjE,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,IAAI,SAAS,gBAAgB,CAAC,CAAC;YAC3E,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,gCAAgC;QAChC,MAAM,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC;YACP,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YAC9B,UAAU;YACV,OAAO,EAAE,CAAC,UAAU;SACrB,CAAC,CAAC;IACL,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,oDAAoD;AAEpD;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAEnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,6BAAY,EAAC,YAAY,CAAC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IAChD,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,mBAAmB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAEtE,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAEnE,2CAA2C;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,6BAAY,EAAC,YAAY,CAAC,CAAC;QAC5C,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAE1C,2BAA2B;QAC3B,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG;YACb,IAAI;YACJ,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,IAAI,IAAI,YAAY;YAC1B,MAAM,EAAE,MAAM,IAAI,YAAY;YAC9B,KAAK,EAAE,KAAK,IAAI,YAAY;SAC7B,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEzE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,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,MAAM,CAAC,yBAAyB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC7E,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAEnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,6BAAY,EAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEzE,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 +1 @@
1
- {"version":3,"file":"variant-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/variant-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAkJxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"variant-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/variant-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA0JxB,eAAe,MAAM,CAAC"}