@mariozechner/pi-ai 0.5.13 → 0.5.15

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.
@@ -55,10 +55,8 @@ export class GoogleLLM {
55
55
  config,
56
56
  };
57
57
  const stream = await this.client.models.generateContentStream(params);
58
- let content = "";
59
- let thinking = "";
60
- let thoughtSignature;
61
- const toolCalls = [];
58
+ const blocks = [];
59
+ let currentBlock = null;
62
60
  let usage = {
63
61
  input: 0,
64
62
  output: 0,
@@ -67,66 +65,84 @@ export class GoogleLLM {
67
65
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
68
66
  };
69
67
  let stopReason = "stop";
70
- let inTextBlock = false;
71
- let inThinkingBlock = false;
72
68
  // Process the stream
73
69
  for await (const chunk of stream) {
74
70
  // Extract parts from the chunk
75
71
  const candidate = chunk.candidates?.[0];
76
72
  if (candidate?.content?.parts) {
77
73
  for (const part of candidate.content.parts) {
78
- // Cast to any to access thinking properties not yet in SDK types
79
- const partWithThinking = part;
80
- if (partWithThinking.text !== undefined) {
81
- // Check if it's thinking content using the thought boolean flag
82
- if (partWithThinking.thought === true) {
83
- if (inTextBlock) {
84
- options?.onText?.("", true);
85
- inTextBlock = false;
74
+ if (part.text !== undefined) {
75
+ const isThinking = part.thought === true;
76
+ // Check if we need to switch blocks
77
+ if (!currentBlock ||
78
+ (isThinking && currentBlock.type !== "thinking") ||
79
+ (!isThinking && currentBlock.type !== "text")) {
80
+ // Save and finalize current block
81
+ if (currentBlock) {
82
+ if (currentBlock.type === "text") {
83
+ options?.onEvent?.({ type: "text_end", content: currentBlock.text });
84
+ }
85
+ else {
86
+ options?.onEvent?.({ type: "thinking_end", content: currentBlock.thinking });
87
+ }
88
+ blocks.push(currentBlock);
86
89
  }
87
- thinking += partWithThinking.text;
88
- options?.onThinking?.(partWithThinking.text, false);
89
- inThinkingBlock = true;
90
- // Capture thought signature if present
91
- if (partWithThinking.thoughtSignature) {
92
- thoughtSignature = partWithThinking.thoughtSignature;
90
+ // Start new block
91
+ if (isThinking) {
92
+ currentBlock = { type: "thinking", thinking: "", thinkingSignature: undefined };
93
+ options?.onEvent?.({ type: "thinking_start" });
93
94
  }
95
+ else {
96
+ currentBlock = { type: "text", text: "" };
97
+ options?.onEvent?.({ type: "text_start" });
98
+ }
99
+ }
100
+ // Append content to current block
101
+ if (currentBlock.type === "thinking") {
102
+ currentBlock.thinking += part.text;
103
+ currentBlock.thinkingSignature = part.thoughtSignature;
104
+ options?.onEvent?.({
105
+ type: "thinking_delta",
106
+ content: currentBlock.thinking,
107
+ delta: part.text,
108
+ });
94
109
  }
95
110
  else {
96
- if (inThinkingBlock) {
97
- options?.onThinking?.("", true);
98
- inThinkingBlock = false;
99
- }
100
- content += partWithThinking.text;
101
- options?.onText?.(partWithThinking.text, false);
102
- inTextBlock = true;
111
+ currentBlock.text += part.text;
112
+ options?.onEvent?.({ type: "text_delta", content: currentBlock.text, delta: part.text });
103
113
  }
104
114
  }
105
115
  // Handle function calls
106
116
  if (part.functionCall) {
107
- if (inTextBlock) {
108
- options?.onText?.("", true);
109
- inTextBlock = false;
110
- }
111
- if (inThinkingBlock) {
112
- options?.onThinking?.("", true);
113
- inThinkingBlock = false;
117
+ // Save current block if exists
118
+ if (currentBlock) {
119
+ if (currentBlock.type === "text") {
120
+ options?.onEvent?.({ type: "text_end", content: currentBlock.text });
121
+ }
122
+ else {
123
+ options?.onEvent?.({ type: "thinking_end", content: currentBlock.thinking });
124
+ }
125
+ blocks.push(currentBlock);
126
+ currentBlock = null;
114
127
  }
115
- // Gemini doesn't provide tool call IDs, so we need to generate them
116
- // Use the function name as part of the ID for better debugging
117
- const toolCallId = `${part.functionCall.name}_${Date.now()}`;
118
- toolCalls.push({
128
+ // Add tool call
129
+ const toolCallId = part.functionCall.id || `${part.functionCall.name}_${Date.now()}`;
130
+ const toolCall = {
131
+ type: "toolCall",
119
132
  id: toolCallId,
120
133
  name: part.functionCall.name || "",
121
134
  arguments: part.functionCall.args,
122
- });
135
+ };
136
+ blocks.push(toolCall);
137
+ options?.onEvent?.({ type: "toolCall", toolCall });
123
138
  }
124
139
  }
125
140
  }
126
141
  // Map finish reason
127
142
  if (candidate?.finishReason) {
128
143
  stopReason = this.mapStopReason(candidate.finishReason);
129
- if (toolCalls.length > 0) {
144
+ // Check if we have tool calls in blocks
145
+ if (blocks.some((b) => b.type === "toolCall")) {
130
146
  stopReason = "toolUse";
131
147
  }
132
148
  }
@@ -147,43 +163,32 @@ export class GoogleLLM {
147
163
  };
148
164
  }
149
165
  }
150
- // Signal end of blocks
151
- if (inTextBlock) {
152
- options?.onText?.("", true);
153
- }
154
- if (inThinkingBlock) {
155
- options?.onThinking?.("", true);
156
- }
157
- // Generate a thinking signature if we have thinking content but no signature from API
158
- // This is needed for proper multi-turn conversations with thinking
159
- if (thinking && !thoughtSignature) {
160
- // Create a base64-encoded signature as Gemini expects
161
- // In production, Gemini API should provide this
162
- const encoder = new TextEncoder();
163
- const data = encoder.encode(thinking);
164
- // Create a simple hash-like signature and encode to base64
165
- const signature = `gemini_thinking_${data.length}_${Date.now()}`;
166
- thoughtSignature = Buffer.from(signature).toString("base64");
166
+ // Save final block if exists
167
+ if (currentBlock) {
168
+ if (currentBlock.type === "text") {
169
+ options?.onEvent?.({ type: "text_end", content: currentBlock.text });
170
+ }
171
+ else {
172
+ options?.onEvent?.({ type: "thinking_end", content: currentBlock.thinking });
173
+ }
174
+ blocks.push(currentBlock);
167
175
  }
168
- // Calculate cost
169
176
  calculateCost(this.model, usage);
170
- // Usage metadata is in the last chunk
171
- // Already captured during streaming
172
- return {
177
+ const output = {
173
178
  role: "assistant",
174
- content: content || undefined,
175
- thinking: thinking || undefined,
176
- thinkingSignature: thoughtSignature,
177
- toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
179
+ content: blocks,
178
180
  provider: this.model.provider,
179
181
  model: this.model.id,
180
182
  usage,
181
183
  stopReason,
182
184
  };
185
+ options?.onEvent?.({ type: "done", reason: stopReason, message: output });
186
+ return output;
183
187
  }
184
188
  catch (error) {
185
- return {
189
+ const output = {
186
190
  role: "assistant",
191
+ content: [],
187
192
  provider: this.model.provider,
188
193
  model: this.model.id,
189
194
  usage: {
@@ -194,8 +199,10 @@ export class GoogleLLM {
194
199
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
195
200
  },
196
201
  stopReason: "error",
197
- error: error instanceof Error ? error.message : String(error),
202
+ error: error instanceof Error ? error.message : JSON.stringify(error),
198
203
  };
204
+ options?.onEvent?.({ type: "error", error: output.error });
205
+ return output;
199
206
  }
200
207
  }
201
208
  convertMessages(messages) {
@@ -233,26 +240,25 @@ export class GoogleLLM {
233
240
  }
234
241
  else if (msg.role === "assistant") {
235
242
  const parts = [];
236
- // Add thinking if present
237
- // Note: We include thinkingSignature in our response for multi-turn context,
238
- // but don't send it back to Gemini API as it may cause errors
239
- if (msg.thinking) {
240
- parts.push({
241
- text: msg.thinking,
242
- thought: true,
243
- // Don't include thoughtSignature when sending back to API
244
- // thoughtSignature: msg.thinkingSignature,
245
- });
246
- }
247
- if (msg.content) {
248
- parts.push({ text: msg.content });
249
- }
250
- if (msg.toolCalls) {
251
- for (const toolCall of msg.toolCalls) {
243
+ // Process content blocks
244
+ for (const block of msg.content) {
245
+ if (block.type === "text") {
246
+ parts.push({ text: block.text });
247
+ }
248
+ else if (block.type === "thinking") {
249
+ const thinkingPart = {
250
+ thought: true,
251
+ thoughtSignature: block.thinkingSignature,
252
+ text: block.thinking,
253
+ };
254
+ parts.push(thinkingPart);
255
+ }
256
+ else if (block.type === "toolCall") {
252
257
  parts.push({
253
258
  functionCall: {
254
- name: toolCall.name,
255
- args: toolCall.arguments,
259
+ id: block.id,
260
+ name: block.name,
261
+ args: block.arguments,
256
262
  },
257
263
  });
258
264
  }
@@ -265,18 +271,16 @@ export class GoogleLLM {
265
271
  }
266
272
  }
267
273
  else if (msg.role === "toolResult") {
268
- // Tool results are sent as function responses
269
- // Extract function name from the tool call ID (format: "functionName_timestamp")
270
- const functionName = msg.toolCallId.substring(0, msg.toolCallId.lastIndexOf("_"));
271
274
  contents.push({
272
275
  role: "user",
273
276
  parts: [
274
277
  {
275
278
  functionResponse: {
276
- name: functionName,
279
+ id: msg.toolCallId,
280
+ name: msg.toolName,
277
281
  response: {
278
282
  result: msg.content,
279
- isError: msg.isError || false,
283
+ isError: msg.isError,
280
284
  },
281
285
  },
282
286
  },
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai-completions.d.ts","sourceRoot":"","sources":["../../src/providers/openai-completions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,gBAAgB,EAChB,OAAO,EACP,GAAG,EACH,UAAU,EAEV,KAAK,EAKL,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,2BAA4B,SAAQ,UAAU;IAC9D,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC7F,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC5C;AAED,qBAAa,oBAAqB,YAAW,GAAG,CAAC,2BAA2B,CAAC;IAC5E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAQ;gBAEb,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM;IAazC,QAAQ,IAAI,KAAK;IAIX,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+MlG,OAAO,CAAC,eAAe;IAiFvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;CAerB"}
1
+ {"version":3,"file":"openai-completions.d.ts","sourceRoot":"","sources":["../../src/providers/openai-completions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,gBAAgB,EAChB,OAAO,EACP,GAAG,EACH,UAAU,EAEV,KAAK,EAOL,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,2BAA4B,SAAQ,UAAU;IAC9D,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC7F,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC5C;AAED,qBAAa,oBAAqB,YAAW,GAAG,CAAC,2BAA2B,CAAC;IAC5E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAQ;gBAEb,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM;IAazC,QAAQ,IAAI,KAAK;IAIX,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgRlG,OAAO,CAAC,eAAe;IA8FvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;CAerB"}
@@ -49,10 +49,8 @@ export class OpenAICompletionsLLM {
49
49
  const stream = await this.client.chat.completions.create(params, {
50
50
  signal: options?.signal,
51
51
  });
52
- let content = "";
53
- let reasoningContent = "";
54
- let reasoningField = null;
55
- const parsedToolCalls = [];
52
+ const blocks = [];
53
+ let currentBlock = null;
56
54
  let usage = {
57
55
  input: 0,
58
56
  output: 0,
@@ -61,7 +59,6 @@ export class OpenAICompletionsLLM {
61
59
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
62
60
  };
63
61
  let finishReason = null;
64
- let blockType = null;
65
62
  for await (const chunk of stream) {
66
63
  if (chunk.usage) {
67
64
  usage = {
@@ -87,103 +84,173 @@ export class OpenAICompletionsLLM {
87
84
  if (choice.delta.content !== null &&
88
85
  choice.delta.content !== undefined &&
89
86
  choice.delta.content.length > 0) {
90
- if (blockType === "thinking") {
91
- options?.onThinking?.("", true);
92
- blockType = null;
87
+ // Check if we need to switch to text block
88
+ if (!currentBlock || currentBlock.type !== "text") {
89
+ // Save current block if exists
90
+ if (currentBlock) {
91
+ if (currentBlock.type === "thinking") {
92
+ options?.onEvent?.({ type: "thinking_end", content: currentBlock.thinking });
93
+ }
94
+ else if (currentBlock.type === "toolCall") {
95
+ currentBlock.arguments = JSON.parse(currentBlock.partialArgs || "{}");
96
+ delete currentBlock.partialArgs;
97
+ options?.onEvent?.({ type: "toolCall", toolCall: currentBlock });
98
+ }
99
+ blocks.push(currentBlock);
100
+ }
101
+ // Start new text block
102
+ currentBlock = { type: "text", text: "" };
103
+ options?.onEvent?.({ type: "text_start" });
104
+ }
105
+ // Append to text block
106
+ if (currentBlock.type === "text") {
107
+ currentBlock.text += choice.delta.content;
108
+ options?.onEvent?.({
109
+ type: "text_delta",
110
+ content: currentBlock.text,
111
+ delta: choice.delta.content,
112
+ });
93
113
  }
94
- content += choice.delta.content;
95
- options?.onText?.(choice.delta.content, false);
96
- blockType = "text";
97
114
  }
98
115
  // Handle reasoning_content field
99
116
  if (choice.delta.reasoning_content !== null &&
100
- choice.delta.reasoning_content !== undefined) {
101
- if (blockType === "text") {
102
- options?.onText?.("", true);
103
- blockType = null;
117
+ choice.delta.reasoning_content !== undefined &&
118
+ choice.delta.reasoning_content.length > 0) {
119
+ // Check if we need to switch to thinking block
120
+ if (!currentBlock || currentBlock.type !== "thinking") {
121
+ // Save current block if exists
122
+ if (currentBlock) {
123
+ if (currentBlock.type === "text") {
124
+ options?.onEvent?.({ type: "text_end", content: currentBlock.text });
125
+ }
126
+ else if (currentBlock.type === "toolCall") {
127
+ currentBlock.arguments = JSON.parse(currentBlock.partialArgs || "{}");
128
+ delete currentBlock.partialArgs;
129
+ options?.onEvent?.({ type: "toolCall", toolCall: currentBlock });
130
+ }
131
+ blocks.push(currentBlock);
132
+ }
133
+ // Start new thinking block
134
+ currentBlock = { type: "thinking", thinking: "", thinkingSignature: "reasoning_content" };
135
+ options?.onEvent?.({ type: "thinking_start" });
136
+ }
137
+ // Append to thinking block
138
+ if (currentBlock.type === "thinking") {
139
+ const delta = choice.delta.reasoning_content;
140
+ currentBlock.thinking += delta;
141
+ options?.onEvent?.({ type: "thinking_delta", content: currentBlock.thinking, delta });
104
142
  }
105
- reasoningContent += choice.delta.reasoning_content;
106
- reasoningField = "reasoning_content";
107
- options?.onThinking?.(choice.delta.reasoning_content, false);
108
- blockType = "thinking";
109
143
  }
110
144
  // Handle reasoning field
111
- if (choice.delta.reasoning !== null && choice.delta.reasoning !== undefined) {
112
- if (blockType === "text") {
113
- options?.onText?.("", true);
114
- blockType = null;
145
+ if (choice.delta.reasoning !== null &&
146
+ choice.delta.reasoning !== undefined &&
147
+ choice.delta.reasoning.length > 0) {
148
+ // Check if we need to switch to thinking block
149
+ if (!currentBlock || currentBlock.type !== "thinking") {
150
+ // Save current block if exists
151
+ if (currentBlock) {
152
+ if (currentBlock.type === "text") {
153
+ options?.onEvent?.({ type: "text_end", content: currentBlock.text });
154
+ }
155
+ else if (currentBlock.type === "toolCall") {
156
+ currentBlock.arguments = JSON.parse(currentBlock.partialArgs || "{}");
157
+ delete currentBlock.partialArgs;
158
+ options?.onEvent?.({ type: "toolCall", toolCall: currentBlock });
159
+ }
160
+ blocks.push(currentBlock);
161
+ }
162
+ // Start new thinking block
163
+ currentBlock = { type: "thinking", thinking: "", thinkingSignature: "reasoning" };
164
+ options?.onEvent?.({ type: "thinking_start" });
165
+ }
166
+ // Append to thinking block
167
+ if (currentBlock.type === "thinking") {
168
+ const delta = choice.delta.reasoning;
169
+ currentBlock.thinking += delta;
170
+ options?.onEvent?.({ type: "thinking_delta", content: currentBlock.thinking, delta });
115
171
  }
116
- reasoningContent += choice.delta.reasoning;
117
- reasoningField = "reasoning";
118
- options?.onThinking?.(choice.delta.reasoning, false);
119
- blockType = "thinking";
120
172
  }
121
173
  // Handle tool calls
122
174
  if (choice?.delta?.tool_calls) {
123
- if (blockType === "text") {
124
- options?.onText?.("", true);
125
- blockType = null;
126
- }
127
- if (blockType === "thinking") {
128
- options?.onThinking?.("", true);
129
- blockType = null;
130
- }
131
175
  for (const toolCall of choice.delta.tool_calls) {
132
- if (parsedToolCalls.length === 0 ||
133
- (toolCall.id !== undefined && parsedToolCalls[parsedToolCalls.length - 1].id !== toolCall.id)) {
134
- parsedToolCalls.push({
176
+ // Check if we need a new tool call block
177
+ if (!currentBlock ||
178
+ currentBlock.type !== "toolCall" ||
179
+ (toolCall.id && currentBlock.id !== toolCall.id)) {
180
+ // Save current block if exists
181
+ if (currentBlock) {
182
+ if (currentBlock.type === "text") {
183
+ options?.onEvent?.({ type: "text_end", content: currentBlock.text });
184
+ }
185
+ else if (currentBlock.type === "thinking") {
186
+ options?.onEvent?.({ type: "thinking_end", content: currentBlock.thinking });
187
+ }
188
+ else if (currentBlock.type === "toolCall") {
189
+ currentBlock.arguments = JSON.parse(currentBlock.partialArgs || "{}");
190
+ delete currentBlock.partialArgs;
191
+ options?.onEvent?.({ type: "toolCall", toolCall: currentBlock });
192
+ }
193
+ blocks.push(currentBlock);
194
+ }
195
+ // Start new tool call block
196
+ currentBlock = {
197
+ type: "toolCall",
135
198
  id: toolCall.id || "",
136
199
  name: toolCall.function?.name || "",
137
- arguments: "",
138
- });
200
+ arguments: {},
201
+ partialArgs: "",
202
+ };
139
203
  }
140
- const current = parsedToolCalls[parsedToolCalls.length - 1];
141
- if (toolCall.id)
142
- current.id = toolCall.id;
143
- if (toolCall.function?.name)
144
- current.name = toolCall.function.name;
145
- if (toolCall.function?.arguments) {
146
- current.arguments += toolCall.function.arguments;
204
+ // Accumulate tool call data
205
+ if (currentBlock.type === "toolCall") {
206
+ if (toolCall.id)
207
+ currentBlock.id = toolCall.id;
208
+ if (toolCall.function?.name)
209
+ currentBlock.name = toolCall.function.name;
210
+ if (toolCall.function?.arguments) {
211
+ currentBlock.partialArgs += toolCall.function.arguments;
212
+ }
147
213
  }
148
214
  }
149
215
  }
150
216
  }
151
217
  // Capture finish reason
152
218
  if (choice.finish_reason) {
153
- if (blockType === "text") {
154
- options?.onText?.("", true);
155
- blockType = null;
156
- }
157
- if (blockType === "thinking") {
158
- options?.onThinking?.("", true);
159
- blockType = null;
160
- }
161
219
  finishReason = choice.finish_reason;
162
220
  }
163
221
  }
164
- // Convert tool calls map to array
165
- const toolCalls = parsedToolCalls.map((tc) => ({
166
- id: tc.id,
167
- name: tc.name,
168
- arguments: JSON.parse(tc.arguments),
169
- }));
222
+ // Save final block if exists
223
+ if (currentBlock) {
224
+ if (currentBlock.type === "text") {
225
+ options?.onEvent?.({ type: "text_end", content: currentBlock.text });
226
+ }
227
+ else if (currentBlock.type === "thinking") {
228
+ options?.onEvent?.({ type: "thinking_end", content: currentBlock.thinking });
229
+ }
230
+ else if (currentBlock.type === "toolCall") {
231
+ currentBlock.arguments = JSON.parse(currentBlock.partialArgs || "{}");
232
+ delete currentBlock.partialArgs;
233
+ options?.onEvent?.({ type: "toolCall", toolCall: currentBlock });
234
+ }
235
+ blocks.push(currentBlock);
236
+ }
170
237
  // Calculate cost
171
238
  calculateCost(this.modelInfo, usage);
172
- return {
239
+ const output = {
173
240
  role: "assistant",
174
- content: content || undefined,
175
- thinking: reasoningContent || undefined,
176
- thinkingSignature: reasoningField || undefined,
177
- toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
241
+ content: blocks,
178
242
  provider: this.modelInfo.provider,
179
243
  model: this.modelInfo.id,
180
244
  usage,
181
245
  stopReason: this.mapStopReason(finishReason),
182
246
  };
247
+ options?.onEvent?.({ type: "done", reason: output.stopReason, message: output });
248
+ return output;
183
249
  }
184
250
  catch (error) {
185
- return {
251
+ const output = {
186
252
  role: "assistant",
253
+ content: [],
187
254
  provider: this.modelInfo.provider,
188
255
  model: this.modelInfo.id,
189
256
  usage: {
@@ -196,6 +263,8 @@ export class OpenAICompletionsLLM {
196
263
  stopReason: "error",
197
264
  error: error instanceof Error ? error.message : String(error),
198
265
  };
266
+ options?.onEvent?.({ type: "error", error: output.error || "Unknown error" });
267
+ return output;
199
268
  }
200
269
  }
201
270
  convertMessages(messages, systemPrompt) {
@@ -247,14 +316,26 @@ export class OpenAICompletionsLLM {
247
316
  else if (msg.role === "assistant") {
248
317
  const assistantMsg = {
249
318
  role: "assistant",
250
- content: msg.content || null,
319
+ content: null,
251
320
  };
252
- // LLama.cpp server + gpt-oss
253
- if (msg.thinking && msg.thinkingSignature && msg.thinkingSignature.length > 0) {
254
- assistantMsg[msg.thinkingSignature] = msg.thinking;
321
+ // Build content from blocks
322
+ const textBlocks = msg.content.filter((b) => b.type === "text");
323
+ if (textBlocks.length > 0) {
324
+ assistantMsg.content = textBlocks.map((b) => b.text).join("");
325
+ }
326
+ // Handle thinking blocks for llama.cpp server + gpt-oss
327
+ const thinkingBlocks = msg.content.filter((b) => b.type === "thinking");
328
+ if (thinkingBlocks.length > 0) {
329
+ // Use the signature from the first thinking block if available
330
+ const signature = thinkingBlocks[0].thinkingSignature;
331
+ if (signature && signature.length > 0) {
332
+ assistantMsg[signature] = thinkingBlocks.map((b) => b.thinking).join("");
333
+ }
255
334
  }
256
- if (msg.toolCalls) {
257
- assistantMsg.tool_calls = msg.toolCalls.map((tc) => ({
335
+ // Handle tool calls
336
+ const toolCalls = msg.content.filter((b) => b.type === "toolCall");
337
+ if (toolCalls.length > 0) {
338
+ assistantMsg.tool_calls = toolCalls.map((tc) => ({
258
339
  id: tc.id,
259
340
  type: "function",
260
341
  function: {