@kaitranntt/ccs 7.43.0-dev.2 → 7.43.0-dev.20

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 (255) hide show
  1. package/README.md +49 -2
  2. package/config/base-codex.settings.json +4 -4
  3. package/dist/api/services/profile-reader.d.ts.map +1 -1
  4. package/dist/api/services/profile-reader.js +4 -1
  5. package/dist/api/services/profile-reader.js.map +1 -1
  6. package/dist/auth/profile-detector.d.ts +14 -3
  7. package/dist/auth/profile-detector.d.ts.map +1 -1
  8. package/dist/auth/profile-detector.js +35 -15
  9. package/dist/auth/profile-detector.js.map +1 -1
  10. package/dist/ccs.js +34 -4
  11. package/dist/ccs.js.map +1 -1
  12. package/dist/cliproxy/auth/auth-types.d.ts +28 -1
  13. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  14. package/dist/cliproxy/auth/auth-types.js +70 -4
  15. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  16. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  17. package/dist/cliproxy/auth/oauth-handler.js +19 -4
  18. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  19. package/dist/cliproxy/composite-validator.d.ts +20 -0
  20. package/dist/cliproxy/composite-validator.d.ts.map +1 -0
  21. package/dist/cliproxy/composite-validator.js +85 -0
  22. package/dist/cliproxy/composite-validator.js.map +1 -0
  23. package/dist/cliproxy/config/env-builder.d.ts +24 -0
  24. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  25. package/dist/cliproxy/config/env-builder.js +72 -1
  26. package/dist/cliproxy/config/env-builder.js.map +1 -1
  27. package/dist/cliproxy/config/thinking-config.d.ts +19 -2
  28. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  29. package/dist/cliproxy/config/thinking-config.js +127 -27
  30. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  31. package/dist/cliproxy/executor/env-resolver.d.ts +16 -0
  32. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  33. package/dist/cliproxy/executor/env-resolver.js +82 -26
  34. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  35. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  36. package/dist/cliproxy/executor/index.js +202 -67
  37. package/dist/cliproxy/executor/index.js.map +1 -1
  38. package/dist/cliproxy/executor/retry-handler.d.ts +11 -0
  39. package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
  40. package/dist/cliproxy/executor/retry-handler.js +30 -1
  41. package/dist/cliproxy/executor/retry-handler.js.map +1 -1
  42. package/dist/cliproxy/executor/thinking-arg-parser.d.ts +27 -0
  43. package/dist/cliproxy/executor/thinking-arg-parser.d.ts.map +1 -0
  44. package/dist/cliproxy/executor/thinking-arg-parser.js +80 -0
  45. package/dist/cliproxy/executor/thinking-arg-parser.js.map +1 -0
  46. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  47. package/dist/cliproxy/model-catalog.js +14 -3
  48. package/dist/cliproxy/model-catalog.js.map +1 -1
  49. package/dist/cliproxy/model-config.d.ts.map +1 -1
  50. package/dist/cliproxy/model-config.js +27 -7
  51. package/dist/cliproxy/model-config.js.map +1 -1
  52. package/dist/cliproxy/provider-capabilities.d.ts +22 -0
  53. package/dist/cliproxy/provider-capabilities.d.ts.map +1 -0
  54. package/dist/cliproxy/provider-capabilities.js +95 -0
  55. package/dist/cliproxy/provider-capabilities.js.map +1 -0
  56. package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
  57. package/dist/cliproxy/quota-fetcher-codex.js +106 -87
  58. package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
  59. package/dist/cliproxy/remote-auth-fetcher.d.ts.map +1 -1
  60. package/dist/cliproxy/remote-auth-fetcher.js +3 -26
  61. package/dist/cliproxy/remote-auth-fetcher.js.map +1 -1
  62. package/dist/cliproxy/service-manager.d.ts.map +1 -1
  63. package/dist/cliproxy/service-manager.js +3 -6
  64. package/dist/cliproxy/service-manager.js.map +1 -1
  65. package/dist/cliproxy/services/index.d.ts +2 -2
  66. package/dist/cliproxy/services/index.d.ts.map +1 -1
  67. package/dist/cliproxy/services/index.js +4 -1
  68. package/dist/cliproxy/services/index.js.map +1 -1
  69. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +15 -3
  70. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -1
  71. package/dist/cliproxy/services/proxy-lifecycle-service.js +15 -6
  72. package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -1
  73. package/dist/cliproxy/services/variant-config-adapter.d.ts +15 -0
  74. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
  75. package/dist/cliproxy/services/variant-config-adapter.js +84 -11
  76. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
  77. package/dist/cliproxy/services/variant-service.d.ts +26 -0
  78. package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
  79. package/dist/cliproxy/services/variant-service.js +164 -9
  80. package/dist/cliproxy/services/variant-service.js.map +1 -1
  81. package/dist/cliproxy/services/variant-settings.d.ts +19 -1
  82. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  83. package/dist/cliproxy/services/variant-settings.js +150 -12
  84. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  85. package/dist/cliproxy/types.d.ts +13 -0
  86. package/dist/cliproxy/types.d.ts.map +1 -1
  87. package/dist/cliproxy/types.js.map +1 -1
  88. package/dist/commands/cliproxy/auth-subcommand.d.ts.map +1 -1
  89. package/dist/commands/cliproxy/auth-subcommand.js +2 -1
  90. package/dist/commands/cliproxy/auth-subcommand.js.map +1 -1
  91. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  92. package/dist/commands/cliproxy/help-subcommand.js +4 -0
  93. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  94. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  95. package/dist/commands/cliproxy/index.js +12 -0
  96. package/dist/commands/cliproxy/index.js.map +1 -1
  97. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts +9 -0
  98. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts.map +1 -1
  99. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js +92 -6
  100. package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js.map +1 -1
  101. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  102. package/dist/commands/cliproxy/quota-subcommand.js +106 -4
  103. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  104. package/dist/commands/cliproxy/variant-subcommand.d.ts +1 -0
  105. package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
  106. package/dist/commands/cliproxy/variant-subcommand.js +307 -3
  107. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
  108. package/dist/commands/command-execution-contract.d.ts +23 -0
  109. package/dist/commands/command-execution-contract.d.ts.map +1 -0
  110. package/dist/commands/command-execution-contract.js +21 -0
  111. package/dist/commands/command-execution-contract.js.map +1 -0
  112. package/dist/commands/cursor-command-display.d.ts +6 -0
  113. package/dist/commands/cursor-command-display.d.ts.map +1 -0
  114. package/dist/commands/cursor-command-display.js +100 -0
  115. package/dist/commands/cursor-command-display.js.map +1 -0
  116. package/dist/commands/cursor-command.d.ts +12 -0
  117. package/dist/commands/cursor-command.d.ts.map +1 -0
  118. package/dist/commands/cursor-command.js +222 -0
  119. package/dist/commands/cursor-command.js.map +1 -0
  120. package/dist/commands/help-command.d.ts.map +1 -1
  121. package/dist/commands/help-command.js +30 -3
  122. package/dist/commands/help-command.js.map +1 -1
  123. package/dist/commands/shell-completion-command.d.ts +20 -0
  124. package/dist/commands/shell-completion-command.d.ts.map +1 -1
  125. package/dist/commands/shell-completion-command.js +45 -30
  126. package/dist/commands/shell-completion-command.js.map +1 -1
  127. package/dist/config/reserved-names.d.ts +1 -1
  128. package/dist/config/reserved-names.d.ts.map +1 -1
  129. package/dist/config/reserved-names.js +2 -0
  130. package/dist/config/reserved-names.js.map +1 -1
  131. package/dist/config/unified-config-loader.d.ts +6 -1
  132. package/dist/config/unified-config-loader.d.ts.map +1 -1
  133. package/dist/config/unified-config-loader.js +57 -3
  134. package/dist/config/unified-config-loader.js.map +1 -1
  135. package/dist/config/unified-config-types.d.ts +71 -2
  136. package/dist/config/unified-config-types.d.ts.map +1 -1
  137. package/dist/config/unified-config-types.js +27 -2
  138. package/dist/config/unified-config-types.js.map +1 -1
  139. package/dist/cursor/cursor-daemon-entry.d.ts +14 -0
  140. package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -0
  141. package/dist/cursor/cursor-daemon-entry.js +236 -0
  142. package/dist/cursor/cursor-daemon-entry.js.map +1 -0
  143. package/dist/cursor/cursor-daemon-pid.d.ts +4 -0
  144. package/dist/cursor/cursor-daemon-pid.d.ts.map +1 -0
  145. package/dist/cursor/cursor-daemon-pid.js +77 -0
  146. package/dist/cursor/cursor-daemon-pid.js.map +1 -0
  147. package/dist/cursor/cursor-daemon.d.ts +36 -0
  148. package/dist/cursor/cursor-daemon.d.ts.map +1 -0
  149. package/dist/cursor/cursor-daemon.js +315 -0
  150. package/dist/cursor/cursor-daemon.js.map +1 -0
  151. package/dist/cursor/cursor-executor.d.ts +7 -0
  152. package/dist/cursor/cursor-executor.d.ts.map +1 -1
  153. package/dist/cursor/cursor-executor.js +244 -44
  154. package/dist/cursor/cursor-executor.js.map +1 -1
  155. package/dist/cursor/cursor-models.d.ts +43 -0
  156. package/dist/cursor/cursor-models.d.ts.map +1 -0
  157. package/dist/cursor/cursor-models.js +205 -0
  158. package/dist/cursor/cursor-models.js.map +1 -0
  159. package/dist/cursor/cursor-protobuf-decoder.js +26 -26
  160. package/dist/cursor/cursor-protobuf-decoder.js.map +1 -1
  161. package/dist/cursor/cursor-protobuf-encoder.js +14 -14
  162. package/dist/cursor/cursor-protobuf-encoder.js.map +1 -1
  163. package/dist/cursor/cursor-protobuf-schema.d.ts +121 -74
  164. package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -1
  165. package/dist/cursor/cursor-protobuf-schema.js +80 -90
  166. package/dist/cursor/cursor-protobuf-schema.js.map +1 -1
  167. package/dist/cursor/cursor-protobuf.js +25 -25
  168. package/dist/cursor/cursor-protobuf.js.map +1 -1
  169. package/dist/cursor/cursor-stream-parser.d.ts +52 -0
  170. package/dist/cursor/cursor-stream-parser.d.ts.map +1 -0
  171. package/dist/cursor/cursor-stream-parser.js +142 -0
  172. package/dist/cursor/cursor-stream-parser.js.map +1 -0
  173. package/dist/cursor/daemon-process-ownership.d.ts +3 -0
  174. package/dist/cursor/daemon-process-ownership.d.ts.map +1 -0
  175. package/dist/cursor/daemon-process-ownership.js +96 -0
  176. package/dist/cursor/daemon-process-ownership.js.map +1 -0
  177. package/dist/cursor/index.d.ts +11 -0
  178. package/dist/cursor/index.d.ts.map +1 -0
  179. package/dist/cursor/index.js +55 -0
  180. package/dist/cursor/index.js.map +1 -0
  181. package/dist/cursor/types.d.ts +32 -1
  182. package/dist/cursor/types.d.ts.map +1 -1
  183. package/dist/cursor/types.js +1 -1
  184. package/dist/management/oauth-port-diagnostics.d.ts +4 -7
  185. package/dist/management/oauth-port-diagnostics.d.ts.map +1 -1
  186. package/dist/management/oauth-port-diagnostics.js +12 -23
  187. package/dist/management/oauth-port-diagnostics.js.map +1 -1
  188. package/dist/types/index.d.ts +1 -1
  189. package/dist/types/index.d.ts.map +1 -1
  190. package/dist/types/index.js.map +1 -1
  191. package/dist/ui/assets/accounts-D7apG3NM.js +1 -0
  192. package/dist/ui/assets/{alert-dialog-Dy-8Z_Ud.js → alert-dialog-z6HEaPqe.js} +1 -1
  193. package/dist/ui/assets/api-C-aJLAbg.js +1 -0
  194. package/dist/ui/assets/auth-section-DXzTOTWo.js +1 -0
  195. package/dist/ui/assets/{backups-section-CDuqhiZo.js → backups-section-BWlvR34E.js} +1 -1
  196. package/dist/ui/assets/cliproxy-BSyjTE6L.js +3 -0
  197. package/dist/ui/assets/{cliproxy-control-panel-DJd_zNR3.js → cliproxy-control-panel-CKJHMGqD.js} +1 -1
  198. package/dist/ui/assets/{confirm-dialog-DtYrWaa7.js → confirm-dialog-D8vB20zr.js} +1 -1
  199. package/dist/ui/assets/{copilot-DHdywZ9L.js → copilot-7sa7MFH_.js} +3 -3
  200. package/dist/ui/assets/cursor-KwsbcPyA.js +1 -0
  201. package/dist/ui/assets/globalenv-section-BiyiJmIj.js +1 -0
  202. package/dist/ui/assets/{health-BsMhSeFz.js → health-Dqa61Bj1.js} +1 -1
  203. package/dist/ui/assets/{icons-D5eAI-GR.js → icons-G0rMFC4M.js} +1 -1
  204. package/dist/ui/assets/index-Bqle3SG4.css +1 -0
  205. package/dist/ui/assets/{index-B2GQ_Joi.js → index-CiJndnpm.js} +1 -1
  206. package/dist/ui/assets/index-DGFnVfdv.js +47 -0
  207. package/dist/ui/assets/index-DacpfVrt.js +1 -0
  208. package/dist/ui/assets/index-akX3q-m-.js +1 -0
  209. package/dist/ui/assets/{index-CEF_VhSR.js → index-qMp3rvH4.js} +1 -1
  210. package/dist/ui/assets/{proxy-status-widget-Cb7KfEqq.js → proxy-status-widget-CSq7bxEv.js} +1 -1
  211. package/dist/ui/assets/shared-DvyiNZGg.js +1 -0
  212. package/dist/ui/assets/{switch-D6XSRTo_.js → switch-Cr9fAsnM.js} +1 -1
  213. package/dist/ui/index.html +3 -3
  214. package/dist/utils/config-manager.d.ts.map +1 -1
  215. package/dist/utils/config-manager.js +17 -6
  216. package/dist/utils/config-manager.js.map +1 -1
  217. package/dist/web-server/jsonl-parser.js +1 -1
  218. package/dist/web-server/jsonl-parser.js.map +1 -1
  219. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  220. package/dist/web-server/routes/account-routes.js +5 -11
  221. package/dist/web-server/routes/account-routes.js.map +1 -1
  222. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +5 -0
  223. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  224. package/dist/web-server/routes/cliproxy-auth-routes.js +73 -6
  225. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  226. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  227. package/dist/web-server/routes/cliproxy-stats-routes.js +43 -4
  228. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  229. package/dist/web-server/routes/cursor-routes.d.ts +16 -0
  230. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -0
  231. package/dist/web-server/routes/cursor-routes.js +171 -0
  232. package/dist/web-server/routes/cursor-routes.js.map +1 -0
  233. package/dist/web-server/routes/cursor-settings-routes.d.ts +6 -0
  234. package/dist/web-server/routes/cursor-settings-routes.d.ts.map +1 -0
  235. package/dist/web-server/routes/cursor-settings-routes.js +209 -0
  236. package/dist/web-server/routes/cursor-settings-routes.js.map +1 -0
  237. package/dist/web-server/routes/index.d.ts.map +1 -1
  238. package/dist/web-server/routes/index.js +3 -0
  239. package/dist/web-server/routes/index.js.map +1 -1
  240. package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
  241. package/dist/web-server/routes/variant-routes.js +107 -6
  242. package/dist/web-server/routes/variant-routes.js.map +1 -1
  243. package/package.json +5 -2
  244. package/scripts/hardening-inventory.js +526 -0
  245. package/scripts/maintainability-baseline.js +309 -0
  246. package/dist/ui/assets/accounts-CkN_roEn.js +0 -1
  247. package/dist/ui/assets/api-2TN7yVwm.js +0 -1
  248. package/dist/ui/assets/auth-section-CeKCNzzC.js +0 -1
  249. package/dist/ui/assets/cliproxy-626zUpA_.js +0 -3
  250. package/dist/ui/assets/globalenv-section-Cn5ufgRh.js +0 -1
  251. package/dist/ui/assets/index-Bmgylhgn.js +0 -1
  252. package/dist/ui/assets/index-Cr6iEc8x.js +0 -47
  253. package/dist/ui/assets/index-DkMR3J96.js +0 -1
  254. package/dist/ui/assets/index-QvMpU4Lc.css +0 -1
  255. package/dist/ui/assets/shared-BsWeldW8.js +0 -1
@@ -28,9 +28,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  return result;
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.removeVariantFromLegacyConfig = exports.removeVariantFromUnifiedConfig = exports.saveVariantLegacy = exports.saveVariantUnified = exports.listVariantsFromConfig = exports.getNextAvailablePort = exports.variantExistsInConfig = exports.VARIANT_PORT_MAX_OFFSET = exports.VARIANT_PORT_BASE = void 0;
31
+ exports.removeVariantFromLegacyConfig = exports.removeVariantFromUnifiedConfig = exports.saveVariantLegacy = exports.saveVariantUnified = exports.saveCompositeVariantUnified = exports.listVariantsFromConfig = exports.getNextAvailablePort = exports.variantExistsInConfig = exports.VARIANT_PORT_MAX_OFFSET = exports.VARIANT_PORT_BASE = void 0;
32
32
  const fs = __importStar(require("fs"));
33
33
  const config_manager_1 = require("../../utils/config-manager");
34
+ const unified_config_types_1 = require("../../config/unified-config-types");
34
35
  const unified_config_loader_1 = require("../../config/unified-config-loader");
35
36
  const config_generator_1 = require("../config-generator");
36
37
  /** First port for variant profiles (8318 = default + 1) */
@@ -87,14 +88,51 @@ function listVariantsFromConfig() {
87
88
  const unifiedConfig = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
88
89
  const variants = unifiedConfig.cliproxy?.variants || {};
89
90
  const result = {};
90
- for (const name of Object.keys(variants)) {
91
- const v = variants[name];
92
- result[name] = {
93
- provider: v.provider,
94
- settings: v.settings,
95
- account: v.account,
96
- port: v.port,
97
- };
91
+ for (const [name, variantConfig] of Object.entries(variants)) {
92
+ try {
93
+ if ('type' in variantConfig && variantConfig.type === 'composite') {
94
+ const composite = variantConfig;
95
+ const tiers = composite.tiers;
96
+ if (!tiers || !tiers.opus || !tiers.sonnet || !tiers.haiku || !composite.default_tier) {
97
+ console.warn(`[!] Skipping malformed composite variant '${name}': missing required tier configuration`);
98
+ continue;
99
+ }
100
+ const defaultTierConfig = tiers[composite.default_tier];
101
+ if (!defaultTierConfig) {
102
+ console.warn(`[!] Skipping malformed composite variant '${name}': missing default tier '${composite.default_tier}'`);
103
+ continue;
104
+ }
105
+ const normalizedTiers = {
106
+ opus: tiers.opus,
107
+ sonnet: tiers.sonnet,
108
+ haiku: tiers.haiku,
109
+ };
110
+ const hasFallback = !!(normalizedTiers.opus.fallback ||
111
+ normalizedTiers.sonnet.fallback ||
112
+ normalizedTiers.haiku.fallback);
113
+ result[name] = {
114
+ provider: defaultTierConfig.provider,
115
+ settings: composite.settings,
116
+ port: composite.port,
117
+ type: 'composite',
118
+ default_tier: composite.default_tier,
119
+ tiers: normalizedTiers,
120
+ hasFallback,
121
+ };
122
+ }
123
+ else {
124
+ const single = variantConfig;
125
+ result[name] = {
126
+ provider: single.provider,
127
+ settings: single.settings,
128
+ account: single.account,
129
+ port: single.port,
130
+ };
131
+ }
132
+ }
133
+ catch (error) {
134
+ console.warn(`[!] Skipping malformed variant '${name}': ${error.message || 'invalid config'}`);
135
+ }
98
136
  }
99
137
  return result;
100
138
  }
@@ -117,6 +155,25 @@ function listVariantsFromConfig() {
117
155
  }
118
156
  }
119
157
  exports.listVariantsFromConfig = listVariantsFromConfig;
158
+ /**
159
+ * Save composite variant to unified config
160
+ */
161
+ function saveCompositeVariantUnified(name, config) {
162
+ const unifiedConfig = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
163
+ if (!unifiedConfig.cliproxy) {
164
+ unifiedConfig.cliproxy = {
165
+ oauth_accounts: {},
166
+ providers: [...unified_config_types_1.CLIPROXY_SUPPORTED_PROVIDERS],
167
+ variants: {},
168
+ };
169
+ }
170
+ if (!unifiedConfig.cliproxy.variants) {
171
+ unifiedConfig.cliproxy.variants = {};
172
+ }
173
+ unifiedConfig.cliproxy.variants[name] = config;
174
+ (0, unified_config_loader_1.saveUnifiedConfig)(unifiedConfig);
175
+ }
176
+ exports.saveCompositeVariantUnified = saveCompositeVariantUnified;
120
177
  /**
121
178
  * Save variant to unified config
122
179
  */
@@ -125,7 +182,7 @@ function saveVariantUnified(name, provider, settingsPath, account, port) {
125
182
  if (!config.cliproxy) {
126
183
  config.cliproxy = {
127
184
  oauth_accounts: {},
128
- providers: ['gemini', 'codex', 'agy', 'qwen', 'iflow', 'kiro', 'ghcp', 'claude'],
185
+ providers: [...unified_config_types_1.CLIPROXY_SUPPORTED_PROVIDERS],
129
186
  variants: {},
130
187
  };
131
188
  }
@@ -183,7 +240,23 @@ function removeVariantFromUnifiedConfig(name) {
183
240
  const variant = config.cliproxy.variants[name];
184
241
  delete config.cliproxy.variants[name];
185
242
  (0, unified_config_loader_1.saveUnifiedConfig)(config);
186
- return { provider: variant.provider, settings: variant.settings, port: variant.port };
243
+ if ('type' in variant && variant.type === 'composite') {
244
+ const composite = variant;
245
+ return {
246
+ provider: composite.tiers[composite.default_tier].provider,
247
+ settings: composite.settings,
248
+ port: composite.port,
249
+ type: 'composite',
250
+ default_tier: composite.default_tier,
251
+ tiers: composite.tiers,
252
+ };
253
+ }
254
+ const singleVariant = variant;
255
+ return {
256
+ provider: singleVariant.provider,
257
+ settings: singleVariant.settings,
258
+ port: singleVariant.port,
259
+ };
187
260
  }
188
261
  exports.removeVariantFromUnifiedConfig = removeVariantFromUnifiedConfig;
189
262
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"variant-config-adapter.js","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-config-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variant-config-adapter.js","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-config-adapter.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  * Supports both unified config (config.yaml) and legacy JSON format.
6
6
  */
7
7
  import { CLIProxyProfileName } from '../../auth/profile-detector';
8
+ import { CompositeTierConfig } from '../../config/unified-config-types';
8
9
  import { VariantConfig } from './variant-config-adapter';
9
10
  export type { VariantConfig } from './variant-config-adapter';
10
11
  /** Result of variant operations */
@@ -49,4 +50,29 @@ export interface UpdateVariantOptions {
49
50
  * Update an existing CLIProxy variant
50
51
  */
51
52
  export declare function updateVariant(name: string, updates: UpdateVariantOptions): VariantOperationResult;
53
+ /** Composite variant creation options */
54
+ export interface CreateCompositeVariantOptions {
55
+ name: string;
56
+ defaultTier: 'opus' | 'sonnet' | 'haiku';
57
+ tiers: {
58
+ opus: CompositeTierConfig;
59
+ sonnet: CompositeTierConfig;
60
+ haiku: CompositeTierConfig;
61
+ };
62
+ }
63
+ /**
64
+ * Create a new composite CLIProxy variant.
65
+ * Mixes different providers per tier using CLIProxyAPI root endpoints.
66
+ */
67
+ export declare function createCompositeVariant(options: CreateCompositeVariantOptions): VariantOperationResult;
68
+ /** Update options for composite variant */
69
+ export interface UpdateCompositeVariantOptions {
70
+ defaultTier?: 'opus' | 'sonnet' | 'haiku';
71
+ tiers?: Partial<Record<'opus' | 'sonnet' | 'haiku', CompositeTierConfig>>;
72
+ }
73
+ /**
74
+ * Update an existing composite CLIProxy variant.
75
+ * Merges changes with existing config and regenerates settings file.
76
+ */
77
+ export declare function updateCompositeVariant(name: string, updates: UpdateCompositeVariantOptions): VariantOperationResult;
52
78
  //# sourceMappingURL=variant-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variant-service.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAelE,OAAO,EACL,aAAa,EAQd,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB/D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAUpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,sBAAsB,CAsCxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAmClE;AAED,iCAAiC;AACjC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,sBAAsB,CA4DjG"}
1
+ {"version":3,"file":"variant-service.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAA0B,MAAM,mCAAmC,CAAC;AAmBhG,OAAO,EACL,aAAa,EASd,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB/D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAUpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,sBAAsB,CAsCxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CA+ClE;AAED,iCAAiC;AACjC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,sBAAsB,CAyFjG;AAED,yCAAyC;AACzC,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE;QACL,IAAI,EAAE,mBAAmB,CAAC;QAC1B,MAAM,EAAE,mBAAmB,CAAC;QAC5B,KAAK,EAAE,mBAAmB,CAAC;KAC5B,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,6BAA6B,GACrC,sBAAsB,CAyDxB;AAED,2CAA2C;AAC3C,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;CAC3E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,6BAA6B,GACrC,sBAAsB,CAgFxB"}
@@ -29,7 +29,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
29
29
  return result;
30
30
  };
31
31
  Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.updateVariant = exports.removeVariant = exports.createVariant = exports.listVariants = exports.variantExists = exports.validateProviderBackend = exports.validateProfileName = void 0;
32
+ exports.updateCompositeVariant = exports.createCompositeVariant = exports.updateVariant = exports.removeVariant = exports.createVariant = exports.listVariants = exports.variantExists = exports.validateProviderBackend = exports.validateProfileName = void 0;
33
33
  const os = __importStar(require("os"));
34
34
  const path = __importStar(require("path"));
35
35
  const types_1 = require("../types");
@@ -39,6 +39,9 @@ const platform_detector_1 = require("../platform-detector");
39
39
  const unified_config_loader_2 = require("../../config/unified-config-loader");
40
40
  const config_generator_1 = require("../config-generator");
41
41
  const session_tracker_1 = require("../session-tracker");
42
+ const ui_1 = require("../../utils/ui");
43
+ const config_manager_1 = require("../../utils/config-manager");
44
+ const composite_validator_1 = require("../composite-validator");
42
45
  const variant_settings_1 = require("./variant-settings");
43
46
  const variant_config_adapter_1 = require("./variant-config-adapter");
44
47
  /**
@@ -132,6 +135,19 @@ exports.createVariant = createVariant;
132
135
  */
133
136
  function removeVariant(name) {
134
137
  try {
138
+ // First check if variant exists and has active sessions
139
+ const variants = (0, variant_config_adapter_1.listVariantsFromConfig)();
140
+ const existingVariant = variants[name];
141
+ if (!existingVariant) {
142
+ return { success: false, error: `Variant '${name}' not found` };
143
+ }
144
+ // Check for active sessions on this variant's port before deletion
145
+ if (existingVariant.port && (0, session_tracker_1.hasActiveSessions)(existingVariant.port)) {
146
+ return {
147
+ success: false,
148
+ error: `Cannot delete variant '${name}': CLIProxy is running with active sessions. Stop the session first.`,
149
+ };
150
+ }
135
151
  let variant;
136
152
  if ((0, unified_config_loader_2.isUnifiedMode)()) {
137
153
  const unifiedVariant = (0, variant_config_adapter_1.removeVariantFromUnifiedConfig)(name);
@@ -156,10 +172,7 @@ function removeVariant(name) {
156
172
  (0, session_tracker_1.deleteSessionLockForPort)(variant.port);
157
173
  }
158
174
  }
159
- if (!variant) {
160
- return { success: false, error: `Variant '${name}' not found` };
161
- }
162
- return { success: true, variant };
175
+ return { success: true, variant: variant ?? undefined };
163
176
  }
164
177
  catch (error) {
165
178
  return { success: false, error: error.message };
@@ -176,10 +189,27 @@ function updateVariant(name, updates) {
176
189
  if (!existing) {
177
190
  return { success: false, error: `Variant '${name}' not found` };
178
191
  }
179
- // Update model in settings file if provided
180
- if (updates.model !== undefined && existing.settings) {
192
+ if (existing.type === 'composite') {
193
+ console.log((0, ui_1.warn)('Cannot update composite variant properties directly. Remove and recreate, or edit config.yaml.'));
194
+ return { success: false, error: 'Composite variant update not supported' };
195
+ }
196
+ const providerChanged = updates.provider !== undefined && updates.provider !== existing.provider;
197
+ const hasModelUpdate = updates.model !== undefined && updates.model.trim().length > 0;
198
+ if (providerChanged && !hasModelUpdate) {
199
+ return {
200
+ success: false,
201
+ error: 'Changing provider requires model update in the same request',
202
+ };
203
+ }
204
+ // Update settings file
205
+ if (existing.settings) {
181
206
  const settingsPath = existing.settings.replace(/^~/, os.homedir());
182
- (0, variant_settings_1.updateSettingsModel)(settingsPath, updates.model);
207
+ if (providerChanged) {
208
+ (0, variant_settings_1.updateSettingsProviderAndModel)(settingsPath, updates.provider, updates.model?.trim() || '', existing.port);
209
+ }
210
+ else if (updates.model !== undefined) {
211
+ (0, variant_settings_1.updateSettingsModel)(settingsPath, updates.model, existing.provider);
212
+ }
183
213
  }
184
214
  // Update config entry if provider or account changed
185
215
  if (updates.provider !== undefined || updates.account !== undefined) {
@@ -203,7 +233,7 @@ function updateVariant(name, updates) {
203
233
  success: true,
204
234
  variant: {
205
235
  provider: updates.provider ?? existing.provider,
206
- model: updates.model ?? existing.model,
236
+ model: updates.model?.trim() || existing.model,
207
237
  account: updates.account !== undefined ? updates.account : existing.account,
208
238
  port: existing.port,
209
239
  settings: existing.settings,
@@ -215,4 +245,129 @@ function updateVariant(name, updates) {
215
245
  }
216
246
  }
217
247
  exports.updateVariant = updateVariant;
248
+ /**
249
+ * Create a new composite CLIProxy variant.
250
+ * Mixes different providers per tier using CLIProxyAPI root endpoints.
251
+ */
252
+ function createCompositeVariant(options) {
253
+ if (!(0, unified_config_loader_2.isUnifiedMode)()) {
254
+ throw new Error('Composite variants require unified config (config.yaml). Run "ccs migrate" first.');
255
+ }
256
+ try {
257
+ const { name, defaultTier, tiers } = options;
258
+ const validationError = (0, composite_validator_1.validateCompositeTiers)(tiers, {
259
+ defaultTier,
260
+ requireAllTiers: true,
261
+ });
262
+ if (validationError) {
263
+ return { success: false, error: validationError };
264
+ }
265
+ // Validate all tier providers against backend compatibility
266
+ const tierNames = ['opus', 'sonnet', 'haiku'];
267
+ for (const tier of tierNames) {
268
+ const backendError = validateProviderBackend(tiers[tier].provider);
269
+ if (backendError) {
270
+ return { success: false, error: `${tier} tier: ${backendError}` };
271
+ }
272
+ }
273
+ // Allocate unique port for this composite variant
274
+ const port = (0, variant_config_adapter_1.getNextAvailablePort)();
275
+ // Create settings file with root URL + per-tier models
276
+ const settingsPath = (0, variant_settings_1.createCompositeSettingsFile)(name, tiers, defaultTier, port);
277
+ // Save composite config to unified config
278
+ const compositeConfig = {
279
+ type: 'composite',
280
+ default_tier: defaultTier,
281
+ tiers,
282
+ settings: settingsPath,
283
+ port,
284
+ };
285
+ (0, variant_config_adapter_1.saveCompositeVariantUnified)(name, compositeConfig);
286
+ return {
287
+ success: true,
288
+ settingsPath,
289
+ variant: {
290
+ provider: tiers[defaultTier].provider,
291
+ type: 'composite',
292
+ default_tier: defaultTier,
293
+ tiers,
294
+ port,
295
+ },
296
+ };
297
+ }
298
+ catch (error) {
299
+ return { success: false, error: error.message };
300
+ }
301
+ }
302
+ exports.createCompositeVariant = createCompositeVariant;
303
+ /**
304
+ * Update an existing composite CLIProxy variant.
305
+ * Merges changes with existing config and regenerates settings file.
306
+ */
307
+ function updateCompositeVariant(name, updates) {
308
+ if (!(0, unified_config_loader_2.isUnifiedMode)()) {
309
+ throw new Error('Composite variants require unified config (config.yaml).');
310
+ }
311
+ try {
312
+ const variants = (0, variant_config_adapter_1.listVariantsFromConfig)();
313
+ const existing = variants[name];
314
+ if (!existing) {
315
+ return { success: false, error: `Variant '${name}' not found` };
316
+ }
317
+ if (existing.type !== 'composite' || !existing.tiers) {
318
+ return { success: false, error: `Variant '${name}' is not a composite variant` };
319
+ }
320
+ // Deep merge tiers to preserve optional fields (fallback, thinking, account)
321
+ const mergedTiers = {
322
+ opus: { ...existing.tiers.opus, ...updates.tiers?.opus },
323
+ sonnet: { ...existing.tiers.sonnet, ...updates.tiers?.sonnet },
324
+ haiku: { ...existing.tiers.haiku, ...updates.tiers?.haiku },
325
+ };
326
+ const newDefaultTier = updates.defaultTier ?? existing.default_tier ?? 'sonnet';
327
+ const validationError = (0, composite_validator_1.validateCompositeTiers)(mergedTiers, {
328
+ defaultTier: newDefaultTier,
329
+ requireAllTiers: true,
330
+ });
331
+ if (validationError) {
332
+ return { success: false, error: validationError };
333
+ }
334
+ // Validate all tier providers against backend compatibility
335
+ const tierNames = ['opus', 'sonnet', 'haiku'];
336
+ for (const tier of tierNames) {
337
+ const backendError = validateProviderBackend(mergedTiers[tier].provider);
338
+ if (backendError) {
339
+ return { success: false, error: `${tier} tier: ${backendError}` };
340
+ }
341
+ }
342
+ // Preserve existing settings path when configured; otherwise use default path.
343
+ const settingsRef = existing.settings || path.join((0, config_manager_1.getCcsDir)(), `composite-${name}.settings.json`);
344
+ // Create new settings file with updated config
345
+ const settingsPath = (0, variant_settings_1.createCompositeSettingsFile)(name, mergedTiers, newDefaultTier, existing.port, settingsRef);
346
+ // Save updated composite config to unified config
347
+ const compositeConfig = {
348
+ type: 'composite',
349
+ default_tier: newDefaultTier,
350
+ tiers: mergedTiers,
351
+ settings: settingsRef,
352
+ port: existing.port,
353
+ };
354
+ (0, variant_config_adapter_1.saveCompositeVariantUnified)(name, compositeConfig);
355
+ return {
356
+ success: true,
357
+ settingsPath,
358
+ variant: {
359
+ provider: mergedTiers[newDefaultTier].provider,
360
+ type: 'composite',
361
+ default_tier: newDefaultTier,
362
+ tiers: mergedTiers,
363
+ port: existing.port,
364
+ settings: settingsRef,
365
+ },
366
+ };
367
+ }
368
+ catch (error) {
369
+ return { success: false, error: error.message };
370
+ }
371
+ }
372
+ exports.updateCompositeVariant = updateCompositeVariant;
218
373
  //# sourceMappingURL=variant-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"variant-service.js","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variant-service.js","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-service.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  * These files contain environment variables for Claude CLI integration.
6
6
  */
7
7
  import { CLIProxyProfileName } from '../../auth/profile-detector';
8
+ import { CompositeTierConfig } from '../../config/unified-config-types';
8
9
  /**
9
10
  * Get settings file path for a variant
10
11
  */
@@ -25,6 +26,18 @@ export declare function createSettingsFile(name: string, provider: CLIProxyProfi
25
26
  * Create settings.json file for CLIProxy variant (unified mode)
26
27
  */
27
28
  export declare function createSettingsFileUnified(name: string, provider: CLIProxyProfileName, model: string, port?: number): string;
29
+ /**
30
+ * Create settings.json file for a composite variant.
31
+ */
32
+ export declare function createCompositeSettingsFile(name: string, tiers: {
33
+ opus: CompositeTierConfig;
34
+ sonnet: CompositeTierConfig;
35
+ haiku: CompositeTierConfig;
36
+ }, defaultTier: 'opus' | 'sonnet' | 'haiku', port?: number, settingsPathOverride?: string): string;
37
+ /**
38
+ * Get relative settings path for a composite variant
39
+ */
40
+ export declare function getCompositeRelativeSettingsPath(name: string): string;
28
41
  /**
29
42
  * Delete settings file if it exists.
30
43
  * Uses expandPath() for cross-platform path handling.
@@ -33,5 +46,10 @@ export declare function deleteSettingsFile(settingsPath: string): boolean;
33
46
  /**
34
47
  * Update model in an existing settings file
35
48
  */
36
- export declare function updateSettingsModel(settingsPath: string, model: string): void;
49
+ export declare function updateSettingsModel(settingsPath: string, model: string, provider?: CLIProxyProfileName): void;
50
+ /**
51
+ * Update provider + model core env vars in an existing single-provider settings file.
52
+ * Preserves non-core env vars and top-level settings keys (hooks, presets, etc.).
53
+ */
54
+ export declare function updateSettingsProviderAndModel(settingsPath: string, provider: CLIProxyProfileName, model: string, port?: number): void;
37
55
  //# sourceMappingURL=variant-settings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variant-settings.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AA0DlE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAA8B,GACnC,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAA8B,GACnC,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAwB7E"}
1
+ {"version":3,"file":"variant-settings.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/services/variant-settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAKlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAoFxE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAA8B,GACnC,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAA8B,GACnC,MAAM,CAkBR;AAwBD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,EAC7F,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,EACxC,IAAI,GAAE,MAA8B,EACpC,oBAAoB,CAAC,EAAE,MAAM,GAC5B,MAAM,CA0DR;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,IAAI,CA6CN;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAA8B,GACnC,IAAI,CA+CN"}