@aeye/openrouter 0.4.1 → 0.5.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 +152 -65
  2. package/aeye-openrouter.md +175 -161
  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 +71 -71
@@ -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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"}