dsh-fallback-router 0.1.0 → 0.1.1-alpha.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/LICENSE +21 -21
- package/README.md +5 -1
- package/README.zh-CN.md +5 -1
- package/bundle/cordis.patch.yml +19 -19
- package/dist/client/index.js +12 -12
- package/icon.svg +16 -16
- package/package.json +138 -138
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 dsh-external
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 dsh-external
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -14,7 +14,11 @@ dsh plugin --profile desktop add github:hongxin-y/dsh-fallback-router
|
|
|
14
14
|
|
|
15
15
|
Pin a commit (`#<sha>`) if you want the code that runs to stop changing. pnpm ≥ 10 does not run a git dependency's build script by default, so the first `add` may stop with `ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED`; run `pnpm approve-builds` inside the profile directory (`$DSH_HOME/profiles/desktop`), or add the package to that profile's `pnpm-workspace.yaml` allow list (`allowBuilds`, or `onlyBuiltDependencies` on older pnpm), then run the `add` again. Details, verification and uninstall → [docs/install.md](docs/install.md).
|
|
16
16
|
|
|
17
|
-
The
|
|
17
|
+
The package is also published to the registry as `dsh-fallback-router`, which skips the build step entirely:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
dsh plugin --profile desktop add dsh-fallback-router
|
|
21
|
+
```
|
|
18
22
|
|
|
19
23
|
## 1. The core idea: model profiles
|
|
20
24
|
|
package/README.zh-CN.md
CHANGED
|
@@ -14,7 +14,11 @@ dsh plugin --profile desktop add github:hongxin-y/dsh-fallback-router
|
|
|
14
14
|
|
|
15
15
|
想锁定代码版本就带上提交号(`#<sha>`)。pnpm ≥ 10 默认不执行 git 依赖的构建脚本,第一次 `add` 可能停在 `ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED`:在 profile 目录(`$DSH_HOME/profiles/desktop`)里跑一次 `pnpm approve-builds`,或把该包写进该 profile 的 `pnpm-workspace.yaml` 允许列表(pnpm 11 用 `allowBuilds`,pnpm 10 用 `onlyBuiltDependencies`),再执行一次。详细步骤、验证与卸载 → [docs/install.md](docs/install.md)。
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
本包也已发布到 npm 注册表,装它不需要现场构建:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
dsh plugin --profile desktop add dsh-fallback-router
|
|
21
|
+
```
|
|
18
22
|
|
|
19
23
|
## 一、核心概念:模型配置
|
|
20
24
|
|
package/bundle/cordis.patch.yml
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
# The dsh-fallback-router profile-bundle patch: ONE insert of the plugin row over
|
|
2
|
-
# the profile's bundle stack (`dsh.profile.bundles` order — dsh-base first,
|
|
3
|
-
# this bundle after the llm-retry bundle; later layers win per row).
|
|
4
|
-
#
|
|
5
|
-
# Insert position matters for the host waterfall: the profile must list the
|
|
6
|
-
# llm-retry bundle BEFORE dsh-fallback-router, so this plugin's
|
|
7
|
-
# `agent/request-error` listener composes after llm-retry and only intervenes
|
|
8
|
-
# once retry policy is exhausted (normal mode) or delegates downstream first
|
|
9
|
-
# (always mode). See plan Risk table.
|
|
10
|
-
#
|
|
11
|
-
# A patch replaces the targeted row's whole `config` rather than merging into
|
|
12
|
-
# it, so a user-level override must restate every field it keeps. The row
|
|
13
|
-
# ships only neutral defaults; profile-layer (`cordis.patch.yml`) overrides
|
|
14
|
-
# win.
|
|
15
|
-
|
|
16
|
-
- insert:
|
|
17
|
-
- id: llm-router
|
|
18
|
-
name: 'dsh-fallback-router'
|
|
19
|
-
config: {}
|
|
1
|
+
# The dsh-fallback-router profile-bundle patch: ONE insert of the plugin row over
|
|
2
|
+
# the profile's bundle stack (`dsh.profile.bundles` order — dsh-base first,
|
|
3
|
+
# this bundle after the llm-retry bundle; later layers win per row).
|
|
4
|
+
#
|
|
5
|
+
# Insert position matters for the host waterfall: the profile must list the
|
|
6
|
+
# llm-retry bundle BEFORE dsh-fallback-router, so this plugin's
|
|
7
|
+
# `agent/request-error` listener composes after llm-retry and only intervenes
|
|
8
|
+
# once retry policy is exhausted (normal mode) or delegates downstream first
|
|
9
|
+
# (always mode). See plan Risk table.
|
|
10
|
+
#
|
|
11
|
+
# A patch replaces the targeted row's whole `config` rather than merging into
|
|
12
|
+
# it, so a user-level override must restate every field it keeps. The row
|
|
13
|
+
# ships only neutral defaults; profile-layer (`cordis.patch.yml`) overrides
|
|
14
|
+
# win.
|
|
15
|
+
|
|
16
|
+
- insert:
|
|
17
|
+
- id: llm-router
|
|
18
|
+
name: 'dsh-fallback-router'
|
|
19
|
+
config: {}
|
package/dist/client/index.js
CHANGED
|
@@ -10,7 +10,7 @@ window.__ModuleLoader__.load({
|
|
|
10
10
|
let react = require("react");
|
|
11
11
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
12
12
|
let _deepseek_ai_dsh_client_store = require("@deepseek-ai/dsh-client-store");
|
|
13
|
-
//#region
|
|
13
|
+
//#region node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js
|
|
14
14
|
/**
|
|
15
15
|
* @license React
|
|
16
16
|
* use-sync-external-store-shim.production.js
|
|
@@ -70,12 +70,12 @@ window.__ModuleLoader__.load({
|
|
|
70
70
|
exports.useSyncExternalStore = void 0 !== React$1.useSyncExternalStore ? React$1.useSyncExternalStore : shim;
|
|
71
71
|
}));
|
|
72
72
|
//#endregion
|
|
73
|
-
//#region
|
|
73
|
+
//#region node_modules/use-sync-external-store/shim/index.js
|
|
74
74
|
var require_shim = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
75
75
|
module.exports = require_use_sync_external_store_shim_production();
|
|
76
76
|
}));
|
|
77
77
|
//#endregion
|
|
78
|
-
//#region
|
|
78
|
+
//#region node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js
|
|
79
79
|
/**
|
|
80
80
|
* @license React
|
|
81
81
|
* use-sync-external-store-shim/with-selector.production.js
|
|
@@ -167,8 +167,8 @@ window.__ModuleLoader__.load({
|
|
|
167
167
|
};
|
|
168
168
|
}
|
|
169
169
|
//#endregion
|
|
170
|
-
//#region \0dsh-css
|
|
171
|
-
const css$4 = "\r\n\r\n\r\n._c6b9cfef_root {\r\n min-width: 0;\r\n}\r\n\r\n\r\n._17e44069_readOnly {\r\n margin: 12px 0 0;\r\n font-size: 12px;\r\n line-height: 1.5;\r\n color: var(--dsw-alias-label-tertiary);\r\n}\r\n\r\n._dbee053b_notice {\r\n margin: 12px 0 0;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-state-business-primary);\r\n}\r\n\r\n\r\n._a7fc41a0_legacyNotice {\r\n margin: 12px 0 0;\r\n padding: 10px 12px;\r\n border-radius: 8px;\r\n background: var(--dsw-alias-bg-module-platform);\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-state-business-primary);\r\n}\r\n\r\n._23364cdb_error {\r\n margin: 12px 0 0;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-state-error-primary);\r\n}\r\n\r\n\r\n._8b79a4c1_noticeRow {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin: 12px 0 0;\r\n}\r\n\r\n._8b79a4c1_noticeRow ._23364cdb_error {\r\n flex: 1;\r\n min-width: 0;\r\n margin: 0;\r\n}\r\n\r\n\r\n._dd5a759b_fieldset {\r\n margin: 0;\r\n padding: 0;\r\n border: none;\r\n display: flex;\r\n flex-direction: column;\r\n min-width: 0;\r\n}\r\n\r\n\r\n._4a9f4378_sectionHeading {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin: 0;\r\n padding: 4px 0;\r\n font-size: 16px;\r\n line-height: 24px;\r\n font-weight: 600;\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n._3b1ec6bf_sectionHeadingText {\r\n display: block;\r\n min-width: 0;\r\n}\r\n\r\n\r\n._243fb84d_sectionActions {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-left: auto;\r\n}\r\n\r\n._243fb84d_sectionActions ._9320e17f_discard,\r\n._243fb84d_sectionActions ._c8248e0e_save {\r\n padding: 3px 12px;\r\n font-size: 12px;\r\n line-height: 18px;\r\n}\r\n\r\n\r\n._1a4fb8ee_sectionToggle {\r\n appearance: none;\r\n border: 0;\r\n background: none;\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n margin: 0;\r\n padding: 0;\r\n font: inherit;\r\n color: inherit;\r\n cursor: pointer;\r\n}\r\n\r\n._1a4fb8ee_sectionToggle:disabled {\r\n cursor: default;\r\n}\r\n\r\n._1a4fb8ee_sectionToggle:focus-visible {\r\n outline: 2px solid var(--dsw-alias-brand-primary);\r\n outline-offset: 1px;\r\n}\r\n\r\n\r\n._49e6b68d_advancedBody {\r\n display: flex;\r\n flex-direction: column;\r\n min-width: 0;\r\n}\r\n\r\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._a72f7f8d_field,\r\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._345d580e_checkboxRow,\r\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._adeed03f_numberFields {\r\n padding: 12px 0;\r\n}\r\n\r\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._a72f7f8d_field + ._a72f7f8d_field,\r\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._345d580e_checkboxRow + ._a72f7f8d_field,\r\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._a72f7f8d_field + ._adeed03f_numberFields {\r\n border-top: 0.5px solid var(--dsw-alias-border-l2);\r\n}\r\n\r\n\r\n._a72f7f8d_field {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 6px;\r\n margin: 0;\r\n padding: 0;\r\n border: none;\r\n min-width: 0;\r\n}\r\n\r\n\r\n._dd5a759b_fieldset > ._a72f7f8d_field,\r\n._dd5a759b_fieldset > ._345d580e_checkboxRow,\r\n._dd5a759b_fieldset > ._adeed03f_numberFields {\r\n padding: 12px 0;\r\n}\r\n\r\n._dd5a759b_fieldset > ._a72f7f8d_field + ._a72f7f8d_field,\r\n._dd5a759b_fieldset > ._a72f7f8d_field + ._adeed03f_numberFields,\r\n._dd5a759b_fieldset > ._345d580e_checkboxRow + ._a72f7f8d_field {\r\n border-top: 0.5px solid var(--dsw-alias-border-l2);\r\n}\r\n\r\n\r\n._345d580e_checkboxRow {\r\n display: flex;\r\n align-items: flex-start;\r\n gap: 8px;\r\n}\r\n\r\n\r\n._345d580e_checkboxRow ._27b96bc2_checkbox {\r\n margin-top: 3px;\r\n}\r\n\r\n._56212755_fieldLabel {\r\n \r\n display: inline-flex;\r\n align-items: center;\r\n gap: 10px;\r\n padding: 0;\r\n font-size: 13px;\r\n line-height: 1.5;\r\n font-weight: 500;\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n._d7541ea2_hint {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n flex-wrap: wrap;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-tertiary);\r\n}\r\n\r\n\r\n._9e7453cd_checkLabel {\r\n flex: 1;\r\n min-width: 0;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n font-size: 14px;\r\n line-height: 22px;\r\n font-weight: 400;\r\n color: var(--dsw-alias-label-primary);\r\n cursor: pointer;\r\n}\r\n\r\n._e4709a41_checkLabelTitle {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n font-weight: 400;\r\n}\r\n\r\n._8234d308_checkLabelDesc {\r\n font-size: 12px;\r\n line-height: 18px;\r\n font-weight: 400;\r\n color: var(--dsw-alias-label-tertiary);\r\n}\r\n\r\n\r\n._27b96bc2_checkbox {\r\n flex: none;\r\n width: 16px;\r\n height: 16px;\r\n margin: 0;\r\n accent-color: var(--dsw-alias-brand-primary);\r\n cursor: pointer;\r\n}\r\n\r\n._27b96bc2_checkbox:disabled {\r\n opacity: 0.4;\r\n cursor: default;\r\n}\r\n\r\n\r\n._3c784feb_slotPresetName {\r\n font-size: 14px;\r\n line-height: 22px;\r\n font-weight: 500;\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n\r\n._9cdfc0a6_infoHint {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex: none;\r\n width: 16px;\r\n height: 16px;\r\n border-radius: 50%;\r\n font-size: 14px;\r\n line-height: 1;\r\n color: var(--dsw-alias-label-tertiary);\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n cursor: help;\r\n user-select: none;\r\n}\r\n\r\n._9cdfc0a6_infoHint:focus-visible {\r\n outline: none;\r\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\r\n}\r\n\r\n._9cdfc0a6_infoHint::after {\r\n content: attr(data-tip);\r\n position: absolute;\r\n top: 50%;\r\n left: calc(100% + 8px);\r\n transform: translateY(-50%);\r\n z-index: 10;\r\n box-sizing: border-box;\r\n width: max-content;\r\n max-width: 280px;\r\n padding: 5px 10px;\r\n border-radius: 8px;\r\n background: var(--dsw-alias-label-primary);\r\n color: var(--dsw-alias-bg-layer-3);\r\n font-size: 11px;\r\n line-height: 17px;\r\n font-weight: 400;\r\n white-space: normal;\r\n text-align: left;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity .12s;\r\n}\r\n\r\n._9cdfc0a6_infoHint:hover::after,\r\n._9cdfc0a6_infoHint:focus-visible::after {\r\n opacity: 1;\r\n}\r\n\r\n\r\n._74c4f11e_infoHintDisabled {\r\n opacity: 0.4;\r\n cursor: default;\r\n}\r\n\r\n\r\n._a106dba2_optionRow {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n padding: 6px 8px;\r\n border-radius: 6px;\r\n font-size: 14px;\r\n line-height: 22px;\r\n color: var(--dsw-alias-label-primary);\r\n cursor: pointer;\r\n}\r\n\r\n._a106dba2_optionRow:hover:has(input:not(:disabled)) {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n}\r\n\r\n\r\n._27b96bc2_checkbox,\r\n._a106dba2_optionRow input {\r\n flex: none;\r\n width: 16px;\r\n height: 16px;\r\n margin: 0;\r\n accent-color: var(--dsw-alias-brand-primary);\r\n cursor: pointer;\r\n}\r\n\r\n._27b96bc2_checkbox:focus-visible,\r\n._a106dba2_optionRow input:focus-visible {\r\n outline: none;\r\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\r\n}\r\n\r\n._a106dba2_optionRow input:disabled {\r\n cursor: default;\r\n}\r\n\r\n\r\n._a49c7ded_dayRow {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 4px;\r\n}\r\n\r\n._bdf02c23_dayCell {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n padding: 2px 6px;\r\n border-radius: 6px;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-secondary);\r\n cursor: pointer;\r\n}\r\n\r\n._bdf02c23_dayCell:hover:has(input:not(:disabled)) {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n}\r\n\r\n._bdf02c23_dayCell input {\r\n flex: none;\r\n width: 16px;\r\n height: 16px;\r\n margin: 0;\r\n accent-color: var(--dsw-alias-brand-primary);\r\n cursor: pointer;\r\n}\r\n\r\n._bdf02c23_dayCell input:disabled {\r\n cursor: default;\r\n}\r\n\r\n._bdf02c23_dayCell input:focus-visible {\r\n outline: none;\r\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\r\n}\r\n\r\n\r\n._b82bc091_input {\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 34px;\r\n padding: 0 12px;\r\n border: 0.5px solid var(--dsw-alias-border-l4);\r\n border-radius: var(--dsw-radius-md);\r\n font: inherit;\r\n font-size: 13px;\r\n line-height: 1.5;\r\n background: var(--dsw-alias-bg-layer-3);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n._b82bc091_input:focus-visible {\r\n outline: none;\r\n border-color: var(--dsw-alias-state-business-primary);\r\n}\r\n\r\n._b82bc091_input::placeholder {\r\n color: var(--dsw-alias-label-dimmed);\r\n}\r\n\r\n._b82bc091_input:disabled {\r\n color: var(--dsw-alias-label-tertiary);\r\n cursor: default;\r\n}\r\n\r\n\r\n._c9e5ffe7_inputTextarea {\r\n height: auto;\r\n min-height: 72px;\r\n padding: 8px 12px;\r\n resize: vertical;\r\n}\r\n\r\n\r\n._b5886f05_personaBriefRow {\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n min-width: 0;\r\n}\r\n\r\n._ee45acf7_personaBrief {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n font-size: 14px;\r\n line-height: 22px;\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n\r\n._1d900a64_personaBriefEmpty {\r\n color: var(--dsw-alias-label-tertiary);\r\n}\r\n\r\n\r\n._5ecb2b94_personaFull {\r\n margin: 0;\r\n font-size: 14px;\r\n line-height: 22px;\r\n color: var(--dsw-alias-label-secondary);\r\n white-space: pre-wrap;\r\n overflow-wrap: anywhere;\r\n}\r\n\r\n\r\n._90bd6054_inputInvalid,\r\n._90bd6054_inputInvalid:focus-visible {\r\n border-color: var(--dsw-alias-state-error-primary);\r\n}\r\n\r\n\r\nselect._b82bc091_input {\r\n max-width: 240px;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n._261230a1_selectInput {\r\n appearance: none;\r\n padding-right: 32px;\r\n \r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n background-size: 12px 12px;\r\n}\r\n\r\n\r\n._adeed03f_numberFields {\r\n display: grid;\r\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\r\n gap: 12px;\r\n}\r\n\r\n._adeed03f_numberFields ._a72f7f8d_field {\r\n padding: 0;\r\n}\r\n\r\n._8c756cfb_list {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n margin-top: 4px;\r\n}\r\n\r\n\r\n._bba0bbe4_editorCard {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 14px;\r\n padding: 14px 16px;\r\n border-radius: 12px;\r\n background: var(--dsw-alias-bg-module-platform);\r\n}\r\n\r\n._87c4f7f9_cardFoot {\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n\r\n._fce20e49_ruleGrid {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n}\r\n\r\n._cfc66c5d_ruleCell {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n min-width: 120px;\r\n flex: 1;\r\n}\r\n\r\n._9d4091c5_ruleCellLabel {\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n\r\n._8e7f566e_chevron {\r\n flex: none;\r\n color: var(--dsw-alias-label-tertiary);\r\n transform: rotate(-90deg);\r\n transition: transform .16s;\r\n}\r\n\r\n._7dbaf9ce_chevronOpen {\r\n transform: none;\r\n}\r\n\r\n\r\n._ae6bf76d_chevronFlip {\r\n transform: rotate(180deg);\r\n}\r\n\r\n\r\n._e93c9e2c_collapseRow {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n min-width: 0;\r\n}\r\n\r\n._0934b8f4_collapseToggle {\r\n appearance: none;\r\n border: 0;\r\n background: none;\r\n padding: 0;\r\n cursor: pointer;\r\n color: var(--dsw-alias-label-secondary);\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n flex: 1;\r\n min-width: 0;\r\n font: inherit;\r\n text-align: left;\r\n}\r\n\r\n._0934b8f4_collapseToggle:disabled {\r\n cursor: default;\r\n}\r\n\r\n._1133fbee_collapseTitle {\r\n \r\n flex: none;\r\n max-width: 55%;\r\n min-width: 0;\r\n font-size: 12px;\r\n line-height: 18px;\r\n font-weight: 500;\r\n color: var(--dsw-alias-label-primary);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n._d82ef63d_collapseMeta {\r\n \r\n flex: 0 1 auto;\r\n min-width: 0;\r\n max-width: 40%;\r\n margin-left: auto;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-secondary);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n\r\n._b134c585_seedBadge {\r\n flex: none;\r\n max-width: 40%;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n border-radius: 999px;\r\n padding: 1px 8px;\r\n font-size: 11px;\r\n line-height: 17px;\r\n font-weight: 500;\r\n white-space: nowrap;\r\n background: var(--dsw-alias-bg-layer-1);\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n\r\n._0e70e355_slotTag {\r\n flex: none;\r\n display: inline-flex;\r\n align-items: center;\r\n border-radius: 999px;\r\n padding: 0 6px;\r\n font-size: 11px;\r\n line-height: 17px;\r\n font-weight: 500;\r\n white-space: nowrap;\r\n border: 1px solid;\r\n}\r\n\r\n._f3b7ca50_slotTagHighCost {\r\n color: var(--dsw-alias-state-error-primary);\r\n border-color: var(--dsw-alias-state-error-primary);\r\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent);\r\n}\r\n\r\n._9216af96_slotTagMultiplier {\r\n color: var(--dsw-alias-state-warn-primary);\r\n border-color: var(--dsw-alias-state-warn-primary);\r\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 10%, transparent);\r\n}\r\n\r\n._e6c0e39f_slotTagActive {\r\n color: var(--dsw-alias-state-success-primary);\r\n border-color: var(--dsw-alias-state-success-primary);\r\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\r\n}\r\n\r\n\r\n._0849b09f_dragHandle {\r\n appearance: none;\r\n border: 0;\r\n background: none;\r\n padding: 0;\r\n cursor: grab;\r\n color: var(--dsw-alias-label-tertiary);\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 6px;\r\n flex: none;\r\n}\r\n\r\n._0849b09f_dragHandle:hover:not(:disabled) {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n._0849b09f_dragHandle:active {\r\n cursor: grabbing;\r\n}\r\n\r\n._0849b09f_dragHandle:disabled {\r\n cursor: default;\r\n opacity: 0.4;\r\n}\r\n\r\n._0849b09f_dragHandle:focus-visible {\r\n outline: none;\r\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\r\n}\r\n\r\n\r\n._83fb72f8_slotCardDragging {\r\n opacity: 0.45;\r\n}\r\n\r\n._5d67996b_slotCardOver {\r\n outline: 1px dashed var(--dsw-alias-brand-primary);\r\n outline-offset: 2px;\r\n}\r\n\r\n\r\n._d8f6c9e3_selectorRowDragging {\r\n opacity: 0.45;\r\n}\r\n\r\n._49b56db4_selectorRowOver {\r\n outline: 1px dashed var(--dsw-alias-brand-primary);\r\n outline-offset: 2px;\r\n border-radius: 6px;\r\n}\r\n\r\n\r\n._13d58efe_selectorGrip {\r\n flex: none;\r\n}\r\n\r\n._13d58efe_selectorGrip:disabled {\r\n display: none;\r\n}\r\n\r\n\r\n._bfe77c29_chainBlock {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 6px;\r\n}\r\n\r\n\r\n._428b5d1a_chainSelectors {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n}\r\n\r\n\r\n._c190e3f0_selectorLine {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n flex-wrap: nowrap;\r\n \r\n min-height: 32px;\r\n}\r\n\r\n\r\n._6534b816_selectorIndex {\r\n flex: none;\r\n width: 1.5em;\r\n text-align: right;\r\n font-size: 11px;\r\n line-height: 16px;\r\n color: var(--dsw-alias-label-tertiary);\r\n font-variant-numeric: tabular-nums;\r\n}\r\n\r\n\r\n._334a37c3_selectorProviderCell {\r\n flex: 0 1 clamp(140px, 20%, 220px);\r\n min-width: 0;\r\n}\r\n\r\n._63065c63_selectorModelCell {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n}\r\n\r\n\r\n._63065c63_selectorModelCell > select._b82bc091_input {\r\n max-width: 100%;\r\n}\r\n\r\n\r\n._9222de4f_selectorHint {\r\n display: flex;\r\n align-items: center;\r\n flex: 0 1 auto;\r\n min-width: 0;\r\n}\r\n\r\n\r\n._b3f9f018_selectorHintText {\r\n flex: 0 1 auto;\r\n min-width: 0;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n font-size: 11px;\r\n line-height: 16px;\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n\r\n._9222de4f_selectorHint > ._9cdfc0a6_infoHint {\r\n flex: none;\r\n margin-left: 4px;\r\n}\r\n\r\n\r\n._832cfce6_selectorRemove {\r\n flex: none;\r\n opacity: 0;\r\n transition: opacity .12s;\r\n}\r\n\r\n\r\n._832cfce6_selectorRemove:disabled {\r\n display: none;\r\n}\r\n\r\n\r\n._15ebf4ae_selectorRow:hover ._832cfce6_selectorRemove:not(:disabled),\r\n._15ebf4ae_selectorRow:focus-within ._832cfce6_selectorRemove:not(:disabled) {\r\n opacity: 1;\r\n}\r\n\r\n@media (hover: none) {\r\n ._832cfce6_selectorRemove:not(:disabled) {\r\n opacity: 0.7;\r\n }\r\n}\r\n\r\n\r\n._572ba95a_iconButton {\r\n position: relative;\r\n box-sizing: border-box;\r\n appearance: none;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: 0;\r\n border-radius: 6px;\r\n background: none;\r\n color: var(--dsw-alias-label-tertiary);\r\n cursor: pointer;\r\n}\r\n\r\n._572ba95a_iconButton:disabled {\r\n opacity: 0.4;\r\n cursor: default;\r\n}\r\n\r\n._572ba95a_iconButton:hover:not(:disabled) {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n._572ba95a_iconButton:focus-visible {\r\n outline: none;\r\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\r\n}\r\n\r\n._572ba95a_iconButton::after {\r\n content: attr(data-tip);\r\n position: absolute;\r\n bottom: calc(100% + 6px);\r\n left: 50%;\r\n transform: translateX(-50%);\r\n padding: 3px 8px;\r\n border-radius: 6px;\r\n background: var(--dsw-alias-label-primary);\r\n color: var(--dsw-alias-bg-layer-3);\r\n font-size: 11px;\r\n line-height: 17px;\r\n white-space: nowrap;\r\n opacity: 0;\r\n pointer-events: none;\r\n transition: opacity .12s;\r\n}\r\n\r\n._572ba95a_iconButton:hover::after,\r\n._572ba95a_iconButton:focus-visible::after {\r\n opacity: 1;\r\n}\r\n\r\n\r\n._dce04c19_iconButtonDanger:hover:not(:disabled) {\r\n background: var(--dsw-alias-interactive-bg-hover-danger);\r\n color: var(--dsw-alias-state-error-primary);\r\n}\r\n\r\n\r\n._60ce2a17_outlineButton {\r\n appearance: none;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n padding: 4px 10px;\r\n border: 1px solid var(--dsw-alias-border-l2);\r\n border-radius: var(--dsw-radius-md);\r\n background: none;\r\n font: inherit;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-secondary);\r\n cursor: pointer;\r\n}\r\n\r\n._60ce2a17_outlineButton:hover:not(:disabled) {\r\n color: var(--dsw-alias-label-primary);\r\n border-color: var(--dsw-alias-label-dimmed);\r\n}\r\n\r\n._60ce2a17_outlineButton:disabled {\r\n opacity: 0.4;\r\n cursor: default;\r\n}\r\n\r\n._60ce2a17_outlineButton:focus-visible {\r\n outline: 2px solid var(--dsw-alias-brand-primary);\r\n outline-offset: 1px;\r\n}\r\n\r\n\r\n._0b13c716_addButton {\r\n align-self: flex-start;\r\n}\r\n\r\n\r\n._bfe77c29_chainBlock > ._0b13c716_addButton {\r\n box-sizing: border-box;\r\n align-self: flex-start;\r\n height: 26px;\r\n padding: 0 8px;\r\n border: 1px solid transparent;\r\n gap: 4px;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n._bfe77c29_chainBlock > ._0b13c716_addButton:hover:not(:disabled) {\r\n border-color: transparent;\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n\r\n._bfe77c29_chainBlock > ._0b13c716_addButton:focus-visible {\r\n outline: none;\r\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\r\n}\r\n\r\n\r\n._26e91326_slotAddRow {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-top: 4px;\r\n flex-wrap: wrap;\r\n}\r\n\r\n\r\n._007c1b38_rowActions {\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n}\r\n\r\n\r\n._9320e17f_discard,\r\n._c8248e0e_save {\r\n appearance: none;\r\n border: 1px solid transparent;\r\n border-radius: var(--dsw-radius-md);\r\n padding: 5px 14px;\r\n font: inherit;\r\n font-size: 13px;\r\n line-height: 1.5;\r\n cursor: pointer;\r\n}\r\n\r\n._9320e17f_discard {\r\n border-color: var(--dsw-alias-border-l2);\r\n background: none;\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n._9320e17f_discard:hover:not(:disabled) {\r\n color: var(--dsw-alias-label-primary);\r\n border-color: var(--dsw-alias-label-dimmed);\r\n}\r\n\r\n._c8248e0e_save {\r\n background: var(--dsw-alias-label-primary);\r\n color: var(--dsw-alias-bg-layer-3);\r\n}\r\n\r\n._9320e17f_discard:disabled,\r\n._c8248e0e_save:disabled {\r\n opacity: 0.4;\r\n cursor: default;\r\n}\r\n\r\n._9320e17f_discard:focus-visible,\r\n._c8248e0e_save:focus-visible {\r\n outline: 2px solid var(--dsw-alias-brand-primary);\r\n outline-offset: 1px;\r\n}\r\n\r\n\r\n._7d807542_statusBlock {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n padding: 12px 14px;\r\n margin-top: 12px;\r\n border: 1px solid var(--dsw-alias-border-l2);\r\n border-radius: 12px;\r\n}\r\n\r\n._2d5242e9_statusTitle {\r\n font-size: 12px;\r\n line-height: 18px;\r\n font-weight: 500;\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n\r\n._06913287_statusLine {\r\n margin: 0;\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-secondary);\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n._b5c76c1f_statusLineLabel {\r\n font-weight: 500;\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n\r\n._0d87013f_policyStatus {\r\n margin: 12px 0 0;\r\n padding: 10px 12px;\r\n border-radius: 8px;\r\n background: var(--dsw-alias-bg-module-platform);\r\n display: flex;\r\n flex-direction: column;\r\n gap: 6px;\r\n}\r\n\r\n\r\n._0ebbca28_policyStatusText {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 6px;\r\n}\r\n\r\n._c1a1a4b8_policyStatusSync {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n gap: 6px;\r\n}\r\n\r\n\r\n._59029705_policyStatusLive:empty {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n overflow: hidden;\r\n clip-path: inset(50%);\r\n white-space: nowrap;\r\n}\r\n\r\n._f899bec7_policyStatusLabel {\r\n font-size: 12px;\r\n font-weight: 600;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-secondary);\r\n}\r\n\r\n._68ef287d_policyStatusLine {\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n._67addcbf_policyStatusWarn {\r\n font-size: 12px;\r\n line-height: 18px;\r\n color: var(--dsw-alias-state-warn-primary);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n ._572ba95a_iconButton::after,\r\n ._9cdfc0a6_infoHint::after {\r\n transition: none;\r\n }\r\n\r\n ._8e7f566e_chevron {\r\n transition: none;\r\n }\r\n}\r\n";
|
|
170
|
+
//#region \0dsh-css:/home/runner/work/dsh-fallback-router/dsh-fallback-router/src/client/FallbacksCard.module.css.mjs
|
|
171
|
+
const css$4 = "\n\n\n._c6b9cfef_root {\n min-width: 0;\n}\n\n\n._17e44069_readOnly {\n margin: 12px 0 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._dbee053b_notice {\n margin: 12px 0 0;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-state-business-primary);\n}\n\n\n._a7fc41a0_legacyNotice {\n margin: 12px 0 0;\n padding: 10px 12px;\n border-radius: 8px;\n background: var(--dsw-alias-bg-module-platform);\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-state-business-primary);\n}\n\n._23364cdb_error {\n margin: 12px 0 0;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-state-error-primary);\n}\n\n\n._8b79a4c1_noticeRow {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 12px 0 0;\n}\n\n._8b79a4c1_noticeRow ._23364cdb_error {\n flex: 1;\n min-width: 0;\n margin: 0;\n}\n\n\n._dd5a759b_fieldset {\n margin: 0;\n padding: 0;\n border: none;\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n\n._4a9f4378_sectionHeading {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n padding: 4px 0;\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._3b1ec6bf_sectionHeadingText {\n display: block;\n min-width: 0;\n}\n\n\n._243fb84d_sectionActions {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-left: auto;\n}\n\n._243fb84d_sectionActions ._9320e17f_discard,\n._243fb84d_sectionActions ._c8248e0e_save {\n padding: 3px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n\n._1a4fb8ee_sectionToggle {\n appearance: none;\n border: 0;\n background: none;\n display: flex;\n align-items: center;\n gap: 4px;\n margin: 0;\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n}\n\n._1a4fb8ee_sectionToggle:disabled {\n cursor: default;\n}\n\n._1a4fb8ee_sectionToggle:focus-visible {\n outline: 2px solid var(--dsw-alias-brand-primary);\n outline-offset: 1px;\n}\n\n\n._49e6b68d_advancedBody {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._a72f7f8d_field,\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._345d580e_checkboxRow,\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._adeed03f_numberFields {\n padding: 12px 0;\n}\n\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._a72f7f8d_field + ._a72f7f8d_field,\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._345d580e_checkboxRow + ._a72f7f8d_field,\n._dd5a759b_fieldset > ._49e6b68d_advancedBody > ._a72f7f8d_field + ._adeed03f_numberFields {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n\n._a72f7f8d_field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin: 0;\n padding: 0;\n border: none;\n min-width: 0;\n}\n\n\n._dd5a759b_fieldset > ._a72f7f8d_field,\n._dd5a759b_fieldset > ._345d580e_checkboxRow,\n._dd5a759b_fieldset > ._adeed03f_numberFields {\n padding: 12px 0;\n}\n\n._dd5a759b_fieldset > ._a72f7f8d_field + ._a72f7f8d_field,\n._dd5a759b_fieldset > ._a72f7f8d_field + ._adeed03f_numberFields,\n._dd5a759b_fieldset > ._345d580e_checkboxRow + ._a72f7f8d_field {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n\n._345d580e_checkboxRow {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n\n._345d580e_checkboxRow ._27b96bc2_checkbox {\n margin-top: 3px;\n}\n\n._56212755_fieldLabel {\n \n display: inline-flex;\n align-items: center;\n gap: 10px;\n padding: 0;\n font-size: 13px;\n line-height: 1.5;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._d7541ea2_hint {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._9e7453cd_checkLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: 14px;\n line-height: 22px;\n font-weight: 400;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._e4709a41_checkLabelTitle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 400;\n}\n\n._8234d308_checkLabelDesc {\n font-size: 12px;\n line-height: 18px;\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._27b96bc2_checkbox {\n flex: none;\n width: 16px;\n height: 16px;\n margin: 0;\n accent-color: var(--dsw-alias-brand-primary);\n cursor: pointer;\n}\n\n._27b96bc2_checkbox:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n\n._3c784feb_slotPresetName {\n font-size: 14px;\n line-height: 22px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n\n._9cdfc0a6_infoHint {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n font-size: 14px;\n line-height: 1;\n color: var(--dsw-alias-label-tertiary);\n background: var(--dsw-alias-interactive-bg-hover);\n cursor: help;\n user-select: none;\n}\n\n._9cdfc0a6_infoHint:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\n}\n\n._9cdfc0a6_infoHint::after {\n content: attr(data-tip);\n position: absolute;\n top: 50%;\n left: calc(100% + 8px);\n transform: translateY(-50%);\n z-index: 10;\n box-sizing: border-box;\n width: max-content;\n max-width: 280px;\n padding: 5px 10px;\n border-radius: 8px;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-layer-3);\n font-size: 11px;\n line-height: 17px;\n font-weight: 400;\n white-space: normal;\n text-align: left;\n pointer-events: none;\n opacity: 0;\n transition: opacity .12s;\n}\n\n._9cdfc0a6_infoHint:hover::after,\n._9cdfc0a6_infoHint:focus-visible::after {\n opacity: 1;\n}\n\n\n._74c4f11e_infoHintDisabled {\n opacity: 0.4;\n cursor: default;\n}\n\n\n._a106dba2_optionRow {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 8px;\n border-radius: 6px;\n font-size: 14px;\n line-height: 22px;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._a106dba2_optionRow:hover:has(input:not(:disabled)) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n\n._27b96bc2_checkbox,\n._a106dba2_optionRow input {\n flex: none;\n width: 16px;\n height: 16px;\n margin: 0;\n accent-color: var(--dsw-alias-brand-primary);\n cursor: pointer;\n}\n\n._27b96bc2_checkbox:focus-visible,\n._a106dba2_optionRow input:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\n}\n\n._a106dba2_optionRow input:disabled {\n cursor: default;\n}\n\n\n._a49c7ded_dayRow {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n._bdf02c23_dayCell {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._bdf02c23_dayCell:hover:has(input:not(:disabled)) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._bdf02c23_dayCell input {\n flex: none;\n width: 16px;\n height: 16px;\n margin: 0;\n accent-color: var(--dsw-alias-brand-primary);\n cursor: pointer;\n}\n\n._bdf02c23_dayCell input:disabled {\n cursor: default;\n}\n\n._bdf02c23_dayCell input:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\n}\n\n\n._b82bc091_input {\n box-sizing: border-box;\n width: 100%;\n height: 34px;\n padding: 0 12px;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n font: inherit;\n font-size: 13px;\n line-height: 1.5;\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-primary);\n}\n\n._b82bc091_input:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n}\n\n._b82bc091_input::placeholder {\n color: var(--dsw-alias-label-dimmed);\n}\n\n._b82bc091_input:disabled {\n color: var(--dsw-alias-label-tertiary);\n cursor: default;\n}\n\n\n._c9e5ffe7_inputTextarea {\n height: auto;\n min-height: 72px;\n padding: 8px 12px;\n resize: vertical;\n}\n\n\n._b5886f05_personaBriefRow {\n display: flex;\n align-items: center;\n gap: 4px;\n min-width: 0;\n}\n\n._ee45acf7_personaBrief {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n line-height: 22px;\n color: var(--dsw-alias-label-primary);\n}\n\n\n._1d900a64_personaBriefEmpty {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._5ecb2b94_personaFull {\n margin: 0;\n font-size: 14px;\n line-height: 22px;\n color: var(--dsw-alias-label-secondary);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n\n\n._90bd6054_inputInvalid,\n._90bd6054_inputInvalid:focus-visible {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n\nselect._b82bc091_input {\n max-width: 240px;\n cursor: pointer;\n}\n\n\n._261230a1_selectInput {\n appearance: none;\n padding-right: 32px;\n \n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 12px 12px;\n}\n\n\n._adeed03f_numberFields {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 12px;\n}\n\n._adeed03f_numberFields ._a72f7f8d_field {\n padding: 0;\n}\n\n._8c756cfb_list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 4px;\n}\n\n\n._bba0bbe4_editorCard {\n display: flex;\n flex-direction: column;\n gap: 14px;\n padding: 14px 16px;\n border-radius: 12px;\n background: var(--dsw-alias-bg-module-platform);\n}\n\n._87c4f7f9_cardFoot {\n display: flex;\n justify-content: flex-end;\n}\n\n._fce20e49_ruleGrid {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n._cfc66c5d_ruleCell {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n flex: 1;\n}\n\n._9d4091c5_ruleCellLabel {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n}\n\n\n._8e7f566e_chevron {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n transform: rotate(-90deg);\n transition: transform .16s;\n}\n\n._7dbaf9ce_chevronOpen {\n transform: none;\n}\n\n\n._ae6bf76d_chevronFlip {\n transform: rotate(180deg);\n}\n\n\n._e93c9e2c_collapseRow {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n._0934b8f4_collapseToggle {\n appearance: none;\n border: 0;\n background: none;\n padding: 0;\n cursor: pointer;\n color: var(--dsw-alias-label-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n min-width: 0;\n font: inherit;\n text-align: left;\n}\n\n._0934b8f4_collapseToggle:disabled {\n cursor: default;\n}\n\n._1133fbee_collapseTitle {\n \n flex: none;\n max-width: 55%;\n min-width: 0;\n font-size: 12px;\n line-height: 18px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._d82ef63d_collapseMeta {\n \n flex: 0 1 auto;\n min-width: 0;\n max-width: 40%;\n margin-left: auto;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n._b134c585_seedBadge {\n flex: none;\n max-width: 40%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n border-radius: 999px;\n padding: 1px 8px;\n font-size: 11px;\n line-height: 17px;\n font-weight: 500;\n white-space: nowrap;\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-secondary);\n}\n\n\n._0e70e355_slotTag {\n flex: none;\n display: inline-flex;\n align-items: center;\n border-radius: 999px;\n padding: 0 6px;\n font-size: 11px;\n line-height: 17px;\n font-weight: 500;\n white-space: nowrap;\n border: 1px solid;\n}\n\n._f3b7ca50_slotTagHighCost {\n color: var(--dsw-alias-state-error-primary);\n border-color: var(--dsw-alias-state-error-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent);\n}\n\n._9216af96_slotTagMultiplier {\n color: var(--dsw-alias-state-warn-primary);\n border-color: var(--dsw-alias-state-warn-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 10%, transparent);\n}\n\n._e6c0e39f_slotTagActive {\n color: var(--dsw-alias-state-success-primary);\n border-color: var(--dsw-alias-state-success-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n}\n\n\n._0849b09f_dragHandle {\n appearance: none;\n border: 0;\n background: none;\n padding: 0;\n cursor: grab;\n color: var(--dsw-alias-label-tertiary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 6px;\n flex: none;\n}\n\n._0849b09f_dragHandle:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._0849b09f_dragHandle:active {\n cursor: grabbing;\n}\n\n._0849b09f_dragHandle:disabled {\n cursor: default;\n opacity: 0.4;\n}\n\n._0849b09f_dragHandle:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\n}\n\n\n._83fb72f8_slotCardDragging {\n opacity: 0.45;\n}\n\n._5d67996b_slotCardOver {\n outline: 1px dashed var(--dsw-alias-brand-primary);\n outline-offset: 2px;\n}\n\n\n._d8f6c9e3_selectorRowDragging {\n opacity: 0.45;\n}\n\n._49b56db4_selectorRowOver {\n outline: 1px dashed var(--dsw-alias-brand-primary);\n outline-offset: 2px;\n border-radius: 6px;\n}\n\n\n._13d58efe_selectorGrip {\n flex: none;\n}\n\n._13d58efe_selectorGrip:disabled {\n display: none;\n}\n\n\n._bfe77c29_chainBlock {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n\n._428b5d1a_chainSelectors {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n\n._c190e3f0_selectorLine {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: nowrap;\n \n min-height: 32px;\n}\n\n\n._6534b816_selectorIndex {\n flex: none;\n width: 1.5em;\n text-align: right;\n font-size: 11px;\n line-height: 16px;\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n\n._334a37c3_selectorProviderCell {\n flex: 0 1 clamp(140px, 20%, 220px);\n min-width: 0;\n}\n\n._63065c63_selectorModelCell {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n\n._63065c63_selectorModelCell > select._b82bc091_input {\n max-width: 100%;\n}\n\n\n._9222de4f_selectorHint {\n display: flex;\n align-items: center;\n flex: 0 1 auto;\n min-width: 0;\n}\n\n\n._b3f9f018_selectorHintText {\n flex: 0 1 auto;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 11px;\n line-height: 16px;\n color: var(--dsw-alias-label-secondary);\n}\n\n\n._9222de4f_selectorHint > ._9cdfc0a6_infoHint {\n flex: none;\n margin-left: 4px;\n}\n\n\n._832cfce6_selectorRemove {\n flex: none;\n opacity: 0;\n transition: opacity .12s;\n}\n\n\n._832cfce6_selectorRemove:disabled {\n display: none;\n}\n\n\n._15ebf4ae_selectorRow:hover ._832cfce6_selectorRemove:not(:disabled),\n._15ebf4ae_selectorRow:focus-within ._832cfce6_selectorRemove:not(:disabled) {\n opacity: 1;\n}\n\n@media (hover: none) {\n ._832cfce6_selectorRemove:not(:disabled) {\n opacity: 0.7;\n }\n}\n\n\n._572ba95a_iconButton {\n position: relative;\n box-sizing: border-box;\n appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 0;\n border-radius: 6px;\n background: none;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._572ba95a_iconButton:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n._572ba95a_iconButton:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._572ba95a_iconButton:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\n}\n\n._572ba95a_iconButton::after {\n content: attr(data-tip);\n position: absolute;\n bottom: calc(100% + 6px);\n left: 50%;\n transform: translateX(-50%);\n padding: 3px 8px;\n border-radius: 6px;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-layer-3);\n font-size: 11px;\n line-height: 17px;\n white-space: nowrap;\n opacity: 0;\n pointer-events: none;\n transition: opacity .12s;\n}\n\n._572ba95a_iconButton:hover::after,\n._572ba95a_iconButton:focus-visible::after {\n opacity: 1;\n}\n\n\n._dce04c19_iconButtonDanger:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n}\n\n\n._60ce2a17_outlineButton {\n appearance: none;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: none;\n font: inherit;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._60ce2a17_outlineButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-label-dimmed);\n}\n\n._60ce2a17_outlineButton:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n._60ce2a17_outlineButton:focus-visible {\n outline: 2px solid var(--dsw-alias-brand-primary);\n outline-offset: 1px;\n}\n\n\n._0b13c716_addButton {\n align-self: flex-start;\n}\n\n\n._bfe77c29_chainBlock > ._0b13c716_addButton {\n box-sizing: border-box;\n align-self: flex-start;\n height: 26px;\n padding: 0 8px;\n border: 1px solid transparent;\n gap: 4px;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n}\n\n._bfe77c29_chainBlock > ._0b13c716_addButton:hover:not(:disabled) {\n border-color: transparent;\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n\n._bfe77c29_chainBlock > ._0b13c716_addButton:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--dsw-alias-border-l3);\n}\n\n\n._26e91326_slotAddRow {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 4px;\n flex-wrap: wrap;\n}\n\n\n._007c1b38_rowActions {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n\n._9320e17f_discard,\n._c8248e0e_save {\n appearance: none;\n border: 1px solid transparent;\n border-radius: var(--dsw-radius-md);\n padding: 5px 14px;\n font: inherit;\n font-size: 13px;\n line-height: 1.5;\n cursor: pointer;\n}\n\n._9320e17f_discard {\n border-color: var(--dsw-alias-border-l2);\n background: none;\n color: var(--dsw-alias-label-secondary);\n}\n\n._9320e17f_discard:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-label-dimmed);\n}\n\n._c8248e0e_save {\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-layer-3);\n}\n\n._9320e17f_discard:disabled,\n._c8248e0e_save:disabled {\n opacity: 0.4;\n cursor: default;\n}\n\n._9320e17f_discard:focus-visible,\n._c8248e0e_save:focus-visible {\n outline: 2px solid var(--dsw-alias-brand-primary);\n outline-offset: 1px;\n}\n\n\n._7d807542_statusBlock {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px 14px;\n margin-top: 12px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 12px;\n}\n\n._2d5242e9_statusTitle {\n font-size: 12px;\n line-height: 18px;\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n\n._06913287_statusLine {\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._b5c76c1f_statusLineLabel {\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n\n._0d87013f_policyStatus {\n margin: 12px 0 0;\n padding: 10px 12px;\n border-radius: 8px;\n background: var(--dsw-alias-bg-module-platform);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n\n._0ebbca28_policyStatusText {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n._c1a1a4b8_policyStatusSync {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n}\n\n\n._59029705_policyStatusLive:empty {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n._f899bec7_policyStatusLabel {\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n}\n\n._68ef287d_policyStatusLine {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-primary);\n}\n\n._67addcbf_policyStatusWarn {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._572ba95a_iconButton::after,\n ._9cdfc0a6_infoHint::after {\n transition: none;\n }\n\n ._8e7f566e_chevron {\n transition: none;\n }\n}\n";
|
|
172
172
|
const tagId$4 = "dsh-fallback-router/FallbacksCard.module.css";
|
|
173
173
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
174
174
|
const tag = document.createElement("style");
|
|
@@ -503,7 +503,7 @@ window.__ModuleLoader__.load({
|
|
|
503
503
|
return out;
|
|
504
504
|
}
|
|
505
505
|
//#endregion
|
|
506
|
-
//#region \0dsh-css
|
|
506
|
+
//#region \0dsh-css:/home/runner/work/dsh-fallback-router/dsh-fallback-router/src/client/ModelsPanel.module.css.mjs
|
|
507
507
|
const css$3 = "\n\n._c1b3c26c_panel {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-width: 0;\n}\n\n._666e6b5d_cards {\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin-top: 4px;\n min-width: 0;\n}\n\n._070bb53c_card {\n display: flex;\n flex-direction: column;\n gap: 14px;\n min-width: 0;\n padding: 14px 16px;\n border-radius: 12px;\n background: var(--dsw-alias-bg-module-platform);\n}\n\n._d83cbbbe_cardHead {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n._b3a9407a_cardTitle {\n flex: 1 1 auto;\n min-width: 0;\n font-size: 12px;\n line-height: 18px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n._eb328c21_group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n}\n\n._1634974d_groupTitle {\n font-size: 13px;\n line-height: 20px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n\n\n._10eb2316_grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 10px;\n min-width: 0;\n}\n\n._41343a46_cell {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n._87af396c_cellLabel {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n._a2c470a2_row {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-end;\n gap: 10px;\n min-width: 0;\n}\n\n._e9775e88_rowMid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n\n._ee1b76c6_rowField {\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 0 0 auto;\n min-width: 0;\n}\n\n._0fef9eb1_grow {\n flex: 1 1 180px;\n min-width: 150px;\n}\n\n._21606582_w90 { width: 90px; }\n\n._39a847b7_w110 { width: 110px; }\n\n._2da3b7a5_w130 { width: 130px; }\n\n._23925ec6_w180 { width: 180px; }\n\n\n._1fef9bb0_chipRow {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: 0 0 auto;\n height: 34px;\n font-size: 13px;\n line-height: 20px;\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n cursor: pointer;\n}\n\n\n\n._c529eca5_chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px 16px;\n min-width: 0;\n}\n\n._e0ca1b94_chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n line-height: 22px;\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n cursor: pointer;\n}\n\n._e0ca1b94_chip input,\n._1fef9bb0_chipRow input,\n._03deab5c_day input {\n flex: 0 0 auto;\n margin: 0;\n}\n\n\n\n._46877afd_days {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n}\n\n._03deab5c_day {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n cursor: pointer;\n}\n\n._b3aafe93_arrow {\n flex: 0 0 auto;\n font-size: 12px;\n line-height: 34px;\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n\n._5cd75b59_iconBtn {\n appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 0;\n border-radius: 6px;\n background: none;\n font: inherit;\n font-size: 12px;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._5cd75b59_iconBtn:hover:not(:disabled) {\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-primary);\n}\n\n._5cd75b59_iconBtn:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n._3a75da7f_addBtn {\n appearance: none;\n align-self: flex-start;\n padding: 4px 12px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: none;\n font: inherit;\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._3a75da7f_addBtn:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-border-l3);\n}\n\n._3a75da7f_addBtn:disabled {\n opacity: 0.5;\n cursor: default;\n}\n";
|
|
508
508
|
const tagId$3 = "dsh-fallback-router/ModelsPanel.module.css";
|
|
509
509
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
@@ -2160,8 +2160,8 @@ window.__ModuleLoader__.load({
|
|
|
2160
2160
|
};
|
|
2161
2161
|
[...defaultFallbacksConfig.triggerCodes];
|
|
2162
2162
|
//#endregion
|
|
2163
|
-
//#region \0dsh-css
|
|
2164
|
-
const css$2 = "\
|
|
2163
|
+
//#region \0dsh-css:/home/runner/work/dsh-fallback-router/dsh-fallback-router/src/client/GeneralFallbacksRow.module.css.mjs
|
|
2164
|
+
const css$2 = "\n\n._ca8f2965_row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 0;\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n}\n\n._c8d611be_rowText {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding-right: 48px;\n}\n\n._6c90d81f_title {\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n color: var(--dsw-alias-label-primary);\n}\n\n\n._71e34951_summary {\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n._dbfcb0f6_badge {\n flex: none;\n padding: 2px 10px;\n border-radius: 9px;\n font-size: 12px;\n line-height: 18px;\n background: var(--dsw-alias-bg-module-platform);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._e0b4af03_badgeEnabled {\n color: var(--dsw-alias-state-success-primary);\n}\n";
|
|
2165
2165
|
const tagId$2 = "dsh-fallback-router/GeneralFallbacksRow.module.css";
|
|
2166
2166
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
2167
2167
|
const tag = document.createElement("style");
|
|
@@ -2287,8 +2287,8 @@ window.__ModuleLoader__.load({
|
|
|
2287
2287
|
return typeof from?.provider === "string" && typeof from?.model === "string" && typeof to?.provider === "string" && typeof to?.model === "string";
|
|
2288
2288
|
}
|
|
2289
2289
|
//#endregion
|
|
2290
|
-
//#region \0dsh-css
|
|
2291
|
-
const css$1 = "\
|
|
2290
|
+
//#region \0dsh-css:/home/runner/work/dsh-fallback-router/dsh-fallback-router/src/client/ConversationFallbackSwitch.module.css.mjs
|
|
2291
|
+
const css$1 = "\n\n._ccce8bff_switchRow {\n display: flex;\n align-items: center;\n padding: 2px 0;\n font-size: 14px;\n line-height: 24px;\n}\n\n\n._b5489dcd_switchTitle {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._690b095b_switchSep {\n flex: none;\n width: 2px;\n height: 2px;\n margin: 0 8px;\n border-radius: 1px;\n background: var(--dsw-alias-label-caption);\n}\n\n\n._8749463f_switchSummary {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._11cf2c8c_roleBadge {\n flex: none;\n max-width: 96px;\n padding: 0 8px;\n border-radius: 999px;\n font-size: 12px;\n line-height: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n background: var(--dsw-alias-bg-module-platform);\n color: var(--dsw-alias-label-primary);\n}\n\n\n._39c00738_roleModelMap {\n flex: 0 1 auto;\n min-width: 0;\n margin-left: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-secondary);\n}\n";
|
|
2292
2292
|
const tagId$1 = "dsh-fallback-router/ConversationFallbackSwitch.module.css";
|
|
2293
2293
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
2294
2294
|
const tag = document.createElement("style");
|
|
@@ -2460,8 +2460,8 @@ window.__ModuleLoader__.load({
|
|
|
2460
2460
|
return typeof value === "string" && value.trim() !== "" ? value : void 0;
|
|
2461
2461
|
}
|
|
2462
2462
|
//#endregion
|
|
2463
|
-
//#region \0dsh-css
|
|
2464
|
-
const css = "\
|
|
2463
|
+
//#region \0dsh-css:/home/runner/work/dsh-fallback-router/dsh-fallback-router/src/client/SubagentRoleBadge.module.css.mjs
|
|
2464
|
+
const css = "\n\n._041c72bb_badge {\n display: inline-block;\n max-width: 240px;\n padding: 0 8px;\n border-radius: 999px;\n font-size: 12px;\n line-height: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: middle;\n background: var(--dsw-alias-bg-module-platform);\n color: var(--dsw-alias-label-primary);\n}\n\n\n._a23785cd_route {\n color: var(--dsw-alias-label-tertiary);\n}\n";
|
|
2465
2465
|
const tagId = "dsh-fallback-router/SubagentRoleBadge.module.css";
|
|
2466
2466
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
2467
2467
|
const tag = document.createElement("style");
|
package/icon.svg
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient id="dsh-llm-fallbacks-icon-a" x1="14.9894" y1="9.0697" x2="14.9894" y2="21.3063" gradientUnits="userSpaceOnUse">
|
|
4
|
-
<stop stop-color="#69B9FF"/>
|
|
5
|
-
<stop offset="1" stop-color="#324DE2"/>
|
|
6
|
-
</linearGradient>
|
|
7
|
-
<linearGradient id="dsh-llm-fallbacks-icon-b" x1="21.1075" y1="15.1877" x2="21.1075" y2="27.4243" gradientUnits="userSpaceOnUse">
|
|
8
|
-
<stop stop-color="#45E7A4"/>
|
|
9
|
-
<stop offset="1" stop-color="#05909D"/>
|
|
10
|
-
</linearGradient>
|
|
11
|
-
</defs>
|
|
12
|
-
<rect x="8.87109" y="9.0697" width="12.2365" height="12.2365" rx="2" fill="url(#dsh-llm-fallbacks-icon-a)" fill-opacity="0.8"/>
|
|
13
|
-
<rect x="14.9893" y="15.1877" width="12.2365" height="12.2365" rx="2" fill="url(#dsh-llm-fallbacks-icon-b)" fill-opacity="0.8"/>
|
|
14
|
-
<path d="M13.3 13.3L19.4 19.4" stroke="#F9FAFB" stroke-opacity="0.95" stroke-width="1.7" stroke-linecap="round"/>
|
|
15
|
-
<path d="M19.4 15.9V19.4H15.9" stroke="#F9FAFB" stroke-opacity="0.95" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
|
|
16
|
-
</svg>
|
|
1
|
+
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="dsh-llm-fallbacks-icon-a" x1="14.9894" y1="9.0697" x2="14.9894" y2="21.3063" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop stop-color="#69B9FF"/>
|
|
5
|
+
<stop offset="1" stop-color="#324DE2"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="dsh-llm-fallbacks-icon-b" x1="21.1075" y1="15.1877" x2="21.1075" y2="27.4243" gradientUnits="userSpaceOnUse">
|
|
8
|
+
<stop stop-color="#45E7A4"/>
|
|
9
|
+
<stop offset="1" stop-color="#05909D"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
<rect x="8.87109" y="9.0697" width="12.2365" height="12.2365" rx="2" fill="url(#dsh-llm-fallbacks-icon-a)" fill-opacity="0.8"/>
|
|
13
|
+
<rect x="14.9893" y="15.1877" width="12.2365" height="12.2365" rx="2" fill="url(#dsh-llm-fallbacks-icon-b)" fill-opacity="0.8"/>
|
|
14
|
+
<path d="M13.3 13.3L19.4 19.4" stroke="#F9FAFB" stroke-opacity="0.95" stroke-width="1.7" stroke-linecap="round"/>
|
|
15
|
+
<path d="M19.4 15.9V19.4H15.9" stroke="#F9FAFB" stroke-opacity="0.95" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
|
|
16
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dsh-fallback-router",
|
|
3
|
-
"description": "Model-centric routing for DeepSeek Harness: per-model fallback (official or loop), time windows, per-provider retry and failure rules",
|
|
4
|
-
"keywords": [
|
|
5
|
-
"dsh",
|
|
6
|
-
"dsh-plugin"
|
|
7
|
-
],
|
|
8
|
-
"version": "0.1.
|
|
9
|
-
"type": "module",
|
|
10
|
-
"main": "./dist/index.js",
|
|
11
|
-
"types": "./dist/index.d.ts",
|
|
12
|
-
"icon": "./icon.svg",
|
|
13
|
-
"exports": {
|
|
14
|
-
".": {
|
|
15
|
-
"types": "./dist/index.d.ts",
|
|
16
|
-
"default": "./dist/index.js"
|
|
17
|
-
},
|
|
18
|
-
"./client": {
|
|
19
|
-
"types": "./dist/client/index.d.ts",
|
|
20
|
-
"default": "./dist/client/index.js"
|
|
21
|
-
},
|
|
22
|
-
"./locale/*.json": "./locale/*.json",
|
|
23
|
-
"./bundle/cordis.patch.yml": "./bundle/cordis.patch.yml",
|
|
24
|
-
"./package.json": "./package.json"
|
|
25
|
-
},
|
|
26
|
-
"files": [
|
|
27
|
-
"dist",
|
|
28
|
-
"bundle",
|
|
29
|
-
"locale",
|
|
30
|
-
"icon.svg"
|
|
31
|
-
],
|
|
32
|
-
"dsh": {
|
|
33
|
-
"bundle": {
|
|
34
|
-
"patch": "./bundle/cordis.patch.yml"
|
|
35
|
-
},
|
|
36
|
-
"client": {
|
|
37
|
-
"inject": [
|
|
38
|
-
"@deepseek-ai/dsh-client-ui-plugin-manager",
|
|
39
|
-
"@deepseek-ai/dsh-client-ui-settings",
|
|
40
|
-
"@deepseek-ai/dsh-client-ui-conversation",
|
|
41
|
-
"@deepseek-ai/dsh-client-locale",
|
|
42
|
-
"@deepseek-ai/dsh-client-connection",
|
|
43
|
-
"@deepseek-ai/dsh-api-remotes"
|
|
44
|
-
],
|
|
45
|
-
"platform": "web"
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
"scripts": {
|
|
49
|
-
"build": "tsc -p tsconfig.build.json && tsdown && pnpm run build-client && node scripts/strip-bundle-comments.mjs && tsc && node scripts/verify-dist.mjs",
|
|
50
|
-
"build-client": "tsx scripts/build-client.ts",
|
|
51
|
-
"release:prepare": "tsx scripts/prepare-release.ts",
|
|
52
|
-
"release:validate": "tsx scripts/validate-release-version.ts",
|
|
53
|
-
"repair:session-logs": "tsx scripts/repair-session-logs.ts",
|
|
54
|
-
"test": "vitest run",
|
|
55
|
-
"typecheck": "tsc -p tsconfig.build.json --noEmit && tsc --noEmit && pnpm run typecheck:scripts",
|
|
56
|
-
"typecheck:scripts": "tsc -p tsconfig.scripts.json",
|
|
57
|
-
"prepare": "pnpm run build"
|
|
58
|
-
},
|
|
59
|
-
"engines": {
|
|
60
|
-
"node": ">=22"
|
|
61
|
-
},
|
|
62
|
-
"dependencies": {
|
|
63
|
-
"use-sync-external-store": "^1.6.0"
|
|
64
|
-
},
|
|
65
|
-
"peerDependencies": {
|
|
66
|
-
"@deepseek-ai/cordis": "^4.0.5",
|
|
67
|
-
"@deepseek-ai/dsh-agent": "^0.2.1-rc.5",
|
|
68
|
-
"@deepseek-ai/dsh-api-gateway": "^0.2.1-rc.5",
|
|
69
|
-
"@deepseek-ai/dsh-api-remotes": "^0.2.1-rc.5",
|
|
70
|
-
"@deepseek-ai/dsh-api-session-controller": "^0.2.1-rc.5",
|
|
71
|
-
"@deepseek-ai/dsh-client-connection": "^0.2.1-rc.5",
|
|
72
|
-
"@deepseek-ai/dsh-client-locale": "^0.2.1-rc.5",
|
|
73
|
-
"@deepseek-ai/dsh-client-store": "^0.2.1-rc.5",
|
|
74
|
-
"@deepseek-ai/dsh-client-ui-chat": "^0.2.1-rc.5",
|
|
75
|
-
"@deepseek-ai/dsh-client-ui-conversation": "^0.2.1-rc.5",
|
|
76
|
-
"@deepseek-ai/dsh-client-ui-plugin-manager": "^0.2.1-rc.5",
|
|
77
|
-
"@deepseek-ai/dsh-client-ui-renderer": "^0.2.1-rc.5",
|
|
78
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.2.1-rc.5",
|
|
79
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.2.1-rc.5",
|
|
80
|
-
"@deepseek-ai/dsh-commands": "^0.2.1-rc.5",
|
|
81
|
-
"@deepseek-ai/dsh-llm": "^0.2.1-rc.5",
|
|
82
|
-
"@deepseek-ai/dsh-llm-retry": "^0.2.1-rc.5",
|
|
83
|
-
"@deepseek-ai/dsh-session": "^0.2.1-rc.5",
|
|
84
|
-
"@deepseek-ai/dsh-session-projection": "^0.2.1-rc.5",
|
|
85
|
-
"@deepseek-ai/dsh-settings": "^0.2.1-rc.5",
|
|
86
|
-
"@deepseek-ai/dsh-system-prompt": "^0.2.1-rc.5",
|
|
87
|
-
"@deepseek-ai/dsh-tool-subagent": "^0.2.1-rc.5",
|
|
88
|
-
"@deepseek-ai/dsh-typert-protocol": "^0.2.1-rc.5",
|
|
89
|
-
"@deepseek-ai/dsh-typert-registry": "^0.2.1-rc.5",
|
|
90
|
-
"@deepseek-ai/schemastery": "^3.18.5",
|
|
91
|
-
"react": "^18.2.0"
|
|
92
|
-
},
|
|
93
|
-
"devDependencies": {
|
|
94
|
-
"@shikijs/langs": "^4.4.3",
|
|
95
|
-
"@testing-library/dom": "^10.4.1",
|
|
96
|
-
"@testing-library/react": "^16.3.2",
|
|
97
|
-
"@types/mdast": "^4.0.4",
|
|
98
|
-
"@types/node": "^22.20.0",
|
|
99
|
-
"@types/react": "~18.3.31",
|
|
100
|
-
"@types/react-dom": "~18.3.7",
|
|
101
|
-
"@types/use-sync-external-store": "^1.5.0",
|
|
102
|
-
"anser": "^2.3.5",
|
|
103
|
-
"clsx": "^2.1.1",
|
|
104
|
-
"immer": "^10.2.0",
|
|
105
|
-
"jsdom": "29.1.1",
|
|
106
|
-
"katex": "^0.18.2",
|
|
107
|
-
"mdast-util-from-markdown": "^2.0.3",
|
|
108
|
-
"mdast-util-gfm": "^3.1.0",
|
|
109
|
-
"mdast-util-math": "^3.0.0",
|
|
110
|
-
"micromark-core-commonmark": "^2.0.3",
|
|
111
|
-
"micromark-extension-gfm": "^3.0.0",
|
|
112
|
-
"micromark-extension-math": "^3.1.0",
|
|
113
|
-
"micromark-factory-space": "^2.0.1",
|
|
114
|
-
"micromark-util-character": "^2.1.1",
|
|
115
|
-
"micromark-util-classify-character": "^2.0.1",
|
|
116
|
-
"micromark-util-sanitize-uri": "^2.0.1",
|
|
117
|
-
"micromark-util-symbol": "^2.0.1",
|
|
118
|
-
"micromark-util-types": "^2.0.2",
|
|
119
|
-
"react": "^18.3.1",
|
|
120
|
-
"react-dom": "^18.3.1",
|
|
121
|
-
"shiki": "^4.4.3",
|
|
122
|
-
"tsdown": "^0.22.2",
|
|
123
|
-
"tsx": "^4.22.4",
|
|
124
|
-
"typescript": "^5.9.3",
|
|
125
|
-
"vitest": "^4.1.12",
|
|
126
|
-
"zustand": "~4.4.7"
|
|
127
|
-
},
|
|
128
|
-
"repository": {
|
|
129
|
-
"type": "git",
|
|
130
|
-
"url": "git+https://github.com/hongxin-y/dsh-fallback-router.git"
|
|
131
|
-
},
|
|
132
|
-
"homepage": "https://github.com/hongxin-y/dsh-fallback-router#readme",
|
|
133
|
-
"bugs": {
|
|
134
|
-
"url": "https://github.com/hongxin-y/dsh-fallback-router/issues"
|
|
135
|
-
},
|
|
136
|
-
"author": "hongxin-y",
|
|
137
|
-
"license": "MIT"
|
|
138
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-fallback-router",
|
|
3
|
+
"description": "Model-centric routing for DeepSeek Harness: per-model fallback (official or loop), time windows, per-provider retry and failure rules",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"dsh",
|
|
6
|
+
"dsh-plugin"
|
|
7
|
+
],
|
|
8
|
+
"version": "0.1.1-alpha.1",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"icon": "./icon.svg",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./client": {
|
|
19
|
+
"types": "./dist/client/index.d.ts",
|
|
20
|
+
"default": "./dist/client/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./locale/*.json": "./locale/*.json",
|
|
23
|
+
"./bundle/cordis.patch.yml": "./bundle/cordis.patch.yml",
|
|
24
|
+
"./package.json": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"bundle",
|
|
29
|
+
"locale",
|
|
30
|
+
"icon.svg"
|
|
31
|
+
],
|
|
32
|
+
"dsh": {
|
|
33
|
+
"bundle": {
|
|
34
|
+
"patch": "./bundle/cordis.patch.yml"
|
|
35
|
+
},
|
|
36
|
+
"client": {
|
|
37
|
+
"inject": [
|
|
38
|
+
"@deepseek-ai/dsh-client-ui-plugin-manager",
|
|
39
|
+
"@deepseek-ai/dsh-client-ui-settings",
|
|
40
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
41
|
+
"@deepseek-ai/dsh-client-locale",
|
|
42
|
+
"@deepseek-ai/dsh-client-connection",
|
|
43
|
+
"@deepseek-ai/dsh-api-remotes"
|
|
44
|
+
],
|
|
45
|
+
"platform": "web"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"scripts": {
|
|
49
|
+
"build": "tsc -p tsconfig.build.json && tsdown && pnpm run build-client && node scripts/strip-bundle-comments.mjs && tsc && node scripts/verify-dist.mjs",
|
|
50
|
+
"build-client": "tsx scripts/build-client.ts",
|
|
51
|
+
"release:prepare": "tsx scripts/prepare-release.ts",
|
|
52
|
+
"release:validate": "tsx scripts/validate-release-version.ts",
|
|
53
|
+
"repair:session-logs": "tsx scripts/repair-session-logs.ts",
|
|
54
|
+
"test": "vitest run",
|
|
55
|
+
"typecheck": "tsc -p tsconfig.build.json --noEmit && tsc --noEmit && pnpm run typecheck:scripts",
|
|
56
|
+
"typecheck:scripts": "tsc -p tsconfig.scripts.json",
|
|
57
|
+
"prepare": "pnpm run build"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=22"
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"use-sync-external-store": "^1.6.0"
|
|
64
|
+
},
|
|
65
|
+
"peerDependencies": {
|
|
66
|
+
"@deepseek-ai/cordis": "^4.0.5",
|
|
67
|
+
"@deepseek-ai/dsh-agent": "^0.2.1-rc.5",
|
|
68
|
+
"@deepseek-ai/dsh-api-gateway": "^0.2.1-rc.5",
|
|
69
|
+
"@deepseek-ai/dsh-api-remotes": "^0.2.1-rc.5",
|
|
70
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.2.1-rc.5",
|
|
71
|
+
"@deepseek-ai/dsh-client-connection": "^0.2.1-rc.5",
|
|
72
|
+
"@deepseek-ai/dsh-client-locale": "^0.2.1-rc.5",
|
|
73
|
+
"@deepseek-ai/dsh-client-store": "^0.2.1-rc.5",
|
|
74
|
+
"@deepseek-ai/dsh-client-ui-chat": "^0.2.1-rc.5",
|
|
75
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.2.1-rc.5",
|
|
76
|
+
"@deepseek-ai/dsh-client-ui-plugin-manager": "^0.2.1-rc.5",
|
|
77
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.2.1-rc.5",
|
|
78
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.2.1-rc.5",
|
|
79
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.2.1-rc.5",
|
|
80
|
+
"@deepseek-ai/dsh-commands": "^0.2.1-rc.5",
|
|
81
|
+
"@deepseek-ai/dsh-llm": "^0.2.1-rc.5",
|
|
82
|
+
"@deepseek-ai/dsh-llm-retry": "^0.2.1-rc.5",
|
|
83
|
+
"@deepseek-ai/dsh-session": "^0.2.1-rc.5",
|
|
84
|
+
"@deepseek-ai/dsh-session-projection": "^0.2.1-rc.5",
|
|
85
|
+
"@deepseek-ai/dsh-settings": "^0.2.1-rc.5",
|
|
86
|
+
"@deepseek-ai/dsh-system-prompt": "^0.2.1-rc.5",
|
|
87
|
+
"@deepseek-ai/dsh-tool-subagent": "^0.2.1-rc.5",
|
|
88
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.2.1-rc.5",
|
|
89
|
+
"@deepseek-ai/dsh-typert-registry": "^0.2.1-rc.5",
|
|
90
|
+
"@deepseek-ai/schemastery": "^3.18.5",
|
|
91
|
+
"react": "^18.2.0"
|
|
92
|
+
},
|
|
93
|
+
"devDependencies": {
|
|
94
|
+
"@shikijs/langs": "^4.4.3",
|
|
95
|
+
"@testing-library/dom": "^10.4.1",
|
|
96
|
+
"@testing-library/react": "^16.3.2",
|
|
97
|
+
"@types/mdast": "^4.0.4",
|
|
98
|
+
"@types/node": "^22.20.0",
|
|
99
|
+
"@types/react": "~18.3.31",
|
|
100
|
+
"@types/react-dom": "~18.3.7",
|
|
101
|
+
"@types/use-sync-external-store": "^1.5.0",
|
|
102
|
+
"anser": "^2.3.5",
|
|
103
|
+
"clsx": "^2.1.1",
|
|
104
|
+
"immer": "^10.2.0",
|
|
105
|
+
"jsdom": "29.1.1",
|
|
106
|
+
"katex": "^0.18.2",
|
|
107
|
+
"mdast-util-from-markdown": "^2.0.3",
|
|
108
|
+
"mdast-util-gfm": "^3.1.0",
|
|
109
|
+
"mdast-util-math": "^3.0.0",
|
|
110
|
+
"micromark-core-commonmark": "^2.0.3",
|
|
111
|
+
"micromark-extension-gfm": "^3.0.0",
|
|
112
|
+
"micromark-extension-math": "^3.1.0",
|
|
113
|
+
"micromark-factory-space": "^2.0.1",
|
|
114
|
+
"micromark-util-character": "^2.1.1",
|
|
115
|
+
"micromark-util-classify-character": "^2.0.1",
|
|
116
|
+
"micromark-util-sanitize-uri": "^2.0.1",
|
|
117
|
+
"micromark-util-symbol": "^2.0.1",
|
|
118
|
+
"micromark-util-types": "^2.0.2",
|
|
119
|
+
"react": "^18.3.1",
|
|
120
|
+
"react-dom": "^18.3.1",
|
|
121
|
+
"shiki": "^4.4.3",
|
|
122
|
+
"tsdown": "^0.22.2",
|
|
123
|
+
"tsx": "^4.22.4",
|
|
124
|
+
"typescript": "^5.9.3",
|
|
125
|
+
"vitest": "^4.1.12",
|
|
126
|
+
"zustand": "~4.4.7"
|
|
127
|
+
},
|
|
128
|
+
"repository": {
|
|
129
|
+
"type": "git",
|
|
130
|
+
"url": "git+https://github.com/hongxin-y/dsh-fallback-router.git"
|
|
131
|
+
},
|
|
132
|
+
"homepage": "https://github.com/hongxin-y/dsh-fallback-router#readme",
|
|
133
|
+
"bugs": {
|
|
134
|
+
"url": "https://github.com/hongxin-y/dsh-fallback-router/issues"
|
|
135
|
+
},
|
|
136
|
+
"author": "hongxin-y",
|
|
137
|
+
"license": "MIT"
|
|
138
|
+
}
|