@agentgazer/shared 0.1.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/LICENSE +191 -0
- package/README.md +35 -0
- package/dist/__tests__/parsers.test.d.ts +2 -0
- package/dist/__tests__/parsers.test.d.ts.map +1 -0
- package/dist/__tests__/parsers.test.js +388 -0
- package/dist/__tests__/parsers.test.js.map +1 -0
- package/dist/__tests__/pricing.test.d.ts +2 -0
- package/dist/__tests__/pricing.test.d.ts.map +1 -0
- package/dist/__tests__/pricing.test.js +373 -0
- package/dist/__tests__/pricing.test.js.map +1 -0
- package/dist/__tests__/providers.test.d.ts +2 -0
- package/dist/__tests__/providers.test.d.ts.map +1 -0
- package/dist/__tests__/providers.test.js +227 -0
- package/dist/__tests__/providers.test.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +59 -0
- package/dist/logger.js.map +1 -0
- package/dist/models.d.ts +11 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +86 -0
- package/dist/models.js.map +1 -0
- package/dist/parsers.d.ts +11 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +101 -0
- package/dist/parsers.js.map +1 -0
- package/dist/pricing.d.ts +8 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +74 -0
- package/dist/pricing.js.map +1 -0
- package/dist/providers.d.ts +38 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +195 -0
- package/dist/providers.js.map +1 -0
- package/dist/types.d.ts +176 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +31 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const pricing_js_1 = require("../pricing.js");
|
|
5
|
+
(0, vitest_1.describe)("getModelPricing", () => {
|
|
6
|
+
(0, vitest_1.it)("returns pricing for gpt-4o", () => {
|
|
7
|
+
const pricing = (0, pricing_js_1.getModelPricing)("gpt-4o");
|
|
8
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
9
|
+
inputPerMToken: 2.5,
|
|
10
|
+
outputPerMToken: 10.0,
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.it)("returns pricing for gpt-4o-mini", () => {
|
|
14
|
+
const pricing = (0, pricing_js_1.getModelPricing)("gpt-4o-mini");
|
|
15
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
16
|
+
inputPerMToken: 0.15,
|
|
17
|
+
outputPerMToken: 0.6,
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.it)("returns pricing for gpt-4-turbo", () => {
|
|
21
|
+
const pricing = (0, pricing_js_1.getModelPricing)("gpt-4-turbo");
|
|
22
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
23
|
+
inputPerMToken: 10.0,
|
|
24
|
+
outputPerMToken: 30.0,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)("returns pricing for o1", () => {
|
|
28
|
+
const pricing = (0, pricing_js_1.getModelPricing)("o1");
|
|
29
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
30
|
+
inputPerMToken: 15.0,
|
|
31
|
+
outputPerMToken: 60.0,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)("returns pricing for o3-mini", () => {
|
|
35
|
+
const pricing = (0, pricing_js_1.getModelPricing)("o3-mini");
|
|
36
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
37
|
+
inputPerMToken: 1.1,
|
|
38
|
+
outputPerMToken: 4.4,
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)("returns pricing for claude-opus-4-5-20251101", () => {
|
|
42
|
+
const pricing = (0, pricing_js_1.getModelPricing)("claude-opus-4-5-20251101");
|
|
43
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
44
|
+
inputPerMToken: 15.0,
|
|
45
|
+
outputPerMToken: 75.0,
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)("returns pricing for claude-sonnet-4-5-20250929", () => {
|
|
49
|
+
const pricing = (0, pricing_js_1.getModelPricing)("claude-sonnet-4-5-20250929");
|
|
50
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
51
|
+
inputPerMToken: 3.0,
|
|
52
|
+
outputPerMToken: 15.0,
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.it)("returns pricing for claude-sonnet-4-20250514", () => {
|
|
56
|
+
const pricing = (0, pricing_js_1.getModelPricing)("claude-sonnet-4-20250514");
|
|
57
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
58
|
+
inputPerMToken: 3.0,
|
|
59
|
+
outputPerMToken: 15.0,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.it)("returns pricing for claude-haiku-4-5-20251001", () => {
|
|
63
|
+
const pricing = (0, pricing_js_1.getModelPricing)("claude-haiku-4-5-20251001");
|
|
64
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
65
|
+
inputPerMToken: 0.8,
|
|
66
|
+
outputPerMToken: 4.0,
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)("returns pricing for gemini-2.5-pro", () => {
|
|
70
|
+
const pricing = (0, pricing_js_1.getModelPricing)("gemini-2.5-pro");
|
|
71
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
72
|
+
inputPerMToken: 1.25,
|
|
73
|
+
outputPerMToken: 5.0,
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
(0, vitest_1.it)("returns pricing for gemini-2.0-flash", () => {
|
|
77
|
+
const pricing = (0, pricing_js_1.getModelPricing)("gemini-2.0-flash");
|
|
78
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
79
|
+
inputPerMToken: 0.1,
|
|
80
|
+
outputPerMToken: 0.4,
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
(0, vitest_1.it)("returns pricing for mistral-large-latest", () => {
|
|
84
|
+
const pricing = (0, pricing_js_1.getModelPricing)("mistral-large-latest");
|
|
85
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
86
|
+
inputPerMToken: 2.0,
|
|
87
|
+
outputPerMToken: 6.0,
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
(0, vitest_1.it)("returns pricing for command-r-plus", () => {
|
|
91
|
+
const pricing = (0, pricing_js_1.getModelPricing)("command-r-plus");
|
|
92
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
93
|
+
inputPerMToken: 2.5,
|
|
94
|
+
outputPerMToken: 10.0,
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
(0, vitest_1.it)("returns pricing for command-r", () => {
|
|
98
|
+
const pricing = (0, pricing_js_1.getModelPricing)("command-r");
|
|
99
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
100
|
+
inputPerMToken: 0.15,
|
|
101
|
+
outputPerMToken: 0.6,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
// DeepSeek
|
|
105
|
+
(0, vitest_1.it)("returns pricing for deepseek-chat", () => {
|
|
106
|
+
const pricing = (0, pricing_js_1.getModelPricing)("deepseek-chat");
|
|
107
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
108
|
+
inputPerMToken: 0.27,
|
|
109
|
+
outputPerMToken: 1.10,
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.it)("returns pricing for deepseek-reasoner", () => {
|
|
113
|
+
const pricing = (0, pricing_js_1.getModelPricing)("deepseek-reasoner");
|
|
114
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
115
|
+
inputPerMToken: 0.55,
|
|
116
|
+
outputPerMToken: 2.19,
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
// Moonshot
|
|
120
|
+
(0, vitest_1.it)("returns pricing for moonshot-v1-8k", () => {
|
|
121
|
+
const pricing = (0, pricing_js_1.getModelPricing)("moonshot-v1-8k");
|
|
122
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
123
|
+
inputPerMToken: 0.20,
|
|
124
|
+
outputPerMToken: 2.00,
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
(0, vitest_1.it)("returns pricing for moonshot-v1-32k", () => {
|
|
128
|
+
const pricing = (0, pricing_js_1.getModelPricing)("moonshot-v1-32k");
|
|
129
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
130
|
+
inputPerMToken: 1.00,
|
|
131
|
+
outputPerMToken: 3.00,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
(0, vitest_1.it)("returns pricing for moonshot-v1-128k", () => {
|
|
135
|
+
const pricing = (0, pricing_js_1.getModelPricing)("moonshot-v1-128k");
|
|
136
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
137
|
+
inputPerMToken: 0.60,
|
|
138
|
+
outputPerMToken: 2.50,
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
// Zhipu
|
|
142
|
+
(0, vitest_1.it)("returns pricing for glm-4.7", () => {
|
|
143
|
+
const pricing = (0, pricing_js_1.getModelPricing)("glm-4.7");
|
|
144
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
145
|
+
inputPerMToken: 0.28,
|
|
146
|
+
outputPerMToken: 1.11,
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
(0, vitest_1.it)("returns pricing for glm-4.7-flash (free)", () => {
|
|
150
|
+
const pricing = (0, pricing_js_1.getModelPricing)("glm-4.7-flash");
|
|
151
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
152
|
+
inputPerMToken: 0,
|
|
153
|
+
outputPerMToken: 0,
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
(0, vitest_1.it)("returns pricing for glm-4", () => {
|
|
157
|
+
const pricing = (0, pricing_js_1.getModelPricing)("glm-4");
|
|
158
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
159
|
+
inputPerMToken: 0.14,
|
|
160
|
+
outputPerMToken: 0.42,
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
(0, vitest_1.it)("returns pricing for glm-4-flash (free)", () => {
|
|
164
|
+
const pricing = (0, pricing_js_1.getModelPricing)("glm-4-flash");
|
|
165
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
166
|
+
inputPerMToken: 0,
|
|
167
|
+
outputPerMToken: 0,
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
// MiniMax
|
|
171
|
+
(0, vitest_1.it)("returns pricing for MiniMax-M2", () => {
|
|
172
|
+
const pricing = (0, pricing_js_1.getModelPricing)("MiniMax-M2");
|
|
173
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
174
|
+
inputPerMToken: 0.30,
|
|
175
|
+
outputPerMToken: 1.20,
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
// Baichuan
|
|
179
|
+
(0, vitest_1.it)("returns pricing for Baichuan4", () => {
|
|
180
|
+
const pricing = (0, pricing_js_1.getModelPricing)("Baichuan4");
|
|
181
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
182
|
+
inputPerMToken: 13.89,
|
|
183
|
+
outputPerMToken: 13.89,
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
// Yi
|
|
187
|
+
(0, vitest_1.it)("returns pricing for yi-lightning", () => {
|
|
188
|
+
const pricing = (0, pricing_js_1.getModelPricing)("yi-lightning");
|
|
189
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
190
|
+
inputPerMToken: 0.14,
|
|
191
|
+
outputPerMToken: 0.14,
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
(0, vitest_1.it)("returns pricing for yi-large", () => {
|
|
195
|
+
const pricing = (0, pricing_js_1.getModelPricing)("yi-large");
|
|
196
|
+
(0, vitest_1.expect)(pricing).toEqual({
|
|
197
|
+
inputPerMToken: 2.78,
|
|
198
|
+
outputPerMToken: 2.78,
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
(0, vitest_1.it)("returns null for unknown model", () => {
|
|
202
|
+
(0, vitest_1.expect)((0, pricing_js_1.getModelPricing)("nonexistent-model")).toBeNull();
|
|
203
|
+
});
|
|
204
|
+
(0, vitest_1.it)("returns null for empty string", () => {
|
|
205
|
+
(0, vitest_1.expect)((0, pricing_js_1.getModelPricing)("")).toBeNull();
|
|
206
|
+
});
|
|
207
|
+
(0, vitest_1.it)("is case-insensitive (falls back to lowercase lookup)", () => {
|
|
208
|
+
(0, vitest_1.expect)((0, pricing_js_1.getModelPricing)("GPT-4O")).not.toBeNull();
|
|
209
|
+
(0, vitest_1.expect)((0, pricing_js_1.getModelPricing)("gpt-4o")).not.toBeNull();
|
|
210
|
+
(0, vitest_1.expect)((0, pricing_js_1.getModelPricing)("Gpt-4o")).not.toBeNull();
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
(0, vitest_1.describe)("calculateCost", () => {
|
|
214
|
+
(0, vitest_1.it)("calculates cost for gpt-4o with known token counts", () => {
|
|
215
|
+
// gpt-4o: $2.50/1M in, $10.00/1M out
|
|
216
|
+
// 1000 input tokens = 1000/1M * 2.50 = 0.0025
|
|
217
|
+
// 500 output tokens = 500/1M * 10.00 = 0.005
|
|
218
|
+
// total = 0.0075
|
|
219
|
+
const cost = (0, pricing_js_1.calculateCost)("gpt-4o", 1000, 500);
|
|
220
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(0.0075, 10);
|
|
221
|
+
});
|
|
222
|
+
(0, vitest_1.it)("calculates cost for claude-opus-4-5-20251101", () => {
|
|
223
|
+
// claude-opus-4-5-20251101: $15.00/1M in, $75.00/1M out
|
|
224
|
+
// 10000 in = 10000/1M * 15.00 = 0.15
|
|
225
|
+
// 5000 out = 5000/1M * 75.00 = 0.375
|
|
226
|
+
// total = 0.525
|
|
227
|
+
const cost = (0, pricing_js_1.calculateCost)("claude-opus-4-5-20251101", 10000, 5000);
|
|
228
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(0.525, 10);
|
|
229
|
+
});
|
|
230
|
+
(0, vitest_1.it)("calculates cost for gemini-2.0-flash (low-cost model)", () => {
|
|
231
|
+
// gemini-2.0-flash: $0.10/1M in, $0.40/1M out
|
|
232
|
+
// 1M in = 1.0 * 0.10 = 0.10
|
|
233
|
+
// 1M out = 1.0 * 0.40 = 0.40
|
|
234
|
+
// total = 0.50
|
|
235
|
+
const cost = (0, pricing_js_1.calculateCost)("gemini-2.0-flash", 1_000_000, 1_000_000);
|
|
236
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(0.5, 10);
|
|
237
|
+
});
|
|
238
|
+
(0, vitest_1.it)("returns 0 cost for zero tokens", () => {
|
|
239
|
+
const cost = (0, pricing_js_1.calculateCost)("gpt-4o", 0, 0);
|
|
240
|
+
(0, vitest_1.expect)(cost).toBe(0);
|
|
241
|
+
});
|
|
242
|
+
(0, vitest_1.it)("returns null for unknown model", () => {
|
|
243
|
+
(0, vitest_1.expect)((0, pricing_js_1.calculateCost)("unknown-model", 1000, 500)).toBeNull();
|
|
244
|
+
});
|
|
245
|
+
(0, vitest_1.it)("handles large token counts correctly", () => {
|
|
246
|
+
// gemini-2.5-pro: $1.25/1M in, $5.00/1M out
|
|
247
|
+
// 10M in = 10 * 1.25 = 12.5
|
|
248
|
+
// 5M out = 5 * 5.00 = 25
|
|
249
|
+
// total = 37.5
|
|
250
|
+
const cost = (0, pricing_js_1.calculateCost)("gemini-2.5-pro", 10_000_000, 5_000_000);
|
|
251
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(37.5, 10);
|
|
252
|
+
});
|
|
253
|
+
(0, vitest_1.it)("handles only input tokens (zero output)", () => {
|
|
254
|
+
// gpt-4o-mini: $0.15/1M in
|
|
255
|
+
// 1M in = 0.15
|
|
256
|
+
const cost = (0, pricing_js_1.calculateCost)("gpt-4o-mini", 1_000_000, 0);
|
|
257
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(0.15, 10);
|
|
258
|
+
});
|
|
259
|
+
(0, vitest_1.it)("handles only output tokens (zero input)", () => {
|
|
260
|
+
// gpt-4o-mini: $0.60/1M out
|
|
261
|
+
// 1M out = 0.60
|
|
262
|
+
const cost = (0, pricing_js_1.calculateCost)("gpt-4o-mini", 0, 1_000_000);
|
|
263
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(0.6, 10);
|
|
264
|
+
});
|
|
265
|
+
(0, vitest_1.it)("calculates cost for mistral-small-latest", () => {
|
|
266
|
+
// $0.20/1M in, $0.60/1M out
|
|
267
|
+
// 500000 in = 0.5 * 0.20 = 0.10
|
|
268
|
+
// 200000 out = 0.2 * 0.60 = 0.12
|
|
269
|
+
// total = 0.22
|
|
270
|
+
const cost = (0, pricing_js_1.calculateCost)("mistral-small-latest", 500_000, 200_000);
|
|
271
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(0.22, 10);
|
|
272
|
+
});
|
|
273
|
+
(0, vitest_1.it)("calculates cost for command-r-plus", () => {
|
|
274
|
+
// $2.50/1M in, $10.00/1M out
|
|
275
|
+
// 100 in = 0.0001 * 2.50 = 0.00025
|
|
276
|
+
// 50 out = 0.00005 * 10.00 = 0.0005
|
|
277
|
+
// total = 0.00075
|
|
278
|
+
const cost = (0, pricing_js_1.calculateCost)("command-r-plus", 100, 50);
|
|
279
|
+
(0, vitest_1.expect)(cost).toBeCloseTo(0.00075, 10);
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
(0, vitest_1.describe)("listSupportedModels", () => {
|
|
283
|
+
(0, vitest_1.it)("returns a non-empty array", () => {
|
|
284
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
285
|
+
(0, vitest_1.expect)(Array.isArray(models)).toBe(true);
|
|
286
|
+
(0, vitest_1.expect)(models.length).toBeGreaterThan(0);
|
|
287
|
+
});
|
|
288
|
+
(0, vitest_1.it)("includes known OpenAI models", () => {
|
|
289
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
290
|
+
(0, vitest_1.expect)(models).toContain("gpt-4o");
|
|
291
|
+
(0, vitest_1.expect)(models).toContain("gpt-4o-mini");
|
|
292
|
+
(0, vitest_1.expect)(models).toContain("gpt-4-turbo");
|
|
293
|
+
(0, vitest_1.expect)(models).toContain("o1");
|
|
294
|
+
(0, vitest_1.expect)(models).toContain("o1-mini");
|
|
295
|
+
(0, vitest_1.expect)(models).toContain("o3-mini");
|
|
296
|
+
});
|
|
297
|
+
(0, vitest_1.it)("includes known Anthropic models", () => {
|
|
298
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
299
|
+
(0, vitest_1.expect)(models).toContain("claude-opus-4-5-20251101");
|
|
300
|
+
(0, vitest_1.expect)(models).toContain("claude-sonnet-4-5-20250929");
|
|
301
|
+
(0, vitest_1.expect)(models).toContain("claude-sonnet-4-20250514");
|
|
302
|
+
(0, vitest_1.expect)(models).toContain("claude-haiku-4-5-20251001");
|
|
303
|
+
});
|
|
304
|
+
(0, vitest_1.it)("includes known Google models", () => {
|
|
305
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
306
|
+
(0, vitest_1.expect)(models).toContain("gemini-2.5-pro");
|
|
307
|
+
(0, vitest_1.expect)(models).toContain("gemini-2.5-flash");
|
|
308
|
+
(0, vitest_1.expect)(models).toContain("gemini-2.0-flash");
|
|
309
|
+
(0, vitest_1.expect)(models).toContain("gemini-2.0-flash-lite");
|
|
310
|
+
});
|
|
311
|
+
(0, vitest_1.it)("includes known Mistral models", () => {
|
|
312
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
313
|
+
(0, vitest_1.expect)(models).toContain("mistral-large-latest");
|
|
314
|
+
(0, vitest_1.expect)(models).toContain("mistral-small-latest");
|
|
315
|
+
(0, vitest_1.expect)(models).toContain("codestral-latest");
|
|
316
|
+
});
|
|
317
|
+
(0, vitest_1.it)("includes known Cohere models", () => {
|
|
318
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
319
|
+
(0, vitest_1.expect)(models).toContain("command-r-plus");
|
|
320
|
+
(0, vitest_1.expect)(models).toContain("command-r");
|
|
321
|
+
});
|
|
322
|
+
(0, vitest_1.it)("includes known DeepSeek models", () => {
|
|
323
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
324
|
+
(0, vitest_1.expect)(models).toContain("deepseek-chat");
|
|
325
|
+
(0, vitest_1.expect)(models).toContain("deepseek-reasoner");
|
|
326
|
+
});
|
|
327
|
+
(0, vitest_1.it)("includes known Moonshot models", () => {
|
|
328
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
329
|
+
(0, vitest_1.expect)(models).toContain("moonshot-v1-8k");
|
|
330
|
+
(0, vitest_1.expect)(models).toContain("moonshot-v1-32k");
|
|
331
|
+
(0, vitest_1.expect)(models).toContain("moonshot-v1-128k");
|
|
332
|
+
});
|
|
333
|
+
(0, vitest_1.it)("includes known Zhipu models", () => {
|
|
334
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
335
|
+
(0, vitest_1.expect)(models).toContain("glm-4.7");
|
|
336
|
+
(0, vitest_1.expect)(models).toContain("glm-4.7-flash");
|
|
337
|
+
(0, vitest_1.expect)(models).toContain("glm-4");
|
|
338
|
+
(0, vitest_1.expect)(models).toContain("glm-4-air");
|
|
339
|
+
(0, vitest_1.expect)(models).toContain("glm-4-flash");
|
|
340
|
+
});
|
|
341
|
+
(0, vitest_1.it)("includes known MiniMax models", () => {
|
|
342
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
343
|
+
(0, vitest_1.expect)(models).toContain("MiniMax-M2");
|
|
344
|
+
(0, vitest_1.expect)(models).toContain("MiniMax-01");
|
|
345
|
+
});
|
|
346
|
+
(0, vitest_1.it)("includes known Baichuan models", () => {
|
|
347
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
348
|
+
(0, vitest_1.expect)(models).toContain("Baichuan4");
|
|
349
|
+
(0, vitest_1.expect)(models).toContain("Baichuan3-Turbo");
|
|
350
|
+
});
|
|
351
|
+
(0, vitest_1.it)("includes known Yi models", () => {
|
|
352
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
353
|
+
(0, vitest_1.expect)(models).toContain("yi-lightning");
|
|
354
|
+
(0, vitest_1.expect)(models).toContain("yi-large");
|
|
355
|
+
(0, vitest_1.expect)(models).toContain("yi-medium");
|
|
356
|
+
});
|
|
357
|
+
(0, vitest_1.it)("returns strings only", () => {
|
|
358
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
359
|
+
models.forEach((model) => {
|
|
360
|
+
(0, vitest_1.expect)(typeof model).toBe("string");
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
(0, vitest_1.it)("every listed model has valid pricing data", () => {
|
|
364
|
+
const models = (0, pricing_js_1.listSupportedModels)();
|
|
365
|
+
models.forEach((model) => {
|
|
366
|
+
const pricing = (0, pricing_js_1.getModelPricing)(model);
|
|
367
|
+
(0, vitest_1.expect)(pricing).not.toBeNull();
|
|
368
|
+
(0, vitest_1.expect)(pricing.inputPerMToken).toBeGreaterThanOrEqual(0);
|
|
369
|
+
(0, vitest_1.expect)(pricing.outputPerMToken).toBeGreaterThanOrEqual(0);
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
//# sourceMappingURL=pricing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.test.js","sourceRoot":"","sources":["../../src/__tests__/pricing.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/providers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const providers_js_1 = require("../providers.js");
|
|
5
|
+
(0, vitest_1.describe)("detectProvider", () => {
|
|
6
|
+
(0, vitest_1.describe)("OpenAI", () => {
|
|
7
|
+
(0, vitest_1.it)("detects OpenAI chat completions URL", () => {
|
|
8
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.openai.com/v1/chat/completions")).toBe("openai");
|
|
9
|
+
});
|
|
10
|
+
(0, vitest_1.it)("detects OpenAI completions URL", () => {
|
|
11
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.openai.com/v1/completions")).toBe("openai");
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.it)("detects OpenAI by host even without known path", () => {
|
|
14
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.openai.com/v1/embeddings")).toBe("openai");
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)("detects OpenAI with query parameters", () => {
|
|
17
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.openai.com/v1/chat/completions?stream=true")).toBe("openai");
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.describe)("Anthropic", () => {
|
|
21
|
+
(0, vitest_1.it)("detects Anthropic messages URL", () => {
|
|
22
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.anthropic.com/v1/messages")).toBe("anthropic");
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.it)("detects Anthropic by host with other paths", () => {
|
|
25
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.anthropic.com/v1/other")).toBe("anthropic");
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)("detects Anthropic with trailing slash", () => {
|
|
28
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.anthropic.com/v1/messages/")).toBe("anthropic");
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
(0, vitest_1.describe)("Google", () => {
|
|
32
|
+
(0, vitest_1.it)("detects Google Generative Language API", () => {
|
|
33
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent")).toBe("google");
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.it)("detects Google with different version path", () => {
|
|
36
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://generativelanguage.googleapis.com/v1/models/gemini-pro")).toBe("google");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.describe)("Mistral", () => {
|
|
40
|
+
(0, vitest_1.it)("detects Mistral by host pattern", () => {
|
|
41
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.mistral.ai/v1/models")).toBe("mistral");
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)("detects Mistral with chat endpoint by host (host matched before OpenAI path)", () => {
|
|
44
|
+
// The host pattern for Mistral matches before OpenAI's path patterns are checked
|
|
45
|
+
// because Mistral appears after OpenAI in the pattern list, but host match comes first
|
|
46
|
+
// Actually: OpenAI path patterns (/v1/chat/completions) match the Mistral URL too
|
|
47
|
+
// since path patterns are checked per-provider in order. OpenAI is first, so it matches.
|
|
48
|
+
// This is the actual behavior of the implementation.
|
|
49
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.mistral.ai/v1/chat/completions")).toBe("openai");
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)("detects Mistral for endpoints not matching OpenAI path patterns", () => {
|
|
52
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.mistral.ai/v1/fim/completions")).toBe("mistral");
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.describe)("Cohere", () => {
|
|
56
|
+
(0, vitest_1.it)("detects Cohere .com domain", () => {
|
|
57
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.cohere.com/v1/chat")).toBe("cohere");
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.it)("detects Cohere .ai domain", () => {
|
|
60
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.cohere.ai/v1/generate")).toBe("cohere");
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.it)("detects Cohere with v2 path", () => {
|
|
63
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.cohere.com/v2/chat")).toBe("cohere");
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
(0, vitest_1.describe)("DeepSeek", () => {
|
|
67
|
+
(0, vitest_1.it)("detects DeepSeek by host", () => {
|
|
68
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.deepseek.com/v1/models")).toBe("deepseek");
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.it)("detects DeepSeek with chat path (host matched before OpenAI path)", () => {
|
|
71
|
+
// OpenAI path pattern matches /v1/chat/completions first since OpenAI is checked before DeepSeek
|
|
72
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.deepseek.com/v1/chat/completions")).toBe("openai");
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.describe)("Moonshot", () => {
|
|
76
|
+
(0, vitest_1.it)("detects Moonshot by host", () => {
|
|
77
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.moonshot.cn/v1/models")).toBe("moonshot");
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
(0, vitest_1.describe)("Zhipu", () => {
|
|
81
|
+
(0, vitest_1.it)("detects Zhipu by open.bigmodel.cn host", () => {
|
|
82
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://open.bigmodel.cn/api/paas/v4/chat/completions")).toBe("zhipu");
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.it)("detects Zhipu by api.z.ai host", () => {
|
|
85
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.z.ai/api/paas/v4/chat/completions")).toBe("zhipu");
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.describe)("MiniMax", () => {
|
|
89
|
+
(0, vitest_1.it)("detects MiniMax by host", () => {
|
|
90
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.minimax.chat/v1/text/chatcompletion_v2")).toBe("minimax");
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
(0, vitest_1.describe)("Baichuan", () => {
|
|
94
|
+
(0, vitest_1.it)("detects Baichuan by host", () => {
|
|
95
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.baichuan-ai.com/v1/models")).toBe("baichuan");
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
(0, vitest_1.describe)("Yi", () => {
|
|
99
|
+
(0, vitest_1.it)("detects Yi by host", () => {
|
|
100
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://api.lingyiwanwu.com/v1/models")).toBe("yi");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
(0, vitest_1.describe)("unknown", () => {
|
|
104
|
+
(0, vitest_1.it)("returns unknown for unrecognized URL", () => {
|
|
105
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://some-random-api.com/v1/chat")).toBe("unknown");
|
|
106
|
+
});
|
|
107
|
+
(0, vitest_1.it)("returns unknown for empty string", () => {
|
|
108
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("")).toBe("unknown");
|
|
109
|
+
});
|
|
110
|
+
(0, vitest_1.it)("matches OpenAI path pattern on localhost (path patterns are global)", () => {
|
|
111
|
+
// The implementation checks path patterns against the full URL string,
|
|
112
|
+
// so /v1/chat/completions on localhost matches OpenAI's path pattern.
|
|
113
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("http://localhost:3000/v1/chat/completions")).toBe("openai");
|
|
114
|
+
});
|
|
115
|
+
(0, vitest_1.it)("returns unknown for localhost with non-matching path", () => {
|
|
116
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("http://localhost:3000/api/generate")).toBe("unknown");
|
|
117
|
+
});
|
|
118
|
+
(0, vitest_1.it)("rejects spoofed hostname containing provider domain", () => {
|
|
119
|
+
// Host patterns are anchored with ^...$ and tested against extracted hostname,
|
|
120
|
+
// so "not-api.openai.com.evil.com" does not match "^api.openai.com$".
|
|
121
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProvider)("https://not-api.openai.com.evil.com/v1")).toBe("unknown");
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
(0, vitest_1.describe)("detectProviderByHostname", () => {
|
|
126
|
+
(0, vitest_1.it)("detects provider by hostname for known hosts", () => {
|
|
127
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProviderByHostname)("https://api.openai.com/v1/chat/completions")).toBe("openai");
|
|
128
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProviderByHostname)("https://api.anthropic.com/v1/messages")).toBe("anthropic");
|
|
129
|
+
});
|
|
130
|
+
(0, vitest_1.it)("returns unknown for localhost even with matching path", () => {
|
|
131
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProviderByHostname)("http://localhost:8000/v1/chat/completions")).toBe("unknown");
|
|
132
|
+
});
|
|
133
|
+
(0, vitest_1.it)("returns unknown for non-provider hostname with matching path", () => {
|
|
134
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProviderByHostname)("https://evil.com/v1/chat/completions")).toBe("unknown");
|
|
135
|
+
});
|
|
136
|
+
(0, vitest_1.it)("returns unknown for invalid URL", () => {
|
|
137
|
+
(0, vitest_1.expect)((0, providers_js_1.detectProviderByHostname)("not-a-url")).toBe("unknown");
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
(0, vitest_1.describe)("getProviderBaseUrl", () => {
|
|
141
|
+
(0, vitest_1.it)("returns base URL for openai", () => {
|
|
142
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("openai")).toBe("https://api.openai.com");
|
|
143
|
+
});
|
|
144
|
+
(0, vitest_1.it)("returns base URL for anthropic", () => {
|
|
145
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("anthropic")).toBe("https://api.anthropic.com");
|
|
146
|
+
});
|
|
147
|
+
(0, vitest_1.it)("returns base URL for google", () => {
|
|
148
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("google")).toBe("https://generativelanguage.googleapis.com");
|
|
149
|
+
});
|
|
150
|
+
(0, vitest_1.it)("returns base URL for mistral", () => {
|
|
151
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("mistral")).toBe("https://api.mistral.ai");
|
|
152
|
+
});
|
|
153
|
+
(0, vitest_1.it)("returns base URL for cohere", () => {
|
|
154
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("cohere")).toBe("https://api.cohere.com");
|
|
155
|
+
});
|
|
156
|
+
(0, vitest_1.it)("returns base URL for deepseek", () => {
|
|
157
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("deepseek")).toBe("https://api.deepseek.com");
|
|
158
|
+
});
|
|
159
|
+
(0, vitest_1.it)("returns base URL for moonshot", () => {
|
|
160
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("moonshot")).toBe("https://api.moonshot.cn");
|
|
161
|
+
});
|
|
162
|
+
(0, vitest_1.it)("returns base URL for zhipu", () => {
|
|
163
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("zhipu")).toBe("https://open.bigmodel.cn");
|
|
164
|
+
});
|
|
165
|
+
(0, vitest_1.it)("returns base URL for minimax", () => {
|
|
166
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("minimax")).toBe("https://api.minimax.chat");
|
|
167
|
+
});
|
|
168
|
+
(0, vitest_1.it)("returns base URL for baichuan", () => {
|
|
169
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("baichuan")).toBe("https://api.baichuan-ai.com");
|
|
170
|
+
});
|
|
171
|
+
(0, vitest_1.it)("returns base URL for yi", () => {
|
|
172
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("yi")).toBe("https://api.lingyiwanwu.com");
|
|
173
|
+
});
|
|
174
|
+
(0, vitest_1.it)("returns null for unknown provider", () => {
|
|
175
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderBaseUrl)("unknown")).toBeNull();
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
(0, vitest_1.describe)("getProviderAuthHeader", () => {
|
|
179
|
+
(0, vitest_1.it)("returns Bearer Authorization for openai", () => {
|
|
180
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("openai", "sk-test");
|
|
181
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer sk-test" });
|
|
182
|
+
});
|
|
183
|
+
(0, vitest_1.it)("returns Bearer Authorization for mistral", () => {
|
|
184
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("mistral", "key-123");
|
|
185
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer key-123" });
|
|
186
|
+
});
|
|
187
|
+
(0, vitest_1.it)("returns Bearer Authorization for cohere", () => {
|
|
188
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("cohere", "co-key");
|
|
189
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer co-key" });
|
|
190
|
+
});
|
|
191
|
+
(0, vitest_1.it)("returns x-api-key for anthropic", () => {
|
|
192
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("anthropic", "sk-ant-test");
|
|
193
|
+
(0, vitest_1.expect)(result).toEqual({ name: "x-api-key", value: "sk-ant-test" });
|
|
194
|
+
});
|
|
195
|
+
(0, vitest_1.it)("returns x-goog-api-key for google", () => {
|
|
196
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("google", "AIza-test");
|
|
197
|
+
(0, vitest_1.expect)(result).toEqual({ name: "x-goog-api-key", value: "AIza-test" });
|
|
198
|
+
});
|
|
199
|
+
(0, vitest_1.it)("returns Bearer Authorization for deepseek", () => {
|
|
200
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("deepseek", "sk-ds-test");
|
|
201
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer sk-ds-test" });
|
|
202
|
+
});
|
|
203
|
+
(0, vitest_1.it)("returns Bearer Authorization for moonshot", () => {
|
|
204
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("moonshot", "sk-ms-test");
|
|
205
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer sk-ms-test" });
|
|
206
|
+
});
|
|
207
|
+
(0, vitest_1.it)("returns Bearer Authorization for zhipu", () => {
|
|
208
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("zhipu", "sk-zp-test");
|
|
209
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer sk-zp-test" });
|
|
210
|
+
});
|
|
211
|
+
(0, vitest_1.it)("returns Bearer Authorization for minimax", () => {
|
|
212
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("minimax", "sk-mm-test");
|
|
213
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer sk-mm-test" });
|
|
214
|
+
});
|
|
215
|
+
(0, vitest_1.it)("returns Bearer Authorization for baichuan", () => {
|
|
216
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("baichuan", "sk-bc-test");
|
|
217
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer sk-bc-test" });
|
|
218
|
+
});
|
|
219
|
+
(0, vitest_1.it)("returns Bearer Authorization for yi", () => {
|
|
220
|
+
const result = (0, providers_js_1.getProviderAuthHeader)("yi", "sk-yi-test");
|
|
221
|
+
(0, vitest_1.expect)(result).toEqual({ name: "authorization", value: "Bearer sk-yi-test" });
|
|
222
|
+
});
|
|
223
|
+
(0, vitest_1.it)("returns null for unknown provider", () => {
|
|
224
|
+
(0, vitest_1.expect)((0, providers_js_1.getProviderAuthHeader)("unknown", "key")).toBeNull();
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
//# sourceMappingURL=providers.test.js.map
|