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.
Files changed (44) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/cjs/adapters/anthropic.js +156 -16
  3. package/dist/cjs/adapters/anthropic.js.map +1 -1
  4. package/dist/cjs/adapters/chrome-ai.js +58 -0
  5. package/dist/cjs/adapters/chrome-ai.js.map +1 -1
  6. package/dist/cjs/adapters/gemini.js +57 -0
  7. package/dist/cjs/adapters/gemini.js.map +1 -1
  8. package/dist/cjs/adapters/generic.js +56 -4
  9. package/dist/cjs/adapters/generic.js.map +1 -1
  10. package/dist/cjs/adapters/mistral.js +59 -0
  11. package/dist/cjs/adapters/mistral.js.map +1 -1
  12. package/dist/cjs/adapters/ollama.js +59 -0
  13. package/dist/cjs/adapters/ollama.js.map +1 -1
  14. package/dist/cjs/adapters/openai.js +199 -32
  15. package/dist/cjs/adapters/openai.js.map +1 -1
  16. package/dist/esm/adapters/anthropic.js +156 -16
  17. package/dist/esm/adapters/anthropic.js.map +1 -1
  18. package/dist/esm/adapters/chrome-ai.js +58 -0
  19. package/dist/esm/adapters/chrome-ai.js.map +1 -1
  20. package/dist/esm/adapters/gemini.js +57 -0
  21. package/dist/esm/adapters/gemini.js.map +1 -1
  22. package/dist/esm/adapters/generic.js +56 -4
  23. package/dist/esm/adapters/generic.js.map +1 -1
  24. package/dist/esm/adapters/mistral.js +59 -0
  25. package/dist/esm/adapters/mistral.js.map +1 -1
  26. package/dist/esm/adapters/ollama.js +59 -0
  27. package/dist/esm/adapters/ollama.js.map +1 -1
  28. package/dist/esm/adapters/openai.js +199 -32
  29. package/dist/esm/adapters/openai.js.map +1 -1
  30. package/dist/types/adapters/anthropic.d.ts +254 -8
  31. package/dist/types/adapters/anthropic.d.ts.map +1 -1
  32. package/dist/types/adapters/chrome-ai.d.ts +95 -0
  33. package/dist/types/adapters/chrome-ai.d.ts.map +1 -1
  34. package/dist/types/adapters/gemini.d.ts +170 -0
  35. package/dist/types/adapters/gemini.d.ts.map +1 -1
  36. package/dist/types/adapters/generic.d.ts +56 -4
  37. package/dist/types/adapters/generic.d.ts.map +1 -1
  38. package/dist/types/adapters/mistral.d.ts +143 -0
  39. package/dist/types/adapters/mistral.d.ts.map +1 -1
  40. package/dist/types/adapters/ollama.d.ts +132 -0
  41. package/dist/types/adapters/ollama.d.ts.map +1 -1
  42. package/dist/types/adapters/openai.d.ts +252 -8
  43. package/dist/types/adapters/openai.d.ts.map +1 -1
  44. 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;AAuCH,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,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,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,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"}
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
- content = message.content;
232
- }
233
- else {
234
- content = message.content.map((block) => {
235
- switch (block.type) {
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":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/adapters/openai.ts"],"names":[],"mappings":"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"}