@acarmisc/backstage-plugin-litellm 0.1.13 → 0.2.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/types.d.ts CHANGED
@@ -1,13 +1,29 @@
1
1
  export interface UserInfo {
2
2
  user_id: string;
3
- email: string;
4
- team_id?: string;
5
- team_alias?: string;
3
+ user_email?: string;
4
+ email?: string;
5
+ teams?: string[];
6
+ models?: string[];
6
7
  max_budget?: number;
8
+ spend?: number;
7
9
  current_spend?: number;
8
10
  soft_limit?: number;
9
11
  hard_limit?: number;
10
12
  }
13
+ export interface TeamMember {
14
+ user_id: string;
15
+ role: 'admin' | 'user';
16
+ }
17
+ export interface TeamInfo {
18
+ team_id: string;
19
+ team_alias?: string;
20
+ max_budget?: number;
21
+ spend: number;
22
+ members_with_roles?: TeamMember[];
23
+ models?: string[];
24
+ tpm_limit?: number;
25
+ rpm_limit?: number;
26
+ }
11
27
  export interface VirtualKey {
12
28
  key: string;
13
29
  key_alias?: string;
@@ -26,32 +42,79 @@ export interface ModelInfo {
26
42
  supports_function_calling?: boolean;
27
43
  supports_vision?: boolean;
28
44
  }
45
+ export interface UsageModelBreakdown {
46
+ total_spend: number;
47
+ total_tokens: number;
48
+ prompt_tokens: number;
49
+ completion_tokens: number;
50
+ api_requests: number;
51
+ successful_requests: number;
52
+ failed_requests: number;
53
+ }
54
+ export interface UsageKeyBreakdown {
55
+ key_alias?: string;
56
+ team_id?: string | null;
57
+ models: string[];
58
+ total_spend: number;
59
+ total_tokens: number;
60
+ prompt_tokens: number;
61
+ completion_tokens: number;
62
+ api_requests: number;
63
+ successful_requests: number;
64
+ failed_requests: number;
65
+ }
66
+ export interface UsageDailyPoint {
67
+ date: string;
68
+ spend: number;
69
+ total_tokens: number;
70
+ prompt_tokens: number;
71
+ completion_tokens: number;
72
+ api_requests: number;
73
+ successful_requests: number;
74
+ failed_requests: number;
75
+ }
76
+ export interface UsageDailyModelPoint {
77
+ date: string;
78
+ model: string;
79
+ spend: number;
80
+ prompt_tokens: number;
81
+ completion_tokens: number;
82
+ total_tokens: number;
83
+ api_requests: number;
84
+ successful_requests: number;
85
+ failed_requests: number;
86
+ }
29
87
  export interface UsageMetrics {
30
88
  total_spend: number;
31
89
  total_tokens: number;
32
90
  prompt_tokens: number;
33
91
  completion_tokens: number;
34
- usage_by_model: Record<string, {
35
- total_spend: number;
36
- total_tokens: number;
37
- prompt_tokens: number;
38
- completion_tokens: number;
39
- }>;
40
- daily_usage: Array<{
41
- date: string;
42
- spend: number;
43
- total_tokens: number;
44
- prompt_tokens: number;
45
- completion_tokens: number;
46
- }>;
92
+ api_requests: number;
93
+ successful_requests: number;
94
+ failed_requests: number;
95
+ usage_by_model: Record<string, UsageModelBreakdown>;
96
+ usage_by_key: Record<string, UsageKeyBreakdown>;
97
+ daily_usage: UsageDailyPoint[];
98
+ daily_by_model: UsageDailyModelPoint[];
47
99
  }
48
100
  export interface GenerateKeyRequest {
49
101
  alias?: string;
50
102
  models?: string[];
103
+ team_id?: string;
51
104
  duration?: string;
52
105
  max_budget?: number;
53
106
  tpm_limit?: number;
54
107
  rpm_limit?: number;
108
+ key_type?: string;
109
+ }
110
+ export interface UpdateKeyRequest {
111
+ key_alias?: string;
112
+ models?: string[];
113
+ max_budget?: number;
114
+ tpm_limit?: number;
115
+ rpm_limit?: number;
116
+ team_id?: string;
117
+ duration?: string;
55
118
  }
56
119
  export interface GenerateKeyResponse {
57
120
  key: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acarmisc/backstage-plugin-litellm",
3
- "version": "0.1.13",
3
+ "version": "0.2.1",
4
4
  "backstage": {
5
5
  "role": "frontend-plugin",
6
6
  "pluginId": "litellm",
@@ -13,50 +13,60 @@
13
13
  },
14
14
  "license": "Apache-2.0",
15
15
  "sideEffects": false,
16
- "main": "dist/index.esm.js",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.esm.js",
20
+ "require": "./dist/index.cjs.js"
21
+ }
22
+ },
23
+ "main": "dist/index.cjs.js",
24
+ "module": "dist/index.esm.js",
17
25
  "types": "dist/index.d.ts",
18
26
  "files": [
19
27
  "dist"
20
28
  ],
21
29
  "scripts": {
22
- "build": "echo 'Build dist/ from Backstage monorepo: backstage-cli package build'",
23
- "prepack": "echo 'Dist files must be built in Backstage monorepo and copied here'",
30
+ "build": "node build.js && tsc -p tsconfig.json",
31
+ "prepack": "npm run build",
24
32
  "postpack": ""
25
33
  },
26
34
  "dependencies": {
27
- "@backstage/core-components": "^0.14.10",
28
- "@backstage/core-plugin-api": "^1.9.3",
29
- "@backstage/frontend-plugin-api": "^0.7.0",
30
- "@backstage/plugin-catalog-react": "^1.13.0",
31
- "@backstage/theme": "^0.5.6",
32
- "@backstage/types": "^1.1.0",
35
+ "@backstage/core-components": "^0.18.10",
36
+ "@backstage/core-plugin-api": "^1.12.6",
37
+ "@backstage/frontend-plugin-api": "^0.17.0",
38
+ "@backstage/plugin-catalog-react": "^1.15.0",
39
+ "@backstage/theme": "^0.6.0",
40
+ "@backstage/types": "^1.2.0",
33
41
  "@emotion/react": "^11.11.0",
34
42
  "@emotion/styled": "^11.11.0",
35
43
  "@mui/icons-material": "^5.18.0",
36
44
  "@mui/material": "^5.16.0",
37
- "react": "^17.0.0 || ^18.0.0",
45
+ "react": "^18.0.0",
38
46
  "react-use": "^17.2.4",
39
47
  "recharts": "^2.15.4",
40
48
  "zod": "^3.22.4"
41
49
  },
42
50
  "devDependencies": {
43
- "@backstage/cli": "^0.28.0",
44
- "@backstage/core-app-api": "^0.1.1",
45
- "@backstage/dev-utils": "^0.2.18",
46
- "@backstage/frontend-test-utils": "^0.1.0",
47
- "@backstage/test-utils": "^0.1.0",
51
+ "@backstage/cli": "^0.36.2",
52
+ "@backstage/core-app-api": "^1.16.0",
53
+ "@backstage/dev-utils": "^1.1.23",
54
+ "@backstage/frontend-test-utils": "^0.6.0",
55
+ "@backstage/test-utils": "^1.7.0",
48
56
  "@testing-library/dom": "^10.0.0",
49
57
  "@testing-library/jest-dom": "^6.0.0",
50
58
  "@testing-library/react": "^16.0.0",
51
59
  "@testing-library/user-event": "^14.0.0",
52
60
  "@types/react": "^18.2.0",
61
+ "esbuild": "^0.28.0",
53
62
  "react-dom": "^18.2.0",
54
- "react-router-dom": "^6.20.0"
63
+ "react-router-dom": "^6.30.0",
64
+ "typescript": "^5.9.3"
55
65
  },
56
66
  "peerDependencies": {
57
- "@types/react": "^17.0.0 || ^18.0.0",
58
- "react": "^17.0.0 || ^18.0.0",
59
- "react-dom": "^17.0.0 || ^18.0.0",
67
+ "@types/react": "^18.0.0",
68
+ "react": "^18.0.0",
69
+ "react-dom": "^18.0.0",
60
70
  "react-router-dom": "^6.20.0"
61
71
  }
62
72
  }