@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.
- package/aeye-openrouter.md +161 -0
- package/dist/__tests__/openrouter.test.d.ts +8 -0
- package/dist/__tests__/openrouter.test.d.ts.map +1 -0
- package/dist/__tests__/openrouter.test.js +123 -0
- package/dist/__tests__/openrouter.test.js.map +1 -0
- package/dist/openrouter.d.ts +28 -3
- package/dist/openrouter.d.ts.map +1 -1
- package/dist/openrouter.js +100 -35
- package/dist/openrouter.js.map +1 -1
- package/dist/types.d.ts +9 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -5
|
@@ -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 @@
|
|
|
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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"}
|
package/dist/openrouter.d.ts
CHANGED
|
@@ -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
|
|
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
|
*/
|
package/dist/openrouter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"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"}
|
package/dist/openrouter.js
CHANGED
|
@@ -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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
|
|
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
|
|
244
|
+
if (!response.reasoning) {
|
|
245
|
+
response.reasoning = {};
|
|
246
|
+
}
|
|
247
|
+
response.reasoning.content = message.reasoning;
|
|
211
248
|
}
|
|
212
|
-
|
|
213
|
-
response.reasoning
|
|
214
|
-
.
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
|
|
259
|
-
|
|
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
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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
|
package/dist/openrouter.js.map
CHANGED
|
@@ -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
|
|
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 &
|
|
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
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B;;EAEE;AACF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,kBAAkB,GAAG,wBAAwB,CAAC;AAE9F;;EAEE;AACF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElE;;EAEE;AACF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhD;;EAEE;AACF,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5L;;EAEE;AACF,MAAM,MAAM,4BAA4B,GACtC,YAAY,GACZ,aAAa,GACb,OAAO,GACP,MAAM,GACN,MAAM,GACN,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,OAAO,GACP,OAAO,GACP,oBAAoB,GACpB,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,mBAAmB,GACnB,OAAO,GACP,YAAY,GACZ,UAAU,GACV,OAAO,GACP,cAAc,GACd,oBAAoB,CAAC;AAEvB;;EAEE;AACF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,eAAe,EAAE,CAAC;QACpC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;QACtC,SAAS,EAAE,kBAAkB,CAAC;QAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,YAAY,EAAE;QACZ,cAAc,EAAE,MAAM,CAAC;QACvB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,oBAAoB,EAAE,4BAA4B,EAAE,CAAC;IACrD,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAA;CACF;AAED;;EAEE;AACF,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,EAAE,4BAA4B,EAAE,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED;;EAEE;AACF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,0BAA0B,GAAG;IAE3E,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACnC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACnC,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;QACnG,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;QAC1C,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF;;EAEE;AACF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,GAAG;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE;QACb,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAA;AAED;;EAEE;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,0BAA0B,EAAE,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,
|
|
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.
|
|
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.
|
|
50
|
-
"@aeye/core": "^0.3.
|
|
51
|
-
"@aeye/openai": "^0.3.
|
|
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": {
|