@samanhappy/mcphub 1.0.40 → 1.0.41

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 (84) hide show
  1. package/dist/controllers/mcpbController.js +8 -0
  2. package/dist/controllers/mcpbController.js.map +1 -1
  3. package/dist/controllers/oauthCallbackController.js +85 -43
  4. package/dist/controllers/oauthCallbackController.js.map +1 -1
  5. package/dist/controllers/serverController.js +52 -7
  6. package/dist/controllers/serverController.js.map +1 -1
  7. package/dist/middlewares/index.js +10 -7
  8. package/dist/middlewares/index.js.map +1 -1
  9. package/dist/routes/index.js +8 -2
  10. package/dist/routes/index.js.map +1 -1
  11. package/dist/services/betterAuthConfig.js +19 -0
  12. package/dist/services/betterAuthConfig.js.map +1 -1
  13. package/dist/services/mcpService.js +6 -0
  14. package/dist/services/mcpService.js.map +1 -1
  15. package/dist/services/vectorSearchService.js +24 -11
  16. package/dist/services/vectorSearchService.js.map +1 -1
  17. package/dist/utils/oauthIssuer.js +15 -1
  18. package/dist/utils/oauthIssuer.js.map +1 -1
  19. package/dist/utils/rateLimit.js +20 -2
  20. package/dist/utils/rateLimit.js.map +1 -1
  21. package/dist/utils/requireAdmin.js +8 -0
  22. package/dist/utils/requireAdmin.js.map +1 -1
  23. package/dist/utils/smartRouting.js +69 -27
  24. package/dist/utils/smartRouting.js.map +1 -1
  25. package/frontend/dist/assets/{ActivityPage-B5DanW8q.js → ActivityPage-adLbSuxT.js} +2 -2
  26. package/frontend/dist/assets/{ActivityPage-B5DanW8q.js.map → ActivityPage-adLbSuxT.js.map} +1 -1
  27. package/frontend/dist/assets/{CopyClientConfigDialog-C6U6_eyy.js → CopyClientConfigDialog-hRNdG_Hz.js} +2 -2
  28. package/frontend/dist/assets/{CopyClientConfigDialog-C6U6_eyy.js.map → CopyClientConfigDialog-hRNdG_Hz.js.map} +1 -1
  29. package/frontend/dist/assets/{CredentialsPage-CXK8Xkao.js → CredentialsPage-BSogppb6.js} +2 -2
  30. package/frontend/dist/assets/{CredentialsPage-CXK8Xkao.js.map → CredentialsPage-BSogppb6.js.map} +1 -1
  31. package/frontend/dist/assets/Dashboard-BttcAnP2.js +2 -0
  32. package/frontend/dist/assets/{Dashboard-LIC6BqIA.js.map → Dashboard-BttcAnP2.js.map} +1 -1
  33. package/frontend/dist/assets/{EndpointCopy-CeZbEsF2.js → EndpointCopy-CNhtxQdx.js} +2 -2
  34. package/frontend/dist/assets/{EndpointCopy-CeZbEsF2.js.map → EndpointCopy-CNhtxQdx.js.map} +1 -1
  35. package/frontend/dist/assets/GroupsPage-CQA7x2cz.js +33 -0
  36. package/frontend/dist/assets/{GroupsPage-DwVaRIap.js.map → GroupsPage-CQA7x2cz.js.map} +1 -1
  37. package/frontend/dist/assets/{LoginPage-CPqSMwWO.js → LoginPage-C4qBJzYk.js} +2 -2
  38. package/frontend/dist/assets/{LoginPage-CPqSMwWO.js.map → LoginPage-C4qBJzYk.js.map} +1 -1
  39. package/frontend/dist/assets/{LogsPage-eCHGem9T.js → LogsPage-BXHqsBa0.js} +2 -2
  40. package/frontend/dist/assets/{LogsPage-eCHGem9T.js.map → LogsPage-BXHqsBa0.js.map} +1 -1
  41. package/frontend/dist/assets/MarketPage-C2q7W2an.js +2 -0
  42. package/frontend/dist/assets/MarketPage-C2q7W2an.js.map +1 -0
  43. package/frontend/dist/assets/{OAuthConsentPage-DJITYpCM.js → OAuthConsentPage-D-UU5XNF.js} +2 -2
  44. package/frontend/dist/assets/{OAuthConsentPage-DJITYpCM.js.map → OAuthConsentPage-D-UU5XNF.js.map} +1 -1
  45. package/frontend/dist/assets/{PromptsPage-DQ02iDOJ.js → PromptsPage-2BBvSosU.js} +2 -2
  46. package/frontend/dist/assets/{PromptsPage-DQ02iDOJ.js.map → PromptsPage-2BBvSosU.js.map} +1 -1
  47. package/frontend/dist/assets/{ResourcesPage-mUU0DVus.js → ResourcesPage-DLVYyIm0.js} +2 -2
  48. package/frontend/dist/assets/{ResourcesPage-mUU0DVus.js.map → ResourcesPage-DLVYyIm0.js.map} +1 -1
  49. package/frontend/dist/assets/{ServersPage-DsS8j6tl.js → ServersPage-Cx9zIvKw.js} +5 -5
  50. package/frontend/dist/assets/{ServersPage-DsS8j6tl.js.map → ServersPage-Cx9zIvKw.js.map} +1 -1
  51. package/frontend/dist/assets/SettingsPage-pZCOi8NF.js +12 -0
  52. package/frontend/dist/assets/SettingsPage-pZCOi8NF.js.map +1 -0
  53. package/frontend/dist/assets/{StatusDot-Bcv2BwIL.js → StatusDot-CAv_zsld.js} +2 -2
  54. package/frontend/dist/assets/{StatusDot-Bcv2BwIL.js.map → StatusDot-CAv_zsld.js.map} +1 -1
  55. package/frontend/dist/assets/{ToggleGroup-C_7sDUlr.js → ToggleGroup-ffEOMWal.js} +2 -2
  56. package/frontend/dist/assets/{ToggleGroup-C_7sDUlr.js.map → ToggleGroup-ffEOMWal.js.map} +1 -1
  57. package/frontend/dist/assets/{UsersPage-ufaG2-Ag.js → UsersPage-Cx6EDM_s.js} +2 -2
  58. package/frontend/dist/assets/{UsersPage-ufaG2-Ag.js.map → UsersPage-Cx6EDM_s.js.map} +1 -1
  59. package/frontend/dist/assets/clipboard-_snued0J.js +2 -0
  60. package/frontend/dist/assets/clipboard-_snued0J.js.map +1 -0
  61. package/frontend/dist/assets/index-Dt8f_hd5.js +3 -0
  62. package/frontend/dist/assets/index-Dt8f_hd5.js.map +1 -0
  63. package/frontend/dist/assets/index-ru-OAIcF.css +1 -0
  64. package/frontend/dist/assets/{resourceService-CN5cMjQ0.js → resourceService-BCl2XrNf.js} +2 -2
  65. package/frontend/dist/assets/{resourceService-CN5cMjQ0.js.map → resourceService-BCl2XrNf.js.map} +1 -1
  66. package/frontend/dist/assets/{useCostData-B9XzWVsV.js → useCostData-D3JNFGsT.js} +2 -2
  67. package/frontend/dist/assets/{useCostData-B9XzWVsV.js.map → useCostData-D3JNFGsT.js.map} +1 -1
  68. package/frontend/dist/assets/{variableDetection-Dxw0g2ON.js → variableDetection-CGuC1br1.js} +2 -2
  69. package/frontend/dist/assets/{variableDetection-Dxw0g2ON.js.map → variableDetection-CGuC1br1.js.map} +1 -1
  70. package/frontend/dist/index.html +2 -2
  71. package/package.json +4 -1
  72. package/frontend/dist/assets/Dashboard-LIC6BqIA.js +0 -2
  73. package/frontend/dist/assets/GroupsPage-DwVaRIap.js +0 -33
  74. package/frontend/dist/assets/MarketPage-RqD2-rxq.js +0 -3
  75. package/frontend/dist/assets/MarketPage-RqD2-rxq.js.map +0 -1
  76. package/frontend/dist/assets/SettingsPage-CIeF1sDE.js +0 -12
  77. package/frontend/dist/assets/SettingsPage-CIeF1sDE.js.map +0 -1
  78. package/frontend/dist/assets/clipboard-BukcCPLt.js +0 -2
  79. package/frontend/dist/assets/clipboard-BukcCPLt.js.map +0 -1
  80. package/frontend/dist/assets/index-C8aAOWR7.js +0 -3
  81. package/frontend/dist/assets/index-C8aAOWR7.js.map +0 -1
  82. package/frontend/dist/assets/index-D4Vy78bV.css +0 -1
  83. package/frontend/dist/assets/useSettingsData-J_hwKZA6.js +0 -2
  84. package/frontend/dist/assets/useSettingsData-J_hwKZA6.js.map +0 -1
@@ -3,6 +3,7 @@ import path from 'path';
3
3
  import fs from 'fs';
4
4
  import AdmZip from 'adm-zip';
5
5
  import { logger } from '../utils/logger.js';
6
+ import { requireAdmin } from '../utils/requireAdmin.js';
6
7
  import { validateServerName } from '../utils/serverNameValidation.js';
7
8
  // Configure multer for file uploads
8
9
  const storage = multer.diskStorage({
@@ -80,6 +81,13 @@ const cleanupOldMcpbServer = (serverName) => {
80
81
  };
81
82
  export const uploadMcpbFile = async (req, res) => {
82
83
  try {
84
+ // Defense in depth: the route already gates this endpoint behind
85
+ // requireAdminMiddleware (before multer stages the body). Re-check here so
86
+ // the handler stays safe even if it is invoked through another path, since
87
+ // it replaces executable code at a deterministic path that existing stdio
88
+ // server configurations point into (GHSA-xf2m-3c3x-53vp).
89
+ if (!(await requireAdmin(req, res)))
90
+ return;
83
91
  if (!req.file) {
84
92
  res.status(400).json({
85
93
  success: false,
@@ -1 +1 @@
1
- {"version":3,"file":"mcpbController.js","sourceRoot":"","sources":["../../src/controllers/mcpbController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpbController.js","sourceRoot":"","sources":["../../src/controllers/mcpbController.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  * - Exchange the code for tokens using PKCE
15
15
  * - Save tokens via our OAuthClientProvider.saveTokens()
16
16
  */
17
- import { getServerByName, getServerByOAuthState, connectClientWithDiagnostics, createTransportFromConfig, updateServerToolsCache, } from '../services/mcpService.js';
17
+ import { getServerByOAuthState, getServerByPendingOAuthState, connectClientWithDiagnostics, createTransportFromConfig, updateServerToolsCache, } from '../services/mcpService.js';
18
18
  import { replaceEnvVars } from '../config/index.js';
19
19
  import { loadServerConfig } from '../services/oauthSettingsStore.js';
20
20
  import { validateAuthorizationIss } from '../utils/oauthIssuer.js';
@@ -104,23 +104,82 @@ const normalizeQueryParam = (value) => {
104
104
  }
105
105
  return undefined;
106
106
  };
107
- const extractServerNameFromState = (stateValue) => {
108
- try {
109
- const normalized = stateValue.replace(/-/g, '+').replace(/_/g, '/');
110
- const padding = (4 - (normalized.length % 4)) % 4;
111
- const base64 = normalized + '='.repeat(padding);
112
- const decoded = Buffer.from(base64, 'base64').toString('utf8');
113
- const payload = JSON.parse(decoded);
114
- if (payload && typeof payload.server === 'string') {
115
- return payload.server;
107
+ /**
108
+ * OAuth `state` is a server-generated, unguessable, single-use value bound to
109
+ * the in-flight authorization of exactly one server (see
110
+ * MCPHubOAuthProvider.generateState). The callback MUST resolve the target
111
+ * server only by exact match against a stored state — never by decoding the
112
+ * supplied value or falling back to a server name embedded in it
113
+ * (GHSA-vc28-27px-x492).
114
+ */
115
+ const OAUTH_STATE_TTL_MS = 10 * 60 * 1000; // 10 minutes
116
+ /** States whose authorization has already been completed (single-use). */
117
+ const consumedOAuthStates = new Map(); // state -> consumedAt
118
+ const pruneConsumedOAuthStates = () => {
119
+ const now = Date.now();
120
+ for (const [state, consumedAt] of consumedOAuthStates) {
121
+ if (now - consumedAt > OAUTH_STATE_TTL_MS) {
122
+ consumedOAuthStates.delete(state);
116
123
  }
117
124
  }
118
- catch (error) {
119
- // Ignore decoding errors and fall back to delimiter-based parsing
125
+ };
126
+ /**
127
+ * Reset the in-memory OAuth state bookkeeping (the consumed-state set). This is
128
+ * a no-op in production use and exists so test suites start from a clean slate
129
+ * between cases.
130
+ */
131
+ export const resetOAuthStateTrackingForTests = () => {
132
+ consumedOAuthStates.clear();
133
+ };
134
+ /**
135
+ * True when `state` is the current in-flight authorization state of the server.
136
+ * Requires an exact match against the stored state (in-memory or persisted) and
137
+ * rejects states that are stale beyond the TTL.
138
+ */
139
+ const isOAuthStateCurrent = (serverInfo, state) => {
140
+ const inMemoryState = serverInfo.oauth?.state;
141
+ const pendingState = serverInfo.config?.oauth?.pendingAuthorization?.state;
142
+ const storedStates = [inMemoryState, pendingState].filter((s) => typeof s === 'string');
143
+ // Exact match only. A state that does not equal the server's current
144
+ // in-flight authorization is rejected outright.
145
+ if (storedStates.length === 0 || !storedStates.includes(state)) {
146
+ return false;
120
147
  }
121
- const separatorIndex = stateValue.indexOf(':');
122
- if (separatorIndex > 0) {
123
- return stateValue.slice(0, separatorIndex);
148
+ const createdAt = serverInfo.config?.oauth?.pendingAuthorization?.createdAt;
149
+ if (createdAt !== undefined && Date.now() - createdAt > OAUTH_STATE_TTL_MS) {
150
+ logger.warn('OAuth callback state expired; rejecting', {
151
+ serverName: serverInfo.name,
152
+ });
153
+ return false;
154
+ }
155
+ return true;
156
+ };
157
+ /**
158
+ * Resolve the server targeted by an OAuth callback from its `state` parameter.
159
+ *
160
+ * The state must be an unexpired, unconsumed, exact match against a stored
161
+ * server-generated state. There is deliberately no fallback that interprets the
162
+ * state as a server name — an attacker who forges `state` cannot select which
163
+ * server's authorization to drive (GHSA-vc28-27px-x492).
164
+ */
165
+ const resolveServerByOAuthState = (state) => {
166
+ pruneConsumedOAuthStates();
167
+ if (consumedOAuthStates.has(state)) {
168
+ logger.warn('OAuth callback state already consumed; rejecting', {
169
+ serverName: '<redacted>',
170
+ });
171
+ return undefined;
172
+ }
173
+ // In-memory match: serverInfo.oauth.state is set when redirectToAuthorization
174
+ // ran against a live transport in this process.
175
+ const serverInfo = getServerByOAuthState(state);
176
+ if (serverInfo && isOAuthStateCurrent(serverInfo, state)) {
177
+ return serverInfo;
178
+ }
179
+ // Restart recovery: match against the persisted pendingAuthorization.state.
180
+ const pendingServerInfo = getServerByPendingOAuthState(state);
181
+ if (pendingServerInfo && isOAuthStateCurrent(pendingServerInfo, state)) {
182
+ return pendingServerInfo;
124
183
  }
125
184
  return undefined;
126
185
  };
@@ -132,7 +191,8 @@ const extractServerNameFromState = (stateValue) => {
132
191
  *
133
192
  * Expected query parameters:
134
193
  * - code: Authorization code from OAuth provider
135
- * - state: Encoded server identifier used for OAuth session validation
194
+ * - state: Server-generated, unguessable, single-use authorization state bound
195
+ * to the in-flight authorization of exactly one server
136
196
  * - error: Optional error code if authorization failed
137
197
  * - error_description: Optional error description
138
198
  */
@@ -175,38 +235,16 @@ export const handleOAuthCallback = async (req, res) => {
175
235
  .send(generateHtmlResponse(t, 'error', t('oauthCallback.invalidRequest'), t('oauthCallback.missingCodeParameter')));
176
236
  }
177
237
  logger.log('OAuth callback received', { hasCode: true, state: stateParam });
178
- // Find server by state parameter
179
- let serverInfo;
180
- serverInfo = getServerByOAuthState(stateParam);
181
- let decodedServerName;
238
+ // Find the target server by the state parameter. Resolution is exact-match
239
+ // only against a stored, server-generated state; a forged state cannot name
240
+ // a server (GHSA-vc28-27px-x492).
241
+ const serverInfo = resolveServerByOAuthState(stateParam);
182
242
  if (!serverInfo) {
183
- decodedServerName = extractServerNameFromState(stateParam);
184
- if (decodedServerName) {
185
- logger.log('State lookup failed; decoded server name from state', {
186
- decodedServerName,
187
- });
188
- serverInfo = getServerByName(decodedServerName);
189
- }
190
- }
191
- if (!serverInfo) {
192
- logger.error('No server found for OAuth callback', {
193
- state: stateParam,
194
- decodedServerName,
195
- });
243
+ logger.error('No server found for OAuth callback', { state: stateParam });
196
244
  return res
197
245
  .status(400)
198
246
  .send(generateHtmlResponse(t, 'error', t('oauthCallback.serverNotFound'), `${t('oauthCallback.serverNotFoundMessage')}\n${t('oauthCallback.sessionExpiredMessage')}`));
199
247
  }
200
- // Optional: Validate state parameter for additional security
201
- if (serverInfo.oauth?.state && serverInfo.oauth.state !== stateParam) {
202
- logger.warn('OAuth state mismatch detected', {
203
- serverName: serverInfo.name,
204
- // State values are considered sensitive and are not logged
205
- expectedState: '<redacted>',
206
- receivedState: '<redacted>',
207
- });
208
- // Note: We log a warning but don't fail the request since we have server name as primary identifier
209
- }
210
248
  logger.log('Processing OAuth callback for server', { serverName: serverInfo.name });
211
249
  // RFC 9207 / SEP-2468: when the authorization response carries `iss`,
212
250
  // validate it against the issuer we sent the authorization request to
@@ -240,6 +278,10 @@ export const handleOAuthCallback = async (req, res) => {
240
278
  logger.log('Calling transport.finishAuth for server', { serverName: serverInfo.name });
241
279
  const currentTransport = serverInfo.transport;
242
280
  await currentTransport.finishAuth(codeParam);
281
+ // The state has served its purpose: the code was exchanged and the
282
+ // server now holds the resulting tokens. Mark it consumed so a replayed
283
+ // callback with the same state is rejected (single-use, GHSA-vc28-27px-x492).
284
+ consumedOAuthStates.set(stateParam, Date.now());
243
285
  logger.log('Successfully exchanged authorization code for tokens', {
244
286
  serverName: serverInfo.name,
245
287
  });
@@ -1 +1 @@
1
- {"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../src/controllers/oauthCallbackController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAC3C,KAAK;KACF,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;KACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;KACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAC3B,CAA0B,EAC1B,IAAyB,EACzB,KAAa,EACb,OAAe,EACf,OAA4C,EAC5C,YAAqB,KAAK,EAClB,EAAE;IACV,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC;IACrC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEnC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,yEAAyE;IACzE,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,UAAU,CACjC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CACtE,CAAC;IACF,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAExE,OAAO;;;;;;iBAMQ,SAAS;;;;;;wJAM8H,aAAa,YAAY,WAAW;;;;;;;;;;;;qCAYvJ,YAAY;;;;;;;UAOvC,SAAS,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE;;;;mCAIvD,IAAI,UAAU,SAAS;YAE9C,OAAO;QACL,CAAC,CAAC,OAAO;aACJ,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,qBAAqB,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CACpJ;aACA,IAAI,CAAC,EAAE,CAAC;QACb,CAAC,CAAC,EACN;YACE,OAAO,CAAC,CAAC,CAAC,sBAAsB,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE;YACtD,SAAS,CAAC,CAAC,CAAC,wBAAwB,eAAe,MAAM,CAAC,CAAC,CAAC,EAAE;+DACX,gBAAgB;;;;GAI5E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAsB,EAAE;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACtB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,UAAkB,EAAsB,EAAE;IAC5E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kEAAkE;IACpE,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACvE,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAC5D,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE9C,iEAAiE;QACjE,MAAM,CAAC,GAAI,GAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAEnD,iCAAiC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;gBACzC,KAAK;gBACL,gBAAgB,EAAE,iBAAiB,IAAI,EAAE;aAC1C,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACzB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,mCAAmC,CAAC,EAAE,EAAE,EAAE;gBAC3E,EAAE,KAAK,EAAE,CAAC,CAAC,wCAAwC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC5E,GAAG,CAAC,iBAAiB;oBACnB,CAAC,CAAC;wBACE;4BACE,KAAK,EAAE,CAAC,CAAC,0CAA0C,CAAC;4BACpD,KAAK,EAAE,MAAM,CAAC,iBAAiB,CAAC;yBACjC;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CACH,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACvD,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CACH,oBAAoB,CAClB,CAAC,EACD,OAAO,EACP,CAAC,CAAC,8BAA8B,CAAC,EACjC,CAAC,CAAC,qCAAqC,CAAC,CACzC,CACF,CAAC;QACN,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC1D,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CACH,oBAAoB,CAClB,CAAC,EACD,OAAO,EACP,CAAC,CAAC,8BAA8B,CAAC,EACjC,CAAC,CAAC,oCAAoC,CAAC,CACxC,CACF,CAAC;QACN,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAE5E,iCAAiC;QACjC,IAAI,UAAkC,CAAC;QAEvC,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,iBAAqC,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,iBAAiB,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,qDAAqD,EAAE;oBAChE,iBAAiB;iBAClB,CAAC,CAAC;gBACH,UAAU,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE;gBACjD,KAAK,EAAE,UAAU;gBACjB,iBAAiB;aAClB,CAAC,CAAC;YACH,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CACH,oBAAoB,CAClB,CAAC,EACD,OAAO,EACP,CAAC,CAAC,8BAA8B,CAAC,EACjC,GAAG,CAAC,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC,qCAAqC,CAAC,EAAE,CAC3F,CACF,CAAC;QACN,CAAC;QAED,6DAA6D;QAC7D,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC3C,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,2DAA2D;gBAC3D,aAAa,EAAE,YAAY;gBAC3B,aAAa,EAAE,YAAY;aAC5B,CAAC,CAAC;YACH,oGAAoG;QACtG,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,sCAAsC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpF,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,uCAAuC;QACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,wBAAwB,CAAC;YACzC,GAAG,EAAE,QAAQ;YACb,gBAAgB,EACd,UAAU,CAAC,KAAK,EAAE,gBAAgB;gBAClC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,gBAAgB;YAClE,gBAAgB,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM;SACxE,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;gBACnD,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CACH,oBAAoB,CAClB,CAAC,EACD,OAAO,EACP,CAAC,CAAC,mCAAmC,CAAC,EACtC,SAAS,CAAC,MAAM,CACjB,CACF,CAAC;QACN,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,uEAAuE,EAAE;gBACnF,UAAU,EAAE,UAAU,CAAC,IAAI;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,mFAAmF;QACnF,qEAAqE;QACrE,IAAI,UAAU,CAAC,SAAS,IAAI,YAAY,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,yCAAyC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvF,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAgB,CAAC;gBACrD,MAAM,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAE7C,MAAM,CAAC,GAAG,CAAC,sDAAsD,EAAE;oBACjE,UAAU,EAAE,UAAU,CAAC,IAAI;iBAC5B,CAAC,CAAC;gBAEH,wFAAwF;gBACxF,oFAAoF;gBACpF,qFAAqF;gBACrF,uFAAuF;gBACvF,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,eAAe,GAAG,WAAW;oBACjC,CAAC,CAAE,cAAc,CAAC,WAAkB,CAAwB;oBAC5D,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;gBAEtB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CACb,oCAAoC,UAAU,CAAC,IAAI,uBAAuB,CAC3E,CAAC;gBACJ,CAAC;gBAED,iDAAiD;gBACjD,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC;gBAEpC,sEAAsE;gBACtE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,IAAI,EAAE,CAAC;oBACpD,UAAU,CAAC,OAAO,GAAG;wBACnB,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,KAAK;wBACvC,sBAAsB,EAAE,aAAa,CAAC,sBAAsB,IAAI,IAAI;wBACpE,eAAe,EAAE,aAAa,CAAC,eAAe;qBAC/C,CAAC;gBACJ,CAAC;gBAED,sFAAsF;gBACtF,IAAI,CAAC;oBACH,IAAI,UAAU,CAAC,SAAS,IAAI,OAAO,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;wBAC5D,MAAO,UAAU,CAAC,SAAiB,CAAC,KAAK,EAAE,CAAC;oBAC9C,CAAC;gBACH,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE;wBACvE,UAAU,EAAE,UAAU,CAAC,IAAI;wBAC3B,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,iDAAiD,EAAE;oBAC5D,UAAU,EAAE,UAAU,CAAC,IAAI;iBAC5B,CAAC,CAAC;gBACH,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CACxD,UAAU,CAAC,IAAI,EACf,eAAe,CAChB,CAAC;gBACF,UAAU,CAAC,SAAS,GAAG,kBAAkB,CAAC;gBAE1C,0EAA0E;gBAC1E,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC;gBACjC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,UAAU,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;oBAC9C,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;gBACrC,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;oBAChD,MAAM,mBAAmB,GAAG,IAAI,KAAK,CACnC,oBAAoB,UAAU,CAAC,IAAI,8DAA8D,CAClG,CAAC;oBACF,UAAU,CAAC,MAAM,GAAG,cAAc,CAAC;oBACnC,UAAU,CAAC,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC;oBAC/C,MAAM,mBAAmB,CAAC;gBAC5B,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,4CAA4C,EAAE;oBACvD,UAAU,EAAE,UAAU,CAAC,IAAI;iBAC5B,CAAC,CAAC;gBACH,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC1C,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,4BAA4B,CAChC,eAAe,EACf,kBAAkB,EAClB,UAAU,CAAC,OAAO,CACnB,CAAC;gBACJ,CAAC;gBAAC,OAAO,YAAY,EAAE,CAAC;oBACtB,UAAU,CAAC,MAAM,GAAG,cAAc,CAAC;oBACnC,UAAU,CAAC,KAAK,GAAG,2CACjB,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAC5E,EAAE,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE;wBAC3D,UAAU,EAAE,UAAU,CAAC,IAAI;wBAC3B,KAAK,EAAE,YAAY;qBACpB,CAAC,CAAC;oBACH,IAAI,YAAY,YAAY,KAAK,EAAE,CAAC;wBAClC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE;4BACzD,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,OAAO,EAAE,YAAY,CAAC,OAAO;4BAC7B,KAAK,EAAE,YAAY,CAAC,KAAK;yBAC1B,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;oBAChC,CAAC;oBAAC,OAAO,gBAAgB,EAAE,CAAC;wBAC1B,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE;4BAClE,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,KAAK,EAAE,gBAAgB;yBACxB,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBACnC,CAAC;oBAAC,OAAO,mBAAmB,EAAE,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE;4BACrE,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,KAAK,EAAE,mBAAmB;yBAC3B,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,UAAU,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;wBAC1C,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;oBAChC,CAAC;oBACD,IAAI,UAAU,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;wBAChD,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;oBACnC,CAAC;oBAED,MAAM,YAAY,CAAC;gBACrB,CAAC;gBAED,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC;gBAChC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,oDAAoD,EAAE;oBAC/D,UAAU,EAAE,UAAU,CAAC,IAAI;iBAC5B,CAAC,CAAC;gBAEH,2EAA2E;gBAC3E,8DAA8D;gBAC9D,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBAC/D,MAAM,CAAC,GAAG,CAAC,0CAA0C,EAAE;oBACrD,UAAU,EAAE,UAAU,CAAC,IAAI;oBAC3B,YAAY;iBACb,CAAC,CAAC;gBAEH,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,oCAAoC,EAAE;wBAC/C,UAAU,EAAE,UAAU,CAAC,IAAI;qBAC5B,CAAC,CAAC;oBACH,IAAI,CAAC;wBACH,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;wBAC9E,sBAAsB,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;wBACtD,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE;4BAC9C,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM;yBACnC,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,cAAc,EAAE,CAAC;wBACxB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;4BACxD,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,KAAK,EAAE,cAAc;yBACtB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,+DAA+D,EAAE;wBAC1E,UAAU,EAAE,UAAU,CAAC,IAAI;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,8CAA8C,EAAE;oBACzD,UAAU,EAAE,UAAU,CAAC,IAAI;iBAC5B,CAAC,CAAC;gBAEH,sBAAsB;gBACtB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACzB,oBAAoB,CAClB,CAAC,EACD,SAAS,EACT,CAAC,CAAC,uCAAuC,CAAC,EAC1C,CAAC,CAAC,8BAA8B,CAAC,EACjC;oBACE,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE;oBAC5D,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE;iBAC1E,EACD,IAAI,CACL,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE;oBACvD,UAAU,EAAE,UAAU,CAAC,IAAI;oBAC3B,KAAK;iBACN,CAAC,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;oBAC3C,UAAU,EAAE,UAAU,CAAC,IAAI;oBAC3B,SAAS,EAAE,OAAO,KAAK;oBACvB,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI;oBACnC,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBACpE,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB;iBACpE,CAAC,CAAC;gBAEH,OAAO,GAAG;qBACP,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CACH,oBAAoB,CAClB,CAAC,EACD,OAAO,EACP,CAAC,CAAC,+BAA+B,CAAC,EAClC,GAAG,CAAC,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAAC,EAAE,EACtF,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAC/E,CACF,CAAC;YACN,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iEAAiE;YACjE,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YACvF,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CACH,oBAAoB,CAClB,CAAC,EACD,OAAO,EACP,CAAC,CAAC,kCAAkC,CAAC,EACrC,CAAC,CAAC,yCAAyC,CAAC,CAC7C,CACF,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpE,iEAAiE;QACjE,MAAM,CAAC,GAAI,GAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAEnD,OAAO,GAAG;aACP,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CACH,oBAAoB,CAClB,CAAC,EACD,OAAO,EACP,CAAC,CAAC,6BAA6B,CAAC,EAChC,CAAC,CAAC,oCAAoC,CAAC,CACxC,CACF,CAAC;IACN,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../src/controllers/oauthCallbackController.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ import { isPrivilegedServerConfig } from '../utils/serverConfigValidation.js';
17
17
  import { validateServerName } from '../utils/serverNameValidation.js';
18
18
  import { setCachedSystemConfig } from '../utils/systemConfigCache.js';
19
19
  import { DEFAULT_INSTALL_BASE_URL, withResolvedInstallBaseUrl } from '../utils/installBaseUrl.js';
20
- import { parseBooleanEnvVar } from '../utils/smartRouting.js';
20
+ import { getSmartRoutingConfig, parseBooleanEnvVar } from '../utils/smartRouting.js';
21
21
  import { previewOpenApiToolStats } from '../services/openApiToolStatsService.js';
22
22
  import { logger } from '../utils/logger.js';
23
23
  const getRequestUser = (req) => {
@@ -296,6 +296,14 @@ export const getAllSettings = async (req, res) => {
296
296
  systemConfig.smartRouting.dbUrl = dbUrlEnv ? '${DB_URL}' : '';
297
297
  }
298
298
  }
299
+ // Same idea one level down (issue #642): an env var silently outranks the
300
+ // value the user typed into the dashboard — e.g. a stale OPENAI_API_KEY in
301
+ // .env shadows a freshly pasted valid key, and embeddings fail with 401 while
302
+ // the form happily shows the new key. Reuse getSmartRoutingConfig() so the
303
+ // field→env-var mapping lives in exactly one place instead of being repeated
304
+ // here; this endpoint is admin-only and low-traffic, so the extra DAO read is
305
+ // not worth optimising away.
306
+ const smartRoutingEnvOverriddenFields = (await getSmartRoutingConfig()).envOverriddenFields ?? [];
299
307
  if (!systemConfig.toolResultCompression) {
300
308
  systemConfig.toolResultCompression = {
301
309
  enabled: false,
@@ -304,7 +312,21 @@ export const getAllSettings = async (req, res) => {
304
312
  strategy: 'auto',
305
313
  };
306
314
  }
307
- const systemConfigForResponse = withResolvedInstallBaseUrl(systemConfig, DEFAULT_INSTALL_BASE_URL);
315
+ const systemConfigForResponse = withResolvedInstallBaseUrl({
316
+ ...systemConfig,
317
+ // Response-only copy: `envOverriddenFields` is display metadata, not part
318
+ // of the persisted schema. The file-backed DAO returns its cached settings
319
+ // object by reference, so attaching the field to systemConfig.smartRouting
320
+ // directly would leak it into mcp_settings.json on the next write.
321
+ ...(systemConfig.smartRouting
322
+ ? {
323
+ smartRouting: {
324
+ ...systemConfig.smartRouting,
325
+ envOverriddenFields: smartRoutingEnvOverriddenFields,
326
+ },
327
+ }
328
+ : {}),
329
+ }, DEFAULT_INSTALL_BASE_URL);
308
330
  const settings = {
309
331
  users,
310
332
  mcpServers,
@@ -1357,6 +1379,10 @@ export const updateSystemConfig = async (req, res) => {
1357
1379
  typeof smartRouting.azureOpenaiApiVersion === 'string' ||
1358
1380
  typeof smartRouting.azureOpenaiEmbeddingDeployment === 'string' ||
1359
1381
  typeof smartRouting.progressiveDisclosure === 'boolean' ||
1382
+ typeof smartRouting.azureOpenaiEmbeddingModel === 'string' ||
1383
+ typeof smartRouting.serverDescriptionMode === 'string' ||
1384
+ typeof smartRouting.embeddingQueryPrefix === 'string' ||
1385
+ typeof smartRouting.embeddingDocumentPrefix === 'string' ||
1360
1386
  typeof smartRouting.embeddingMaxTokens === 'number' ||
1361
1387
  smartRouting.embeddingMaxTokens === null);
1362
1388
  const hasToolResultCompressionUpdate = toolResultCompression &&
@@ -1673,8 +1699,7 @@ export const updateSystemConfig = async (req, res) => {
1673
1699
  systemConfig.smartRouting.llmProviderApiKey = smartRouting.llmProviderApiKey?.trim();
1674
1700
  }
1675
1701
  if (typeof smartRouting.embeddingModel === 'string') {
1676
- systemConfig.smartRouting.embeddingModel =
1677
- smartRouting.embeddingModel?.trim();
1702
+ systemConfig.smartRouting.embeddingModel = smartRouting.embeddingModel?.trim();
1678
1703
  }
1679
1704
  if (typeof smartRouting.azureOpenaiEndpoint === 'string') {
1680
1705
  systemConfig.smartRouting.azureOpenaiEndpoint = smartRouting.azureOpenaiEndpoint?.trim();
@@ -1690,9 +1715,25 @@ export const updateSystemConfig = async (req, res) => {
1690
1715
  systemConfig.smartRouting.azureOpenaiEmbeddingDeployment =
1691
1716
  smartRouting.azureOpenaiEmbeddingDeployment?.trim();
1692
1717
  }
1718
+ if (typeof smartRouting.azureOpenaiEmbeddingModel === 'string') {
1719
+ systemConfig.smartRouting.azureOpenaiEmbeddingModel =
1720
+ smartRouting.azureOpenaiEmbeddingModel.trim();
1721
+ }
1693
1722
  if (typeof smartRouting.progressiveDisclosure === 'boolean') {
1694
1723
  systemConfig.smartRouting.progressiveDisclosure = smartRouting.progressiveDisclosure;
1695
1724
  }
1725
+ if (typeof smartRouting.serverDescriptionMode === 'string') {
1726
+ // Same normalization as getSmartRoutingConfig(), so the API and the env var agree
1727
+ const normalized = smartRouting.serverDescriptionMode.trim().toLowerCase();
1728
+ systemConfig.smartRouting.serverDescriptionMode = normalized === 'full' ? 'full' : 'names';
1729
+ }
1730
+ // Stored verbatim, not trimmed: the trailing space is part of a task prefix
1731
+ if (typeof smartRouting.embeddingQueryPrefix === 'string') {
1732
+ systemConfig.smartRouting.embeddingQueryPrefix = smartRouting.embeddingQueryPrefix;
1733
+ }
1734
+ if (typeof smartRouting.embeddingDocumentPrefix === 'string') {
1735
+ systemConfig.smartRouting.embeddingDocumentPrefix = smartRouting.embeddingDocumentPrefix;
1736
+ }
1696
1737
  if (typeof smartRouting.embeddingMaxTokens === 'number' &&
1697
1738
  !isNaN(smartRouting.embeddingMaxTokens)) {
1698
1739
  systemConfig.smartRouting.embeddingMaxTokens = smartRouting.embeddingMaxTokens;
@@ -1714,9 +1755,9 @@ export const updateSystemConfig = async (req, res) => {
1714
1755
  systemConfig.smartRouting.embeddingDimensionsApiPassthrough ||
1715
1756
  previousSmartRoutingConfig.llmProviderBaseUrl !==
1716
1757
  systemConfig.smartRouting.llmProviderBaseUrl ||
1717
- previousSmartRoutingConfig.llmProviderApiKey !== systemConfig.smartRouting.llmProviderApiKey ||
1718
- previousSmartRoutingConfig.embeddingModel !==
1719
- systemConfig.smartRouting.embeddingModel ||
1758
+ previousSmartRoutingConfig.llmProviderApiKey !==
1759
+ systemConfig.smartRouting.llmProviderApiKey ||
1760
+ previousSmartRoutingConfig.embeddingModel !== systemConfig.smartRouting.embeddingModel ||
1720
1761
  previousSmartRoutingConfig.azureOpenaiEndpoint !==
1721
1762
  systemConfig.smartRouting.azureOpenaiEndpoint ||
1722
1763
  previousSmartRoutingConfig.azureOpenaiApiKey !==
@@ -1725,6 +1766,10 @@ export const updateSystemConfig = async (req, res) => {
1725
1766
  systemConfig.smartRouting.azureOpenaiApiVersion ||
1726
1767
  previousSmartRoutingConfig.azureOpenaiEmbeddingDeployment !==
1727
1768
  systemConfig.smartRouting.azureOpenaiEmbeddingDeployment ||
1769
+ previousSmartRoutingConfig.azureOpenaiEmbeddingModel !==
1770
+ systemConfig.smartRouting.azureOpenaiEmbeddingModel ||
1771
+ (previousSmartRoutingConfig.embeddingDocumentPrefix ?? '') !==
1772
+ (systemConfig.smartRouting.embeddingDocumentPrefix ?? '') ||
1728
1773
  previousSmartRoutingConfig.embeddingMaxTokens !==
1729
1774
  systemConfig.smartRouting.embeddingMaxTokens;
1730
1775
  // Sync if: first time enabling OR smart routing is enabled and any config changed