@careob/llm-gateway 1.0.0 → 1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,YAAY,EAAE,MAAM,cAAc,CAAC;AAUxD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmB,EAAE,UAAwB,EAAE;IAChF,MAAM,eAAe,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAmB,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAgB;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ;SACT,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;YACnD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAC3C,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAC9B,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,EAAE,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;gBAC/F,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC/E,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC/F,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gBACpC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;YACxC,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,12 @@
1
1
  import type { ChatRequest, ChatResponse, TokenUsage } from './types.js';
2
2
  export type ApiFormat = 'openai' | 'anthropic' | 'gemini';
3
3
  export type AuthStyle = 'bearer' | 'x-api-key' | 'query';
4
+ export interface ProviderCapabilities {
5
+ streaming: boolean;
6
+ tools: boolean;
7
+ structuredOutput: boolean;
8
+ vision: boolean;
9
+ }
4
10
  export interface ProviderDef {
5
11
  id: string;
6
12
  label: string;
@@ -16,6 +22,7 @@ export interface ProviderDef {
16
22
  prompt: number;
17
23
  completion: number;
18
24
  }>;
25
+ capabilities: ProviderCapabilities;
19
26
  }
20
27
  export declare const PROVIDERS: Record<string, ProviderDef>;
21
28
  export declare function detectProvider(key: string): string | null;
@@ -30,10 +37,22 @@ export declare function buildRequest(provider: ProviderDef, request: ChatRequest
30
37
  };
31
38
  export declare function parseResponse(provider: ProviderDef, data: unknown): ChatResponse;
32
39
  export declare function parseStreamChunk(line: string): StreamChunkResult | null;
33
- type StreamChunkResult = import('./types.js').StreamChunk & {
40
+ export type StreamChunkResult = import('./types.js').StreamChunk & {
34
41
  usage?: TokenUsage;
35
42
  };
43
+ /**
44
+ * Returns a (possibly stateful) parser that turns one SSE line from the
45
+ * provider into a normalized OpenAI-style stream chunk, or null if the
46
+ * line carries no content. Create a fresh parser per stream.
47
+ */
48
+ export declare function createStreamParser(provider: ProviderDef): (line: string) => StreamChunkResult | null;
36
49
  export declare function estimateCost(model: string, promptTokens: number, completionTokens: number): number;
37
50
  export declare function findProviderForModel(model: string): ProviderDef | null;
38
- export {};
51
+ export type RequiredCapability = keyof ProviderCapabilities;
52
+ export declare function checkCapabilities(provider: ProviderDef, required: RequiredCapability[]): string | null;
53
+ export declare function inferRequiredCapabilities(request: {
54
+ tools?: unknown[];
55
+ response_format?: unknown;
56
+ stream?: boolean;
57
+ }): RequiredCapability[];
39
58
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAIzD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAKD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAuMjD,CAAC;AAIF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQzD;AAED,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAqD,GAC1F,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBzD;AAKD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACb;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAyBpC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,YAAY,CAOhF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAUvE;AAED,KAAK,iBAAiB,GAAG,OAAO,YAAY,EAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAInF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CASlG;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAKtE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAIzD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,YAAY,EAAE,oBAAoB,CAAC;CACpC;AAKD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAkQjD,CAAC;AAIF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQzD;AAED,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAqD,GAC1F,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBzD;AAKD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACb;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAyBpC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,YAAY,CAOhF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAQvE;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,YAAY,EAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAE1F;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAOpG;AAiHD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CASlG;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAKtE;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC;AAE5D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,GAAG,IAAI,CAKtG;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,kBAAkB,EAAE,CAM3I"}
package/dist/registry.js CHANGED
@@ -22,6 +22,7 @@ export const PROVIDERS = {
22
22
  'o3-mini': { prompt: 1.1, completion: 4.4 },
23
23
  'o4-mini': { prompt: 1.1, completion: 4.4 },
24
24
  },
25
+ capabilities: { streaming: true, tools: true, structuredOutput: true, vision: true },
25
26
  },
26
27
  anthropic: {
27
28
  id: 'anthropic',
@@ -39,6 +40,7 @@ export const PROVIDERS = {
39
40
  'claude-sonnet-4-20250514': { prompt: 3, completion: 15 },
40
41
  'claude-haiku-3-5-20241022': { prompt: 0.8, completion: 4 },
41
42
  },
43
+ capabilities: { streaming: true, tools: true, structuredOutput: false, vision: true },
42
44
  },
43
45
  gemini: {
44
46
  id: 'gemini',
@@ -57,6 +59,7 @@ export const PROVIDERS = {
57
59
  'gemini-1.5-pro': { prompt: 1.25, completion: 5 },
58
60
  'gemini-1.5-flash': { prompt: 0.075, completion: 0.3 },
59
61
  },
62
+ capabilities: { streaming: true, tools: true, structuredOutput: true, vision: true },
60
63
  },
61
64
  deepseek: {
62
65
  id: 'deepseek',
@@ -73,6 +76,7 @@ export const PROVIDERS = {
73
76
  'deepseek-coder': { prompt: 0.14, completion: 0.28 },
74
77
  'deepseek-reasoner': { prompt: 0.55, completion: 2.19 },
75
78
  },
79
+ capabilities: { streaming: true, tools: true, structuredOutput: true, vision: false },
76
80
  },
77
81
  qwen: {
78
82
  id: 'qwen',
@@ -91,6 +95,7 @@ export const PROVIDERS = {
91
95
  'qwen-long': { prompt: 0.04, completion: 0.08 },
92
96
  'qwen-coder-turbo': { prompt: 0.15, completion: 0.3 },
93
97
  },
98
+ capabilities: { streaming: true, tools: true, structuredOutput: false, vision: true },
94
99
  },
95
100
  zhipu: {
96
101
  id: 'zhipu',
@@ -108,6 +113,7 @@ export const PROVIDERS = {
108
113
  'glm-4-plus': { prompt: 0.7, completion: 0.7 },
109
114
  'glm-4-long': { prompt: 0.14, completion: 0.14 },
110
115
  },
116
+ capabilities: { streaming: true, tools: true, structuredOutput: false, vision: true },
111
117
  },
112
118
  moonshot: {
113
119
  id: 'moonshot',
@@ -124,6 +130,7 @@ export const PROVIDERS = {
124
130
  'moonshot-v1-32k': { prompt: 0.35, completion: 0.35 },
125
131
  'moonshot-v1-128k': { prompt: 0.85, completion: 0.85 },
126
132
  },
133
+ capabilities: { streaming: true, tools: false, structuredOutput: false, vision: false },
127
134
  },
128
135
  yi: {
129
136
  id: 'yi',
@@ -141,6 +148,7 @@ export const PROVIDERS = {
141
148
  'yi-spark': { prompt: 0.12, completion: 0.12 },
142
149
  'yi-large-turbo': { prompt: 1.7, completion: 1.7 },
143
150
  },
151
+ capabilities: { streaming: true, tools: false, structuredOutput: false, vision: false },
144
152
  },
145
153
  groq: {
146
154
  id: 'groq',
@@ -157,6 +165,7 @@ export const PROVIDERS = {
157
165
  'llama-3.1-8b-instant': { prompt: 0.05, completion: 0.08 },
158
166
  'mixtral-8x7b-32768': { prompt: 0.24, completion: 0.24 },
159
167
  },
168
+ capabilities: { streaming: true, tools: true, structuredOutput: true, vision: false },
160
169
  },
161
170
  together: {
162
171
  id: 'together',
@@ -172,6 +181,7 @@ export const PROVIDERS = {
172
181
  'meta-llama/Llama-3.3-70B-Instruct-Turbo': { prompt: 0.88, completion: 0.88 },
173
182
  'deepseek-ai/DeepSeek-R1': { prompt: 3.0, completion: 7.0 },
174
183
  },
184
+ capabilities: { streaming: true, tools: true, structuredOutput: true, vision: false },
175
185
  },
176
186
  mistral: {
177
187
  id: 'mistral',
@@ -188,6 +198,54 @@ export const PROVIDERS = {
188
198
  'mistral-small-latest': { prompt: 0.1, completion: 0.3 },
189
199
  'codestral-latest': { prompt: 0.3, completion: 0.9 },
190
200
  },
201
+ capabilities: { streaming: true, tools: true, structuredOutput: true, vision: false },
202
+ },
203
+ openrouter: {
204
+ id: 'openrouter',
205
+ label: 'OpenRouter',
206
+ baseUrl: 'https://openrouter.ai/api/v1',
207
+ format: 'openai',
208
+ authStyle: 'bearer',
209
+ keyPatterns: [/^sk-or-/],
210
+ envPrefixes: ['OPENROUTER'],
211
+ models: [
212
+ 'openai/gpt-4o',
213
+ 'openai/gpt-4o-mini',
214
+ 'openai/o1',
215
+ 'openai/o3-mini',
216
+ 'openai/o4-mini',
217
+ 'anthropic/claude-opus-4',
218
+ 'anthropic/claude-sonnet-4',
219
+ 'anthropic/claude-haiku-3.5',
220
+ 'google/gemini-2.5-pro',
221
+ 'google/gemini-2.5-flash',
222
+ 'google/gemini-2.0-flash',
223
+ 'deepseek/deepseek-chat',
224
+ 'deepseek/deepseek-reasoner',
225
+ 'meta-llama/llama-3.3-70b-instruct',
226
+ 'mistralai/mistral-large',
227
+ 'qwen/qwen-2.5-72b-instruct',
228
+ ],
229
+ defaultRpm: 200,
230
+ costs: {
231
+ 'openai/gpt-4o': { prompt: 2.5, completion: 10 },
232
+ 'openai/gpt-4o-mini': { prompt: 0.15, completion: 0.6 },
233
+ 'openai/o1': { prompt: 15, completion: 60 },
234
+ 'openai/o3-mini': { prompt: 1.1, completion: 4.4 },
235
+ 'openai/o4-mini': { prompt: 1.1, completion: 4.4 },
236
+ 'anthropic/claude-opus-4': { prompt: 15, completion: 75 },
237
+ 'anthropic/claude-sonnet-4': { prompt: 3, completion: 15 },
238
+ 'anthropic/claude-haiku-3.5': { prompt: 0.8, completion: 4 },
239
+ 'google/gemini-2.5-pro': { prompt: 1.25, completion: 10 },
240
+ 'google/gemini-2.5-flash': { prompt: 0.15, completion: 0.6 },
241
+ 'google/gemini-2.0-flash': { prompt: 0.1, completion: 0.4 },
242
+ 'deepseek/deepseek-chat': { prompt: 0.14, completion: 0.28 },
243
+ 'deepseek/deepseek-reasoner': { prompt: 0.55, completion: 2.19 },
244
+ 'meta-llama/llama-3.3-70b-instruct': { prompt: 0.59, completion: 0.79 },
245
+ 'mistralai/mistral-large': { prompt: 2, completion: 6 },
246
+ 'qwen/qwen-2.5-72b-instruct': { prompt: 0.36, completion: 0.36 },
247
+ },
248
+ capabilities: { streaming: true, tools: true, structuredOutput: true, vision: true },
191
249
  },
192
250
  };
193
251
  // ─── Auto-Detection ────────────────────────────────────────────
@@ -238,9 +296,9 @@ export function buildRequest(provider, request, apiKey) {
238
296
  body: buildAnthropicBody(request),
239
297
  }),
240
298
  gemini: () => {
241
- const endpoint = request.stream ? 'streamGenerateContent' : 'generateContent';
299
+ const endpoint = request.stream ? 'streamGenerateContent?alt=sse&' : 'generateContent?';
242
300
  return {
243
- url: `${provider.baseUrl}/models/${request.model}:${endpoint}?key=${apiKey}`,
301
+ url: `${provider.baseUrl}/models/${request.model}:${endpoint}key=${apiKey}`,
244
302
  body: buildGeminiBody(request),
245
303
  };
246
304
  },
@@ -260,11 +318,8 @@ export function parseResponse(provider, data) {
260
318
  return PARSERS[provider.format](data);
261
319
  }
262
320
  export function parseStreamChunk(line) {
263
- const trimmed = line.trim();
264
- if (!trimmed.startsWith('data: '))
265
- return null;
266
- const payload = trimmed.slice(6);
267
- if (payload === '[DONE]')
321
+ const payload = extractSseData(line);
322
+ if (!payload)
268
323
  return null;
269
324
  try {
270
325
  return JSON.parse(payload);
@@ -273,6 +328,115 @@ export function parseStreamChunk(line) {
273
328
  return null;
274
329
  }
275
330
  }
331
+ /**
332
+ * Returns a (possibly stateful) parser that turns one SSE line from the
333
+ * provider into a normalized OpenAI-style stream chunk, or null if the
334
+ * line carries no content. Create a fresh parser per stream.
335
+ */
336
+ export function createStreamParser(provider) {
337
+ const FACTORIES = {
338
+ openai: () => parseStreamChunk,
339
+ anthropic: createAnthropicStreamParser,
340
+ gemini: createGeminiStreamParser,
341
+ };
342
+ return FACTORIES[provider.format]();
343
+ }
344
+ function extractSseData(line) {
345
+ const trimmed = line.trim();
346
+ if (!trimmed.startsWith('data:'))
347
+ return null;
348
+ const payload = trimmed.slice(5).trim();
349
+ if (!payload || payload === '[DONE]')
350
+ return null;
351
+ return payload;
352
+ }
353
+ function createAnthropicStreamParser() {
354
+ let id = '';
355
+ let model = '';
356
+ let promptTokens = 0;
357
+ let completionTokens = 0;
358
+ return (line) => {
359
+ const payload = extractSseData(line);
360
+ if (!payload)
361
+ return null;
362
+ let event;
363
+ try {
364
+ event = JSON.parse(payload);
365
+ }
366
+ catch {
367
+ return null;
368
+ }
369
+ const chunk = (delta, finishReason) => ({
370
+ id,
371
+ object: 'chat.completion.chunk',
372
+ model,
373
+ choices: [{ index: 0, delta, finish_reason: finishReason }],
374
+ });
375
+ switch (event.type) {
376
+ case 'message_start':
377
+ id = event.message?.id ?? id;
378
+ model = event.message?.model ?? model;
379
+ promptTokens = event.message?.usage?.input_tokens ?? 0;
380
+ return chunk({ role: 'assistant', content: '' }, null);
381
+ case 'content_block_delta':
382
+ if (!event.delta?.text)
383
+ return null;
384
+ return chunk({ content: event.delta.text }, null);
385
+ case 'message_delta': {
386
+ completionTokens = event.usage?.output_tokens ?? completionTokens;
387
+ const stop = event.delta?.stop_reason;
388
+ const final = chunk({}, stop === 'end_turn' ? 'stop' : stop ?? null);
389
+ final.usage = {
390
+ prompt_tokens: promptTokens,
391
+ completion_tokens: completionTokens,
392
+ total_tokens: promptTokens + completionTokens,
393
+ };
394
+ return final;
395
+ }
396
+ default:
397
+ return null;
398
+ }
399
+ };
400
+ }
401
+ function createGeminiStreamParser() {
402
+ const id = `gemini-${Date.now()}`;
403
+ return (line) => {
404
+ const payload = extractSseData(line);
405
+ if (!payload)
406
+ return null;
407
+ let event;
408
+ try {
409
+ event = JSON.parse(payload);
410
+ }
411
+ catch {
412
+ return null;
413
+ }
414
+ const candidate = event.candidates?.[0];
415
+ const text = candidate?.content?.parts?.map((p) => p.text ?? '').join('') ?? '';
416
+ const finish = candidate?.finishReason;
417
+ const meta = event.usageMetadata;
418
+ if (!text && !finish && !meta)
419
+ return null;
420
+ const result = {
421
+ id,
422
+ object: 'chat.completion.chunk',
423
+ model: event.modelVersion ?? 'gemini',
424
+ choices: [{
425
+ index: 0,
426
+ delta: text ? { content: text } : {},
427
+ finish_reason: finish ? normalizeGeminiFinishReason(finish) : null,
428
+ }],
429
+ };
430
+ if (meta) {
431
+ result.usage = {
432
+ prompt_tokens: meta.promptTokenCount ?? 0,
433
+ completion_tokens: meta.candidatesTokenCount ?? 0,
434
+ total_tokens: meta.totalTokenCount ?? 0,
435
+ };
436
+ }
437
+ return result;
438
+ };
439
+ }
276
440
  // ─── Cost Estimation ──────────────────────────────────────────
277
441
  export function estimateCost(model, promptTokens, completionTokens) {
278
442
  for (const def of Object.values(PROVIDERS)) {
@@ -292,6 +456,23 @@ export function findProviderForModel(model) {
292
456
  }
293
457
  return null;
294
458
  }
459
+ export function checkCapabilities(provider, required) {
460
+ for (const cap of required) {
461
+ if (!provider.capabilities[cap])
462
+ return cap;
463
+ }
464
+ return null;
465
+ }
466
+ export function inferRequiredCapabilities(request) {
467
+ const caps = [];
468
+ if (request.tools && request.tools.length > 0)
469
+ caps.push('tools');
470
+ if (request.response_format)
471
+ caps.push('structuredOutput');
472
+ if (request.stream)
473
+ caps.push('streaming');
474
+ return caps;
475
+ }
295
476
  // ─── Shared Internals ─────────────────────────────────────────
296
477
  function buildAuthHeaders(provider, apiKey) {
297
478
  const headers = { 'Content-Type': 'application/json' };
@@ -396,16 +577,26 @@ function parseAnthropicFormat(data) {
396
577
  _gateway: { provider: '', keyLabel: '', latencyMs: 0, attempt: 0 },
397
578
  };
398
579
  }
580
+ function normalizeGeminiFinishReason(reason) {
581
+ switch (reason) {
582
+ case 'STOP': return 'stop';
583
+ case 'MAX_TOKENS': return 'length';
584
+ case 'SAFETY': return 'content_filter';
585
+ case 'RECITATION': return 'content_filter';
586
+ default: return reason.toLowerCase();
587
+ }
588
+ }
399
589
  function parseGeminiFormat(data) {
400
590
  const raw = data;
401
591
  const candidate = raw.candidates?.[0];
402
592
  const text = candidate?.content?.parts?.map((p) => p.text).join('') ?? '';
593
+ const finish = candidate?.finishReason ? normalizeGeminiFinishReason(candidate.finishReason) : 'stop';
403
594
  const meta = raw.usageMetadata;
404
595
  return {
405
596
  id: `gemini-${Date.now()}`,
406
597
  object: 'chat.completion',
407
- model: 'gemini',
408
- choices: [{ index: 0, message: { role: 'assistant', content: text }, finish_reason: candidate?.finishReason === 'STOP' ? 'stop' : (candidate?.finishReason ?? 'stop') }],
598
+ model: raw.modelVersion ?? 'gemini',
599
+ choices: [{ index: 0, message: { role: 'assistant', content: text }, finish_reason: finish }],
409
600
  usage: { prompt_tokens: meta?.promptTokenCount ?? 0, completion_tokens: meta?.candidatesTokenCount ?? 0, total_tokens: meta?.totalTokenCount ?? 0 },
410
601
  _gateway: { provider: '', keyLabel: '', latencyMs: 0, attempt: 0 },
411
602
  };
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -14,16 +14,29 @@ export interface GatewayConfig {
14
14
  keys: Array<string | KeyInput>;
15
15
  /** Default model to use when not specified in request */
16
16
  defaultModel?: string;
17
+ /**
18
+ * Cross-provider fallback chains, keyed by primary model.
19
+ * e.g. { 'gpt-4o': ['claude-sonnet-4-20250514', 'gemini-2.5-flash'] }
20
+ * When all keys for the primary model's provider are exhausted, the
21
+ * request is retried with the mapped models on their own providers.
22
+ */
23
+ fallbackModels?: Record<string, string[]>;
17
24
  /** Retries across keys before failing. Default: 3 */
18
25
  maxRetries?: number;
19
26
  /** Cooldown ms for a rate-limited key. Default: 60000 */
20
27
  cooldownMs?: number;
21
- /** Request timeout ms. Default: 30000 */
28
+ /** Connection timeout ms. Default: 30000 */
22
29
  timeoutMs?: number;
30
+ /** Stream idle timeout ms (no data received). Default: 15000 */
31
+ streamTimeoutMs?: number;
23
32
  /** Called after every LLM request for logging/tracking */
24
33
  onUsage?: (log: UsageLog) => void | Promise<void>;
25
34
  /** Called when all keys for a provider are exhausted */
26
35
  onAllKeysExhausted?: (provider: string) => void;
36
+ /** OpenRouter-specific: your site URL for rankings (sent as HTTP-Referer) */
37
+ openRouterReferer?: string;
38
+ /** OpenRouter-specific: your app name for rankings (sent as X-Title) */
39
+ openRouterTitle?: string;
27
40
  }
28
41
  export interface ChatMessage {
29
42
  role: 'system' | 'user' | 'assistant' | 'tool';
@@ -44,8 +57,12 @@ export interface ChatRequest {
44
57
  response_format?: unknown;
45
58
  /** Force a specific provider by name */
46
59
  provider?: string;
60
+ /** Ordered fallback models to try if this model's provider is exhausted. Overrides GatewayConfig.fallbackModels */
61
+ fallbackModels?: string[];
47
62
  /** Metadata for spend tracking */
48
63
  metadata?: Record<string, string>;
64
+ /** Caller-provided AbortSignal to cancel the request */
65
+ signal?: AbortSignal;
49
66
  }
50
67
  export interface ChatChoice {
51
68
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@careob/llm-gateway",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Lightweight LLM gateway with multi-key rotation, rate-limit handling, provider failover, and spend tracking for Node.js/Express apps",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,21 +14,49 @@
14
14
  "scripts": {
15
15
  "build": "tsc",
16
16
  "typecheck": "tsc --noEmit",
17
- "dev": "tsc --watch"
17
+ "dev": "tsc --watch",
18
+ "test": "vitest run",
19
+ "test:watch": "vitest",
20
+ "test:coverage": "vitest run --coverage",
21
+ "ci": "npm run typecheck && npm run build && npm test"
18
22
  },
19
- "dependencies": {},
20
23
  "peerDependencies": {
21
24
  "express": "^4.18.0 || ^5.0.0"
22
25
  },
23
26
  "peerDependenciesMeta": {
24
- "express": { "optional": true }
27
+ "express": {
28
+ "optional": true
29
+ }
25
30
  },
26
31
  "devDependencies": {
27
32
  "@types/express": "^4.17.21",
28
- "@types/node": "^20.14.9",
29
- "typescript": "^5.5.3"
33
+ "@types/node": "^22.0.0",
34
+ "@vitest/coverage-v8": "^5.0.0",
35
+ "typescript": "^5.5.3",
36
+ "vite": "^8.3.0",
37
+ "vitest": "^5.0.0"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "README.md"
42
+ ],
43
+ "keywords": [
44
+ "llm",
45
+ "gateway",
46
+ "openai",
47
+ "anthropic",
48
+ "key-rotation",
49
+ "rate-limit",
50
+ "express"
51
+ ],
52
+ "license": "MIT",
53
+ "author": "Careob <gaurav@careob.com>",
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "https://github.com/careob/llm-gateway.git"
30
57
  },
31
- "files": ["dist", "README.md"],
32
- "keywords": ["llm", "gateway", "openai", "anthropic", "key-rotation", "rate-limit", "express"],
33
- "license": "MIT"
58
+ "homepage": "https://github.com/careob/llm-gateway#readme",
59
+ "bugs": {
60
+ "url": "https://github.com/careob/llm-gateway/issues"
61
+ }
34
62
  }