@kaitranntt/ccs 7.57.1 → 7.57.2-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 (130) hide show
  1. package/dist/ccs.js +35 -2
  2. package/dist/ccs.js.map +1 -1
  3. package/dist/channels/official-channels-runtime.d.ts +156 -0
  4. package/dist/channels/official-channels-runtime.d.ts.map +1 -0
  5. package/dist/channels/official-channels-runtime.js +658 -0
  6. package/dist/channels/official-channels-runtime.js.map +1 -0
  7. package/dist/channels/official-channels-store.d.ts +23 -0
  8. package/dist/channels/official-channels-store.d.ts.map +1 -0
  9. package/dist/channels/official-channels-store.js +270 -0
  10. package/dist/channels/official-channels-store.js.map +1 -0
  11. package/dist/cliproxy/ai-providers/config-store.d.ts +1 -1
  12. package/dist/cliproxy/binary-manager.d.ts +12 -1
  13. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  14. package/dist/cliproxy/binary-manager.js +15 -9
  15. package/dist/cliproxy/binary-manager.js.map +1 -1
  16. package/dist/cliproxy/codex-plan-compatibility.d.ts +11 -1
  17. package/dist/cliproxy/codex-plan-compatibility.d.ts.map +1 -1
  18. package/dist/cliproxy/codex-plan-compatibility.js +10 -6
  19. package/dist/cliproxy/codex-plan-compatibility.js.map +1 -1
  20. package/dist/commands/api-command/export-command.d.ts +12 -1
  21. package/dist/commands/api-command/export-command.d.ts.map +1 -1
  22. package/dist/commands/api-command/export-command.js +18 -10
  23. package/dist/commands/api-command/export-command.js.map +1 -1
  24. package/dist/commands/cliproxy/resolve-lifecycle-port.d.ts +4 -1
  25. package/dist/commands/cliproxy/resolve-lifecycle-port.d.ts.map +1 -1
  26. package/dist/commands/cliproxy/resolve-lifecycle-port.js +1 -2
  27. package/dist/commands/cliproxy/resolve-lifecycle-port.js.map +1 -1
  28. package/dist/commands/config-channels-command.d.ts +24 -0
  29. package/dist/commands/config-channels-command.d.ts.map +1 -0
  30. package/dist/commands/config-channels-command.js +359 -0
  31. package/dist/commands/config-channels-command.js.map +1 -0
  32. package/dist/commands/config-command-options.d.ts.map +1 -1
  33. package/dist/commands/config-command-options.js +15 -0
  34. package/dist/commands/config-command-options.js.map +1 -1
  35. package/dist/commands/config-command.d.ts +26 -1
  36. package/dist/commands/config-command.d.ts.map +1 -1
  37. package/dist/commands/config-command.js +56 -33
  38. package/dist/commands/config-command.js.map +1 -1
  39. package/dist/commands/help-command.d.ts.map +1 -1
  40. package/dist/commands/help-command.js +26 -1
  41. package/dist/commands/help-command.js.map +1 -1
  42. package/dist/config/migration-manager.d.ts +1 -0
  43. package/dist/config/migration-manager.d.ts.map +1 -1
  44. package/dist/config/migration-manager.js +47 -5
  45. package/dist/config/migration-manager.js.map +1 -1
  46. package/dist/config/unified-config-loader.d.ts +11 -1
  47. package/dist/config/unified-config-loader.d.ts.map +1 -1
  48. package/dist/config/unified-config-loader.js +67 -1
  49. package/dist/config/unified-config-loader.js.map +1 -1
  50. package/dist/config/unified-config-types.d.ts +24 -1
  51. package/dist/config/unified-config-types.d.ts.map +1 -1
  52. package/dist/config/unified-config-types.js +13 -2
  53. package/dist/config/unified-config-types.js.map +1 -1
  54. package/dist/cursor/daemon-process-ownership.d.ts.map +1 -1
  55. package/dist/cursor/daemon-process-ownership.js +19 -6
  56. package/dist/cursor/daemon-process-ownership.js.map +1 -1
  57. package/dist/management/shared-manager.d.ts +2 -1
  58. package/dist/management/shared-manager.d.ts.map +1 -1
  59. package/dist/management/shared-manager.js +35 -18
  60. package/dist/management/shared-manager.js.map +1 -1
  61. package/dist/ui/assets/{accounts-DD2Lodv2.js → accounts-DhwOlckG.js} +1 -1
  62. package/dist/ui/assets/{alert-dialog-D21M1jKW.js → alert-dialog-fT8u0tgK.js} +1 -1
  63. package/dist/ui/assets/{api-0PqftiRh.js → api-BitgYTMM.js} +1 -1
  64. package/dist/ui/assets/{auth-section-DEfVaTF2.js → auth-section-DpKCQvRx.js} +1 -1
  65. package/dist/ui/assets/{backups-section-7CMRUK1w.js → backups-section-BkJ3lKJW.js} +1 -1
  66. package/dist/ui/assets/channels-BvyQSPqh.js +1 -0
  67. package/dist/ui/assets/{checkbox-qsMNLxyT.js → checkbox-tb_qCjl5.js} +1 -1
  68. package/dist/ui/assets/{claude-extension-QCVnlD5g.js → claude-extension-DuiChqGK.js} +1 -1
  69. package/dist/ui/assets/{cliproxy-B4Ndh1vO.js → cliproxy-Bs_4fnWM.js} +1 -1
  70. package/dist/ui/assets/{cliproxy-ai-providers-D09jj99_.js → cliproxy-ai-providers-M_GEfD5K.js} +1 -1
  71. package/dist/ui/assets/{cliproxy-control-panel-CJZ3OH7x.js → cliproxy-control-panel-DA_wPmGH.js} +1 -1
  72. package/dist/ui/assets/{confirm-dialog-DDPaIGt-.js → confirm-dialog-i_HasZdE.js} +1 -1
  73. package/dist/ui/assets/{copilot-CZ5-TuDW.js → copilot-VdMiiNbo.js} +2 -2
  74. package/dist/ui/assets/{cursor-CLCJ8JwP.js → cursor-ChVclQ9Y.js} +1 -1
  75. package/dist/ui/assets/{droid-C4ndg4ND.js → droid-BxW4BW_B.js} +2 -2
  76. package/dist/ui/assets/{globalenv-section-u25Fhfko.js → globalenv-section-BYoCEvDq.js} +1 -1
  77. package/dist/ui/assets/{health-S3_uVEZI.js → health-DL7I4uEa.js} +1 -1
  78. package/dist/ui/assets/icons-EbXCUruD.js +1 -0
  79. package/dist/ui/assets/{index-BIWNdVva.js → index-BRY2NQqb.js} +12 -12
  80. package/dist/ui/assets/index-CzllrOuG.css +1 -0
  81. package/dist/ui/assets/{index-ainA13O4.js → index-D7MsmHFk.js} +1 -1
  82. package/dist/ui/assets/{index-DjUsD3ce.js → index-DUlJ_g8Y.js} +1 -1
  83. package/dist/ui/assets/{index-DW1sWpmn.js → index-Dp1VYByi.js} +1 -1
  84. package/dist/ui/assets/index-o3dRX4_U.js +1 -0
  85. package/dist/ui/assets/{proxy-status-widget-D65cBYFv.js → proxy-status-widget-BKym_sUO.js} +1 -1
  86. package/dist/ui/assets/{searchable-select-C2HgCDJL.js → searchable-select-Dcnq9qM7.js} +1 -1
  87. package/dist/ui/assets/{separator-BlhCtc9l.js → separator-CYVPjAkH.js} +1 -1
  88. package/dist/ui/assets/{shared-DZkW1mRU.js → shared-B5J2CPHp.js} +1 -1
  89. package/dist/ui/assets/{switch-JdcUdtbh.js → switch-CcS0XD-4.js} +1 -1
  90. package/dist/ui/assets/{updates-DtnC6jcH.js → updates-DPkHXIaq.js} +1 -1
  91. package/dist/ui/index.html +3 -3
  92. package/dist/utils/claude-config-path.d.ts +6 -0
  93. package/dist/utils/claude-config-path.d.ts.map +1 -1
  94. package/dist/utils/claude-config-path.js +11 -2
  95. package/dist/utils/claude-config-path.js.map +1 -1
  96. package/dist/utils/claude-detector.d.ts +15 -1
  97. package/dist/utils/claude-detector.d.ts.map +1 -1
  98. package/dist/utils/claude-detector.js +100 -1
  99. package/dist/utils/claude-detector.js.map +1 -1
  100. package/dist/utils/error-manager.d.ts +1 -1
  101. package/dist/utils/error-manager.d.ts.map +1 -1
  102. package/dist/utils/error-manager.js.map +1 -1
  103. package/dist/utils/sensitive-keys.d.ts.map +1 -1
  104. package/dist/utils/sensitive-keys.js +2 -0
  105. package/dist/utils/sensitive-keys.js.map +1 -1
  106. package/dist/utils/websearch/status.d.ts +1 -0
  107. package/dist/utils/websearch/status.d.ts.map +1 -1
  108. package/dist/utils/websearch/status.js +12 -8
  109. package/dist/utils/websearch/status.js.map +1 -1
  110. package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
  111. package/dist/web-server/middleware/auth-middleware.js +3 -4
  112. package/dist/web-server/middleware/auth-middleware.js.map +1 -1
  113. package/dist/web-server/routes/channels-routes.d.ts +3 -0
  114. package/dist/web-server/routes/channels-routes.d.ts.map +1 -0
  115. package/dist/web-server/routes/channels-routes.js +164 -0
  116. package/dist/web-server/routes/channels-routes.js.map +1 -0
  117. package/dist/web-server/routes/config-routes.d.ts.map +1 -1
  118. package/dist/web-server/routes/config-routes.js +412 -4
  119. package/dist/web-server/routes/config-routes.js.map +1 -1
  120. package/dist/web-server/routes/index.d.ts.map +1 -1
  121. package/dist/web-server/routes/index.js +2 -0
  122. package/dist/web-server/routes/index.js.map +1 -1
  123. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts +5 -2
  124. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -1
  125. package/dist/web-server/usage/cliproxy-usage-syncer.js +5 -5
  126. package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -1
  127. package/package.json +1 -1
  128. package/dist/ui/assets/icons-BwsSbo2z.js +0 -1
  129. package/dist/ui/assets/index-Bp4s-Led.css +0 -1
  130. package/dist/ui/assets/index-DgtKMxaq.js +0 -1
@@ -32,7 +32,359 @@ const unified_config_loader_1 = require("../../config/unified-config-loader");
32
32
  const migration_manager_1 = require("../../config/migration-manager");
33
33
  const unified_config_types_1 = require("../../config/unified-config-types");
34
34
  const account_context_1 = require("../../auth/account-context");
35
+ const unified_config_types_2 = require("../../config/unified-config-types");
36
+ const auth_middleware_1 = require("../middleware/auth-middleware");
37
+ const sensitive_keys_1 = require("../../utils/sensitive-keys");
35
38
  const router = (0, express_1.Router)();
39
+ const LOCAL_CONFIG_ERROR = 'Local configuration endpoints require localhost access when dashboard auth is disabled.';
40
+ const REDACTED_SECRET_VALUE = '[redacted]';
41
+ const RAW_YAML_REDACTED_PATHS = new Set([
42
+ 'cliproxy.auth.api_key',
43
+ 'cliproxy.auth.management_secret',
44
+ 'cliproxy_server.remote.auth_token',
45
+ 'cliproxy_server.remote.management_key',
46
+ 'dashboard_auth.password_hash',
47
+ ]);
48
+ router.use((req, res, next) => {
49
+ if ((0, auth_middleware_1.requireLocalAccessWhenAuthDisabled)(req, res, LOCAL_CONFIG_ERROR)) {
50
+ next();
51
+ }
52
+ });
53
+ function redactSecretValue(value) {
54
+ if (value === undefined) {
55
+ return undefined;
56
+ }
57
+ return value.length > 0 ? REDACTED_SECRET_VALUE : value;
58
+ }
59
+ function sanitizeUnifiedConfigForDashboard(config) {
60
+ return {
61
+ ...config,
62
+ global_env: config.global_env
63
+ ? {
64
+ ...config.global_env,
65
+ env: Object.fromEntries(Object.entries(config.global_env.env).map(([key, value]) => [
66
+ key,
67
+ (0, sensitive_keys_1.isSensitiveKey)(key) && value ? REDACTED_SECRET_VALUE : value,
68
+ ])),
69
+ }
70
+ : config.global_env,
71
+ cliproxy: {
72
+ ...config.cliproxy,
73
+ auth: sanitizeCliproxyAuthConfig(config.cliproxy.auth),
74
+ variants: Object.fromEntries(Object.entries(config.cliproxy.variants).map(([variantName, variantConfig]) => [
75
+ variantName,
76
+ sanitizeCliproxyVariantAuth(variantConfig),
77
+ ])),
78
+ },
79
+ cliproxy_server: config.cliproxy_server
80
+ ? {
81
+ ...config.cliproxy_server,
82
+ remote: {
83
+ ...config.cliproxy_server.remote,
84
+ auth_token: redactSecretValue(config.cliproxy_server.remote.auth_token) ?? '',
85
+ management_key: redactSecretValue(config.cliproxy_server.remote.management_key),
86
+ },
87
+ }
88
+ : config.cliproxy_server,
89
+ dashboard_auth: config.dashboard_auth
90
+ ? {
91
+ ...config.dashboard_auth,
92
+ password_hash: redactSecretValue(config.dashboard_auth.password_hash) ?? '',
93
+ }
94
+ : config.dashboard_auth,
95
+ };
96
+ }
97
+ function sanitizeCliproxyAuthConfig(auth) {
98
+ if (!auth) {
99
+ return auth;
100
+ }
101
+ return {
102
+ ...auth,
103
+ api_key: redactSecretValue(auth.api_key),
104
+ management_secret: redactSecretValue(auth.management_secret),
105
+ };
106
+ }
107
+ function sanitizeCliproxyVariantAuth(variantConfig) {
108
+ return {
109
+ ...variantConfig,
110
+ auth: sanitizeCliproxyAuthConfig(variantConfig.auth),
111
+ };
112
+ }
113
+ function normalizeYamlKey(rawKey) {
114
+ const key = rawKey.trim();
115
+ if ((key.startsWith('"') && key.endsWith('"')) || (key.startsWith("'") && key.endsWith("'"))) {
116
+ return key.slice(1, -1);
117
+ }
118
+ return key;
119
+ }
120
+ function splitYamlScalarAndComment(valuePortion) {
121
+ let inSingleQuote = false;
122
+ let inDoubleQuote = false;
123
+ for (let index = 0; index < valuePortion.length; index += 1) {
124
+ const char = valuePortion[index];
125
+ if (char === "'" && !inDoubleQuote) {
126
+ if (inSingleQuote && valuePortion[index + 1] === "'") {
127
+ index += 1;
128
+ continue;
129
+ }
130
+ inSingleQuote = !inSingleQuote;
131
+ continue;
132
+ }
133
+ if (char === '"' && !inSingleQuote && valuePortion[index - 1] !== '\\') {
134
+ inDoubleQuote = !inDoubleQuote;
135
+ continue;
136
+ }
137
+ if (char === '#' &&
138
+ !inSingleQuote &&
139
+ !inDoubleQuote &&
140
+ (index === 0 || /\s/.test(valuePortion[index - 1]))) {
141
+ const prefix = valuePortion.slice(0, index);
142
+ const spacing = prefix.match(/\s*$/)?.[0] ?? '';
143
+ return {
144
+ value: prefix.trimEnd(),
145
+ comment: `${spacing}${valuePortion.slice(index)}`,
146
+ };
147
+ }
148
+ }
149
+ return {
150
+ value: valuePortion.trimEnd(),
151
+ comment: '',
152
+ };
153
+ }
154
+ function redactYamlScalarLine(line) {
155
+ const match = line.match(/^(\s*[^:#][^:]*:\s*)(.*)$/);
156
+ if (!match) {
157
+ return line;
158
+ }
159
+ const [, prefix, rawTail] = match;
160
+ const leadingSpacing = rawTail.match(/^\s*/)?.[0] ?? '';
161
+ const { value, comment } = splitYamlScalarAndComment(rawTail.slice(leadingSpacing.length));
162
+ const trimmedValue = value.trim();
163
+ if (trimmedValue.length === 0 || trimmedValue === '""' || trimmedValue === "''") {
164
+ return line;
165
+ }
166
+ const quote = trimmedValue.startsWith('"') && trimmedValue.endsWith('"')
167
+ ? '"'
168
+ : trimmedValue.startsWith("'") && trimmedValue.endsWith("'")
169
+ ? "'"
170
+ : '';
171
+ const redactedValue = quote ? `${quote}${REDACTED_SECRET_VALUE}${quote}` : REDACTED_SECRET_VALUE;
172
+ return `${prefix}${leadingSpacing}${redactedValue}${comment}`;
173
+ }
174
+ function isYamlBlockScalarIndicator(value) {
175
+ const trimmedValue = value.trim();
176
+ if (!(trimmedValue.startsWith('|') || trimmedValue.startsWith('>'))) {
177
+ return false;
178
+ }
179
+ const indicators = trimmedValue.slice(1);
180
+ if (indicators.length === 0) {
181
+ return true;
182
+ }
183
+ if (indicators.length > 2) {
184
+ return false;
185
+ }
186
+ let sawChompingIndicator = false;
187
+ let sawIndentIndicator = false;
188
+ for (const indicator of indicators) {
189
+ if ((indicator === '+' || indicator === '-') && !sawChompingIndicator) {
190
+ sawChompingIndicator = true;
191
+ continue;
192
+ }
193
+ if (/[1-9]/.test(indicator) && !sawIndentIndicator) {
194
+ sawIndentIndicator = true;
195
+ continue;
196
+ }
197
+ return false;
198
+ }
199
+ return true;
200
+ }
201
+ function shouldRedactRawYamlPath(pathKeys) {
202
+ if (pathKeys.length === 3 &&
203
+ pathKeys[0] === 'global_env' &&
204
+ pathKeys[1] === 'env' &&
205
+ (0, sensitive_keys_1.isSensitiveKey)(pathKeys[2])) {
206
+ return true;
207
+ }
208
+ if (pathKeys.length === 3 &&
209
+ pathKeys[0] === 'cliproxy' &&
210
+ pathKeys[1] === 'auth' &&
211
+ (pathKeys[2] === 'api_key' || pathKeys[2] === 'management_secret')) {
212
+ return true;
213
+ }
214
+ if (pathKeys.length === 5 &&
215
+ pathKeys[0] === 'cliproxy' &&
216
+ pathKeys[1] === 'variants' &&
217
+ pathKeys[3] === 'auth' &&
218
+ (pathKeys[4] === 'api_key' || pathKeys[4] === 'management_secret')) {
219
+ return true;
220
+ }
221
+ return RAW_YAML_REDACTED_PATHS.has(pathKeys.join('.'));
222
+ }
223
+ function redactRawConfigYamlForDashboard(content) {
224
+ const stack = [];
225
+ const redactedLines = [];
226
+ const lines = content.split('\n');
227
+ for (let index = 0; index < lines.length; index += 1) {
228
+ const line = lines[index];
229
+ const mappingMatch = line.match(/^(\s*)([^:#][^:]*):(.*)$/);
230
+ if (!mappingMatch) {
231
+ redactedLines.push(line);
232
+ continue;
233
+ }
234
+ const [, indentText, rawKey, rawTail] = mappingMatch;
235
+ if (rawKey.trimStart().startsWith('-')) {
236
+ redactedLines.push(line);
237
+ continue;
238
+ }
239
+ const indent = indentText.length;
240
+ while (stack.length > 0 && stack[stack.length - 1].indent >= indent) {
241
+ stack.pop();
242
+ }
243
+ stack.push({ indent, key: normalizeYamlKey(rawKey) });
244
+ const currentPath = stack.map((entry) => entry.key);
245
+ if (!shouldRedactRawYamlPath(currentPath)) {
246
+ redactedLines.push(line);
247
+ continue;
248
+ }
249
+ const redactedLine = redactYamlScalarLine(line);
250
+ redactedLines.push(redactedLine);
251
+ const leadingSpacing = rawTail.match(/^\s*/)?.[0] ?? '';
252
+ const { value } = splitYamlScalarAndComment(rawTail.slice(leadingSpacing.length));
253
+ const trimmedValue = value.trim();
254
+ if (!isYamlBlockScalarIndicator(trimmedValue)) {
255
+ continue;
256
+ }
257
+ while (index + 1 < lines.length) {
258
+ const nextLine = lines[index + 1];
259
+ if (nextLine.trim().length === 0) {
260
+ index += 1;
261
+ continue;
262
+ }
263
+ const nextIndent = nextLine.match(/^\s*/)?.[0].length ?? 0;
264
+ if (nextIndent <= indent) {
265
+ break;
266
+ }
267
+ index += 1;
268
+ }
269
+ }
270
+ return redactedLines.join('\n');
271
+ }
272
+ function restoreRedactedSecretValue(currentValue, nextValue) {
273
+ if (nextValue === undefined || nextValue === REDACTED_SECRET_VALUE) {
274
+ return currentValue;
275
+ }
276
+ return nextValue;
277
+ }
278
+ function mergeGlobalEnvConfig(currentConfig, nextConfig) {
279
+ const nextGlobalEnv = nextConfig.global_env;
280
+ if (!nextGlobalEnv) {
281
+ return currentConfig.global_env;
282
+ }
283
+ const currentEnv = currentConfig.global_env?.env ?? {};
284
+ const nextEnv = nextGlobalEnv.env;
285
+ return {
286
+ enabled: nextGlobalEnv.enabled ?? currentConfig.global_env?.enabled ?? true,
287
+ env: nextEnv === undefined
288
+ ? currentEnv
289
+ : Object.fromEntries(Object.entries(nextEnv).map(([key, value]) => {
290
+ if (value === REDACTED_SECRET_VALUE && (0, sensitive_keys_1.isSensitiveKey)(key)) {
291
+ return [key, currentEnv[key] ?? value];
292
+ }
293
+ return [key, value];
294
+ })),
295
+ };
296
+ }
297
+ function mergeCliproxyServerConfig(currentConfig, nextConfig) {
298
+ const nextServer = nextConfig.cliproxy_server;
299
+ if (!nextServer) {
300
+ return currentConfig.cliproxy_server;
301
+ }
302
+ const nextRemote = nextServer.remote;
303
+ const currentServer = currentConfig.cliproxy_server ?? unified_config_types_2.DEFAULT_CLIPROXY_SERVER_CONFIG;
304
+ return {
305
+ remote: nextRemote === undefined
306
+ ? currentServer.remote
307
+ : {
308
+ ...nextRemote,
309
+ auth_token: restoreRedactedSecretValue(currentServer.remote.auth_token, nextRemote.auth_token) ??
310
+ '',
311
+ management_key: restoreRedactedSecretValue(currentServer.remote.management_key, nextRemote.management_key),
312
+ },
313
+ fallback: nextServer.fallback ?? currentServer.fallback,
314
+ local: nextServer.local ?? currentServer.local,
315
+ };
316
+ }
317
+ function mergeDashboardAuthConfig(currentConfig, nextConfig) {
318
+ const nextAuth = nextConfig.dashboard_auth;
319
+ if (!nextAuth) {
320
+ return currentConfig.dashboard_auth;
321
+ }
322
+ return {
323
+ ...nextAuth,
324
+ password_hash: restoreRedactedSecretValue(currentConfig.dashboard_auth?.password_hash, nextAuth.password_hash) ?? '',
325
+ };
326
+ }
327
+ function mergeCliproxyAuthField(currentValue, nextAuth, key) {
328
+ if (!Object.prototype.hasOwnProperty.call(nextAuth, key)) {
329
+ return undefined;
330
+ }
331
+ return restoreRedactedSecretValue(currentValue, nextAuth[key]);
332
+ }
333
+ function mergeCliproxyAuthConfig(currentAuth, nextAuth) {
334
+ if (!nextAuth) {
335
+ return currentAuth;
336
+ }
337
+ const mergedAuth = { ...nextAuth };
338
+ const apiKey = mergeCliproxyAuthField(currentAuth?.api_key, nextAuth, 'api_key');
339
+ const managementSecret = mergeCliproxyAuthField(currentAuth?.management_secret, nextAuth, 'management_secret');
340
+ if (apiKey === undefined) {
341
+ delete mergedAuth.api_key;
342
+ }
343
+ else {
344
+ mergedAuth.api_key = apiKey;
345
+ }
346
+ if (managementSecret === undefined) {
347
+ delete mergedAuth.management_secret;
348
+ }
349
+ else {
350
+ mergedAuth.management_secret = managementSecret;
351
+ }
352
+ return Object.keys(mergedAuth).length > 0 ? mergedAuth : undefined;
353
+ }
354
+ function mergeCliproxyVariantConfig(currentVariant, nextVariant) {
355
+ const mergedVariant = { ...nextVariant };
356
+ const mergedAuth = mergeCliproxyAuthConfig(currentVariant?.auth, nextVariant.auth);
357
+ if (mergedAuth === undefined) {
358
+ delete mergedVariant.auth;
359
+ }
360
+ else {
361
+ mergedVariant.auth = mergedAuth;
362
+ }
363
+ return mergedVariant;
364
+ }
365
+ function mergeCliproxyConfig(currentConfig, nextConfig) {
366
+ const nextCliproxy = nextConfig.cliproxy;
367
+ if (!nextCliproxy) {
368
+ return currentConfig.cliproxy;
369
+ }
370
+ const mergedCliproxy = {
371
+ ...nextCliproxy,
372
+ variants: nextCliproxy.variants === undefined
373
+ ? currentConfig.cliproxy.variants
374
+ : Object.fromEntries(Object.entries(nextCliproxy.variants).map(([variantName, nextVariant]) => [
375
+ variantName,
376
+ mergeCliproxyVariantConfig(currentConfig.cliproxy.variants[variantName], nextVariant),
377
+ ])),
378
+ };
379
+ const mergedAuth = mergeCliproxyAuthConfig(currentConfig.cliproxy.auth, nextCliproxy.auth);
380
+ if (mergedAuth === undefined) {
381
+ delete mergedCliproxy.auth;
382
+ }
383
+ else {
384
+ mergedCliproxy.auth = mergedAuth;
385
+ }
386
+ return mergedCliproxy;
387
+ }
36
388
  function validateAndNormalizeAccountContextMetadata(config) {
37
389
  if (typeof config !== 'object' || config === null) {
38
390
  return 'Invalid config payload';
@@ -119,7 +471,7 @@ router.get('/', (_req, res) => {
119
471
  res.status(500).json({ error: 'Failed to load config' });
120
472
  return;
121
473
  }
122
- res.json(config);
474
+ res.json(sanitizeUnifiedConfigForDashboard(config));
123
475
  });
124
476
  /**
125
477
  * GET /api/config/raw - Return raw YAML content for display
@@ -132,7 +484,7 @@ router.get('/raw', (_req, res) => {
132
484
  }
133
485
  try {
134
486
  const content = fs.readFileSync(yamlPath, 'utf8');
135
- res.type('text/plain').send(content);
487
+ res.type('text/plain').send(redactRawConfigYamlForDashboard(content));
136
488
  }
137
489
  catch (err) {
138
490
  res.status(500).json({ error: err.message });
@@ -153,7 +505,56 @@ router.put('/', (req, res) => {
153
505
  return;
154
506
  }
155
507
  try {
156
- (0, unified_config_loader_1.saveUnifiedConfig)(config);
508
+ (0, unified_config_loader_1.mutateUnifiedConfig)((currentConfig) => {
509
+ if ('setup_completed' in config) {
510
+ currentConfig.setup_completed = config.setup_completed;
511
+ }
512
+ if ('default' in config) {
513
+ currentConfig.default = config.default;
514
+ }
515
+ if (config.accounts !== undefined) {
516
+ currentConfig.accounts = config.accounts;
517
+ }
518
+ if (config.profiles !== undefined) {
519
+ currentConfig.profiles = config.profiles;
520
+ }
521
+ if (config.cliproxy !== undefined) {
522
+ currentConfig.cliproxy = mergeCliproxyConfig(currentConfig, config);
523
+ }
524
+ if (config.preferences !== undefined) {
525
+ currentConfig.preferences = config.preferences;
526
+ }
527
+ if (config.websearch !== undefined) {
528
+ currentConfig.websearch = config.websearch;
529
+ }
530
+ if (config.continuity !== undefined) {
531
+ currentConfig.continuity = config.continuity;
532
+ }
533
+ if (config.copilot !== undefined) {
534
+ currentConfig.copilot = config.copilot;
535
+ }
536
+ if (config.cursor !== undefined) {
537
+ currentConfig.cursor = config.cursor;
538
+ }
539
+ if (config.quota_management !== undefined) {
540
+ currentConfig.quota_management = config.quota_management;
541
+ }
542
+ if (config.thinking !== undefined) {
543
+ currentConfig.thinking = config.thinking;
544
+ }
545
+ if (config.image_analysis !== undefined) {
546
+ currentConfig.image_analysis = config.image_analysis;
547
+ }
548
+ if (config.global_env !== undefined) {
549
+ currentConfig.global_env = mergeGlobalEnvConfig(currentConfig, config);
550
+ }
551
+ if (config.cliproxy_server !== undefined) {
552
+ currentConfig.cliproxy_server = mergeCliproxyServerConfig(currentConfig, config);
553
+ }
554
+ if (config.dashboard_auth !== undefined) {
555
+ currentConfig.dashboard_auth = mergeDashboardAuthConfig(currentConfig, config);
556
+ }
557
+ });
157
558
  res.json({ success: true });
158
559
  }
159
560
  catch (err) {
@@ -192,7 +593,14 @@ router.post('/rollback', async (req, res) => {
192
593
  res.status(400).json({ error: 'Missing required field: backupPath' });
193
594
  return;
194
595
  }
195
- const success = await (0, migration_manager_1.rollback)(backupPath);
596
+ const managedBackupPath = (0, migration_manager_1.resolveManagedBackupPath)(backupPath);
597
+ if (!managedBackupPath) {
598
+ res.status(400).json({
599
+ error: 'Invalid backupPath. Must reference a managed CCS migration backup directory.',
600
+ });
601
+ return;
602
+ }
603
+ const success = await (0, migration_manager_1.rollback)(managedBackupPath);
196
604
  res.json({ success });
197
605
  }
198
606
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"config-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/config-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/config-routes.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAAoD;AACpD,uCAAyB;AACzB,8EAM4C;AAC5C,sEAMwC;AAExC,4EAAoE;AACpE,gEAIoC;AACpC,4EAAmF;AACnF,mEAAmF;AACnF,+DAA4D;AAE5D,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AACxB,MAAM,kBAAkB,GACtB,yFAAyF,CAAC;AAC5F,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAC3C,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,uBAAuB;IACvB,iCAAiC;IACjC,mCAAmC;IACnC,uCAAuC;IACvC,8BAA8B;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,IAAI,EAAE,EAAE;IAC/C,IAAI,IAAA,oDAAkC,EAAC,GAAG,EAAE,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACrE,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAqB;IAC9D,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE,MAAM,CAAC,UAAU;YAC3B,CAAC,CAAC;gBACE,GAAG,MAAM,CAAC,UAAU;gBACpB,GAAG,EAAE,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;oBAC1D,GAAG;oBACH,IAAA,+BAAc,EAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK;iBAC7D,CAAC,CACH;aACF;YACH,CAAC,CAAC,MAAM,CAAC,UAAU;QACrB,QAAQ,EAAE;YACR,GAAG,MAAM,CAAC,QAAQ;YAClB,IAAI,EAAE,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtD,QAAQ,EAAE,MAAM,CAAC,WAAW,CAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC;gBAC7E,WAAW;gBACX,2BAA2B,CAAC,aAAa,CAAC;aAC3C,CAAC,CACH;SACF;QACD,eAAe,EAAE,MAAM,CAAC,eAAe;YACrC,CAAC,CAAC;gBACE,GAAG,MAAM,CAAC,eAAe;gBACzB,MAAM,EAAE;oBACN,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM;oBAChC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;oBAC7E,cAAc,EAAE,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;iBAChF;aACF;YACH,CAAC,CAAC,MAAM,CAAC,eAAe;QAC1B,cAAc,EAAE,MAAM,CAAC,cAAc;YACnC,CAAC,CAAC;gBACE,GAAG,MAAM,CAAC,cAAc;gBACxB,aAAa,EAAE,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE;aAC5E;YACH,CAAC,CAAC,MAAM,CAAC,cAAc;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAuC;IAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,aAA4D;IAE5D,OAAO;QACL,GAAG,aAAa;QAChB,IAAI,EAAE,0BAA0B,CAAC,aAAa,CAAC,IAAI,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7F,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB,CAAC,YAAoB;IAIrD,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,aAAa,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACrD,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,aAAa,GAAG,CAAC,aAAa,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvE,aAAa,GAAG,CAAC,aAAa,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,IACE,IAAI,KAAK,GAAG;YACZ,CAAC,aAAa;YACd,CAAC,aAAa;YACd,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChD,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;gBACvB,OAAO,EAAE,GAAG,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;aAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE;QAC7B,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;IAClC,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAElC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GACT,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QACxD,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC1D,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,qBAAqB,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAEjG,OAAO,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,GAAG,OAAO,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAa;IAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACtE,oBAAoB,GAAG,IAAI,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,kBAAkB,GAAG,IAAI,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAkB;IACjD,IACE,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrB,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY;QAC5B,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK;QACrB,IAAA,+BAAc,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrB,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU;QAC1B,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM;QACtB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,EAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrB,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU;QAC1B,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU;QAC1B,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM;QACtB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,EAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAe;IACtD,MAAM,KAAK,GAA2C,EAAE,CAAC;IACzD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC;QACrD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YACpE,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjC,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAElC,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,OAAO,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YAC3D,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;gBACzB,MAAM;YACR,CAAC;YAED,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,0BAA0B,CACjC,YAAgC,EAChC,SAA6B;IAE7B,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,qBAAqB,EAAE,CAAC;QACnE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAC3B,aAA4B,EAC5B,UAAkC;IAElC,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC;IAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,aAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC;IAElC,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI;QAC3E,GAAG,EACD,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,IAAI,KAAK,KAAK,qBAAqB,IAAI,IAAA,+BAAc,EAAC,GAAG,CAAC,EAAE,CAAC;oBAC3D,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC,CACH;KACR,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,aAA4B,EAC5B,UAAkC;IAElC,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,aAAa,CAAC,eAAe,CAAC;IACvC,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACrC,MAAM,aAAa,GAAG,aAAa,CAAC,eAAe,IAAI,qDAA8B,CAAC;IAEtF,OAAO;QACL,MAAM,EACJ,UAAU,KAAK,SAAS;YACtB,CAAC,CAAC,aAAa,CAAC,MAAM;YACtB,CAAC,CAAC;gBACE,GAAG,UAAU;gBACb,UAAU,EACR,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;oBAClF,EAAE;gBACJ,cAAc,EAAE,0BAA0B,CACxC,aAAa,CAAC,MAAM,CAAC,cAAc,EACnC,UAAU,CAAC,cAAc,CAC1B;aACF;QACP,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;QACvD,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,aAA4B,EAC5B,UAAkC;IAElC,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,aAAa,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,aAAa,EACX,0BAA0B,CACxB,aAAa,CAAC,cAAc,EAAE,aAAa,EAC3C,QAAQ,CAAC,aAAa,CACvB,IAAI,EAAE;KACV,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,YAAgC,EAChC,QAAwD,EACxD,GAAoC;IAEpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,0BAA0B,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,uBAAuB,CAC9B,WAA8C,EAC9C,QAA2C;IAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAG,sBAAsB,CAC7C,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,EACR,mBAAmB,CACpB,CAAC;IAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,iBAAiB,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CACjC,cAAyE,EACzE,WAA0D;IAE1D,MAAM,aAAa,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,uBAAuB,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,aAAa,CAAC,IAAI,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,IAAI,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAA4B,EAC5B,UAAkC;IAElC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;IACzC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,GAAG,YAAY;QACf,QAAQ,EACN,YAAY,CAAC,QAAQ,KAAK,SAAS;YACjC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ;YACjC,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC;gBACxE,WAAW;gBACX,0BAA0B,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;aACtF,CAAC,CACH;KACR,CAAC;IACF,MAAM,UAAU,GAAG,uBAAuB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAE3F,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,IAAI,GAAG,UAAU,CAAC;IACnC,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,0CAA0C,CAAC,MAAe;IACjE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,MAAM,SAAS,GAAG,MAAiC,CAAC;IACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,OAAO,0CAA0C,CAAC;IACpD,CAAC;IAED,KAAK,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAmC,CAAC,EAAE,CAAC;QAC9F,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7F,OAAO,2BAA2B,WAAW,mBAAmB,CAAC;QACnE,CAAC;QAED,MAAM,OAAO,GAAG,YAAuC,CAAC;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;QAE3C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnE,OAAO,2BAA2B,WAAW,yCAAyC,CAAC;QACzF,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,2BAA2B,WAAW,iCAAiC,CAAC;QACjF,CAAC;QAED,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YACrF,OAAO,2BAA2B,WAAW,4CAA4C,CAAC;QAC5F,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,2BAA2B,WAAW,8CAA8C,CAAC;QAC9F,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAClD,OAAO,2BAA2B,WAAW,gDAAgD,CAAC;QAChG,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9E,MAAM,eAAe,GAAG,IAAA,2CAAyB,EAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,IAAA,yCAAuB,EAAC,eAAe,CAAC,EAAE,CAAC;gBAC9C,OAAO,2BAA2B,WAAW,gBAAgB,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,eAAe;gBACrB,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iDAA+B,CAAC;QACzE,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChF,OAAO,2BAA2B,WAAW,wDAAwD,CAAC;QACxG,CAAC;QAED,IAAI,IAAI,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,KAAK,UAAU,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO,OAAO,CAAC,eAAe,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;IAC3D,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,IAAA,uCAAe,GAAE;YACzB,eAAe,EAAE,IAAA,kCAAc,GAAE;YACjC,OAAO,EAAE,IAAA,wCAAoB,GAAE;SAChC,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,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;IACrD,IAAI,CAAC,IAAA,wCAAgB,GAAE,EAAE,CAAC;QACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,yCAAiB,GAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;IACxD,MAAM,QAAQ,GAAG,IAAA,yCAAiB,GAAE,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,IAA8B,CAAC;IAElD,IAAI,CAAC,IAAA,sCAAe,EAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,MAAM,mBAAmB,GAAG,0CAA0C,CAAC,MAAM,CAAC,CAAC;IAC/E,IAAI,mBAAmB,EAAE,CAAC;QACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,IAAA,2CAAmB,EAAC,CAAC,aAAa,EAAE,EAAE;YACpC,IAAI,iBAAiB,IAAI,MAAM,EAAE,CAAC;gBAChC,aAAa,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;YACzD,CAAC;YAED,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;gBACxB,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzC,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3C,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3C,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,QAAQ,GAAG,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACjD,CAAC;YAED,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACnC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YAC/C,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzC,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACvC,CAAC;YAED,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC1C,aAAa,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAC3D,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3C,CAAC;YAED,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACxC,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YACvD,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,aAAa,CAAC,UAAU,GAAG,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBACzC,aAAa,CAAC,eAAe,GAAG,yBAAyB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACnF,CAAC;YAED,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACxC,aAAa,CAAC,cAAc,GAAG,wBAAwB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACjF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;IAC3E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;QAC3C,IAAI,CAAC,IAAA,kCAAc,GAAE,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,EAAE;gBACjB,QAAQ,EAAE,EAAE;gBACZ,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAO,EAAC,MAAM,CAAC,CAAC;QACrC,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,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;IAC5E,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAA,4CAAwB,EAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,8EAA8E;aACtF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAA,4BAAQ,EAAC,iBAAiB,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACxB,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;AA4BH,eAAO,MAAM,SAAS,4CAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH,eAAO,MAAM,SAAS,4CAAW,CAAC"}
@@ -19,6 +19,7 @@ const health_routes_1 = __importDefault(require("./health-routes"));
19
19
  const provider_routes_1 = __importDefault(require("./provider-routes"));
20
20
  const variant_routes_1 = __importDefault(require("./variant-routes"));
21
21
  const settings_routes_1 = __importDefault(require("./settings-routes"));
22
+ const channels_routes_1 = __importDefault(require("./channels-routes"));
22
23
  const websearch_routes_1 = __importDefault(require("./websearch-routes"));
23
24
  const cliproxy_auth_routes_1 = __importDefault(require("./cliproxy-auth-routes"));
24
25
  const cliproxy_stats_routes_1 = __importDefault(require("./cliproxy-stats-routes"));
@@ -39,6 +40,7 @@ exports.apiRoutes = (0, express_1.Router)();
39
40
  // Profile CRUD, settings management, presets, accounts
40
41
  exports.apiRoutes.use('/profiles', profile_routes_1.default);
41
42
  exports.apiRoutes.use('/settings', settings_routes_1.default);
43
+ exports.apiRoutes.use('/channels', channels_routes_1.default);
42
44
  exports.apiRoutes.use('/accounts', account_routes_1.default);
43
45
  // ==================== Unified Config ====================
44
46
  // Config format, migration
@@ -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,sEAA6C;AAC7C,oEAA2C;AAC3C,oEAA2C;AAC3C,wEAA+C;AAC/C,sEAA6C;AAC7C,wEAA+C;AAC/C,0EAAiD;AACjD,kFAAwD;AACxD,oFAA0D;AAC1D,kFAAwD;AACxD,8EAAoD;AACpD,sEAA6C;AAC7C,oEAA2C;AAC3C,kEAAyC;AACzC,gEAAuC;AACvC,kEAAkD;AAClD,gEAAuC;AACvC,sEAA6C;AAC7C,sEAA6C;AAC7C,wFAA8D;AAE9D,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,2DAA2D;AAC3D,iBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAU,CAAC,CAAC;AAEnC,wEAAwE;AACxE,iBAAS,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAa,CAAC,CAAC;AACzC,iBAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,iCAAqB,CAAC,CAAC;AAE1D,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,gBAAgB,EAAE,8BAAkB,CAAC,CAAC;AACpD,iBAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,wBAAa,CAAC,CAAC;AAClD,iBAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE,4BAAgB,CAAC,CAAC;AAC1D,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,mDAAmD;AACnD,iBAAS,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEvC,kDAAkD;AAClD,iBAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAW,CAAC,CAAC;AAErC,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,wEAA+C;AAC/C,0EAAiD;AACjD,kFAAwD;AACxD,oFAA0D;AAC1D,kFAAwD;AACxD,8EAAoD;AACpD,sEAA6C;AAC7C,oEAA2C;AAC3C,kEAAyC;AACzC,gEAAuC;AACvC,kEAAkD;AAClD,gEAAuC;AACvC,sEAA6C;AAC7C,sEAA6C;AAC7C,wFAA8D;AAE9D,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,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,2DAA2D;AAC3D,iBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAU,CAAC,CAAC;AAEnC,wEAAwE;AACxE,iBAAS,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAa,CAAC,CAAC;AACzC,iBAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,iCAAqB,CAAC,CAAC;AAE1D,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,gBAAgB,EAAE,8BAAkB,CAAC,CAAC;AACpD,iBAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,wBAAa,CAAC,CAAC;AAClD,iBAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE,4BAAgB,CAAC,CAAC;AAC1D,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,mDAAmD;AACnD,iBAAS,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEvC,kDAAkD;AAClD,iBAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAW,CAAC,CAAC;AAErC,qEAAqE;AACrE,iBAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,sBAAoB,CAAC,CAAC;AAExD,wEAAwE;AACxE,iBAAS,CAAC,GAAG,CAAC,GAAG,EAAE,qBAAU,CAAC,CAAC"}
@@ -7,7 +7,9 @@
7
7
  * Snapshot location: ~/.ccs/cache/cliproxy-usage/latest.json
8
8
  * Sync interval: 5 minutes
9
9
  */
10
+ import { fetchCliproxyUsageRaw } from '../../cliproxy/stats-fetcher';
10
11
  import type { DailyUsage, HourlyUsage, MonthlyUsage } from './types';
12
+ type FetchCliproxyUsageRaw = typeof fetchCliproxyUsageRaw;
11
13
  /**
12
14
  * Read the latest CLIProxy usage snapshot from disk.
13
15
  * Returns empty arrays on failure (file not found, parse error, version mismatch).
@@ -21,14 +23,15 @@ export declare function loadCachedCliproxyData(): Promise<{
21
23
  * Fetch latest CLIProxy usage data and persist a snapshot to disk.
22
24
  * Non-fatal: logs warning and returns early if CLIProxy is unavailable.
23
25
  */
24
- export declare function syncCliproxyUsage(): Promise<void>;
26
+ export declare function syncCliproxyUsage(fetchRaw?: FetchCliproxyUsageRaw): Promise<void>;
25
27
  /**
26
28
  * Start periodic CLIProxy usage sync (every 5 minutes).
27
29
  * Performs an immediate sync on startup.
28
30
  */
29
- export declare function startCliproxySync(): void;
31
+ export declare function startCliproxySync(syncNow?: () => Promise<void>): void;
30
32
  /**
31
33
  * Stop periodic CLIProxy usage sync.
32
34
  */
33
35
  export declare function stopCliproxySync(): void;
36
+ export {};
34
37
  //# sourceMappingURL=cliproxy-usage-syncer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cliproxy-usage-syncer.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkDrE;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAsBD;AAMD;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCvD;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAcxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
1
+ {"version":3,"file":"cliproxy-usage-syncer.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgBrE,KAAK,qBAAqB,GAAG,OAAO,qBAAqB,CAAC;AAoC1D;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAsBD;AAMD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,GAAE,qBAA6C,GACtD,OAAO,CAAC,IAAI,CAAC,CAkCf;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAM,OAAO,CAAC,IAAI,CAA6B,GAAG,IAAI,CAchG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
@@ -94,8 +94,8 @@ exports.loadCachedCliproxyData = loadCachedCliproxyData;
94
94
  * Fetch latest CLIProxy usage data and persist a snapshot to disk.
95
95
  * Non-fatal: logs warning and returns early if CLIProxy is unavailable.
96
96
  */
97
- async function syncCliproxyUsage() {
98
- const raw = await (0, stats_fetcher_1.fetchCliproxyUsageRaw)();
97
+ async function syncCliproxyUsage(fetchRaw = stats_fetcher_1.fetchCliproxyUsageRaw) {
98
+ const raw = await fetchRaw();
99
99
  if (raw === null) {
100
100
  console.log((0, ui_1.warn)('CLIProxy usage sync skipped: proxy unavailable'));
101
101
  return;
@@ -132,16 +132,16 @@ exports.syncCliproxyUsage = syncCliproxyUsage;
132
132
  * Start periodic CLIProxy usage sync (every 5 minutes).
133
133
  * Performs an immediate sync on startup.
134
134
  */
135
- function startCliproxySync() {
135
+ function startCliproxySync(syncNow = () => syncCliproxyUsage()) {
136
136
  if (syncIntervalId !== null) {
137
137
  return;
138
138
  }
139
139
  const intervalMin = Math.round(SYNC_INTERVAL_MS / 60000);
140
140
  console.log((0, ui_1.info)(`Starting CLIProxy usage sync (interval: ${intervalMin} min)`));
141
141
  // Fire-and-forget initial sync
142
- void syncCliproxyUsage();
142
+ void syncNow();
143
143
  syncIntervalId = setInterval(() => {
144
- void syncCliproxyUsage();
144
+ void syncNow();
145
145
  }, SYNC_INTERVAL_MS);
146
146
  }
147
147
  exports.startCliproxySync = startCliproxySync;
@@ -1 +1 @@
1
- {"version":3,"file":"cliproxy-usage-syncer.js","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliproxy-usage-syncer.js","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaitranntt/ccs",
3
- "version": "7.57.1",
3
+ "version": "7.57.2-dev.2",
4
4
  "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more",
5
5
  "keywords": [
6
6
  "cli",