opencode-puter-auth 1.0.38 → 1.0.39
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/README.md +80 -0
- package/dist/ai-provider/puter-chat-language-model.d.ts +19 -0
- package/dist/ai-provider/puter-chat-language-model.d.ts.map +1 -1
- package/dist/ai-provider/puter-chat-language-model.js +85 -8
- package/dist/ai-provider/puter-chat-language-model.js.map +1 -1
- package/dist/ai-provider/puter-chat-settings.d.ts +18 -0
- package/dist/ai-provider/puter-chat-settings.d.ts.map +1 -1
- package/dist/ai-provider/puter-provider.d.ts.map +1 -1
- package/dist/ai-provider/puter-provider.js +1 -0
- package/dist/ai-provider/puter-provider.js.map +1 -1
- package/dist/fallback.d.ts +200 -0
- package/dist/fallback.d.ts.map +1 -0
- package/dist/fallback.js +380 -0
- package/dist/fallback.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -363,6 +363,77 @@ Create `~/.config/opencode/puter.json` for advanced settings:
|
|
|
363
363
|
| `auto_create_temp_user` | `true` | Auto-create temp account |
|
|
364
364
|
| `max_retries` | `3` | Retry failed requests |
|
|
365
365
|
| `cache_ttl_ms` | `300000` | Model list cache TTL (5 min) |
|
|
366
|
+
| `fallback_enabled` | `true` | Enable automatic model fallback on rate limits |
|
|
367
|
+
| `fallback_models` | See below | Custom list of fallback models |
|
|
368
|
+
| `fallback_cooldown_ms` | `60000` | Cooldown period for rate-limited models (1 min) |
|
|
369
|
+
|
|
370
|
+
## Automatic Model Fallback
|
|
371
|
+
|
|
372
|
+
When a model returns HTTP 429 (rate limited) or 403 (forbidden), the plugin automatically tries free OpenRouter models. This keeps your workflow running even when premium models are temporarily unavailable.
|
|
373
|
+
|
|
374
|
+
### How It Works
|
|
375
|
+
|
|
376
|
+
1. You request a model (e.g., `claude-opus-4-5`)
|
|
377
|
+
2. If that model returns a rate limit error, it goes into "cooldown"
|
|
378
|
+
3. The plugin automatically tries the next available free model
|
|
379
|
+
4. A warning is logged showing which fallback model was used
|
|
380
|
+
5. Your request completes without manual intervention
|
|
381
|
+
|
|
382
|
+
### Default Fallback Models
|
|
383
|
+
|
|
384
|
+
When rate limits are hit, these free models are tried in order:
|
|
385
|
+
|
|
386
|
+
| Priority | Model | Description |
|
|
387
|
+
|----------|-------|-------------|
|
|
388
|
+
| 1 | `openrouter:xiaomi/mimo-v2-flash:free` | #1 on SWE-bench, Claude Sonnet 4.5 level |
|
|
389
|
+
| 2 | `openrouter:deepseek/deepseek-r1-0528:free` | o1-level reasoning |
|
|
390
|
+
| 3 | `openrouter:mistralai/devstral-2512:free` | Agentic coding specialist |
|
|
391
|
+
| 4 | `openrouter:qwen/qwen3-coder:free` | 480B MoE coding model |
|
|
392
|
+
| 5 | `openrouter:google/gemini-2.0-flash-exp:free` | 1M context, fast |
|
|
393
|
+
| 6 | `openrouter:meta-llama/llama-4-maverick:free` | General purpose |
|
|
394
|
+
| 7 | `openrouter:openai/gpt-oss-120b:free` | OpenAI open weights |
|
|
395
|
+
|
|
396
|
+
### Configuration
|
|
397
|
+
|
|
398
|
+
In `~/.config/opencode/puter.json`:
|
|
399
|
+
|
|
400
|
+
```json
|
|
401
|
+
{
|
|
402
|
+
"fallback_enabled": true,
|
|
403
|
+
"fallback_cooldown_ms": 60000,
|
|
404
|
+
"fallback_models": [
|
|
405
|
+
"openrouter:xiaomi/mimo-v2-flash:free",
|
|
406
|
+
"openrouter:deepseek/deepseek-r1-0528:free",
|
|
407
|
+
"openrouter:mistralai/devstral-2512:free"
|
|
408
|
+
]
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### Disable Fallback
|
|
413
|
+
|
|
414
|
+
To disable fallback globally:
|
|
415
|
+
|
|
416
|
+
```json
|
|
417
|
+
{
|
|
418
|
+
"fallback_enabled": false
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
To disable fallback for a specific request (programmatic usage):
|
|
423
|
+
|
|
424
|
+
```typescript
|
|
425
|
+
import { createPuter } from 'opencode-puter-auth';
|
|
426
|
+
|
|
427
|
+
const puter = createPuter({ authToken: 'your-token' });
|
|
428
|
+
const model = puter('claude-opus-4-5', { disableFallback: true });
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Cooldown Behavior
|
|
432
|
+
|
|
433
|
+
- Rate-limited models are put on cooldown for `fallback_cooldown_ms` (default: 1 minute)
|
|
434
|
+
- Models on cooldown are skipped in favor of available models
|
|
435
|
+
- Cooldown automatically expires, allowing the model to be retried
|
|
436
|
+
- If all models (including fallbacks) are exhausted, the original error is thrown
|
|
366
437
|
|
|
367
438
|
### Debug Logging
|
|
368
439
|
|
|
@@ -390,6 +461,15 @@ Auth state changes:
|
|
|
390
461
|
[puter-auth] 15:30:45 Auth: Switched account - other_user
|
|
391
462
|
```
|
|
392
463
|
|
|
464
|
+
Fallback behavior:
|
|
465
|
+
|
|
466
|
+
```
|
|
467
|
+
[puter-auth] 15:30:45 Request: claude-opus-4-5
|
|
468
|
+
[puter-auth] 15:30:45 Rate limited (429), adding to cooldown
|
|
469
|
+
[puter-auth] 15:30:45 Fallback: trying openrouter:xiaomi/mimo-v2-flash:free
|
|
470
|
+
[puter-auth] 15:30:47 Response: 200 OK (used fallback model)
|
|
471
|
+
```
|
|
472
|
+
|
|
393
473
|
## Custom Tools
|
|
394
474
|
|
|
395
475
|
The plugin adds these tools to OpenCode:
|
|
@@ -3,12 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Implements the AI SDK LanguageModelV3 interface using the official @heyputer/puter.js SDK.
|
|
5
5
|
* This enables Puter to work as a proper AI SDK provider in OpenCode.
|
|
6
|
+
*
|
|
7
|
+
* Features automatic model fallback when rate limits are encountered.
|
|
6
8
|
*/
|
|
7
9
|
import type { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3GenerateResult, LanguageModelV3StreamResult } from '@ai-sdk/provider';
|
|
8
10
|
import type { PuterChatSettings, PuterChatConfig } from './puter-chat-settings.js';
|
|
9
11
|
/**
|
|
10
12
|
* Puter Chat Language Model implementing LanguageModelV3.
|
|
11
13
|
* Uses the official @heyputer/puter.js SDK for all API calls.
|
|
14
|
+
*
|
|
15
|
+
* Features automatic model fallback when rate limits are encountered:
|
|
16
|
+
* - Detects rate limit errors (429, 403)
|
|
17
|
+
* - Automatically switches to free OpenRouter models
|
|
18
|
+
* - Tracks model cooldowns to avoid repeated failures
|
|
12
19
|
*/
|
|
13
20
|
export declare class PuterChatLanguageModel implements LanguageModelV3 {
|
|
14
21
|
readonly specificationVersion: "v3";
|
|
@@ -17,6 +24,8 @@ export declare class PuterChatLanguageModel implements LanguageModelV3 {
|
|
|
17
24
|
private readonly settings;
|
|
18
25
|
private readonly config;
|
|
19
26
|
private puterInstance;
|
|
27
|
+
private readonly fallbackManager;
|
|
28
|
+
private readonly logger;
|
|
20
29
|
constructor(modelId: string, settings: PuterChatSettings, config: PuterChatConfig);
|
|
21
30
|
/**
|
|
22
31
|
* Initialize the Puter SDK with auth token.
|
|
@@ -37,6 +46,10 @@ export declare class PuterChatLanguageModel implements LanguageModelV3 {
|
|
|
37
46
|
private convertTools;
|
|
38
47
|
/**
|
|
39
48
|
* Build options for Puter SDK chat call.
|
|
49
|
+
*
|
|
50
|
+
* @param options - AI SDK call options
|
|
51
|
+
* @param streaming - Whether to enable streaming
|
|
52
|
+
* @param modelOverride - Optional model to use instead of this.modelId (for fallback)
|
|
40
53
|
*/
|
|
41
54
|
private buildSDKOptions;
|
|
42
55
|
/**
|
|
@@ -53,10 +66,16 @@ export declare class PuterChatLanguageModel implements LanguageModelV3 {
|
|
|
53
66
|
private extractTextContent;
|
|
54
67
|
/**
|
|
55
68
|
* Non-streaming generation using Puter SDK.
|
|
69
|
+
*
|
|
70
|
+
* Automatically falls back to alternative models when rate limits are hit,
|
|
71
|
+
* unless `disableFallback` is set in settings.
|
|
56
72
|
*/
|
|
57
73
|
doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult>;
|
|
58
74
|
/**
|
|
59
75
|
* Streaming generation using Puter SDK.
|
|
76
|
+
*
|
|
77
|
+
* Automatically falls back to alternative models when rate limits are hit,
|
|
78
|
+
* unless `disableFallback` is set in settings.
|
|
60
79
|
*/
|
|
61
80
|
doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult>;
|
|
62
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puter-chat-language-model.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"puter-chat-language-model.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAW5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAsGnF;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,oBAAoB,EAAG,IAAI,CAAU;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAG9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,eAAe;IAczB;;OAEG;YACW,YAAY;IA0B1B;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAE5C;IAED;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4E/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAqCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgBhB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IA2F7F;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;CA2G1F"}
|
|
@@ -3,10 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Implements the AI SDK LanguageModelV3 interface using the official @heyputer/puter.js SDK.
|
|
5
5
|
* This enables Puter to work as a proper AI SDK provider in OpenCode.
|
|
6
|
+
*
|
|
7
|
+
* Features automatic model fallback when rate limits are encountered.
|
|
6
8
|
*/
|
|
9
|
+
import { getGlobalFallbackManager, } from '../fallback.js';
|
|
10
|
+
import { createLogger } from '../logger.js';
|
|
7
11
|
/**
|
|
8
12
|
* Puter Chat Language Model implementing LanguageModelV3.
|
|
9
13
|
* Uses the official @heyputer/puter.js SDK for all API calls.
|
|
14
|
+
*
|
|
15
|
+
* Features automatic model fallback when rate limits are encountered:
|
|
16
|
+
* - Detects rate limit errors (429, 403)
|
|
17
|
+
* - Automatically switches to free OpenRouter models
|
|
18
|
+
* - Tracks model cooldowns to avoid repeated failures
|
|
10
19
|
*/
|
|
11
20
|
export class PuterChatLanguageModel {
|
|
12
21
|
specificationVersion = 'v3';
|
|
@@ -15,11 +24,17 @@ export class PuterChatLanguageModel {
|
|
|
15
24
|
settings;
|
|
16
25
|
config;
|
|
17
26
|
puterInstance = null;
|
|
27
|
+
fallbackManager;
|
|
28
|
+
logger;
|
|
18
29
|
constructor(modelId, settings, config) {
|
|
19
30
|
this.modelId = modelId;
|
|
20
31
|
this.settings = settings;
|
|
21
32
|
this.config = config;
|
|
22
33
|
this.provider = config.provider;
|
|
34
|
+
// Initialize fallback manager with config options
|
|
35
|
+
this.fallbackManager = getGlobalFallbackManager(config.fallback);
|
|
36
|
+
// Create logger (uses console by default, can be configured)
|
|
37
|
+
this.logger = createLogger({ debug: false }); // Will be quiet unless debug enabled
|
|
23
38
|
}
|
|
24
39
|
/**
|
|
25
40
|
* Initialize the Puter SDK with auth token.
|
|
@@ -144,13 +159,17 @@ export class PuterChatLanguageModel {
|
|
|
144
159
|
}
|
|
145
160
|
/**
|
|
146
161
|
* Build options for Puter SDK chat call.
|
|
162
|
+
*
|
|
163
|
+
* @param options - AI SDK call options
|
|
164
|
+
* @param streaming - Whether to enable streaming
|
|
165
|
+
* @param modelOverride - Optional model to use instead of this.modelId (for fallback)
|
|
147
166
|
*/
|
|
148
|
-
buildSDKOptions(options, streaming) {
|
|
167
|
+
buildSDKOptions(options, streaming, modelOverride) {
|
|
149
168
|
// Filter to only function tools
|
|
150
169
|
const functionTools = options.tools?.filter((tool) => tool.type === 'function');
|
|
151
170
|
const tools = this.convertTools(functionTools);
|
|
152
171
|
const sdkOptions = {
|
|
153
|
-
model: this.modelId,
|
|
172
|
+
model: modelOverride ?? this.modelId,
|
|
154
173
|
stream: streaming,
|
|
155
174
|
};
|
|
156
175
|
// Only add optional params if they have values
|
|
@@ -232,13 +251,43 @@ export class PuterChatLanguageModel {
|
|
|
232
251
|
}
|
|
233
252
|
/**
|
|
234
253
|
* Non-streaming generation using Puter SDK.
|
|
254
|
+
*
|
|
255
|
+
* Automatically falls back to alternative models when rate limits are hit,
|
|
256
|
+
* unless `disableFallback` is set in settings.
|
|
235
257
|
*/
|
|
236
258
|
async doGenerate(options) {
|
|
237
259
|
const puter = await this.initPuterSDK();
|
|
238
260
|
const messages = this.convertPromptToMessages(options.prompt);
|
|
239
|
-
const sdkOptions = this.buildSDKOptions(options, false);
|
|
240
261
|
const warnings = [];
|
|
241
|
-
|
|
262
|
+
// Check if fallback is disabled for this request
|
|
263
|
+
const useFallback = !this.settings.disableFallback;
|
|
264
|
+
// Define the operation that will be executed (possibly with fallback)
|
|
265
|
+
const executeChat = async (model) => {
|
|
266
|
+
const sdkOptions = this.buildSDKOptions(options, false, model);
|
|
267
|
+
return await puter.ai.chat(messages, sdkOptions);
|
|
268
|
+
};
|
|
269
|
+
let response;
|
|
270
|
+
let actualModelUsed = this.modelId;
|
|
271
|
+
let wasFallback = false;
|
|
272
|
+
if (useFallback) {
|
|
273
|
+
// Execute with fallback support
|
|
274
|
+
const fallbackResult = await this.fallbackManager.executeWithFallback(this.modelId, executeChat, this.logger);
|
|
275
|
+
response = fallbackResult.result;
|
|
276
|
+
actualModelUsed = fallbackResult.usedModel;
|
|
277
|
+
wasFallback = fallbackResult.wasFallback;
|
|
278
|
+
if (wasFallback) {
|
|
279
|
+
// Add a warning that fallback was used
|
|
280
|
+
warnings.push({
|
|
281
|
+
type: 'other',
|
|
282
|
+
message: `Model ${this.modelId} rate limited, used fallback: ${actualModelUsed}`,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
// Execute without fallback
|
|
288
|
+
const sdkOptions = this.buildSDKOptions(options, false);
|
|
289
|
+
response = await puter.ai.chat(messages, sdkOptions);
|
|
290
|
+
}
|
|
242
291
|
const content = [];
|
|
243
292
|
// Extract text content (handles both string and array formats)
|
|
244
293
|
const textContent = this.extractTextContent(response.message?.content);
|
|
@@ -277,7 +326,7 @@ export class PuterChatLanguageModel {
|
|
|
277
326
|
finishReason: this.mapFinishReason(response.finish_reason),
|
|
278
327
|
usage: this.mapUsage(response.usage),
|
|
279
328
|
warnings,
|
|
280
|
-
request: { body: { messages,
|
|
329
|
+
request: { body: { messages, model: actualModelUsed } },
|
|
281
330
|
response: {
|
|
282
331
|
body: response,
|
|
283
332
|
},
|
|
@@ -285,14 +334,42 @@ export class PuterChatLanguageModel {
|
|
|
285
334
|
}
|
|
286
335
|
/**
|
|
287
336
|
* Streaming generation using Puter SDK.
|
|
337
|
+
*
|
|
338
|
+
* Automatically falls back to alternative models when rate limits are hit,
|
|
339
|
+
* unless `disableFallback` is set in settings.
|
|
288
340
|
*/
|
|
289
341
|
async doStream(options) {
|
|
290
342
|
const puter = await this.initPuterSDK();
|
|
291
343
|
const messages = this.convertPromptToMessages(options.prompt);
|
|
292
|
-
const sdkOptions = this.buildSDKOptions(options, true);
|
|
293
344
|
const warnings = [];
|
|
294
345
|
const generateId = this.config.generateId;
|
|
295
|
-
|
|
346
|
+
// Check if fallback is disabled for this request
|
|
347
|
+
const useFallback = !this.settings.disableFallback;
|
|
348
|
+
// Define the operation that initiates the stream
|
|
349
|
+
const initiateStream = async (model) => {
|
|
350
|
+
const sdkOptions = this.buildSDKOptions(options, true, model);
|
|
351
|
+
return await puter.ai.chat(messages, sdkOptions);
|
|
352
|
+
};
|
|
353
|
+
let streamResponse;
|
|
354
|
+
let actualModelUsed = this.modelId;
|
|
355
|
+
if (useFallback) {
|
|
356
|
+
// Execute stream initiation with fallback support
|
|
357
|
+
const fallbackResult = await this.fallbackManager.executeWithFallback(this.modelId, initiateStream, this.logger);
|
|
358
|
+
streamResponse = fallbackResult.result;
|
|
359
|
+
actualModelUsed = fallbackResult.usedModel;
|
|
360
|
+
if (fallbackResult.wasFallback) {
|
|
361
|
+
// Add a warning that fallback was used
|
|
362
|
+
warnings.push({
|
|
363
|
+
type: 'other',
|
|
364
|
+
message: `Model ${this.modelId} rate limited, used fallback: ${actualModelUsed}`,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
// Execute without fallback
|
|
370
|
+
const sdkOptions = this.buildSDKOptions(options, true);
|
|
371
|
+
streamResponse = await puter.ai.chat(messages, sdkOptions);
|
|
372
|
+
}
|
|
296
373
|
// Create a transform stream to convert Puter chunks to AI SDK format
|
|
297
374
|
const self = this;
|
|
298
375
|
let textId = null;
|
|
@@ -350,7 +427,7 @@ export class PuterChatLanguageModel {
|
|
|
350
427
|
});
|
|
351
428
|
return {
|
|
352
429
|
stream,
|
|
353
|
-
request: { body: { messages,
|
|
430
|
+
request: { body: { messages, model: actualModelUsed } },
|
|
354
431
|
};
|
|
355
432
|
}
|
|
356
433
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puter-chat-language-model.js","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"puter-chat-language-model.js","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,OAAO,EACL,wBAAwB,GAEzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AAiGzD;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IACxB,oBAAoB,GAAG,IAAa,CAAC;IACrC,QAAQ,CAAS;IACjB,OAAO,CAAS;IAER,QAAQ,CAAoB;IAC5B,MAAM,CAAkB;IACjC,aAAa,GAAoB,IAAI,CAAC;IAC7B,eAAe,CAAkB;IACjC,MAAM,CAAS;IAEhC,YACE,OAAe,EACf,QAA2B,EAC3B,MAAuB;QAEvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEhC,kDAAkD;QAClD,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjE,6DAA6D;QAC7D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,qCAAqC;IACrF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED,iDAAiD;QACjD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,iCAAiC,CAA2C,CAAC;QAEtG,qCAAqC;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,MAAgC;QAC9D,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACnC,uCAAuC;gBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO;qBAC9B,MAAM,CAAC,CAAC,IAAI,EAAmC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;qBACvE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE1B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC9B,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACxC,sDAAsD;gBACtD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO;qBAC9B,MAAM,CAAC,CAAC,IAAI,EAAmC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;qBACvE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE1B,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO;qBAClC,MAAM,CAAC,CAAC,IAAI,EAAuC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;gBAEpF,MAAM,YAAY,GAAoB;oBACpC,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;iBACpC,CAAC;gBAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,YAAY,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACjD,EAAE,EAAE,EAAE,CAAC,UAAU;wBACjB,IAAI,EAAE,UAAmB;wBACzB,QAAQ,EAAE;4BACR,IAAI,EAAE,EAAE,CAAC,QAAQ;4BACjB,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;yBAC9E;qBACF,CAAC,CAAC,CAAC;gBACN,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACnC,sBAAsB;gBACtB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAChC,MAAM,cAAc,GAAG,IAAqC,CAAC;wBAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;wBACrC,IAAI,UAAkB,CAAC;wBACvB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;4BAC/B,UAAU,GAAG,MAAM,CAAC;wBACtB,CAAC;6BAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;4BACjC,+BAA+B;4BAC/B,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gCAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;oCAAE,OAAO,CAAC,CAAC,IAAI,CAAC;gCACrC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;4BAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;6BAAM,CAAC;4BACN,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBACtC,CAAC;wBACD,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,UAAU;4BACnB,YAAY,EAAE,cAAc,CAAC,UAAU;yBACxC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAgD;QACnE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAEnD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;gBACnC,UAAU,EAAE,IAAI,CAAC,WAAsC;aACxD;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CACrB,OAAmC,EACnC,SAAkB,EAClB,aAAsB;QAEtB,gCAAgC;QAChC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CACzC,CAAC,IAAI,EAAuC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CACxE,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAoB;YAClC,KAAK,EAAE,aAAa,IAAI,IAAI,CAAC,OAAO;YACpC,MAAM,EAAE,SAAS;SAClB,CAAC;QAEF,+CAA+C;QAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrE,IAAI,SAAS,KAAK,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;QAE/D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QACrE,IAAI,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;QAEpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;QAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;QAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAClE,IAAI,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAE/C,IAAI,KAAK,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAElD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAe;QACrC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,MAAM;gBAAE,OAAO,OAAO,CAAC;YAC5B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,UAAU;gBAAE,OAAO,MAAM,CAAC;YAC9D,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,YAAY;gBAAE,OAAO,QAAQ,CAAC;YACpE,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,UAAU;gBAAE,OAAO,YAAY,CAAC;YAC1E,IAAI,MAAM,KAAK,gBAAgB;gBAAE,OAAO,gBAAgB,CAAC;YACzD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO;YACL,OAAO;YACP,GAAG,EAAE,MAAM;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,KAAkB;QACjC,OAAO;YACL,WAAW,EAAE;gBACX,KAAK,EAAE,KAAK,EAAE,aAAa;gBAC3B,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,KAAK,EAAE,aAAa;gBAC/B,UAAU,EAAE,SAAS;aACtB;YACD,YAAY,EAAE;gBACZ,KAAK,EAAE,KAAK,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,SAAS;aACrB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAwD;QACjF,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAExB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO;iBACX,MAAM,CAAC,CAAC,KAAK,EAA8B,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;iBACtG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;iBACxB,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,OAAmC;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,iDAAiD;QACjD,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAEnD,sEAAsE;QACtE,MAAM,WAAW,GAAG,KAAK,EAAE,KAAa,EAA8B,EAAE;YACtE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAsB,CAAC;QACxE,CAAC,CAAC;QAEF,IAAI,QAA2B,CAAC;QAChC,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,IAAI,WAAW,EAAE,CAAC;YAChB,gCAAgC;YAChC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACnE,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,IAAI,CAAC,MAAM,CACZ,CAAC;YACF,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;YACjC,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;YAC3C,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;YAEzC,IAAI,WAAW,EAAE,CAAC;gBAChB,uCAAuC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,SAAS,IAAI,CAAC,OAAO,iCAAiC,eAAe,EAAE;iBAC9D,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACxD,QAAQ,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAsB,CAAC;QAC5E,CAAC;QAED,MAAM,OAAO,GAA6B,EAAE,CAAC;QAE7C,+DAA+D;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC;QAED,mDAAmD;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACxD,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,WAAW;wBACjB,UAAU,EAAE,KAAK,CAAC,EAAE;wBACpB,QAAQ,EAAE,KAAK,CAAC,IAAI;wBACpB,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;qBACzF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;YACjC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,EAAE,CAAC,EAAE;oBACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;oBAC1B,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC1D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpC,QAAQ;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE;YACvD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAmC;QAChD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAE1C,iDAAiD;QACjD,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAEnD,iDAAiD;QACjD,MAAM,cAAc,GAAG,KAAK,EAAE,KAAa,EAA4C,EAAE;YACvF,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAoC,CAAC;QACtF,CAAC,CAAC;QAEF,IAAI,cAA+C,CAAC;QACpD,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QAEnC,IAAI,WAAW,EAAE,CAAC;YAChB,kDAAkD;YAClD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACnE,IAAI,CAAC,OAAO,EACZ,cAAc,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;YACF,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;YACvC,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;YAE3C,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;gBAC/B,uCAAuC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,SAAS,IAAI,CAAC,OAAO,iCAAiC,eAAe,EAAE;iBAC9D,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvD,cAAc,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAoC,CAAC;QAChG,CAAC;QAED,qEAAqE;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,UAAkC,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAI,cAAc,CAA4B;YAC3D,KAAK,CAAC,KAAK,CAAC,UAAU;gBACpB,oBAAoB;gBACpB,UAAU,CAAC,OAAO,CAAC;oBACjB,IAAI,EAAE,cAAc;oBACpB,QAAQ;iBACT,CAAC,CAAC;gBAEH,IAAI,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;wBACzC,sBAAsB;wBACtB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;4BACf,IAAI,CAAC,MAAM,EAAE,CAAC;gCACZ,MAAM,GAAG,UAAU,EAAE,CAAC;gCACtB,UAAU,CAAC,OAAO,CAAC;oCACjB,IAAI,EAAE,YAAY;oCAClB,EAAE,EAAE,MAAM;iCACX,CAAC,CAAC;4BACL,CAAC;4BACD,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;4BACvB,UAAU,CAAC,OAAO,CAAC;gCACjB,IAAI,EAAE,YAAY;gCAClB,EAAE,EAAE,MAAM;gCACV,KAAK,EAAE,KAAK,CAAC,IAAI;6BAClB,CAAC,CAAC;wBACL,CAAC;wBAED,oCAAoC;wBACpC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;4BAChB,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC3B,CAAC;oBACH,CAAC;oBAED,kCAAkC;oBAClC,IAAI,MAAM,EAAE,CAAC;wBACX,UAAU,CAAC,OAAO,CAAC;4BACjB,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,MAAM;yBACX,CAAC,CAAC;oBACL,CAAC;oBAED,cAAc;oBACd,UAAU,CAAC,OAAO,CAAC;wBACjB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAChC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;qBAC3C,CAAC,CAAC;oBAEH,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE;SACxD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Configuration options for the Puter chat language model.
|
|
5
5
|
*/
|
|
6
|
+
import type { FallbackOptions } from '../fallback.js';
|
|
6
7
|
/**
|
|
7
8
|
* Settings for the Puter chat model.
|
|
8
9
|
*/
|
|
@@ -39,6 +40,13 @@ export interface PuterChatSettings {
|
|
|
39
40
|
* @default true
|
|
40
41
|
*/
|
|
41
42
|
stream?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Disable automatic model fallback for this request.
|
|
45
|
+
* When true, rate limit errors will be thrown immediately without
|
|
46
|
+
* trying fallback models.
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
disableFallback?: boolean;
|
|
42
50
|
}
|
|
43
51
|
/**
|
|
44
52
|
* Configuration for the Puter provider.
|
|
@@ -79,6 +87,11 @@ export interface PuterProviderConfig {
|
|
|
79
87
|
* Used for tool call IDs and other identifiers.
|
|
80
88
|
*/
|
|
81
89
|
generateId?: () => string;
|
|
90
|
+
/**
|
|
91
|
+
* Fallback configuration options.
|
|
92
|
+
* Controls automatic model fallback when rate limits are encountered.
|
|
93
|
+
*/
|
|
94
|
+
fallback?: FallbackOptions;
|
|
82
95
|
}
|
|
83
96
|
/**
|
|
84
97
|
* Internal configuration passed to the chat model.
|
|
@@ -109,5 +122,10 @@ export interface PuterChatConfig {
|
|
|
109
122
|
* Function to generate unique IDs.
|
|
110
123
|
*/
|
|
111
124
|
generateId: () => string;
|
|
125
|
+
/**
|
|
126
|
+
* Fallback configuration options.
|
|
127
|
+
* Controls automatic model fallback when rate limits are encountered.
|
|
128
|
+
*/
|
|
129
|
+
fallback?: FallbackOptions;
|
|
112
130
|
}
|
|
113
131
|
//# sourceMappingURL=puter-chat-settings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puter-chat-settings.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"puter-chat-settings.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAEhC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAExE;;OAEG;IACH,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,MAAM,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puter-provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAmB,MAAM,0BAA0B,CAAC;AAExG;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;;;;OAIG;IACH,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;IAExE;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;IAErF;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;CAC7E;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,mBAAwB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"puter-provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAmB,MAAM,0BAA0B,CAAC;AAExG;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;;;;OAIG;IACH,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;IAExE;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;IAErF;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;CAC7E;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,mBAAwB,GAAG,aAAa,CAgH5E;AA6CD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,aAsBnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puter-provider.js","sourceRoot":"","sources":["../../src/ai-provider/puter-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AA6BxE;;GAEG;AACH,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAEjD;;GAEG;AACH,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,UAA+B,EAAE;IAC3D,2DAA2D;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAEtD,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC;IAEtD;;;OAGG;IACH,MAAM,YAAY,GAAG,KAAK,IAAiC,EAAE;QAC3D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;YAE7D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAChE,OAAO,aAAa,EAAE,SAAS,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,UAAU,GAAG,KAAK,IAAqC,EAAE;QAC7D,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,6BAA6B;QAC7B,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QAC/C,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,gBAAgB,GAAG,GAAoB,EAAE,CAAC,CAAC;QAC/C,QAAQ,EAAE,OAAO;QACjB,OAAO;QACP,OAAO;QACP,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"puter-provider.js","sourceRoot":"","sources":["../../src/ai-provider/puter-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback Manager for opencode-puter-auth
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic model fallback when rate limits are encountered.
|
|
5
|
+
* When a model returns a rate limit error (429/403), the manager:
|
|
6
|
+
* 1. Adds the model to a cooldown list
|
|
7
|
+
* 2. Tries alternative free models in order
|
|
8
|
+
* 3. Returns to the original model after cooldown expires
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const manager = new FallbackManager({
|
|
13
|
+
* fallbackModels: ['openrouter:xiaomi/mimo-v2-flash:free'],
|
|
14
|
+
* cooldownMs: 60000,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* const result = await manager.executeWithFallback(
|
|
18
|
+
* 'claude-opus-4-5',
|
|
19
|
+
* async (model) => puter.ai.chat(messages, { model }),
|
|
20
|
+
* logger
|
|
21
|
+
* );
|
|
22
|
+
*
|
|
23
|
+
* if (result.wasFallback) {
|
|
24
|
+
* console.log(`Used fallback model: ${result.usedModel}`);
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import type { Logger } from './logger.js';
|
|
29
|
+
/**
|
|
30
|
+
* Default fallback models - FREE OpenRouter models via Puter gateway.
|
|
31
|
+
* Ordered by quality/capability (best first).
|
|
32
|
+
*/
|
|
33
|
+
export declare const DEFAULT_FALLBACK_MODELS: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Default cooldown duration in milliseconds (60 seconds)
|
|
36
|
+
*/
|
|
37
|
+
export declare const DEFAULT_COOLDOWN_MS = 60000;
|
|
38
|
+
/**
|
|
39
|
+
* Configuration options for FallbackManager
|
|
40
|
+
*/
|
|
41
|
+
export interface FallbackOptions {
|
|
42
|
+
/** List of fallback models to try when primary fails */
|
|
43
|
+
fallbackModels?: string[];
|
|
44
|
+
/** Cooldown duration in milliseconds */
|
|
45
|
+
cooldownMs?: number;
|
|
46
|
+
/** Whether fallback is enabled */
|
|
47
|
+
enabled?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Record of a single model attempt
|
|
51
|
+
*/
|
|
52
|
+
export interface FallbackAttempt {
|
|
53
|
+
/** Model that was tried */
|
|
54
|
+
model: string;
|
|
55
|
+
/** Whether the attempt succeeded */
|
|
56
|
+
success: boolean;
|
|
57
|
+
/** Error message if failed */
|
|
58
|
+
error?: string;
|
|
59
|
+
/** Whether the error was a rate limit */
|
|
60
|
+
isRateLimit?: boolean;
|
|
61
|
+
/** Duration of the attempt in ms */
|
|
62
|
+
durationMs?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Result of executeWithFallback
|
|
66
|
+
*/
|
|
67
|
+
export interface FallbackResult<T> {
|
|
68
|
+
/** The result from the successful model */
|
|
69
|
+
result: T;
|
|
70
|
+
/** The model that was actually used */
|
|
71
|
+
usedModel: string;
|
|
72
|
+
/** Whether a fallback model was used instead of the primary */
|
|
73
|
+
wasFallback: boolean;
|
|
74
|
+
/** All attempts made (for debugging/logging) */
|
|
75
|
+
attempts: FallbackAttempt[];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Error thrown when all models (primary + fallbacks) have failed
|
|
79
|
+
*/
|
|
80
|
+
export declare class FallbackExhaustedError extends Error {
|
|
81
|
+
readonly attempts: FallbackAttempt[];
|
|
82
|
+
constructor(attempts: FallbackAttempt[]);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if an error indicates a rate limit
|
|
86
|
+
*
|
|
87
|
+
* Detects various rate limit error patterns from different providers:
|
|
88
|
+
* - HTTP 429 (Too Many Requests)
|
|
89
|
+
* - HTTP 403 (Forbidden) - Puter uses this for account limits
|
|
90
|
+
* - Various error message patterns
|
|
91
|
+
*
|
|
92
|
+
* @param error - The error to check
|
|
93
|
+
* @returns true if the error is a rate limit error
|
|
94
|
+
*/
|
|
95
|
+
export declare function isRateLimitError(error: unknown): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Manages automatic model fallback when rate limits are encountered.
|
|
98
|
+
*
|
|
99
|
+
* This is a singleton-style class designed to be shared across all
|
|
100
|
+
* PuterChatLanguageModel instances so cooldown state is consistent.
|
|
101
|
+
*/
|
|
102
|
+
export declare class FallbackManager {
|
|
103
|
+
private cooldownMap;
|
|
104
|
+
private fallbackModels;
|
|
105
|
+
private cooldownMs;
|
|
106
|
+
private enabled;
|
|
107
|
+
constructor(options?: FallbackOptions);
|
|
108
|
+
/**
|
|
109
|
+
* Check if a model is currently on cooldown
|
|
110
|
+
*
|
|
111
|
+
* @param model - Model ID to check
|
|
112
|
+
* @returns true if the model is on cooldown
|
|
113
|
+
*/
|
|
114
|
+
isModelOnCooldown(model: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Get remaining cooldown time for a model in milliseconds
|
|
117
|
+
*
|
|
118
|
+
* @param model - Model ID to check
|
|
119
|
+
* @returns Remaining cooldown in ms, or 0 if not on cooldown
|
|
120
|
+
*/
|
|
121
|
+
getCooldownRemaining(model: string): number;
|
|
122
|
+
/**
|
|
123
|
+
* Add a model to the cooldown list
|
|
124
|
+
*
|
|
125
|
+
* @param model - Model ID to add to cooldown
|
|
126
|
+
* @param reason - Reason for the cooldown (e.g., error message)
|
|
127
|
+
* @param durationMs - Optional custom cooldown duration
|
|
128
|
+
*/
|
|
129
|
+
addToCooldown(model: string, reason: string, durationMs?: number): void;
|
|
130
|
+
/**
|
|
131
|
+
* Remove a model from cooldown (e.g., if it's working again)
|
|
132
|
+
*
|
|
133
|
+
* @param model - Model ID to remove from cooldown
|
|
134
|
+
*/
|
|
135
|
+
removeFromCooldown(model: string): void;
|
|
136
|
+
/**
|
|
137
|
+
* Get all models currently on cooldown
|
|
138
|
+
*
|
|
139
|
+
* @returns Map of model IDs to their cooldown info
|
|
140
|
+
*/
|
|
141
|
+
getCooldownStatus(): Map<string, {
|
|
142
|
+
remainingMs: number;
|
|
143
|
+
reason: string;
|
|
144
|
+
}>;
|
|
145
|
+
/**
|
|
146
|
+
* Build the queue of models to try, respecting cooldowns
|
|
147
|
+
*
|
|
148
|
+
* @param primaryModel - The primary model requested
|
|
149
|
+
* @returns Ordered array of models to try
|
|
150
|
+
*/
|
|
151
|
+
buildModelQueue(primaryModel: string): string[];
|
|
152
|
+
/**
|
|
153
|
+
* Execute an operation with automatic model fallback
|
|
154
|
+
*
|
|
155
|
+
* Tries the primary model first, and if it fails with a rate limit error,
|
|
156
|
+
* automatically tries fallback models in order.
|
|
157
|
+
*
|
|
158
|
+
* @param primaryModel - The primary model to try first
|
|
159
|
+
* @param operation - Function that performs the API call with the given model
|
|
160
|
+
* @param logger - Optional logger for debugging
|
|
161
|
+
* @returns Result including which model was used and all attempts
|
|
162
|
+
* @throws FallbackExhaustedError if all models fail
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```ts
|
|
166
|
+
* const result = await manager.executeWithFallback(
|
|
167
|
+
* 'claude-opus-4-5',
|
|
168
|
+
* async (model) => {
|
|
169
|
+
* return await puter.ai.chat(messages, { model });
|
|
170
|
+
* },
|
|
171
|
+
* logger
|
|
172
|
+
* );
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
executeWithFallback<T>(primaryModel: string, operation: (model: string) => Promise<T>, logger?: Logger): Promise<FallbackResult<T>>;
|
|
176
|
+
/**
|
|
177
|
+
* Clear all cooldowns (useful for testing or manual reset)
|
|
178
|
+
*/
|
|
179
|
+
clearCooldowns(): void;
|
|
180
|
+
/**
|
|
181
|
+
* Update configuration
|
|
182
|
+
*/
|
|
183
|
+
configure(options: Partial<FallbackOptions>): void;
|
|
184
|
+
/**
|
|
185
|
+
* Get current configuration
|
|
186
|
+
*/
|
|
187
|
+
getConfig(): Required<FallbackOptions>;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get the global FallbackManager instance, creating it if needed
|
|
191
|
+
*
|
|
192
|
+
* @param options - Configuration options (only used when creating)
|
|
193
|
+
* @returns The global FallbackManager instance
|
|
194
|
+
*/
|
|
195
|
+
export declare function getGlobalFallbackManager(options?: FallbackOptions): FallbackManager;
|
|
196
|
+
/**
|
|
197
|
+
* Reset the global FallbackManager (useful for testing)
|
|
198
|
+
*/
|
|
199
|
+
export declare function resetGlobalFallbackManager(): void;
|
|
200
|
+
//# sourceMappingURL=fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
|
package/dist/fallback.js
ADDED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback Manager for opencode-puter-auth
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic model fallback when rate limits are encountered.
|
|
5
|
+
* When a model returns a rate limit error (429/403), the manager:
|
|
6
|
+
* 1. Adds the model to a cooldown list
|
|
7
|
+
* 2. Tries alternative free models in order
|
|
8
|
+
* 3. Returns to the original model after cooldown expires
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const manager = new FallbackManager({
|
|
13
|
+
* fallbackModels: ['openrouter:xiaomi/mimo-v2-flash:free'],
|
|
14
|
+
* cooldownMs: 60000,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* const result = await manager.executeWithFallback(
|
|
18
|
+
* 'claude-opus-4-5',
|
|
19
|
+
* async (model) => puter.ai.chat(messages, { model }),
|
|
20
|
+
* logger
|
|
21
|
+
* );
|
|
22
|
+
*
|
|
23
|
+
* if (result.wasFallback) {
|
|
24
|
+
* console.log(`Used fallback model: ${result.usedModel}`);
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Default fallback models - FREE OpenRouter models via Puter gateway.
|
|
30
|
+
* Ordered by quality/capability (best first).
|
|
31
|
+
*/
|
|
32
|
+
export const DEFAULT_FALLBACK_MODELS = [
|
|
33
|
+
// Tier 1: Best free models (try these first)
|
|
34
|
+
'openrouter:xiaomi/mimo-v2-flash:free', // 309B MoE, #1 SWE-bench
|
|
35
|
+
'openrouter:deepseek/deepseek-r1-0528:free', // 671B MoE, o1-level reasoning
|
|
36
|
+
'openrouter:mistralai/devstral-2512:free', // 123B, agentic coding
|
|
37
|
+
// Tier 2: Other quality free models
|
|
38
|
+
'openrouter:qwen/qwen3-coder:free', // 480B MoE coding model
|
|
39
|
+
'openrouter:google/gemini-2.0-flash-exp:free', // Google's experimental
|
|
40
|
+
// Tier 3: Fallback free models
|
|
41
|
+
'openrouter:meta-llama/llama-4-maverick:free',
|
|
42
|
+
'openrouter:openai/gpt-oss-120b:free',
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* Default cooldown duration in milliseconds (60 seconds)
|
|
46
|
+
*/
|
|
47
|
+
export const DEFAULT_COOLDOWN_MS = 60000;
|
|
48
|
+
/**
|
|
49
|
+
* Error thrown when all models (primary + fallbacks) have failed
|
|
50
|
+
*/
|
|
51
|
+
export class FallbackExhaustedError extends Error {
|
|
52
|
+
attempts;
|
|
53
|
+
constructor(attempts) {
|
|
54
|
+
const modelsTried = attempts.map(a => a.model).join(', ');
|
|
55
|
+
super(`All models exhausted. Tried: ${modelsTried}`);
|
|
56
|
+
this.name = 'FallbackExhaustedError';
|
|
57
|
+
this.attempts = attempts;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if an error indicates a rate limit
|
|
62
|
+
*
|
|
63
|
+
* Detects various rate limit error patterns from different providers:
|
|
64
|
+
* - HTTP 429 (Too Many Requests)
|
|
65
|
+
* - HTTP 403 (Forbidden) - Puter uses this for account limits
|
|
66
|
+
* - Various error message patterns
|
|
67
|
+
*
|
|
68
|
+
* @param error - The error to check
|
|
69
|
+
* @returns true if the error is a rate limit error
|
|
70
|
+
*/
|
|
71
|
+
export function isRateLimitError(error) {
|
|
72
|
+
if (!(error instanceof Error))
|
|
73
|
+
return false;
|
|
74
|
+
const message = error.message.toLowerCase();
|
|
75
|
+
// HTTP status codes that indicate rate limiting
|
|
76
|
+
if (message.includes('(429)') || message.includes('status 429'))
|
|
77
|
+
return true;
|
|
78
|
+
if (message.includes('(403)') || message.includes('status 403'))
|
|
79
|
+
return true;
|
|
80
|
+
// Error message patterns from various providers
|
|
81
|
+
const rateLimitPatterns = [
|
|
82
|
+
'rate limit',
|
|
83
|
+
'rate_limit',
|
|
84
|
+
'ratelimit',
|
|
85
|
+
'too many requests',
|
|
86
|
+
'quota exceeded',
|
|
87
|
+
'quota_exceeded',
|
|
88
|
+
'limit exceeded',
|
|
89
|
+
'request limit',
|
|
90
|
+
'credits exhausted',
|
|
91
|
+
'insufficient credits',
|
|
92
|
+
'usage limit',
|
|
93
|
+
'capacity',
|
|
94
|
+
'overloaded',
|
|
95
|
+
'try again later',
|
|
96
|
+
];
|
|
97
|
+
return rateLimitPatterns.some(pattern => message.includes(pattern));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Manages automatic model fallback when rate limits are encountered.
|
|
101
|
+
*
|
|
102
|
+
* This is a singleton-style class designed to be shared across all
|
|
103
|
+
* PuterChatLanguageModel instances so cooldown state is consistent.
|
|
104
|
+
*/
|
|
105
|
+
export class FallbackManager {
|
|
106
|
+
cooldownMap = new Map();
|
|
107
|
+
fallbackModels;
|
|
108
|
+
cooldownMs;
|
|
109
|
+
enabled;
|
|
110
|
+
constructor(options = {}) {
|
|
111
|
+
this.fallbackModels = options.fallbackModels ?? DEFAULT_FALLBACK_MODELS;
|
|
112
|
+
this.cooldownMs = options.cooldownMs ?? DEFAULT_COOLDOWN_MS;
|
|
113
|
+
this.enabled = options.enabled ?? true;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if a model is currently on cooldown
|
|
117
|
+
*
|
|
118
|
+
* @param model - Model ID to check
|
|
119
|
+
* @returns true if the model is on cooldown
|
|
120
|
+
*/
|
|
121
|
+
isModelOnCooldown(model) {
|
|
122
|
+
const entry = this.cooldownMap.get(model);
|
|
123
|
+
if (!entry)
|
|
124
|
+
return false;
|
|
125
|
+
// Check if cooldown has expired
|
|
126
|
+
if (Date.now() >= entry.expiresAt) {
|
|
127
|
+
this.cooldownMap.delete(model);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get remaining cooldown time for a model in milliseconds
|
|
134
|
+
*
|
|
135
|
+
* @param model - Model ID to check
|
|
136
|
+
* @returns Remaining cooldown in ms, or 0 if not on cooldown
|
|
137
|
+
*/
|
|
138
|
+
getCooldownRemaining(model) {
|
|
139
|
+
const entry = this.cooldownMap.get(model);
|
|
140
|
+
if (!entry)
|
|
141
|
+
return 0;
|
|
142
|
+
const remaining = entry.expiresAt - Date.now();
|
|
143
|
+
if (remaining <= 0) {
|
|
144
|
+
this.cooldownMap.delete(model);
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
return remaining;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Add a model to the cooldown list
|
|
151
|
+
*
|
|
152
|
+
* @param model - Model ID to add to cooldown
|
|
153
|
+
* @param reason - Reason for the cooldown (e.g., error message)
|
|
154
|
+
* @param durationMs - Optional custom cooldown duration
|
|
155
|
+
*/
|
|
156
|
+
addToCooldown(model, reason, durationMs) {
|
|
157
|
+
this.cooldownMap.set(model, {
|
|
158
|
+
expiresAt: Date.now() + (durationMs ?? this.cooldownMs),
|
|
159
|
+
reason,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Remove a model from cooldown (e.g., if it's working again)
|
|
164
|
+
*
|
|
165
|
+
* @param model - Model ID to remove from cooldown
|
|
166
|
+
*/
|
|
167
|
+
removeFromCooldown(model) {
|
|
168
|
+
this.cooldownMap.delete(model);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get all models currently on cooldown
|
|
172
|
+
*
|
|
173
|
+
* @returns Map of model IDs to their cooldown info
|
|
174
|
+
*/
|
|
175
|
+
getCooldownStatus() {
|
|
176
|
+
const status = new Map();
|
|
177
|
+
const now = Date.now();
|
|
178
|
+
for (const [model, entry] of this.cooldownMap) {
|
|
179
|
+
const remaining = entry.expiresAt - now;
|
|
180
|
+
if (remaining > 0) {
|
|
181
|
+
status.set(model, { remainingMs: remaining, reason: entry.reason });
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
// Clean up expired entries
|
|
185
|
+
this.cooldownMap.delete(model);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return status;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Build the queue of models to try, respecting cooldowns
|
|
192
|
+
*
|
|
193
|
+
* @param primaryModel - The primary model requested
|
|
194
|
+
* @returns Ordered array of models to try
|
|
195
|
+
*/
|
|
196
|
+
buildModelQueue(primaryModel) {
|
|
197
|
+
const queue = [];
|
|
198
|
+
// Add primary model first if not on cooldown
|
|
199
|
+
if (!this.isModelOnCooldown(primaryModel)) {
|
|
200
|
+
queue.push(primaryModel);
|
|
201
|
+
}
|
|
202
|
+
// Add fallback models that aren't on cooldown
|
|
203
|
+
for (const model of this.fallbackModels) {
|
|
204
|
+
// Skip if it's the primary (already added) or on cooldown
|
|
205
|
+
if (model === primaryModel)
|
|
206
|
+
continue;
|
|
207
|
+
if (this.isModelOnCooldown(model))
|
|
208
|
+
continue;
|
|
209
|
+
queue.push(model);
|
|
210
|
+
}
|
|
211
|
+
// If primary was on cooldown but we have no fallbacks, add it anyway
|
|
212
|
+
// (better to try and fail than to give up immediately)
|
|
213
|
+
if (queue.length === 0 && this.isModelOnCooldown(primaryModel)) {
|
|
214
|
+
queue.push(primaryModel);
|
|
215
|
+
}
|
|
216
|
+
return queue;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Execute an operation with automatic model fallback
|
|
220
|
+
*
|
|
221
|
+
* Tries the primary model first, and if it fails with a rate limit error,
|
|
222
|
+
* automatically tries fallback models in order.
|
|
223
|
+
*
|
|
224
|
+
* @param primaryModel - The primary model to try first
|
|
225
|
+
* @param operation - Function that performs the API call with the given model
|
|
226
|
+
* @param logger - Optional logger for debugging
|
|
227
|
+
* @returns Result including which model was used and all attempts
|
|
228
|
+
* @throws FallbackExhaustedError if all models fail
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts
|
|
232
|
+
* const result = await manager.executeWithFallback(
|
|
233
|
+
* 'claude-opus-4-5',
|
|
234
|
+
* async (model) => {
|
|
235
|
+
* return await puter.ai.chat(messages, { model });
|
|
236
|
+
* },
|
|
237
|
+
* logger
|
|
238
|
+
* );
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
async executeWithFallback(primaryModel, operation, logger) {
|
|
242
|
+
// If fallback is disabled, just run the operation directly
|
|
243
|
+
if (!this.enabled) {
|
|
244
|
+
const startTime = Date.now();
|
|
245
|
+
try {
|
|
246
|
+
const result = await operation(primaryModel);
|
|
247
|
+
return {
|
|
248
|
+
result,
|
|
249
|
+
usedModel: primaryModel,
|
|
250
|
+
wasFallback: false,
|
|
251
|
+
attempts: [{
|
|
252
|
+
model: primaryModel,
|
|
253
|
+
success: true,
|
|
254
|
+
durationMs: Date.now() - startTime,
|
|
255
|
+
}],
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
throw error;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
const modelQueue = this.buildModelQueue(primaryModel);
|
|
263
|
+
const attempts = [];
|
|
264
|
+
logger?.debug('Fallback queue built', {
|
|
265
|
+
primary: primaryModel,
|
|
266
|
+
queue: modelQueue.join(', '),
|
|
267
|
+
cooldowns: this.cooldownMap.size,
|
|
268
|
+
});
|
|
269
|
+
for (const model of modelQueue) {
|
|
270
|
+
const startTime = Date.now();
|
|
271
|
+
const isFallback = model !== primaryModel;
|
|
272
|
+
if (isFallback) {
|
|
273
|
+
logger?.info(`Trying fallback model: ${model}`);
|
|
274
|
+
}
|
|
275
|
+
try {
|
|
276
|
+
const result = await operation(model);
|
|
277
|
+
// Success! If this was a fallback, log it
|
|
278
|
+
if (isFallback) {
|
|
279
|
+
logger?.info(`Fallback model succeeded: ${model}`);
|
|
280
|
+
}
|
|
281
|
+
attempts.push({
|
|
282
|
+
model,
|
|
283
|
+
success: true,
|
|
284
|
+
durationMs: Date.now() - startTime,
|
|
285
|
+
});
|
|
286
|
+
return {
|
|
287
|
+
result,
|
|
288
|
+
usedModel: model,
|
|
289
|
+
wasFallback: isFallback,
|
|
290
|
+
attempts,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
const durationMs = Date.now() - startTime;
|
|
295
|
+
const isRateLimit = isRateLimitError(error);
|
|
296
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
297
|
+
attempts.push({
|
|
298
|
+
model,
|
|
299
|
+
success: false,
|
|
300
|
+
error: errorMessage,
|
|
301
|
+
isRateLimit,
|
|
302
|
+
durationMs,
|
|
303
|
+
});
|
|
304
|
+
if (isRateLimit) {
|
|
305
|
+
// Add to cooldown and continue to next model
|
|
306
|
+
this.addToCooldown(model, errorMessage);
|
|
307
|
+
const cooldownSecs = Math.round(this.cooldownMs / 1000);
|
|
308
|
+
logger?.warn(`Model ${model} rate limited, cooldown ${cooldownSecs}s`);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
// Non-rate-limit error - might be a real problem
|
|
312
|
+
// Still try fallbacks but log it differently
|
|
313
|
+
logger?.warn(`Model ${model} failed: ${errorMessage}`);
|
|
314
|
+
}
|
|
315
|
+
// Continue to next model in queue
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// All models exhausted
|
|
319
|
+
logger?.error('All models exhausted', new FallbackExhaustedError(attempts));
|
|
320
|
+
throw new FallbackExhaustedError(attempts);
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Clear all cooldowns (useful for testing or manual reset)
|
|
324
|
+
*/
|
|
325
|
+
clearCooldowns() {
|
|
326
|
+
this.cooldownMap.clear();
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Update configuration
|
|
330
|
+
*/
|
|
331
|
+
configure(options) {
|
|
332
|
+
if (options.fallbackModels !== undefined) {
|
|
333
|
+
this.fallbackModels = options.fallbackModels;
|
|
334
|
+
}
|
|
335
|
+
if (options.cooldownMs !== undefined) {
|
|
336
|
+
this.cooldownMs = options.cooldownMs;
|
|
337
|
+
}
|
|
338
|
+
if (options.enabled !== undefined) {
|
|
339
|
+
this.enabled = options.enabled;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Get current configuration
|
|
344
|
+
*/
|
|
345
|
+
getConfig() {
|
|
346
|
+
return {
|
|
347
|
+
fallbackModels: [...this.fallbackModels],
|
|
348
|
+
cooldownMs: this.cooldownMs,
|
|
349
|
+
enabled: this.enabled,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Global FallbackManager instance shared across all model instances.
|
|
355
|
+
* This ensures cooldown state is consistent across the application.
|
|
356
|
+
*/
|
|
357
|
+
let globalFallbackManager = null;
|
|
358
|
+
/**
|
|
359
|
+
* Get the global FallbackManager instance, creating it if needed
|
|
360
|
+
*
|
|
361
|
+
* @param options - Configuration options (only used when creating)
|
|
362
|
+
* @returns The global FallbackManager instance
|
|
363
|
+
*/
|
|
364
|
+
export function getGlobalFallbackManager(options) {
|
|
365
|
+
if (!globalFallbackManager) {
|
|
366
|
+
globalFallbackManager = new FallbackManager(options);
|
|
367
|
+
}
|
|
368
|
+
else if (options) {
|
|
369
|
+
// Update config if options provided
|
|
370
|
+
globalFallbackManager.configure(options);
|
|
371
|
+
}
|
|
372
|
+
return globalFallbackManager;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Reset the global FallbackManager (useful for testing)
|
|
376
|
+
*/
|
|
377
|
+
export function resetGlobalFallbackManager() {
|
|
378
|
+
globalFallbackManager = null;
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* and 500+ AI models through Puter.com's "User-Pays" model.
|
|
6
6
|
* Free tier available with undocumented limits.
|
|
7
7
|
*
|
|
8
|
+
* Features automatic model fallback when rate limits are encountered.
|
|
9
|
+
*
|
|
8
10
|
* @author chindris-mihai-alexandru
|
|
9
11
|
* @license MIT
|
|
10
12
|
*/
|
|
@@ -14,5 +16,7 @@ export { createPuter } from './ai-provider/index.js';
|
|
|
14
16
|
export type { PuterProvider, PuterChatSettings, PuterProviderConfig, PuterChatConfig } from './ai-provider/index.js';
|
|
15
17
|
export { createLogger, createLoggerFromConfig, nullLogger, LogLevel } from './logger.js';
|
|
16
18
|
export type { Logger, LoggerOptions } from './logger.js';
|
|
19
|
+
export { FallbackManager, getGlobalFallbackManager, resetGlobalFallbackManager, isRateLimitError, FallbackExhaustedError, DEFAULT_FALLBACK_MODELS, DEFAULT_COOLDOWN_MS, } from './fallback.js';
|
|
20
|
+
export type { FallbackOptions, FallbackResult, FallbackAttempt, } from './fallback.js';
|
|
17
21
|
export type { PuterConfig, PuterAccount, PuterChatOptions, PuterChatResponse, PuterChatMessage, PuterChatStreamChunk, PuterModelInfo } from './types.js';
|
|
18
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGrH,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzF,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* and 500+ AI models through Puter.com's "User-Pays" model.
|
|
6
6
|
* Free tier available with undocumented limits.
|
|
7
7
|
*
|
|
8
|
+
* Features automatic model fallback when rate limits are encountered.
|
|
9
|
+
*
|
|
8
10
|
* @author chindris-mihai-alexandru
|
|
9
11
|
* @license MIT
|
|
10
12
|
*/
|
|
@@ -21,4 +23,6 @@ export { createPuter as default } from './ai-provider/index.js';
|
|
|
21
23
|
export { createPuter } from './ai-provider/index.js';
|
|
22
24
|
// Logger exports for debug mode
|
|
23
25
|
export { createLogger, createLoggerFromConfig, nullLogger, LogLevel } from './logger.js';
|
|
26
|
+
// Fallback Manager exports for automatic model fallback
|
|
27
|
+
export { FallbackManager, getGlobalFallbackManager, resetGlobalFallbackManager, isRateLimitError, FallbackExhaustedError, DEFAULT_FALLBACK_MODELS, DEFAULT_COOLDOWN_MS, } from './fallback.js';
|
|
24
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kDAAkD;AAClD,2DAA2D;AAC3D,wEAAwE;AACxE,yFAAyF;AACzF,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,gEAAgE;AAChE,uEAAuE;AACvE,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEhE,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGzF,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -36,6 +36,9 @@ export declare const PuterConfigSchema: z.ZodObject<{
|
|
|
36
36
|
retry_delay_ms: z.ZodDefault<z.ZodNumber>;
|
|
37
37
|
stream_buffer_size: z.ZodDefault<z.ZodNumber>;
|
|
38
38
|
cache_ttl_ms: z.ZodDefault<z.ZodNumber>;
|
|
39
|
+
fallback_enabled: z.ZodDefault<z.ZodBoolean>;
|
|
40
|
+
fallback_models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
|
+
fallback_cooldown_ms: z.ZodDefault<z.ZodNumber>;
|
|
39
42
|
}, z.core.$strip>;
|
|
40
43
|
export type PuterConfig = z.infer<typeof PuterConfigSchema>;
|
|
41
44
|
export interface PuterChatMessage {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;;;;;;iBAO7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,0BAA0B;;;;;;;;;;;iBAIrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAG9E,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -35,6 +35,10 @@ export const PuterConfigSchema = z.object({
|
|
|
35
35
|
stream_buffer_size: z.number().default(1024),
|
|
36
36
|
// Cache Settings
|
|
37
37
|
cache_ttl_ms: z.number().default(300000), // 5 minutes
|
|
38
|
+
// Fallback Settings
|
|
39
|
+
fallback_enabled: z.boolean().default(true),
|
|
40
|
+
fallback_models: z.array(z.string()).optional(), // Uses DEFAULT_FALLBACK_MODELS if not set
|
|
41
|
+
fallback_cooldown_ms: z.number().default(60000), // 1 minute
|
|
38
42
|
});
|
|
39
43
|
// Available Claude Models
|
|
40
44
|
export const PUTER_CLAUDE_MODELS = [
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,uBAAuB;AACvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACxC,CAAC,CAAC;AAIH,gCAAgC;AAChC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC,CAAC,CAAC;AAIH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEtC,eAAe;IACf,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACzD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAE1C,mBAAmB;IACnB,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEhD,iBAAiB;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAExC,kBAAkB;IAClB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE5C,iBAAiB;IACjB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,uBAAuB;AACvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACxC,CAAC,CAAC;AAIH,gCAAgC;AAChC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC,CAAC,CAAC;AAIH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEtC,eAAe;IACf,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACzD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAE1C,mBAAmB;IACnB,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEhD,iBAAiB;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAExC,kBAAkB;IAClB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE5C,iBAAiB;IACjB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY;IAEtD,oBAAoB;IACpB,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,0CAA0C;IAC3F,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW;CAC7D,CAAC,CAAC;AA2FH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,kBAAkB;CACV,CAAC;AAEX,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY;IACZ,OAAO;IACP,SAAS;IACT,SAAS;IACT,QAAQ;IACR,aAAa;IACb,IAAI;IACJ,SAAS;IACT,SAAS;IACT,IAAI;CACI,CAAC;AAEX,0BAA0B;AAC1B,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,gBAAgB;IAChB,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;CACV,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-puter-auth",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.39",
|
|
4
4
|
"description": "Puter.com OAuth plugin for OpenCode - Easy access to Claude, GPT, Gemini & 500+ AI models. No API keys needed, credit-based usage.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"puter-auth": "dist/cli.js"
|