dsh-plugin-effort-declare 0.1.4 → 0.1.5
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/CONTRIBUTING.en.md +2 -1
- package/CONTRIBUTING.md +1 -0
- package/INSTALL.en.md +2 -2
- package/INSTALL.md +2 -2
- package/README.en.md +4 -2
- package/README.md +3 -1
- package/lib/client.js +30 -32
- package/lib/client.js.map +1 -1
- package/lib/types/client/EffortDeclareSection.d.ts +3 -2
- package/lib/types/client/EffortDeclareSection.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +23 -2
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/load-drafts.d.ts +3 -3
- package/lib/types/client/load-drafts.d.ts.map +1 -1
- package/lib/types/client/remotes.d.ts +40 -0
- package/lib/types/client/remotes.d.ts.map +1 -0
- package/lib/types/core/catalog.d.ts +3 -3
- package/lib/types/core/catalog.d.ts.map +1 -1
- package/lib/types/core/drafts.d.ts +1 -1
- package/lib/types/core/drafts.d.ts.map +1 -1
- package/lib/types/core/filter.d.ts +1 -1
- package/lib/types/core/filter.d.ts.map +1 -1
- package/lib/types/core/path-ops.d.ts +1 -1
- package/lib/types/core/path-ops.d.ts.map +1 -1
- package/package.json +9 -12
- package/src/client/EffortDeclareSection.tsx +18 -20
- package/src/client/README.en.md +5 -4
- package/src/client/README.md +5 -4
- package/src/client/index.ts +35 -6
- package/src/client/load-drafts.ts +10 -10
- package/src/client/locales.ts +2 -2
- package/src/client/remotes.ts +39 -0
- package/src/core/README.en.md +2 -2
- package/src/core/README.md +2 -2
- package/src/core/catalog.ts +3 -2
- package/src/core/drafts.ts +1 -1
- package/src/core/filter.ts +1 -1
- package/src/core/path-ops.ts +1 -1
package/CONTRIBUTING.en.md
CHANGED
|
@@ -45,7 +45,8 @@ pnpm build
|
|
|
45
45
|
|
|
46
46
|
- Host and client must use separate `tsconfig` files (their Context merges cannot share one TypeScript program)
|
|
47
47
|
- The client bundle must not inline `@deepseek-ai/*` except platform modules in the shell’s frozen table. Collaborate through Cordis services; do not value-import the official Models page
|
|
48
|
-
-
|
|
48
|
+
- Client calls go through `ctx.remote.llm` / `ctx.remote.settings` (`listConfigurableProviders`, `settings.mutate`). Do not use `connection.api`. `@deepseek-ai/dsh-client-runtime` is not published for 0.1.2-alpha.2; do not add it back as a peer or a `dsh.client.inject` entry
|
|
49
|
+
- Source: [src/README.en.md](./src/README.en.md); domain logic: [src/core/README.en.md](./src/core/README.en.md); settings UI: [src/client/README.en.md](./src/client/README.en.md); tests: [tests/README.en.md](./tests/README.en.md)
|
|
49
50
|
|
|
50
51
|
Before sending a change, say whether it is a bug fix, a feature, or an alignment with a newer DSH / pi-ai schema. Update zh and en docs together. The root README and [INSTALL.en.md](./INSTALL.en.md) are for users; this file and the READMEs under `src/` and `tests/` are for people changing code.
|
|
51
52
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -45,6 +45,7 @@ pnpm build
|
|
|
45
45
|
|
|
46
46
|
- Host 与 client 必须分 `tsconfig`(两边 Context merge 不能共一个 TypeScript Program)
|
|
47
47
|
- 客户端 bundle 禁止把 `@deepseek-ai/*` 打进包内(shell 冻结模块表里的平台模块除外)。跨插件协作走 Cordis 服务,不要 value-import 官方模型页
|
|
48
|
+
- 客户端经 `ctx.remote.llm` / `ctx.remote.settings` 调用(`listConfigurableProviders`、`settings.mutate`)。不要再用 `connection.api`。`@deepseek-ai/dsh-client-runtime` 在 0.1.2-alpha.2 未发布,不要加回 peer 或 `dsh.client.inject`
|
|
48
49
|
- 源码:[src/README.md](./src/README.md);领域逻辑:[src/core/README.md](./src/core/README.md);设置页:[src/client/README.md](./src/client/README.md);测试:[tests/README.md](./tests/README.md)
|
|
49
50
|
|
|
50
51
|
提交前请说明改动是缺陷修复、功能增强,还是对齐新的 DSH / pi-ai schema。中英文档一并更新。根 README 与 [INSTALL.md](./INSTALL.md) 面向使用者;本文件与 `src/`、`tests/` 下的 README 面向改代码的人。
|
package/INSTALL.en.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
</samp>
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
|
-
Back to the [README](./README.en.md). Requires DeepSeek Harness **0.1.0-rc.8
|
|
10
|
+
Back to the [README](./README.en.md). Requires DeepSeek Harness **0.1.2-alpha.2**. Earlier client APIs, including 0.1.0-rc.8, are not supported. Do not use `npm install`; use `dsh plugin` below.
|
|
11
11
|
|
|
12
12
|
## Third-party distributions: set DSH_HOME first
|
|
13
13
|
|
|
@@ -83,7 +83,7 @@ dsh plugin --profile web add file:/absolute/path/to/dsh-plugin-effort-declare
|
|
|
83
83
|
|
|
84
84
|
## After install
|
|
85
85
|
|
|
86
|
-
Restart DSH. Open **Settings → Reasoning efforts**, declare reasoning levels per model, and check **Accepts image input** for vision models. The footer is the installed version (for example `0.1.
|
|
86
|
+
Restart DSH. Open **Settings → Reasoning efforts**, declare reasoning levels per model, and check **Accepts image input** for vision models. The footer is the installed version (for example `0.1.5 © 2026 Stardust`). Bumping `package.json` version only appears after you rebuild and reinstall. Add a custom provider on the Models page first; otherwise this page has nothing to edit.
|
|
87
87
|
|
|
88
88
|
## Uninstall
|
|
89
89
|
|
package/INSTALL.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
</samp>
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
|
-
回到 [README](./README.md)。需要 DeepSeek Harness **0.1.0-rc.8
|
|
10
|
+
回到 [README](./README.md)。需要 DeepSeek Harness **0.1.2-alpha.2**;更早的客户端 API(含 0.1.0-rc.8)不再支持。不要使用 `npm install`,必须使用下面的 `dsh plugin` 命令。
|
|
11
11
|
|
|
12
12
|
## 第三方发行版:先设置 DSH_HOME
|
|
13
13
|
|
|
@@ -83,7 +83,7 @@ dsh plugin --profile web add file:/绝对路径/dsh-plugin-effort-declare
|
|
|
83
83
|
|
|
84
84
|
## 安装之后
|
|
85
85
|
|
|
86
|
-
重启 DSH。打开 **设置 → 推理档位**,按模型声明推理档位;视觉模型再勾选 **支持图片输入**。页脚为当前安装版本(例如 `0.1.
|
|
86
|
+
重启 DSH。打开 **设置 → 推理档位**,按模型声明推理档位;视觉模型再勾选 **支持图片输入**。页脚为当前安装版本(例如 `0.1.5 © 2026 Stardust`)。修改 `package.json` 的 version 后须重新打包并安装才会更新页脚。请先在「模型」页添加第三方提供方,本页才会出现可编辑条目。
|
|
87
87
|
|
|
88
88
|
## 卸载
|
|
89
89
|
|
package/README.en.md
CHANGED
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
<a href="https://github.com/zimodzh/dsh-plugin-effort-declare" target="_blank" rel="noopener noreferrer"><img alt="repo size" src="https://img.shields.io/github/repo-size/zimodzh/dsh-plugin-effort-declare"></a>
|
|
14
14
|
<a href="./LICENSE" target="_blank" rel="noopener noreferrer"><img alt="license" src="https://img.shields.io/github/license/zimodzh/dsh-plugin-effort-declare"></a>
|
|
15
15
|
<a href="https://github.com/deepseek-ai/deepseek-harness" target="_blank" rel="noopener noreferrer"><img alt="Agent" src="https://img.shields.io/badge/Agent-Deepseek%20Harness-000000"></a>
|
|
16
|
+
<a href="https://www.dsh.so/artifact/dsh-plugin-effort-declare/" target="_blank" rel="noopener noreferrer"><img alt="dsh.so risk" src="https://www.dsh.so/badge/dsh-plugin-effort-declare.svg"></a>
|
|
17
|
+
<a href="https://www.dsh.so/artifact/dsh-plugin-effort-declare/" target="_blank" rel="noopener noreferrer"><img alt="dsh.so install" src="https://www.dsh.so/badge/install/dsh-plugin-effort-declare.svg"></a>
|
|
16
18
|
</p>
|
|
17
19
|
|
|
18
|
-
A settings plugin for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). It declares reasoning levels and image input for hand-added OpenAI-compatible models. After a declaration, the
|
|
20
|
+
A settings plugin for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). It declares reasoning levels and image input for hand-added OpenAI-compatible models. After a declaration, the conversation input shows the Effort row and accepts image attachments; undeclared models are treated as text-only.
|
|
19
21
|
|
|
20
|
-
> A community-maintained third-party DSH plugin. It is not an official DeepSeek project and is not endorsed by DeepSeek. Requires **DeepSeek Harness 0.1.
|
|
22
|
+
> A community-maintained third-party DSH plugin. It is not an official DeepSeek project and is not endorsed by DeepSeek. Requires **DeepSeek Harness 0.1.2-alpha.2**. Earlier client APIs are no longer supported, including 0.1.0-rc.8 which this plugin previously targeted.
|
|
21
23
|
|
|
22
24
|
## Purpose
|
|
23
25
|
|
package/README.md
CHANGED
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
<a href="https://github.com/zimodzh/dsh-plugin-effort-declare" target="_blank" rel="noopener noreferrer"><img alt="repo size" src="https://img.shields.io/github/repo-size/zimodzh/dsh-plugin-effort-declare"></a>
|
|
14
14
|
<a href="./LICENSE" target="_blank" rel="noopener noreferrer"><img alt="license" src="https://img.shields.io/github/license/zimodzh/dsh-plugin-effort-declare"></a>
|
|
15
15
|
<a href="https://github.com/deepseek-ai/deepseek-harness" target="_blank" rel="noopener noreferrer"><img alt="Agent" src="https://img.shields.io/badge/Agent-Deepseek%20Harness-000000"></a>
|
|
16
|
+
<a href="https://www.dsh.so/artifact/dsh-plugin-effort-declare/" target="_blank" rel="noopener noreferrer"><img alt="dsh.so risk" src="https://www.dsh.so/badge/dsh-plugin-effort-declare.svg"></a>
|
|
17
|
+
<a href="https://www.dsh.so/artifact/dsh-plugin-effort-declare/" target="_blank" rel="noopener noreferrer"><img alt="dsh.so install" src="https://www.dsh.so/badge/install/dsh-plugin-effort-declare.svg"></a>
|
|
16
18
|
</p>
|
|
17
19
|
|
|
18
20
|
这是 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)的设置插件:为手工添加的 OpenAI 兼容模型声明推理档位与图片输入。声明之后,对话输入框才会出现 Effort 行,并允许附加图片;未声明则按纯文本模型处理。
|
|
19
21
|
|
|
20
|
-
> 社区维护的第三方 DSH 插件,并非 DeepSeek 官方项目,亦未经官方背书。要求 **DeepSeek Harness 0.1.0-rc.8
|
|
22
|
+
> 社区维护的第三方 DSH 插件,并非 DeepSeek 官方项目,亦未经官方背书。要求 **DeepSeek Harness 0.1.2-alpha.2**;更早的客户端 API(含此前对接的 0.1.0-rc.8)不再支持。
|
|
21
23
|
|
|
22
24
|
## 作用
|
|
23
25
|
|
package/lib/client.js
CHANGED
|
@@ -11,7 +11,7 @@ window.__ModuleLoader__.load({
|
|
|
11
11
|
* Canonical thinking levels and openai-completions thinkingFormat names.
|
|
12
12
|
*
|
|
13
13
|
* Levels match `@deepseek-ai/dsh-llm-pi-ai` catalog.ts `THINKING_LEVELS`.
|
|
14
|
-
* Formats match `SUPPORTED_THINKING_FORMATS` in the same file (
|
|
14
|
+
* Formats match `SUPPORTED_THINKING_FORMATS` in the same file (0.1.2-alpha.2).
|
|
15
15
|
* Tests pin these lists against a checked-in schema fixture
|
|
16
16
|
* (`tests/fixtures/pi-ai-thinking-format-union.ts`) and the local level
|
|
17
17
|
* whitelist. The settings page never offers the handwritten thinkingFormat
|
|
@@ -616,7 +616,7 @@ window.__ModuleLoader__.load({
|
|
|
616
616
|
* package.json at DSH startup — host apply is empty and the settings page
|
|
617
617
|
* runs in the browser.
|
|
618
618
|
*/
|
|
619
|
-
const PLUGIN_FOOTER_TEXT = formatAttribution("0.1.
|
|
619
|
+
const PLUGIN_FOOTER_TEXT = formatAttribution("0.1.5", COPYRIGHT_FROM, 2026);
|
|
620
620
|
//#endregion
|
|
621
621
|
//#region src/client/load-drafts.ts
|
|
622
622
|
function schemaDefaultString(node) {
|
|
@@ -689,7 +689,7 @@ window.__ModuleLoader__.load({
|
|
|
689
689
|
return current !== void 0 && current !== previous;
|
|
690
690
|
}, signal) ? "changed" : "aborted";
|
|
691
691
|
}
|
|
692
|
-
async function assembleDrafts(
|
|
692
|
+
async function assembleDrafts(llm, describe, schema) {
|
|
693
693
|
const mirrored = describe.getSnapshot();
|
|
694
694
|
if (mirrored.view === void 0) return {
|
|
695
695
|
writable: false,
|
|
@@ -697,12 +697,12 @@ window.__ModuleLoader__.load({
|
|
|
697
697
|
drafts: [],
|
|
698
698
|
error: mirrored.error ?? void 0
|
|
699
699
|
};
|
|
700
|
-
const providersResponse = await
|
|
701
|
-
if (!providersResponse.
|
|
700
|
+
const providersResponse = await llm.listConfigurableProviders();
|
|
701
|
+
if (!providersResponse.ok) return {
|
|
702
702
|
writable: mirrored.view.writable,
|
|
703
703
|
formats: [],
|
|
704
704
|
drafts: [],
|
|
705
|
-
error: providersResponse.
|
|
705
|
+
error: providersResponse.error.message
|
|
706
706
|
};
|
|
707
707
|
const pi = new Map(mirrored.view.namespaces.map((view) => [view.ns, view])).get(LLM_PI_AI_NS);
|
|
708
708
|
let formats = [];
|
|
@@ -723,7 +723,7 @@ window.__ModuleLoader__.load({
|
|
|
723
723
|
]));
|
|
724
724
|
} catch {}
|
|
725
725
|
const drafts = [];
|
|
726
|
-
for (const entry of providersResponse.
|
|
726
|
+
for (const entry of providersResponse.value) {
|
|
727
727
|
const settingsPath = entry.settingsPath !== void 0 && entry.settingsPath.length > 0 ? [...entry.settingsPath] : ["providers", entry.provider];
|
|
728
728
|
if (!classifyRoute(entry, profileAt(pi?.value, settingsPath, entry.provider), schemaDefaultApi).editable) continue;
|
|
729
729
|
drafts.push(routeDraftFromUserProfile({
|
|
@@ -744,9 +744,9 @@ window.__ModuleLoader__.load({
|
|
|
744
744
|
* `ensure`: first paint / idle recovery (official ensure only reads from idle).
|
|
745
745
|
* `snapshot`: refresh after the mirror revision already moved — do not ensure.
|
|
746
746
|
*/
|
|
747
|
-
async function loadDrafts(
|
|
747
|
+
async function loadDrafts(llm, describe, schema, mode = "ensure") {
|
|
748
748
|
if (mode === "ensure") await describe.ensure();
|
|
749
|
-
return assembleDrafts(
|
|
749
|
+
return assembleDrafts(llm, describe, schema);
|
|
750
750
|
}
|
|
751
751
|
//#endregion
|
|
752
752
|
//#region src/client/schema-ops.ts
|
|
@@ -1160,7 +1160,8 @@ window.__ModuleLoader__.load({
|
|
|
1160
1160
|
}
|
|
1161
1161
|
function EffortDeclareSection(props) {
|
|
1162
1162
|
const t = props.t;
|
|
1163
|
-
const
|
|
1163
|
+
const llm = props.llm;
|
|
1164
|
+
const settings = props.settings;
|
|
1164
1165
|
const describe = props.describe;
|
|
1165
1166
|
const schema = props.schema;
|
|
1166
1167
|
const [status, setStatus] = (0, react.useState)("loading");
|
|
@@ -1219,17 +1220,17 @@ window.__ModuleLoader__.load({
|
|
|
1219
1220
|
setStatus("ready");
|
|
1220
1221
|
};
|
|
1221
1222
|
const loadSnapshotThenSettle = async (generation, preserveDirty) => {
|
|
1222
|
-
if (
|
|
1223
|
+
if (llm === void 0 || typeof llm.listConfigurableProviders !== "function" || describe === void 0 || schema === void 0) return;
|
|
1223
1224
|
if (!generationIsCurrent(generationRef, generation)) return;
|
|
1224
1225
|
try {
|
|
1225
|
-
const result = await loadDrafts(
|
|
1226
|
+
const result = await loadDrafts(llm, describe, schema, "snapshot");
|
|
1226
1227
|
settleReload(generation, preserveDirty, result);
|
|
1227
1228
|
} catch (failure) {
|
|
1228
1229
|
failGeneration(generation, failure);
|
|
1229
1230
|
}
|
|
1230
1231
|
};
|
|
1231
1232
|
const reload = (0, react.useCallback)((preserveDirty, mode = "ensure") => {
|
|
1232
|
-
if (
|
|
1233
|
+
if (llm === void 0 || typeof llm.listConfigurableProviders !== "function" || describe === void 0 || schema === void 0) {
|
|
1233
1234
|
setStatus("error");
|
|
1234
1235
|
setError(t("loadError"));
|
|
1235
1236
|
return;
|
|
@@ -1237,19 +1238,19 @@ window.__ModuleLoader__.load({
|
|
|
1237
1238
|
const { generation } = beginGeneration();
|
|
1238
1239
|
if (draftsRef.current.length === 0) setStatus("loading");
|
|
1239
1240
|
setError("");
|
|
1240
|
-
loadDrafts(
|
|
1241
|
+
loadDrafts(llm, describe, schema, mode).then((result) => {
|
|
1241
1242
|
settleReload(generation, preserveDirty, result);
|
|
1242
1243
|
}, (failure) => {
|
|
1243
1244
|
failGeneration(generation, failure);
|
|
1244
1245
|
});
|
|
1245
1246
|
}, [
|
|
1246
|
-
|
|
1247
|
+
llm,
|
|
1247
1248
|
describe,
|
|
1248
1249
|
schema,
|
|
1249
1250
|
t
|
|
1250
1251
|
]);
|
|
1251
1252
|
const refreshAtRevision = (0, react.useCallback)((revision, preserveDirty) => {
|
|
1252
|
-
if (
|
|
1253
|
+
if (llm === void 0 || typeof llm.listConfigurableProviders !== "function" || describe === void 0 || schema === void 0) return;
|
|
1253
1254
|
const { generation, signal } = beginGeneration();
|
|
1254
1255
|
if (draftsRef.current.length === 0) setStatus("loading");
|
|
1255
1256
|
setError("");
|
|
@@ -1260,7 +1261,7 @@ window.__ModuleLoader__.load({
|
|
|
1260
1261
|
failGeneration(generation, failure);
|
|
1261
1262
|
});
|
|
1262
1263
|
}, [
|
|
1263
|
-
|
|
1264
|
+
llm,
|
|
1264
1265
|
describe,
|
|
1265
1266
|
schema,
|
|
1266
1267
|
t
|
|
@@ -1314,7 +1315,7 @@ window.__ModuleLoader__.load({
|
|
|
1314
1315
|
});
|
|
1315
1316
|
};
|
|
1316
1317
|
const save = async (draft) => {
|
|
1317
|
-
if (
|
|
1318
|
+
if (settings === void 0 || typeof settings.mutate !== "function" || describe === void 0 || schema === void 0) return;
|
|
1318
1319
|
if (status === "loading" || busyRouteRef.current !== null) {
|
|
1319
1320
|
patchNotice(draft.provider, {
|
|
1320
1321
|
kind: "error",
|
|
@@ -1365,16 +1366,12 @@ window.__ModuleLoader__.load({
|
|
|
1365
1366
|
}
|
|
1366
1367
|
}
|
|
1367
1368
|
}
|
|
1368
|
-
const response = await
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
expectedRevision: draft.revision
|
|
1372
|
-
});
|
|
1373
|
-
if (!response.result.ok) {
|
|
1374
|
-
const conflict = response.result.error.code === "settings-conflict";
|
|
1369
|
+
const response = await settings.mutate(LLM_PI_AI_NS, ops, draft.revision);
|
|
1370
|
+
if (!response.ok) {
|
|
1371
|
+
const conflict = response.error.code === "settings/conflict";
|
|
1375
1372
|
patchNotice(draft.provider, {
|
|
1376
1373
|
kind: conflict ? "conflict" : "error",
|
|
1377
|
-
text: conflict ? t("conflict") : response.
|
|
1374
|
+
text: conflict ? t("conflict") : response.error.message
|
|
1378
1375
|
});
|
|
1379
1376
|
if (conflict) {
|
|
1380
1377
|
const { generation, signal } = beginGeneration();
|
|
@@ -1387,7 +1384,7 @@ window.__ModuleLoader__.load({
|
|
|
1387
1384
|
}
|
|
1388
1385
|
return;
|
|
1389
1386
|
}
|
|
1390
|
-
const view = response.
|
|
1387
|
+
const view = response.value;
|
|
1391
1388
|
echoedRevisionRef.current = view.revision;
|
|
1392
1389
|
describe.acceptView(view);
|
|
1393
1390
|
applyDrafts(applySaveSuccess(draftsRef.current, draft.provider, {
|
|
@@ -1494,7 +1491,7 @@ window.__ModuleLoader__.load({
|
|
|
1494
1491
|
title: "推理档位声明",
|
|
1495
1492
|
intro: "声明手工模型可提供的推理档位,以及是否接受图片输入。未声明则不显示 Effort 行,图片附件也会被拒绝。档位仍在输入框菜单中选择;密钥、目录与当前选中项不在本页修改。",
|
|
1496
1493
|
empty: "没有可编辑的手工 openai-completions 路由。",
|
|
1497
|
-
emptyHint: "请先到「模型」页添加提供方(llm-pi-ai 手工路由)。官方 DeepSeek 与 catalog 路由不在本页编辑。需要 DSH ≥ 0.1.
|
|
1494
|
+
emptyHint: "请先到「模型」页添加提供方(llm-pi-ai 手工路由)。官方 DeepSeek 与 catalog 路由不在本页编辑。需要 DSH ≥ 0.1.2-alpha.2。",
|
|
1498
1495
|
loadError: "无法加载提供方或设置。",
|
|
1499
1496
|
loading: "正在加载…",
|
|
1500
1497
|
readOnly: "当前设置为只读,无法保存。",
|
|
@@ -1540,7 +1537,7 @@ window.__ModuleLoader__.load({
|
|
|
1540
1537
|
title: "Reasoning effort declarations",
|
|
1541
1538
|
intro: "Declare reasoning levels and image input for hand-added models. Undeclared models omit the Effort row and refuse image attachments. Effort is still chosen in the composer menu; keys, catalogs, and the current selection are not modified here.",
|
|
1542
1539
|
empty: "No editable hand-declared openai-completions routes.",
|
|
1543
|
-
emptyHint: "Add a provider on the Models page first (an llm-pi-ai hand-declared route). Official DeepSeek and catalog routes are not edited here. Requires DSH ≥ 0.1.
|
|
1540
|
+
emptyHint: "Add a provider on the Models page first (an llm-pi-ai hand-declared route). Official DeepSeek and catalog routes are not edited here. Requires DSH ≥ 0.1.2-alpha.2.",
|
|
1544
1541
|
loadError: "Could not load providers or settings.",
|
|
1545
1542
|
loading: "Loading…",
|
|
1546
1543
|
readOnly: "Settings are read-only; saving is disabled.",
|
|
@@ -1586,8 +1583,9 @@ window.__ModuleLoader__.load({
|
|
|
1586
1583
|
const inject = [
|
|
1587
1584
|
"slots",
|
|
1588
1585
|
"locale",
|
|
1589
|
-
"connection",
|
|
1590
1586
|
"remote",
|
|
1587
|
+
"remote.llm",
|
|
1588
|
+
"remote.settings",
|
|
1591
1589
|
"settingsScope",
|
|
1592
1590
|
"settingsSchema"
|
|
1593
1591
|
];
|
|
@@ -1613,7 +1611,6 @@ window.__ModuleLoader__.load({
|
|
|
1613
1611
|
en
|
|
1614
1612
|
}), `${PLUGIN_ID}: dictionaries`);
|
|
1615
1613
|
ctx.effect(() => mountPluginCss(), `${PLUGIN_ID}: css`);
|
|
1616
|
-
const connection = ctx.get("connection");
|
|
1617
1614
|
const settingsSchema = ctx.settingsSchema;
|
|
1618
1615
|
const schema = bindSchema({
|
|
1619
1616
|
rehydrate: (serialized) => settingsSchema.rehydrate(serialized),
|
|
@@ -1664,7 +1661,8 @@ window.__ModuleLoader__.load({
|
|
|
1664
1661
|
label: () => t("nav"),
|
|
1665
1662
|
locale: NS,
|
|
1666
1663
|
inject: () => ({
|
|
1667
|
-
|
|
1664
|
+
llm: ctx.remote.llm,
|
|
1665
|
+
settings: ctx.remote.settings,
|
|
1668
1666
|
describe,
|
|
1669
1667
|
schema,
|
|
1670
1668
|
subscribeInvalidate
|