@falai/agent 3.3.0 → 3.4.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.
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts +6 -2
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.js +2 -0
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
- package/dist/cjs/providers/FallbackAiProvider.d.ts +26 -0
- package/dist/cjs/providers/FallbackAiProvider.d.ts.map +1 -0
- package/dist/cjs/providers/FallbackAiProvider.js +54 -0
- package/dist/cjs/providers/FallbackAiProvider.js.map +1 -0
- package/dist/cjs/providers/GeminiProvider.d.ts +5 -1
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +2 -0
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.js +2 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts +8 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.js +23 -1
- package/dist/cjs/providers/ProviderAdapter.js.map +1 -1
- package/dist/cjs/providers/ZaiProvider.d.ts +6 -2
- package/dist/cjs/providers/ZaiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/ZaiProvider.js +2 -0
- package/dist/cjs/providers/ZaiProvider.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts +6 -2
- package/dist/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.js +2 -0
- package/dist/providers/AnthropicProvider.js.map +1 -1
- package/dist/providers/FallbackAiProvider.d.ts +26 -0
- package/dist/providers/FallbackAiProvider.d.ts.map +1 -0
- package/dist/providers/FallbackAiProvider.js +50 -0
- package/dist/providers/FallbackAiProvider.js.map +1 -0
- package/dist/providers/GeminiProvider.d.ts +5 -1
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +2 -0
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.js +2 -0
- package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/providers/ProviderAdapter.d.ts +8 -1
- package/dist/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/providers/ProviderAdapter.js +24 -2
- package/dist/providers/ProviderAdapter.js.map +1 -1
- package/dist/providers/ZaiProvider.d.ts +6 -2
- package/dist/providers/ZaiProvider.d.ts.map +1 -1
- package/dist/providers/ZaiProvider.js +2 -0
- package/dist/providers/ZaiProvider.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/providers/AnthropicProvider.ts +8 -3
- package/src/providers/FallbackAiProvider.ts +94 -0
- package/src/providers/GeminiProvider.ts +7 -2
- package/src/providers/OpenAICompatibleProvider.ts +2 -0
- package/src/providers/ProviderAdapter.ts +31 -1
- package/src/providers/ZaiProvider.ts +8 -3
|
@@ -27,9 +27,11 @@ import {
|
|
|
27
27
|
streamWatch,
|
|
28
28
|
streamWithBackupModels,
|
|
29
29
|
watchChunks,
|
|
30
|
+
withFallbackProviders,
|
|
30
31
|
withStreamRetry,
|
|
31
32
|
type ChatMessage,
|
|
32
33
|
type Effort,
|
|
34
|
+
type FallbackOptions,
|
|
33
35
|
type JsonObjectSchema,
|
|
34
36
|
type JsonWithToolsProbe,
|
|
35
37
|
type ProbeOptions,
|
|
@@ -119,6 +121,12 @@ export interface ProviderAdapterInit {
|
|
|
119
121
|
defaults?: RequestConfig;
|
|
120
122
|
/** Tried in order after the primary. */
|
|
121
123
|
backupModels?: string[];
|
|
124
|
+
/**
|
|
125
|
+
* Fallback providers to try if this provider fails/exhausts.
|
|
126
|
+
* Accepts both @falai/agent AiProviders (like ZaiProvider) and @providerkit/core Providers.
|
|
127
|
+
*/
|
|
128
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
129
|
+
fallbackOptions?: FallbackOptions<Provider>;
|
|
122
130
|
retryConfig?: { timeout?: number; retries?: number };
|
|
123
131
|
}
|
|
124
132
|
|
|
@@ -212,6 +220,9 @@ interface Accumulator {
|
|
|
212
220
|
}
|
|
213
221
|
|
|
214
222
|
function fold(acc: Accumulator, chunk: ProviderChunk): string {
|
|
223
|
+
if (chunk.source) {
|
|
224
|
+
acc.model = chunk.source.model;
|
|
225
|
+
}
|
|
215
226
|
if (chunk.usage) {
|
|
216
227
|
acc.promptTokens = chunk.usage.inputTokens;
|
|
217
228
|
acc.completionTokens = chunk.usage.outputTokens;
|
|
@@ -256,12 +267,31 @@ export abstract class ProviderAdapter implements AiProvider {
|
|
|
256
267
|
protected readonly retryConfig: RetryConfig;
|
|
257
268
|
private readonly defaults: ProviderAdapterInit["defaults"];
|
|
258
269
|
|
|
270
|
+
public get coreProvider(): Provider {
|
|
271
|
+
return this.provider;
|
|
272
|
+
}
|
|
273
|
+
|
|
259
274
|
protected constructor(init: ProviderAdapterInit) {
|
|
260
275
|
this.defaults = init.defaults;
|
|
261
|
-
this.provider = init.provider;
|
|
262
276
|
this.primaryModel = init.model;
|
|
263
277
|
this.backupModels = init.backupModels ?? [];
|
|
264
278
|
this.retryConfig = resolveRetryConfig(init.retryConfig);
|
|
279
|
+
|
|
280
|
+
if (init.fallbacks && init.fallbacks.length > 0) {
|
|
281
|
+
const coreProviders: Provider[] = [
|
|
282
|
+
init.provider,
|
|
283
|
+
...init.fallbacks.map((f) => {
|
|
284
|
+
if (f instanceof ProviderAdapter) return f.coreProvider;
|
|
285
|
+
if ("coreProvider" in f && (f as { coreProvider: Provider }).coreProvider) {
|
|
286
|
+
return (f as { coreProvider: Provider }).coreProvider;
|
|
287
|
+
}
|
|
288
|
+
return f as Provider;
|
|
289
|
+
}),
|
|
290
|
+
];
|
|
291
|
+
this.provider = withFallbackProviders(coreProviders, init.fallbackOptions);
|
|
292
|
+
} else {
|
|
293
|
+
this.provider = init.provider;
|
|
294
|
+
}
|
|
265
295
|
}
|
|
266
296
|
|
|
267
297
|
/**
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
* which is thinking ON.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { createZaiCodingProvider } from "@providerkit/core";
|
|
15
|
+
import { createZaiCodingProvider, type FallbackOptions, type Provider } from "@providerkit/core";
|
|
16
16
|
|
|
17
|
-
import type { ProviderCapabilities } from "../types/ai.js";
|
|
17
|
+
import type { AiProvider, ProviderCapabilities } from "../types/ai.js";
|
|
18
18
|
import { ProviderAdapter, type RequestConfig } from "./ProviderAdapter.js";
|
|
19
19
|
|
|
20
20
|
export interface ZaiProviderOptions {
|
|
@@ -22,8 +22,11 @@ export interface ZaiProviderOptions {
|
|
|
22
22
|
apiKey: string;
|
|
23
23
|
/** Model to use. Defaults to the fleet workhorse `glm-5.3-flash`. */
|
|
24
24
|
model?: string;
|
|
25
|
-
/** Backup models to try if the primary fails (default: []) */
|
|
25
|
+
/** Backup models to try on this provider if the primary fails (default: []) */
|
|
26
26
|
backupModels?: string[];
|
|
27
|
+
/** Fallback providers to try if this provider fails/exhausts */
|
|
28
|
+
fallbacks?: Array<AiProvider | Provider>;
|
|
29
|
+
fallbackOptions?: FallbackOptions<Provider>;
|
|
27
30
|
/** Any endpoint speaking the Anthropic Messages dialect with the plan's
|
|
28
31
|
* auth. Defaults to the coding endpoint. */
|
|
29
32
|
baseUrl?: string;
|
|
@@ -61,6 +64,8 @@ export class ZaiProvider extends ProviderAdapter {
|
|
|
61
64
|
model,
|
|
62
65
|
...(options.config ? { defaults: options.config } : {}),
|
|
63
66
|
...(options.backupModels ? { backupModels: options.backupModels } : {}),
|
|
67
|
+
...(options.fallbacks ? { fallbacks: options.fallbacks } : {}),
|
|
68
|
+
...(options.fallbackOptions ? { fallbackOptions: options.fallbackOptions } : {}),
|
|
64
69
|
...(options.retryConfig ? { retryConfig: options.retryConfig } : {}),
|
|
65
70
|
});
|
|
66
71
|
}
|