@dereekb/firebase-server 13.25.0 → 13.26.0

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.
package/mcp/index.cjs.js CHANGED
@@ -97,6 +97,24 @@ function _define_property$9(obj, key, value) {
97
97
  *
98
98
  * @example 'https://api.example.com/mcp'
99
99
  */ _define_property$9(this, "mcpUrl", void 0);
100
+ /**
101
+ * Optional filter applied to the OIDC provider's scope list when building the
102
+ * protected-resource discovery document's `scopes_supported` (RFC 9728 §2).
103
+ *
104
+ * The base list is pulled automatically from the OIDC provider config via the
105
+ * injected {@link OidcProviderConfigService.scopesSupported} (i.e.
106
+ * `Object.keys(providerConfig.claims)`), so the MCP resource advertises exactly
107
+ * the scopes the issuer supports without the app restating them. Provide this
108
+ * only to narrow that set — it receives every scope the provider issues and
109
+ * returns the subset to advertise. When unset, all of them are advertised.
110
+ *
111
+ * Advertising these matters because dynamic-registration MCP clients (the Claude
112
+ * Code CLI) read `scopes_supported` to decide which scopes to request on the
113
+ * authorization call; with none advertised they authorize with no `scope`, leaving
114
+ * the OIDC provider nothing to grant and ending the interaction in `access_denied`.
115
+ *
116
+ * @example (allScopes) => allScopes.filter((scope) => scope === 'openid' || scope.startsWith('model.'))
117
+ */ _define_property$9(this, "scopesSupported", void 0);
100
118
  /**
101
119
  * Optional name advertised on the MCP `initialize` handshake. Defaults to
102
120
  * {@link DEFAULT_MCP_SERVER_NAME}.
@@ -174,13 +192,13 @@ typeof SuppressedError === "function" ? SuppressedError : function(error, suppre
174
192
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
175
193
  };
176
194
 
177
- function _array_like_to_array$a(arr, len) {
195
+ function _array_like_to_array$b(arr, len) {
178
196
  if (len == null || len > arr.length) len = arr.length;
179
197
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
180
198
  return arr2;
181
199
  }
182
- function _array_without_holes$7(arr) {
183
- if (Array.isArray(arr)) return _array_like_to_array$a(arr);
200
+ function _array_without_holes$8(arr) {
201
+ if (Array.isArray(arr)) return _array_like_to_array$b(arr);
184
202
  }
185
203
  function _define_property$8(obj, key, value) {
186
204
  if (key in obj) {
@@ -195,13 +213,13 @@ function _define_property$8(obj, key, value) {
195
213
  }
196
214
  return obj;
197
215
  }
198
- function _iterable_to_array$7(iter) {
216
+ function _iterable_to_array$8(iter) {
199
217
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
200
218
  }
201
- function _non_iterable_spread$7() {
219
+ function _non_iterable_spread$8() {
202
220
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
203
221
  }
204
- function _object_spread$5(target) {
222
+ function _object_spread$6(target) {
205
223
  for(var i = 1; i < arguments.length; i++){
206
224
  var source = arguments[i] != null ? arguments[i] : {};
207
225
  var ownKeys = Object.keys(source);
@@ -235,20 +253,20 @@ function _object_spread_props$3(target, source) {
235
253
  }
236
254
  return target;
237
255
  }
238
- function _to_consumable_array$7(arr) {
239
- return _array_without_holes$7(arr) || _iterable_to_array$7(arr) || _unsupported_iterable_to_array$a(arr) || _non_iterable_spread$7();
256
+ function _to_consumable_array$8(arr) {
257
+ return _array_without_holes$8(arr) || _iterable_to_array$8(arr) || _unsupported_iterable_to_array$b(arr) || _non_iterable_spread$8();
240
258
  }
241
259
  function _type_of$4(obj) {
242
260
  "@swc/helpers - typeof";
243
261
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
244
262
  }
245
- function _unsupported_iterable_to_array$a(o, minLen) {
263
+ function _unsupported_iterable_to_array$b(o, minLen) {
246
264
  if (!o) return;
247
- if (typeof o === "string") return _array_like_to_array$a(o, minLen);
265
+ if (typeof o === "string") return _array_like_to_array$b(o, minLen);
248
266
  var n = Object.prototype.toString.call(o).slice(8, -1);
249
267
  if (n === "Object" && o.constructor) n = o.constructor.name;
250
268
  if (n === "Map" || n === "Set") return Array.from(n);
251
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$a(o, minLen);
269
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$b(o, minLen);
252
270
  }
253
271
  /**
254
272
  * Normalizes the app-supplied {@link McpModuleConfig.reasonParameter} value (object / boolean /
@@ -321,9 +339,9 @@ function _unsupported_iterable_to_array$a(o, minLen) {
321
339
  var _base_type;
322
340
  var base = (typeof inputSchema === "undefined" ? "undefined" : _type_of$4(inputSchema)) === 'object' && inputSchema != null ? inputSchema : {};
323
341
  var existingProperties = _type_of$4(base.properties) === 'object' && base.properties != null ? base.properties : {};
324
- var next = _object_spread_props$3(_object_spread$5({}, base), {
342
+ var next = _object_spread_props$3(_object_spread$6({}, base), {
325
343
  type: (_base_type = base.type) !== null && _base_type !== void 0 ? _base_type : 'object',
326
- properties: _object_spread_props$3(_object_spread$5({}, existingProperties), _define_property$8({}, resolved.parameterName, {
344
+ properties: _object_spread_props$3(_object_spread$6({}, existingProperties), _define_property$8({}, resolved.parameterName, {
327
345
  type: 'string',
328
346
  maxLength: resolved.maxLength,
329
347
  description: resolved.description
@@ -331,7 +349,7 @@ function _unsupported_iterable_to_array$a(o, minLen) {
331
349
  });
332
350
  if (resolved.required) {
333
351
  var existingRequired = Array.isArray(base.required) ? base.required : [];
334
- next.required = existingRequired.includes(resolved.parameterName) ? _to_consumable_array$7(existingRequired) : _to_consumable_array$7(existingRequired).concat([
352
+ next.required = existingRequired.includes(resolved.parameterName) ? _to_consumable_array$8(existingRequired) : _to_consumable_array$8(existingRequired).concat([
335
353
  resolved.parameterName
336
354
  ]);
337
355
  }
@@ -357,7 +375,7 @@ function _unsupported_iterable_to_array$a(o, minLen) {
357
375
  var result;
358
376
  if (resolved.enabled && !toolDeclaresOwnReason && Object.prototype.hasOwnProperty.call(args, resolved.parameterName)) {
359
377
  var rawValue = args[resolved.parameterName];
360
- var nextArgs = _object_spread$5({}, args);
378
+ var nextArgs = _object_spread$6({}, args);
361
379
  delete nextArgs[resolved.parameterName];
362
380
  var stringValue = rawValue == null ? '' : String(rawValue);
363
381
  var clamped = stringValue.length > resolved.maxLength ? stringValue.slice(0, resolved.maxLength) : stringValue;
@@ -429,7 +447,7 @@ function _class_call_check$4(instance, Constructor) {
429
447
  return isDefault ? "".concat(modelType, ".").concat(call, "._") : "".concat(modelType, ".").concat(call, ".").concat(specifier);
430
448
  }
431
449
 
432
- function _array_like_to_array$9(arr, len) {
450
+ function _array_like_to_array$a(arr, len) {
433
451
  if (len == null || len > arr.length) len = arr.length;
434
452
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
435
453
  return arr2;
@@ -465,15 +483,15 @@ function _non_iterable_rest$5() {
465
483
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
466
484
  }
467
485
  function _sliced_to_array$5(arr, i) {
468
- return _array_with_holes$5(arr) || _iterable_to_array_limit$5(arr, i) || _unsupported_iterable_to_array$9(arr, i) || _non_iterable_rest$5();
486
+ return _array_with_holes$5(arr) || _iterable_to_array_limit$5(arr, i) || _unsupported_iterable_to_array$a(arr, i) || _non_iterable_rest$5();
469
487
  }
470
- function _unsupported_iterable_to_array$9(o, minLen) {
488
+ function _unsupported_iterable_to_array$a(o, minLen) {
471
489
  if (!o) return;
472
- if (typeof o === "string") return _array_like_to_array$9(o, minLen);
490
+ if (typeof o === "string") return _array_like_to_array$a(o, minLen);
473
491
  var n = Object.prototype.toString.call(o).slice(8, -1);
474
492
  if (n === "Object" && o.constructor) n = o.constructor.name;
475
493
  if (n === "Map" || n === "Set") return Array.from(n);
476
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$9(o, minLen);
494
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$a(o, minLen);
477
495
  }
478
496
  /**
479
497
  * Runtime mirror of the build-time route manifest schema + a ported URL matcher.
@@ -1065,7 +1083,7 @@ function stringifyResult(result) {
1065
1083
  return firebase.callModelOidcScopeForCallType(callType);
1066
1084
  }
1067
1085
 
1068
- function _array_like_to_array$8(arr, len) {
1086
+ function _array_like_to_array$9(arr, len) {
1069
1087
  if (len == null || len > arr.length) len = arr.length;
1070
1088
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
1071
1089
  return arr2;
@@ -1101,19 +1119,19 @@ function _non_iterable_rest$4() {
1101
1119
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1102
1120
  }
1103
1121
  function _sliced_to_array$4(arr, i) {
1104
- return _array_with_holes$4(arr) || _iterable_to_array_limit$4(arr, i) || _unsupported_iterable_to_array$8(arr, i) || _non_iterable_rest$4();
1122
+ return _array_with_holes$4(arr) || _iterable_to_array_limit$4(arr, i) || _unsupported_iterable_to_array$9(arr, i) || _non_iterable_rest$4();
1105
1123
  }
1106
1124
  function _type_of$3(obj) {
1107
1125
  "@swc/helpers - typeof";
1108
1126
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
1109
1127
  }
1110
- function _unsupported_iterable_to_array$8(o, minLen) {
1128
+ function _unsupported_iterable_to_array$9(o, minLen) {
1111
1129
  if (!o) return;
1112
- if (typeof o === "string") return _array_like_to_array$8(o, minLen);
1130
+ if (typeof o === "string") return _array_like_to_array$9(o, minLen);
1113
1131
  var n = Object.prototype.toString.call(o).slice(8, -1);
1114
1132
  if (n === "Object" && o.constructor) n = o.constructor.name;
1115
1133
  if (n === "Map" || n === "Set") return Array.from(n);
1116
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$8(o, minLen);
1134
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$9(o, minLen);
1117
1135
  }
1118
1136
  /**
1119
1137
  * Default `toJsonSchema()` options.
@@ -1716,13 +1734,13 @@ function resolveInputSchema(context) {
1716
1734
  return result;
1717
1735
  }
1718
1736
 
1719
- function _array_like_to_array$7(arr, len) {
1737
+ function _array_like_to_array$8(arr, len) {
1720
1738
  if (len == null || len > arr.length) len = arr.length;
1721
1739
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
1722
1740
  return arr2;
1723
1741
  }
1724
- function _array_without_holes$6(arr) {
1725
- if (Array.isArray(arr)) return _array_like_to_array$7(arr);
1742
+ function _array_without_holes$7(arr) {
1743
+ if (Array.isArray(arr)) return _array_like_to_array$8(arr);
1726
1744
  }
1727
1745
  function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) {
1728
1746
  try {
@@ -1753,22 +1771,22 @@ function _async_to_generator$5(fn) {
1753
1771
  });
1754
1772
  };
1755
1773
  }
1756
- function _iterable_to_array$6(iter) {
1774
+ function _iterable_to_array$7(iter) {
1757
1775
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
1758
1776
  }
1759
- function _non_iterable_spread$6() {
1777
+ function _non_iterable_spread$7() {
1760
1778
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1761
1779
  }
1762
- function _to_consumable_array$6(arr) {
1763
- return _array_without_holes$6(arr) || _iterable_to_array$6(arr) || _unsupported_iterable_to_array$7(arr) || _non_iterable_spread$6();
1780
+ function _to_consumable_array$7(arr) {
1781
+ return _array_without_holes$7(arr) || _iterable_to_array$7(arr) || _unsupported_iterable_to_array$8(arr) || _non_iterable_spread$7();
1764
1782
  }
1765
- function _unsupported_iterable_to_array$7(o, minLen) {
1783
+ function _unsupported_iterable_to_array$8(o, minLen) {
1766
1784
  if (!o) return;
1767
- if (typeof o === "string") return _array_like_to_array$7(o, minLen);
1785
+ if (typeof o === "string") return _array_like_to_array$8(o, minLen);
1768
1786
  var n = Object.prototype.toString.call(o).slice(8, -1);
1769
1787
  if (n === "Object" && o.constructor) n = o.constructor.name;
1770
1788
  if (n === "Map" || n === "Set") return Array.from(n);
1771
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$7(o, minLen);
1789
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$8(o, minLen);
1772
1790
  }
1773
1791
  function _ts_generator$5(thisArg, body) {
1774
1792
  var f, y, t, _ = {
@@ -2064,8 +2082,8 @@ function readInChunks$1(input) {
2064
2082
  ];
2065
2083
  case 2:
2066
2084
  partial = _state.sent();
2067
- (_merged_results = merged.results).push.apply(_merged_results, _to_consumable_array$6(partial.results));
2068
- (_merged_errors = merged.errors).push.apply(_merged_errors, _to_consumable_array$6(partial.errors));
2085
+ (_merged_results = merged.results).push.apply(_merged_results, _to_consumable_array$7(partial.results));
2086
+ (_merged_errors = merged.errors).push.apply(_merged_errors, _to_consumable_array$7(partial.errors));
2069
2087
  _state.label = 3;
2070
2088
  case 3:
2071
2089
  offset += MCP_MODEL_GET_BATCH_SIZE;
@@ -2156,13 +2174,13 @@ var MODEL_GET_OUTPUT_SCHEMA = {
2156
2174
  }
2157
2175
  };
2158
2176
 
2159
- function _array_like_to_array$6(arr, len) {
2177
+ function _array_like_to_array$7(arr, len) {
2160
2178
  if (len == null || len > arr.length) len = arr.length;
2161
2179
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
2162
2180
  return arr2;
2163
2181
  }
2164
- function _array_without_holes$5(arr) {
2165
- if (Array.isArray(arr)) return _array_like_to_array$6(arr);
2182
+ function _array_without_holes$6(arr) {
2183
+ if (Array.isArray(arr)) return _array_like_to_array$7(arr);
2166
2184
  }
2167
2185
  function _define_property$7(obj, key, value) {
2168
2186
  if (key in obj) {
@@ -2177,13 +2195,13 @@ function _define_property$7(obj, key, value) {
2177
2195
  }
2178
2196
  return obj;
2179
2197
  }
2180
- function _iterable_to_array$5(iter) {
2198
+ function _iterable_to_array$6(iter) {
2181
2199
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
2182
2200
  }
2183
- function _non_iterable_spread$5() {
2201
+ function _non_iterable_spread$6() {
2184
2202
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
2185
2203
  }
2186
- function _object_spread$4(target) {
2204
+ function _object_spread$5(target) {
2187
2205
  for(var i = 1; i < arguments.length; i++){
2188
2206
  var source = arguments[i] != null ? arguments[i] : {};
2189
2207
  var ownKeys = Object.keys(source);
@@ -2217,16 +2235,16 @@ function _object_spread_props$2(target, source) {
2217
2235
  }
2218
2236
  return target;
2219
2237
  }
2220
- function _to_consumable_array$5(arr) {
2221
- return _array_without_holes$5(arr) || _iterable_to_array$5(arr) || _unsupported_iterable_to_array$6(arr) || _non_iterable_spread$5();
2238
+ function _to_consumable_array$6(arr) {
2239
+ return _array_without_holes$6(arr) || _iterable_to_array$6(arr) || _unsupported_iterable_to_array$7(arr) || _non_iterable_spread$6();
2222
2240
  }
2223
- function _unsupported_iterable_to_array$6(o, minLen) {
2241
+ function _unsupported_iterable_to_array$7(o, minLen) {
2224
2242
  if (!o) return;
2225
- if (typeof o === "string") return _array_like_to_array$6(o, minLen);
2243
+ if (typeof o === "string") return _array_like_to_array$7(o, minLen);
2226
2244
  var n = Object.prototype.toString.call(o).slice(8, -1);
2227
2245
  if (n === "Object" && o.constructor) n = o.constructor.name;
2228
2246
  if (n === "Map" || n === "Set") return Array.from(n);
2229
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$6(o, minLen);
2247
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$7(o, minLen);
2230
2248
  }
2231
2249
  // MARK: Constants
2232
2250
  /**
@@ -2393,7 +2411,7 @@ function resolveModelInfoOutput(input, manifest) {
2393
2411
  }
2394
2412
  }
2395
2413
  if (tables.length > 0) {
2396
- result = _object_spread_props$2(_object_spread$4({}, output), {
2414
+ result = _object_spread_props$2(_object_spread$5({}, output), {
2397
2415
  enums: tables
2398
2416
  });
2399
2417
  }
@@ -2412,7 +2430,7 @@ function resolveModelInfoOutput(input, manifest) {
2412
2430
  rows.push(output.model);
2413
2431
  } else if (output.mode === 'list' || output.mode === 'multiple') {
2414
2432
  var _rows;
2415
- (_rows = rows).push.apply(_rows, _to_consumable_array$5(output.models));
2433
+ (_rows = rows).push.apply(_rows, _to_consumable_array$6(output.models));
2416
2434
  }
2417
2435
  return rows.filter(function(row) {
2418
2436
  return Array.isArray(row.fields);
@@ -2447,7 +2465,7 @@ function parseModelInfoInput(args) {
2447
2465
  var modelGroup = parseModelGroupArg(args['modelGroup']);
2448
2466
  var all = parseBooleanArg(args['all'], 'all');
2449
2467
  var fields = parseBooleanArg(args['fields'], 'fields');
2450
- return _object_spread$4(_object_spread_props$2(_object_spread$4(_object_spread_props$2(_object_spread$4({}, modelQueries == null ? {} : {
2468
+ return _object_spread$5(_object_spread_props$2(_object_spread$5(_object_spread_props$2(_object_spread$5({}, modelQueries == null ? {} : {
2451
2469
  modelQueries: modelQueries
2452
2470
  }), {
2453
2471
  modelIsArray: Array.isArray(args['model'])
@@ -2610,7 +2628,7 @@ function toModelRow(entry, detailed) {
2610
2628
  return detailed ? entry : toSummaryRow(entry);
2611
2629
  }
2612
2630
  function toSummaryRow(entry) {
2613
- return _object_spread$4({
2631
+ return _object_spread$5({
2614
2632
  modelType: entry.modelType,
2615
2633
  modelName: entry.modelName,
2616
2634
  identityConst: entry.identityConst,
@@ -2638,7 +2656,7 @@ function toSummaryRow(entry) {
2638
2656
  *
2639
2657
  * @__NO_SIDE_EFFECTS__
2640
2658
  */ function computeGroupCounts(manifest) {
2641
- var grouped = util.makeValuesGroupMap(_to_consumable_array$5(manifest), function(entry) {
2659
+ var grouped = util.makeValuesGroupMap(_to_consumable_array$6(manifest), function(entry) {
2642
2660
  var _entry_modelGroup;
2643
2661
  return (_entry_modelGroup = entry.modelGroup) !== null && _entry_modelGroup !== void 0 ? _entry_modelGroup : MODEL_INFO_UNGROUPED_LABEL;
2644
2662
  });
@@ -2945,7 +2963,7 @@ var MODEL_INFO_OUTPUT_SCHEMA = {
2945
2963
  type: 'string',
2946
2964
  description: 'Present when `mode` is `"list"` from a `modelGroup` filter. The canonical group name.'
2947
2965
  },
2948
- model: _object_spread_props$2(_object_spread$4({}, MODEL_ROW_SCHEMA), {
2966
+ model: _object_spread_props$2(_object_spread$5({}, MODEL_ROW_SCHEMA), {
2949
2967
  description: 'Present when `mode` is `"single"`. The matched model entry (full detail unless `fields:false`).'
2950
2968
  }),
2951
2969
  notFound: {
@@ -3031,7 +3049,7 @@ function _define_property$6(obj, key, value) {
3031
3049
  }
3032
3050
  return obj;
3033
3051
  }
3034
- function _object_spread$3(target) {
3052
+ function _object_spread$4(target) {
3035
3053
  for(var i = 1; i < arguments.length; i++){
3036
3054
  var source = arguments[i] != null ? arguments[i] : {};
3037
3055
  var ownKeys = Object.keys(source);
@@ -3170,7 +3188,7 @@ function parseModelDecodeInput(args) {
3170
3188
  };
3171
3189
  }
3172
3190
  function toSegment(prefix, id, entry) {
3173
- var segment = entry ? _object_spread$3({
3191
+ var segment = entry ? _object_spread$4({
3174
3192
  prefix: prefix,
3175
3193
  id: id,
3176
3194
  modelType: entry.modelType,
@@ -3460,7 +3478,7 @@ var ENUM_INFO_OUTPUT_SCHEMA = {
3460
3478
  }
3461
3479
  };
3462
3480
 
3463
- function _array_like_to_array$5(arr, len) {
3481
+ function _array_like_to_array$6(arr, len) {
3464
3482
  if (len == null || len > arr.length) len = arr.length;
3465
3483
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
3466
3484
  return arr2;
@@ -3468,8 +3486,8 @@ function _array_like_to_array$5(arr, len) {
3468
3486
  function _array_with_holes$3(arr) {
3469
3487
  if (Array.isArray(arr)) return arr;
3470
3488
  }
3471
- function _array_without_holes$4(arr) {
3472
- if (Array.isArray(arr)) return _array_like_to_array$5(arr);
3489
+ function _array_without_holes$5(arr) {
3490
+ if (Array.isArray(arr)) return _array_like_to_array$6(arr);
3473
3491
  }
3474
3492
  function _define_property$5(obj, key, value) {
3475
3493
  if (key in obj) {
@@ -3484,7 +3502,7 @@ function _define_property$5(obj, key, value) {
3484
3502
  }
3485
3503
  return obj;
3486
3504
  }
3487
- function _iterable_to_array$4(iter) {
3505
+ function _iterable_to_array$5(iter) {
3488
3506
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
3489
3507
  }
3490
3508
  function _iterable_to_array_limit$3(arr, i) {
@@ -3514,10 +3532,10 @@ function _iterable_to_array_limit$3(arr, i) {
3514
3532
  function _non_iterable_rest$3() {
3515
3533
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3516
3534
  }
3517
- function _non_iterable_spread$4() {
3535
+ function _non_iterable_spread$5() {
3518
3536
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3519
3537
  }
3520
- function _object_spread$2(target) {
3538
+ function _object_spread$3(target) {
3521
3539
  for(var i = 1; i < arguments.length; i++){
3522
3540
  var source = arguments[i] != null ? arguments[i] : {};
3523
3541
  var ownKeys = Object.keys(source);
@@ -3533,18 +3551,18 @@ function _object_spread$2(target) {
3533
3551
  return target;
3534
3552
  }
3535
3553
  function _sliced_to_array$3(arr, i) {
3536
- return _array_with_holes$3(arr) || _iterable_to_array_limit$3(arr, i) || _unsupported_iterable_to_array$5(arr, i) || _non_iterable_rest$3();
3554
+ return _array_with_holes$3(arr) || _iterable_to_array_limit$3(arr, i) || _unsupported_iterable_to_array$6(arr, i) || _non_iterable_rest$3();
3537
3555
  }
3538
- function _to_consumable_array$4(arr) {
3539
- return _array_without_holes$4(arr) || _iterable_to_array$4(arr) || _unsupported_iterable_to_array$5(arr) || _non_iterable_spread$4();
3556
+ function _to_consumable_array$5(arr) {
3557
+ return _array_without_holes$5(arr) || _iterable_to_array$5(arr) || _unsupported_iterable_to_array$6(arr) || _non_iterable_spread$5();
3540
3558
  }
3541
- function _unsupported_iterable_to_array$5(o, minLen) {
3559
+ function _unsupported_iterable_to_array$6(o, minLen) {
3542
3560
  if (!o) return;
3543
- if (typeof o === "string") return _array_like_to_array$5(o, minLen);
3561
+ if (typeof o === "string") return _array_like_to_array$6(o, minLen);
3544
3562
  var n = Object.prototype.toString.call(o).slice(8, -1);
3545
3563
  if (n === "Object" && o.constructor) n = o.constructor.name;
3546
3564
  if (n === "Map" || n === "Set") return Array.from(n);
3547
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$5(o, minLen);
3565
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$6(o, minLen);
3548
3566
  }
3549
3567
  // MARK: Constants
3550
3568
  /**
@@ -3612,7 +3630,7 @@ function whoamiToolHandler(args, ctx, deps) {
3612
3630
  return key;
3613
3631
  });
3614
3632
  var roleSet = deps.roleReader == null ? new Set() : deps.roleReader(token);
3615
- var roles = _to_consumable_array$4(roleSet).sort(function(a, b) {
3633
+ var roles = _to_consumable_array$5(roleSet).sort(function(a, b) {
3616
3634
  return a.localeCompare(b);
3617
3635
  });
3618
3636
  var claimsByKey = new Map();
@@ -3646,7 +3664,7 @@ function whoamiToolHandler(args, ctx, deps) {
3646
3664
  if (claim1 == null) {
3647
3665
  unknownClaimKeys.push(key);
3648
3666
  } else {
3649
- claimDetails.push(_object_spread$2({
3667
+ claimDetails.push(_object_spread$3({
3650
3668
  key: claim1.key,
3651
3669
  description: claim1.description,
3652
3670
  grantedRoles: claim1.mapping.roles,
@@ -3671,7 +3689,7 @@ function whoamiToolHandler(args, ctx, deps) {
3671
3689
  }
3672
3690
  }
3673
3691
  }
3674
- var output = _object_spread$2({
3692
+ var output = _object_spread$3({
3675
3693
  authenticated: true,
3676
3694
  uid: auth.uid,
3677
3695
  roles: roles,
@@ -3683,7 +3701,7 @@ function whoamiToolHandler(args, ctx, deps) {
3683
3701
  }, token.email_verified == null ? {} : {
3684
3702
  emailVerified: token.email_verified
3685
3703
  }, detail === 'summary' ? {} : {
3686
- claims: _object_spread$2({}, token)
3704
+ claims: _object_spread$3({}, token)
3687
3705
  }, detail === 'full' ? {
3688
3706
  claimDetails: claimDetails,
3689
3707
  unknownClaimKeys: unknownClaimKeys
@@ -3924,7 +3942,7 @@ var WHOAMI_OUTPUT_SCHEMA = {
3924
3942
  }
3925
3943
  };
3926
3944
 
3927
- function _array_like_to_array$4(arr, len) {
3945
+ function _array_like_to_array$5(arr, len) {
3928
3946
  if (len == null || len > arr.length) len = arr.length;
3929
3947
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
3930
3948
  return arr2;
@@ -3932,8 +3950,8 @@ function _array_like_to_array$4(arr, len) {
3932
3950
  function _array_with_holes$2(arr) {
3933
3951
  if (Array.isArray(arr)) return arr;
3934
3952
  }
3935
- function _array_without_holes$3(arr) {
3936
- if (Array.isArray(arr)) return _array_like_to_array$4(arr);
3953
+ function _array_without_holes$4(arr) {
3954
+ if (Array.isArray(arr)) return _array_like_to_array$5(arr);
3937
3955
  }
3938
3956
  function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) {
3939
3957
  try {
@@ -3977,7 +3995,7 @@ function _define_property$4(obj, key, value) {
3977
3995
  }
3978
3996
  return obj;
3979
3997
  }
3980
- function _iterable_to_array$3(iter) {
3998
+ function _iterable_to_array$4(iter) {
3981
3999
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
3982
4000
  }
3983
4001
  function _iterable_to_array_limit$2(arr, i) {
@@ -4007,10 +4025,10 @@ function _iterable_to_array_limit$2(arr, i) {
4007
4025
  function _non_iterable_rest$2() {
4008
4026
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
4009
4027
  }
4010
- function _non_iterable_spread$3() {
4028
+ function _non_iterable_spread$4() {
4011
4029
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
4012
4030
  }
4013
- function _object_spread$1(target) {
4031
+ function _object_spread$2(target) {
4014
4032
  for(var i = 1; i < arguments.length; i++){
4015
4033
  var source = arguments[i] != null ? arguments[i] : {};
4016
4034
  var ownKeys = Object.keys(source);
@@ -4045,18 +4063,18 @@ function _object_spread_props$1(target, source) {
4045
4063
  return target;
4046
4064
  }
4047
4065
  function _sliced_to_array$2(arr, i) {
4048
- return _array_with_holes$2(arr) || _iterable_to_array_limit$2(arr, i) || _unsupported_iterable_to_array$4(arr, i) || _non_iterable_rest$2();
4066
+ return _array_with_holes$2(arr) || _iterable_to_array_limit$2(arr, i) || _unsupported_iterable_to_array$5(arr, i) || _non_iterable_rest$2();
4049
4067
  }
4050
- function _to_consumable_array$3(arr) {
4051
- return _array_without_holes$3(arr) || _iterable_to_array$3(arr) || _unsupported_iterable_to_array$4(arr) || _non_iterable_spread$3();
4068
+ function _to_consumable_array$4(arr) {
4069
+ return _array_without_holes$4(arr) || _iterable_to_array$4(arr) || _unsupported_iterable_to_array$5(arr) || _non_iterable_spread$4();
4052
4070
  }
4053
- function _unsupported_iterable_to_array$4(o, minLen) {
4071
+ function _unsupported_iterable_to_array$5(o, minLen) {
4054
4072
  if (!o) return;
4055
- if (typeof o === "string") return _array_like_to_array$4(o, minLen);
4073
+ if (typeof o === "string") return _array_like_to_array$5(o, minLen);
4056
4074
  var n = Object.prototype.toString.call(o).slice(8, -1);
4057
4075
  if (n === "Object" && o.constructor) n = o.constructor.name;
4058
4076
  if (n === "Map" || n === "Set") return Array.from(n);
4059
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$4(o, minLen);
4077
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$5(o, minLen);
4060
4078
  }
4061
4079
  function _ts_generator$4(thisArg, body) {
4062
4080
  var f, y, t, _ = {
@@ -4313,7 +4331,7 @@ function parseUrlModelsInput(args) {
4313
4331
  }
4314
4332
  currentUserUid = args.currentUserUid;
4315
4333
  }
4316
- return _object_spread$1(_object_spread_props$1(_object_spread$1({
4334
+ return _object_spread$2(_object_spread_props$1(_object_spread$2({
4317
4335
  url: url
4318
4336
  }, models === undefined ? {} : {
4319
4337
  models: models
@@ -4442,7 +4460,7 @@ function buildMatchedPayload(args) {
4442
4460
  loaded = _tmp;
4443
4461
  return [
4444
4462
  2,
4445
- _object_spread$1({
4463
+ _object_spread$2({
4446
4464
  state: {
4447
4465
  name: match.state.name,
4448
4466
  fullUrl: match.state.fullUrl,
@@ -4465,7 +4483,7 @@ function resolveModelEntry(input) {
4465
4483
  var base = keysOnly ? {
4466
4484
  modelType: entry.modelType,
4467
4485
  kind: entry.kind
4468
- } : _object_spread$1({
4486
+ } : _object_spread$2({
4469
4487
  modelType: entry.modelType,
4470
4488
  kind: entry.kind
4471
4489
  }, entry.keyTemplate === undefined ? {} : {
@@ -4479,11 +4497,11 @@ function resolveModelEntry(input) {
4479
4497
  if (entry.kind === 'list') {
4480
4498
  result = base;
4481
4499
  } else if (entry.kind === 'id') {
4482
- result = _object_spread$1({}, base, resolveIdKey(input));
4500
+ result = _object_spread$2({}, base, resolveIdKey(input));
4483
4501
  } else if (entry.kind === 'flatKey') {
4484
- result = _object_spread$1({}, base, resolveFlatKey(input));
4502
+ result = _object_spread$2({}, base, resolveFlatKey(input));
4485
4503
  } else {
4486
- result = _object_spread$1({}, base, resolveFullKey(input));
4504
+ result = _object_spread$2({}, base, resolveFullKey(input));
4487
4505
  }
4488
4506
  return result;
4489
4507
  }
@@ -4784,8 +4802,8 @@ function readInChunks(input) {
4784
4802
  ];
4785
4803
  case 2:
4786
4804
  partial = _state.sent();
4787
- (_merged_results = merged.results).push.apply(_merged_results, _to_consumable_array$3(partial.results));
4788
- (_merged_errors = merged.errors).push.apply(_merged_errors, _to_consumable_array$3(partial.errors));
4805
+ (_merged_results = merged.results).push.apply(_merged_results, _to_consumable_array$4(partial.results));
4806
+ (_merged_errors = merged.errors).push.apply(_merged_errors, _to_consumable_array$4(partial.errors));
4789
4807
  _state.label = 3;
4790
4808
  case 3:
4791
4809
  offset += MCP_MODEL_GET_BATCH_SIZE;
@@ -4898,7 +4916,7 @@ var URL_MODELS_OUTPUT_SCHEMA = {
4898
4916
  }
4899
4917
  };
4900
4918
 
4901
- function _array_like_to_array$3(arr, len) {
4919
+ function _array_like_to_array$4(arr, len) {
4902
4920
  if (len == null || len > arr.length) len = arr.length;
4903
4921
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4904
4922
  return arr2;
@@ -4971,19 +4989,19 @@ function _non_iterable_rest$1() {
4971
4989
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
4972
4990
  }
4973
4991
  function _sliced_to_array$1(arr, i) {
4974
- return _array_with_holes$1(arr) || _iterable_to_array_limit$1(arr, i) || _unsupported_iterable_to_array$3(arr, i) || _non_iterable_rest$1();
4992
+ return _array_with_holes$1(arr) || _iterable_to_array_limit$1(arr, i) || _unsupported_iterable_to_array$4(arr, i) || _non_iterable_rest$1();
4975
4993
  }
4976
4994
  function _type_of$2(obj) {
4977
4995
  "@swc/helpers - typeof";
4978
4996
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
4979
4997
  }
4980
- function _unsupported_iterable_to_array$3(o, minLen) {
4998
+ function _unsupported_iterable_to_array$4(o, minLen) {
4981
4999
  if (!o) return;
4982
- if (typeof o === "string") return _array_like_to_array$3(o, minLen);
5000
+ if (typeof o === "string") return _array_like_to_array$4(o, minLen);
4983
5001
  var n = Object.prototype.toString.call(o).slice(8, -1);
4984
5002
  if (n === "Object" && o.constructor) n = o.constructor.name;
4985
5003
  if (n === "Map" || n === "Set") return Array.from(n);
4986
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$3(o, minLen);
5004
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$4(o, minLen);
4987
5005
  }
4988
5006
  function _ts_generator$3(thisArg, body) {
4989
5007
  var f, y, t, _ = {
@@ -5746,7 +5764,7 @@ var BATCH_EXECUTE_OUTPUT_SCHEMA = {
5746
5764
  }
5747
5765
  };
5748
5766
 
5749
- function _array_like_to_array$2(arr, len) {
5767
+ function _array_like_to_array$3(arr, len) {
5750
5768
  if (len == null || len > arr.length) len = arr.length;
5751
5769
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
5752
5770
  return arr2;
@@ -5754,8 +5772,8 @@ function _array_like_to_array$2(arr, len) {
5754
5772
  function _array_with_holes(arr) {
5755
5773
  if (Array.isArray(arr)) return arr;
5756
5774
  }
5757
- function _array_without_holes$2(arr) {
5758
- if (Array.isArray(arr)) return _array_like_to_array$2(arr);
5775
+ function _array_without_holes$3(arr) {
5776
+ if (Array.isArray(arr)) return _array_like_to_array$3(arr);
5759
5777
  }
5760
5778
  function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
5761
5779
  try {
@@ -5817,7 +5835,7 @@ function _define_property$3(obj, key, value) {
5817
5835
  }
5818
5836
  return obj;
5819
5837
  }
5820
- function _iterable_to_array$2(iter) {
5838
+ function _iterable_to_array$3(iter) {
5821
5839
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
5822
5840
  }
5823
5841
  function _iterable_to_array_limit(arr, i) {
@@ -5847,10 +5865,10 @@ function _iterable_to_array_limit(arr, i) {
5847
5865
  function _non_iterable_rest() {
5848
5866
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
5849
5867
  }
5850
- function _non_iterable_spread$2() {
5868
+ function _non_iterable_spread$3() {
5851
5869
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
5852
5870
  }
5853
- function _object_spread(target) {
5871
+ function _object_spread$1(target) {
5854
5872
  for(var i = 1; i < arguments.length; i++){
5855
5873
  var source = arguments[i] != null ? arguments[i] : {};
5856
5874
  var ownKeys = Object.keys(source);
@@ -5885,22 +5903,22 @@ function _object_spread_props(target, source) {
5885
5903
  return target;
5886
5904
  }
5887
5905
  function _sliced_to_array(arr, i) {
5888
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array$2(arr, i) || _non_iterable_rest();
5906
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array$3(arr, i) || _non_iterable_rest();
5889
5907
  }
5890
- function _to_consumable_array$2(arr) {
5891
- return _array_without_holes$2(arr) || _iterable_to_array$2(arr) || _unsupported_iterable_to_array$2(arr) || _non_iterable_spread$2();
5908
+ function _to_consumable_array$3(arr) {
5909
+ return _array_without_holes$3(arr) || _iterable_to_array$3(arr) || _unsupported_iterable_to_array$3(arr) || _non_iterable_spread$3();
5892
5910
  }
5893
5911
  function _type_of$1(obj) {
5894
5912
  "@swc/helpers - typeof";
5895
5913
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
5896
5914
  }
5897
- function _unsupported_iterable_to_array$2(o, minLen) {
5915
+ function _unsupported_iterable_to_array$3(o, minLen) {
5898
5916
  if (!o) return;
5899
- if (typeof o === "string") return _array_like_to_array$2(o, minLen);
5917
+ if (typeof o === "string") return _array_like_to_array$3(o, minLen);
5900
5918
  var n = Object.prototype.toString.call(o).slice(8, -1);
5901
5919
  if (n === "Object" && o.constructor) n = o.constructor.name;
5902
5920
  if (n === "Map" || n === "Set") return Array.from(n);
5903
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$2(o, minLen);
5921
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$3(o, minLen);
5904
5922
  }
5905
5923
  function _ts_generator$2(thisArg, body) {
5906
5924
  var f, y, t, _ = {
@@ -6064,7 +6082,7 @@ var McpServerFactoryService_1;
6064
6082
  var staticTools = this._resolveStaticTools();
6065
6083
  var scopes = this._resolveScopes(ctx);
6066
6084
  var authRoles = this._resolveAuthRoles(ctx);
6067
- var combinedTools = _to_consumable_array$2(toolGeneration.tools).concat(_to_consumable_array$2(staticTools));
6085
+ var combinedTools = _to_consumable_array$3(toolGeneration.tools).concat(_to_consumable_array$3(staticTools));
6068
6086
  var visibleTools = this._filterToolsForRequest(combinedTools, {
6069
6087
  ctx: ctx,
6070
6088
  scopes: scopes,
@@ -6082,7 +6100,7 @@ var McpServerFactoryService_1;
6082
6100
  var listedTools = visibleTools;
6083
6101
  if (batchTool != null) {
6084
6102
  definitionsByName.set(batchTool.name, batchTool);
6085
- listedTools = _to_consumable_array$2(visibleTools).concat([
6103
+ listedTools = _to_consumable_array$3(visibleTools).concat([
6086
6104
  batchTool
6087
6105
  ]);
6088
6106
  }
@@ -6319,7 +6337,7 @@ var McpServerFactoryService_1;
6319
6337
  var modelManifest = this._cachedManifestModels;
6320
6338
  var enumManifest = this._cachedManifestEnums;
6321
6339
  if (modelManifest != null && modelManifest.length > 0) {
6322
- staticTools.push(createModelInfoTool(_object_spread({
6340
+ staticTools.push(createModelInfoTool(_object_spread$1({
6323
6341
  manifest: modelManifest
6324
6342
  }, enumManifest == null ? {} : {
6325
6343
  enums: enumManifest
@@ -6778,7 +6796,7 @@ var McpServerFactoryService_1;
6778
6796
  // applyMcpReasonParameterToSchema self-skips (returns the same reference) on collision, so the
6779
6797
  // frozen-verbatim hot path still holds for tools that already declare the parameter name.
6780
6798
  if (reasoned !== tool.staticWireEntry.inputSchema) {
6781
- result = _object_spread_props(_object_spread({}, tool.staticWireEntry), {
6799
+ result = _object_spread_props(_object_spread$1({}, tool.staticWireEntry), {
6782
6800
  inputSchema: reasoned
6783
6801
  });
6784
6802
  }
@@ -7476,6 +7494,14 @@ exports.McpController = McpController_1 = __decorate([
7476
7494
  __param(0, common.Inject(exports.McpServerFactoryService))
7477
7495
  ], exports.McpController);
7478
7496
 
7497
+ function _array_like_to_array$2(arr, len) {
7498
+ if (len == null || len > arr.length) len = arr.length;
7499
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
7500
+ return arr2;
7501
+ }
7502
+ function _array_without_holes$2(arr) {
7503
+ if (Array.isArray(arr)) return _array_like_to_array$2(arr);
7504
+ }
7479
7505
  function _class_call_check$1(instance, Constructor) {
7480
7506
  if (!(instance instanceof Constructor)) {
7481
7507
  throw new TypeError("Cannot call a class as a function");
@@ -7507,6 +7533,38 @@ function _define_property$1(obj, key, value) {
7507
7533
  }
7508
7534
  return obj;
7509
7535
  }
7536
+ function _iterable_to_array$2(iter) {
7537
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
7538
+ }
7539
+ function _non_iterable_spread$2() {
7540
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
7541
+ }
7542
+ function _object_spread(target) {
7543
+ for(var i = 1; i < arguments.length; i++){
7544
+ var source = arguments[i] != null ? arguments[i] : {};
7545
+ var ownKeys = Object.keys(source);
7546
+ if (typeof Object.getOwnPropertySymbols === "function") {
7547
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
7548
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
7549
+ }));
7550
+ }
7551
+ ownKeys.forEach(function(key) {
7552
+ _define_property$1(target, key, source[key]);
7553
+ });
7554
+ }
7555
+ return target;
7556
+ }
7557
+ function _to_consumable_array$2(arr) {
7558
+ return _array_without_holes$2(arr) || _iterable_to_array$2(arr) || _unsupported_iterable_to_array$2(arr) || _non_iterable_spread$2();
7559
+ }
7560
+ function _unsupported_iterable_to_array$2(o, minLen) {
7561
+ if (!o) return;
7562
+ if (typeof o === "string") return _array_like_to_array$2(o, minLen);
7563
+ var n = Object.prototype.toString.call(o).slice(8, -1);
7564
+ if (n === "Object" && o.constructor) n = o.constructor.name;
7565
+ if (n === "Map" || n === "Set") return Array.from(n);
7566
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$2(o, minLen);
7567
+ }
7510
7568
  /**
7511
7569
  * Serves the `GET /.well-known/oauth-protected-resource` metadata document so
7512
7570
  * Claude (and other MCP clients) can discover which OIDC issuer guards this
@@ -7517,21 +7575,30 @@ function _define_property$1(obj, key, value) {
7517
7575
  * from any global API route prefix (see `FIREBASE_SERVER_OIDC_ROUTES_FOR_GLOBAL_ROUTE_EXCLUDE`
7518
7576
  * in `firebase-server/oidc` for the corresponding OIDC excludes).
7519
7577
  */ exports.McpWellKnownController = /*#__PURE__*/ function() {
7520
- function McpWellKnownController(mcpConfig) {
7578
+ function McpWellKnownController(mcpConfig, oidcProviderConfigService) {
7521
7579
  _class_call_check$1(this, McpWellKnownController);
7522
7580
  _define_property$1(this, "mcpConfig", void 0);
7581
+ _define_property$1(this, "oidcProviderConfigService", void 0);
7523
7582
  this.mcpConfig = mcpConfig;
7583
+ this.oidcProviderConfigService = oidcProviderConfigService;
7524
7584
  }
7525
7585
  _create_class$1(McpWellKnownController, [
7526
7586
  {
7527
7587
  key: "getProtectedResourceMetadata",
7528
7588
  value: function getProtectedResourceMetadata() {
7529
- return {
7530
- resource: this.mcpConfig.mcpUrl,
7589
+ var _this_mcpConfig = this.mcpConfig, mcpUrl = _this_mcpConfig.mcpUrl, oidcIssuer = _this_mcpConfig.oidcIssuer, scopesFilter = _this_mcpConfig.scopesSupported;
7590
+ // Base scope list is the OIDC provider's own `scopes_supported`, so the resource
7591
+ // advertises exactly what the issuer grants; the optional filter narrows it.
7592
+ var providerScopes = this.oidcProviderConfigService.scopesSupported;
7593
+ var scopes = scopesFilter ? scopesFilter(providerScopes) : providerScopes;
7594
+ return _object_spread({
7595
+ resource: mcpUrl,
7531
7596
  authorization_servers: [
7532
- this.mcpConfig.oidcIssuer
7597
+ oidcIssuer
7533
7598
  ]
7534
- };
7599
+ }, scopes.length ? {
7600
+ scopes_supported: _to_consumable_array$2(scopes)
7601
+ } : undefined);
7535
7602
  }
7536
7603
  }
7537
7604
  ]);
@@ -7542,7 +7609,8 @@ __decorate([
7542
7609
  ], exports.McpWellKnownController.prototype, "getProtectedResourceMetadata", null);
7543
7610
  exports.McpWellKnownController = __decorate([
7544
7611
  common.Controller('.well-known'),
7545
- __param(0, common.Inject(McpModuleConfig))
7612
+ __param(0, common.Inject(McpModuleConfig)),
7613
+ __param(1, common.Inject(oidc.OidcProviderConfigService))
7546
7614
  ], exports.McpWellKnownController);
7547
7615
 
7548
7616
  function _array_like_to_array$1(arr, len) {