@aeye/openrouter 0.3.7 → 0.3.9

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.
@@ -0,0 +1,161 @@
1
+ # @aeye/openrouter
2
+
3
+ One-line purpose: OpenRouter provider for `@aeye/ai` — one API key, hundreds of models from many upstream providers (OpenAI, Anthropic, Google, Meta, Mistral, …) with provider routing, fallbacks, ZDR, reasoning, and real cost reporting. Built as a subclass of `@aeye/openai`'s `OpenAIProvider`.
4
+
5
+ ## When to use
6
+
7
+ - You want access to many models/providers through a single endpoint and key.
8
+ - You need routing control (preferred providers, fallbacks, price/throughput/latency sorting) or Zero Data Retention.
9
+ - You want a dynamic model registry with pricing/capabilities pulled from OpenRouter.
10
+
11
+ Do **not** use it for image generation, image editing, transcription, speech, or embeddings — those operations are explicitly disabled (see Gotchas).
12
+
13
+ ## Install / import
14
+
15
+ ```bash
16
+ npm install @aeye/openrouter
17
+ ```
18
+
19
+ `@aeye/openai`, `@aeye/ai`, `@aeye/core`, and `openai` ship as dependencies.
20
+
21
+ ```typescript
22
+ import {
23
+ OpenRouterProvider,
24
+ type OpenRouterConfig,
25
+ // dynamic model registry
26
+ OpenRouterModelSource,
27
+ type OpenRouterSourceConfig,
28
+ fetchModels,
29
+ fetchZDRModels,
30
+ convertOpenRouterModel,
31
+ } from '@aeye/openrouter';
32
+ ```
33
+
34
+ The provider's registry name is `openrouter`.
35
+
36
+ ## Register with an `@aeye/ai` instance
37
+
38
+ ```typescript
39
+ import { AI } from '@aeye/ai';
40
+ import { OpenRouterProvider } from '@aeye/openrouter';
41
+
42
+ const openrouter = new OpenRouterProvider({
43
+ apiKey: process.env.OPENROUTER_API_KEY!,
44
+ });
45
+
46
+ const ai = AI.with().providers({ openrouter }).create({ /* ... */ });
47
+
48
+ // Model ids use provider/model form
49
+ await ai.chat.get(
50
+ { messages: [{ role: 'user', content: 'Hi' }] },
51
+ { metadata: { model: 'anthropic/claude-3.5-sonnet' } }
52
+ );
53
+
54
+ await ai.chat.get(
55
+ { messages: [{ role: 'user', content: 'Hi' }] },
56
+ { metadata: { model: 'google/gemini-2.0-flash' } }
57
+ );
58
+ ```
59
+
60
+ ## Authentication / credentials
61
+
62
+ - `apiKey` is required on the config (inherited from `OpenAIConfig`). Use `process.env.OPENROUTER_API_KEY`.
63
+ - `createClient` sets the base URL to `https://openrouter.ai/api/v1` (override via `baseURL`).
64
+ - The standalone `OpenRouterModelSource`, `fetchModels`, and `fetchZDRModels` will fall back to `process.env.OPENROUTER_API_KEY` if no key is passed.
65
+ - Optional attribution headers: `defaultParams.siteUrl` → `HTTP-Referer`, `defaultParams.appName` → `X-Title`.
66
+
67
+ ## Configuration (`OpenRouterConfig`)
68
+
69
+ `OpenRouterConfig extends OpenAIConfig`, so all OpenAI fields apply (`apiKey`, `baseURL`, `organization`, `project`, `store`, `retry`, `retryEvents`, `hooks`, `defaultModels`). It adds `defaultParams`:
70
+
71
+ ```typescript
72
+ const openrouter = new OpenRouterProvider({
73
+ apiKey: process.env.OPENROUTER_API_KEY!,
74
+ defaultParams: {
75
+ siteUrl: 'https://myapp.com', // -> HTTP-Referer
76
+ appName: 'my-app', // -> X-Title
77
+ providers: {
78
+ order: ['Anthropic', 'OpenAI'], // preferred upstream order
79
+ allowFallbacks: true, // -> allow_fallbacks
80
+ requireParameters: false, // -> require_parameters
81
+ dataCollection: 'deny', // 'deny' | 'allow' -> data_collection
82
+ zdr: true, // zero data retention
83
+ only: ['Anthropic'], // whitelist upstreams
84
+ ignore: ['Together'], // blacklist upstreams
85
+ quantizations: ['bf16', 'fp16'], // int4|int8|fp4|fp6|fp8|fp16|bf16|fp32|unknown
86
+ sort: 'price', // 'price' | 'throughput' | 'latency'
87
+ maxPrice: { prompt: 10, completion: 30, image: 0 }, // $/M tokens (image: $/image)
88
+ },
89
+ transforms: ['middle-out'], // context transforms
90
+ },
91
+ });
92
+ ```
93
+
94
+ `defaultParams.providers` is mapped onto OpenRouter's `provider` request object (camelCase → snake_case is handled internally).
95
+
96
+ ## Provider routing
97
+
98
+ ```typescript
99
+ const openrouter = new OpenRouterProvider({
100
+ apiKey: process.env.OPENROUTER_API_KEY!,
101
+ defaultParams: {
102
+ providers: {
103
+ order: ['Anthropic'], // try Anthropic first
104
+ allowFallbacks: true, // then fall back to others
105
+ sort: 'throughput', // optimize for speed
106
+ },
107
+ },
108
+ });
109
+ ```
110
+
111
+ ## Reasoning
112
+
113
+ If a request sets `request.reason`, the provider emits OpenRouter's `reasoning` object (`enabled: true`, plus `effort` and `max_tokens`). Reasoning text and `reasoning_details` are parsed back onto `response.reasoning` (and streamed via chunks).
114
+
115
+ ## Dynamic model registry (`OpenRouterModelSource`)
116
+
117
+ Use OpenRouter as a `ModelSource` to populate the registry with live pricing, capabilities, context windows, and ZDR flags:
118
+
119
+ ```typescript
120
+ import { OpenRouterModelSource } from '@aeye/openrouter';
121
+
122
+ const ai = AI.with()
123
+ .providers({ openrouter })
124
+ .create({
125
+ modelSources: [
126
+ new OpenRouterModelSource({
127
+ apiKey: process.env.OPENROUTER_API_KEY!,
128
+ includeZDR: true, // default true; fetches the ZDR endpoint too
129
+ }),
130
+ ],
131
+ });
132
+
133
+ await ai.models.refresh();
134
+ ```
135
+
136
+ `fetchModels(apiKey?)` and `fetchZDRModels(apiKey?)` are exported for direct use.
137
+
138
+ ## Supported capabilities
139
+
140
+ Capabilities depend on the selected model, but the provider class supports: **chat, streaming, tools, structured output / JSON mode, reasoning, vision** (per model). Capabilities are auto-detected from each model's input/output modalities and `supported_parameters` during model conversion.
141
+
142
+ Explicitly **unsupported** (overridden to `undefined`): image generation, image generation streaming, image editing, transcription, transcription streaming, speech, embeddings.
143
+
144
+ ## Cost tracking
145
+
146
+ OpenRouter returns actual spend, surfaced on usage:
147
+
148
+ ```typescript
149
+ const response = await ai.chat.get({ messages });
150
+ console.log(response.usage?.cost); // real cost reported by OpenRouter
151
+ ```
152
+
153
+ (Available on both non-streaming responses and streamed usage chunks.)
154
+
155
+ ## Gotchas
156
+
157
+ - **Chat-only provider.** `generateImage`, `editImage`, `transcribe`, `speech`, and `embed` are set to `undefined` — calling those operations on this provider will not work; use OpenAI/AWS/Replicate for them.
158
+ - Model ids are `provider/model` slugs (e.g. `anthropic/claude-3.5-sonnet`), not raw OpenAI ids.
159
+ - Strict/structured output behavior is inherited from `OpenAIProvider` (OpenAI-shaped strict schemas, best-effort, silent lenient fallback).
160
+ - Assistant reasoning is split into a separate preceding message during conversion to work around OpenRouter not round-tripping reasoning attached to content — expect an extra assistant message in transformed payloads.
161
+ - ZDR (`zdr: true` / `dataCollection: 'deny'`) only constrains upstreams that honor it; combine with `only`/`ignore` for strict guarantees.
@@ -0,0 +1,8 @@
1
+ /**
2
+ * OpenRouter Provider Unit Tests
3
+ *
4
+ * Tests for OpenRouter-specific request augmentation with mocked HTTP calls.
5
+ * No real API calls are made in these tests.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=openrouter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/openrouter.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * OpenRouter Provider Unit Tests
3
+ *
4
+ * Tests for OpenRouter-specific request augmentation with mocked HTTP calls.
5
+ * No real API calls are made in these tests.
6
+ */
7
+ import { OpenRouterProvider } from '../openrouter';
8
+ import { AI } from '@aeye/ai';
9
+ import { z } from 'zod';
10
+ // Mock the OpenAI SDK
11
+ let mockOpenAI;
12
+ jest.mock('openai', () => {
13
+ return jest.fn().mockImplementation(() => mockOpenAI);
14
+ });
15
+ // A ModelInfo whose id resolves to the 'openai' strict family (via the slash
16
+ // prefix) and that advertises `structured` capability, so the parent provider
17
+ // actually emits a strict json_schema response_format for our detection to see.
18
+ const gpt4o = {
19
+ provider: 'openrouter',
20
+ id: 'openai/gpt-4o',
21
+ name: 'GPT-4o',
22
+ capabilities: new Set(['chat', 'structured', 'streaming']),
23
+ tier: 'flagship',
24
+ pricing: {},
25
+ contextWindow: 128000,
26
+ metadata: {},
27
+ };
28
+ // pickModelInfo reads ctx.metadata.model when it is a full ModelInfo whose id
29
+ // matches the requested model id.
30
+ const ctxDefault = {
31
+ ai: AI.with().providers({}).create({}),
32
+ metadata: { model: gpt4o },
33
+ };
34
+ const strictRequest = {
35
+ messages: [{ role: 'user', content: 'Return the query' }],
36
+ responseFormat: { type: z.object({ query: z.string() }), strict: true },
37
+ };
38
+ const nonStrictRequest = {
39
+ messages: [{ role: 'user', content: 'Return the query' }],
40
+ responseFormat: { type: z.object({ query: z.string() }), strict: false },
41
+ };
42
+ /** Build a request through the provider and return the body sent to the SDK. */
43
+ async function buildBody(provider, request) {
44
+ const executor = provider.createExecutor();
45
+ await executor(request, ctxDefault, { model: 'openai/gpt-4o' });
46
+ const calls = mockOpenAI.chat.completions.create.mock.calls;
47
+ return calls[calls.length - 1][0];
48
+ }
49
+ describe('OpenRouterProvider strict structured output enforcement', () => {
50
+ beforeEach(() => {
51
+ jest.clearAllMocks();
52
+ mockOpenAI = {
53
+ chat: {
54
+ completions: {
55
+ create: jest.fn().mockResolvedValue({
56
+ id: 'test-id',
57
+ choices: [{ message: { role: 'assistant', content: '{"query":"hi"}' }, finish_reason: 'stop' }],
58
+ usage: { prompt_tokens: 10, completion_tokens: 5, total_tokens: 15 },
59
+ }),
60
+ },
61
+ },
62
+ models: { list: jest.fn() },
63
+ };
64
+ });
65
+ it('forces provider.require_parameters=true for a strict json_schema request', async () => {
66
+ const provider = new OpenRouterProvider({ apiKey: 'test-key' });
67
+ const body = await buildBody(provider, strictRequest);
68
+ expect(body.response_format?.type).toBe('json_schema');
69
+ expect(body.response_format?.json_schema?.strict).toBe(true);
70
+ expect(body.provider?.require_parameters).toBe(true);
71
+ // structured_outputs is expressed via response_format; not a separate body flag.
72
+ expect(body.structured_outputs).toBeUndefined();
73
+ });
74
+ it('does NOT force require_parameters for a non-strict request', async () => {
75
+ const provider = new OpenRouterProvider({ apiKey: 'test-key' });
76
+ const body = await buildBody(provider, nonStrictRequest);
77
+ expect(body.response_format?.json_schema?.strict).not.toBe(true);
78
+ // No config and no strict schema => provider block stays untouched.
79
+ expect(body.provider?.require_parameters).toBeUndefined();
80
+ });
81
+ it('respects the opt-out (requireParameters=false) even for a strict request', async () => {
82
+ const config = {
83
+ apiKey: 'test-key',
84
+ defaultParams: { providers: { requireParameters: false } },
85
+ };
86
+ const provider = new OpenRouterProvider(config);
87
+ const body = await buildBody(provider, strictRequest);
88
+ expect(body.response_format?.json_schema?.strict).toBe(true);
89
+ expect(body.provider?.require_parameters).toBe(false);
90
+ });
91
+ it('honors an explicit requireParameters=true from config', async () => {
92
+ const config = {
93
+ apiKey: 'test-key',
94
+ defaultParams: { providers: { requireParameters: true } },
95
+ };
96
+ const provider = new OpenRouterProvider(config);
97
+ const body = await buildBody(provider, nonStrictRequest);
98
+ // Explicitly requested even though the schema is non-strict.
99
+ expect(body.provider?.require_parameters).toBe(true);
100
+ });
101
+ it('merges auto-enforcement with an existing provider config (preserves allowFallbacks)', async () => {
102
+ const config = {
103
+ apiKey: 'test-key',
104
+ defaultParams: { providers: { allowFallbacks: false, order: ['openai'] } },
105
+ };
106
+ const provider = new OpenRouterProvider(config);
107
+ const body = await buildBody(provider, strictRequest);
108
+ expect(body.provider?.require_parameters).toBe(true);
109
+ expect(body.provider?.allow_fallbacks).toBe(false);
110
+ expect(body.provider?.order).toEqual(['openai']);
111
+ });
112
+ it('leaves require_parameters undefined for a non-strict request with unrelated provider config', async () => {
113
+ const config = {
114
+ apiKey: 'test-key',
115
+ defaultParams: { providers: { allowFallbacks: true } },
116
+ };
117
+ const provider = new OpenRouterProvider(config);
118
+ const body = await buildBody(provider, nonStrictRequest);
119
+ expect(body.provider?.require_parameters).toBeUndefined();
120
+ expect(body.provider?.allow_fallbacks).toBe(true);
121
+ });
122
+ });
123
+ //# sourceMappingURL=openrouter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.test.js","sourceRoot":"","sources":["../../src/__tests__/openrouter.test.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,23 @@
2
2
  * OpenRouter Provider
3
3
  *
4
4
  * Provider for OpenRouter API with provider-specific routing and fallback options.
5
+ *
6
+ * Strict structured output enforcement:
7
+ * OpenRouter may route a strict `json_schema` request to a best-effort provider
8
+ * that ignores `response_format`, so the model emits non-conforming JSON (e.g. it
9
+ * echoes the schema instead of an instance). To prevent this, whenever the outgoing
10
+ * request carries a strict json_schema response format, this provider sets
11
+ * `provider.require_parameters = true` — OpenRouter's documented routing enforcement
12
+ * that only picks providers honoring every supplied parameter (including the schema).
13
+ * This auto-enforcement is ON by default and can be opted out per-call by setting
14
+ * `defaultParams.providers.requireParameters` explicitly (`false` disables, `true`
15
+ * forces regardless of strictness). See {@link OpenRouterConfig.defaultParams}.
5
16
  */
6
- import type { ModelInfo, Provider } from '@aeye/ai';
7
- import type { Chunk, Request, Response } from '@aeye/core';
17
+ import type { Message, ModelInfo, Provider } from '@aeye/ai';
18
+ import { type Chunk, type Request, type Response } from '@aeye/core';
8
19
  import { OpenAIConfig, OpenAIProvider } from '@aeye/openai';
9
20
  import OpenAI from 'openai';
10
- import { OpenRouterChatChunk, OpenRouterChatRequest, OpenRouterChatResponse, OpenRouterModel } from './types';
21
+ import { OpenRouterChatChunk, OpenRouterChatRequest, OpenRouterChatResponse, OpenRouterModel, OpenRouterRequestMessage } from './types';
11
22
  /**
12
23
  * OpenRouter provider configuration
13
24
  */
@@ -18,6 +29,18 @@ export interface OpenRouterConfig extends OpenAIConfig {
18
29
  providers?: {
19
30
  order?: string[];
20
31
  allowFallbacks?: boolean;
32
+ /**
33
+ * Controls OpenRouter's `provider.require_parameters` routing enforcement,
34
+ * which restricts routing to providers that honor every supplied parameter.
35
+ *
36
+ * - `true` — always force enforcement.
37
+ * - `false` — never force it (opt out even for strict structured output).
38
+ * - `undefined` (default) — auto-enable ONLY when the request carries a strict
39
+ * `json_schema` response format, so strict structured outputs are actually
40
+ * enforced instead of silently degrading to a best-effort provider.
41
+ *
42
+ * Non-strict requests are unaffected unless this is explicitly set.
43
+ */
21
44
  requireParameters?: boolean;
22
45
  dataCollection?: 'deny' | 'allow';
23
46
  zdr?: boolean;
@@ -60,6 +83,8 @@ export declare class OpenRouterProvider extends OpenAIProvider<OpenRouterConfig>
60
83
  */
61
84
  protected augmentChatResponse(expected: OpenRouterChatResponse, response: Response, config: OpenRouterConfig): void;
62
85
  protected augmentChatChunk(expected: OpenRouterChatChunk, chunk: Chunk, config: OpenRouterConfig): void;
86
+ protected augmentChatMessage(chatMessage: OpenRouterRequestMessage, message: Message, config: OpenRouterConfig): void;
87
+ protected convertMessages(request: Request, config: OpenRouterConfig): Promise<OpenRouterRequestMessage[]>;
63
88
  /**
64
89
  * OpenRouter does not support image generation
65
90
  */
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,20 @@
2
2
  * OpenRouter Provider
3
3
  *
4
4
  * Provider for OpenRouter API with provider-specific routing and fallback options.
5
+ *
6
+ * Strict structured output enforcement:
7
+ * OpenRouter may route a strict `json_schema` request to a best-effort provider
8
+ * that ignores `response_format`, so the model emits non-conforming JSON (e.g. it
9
+ * echoes the schema instead of an instance). To prevent this, whenever the outgoing
10
+ * request carries a strict json_schema response format, this provider sets
11
+ * `provider.require_parameters = true` — OpenRouter's documented routing enforcement
12
+ * that only picks providers honoring every supplied parameter (including the schema).
13
+ * This auto-enforcement is ON by default and can be opted out per-call by setting
14
+ * `defaultParams.providers.requireParameters` explicitly (`false` disables, `true`
15
+ * forces regardless of strictness). See {@link OpenRouterConfig.defaultParams}.
5
16
  */
6
17
  import { detectTier } from '@aeye/ai';
18
+ import { accumulateReasoning } from '@aeye/core';
7
19
  import { OpenAIProvider } from '@aeye/openai';
8
20
  import OpenAI from 'openai';
9
21
  import { fetchModels, fetchZDRModels } from './source';
@@ -122,9 +134,12 @@ export function convertOpenRouterModel(model, zdrModelIds, metrics) {
122
134
  maxOutputTokens: model.top_provider.max_completion_tokens ?? undefined,
123
135
  tokenizer: model.architecture.tokenizer,
124
136
  supportedParameters: new Set(supportedParameters), // Will be serialized as array
125
- metrics: metrics ? {
126
- timeToFirstToken: metrics.latency,
127
- tokensPerSecond: metrics.throughput,
137
+ // Only emit metrics for FINITE values. A scraped page value that fails to
138
+ // parse yields NaN, which `JSON.stringify` turns into `null` — poisoning the
139
+ // generated `ModelInfo` (whose metric fields are `number | undefined`).
140
+ metrics: metrics && (Number.isFinite(metrics.latency) || Number.isFinite(metrics.throughput)) ? {
141
+ timeToFirstToken: Number.isFinite(metrics.latency) ? metrics.latency : undefined,
142
+ tokensPerSecond: Number.isFinite(metrics.throughput) ? metrics.throughput : undefined,
128
143
  // Store uptime in metadata since it's not a standard metric
129
144
  } : undefined,
130
145
  metadata: {
@@ -133,7 +148,7 @@ export function convertOpenRouterModel(model, zdrModelIds, metrics) {
133
148
  canonicalSlug: model.canonical_slug,
134
149
  huggingFaceId: model.hugging_face_id,
135
150
  created: model.created,
136
- uptime: metrics?.uptime,
151
+ uptime: Number.isFinite(metrics?.uptime) ? metrics?.uptime : undefined,
137
152
  },
138
153
  };
139
154
  }
@@ -180,22 +195,41 @@ export class OpenRouterProvider extends OpenAIProvider {
180
195
  max_tokens: request.reason.maxTokens,
181
196
  };
182
197
  }
183
- // Merge provider parameters from config defaults
184
- if (config.defaultParams) {
185
- const dp = config.defaultParams;
186
- if (dp.providers) {
187
- const { allowFallbacks, requireParameters, dataCollection, maxPrice, ...provider } = dp.providers;
188
- params.provider = {
189
- allow_fallbacks: allowFallbacks,
190
- require_parameters: requireParameters,
191
- data_collection: dataCollection,
192
- max_price: maxPrice,
193
- ...provider,
194
- };
195
- }
196
- if (dp.transforms) {
197
- params.transforms = dp.transforms;
198
- }
198
+ const dp = config.defaultParams;
199
+ // Merge provider parameters from config defaults (preserve any existing
200
+ // params.provider already set upstream).
201
+ if (dp?.providers) {
202
+ const { allowFallbacks, requireParameters, dataCollection, maxPrice, ...provider } = dp.providers;
203
+ params.provider = {
204
+ ...params.provider,
205
+ allow_fallbacks: allowFallbacks,
206
+ require_parameters: requireParameters,
207
+ data_collection: dataCollection,
208
+ max_price: maxPrice,
209
+ ...provider,
210
+ };
211
+ }
212
+ // Enforce strict structured output routing.
213
+ //
214
+ // The request's response_format is built by the OpenAIProvider parent before
215
+ // this hook runs, so we can detect a strict json_schema here. When present,
216
+ // default OpenRouter's `require_parameters` routing enforcement ON so the router
217
+ // only picks a provider that honors the schema (otherwise it may fall back to a
218
+ // best-effort provider that ignores response_format and echoes the schema).
219
+ //
220
+ // Opt-out: an explicit `requireParameters` (true/false) from config always wins;
221
+ // we only auto-enable when it was left undefined. Non-strict requests are never
222
+ // forced here.
223
+ const isStrictStructured = params.response_format?.type === 'json_schema' &&
224
+ params.response_format.json_schema?.strict === true;
225
+ if (isStrictStructured && dp?.providers?.requireParameters === undefined) {
226
+ params.provider = {
227
+ ...params.provider,
228
+ require_parameters: true,
229
+ };
230
+ }
231
+ if (dp?.transforms) {
232
+ params.transforms = dp.transforms;
199
233
  }
200
234
  }
201
235
  /**
@@ -207,14 +241,16 @@ export class OpenRouterProvider extends OpenAIProvider {
207
241
  const message = expected.choices?.[0]?.message;
208
242
  if (message) {
209
243
  if (message.reasoning) {
210
- response.reasoning = message.reasoning;
244
+ if (!response.reasoning) {
245
+ response.reasoning = {};
246
+ }
247
+ response.reasoning.content = message.reasoning;
211
248
  }
212
- else if (message.reasoning_details) {
213
- response.reasoning = message.reasoning_details
214
- .map(rd => [rd.text, rd.summary])
215
- .flat()
216
- .filter(Boolean)
217
- .join('\n');
249
+ if (message.reasoning_details) {
250
+ if (!response.reasoning) {
251
+ response.reasoning = {};
252
+ }
253
+ response.reasoning.details = message.reasoning_details;
218
254
  }
219
255
  }
220
256
  const usage = expected.usage;
@@ -255,16 +291,45 @@ export class OpenRouterProvider extends OpenAIProvider {
255
291
  chunk.usage.cost = usage.cost;
256
292
  }
257
293
  }
258
- if (expected.reasoning) {
259
- chunk.reasoning = expected.reasoning;
294
+ const delta = expected.choices[0]?.delta;
295
+ if (delta?.reasoning || delta?.reasoning_details?.length) {
296
+ chunk.reasoning = accumulateReasoning(chunk.reasoning, {
297
+ content: delta.reasoning,
298
+ details: delta.reasoning_details,
299
+ });
300
+ }
301
+ }
302
+ augmentChatMessage(chatMessage, message, config) {
303
+ if (message.reasoning?.content) {
304
+ chatMessage.reasoning = message.reasoning.content;
305
+ }
306
+ if (message.reasoning?.details) {
307
+ chatMessage.reasoning_details = message.reasoning.details;
260
308
  }
261
- else if (expected.reasoning_details) {
262
- chunk.reasoning = expected.reasoning_details
263
- .map(rd => [rd.text, rd.summary])
264
- .flat()
265
- .filter(Boolean)
266
- .join('\n');
309
+ }
310
+ async convertMessages(request, config) {
311
+ const messages = await super.convertMessages(request, config);
312
+ for (let i = messages.length - 1; i >= 0; i--) {
313
+ const message = messages[i];
314
+ // If the message has content & reasoning, move details into a separate field
315
+ // Annoying OpenRouter doesn't transform it correctly for us
316
+ if (message.role === 'assistant' &&
317
+ (message.content?.length) &&
318
+ (message.reasoning?.length || message.reasoning_details?.length)) {
319
+ // Remove reasoning details from content
320
+ const { reasoning, reasoning_details } = message;
321
+ delete message.reasoning;
322
+ delete message.reasoning_details;
323
+ // Insert a new message before this one with the reasoning info
324
+ messages.splice(i, 0, {
325
+ role: 'assistant',
326
+ name: message.name,
327
+ reasoning,
328
+ reasoning_details,
329
+ });
330
+ }
267
331
  }
332
+ return messages;
268
333
  }
269
334
  /**
270
335
  * OpenRouter does not support image generation
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAA2C,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAgB,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA2CvD;;GAEG;AACH,SAAS,0BAA0B,CAAC,gBAA0B;IAC5D,MAAM,QAAQ,GAAmC;QAC/C,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,MAAM;QACf,mBAAmB,EAAE,kBAAkB;QACvC,kBAAkB,EAAE,iBAAiB;QACrC,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM;QACd,iBAAiB,EAAE,gBAAgB;QACnC,oBAAoB,EAAE,kBAAkB;QACxC,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,YAAY;QAC3B,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,kBAAkB;QAC9B,cAAc,EAAE,kBAAkB;QAClC,WAAW,EAAE,QAAQ;QACrB,mBAAmB,EAAE,QAAQ;KAC9B,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,KAAsB;IAChD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEhD,0CAA0C;IAC1C,IAAI,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,6CAA6C;IAC7C,IAAI,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,uDAAuD;IACvD,IAAI,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,6DAA6D;IAC7D,IAAI,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,2BAA2B;IAC3B,IAAI,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,iDAAiD;IAC/E,CAAC;IAED,yBAAyB;IACzB,IAAI,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACvG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACvB,IAAI,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACjH,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,yBAAyB;IACzB,IAAI,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3D,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,+BAA+B;IAC/B,IAAI,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC9D,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,kDAAkD;IAClD,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE9B,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAsB,EACtB,WAAwB,EACxB,OAA2E;IAE3E,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpC,uCAAuC;IACvC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,CAAqB,EAAe,EAAE;QACtD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;IAChE,CAAC,CAAA;IAED,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,8BAA8B;QACnE,IAAI;QACJ,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC3E,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS;gBAChG,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS;aAC1G,CAAC,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;aACnD,CAAC,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,SAAS;aACjE,CAAC,CAAC,CAAC,SAAS;YACb,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACzC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACnC,CAAC,CAAC,SAAS;SACd;QACD,aAAa,EAAE,KAAK,CAAC,cAAc;QACnC,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,qBAAqB,IAAI,SAAS;QACtE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAA2B;QACzD,mBAAmB,EAAE,IAAI,GAAG,CAAC,mBAAmB,CAAC,EAAE,8BAA8B;QACjF,0EAA0E;QAC1E,6EAA6E;QAC7E,wEAAwE;QACxE,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAChF,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACrF,4DAA4D;SAC7D,CAAC,CAAC,CAAC,SAAS;QACb,QAAQ,EAAE;YACR,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,iBAAiB,EAAE,KAAK,CAAC,kBAAkB;YAC3C,aAAa,EAAE,KAAK,CAAC,cAAc;YACnC,aAAa,EAAE,KAAK,CAAC,eAAe;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS;SACvE;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,cAAgC;IAC7D,IAAI,GAAG,YAAY,CAAC;IAEnB,YAAY,CAAC,MAAwB;QAC7C,OAAO,IAAI,MAAM,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,8BAA8B;YACzD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,cAAc,EAAE;gBACd,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO;gBAC7C,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO;aACzC;SACF,CAAC,CAAC;IACL,CAAC;IAES,YAAY,CAAC,KAAmB;QACxC,8EAA8E;QAC9E,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,EAAE;YACd,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5C,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,EAAE;YACX,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,SAAS;YAC1B,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACgB,kBAAkB,CACnC,MAA6B,EAC7B,OAAgB,EAChB,MAAwB;QAExB,6BAA6B;QAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,GAAG;gBACjB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;gBAC7B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;aACrC,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;QAEhC,wEAAwE;QACxE,yCAAyC;QACzC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;YAClB,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;YAClG,MAAM,CAAC,QAAQ,GAAG;gBAChB,GAAG,MAAM,CAAC,QAAQ;gBAClB,eAAe,EAAE,cAAc;gBAC/B,kBAAkB,EAAE,iBAAiB;gBACrC,eAAe,EAAE,cAAc;gBAC/B,SAAS,EAAE,QAAQ;gBACnB,GAAG,QAAQ;aACZ,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,EAAE;QACF,6EAA6E;QAC7E,4EAA4E;QAC5E,iFAAiF;QACjF,gFAAgF;QAChF,4EAA4E;QAC5E,EAAE;QACF,iFAAiF;QACjF,gFAAgF;QAChF,eAAe;QACf,MAAM,kBAAkB,GACtB,MAAM,CAAC,eAAe,EAAE,IAAI,KAAK,aAAa;YAC9C,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;QAEtD,IAAI,kBAAkB,IAAI,EAAE,EAAE,SAAS,EAAE,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACzE,MAAM,CAAC,QAAQ,GAAG;gBAChB,GAAG,MAAM,CAAC,QAAQ;gBAClB,kBAAkB,EAAE,IAAI;aACzB,CAAC;QACJ,CAAC;QAED,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;YACnB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACgB,mBAAmB,CACpC,QAAgC,EAChC,QAAkB,EAClB,MAAwB;QAExB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACxB,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC1B,CAAC;gBACD,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;YACjD,CAAC;YACD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACxB,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC1B,CAAC;gBACD,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;YACzD,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzB,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACvD,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YAClD,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEkB,gBAAgB,CACjC,QAA6B,EAC7B,KAAY,EACZ,MAAwB;QAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACpD,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YAC/C,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAChC,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACzC,IAAI,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC;YACzD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE;gBACrD,OAAO,EAAE,KAAK,CAAC,SAAS;gBACxB,OAAO,EAAE,KAAK,CAAC,iBAAiB;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAES,kBAAkB,CACxB,WAAqC,EACrC,OAAgB,EAChB,MAAwB;QAE1B,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YAC/B,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YAC/B,WAAW,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAuC,CAAC;QAC5F,CAAC;IACH,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAAgB,EAAE,MAAwB;QACxE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAA+B,CAAC;QAC5F,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,6EAA6E;YAC7E,4DAA4D;YAC5D,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;gBAC9B,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;gBACzB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAChE,CAAC;gBACD,wCAAwC;gBACxC,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;gBACjD,OAAO,OAAO,CAAC,SAAS,CAAC;gBACzB,OAAO,OAAO,CAAC,iBAAiB,CAAC;gBAEjC,+DAA+D;gBAC/D,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;oBACpB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS;oBACT,iBAAiB;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACM,aAAa,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACM,mBAAmB,GAAG,SAAS,CAAC;IAEzC;;OAEG;IACM,SAAS,GAAG,SAAS,CAAC;IAE/B;;OAEG;IACM,eAAe,GAAG,SAAS,CAAC;IAErC;;OAEG;IACM,UAAU,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACM,gBAAgB,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACM,MAAM,GAAG,SAAS,CAAC;IAE5B;;OAEG;IACM,KAAK,GAAG,SAAS,CAAC;IAE3B;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC5C,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC1B,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;aAC9B,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
package/dist/types.d.ts CHANGED
@@ -141,21 +141,23 @@ export type OpenRouterReasoning = {
141
141
  * OpenRouter reasoning detail
142
142
  */
143
143
  export type OpenRouterReasoningDetails = {
144
- id?: string | null;
144
+ id: string | null;
145
145
  type: 'reasoning.encrypted' | 'reasoning.summary' | 'reasoning.text';
146
146
  format: 'unknown' | 'openai-responses-v1' | 'xai-responses-v1' | 'anthropic-claude-v1';
147
147
  index?: number;
148
148
  summary?: string;
149
149
  text?: string;
150
- encrypted?: string;
151
150
  signature?: string;
152
151
  data?: string;
153
152
  };
154
153
  /**
155
154
  * OpenRouter chunk with extended usage info
156
155
  */
157
- export type OpenRouterChatChunk = OpenAI.Chat.Completions.ChatCompletionChunk & OpenRouterReasoning & {
156
+ export type OpenRouterChatChunk = OpenAI.Chat.Completions.ChatCompletionChunk & {
158
157
  usage?: OpenRouterUsage | null;
158
+ choices?: Array<OpenAI.Chat.Completions.ChatCompletionChunk.Choice & {
159
+ delta: OpenAI.Chat.Completions.ChatCompletionChunk.Choice.Delta & OpenRouterReasoning;
160
+ }>;
159
161
  };
160
162
  /**
161
163
  * OpenRouter response with extended usage info
@@ -164,6 +166,10 @@ export type OpenRouterChatResponse = OpenAI.Chat.ChatCompletion & {
164
166
  choices: OpenRouterChoice[];
165
167
  usage?: OpenRouterUsage;
166
168
  };
169
+ /**
170
+ * OpenRouter message parameter with reasoning info
171
+ */
172
+ export type OpenRouterRequestMessage = OpenAI.Chat.Completions.ChatCompletionMessageParam & OpenRouterReasoning;
167
173
  /**
168
174
  * OpenRouter message with reasoning info
169
175
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeye/openrouter",
3
- "version": "0.3.7",
3
+ "version": "0.3.9",
4
4
  "description": "@aeye OpenRouter - OpenRouter integration for @aeye",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,12 +43,13 @@
43
43
  "files": [
44
44
  "dist",
45
45
  "README.md",
46
- "LICENSE"
46
+ "LICENSE",
47
+ "aeye-*.md"
47
48
  ],
48
49
  "dependencies": {
49
- "@aeye/ai": "^0.3.7",
50
- "@aeye/core": "^0.3.7",
51
- "@aeye/openai": "^0.3.7",
50
+ "@aeye/ai": "^0.3.9",
51
+ "@aeye/core": "^0.3.9",
52
+ "@aeye/openai": "^0.3.9",
52
53
  "openai": "^6.6.0"
53
54
  },
54
55
  "devDependencies": {