dsh-model-extension 1.2.3-alpha.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -9
- package/lib/client.js +77 -22
- package/lib/client.js.map +1 -1
- package/lib/index.js +17 -47
- package/lib/index.js.map +1 -1
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# dsh-model-extension
|
|
2
2
|
> 基于 deepseek-harness 的模型扩展插件
|
|
3
3
|
|
|
4
|
-
[](./LICENSE) [](https://www.npmjs.com/package/dsh-model-extension) [](./LICENSE) [](https://www.npmjs.com/package/dsh-model-extension) [](https://github.com/deepseek-ai/deepseek-harness) [](#安装)
|
|
5
5
|
|
|
6
6
|
| 供应商 | 模型 |
|
|
7
7
|
| --- | --- |
|
|
@@ -19,22 +19,29 @@
|
|
|
19
19
|
- **兼容性**(`compat`):`supportsReasoningEffort` 开关与 `thinkingFormat` 线制格式。
|
|
20
20
|
- 支持通过 `models.json` 元数据自动预填。可通过插件下载或自行下载并放到 `$DSH_HOME/models.json` 供插件使用。
|
|
21
21
|
- **仅支持`https://models.dev/models.json`数据格式**。
|
|
22
|
+
- 支持 **DeepSeek 账号**路由(`deepseek-account`):置顶显示,无可用模型时整行隐藏;编辑卡片只含模型目录(账号不使用 API 密钥与地址)。
|
|
22
23
|
- 所有保存走 DSH 原生 `settings.mutate`,落盘 `$DSH_HOME/settings.yaml`。
|
|
23
24
|
|
|
24
25
|
## 安装
|
|
26
|
+
> Desktop 与 CLI 共享同一 `$DSH_HOME` 下的会话、设置、凭证与工作区,但**插件激活与 lockfile 彼此独立**——同一插件需要在两侧分别安装。
|
|
27
|
+
|
|
28
|
+
### Web / CLI(`web` profile)
|
|
25
29
|
|
|
26
30
|
```bash
|
|
31
|
+
# github
|
|
27
32
|
dsh plugin --profile web add github:lovezi0/dsh-model-extension
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
仓库自带构建产物 `lib/`,安装即用、无需本地构建。
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
```bash
|
|
34
|
+
# npm
|
|
35
35
|
dsh plugin --profile web add dsh-model-extension
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
### Desktop(Electron 应用)
|
|
39
|
+
只能在 Desktop 应用内的**插件页**安装,安装源填以下任意一种:
|
|
40
|
+
|
|
41
|
+
- `github:lovezi0/dsh-model-extension`(git 源)
|
|
42
|
+
- `dsh-model-extension`(npm 源)
|
|
43
|
+
- 本机某一**绝对路径**(开发自测)
|
|
44
|
+
|
|
38
45
|
## 从源码构建
|
|
39
46
|
|
|
40
47
|
构建自包含——官方逻辑模块已 vendor 至 `src/client/vendor/`(`store` / `operations` / `schema-operations`,见文件头来源标注),无需 DeepSeek Harness 宿主源码:
|
|
@@ -44,11 +51,15 @@ npm install
|
|
|
44
51
|
npm run build
|
|
45
52
|
```
|
|
46
53
|
|
|
47
|
-
运行时 `dsh.adapter` 锚点仅作软校验:宿主版本与锚点不一致时记录告警并照常注册——宿主自身的 settings schema 校验与 revision fence 保证不兼容的写入会被拒绝而非损坏数据。
|
|
48
|
-
|
|
49
54
|
## 版本历史
|
|
50
55
|
|
|
56
|
+
- **1.3.0**
|
|
57
|
+
- 💪适配 deepseek harness 0.1.7-rc.2
|
|
58
|
+
- 💪适配 deepseek harness 官方 Desktop
|
|
59
|
+
- 🐛修复 deepseek harness desktop 快速装入下拉框透明的问题
|
|
51
60
|
- **1.2.3**
|
|
61
|
+
- 🐛移除已作废的 dsh.adapter 逻辑
|
|
62
|
+
- npm publish
|
|
52
63
|
- **1.2.3-alpha.2**
|
|
53
64
|
- 💪适配deepseek harness 0.1.7-alpha.1
|
|
54
65
|
- **1.2.3-alpha.1**
|
package/lib/client.js
CHANGED
|
@@ -3,7 +3,7 @@ window.__ModuleLoader__.load({
|
|
|
3
3
|
factory: (require) => {
|
|
4
4
|
var module = { exports: {} };
|
|
5
5
|
var exports = module.exports;
|
|
6
|
-
var __extCss = ".J84-9a_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.J84-9a_titleRow{align-items:center;gap:10px;display:flex}.J84-9a_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.J84-9a_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.J84-9a_savedNotice{color:var(--dsw-alias-state-success-primary);margin:0;font-size:12px;line-height:18px}.J84-9a_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.J84-9a_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.J84-9a_rowCard{border:.5px solid var(--dsw-alias-border-l4);border-radius:16px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.J84-9a_rowHead{align-items:center;gap:10px;display:flex}.J84-9a_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.J84-9a_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.J84-9a_rowTag{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:1px 6px;font-size:11px;line-height:16px}.J84-9a_credentialDot{box-sizing:border-box;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.J84-9a_credentialDotConfigured{background:var(--dsw-alias-state-success-primary)}.J84-9a_credentialDotMissing{background:var(--dsw-alias-state-error-primary)}.J84-9a_rowActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.J84-9a_primaryButton,.J84-9a_secondaryButton,.J84-9a_addButton{box-sizing:border-box;height:36px;font:inherit;cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;gap:4px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.J84-9a_primaryButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.J84-9a_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.J84-9a_secondaryButton,.J84-9a_addButton{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}.J84-9a_secondaryButton:hover:not(:disabled),.J84-9a_addButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.J84-9a_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.J84-9a_dangerButton{box-sizing:border-box;height:36px;color:var(--dsw-alias-state-error-primary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.J84-9a_dangerButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.J84-9a_rowActions .J84-9a_secondaryButton,.J84-9a_rowActions .J84-9a_dangerButton{border-radius:14px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.J84-9a_primaryButton:disabled,.J84-9a_secondaryButton:disabled,.J84-9a_dangerButton:disabled,.J84-9a_addButton:disabled,.J84-9a_linkButton:disabled,.J84-9a_addModelButton:disabled{opacity:.4;cursor:default}.J84-9a_primaryButton:focus-visible,.J84-9a_secondaryButton:focus-visible,.J84-9a_dangerButton:focus-visible,.J84-9a_addButton:focus-visible,.J84-9a_linkButton:focus-visible,.J84-9a_addModelButton:focus-visible,.J84-9a_iconButton:focus-visible,.J84-9a_customizedSummary:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3);outline:none}.J84-9a_editor{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;display:flex}.J84-9a_field{flex-direction:column;gap:6px;display:flex}.J84-9a_fieldLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.J84-9a_linkButton{box-sizing:border-box;height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.J84-9a_linkButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.J84-9a_advancedHint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.J84-9a_editorActions{justify-content:flex-end;gap:8px;display:flex}.J84-9a_addBlock{flex-direction:column;gap:12px;display:flex}.J84-9a_addActions{flex-wrap:wrap;gap:10px;display:flex}.J84-9a_addButton{border:1px dashed var(--dsw-alias-border-l3);border-radius:16px;flex:1 1 0;gap:6px;min-width:180px;height:44px}.J84-9a_addCard{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;list-style:none;display:flex}.J84-9a_addCard .J84-9a_editor,.J84-9a_setupCard .J84-9a_editor{background:0 0;padding:0}.J84-9a_tabs{flex-direction:column;gap:12px;display:flex}.J84-9a_tabBar{border-bottom:.5px solid var(--dsw-alias-border-l2);gap:4px;display:flex}.J84-9a_tabButton{appearance:none;font:inherit;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:6px 12px 8px;font-size:13px;line-height:20px;position:relative}.J84-9a_tabButton:hover{color:var(--dsw-alias-label-primary)}.J84-9a_tabButton:disabled{opacity:.4;cursor:default}.J84-9a_tabButtonActive{color:var(--dsw-alias-label-primary);font-weight:500}.J84-9a_tabButtonActive:after{content:\"\";background:var(--dsw-alias-brand-primary);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:10px;right:10px}.J84-9a_tabPanel{flex-direction:column;gap:12px;display:flex}.J84-9a_modelCatalog{flex-direction:column;gap:10px;display:flex}.J84-9a_modelCatalogHeading{flex-direction:column;gap:2px;display:flex}.J84-9a_modelCatalogTitle{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.J84-9a_modelCatalogMeta,.J84-9a_modelEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.J84-9a_modelList{flex-direction:column;gap:8px;display:flex}.J84-9a_modelListHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.J84-9a_modelEntry{border:.5px solid var(--dsw-alias-border-l4);border-radius:10px;padding:6px}.J84-9a_modelRow{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto auto;align-items:center;gap:6px;display:grid}.J84-9a_iconButton{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.J84-9a_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.J84-9a_iconButton:disabled{cursor:default;opacity:.4}.J84-9a_iconButtonDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.J84-9a_modelAdvanced{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;padding:8px 4px 2px;display:grid}.J84-9a_modelField{flex-direction:column;gap:4px;display:flex}.J84-9a_modelFieldLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.J84-9a_modelEmpty{border:1px dashed var(--dsw-alias-border-l3);text-align:center;border-radius:8px;padding:12px}.J84-9a_addModelButton{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);height:28px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;background:0 0;border-radius:14px;align-self:flex-start;align-items:center;gap:4px;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.J84-9a_addModelButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.J84-9a_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);width:100%;height:32px;font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 10px;font-size:14px;line-height:22px}select.J84-9a_input{cursor:pointer;max-width:240px}.J84-9a_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.J84-9a_input::placeholder{color:var(--dsw-alias-label-dimmed)}.J84-9a_input:disabled{opacity:.6;cursor:default}.J84-9a_selectInput{appearance:none;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\");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:32px}.J84-9a_deleteDialog{width:min(480px,100%)}.J84-9a_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.J84-9a_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.J84-9a_fetchDialog{max-width:520px}.J84-9a_candidateToolbar{align-items:center;gap:8px;margin-bottom:6px;display:flex}.J84-9a_candidateSearch{flex:240px;min-width:0}.J84-9a_candidateList{flex-direction:column;gap:2px;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.J84-9a_candidate{border-radius:6px}.J84-9a_candidateLabel{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.J84-9a_candidateId{overflow-wrap:anywhere;flex:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.J84-9a_candidateEmpty{color:var(--dsw-alias-label-secondary);text-align:center;margin:24px 0;font-size:13px;line-height:20px}[hidden]{display:none!important}.J84-9a_extBlock{border:.5px solid var(--dsw-alias-border-l3);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:10px;margin:8px 4px 2px;padding:10px;display:flex}.J84-9a_extGroup{border-top:.5px solid var(--dsw-alias-border-l2);padding-top:12px}.J84-9a_extGroupFirst{border-top:none;padding-top:0}.J84-9a_extCheck{cursor:pointer;align-items:flex-start;gap:8px;display:flex}.J84-9a_extCheckLabel{color:var(--dsw-alias-label-primary);font-size:14px;line-height:22px}.J84-9a_extHint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.J84-9a_extGated{flex-direction:column;gap:12px;padding-left:2px;display:flex}.J84-9a_extField{flex-direction:column;gap:6px;display:flex}.J84-9a_extLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.J84-9a_extTable{border:.5px solid var(--dsw-alias-border-l4);border-radius:8px;overflow:hidden}.J84-9a_extTHead{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-module-platform);grid-template-columns:64px minmax(0,1fr) minmax(0,1.2fr);font-size:12px;line-height:18px;display:grid}.J84-9a_extTHead>div{padding:6px 10px}.J84-9a_extTHead>div+div{border-left:.5px solid var(--dsw-alias-border-l2)}.J84-9a_extTRow{border-top:.5px solid var(--dsw-alias-border-l2);grid-template-columns:64px minmax(0,1fr) minmax(0,1.2fr);align-items:center;display:grid}.J84-9a_extTRow>div{padding:6px 10px;font-size:14px}.J84-9a_extTRow>div+div{border-left:.5px solid var(--dsw-alias-border-l2)}.J84-9a_extTRow input[type=text]{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);width:100%;height:32px;font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 10px;font-size:14px}.J84-9a_extTRow input[type=text]:disabled{opacity:.6;cursor:default}.J84-9a_extCheckbox{accent-color:var(--dsw-alias-brand-primary);flex:none;width:15px;height:15px}.J84-9a_switchRow{cursor:pointer;align-items:center;gap:8px;font-size:14px;line-height:22px;display:flex}.J84-9a_extTag{background:var(--dsw-static-deepseek-100);color:var(--dsw-static-deepseek-600);border:.5px solid #4176e659;border-radius:4px;flex:none;padding:1px 6px;font-size:11px;font-weight:500;line-height:16px}.J84-9a_modalMask{background:var(--dsw-alias-bg-mask-1);z-index:100;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.J84-9a_modal{background:var(--dsw-specific-menu);border-radius:16px;width:100%;padding:20px;box-shadow:0 12px 40px #0000002e}.J84-9a_modalTitle{color:var(--dsw-alias-label-primary);margin-bottom:8px;font-size:16px;font-weight:500;line-height:24px}.J84-9a_modalDesc{color:var(--dsw-alias-label-secondary);margin-bottom:16px;font-size:14px;line-height:22px}.J84-9a_modalFoot{justify-content:flex-end;gap:8px;display:flex}.J84-9a_quickWrap{flex-direction:column;gap:6px;display:flex;position:relative}.J84-9a_quickList{z-index:20;border:.5px solid var(--dsw-alias-border-l3);background:var(--dsw-specific-menu);border-radius:8px;max-height:264px;margin-top:2px;padding:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.J84-9a_quickItem{width:100%;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;gap:1px;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;display:flex}.J84-9a_quickItemId{overflow-wrap:anywhere}.J84-9a_quickItemApi{color:var(--dsw-alias-label-tertiary);letter-spacing:.2px;font-size:11px;line-height:14px}.J84-9a_quickItem:hover{background:var(--dsw-alias-interactive-bg-hover)}.J84-9a_quickEmpty{color:var(--dsw-alias-label-tertiary);padding:6px 8px;font-size:12px;line-height:18px}@media (prefers-reduced-motion:reduce){.J84-9a_customizedSummary:before{transition:none}}\n";
|
|
6
|
+
var __extCss = ".J84-9a_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.J84-9a_titleRow{align-items:center;gap:10px;display:flex}.J84-9a_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.J84-9a_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.J84-9a_savedNotice{color:var(--dsw-alias-state-success-primary);margin:0;font-size:12px;line-height:18px}.J84-9a_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.J84-9a_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.J84-9a_rowCard{border:.5px solid var(--dsw-alias-border-l4);border-radius:16px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.J84-9a_rowHead{align-items:center;gap:10px;display:flex}.J84-9a_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.J84-9a_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.J84-9a_rowTag{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:1px 6px;font-size:11px;line-height:16px}.J84-9a_credentialDot{box-sizing:border-box;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.J84-9a_credentialDotConfigured{background:var(--dsw-alias-state-success-primary)}.J84-9a_credentialDotMissing{background:var(--dsw-alias-state-error-primary)}.J84-9a_rowActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.J84-9a_primaryButton,.J84-9a_secondaryButton,.J84-9a_addButton{box-sizing:border-box;height:36px;font:inherit;cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;gap:4px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.J84-9a_primaryButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.J84-9a_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.J84-9a_secondaryButton,.J84-9a_addButton{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}.J84-9a_secondaryButton:hover:not(:disabled),.J84-9a_addButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.J84-9a_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.J84-9a_dangerButton{box-sizing:border-box;height:36px;color:var(--dsw-alias-state-error-primary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.J84-9a_dangerButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.J84-9a_rowActions .J84-9a_secondaryButton,.J84-9a_rowActions .J84-9a_dangerButton{border-radius:14px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.J84-9a_primaryButton:disabled,.J84-9a_secondaryButton:disabled,.J84-9a_dangerButton:disabled,.J84-9a_addButton:disabled,.J84-9a_linkButton:disabled,.J84-9a_addModelButton:disabled{opacity:.4;cursor:default}.J84-9a_primaryButton:focus-visible,.J84-9a_secondaryButton:focus-visible,.J84-9a_dangerButton:focus-visible,.J84-9a_addButton:focus-visible,.J84-9a_linkButton:focus-visible,.J84-9a_addModelButton:focus-visible,.J84-9a_iconButton:focus-visible,.J84-9a_customizedSummary:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3);outline:none}.J84-9a_editor{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;display:flex}.J84-9a_field{flex-direction:column;gap:6px;display:flex}.J84-9a_fieldLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.J84-9a_linkButton{box-sizing:border-box;height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.J84-9a_linkButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.J84-9a_advancedHint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.J84-9a_editorActions{justify-content:flex-end;gap:8px;display:flex}.J84-9a_addBlock{flex-direction:column;gap:12px;display:flex}.J84-9a_addActions{flex-wrap:wrap;gap:10px;display:flex}.J84-9a_addButton{border:1px dashed var(--dsw-alias-border-l3);border-radius:16px;flex:1 1 0;gap:6px;min-width:180px;height:44px}.J84-9a_addCard{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;list-style:none;display:flex}.J84-9a_addCard .J84-9a_editor,.J84-9a_setupCard .J84-9a_editor{background:0 0;padding:0}.J84-9a_tabs{flex-direction:column;gap:12px;display:flex}.J84-9a_tabBar{border-bottom:.5px solid var(--dsw-alias-border-l2);gap:4px;display:flex}.J84-9a_tabButton{appearance:none;font:inherit;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:6px 12px 8px;font-size:13px;line-height:20px;position:relative}.J84-9a_tabButton:hover{color:var(--dsw-alias-label-primary)}.J84-9a_tabButton:disabled{opacity:.4;cursor:default}.J84-9a_tabButtonActive{color:var(--dsw-alias-label-primary);font-weight:500}.J84-9a_tabButtonActive:after{content:\"\";background:var(--dsw-alias-brand-primary);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:10px;right:10px}.J84-9a_tabPanel{flex-direction:column;gap:12px;display:flex}.J84-9a_modelCatalog{flex-direction:column;gap:10px;display:flex}.J84-9a_modelCatalogHeading{flex-direction:column;gap:2px;display:flex}.J84-9a_modelCatalogTitle{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.J84-9a_modelCatalogMeta,.J84-9a_modelEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.J84-9a_modelList{flex-direction:column;gap:8px;display:flex}.J84-9a_modelListHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.J84-9a_modelEntry{border:.5px solid var(--dsw-alias-border-l4);border-radius:10px;padding:6px}.J84-9a_modelRow{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto auto;align-items:center;gap:6px;display:grid}.J84-9a_iconButton{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.J84-9a_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.J84-9a_iconButton:disabled{cursor:default;opacity:.4}.J84-9a_iconButtonDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.J84-9a_modelAdvanced{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;padding:8px 4px 2px;display:grid}.J84-9a_modelField{flex-direction:column;gap:4px;display:flex}.J84-9a_modelFieldLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.J84-9a_modelEmpty{border:1px dashed var(--dsw-alias-border-l3);text-align:center;border-radius:8px;padding:12px}.J84-9a_addModelButton{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);height:28px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;background:0 0;border-radius:14px;align-self:flex-start;align-items:center;gap:4px;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.J84-9a_addModelButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.J84-9a_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);width:100%;height:32px;font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 10px;font-size:14px;line-height:22px}select.J84-9a_input{cursor:pointer;max-width:240px}.J84-9a_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.J84-9a_input::placeholder{color:var(--dsw-alias-label-dimmed)}.J84-9a_input:disabled{opacity:.6;cursor:default}.J84-9a_selectInput{appearance:none;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\");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:32px}.J84-9a_deleteDialog{width:min(480px,100%)}.J84-9a_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.J84-9a_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.J84-9a_fetchDialog{max-width:520px}.J84-9a_candidateToolbar{align-items:center;gap:8px;margin-bottom:6px;display:flex}.J84-9a_candidateSearch{flex:240px;min-width:0}.J84-9a_candidateList{flex-direction:column;gap:2px;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.J84-9a_candidate{border-radius:6px}.J84-9a_candidateLabel{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.J84-9a_candidateId{overflow-wrap:anywhere;flex:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.J84-9a_candidateEmpty{color:var(--dsw-alias-label-secondary);text-align:center;margin:24px 0;font-size:13px;line-height:20px}[hidden]{display:none!important}.J84-9a_extBlock{border:.5px solid var(--dsw-alias-border-l3);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:10px;margin:8px 4px 2px;padding:10px;display:flex}.J84-9a_extGroup{border-top:.5px solid var(--dsw-alias-border-l2);padding-top:12px}.J84-9a_extGroupFirst{border-top:none;padding-top:0}.J84-9a_extCheck{cursor:pointer;align-items:flex-start;gap:8px;display:flex}.J84-9a_extCheckLabel{color:var(--dsw-alias-label-primary);font-size:14px;line-height:22px}.J84-9a_extHint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.J84-9a_extGated{flex-direction:column;gap:12px;padding-left:2px;display:flex}.J84-9a_extField{flex-direction:column;gap:6px;display:flex}.J84-9a_extLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.J84-9a_extTable{border:.5px solid var(--dsw-alias-border-l4);border-radius:8px;overflow:hidden}.J84-9a_extTHead{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-module-platform);grid-template-columns:64px minmax(0,1fr) minmax(0,1.2fr);font-size:12px;line-height:18px;display:grid}.J84-9a_extTHead>div{padding:6px 10px}.J84-9a_extTHead>div+div{border-left:.5px solid var(--dsw-alias-border-l2)}.J84-9a_extTRow{border-top:.5px solid var(--dsw-alias-border-l2);grid-template-columns:64px minmax(0,1fr) minmax(0,1.2fr);align-items:center;display:grid}.J84-9a_extTRow>div{padding:6px 10px;font-size:14px}.J84-9a_extTRow>div+div{border-left:.5px solid var(--dsw-alias-border-l2)}.J84-9a_extTRow input[type=text]{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);width:100%;height:32px;font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 10px;font-size:14px}.J84-9a_extTRow input[type=text]:disabled{opacity:.6;cursor:default}.J84-9a_extCheckbox{accent-color:var(--dsw-alias-brand-primary);flex:none;width:15px;height:15px}.J84-9a_switchRow{cursor:pointer;align-items:center;gap:8px;font-size:14px;line-height:22px;display:flex}.J84-9a_extTag{background:var(--dsw-static-deepseek-100);color:var(--dsw-static-deepseek-600);border:.5px solid #4176e659;border-radius:4px;flex:none;padding:1px 6px;font-size:11px;font-weight:500;line-height:16px}.J84-9a_modalMask{background:var(--dsw-alias-bg-mask-1);z-index:100;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.J84-9a_modal{background:var(--dsw-specific-menu);border-radius:16px;width:100%;padding:20px;box-shadow:0 12px 40px #0000002e}.J84-9a_modalTitle{color:var(--dsw-alias-label-primary);margin-bottom:8px;font-size:16px;font-weight:500;line-height:24px}.J84-9a_modalDesc{color:var(--dsw-alias-label-secondary);margin-bottom:16px;font-size:14px;line-height:22px}.J84-9a_modalFoot{justify-content:flex-end;gap:8px;display:flex}.J84-9a_quickWrap{flex-direction:column;gap:6px;display:flex;position:relative}.J84-9a_quickList{z-index:20;background:var(--dsw-specific-menu);backdrop-filter:var(--dsw-menu-backdrop-filter);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);box-shadow:var(--dsw-elevation-prominent);border:0;border-radius:8px;max-height:264px;margin-top:2px;padding:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.J84-9a_quickItem{width:100%;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;gap:1px;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;display:flex}.J84-9a_quickItemId{overflow-wrap:anywhere}.J84-9a_quickItemApi{color:var(--dsw-alias-label-tertiary);letter-spacing:.2px;font-size:11px;line-height:14px}.J84-9a_quickItem:hover{background:var(--dsw-alias-interactive-bg-hover)}.J84-9a_quickEmpty{color:var(--dsw-alias-label-tertiary);padding:6px 8px;font-size:12px;line-height:18px}@media (prefers-reduced-motion:reduce){.J84-9a_customizedSummary:before{transition:none}}\n";
|
|
7
7
|
if (typeof document !== 'undefined' && document.querySelector('style[data-plugin-css="dsh-model-extension"]') === null) {
|
|
8
8
|
var __tag = document.createElement('style');
|
|
9
9
|
__tag.dataset.plugin = "dsh-model-extension";
|
|
@@ -26,7 +26,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
26
26
|
* Join declared configurable providers with the currently registered routes.
|
|
27
27
|
* @param registered - live provider routes in registration order.
|
|
28
28
|
* @param directory - declared configurable providers in declaration order.
|
|
29
|
-
* @returns
|
|
29
|
+
* @returns account and official routes first, then other routes in their original order.
|
|
30
30
|
*/
|
|
31
31
|
function joinProviderDirectory(registered, directory) {
|
|
32
32
|
const active = new Set(registered.map((provider) => provider.id));
|
|
@@ -50,7 +50,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
50
50
|
active: true
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
-
return rows;
|
|
53
|
+
return rows.toSorted((left, right) => (left.provider === "deepseek-account" ? 0 : left.provider === "deepseek-official" ? 1 : 2) - (right.provider === "deepseek-account" ? 0 : right.provider === "deepseek-official" ? 1 : 2));
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Derive the conventional credential reference for a provider route: the v1
|
|
@@ -158,11 +158,15 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
158
158
|
entry,
|
|
159
159
|
configured: namespace !== void 0 && (entry.settingsPath.length === 0 || this.schema.getPath(namespace.value, entry.settingsPath) !== void 0),
|
|
160
160
|
removable: namespace !== void 0 && entry.settingsPath.length > 0 && this.schema.hasPath(namespace.user, entry.settingsPath) && !this.schema.hasPath(namespace.base, entry.settingsPath),
|
|
161
|
-
apiKeyEnv: apiKeyEnvOf(namespace, entry.settingsPath, this.schema),
|
|
161
|
+
apiKeyEnv: entry.provider === "deepseek-account" ? void 0 : apiKeyEnvOf(namespace, entry.settingsPath, this.schema),
|
|
162
162
|
credential: void 0
|
|
163
163
|
};
|
|
164
164
|
});
|
|
165
|
-
|
|
165
|
+
if (rows.some((row) => row.entry.provider === "deepseek-account")) {
|
|
166
|
+
const catalog = await this.ctx.remote.session.modelCatalog();
|
|
167
|
+
for (const row of rows) if (row.entry.provider === "deepseek-account") row.accountAvailable = catalog.ok && catalog.value.groups.some((group) => group.id === "deepseek-account" && group.models.length > 0);
|
|
168
|
+
}
|
|
169
|
+
const refs = [...new Set(rows.filter((row) => row.entry.provider !== "deepseek-account").map((row) => row.apiKeyEnv ?? deriveKeyRef(row.entry.provider)))];
|
|
166
170
|
let credentials = {};
|
|
167
171
|
let credentialError = null;
|
|
168
172
|
if (refs.length > 0) {
|
|
@@ -176,7 +180,8 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
176
180
|
s.error = null;
|
|
177
181
|
s.credentialError = credentialError;
|
|
178
182
|
s.writable = writable;
|
|
179
|
-
s.rows = rows.map((row) => {
|
|
183
|
+
s.rows = rows.filter((row) => row.entry.provider !== "deepseek-account" || row.accountAvailable === true).map((row) => {
|
|
184
|
+
if (row.entry.provider === "deepseek-account") return row;
|
|
180
185
|
const named = row.apiKeyEnv === void 0 ? void 0 : credentials[row.apiKeyEnv];
|
|
181
186
|
const derived = row.apiKeyEnv !== void 0 ? void 0 : credentials[deriveKeyRef(row.entry.provider)];
|
|
182
187
|
return {
|
|
@@ -209,6 +214,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
209
214
|
*/
|
|
210
215
|
function providerUsable(row) {
|
|
211
216
|
if (!row.entry.active) return false;
|
|
217
|
+
if (row.entry.provider === "deepseek-account") return row.accountAvailable === true;
|
|
212
218
|
if (row.apiKeyEnv === void 0) return true;
|
|
213
219
|
return row.credential?.configured === true;
|
|
214
220
|
}
|
|
@@ -471,6 +477,11 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
471
477
|
}
|
|
472
478
|
//#endregion
|
|
473
479
|
//#region src/client/extension-meta.ts
|
|
480
|
+
/**
|
|
481
|
+
* Shared extension metadata: enums pinned to the host release this extension
|
|
482
|
+
* was last verified against, and the extra locale keys the extension adds on
|
|
483
|
+
* top of the official Models page dictionaries.
|
|
484
|
+
*/
|
|
474
485
|
/** Thinking levels offered by llm-pi-ai (THINKING_LEVEL_GATE @ 0.1.2-alpha.4). Only `off` may carry an empty wire value. */
|
|
475
486
|
const THINKING_LEVELS = [
|
|
476
487
|
"off",
|
|
@@ -502,7 +513,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
502
513
|
* copying pi-ai's catalog `compat` across verbatim would fail resolution on
|
|
503
514
|
* the withheld fields it also records (routing preferences, session affinity,
|
|
504
515
|
* deferred tools, grammar tools). Re-check against the host's COMPAT_GATES on
|
|
505
|
-
* every
|
|
516
|
+
* every host upgrade — the same drift gate the host keeps for itself.
|
|
506
517
|
*/
|
|
507
518
|
const COMPAT_FIELDS = {
|
|
508
519
|
"openai-completions": [
|
|
@@ -591,6 +602,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
591
602
|
/** Extra copy for the extension, keyed like the official dictionaries (en is authoritative). */
|
|
592
603
|
const en = {
|
|
593
604
|
nav: "Models+",
|
|
605
|
+
deepSeekAccount: "DeepSeek Account",
|
|
594
606
|
title: "Models+",
|
|
595
607
|
intro: "Enter your API keys to use models from the following providers.",
|
|
596
608
|
edit: "Edit",
|
|
@@ -703,6 +715,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
703
715
|
/** Chinese strings — same key set as {@link en}. */
|
|
704
716
|
const zh = {
|
|
705
717
|
nav: "模型+",
|
|
718
|
+
deepSeekAccount: "DeepSeek 账号",
|
|
706
719
|
title: "模型+",
|
|
707
720
|
intro: "填入各提供方的 API 密钥即可使用其模型。",
|
|
708
721
|
edit: "编辑",
|
|
@@ -2357,14 +2370,21 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
2357
2370
|
* write — the draft comes from the user layer, so a wholesale replace can
|
|
2358
2371
|
* never delete fields outside the card.
|
|
2359
2372
|
*/
|
|
2360
|
-
/**
|
|
2361
|
-
*
|
|
2362
|
-
*
|
|
2363
|
-
*
|
|
2364
|
-
*
|
|
2365
|
-
*
|
|
2366
|
-
|
|
2367
|
-
|
|
2373
|
+
/**
|
|
2374
|
+
* The official DeepSeek endpoint root, and the only one left to prefill: the
|
|
2375
|
+
* route is Messages-only. The host dropped the `protocol` field in
|
|
2376
|
+
* 0.1.7-alpha.1 and its resolver now refuses a configuration that still carries
|
|
2377
|
+
* one, so a chat-completions variant is neither offered nor reachable — reading
|
|
2378
|
+
* that old field only ever produced the bare root, which the adapter refuses
|
|
2379
|
+
* (host @ 0.1.7-rc.2, `PUBLIC_BASE_URL`).
|
|
2380
|
+
*/
|
|
2381
|
+
const DEEPSEEK_BASE_URL = "https://api.deepseek.com/anthropic";
|
|
2382
|
+
/**
|
|
2383
|
+
* The official signed-in account route. It carries no API key and no base URL
|
|
2384
|
+
* of its own — the host renders the model catalog alone for it, under the
|
|
2385
|
+
* DeepSeek family's curated field set (host @ 0.1.7-rc.2).
|
|
2386
|
+
*/
|
|
2387
|
+
const ACCOUNT_PROVIDER = "deepseek-account";
|
|
2368
2388
|
/** The editor layout the owning namespace selects. */
|
|
2369
2389
|
function layoutOf(ns) {
|
|
2370
2390
|
if (ns === "llm-deepseek") return "deepseek";
|
|
@@ -2406,7 +2426,8 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
2406
2426
|
]);
|
|
2407
2427
|
const fallback = schema.getPath(namespace.value, settingsPath);
|
|
2408
2428
|
const disabled = props.readOnly || busy;
|
|
2409
|
-
const
|
|
2429
|
+
const accountProvider = props.provider === ACCOUNT_PROVIDER;
|
|
2430
|
+
const layout = accountProvider ? "deepseek" : layoutOf(namespace.ns);
|
|
2410
2431
|
const keyRef = refFor(schema, namespace, settingsPath, props.provider);
|
|
2411
2432
|
const protocols = (0, react.useMemo)(() => layout === "pi-ai" ? protocolChoices(namespace, schema) : [], [
|
|
2412
2433
|
layout,
|
|
@@ -2430,6 +2451,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
2430
2451
|
};
|
|
2431
2452
|
}, [layout]);
|
|
2432
2453
|
(0, react.useEffect)(() => {
|
|
2454
|
+
if (accountProvider) return;
|
|
2433
2455
|
let stale = false;
|
|
2434
2456
|
setKeyState(void 0);
|
|
2435
2457
|
operations.describeCredential(keyRef).then((described) => {
|
|
@@ -2439,7 +2461,11 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
2439
2461
|
return () => {
|
|
2440
2462
|
stale = true;
|
|
2441
2463
|
};
|
|
2442
|
-
}, [
|
|
2464
|
+
}, [
|
|
2465
|
+
operations,
|
|
2466
|
+
keyRef,
|
|
2467
|
+
accountProvider
|
|
2468
|
+
]);
|
|
2443
2469
|
const stringAt = (source, key) => {
|
|
2444
2470
|
const value = schema.getPath(source, [key]);
|
|
2445
2471
|
return typeof value === "string" && value.trim().length > 0 ? value : void 0;
|
|
@@ -2561,6 +2587,23 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
2561
2587
|
namespace.ns,
|
|
2562
2588
|
")"
|
|
2563
2589
|
]
|
|
2590
|
+
}) : accountProvider ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ModelCatalog, {
|
|
2591
|
+
models,
|
|
2592
|
+
overridden: modelsOverridden,
|
|
2593
|
+
routeApi,
|
|
2594
|
+
defaultContextWindow: typeof defaultContextWindow === "number" ? defaultContextWindow : void 0,
|
|
2595
|
+
defaultMaxTokens: typeof defaultMaxTokens === "number" ? defaultMaxTokens : void 0,
|
|
2596
|
+
probe,
|
|
2597
|
+
probeBlocked: keyFailure,
|
|
2598
|
+
hideFetch: true,
|
|
2599
|
+
operations,
|
|
2600
|
+
disabled,
|
|
2601
|
+
onChange: (rows) => {
|
|
2602
|
+
setDraft((current) => schema.setPath(current, ["models"], rows));
|
|
2603
|
+
},
|
|
2604
|
+
onReset: () => {
|
|
2605
|
+
setDraft((current) => schema.deletePath(current, ["models"]));
|
|
2606
|
+
}
|
|
2564
2607
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2565
2608
|
className: models_plus_module_default["tabs"],
|
|
2566
2609
|
children: [
|
|
@@ -2646,7 +2689,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
2646
2689
|
className: models_plus_module_default["input"],
|
|
2647
2690
|
type: "text",
|
|
2648
2691
|
value: stringAt(draft, "baseURL") ?? "",
|
|
2649
|
-
placeholder: layout === "deepseek" ?
|
|
2692
|
+
placeholder: layout === "deepseek" ? DEEPSEEK_BASE_URL : stringAt(fallback, "baseURL") ?? "提供方默认",
|
|
2650
2693
|
"aria-label": "API 地址",
|
|
2651
2694
|
disabled,
|
|
2652
2695
|
onChange: (event) => {
|
|
@@ -2655,7 +2698,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
2655
2698
|
}),
|
|
2656
2699
|
layout === "deepseek" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
2657
2700
|
className: models_plus_module_default["advancedHint"],
|
|
2658
|
-
children: "
|
|
2701
|
+
children: "该路由固定使用 Messages 协议,地址须指向兼容该协议的端点。"
|
|
2659
2702
|
}) : null
|
|
2660
2703
|
]
|
|
2661
2704
|
}),
|
|
@@ -3041,7 +3084,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
3041
3084
|
*/
|
|
3042
3085
|
/** One fact decides the first-run posture: whether any provider is usable. */
|
|
3043
3086
|
function needsSetup(row, anyUsable) {
|
|
3044
|
-
if (anyUsable) return false;
|
|
3087
|
+
if (anyUsable || row.entry.provider === "deepseek-account") return false;
|
|
3045
3088
|
if (row.entry.settingsPath.length > 0) return false;
|
|
3046
3089
|
return row.credential?.configured !== true;
|
|
3047
3090
|
}
|
|
@@ -3097,7 +3140,17 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
3097
3140
|
function Loaded({ injected }) {
|
|
3098
3141
|
const { controller, operations, schema, t } = injected;
|
|
3099
3142
|
const useSnapshot = injected.useSnapshot;
|
|
3100
|
-
const
|
|
3143
|
+
const snapshot = useSnapshot((value) => value);
|
|
3144
|
+
const state = {
|
|
3145
|
+
...snapshot,
|
|
3146
|
+
rows: snapshot.rows.map((row) => row.entry.provider === "deepseek-account" ? {
|
|
3147
|
+
...row,
|
|
3148
|
+
entry: {
|
|
3149
|
+
...row.entry,
|
|
3150
|
+
displayName: t("deepSeekAccount")
|
|
3151
|
+
}
|
|
3152
|
+
} : row)
|
|
3153
|
+
};
|
|
3101
3154
|
const [editing, setEditing] = (0, react.useState)(void 0);
|
|
3102
3155
|
const [adding, setAdding] = (0, react.useState)(false);
|
|
3103
3156
|
const [declaring, setDeclaring] = (0, react.useState)(false);
|
|
@@ -3524,7 +3577,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
3524
3577
|
//#region src/client/index-extension.ts
|
|
3525
3578
|
/** Cordis service name (distinct from the npm package name). */
|
|
3526
3579
|
const name = "model-extension-client";
|
|
3527
|
-
/** Required services — mirrors the upstream Models section registration @ 0.1.7-
|
|
3580
|
+
/** Required services — mirrors the upstream Models section registration @ 0.1.7-rc.2. */
|
|
3528
3581
|
const inject = [
|
|
3529
3582
|
"slots",
|
|
3530
3583
|
"locale",
|
|
@@ -3532,6 +3585,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
3532
3585
|
"remote.credentials",
|
|
3533
3586
|
"remote.llm",
|
|
3534
3587
|
"remote.settings",
|
|
3588
|
+
"remote.session",
|
|
3535
3589
|
"configForms",
|
|
3536
3590
|
"settingsSchema"
|
|
3537
3591
|
];
|
|
@@ -3569,6 +3623,7 @@ if (typeof document !== 'undefined' && document.querySelector('style[data-plugin
|
|
|
3569
3623
|
ctx.remote.$on("settings/document-updated", () => {
|
|
3570
3624
|
refreshModels();
|
|
3571
3625
|
}),
|
|
3626
|
+
ctx.remote.$on("credentials/record-updated", refreshModels),
|
|
3572
3627
|
ctx.remote.$on("credentials/reference-updated", refreshModels),
|
|
3573
3628
|
ctx.remote.$on("llm/adapters-updated", refreshModels),
|
|
3574
3629
|
ctx.on("connection/reset", refreshModels)
|