@curie-agent/providers 0.2.4 → 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.
@@ -1,18 +1,26 @@
1
1
  import OpenAI from 'openai';
2
+ import { streamOpenAICompatible } from './openai-compatible-stream.js';
2
3
  function effortToReasoning(effort) {
3
4
  switch (effort) {
4
5
  case 'low': return 'low';
5
6
  case 'medium': return 'medium';
6
7
  case 'high': return 'high';
7
- case 'max': return 'high';
8
+ case 'max': return 'xhigh';
8
9
  case 'auto':
9
10
  default: return undefined;
10
11
  }
11
12
  }
12
- const REASONING_MODEL_RE = /^(o1|o3)[-:]?(mini|medium|high|pro)?$/i;
13
+ function effortToReasoningObj(effort) {
14
+ const level = effortToReasoning(effort);
15
+ if (level)
16
+ return { effort: level };
17
+ return undefined;
18
+ }
19
+ const REASONING_MODEL_RE = /^(o1|o3|o4|gpt-5)[-\d:.]*(mini|medium|high|pro)?(-\d+)?$/i;
13
20
  function isReasoningModel(model) {
14
21
  return REASONING_MODEL_RE.test(model);
15
22
  }
23
+ // ─── Provider ────────────────────────────────────────────────
16
24
  export class OpenAIProvider {
17
25
  name = 'openai';
18
26
  models = [
@@ -25,6 +33,12 @@ export class OpenAIProvider {
25
33
  'o1-preview',
26
34
  'o3-mini',
27
35
  'o3-mini-2025-01-31',
36
+ 'o3',
37
+ 'o4-mini',
38
+ 'gpt-5.5',
39
+ 'gpt-5.5-pro',
40
+ 'gpt-5.4',
41
+ 'gpt-5.4-mini',
28
42
  'gpt-4-turbo',
29
43
  ];
30
44
  defaultModel = 'gpt-4o';
@@ -41,13 +55,19 @@ export class OpenAIProvider {
41
55
  ...(baseUrl ? { baseURL: baseUrl } : {}),
42
56
  });
43
57
  }
58
+ // ─── Stream ────────────────────────────────────────────────
44
59
  stream(args) {
45
- const self = this;
46
60
  const model = args.model || this.defaultModel;
61
+ if (isReasoningModel(model)) {
62
+ return this.streamResponses(args, model);
63
+ }
64
+ return this.streamChat(args, model);
65
+ }
66
+ streamChat(args, model) {
47
67
  const modelIsReasoning = isReasoningModel(model);
48
68
  const reasoningEffort = effortToReasoning(args.effort);
49
69
  const maxTokens = modelIsReasoning
50
- ? args.maxTokens ?? 16_384
70
+ ? args.maxTokens ?? 65_536
51
71
  : args.maxTokens;
52
72
  const messages = this.mapMessages(args.messages);
53
73
  const tools = args.tools ? this.mapTools(args.tools) : undefined;
@@ -64,75 +84,105 @@ export class OpenAIProvider {
64
84
  ...(modelIsReasoning && reasoningEffort ? { reasoning_effort: reasoningEffort } : {}),
65
85
  stream_options: { include_usage: true },
66
86
  };
67
- let sdkStream = null;
87
+ const abortCtrl = new AbortController();
88
+ return {
89
+ iterable: streamOpenAICompatible(this.client, streamParams, args.signal ?? abortCtrl.signal),
90
+ cancel() {
91
+ abortCtrl.abort();
92
+ },
93
+ };
94
+ }
95
+ streamResponses(args, model) {
96
+ const self = this;
97
+ const reasoningEffort = effortToReasoningObj(args.effort);
98
+ const inputItems = this.mapMessagesToInput(args.messages);
99
+ const tools = args.tools ? this.mapToolsToResponses(args.tools) : undefined;
100
+ const respParams = {
101
+ model,
102
+ input: inputItems,
103
+ ...(args.system ? { instructions: args.system } : {}),
104
+ ...(tools ? { tools } : {}),
105
+ ...(args.temperature !== undefined ? { temperature: args.temperature } : {}),
106
+ ...(args.maxTokens ? { max_output_tokens: args.maxTokens } : {}),
107
+ reasoning: {
108
+ ...(reasoningEffort ?? { effort: 'low' }),
109
+ summary: 'auto',
110
+ },
111
+ truncation: 'auto',
112
+ stream: true,
113
+ };
68
114
  async function* generator() {
69
- sdkStream = await self.client.chat.completions.create(streamParams);
115
+ const sdkStream = await self.client.responses.create(respParams);
70
116
  const pendingTools = new Map();
71
- let lastUsage = null;
72
- if (!sdkStream)
73
- return;
74
- for await (const chunk of sdkStream) {
75
- if (args.signal?.aborted) {
117
+ let lastUsageInput = 0;
118
+ let lastUsageOutput = 0;
119
+ for await (const raw of sdkStream) {
120
+ if (args.signal?.aborted)
76
121
  break;
122
+ const evt = raw;
123
+ const type = String(evt.type ?? '');
124
+ if (type === 'response.output_text.delta') {
125
+ yield { type: 'text-delta', text: String(evt.delta ?? '') };
77
126
  }
78
- if (chunk.usage) {
79
- lastUsage = chunk.usage;
127
+ else if (type === 'response.reasoning_summary_text.delta' || type === 'response.reasoning.delta') {
128
+ yield { type: 'thinking-delta', text: String(evt.delta ?? '') };
80
129
  }
81
- const choice = chunk.choices?.[0];
82
- if (!choice)
83
- continue;
84
- // Text deltas
85
- if (choice.delta?.content) {
86
- yield { type: 'text-delta', text: choice.delta.content };
130
+ else if (type === 'response.function_call_arguments.done') {
131
+ const idx = Number(evt.output_index ?? 0);
132
+ let input = {};
133
+ try {
134
+ if (evt.arguments)
135
+ input = JSON.parse(String(evt.arguments));
136
+ }
137
+ catch { /* empty */ }
138
+ const existing = pendingTools.get(idx);
139
+ if (existing)
140
+ existing.input = input;
87
141
  }
88
- // Tool call deltas
89
- if (choice.delta?.tool_calls) {
90
- for (const tc of choice.delta.tool_calls) {
91
- const idx = tc.index ?? 0;
92
- if (tc.id) {
93
- pendingTools.set(idx, { id: tc.id, name: tc.function?.name ?? '', inputStr: '' });
94
- }
95
- const pending = pendingTools.get(idx);
96
- if (pending) {
97
- pending.inputStr += tc.function?.arguments ?? '';
98
- }
142
+ else if (type === 'response.output_item.added') {
143
+ const item = evt.item;
144
+ if (item && item.type === 'function_call') {
145
+ pendingTools.set(Number(evt.output_index ?? 0), {
146
+ callId: String(item.call_id ?? ''),
147
+ name: String(item.name ?? ''),
148
+ input: {},
149
+ });
99
150
  }
100
151
  }
101
- }
102
- // Resolve any pending tool calls
103
- for (const [, pending] of pendingTools) {
104
- let input = {};
105
- try {
106
- if (pending.inputStr) {
107
- input = JSON.parse(pending.inputStr);
152
+ else if (type === 'response.completed') {
153
+ const resp = evt.response;
154
+ const u = resp.usage;
155
+ if (u) {
156
+ lastUsageInput = Number(u.input_tokens ?? 0);
157
+ lastUsageOutput = Number(u.output_tokens ?? 0);
108
158
  }
109
159
  }
110
- catch { /* empty input on parse failure */ }
111
- yield { type: 'tool-call', id: pending.id, name: pending.name, input };
112
160
  }
113
- // Emit usage
114
- if (lastUsage) {
115
- yield {
116
- type: 'usage',
117
- inputTokens: lastUsage.prompt_tokens ?? 0,
118
- outputTokens: lastUsage.completion_tokens ?? 0,
119
- };
161
+ // Flush buffered tool calls in stream order so the TUI renders them as one grouped block.
162
+ for (const [, pending] of pendingTools) {
163
+ yield { type: 'tool-call', id: pending.callId, name: pending.name, input: pending.input };
164
+ }
165
+ if (lastUsageInput || lastUsageOutput) {
166
+ yield { type: 'usage', inputTokens: lastUsageInput, outputTokens: lastUsageOutput };
120
167
  }
121
168
  yield { type: 'stop', reason: args.signal?.aborted ? 'aborted' : 'stop' };
122
169
  }
123
170
  return {
124
171
  iterable: generator(),
125
172
  cancel() {
126
- // The OpenAI Node.js SDK doesn't expose a public cancel method on the
127
- // async iterable. The signal.aborted check inside the generator loop
128
- // will break on the next iteration, but there's no way to
129
- // synchronously abort the underlying HTTP request.
130
- // The abort signal is still passed through streamParams, so the SDK
131
- // may honor it internally.
173
+ // Responses API stream cancellation via abort signal in the loop.
132
174
  },
133
175
  };
134
176
  }
177
+ // ─── Check ─────────────────────────────────────────────────
135
178
  async check(prompt, args) {
179
+ const model = args?.model || this.defaultModel;
180
+ if (isReasoningModel(model)) {
181
+ return this.checkResponses(prompt, args);
182
+ }
183
+ return this.checkChat(prompt, args);
184
+ }
185
+ async checkChat(prompt, args) {
136
186
  const model = args?.model || this.defaultModel;
137
187
  const messages = [
138
188
  { role: 'user', content: prompt },
@@ -148,19 +198,38 @@ export class OpenAIProvider {
148
198
  });
149
199
  return response.choices[0]?.message?.content?.trim() ?? '';
150
200
  }
201
+ async checkResponses(prompt, args) {
202
+ const model = args?.model || this.defaultModel;
203
+ const response = await this.client.responses.create({
204
+ model,
205
+ input: [{ role: 'user', content: prompt }],
206
+ ...(args?.system ? { instructions: args.system } : {}),
207
+ max_output_tokens: 256,
208
+ temperature: 0,
209
+ truncation: 'auto',
210
+ });
211
+ return response?.output_text?.trim() ?? '';
212
+ }
213
+ // ─── Complete ──────────────────────────────────────────────
151
214
  async complete(args) {
152
215
  const model = args.model || this.defaultModel;
216
+ if (isReasoningModel(model)) {
217
+ return this.completeResponses(args, model);
218
+ }
219
+ return this.completeChat(args, model);
220
+ }
221
+ async completeChat(args, model) {
153
222
  const modelIsReasoning = isReasoningModel(model);
154
223
  const reasoningEffort = effortToReasoning(args.effort);
155
224
  const maxTokens = modelIsReasoning
156
- ? args.maxTokens ?? 16_384
225
+ ? args.maxTokens ?? 65_536
157
226
  : args.maxTokens;
158
227
  const messages = this.mapMessages(args.messages);
159
228
  const tools = args.tools ? this.mapTools(args.tools) : undefined;
160
229
  const allMessages = args.system
161
230
  ? [{ role: 'system', content: args.system }, ...messages]
162
231
  : messages;
163
- const response = await this.client.chat.completions.create({
232
+ const responseParams = {
164
233
  model,
165
234
  messages: allMessages,
166
235
  stream: false,
@@ -169,22 +238,18 @@ export class OpenAIProvider {
169
238
  ...(maxTokens ? { max_completion_tokens: maxTokens } : {}),
170
239
  ...(modelIsReasoning && reasoningEffort ? { reasoning_effort: reasoningEffort } : {}),
171
240
  stream_options: { include_usage: true },
172
- });
241
+ };
242
+ const response = await this.client.chat.completions.create(responseParams);
173
243
  const choice = response.choices[0];
174
244
  const text = choice?.message?.content ?? '';
175
245
  const toolCalls = choice?.message?.tool_calls?.map(tc => {
176
246
  let input = {};
177
247
  try {
178
- if (tc.function?.arguments) {
248
+ if (tc.function?.arguments)
179
249
  input = JSON.parse(tc.function.arguments);
180
- }
181
250
  }
182
- catch { /* empty input on parse failure */ }
183
- return {
184
- id: tc.id ?? '',
185
- name: tc.function?.name ?? '',
186
- input,
187
- };
251
+ catch { /* empty */ }
252
+ return { id: tc.id ?? '', name: tc.function?.name ?? '', input };
188
253
  }).filter(tc => tc.id) ?? [];
189
254
  const usage = response.usage
190
255
  ? { inputTokens: response.usage.prompt_tokens, outputTokens: response.usage.completion_tokens }
@@ -193,17 +258,54 @@ export class OpenAIProvider {
193
258
  text: text.trim(),
194
259
  stopReason: (choice?.finish_reason === 'stop' || choice?.finish_reason === 'function_call')
195
260
  ? 'stop'
196
- : choice?.finish_reason === 'tool_calls'
197
- ? 'tool_use'
198
- : choice?.finish_reason === 'length'
199
- ? 'length'
200
- : choice?.finish_reason === 'content_filter'
201
- ? 'content_filter'
261
+ : choice?.finish_reason === 'tool_calls' ? 'tool_use'
262
+ : choice?.finish_reason === 'length' ? 'length'
263
+ : choice?.finish_reason === 'content_filter' ? 'content_filter'
202
264
  : 'stop',
203
265
  usage,
204
266
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
205
267
  };
206
268
  }
269
+ async completeResponses(args, model) {
270
+ const reasoningEffort = effortToReasoningObj(args.effort);
271
+ const inputItems = this.mapMessagesToInput(args.messages);
272
+ const tools = args.tools ? this.mapToolsToResponses(args.tools) : undefined;
273
+ const respParams = {
274
+ model,
275
+ input: inputItems,
276
+ ...(args.system ? { instructions: args.system } : {}),
277
+ ...(tools ? { tools } : {}),
278
+ ...(args.temperature !== undefined ? { temperature: args.temperature } : {}),
279
+ ...(args.maxTokens ? { max_output_tokens: args.maxTokens } : {}),
280
+ ...(reasoningEffort ? { reasoning: reasoningEffort } : {}),
281
+ truncation: 'auto',
282
+ };
283
+ const response = await this.client.responses.create(respParams);
284
+ const text = response.output_text ?? '';
285
+ const outputItems = response.output ?? [];
286
+ const toolCalls = outputItems
287
+ .filter(item => item.type === 'function_call')
288
+ .map((fc) => {
289
+ let input = {};
290
+ try {
291
+ if (fc.arguments)
292
+ input = JSON.parse(fc.arguments);
293
+ }
294
+ catch { /* empty */ }
295
+ return { id: fc.call_id, name: fc.name, input };
296
+ });
297
+ const usageObj = response.usage;
298
+ const usage = usageObj
299
+ ? { inputTokens: usageObj.input_tokens ?? 0, outputTokens: usageObj.output_tokens ?? 0 }
300
+ : undefined;
301
+ return {
302
+ text: text.trim(),
303
+ stopReason: toolCalls.length > 0 ? 'tool_use' : 'stop',
304
+ usage,
305
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
306
+ };
307
+ }
308
+ // ─── Chat Completions mappers ──────────────────────────────
207
309
  mapMessages(messages) {
208
310
  return messages.map((m) => {
209
311
  if (m.role === 'tool') {
@@ -231,14 +333,11 @@ export class OpenAIProvider {
231
333
  .map(c => ({
232
334
  id: c.id,
233
335
  type: 'function',
234
- function: {
235
- name: c.name,
236
- arguments: JSON.stringify(c.input),
237
- },
336
+ function: { name: c.name, arguments: JSON.stringify(c.input) },
238
337
  }));
239
338
  return {
240
339
  role: 'assistant',
241
- content: textParts.join('\n') || null,
340
+ content: textParts.join('\n') || '',
242
341
  ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),
243
342
  };
244
343
  }
@@ -255,5 +354,68 @@ export class OpenAIProvider {
255
354
  },
256
355
  }));
257
356
  }
357
+ // ─── Responses API mappers ─────────────────────────────────
358
+ mapMessagesToInput(messages) {
359
+ const items = [];
360
+ for (const m of messages) {
361
+ if (m.role === 'tool') {
362
+ items.push({
363
+ type: 'function_call_output',
364
+ call_id: m.toolUseId,
365
+ output: m.content,
366
+ });
367
+ }
368
+ else if (typeof m.content === 'string') {
369
+ items.push({
370
+ role: m.role,
371
+ content: m.content,
372
+ });
373
+ }
374
+ else if (Array.isArray(m.content)) {
375
+ if (m.role === 'assistant') {
376
+ const textParts = m.content
377
+ .filter((c) => c.type === 'text')
378
+ .map(c => c.text);
379
+ const toolUses = m.content
380
+ .filter((c) => c.type === 'tool-use');
381
+ if (textParts.length > 0) {
382
+ items.push({
383
+ role: 'assistant',
384
+ type: 'message',
385
+ content: textParts.map((t) => ({ type: 'output_text', text: t })),
386
+ status: 'completed',
387
+ });
388
+ }
389
+ for (const tu of toolUses) {
390
+ items.push({
391
+ type: 'function_call',
392
+ call_id: tu.id,
393
+ name: tu.name,
394
+ arguments: JSON.stringify(tu.input),
395
+ });
396
+ }
397
+ }
398
+ else {
399
+ const textParts = m.content
400
+ .filter((c) => c.type === 'text')
401
+ .map(c => c.text);
402
+ items.push({
403
+ role: 'user',
404
+ content: textParts.join('\n'),
405
+ });
406
+ }
407
+ }
408
+ }
409
+ return items;
410
+ }
411
+ mapToolsToResponses(tools) {
412
+ return tools.map((t) => ({
413
+ type: 'function',
414
+ name: t.name,
415
+ description: t.description,
416
+ parameters: t.inputSchema,
417
+ strict: null,
418
+ }));
419
+ }
258
420
  }
259
421
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/openai.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,9 @@ export declare class OpenRouterProvider implements Provider {
9
9
  readonly defaultModel = "anthropic/claude-sonnet-4-6";
10
10
  private client;
11
11
  private _baseUrl;
12
+ private _providerOrder;
12
13
  private _allModels;
13
- constructor(apiKey?: string, baseUrl?: string);
14
+ constructor(apiKey?: string, baseUrl?: string, providerOrder?: string[]);
14
15
  private _fetchModels;
15
16
  getModels(): Promise<string[]>;
16
17
  stream(args: ProviderStreamArgs): CancelableIterable<ProviderEvent>;
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/openrouter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EAGvB,MAAM,eAAe,CAAC;AAEvB,KAAK,kBAAkB,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,IAAI,IAAI,CAAA;CAAE,CAAC;AAmB5E,qBAAa,kBAAmB,YAAW,QAAQ;IACjD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,YAAY,iCAAiC;IAEtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAyB;gBAE/B,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;YAqB/B,YAAY;IAkBpB,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,aAAa,CAAC;IA0F7D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBb,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwD3E,OAAO,CAAC,WAAW;IA+CnB,OAAO,CAAC,QAAQ;CAUjB"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/openrouter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EAIvB,MAAM,eAAe,CAAC;AAEvB,KAAK,kBAAkB,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,IAAI,IAAI,CAAA;CAAE,CAAC;AA8B5E,qBAAa,kBAAmB,YAAW,QAAQ;IACjD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,YAAY,iCAAiC;IAEtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,UAAU,CAAyB;gBAE/B,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;YAsBzD,YAAY;IAkBpB,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,aAAa,CAAC;IA8H7D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBb,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2D3E,OAAO,CAAC,WAAW;IA+CnB,OAAO,CAAC,QAAQ;CAUjB"}
@@ -1,4 +1,14 @@
1
1
  import OpenAI from 'openai';
2
+ function effortToReasoning(effort) {
3
+ switch (effort) {
4
+ case 'low': return { effort: 'low' };
5
+ case 'medium': return { effort: 'medium' };
6
+ case 'high': return { effort: 'high' };
7
+ case 'max': return { effort: 'xhigh' };
8
+ case 'auto':
9
+ default: return undefined;
10
+ }
11
+ }
2
12
  const FALLBACK_MODELS = [
3
13
  'anthropic/claude-opus-4-7',
4
14
  'anthropic/claude-sonnet-4-6',
@@ -21,8 +31,9 @@ export class OpenRouterProvider {
21
31
  defaultModel = 'anthropic/claude-sonnet-4-6';
22
32
  client;
23
33
  _baseUrl;
34
+ _providerOrder;
24
35
  _allModels = null;
25
- constructor(apiKey, baseUrl) {
36
+ constructor(apiKey, baseUrl, providerOrder) {
26
37
  const resolvedKey = (apiKey && apiKey.length > 0)
27
38
  ? apiKey
28
39
  : process.env.OPENROUTER_API_KEY;
@@ -30,6 +41,7 @@ export class OpenRouterProvider {
30
41
  throw new Error('OpenRouterProvider: no API key (pass explicitly or set OPENROUTER_API_KEY).');
31
42
  }
32
43
  this._baseUrl = baseUrl || 'https://openrouter.ai/api/v1';
44
+ this._providerOrder = providerOrder;
33
45
  this.client = new OpenAI({
34
46
  apiKey: resolvedKey,
35
47
  baseURL: this._baseUrl,
@@ -70,6 +82,7 @@ export class OpenRouterProvider {
70
82
  const allMessages = args.system
71
83
  ? [{ role: 'system', content: args.system }, ...messages]
72
84
  : messages;
85
+ const reasoning = effortToReasoning(args.effort);
73
86
  const streamParams = {
74
87
  model,
75
88
  messages: allMessages,
@@ -77,6 +90,8 @@ export class OpenRouterProvider {
77
90
  ...(tools ? { tools } : {}),
78
91
  ...(args.temperature !== undefined ? { temperature: args.temperature } : {}),
79
92
  ...(args.maxTokens ? { max_tokens: args.maxTokens } : {}),
93
+ ...(reasoning ? { reasoning } : {}),
94
+ ...(this._providerOrder && this._providerOrder.length > 0 ? { provider: { order: this._providerOrder } } : {}),
80
95
  stream_options: { include_usage: true },
81
96
  };
82
97
  let sdkStream = null;
@@ -85,6 +100,7 @@ export class OpenRouterProvider {
85
100
  if (!sdkStream)
86
101
  return;
87
102
  const pendingTools = new Map();
103
+ const thinkingBlocks = new Map();
88
104
  let lastUsage = null;
89
105
  for await (const chunk of sdkStream) {
90
106
  if (args.signal?.aborted) {
@@ -96,6 +112,33 @@ export class OpenRouterProvider {
96
112
  const choice = chunk.choices?.[0];
97
113
  if (!choice)
98
114
  continue;
115
+ // OpenRouter reasoning_details (not in OpenAI SDK types, cast to any).
116
+ const rawDelta = choice.delta;
117
+ const reasoningDetails = rawDelta?.reasoning_details;
118
+ if (reasoningDetails?.length) {
119
+ for (const rd of reasoningDetails) {
120
+ if (rd.type !== 'reasoning.text')
121
+ continue;
122
+ const idx = rd.index ?? 0;
123
+ if (!thinkingBlocks.has(idx)) {
124
+ thinkingBlocks.set(idx, { thinking: '', signature: '' });
125
+ }
126
+ const tb = thinkingBlocks.get(idx);
127
+ if (rd.text) {
128
+ tb.thinking += rd.text;
129
+ yield { type: 'thinking-delta', text: rd.text };
130
+ }
131
+ if (rd.signature)
132
+ tb.signature = rd.signature;
133
+ }
134
+ }
135
+ else {
136
+ // No more reasoning_details — flush any pending thinking blocks.
137
+ for (const [, tb] of thinkingBlocks) {
138
+ yield { type: 'thinking-block', thinking: tb.thinking, signature: tb.signature };
139
+ }
140
+ thinkingBlocks.clear();
141
+ }
99
142
  if (choice.delta?.content) {
100
143
  yield { type: 'text-delta', text: choice.delta.content };
101
144
  }
@@ -161,6 +204,7 @@ export class OpenRouterProvider {
161
204
  const allMessages = args.system
162
205
  ? [{ role: 'system', content: args.system }, ...messages]
163
206
  : messages;
207
+ const reasoning = effortToReasoning(args.effort);
164
208
  const response = await this.client.chat.completions.create({
165
209
  model,
166
210
  messages: allMessages,
@@ -168,6 +212,8 @@ export class OpenRouterProvider {
168
212
  ...(tools ? { tools } : {}),
169
213
  ...(args.temperature !== undefined ? { temperature: args.temperature } : {}),
170
214
  ...(args.maxTokens ? { max_tokens: args.maxTokens } : {}),
215
+ ...(reasoning ? { reasoning } : {}),
216
+ ...(this._providerOrder && this._providerOrder.length > 0 ? { provider: { order: this._providerOrder } } : {}),
171
217
  });
172
218
  const choice = response.choices[0];
173
219
  const text = choice?.message?.content ?? '';