@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,90 +0,0 @@
1
- /**
2
- * Mock Provider Adapter for testing
3
- *
4
- * Returns canned responses without calling any real LLM API.
5
- * Useful for testing the framework without API costs.
6
- */
7
- import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks } from '../types/provider.js';
8
- export interface MockAdapterConfig {
9
- /** Default response text when no specific response is configured */
10
- defaultResponse?: string;
11
- /** Simulated delay in ms for complete() calls */
12
- completeDelayMs?: number;
13
- /** Simulated delay in ms between stream chunks */
14
- streamChunkDelayMs?: number;
15
- /** Size of chunks when streaming (characters) */
16
- streamChunkSize?: number;
17
- /** If true, echo back the last user message */
18
- echoMode?: boolean;
19
- /** Queue of responses to return (FIFO, then falls back to default) */
20
- responseQueue?: string[];
21
- /** Function to generate response based on request */
22
- responseGenerator?: (request: ProviderRequest) => string;
23
- }
24
- /**
25
- * Mock adapter for testing without real LLM calls.
26
- */
27
- export declare class MockAdapter implements ProviderAdapter {
28
- readonly name = "mock";
29
- private config;
30
- private responseQueue;
31
- private requestLog;
32
- constructor(config?: MockAdapterConfig);
33
- supportsModel(_modelId: string): boolean;
34
- /**
35
- * Add a response to the queue.
36
- */
37
- queueResponse(response: string): void;
38
- /**
39
- * Add multiple responses to the queue.
40
- */
41
- queueResponses(responses: string[]): void;
42
- /**
43
- * Clear the response queue.
44
- */
45
- clearQueue(): void;
46
- /**
47
- * Get the request log.
48
- */
49
- getRequestLog(): Array<{
50
- timestamp: number;
51
- request: ProviderRequest;
52
- }>;
53
- /**
54
- * Get the last request made.
55
- */
56
- getLastRequest(): ProviderRequest | undefined;
57
- /**
58
- * Clear the request log.
59
- */
60
- clearRequestLog(): void;
61
- /**
62
- * Reset the adapter (clear queue and request log).
63
- */
64
- reset(): void;
65
- /**
66
- * Get the response for a request.
67
- */
68
- private getResponse;
69
- complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
70
- stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
71
- /**
72
- * Check if the abort signal is set and throw if so.
73
- */
74
- private checkAbort;
75
- /**
76
- * Sleep that can be interrupted by an abort signal.
77
- */
78
- private abortableSleep;
79
- private sleep;
80
- private estimateTokens;
81
- }
82
- /**
83
- * Create a mock adapter with echo mode enabled.
84
- */
85
- export declare function createEchoAdapter(config?: Omit<MockAdapterConfig, 'echoMode'>): MockAdapter;
86
- /**
87
- * Create a mock adapter with specific canned responses.
88
- */
89
- export declare function createCannedAdapter(responses: string[], config?: Omit<MockAdapterConfig, 'responseQueue'>): MockAdapter;
90
- //# sourceMappingURL=mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC;CAC1D;AAWD;;GAEG;AACH,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,MAAM,CAAwG;IACtH,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,UAAU,CAA8D;gBAEpE,MAAM,GAAE,iBAAsB;IAK1C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAIzC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAIvE;;OAEG;IACH,cAAc,IAAI,eAAe,GAAG,SAAS;IAI7C;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCb,QAAQ,CACZ,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IA2BtB,MAAM,CACV,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,eAAe,EAC1B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IAuC5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,cAAc;CAIvB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,WAAW,CAE3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,GAAG,WAAW,CAEvH"}
@@ -1,210 +0,0 @@
1
- /**
2
- * Mock Provider Adapter for testing
3
- *
4
- * Returns canned responses without calling any real LLM API.
5
- * Useful for testing the framework without API costs.
6
- */
7
- import { abortError } from '../types/errors.js';
8
- const DEFAULT_CONFIG = {
9
- defaultResponse: 'This is a mock response from the test adapter.',
10
- completeDelayMs: 10,
11
- streamChunkDelayMs: 5,
12
- streamChunkSize: 10,
13
- echoMode: false,
14
- responseQueue: [],
15
- };
16
- /**
17
- * Mock adapter for testing without real LLM calls.
18
- */
19
- export class MockAdapter {
20
- name = 'mock';
21
- config;
22
- responseQueue;
23
- requestLog = [];
24
- constructor(config = {}) {
25
- this.config = { ...DEFAULT_CONFIG, ...config };
26
- this.responseQueue = [...(config.responseQueue ?? [])];
27
- }
28
- supportsModel(_modelId) {
29
- return true;
30
- }
31
- /**
32
- * Add a response to the queue.
33
- */
34
- queueResponse(response) {
35
- this.responseQueue.push(response);
36
- }
37
- /**
38
- * Add multiple responses to the queue.
39
- */
40
- queueResponses(responses) {
41
- this.responseQueue.push(...responses);
42
- }
43
- /**
44
- * Clear the response queue.
45
- */
46
- clearQueue() {
47
- this.responseQueue = [];
48
- }
49
- /**
50
- * Get the request log.
51
- */
52
- getRequestLog() {
53
- return [...this.requestLog];
54
- }
55
- /**
56
- * Get the last request made.
57
- */
58
- getLastRequest() {
59
- return this.requestLog[this.requestLog.length - 1]?.request;
60
- }
61
- /**
62
- * Clear the request log.
63
- */
64
- clearRequestLog() {
65
- this.requestLog = [];
66
- }
67
- /**
68
- * Reset the adapter (clear queue and request log).
69
- */
70
- reset() {
71
- this.clearQueue();
72
- this.clearRequestLog();
73
- }
74
- /**
75
- * Get the response for a request.
76
- */
77
- getResponse(request) {
78
- // Log the request
79
- this.requestLog.push({ timestamp: Date.now(), request });
80
- // Try queued response first
81
- if (this.responseQueue.length > 0) {
82
- return this.responseQueue.shift();
83
- }
84
- // Try response generator
85
- if (this.config.responseGenerator) {
86
- return this.config.responseGenerator(request);
87
- }
88
- // Echo mode - reflect back the last user message
89
- if (this.config.echoMode) {
90
- const lastMessage = request.messages[request.messages.length - 1];
91
- if (lastMessage && typeof lastMessage === 'object') {
92
- const content = lastMessage.content;
93
- if (typeof content === 'string') {
94
- return `[Echo] ${content}`;
95
- }
96
- if (Array.isArray(content)) {
97
- const textBlock = content.find((b) => b.type === 'text');
98
- if (textBlock) {
99
- return `[Echo] ${textBlock.text}`;
100
- }
101
- }
102
- }
103
- return '[Echo] (no text found in last message)';
104
- }
105
- // Default response
106
- return this.config.defaultResponse;
107
- }
108
- async complete(request, options) {
109
- // Check for abort before starting
110
- this.checkAbort(options?.signal);
111
- // Call onRequest callback if provided
112
- options?.onRequest?.(request);
113
- // Simulate processing delay
114
- if (this.config.completeDelayMs > 0) {
115
- await this.abortableSleep(this.config.completeDelayMs, options?.signal);
116
- }
117
- const responseText = this.getResponse(request);
118
- return {
119
- content: [{ type: 'text', text: responseText }],
120
- stopReason: 'end_turn',
121
- usage: {
122
- inputTokens: this.estimateTokens(JSON.stringify(request.messages)),
123
- outputTokens: this.estimateTokens(responseText),
124
- },
125
- model: request.model,
126
- rawRequest: request,
127
- raw: { mock: true, responseText },
128
- };
129
- }
130
- async stream(request, callbacks, options) {
131
- // Check for abort before starting
132
- this.checkAbort(options?.signal);
133
- // Call onRequest callback if provided
134
- options?.onRequest?.(request);
135
- const responseText = this.getResponse(request);
136
- let streamedText = '';
137
- // Stream the response in chunks
138
- let offset = 0;
139
- while (offset < responseText.length) {
140
- // Check for abort before each chunk
141
- this.checkAbort(options?.signal);
142
- const chunk = responseText.slice(offset, offset + this.config.streamChunkSize);
143
- callbacks.onChunk(chunk);
144
- streamedText += chunk;
145
- offset += this.config.streamChunkSize;
146
- if (offset < responseText.length && this.config.streamChunkDelayMs > 0) {
147
- await this.abortableSleep(this.config.streamChunkDelayMs, options?.signal);
148
- }
149
- }
150
- return {
151
- content: [{ type: 'text', text: responseText }],
152
- stopReason: 'end_turn',
153
- usage: {
154
- inputTokens: this.estimateTokens(JSON.stringify(request.messages)),
155
- outputTokens: this.estimateTokens(responseText),
156
- },
157
- model: request.model,
158
- rawRequest: request,
159
- raw: { mock: true, responseText },
160
- };
161
- }
162
- /**
163
- * Check if the abort signal is set and throw if so.
164
- */
165
- checkAbort(signal) {
166
- if (signal?.aborted) {
167
- throw abortError('Request aborted');
168
- }
169
- }
170
- /**
171
- * Sleep that can be interrupted by an abort signal.
172
- */
173
- abortableSleep(ms, signal) {
174
- return new Promise((resolve, reject) => {
175
- if (signal?.aborted) {
176
- reject(abortError('Request aborted'));
177
- return;
178
- }
179
- const onAbort = () => {
180
- clearTimeout(timeout);
181
- reject(abortError('Request aborted'));
182
- };
183
- const timeout = setTimeout(() => {
184
- signal?.removeEventListener('abort', onAbort);
185
- resolve();
186
- }, ms);
187
- signal?.addEventListener('abort', onAbort, { once: true });
188
- });
189
- }
190
- sleep(ms) {
191
- return new Promise(resolve => setTimeout(resolve, ms));
192
- }
193
- estimateTokens(text) {
194
- // Rough estimate: ~4 characters per token
195
- return Math.ceil(text.length / 4);
196
- }
197
- }
198
- /**
199
- * Create a mock adapter with echo mode enabled.
200
- */
201
- export function createEchoAdapter(config) {
202
- return new MockAdapter({ ...config, echoMode: true });
203
- }
204
- /**
205
- * Create a mock adapter with specific canned responses.
206
- */
207
- export function createCannedAdapter(responses, config) {
208
- return new MockAdapter({ ...config, responseQueue: responses });
209
- }
210
- //# sourceMappingURL=mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- /**
2
- * OpenAI-Compatible provider adapter
3
- *
4
- * Generic adapter for any OpenAI-compatible API endpoint:
5
- * - Ollama (http://localhost:11434/v1)
6
- * - vLLM
7
- * - Together AI
8
- * - Groq
9
- * - Local inference servers
10
- * - Any other OpenAI-compatible endpoint
11
- *
12
- * Uses the standard OpenAI chat completions format with tool_calls support.
13
- */
14
- import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks, ContentBlock } from '../types/index.js';
15
- interface OpenAIContentPart {
16
- type: 'text' | 'image_url';
17
- text?: string;
18
- image_url?: {
19
- url: string;
20
- detail?: string;
21
- };
22
- }
23
- interface OpenAIMessage {
24
- role: 'user' | 'assistant' | 'system' | 'tool';
25
- content?: string | OpenAIContentPart[] | null;
26
- tool_calls?: OpenAIToolCall[];
27
- tool_call_id?: string;
28
- }
29
- interface OpenAIToolCall {
30
- id: string;
31
- type: 'function';
32
- function: {
33
- name: string;
34
- arguments: string;
35
- };
36
- }
37
- export interface OpenAICompatibleAdapterConfig {
38
- /** Base URL for the API (required, e.g., 'http://localhost:11434/v1') */
39
- baseURL: string;
40
- /** API key (optional for local servers) */
41
- apiKey?: string;
42
- /** Provider name for logging/identification (default: 'openai-compatible') */
43
- providerName?: string;
44
- /** Default max tokens */
45
- defaultMaxTokens?: number;
46
- /** Additional headers to include with requests */
47
- extraHeaders?: Record<string, string>;
48
- }
49
- export declare class OpenAICompatibleAdapter implements ProviderAdapter {
50
- readonly name: string;
51
- private baseURL;
52
- private apiKey;
53
- private defaultMaxTokens;
54
- private extraHeaders;
55
- constructor(config: OpenAICompatibleAdapterConfig);
56
- supportsModel(_modelId: string): boolean;
57
- complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
58
- stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
59
- private getHeaders;
60
- private buildRequest;
61
- private convertMessages;
62
- private convertTools;
63
- private makeRequest;
64
- private parseResponse;
65
- private parseStreamedResponse;
66
- private messageToContent;
67
- private mapFinishReason;
68
- private handleError;
69
- }
70
- /**
71
- * Convert normalized content blocks to OpenAI message format
72
- */
73
- export declare function toOpenAIMessages(messages: {
74
- role: string;
75
- content: ContentBlock[];
76
- }[]): OpenAIMessage[];
77
- /**
78
- * Convert OpenAI response message to normalized content blocks
79
- */
80
- export declare function fromOpenAIMessage(message: OpenAIMessage): ContentBlock[];
81
- export {};
82
- //# sourceMappingURL=openai-compatible.d.ts.map