@acarmisc/backstage-plugin-litellm-backend 0.17.1 → 0.17.3
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 +64 -21
- package/dist/index.cjs.js.map +3 -3
- package/dist/routes/bridge.js +43 -4
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -7983,20 +7983,20 @@ __export(index_exports, {
|
|
|
7983
7983
|
getOrProvisionUser: () => getOrProvisionUser,
|
|
7984
7984
|
getOrProvisionUserFromClaims: () => getOrProvisionUserFromClaims,
|
|
7985
7985
|
isTeamManagementEnabled: () => isTeamManagementEnabled,
|
|
7986
|
-
litellmAuditReadPermission: () =>
|
|
7987
|
-
litellmKeyCreatePermission: () =>
|
|
7988
|
-
litellmKeyManagePermission: () =>
|
|
7989
|
-
litellmKeyResetSpendPermission: () =>
|
|
7990
|
-
litellmKeyRevokePermission: () =>
|
|
7991
|
-
litellmKeyUnblockPermission: () =>
|
|
7992
|
-
litellmPermissions: () =>
|
|
7986
|
+
litellmAuditReadPermission: () => import_backstage_plugin_litellm_common11.litellmAuditReadPermission,
|
|
7987
|
+
litellmKeyCreatePermission: () => import_backstage_plugin_litellm_common11.litellmKeyCreatePermission,
|
|
7988
|
+
litellmKeyManagePermission: () => import_backstage_plugin_litellm_common11.litellmKeyManagePermission,
|
|
7989
|
+
litellmKeyResetSpendPermission: () => import_backstage_plugin_litellm_common11.litellmKeyResetSpendPermission,
|
|
7990
|
+
litellmKeyRevokePermission: () => import_backstage_plugin_litellm_common11.litellmKeyRevokePermission,
|
|
7991
|
+
litellmKeyUnblockPermission: () => import_backstage_plugin_litellm_common11.litellmKeyUnblockPermission,
|
|
7992
|
+
litellmPermissions: () => import_backstage_plugin_litellm_common11.litellmPermissions,
|
|
7993
7993
|
litellmPlugin: () => litellmPlugin,
|
|
7994
|
-
litellmTeamCreatePermission: () =>
|
|
7995
|
-
litellmTeamDeletePermission: () =>
|
|
7996
|
-
litellmTeamKnowledgebaseManagePermission: () =>
|
|
7997
|
-
litellmTeamManagePermission: () =>
|
|
7998
|
-
litellmTeamMcpManagePermission: () =>
|
|
7999
|
-
litellmTeamMembersManagePermission: () =>
|
|
7994
|
+
litellmTeamCreatePermission: () => import_backstage_plugin_litellm_common11.litellmTeamCreatePermission,
|
|
7995
|
+
litellmTeamDeletePermission: () => import_backstage_plugin_litellm_common11.litellmTeamDeletePermission,
|
|
7996
|
+
litellmTeamKnowledgebaseManagePermission: () => import_backstage_plugin_litellm_common11.litellmTeamKnowledgebaseManagePermission,
|
|
7997
|
+
litellmTeamManagePermission: () => import_backstage_plugin_litellm_common11.litellmTeamManagePermission,
|
|
7998
|
+
litellmTeamMcpManagePermission: () => import_backstage_plugin_litellm_common11.litellmTeamMcpManagePermission,
|
|
7999
|
+
litellmTeamMembersManagePermission: () => import_backstage_plugin_litellm_common11.litellmTeamMembersManagePermission,
|
|
8000
8000
|
newDefaultVerifier: () => newDefaultVerifier,
|
|
8001
8001
|
normalizeRequestTags: () => normalizeRequestTags,
|
|
8002
8002
|
provisionUser: () => provisionUser,
|
|
@@ -8979,7 +8979,7 @@ async function resolveUserRole(userEntityRef, roleConfigs, catalogClient, auth,
|
|
|
8979
8979
|
}
|
|
8980
8980
|
|
|
8981
8981
|
// src/router.ts
|
|
8982
|
-
var
|
|
8982
|
+
var import_backstage_plugin_litellm_common9 = require("@acarmisc/backstage-plugin-litellm-common");
|
|
8983
8983
|
|
|
8984
8984
|
// src/teamAdmin.ts
|
|
8985
8985
|
var import_plugin_permission_common = __toESM(require_index_cjs2());
|
|
@@ -12850,6 +12850,7 @@ async function bridgeGenerateKey(client, claims, provisioningEnabled, provisioni
|
|
|
12850
12850
|
|
|
12851
12851
|
// src/routes/bridge.ts
|
|
12852
12852
|
var import_backstage_plugin_litellm_common7 = require("@acarmisc/backstage-plugin-litellm-common");
|
|
12853
|
+
var import_backstage_plugin_litellm_common8 = require("@acarmisc/backstage-plugin-litellm-common");
|
|
12853
12854
|
function registerBridgeRoutes(router, ctx, bridgeOpts) {
|
|
12854
12855
|
const {
|
|
12855
12856
|
client,
|
|
@@ -12863,7 +12864,7 @@ function registerBridgeRoutes(router, ctx, bridgeOpts) {
|
|
|
12863
12864
|
keyValidationConfig
|
|
12864
12865
|
} = ctx;
|
|
12865
12866
|
const { config } = bridgeOpts;
|
|
12866
|
-
const generateKeyInputSchema = (0,
|
|
12867
|
+
const generateKeyInputSchema = (0, import_backstage_plugin_litellm_common8.createGenerateKeyInputSchema)(ctx.keyValidationConfig);
|
|
12867
12868
|
const bridgeCfg = readBridgeConfig(config);
|
|
12868
12869
|
const bridgeIdentity = {
|
|
12869
12870
|
userIdDomain,
|
|
@@ -12939,6 +12940,9 @@ function registerBridgeRoutes(router, ctx, bridgeOpts) {
|
|
|
12939
12940
|
return;
|
|
12940
12941
|
}
|
|
12941
12942
|
const input = parseResult.data;
|
|
12943
|
+
if (!allowUnlimitedBudget && input.max_budget === void 0) {
|
|
12944
|
+
input.max_budget = provisioningDefaults.maxBudget;
|
|
12945
|
+
}
|
|
12942
12946
|
const userId = resolveBridgeUserId(claims, bridgeIdentity);
|
|
12943
12947
|
const keyCreateCtx = {
|
|
12944
12948
|
client,
|
|
@@ -12967,11 +12971,50 @@ function registerBridgeRoutes(router, ctx, bridgeOpts) {
|
|
|
12967
12971
|
handleBridgeError(error, res);
|
|
12968
12972
|
}
|
|
12969
12973
|
});
|
|
12974
|
+
router.get("/bridge/user/info", async (req, res) => {
|
|
12975
|
+
try {
|
|
12976
|
+
const claims = await requireClaims(req);
|
|
12977
|
+
const user = await getOrProvisionUserFromClaims(
|
|
12978
|
+
client,
|
|
12979
|
+
claims,
|
|
12980
|
+
provisioningEnabled,
|
|
12981
|
+
provisioningDefaults,
|
|
12982
|
+
logger,
|
|
12983
|
+
bridgeIdentity
|
|
12984
|
+
);
|
|
12985
|
+
res.json({ user_id: user.user_id, teams: user.teams ?? [] });
|
|
12986
|
+
} catch (error) {
|
|
12987
|
+
handleBridgeError(error, res);
|
|
12988
|
+
}
|
|
12989
|
+
});
|
|
12970
12990
|
router.get("/bridge/models", async (req, res) => {
|
|
12971
12991
|
try {
|
|
12972
|
-
await requireClaims(req);
|
|
12992
|
+
const claims = await requireClaims(req);
|
|
12993
|
+
const teamId = typeof req.query.team_id === "string" ? req.query.team_id : "";
|
|
12973
12994
|
const models = await client.listModels();
|
|
12974
|
-
|
|
12995
|
+
if (!teamId) {
|
|
12996
|
+
res.json(models);
|
|
12997
|
+
return;
|
|
12998
|
+
}
|
|
12999
|
+
const user = await getOrProvisionUserFromClaims(
|
|
13000
|
+
client,
|
|
13001
|
+
claims,
|
|
13002
|
+
provisioningEnabled,
|
|
13003
|
+
provisioningDefaults,
|
|
13004
|
+
logger,
|
|
13005
|
+
bridgeIdentity
|
|
13006
|
+
);
|
|
13007
|
+
if (!(user.teams ?? []).includes(teamId)) {
|
|
13008
|
+
res.status(403).json({ error: "Access denied: team is not one of your teams", team_id: teamId });
|
|
13009
|
+
return;
|
|
13010
|
+
}
|
|
13011
|
+
const team = await client.getTeamInfo(teamId);
|
|
13012
|
+
const allowed = team.models;
|
|
13013
|
+
if (!allowed || allowed.length === 0 || allowed.includes(import_backstage_plugin_litellm_common7.ALL_PROXY_MODELS)) {
|
|
13014
|
+
res.json(models);
|
|
13015
|
+
return;
|
|
13016
|
+
}
|
|
13017
|
+
res.json(models.filter((m) => (0, import_backstage_plugin_litellm_common7.isModelAllowed)(m, allowed)));
|
|
12975
13018
|
} catch (error) {
|
|
12976
13019
|
handleBridgeError(error, res);
|
|
12977
13020
|
}
|
|
@@ -13003,7 +13046,7 @@ async function createRouter(options) {
|
|
|
13003
13046
|
const keyMaxBudget = config.getOptionalNumber("litellm.keys.maxBudget") ?? 100;
|
|
13004
13047
|
const keyMaxTpm = config.getOptionalNumber("litellm.keys.maxTpm") ?? 1e5;
|
|
13005
13048
|
const keyMaxRpm = config.getOptionalNumber("litellm.keys.maxRpm") ?? 1e3;
|
|
13006
|
-
const keyAllowedDurations = config.getOptionalStringArray("litellm.keys.allowedDurations") ??
|
|
13049
|
+
const keyAllowedDurations = config.getOptionalStringArray("litellm.keys.allowedDurations") ?? import_backstage_plugin_litellm_common9.DEFAULT_KEY_DURATIONS;
|
|
13007
13050
|
const keyValidationConfig = {
|
|
13008
13051
|
maxBudget: keyMaxBudget,
|
|
13009
13052
|
maxTpm: keyMaxTpm,
|
|
@@ -13194,7 +13237,7 @@ async function createRouter(options) {
|
|
|
13194
13237
|
}
|
|
13195
13238
|
|
|
13196
13239
|
// src/plugin.ts
|
|
13197
|
-
var
|
|
13240
|
+
var import_backstage_plugin_litellm_common10 = require("@acarmisc/backstage-plugin-litellm-common");
|
|
13198
13241
|
var litellmPlugin = (0, import_backend_plugin_api.createBackendPlugin)({
|
|
13199
13242
|
pluginId: "litellm",
|
|
13200
13243
|
register(reg) {
|
|
@@ -13217,7 +13260,7 @@ var litellmPlugin = (0, import_backend_plugin_api.createBackendPlugin)({
|
|
|
13217
13260
|
permissions,
|
|
13218
13261
|
permissionsRegistry
|
|
13219
13262
|
}) {
|
|
13220
|
-
permissionsRegistry.addPermissions(
|
|
13263
|
+
permissionsRegistry.addPermissions(import_backstage_plugin_litellm_common10.litellmPermissions);
|
|
13221
13264
|
const router = await createRouter({
|
|
13222
13265
|
config,
|
|
13223
13266
|
logger,
|
|
@@ -13241,7 +13284,7 @@ var litellmPlugin = (0, import_backend_plugin_api.createBackendPlugin)({
|
|
|
13241
13284
|
});
|
|
13242
13285
|
|
|
13243
13286
|
// src/index.ts
|
|
13244
|
-
var
|
|
13287
|
+
var import_backstage_plugin_litellm_common11 = require("@acarmisc/backstage-plugin-litellm-common");
|
|
13245
13288
|
// Annotate the CommonJS export names for ESM import in node:
|
|
13246
13289
|
0 && (module.exports = {
|
|
13247
13290
|
KeycloakJWTVerifier,
|