@animalabs/membrane 0.5.46 → 0.5.50

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 (139) hide show
  1. package/dist/membrane.d.ts.map +1 -1
  2. package/dist/membrane.js +104 -11
  3. package/dist/membrane.js.map +1 -1
  4. package/dist/providers/anthropic.d.ts.map +1 -1
  5. package/dist/providers/anthropic.js +11 -1
  6. package/dist/providers/anthropic.js.map +1 -1
  7. package/dist/providers/bedrock.d.ts.map +1 -1
  8. package/dist/providers/bedrock.js +23 -4
  9. package/dist/providers/bedrock.js.map +1 -1
  10. package/dist/types/yielding-stream.d.ts +10 -1
  11. package/dist/types/yielding-stream.d.ts.map +1 -1
  12. package/dist/types/yielding-stream.js.map +1 -1
  13. package/package.json +5 -1
  14. package/src/membrane.ts +127 -13
  15. package/src/providers/anthropic.ts +12 -0
  16. package/src/providers/bedrock.ts +21 -4
  17. package/src/types/yielding-stream.ts +10 -1
  18. package/dist/context/index.d.ts +0 -12
  19. package/dist/context/index.js +0 -11
  20. package/dist/context/index.js.map +0 -1
  21. package/dist/context/process.d.ts +0 -43
  22. package/dist/context/process.js +0 -381
  23. package/dist/context/process.js.map +0 -1
  24. package/dist/context/types.d.ts +0 -164
  25. package/dist/context/types.js +0 -61
  26. package/dist/context/types.js.map +0 -1
  27. package/dist/formatters/anthropic-xml.d.ts +0 -63
  28. package/dist/formatters/anthropic-xml.js +0 -417
  29. package/dist/formatters/anthropic-xml.js.map +0 -1
  30. package/dist/formatters/completions.d.ts +0 -68
  31. package/dist/formatters/completions.js +0 -261
  32. package/dist/formatters/completions.js.map +0 -1
  33. package/dist/formatters/index.d.ts +0 -8
  34. package/dist/formatters/index.js +0 -7
  35. package/dist/formatters/index.js.map +0 -1
  36. package/dist/formatters/native.d.ts +0 -35
  37. package/dist/formatters/native.js +0 -336
  38. package/dist/formatters/native.js.map +0 -1
  39. package/dist/formatters/types.d.ts +0 -167
  40. package/dist/formatters/types.js +0 -7
  41. package/dist/formatters/types.js.map +0 -1
  42. package/dist/index.d.ts +0 -13
  43. package/dist/index.js +0 -20
  44. package/dist/index.js.map +0 -1
  45. package/dist/membrane.d.ts +0 -146
  46. package/dist/providers/anthropic.d.ts +0 -36
  47. package/dist/providers/bedrock.d.ts +0 -43
  48. package/dist/providers/gemini.d.ts +0 -68
  49. package/dist/providers/gemini.js +0 -538
  50. package/dist/providers/gemini.js.map +0 -1
  51. package/dist/providers/index.d.ts +0 -13
  52. package/dist/providers/index.js +0 -13
  53. package/dist/providers/index.js.map +0 -1
  54. package/dist/providers/mock.d.ts +0 -90
  55. package/dist/providers/mock.d.ts.map +0 -1
  56. package/dist/providers/mock.js +0 -210
  57. package/dist/providers/mock.js.map +0 -1
  58. package/dist/providers/openai-compatible.d.ts +0 -82
  59. package/dist/providers/openai-compatible.js +0 -480
  60. package/dist/providers/openai-compatible.js.map +0 -1
  61. package/dist/providers/openai-completions.d.ts +0 -89
  62. package/dist/providers/openai-completions.js +0 -347
  63. package/dist/providers/openai-completions.js.map +0 -1
  64. package/dist/providers/openai-responses.d.ts +0 -77
  65. package/dist/providers/openai-responses.js +0 -333
  66. package/dist/providers/openai-responses.js.map +0 -1
  67. package/dist/providers/openai.d.ts +0 -77
  68. package/dist/providers/openai.js +0 -533
  69. package/dist/providers/openai.js.map +0 -1
  70. package/dist/providers/openrouter.d.ts +0 -82
  71. package/dist/providers/openrouter.js +0 -556
  72. package/dist/providers/openrouter.js.map +0 -1
  73. package/dist/providers/utils.d.ts +0 -44
  74. package/dist/providers/utils.d.ts.map +0 -1
  75. package/dist/providers/utils.js +0 -100
  76. package/dist/providers/utils.js.map +0 -1
  77. package/dist/registry/default-pricing.d.ts +0 -3
  78. package/dist/registry/default-pricing.d.ts.map +0 -1
  79. package/dist/registry/default-pricing.js +0 -75
  80. package/dist/registry/default-pricing.js.map +0 -1
  81. package/dist/transforms/chat.d.ts +0 -52
  82. package/dist/transforms/chat.js +0 -136
  83. package/dist/transforms/chat.js.map +0 -1
  84. package/dist/transforms/index.d.ts +0 -5
  85. package/dist/transforms/index.js +0 -7
  86. package/dist/transforms/index.js.map +0 -1
  87. package/dist/types/config.d.ts +0 -110
  88. package/dist/types/config.js +0 -21
  89. package/dist/types/config.js.map +0 -1
  90. package/dist/types/content.d.ts +0 -87
  91. package/dist/types/content.d.ts.map +0 -1
  92. package/dist/types/content.js +0 -40
  93. package/dist/types/content.js.map +0 -1
  94. package/dist/types/errors.d.ts +0 -50
  95. package/dist/types/errors.d.ts.map +0 -1
  96. package/dist/types/errors.js +0 -253
  97. package/dist/types/errors.js.map +0 -1
  98. package/dist/types/index.d.ts +0 -20
  99. package/dist/types/index.js +0 -10
  100. package/dist/types/index.js.map +0 -1
  101. package/dist/types/message.d.ts +0 -52
  102. package/dist/types/message.d.ts.map +0 -1
  103. package/dist/types/message.js +0 -38
  104. package/dist/types/message.js.map +0 -1
  105. package/dist/types/provider.d.ts +0 -169
  106. package/dist/types/provider.d.ts.map +0 -1
  107. package/dist/types/provider.js +0 -5
  108. package/dist/types/provider.js.map +0 -1
  109. package/dist/types/request.d.ts +0 -116
  110. package/dist/types/request.d.ts.map +0 -1
  111. package/dist/types/request.js +0 -5
  112. package/dist/types/request.js.map +0 -1
  113. package/dist/types/response.d.ts +0 -131
  114. package/dist/types/response.d.ts.map +0 -1
  115. package/dist/types/response.js +0 -7
  116. package/dist/types/response.js.map +0 -1
  117. package/dist/types/streaming.d.ts +0 -194
  118. package/dist/types/streaming.js +0 -5
  119. package/dist/types/streaming.js.map +0 -1
  120. package/dist/types/tools.d.ts +0 -71
  121. package/dist/types/tools.d.ts.map +0 -1
  122. package/dist/types/tools.js +0 -5
  123. package/dist/types/tools.js.map +0 -1
  124. package/dist/utils/cost.d.ts +0 -10
  125. package/dist/utils/cost.d.ts.map +0 -1
  126. package/dist/utils/cost.js +0 -19
  127. package/dist/utils/cost.js.map +0 -1
  128. package/dist/utils/index.d.ts +0 -7
  129. package/dist/utils/index.js +0 -6
  130. package/dist/utils/index.js.map +0 -1
  131. package/dist/utils/stream-parser.d.ts +0 -84
  132. package/dist/utils/stream-parser.js +0 -418
  133. package/dist/utils/stream-parser.js.map +0 -1
  134. package/dist/utils/tool-parser.d.ts +0 -134
  135. package/dist/utils/tool-parser.js +0 -600
  136. package/dist/utils/tool-parser.js.map +0 -1
  137. package/dist/yielding-stream.d.ts +0 -60
  138. package/dist/yielding-stream.js +0 -206
  139. package/dist/yielding-stream.js.map +0 -1
@@ -1,538 +0,0 @@
1
- /**
2
- * Google Gemini provider adapter
3
- *
4
- * Direct adapter for Google's Generative AI REST API.
5
- * Supports Gemini 2.x, 2.5, 3.x models with:
6
- * - Text and image input
7
- * - Tool/function calling
8
- * - Streaming via SSE
9
- *
10
- * Auth: API key passed as query parameter (?key=...)
11
- * Endpoint: generativelanguage.googleapis.com/v1beta
12
- */
13
- import { MembraneError, rateLimitError, contextLengthError, authError, serverError, abortError, networkError, } from '../types/index.js';
14
- import { createCombinedSignal } from './utils.js';
15
- // ============================================================================
16
- // Gemini Adapter
17
- // ============================================================================
18
- export class GeminiAdapter {
19
- name = 'gemini';
20
- apiKey;
21
- baseURL;
22
- defaultMaxTokens;
23
- constructor(config = {}) {
24
- this.apiKey = config.apiKey ?? process.env.GOOGLE_API_KEY ?? '';
25
- this.baseURL = (config.baseURL ?? 'https://generativelanguage.googleapis.com/v1beta').replace(/\/$/, '');
26
- this.defaultMaxTokens = config.defaultMaxTokens ?? 4096;
27
- if (!this.apiKey) {
28
- throw new Error('Google AI API key not provided');
29
- }
30
- }
31
- supportsModel(modelId) {
32
- return modelId.startsWith('gemini-');
33
- }
34
- async complete(request, options) {
35
- const geminiRequest = this.buildRequest(request);
36
- options?.onRequest?.(geminiRequest);
37
- const { signal: combinedSignal, cleanup } = createCombinedSignal(options?.signal, options?.timeoutMs);
38
- try {
39
- const url = `${this.baseURL}/models/${request.model}:generateContent?key=${this.apiKey}`;
40
- const response = await fetch(url, {
41
- method: 'POST',
42
- headers: { 'Content-Type': 'application/json' },
43
- body: JSON.stringify(geminiRequest),
44
- signal: combinedSignal,
45
- });
46
- if (!response.ok) {
47
- const errorText = await response.text();
48
- throw new Error(`Gemini API error: ${response.status} ${errorText}`);
49
- }
50
- const data = await response.json();
51
- if (data.error) {
52
- throw new Error(`Gemini API error: ${data.error.code} ${data.error.message}`);
53
- }
54
- return this.parseResponse(data, request.model, geminiRequest);
55
- }
56
- catch (error) {
57
- throw this.handleError(error, geminiRequest);
58
- }
59
- finally {
60
- cleanup?.();
61
- }
62
- }
63
- async stream(request, callbacks, options) {
64
- const geminiRequest = this.buildRequest(request);
65
- options?.onRequest?.(geminiRequest);
66
- const { signal: combinedSignal, cleanup } = createCombinedSignal(options?.signal, options?.timeoutMs);
67
- try {
68
- const url = `${this.baseURL}/models/${request.model}:streamGenerateContent?alt=sse&key=${this.apiKey}`;
69
- const response = await fetch(url, {
70
- method: 'POST',
71
- headers: { 'Content-Type': 'application/json' },
72
- body: JSON.stringify(geminiRequest),
73
- signal: combinedSignal,
74
- });
75
- if (!response.ok) {
76
- const errorText = await response.text();
77
- throw new Error(`Gemini API error: ${response.status} ${errorText}`);
78
- }
79
- const reader = response.body?.getReader();
80
- if (!reader) {
81
- throw new Error('No response body');
82
- }
83
- const decoder = new TextDecoder();
84
- let accumulated = '';
85
- let finishReason = 'STOP';
86
- let toolCalls = [];
87
- let images = [];
88
- let lastUsage;
89
- let buffer = '';
90
- while (true) {
91
- const { done, value } = await reader.read();
92
- if (done)
93
- break;
94
- buffer += decoder.decode(value, { stream: true });
95
- const lines = buffer.split('\n');
96
- // Keep the last potentially incomplete line in buffer
97
- buffer = lines.pop() ?? '';
98
- for (const line of lines) {
99
- if (!line.startsWith('data: '))
100
- continue;
101
- const data = line.slice(6).trim();
102
- if (!data || data === '[DONE]')
103
- continue;
104
- try {
105
- const parsed = JSON.parse(data);
106
- const candidate = parsed.candidates?.[0];
107
- if (candidate?.content?.parts) {
108
- for (const part of candidate.content.parts) {
109
- if (part.text) {
110
- accumulated += part.text;
111
- callbacks.onChunk(part.text);
112
- }
113
- if (part.inlineData) {
114
- images.push({
115
- data: part.inlineData.data,
116
- mimeType: part.inlineData.mimeType,
117
- });
118
- }
119
- if (part.functionCall) {
120
- toolCalls.push({
121
- name: part.functionCall.name,
122
- args: part.functionCall.args,
123
- });
124
- }
125
- }
126
- }
127
- if (candidate?.finishReason) {
128
- finishReason = candidate.finishReason;
129
- }
130
- if (parsed.usageMetadata) {
131
- lastUsage = parsed.usageMetadata;
132
- }
133
- }
134
- catch {
135
- // Ignore parse errors in stream chunks
136
- }
137
- }
138
- }
139
- // Process any remaining data in the buffer (final chunk may not end with newline)
140
- if (buffer.trim()) {
141
- const remaining = buffer.trim();
142
- const dataLine = remaining.startsWith('data: ') ? remaining.slice(6).trim() : remaining;
143
- if (dataLine && dataLine !== '[DONE]') {
144
- try {
145
- const parsed = JSON.parse(dataLine);
146
- const candidate = parsed.candidates?.[0];
147
- if (candidate?.content?.parts) {
148
- for (const part of candidate.content.parts) {
149
- if (part.text) {
150
- accumulated += part.text;
151
- callbacks.onChunk(part.text);
152
- }
153
- if (part.inlineData) {
154
- images.push({
155
- data: part.inlineData.data,
156
- mimeType: part.inlineData.mimeType,
157
- });
158
- }
159
- if (part.functionCall) {
160
- toolCalls.push({
161
- name: part.functionCall.name,
162
- args: part.functionCall.args,
163
- });
164
- }
165
- }
166
- }
167
- if (candidate?.finishReason) {
168
- finishReason = candidate.finishReason;
169
- }
170
- if (parsed.usageMetadata) {
171
- lastUsage = parsed.usageMetadata;
172
- }
173
- }
174
- catch {
175
- // Final buffer wasn't valid JSON — nothing to do
176
- }
177
- }
178
- }
179
- return {
180
- content: this.buildContentBlocks(accumulated, toolCalls, images),
181
- stopReason: this.mapFinishReason(finishReason),
182
- stopSequence: undefined,
183
- usage: {
184
- inputTokens: lastUsage?.promptTokenCount ?? 0,
185
- outputTokens: lastUsage?.candidatesTokenCount ?? 0,
186
- cacheReadTokens: lastUsage?.cachedContentTokenCount
187
- ? lastUsage.cachedContentTokenCount
188
- : undefined,
189
- },
190
- model: request.model,
191
- rawRequest: geminiRequest,
192
- raw: { finishReason, usage: lastUsage },
193
- };
194
- }
195
- catch (error) {
196
- throw this.handleError(error, geminiRequest);
197
- }
198
- finally {
199
- cleanup?.();
200
- }
201
- }
202
- // --------------------------------------------------------------------------
203
- // Request Building
204
- // --------------------------------------------------------------------------
205
- buildRequest(request) {
206
- const contents = this.convertMessages(request.messages, request.model);
207
- const maxTokens = request.maxTokens || this.defaultMaxTokens;
208
- const geminiRequest = { contents };
209
- // System instruction
210
- if (request.system) {
211
- const systemText = typeof request.system === 'string'
212
- ? request.system
213
- : request.system
214
- .filter((b) => b.type === 'text')
215
- .map((b) => b.text)
216
- .join('\n');
217
- if (systemText) {
218
- geminiRequest.systemInstruction = {
219
- parts: [{ text: systemText }],
220
- };
221
- }
222
- }
223
- // Generation config
224
- geminiRequest.generationConfig = {
225
- maxOutputTokens: maxTokens,
226
- };
227
- if (request.temperature !== undefined) {
228
- geminiRequest.generationConfig.temperature = request.temperature;
229
- }
230
- if (request.topP !== undefined) {
231
- geminiRequest.generationConfig.topP = request.topP;
232
- }
233
- if (request.topK !== undefined) {
234
- geminiRequest.generationConfig.topK = request.topK;
235
- }
236
- if (request.stopSequences && request.stopSequences.length > 0) {
237
- // Gemini API limits stop sequences to 5
238
- geminiRequest.generationConfig.stopSequences = request.stopSequences.slice(0, 5);
239
- }
240
- // Auto-detect image generation models by name
241
- if (request.model?.includes('image')) {
242
- geminiRequest.generationConfig.responseModalities = ['TEXT', 'IMAGE'];
243
- }
244
- // Tools
245
- if (request.tools && request.tools.length > 0) {
246
- geminiRequest.tools = [{
247
- functionDeclarations: this.convertTools(request.tools),
248
- }];
249
- }
250
- // Extra params — deep-merge generationConfig to preserve auto-detected settings
251
- if (request.extra) {
252
- const { normalizedMessages, prompt, generationConfig: extraGenConfig, ...rest } = request.extra;
253
- Object.assign(geminiRequest, rest);
254
- if (extraGenConfig && typeof extraGenConfig === 'object') {
255
- Object.assign(geminiRequest.generationConfig, extraGenConfig);
256
- }
257
- }
258
- return geminiRequest;
259
- }
260
- convertMessages(messages, model) {
261
- const contents = [];
262
- // Gemini 3.x requires thought_signature on image parts from model outputs.
263
- // Images that round-trip through Discord lose their thought_signature metadata,
264
- // causing 400 INVALID_ARGUMENT when sent back as inlineData. For gemini-3.x
265
- // model-role images, we fall back to embedding the source URL as text — Gemini
266
- // auto-fetches URLs from text content, enabling iterative editing without
267
- // thought_signature. User images pass through as normal inlineData.
268
- const useUrlForModelImages = model?.startsWith('gemini-3');
269
- for (const msg of messages) {
270
- const role = msg.role === 'assistant' ? 'model' : 'user';
271
- // Simple string content
272
- if (typeof msg.content === 'string') {
273
- contents.push({ role, parts: [{ text: msg.content }] });
274
- continue;
275
- }
276
- // Array content blocks (Anthropic-style)
277
- if (Array.isArray(msg.content)) {
278
- const parts = [];
279
- const toolResultParts = [];
280
- for (const block of msg.content) {
281
- if (block.type === 'text') {
282
- if (block.text)
283
- parts.push({ text: block.text });
284
- }
285
- else if (block.type === 'image') {
286
- // Gemini 3.x model-role images: use URL-as-text so Gemini auto-fetches
287
- // the image without needing thought_signature metadata
288
- if (useUrlForModelImages && role === 'model' && block.sourceUrl) {
289
- parts.push({ text: block.sourceUrl });
290
- continue;
291
- }
292
- // Anthropic image format → Gemini inlineData
293
- const source = block.source;
294
- if (source?.type === 'base64' && source.data) {
295
- parts.push({
296
- inlineData: {
297
- mimeType: source.media_type ?? 'image/jpeg',
298
- data: source.data,
299
- },
300
- });
301
- }
302
- }
303
- else if (block.type === 'tool_use') {
304
- parts.push({
305
- functionCall: {
306
- name: block.name,
307
- args: block.input ?? {},
308
- },
309
- });
310
- }
311
- else if (block.type === 'tool_result') {
312
- const resultContent = typeof block.content === 'string'
313
- ? block.content
314
- : JSON.stringify(block.content);
315
- toolResultParts.push({
316
- functionResponse: {
317
- name: block.name ?? block.tool_use_id ?? 'unknown',
318
- response: { result: resultContent },
319
- },
320
- });
321
- }
322
- }
323
- // Tool results go in a user message
324
- if (toolResultParts.length > 0) {
325
- contents.push({ role: 'user', parts: toolResultParts });
326
- }
327
- if (parts.length > 0) {
328
- contents.push({ role, parts });
329
- }
330
- continue;
331
- }
332
- // Null/empty content — skip
333
- if (msg.content === null || msg.content === undefined)
334
- continue;
335
- // Fallback
336
- contents.push({ role, parts: [{ text: String(msg.content) }] });
337
- }
338
- // Gemini requires alternating user/model roles.
339
- // Merge consecutive same-role messages.
340
- return this.mergeConsecutiveRoles(contents);
341
- }
342
- /**
343
- * Gemini requires strictly alternating user/model messages.
344
- * Merge consecutive messages with the same role into one.
345
- */
346
- mergeConsecutiveRoles(contents) {
347
- if (contents.length === 0)
348
- return contents;
349
- const merged = [contents[0]];
350
- for (let i = 1; i < contents.length; i++) {
351
- const current = contents[i];
352
- const last = merged[merged.length - 1];
353
- if (current.role === last.role) {
354
- // Merge parts into the previous message
355
- last.parts.push(...current.parts);
356
- }
357
- else {
358
- merged.push(current);
359
- }
360
- }
361
- // Gemini also requires the first message to be "user"
362
- // TODO: Accept prefillUserMessage from request when Gemini bots need C2 migration
363
- if (merged.length > 0 && merged[0].role !== 'user') {
364
- merged.unshift({ role: 'user', parts: [{ text: '[Start]' }] });
365
- }
366
- return merged;
367
- }
368
- convertTools(tools) {
369
- return tools.map(tool => {
370
- const schema = tool.inputSchema || tool.input_schema || { type: 'object', properties: {} };
371
- return {
372
- name: tool.name,
373
- description: tool.description ?? '',
374
- parameters: schema,
375
- };
376
- });
377
- }
378
- // --------------------------------------------------------------------------
379
- // Response Parsing
380
- // --------------------------------------------------------------------------
381
- parseResponse(response, requestedModel, rawRequest) {
382
- const candidate = response.candidates?.[0];
383
- const parts = candidate?.content?.parts ?? [];
384
- let text = '';
385
- const toolCalls = [];
386
- const images = [];
387
- for (const part of parts) {
388
- if (part.text)
389
- text += part.text;
390
- if (part.inlineData) {
391
- images.push({
392
- data: part.inlineData.data,
393
- mimeType: part.inlineData.mimeType,
394
- });
395
- }
396
- if (part.functionCall) {
397
- toolCalls.push({
398
- name: part.functionCall.name,
399
- args: part.functionCall.args,
400
- });
401
- }
402
- }
403
- return {
404
- content: this.buildContentBlocks(text, toolCalls, images),
405
- stopReason: this.mapFinishReason(candidate?.finishReason),
406
- stopSequence: undefined,
407
- usage: {
408
- inputTokens: response.usageMetadata?.promptTokenCount ?? 0,
409
- outputTokens: response.usageMetadata?.candidatesTokenCount ?? 0,
410
- cacheReadTokens: response.usageMetadata?.cachedContentTokenCount
411
- ? response.usageMetadata.cachedContentTokenCount
412
- : undefined,
413
- },
414
- model: response.modelVersion ?? requestedModel,
415
- rawRequest,
416
- raw: response,
417
- };
418
- }
419
- buildContentBlocks(text, toolCalls, images = []) {
420
- const content = [];
421
- if (text) {
422
- content.push({ type: 'text', text });
423
- }
424
- for (const img of images) {
425
- content.push({
426
- type: 'generated_image',
427
- data: img.data,
428
- mimeType: img.mimeType,
429
- });
430
- }
431
- for (const tc of toolCalls) {
432
- content.push({
433
- type: 'tool_use',
434
- id: `gemini-tc-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
435
- name: tc.name,
436
- input: tc.args,
437
- });
438
- }
439
- return content;
440
- }
441
- mapFinishReason(reason) {
442
- switch (reason) {
443
- case 'STOP':
444
- return 'end_turn';
445
- case 'MAX_TOKENS':
446
- return 'max_tokens';
447
- case 'SAFETY':
448
- return 'refusal';
449
- case 'RECITATION':
450
- return 'refusal';
451
- case 'TOOL_CALLS':
452
- case 'FUNCTION_CALL':
453
- return 'tool_use';
454
- default:
455
- return 'end_turn';
456
- }
457
- }
458
- // --------------------------------------------------------------------------
459
- // Error Handling
460
- // --------------------------------------------------------------------------
461
- handleError(error, rawRequest) {
462
- if (error instanceof MembraneError)
463
- return error;
464
- if (error instanceof Error) {
465
- const message = error.message;
466
- if (message.includes('401') || message.includes('403') || message.includes('API_KEY_INVALID') || message.includes('PERMISSION_DENIED')) {
467
- return authError(message, error, rawRequest);
468
- }
469
- if (message.includes('429') || message.includes('RESOURCE_EXHAUSTED')) {
470
- const retryMatch = message.match(/retry.after[:\s]*(\d+)/i);
471
- const retryAfter = retryMatch?.[1] ? parseInt(retryMatch[1], 10) * 1000 : undefined;
472
- return rateLimitError(message, retryAfter, error, rawRequest);
473
- }
474
- if (message.includes('context') || message.includes('too long') || message.includes('token limit')) {
475
- return contextLengthError(message, error, rawRequest);
476
- }
477
- if (message.includes('500') || message.includes('502') || message.includes('503') || message.includes('INTERNAL')) {
478
- return serverError(message, undefined, error, rawRequest);
479
- }
480
- if (error.name === 'AbortError') {
481
- return abortError(undefined, rawRequest);
482
- }
483
- if (message.includes('network') || message.includes('fetch') || message.includes('ECONNREFUSED')) {
484
- return networkError(message, error, rawRequest);
485
- }
486
- }
487
- return new MembraneError({
488
- type: 'unknown',
489
- message: error instanceof Error ? error.message : String(error),
490
- retryable: false,
491
- rawError: error,
492
- rawRequest,
493
- });
494
- }
495
- }
496
- // ============================================================================
497
- // Content Conversion Utilities
498
- // ============================================================================
499
- /**
500
- * Convert normalized content blocks to Gemini parts
501
- */
502
- export function toGeminiParts(blocks) {
503
- return blocks.map(block => {
504
- if (block.type === 'text') {
505
- return { text: block.text };
506
- }
507
- if (block.type === 'tool_use') {
508
- return {
509
- functionCall: {
510
- name: block.name,
511
- args: block.input ?? {},
512
- },
513
- };
514
- }
515
- return { text: String(block) };
516
- });
517
- }
518
- /**
519
- * Convert Gemini parts to normalized content blocks
520
- */
521
- export function fromGeminiParts(parts) {
522
- const result = [];
523
- for (const part of parts) {
524
- if (part.text) {
525
- result.push({ type: 'text', text: part.text });
526
- }
527
- if (part.functionCall) {
528
- result.push({
529
- type: 'tool_use',
530
- id: `gemini-tc-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
531
- name: part.functionCall.name,
532
- input: part.functionCall.args,
533
- });
534
- }
535
- }
536
- return result;
537
- }
538
- //# sourceMappingURL=gemini.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Provider exports
3
- */
4
- export { AnthropicAdapter, toAnthropicContent, fromAnthropicContent, type AnthropicAdapterConfig, } from './anthropic.js';
5
- export { OpenRouterAdapter, toOpenRouterMessages, fromOpenRouterMessage, type OpenRouterAdapterConfig, } from './openrouter.js';
6
- export { OpenAIAdapter, toOpenAIContent, fromOpenAIContent, type OpenAIAdapterConfig, } from './openai.js';
7
- export { OpenAICompatibleAdapter, toOpenAIMessages, fromOpenAIMessage, type OpenAICompatibleAdapterConfig, } from './openai-compatible.js';
8
- export { OpenAICompletionsAdapter, type OpenAICompletionsAdapterConfig, } from './openai-completions.js';
9
- export { MockAdapter, createEchoAdapter, createCannedAdapter, type MockAdapterConfig, } from './mock.js';
10
- export { BedrockAdapter, type BedrockAdapterConfig, } from './bedrock.js';
11
- export { GeminiAdapter, toGeminiParts, fromGeminiParts, type GeminiAdapterConfig, } from './gemini.js';
12
- export { OpenAIResponsesAdapter, type OpenAIResponsesAdapterConfig, } from './openai-responses.js';
13
- //# sourceMappingURL=index.d.ts.map
@@ -1,13 +0,0 @@
1
- /**
2
- * Provider exports
3
- */
4
- export { AnthropicAdapter, toAnthropicContent, fromAnthropicContent, } from './anthropic.js';
5
- export { OpenRouterAdapter, toOpenRouterMessages, fromOpenRouterMessage, } from './openrouter.js';
6
- export { OpenAIAdapter, toOpenAIContent, fromOpenAIContent, } from './openai.js';
7
- export { OpenAICompatibleAdapter, toOpenAIMessages, fromOpenAIMessage, } from './openai-compatible.js';
8
- export { OpenAICompletionsAdapter, } from './openai-completions.js';
9
- export { MockAdapter, createEchoAdapter, createCannedAdapter, } from './mock.js';
10
- export { BedrockAdapter, } from './bedrock.js';
11
- export { GeminiAdapter, toGeminiParts, fromGeminiParts, } from './gemini.js';
12
- export { OpenAIResponsesAdapter, } from './openai-responses.js';
13
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,GAElB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,wBAAwB,GAEzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,GAEf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,GAEhB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC"}