ai.matey.backend 0.2.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.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/index.js +60 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/providers/ai21.js +331 -0
  5. package/dist/cjs/providers/ai21.js.map +1 -0
  6. package/dist/cjs/providers/anthropic.js +664 -0
  7. package/dist/cjs/providers/anthropic.js.map +1 -0
  8. package/dist/cjs/providers/anyscale.js +338 -0
  9. package/dist/cjs/providers/anyscale.js.map +1 -0
  10. package/dist/cjs/providers/aws-bedrock.js +374 -0
  11. package/dist/cjs/providers/aws-bedrock.js.map +1 -0
  12. package/dist/cjs/providers/azure-openai.js +406 -0
  13. package/dist/cjs/providers/azure-openai.js.map +1 -0
  14. package/dist/cjs/providers/cerebras.js +356 -0
  15. package/dist/cjs/providers/cerebras.js.map +1 -0
  16. package/dist/cjs/providers/cloudflare.js +359 -0
  17. package/dist/cjs/providers/cloudflare.js.map +1 -0
  18. package/dist/cjs/providers/cohere.js +368 -0
  19. package/dist/cjs/providers/cohere.js.map +1 -0
  20. package/dist/cjs/providers/deepinfra.js +343 -0
  21. package/dist/cjs/providers/deepinfra.js.map +1 -0
  22. package/dist/cjs/providers/deepseek.js +104 -0
  23. package/dist/cjs/providers/deepseek.js.map +1 -0
  24. package/dist/cjs/providers/fireworks.js +363 -0
  25. package/dist/cjs/providers/fireworks.js.map +1 -0
  26. package/dist/cjs/providers/gemini.js +292 -0
  27. package/dist/cjs/providers/gemini.js.map +1 -0
  28. package/dist/cjs/providers/groq.js +143 -0
  29. package/dist/cjs/providers/groq.js.map +1 -0
  30. package/dist/cjs/providers/huggingface.js +392 -0
  31. package/dist/cjs/providers/huggingface.js.map +1 -0
  32. package/dist/cjs/providers/lmstudio.js +144 -0
  33. package/dist/cjs/providers/lmstudio.js.map +1 -0
  34. package/dist/cjs/providers/mistral.js +288 -0
  35. package/dist/cjs/providers/mistral.js.map +1 -0
  36. package/dist/cjs/providers/nvidia.js +167 -0
  37. package/dist/cjs/providers/nvidia.js.map +1 -0
  38. package/dist/cjs/providers/ollama.js +257 -0
  39. package/dist/cjs/providers/ollama.js.map +1 -0
  40. package/dist/cjs/providers/openai.js +640 -0
  41. package/dist/cjs/providers/openai.js.map +1 -0
  42. package/dist/cjs/providers/openrouter.js +379 -0
  43. package/dist/cjs/providers/openrouter.js.map +1 -0
  44. package/dist/cjs/providers/perplexity.js +372 -0
  45. package/dist/cjs/providers/perplexity.js.map +1 -0
  46. package/dist/cjs/providers/replicate.js +340 -0
  47. package/dist/cjs/providers/replicate.js.map +1 -0
  48. package/dist/cjs/providers/together-ai.js +341 -0
  49. package/dist/cjs/providers/together-ai.js.map +1 -0
  50. package/dist/cjs/providers/xai.js +339 -0
  51. package/dist/cjs/providers/xai.js.map +1 -0
  52. package/dist/cjs/shared.js +279 -0
  53. package/dist/cjs/shared.js.map +1 -0
  54. package/dist/esm/index.js +44 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/providers/ai21.js +327 -0
  57. package/dist/esm/providers/ai21.js.map +1 -0
  58. package/dist/esm/providers/anthropic.js +660 -0
  59. package/dist/esm/providers/anthropic.js.map +1 -0
  60. package/dist/esm/providers/anyscale.js +334 -0
  61. package/dist/esm/providers/anyscale.js.map +1 -0
  62. package/dist/esm/providers/aws-bedrock.js +370 -0
  63. package/dist/esm/providers/aws-bedrock.js.map +1 -0
  64. package/dist/esm/providers/azure-openai.js +402 -0
  65. package/dist/esm/providers/azure-openai.js.map +1 -0
  66. package/dist/esm/providers/cerebras.js +352 -0
  67. package/dist/esm/providers/cerebras.js.map +1 -0
  68. package/dist/esm/providers/cloudflare.js +355 -0
  69. package/dist/esm/providers/cloudflare.js.map +1 -0
  70. package/dist/esm/providers/cohere.js +364 -0
  71. package/dist/esm/providers/cohere.js.map +1 -0
  72. package/dist/esm/providers/deepinfra.js +339 -0
  73. package/dist/esm/providers/deepinfra.js.map +1 -0
  74. package/dist/esm/providers/deepseek.js +99 -0
  75. package/dist/esm/providers/deepseek.js.map +1 -0
  76. package/dist/esm/providers/fireworks.js +359 -0
  77. package/dist/esm/providers/fireworks.js.map +1 -0
  78. package/dist/esm/providers/gemini.js +288 -0
  79. package/dist/esm/providers/gemini.js.map +1 -0
  80. package/dist/esm/providers/groq.js +138 -0
  81. package/dist/esm/providers/groq.js.map +1 -0
  82. package/dist/esm/providers/huggingface.js +387 -0
  83. package/dist/esm/providers/huggingface.js.map +1 -0
  84. package/dist/esm/providers/lmstudio.js +139 -0
  85. package/dist/esm/providers/lmstudio.js.map +1 -0
  86. package/dist/esm/providers/mistral.js +284 -0
  87. package/dist/esm/providers/mistral.js.map +1 -0
  88. package/dist/esm/providers/nvidia.js +162 -0
  89. package/dist/esm/providers/nvidia.js.map +1 -0
  90. package/dist/esm/providers/ollama.js +253 -0
  91. package/dist/esm/providers/ollama.js.map +1 -0
  92. package/dist/esm/providers/openai.js +636 -0
  93. package/dist/esm/providers/openai.js.map +1 -0
  94. package/dist/esm/providers/openrouter.js +375 -0
  95. package/dist/esm/providers/openrouter.js.map +1 -0
  96. package/dist/esm/providers/perplexity.js +368 -0
  97. package/dist/esm/providers/perplexity.js.map +1 -0
  98. package/dist/esm/providers/replicate.js +336 -0
  99. package/dist/esm/providers/replicate.js.map +1 -0
  100. package/dist/esm/providers/together-ai.js +337 -0
  101. package/dist/esm/providers/together-ai.js.map +1 -0
  102. package/dist/esm/providers/xai.js +335 -0
  103. package/dist/esm/providers/xai.js.map +1 -0
  104. package/dist/esm/shared.js +272 -0
  105. package/dist/esm/shared.js.map +1 -0
  106. package/dist/types/index.d.ts +38 -0
  107. package/dist/types/index.d.ts.map +1 -0
  108. package/dist/types/providers/ai21.d.ts +106 -0
  109. package/dist/types/providers/ai21.d.ts.map +1 -0
  110. package/dist/types/providers/anthropic.d.ts +194 -0
  111. package/dist/types/providers/anthropic.d.ts.map +1 -0
  112. package/dist/types/providers/anyscale.d.ts +109 -0
  113. package/dist/types/providers/anyscale.d.ts.map +1 -0
  114. package/dist/types/providers/aws-bedrock.d.ts +152 -0
  115. package/dist/types/providers/aws-bedrock.d.ts.map +1 -0
  116. package/dist/types/providers/azure-openai.d.ts +142 -0
  117. package/dist/types/providers/azure-openai.d.ts.map +1 -0
  118. package/dist/types/providers/cerebras.d.ts +130 -0
  119. package/dist/types/providers/cerebras.d.ts.map +1 -0
  120. package/dist/types/providers/cloudflare.d.ts +125 -0
  121. package/dist/types/providers/cloudflare.d.ts.map +1 -0
  122. package/dist/types/providers/cohere.d.ts +114 -0
  123. package/dist/types/providers/cohere.d.ts.map +1 -0
  124. package/dist/types/providers/deepinfra.d.ts +118 -0
  125. package/dist/types/providers/deepinfra.d.ts.map +1 -0
  126. package/dist/types/providers/deepseek.d.ts +68 -0
  127. package/dist/types/providers/deepseek.d.ts.map +1 -0
  128. package/dist/types/providers/fireworks.d.ts +127 -0
  129. package/dist/types/providers/fireworks.d.ts.map +1 -0
  130. package/dist/types/providers/gemini.d.ts +71 -0
  131. package/dist/types/providers/gemini.d.ts.map +1 -0
  132. package/dist/types/providers/groq.d.ts +83 -0
  133. package/dist/types/providers/groq.d.ts.map +1 -0
  134. package/dist/types/providers/huggingface.d.ts +154 -0
  135. package/dist/types/providers/huggingface.d.ts.map +1 -0
  136. package/dist/types/providers/lmstudio.d.ts +88 -0
  137. package/dist/types/providers/lmstudio.d.ts.map +1 -0
  138. package/dist/types/providers/mistral.d.ts +65 -0
  139. package/dist/types/providers/mistral.d.ts.map +1 -0
  140. package/dist/types/providers/nvidia.d.ts +100 -0
  141. package/dist/types/providers/nvidia.d.ts.map +1 -0
  142. package/dist/types/providers/ollama.d.ts +59 -0
  143. package/dist/types/providers/ollama.d.ts.map +1 -0
  144. package/dist/types/providers/openai.d.ts +205 -0
  145. package/dist/types/providers/openai.d.ts.map +1 -0
  146. package/dist/types/providers/openrouter.d.ts +135 -0
  147. package/dist/types/providers/openrouter.d.ts.map +1 -0
  148. package/dist/types/providers/perplexity.d.ts +116 -0
  149. package/dist/types/providers/perplexity.d.ts.map +1 -0
  150. package/dist/types/providers/replicate.d.ts +91 -0
  151. package/dist/types/providers/replicate.d.ts.map +1 -0
  152. package/dist/types/providers/together-ai.d.ts +118 -0
  153. package/dist/types/providers/together-ai.d.ts.map +1 -0
  154. package/dist/types/providers/xai.d.ts +119 -0
  155. package/dist/types/providers/xai.d.ts.map +1 -0
  156. package/dist/types/shared.d.ts +116 -0
  157. package/dist/types/shared.d.ts.map +1 -0
  158. package/package.json +327 -0
  159. package/readme.md +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"together-ai.js","sourceRoot":"","sources":["../../../src/providers/together-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * xAI Backend Adapter
3
+ *
4
+ * Adapts Universal IR to xAI (Grok) Chat Completions API.
5
+ * xAI is OpenAI-compatible with Grok models featuring real-time search.
6
+ *
7
+ * @module
8
+ */
9
+ import { NetworkError, ProviderError, StreamError, ErrorCode, createErrorFromHttpResponse, } from 'ai.matey.errors';
10
+ import { normalizeSystemMessages } from 'ai.matey.utils';
11
+ import { getEffectiveStreamMode, mergeStreamingConfig } from 'ai.matey.utils';
12
+ // ============================================================================
13
+ // xAI Backend Adapter
14
+ // ============================================================================
15
+ /**
16
+ * Backend adapter for xAI (Grok) Chat Completions API.
17
+ *
18
+ * Features:
19
+ * - Grok models with real-time search capabilities
20
+ * - OpenAI-compatible API
21
+ * - 2M context window
22
+ * - Vision model support (Grok-vision)
23
+ * - Function calling support
24
+ * - Premium pricing ($5-$15 per 1M tokens)
25
+ */
26
+ export class XAIBackendAdapter {
27
+ metadata;
28
+ config;
29
+ baseURL;
30
+ constructor(config) {
31
+ this.config = config;
32
+ this.baseURL = config.baseURL || 'https://api.x.ai/v1';
33
+ this.metadata = {
34
+ name: 'xai-backend',
35
+ version: '1.0.0',
36
+ provider: 'xAI',
37
+ capabilities: {
38
+ streaming: true,
39
+ multiModal: true, // Grok-vision available
40
+ tools: true, // Function calling
41
+ maxContextTokens: 2_000_000, // 2M context window
42
+ systemMessageStrategy: 'in-messages',
43
+ supportsMultipleSystemMessages: true,
44
+ supportsTemperature: true,
45
+ supportsTopP: true,
46
+ supportsTopK: false,
47
+ supportsSeed: false,
48
+ supportsFrequencyPenalty: true,
49
+ supportsPresencePenalty: true,
50
+ maxStopSequences: 4,
51
+ },
52
+ config: {
53
+ baseURL: this.baseURL,
54
+ },
55
+ };
56
+ }
57
+ /**
58
+ * Convert IR to xAI format.
59
+ */
60
+ fromIR(request) {
61
+ const { messages } = normalizeSystemMessages(request.messages, this.metadata.capabilities.systemMessageStrategy, this.metadata.capabilities.supportsMultipleSystemMessages);
62
+ const xaiMessages = messages.map((msg) => ({
63
+ role: msg.role,
64
+ content: typeof msg.content === 'string'
65
+ ? msg.content
66
+ : msg.content.map((block) => {
67
+ if (block.type === 'text') {
68
+ return { type: 'text', text: block.text };
69
+ }
70
+ else if (block.type === 'image') {
71
+ return {
72
+ type: 'image_url',
73
+ image_url: {
74
+ url: block.source.type === 'url'
75
+ ? block.source.url
76
+ : `data:${block.source.mediaType};base64,${block.source.data}`,
77
+ },
78
+ };
79
+ }
80
+ return { type: 'text', text: JSON.stringify(block) };
81
+ }),
82
+ }));
83
+ return {
84
+ model: request.parameters?.model || this.config.defaultModel || 'grok-beta',
85
+ messages: xaiMessages,
86
+ temperature: request.parameters?.temperature,
87
+ max_tokens: request.parameters?.maxTokens,
88
+ top_p: request.parameters?.topP,
89
+ frequency_penalty: request.parameters?.frequencyPenalty,
90
+ presence_penalty: request.parameters?.presencePenalty,
91
+ stop: request.parameters?.stopSequences ? [...request.parameters.stopSequences] : undefined,
92
+ stream: request.stream || false,
93
+ };
94
+ }
95
+ /**
96
+ * Convert xAI response to IR.
97
+ */
98
+ toIR(response, originalRequest, latencyMs) {
99
+ const choice = response.choices[0];
100
+ if (!choice) {
101
+ throw new ProviderError({
102
+ code: ErrorCode.PROVIDER_ERROR,
103
+ message: 'No choices returned in response',
104
+ isRetryable: false,
105
+ provenance: { backend: this.metadata.name },
106
+ });
107
+ }
108
+ const message = {
109
+ role: choice.message.role === 'assistant' ? 'assistant' : 'user',
110
+ content: typeof choice.message.content === 'string'
111
+ ? choice.message.content
112
+ : choice.message.content.map((c) => (c.type === 'text' ? c.text : '')).join(''),
113
+ };
114
+ const finishReasonMap = {
115
+ stop: 'stop',
116
+ length: 'length',
117
+ tool_calls: 'tool_calls',
118
+ };
119
+ return {
120
+ message,
121
+ finishReason: finishReasonMap[choice.finish_reason || 'stop'] || 'stop',
122
+ usage: response.usage
123
+ ? {
124
+ promptTokens: response.usage.prompt_tokens,
125
+ completionTokens: response.usage.completion_tokens,
126
+ totalTokens: response.usage.total_tokens,
127
+ }
128
+ : undefined,
129
+ metadata: {
130
+ ...originalRequest.metadata,
131
+ providerResponseId: response.id,
132
+ provenance: {
133
+ ...originalRequest.metadata.provenance,
134
+ backend: this.metadata.name,
135
+ },
136
+ custom: {
137
+ ...originalRequest.metadata.custom,
138
+ latencyMs,
139
+ },
140
+ },
141
+ raw: response,
142
+ };
143
+ }
144
+ /**
145
+ * Execute non-streaming request.
146
+ */
147
+ async execute(request, signal) {
148
+ try {
149
+ const xaiRequest = this.fromIR(request);
150
+ xaiRequest.stream = false;
151
+ const startTime = Date.now();
152
+ const response = await fetch(`${this.baseURL}/chat/completions`, {
153
+ method: 'POST',
154
+ headers: this.getHeaders(),
155
+ body: JSON.stringify(xaiRequest),
156
+ signal,
157
+ });
158
+ if (!response.ok) {
159
+ throw createErrorFromHttpResponse(response.status, response.statusText, await response.text(), { backend: this.metadata.name });
160
+ }
161
+ const data = (await response.json());
162
+ return this.toIR(data, request, Date.now() - startTime);
163
+ }
164
+ catch (error) {
165
+ if (error instanceof NetworkError || error instanceof ProviderError) {
166
+ throw error;
167
+ }
168
+ throw new ProviderError({
169
+ code: ErrorCode.PROVIDER_ERROR,
170
+ message: `xAI request failed: ${error instanceof Error ? error.message : String(error)}`,
171
+ isRetryable: true,
172
+ provenance: { backend: this.metadata.name },
173
+ cause: error instanceof Error ? error : undefined,
174
+ });
175
+ }
176
+ }
177
+ /**
178
+ * Execute streaming request.
179
+ */
180
+ async *executeStream(request, signal) {
181
+ try {
182
+ const xaiRequest = this.fromIR(request);
183
+ xaiRequest.stream = true;
184
+ const streamingConfig = mergeStreamingConfig(this.config.streaming);
185
+ const effectiveMode = getEffectiveStreamMode(request.streamMode, undefined, streamingConfig);
186
+ const includeBoth = streamingConfig.includeBoth || effectiveMode === 'accumulated';
187
+ const response = await fetch(`${this.baseURL}/chat/completions`, {
188
+ method: 'POST',
189
+ headers: this.getHeaders(),
190
+ body: JSON.stringify(xaiRequest),
191
+ signal,
192
+ });
193
+ if (!response.ok) {
194
+ throw createErrorFromHttpResponse(response.status, response.statusText, await response.text(), { backend: this.metadata.name });
195
+ }
196
+ if (!response.body) {
197
+ throw new StreamError({
198
+ code: ErrorCode.STREAM_ERROR,
199
+ message: 'No response body',
200
+ provenance: { backend: this.metadata.name },
201
+ });
202
+ }
203
+ let sequence = 0;
204
+ let contentBuffer = '';
205
+ yield {
206
+ type: 'start',
207
+ sequence: sequence++,
208
+ metadata: {
209
+ ...request.metadata,
210
+ provenance: {
211
+ ...request.metadata.provenance,
212
+ backend: this.metadata.name,
213
+ },
214
+ },
215
+ };
216
+ const reader = response.body.getReader();
217
+ const decoder = new TextDecoder();
218
+ let buffer = '';
219
+ try {
220
+ while (true) {
221
+ const { done, value } = await reader.read();
222
+ if (done) {
223
+ break;
224
+ }
225
+ buffer += decoder.decode(value, { stream: true });
226
+ const lines = buffer.split('\n');
227
+ buffer = lines.pop() || '';
228
+ for (const line of lines) {
229
+ if (!line.trim() || !line.startsWith('data: ')) {
230
+ continue;
231
+ }
232
+ const data = line.slice(6).trim();
233
+ if (data === '[DONE]') {
234
+ continue;
235
+ }
236
+ try {
237
+ const chunk = JSON.parse(data);
238
+ const delta = chunk.choices[0]?.delta?.content;
239
+ if (delta) {
240
+ contentBuffer += delta;
241
+ const contentChunk = {
242
+ type: 'content',
243
+ sequence: sequence++,
244
+ delta: delta,
245
+ role: 'assistant',
246
+ };
247
+ if (includeBoth) {
248
+ contentChunk.accumulated = contentBuffer;
249
+ }
250
+ yield contentChunk;
251
+ }
252
+ if (chunk.choices[0]?.finish_reason) {
253
+ const finishReasonMap = {
254
+ stop: 'stop',
255
+ length: 'length',
256
+ };
257
+ yield {
258
+ type: 'done',
259
+ sequence: sequence++,
260
+ finishReason: finishReasonMap[chunk.choices[0].finish_reason] || 'stop',
261
+ message: { role: 'assistant', content: contentBuffer },
262
+ };
263
+ }
264
+ }
265
+ catch (parseError) {
266
+ console.warn('Failed to parse SSE chunk:', data, parseError);
267
+ }
268
+ }
269
+ }
270
+ }
271
+ finally {
272
+ reader.releaseLock();
273
+ }
274
+ }
275
+ catch (error) {
276
+ yield {
277
+ type: 'error',
278
+ sequence: 0,
279
+ error: {
280
+ code: error instanceof Error ? error.name : 'UNKNOWN_ERROR',
281
+ message: error instanceof Error ? error.message : String(error),
282
+ },
283
+ };
284
+ }
285
+ }
286
+ /**
287
+ * Get HTTP headers.
288
+ */
289
+ getHeaders() {
290
+ const headers = {
291
+ 'Content-Type': 'application/json',
292
+ Authorization: `Bearer ${this.config.apiKey}`,
293
+ };
294
+ return { ...headers, ...this.config.headers };
295
+ }
296
+ /**
297
+ * Health check.
298
+ */
299
+ async healthCheck() {
300
+ try {
301
+ const response = await fetch(`${this.baseURL}/models`, {
302
+ method: 'GET',
303
+ headers: this.getHeaders(),
304
+ signal: AbortSignal.timeout(5000),
305
+ });
306
+ return response.ok;
307
+ }
308
+ catch {
309
+ return false;
310
+ }
311
+ }
312
+ /**
313
+ * Estimate cost.
314
+ */
315
+ estimateCost(request) {
316
+ const pricing = {
317
+ 'grok-beta': { input: 5.0, output: 15.0 },
318
+ 'grok-vision-beta': { input: 5.0, output: 15.0 },
319
+ };
320
+ const model = request.parameters?.model || this.config.defaultModel || '';
321
+ const modelPricing = pricing[model];
322
+ if (!modelPricing) {
323
+ return Promise.resolve(null);
324
+ }
325
+ const inputTokens = request.messages.reduce((sum, msg) => {
326
+ const content = typeof msg.content === 'string' ? msg.content : '';
327
+ return sum + Math.ceil(content.length / 4);
328
+ }, 0);
329
+ const outputTokens = request.parameters?.maxTokens || 1024;
330
+ const inputCost = (inputTokens / 1_000_000) * modelPricing.input;
331
+ const outputCost = (outputTokens / 1_000_000) * modelPricing.output;
332
+ return Promise.resolve(inputCost + outputCost);
333
+ }
334
+ }
335
+ //# sourceMappingURL=xai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xai.js","sourceRoot":"","sources":["../../../src/providers/xai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ /**
2
+ * Backend Shared Utilities
3
+ *
4
+ * Common utilities shared across all backend adapters to reduce code duplication.
5
+ * These functions handle token estimation, model listing, and filtering.
6
+ *
7
+ * @module
8
+ */
9
+ // ============================================================================
10
+ // Token Estimation
11
+ // ============================================================================
12
+ /**
13
+ * Estimate token count for a chat request.
14
+ *
15
+ * Uses a rough heuristic of 4 characters per token, which provides
16
+ * a reasonable approximation across most LLMs.
17
+ *
18
+ * @param request - The IR chat request to estimate tokens for
19
+ * @returns Estimated token count
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const tokens = estimateTokens({
24
+ * messages: [{ role: 'user', content: 'Hello, how are you?' }],
25
+ * });
26
+ * // tokens ≈ 5
27
+ * ```
28
+ */
29
+ export function estimateTokens(request) {
30
+ let totalChars = 0;
31
+ for (const message of request.messages) {
32
+ if (typeof message.content === 'string') {
33
+ totalChars += message.content.length;
34
+ }
35
+ else {
36
+ for (const block of message.content) {
37
+ if (block.type === 'text') {
38
+ totalChars += block.text.length;
39
+ }
40
+ }
41
+ }
42
+ }
43
+ // Rough estimate: 4 characters per token
44
+ return Math.ceil(totalChars / 4);
45
+ }
46
+ // ============================================================================
47
+ // Model Listing Utilities
48
+ // ============================================================================
49
+ /**
50
+ * Build a ListModelsResult from static model configuration.
51
+ *
52
+ * Converts string model IDs or AIModel objects into a standardized result.
53
+ *
54
+ * @param models - Array of model IDs or AIModel objects
55
+ * @param ownedBy - Default owner for string-only model IDs
56
+ * @returns Standardized ListModelsResult
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // With string IDs
61
+ * const result = buildStaticResult(['gpt-4', 'gpt-3.5-turbo'], 'openai');
62
+ *
63
+ * // With AIModel objects
64
+ * const result = buildStaticResult([
65
+ * { id: 'claude-3-sonnet', name: 'Claude 3 Sonnet', ownedBy: 'anthropic' }
66
+ * ]);
67
+ * ```
68
+ */
69
+ export function buildStaticResult(models, ownedBy = 'provider') {
70
+ const normalizedModels = models.map((model) => {
71
+ if (typeof model === 'string') {
72
+ // Convert string ID to AIModel
73
+ return {
74
+ id: model,
75
+ name: model,
76
+ ownedBy,
77
+ };
78
+ }
79
+ return model;
80
+ });
81
+ return {
82
+ models: normalizedModels,
83
+ source: 'static',
84
+ fetchedAt: Date.now(),
85
+ isComplete: true,
86
+ };
87
+ }
88
+ /**
89
+ * Apply capability filter to a model list result.
90
+ *
91
+ * Filters the models based on their declared capabilities.
92
+ * Models without capability information are included by default.
93
+ *
94
+ * @param result - The model list result to filter
95
+ * @param filter - Optional capability filter criteria
96
+ * @returns Filtered ListModelsResult
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const filtered = applyModelFilter(result, {
101
+ * supportsStreaming: true,
102
+ * supportsVision: true,
103
+ * });
104
+ * ```
105
+ */
106
+ export function applyModelFilter(result, filter) {
107
+ if (!filter) {
108
+ return result;
109
+ }
110
+ const filteredModels = result.models.filter((model) => {
111
+ const capabilities = model.capabilities;
112
+ // If no capabilities info, can't filter - include the model
113
+ if (!capabilities) {
114
+ return true;
115
+ }
116
+ // Check each filter criterion
117
+ if (filter.supportsStreaming !== undefined &&
118
+ capabilities.supportsStreaming !== filter.supportsStreaming) {
119
+ return false;
120
+ }
121
+ if (filter.supportsVision !== undefined &&
122
+ capabilities.supportsVision !== filter.supportsVision) {
123
+ return false;
124
+ }
125
+ if (filter.supportsTools !== undefined && capabilities.supportsTools !== filter.supportsTools) {
126
+ return false;
127
+ }
128
+ if (filter.supportsJSON !== undefined && capabilities.supportsJSON !== filter.supportsJSON) {
129
+ return false;
130
+ }
131
+ return true;
132
+ });
133
+ return {
134
+ ...result,
135
+ models: filteredModels,
136
+ isComplete: result.isComplete && filteredModels.length === result.models.length,
137
+ };
138
+ }
139
+ /**
140
+ * Estimate request cost based on token counts and provider rates.
141
+ *
142
+ * @param inputTokens - Estimated input token count
143
+ * @param outputTokens - Estimated output token count (defaults to maxTokens or 1000)
144
+ * @param rates - Cost rates per million tokens
145
+ * @returns Estimated cost in USD
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const cost = estimateCost(1000, 500, {
150
+ * inputPer1M: 3.00, // $3 per 1M input tokens
151
+ * outputPer1M: 15.00, // $15 per 1M output tokens
152
+ * });
153
+ * // cost ≈ $0.0105
154
+ * ```
155
+ */
156
+ export function estimateCost(inputTokens, outputTokens, rates) {
157
+ const inputCost = (inputTokens / 1_000_000) * rates.inputPer1M;
158
+ const outputCost = (outputTokens / 1_000_000) * rates.outputPer1M;
159
+ return inputCost + outputCost;
160
+ }
161
+ // ============================================================================
162
+ // Default Model Lists
163
+ // ============================================================================
164
+ /**
165
+ * Default OpenAI models with capabilities.
166
+ */
167
+ export const DEFAULT_OPENAI_MODELS = [
168
+ {
169
+ id: 'gpt-4o',
170
+ name: 'GPT-4o',
171
+ description: 'Most capable GPT-4 model with vision',
172
+ ownedBy: 'openai',
173
+ capabilities: {
174
+ maxTokens: 16384,
175
+ contextWindow: 128000,
176
+ supportsStreaming: true,
177
+ supportsVision: true,
178
+ supportsTools: true,
179
+ supportsJSON: true,
180
+ },
181
+ },
182
+ {
183
+ id: 'gpt-4o-mini',
184
+ name: 'GPT-4o Mini',
185
+ description: 'Fast and affordable GPT-4 variant',
186
+ ownedBy: 'openai',
187
+ capabilities: {
188
+ maxTokens: 16384,
189
+ contextWindow: 128000,
190
+ supportsStreaming: true,
191
+ supportsVision: true,
192
+ supportsTools: true,
193
+ supportsJSON: true,
194
+ },
195
+ },
196
+ {
197
+ id: 'gpt-4-turbo',
198
+ name: 'GPT-4 Turbo',
199
+ description: 'GPT-4 with larger context and vision',
200
+ ownedBy: 'openai',
201
+ capabilities: {
202
+ maxTokens: 4096,
203
+ contextWindow: 128000,
204
+ supportsStreaming: true,
205
+ supportsVision: true,
206
+ supportsTools: true,
207
+ supportsJSON: true,
208
+ },
209
+ },
210
+ {
211
+ id: 'gpt-3.5-turbo',
212
+ name: 'GPT-3.5 Turbo',
213
+ description: 'Fast and efficient for simple tasks',
214
+ ownedBy: 'openai',
215
+ capabilities: {
216
+ maxTokens: 4096,
217
+ contextWindow: 16385,
218
+ supportsStreaming: true,
219
+ supportsVision: false,
220
+ supportsTools: true,
221
+ supportsJSON: true,
222
+ },
223
+ },
224
+ ];
225
+ /**
226
+ * Default Anthropic Claude models with capabilities.
227
+ */
228
+ export const DEFAULT_ANTHROPIC_MODELS = [
229
+ {
230
+ id: 'claude-3-5-sonnet-20241022',
231
+ name: 'Claude 3.5 Sonnet (Oct 2024)',
232
+ description: 'Most intelligent model with excellent reasoning',
233
+ ownedBy: 'anthropic',
234
+ capabilities: {
235
+ maxTokens: 8192,
236
+ contextWindow: 200000,
237
+ supportsStreaming: true,
238
+ supportsVision: true,
239
+ supportsTools: true,
240
+ supportsJSON: false,
241
+ },
242
+ },
243
+ {
244
+ id: 'claude-3-5-haiku-20241022',
245
+ name: 'Claude 3.5 Haiku (Oct 2024)',
246
+ description: 'Fastest model for high-throughput tasks',
247
+ ownedBy: 'anthropic',
248
+ capabilities: {
249
+ maxTokens: 8192,
250
+ contextWindow: 200000,
251
+ supportsStreaming: true,
252
+ supportsVision: false,
253
+ supportsTools: true,
254
+ supportsJSON: false,
255
+ },
256
+ },
257
+ {
258
+ id: 'claude-3-opus-20240229',
259
+ name: 'Claude 3 Opus',
260
+ description: 'Previous top-tier model',
261
+ ownedBy: 'anthropic',
262
+ capabilities: {
263
+ maxTokens: 4096,
264
+ contextWindow: 200000,
265
+ supportsStreaming: true,
266
+ supportsVision: true,
267
+ supportsTools: true,
268
+ supportsJSON: false,
269
+ },
270
+ },
271
+ ];
272
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/shared.ts"],"names":[],"mappings":"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"}