@animalabs/membrane 0.5.68 → 0.5.70

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 (67) hide show
  1. package/dist/formatters/anthropic-xml.d.ts.map +1 -1
  2. package/dist/formatters/anthropic-xml.js +14 -8
  3. package/dist/formatters/anthropic-xml.js.map +1 -1
  4. package/dist/formatters/index.d.ts +1 -0
  5. package/dist/formatters/index.d.ts.map +1 -1
  6. package/dist/formatters/index.js +1 -0
  7. package/dist/formatters/index.js.map +1 -1
  8. package/dist/formatters/native.d.ts +3 -0
  9. package/dist/formatters/native.d.ts.map +1 -1
  10. package/dist/formatters/native.js +70 -14
  11. package/dist/formatters/native.js.map +1 -1
  12. package/dist/formatters/openai-responses.d.ts +23 -0
  13. package/dist/formatters/openai-responses.d.ts.map +1 -0
  14. package/dist/formatters/openai-responses.js +176 -0
  15. package/dist/formatters/openai-responses.js.map +1 -0
  16. package/dist/membrane.d.ts.map +1 -1
  17. package/dist/membrane.js +61 -14
  18. package/dist/membrane.js.map +1 -1
  19. package/dist/providers/anthropic-tool-schema.d.ts +43 -0
  20. package/dist/providers/anthropic-tool-schema.d.ts.map +1 -0
  21. package/dist/providers/anthropic-tool-schema.js +165 -0
  22. package/dist/providers/anthropic-tool-schema.js.map +1 -0
  23. package/dist/providers/anthropic.d.ts.map +1 -1
  24. package/dist/providers/anthropic.js +130 -7
  25. package/dist/providers/anthropic.js.map +1 -1
  26. package/dist/providers/gemini.d.ts.map +1 -1
  27. package/dist/providers/gemini.js +15 -0
  28. package/dist/providers/gemini.js.map +1 -1
  29. package/dist/providers/index.d.ts +2 -0
  30. package/dist/providers/index.d.ts.map +1 -1
  31. package/dist/providers/index.js +2 -0
  32. package/dist/providers/index.js.map +1 -1
  33. package/dist/providers/openai-responses-api.d.ts +129 -0
  34. package/dist/providers/openai-responses-api.d.ts.map +1 -0
  35. package/dist/providers/openai-responses-api.js +475 -0
  36. package/dist/providers/openai-responses-api.js.map +1 -0
  37. package/dist/providers/openrouter.d.ts +6 -0
  38. package/dist/providers/openrouter.d.ts.map +1 -1
  39. package/dist/providers/openrouter.js +87 -4
  40. package/dist/providers/openrouter.js.map +1 -1
  41. package/dist/types/provider.d.ts +8 -0
  42. package/dist/types/provider.d.ts.map +1 -1
  43. package/dist/types/request.d.ts +8 -0
  44. package/dist/types/request.d.ts.map +1 -1
  45. package/dist/utils/image-media.d.ts +54 -0
  46. package/dist/utils/image-media.d.ts.map +1 -0
  47. package/dist/utils/image-media.js +135 -0
  48. package/dist/utils/image-media.js.map +1 -0
  49. package/dist/utils/tool-parser.d.ts.map +1 -1
  50. package/dist/utils/tool-parser.js +15 -9
  51. package/dist/utils/tool-parser.js.map +1 -1
  52. package/package.json +1 -1
  53. package/src/formatters/anthropic-xml.ts +13 -8
  54. package/src/formatters/index.ts +4 -0
  55. package/src/formatters/native.ts +70 -14
  56. package/src/formatters/openai-responses.ts +206 -0
  57. package/src/membrane.ts +66 -16
  58. package/src/providers/anthropic-tool-schema.ts +194 -0
  59. package/src/providers/anthropic.ts +140 -10
  60. package/src/providers/gemini.ts +14 -0
  61. package/src/providers/index.ts +13 -0
  62. package/src/providers/openai-responses-api.ts +644 -0
  63. package/src/providers/openrouter.ts +94 -5
  64. package/src/types/provider.ts +7 -1
  65. package/src/types/request.ts +8 -0
  66. package/src/utils/image-media.ts +150 -0
  67. package/src/utils/tool-parser.ts +14 -9
@@ -2,6 +2,7 @@
2
2
  * Provider exports
3
3
  */
4
4
  export { AnthropicAdapter, toAnthropicContent, fromAnthropicContent, } from './anthropic.js';
5
+ export { flattenRootSchemaUnion } from './anthropic-tool-schema.js';
5
6
  export { OpenRouterAdapter, toOpenRouterMessages, fromOpenRouterMessage, } from './openrouter.js';
6
7
  export { OpenAIAdapter, toOpenAIContent, fromOpenAIContent, } from './openai.js';
7
8
  export { OpenAICompatibleAdapter, toOpenAIMessages, fromOpenAIMessage, } from './openai-compatible.js';
@@ -10,4 +11,5 @@ export { MockAdapter, createEchoAdapter, createCannedAdapter, } from './mock.js'
10
11
  export { BedrockAdapter, } from './bedrock.js';
11
12
  export { GeminiAdapter, toGeminiParts, fromGeminiParts, } from './gemini.js';
12
13
  export { OpenAIResponsesAdapter, } from './openai-responses.js';
14
+ export { OpenAIResponsesAPIAdapter, } from './openai-responses-api.js';
13
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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"}
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,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,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;AAE/B,OAAO,EACL,yBAAyB,GAQ1B,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * OpenAI Responses API adapter.
3
+ *
4
+ * This is intentionally separate from `openai-responses.ts`. Despite its name,
5
+ * that compatibility-sensitive adapter targets the Images API.
6
+ *
7
+ * This adapter is stateless and provider-native: `ProviderRequest.messages` is
8
+ * sent verbatim as the Responses API `input` item array, and `outputItems`
9
+ * exposes the response's ordered output array verbatim for the next turn.
10
+ */
11
+ import type { ContentBlock, ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks } from '../types/index.js';
12
+ export interface OpenAIResponsesInputItem {
13
+ type?: string;
14
+ id?: string | null;
15
+ [key: string]: unknown;
16
+ }
17
+ export interface OpenAIResponsesOutputItem {
18
+ type: string;
19
+ id?: string;
20
+ [key: string]: unknown;
21
+ }
22
+ export interface OpenAIResponsesAPIRequest {
23
+ model: string;
24
+ input: OpenAIResponsesInputItem[];
25
+ store: false;
26
+ include: string[];
27
+ instructions?: string;
28
+ max_output_tokens?: number;
29
+ temperature?: number;
30
+ top_p?: number;
31
+ tools?: unknown[];
32
+ stream?: boolean;
33
+ [key: string]: unknown;
34
+ }
35
+ export interface OpenAIResponsesAPIResponse {
36
+ id?: string;
37
+ object?: string;
38
+ model?: string;
39
+ output: OpenAIResponsesOutputItem[];
40
+ status?: string;
41
+ incomplete_details?: {
42
+ reason?: string | null;
43
+ } | null;
44
+ error?: {
45
+ code?: string | null;
46
+ message?: string | null;
47
+ } | null;
48
+ usage?: {
49
+ input_tokens?: number;
50
+ output_tokens?: number;
51
+ total_tokens?: number;
52
+ input_tokens_details?: {
53
+ cached_tokens?: number;
54
+ } | null;
55
+ output_tokens_details?: {
56
+ reasoning_tokens?: number;
57
+ } | null;
58
+ } | null;
59
+ [key: string]: unknown;
60
+ }
61
+ export type OpenAIResponsesAPIContentBlock = (ContentBlock & {
62
+ itemId?: string;
63
+ outputIndex: number;
64
+ contentIndex?: number;
65
+ phase?: 'commentary' | 'final_answer' | null;
66
+ rawItem?: OpenAIResponsesOutputItem;
67
+ }) | {
68
+ type: 'compaction';
69
+ id?: string;
70
+ encryptedContent: string;
71
+ createdBy?: string;
72
+ outputIndex: number;
73
+ rawItem: OpenAIResponsesOutputItem;
74
+ } | {
75
+ type: 'openai_response_item';
76
+ itemId?: string;
77
+ itemType: string;
78
+ outputIndex: number;
79
+ rawItem: OpenAIResponsesOutputItem;
80
+ };
81
+ export interface OpenAIResponsesAPIProviderResponse extends Omit<ProviderResponse, 'content' | 'raw'> {
82
+ content: OpenAIResponsesAPIContentBlock[];
83
+ /** Ordered, provider-native output items. Append these verbatim to the next input. */
84
+ outputItems: OpenAIResponsesOutputItem[];
85
+ raw: OpenAIResponsesAPIResponse | Record<string, unknown>;
86
+ }
87
+ export interface OpenAIResponsesAPIAdapterConfig {
88
+ /** API key (defaults to OPENAI_API_KEY). */
89
+ apiKey?: string;
90
+ /** API base URL (default: https://api.openai.com/v1). */
91
+ baseURL?: string;
92
+ /** Optional OpenAI organization ID. */
93
+ organization?: string;
94
+ /** Optional OpenAI project ID. */
95
+ project?: string;
96
+ /** Default maximum output tokens when the request does not provide one. */
97
+ defaultMaxTokens?: number;
98
+ /** Additional HTTP headers. */
99
+ extraHeaders?: Record<string, string>;
100
+ }
101
+ export declare class OpenAIResponsesAPIAdapter implements ProviderAdapter {
102
+ readonly name = "openai-responses-api";
103
+ private readonly apiKey;
104
+ private readonly baseURL;
105
+ private readonly organization?;
106
+ private readonly project?;
107
+ private readonly defaultMaxTokens;
108
+ private readonly extraHeaders;
109
+ constructor(config?: OpenAIResponsesAPIAdapterConfig);
110
+ supportsModel(_modelId: string): boolean;
111
+ complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<OpenAIResponsesAPIProviderResponse>;
112
+ stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<OpenAIResponsesAPIProviderResponse>;
113
+ private getHeaders;
114
+ private buildRequest;
115
+ private mergeEncryptedReasoningInclude;
116
+ private flattenInstructions;
117
+ private convertTools;
118
+ private parseResponse;
119
+ private outputToContent;
120
+ private extractReasoningText;
121
+ private asPhase;
122
+ private getStopReason;
123
+ private applyTextDelta;
124
+ private applyFunctionArgumentsDelta;
125
+ private assertSuccessfulHTTPResponse;
126
+ private assertSuccessfulAPIResponse;
127
+ private handleError;
128
+ }
129
+ //# sourceMappingURL=openai-responses-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-responses-api.d.ts","sourceRoot":"","sources":["../../src/providers/openai-responses-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,475 @@
1
+ /**
2
+ * OpenAI Responses API adapter.
3
+ *
4
+ * This is intentionally separate from `openai-responses.ts`. Despite its name,
5
+ * that compatibility-sensitive adapter targets the Images API.
6
+ *
7
+ * This adapter is stateless and provider-native: `ProviderRequest.messages` is
8
+ * sent verbatim as the Responses API `input` item array, and `outputItems`
9
+ * exposes the response's ordered output array verbatim for the next turn.
10
+ */
11
+ import { MembraneError, abortError, authError, contextLengthError, networkError, rateLimitError, serverError, } from '../types/index.js';
12
+ import { createCombinedSignal, SSELineParser, safeParseJson } from './utils.js';
13
+ // ============================================================================
14
+ // Adapter
15
+ // ============================================================================
16
+ export class OpenAIResponsesAPIAdapter {
17
+ name = 'openai-responses-api';
18
+ apiKey;
19
+ baseURL;
20
+ organization;
21
+ project;
22
+ defaultMaxTokens;
23
+ extraHeaders;
24
+ constructor(config = {}) {
25
+ this.apiKey = config.apiKey ?? process.env.OPENAI_API_KEY ?? '';
26
+ this.baseURL = (config.baseURL ?? 'https://api.openai.com/v1').replace(/\/$/, '');
27
+ this.organization = config.organization;
28
+ this.project = config.project;
29
+ this.defaultMaxTokens = config.defaultMaxTokens ?? 4096;
30
+ this.extraHeaders = config.extraHeaders ?? {};
31
+ if (!this.apiKey) {
32
+ throw new Error('OpenAI API key not provided');
33
+ }
34
+ }
35
+ supportsModel(_modelId) {
36
+ return true;
37
+ }
38
+ async complete(request, options) {
39
+ const responsesRequest = this.buildRequest(request);
40
+ options?.onRequest?.(responsesRequest);
41
+ const { signal, cleanup } = createCombinedSignal(options?.signal, options?.timeoutMs);
42
+ try {
43
+ const response = await fetch(`${this.baseURL}/responses`, {
44
+ method: 'POST',
45
+ headers: this.getHeaders(),
46
+ body: JSON.stringify(responsesRequest),
47
+ signal,
48
+ });
49
+ await this.assertSuccessfulHTTPResponse(response);
50
+ const data = (await response.json());
51
+ this.assertSuccessfulAPIResponse(data);
52
+ return this.parseResponse(data, request.model, responsesRequest);
53
+ }
54
+ catch (error) {
55
+ throw this.handleError(error, responsesRequest);
56
+ }
57
+ finally {
58
+ cleanup?.();
59
+ }
60
+ }
61
+ async stream(request, callbacks, options) {
62
+ const responsesRequest = this.buildRequest(request);
63
+ responsesRequest.stream = true;
64
+ options?.onRequest?.(responsesRequest);
65
+ const { signal, cleanup } = createCombinedSignal(options?.signal, options?.timeoutMs);
66
+ try {
67
+ const response = await fetch(`${this.baseURL}/responses`, {
68
+ method: 'POST',
69
+ headers: this.getHeaders(),
70
+ body: JSON.stringify(responsesRequest),
71
+ signal,
72
+ });
73
+ await this.assertSuccessfulHTTPResponse(response);
74
+ const reader = response.body?.getReader();
75
+ if (!reader)
76
+ throw new Error('OpenAI Responses API returned no response body');
77
+ const decoder = new TextDecoder();
78
+ const parser = new SSELineParser();
79
+ const events = [];
80
+ const output = [];
81
+ let terminalResponse;
82
+ const processData = (data) => {
83
+ if (!data || data === '[DONE]')
84
+ return;
85
+ let event;
86
+ try {
87
+ event = JSON.parse(data);
88
+ }
89
+ catch {
90
+ return;
91
+ }
92
+ events.push(event);
93
+ if (event.type === 'response.output_text.delta') {
94
+ const delta = typeof event.delta === 'string' ? event.delta : '';
95
+ if (delta)
96
+ callbacks.onChunk(delta);
97
+ this.applyTextDelta(output, event);
98
+ }
99
+ else if (event.type === 'response.function_call_arguments.delta') {
100
+ this.applyFunctionArgumentsDelta(output, event);
101
+ }
102
+ else if (event.type === 'response.output_item.added' ||
103
+ event.type === 'response.output_item.done') {
104
+ if (Number.isInteger(event.output_index) && event.item) {
105
+ output[event.output_index] = event.item;
106
+ }
107
+ }
108
+ else if (event.type === 'response.completed' ||
109
+ event.type === 'response.incomplete') {
110
+ terminalResponse = event.response;
111
+ }
112
+ else if (event.type === 'response.failed') {
113
+ const failed = event.response;
114
+ throw new Error(`OpenAI Responses API error: ${failed?.error?.code ?? 'response_failed'} ` +
115
+ `${failed?.error?.message ?? 'Response failed'}`);
116
+ }
117
+ else if (event.type === 'error') {
118
+ throw new Error(`OpenAI Responses API error: ${event.code ?? 'stream_error'} ` +
119
+ `${event.message ?? 'Streaming request failed'}`);
120
+ }
121
+ };
122
+ while (true) {
123
+ const { done, value } = await reader.read();
124
+ if (done)
125
+ break;
126
+ for (const data of parser.feed(decoder.decode(value, { stream: true }))) {
127
+ processData(data);
128
+ }
129
+ }
130
+ for (const data of parser.feed(decoder.decode()))
131
+ processData(data);
132
+ for (const data of parser.flush())
133
+ processData(data);
134
+ const completed = terminalResponse ?? {
135
+ model: request.model,
136
+ output: output.filter((item) => Boolean(item)),
137
+ status: 'completed',
138
+ stream_events: events,
139
+ };
140
+ this.assertSuccessfulAPIResponse(completed);
141
+ const parsed = this.parseResponse(completed, request.model, responsesRequest);
142
+ parsed.content.forEach((block, index) => callbacks.onContentBlock?.(index, block));
143
+ return parsed;
144
+ }
145
+ catch (error) {
146
+ throw this.handleError(error, responsesRequest);
147
+ }
148
+ finally {
149
+ cleanup?.();
150
+ }
151
+ }
152
+ // --------------------------------------------------------------------------
153
+ // Request construction
154
+ // --------------------------------------------------------------------------
155
+ getHeaders() {
156
+ return {
157
+ Authorization: `Bearer ${this.apiKey}`,
158
+ 'Content-Type': 'application/json',
159
+ ...(this.organization ? { 'OpenAI-Organization': this.organization } : {}),
160
+ ...(this.project ? { 'OpenAI-Project': this.project } : {}),
161
+ ...this.extraHeaders,
162
+ };
163
+ }
164
+ buildRequest(request) {
165
+ if (!Array.isArray(request.messages)) {
166
+ throw new Error('OpenAI Responses API input must be a provider-native input-item array');
167
+ }
168
+ const responsesRequest = {
169
+ model: request.model,
170
+ input: request.messages,
171
+ store: false,
172
+ include: ['reasoning.encrypted_content'],
173
+ max_output_tokens: request.maxTokens || this.defaultMaxTokens,
174
+ };
175
+ const instructions = this.flattenInstructions(request.system);
176
+ if (instructions)
177
+ responsesRequest.instructions = instructions;
178
+ if (request.temperature !== undefined)
179
+ responsesRequest.temperature = request.temperature;
180
+ if (request.topP !== undefined)
181
+ responsesRequest.top_p = request.topP;
182
+ if (request.tools?.length)
183
+ responsesRequest.tools = this.convertTools(request.tools);
184
+ if (request.extra) {
185
+ const { normalizedMessages, prompt, messages, input, store, stream, include, ...extra } = request.extra;
186
+ void normalizedMessages;
187
+ void prompt;
188
+ void messages;
189
+ void input;
190
+ void store;
191
+ void stream;
192
+ Object.assign(responsesRequest, extra);
193
+ responsesRequest.include = this.mergeEncryptedReasoningInclude(include);
194
+ }
195
+ // These invariants define the adapter's stateless native-item contract and
196
+ // cannot be overridden through provider params.
197
+ responsesRequest.input = request.messages;
198
+ responsesRequest.store = false;
199
+ responsesRequest.include = this.mergeEncryptedReasoningInclude(responsesRequest.include);
200
+ return responsesRequest;
201
+ }
202
+ mergeEncryptedReasoningInclude(value) {
203
+ const include = Array.isArray(value)
204
+ ? value.filter((item) => typeof item === 'string')
205
+ : [];
206
+ return include.includes('reasoning.encrypted_content')
207
+ ? include
208
+ : [...include, 'reasoning.encrypted_content'];
209
+ }
210
+ flattenInstructions(system) {
211
+ if (typeof system === 'string')
212
+ return system || undefined;
213
+ if (!Array.isArray(system))
214
+ return undefined;
215
+ const text = system
216
+ .map((block) => block?.type === 'text' || block?.type === 'input_text' ? block.text : undefined)
217
+ .filter((value) => typeof value === 'string' && value.length > 0)
218
+ .join('\n');
219
+ return text || undefined;
220
+ }
221
+ convertTools(tools) {
222
+ return tools.map((rawTool) => {
223
+ if (rawTool?.type && rawTool.type !== 'function')
224
+ return rawTool;
225
+ // Responses function definitions are flat. Accept them verbatim, while
226
+ // also adapting Membrane and Chat Completions function schemas.
227
+ if (rawTool?.type === 'function' && rawTool.name)
228
+ return rawTool;
229
+ if (rawTool?.type === 'function' && rawTool.function) {
230
+ return { type: 'function', ...rawTool.function };
231
+ }
232
+ return {
233
+ type: 'function',
234
+ name: rawTool?.name,
235
+ description: rawTool?.description,
236
+ parameters: rawTool?.parameters ??
237
+ rawTool?.inputSchema ??
238
+ rawTool?.input_schema ??
239
+ { type: 'object', properties: {} },
240
+ ...(rawTool?.strict !== undefined ? { strict: rawTool.strict } : {}),
241
+ };
242
+ });
243
+ }
244
+ // --------------------------------------------------------------------------
245
+ // Response conversion
246
+ // --------------------------------------------------------------------------
247
+ parseResponse(response, requestedModel, rawRequest) {
248
+ const outputItems = Array.isArray(response.output) ? response.output : [];
249
+ const content = this.outputToContent(outputItems);
250
+ const cachedTokens = response.usage?.input_tokens_details?.cached_tokens ?? 0;
251
+ return {
252
+ content,
253
+ outputItems,
254
+ stopReason: this.getStopReason(response, outputItems),
255
+ stopSequence: undefined,
256
+ usage: {
257
+ inputTokens: response.usage?.input_tokens ?? 0,
258
+ outputTokens: response.usage?.output_tokens ?? 0,
259
+ cacheReadTokens: cachedTokens > 0 ? cachedTokens : undefined,
260
+ },
261
+ model: response.model ?? requestedModel,
262
+ rawRequest,
263
+ raw: response,
264
+ };
265
+ }
266
+ outputToContent(items) {
267
+ const content = [];
268
+ items.forEach((item, outputIndex) => {
269
+ if (item.type === 'message') {
270
+ const phase = this.asPhase(item.phase);
271
+ const messageContent = Array.isArray(item.content) ? item.content : [];
272
+ messageContent.forEach((part, contentIndex) => {
273
+ if (part?.type === 'output_text' && typeof part.text === 'string') {
274
+ content.push({
275
+ type: 'text',
276
+ text: part.text,
277
+ itemId: item.id,
278
+ outputIndex,
279
+ contentIndex,
280
+ phase,
281
+ rawItem: item,
282
+ });
283
+ }
284
+ else if (part?.type === 'refusal' && typeof part.refusal === 'string') {
285
+ content.push({
286
+ type: 'text',
287
+ text: part.refusal,
288
+ itemId: item.id,
289
+ outputIndex,
290
+ contentIndex,
291
+ phase,
292
+ rawItem: item,
293
+ });
294
+ }
295
+ });
296
+ }
297
+ else if (item.type === 'reasoning') {
298
+ if (typeof item.encrypted_content === 'string') {
299
+ content.push({
300
+ type: 'redacted_thinking',
301
+ data: item.encrypted_content,
302
+ itemId: item.id,
303
+ outputIndex,
304
+ rawItem: item,
305
+ });
306
+ }
307
+ else {
308
+ const thinking = this.extractReasoningText(item);
309
+ content.push({
310
+ type: 'thinking',
311
+ thinking,
312
+ itemId: item.id,
313
+ outputIndex,
314
+ rawItem: item,
315
+ });
316
+ }
317
+ }
318
+ else if (item.type === 'function_call') {
319
+ const callId = typeof item.call_id === 'string' ? item.call_id : item.id ?? '';
320
+ content.push({
321
+ type: 'tool_use',
322
+ id: callId,
323
+ name: typeof item.name === 'string' ? item.name : '',
324
+ input: safeParseJson(typeof item.arguments === 'string' ? item.arguments : '{}'),
325
+ itemId: item.id,
326
+ outputIndex,
327
+ rawItem: item,
328
+ });
329
+ }
330
+ else if (item.type === 'function_call_output') {
331
+ content.push({
332
+ type: 'tool_result',
333
+ toolUseId: typeof item.call_id === 'string' ? item.call_id : '',
334
+ content: typeof item.output === 'string' ? item.output : JSON.stringify(item.output ?? null),
335
+ itemId: item.id,
336
+ outputIndex,
337
+ rawItem: item,
338
+ });
339
+ }
340
+ else if (item.type === 'compaction' && typeof item.encrypted_content === 'string') {
341
+ content.push({
342
+ type: 'compaction',
343
+ id: item.id,
344
+ encryptedContent: item.encrypted_content,
345
+ ...(typeof item.created_by === 'string' ? { createdBy: item.created_by } : {}),
346
+ outputIndex,
347
+ rawItem: item,
348
+ });
349
+ }
350
+ else {
351
+ content.push({
352
+ type: 'openai_response_item',
353
+ itemId: item.id,
354
+ itemType: item.type,
355
+ outputIndex,
356
+ rawItem: item,
357
+ });
358
+ }
359
+ });
360
+ return content;
361
+ }
362
+ extractReasoningText(item) {
363
+ const values = [item.summary, item.content]
364
+ .filter(Array.isArray)
365
+ .flatMap((parts) => parts)
366
+ .map((part) => part?.text)
367
+ .filter((text) => typeof text === 'string');
368
+ return values.join('\n');
369
+ }
370
+ asPhase(value) {
371
+ return value === 'commentary' || value === 'final_answer' || value === null
372
+ ? value
373
+ : undefined;
374
+ }
375
+ getStopReason(response, output) {
376
+ if (output.some((item) => item.type === 'function_call'))
377
+ return 'tool_use';
378
+ if (output.some((item) => item.type === 'message' &&
379
+ Array.isArray(item.content) &&
380
+ item.content.some((part) => part?.type === 'refusal')))
381
+ return 'refusal';
382
+ const reason = response.incomplete_details?.reason;
383
+ if (response.status === 'incomplete' && reason?.includes('max_output_tokens')) {
384
+ return 'max_tokens';
385
+ }
386
+ return 'end_turn';
387
+ }
388
+ applyTextDelta(output, event) {
389
+ if (!Number.isInteger(event.output_index) || typeof event.delta !== 'string')
390
+ return;
391
+ const outputIndex = event.output_index;
392
+ const contentIndex = Number.isInteger(event.content_index) ? event.content_index : 0;
393
+ const existing = output[outputIndex];
394
+ const message = existing?.type === 'message'
395
+ ? existing
396
+ : {
397
+ type: 'message',
398
+ id: event.item_id,
399
+ role: 'assistant',
400
+ status: 'in_progress',
401
+ content: [],
402
+ };
403
+ const part = message.content[contentIndex] ?? { type: 'output_text', text: '', annotations: [] };
404
+ part.text = `${part.text ?? ''}${event.delta}`;
405
+ message.content[contentIndex] = part;
406
+ output[outputIndex] = message;
407
+ }
408
+ applyFunctionArgumentsDelta(output, event) {
409
+ if (!Number.isInteger(event.output_index) || typeof event.delta !== 'string')
410
+ return;
411
+ const outputIndex = event.output_index;
412
+ const item = output[outputIndex];
413
+ if (item?.type === 'function_call') {
414
+ item.arguments = `${item.arguments ?? ''}${event.delta}`;
415
+ }
416
+ }
417
+ // --------------------------------------------------------------------------
418
+ // Errors
419
+ // --------------------------------------------------------------------------
420
+ async assertSuccessfulHTTPResponse(response) {
421
+ if (response.ok)
422
+ return;
423
+ const errorText = await response.text();
424
+ throw new Error(`OpenAI Responses API error: ${response.status} ${errorText}`);
425
+ }
426
+ assertSuccessfulAPIResponse(response) {
427
+ if (!response.error)
428
+ return;
429
+ throw new Error(`OpenAI Responses API error: ${response.error.code ?? 'api_error'} ` +
430
+ `${response.error.message ?? 'Unknown error'}`);
431
+ }
432
+ handleError(error, rawRequest) {
433
+ if (error instanceof MembraneError)
434
+ return error;
435
+ if (error instanceof Error) {
436
+ const message = error.message;
437
+ if (message.includes('429') || message.includes('rate_limit')) {
438
+ const retryMatch = message.match(/retry after (\d+)/i);
439
+ const retryAfter = retryMatch?.[1] ? Number(retryMatch[1]) * 1000 : undefined;
440
+ return rateLimitError(message, retryAfter, error, rawRequest);
441
+ }
442
+ if (message.includes('401') ||
443
+ message.includes('invalid_api_key') ||
444
+ message.includes('Incorrect API key')) {
445
+ return authError(message, error, rawRequest);
446
+ }
447
+ if (message.includes('context_length') ||
448
+ message.includes('maximum context') ||
449
+ message.includes('too long')) {
450
+ return contextLengthError(message, error, rawRequest);
451
+ }
452
+ if (message.includes('500') ||
453
+ message.includes('502') ||
454
+ message.includes('503') ||
455
+ message.includes('server_error')) {
456
+ return serverError(message, undefined, error, rawRequest);
457
+ }
458
+ if (error.name === 'AbortError')
459
+ return abortError(undefined, rawRequest);
460
+ if (message.includes('network') ||
461
+ message.includes('fetch') ||
462
+ message.includes('ECONNREFUSED')) {
463
+ return networkError(message, error, rawRequest);
464
+ }
465
+ }
466
+ return new MembraneError({
467
+ type: 'unknown',
468
+ message: error instanceof Error ? error.message : String(error),
469
+ retryable: false,
470
+ rawError: error,
471
+ rawRequest,
472
+ });
473
+ }
474
+ }
475
+ //# sourceMappingURL=openai-responses-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-responses-api.js","sourceRoot":"","sources":["../../src/providers/openai-responses-api.ts"],"names":[],"mappings":"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"}