ai.matey.frontend 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/dist/cjs/adapters/anthropic.js +156 -16
- package/dist/cjs/adapters/anthropic.js.map +1 -1
- package/dist/cjs/adapters/chrome-ai.js +58 -0
- package/dist/cjs/adapters/chrome-ai.js.map +1 -1
- package/dist/cjs/adapters/gemini.js +57 -0
- package/dist/cjs/adapters/gemini.js.map +1 -1
- package/dist/cjs/adapters/generic.js +56 -4
- package/dist/cjs/adapters/generic.js.map +1 -1
- package/dist/cjs/adapters/mistral.js +59 -0
- package/dist/cjs/adapters/mistral.js.map +1 -1
- package/dist/cjs/adapters/ollama.js +59 -0
- package/dist/cjs/adapters/ollama.js.map +1 -1
- package/dist/cjs/adapters/openai.js +199 -32
- package/dist/cjs/adapters/openai.js.map +1 -1
- package/dist/esm/adapters/anthropic.js +156 -16
- package/dist/esm/adapters/anthropic.js.map +1 -1
- package/dist/esm/adapters/chrome-ai.js +58 -0
- package/dist/esm/adapters/chrome-ai.js.map +1 -1
- package/dist/esm/adapters/gemini.js +57 -0
- package/dist/esm/adapters/gemini.js.map +1 -1
- package/dist/esm/adapters/generic.js +56 -4
- package/dist/esm/adapters/generic.js.map +1 -1
- package/dist/esm/adapters/mistral.js +59 -0
- package/dist/esm/adapters/mistral.js.map +1 -1
- package/dist/esm/adapters/ollama.js +59 -0
- package/dist/esm/adapters/ollama.js.map +1 -1
- package/dist/esm/adapters/openai.js +199 -32
- package/dist/esm/adapters/openai.js.map +1 -1
- package/dist/types/adapters/anthropic.d.ts +254 -8
- package/dist/types/adapters/anthropic.d.ts.map +1 -1
- package/dist/types/adapters/chrome-ai.d.ts +95 -0
- package/dist/types/adapters/chrome-ai.d.ts.map +1 -1
- package/dist/types/adapters/gemini.d.ts +170 -0
- package/dist/types/adapters/gemini.d.ts.map +1 -1
- package/dist/types/adapters/generic.d.ts +56 -4
- package/dist/types/adapters/generic.d.ts.map +1 -1
- package/dist/types/adapters/mistral.d.ts +143 -0
- package/dist/types/adapters/mistral.d.ts.map +1 -1
- package/dist/types/adapters/ollama.d.ts +132 -0
- package/dist/types/adapters/ollama.d.ts.map +1 -1
- package/dist/types/adapters/openai.d.ts +252 -8
- package/dist/types/adapters/openai.d.ts.map +1 -1
- package/package.json +2 -3
|
@@ -19,6 +19,27 @@ export class OllamaFrontendAdapter {
|
|
|
19
19
|
supportsMultipleSystemMessages: false,
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* Convert Ollama API request to Universal IR format.
|
|
24
|
+
*
|
|
25
|
+
* This method transforms an Ollama-formatted request into the standardized
|
|
26
|
+
* Intermediate Representation (IR) format. It handles Ollama's unique
|
|
27
|
+
* structure where parameters are nested in an `options` object, and maps
|
|
28
|
+
* Ollama-specific field names (e.g., num_predict → maxTokens).
|
|
29
|
+
*
|
|
30
|
+
* @param request - Ollama API request
|
|
31
|
+
* @returns Promise resolving to IR chat request
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const adapter = new OllamaFrontendAdapter();
|
|
36
|
+
* const irRequest = await adapter.toIR({
|
|
37
|
+
* model: 'llama2',
|
|
38
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
39
|
+
* options: { temperature: 0.7, num_predict: 100 }
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
22
43
|
toIR(request) {
|
|
23
44
|
const messages = request.messages.map((msg) => ({
|
|
24
45
|
role: msg.role,
|
|
@@ -42,6 +63,24 @@ export class OllamaFrontendAdapter {
|
|
|
42
63
|
stream: request.stream,
|
|
43
64
|
});
|
|
44
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Convert Universal IR response back to Ollama API format.
|
|
68
|
+
*
|
|
69
|
+
* This method transforms the standardized IR response into the format
|
|
70
|
+
* expected by Ollama's API. It handles message conversion, formats the
|
|
71
|
+
* timestamp as ISO string, and maps usage statistics to Ollama's format
|
|
72
|
+
* (prompt_eval_count and eval_count instead of token counts).
|
|
73
|
+
*
|
|
74
|
+
* @param response - Universal IR chat response
|
|
75
|
+
* @returns Promise resolving to Ollama API response
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const adapter = new OllamaFrontendAdapter();
|
|
80
|
+
* const ollamaResponse = await adapter.fromIR(irResponse);
|
|
81
|
+
* console.log(ollamaResponse.message.content);
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
45
84
|
fromIR(response) {
|
|
46
85
|
return Promise.resolve({
|
|
47
86
|
model: response.metadata.custom?.model || 'unknown',
|
|
@@ -55,6 +94,26 @@ export class OllamaFrontendAdapter {
|
|
|
55
94
|
eval_count: response.usage?.completionTokens,
|
|
56
95
|
});
|
|
57
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Convert Universal IR stream to Ollama streaming format.
|
|
99
|
+
*
|
|
100
|
+
* This async generator method transforms a stream of IR chunks into
|
|
101
|
+
* Ollama-formatted responses. It yields newline-delimited JSON objects
|
|
102
|
+
* (not SSE format) with each chunk containing a message and done flag,
|
|
103
|
+
* emitting `done: true` when the stream completes.
|
|
104
|
+
*
|
|
105
|
+
* @param stream - Universal IR chat stream
|
|
106
|
+
* @param _options - Optional stream conversion options (currently unused)
|
|
107
|
+
* @yields Newline-delimited JSON strings
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const adapter = new OllamaFrontendAdapter();
|
|
112
|
+
* for await (const jsonLine of adapter.fromIRStream(irStream)) {
|
|
113
|
+
* console.log(jsonLine); // '{"message":{"content":"text"},"done":false}\n'
|
|
114
|
+
* }
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
58
117
|
async *fromIRStream(stream, _options) {
|
|
59
118
|
for await (const chunk of stream) {
|
|
60
119
|
if (chunk.type === 'content') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/adapters/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/adapters/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+HH,MAAM,OAAO,qBAAqB;IACvB,QAAQ,GAAoB;QACnC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE;YACZ,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,KAAK;YACZ,qBAAqB,EAAE,aAAa;YACpC,8BAA8B,EAAE,KAAK;SACtC;KACF,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,OAAsB;QACzB,MAAM,QAAQ,GAAgB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAkB,EAAE,EAAE,CAAC,CAAC;YAC1E,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC,CAAC;QAEJ,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,QAAQ;YACR,UAAU,EAAE;gBACV,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW;gBACzC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK;gBAC5B,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK;gBAC5B,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW;gBACvC,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI;aACrC;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE;gBACjC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;aAC7C;YACD,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,QAAwB;QAC7B,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,EAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAgB,IAAI,SAAS;YAC/D,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE;gBACP,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;aACtF;YACD,IAAI,EAAE,IAAI;YACV,iBAAiB,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY;YAC/C,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,gBAAgB;SAC7C,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,CAAC,YAAY,CACjB,MAAqC,EACrC,QAAkC;QAElC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;YAClF,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -36,7 +36,26 @@ export class OpenAIFrontendAdapter {
|
|
|
36
36
|
},
|
|
37
37
|
};
|
|
38
38
|
/**
|
|
39
|
-
* Convert OpenAI request to Universal IR.
|
|
39
|
+
* Convert OpenAI Chat Completions API request to Universal IR format.
|
|
40
|
+
*
|
|
41
|
+
* This method transforms an OpenAI-formatted request into the standardized
|
|
42
|
+
* Intermediate Representation (IR) format used across all AI Matey adapters.
|
|
43
|
+
* Since OpenAI's format is similar to IR, this is largely a pass-through
|
|
44
|
+
* with field name mapping.
|
|
45
|
+
*
|
|
46
|
+
* @param request - OpenAI Chat Completions API request
|
|
47
|
+
* @returns Promise resolving to IR chat request
|
|
48
|
+
* @throws {AdapterConversionError} If conversion fails
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const adapter = new OpenAIFrontendAdapter();
|
|
53
|
+
* const irRequest = await adapter.toIR({
|
|
54
|
+
* model: 'gpt-4',
|
|
55
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
56
|
+
* temperature: 0.7
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
40
59
|
*/
|
|
41
60
|
toIR(request) {
|
|
42
61
|
try {
|
|
@@ -56,6 +75,19 @@ export class OpenAIFrontendAdapter {
|
|
|
56
75
|
seed: request.seed,
|
|
57
76
|
user: request.user,
|
|
58
77
|
},
|
|
78
|
+
tools: request.tools?.map((tool) => ({
|
|
79
|
+
name: tool.function.name,
|
|
80
|
+
description: tool.function.description ?? '',
|
|
81
|
+
parameters: (tool.function.parameters ?? {
|
|
82
|
+
type: 'object',
|
|
83
|
+
properties: {},
|
|
84
|
+
}),
|
|
85
|
+
})),
|
|
86
|
+
toolChoice: request.tool_choice === undefined
|
|
87
|
+
? undefined
|
|
88
|
+
: typeof request.tool_choice === 'string'
|
|
89
|
+
? request.tool_choice
|
|
90
|
+
: { name: request.tool_choice.function.name },
|
|
59
91
|
stream: request.stream ?? false,
|
|
60
92
|
metadata: {
|
|
61
93
|
requestId: crypto.randomUUID(),
|
|
@@ -79,7 +111,22 @@ export class OpenAIFrontendAdapter {
|
|
|
79
111
|
}
|
|
80
112
|
}
|
|
81
113
|
/**
|
|
82
|
-
* Convert Universal IR response to OpenAI format.
|
|
114
|
+
* Convert Universal IR response back to OpenAI Chat Completions API format.
|
|
115
|
+
*
|
|
116
|
+
* This method transforms the standardized IR response into the format
|
|
117
|
+
* expected by OpenAI's Chat Completions API. It handles message conversion,
|
|
118
|
+
* finish reason mapping, and usage statistics formatting.
|
|
119
|
+
*
|
|
120
|
+
* @param response - Universal IR chat response
|
|
121
|
+
* @returns Promise resolving to OpenAI Chat Completions response
|
|
122
|
+
* @throws {AdapterConversionError} If conversion fails
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const adapter = new OpenAIFrontendAdapter();
|
|
127
|
+
* const openaiResponse = await adapter.fromIR(irResponse);
|
|
128
|
+
* console.log(openaiResponse.choices[0].message.content);
|
|
129
|
+
* ```
|
|
83
130
|
*/
|
|
84
131
|
fromIR(response) {
|
|
85
132
|
try {
|
|
@@ -122,7 +169,25 @@ export class OpenAIFrontendAdapter {
|
|
|
122
169
|
}
|
|
123
170
|
}
|
|
124
171
|
/**
|
|
125
|
-
* Convert Universal IR stream to OpenAI SSE format.
|
|
172
|
+
* Convert Universal IR stream to OpenAI Server-Sent Events (SSE) format.
|
|
173
|
+
*
|
|
174
|
+
* This async generator method transforms a stream of IR chunks into
|
|
175
|
+
* OpenAI-formatted streaming chunks. It handles stream mode conversion
|
|
176
|
+
* (delta/full/text), tracks message metadata, and emits properly
|
|
177
|
+
* formatted SSE events compatible with OpenAI's streaming API.
|
|
178
|
+
*
|
|
179
|
+
* @param stream - Universal IR chat stream
|
|
180
|
+
* @param options - Optional stream conversion options (stream mode, etc.)
|
|
181
|
+
* @yields OpenAI-formatted streaming chunks
|
|
182
|
+
* @throws {AdapterConversionError} If stream conversion fails
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* const adapter = new OpenAIFrontendAdapter();
|
|
187
|
+
* for await (const chunk of adapter.fromIRStream(irStream)) {
|
|
188
|
+
* console.log(chunk.choices[0].delta.content);
|
|
189
|
+
* }
|
|
190
|
+
* ```
|
|
126
191
|
*/
|
|
127
192
|
async *fromIRStream(stream, options) {
|
|
128
193
|
try {
|
|
@@ -131,6 +196,8 @@ export class OpenAIFrontendAdapter {
|
|
|
131
196
|
let messageId = '';
|
|
132
197
|
let model = '';
|
|
133
198
|
let created = 0;
|
|
199
|
+
// Tool-call ids already announced (id/name are only emitted once per call)
|
|
200
|
+
const announcedToolCalls = new Map();
|
|
134
201
|
for await (const chunk of processedStream) {
|
|
135
202
|
switch (chunk.type) {
|
|
136
203
|
case 'start':
|
|
@@ -139,6 +206,47 @@ export class OpenAIFrontendAdapter {
|
|
|
139
206
|
model = chunk.metadata.provenance?.backend || 'unknown';
|
|
140
207
|
created = Math.floor(chunk.metadata.timestamp / 1000);
|
|
141
208
|
break;
|
|
209
|
+
case 'tool_use': {
|
|
210
|
+
const isFirst = !announcedToolCalls.has(chunk.id);
|
|
211
|
+
const index = isFirst
|
|
212
|
+
? (chunk.index ?? announcedToolCalls.size)
|
|
213
|
+
: announcedToolCalls.get(chunk.id);
|
|
214
|
+
if (isFirst) {
|
|
215
|
+
announcedToolCalls.set(chunk.id, index);
|
|
216
|
+
}
|
|
217
|
+
yield {
|
|
218
|
+
id: messageId,
|
|
219
|
+
object: 'chat.completion.chunk',
|
|
220
|
+
created,
|
|
221
|
+
model,
|
|
222
|
+
choices: [
|
|
223
|
+
{
|
|
224
|
+
index: 0,
|
|
225
|
+
delta: {
|
|
226
|
+
tool_calls: [
|
|
227
|
+
{
|
|
228
|
+
index,
|
|
229
|
+
...(isFirst
|
|
230
|
+
? {
|
|
231
|
+
id: chunk.id,
|
|
232
|
+
type: 'function',
|
|
233
|
+
function: {
|
|
234
|
+
name: chunk.name,
|
|
235
|
+
arguments: chunk.inputDelta ?? '',
|
|
236
|
+
},
|
|
237
|
+
}
|
|
238
|
+
: {
|
|
239
|
+
function: { arguments: chunk.inputDelta ?? '' },
|
|
240
|
+
}),
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
},
|
|
244
|
+
finish_reason: null,
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
};
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
142
250
|
case 'content':
|
|
143
251
|
// Emit content delta
|
|
144
252
|
yield {
|
|
@@ -194,6 +302,24 @@ export class OpenAIFrontendAdapter {
|
|
|
194
302
|
* Convert OpenAI message to IR message.
|
|
195
303
|
*/
|
|
196
304
|
convertMessageToIR(message) {
|
|
305
|
+
// Tool result message (role 'tool') becomes a tool_result content block
|
|
306
|
+
if (message.role === 'tool' && message.tool_call_id) {
|
|
307
|
+
return {
|
|
308
|
+
role: 'tool',
|
|
309
|
+
content: [
|
|
310
|
+
{
|
|
311
|
+
type: 'tool_result',
|
|
312
|
+
toolUseId: message.tool_call_id,
|
|
313
|
+
content: typeof message.content === 'string'
|
|
314
|
+
? message.content
|
|
315
|
+
: message.content
|
|
316
|
+
.map((block) => (block.type === 'text' ? block.text : ''))
|
|
317
|
+
.join(''),
|
|
318
|
+
},
|
|
319
|
+
],
|
|
320
|
+
name: message.name,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
197
323
|
// Convert content
|
|
198
324
|
let content;
|
|
199
325
|
if (typeof message.content === 'string') {
|
|
@@ -215,51 +341,92 @@ export class OpenAIFrontendAdapter {
|
|
|
215
341
|
}
|
|
216
342
|
});
|
|
217
343
|
}
|
|
344
|
+
// Assistant tool calls become tool_use content blocks
|
|
345
|
+
if (message.tool_calls && message.tool_calls.length > 0) {
|
|
346
|
+
const blocks = typeof content === 'string' ? (content ? [{ type: 'text', text: content }] : []) : content;
|
|
347
|
+
content = [
|
|
348
|
+
...blocks,
|
|
349
|
+
...message.tool_calls.map((call) => ({
|
|
350
|
+
type: 'tool_use',
|
|
351
|
+
id: call.id,
|
|
352
|
+
name: call.function.name,
|
|
353
|
+
input: this.parseToolArguments(call.function.arguments),
|
|
354
|
+
})),
|
|
355
|
+
];
|
|
356
|
+
}
|
|
218
357
|
return {
|
|
219
358
|
role: message.role,
|
|
220
359
|
content,
|
|
221
360
|
name: message.name,
|
|
222
361
|
};
|
|
223
362
|
}
|
|
363
|
+
/**
|
|
364
|
+
* Parse tool-call arguments defensively (malformed JSON degrades to {}).
|
|
365
|
+
*/
|
|
366
|
+
parseToolArguments(args) {
|
|
367
|
+
try {
|
|
368
|
+
const parsed = JSON.parse(args);
|
|
369
|
+
if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
370
|
+
return parsed;
|
|
371
|
+
}
|
|
372
|
+
return {};
|
|
373
|
+
}
|
|
374
|
+
catch {
|
|
375
|
+
return {};
|
|
376
|
+
}
|
|
377
|
+
}
|
|
224
378
|
/**
|
|
225
379
|
* Convert IR message to OpenAI message.
|
|
226
380
|
*/
|
|
227
381
|
convertMessageFromIR(message) {
|
|
228
|
-
// Convert content
|
|
229
|
-
let content;
|
|
230
382
|
if (typeof message.content === 'string') {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
case 'text':
|
|
237
|
-
return { type: 'text', text: block.text };
|
|
238
|
-
case 'image':
|
|
239
|
-
if (block.source.type === 'url') {
|
|
240
|
-
return {
|
|
241
|
-
type: 'image_url',
|
|
242
|
-
image_url: { url: block.source.url },
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
// Convert base64 to data URL
|
|
247
|
-
const dataUrl = `data:${block.source.mediaType};base64,${block.source.data}`;
|
|
248
|
-
return {
|
|
249
|
-
type: 'image_url',
|
|
250
|
-
image_url: { url: dataUrl },
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
default:
|
|
254
|
-
// Fallback to text
|
|
255
|
-
return { type: 'text', text: JSON.stringify(block) };
|
|
256
|
-
}
|
|
257
|
-
});
|
|
383
|
+
return {
|
|
384
|
+
role: message.role,
|
|
385
|
+
content: message.content,
|
|
386
|
+
name: message.name,
|
|
387
|
+
};
|
|
258
388
|
}
|
|
389
|
+
// Separate tool calls from displayable content
|
|
390
|
+
const toolUses = message.content.filter((block) => block.type === 'tool_use');
|
|
391
|
+
const otherBlocks = message.content.filter((block) => block.type !== 'tool_use');
|
|
392
|
+
const content = otherBlocks.map((block) => {
|
|
393
|
+
switch (block.type) {
|
|
394
|
+
case 'text':
|
|
395
|
+
return { type: 'text', text: block.text };
|
|
396
|
+
case 'image':
|
|
397
|
+
if (block.source.type === 'url') {
|
|
398
|
+
return {
|
|
399
|
+
type: 'image_url',
|
|
400
|
+
image_url: { url: block.source.url },
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
// Convert base64 to data URL
|
|
405
|
+
const dataUrl = `data:${block.source.mediaType};base64,${block.source.data}`;
|
|
406
|
+
return {
|
|
407
|
+
type: 'image_url',
|
|
408
|
+
image_url: { url: dataUrl },
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
default:
|
|
412
|
+
// Fallback to text
|
|
413
|
+
return { type: 'text', text: JSON.stringify(block) };
|
|
414
|
+
}
|
|
415
|
+
});
|
|
259
416
|
return {
|
|
260
417
|
role: message.role,
|
|
261
418
|
content,
|
|
262
419
|
name: message.name,
|
|
420
|
+
tool_calls: toolUses.length > 0
|
|
421
|
+
? toolUses.map((block) => ({
|
|
422
|
+
id: block.id,
|
|
423
|
+
type: 'function',
|
|
424
|
+
function: {
|
|
425
|
+
name: block.name,
|
|
426
|
+
arguments: JSON.stringify(block.input),
|
|
427
|
+
},
|
|
428
|
+
}))
|
|
429
|
+
: undefined,
|
|
263
430
|
};
|
|
264
431
|
}
|
|
265
432
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"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"}
|