dsh-llm-fallbacks 0.6.0 → 0.6.1

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 CHANGED
@@ -7,7 +7,7 @@
7
7
  ![node](https://img.shields.io/badge/node-%3E%3D22-339933.svg)
8
8
  ![pnpm](https://img.shields.io/badge/pnpm-%3E%3D10-f69220.svg)
9
9
  ![dsh tui](https://img.shields.io/badge/dsh%20tui-compatible-4B32C3.svg)
10
- ![dsh](https://img.shields.io/badge/DSH-0.1.7--rc.1-4B32C3.svg)
10
+ ![dsh](https://img.shields.io/badge/DSH-0.1.7--rc.2-4B32C3.svg)
11
11
  [![dshfind](https://dshfind.com/api/badge/omdsh-dev/dsh-llm-fallbacks?lang=en)](https://dshfind.com/zh/plugins/omdsh-dev/dsh-llm-fallbacks?ref=badge)
12
12
 
13
13
  Automatic provider/model fallback chains for dsh (DeepSeek Harness): when an agent's LLM requests keep failing — retries exhausted, auth errors, quota exceeded, rate limiting (429) — the plugin switches provider/model along the fallback chain for the current role, and the current step/turn continues on the target model: tasks are not interrupted by model problems.
@@ -95,7 +95,7 @@ Build the section up in four steps:
95
95
 
96
96
  **2. Set the all-day `rootChain`.** Leading entries are the fallback chain, walked first when a request fails; the **last** entry is the Default model.
97
97
 
98
- > **Conformance**: the last entry must be exactly one official model — `deepseek-official/deepseek-flash` or `deepseek-official/deepseek-v4-pro` (XOR). The settings card and gateway reject any other tail on save; a legacy non-official tail warns at startup and keeps working as a fallback-only walk, but cannot be saved as-is. The retired `deepseek-v4-flash` id is no longer a legal tail — a saved tail with it now warns, goes inert (slot rows + virtual picker), and blocks save until a legal tail is picked. The official Pro tail is catalog-served as `deepseek-official/deepseek-v4-pro` (dsh 0.1.7-rc.1) and selectable in the card; a hand-written legacy `deepseek-official/deepseek-pro` tail — never catalog-served — reads back as non-conforming (no migration; re-pick the tail). The plugin does not probe catalog availability — a chain containing `deepseek-official/deepseek-v4-pro` dispatches to it like any other exact entry, and on the virtual route the `stream()` delegate serves the first dispatchable exact head of the effective chain, so a chain with a working entry before Pro still routes to that earlier entry.
98
+ > **Conformance**: the last entry must be exactly one official model — `deepseek-official/deepseek-flash` or `deepseek-official/deepseek-v4-pro` (XOR). The settings card and gateway reject any other tail on save; a legacy non-official tail warns at startup and keeps working as a fallback-only walk, but cannot be saved as-is. The retired `deepseek-v4-flash` id is no longer a legal tail — a saved tail with it now warns, goes inert (slot rows + virtual picker), and blocks save until a legal tail is picked. The official Pro tail is catalog-served as `deepseek-official/deepseek-v4-pro` (dsh 0.1.7-rc.2; the claim re-verified against the rc.2 default catalog) and selectable in the card; a hand-written legacy `deepseek-official/deepseek-pro` tail — never catalog-served — reads back as non-conforming (no migration; re-pick the tail). The plugin does not probe catalog availability — a chain containing `deepseek-official/deepseek-v4-pro` dispatches to it like any other exact entry, and on the virtual route the `stream()` delegate serves the first dispatchable exact head of the effective chain, so a chain with a working entry before Pro still routes to that earlier entry.
99
99
 
100
100
  **3. Add `timeSlots` (optional).** Rows rotate the effective root chain by wall-clock windows. Preset rows use frozen UTC+8 windows (only their chain is editable; while a preset row exists, `tz` locks to `Asia/Shanghai`); custom rows take `start`/`end` (may wrap midnight) and an optional `days` list. The first row whose window contains the current moment wins; no match → the all-day `rootChain`. Rotation is a routing seed — it applies on the next root request and consumes no cooldown (see [Time slots](#time-slots)).
101
101
 
@@ -17,9 +17,9 @@
17
17
  import type { FallbacksConfig } from './config.ts';
18
18
  /** Official all-day selectors — the ONLY legal tails (length 1, XOR):
19
19
  * Flash (the current official default) and Pro, both selectable. The Pro
20
- * tail id is the catalog id verbatim: 0.1.7-rc.1's official default catalog
21
- * serves `deepseek-v4-pro` alongside `deepseek-flash`, so the card's Pro
22
- * radio is selectable again. `deepseek-v4-flash` stays retired (dropped
20
+ * tail id is the catalog id verbatim: 0.1.7-rc.2's official default catalog
21
+ * still serves `deepseek-v4-pro` alongside `deepseek-flash` — re-verified
22
+ * at rc.2 (rc.1 re-introduced it), so the card's Pro radio is selectable. `deepseek-v4-flash` stays retired (dropped
23
23
  * from the catalog); a hand-written legacy `deepseek-official/deepseek-pro`
24
24
  * tail — never catalog-served nor selectable — is just a non-legal tail
25
25
  * that degrades through the existing nonconforming walk. */
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "dsh",
6
6
  "dsh-plugin"
7
7
  ],
8
- "version": "0.6.0",
8
+ "version": "0.6.1",
9
9
  "type": "module",
10
10
  "main": "./dist/index.js",
11
11
  "types": "./dist/index.d.ts",
@@ -61,29 +61,29 @@
61
61
  },
62
62
  "peerDependencies": {
63
63
  "@deepseek-ai/cordis": "^4.0.2",
64
- "@deepseek-ai/dsh-agent": "^0.1.7-rc.1",
65
- "@deepseek-ai/dsh-api-gateway": "^0.1.7-rc.1",
66
- "@deepseek-ai/dsh-api-remotes": "^0.1.7-rc.1",
67
- "@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.1",
68
- "@deepseek-ai/dsh-client-connection": "^0.1.7-rc.1",
69
- "@deepseek-ai/dsh-client-locale": "^0.1.7-rc.1",
70
- "@deepseek-ai/dsh-client-store": "^0.1.7-rc.1",
71
- "@deepseek-ai/dsh-client-ui-chat": "^0.1.7-rc.1",
72
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.1",
73
- "@deepseek-ai/dsh-client-ui-plugin-manager": "^0.1.7-rc.1",
74
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.7-rc.1",
75
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.1",
76
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.7-rc.1",
77
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.1",
78
- "@deepseek-ai/dsh-commands": "^0.1.7-rc.1",
79
- "@deepseek-ai/dsh-llm": "^0.1.7-rc.1",
80
- "@deepseek-ai/dsh-llm-retry": "^0.1.7-rc.1",
81
- "@deepseek-ai/dsh-session": "^0.1.7-rc.1",
82
- "@deepseek-ai/dsh-session-projection": "^0.1.7-rc.1",
83
- "@deepseek-ai/dsh-settings": "^0.1.7-rc.1",
84
- "@deepseek-ai/dsh-tool-subagent": "^0.1.7-rc.1",
85
- "@deepseek-ai/dsh-typert-protocol": "^0.1.7-rc.1",
86
- "@deepseek-ai/dsh-typert-registry": "^0.1.7-rc.1",
64
+ "@deepseek-ai/dsh-agent": "^0.1.7-rc.2",
65
+ "@deepseek-ai/dsh-api-gateway": "^0.1.7-rc.2",
66
+ "@deepseek-ai/dsh-api-remotes": "^0.1.7-rc.2",
67
+ "@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.2",
68
+ "@deepseek-ai/dsh-client-connection": "^0.1.7-rc.2",
69
+ "@deepseek-ai/dsh-client-locale": "^0.1.7-rc.2",
70
+ "@deepseek-ai/dsh-client-store": "^0.1.7-rc.2",
71
+ "@deepseek-ai/dsh-client-ui-chat": "^0.1.7-rc.2",
72
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.2",
73
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "^0.1.7-rc.2",
74
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.7-rc.2",
75
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.2",
76
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.7-rc.2",
77
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.2",
78
+ "@deepseek-ai/dsh-commands": "^0.1.7-rc.2",
79
+ "@deepseek-ai/dsh-llm": "^0.1.7-rc.2",
80
+ "@deepseek-ai/dsh-llm-retry": "^0.1.7-rc.2",
81
+ "@deepseek-ai/dsh-session": "^0.1.7-rc.2",
82
+ "@deepseek-ai/dsh-session-projection": "^0.1.7-rc.2",
83
+ "@deepseek-ai/dsh-settings": "^0.1.7-rc.2",
84
+ "@deepseek-ai/dsh-tool-subagent": "^0.1.7-rc.2",
85
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.7-rc.2",
86
+ "@deepseek-ai/dsh-typert-registry": "^0.1.7-rc.2",
87
87
  "@deepseek-ai/schemastery": "^3.18.2",
88
88
  "react": "^18.2.0"
89
89
  },