@falai/agent 3.4.0 → 3.4.2
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/dist/cjs/providers/DeepSeekProvider.d.ts +9 -1
- package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.js +1 -0
- package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts +8 -1
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +1 -0
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.d.ts +9 -1
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.js +1 -0
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts +9 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +1 -0
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/DeepSeekProvider.d.ts +9 -1
- package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/DeepSeekProvider.js +1 -0
- package/dist/providers/DeepSeekProvider.js.map +1 -1
- package/dist/providers/GenericOpenAICompatibleProvider.d.ts +8 -1
- package/dist/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/providers/GenericOpenAICompatibleProvider.js +1 -0
- package/dist/providers/GenericOpenAICompatibleProvider.js.map +1 -1
- package/dist/providers/OpenAIProvider.d.ts +9 -1
- package/dist/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/OpenAIProvider.js +1 -0
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts +9 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +1 -0
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/docs/reference/providers.md +27 -0
- package/package.json +2 -2
- package/src/providers/DeepSeekProvider.ts +10 -1
- package/src/providers/GenericOpenAICompatibleProvider.ts +9 -1
- package/src/providers/OpenAIProvider.ts +10 -1
- package/src/providers/OpenRouterProvider.ts +10 -1
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* and its cache hits under `prompt_cache_hit_tokens`; both are read one layer
|
|
4
4
|
* down, where they are the dialect's business rather than this file's.
|
|
5
5
|
*/
|
|
6
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
6
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
7
7
|
import { OpenAICompatibleProvider, type JsonWithTools } from "./OpenAICompatibleProvider.js";
|
|
8
|
+
import type { Provider } from "@providerkit/core";
|
|
8
9
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
9
10
|
export interface DeepSeekProviderOptions {
|
|
10
11
|
/** DeepSeek API key */
|
|
@@ -13,6 +14,13 @@ export interface DeepSeekProviderOptions {
|
|
|
13
14
|
model: string;
|
|
14
15
|
/** Backup models to try if the primary fails (default: []) */
|
|
15
16
|
backupModels?: string[];
|
|
17
|
+
/**
|
|
18
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
19
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
20
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
21
|
+
* degrade to anything else rather than fail the turn.
|
|
22
|
+
*/
|
|
23
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
16
24
|
/** Custom base URL (default: "https://api.deepseek.com") */
|
|
17
25
|
baseURL?: string;
|
|
18
26
|
/** Request defaults sent with every call */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IACtC,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,4CAA4C;IAC5C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,SAAgB,IAAI,cAAc;IAClC,SAAgB,YAAY,EAAE,oBAAoB,CAMhD;gBAEU,OAAO,EAAE,uBAAuB;CAqB7C"}
|
|
@@ -23,6 +23,7 @@ class DeepSeekProvider extends OpenAICompatibleProvider_js_1.OpenAICompatiblePro
|
|
|
23
23
|
structuredOutput: "json_schema",
|
|
24
24
|
...(options.jsonWithTools ? { jsonWithTools: options.jsonWithTools } : {}),
|
|
25
25
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
26
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
26
27
|
...(options.config ? { config: options.config } : {}),
|
|
27
28
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
28
29
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepSeekProvider.js","sourceRoot":"","sources":["../../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,+EAA6F;
|
|
1
|
+
{"version":3,"file":"DeepSeekProvider.js","sourceRoot":"","sources":["../../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,+EAA6F;AAkC7F,MAAa,gBAAiB,SAAQ,sDAAwB;IAU5D,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QAED,KAAK,CAAC;YACJ,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,0BAA0B;YACtD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,wEAAwE;YACxE,gBAAgB,EAAE,aAAa;YAC/B,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QA5BW,SAAI,GAAG,UAAU,CAAC;QAClB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IAsBF,CAAC;CACF;AA/BD,4CA+BC"}
|
|
@@ -25,9 +25,10 @@
|
|
|
25
25
|
* For OpenAI, OpenRouter, Anthropic and Gemini, prefer their dedicated
|
|
26
26
|
* provider classes.
|
|
27
27
|
*/
|
|
28
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
28
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
29
29
|
import { OpenAICompatibleProvider, type JsonWithTools, type StructuredOutputMode } from "./OpenAICompatibleProvider.js";
|
|
30
30
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
31
|
+
import type { Provider } from "@providerkit/core";
|
|
31
32
|
export interface OpenAICompatibleOptions {
|
|
32
33
|
/** Provider identifier, e.g. "azure", "ollama", "groq". */
|
|
33
34
|
name: string;
|
|
@@ -39,6 +40,12 @@ export interface OpenAICompatibleOptions {
|
|
|
39
40
|
model: string;
|
|
40
41
|
/** Backup models to try if the primary fails. */
|
|
41
42
|
backupModels?: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
45
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
46
|
+
* @providerkit/core Providers.
|
|
47
|
+
*/
|
|
48
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
42
49
|
/** Capability overrides, merged over the defaults (all true except caching). */
|
|
43
50
|
capabilities?: Partial<ProviderCapabilities>;
|
|
44
51
|
/** Extra request headers (e.g. Azure's `api-key`, a gateway's auth header). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericOpenAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"GenericOpenAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,yDAAyD;IACzD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iDAAiD;IACjD,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA4DD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,GAC/B,wBAAwB,CAE1B"}
|
|
@@ -69,6 +69,7 @@ class GenericOpenAICompatibleProvider extends OpenAICompatibleProvider_js_1.Open
|
|
|
69
69
|
...(options.jsonWithTools ? { jsonWithTools: options.jsonWithTools } : {}),
|
|
70
70
|
...(options.defaultHeaders ? { headers: options.defaultHeaders } : {}),
|
|
71
71
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
72
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
72
73
|
...(options.config ? { config: options.config } : {}),
|
|
73
74
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
74
75
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericOpenAICompatibleProvider.js","sourceRoot":"","sources":["../../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;
|
|
1
|
+
{"version":3,"file":"GenericOpenAICompatibleProvider.js","sourceRoot":"","sources":["../../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;AAkHH,wEAIC;AAnHD,+EAIuC;AA4CvC,iEAAiE;AACjE,MAAM,oBAAoB,GAAyB;IACjD,aAAa,EAAE,IAAI;IACnB,wBAAwB,EAAE,IAAI;IAC9B,iBAAiB,EAAE,IAAI;IACvB,0BAA0B,EAAE,IAAI;IAChC,qBAAqB,EAAE,KAAK;CAC7B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,+BAAgC,SAAQ,sDAAwB;IAIpE,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,8BAA8B,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,IAAI,OAAO,CAAC,IAAI,oFAAoF,CACrG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,4BAA4B,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,CAAC;YACJ,EAAE,EAAE,OAAO,CAAC,IAAI;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,yEAAyE;YACzE,sDAAsD;YACtD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,aAAa;YAC3D,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAC3E,CAAC;CACF;AAED;;;;GAIG;AACH,SAAgB,8BAA8B,CAC5C,OAAgC;IAEhC,OAAO,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* OpenAI provider. Structured output goes out on the Responses API, which
|
|
3
3
|
* enforces the schema natively.
|
|
4
4
|
*/
|
|
5
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
5
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
6
6
|
import { OpenAICompatibleProvider } from "./OpenAICompatibleProvider.js";
|
|
7
|
+
import type { Provider } from "@providerkit/core";
|
|
7
8
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
8
9
|
export interface OpenAIProviderOptions {
|
|
9
10
|
/** OpenAI API key */
|
|
@@ -12,6 +13,13 @@ export interface OpenAIProviderOptions {
|
|
|
12
13
|
model: string;
|
|
13
14
|
/** Backup models to try if the primary fails (default: []) */
|
|
14
15
|
backupModels?: string[];
|
|
16
|
+
/**
|
|
17
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
18
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
19
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
20
|
+
* degrade to anything else rather than fail the turn.
|
|
21
|
+
*/
|
|
22
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
15
23
|
/** Organization id, sent as the `OpenAI-Organization` header */
|
|
16
24
|
organization?: string;
|
|
17
25
|
/** Request defaults sent with every call */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,cAAe,SAAQ,wBAAwB;IAC1D,SAAgB,IAAI,YAAY;IAChC,SAAgB,YAAY,EAAE,oBAAoB,CAQhD;gBAEU,OAAO,EAAE,qBAAqB;CAmB3C"}
|
|
@@ -21,6 +21,7 @@ class OpenAIProvider extends OpenAICompatibleProvider_js_1.OpenAICompatibleProvi
|
|
|
21
21
|
? { headers: { "OpenAI-Organization": options.organization } }
|
|
22
22
|
: {}),
|
|
23
23
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
24
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
24
25
|
...(options.config ? { config: options.config } : {}),
|
|
25
26
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
26
27
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+EAAyE;
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+EAAyE;AA4BzE,MAAa,cAAe,SAAQ,sDAAwB;IAY1D,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAE1F,KAAK,CAAC;YACJ,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,gBAAgB,EAAE,iBAAiB;YACnC,GAAG,CAAC,OAAO,CAAC,YAAY;gBACtB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE;gBAC9D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QA5BW,SAAI,GAAG,QAAQ,CAAC;QAChB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,sEAAsE;YACtE,2CAA2C;YAC3C,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IAoBF,CAAC;CACF;AA/BD,wCA+BC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenRouter — one OpenAI-compatible endpoint in front of many models.
|
|
3
3
|
*/
|
|
4
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
4
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
5
5
|
import { OpenAICompatibleProvider, type JsonWithTools } from "./OpenAICompatibleProvider.js";
|
|
6
6
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
7
|
+
import type { Provider } from "@providerkit/core";
|
|
7
8
|
export interface OpenRouterProviderOptions {
|
|
8
9
|
/** OpenRouter API key */
|
|
9
10
|
apiKey: string;
|
|
@@ -11,6 +12,13 @@ export interface OpenRouterProviderOptions {
|
|
|
11
12
|
model: string;
|
|
12
13
|
/** Backup models to try if the primary fails (default: []) */
|
|
13
14
|
backupModels?: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
17
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
18
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
19
|
+
* degrade to anything else rather than fail the turn.
|
|
20
|
+
*/
|
|
21
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
14
22
|
/** Site URL for OpenRouter's rankings */
|
|
15
23
|
siteUrl?: string;
|
|
16
24
|
/** App name for OpenRouter's rankings */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,YAAY,EAAE,oBAAoB,CAMhD;gBAEU,OAAO,EAAE,yBAAyB;CAyB/C"}
|
|
@@ -26,6 +26,7 @@ class OpenRouterProvider extends OpenAICompatibleProvider_js_1.OpenAICompatibleP
|
|
|
26
26
|
},
|
|
27
27
|
...(options.providerOrder ? { providerOrder: options.providerOrder } : {}),
|
|
28
28
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
29
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
29
30
|
...(options.config ? { config: options.config } : {}),
|
|
30
31
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
31
32
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenRouterProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,+EAA6F;
|
|
1
|
+
{"version":3,"file":"OpenRouterProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,+EAA6F;AA6C7F,MAAa,kBAAmB,SAAQ,sDAAwB;IAU9D,YAAY,OAAkC;QAC5C,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAE3F,KAAK,CAAC;YACJ,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,2BAA2B;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iEAAiE;YACjE,+DAA+D;YAC/D,gBAAgB,EAAE,aAAa;YAC/B,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;YACD,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QAhCW,SAAI,GAAG,YAAY,CAAC;QACpB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IA0BF,CAAC;CACF;AAnCD,gDAmCC"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* and its cache hits under `prompt_cache_hit_tokens`; both are read one layer
|
|
4
4
|
* down, where they are the dialect's business rather than this file's.
|
|
5
5
|
*/
|
|
6
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
6
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
7
7
|
import { OpenAICompatibleProvider, type JsonWithTools } from "./OpenAICompatibleProvider.js";
|
|
8
|
+
import type { Provider } from "@providerkit/core";
|
|
8
9
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
9
10
|
export interface DeepSeekProviderOptions {
|
|
10
11
|
/** DeepSeek API key */
|
|
@@ -13,6 +14,13 @@ export interface DeepSeekProviderOptions {
|
|
|
13
14
|
model: string;
|
|
14
15
|
/** Backup models to try if the primary fails (default: []) */
|
|
15
16
|
backupModels?: string[];
|
|
17
|
+
/**
|
|
18
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
19
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
20
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
21
|
+
* degrade to anything else rather than fail the turn.
|
|
22
|
+
*/
|
|
23
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
16
24
|
/** Custom base URL (default: "https://api.deepseek.com") */
|
|
17
25
|
baseURL?: string;
|
|
18
26
|
/** Request defaults sent with every call */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IACtC,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,4CAA4C;IAC5C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,SAAgB,IAAI,cAAc;IAClC,SAAgB,YAAY,EAAE,oBAAoB,CAMhD;gBAEU,OAAO,EAAE,uBAAuB;CAqB7C"}
|
|
@@ -20,6 +20,7 @@ export class DeepSeekProvider extends OpenAICompatibleProvider {
|
|
|
20
20
|
structuredOutput: "json_schema",
|
|
21
21
|
...(options.jsonWithTools ? { jsonWithTools: options.jsonWithTools } : {}),
|
|
22
22
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
23
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
23
24
|
...(options.config ? { config: options.config } : {}),
|
|
24
25
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
25
26
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepSeekProvider.js","sourceRoot":"","sources":["../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,wBAAwB,EAAsB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"DeepSeekProvider.js","sourceRoot":"","sources":["../../src/providers/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,wBAAwB,EAAsB,MAAM,+BAA+B,CAAC;AAkC7F,MAAM,OAAO,gBAAiB,SAAQ,wBAAwB;IAU5D,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QAED,KAAK,CAAC;YACJ,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,0BAA0B;YACtD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,wEAAwE;YACxE,gBAAgB,EAAE,aAAa;YAC/B,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QA5BW,SAAI,GAAG,UAAU,CAAC;QAClB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IAsBF,CAAC;CACF"}
|
|
@@ -25,9 +25,10 @@
|
|
|
25
25
|
* For OpenAI, OpenRouter, Anthropic and Gemini, prefer their dedicated
|
|
26
26
|
* provider classes.
|
|
27
27
|
*/
|
|
28
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
28
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
29
29
|
import { OpenAICompatibleProvider, type JsonWithTools, type StructuredOutputMode } from "./OpenAICompatibleProvider.js";
|
|
30
30
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
31
|
+
import type { Provider } from "@providerkit/core";
|
|
31
32
|
export interface OpenAICompatibleOptions {
|
|
32
33
|
/** Provider identifier, e.g. "azure", "ollama", "groq". */
|
|
33
34
|
name: string;
|
|
@@ -39,6 +40,12 @@ export interface OpenAICompatibleOptions {
|
|
|
39
40
|
model: string;
|
|
40
41
|
/** Backup models to try if the primary fails. */
|
|
41
42
|
backupModels?: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
45
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
46
|
+
* @providerkit/core Providers.
|
|
47
|
+
*/
|
|
48
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
42
49
|
/** Capability overrides, merged over the defaults (all true except caching). */
|
|
43
50
|
capabilities?: Partial<ProviderCapabilities>;
|
|
44
51
|
/** Extra request headers (e.g. Azure's `api-key`, a gateway's auth header). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericOpenAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"GenericOpenAICompatibleProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,yDAAyD;IACzD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iDAAiD;IACjD,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA4DD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,GAC/B,wBAAwB,CAE1B"}
|
|
@@ -66,6 +66,7 @@ class GenericOpenAICompatibleProvider extends OpenAICompatibleProvider {
|
|
|
66
66
|
...(options.jsonWithTools ? { jsonWithTools: options.jsonWithTools } : {}),
|
|
67
67
|
...(options.defaultHeaders ? { headers: options.defaultHeaders } : {}),
|
|
68
68
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
69
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
69
70
|
...(options.config ? { config: options.config } : {}),
|
|
70
71
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
71
72
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericOpenAICompatibleProvider.js","sourceRoot":"","sources":["../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EACL,wBAAwB,GAGzB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"GenericOpenAICompatibleProvider.js","sourceRoot":"","sources":["../../src/providers/GenericOpenAICompatibleProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EACL,wBAAwB,GAGzB,MAAM,+BAA+B,CAAC;AA4CvC,iEAAiE;AACjE,MAAM,oBAAoB,GAAyB;IACjD,aAAa,EAAE,IAAI;IACnB,wBAAwB,EAAE,IAAI;IAC9B,iBAAiB,EAAE,IAAI;IACvB,0BAA0B,EAAE,IAAI;IAChC,qBAAqB,EAAE,KAAK;CAC7B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,+BAAgC,SAAQ,wBAAwB;IAIpE,YAAY,OAAgC;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,8BAA8B,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,IAAI,OAAO,CAAC,IAAI,oFAAoF,CACrG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,4BAA4B,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,CAAC;YACJ,EAAE,EAAE,OAAO,CAAC,IAAI;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,yEAAyE;YACzE,sDAAsD;YACtD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,aAAa;YAC3D,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAC3E,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAgC;IAEhC,OAAO,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* OpenAI provider. Structured output goes out on the Responses API, which
|
|
3
3
|
* enforces the schema natively.
|
|
4
4
|
*/
|
|
5
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
5
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
6
6
|
import { OpenAICompatibleProvider } from "./OpenAICompatibleProvider.js";
|
|
7
|
+
import type { Provider } from "@providerkit/core";
|
|
7
8
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
8
9
|
export interface OpenAIProviderOptions {
|
|
9
10
|
/** OpenAI API key */
|
|
@@ -12,6 +13,13 @@ export interface OpenAIProviderOptions {
|
|
|
12
13
|
model: string;
|
|
13
14
|
/** Backup models to try if the primary fails (default: []) */
|
|
14
15
|
backupModels?: string[];
|
|
16
|
+
/**
|
|
17
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
18
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
19
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
20
|
+
* degrade to anything else rather than fail the turn.
|
|
21
|
+
*/
|
|
22
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
15
23
|
/** Organization id, sent as the `OpenAI-Organization` header */
|
|
16
24
|
organization?: string;
|
|
17
25
|
/** Request defaults sent with every call */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,cAAe,SAAQ,wBAAwB;IAC1D,SAAgB,IAAI,YAAY;IAChC,SAAgB,YAAY,EAAE,oBAAoB,CAQhD;gBAEU,OAAO,EAAE,qBAAqB;CAmB3C"}
|
|
@@ -18,6 +18,7 @@ export class OpenAIProvider extends OpenAICompatibleProvider {
|
|
|
18
18
|
? { headers: { "OpenAI-Organization": options.organization } }
|
|
19
19
|
: {}),
|
|
20
20
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
21
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
21
22
|
...(options.config ? { config: options.config } : {}),
|
|
22
23
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
23
24
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA4BzE,MAAM,OAAO,cAAe,SAAQ,wBAAwB;IAY1D,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAE1F,KAAK,CAAC;YACJ,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,gBAAgB,EAAE,iBAAiB;YACnC,GAAG,CAAC,OAAO,CAAC,YAAY;gBACtB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE;gBAC9D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QA5BW,SAAI,GAAG,QAAQ,CAAC;QAChB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,sEAAsE;YACtE,2CAA2C;YAC3C,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IAoBF,CAAC;CACF"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenRouter — one OpenAI-compatible endpoint in front of many models.
|
|
3
3
|
*/
|
|
4
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
4
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
5
5
|
import { OpenAICompatibleProvider, type JsonWithTools } from "./OpenAICompatibleProvider.js";
|
|
6
6
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
7
|
+
import type { Provider } from "@providerkit/core";
|
|
7
8
|
export interface OpenRouterProviderOptions {
|
|
8
9
|
/** OpenRouter API key */
|
|
9
10
|
apiKey: string;
|
|
@@ -11,6 +12,13 @@ export interface OpenRouterProviderOptions {
|
|
|
11
12
|
model: string;
|
|
12
13
|
/** Backup models to try if the primary fails (default: []) */
|
|
13
14
|
backupModels?: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
17
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
18
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
19
|
+
* degrade to anything else rather than fail the turn.
|
|
20
|
+
*/
|
|
21
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
14
22
|
/** Site URL for OpenRouter's rankings */
|
|
15
23
|
siteUrl?: string;
|
|
16
24
|
/** App name for OpenRouter's rankings */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzC,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,YAAY,EAAE,oBAAoB,CAMhD;gBAEU,OAAO,EAAE,yBAAyB;CAyB/C"}
|
|
@@ -23,6 +23,7 @@ export class OpenRouterProvider extends OpenAICompatibleProvider {
|
|
|
23
23
|
},
|
|
24
24
|
...(options.providerOrder ? { providerOrder: options.providerOrder } : {}),
|
|
25
25
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
26
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
26
27
|
...(options.config ? { config: options.config } : {}),
|
|
27
28
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
28
29
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenRouterProvider.js","sourceRoot":"","sources":["../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,wBAAwB,EAAsB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenRouterProvider.js","sourceRoot":"","sources":["../../src/providers/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,wBAAwB,EAAsB,MAAM,+BAA+B,CAAC;AA6C7F,MAAM,OAAO,kBAAmB,SAAQ,wBAAwB;IAU9D,YAAY,OAAkC;QAC5C,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAE3F,KAAK,CAAC;YACJ,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,2BAA2B;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iEAAiE;YACjE,+DAA+D;YAC/D,gBAAgB,EAAE,aAAa;YAC/B,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;YACD,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QAhCW,SAAI,GAAG,YAAY,CAAC;QACpB,iBAAY,GAAyB;YACnD,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,iBAAiB,EAAE,IAAI;YACvB,0BAA0B,EAAE,IAAI;YAChC,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IA0BF,CAAC;CACF"}
|
|
@@ -322,6 +322,33 @@ const deepseek = new DeepSeekProvider({
|
|
|
322
322
|
});
|
|
323
323
|
```
|
|
324
324
|
|
|
325
|
+
## Cross-provider fallbacks
|
|
326
|
+
|
|
327
|
+
In addition to `backupModels` (which fail over to another model on the *same* provider), providers accept a `fallbacks` list of `FallbackSpec` objects. When the primary provider encounters a transient failure (rate limits, outages, 5xx), the engine automatically falls over to the backup providers with cooldown management:
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
import { ZaiProvider } from "@falai/agent";
|
|
331
|
+
|
|
332
|
+
const provider = new ZaiProvider({
|
|
333
|
+
apiKey: process.env.ZAI_API_KEY!,
|
|
334
|
+
model: "glm-5.3-flash",
|
|
335
|
+
fallbacks: [
|
|
336
|
+
{
|
|
337
|
+
preset: "openrouter",
|
|
338
|
+
apiKey: process.env.OPENROUTER_API_KEY!,
|
|
339
|
+
model: "z-ai/glm-5.3-flash",
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
preset: "deepseek",
|
|
343
|
+
apiKey: process.env.DEEPSEEK_API_KEY!,
|
|
344
|
+
model: "deepseek-flash",
|
|
345
|
+
},
|
|
346
|
+
],
|
|
347
|
+
});
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
The underlying `@providerkit/core` engine tracks cooldowns per provider, automatically bypassing throttled backends until their cooldown expires.
|
|
351
|
+
|
|
325
352
|
## Building a custom OpenAI-compatible provider
|
|
326
353
|
|
|
327
354
|
Many vendors (Groq, Together, Fireworks, …) expose OpenAI-compatible chat-completions APIs. Instead of implementing `AiProvider` from scratch, subclass the exported `OpenAICompatibleProvider` base class — history and tool translation, streaming, tool-call assembly, backup-model fallback, retries and normalized `ProviderError`s all come with it. `OpenAIProvider`, `OpenRouterProvider`, and `DeepSeekProvider` are themselves thin subclasses.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@falai/agent",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.2",
|
|
4
4
|
"description": "Conversational state engine for TypeScript where the AI understands, but the code is in control",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"typescript-eslint": "^8.18.2"
|
|
93
93
|
},
|
|
94
94
|
"dependencies": {
|
|
95
|
-
"@providerkit/core": "^0.
|
|
95
|
+
"@providerkit/core": "^0.10.0",
|
|
96
96
|
"loglevel": "^1.9.2"
|
|
97
97
|
},
|
|
98
98
|
"peerDependencies": {
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* down, where they are the dialect's business rather than this file's.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
7
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
8
8
|
import { OpenAICompatibleProvider, type JsonWithTools } from "./OpenAICompatibleProvider.js";
|
|
9
|
+
import type { Provider } from "@providerkit/core";
|
|
9
10
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
10
11
|
|
|
11
12
|
export interface DeepSeekProviderOptions {
|
|
@@ -15,6 +16,13 @@ export interface DeepSeekProviderOptions {
|
|
|
15
16
|
model: string;
|
|
16
17
|
/** Backup models to try if the primary fails (default: []) */
|
|
17
18
|
backupModels?: string[];
|
|
19
|
+
/**
|
|
20
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
21
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
22
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
23
|
+
* degrade to anything else rather than fail the turn.
|
|
24
|
+
*/
|
|
25
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
18
26
|
/** Custom base URL (default: "https://api.deepseek.com") */
|
|
19
27
|
baseURL?: string;
|
|
20
28
|
/** Request defaults sent with every call */
|
|
@@ -56,6 +64,7 @@ export class DeepSeekProvider extends OpenAICompatibleProvider {
|
|
|
56
64
|
structuredOutput: "json_schema",
|
|
57
65
|
...(options.jsonWithTools ? { jsonWithTools: options.jsonWithTools } : {}),
|
|
58
66
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
67
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
59
68
|
...(options.config ? { config: options.config } : {}),
|
|
60
69
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
61
70
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -26,13 +26,14 @@
|
|
|
26
26
|
* provider classes.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
29
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
30
30
|
import {
|
|
31
31
|
OpenAICompatibleProvider,
|
|
32
32
|
type JsonWithTools,
|
|
33
33
|
type StructuredOutputMode,
|
|
34
34
|
} from "./OpenAICompatibleProvider.js";
|
|
35
35
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
36
|
+
import type { Provider } from "@providerkit/core";
|
|
36
37
|
|
|
37
38
|
export interface OpenAICompatibleOptions {
|
|
38
39
|
/** Provider identifier, e.g. "azure", "ollama", "groq". */
|
|
@@ -45,6 +46,12 @@ export interface OpenAICompatibleOptions {
|
|
|
45
46
|
model: string;
|
|
46
47
|
/** Backup models to try if the primary fails. */
|
|
47
48
|
backupModels?: string[];
|
|
49
|
+
/**
|
|
50
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
51
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
52
|
+
* @providerkit/core Providers.
|
|
53
|
+
*/
|
|
54
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
48
55
|
/** Capability overrides, merged over the defaults (all true except caching). */
|
|
49
56
|
capabilities?: Partial<ProviderCapabilities>;
|
|
50
57
|
/** Extra request headers (e.g. Azure's `api-key`, a gateway's auth header). */
|
|
@@ -115,6 +122,7 @@ class GenericOpenAICompatibleProvider extends OpenAICompatibleProvider {
|
|
|
115
122
|
...(options.jsonWithTools ? { jsonWithTools: options.jsonWithTools } : {}),
|
|
116
123
|
...(options.defaultHeaders ? { headers: options.defaultHeaders } : {}),
|
|
117
124
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
125
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
118
126
|
...(options.config ? { config: options.config } : {}),
|
|
119
127
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
120
128
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* enforces the schema natively.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
6
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
7
7
|
import { OpenAICompatibleProvider } from "./OpenAICompatibleProvider.js";
|
|
8
|
+
import type { Provider } from "@providerkit/core";
|
|
8
9
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
9
10
|
|
|
10
11
|
export interface OpenAIProviderOptions {
|
|
@@ -14,6 +15,13 @@ export interface OpenAIProviderOptions {
|
|
|
14
15
|
model: string;
|
|
15
16
|
/** Backup models to try if the primary fails (default: []) */
|
|
16
17
|
backupModels?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
20
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
21
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
22
|
+
* degrade to anything else rather than fail the turn.
|
|
23
|
+
*/
|
|
24
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
17
25
|
/** Organization id, sent as the `OpenAI-Organization` header */
|
|
18
26
|
organization?: string;
|
|
19
27
|
/** Request defaults sent with every call */
|
|
@@ -49,6 +57,7 @@ export class OpenAIProvider extends OpenAICompatibleProvider {
|
|
|
49
57
|
? { headers: { "OpenAI-Organization": options.organization } }
|
|
50
58
|
: {}),
|
|
51
59
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
60
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
52
61
|
...(options.config ? { config: options.config } : {}),
|
|
53
62
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
54
63
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* OpenRouter — one OpenAI-compatible endpoint in front of many models.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
5
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
6
6
|
import { OpenAICompatibleProvider, type JsonWithTools } from "./OpenAICompatibleProvider.js";
|
|
7
7
|
import type { RequestConfig } from "./ProviderAdapter.js";
|
|
8
|
+
import type { Provider } from "@providerkit/core";
|
|
8
9
|
|
|
9
10
|
export interface OpenRouterProviderOptions {
|
|
10
11
|
/** OpenRouter API key */
|
|
@@ -13,6 +14,13 @@ export interface OpenRouterProviderOptions {
|
|
|
13
14
|
model: string;
|
|
14
15
|
/** Backup models to try if the primary fails (default: []) */
|
|
15
16
|
backupModels?: string[];
|
|
17
|
+
/**
|
|
18
|
+
* Fallback providers, tried in order after this one fails or exhausts.
|
|
19
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and
|
|
20
|
+
* @providerkit/core Providers — the seam that makes a coding-plan primary
|
|
21
|
+
* degrade to anything else rather than fail the turn.
|
|
22
|
+
*/
|
|
23
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
16
24
|
/** Site URL for OpenRouter's rankings */
|
|
17
25
|
siteUrl?: string;
|
|
18
26
|
/** App name for OpenRouter's rankings */
|
|
@@ -69,6 +77,7 @@ export class OpenRouterProvider extends OpenAICompatibleProvider {
|
|
|
69
77
|
},
|
|
70
78
|
...(options.providerOrder ? { providerOrder: options.providerOrder } : {}),
|
|
71
79
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
80
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
72
81
|
...(options.config ? { config: options.config } : {}),
|
|
73
82
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
74
83
|
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|