@animalabs/membrane 0.5.29 → 0.5.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenAI
|
|
2
|
+
* OpenAI Images API provider adapter
|
|
3
3
|
*
|
|
4
|
-
* Adapter for OpenAI's
|
|
5
|
-
* models like `gpt-image-1
|
|
4
|
+
* Adapter for OpenAI's Images API endpoints, used for image generation
|
|
5
|
+
* models like `gpt-image-1`:
|
|
6
6
|
*
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
9
|
-
* - Image generation is a tool: `{"type": "image_generation"}`
|
|
10
|
-
* - Generated images come back as `image_generation_call` output items
|
|
11
|
-
* - Streaming uses different event types
|
|
7
|
+
* - `/v1/images/generations` — text-to-image (no image input)
|
|
8
|
+
* - `/v1/images/edits` — image editing (accepts input images + prompt)
|
|
12
9
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* The adapter automatically selects the right endpoint:
|
|
11
|
+
* - If conversation contains images → uses /edits with images as data URLs
|
|
12
|
+
* - If text-only → uses /generations
|
|
13
|
+
*
|
|
14
|
+
* Both endpoints:
|
|
15
|
+
* - Take a single `prompt` string (not conversation messages)
|
|
16
|
+
* - Return base64-encoded images in `data[].b64_json`
|
|
17
|
+
* - No streaming support (returns complete image)
|
|
18
|
+
* - Support `size`, `quality`, `n`, `background`, `output_format`
|
|
19
|
+
*
|
|
20
|
+
* Note: File retains the name openai-responses.ts and class name
|
|
21
|
+
* OpenAIResponsesAdapter for compatibility with existing factory
|
|
22
|
+
* routing and vendor configs (`openairesponses-*` prefix).
|
|
15
23
|
*/
|
|
16
24
|
import type { ProviderAdapter, ProviderRequest, ProviderRequestOptions, ProviderResponse, StreamCallbacks } from '../types/index.js';
|
|
17
25
|
export interface OpenAIResponsesAdapterConfig {
|
|
@@ -21,23 +29,47 @@ export interface OpenAIResponsesAdapterConfig {
|
|
|
21
29
|
baseURL?: string;
|
|
22
30
|
/** Organization ID (optional) */
|
|
23
31
|
organization?: string;
|
|
24
|
-
/** Default max output tokens */
|
|
32
|
+
/** Default max output tokens (unused by Images API, kept for interface compat) */
|
|
25
33
|
defaultMaxTokens?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Whether to allow image editing via /v1/images/edits when images
|
|
36
|
+
* are present in the conversation context. When true (default),
|
|
37
|
+
* the adapter auto-detects images and routes to the edits endpoint.
|
|
38
|
+
* When false, always uses /v1/images/generations (text-only).
|
|
39
|
+
*/
|
|
40
|
+
allowImageEditing?: boolean;
|
|
26
41
|
}
|
|
27
42
|
export declare class OpenAIResponsesAdapter implements ProviderAdapter {
|
|
28
43
|
readonly name = "openai-responses";
|
|
29
44
|
private apiKey;
|
|
30
45
|
private baseURL;
|
|
31
46
|
private organization?;
|
|
32
|
-
private
|
|
47
|
+
private allowImageEditing;
|
|
33
48
|
constructor(config?: OpenAIResponsesAdapterConfig);
|
|
34
49
|
supportsModel(modelId: string): boolean;
|
|
35
50
|
complete(request: ProviderRequest, options?: ProviderRequestOptions): Promise<ProviderResponse>;
|
|
36
51
|
stream(request: ProviderRequest, callbacks: StreamCallbacks, options?: ProviderRequestOptions): Promise<ProviderResponse>;
|
|
37
52
|
private getHeaders;
|
|
53
|
+
/**
|
|
54
|
+
* Extract base64 images from conversation messages as data URLs.
|
|
55
|
+
* Used to determine whether to use /edits (with images) or /generations.
|
|
56
|
+
* Returns up to 16 images (OpenAI limit for /v1/images/edits).
|
|
57
|
+
*/
|
|
58
|
+
private extractImages;
|
|
59
|
+
/**
|
|
60
|
+
* Convert a base64 data URL to a Buffer + mimeType for file upload.
|
|
61
|
+
*/
|
|
62
|
+
private dataUrlToBuffer;
|
|
38
63
|
private buildRequest;
|
|
39
|
-
|
|
40
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Flatten conversation messages into a single prompt string.
|
|
66
|
+
*
|
|
67
|
+
* The Images API takes a single text prompt, not a conversation.
|
|
68
|
+
* We include the system prompt as context and concatenate all
|
|
69
|
+
* message text with role labels so the model understands the
|
|
70
|
+
* full conversation when deciding what image to generate.
|
|
71
|
+
*/
|
|
72
|
+
private flattenToPrompt;
|
|
41
73
|
private parseResponse;
|
|
42
74
|
private buildContentBlocks;
|
|
43
75
|
private handleError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-responses.d.ts","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openai-responses.d.ts","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAiE3B,MAAM,WAAW,4BAA4B;IAC3C,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAMD,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,IAAI,sBAAsB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,MAAM,GAAE,4BAAiC;IAWrD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjC,QAAQ,CACZ,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IAwDtB,MAAM,CACV,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,eAAe,EAC1B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IAmB5B,OAAO,CAAC,UAAU;IAalB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;IAwBpB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,WAAW;CAwEpB"}
|
|
@@ -1,33 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenAI
|
|
2
|
+
* OpenAI Images API provider adapter
|
|
3
3
|
*
|
|
4
|
-
* Adapter for OpenAI's
|
|
5
|
-
* models like `gpt-image-1
|
|
4
|
+
* Adapter for OpenAI's Images API endpoints, used for image generation
|
|
5
|
+
* models like `gpt-image-1`:
|
|
6
6
|
*
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
9
|
-
* - Image generation is a tool: `{"type": "image_generation"}`
|
|
10
|
-
* - Generated images come back as `image_generation_call` output items
|
|
11
|
-
* - Streaming uses different event types
|
|
7
|
+
* - `/v1/images/generations` — text-to-image (no image input)
|
|
8
|
+
* - `/v1/images/edits` — image editing (accepts input images + prompt)
|
|
12
9
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* The adapter automatically selects the right endpoint:
|
|
11
|
+
* - If conversation contains images → uses /edits with images as data URLs
|
|
12
|
+
* - If text-only → uses /generations
|
|
13
|
+
*
|
|
14
|
+
* Both endpoints:
|
|
15
|
+
* - Take a single `prompt` string (not conversation messages)
|
|
16
|
+
* - Return base64-encoded images in `data[].b64_json`
|
|
17
|
+
* - No streaming support (returns complete image)
|
|
18
|
+
* - Support `size`, `quality`, `n`, `background`, `output_format`
|
|
19
|
+
*
|
|
20
|
+
* Note: File retains the name openai-responses.ts and class name
|
|
21
|
+
* OpenAIResponsesAdapter for compatibility with existing factory
|
|
22
|
+
* routing and vendor configs (`openairesponses-*` prefix).
|
|
15
23
|
*/
|
|
16
24
|
import { MembraneError, rateLimitError, contextLengthError, authError, serverError, abortError, networkError, } from '../types/index.js';
|
|
17
25
|
// ============================================================================
|
|
18
|
-
// OpenAI
|
|
26
|
+
// OpenAI Images Adapter
|
|
19
27
|
// ============================================================================
|
|
20
28
|
export class OpenAIResponsesAdapter {
|
|
21
29
|
name = 'openai-responses';
|
|
22
30
|
apiKey;
|
|
23
31
|
baseURL;
|
|
24
32
|
organization;
|
|
25
|
-
|
|
33
|
+
allowImageEditing;
|
|
26
34
|
constructor(config = {}) {
|
|
27
35
|
this.apiKey = config.apiKey ?? process.env.OPENAI_API_KEY ?? '';
|
|
28
36
|
this.baseURL = (config.baseURL ?? 'https://api.openai.com/v1').replace(/\/$/, '');
|
|
29
37
|
this.organization = config.organization;
|
|
30
|
-
this.
|
|
38
|
+
this.allowImageEditing = config.allowImageEditing ?? true;
|
|
31
39
|
if (!this.apiKey) {
|
|
32
40
|
throw new Error('OpenAI API key not provided');
|
|
33
41
|
}
|
|
@@ -36,151 +44,69 @@ export class OpenAIResponsesAdapter {
|
|
|
36
44
|
return modelId.startsWith('gpt-image');
|
|
37
45
|
}
|
|
38
46
|
async complete(request, options) {
|
|
39
|
-
const
|
|
40
|
-
|
|
47
|
+
const inputImages = this.allowImageEditing ? this.extractImages(request) : [];
|
|
48
|
+
const isEdit = inputImages.length > 0;
|
|
49
|
+
const endpoint = isEdit ? 'images/edits' : 'images/generations';
|
|
50
|
+
const imagesRequest = this.buildRequest(request, inputImages);
|
|
51
|
+
options?.onRequest?.(imagesRequest);
|
|
41
52
|
try {
|
|
42
|
-
const
|
|
53
|
+
const fetchOptions = {
|
|
43
54
|
method: 'POST',
|
|
44
|
-
headers: this.getHeaders(),
|
|
45
|
-
body: JSON.stringify(responsesRequest),
|
|
46
55
|
signal: options?.signal,
|
|
47
|
-
}
|
|
56
|
+
};
|
|
57
|
+
if (isEdit) {
|
|
58
|
+
// /v1/images/edits requires multipart/form-data with file uploads
|
|
59
|
+
const formData = new FormData();
|
|
60
|
+
formData.append('model', imagesRequest.model);
|
|
61
|
+
formData.append('prompt', imagesRequest.prompt);
|
|
62
|
+
if (imagesRequest.n != null)
|
|
63
|
+
formData.append('n', String(imagesRequest.n));
|
|
64
|
+
if (imagesRequest.quality)
|
|
65
|
+
formData.append('quality', String(imagesRequest.quality));
|
|
66
|
+
if (imagesRequest.size)
|
|
67
|
+
formData.append('size', String(imagesRequest.size));
|
|
68
|
+
// Convert base64 data URLs to Blobs and append as file uploads
|
|
69
|
+
for (const dataUrl of inputImages) {
|
|
70
|
+
const { buffer, mimeType } = this.dataUrlToBuffer(dataUrl);
|
|
71
|
+
const ext = mimeType.split('/')[1] || 'png';
|
|
72
|
+
const blob = new Blob([buffer], { type: mimeType });
|
|
73
|
+
formData.append('image[]', blob, `image.${ext}`);
|
|
74
|
+
}
|
|
75
|
+
// Auth header only — don't set Content-Type, let fetch set multipart boundary
|
|
76
|
+
fetchOptions.headers = {
|
|
77
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
78
|
+
...(this.organization ? { 'OpenAI-Organization': this.organization } : {}),
|
|
79
|
+
};
|
|
80
|
+
fetchOptions.body = formData;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// /v1/images/generations accepts JSON
|
|
84
|
+
fetchOptions.headers = this.getHeaders();
|
|
85
|
+
fetchOptions.body = JSON.stringify(imagesRequest);
|
|
86
|
+
}
|
|
87
|
+
const response = await fetch(`${this.baseURL}/${endpoint}`, fetchOptions);
|
|
48
88
|
if (!response.ok) {
|
|
49
89
|
const errorText = await response.text();
|
|
50
|
-
throw new Error(`OpenAI
|
|
90
|
+
throw new Error(`OpenAI Images API error: ${response.status} ${errorText}`);
|
|
51
91
|
}
|
|
52
92
|
const data = (await response.json());
|
|
53
|
-
|
|
54
|
-
throw new Error(`OpenAI Responses API error: ${data.error.code} ${data.error.message}`);
|
|
55
|
-
}
|
|
56
|
-
return this.parseResponse(data, request.model, responsesRequest);
|
|
93
|
+
return this.parseResponse(data, request.model, imagesRequest);
|
|
57
94
|
}
|
|
58
95
|
catch (error) {
|
|
59
|
-
throw this.handleError(error,
|
|
96
|
+
throw this.handleError(error, imagesRequest);
|
|
60
97
|
}
|
|
61
98
|
}
|
|
62
99
|
async stream(request, callbacks, options) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
options
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
body: JSON.stringify(responsesRequest),
|
|
71
|
-
signal: options?.signal,
|
|
72
|
-
});
|
|
73
|
-
if (!response.ok) {
|
|
74
|
-
const errorText = await response.text();
|
|
75
|
-
throw new Error(`OpenAI Responses API error: ${response.status} ${errorText}`);
|
|
76
|
-
}
|
|
77
|
-
const reader = response.body?.getReader();
|
|
78
|
-
if (!reader) {
|
|
79
|
-
throw new Error('No response body');
|
|
80
|
-
}
|
|
81
|
-
const decoder = new TextDecoder();
|
|
82
|
-
let accumulated = '';
|
|
83
|
-
let images = [];
|
|
84
|
-
let lastUsage;
|
|
85
|
-
let buffer = '';
|
|
86
|
-
while (true) {
|
|
87
|
-
const { done, value } = await reader.read();
|
|
88
|
-
if (done)
|
|
89
|
-
break;
|
|
90
|
-
buffer += decoder.decode(value, { stream: true });
|
|
91
|
-
const lines = buffer.split('\n');
|
|
92
|
-
buffer = lines.pop() ?? '';
|
|
93
|
-
for (const line of lines) {
|
|
94
|
-
if (!line.startsWith('data: '))
|
|
95
|
-
continue;
|
|
96
|
-
const data = line.slice(6).trim();
|
|
97
|
-
if (!data || data === '[DONE]')
|
|
98
|
-
continue;
|
|
99
|
-
try {
|
|
100
|
-
const parsed = JSON.parse(data);
|
|
101
|
-
// Handle text deltas
|
|
102
|
-
if (parsed.type === 'response.output_text.delta') {
|
|
103
|
-
const delta = parsed.delta ?? '';
|
|
104
|
-
accumulated += delta;
|
|
105
|
-
callbacks.onChunk(delta);
|
|
106
|
-
}
|
|
107
|
-
// Handle completed text
|
|
108
|
-
if (parsed.type === 'response.output_text.done') {
|
|
109
|
-
// Text already accumulated via deltas
|
|
110
|
-
}
|
|
111
|
-
// Handle image generation results
|
|
112
|
-
if (parsed.type === 'response.image_generation_call.done') {
|
|
113
|
-
if (parsed.result) {
|
|
114
|
-
images.push({
|
|
115
|
-
data: parsed.result,
|
|
116
|
-
mimeType: 'image/png',
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// Handle completed response (has usage)
|
|
121
|
-
if (parsed.type === 'response.completed' || parsed.type === 'response.done') {
|
|
122
|
-
const resp = parsed.response ?? parsed;
|
|
123
|
-
if (resp.usage) {
|
|
124
|
-
lastUsage = resp.usage;
|
|
125
|
-
}
|
|
126
|
-
// Extract any images from the completed response output
|
|
127
|
-
if (resp.output) {
|
|
128
|
-
for (const item of resp.output) {
|
|
129
|
-
if (item.type === 'image_generation_call' && item.result) {
|
|
130
|
-
// Only add if not already captured via streaming events
|
|
131
|
-
const alreadyCaptured = images.some(img => img.data === item.result);
|
|
132
|
-
if (!alreadyCaptured) {
|
|
133
|
-
images.push({
|
|
134
|
-
data: item.result,
|
|
135
|
-
mimeType: 'image/png',
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
// Ignore parse errors in stream chunks
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// Process remaining buffer
|
|
149
|
-
if (buffer.trim()) {
|
|
150
|
-
const remaining = buffer.trim();
|
|
151
|
-
const dataLine = remaining.startsWith('data: ') ? remaining.slice(6).trim() : remaining;
|
|
152
|
-
if (dataLine && dataLine !== '[DONE]') {
|
|
153
|
-
try {
|
|
154
|
-
const parsed = JSON.parse(dataLine);
|
|
155
|
-
if (parsed.type === 'response.completed' || parsed.type === 'response.done') {
|
|
156
|
-
const resp = parsed.response ?? parsed;
|
|
157
|
-
if (resp.usage)
|
|
158
|
-
lastUsage = resp.usage;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
catch {
|
|
162
|
-
// Final buffer wasn't valid JSON
|
|
163
|
-
}
|
|
164
|
-
}
|
|
100
|
+
// Images API doesn't support streaming — do a full request
|
|
101
|
+
// and emit any text content as a single chunk
|
|
102
|
+
const response = await this.complete(request, options);
|
|
103
|
+
const blocks = response.content;
|
|
104
|
+
for (const block of blocks) {
|
|
105
|
+
if (block.type === 'text' && block.text) {
|
|
106
|
+
callbacks.onChunk(block.text);
|
|
165
107
|
}
|
|
166
|
-
const cachedTokens = lastUsage?.input_tokens_details?.cached_tokens ?? 0;
|
|
167
|
-
return {
|
|
168
|
-
content: this.buildContentBlocks(accumulated, images),
|
|
169
|
-
stopReason: 'end_turn',
|
|
170
|
-
stopSequence: undefined,
|
|
171
|
-
usage: {
|
|
172
|
-
inputTokens: lastUsage?.input_tokens ?? 0,
|
|
173
|
-
outputTokens: lastUsage?.output_tokens ?? 0,
|
|
174
|
-
cacheReadTokens: cachedTokens > 0 ? cachedTokens : undefined,
|
|
175
|
-
},
|
|
176
|
-
model: request.model,
|
|
177
|
-
rawRequest: responsesRequest,
|
|
178
|
-
raw: { usage: lastUsage },
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
throw this.handleError(error, responsesRequest);
|
|
183
108
|
}
|
|
109
|
+
return response;
|
|
184
110
|
}
|
|
185
111
|
// --------------------------------------------------------------------------
|
|
186
112
|
// Request Building
|
|
@@ -195,15 +121,76 @@ export class OpenAIResponsesAdapter {
|
|
|
195
121
|
}
|
|
196
122
|
return headers;
|
|
197
123
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Extract base64 images from conversation messages as data URLs.
|
|
126
|
+
* Used to determine whether to use /edits (with images) or /generations.
|
|
127
|
+
* Returns up to 16 images (OpenAI limit for /v1/images/edits).
|
|
128
|
+
*/
|
|
129
|
+
extractImages(request) {
|
|
130
|
+
const dataUrls = [];
|
|
131
|
+
const MAX_IMAGES = 16;
|
|
132
|
+
if (!request.messages)
|
|
133
|
+
return dataUrls;
|
|
134
|
+
for (const msg of request.messages) {
|
|
135
|
+
if (!Array.isArray(msg.content))
|
|
136
|
+
continue;
|
|
137
|
+
for (const block of msg.content) {
|
|
138
|
+
if (dataUrls.length >= MAX_IMAGES)
|
|
139
|
+
break;
|
|
140
|
+
if (block.type === 'image') {
|
|
141
|
+
const source = block.source;
|
|
142
|
+
if (source?.type === 'base64' && source.data) {
|
|
143
|
+
const mimeType = source.media_type ?? source.mediaType ?? 'image/png';
|
|
144
|
+
dataUrls.push(`data:${mimeType};base64,${source.data}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return dataUrls;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Convert a base64 data URL to a Buffer + mimeType for file upload.
|
|
153
|
+
*/
|
|
154
|
+
dataUrlToBuffer(dataUrl) {
|
|
155
|
+
const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/s);
|
|
156
|
+
if (!match || !match[1] || !match[2]) {
|
|
157
|
+
throw new Error('Invalid data URL format');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
mimeType: match[1],
|
|
161
|
+
buffer: Buffer.from(match[2], 'base64'),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
buildRequest(request, inputImages) {
|
|
165
|
+
const prompt = this.flattenToPrompt(request);
|
|
166
|
+
const imagesRequest = {
|
|
202
167
|
model: request.model,
|
|
203
|
-
|
|
204
|
-
|
|
168
|
+
prompt,
|
|
169
|
+
n: 1,
|
|
170
|
+
quality: 'auto',
|
|
205
171
|
};
|
|
206
|
-
//
|
|
172
|
+
// Include input images for the /edits endpoint
|
|
173
|
+
if (inputImages.length > 0) {
|
|
174
|
+
imagesRequest.image = inputImages;
|
|
175
|
+
}
|
|
176
|
+
// Apply extra params (allow overriding size, quality, n, etc.)
|
|
177
|
+
if (request.extra) {
|
|
178
|
+
const { normalizedMessages, prompt: _p, ...rest } = request.extra;
|
|
179
|
+
Object.assign(imagesRequest, rest);
|
|
180
|
+
}
|
|
181
|
+
return imagesRequest;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Flatten conversation messages into a single prompt string.
|
|
185
|
+
*
|
|
186
|
+
* The Images API takes a single text prompt, not a conversation.
|
|
187
|
+
* We include the system prompt as context and concatenate all
|
|
188
|
+
* message text with role labels so the model understands the
|
|
189
|
+
* full conversation when deciding what image to generate.
|
|
190
|
+
*/
|
|
191
|
+
flattenToPrompt(request) {
|
|
192
|
+
const parts = [];
|
|
193
|
+
// Include system prompt as context
|
|
207
194
|
if (request.system) {
|
|
208
195
|
const systemText = typeof request.system === 'string'
|
|
209
196
|
? request.system
|
|
@@ -212,120 +199,56 @@ export class OpenAIResponsesAdapter {
|
|
|
212
199
|
.map((b) => b.text)
|
|
213
200
|
.join('\n');
|
|
214
201
|
if (systemText) {
|
|
215
|
-
|
|
202
|
+
parts.push(systemText);
|
|
216
203
|
}
|
|
217
204
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
if (request.model?.includes('image')) {
|
|
226
|
-
responsesRequest.tools = [{ type: 'image_generation' }];
|
|
227
|
-
}
|
|
228
|
-
// Apply extra params (filter out internal membrane fields)
|
|
229
|
-
if (request.extra) {
|
|
230
|
-
const { normalizedMessages, prompt, ...rest } = request.extra;
|
|
231
|
-
Object.assign(responsesRequest, rest);
|
|
232
|
-
}
|
|
233
|
-
return responsesRequest;
|
|
234
|
-
}
|
|
235
|
-
convertMessages(messages) {
|
|
236
|
-
const result = [];
|
|
237
|
-
for (const msg of messages) {
|
|
238
|
-
const role = this.mapRole(msg.role);
|
|
239
|
-
// Simple string content
|
|
240
|
-
if (typeof msg.content === 'string') {
|
|
241
|
-
result.push({ role, content: msg.content });
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
// Array content blocks (Anthropic-style)
|
|
245
|
-
if (Array.isArray(msg.content)) {
|
|
246
|
-
const parts = [];
|
|
247
|
-
for (const block of msg.content) {
|
|
248
|
-
if (block.type === 'text') {
|
|
249
|
-
if (block.text) {
|
|
250
|
-
parts.push({ type: 'input_text', text: block.text });
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
else if (block.type === 'image') {
|
|
254
|
-
const source = block.source;
|
|
255
|
-
if (source?.type === 'base64' && source.data) {
|
|
256
|
-
const mimeType = source.media_type ?? source.mediaType ?? 'image/jpeg';
|
|
257
|
-
parts.push({
|
|
258
|
-
type: 'input_image',
|
|
259
|
-
image_url: `data:${mimeType};base64,${source.data}`,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
// tool_use and tool_result are not supported in the Responses API input
|
|
264
|
-
// for image models — skip them silently
|
|
205
|
+
// Extract text from messages with role labels
|
|
206
|
+
if (request.messages) {
|
|
207
|
+
for (const msg of request.messages) {
|
|
208
|
+
const role = msg.role === 'assistant' ? 'Assistant' : 'User';
|
|
209
|
+
let text = '';
|
|
210
|
+
if (typeof msg.content === 'string') {
|
|
211
|
+
text = msg.content;
|
|
265
212
|
}
|
|
266
|
-
if (
|
|
267
|
-
|
|
213
|
+
else if (Array.isArray(msg.content)) {
|
|
214
|
+
text = msg.content
|
|
215
|
+
.filter((b) => b.type === 'text' && b.text)
|
|
216
|
+
.map((b) => b.text)
|
|
217
|
+
.join('\n');
|
|
218
|
+
}
|
|
219
|
+
if (text) {
|
|
220
|
+
parts.push(`${role}: ${text}`);
|
|
268
221
|
}
|
|
269
|
-
continue;
|
|
270
222
|
}
|
|
271
|
-
// Null/empty content — skip
|
|
272
|
-
if (msg.content === null || msg.content === undefined)
|
|
273
|
-
continue;
|
|
274
|
-
// Fallback
|
|
275
|
-
result.push({ role, content: String(msg.content) });
|
|
276
|
-
}
|
|
277
|
-
return result;
|
|
278
|
-
}
|
|
279
|
-
mapRole(role) {
|
|
280
|
-
switch (role) {
|
|
281
|
-
case 'user':
|
|
282
|
-
return 'user';
|
|
283
|
-
case 'assistant':
|
|
284
|
-
return 'assistant';
|
|
285
|
-
case 'system':
|
|
286
|
-
return 'developer';
|
|
287
|
-
default:
|
|
288
|
-
return 'user';
|
|
289
223
|
}
|
|
224
|
+
return parts.join('\n\n');
|
|
290
225
|
}
|
|
291
226
|
// --------------------------------------------------------------------------
|
|
292
227
|
// Response Parsing
|
|
293
228
|
// --------------------------------------------------------------------------
|
|
294
229
|
parseResponse(response, requestedModel, rawRequest) {
|
|
295
|
-
let text = '';
|
|
296
230
|
const images = [];
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
if (content.type === 'output_text') {
|
|
301
|
-
text += content.text;
|
|
302
|
-
}
|
|
303
|
-
else if (content.type === 'image_generation_call') {
|
|
304
|
-
images.push({
|
|
305
|
-
data: content.result,
|
|
306
|
-
mimeType: 'image/png',
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
else if (item.type === 'image_generation_call') {
|
|
231
|
+
let revisedPrompt;
|
|
232
|
+
for (const item of response.data) {
|
|
233
|
+
if (item.b64_json) {
|
|
312
234
|
images.push({
|
|
313
|
-
data: item.
|
|
235
|
+
data: item.b64_json,
|
|
314
236
|
mimeType: 'image/png',
|
|
315
237
|
});
|
|
316
238
|
}
|
|
239
|
+
if (item.revised_prompt) {
|
|
240
|
+
revisedPrompt = item.revised_prompt;
|
|
241
|
+
}
|
|
317
242
|
}
|
|
318
|
-
const cachedTokens = response.usage?.input_tokens_details?.cached_tokens ?? 0;
|
|
319
243
|
return {
|
|
320
|
-
content: this.buildContentBlocks(
|
|
244
|
+
content: this.buildContentBlocks(revisedPrompt, images),
|
|
321
245
|
stopReason: 'end_turn',
|
|
322
246
|
stopSequence: undefined,
|
|
323
247
|
usage: {
|
|
324
248
|
inputTokens: response.usage?.input_tokens ?? 0,
|
|
325
249
|
outputTokens: response.usage?.output_tokens ?? 0,
|
|
326
|
-
cacheReadTokens: cachedTokens > 0 ? cachedTokens : undefined,
|
|
327
250
|
},
|
|
328
|
-
model:
|
|
251
|
+
model: requestedModel,
|
|
329
252
|
rawRequest,
|
|
330
253
|
raw: response,
|
|
331
254
|
};
|
|
@@ -367,6 +290,17 @@ export class OpenAIResponsesAdapter {
|
|
|
367
290
|
message.includes('too long')) {
|
|
368
291
|
return contextLengthError(message, error, rawRequest);
|
|
369
292
|
}
|
|
293
|
+
if (message.includes('content_policy') ||
|
|
294
|
+
message.includes('safety_system') ||
|
|
295
|
+
message.includes('moderation')) {
|
|
296
|
+
return new MembraneError({
|
|
297
|
+
type: 'unknown',
|
|
298
|
+
message: `Content policy violation: ${message}`,
|
|
299
|
+
retryable: false,
|
|
300
|
+
rawError: error,
|
|
301
|
+
rawRequest,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
370
304
|
if (message.includes('500') ||
|
|
371
305
|
message.includes('502') ||
|
|
372
306
|
message.includes('503') ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-responses.js","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-responses.js","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"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"}
|