@aeye/openrouter 0.3.8 → 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 +23 -0
- package/dist/openrouter.d.ts.map +1 -1
- package/dist/openrouter.js +53 -20
- package/dist/openrouter.js.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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAmD,EAAE,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sBAAsB;AACtB,IAAI,UAAe,CAAC;AACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;IACvB,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,KAAK,GAAc;IACvB,QAAQ,EAAE,YAAY;IACtB,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,8EAA8E;AAC9E,kCAAkC;AAClC,MAAM,UAAU,GAAiB;IAC/B,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;CAC3B,CAAC;AAEF,MAAM,aAAa,GAAY;IAC7B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACzD,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;CACxE,CAAC;AAEF,MAAM,gBAAgB,GAAY;IAChC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACzD,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;CACzE,CAAC;AAEF,gFAAgF;AAChF,KAAK,UAAU,SAAS,CAAC,QAA4B,EAAE,OAAgB;IACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC3C,MAAM,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5D,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACvE,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,UAAU,GAAG;YACX,IAAI,EAAE;gBACJ,WAAW,EAAE;oBACX,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;wBAClC,EAAE,EAAE,SAAS;wBACb,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;wBAC/F,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;qBACrE,CAAC;iBACH;aACF;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE;SAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,iFAAiF;QACjF,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,oEAAoE;QACpE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,MAAM,GAAqB;YAC/B,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE;SAC3D,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,MAAM,GAAqB;YAC/B,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE;SAC1D,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAEzD,6DAA6D;QAC7D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,MAAM,GAAqB;YAC/B,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;SAC3E,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;QAC3G,MAAM,MAAM,GAAqB;YAC/B,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE;SACvD,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/openrouter.d.ts
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
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 type { Message, ModelInfo, Provider } from '@aeye/ai';
|
|
7
18
|
import { type Chunk, type Request, type Response } from '@aeye/core';
|
|
@@ -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;
|
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,6 +2,17 @@
|
|
|
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';
|
|
7
18
|
import { accumulateReasoning } from '@aeye/core';
|
|
@@ -123,9 +134,12 @@ export function convertOpenRouterModel(model, zdrModelIds, metrics) {
|
|
|
123
134
|
maxOutputTokens: model.top_provider.max_completion_tokens ?? undefined,
|
|
124
135
|
tokenizer: model.architecture.tokenizer,
|
|
125
136
|
supportedParameters: new Set(supportedParameters), // Will be serialized as array
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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,
|
|
129
143
|
// Store uptime in metadata since it's not a standard metric
|
|
130
144
|
} : undefined,
|
|
131
145
|
metadata: {
|
|
@@ -134,7 +148,7 @@ export function convertOpenRouterModel(model, zdrModelIds, metrics) {
|
|
|
134
148
|
canonicalSlug: model.canonical_slug,
|
|
135
149
|
huggingFaceId: model.hugging_face_id,
|
|
136
150
|
created: model.created,
|
|
137
|
-
uptime: metrics?.uptime,
|
|
151
|
+
uptime: Number.isFinite(metrics?.uptime) ? metrics?.uptime : undefined,
|
|
138
152
|
},
|
|
139
153
|
};
|
|
140
154
|
}
|
|
@@ -181,22 +195,41 @@ export class OpenRouterProvider extends OpenAIProvider {
|
|
|
181
195
|
max_tokens: request.reason.maxTokens,
|
|
182
196
|
};
|
|
183
197
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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;
|
|
200
233
|
}
|
|
201
234
|
}
|
|
202
235
|
/**
|
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/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": {
|