@acarmisc/backstage-plugin-litellm-backend 0.30.0 → 0.30.1
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/dist/index.cjs.js
CHANGED
|
@@ -10164,9 +10164,12 @@ function teamMcpServers(team) {
|
|
|
10164
10164
|
const listed = team?.object_permission?.mcp_servers ?? [];
|
|
10165
10165
|
return [...new Set(listed)].filter((n) => import_backstage_plugin_litellm_common3.MCP_SERVER_NAME_RE.test(n));
|
|
10166
10166
|
}
|
|
10167
|
-
function findDisallowedMcpServers(requested, allowed) {
|
|
10167
|
+
function findDisallowedMcpServers(requested, allowed, servers = []) {
|
|
10168
10168
|
const ok = new Set(allowed);
|
|
10169
|
-
|
|
10169
|
+
const granted = (n) => ok.has(n) || servers.some(
|
|
10170
|
+
(s) => (s.name === n || s.id === n) && (ok.has(s.id) || s.name !== void 0 && ok.has(s.name))
|
|
10171
|
+
);
|
|
10172
|
+
return [...new Set(requested)].filter((n) => !granted(n));
|
|
10170
10173
|
}
|
|
10171
10174
|
|
|
10172
10175
|
// src/services/keyService.ts
|
|
@@ -10253,7 +10256,12 @@ async function createKeyForUser(user, input, ctx) {
|
|
|
10253
10256
|
if (!input.team_id) {
|
|
10254
10257
|
throw new KeyServiceError(400, { error: "team_id is required when mcp_servers is set" });
|
|
10255
10258
|
}
|
|
10256
|
-
const
|
|
10259
|
+
const allowed = teamMcpServers(await getTeam(input.team_id));
|
|
10260
|
+
let disallowed = findDisallowedMcpServers(mcpServers, allowed);
|
|
10261
|
+
if (disallowed.length > 0) {
|
|
10262
|
+
const servers = await client.listMcpServers().catch(() => []);
|
|
10263
|
+
disallowed = findDisallowedMcpServers(mcpServers, allowed, servers);
|
|
10264
|
+
}
|
|
10257
10265
|
if (disallowed.length > 0) {
|
|
10258
10266
|
throw new KeyServiceError(403, {
|
|
10259
10267
|
error: "One or more requested MCP servers are not allowed",
|