@mariozechner/pi-ai 0.5.14 → 0.5.16

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.
@@ -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: {
@@ -1 +1 @@
1
- {"version":3,"file":"openai-completions.js","sourceRoot":"","sources":["../../src/providers/openai-completions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-completions.js","sourceRoot":"","sources":["../../src/providers/openai-completions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai-responses.d.ts","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACX,gBAAgB,EAChB,OAAO,EACP,GAAG,EACH,UAAU,EAEV,KAAK,EAKL,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,yBAA0B,SAAQ,UAAU;IAC5D,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxD,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1D;AAED,qBAAa,kBAAmB,YAAW,GAAG,CAAC,yBAAyB,CAAC;IACxE,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,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqJhG,OAAO,CAAC,cAAc;IAoFtB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;CAarB"}
1
+ {"version":3,"file":"openai-responses.d.ts","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,gBAAgB,EAChB,OAAO,EACP,GAAG,EACH,UAAU,EAEV,KAAK,EAML,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,yBAA0B,SAAQ,UAAU;IAC5D,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxD,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1D;AAED,qBAAa,kBAAmB,YAAW,GAAG,CAAC,yBAAyB,CAAC;IACxE,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,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuMhG,OAAO,CAAC,cAAc;IA0FtB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;CAarB"}
@@ -43,11 +43,9 @@ export class OpenAIResponsesLLM {
43
43
  const stream = await this.client.responses.create(params, {
44
44
  signal: options?.signal,
45
45
  });
46
- let content = "";
47
- let contentSignature = "";
48
- let thinking = "";
49
- const toolCalls = [];
50
- const reasoningItems = [];
46
+ const outputItems = []; // any for function_call items
47
+ let currentTextAccum = ""; // For delta accumulation
48
+ let currentThinkingAccum = ""; // For delta accumulation
51
49
  let usage = {
52
50
  input: 0,
53
51
  output: 0,
@@ -57,43 +55,63 @@ export class OpenAIResponsesLLM {
57
55
  };
58
56
  let stopReason = "stop";
59
57
  for await (const event of stream) {
60
- // Handle reasoning summary for models that support it
61
- if (event.type === "response.reasoning_summary_text.delta") {
58
+ // Handle output item start
59
+ if (event.type === "response.output_item.added") {
60
+ const item = event.item;
61
+ if (item.type === "reasoning") {
62
+ options?.onEvent?.({ type: "thinking_start" });
63
+ currentThinkingAccum = "";
64
+ }
65
+ else if (item.type === "message") {
66
+ options?.onEvent?.({ type: "text_start" });
67
+ currentTextAccum = "";
68
+ }
69
+ }
70
+ // Handle reasoning summary deltas
71
+ else if (event.type === "response.reasoning_summary_text.delta") {
62
72
  const delta = event.delta;
63
- thinking += delta;
64
- options?.onThinking?.(delta, false);
73
+ currentThinkingAccum += delta;
74
+ options?.onEvent?.({ type: "thinking_delta", content: currentThinkingAccum, delta });
65
75
  }
66
- else if (event.type === "response.reasoning_summary_text.done") {
67
- if (event.text) {
68
- thinking = event.text;
69
- }
70
- options?.onThinking?.("", true);
76
+ // Add a new line between summary parts (hack...)
77
+ else if (event.type === "response.reasoning_summary_part.done") {
78
+ currentThinkingAccum += "\n\n";
79
+ options?.onEvent?.({ type: "thinking_delta", content: currentThinkingAccum, delta: "\n\n" });
71
80
  }
72
- // Handle main text output
81
+ // Handle text output deltas
73
82
  else if (event.type === "response.output_text.delta") {
74
83
  const delta = event.delta;
75
- content += delta;
76
- options?.onText?.(delta, false);
84
+ currentTextAccum += delta;
85
+ options?.onEvent?.({ type: "text_delta", content: currentTextAccum, delta });
77
86
  }
78
- else if (event.type === "response.output_text.done") {
79
- if (event.text) {
80
- content = event.text;
81
- }
82
- options?.onText?.("", true);
83
- contentSignature = event.item_id;
87
+ // Handle refusal output deltas
88
+ else if (event.type === "response.refusal.delta") {
89
+ const delta = event.delta;
90
+ currentTextAccum += delta;
91
+ options?.onEvent?.({ type: "text_delta", content: currentTextAccum, delta });
84
92
  }
85
- // Handle function calls
93
+ // Handle output item completion
86
94
  else if (event.type === "response.output_item.done") {
87
95
  const item = event.item;
88
- if (item?.type === "function_call") {
89
- toolCalls.push({
96
+ if (item.type === "reasoning") {
97
+ const thinkingContent = item.summary?.map((s) => s.text).join("\n\n") || "";
98
+ options?.onEvent?.({ type: "thinking_end", content: thinkingContent });
99
+ outputItems.push(item);
100
+ }
101
+ else if (item.type === "message") {
102
+ const textContent = item.content.map((c) => (c.type === "output_text" ? c.text : c.refusal)).join("");
103
+ options?.onEvent?.({ type: "text_end", content: textContent });
104
+ outputItems.push(item);
105
+ }
106
+ else if (item.type === "function_call") {
107
+ const toolCall = {
108
+ type: "toolCall",
90
109
  id: item.call_id + "|" + item.id,
91
110
  name: item.name,
92
111
  arguments: JSON.parse(item.arguments),
93
- });
94
- }
95
- if (item.type === "reasoning") {
96
- reasoningItems.push(item);
112
+ };
113
+ options?.onEvent?.({ type: "toolCall", toolCall });
114
+ outputItems.push(item);
97
115
  }
98
116
  }
99
117
  // Handle completion
@@ -110,38 +128,67 @@ export class OpenAIResponsesLLM {
110
128
  }
111
129
  // Map status to stop reason
112
130
  stopReason = this.mapStopReason(response?.status);
113
- if (toolCalls.length > 0 && stopReason === "stop") {
114
- stopReason = "toolUse";
115
- }
116
131
  }
117
132
  // Handle errors
118
133
  else if (event.type === "error") {
119
- return {
134
+ const errorOutput = {
120
135
  role: "assistant",
136
+ content: [],
121
137
  provider: this.modelInfo.provider,
122
138
  model: this.modelInfo.id,
123
139
  usage,
124
140
  stopReason: "error",
125
141
  error: `Code ${event.code}: ${event.message}` || "Unknown error",
126
142
  };
143
+ options?.onEvent?.({ type: "error", error: errorOutput.error || "Unknown error" });
144
+ return errorOutput;
127
145
  }
128
146
  }
129
- return {
147
+ // Convert output items to blocks
148
+ const blocks = [];
149
+ for (const item of outputItems) {
150
+ if (item.type === "reasoning") {
151
+ blocks.push({
152
+ type: "thinking",
153
+ thinking: item.summary?.map((s) => s.text).join("\n\n") || "",
154
+ thinkingSignature: JSON.stringify(item), // Full item for resubmission
155
+ });
156
+ }
157
+ else if (item.type === "message") {
158
+ blocks.push({
159
+ type: "text",
160
+ text: item.content.map((c) => (c.type === "output_text" ? c.text : c.refusal)).join(""),
161
+ textSignature: item.id, // ID for resubmission
162
+ });
163
+ }
164
+ else if (item.type === "function_call") {
165
+ blocks.push({
166
+ type: "toolCall",
167
+ id: item.call_id + "|" + item.id,
168
+ name: item.name,
169
+ arguments: JSON.parse(item.arguments),
170
+ });
171
+ }
172
+ }
173
+ // Check if we have tool calls for stop reason
174
+ if (blocks.some((b) => b.type === "toolCall") && stopReason === "stop") {
175
+ stopReason = "toolUse";
176
+ }
177
+ const output = {
130
178
  role: "assistant",
131
- content: content || undefined,
132
- contentSignature: contentSignature || undefined,
133
- thinking: thinking || undefined,
134
- thinkingSignature: JSON.stringify(reasoningItems) || undefined,
135
- toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
179
+ content: blocks,
136
180
  provider: this.modelInfo.provider,
137
181
  model: this.modelInfo.id,
138
182
  usage,
139
183
  stopReason,
140
184
  };
185
+ options?.onEvent?.({ type: "done", reason: output.stopReason, message: output });
186
+ return output;
141
187
  }
142
188
  catch (error) {
143
- return {
189
+ const output = {
144
190
  role: "assistant",
191
+ content: [],
145
192
  provider: this.modelInfo.provider,
146
193
  model: this.modelInfo.id,
147
194
  usage: {
@@ -154,6 +201,8 @@ export class OpenAIResponsesLLM {
154
201
  stopReason: "error",
155
202
  error: error instanceof Error ? error.message : String(error),
156
203
  };
204
+ options?.onEvent?.({ type: "error", error: output.error || "Unknown error" });
205
+ return output;
157
206
  }
158
207
  }
159
208
  convertToInput(messages, systemPrompt) {
@@ -201,13 +250,28 @@ export class OpenAIResponsesLLM {
201
250
  }
202
251
  }
203
252
  else if (msg.role === "assistant") {
204
- // Assistant messages - add both content and tool calls to output
253
+ // Process content blocks in order
205
254
  const output = [];
206
- if (msg.thinkingSignature) {
207
- output.push(...JSON.parse(msg.thinkingSignature));
208
- }
209
- if (msg.toolCalls) {
210
- for (const toolCall of msg.toolCalls) {
255
+ for (const block of msg.content) {
256
+ if (block.type === "thinking") {
257
+ // Push the full reasoning item(s) from signature
258
+ if (block.thinkingSignature) {
259
+ const reasoningItem = JSON.parse(block.thinkingSignature);
260
+ output.push(reasoningItem);
261
+ }
262
+ }
263
+ else if (block.type === "text") {
264
+ const textBlock = block;
265
+ output.push({
266
+ type: "message",
267
+ role: "assistant",
268
+ content: [{ type: "output_text", text: textBlock.text, annotations: [] }],
269
+ status: "completed",
270
+ id: textBlock.textSignature || "msg_" + Math.random().toString(36).substring(2, 15),
271
+ });
272
+ }
273
+ else if (block.type === "toolCall") {
274
+ const toolCall = block;
211
275
  output.push({
212
276
  type: "function_call",
213
277
  id: toolCall.id.split("|")[1], // Extract original ID
@@ -217,15 +281,6 @@ export class OpenAIResponsesLLM {
217
281
  });
218
282
  }
219
283
  }
220
- if (msg.content) {
221
- output.push({
222
- type: "message",
223
- role: "assistant",
224
- content: [{ type: "output_text", text: msg.content, annotations: [] }],
225
- status: "completed",
226
- id: msg.contentSignature || "msg_" + Math.random().toString(36).substring(2, 15),
227
- });
228
- }
229
284
  // Add all output items to input
230
285
  input.push(...output);
231
286
  }