@aeye/openrouter 0.4.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +652 -556
  2. package/aeye-openrouter.md +39 -21
  3. package/dist/__integration__/openrouter.integration.test.js +6 -6
  4. package/dist/__integration__/openrouter.integration.test.js.map +1 -1
  5. package/dist/__tests__/batch.test.d.ts +5 -0
  6. package/dist/__tests__/batch.test.d.ts.map +1 -0
  7. package/dist/__tests__/batch.test.js +41 -0
  8. package/dist/__tests__/batch.test.js.map +1 -0
  9. package/dist/__tests__/features.test.d.ts +5 -0
  10. package/dist/__tests__/features.test.d.ts.map +1 -0
  11. package/dist/__tests__/features.test.js +206 -0
  12. package/dist/__tests__/features.test.js.map +1 -0
  13. package/dist/__tests__/openrouter.test.js +38 -1
  14. package/dist/__tests__/openrouter.test.js.map +1 -1
  15. package/dist/__tests__/rerank-decide.test.d.ts +5 -0
  16. package/dist/__tests__/rerank-decide.test.d.ts.map +1 -0
  17. package/dist/__tests__/rerank-decide.test.js +75 -0
  18. package/dist/__tests__/rerank-decide.test.js.map +1 -0
  19. package/dist/__tests__/schema-rejection.test.d.ts +6 -0
  20. package/dist/__tests__/schema-rejection.test.d.ts.map +1 -0
  21. package/dist/__tests__/schema-rejection.test.js +39 -0
  22. package/dist/__tests__/schema-rejection.test.js.map +1 -0
  23. package/dist/openrouter.d.ts +100 -41
  24. package/dist/openrouter.d.ts.map +1 -1
  25. package/dist/openrouter.js +390 -211
  26. package/dist/openrouter.js.map +1 -1
  27. package/dist/source.d.ts +9 -4
  28. package/dist/source.d.ts.map +1 -1
  29. package/dist/source.js +45 -28
  30. package/dist/source.js.map +1 -1
  31. package/dist/types.d.ts +244 -81
  32. package/dist/types.d.ts.map +1 -1
  33. package/package.json +6 -6
@@ -109,6 +109,27 @@ describe('OpenRouterProvider strict structured output enforcement', () => {
109
109
  expect(body.provider?.allow_fallbacks).toBe(false);
110
110
  expect(body.provider?.order).toEqual(['openai']);
111
111
  });
112
+ it('mentions JSON once when a response format is set and the messages never do', async () => {
113
+ const provider = new OpenRouterProvider({ apiKey: 'test-key' });
114
+ const silent = await buildBody(provider, strictRequest);
115
+ expect(silent.messages[0]).toEqual({ role: 'system', content: 'Respond in JSON.' });
116
+ const said = await buildBody(provider, { ...strictRequest, messages: [{ role: 'user', content: 'Return the query as JSON' }] });
117
+ expect(said.messages).toHaveLength(1);
118
+ });
119
+ it('sends the Anthropic structured-outputs flag only with a strict tool', async () => {
120
+ const haiku = { ...gpt4o, id: 'anthropic/claude-haiku-4.5', capabilities: new Set(['chat', 'tools', 'toolsStrict']) };
121
+ const executor = new OpenRouterProvider({ apiKey: 'test-key' }).createExecutor();
122
+ const tool = (strict) => ({
123
+ messages: [{ role: 'user', content: 'Call it' }],
124
+ tools: [{ name: 'record', parameters: z.object({ query: z.string() }), strict }],
125
+ });
126
+ await executor(tool(true), { ...ctxDefault, metadata: { model: haiku } }, { model: haiku.id });
127
+ await executor(tool(false), { ...ctxDefault, metadata: { model: haiku } }, { model: haiku.id });
128
+ const [[strictBody, strictOptions], [, looseOptions]] = mockOpenAI.chat.completions.create.mock.calls;
129
+ expect(strictBody.tools[0].function.strict).toBe(true);
130
+ expect(strictOptions.headers).toEqual({ 'x-anthropic-beta': 'structured-outputs-2025-11-13' });
131
+ expect(looseOptions.headers).toBeUndefined();
132
+ });
112
133
  it('leaves require_parameters undefined for a non-strict request with unrelated provider config', async () => {
113
134
  const config = {
114
135
  apiKey: 'test-key',
@@ -220,7 +241,7 @@ describe('OpenRouterProvider tool schema dialects', () => {
220
241
  // observable proof of which dialect was chosen.
221
242
  expect(request.tools[0].descriptor).toBe('google-strict');
222
243
  });
223
- it('REGRESSION: the emitted google tool schema carries no anyOf / oneOf / allOf / $defs / $ref', async () => {
244
+ it('REGRESSION: an any-typed google tool argument is an empty schema, not a recursive $defs/Any', async () => {
224
245
  const request = {
225
246
  messages: [{ role: 'user', content: 'Declare it' }],
226
247
  tools: [{ ...signatureTool }],
@@ -239,6 +260,22 @@ describe('OpenRouterProvider tool schema dialects', () => {
239
260
  expect(parameters.properties.signature.additionalProperties).toEqual({});
240
261
  expect(parameters.properties.signature.properties.name.type).toBe('string');
241
262
  });
263
+ it('REGRESSION: a bare google/* model id still gets the google dialect', async () => {
264
+ // Without a full ModelInfo there is no strict capability to go on, but the
265
+ // dialect still applies: LENIENT's recursive $defs/Any is a ref loop
266
+ // through required values, which Gemini rejects with a 400.
267
+ const request = {
268
+ messages: [{ role: 'user', content: 'Declare it' }],
269
+ tools: [{ ...signatureTool }],
270
+ toolChoice: 'required',
271
+ };
272
+ const provider = new OpenRouterProvider({ apiKey: 'test-key' });
273
+ await provider.createExecutor()(request, { ai: AI.with().providers({}).create({}), metadata: {} }, { model: gemini3.id });
274
+ const calls = mockOpenAI.chat.completions.create.mock.calls;
275
+ const parameters = calls[calls.length - 1][0].tools[0].function.parameters;
276
+ expect(request.tools[0].descriptor).toBe('google-non-strict');
277
+ expect(keywordsIn(parameters).has('$defs')).toBe(false);
278
+ });
242
279
  it('still resolves the OpenAI dialect for an openai/* model', async () => {
243
280
  const request = {
244
281
  messages: [{ role: 'user', content: 'Declare it' }],
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.test.js","sourceRoot":"","sources":["../../src/__tests__/openrouter.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter.test.js","sourceRoot":"","sources":["../../src/__tests__/openrouter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * OpenRouter rerank and System One decisions.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=rerank-decide.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rerank-decide.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rerank-decide.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * OpenRouter rerank and System One decisions.
3
+ */
4
+ import { AI } from '@aeye/ai';
5
+ import { OpenRouterProvider } from '../openrouter';
6
+ const mockPost = jest.fn();
7
+ jest.mock('openai', () => jest.fn().mockImplementation(() => ({ post: mockPost, baseURL: 'https://openrouter.ai/api/v1' })));
8
+ const ctx = { ai: AI.with().providers({}).create({}), metadata: {} };
9
+ const provider = new OpenRouterProvider({ apiKey: 'k' });
10
+ beforeEach(() => jest.clearAllMocks());
11
+ describe('rerank', () => {
12
+ it('orders documents by relevance score', async () => {
13
+ mockPost.mockResolvedValue({ model: 'rerank-v3.5', results: [{ index: 1, relevance_score: 0.9 }, { index: 0, relevance_score: 0.1 }], usage: { search_units: 1, cost: 0.001 } });
14
+ const response = await provider.rerank({ query: 'capital', documents: ['Berlin', 'Paris'], topN: 2 }, ctx);
15
+ expect(mockPost).toHaveBeenCalledWith('/rerank', expect.objectContaining({ body: { model: 'cohere/rerank-v3.5', query: 'capital', documents: ['Berlin', 'Paris'], top_n: 2 } }));
16
+ expect(response.results).toEqual([{ index: 1, score: 0.9 }, { index: 0, score: 0.1 }]);
17
+ expect(response.usage).toEqual({ cost: 0.001 });
18
+ });
19
+ });
20
+ describe('decide', () => {
21
+ it('asks System One questions at the alpha endpoint', async () => {
22
+ mockPost.mockResolvedValue({
23
+ model: 'typesafe/jev-1.14-20261014',
24
+ answers: {
25
+ billing: { type: 'noul', noul: 0.95 },
26
+ team: { type: 'choice', choice: 'payments', probabilities: { payments: 0.9, web: 0.1 }, confidence: 0.85 },
27
+ urgency: { type: 'score', score: 1.9, legend: { 0: 'Later', 1: 'Soon', 2: 'Now' }, probabilities: { 2: 0.9, 0: 0, 1: 0.1 }, confidence: 0.8 },
28
+ },
29
+ usage: { input_tokens: 421, output_tokens: 70, cost: 0.00002 },
30
+ });
31
+ const response = await provider.decide({
32
+ input: 'Charged twice.',
33
+ questions: {
34
+ billing: { type: 'predicate', instructions: 'Billing problem?' },
35
+ team: { type: 'choice', instructions: 'Which team?', choices: { payments: 'Charges', web: 'Bugs' } },
36
+ urgency: { type: 'score', instructions: 'How urgent?', levels: ['Later', 'Soon', 'Now'] },
37
+ },
38
+ }, ctx);
39
+ const [url, { body }] = mockPost.mock.calls[0];
40
+ expect(url).toBe('https://openrouter.ai/api/alpha/decisions');
41
+ expect(body).toEqual({
42
+ model: 'typesafe/jev-1.14',
43
+ state: 'Charged twice.',
44
+ questions: {
45
+ billing: { type: 'noul', instructions: 'Billing problem?' },
46
+ team: { type: 'choice', instructions: 'Which team?', criteria: { payments: 'Charges', web: 'Bugs' } },
47
+ urgency: { type: 'score', instructions: 'How urgent?', criteria: ['Later', 'Soon', 'Now'] },
48
+ },
49
+ });
50
+ expect(response.answers).toEqual({
51
+ billing: { type: 'predicate', probability: 0.95 },
52
+ team: { type: 'choice', choice: 'payments', probabilities: { payments: 0.9, web: 0.1 }, confidence: 0.85 },
53
+ urgency: { type: 'score', score: 1.9, probabilities: [0, 0.1, 0.9], confidence: 0.8 },
54
+ });
55
+ expect(response.usage).toEqual({ text: { input: 421, output: 70 }, cost: 0.00002 });
56
+ });
57
+ });
58
+ describe('hooks', () => {
59
+ it('runs the rerank and decide hooks around the calls', async () => {
60
+ const calls = [];
61
+ const hooked = new OpenRouterProvider({
62
+ apiKey: 'k',
63
+ hooks: {
64
+ rerank: { beforeRequest: (request, params) => { calls.push(`rerank ${params.model}`); }, afterRequest: (request, params, response) => { calls.push(`reranked ${response.results.length}`); } },
65
+ decide: { beforeRequest: (request, params) => { calls.push(`decide ${'state' in params ? 'system-one' : 'openai'}`); } },
66
+ },
67
+ });
68
+ mockPost.mockResolvedValueOnce({ model: 'rerank-v3.5', results: [{ index: 0, relevance_score: 0.5 }] });
69
+ mockPost.mockResolvedValueOnce({ model: 'jev', answers: {}, usage: { input_tokens: 1, output_tokens: 0 } });
70
+ await hooked.rerank({ query: 'q', documents: ['d'] }, ctx);
71
+ await hooked.decide({ input: 'x', questions: {} }, ctx);
72
+ expect(calls).toEqual(['rerank cohere/rerank-v3.5', 'reranked 1', 'decide system-one']);
73
+ });
74
+ });
75
+ //# sourceMappingURL=rerank-decide.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rerank-decide.test.js","sourceRoot":"","sources":["../../src/__tests__/rerank-decide.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * OpenRouter reports an upstream schema rejection as "Provider returned
3
+ * error", with the upstream's message in `metadata.raw`.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=schema-rejection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-rejection.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/schema-rejection.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * OpenRouter reports an upstream schema rejection as "Provider returned
3
+ * error", with the upstream's message in `metadata.raw`.
4
+ */
5
+ import { z } from 'zod';
6
+ import { AI } from '@aeye/ai';
7
+ import { SchemaRejectedError } from '@aeye/core';
8
+ import { OpenRouterProvider } from '../openrouter';
9
+ const mockCreate = jest.fn();
10
+ jest.mock('openai', () => jest.fn().mockImplementation(() => ({ chat: { completions: { create: mockCreate } } })));
11
+ const ctx = { ai: AI.with().providers({}).create({}), metadata: {} };
12
+ /** An error shaped like the SDK's APIError for an upstream failure. */
13
+ function upstreamError(raw) {
14
+ return Object.assign(new Error('400 Provider returned error'), {
15
+ status: 400,
16
+ error: { message: 'Provider returned error', code: 400, metadata: { raw, provider_name: 'Google' } },
17
+ });
18
+ }
19
+ async function rejection(error) {
20
+ mockCreate.mockRejectedValue(error);
21
+ const request = {
22
+ messages: [{ role: 'user', content: 'Answer' }],
23
+ responseFormat: { type: z.object({ value: z.number() }), strict: 1 },
24
+ };
25
+ return new OpenRouterProvider({ apiKey: 'test' }).createExecutor()(request, ctx, { model: 'google/gemini-2.5-flash' })
26
+ .then(() => undefined, (e) => e);
27
+ }
28
+ describe('OpenRouter schema rejections', () => {
29
+ it('reads the upstream message', async () => {
30
+ const error = await rejection(upstreamError('{"error":{"message":"Invalid JSON payload received. Unknown name \\"additionalProperties\\" at \'generation_config.response_schema\'"}}'));
31
+ expect(error).toBeInstanceOf(SchemaRejectedError);
32
+ expect(error).toMatchObject({ target: { kind: 'output' } });
33
+ });
34
+ it('leaves other upstream errors alone', async () => {
35
+ const original = upstreamError('{"error":{"message":"Model is overloaded"}}');
36
+ expect(await rejection(original)).toBe(original);
37
+ });
38
+ });
39
+ //# sourceMappingURL=schema-rejection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-rejection.test.js","sourceRoot":"","sources":["../../src/__tests__/schema-rejection.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAqB,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAgB,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEnH,MAAM,GAAG,GAAiB,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAEnF,uEAAuE;AACvE,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,EAAE;QAC7D,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE;KACrG,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAY;IACnC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAY;QACvB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/C,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KACrE,CAAC;IACF,OAAO,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;SACnH,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,yIAAyI,CAAC,CAAC,CAAC;QACxL,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,6CAA6C,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -14,15 +14,16 @@
14
14
  * `defaultParams.providers.requireParameters` explicitly (`false` disables, `true`
15
15
  * forces regardless of strictness). See {@link OpenRouterConfig.defaultParams}.
16
16
  */
17
- import type { Message, ModelInfo, Provider } from '@aeye/ai';
18
- import { type Chunk, type DescriptorFamily, type Request, type Response } from '@aeye/core';
19
- import { OpenAIConfig, OpenAIProvider } from '@aeye/openai';
17
+ import type { BatchJob, Message, ModelInfo, Provider } from '@aeye/ai';
18
+ import { type Chunk, type DescriptorFamily, type Request, type Response, type SchemaRejectedError } from '@aeye/core';
19
+ import { type BatchSubmission, OpenAIConfig, OpenAIProvider, type OperationRun } from '@aeye/openai';
20
20
  import OpenAI from 'openai';
21
- import { OpenRouterChatChunk, OpenRouterChatRequest, OpenRouterChatResponse, OpenRouterModel, OpenRouterRequestMessage } from './types';
21
+ import type { OpenRouterChatChunk, OpenRouterChatRequest, OpenRouterChatResponse, OpenRouterContentPart, OpenRouterMetrics, OpenRouterModel, OpenRouterPlugin, OpenRouterProviderPreferences, OpenRouterRequestMessage } from './types';
22
22
  /**
23
- * OpenRouter provider configuration
23
+ * OpenRouter provider configuration. Requests always go through chat
24
+ * completions, where OpenRouter serves routing, plugins, and server tools.
24
25
  */
25
- export interface OpenRouterConfig extends OpenAIConfig {
26
+ export interface OpenRouterConfig extends Omit<OpenAIConfig, 'api'> {
26
27
  defaultParams?: {
27
28
  siteUrl?: string;
28
29
  appName?: string;
@@ -42,34 +43,46 @@ export interface OpenRouterConfig extends OpenAIConfig {
42
43
  * Non-strict requests are unaffected unless this is explicitly set.
43
44
  */
44
45
  requireParameters?: boolean;
45
- dataCollection?: 'deny' | 'allow';
46
+ dataCollection?: OpenRouterProviderPreferences['data_collection'];
46
47
  zdr?: boolean;
48
+ enforceDistillableText?: boolean;
47
49
  only?: string[];
48
50
  ignore?: string[];
49
- quantizations?: ('int4' | 'int8' | 'fp4' | 'fp6' | 'fp8' | 'fp16' | 'bf16' | 'fp32' | 'unknown')[];
50
- sort?: 'price' | 'throughput' | 'latency';
51
- maxPrice?: {
52
- prompt?: number;
53
- completion?: number;
54
- image?: number;
55
- };
51
+ quantizations?: OpenRouterProviderPreferences['quantizations'];
52
+ sort?: OpenRouterProviderPreferences['sort'];
53
+ preferredMinThroughput?: number;
54
+ preferredMaxLatency?: number;
55
+ maxPrice?: OpenRouterProviderPreferences['max_price'];
56
56
  };
57
+ fallbackModels?: string[];
58
+ plugins?: OpenRouterPlugin[];
59
+ /**
60
+ * @deprecated OpenRouter replaced transforms with plugins; `middle-out`
61
+ * is sent as the `context-compression` plugin.
62
+ */
57
63
  transforms?: string[];
58
64
  };
59
65
  }
60
66
  /**
61
67
  * Convert OpenRouter model to ModelInfo with full details
62
68
  */
63
- export declare function convertOpenRouterModel(model: OpenRouterModel, zdrModelIds: Set<string>, metrics?: {
64
- latency?: number;
65
- throughput?: number;
66
- uptime?: number;
67
- } | null): ModelInfo;
69
+ export declare function convertOpenRouterModel(model: OpenRouterModel, zdrModelIds: Set<string>, metrics?: OpenRouterMetrics | null): ModelInfo;
68
70
  /**
69
71
  * OpenRouter provider implementation extending base OpenAI-compatible provider
70
72
  */
71
73
  export declare class OpenRouterProvider extends OpenAIProvider<OpenRouterConfig> implements Provider<OpenRouterConfig> {
72
74
  readonly name = "openrouter";
75
+ protected readonly defaults: {
76
+ chat?: import("@aeye/core").ModelInput;
77
+ imageGenerate?: import("@aeye/core").ModelInput;
78
+ imageEdit?: import("@aeye/core").ModelInput;
79
+ imageAnalyze?: import("@aeye/core").ModelInput;
80
+ transcription?: import("@aeye/core").ModelInput;
81
+ speech?: import("@aeye/core").ModelInput;
82
+ embedding?: import("@aeye/core").ModelInput;
83
+ decision?: import("@aeye/core").ModelInput;
84
+ rerank?: import("@aeye/core").ModelInput;
85
+ };
73
86
  /**
74
87
  * OpenRouter is a router, not a model host: it speaks an OpenAI-shaped API
75
88
  * but forwards each request to the upstream provider that actually serves
@@ -88,56 +101,102 @@ export declare class OpenRouterProvider extends OpenAIProvider<OpenRouterConfig>
88
101
  * why structured output looked family-aware while tools were not.
89
102
  */
90
103
  protected supportedStrictFamilies: ReadonlySet<DescriptorFamily>;
104
+ private readonly reasoningOf;
91
105
  protected createClient(config: OpenRouterConfig): OpenAI;
92
106
  protected convertModel(model: OpenAI.Model): ModelInfo;
93
107
  /**
94
- * Augment chat request with OpenRouter-specific parameters
108
+ * OpenRouter serves hosted tools and reasoning options through chat
109
+ * completions, so the Responses API is never needed.
95
110
  */
96
- protected augmentChatRequest(params: OpenRouterChatRequest, request: Request, config: OpenRouterConfig): void;
111
+ protected usesResponses(): boolean;
97
112
  /**
98
- *
99
- * @param expected
100
- * @param response
113
+ * OpenRouter doesn't honor `allowed_tools` (models still call the others,
114
+ * and some upstreams reject it), so only the allowed tools are sent.
115
+ */
116
+ protected buildChatParams(request: Request, run: OperationRun<OpenRouterConfig>, streaming: boolean): Promise<OpenAI.Chat.Completions.ChatCompletionCreateParamsNonStreaming>;
117
+ /**
118
+ * OpenRouter reports an upstream's rejection as "Provider returned error",
119
+ * with the upstream's own message in `metadata.raw`.
120
+ */
121
+ protected rejectedSchema(request: Request, error: Error): SchemaRejectedError | undefined;
122
+ /**
123
+ * OpenRouter strips `strict` from tools bound for Anthropic unless the
124
+ * request carries Anthropic's structured-outputs beta flag, so a strict tool
125
+ * would silently go unenforced (openrouter.ai/docs/guides/routing/provider-selection,
126
+ * read 2026-11-04). Other upstreams ignore the header.
127
+ */
128
+ protected chatHeaders(params: OpenAI.Chat.ChatCompletionCreateParams): Record<string, string> | undefined;
129
+ /**
130
+ * Augment chat request with OpenRouter-specific parameters
101
131
  */
132
+ protected augmentChatRequest(params: OpenRouterChatRequest, request: Request, config: OpenRouterConfig): void;
102
133
  protected augmentChatResponse(expected: OpenRouterChatResponse, response: Response, config: OpenRouterConfig): void;
103
134
  protected augmentChatChunk(expected: OpenRouterChatChunk, chunk: Chunk, config: OpenRouterConfig): void;
104
- protected augmentChatMessage(chatMessage: OpenRouterRequestMessage, message: Message, config: OpenRouterConfig): void;
135
+ /**
136
+ * OpenRouter marks cache breakpoints Anthropic-style and translates them
137
+ * for each upstream provider.
138
+ */
139
+ protected augmentChatContent(chatContent: OpenRouterContentPart): void;
140
+ protected augmentChatMessage(chatMessage: OpenAI.Chat.ChatCompletionMessageParam, message: Message): void;
141
+ /**
142
+ * Assistant messages carry their reasoning back on the same message, which
143
+ * OpenRouter relays with the turn's text and tool calls, once even when a
144
+ * message was split into parts.
145
+ */
105
146
  protected convertMessages(request: Request, config: OpenRouterConfig): Promise<OpenRouterRequestMessage[]>;
106
147
  /**
107
- * OpenRouter does not support image generation
148
+ * Produce images through chat: image models on OpenRouter answer with
149
+ * images when asked for the image modality. Runs through the chat hooks.
108
150
  */
109
- generateImage: undefined;
151
+ private chatImages;
152
+ generateImage: Provider['generateImage'];
153
+ editImage: Provider['editImage'];
110
154
  /**
111
- * OpenRouter does not support image generation streaming
155
+ * Image streaming is not offered; image requests fall back to the
156
+ * non-streaming methods.
112
157
  */
113
158
  generateImageStream: undefined;
159
+ editImageStream: undefined;
114
160
  /**
115
- * OpenRouter does not support image editing
161
+ * Transcription streaming is not offered; transcription falls back to
162
+ * the non-streaming method.
116
163
  */
117
- editImage: undefined;
164
+ transcribeStream: undefined;
118
165
  /**
119
- * OpenRouter does not support image editing
166
+ * Order documents by relevance to a query.
167
+ *
168
+ * @param request Rerank request parameters
169
+ * @param ctx Context object
170
+ * @param config Optional configuration override
171
+ * @returns Documents by relevance, most relevant first
120
172
  */
121
- editImageStream: undefined;
173
+ rerank: Provider['rerank'];
122
174
  /**
123
- * OpenRouter does not support audio transcription
175
+ * Typed answers about an input, from System One models such as Jev and
176
+ * Kev or other decision models. A conversation goes in as chat messages.
177
+ * Decisions are an alpha endpoint, outside the versioned API.
178
+ *
179
+ * @param request Decision request parameters
180
+ * @param ctx Context object
181
+ * @param config Optional configuration override
182
+ * @returns Answers by question name
124
183
  */
125
- transcribe: undefined;
184
+ decide: Provider['decide'];
126
185
  /**
127
- * OpenRouter does not support audio transcription streaming
186
+ * Start a batch: OpenRouter takes the requests inline.
128
187
  */
129
- transcribeStream: undefined;
188
+ protected createBatch(batch: BatchSubmission, run: OperationRun<OpenRouterConfig>): Promise<BatchJob>;
130
189
  /**
131
- * OpenRouter does not support speech synthesis
190
+ * Read a batch: OpenRouter returns the results inline once it completes.
132
191
  */
133
- speech: undefined;
192
+ protected retrieveBatch(job: BatchJob, run: OperationRun<OpenRouterConfig>): Promise<BatchJob>;
134
193
  /**
135
- * OpenRouter does not support embeddings
194
+ * A batch as @aeye reports it.
136
195
  */
137
- embed: undefined;
196
+ private toBatchJob;
138
197
  /**
139
198
  * Override listModels to use OpenRouter's model API with ZDR support
140
199
  */
141
- listModels(config: OpenRouterConfig): Promise<ModelInfo[]>;
200
+ listModels(config?: OpenRouterConfig): Promise<ModelInfo[]>;
142
201
  }
143
202
  //# sourceMappingURL=openrouter.d.ts.map
@@ -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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"}