dsh-enhancement-suite 0.3.2 → 0.3.4
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 +41 -33
- package/README.zh.md +39 -31
- package/VERIFICATION.md +33 -17
- package/bin/dsh-enhance.mjs +6 -6
- package/bin/validate-manifest.mjs +1 -1
- package/client.js +72 -72
- package/cordis.patch.yml +3 -3
- package/docs/architecture.md +11 -11
- package/index.js +13 -13
- package/locale/en.json +6 -6
- package/locale/zh.json +6 -6
- package/package.json +86 -84
- package/plugins.json +76 -76
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Scorp1o117
|
|
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 Scorp1o117
|
|
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
|
@@ -1,33 +1,41 @@
|
|
|
1
|
-
# DeepSeek Harness Enhancement Suite
|
|
2
|
-
|
|
3
|
-
## DSH 0.2.1-rc.
|
|
4
|
-
|
|
5
|
-
Supports DSH 0.2.1-rc.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
# DeepSeek Harness Enhancement Suite
|
|
2
|
+
|
|
3
|
+
## DSH 0.2.1-rc.3
|
|
4
|
+
|
|
5
|
+
Supports DSH 0.2.1-rc.3, including explicit prerelease engines.dsh and peer ranges. This host update adds More navigation menus, keeps unsent drafts on New Session, and follows the official /models listing on the DeepSeek API-key route; the plugin APIs used here remain unchanged, and no removed host API (`ctx.layout.entryVisibility`, `agentPresetNavigation`) was in use.
|
|
6
|
+
|
|
7
|
+
## DSH 0.2.1-rc.2
|
|
8
|
+
|
|
9
|
+
Supports DSH 0.2.1-rc.2, including explicit prerelease engines.dsh and peer ranges. This host update adds DeepSeek V4.1 Flash 1017 and Search/Fetch APIs; the plugin APIs used here remain unchanged. Existing reasoning settings and the opt-in augmentation policy are preserved.
|
|
10
|
+
|
|
11
|
+
## DSH 0.2.1-rc.1
|
|
12
|
+
|
|
13
|
+
Supports DSH 0.2.1-rc.1. Compatibility is declared through `engines.dsh` and matching peer ranges, including this exact prerelease. The existing 0.2.0-rc.2 support is retained.
|
|
14
|
+
|
|
15
|
+
Install and update **Vision, Soul / Persona, Memory, Marketplace, Reasoning Options and Motion UI** from a DSH plugin configuration page or the dsh-enhance CLI. Version 0.3.1 requires DSH 0.2.0-rc.2 or later 0.2.x and Node >=22.19.
|
|
16
|
+
|
|
17
|
+
## Desktop and Web configuration page
|
|
18
|
+
|
|
19
|
+
Use the Desktop-provided dsh command (Application → Manage dsh Command):
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
dsh plugin --profile desktop add dsh-enhancement-suite@0.3.1
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Use --profile web for Web. Restart DSH and open **Plugins → Installed → dsh-enhancement-suite**. Choose **Install all**, **Update installed plugins**, or an individual install/update button. Motion UI is included as dsh-motion-ui. The page displays installed versions, operation progress and errors. All operations target the active Host's profile and use its official CLI; no API credentials are needed. Updating installed plugins skips missing plugins; Install all installs or updates all six. Restart DSH afterwards.
|
|
26
|
+
|
|
27
|
+
The suite shares the marketplace's operation engine without mounting a duplicate marketplace plugin. Installing all adds the marketplace as its own independent bundle. Use the marketplace configuration page for uninstall and management of other installed plugins. Built-in DSH bundles are protected.
|
|
28
|
+
|
|
29
|
+
## CLI
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
npx dsh-enhancement-suite list --profile desktop
|
|
33
|
+
npx dsh-enhancement-suite install --profile desktop
|
|
34
|
+
npx dsh-enhancement-suite update --profile desktop --only motion,reasoning
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
On Desktop, the dsh command on PATH must be installed by Desktop. If another global CLI shadows it on Windows, set DSH_ENHANCE_DESKTOP_EXECUTABLE to the absolute DeepSeek Harness.exe path before running dsh-enhance; this uses Desktop's bundled CLI and pnpm. --dry-run previews operations. --only accepts short keys or package names. Individual plugins remain independently maintained and are installed directly into the profile.
|
|
38
|
+
|
|
39
|
+
## Validation
|
|
40
|
+
|
|
41
|
+
npm run check validates syntax, the six-plugin registry and CLI help/list. npm test validates the bundle, configuration page and CLI selection.
|
package/README.zh.md
CHANGED
|
@@ -1,31 +1,39 @@
|
|
|
1
|
-
# DeepSeek Harness Enhancement Suite
|
|
2
|
-
|
|
3
|
-
## DSH 0.2.1-rc.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
# DeepSeek Harness Enhancement Suite
|
|
2
|
+
|
|
3
|
+
## DSH 0.2.1-rc.3
|
|
4
|
+
|
|
5
|
+
适配 DSH 0.2.1-rc.3,明确声明该预发布版本的 engines.dsh 与 peer 范围。宿主新增侧栏/会话「更多」导航菜单、修复新建会话丢失未发送草稿、DeepSeek API Key 路由改跟随官方 /models 模型列表;本套件使用的接口保持不变,也未使用任何被移除的宿主 API(`ctx.layout.entryVisibility`、`agentPresetNavigation`)。
|
|
6
|
+
|
|
7
|
+
## DSH 0.2.1-rc.2
|
|
8
|
+
|
|
9
|
+
适配 DSH 0.2.1-rc.2,明确声明该预发布版本的 engines.dsh 与 peer 范围。宿主新增 DeepSeek V4.1 Flash 1017 及 Search/Fetch API,本插件使用的接口保持不变。保留已有推理配置及自动补齐显式开启策略。
|
|
10
|
+
|
|
11
|
+
## DSH 0.2.1-rc.1
|
|
12
|
+
|
|
13
|
+
支持 DSH 0.2.1-rc.1,通过 `engines.dsh` 和一致的 peer 范围声明兼容,明确包含该预发布版本,并保留已有 0.2.0-rc.2 支持。
|
|
14
|
+
|
|
15
|
+
在 DSH 插件配置页或 dsh-enhance 命令行中安装、更新 **视觉、Soul / Persona、长期记忆、插件市场、推理强度、Motion UI** 六个插件。0.3.1 需要 DSH 0.2.0-rc.2 或后续 0.2.x,以及 Node >=22.19。
|
|
16
|
+
|
|
17
|
+
## Desktop / Web 配置页
|
|
18
|
+
|
|
19
|
+
使用 Desktop 提供的 dsh 命令(应用 → 管理 dsh 命令):
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
dsh plugin --profile desktop add dsh-enhancement-suite@0.3.1
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Web 使用 --profile web。重启后打开 **插件 → 已安装 → dsh-enhancement-suite**,可一键安装全部、一键更新已安装插件,或单独安装/更新。Motion UI 对应 dsh-motion-ui。页面展示真实安装版本、进度和错误,不需要 API 密钥。更新已安装插件会跳过未安装项;安装全部则安装或更新全部六项。完成后重启 DSH。
|
|
26
|
+
|
|
27
|
+
套件共用插件市场的操作后端,不重复挂载市场插件。一键安装全部后,市场作为独立 bundle 挂载。卸载插件和管理套件之外的插件,请使用插件市场配置页。内置 DSH bundle 由 DSH 自身管理。
|
|
28
|
+
|
|
29
|
+
## 命令行
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
npx dsh-enhancement-suite list --profile desktop
|
|
33
|
+
npx dsh-enhancement-suite install --profile desktop
|
|
34
|
+
npx dsh-enhancement-suite update --profile desktop --only motion,reasoning
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Desktop 的 PATH 命令应通过 Desktop 安装。如果被全局 Web CLI 遮挡,Windows 可设置 DSH_ENHANCE_DESKTOP_EXECUTABLE 为 DeepSeek Harness.exe 的绝对路径,命令行会调用 Desktop 自带 CLI 和 pnpm。--dry-run 预览操作;--only 支持短名称和完整包名。各插件保持独立维护并直接安装到 Profile。
|
|
38
|
+
|
|
39
|
+
npm run check 验证语法、六插件清单和 CLI help/list;npm test 验证 bundle、配置页和命令行选择。
|
package/VERIFICATION.md
CHANGED
|
@@ -1,17 +1,33 @@
|
|
|
1
|
-
# v0.3.1 validation — 2026-10-12
|
|
2
|
-
|
|
3
|
-
- npm run check and npm test passed (3 tests).
|
|
4
|
-
- Six-plugin registry includes dsh-motion-ui; suite page submits revision-checked batch requests and follows DSH locale.
|
|
5
|
-
- Packed suite started on the installed Desktop 0.2.0-rc.2 runtime in an isolated profile alongside the marketplace without duplicate mounts.
|
|
6
|
-
- Browser showed all six plugin rows and one-click install/update controls. Refresh completed through the actual Host settings channel.
|
|
7
|
-
- The shared engine's real Desktop install/update/uninstall path was exercised by the marketplace smoke; batch selection and serialization are covered by engine tests.
|
|
8
|
-
|
|
9
|
-
- The real shared backend completed installation of all six plugins and updated an explicitly pinned reasoning package from 0.4.1 to 0.5.0. Minimum backend is marketplace 0.5.2 to include bounded subprocess cleanup.
|
|
10
|
-
|
|
11
|
-
## 2026-10-17: 0.3.2, DSH 0.2.1-rc.1
|
|
12
|
-
|
|
13
|
-
- Full npm test command passed in a fresh npm dependency tree using the published DSH 0.2.1-rc.1 packages (3 Node test-runner cases, plus any script assertions). No skipped test-runner cases.
|
|
14
|
-
- Packed package installed with the official DSH CLI into an isolated Web profile. Configuration composition succeeded; the Web service started and authenticated HTTP returned 200. All six plugin bundles appeared enabled in the running UI.
|
|
15
|
-
- engines.dsh and every DSH peer range accept 0.2.0-rc.2 and 0.2.1-rc.1; unverified 0.2.1 alpha releases remain excluded.
|
|
16
|
-
- Reasoning page was opened, left, reopened, edited, saved, and refreshed. The saved value persisted and automatic reasoning augmentation remained off. Backend regressions cover repeated reconciliation after native removal, explicit opt-in, preserved custom declarations, and gateway-only writes.
|
|
17
|
-
- New packaged Desktop 0.2.1 was not exercised; these results verify Web. Motion UI was excluded from the adaptation.
|
|
1
|
+
# v0.3.1 validation — 2026-10-12
|
|
2
|
+
|
|
3
|
+
- npm run check and npm test passed (3 tests).
|
|
4
|
+
- Six-plugin registry includes dsh-motion-ui; suite page submits revision-checked batch requests and follows DSH locale.
|
|
5
|
+
- Packed suite started on the installed Desktop 0.2.0-rc.2 runtime in an isolated profile alongside the marketplace without duplicate mounts.
|
|
6
|
+
- Browser showed all six plugin rows and one-click install/update controls. Refresh completed through the actual Host settings channel.
|
|
7
|
+
- The shared engine's real Desktop install/update/uninstall path was exercised by the marketplace smoke; batch selection and serialization are covered by engine tests.
|
|
8
|
+
|
|
9
|
+
- The real shared backend completed installation of all six plugins and updated an explicitly pinned reasoning package from 0.4.1 to 0.5.0. Minimum backend is marketplace 0.5.2 to include bounded subprocess cleanup.
|
|
10
|
+
|
|
11
|
+
## 2026-10-17: 0.3.2, DSH 0.2.1-rc.1
|
|
12
|
+
|
|
13
|
+
- Full npm test command passed in a fresh npm dependency tree using the published DSH 0.2.1-rc.1 packages (3 Node test-runner cases, plus any script assertions). No skipped test-runner cases.
|
|
14
|
+
- Packed package installed with the official DSH CLI into an isolated Web profile. Configuration composition succeeded; the Web service started and authenticated HTTP returned 200. All six plugin bundles appeared enabled in the running UI.
|
|
15
|
+
- engines.dsh and every DSH peer range accept 0.2.0-rc.2 and 0.2.1-rc.1; unverified 0.2.1 alpha releases remain excluded.
|
|
16
|
+
- Reasoning page was opened, left, reopened, edited, saved, and refreshed. The saved value persisted and automatic reasoning augmentation remained off. Backend regressions cover repeated reconciliation after native removal, explicit opt-in, preserved custom declarations, and gateway-only writes.
|
|
17
|
+
- New packaged Desktop 0.2.1 was not exercised; these results verify Web. Motion UI was excluded from the adaptation.
|
|
18
|
+
|
|
19
|
+
## 2026-10-17: 0.3.3, DSH 0.2.1-rc.2
|
|
20
|
+
|
|
21
|
+
- Full npm test passed in fresh dependencies using published DSH 0.2.1-rc.2 packages: 3 Node test-runner cases plus script assertions, with no failed or skipped cases.
|
|
22
|
+
- Official CLI installed the packed plugins in an isolated Web profile. Configuration composition, service startup and authenticated HTTP 200 passed.
|
|
23
|
+
- engines.dsh and DSH peer ranges accept 0.2.0-rc.2, 0.2.1-rc.1 and 0.2.1-rc.2, while unverified alpha releases remain excluded.
|
|
24
|
+
- Source comparison found no change to the tool, system-prompt, settings or pi-ai interfaces used by these plugins. Native reasoning settings retain the opt-in augmentation policy.
|
|
25
|
+
- This verification covers Web. Motion UI and the Desktop application are handled separately. No real-model generation was requested.
|
|
26
|
+
|
|
27
|
+
## 2026-10-24: 0.3.4, DSH 0.2.1-rc.3
|
|
28
|
+
|
|
29
|
+
- Full npm test passed in fresh dependencies resolving dsh-plugin-marketplace 0.5.6 (rc.3 peers) with @deepseek-ai/dsh-settings 0.2.1-rc.3: 3 Node test-runner cases plus script assertions, with no failed or skipped cases.
|
|
30
|
+
- Official CLI installed the packed suite in an isolated Web profile built from the shipped web template. Configuration composition, service startup and authenticated HTTP 200 passed.
|
|
31
|
+
- engines.dsh and every DSH peer range accept 0.2.0-rc.2, 0.2.1-rc.1, 0.2.1-rc.2 and 0.2.1-rc.3, while unverified alpha releases remain excluded.
|
|
32
|
+
- Source comparison of dsh-v0.2.1-rc.2...dsh-v0.2.1-rc.3 found no change to the tool, system-prompt, settings or pi-ai interfaces used by these plugins. The removed ctx.layout.entryVisibility and agentPresetNavigation APIs were not in use.
|
|
33
|
+
- This verification covers Web. The Desktop application was not exercised. No real-model generation was requested.
|
package/bin/dsh-enhance.mjs
CHANGED
|
@@ -493,12 +493,12 @@ async function cmdInstall(profile, only, dryRun) {
|
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
495
|
|
|
496
|
-
async function cmdUpdate(profile, only, dryRun) {
|
|
497
|
-
const plugins = resolveSelection(only).filter(plugin => installedVersion(plugin.name, profile));
|
|
498
|
-
if (!plugins.length) { info("No installed suite plugins to update."); return; }
|
|
499
|
-
return cmdInstall(profile, plugins.map(plugin => plugin.name), dryRun);
|
|
500
|
-
}
|
|
501
|
-
|
|
496
|
+
async function cmdUpdate(profile, only, dryRun) {
|
|
497
|
+
const plugins = resolveSelection(only).filter(plugin => installedVersion(plugin.name, profile));
|
|
498
|
+
if (!plugins.length) { info("No installed suite plugins to update."); return; }
|
|
499
|
+
return cmdInstall(profile, plugins.map(plugin => plugin.name), dryRun);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
502
|
function cmdDoctor(profile) {
|
|
503
503
|
let healthy = true;
|
|
504
504
|
head("DeepSeek Harness Enhancement Suite — doctor");
|
|
@@ -20,7 +20,7 @@ const fail = (message) => {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
const manifest = JSON.parse(readFileSync(join(ROOT, "plugins.json"), "utf8"));
|
|
23
|
-
if (manifest.dsh !== ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1") fail(`expected dsh requirement >=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1, got ${manifest.dsh ?? "missing"}`);
|
|
23
|
+
if (manifest.dsh !== ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3") fail(`expected dsh requirement >=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3, got ${manifest.dsh ?? "missing"}`);
|
|
24
24
|
if (!Array.isArray(manifest.plugins)) {
|
|
25
25
|
fail("plugins.json: missing plugins array");
|
|
26
26
|
} else {
|
package/client.js
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
window.__ModuleLoader__.load({
|
|
2
|
-
id: "dsh-enhancement-suite",
|
|
3
|
-
factory: function (require) {
|
|
4
|
-
var react = require("react"), h = react.createElement;
|
|
5
|
-
var zh = {
|
|
6
|
-
title: "增强套件", intro: "在当前 Profile 安装和更新六个增强插件。完成后请重启 DSH。",
|
|
7
|
-
installAll: "一键安装全部", updateAll: "一键更新已安装插件", refresh: "刷新列表",
|
|
8
|
-
install: "安装", update: "更新", missing: "未安装", busy: "正在处理…", ok: "操作完成,请重启 DSH", error: "操作失败", unavailable: "配置未加载", hostTimeout: "宿主尚未确认请求,请检查插件是否启用。",
|
|
9
|
-
};
|
|
10
|
-
var en = {
|
|
11
|
-
title: "Enhancement Suite", intro: "Install and update six enhancement plugins in the current profile. Restart DSH afterwards.",
|
|
12
|
-
installAll: "Install all", updateAll: "Update installed plugins", refresh: "Refresh list",
|
|
13
|
-
install: "Install", update: "Update", missing: "Not installed", busy: "Working…", ok: "Completed; restart DSH", error: "Operation failed", unavailable: "Configuration is not loaded", hostTimeout: "The host has not acknowledged the request; check that the plugin is enabled.",
|
|
14
|
-
};
|
|
15
|
-
var plugins = [
|
|
16
|
-
["dsh-tool-vision", "Vision"], ["dsh-soul-md", "Soul / Persona"], ["dsh-tdai-memory", "Memory"],
|
|
17
|
-
["dsh-plugin-marketplace", "Marketplace"], ["dsh-reasoning-options", "Reasoning"], ["dsh-motion-ui", "Motion UI"],
|
|
18
|
-
];
|
|
19
|
-
function SuitePage(props) {
|
|
20
|
-
var scope = props.scope, t = props.t;
|
|
21
|
-
var [snapshot, setSnapshot] = react.useState(function () { return scope.getSnapshot(); });
|
|
22
|
-
var [sending, setSending] = react.useState(false);
|
|
23
|
-
var [error, setError] = react.useState("");
|
|
24
|
-
var refreshLocale = react.useState(0)[1];
|
|
25
|
-
react.useEffect(function () { return props.locale.subscribe(function () { refreshLocale(function (v) { return v + 1; }); }); }, [props.locale]);
|
|
26
|
-
react.useEffect(function () { setSnapshot(scope.getSnapshot()); return scope.subscribe(function () { setSnapshot(scope.getSnapshot()); }); }, [scope]);
|
|
27
|
-
var channel = snapshot.status === "ready" ? snapshot.value : {};
|
|
28
|
-
var request = channel.install || {}, state = channel.installState || {};
|
|
29
|
-
react.useEffect(function () {
|
|
30
|
-
if (!request.ts) return;
|
|
31
|
-
var timer = setTimeout(function () { setError("hostTimeout"); }, 15000);
|
|
32
|
-
return function () { clearTimeout(timer); };
|
|
33
|
-
}, [request.ts]);
|
|
34
|
-
if (snapshot.status !== "ready") return h("p", null, t("unavailable"));
|
|
35
|
-
var busy = sending || Boolean(request.ts) || state.status === "running";
|
|
36
|
-
function run(pkg, action) {
|
|
37
|
-
if (busy || !snapshot.writable) return;
|
|
38
|
-
setSending(true); setError("");
|
|
39
|
-
var value = { pkg: pkg, action: action, ts: Date.now() };
|
|
40
|
-
Promise.resolve().then(function () { return scope.mutate([{ op: "set", path: ["install"], value: value }], snapshot.revision); }).then(function (accepted) {
|
|
41
|
-
setSnapshot(scope.getSnapshot());
|
|
42
|
-
if (!accepted) setError("error");
|
|
43
|
-
}).catch(function () { setError("error"); }).finally(function () { setSending(false); });
|
|
44
|
-
}
|
|
45
|
-
var rows = channel.inventory && channel.inventory.packages || [];
|
|
46
|
-
var button = function (label, pkg, action) { return h("button", { type: "button", disabled: busy || !snapshot.writable, onClick: function () { run(pkg, action); }, style: { padding: "8px 12px", borderRadius: 6, cursor: "pointer", font: "inherit" } }, t(label)); };
|
|
47
|
-
return h("section", { style: { maxWidth: 720, display: "flex", flexDirection: "column", gap: 16, fontSize: 13, color: "var(--dsw-alias-label-primary)" } },
|
|
48
|
-
h("h3", { style: { margin: 0 } }, t("title") + " · " + (channel.inventory?.profile || "")),
|
|
49
|
-
h("p", { style: { margin: 0 } }, t("intro")),
|
|
50
|
-
h("div", { style: { display: "flex", gap: 8, flexWrap: "wrap" } }, button("installAll", "~suite", "suite-install"), button("updateAll", "~suite", "suite-update"), button("refresh", "~refresh", "refresh")),
|
|
51
|
-
plugins.map(function (plugin) {
|
|
52
|
-
var installed = rows.find(function (row) { return row.name === plugin[0]; });
|
|
53
|
-
return h("div", { key: plugin[0], style: { display: "flex", gap: 10, alignItems: "center", flexWrap: "wrap", padding: "12px 0", borderBottom: "1px solid var(--dsw-alias-border-l2)" } },
|
|
54
|
-
h("span", { style: { flex: "1 1 250px", overflowWrap: "anywhere" } }, plugin[0] + " · " + (installed?.version || t("missing"))), button(installed ? "update" : "install", plugin[0], installed ? "update" : "install"));
|
|
55
|
-
}),
|
|
56
|
-
error ? h("p", { role: "alert" }, t(error)) : null,
|
|
57
|
-
busy ? h("p", { role: "status" }, t("busy")) : state.status === "error" ? h("p", { role: "alert" }, t("error") + ": " + state.message) : state.status === "ok" ? h("p", { role: "status" }, t("ok")) : null);
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
inject: ["slots", "locale", "configForms"],
|
|
61
|
-
apply: function (ctx) {
|
|
62
|
-
ctx.effect(function () { return ctx.locale.register("enhancementSuite", { zh: zh, en: en }); });
|
|
63
|
-
var scope = ctx.configForms.get("enhancement-suite"), t = ctx.locale.bind("enhancementSuite");
|
|
64
|
-
ctx.slots.inject("plugins.bundle.config", function () {
|
|
65
|
-
return ctx.slots.register({ name: "plugins.bundle.config", key: "dsh-enhancement-suite", locale: "enhancementSuite" }, function (props) {
|
|
66
|
-
return h(SuitePage, Object.assign({}, props, { scope: scope, t: t, locale: ctx.locale }));
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
},
|
|
72
|
-
});
|
|
1
|
+
window.__ModuleLoader__.load({
|
|
2
|
+
id: "dsh-enhancement-suite",
|
|
3
|
+
factory: function (require) {
|
|
4
|
+
var react = require("react"), h = react.createElement;
|
|
5
|
+
var zh = {
|
|
6
|
+
title: "增强套件", intro: "在当前 Profile 安装和更新六个增强插件。完成后请重启 DSH。",
|
|
7
|
+
installAll: "一键安装全部", updateAll: "一键更新已安装插件", refresh: "刷新列表",
|
|
8
|
+
install: "安装", update: "更新", missing: "未安装", busy: "正在处理…", ok: "操作完成,请重启 DSH", error: "操作失败", unavailable: "配置未加载", hostTimeout: "宿主尚未确认请求,请检查插件是否启用。",
|
|
9
|
+
};
|
|
10
|
+
var en = {
|
|
11
|
+
title: "Enhancement Suite", intro: "Install and update six enhancement plugins in the current profile. Restart DSH afterwards.",
|
|
12
|
+
installAll: "Install all", updateAll: "Update installed plugins", refresh: "Refresh list",
|
|
13
|
+
install: "Install", update: "Update", missing: "Not installed", busy: "Working…", ok: "Completed; restart DSH", error: "Operation failed", unavailable: "Configuration is not loaded", hostTimeout: "The host has not acknowledged the request; check that the plugin is enabled.",
|
|
14
|
+
};
|
|
15
|
+
var plugins = [
|
|
16
|
+
["dsh-tool-vision", "Vision"], ["dsh-soul-md", "Soul / Persona"], ["dsh-tdai-memory", "Memory"],
|
|
17
|
+
["dsh-plugin-marketplace", "Marketplace"], ["dsh-reasoning-options", "Reasoning"], ["dsh-motion-ui", "Motion UI"],
|
|
18
|
+
];
|
|
19
|
+
function SuitePage(props) {
|
|
20
|
+
var scope = props.scope, t = props.t;
|
|
21
|
+
var [snapshot, setSnapshot] = react.useState(function () { return scope.getSnapshot(); });
|
|
22
|
+
var [sending, setSending] = react.useState(false);
|
|
23
|
+
var [error, setError] = react.useState("");
|
|
24
|
+
var refreshLocale = react.useState(0)[1];
|
|
25
|
+
react.useEffect(function () { return props.locale.subscribe(function () { refreshLocale(function (v) { return v + 1; }); }); }, [props.locale]);
|
|
26
|
+
react.useEffect(function () { setSnapshot(scope.getSnapshot()); return scope.subscribe(function () { setSnapshot(scope.getSnapshot()); }); }, [scope]);
|
|
27
|
+
var channel = snapshot.status === "ready" ? snapshot.value : {};
|
|
28
|
+
var request = channel.install || {}, state = channel.installState || {};
|
|
29
|
+
react.useEffect(function () {
|
|
30
|
+
if (!request.ts) return;
|
|
31
|
+
var timer = setTimeout(function () { setError("hostTimeout"); }, 15000);
|
|
32
|
+
return function () { clearTimeout(timer); };
|
|
33
|
+
}, [request.ts]);
|
|
34
|
+
if (snapshot.status !== "ready") return h("p", null, t("unavailable"));
|
|
35
|
+
var busy = sending || Boolean(request.ts) || state.status === "running";
|
|
36
|
+
function run(pkg, action) {
|
|
37
|
+
if (busy || !snapshot.writable) return;
|
|
38
|
+
setSending(true); setError("");
|
|
39
|
+
var value = { pkg: pkg, action: action, ts: Date.now() };
|
|
40
|
+
Promise.resolve().then(function () { return scope.mutate([{ op: "set", path: ["install"], value: value }], snapshot.revision); }).then(function (accepted) {
|
|
41
|
+
setSnapshot(scope.getSnapshot());
|
|
42
|
+
if (!accepted) setError("error");
|
|
43
|
+
}).catch(function () { setError("error"); }).finally(function () { setSending(false); });
|
|
44
|
+
}
|
|
45
|
+
var rows = channel.inventory && channel.inventory.packages || [];
|
|
46
|
+
var button = function (label, pkg, action) { return h("button", { type: "button", disabled: busy || !snapshot.writable, onClick: function () { run(pkg, action); }, style: { padding: "8px 12px", borderRadius: 6, cursor: "pointer", font: "inherit" } }, t(label)); };
|
|
47
|
+
return h("section", { style: { maxWidth: 720, display: "flex", flexDirection: "column", gap: 16, fontSize: 13, color: "var(--dsw-alias-label-primary)" } },
|
|
48
|
+
h("h3", { style: { margin: 0 } }, t("title") + " · " + (channel.inventory?.profile || "")),
|
|
49
|
+
h("p", { style: { margin: 0 } }, t("intro")),
|
|
50
|
+
h("div", { style: { display: "flex", gap: 8, flexWrap: "wrap" } }, button("installAll", "~suite", "suite-install"), button("updateAll", "~suite", "suite-update"), button("refresh", "~refresh", "refresh")),
|
|
51
|
+
plugins.map(function (plugin) {
|
|
52
|
+
var installed = rows.find(function (row) { return row.name === plugin[0]; });
|
|
53
|
+
return h("div", { key: plugin[0], style: { display: "flex", gap: 10, alignItems: "center", flexWrap: "wrap", padding: "12px 0", borderBottom: "1px solid var(--dsw-alias-border-l2)" } },
|
|
54
|
+
h("span", { style: { flex: "1 1 250px", overflowWrap: "anywhere" } }, plugin[0] + " · " + (installed?.version || t("missing"))), button(installed ? "update" : "install", plugin[0], installed ? "update" : "install"));
|
|
55
|
+
}),
|
|
56
|
+
error ? h("p", { role: "alert" }, t(error)) : null,
|
|
57
|
+
busy ? h("p", { role: "status" }, t("busy")) : state.status === "error" ? h("p", { role: "alert" }, t("error") + ": " + state.message) : state.status === "ok" ? h("p", { role: "status" }, t("ok")) : null);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
inject: ["slots", "locale", "configForms"],
|
|
61
|
+
apply: function (ctx) {
|
|
62
|
+
ctx.effect(function () { return ctx.locale.register("enhancementSuite", { zh: zh, en: en }); });
|
|
63
|
+
var scope = ctx.configForms.get("enhancement-suite"), t = ctx.locale.bind("enhancementSuite");
|
|
64
|
+
ctx.slots.inject("plugins.bundle.config", function () {
|
|
65
|
+
return ctx.slots.register({ name: "plugins.bundle.config", key: "dsh-enhancement-suite", locale: "enhancementSuite" }, function (props) {
|
|
66
|
+
return h(SuitePage, Object.assign({}, props, { scope: scope, t: t, locale: ctx.locale }));
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
});
|
package/cordis.patch.yml
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
- insert:
|
|
2
|
-
- id: enhancement-suite
|
|
3
|
-
name: 'dsh-enhancement-suite'
|
|
1
|
+
- insert:
|
|
2
|
+
- id: enhancement-suite
|
|
3
|
+
name: 'dsh-enhancement-suite'
|
package/docs/architecture.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Enhancement suite architecture
|
|
2
|
-
|
|
3
|
-
The suite has two entry points: a DSH bundle with a configuration page, and the standalone dsh-enhance CLI. plugins.json owns the six-plugin registry, including dsh-motion-ui.
|
|
4
|
-
|
|
5
|
-
The Host bundle registers enhancement-suite with the same management schema and request consumer exported by dsh-plugin-marketplace/management. It passes the six package names as the allowed batch selection. The browser uses configForms to submit revision-checked requests. The suite does not mount the marketplace Host itself; installing the marketplace as a profile dependency gives it its own independent bundle entry.
|
|
6
|
-
|
|
7
|
-
The shared engine discovers the active profile from profileContext and settings.documentPath. Desktop subprocesses use the packaged dsh-desktop-host CLI under Electron Node mode, which carries Desktop profile authorization and bundled pnpm. Web subprocesses use their active dsh CLI. A process-wide profile queue serializes suite and marketplace package operations, including when module copies differ.
|
|
8
|
-
|
|
9
|
-
Install and update invoke the official CLI with add package@latest. DSH reconciles bundle registrations. Uninstall invokes remove and structurally removes legacy manual YAML mounts and their configuration patches. Inventory reads direct profile dependencies plus built-in bundle names; built-ins remain managed by DSH. Progress, completion and errors use the plugin settings namespace outside HMR transactions. A failed batch reports partial installed state.
|
|
10
|
-
|
|
11
|
-
The CLI retains list/install/update/doctor and --only/--profile/--dry-run. Windows Desktop installations shadowed by a global Web CLI can set DSH_ENHANCE_DESKTOP_EXECUTABLE to select the packaged carrier explicitly. The UI always uses the active Host carrier. Package changes require restarting DSH.
|
|
1
|
+
# Enhancement suite architecture
|
|
2
|
+
|
|
3
|
+
The suite has two entry points: a DSH bundle with a configuration page, and the standalone dsh-enhance CLI. plugins.json owns the six-plugin registry, including dsh-motion-ui.
|
|
4
|
+
|
|
5
|
+
The Host bundle registers enhancement-suite with the same management schema and request consumer exported by dsh-plugin-marketplace/management. It passes the six package names as the allowed batch selection. The browser uses configForms to submit revision-checked requests. The suite does not mount the marketplace Host itself; installing the marketplace as a profile dependency gives it its own independent bundle entry.
|
|
6
|
+
|
|
7
|
+
The shared engine discovers the active profile from profileContext and settings.documentPath. Desktop subprocesses use the packaged dsh-desktop-host CLI under Electron Node mode, which carries Desktop profile authorization and bundled pnpm. Web subprocesses use their active dsh CLI. A process-wide profile queue serializes suite and marketplace package operations, including when module copies differ.
|
|
8
|
+
|
|
9
|
+
Install and update invoke the official CLI with add package@latest. DSH reconciles bundle registrations. Uninstall invokes remove and structurally removes legacy manual YAML mounts and their configuration patches. Inventory reads direct profile dependencies plus built-in bundle names; built-ins remain managed by DSH. Progress, completion and errors use the plugin settings namespace outside HMR transactions. A failed batch reports partial installed state.
|
|
10
|
+
|
|
11
|
+
The CLI retains list/install/update/doctor and --only/--profile/--dry-run. Windows Desktop installations shadowed by a global Web CLI can set DSH_ENHANCE_DESKTOP_EXECUTABLE to select the packaged carrier explicitly. The UI always uses the active Host carrier. Package changes require restarting DSH.
|
package/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import z from "@deepseek-ai/schemastery";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
|
-
import { managementFields, installManagement } from "dsh-plugin-marketplace/management";
|
|
4
|
-
|
|
5
|
-
export const name = "enhancement-suite";
|
|
6
|
-
export const inject = ["settings", "profileContext"];
|
|
7
|
-
export const Config = z.object(managementFields).volatile();
|
|
8
|
-
const manifest = JSON.parse(readFileSync(new URL("./plugins.json", import.meta.url), "utf8"));
|
|
9
|
-
|
|
10
|
-
/** Mount the same Desktop-aware operation engine used by the marketplace. */
|
|
11
|
-
export function apply(ctx, config) {
|
|
12
|
-
installManagement(ctx, config, name, { packages: manifest.plugins.map(plugin => plugin.name) });
|
|
13
|
-
}
|
|
1
|
+
import z from "@deepseek-ai/schemastery";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { managementFields, installManagement } from "dsh-plugin-marketplace/management";
|
|
4
|
+
|
|
5
|
+
export const name = "enhancement-suite";
|
|
6
|
+
export const inject = ["settings", "profileContext"];
|
|
7
|
+
export const Config = z.object(managementFields).volatile();
|
|
8
|
+
const manifest = JSON.parse(readFileSync(new URL("./plugins.json", import.meta.url), "utf8"));
|
|
9
|
+
|
|
10
|
+
/** Mount the same Desktop-aware operation engine used by the marketplace. */
|
|
11
|
+
export function apply(ctx, config) {
|
|
12
|
+
installManagement(ctx, config, name, { packages: manifest.plugins.map(plugin => plugin.name) });
|
|
13
|
+
}
|
package/locale/en.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta": {
|
|
3
|
-
"title": "Enhancement Suite",
|
|
4
|
-
"description": "Install and update six enhancement plugins in DSH Desktop and Web."
|
|
5
|
-
}
|
|
6
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "Enhancement Suite",
|
|
4
|
+
"description": "Install and update six enhancement plugins in DSH Desktop and Web."
|
|
5
|
+
}
|
|
6
|
+
}
|
package/locale/zh.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{
|
|
2
|
-
"meta": {
|
|
3
|
-
"title": "增强套件",
|
|
4
|
-
"description": "一键安装和更新六个增强插件,支持 DSH Desktop。"
|
|
5
|
-
}
|
|
6
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "增强套件",
|
|
4
|
+
"description": "一键安装和更新六个增强插件,支持 DSH Desktop。"
|
|
5
|
+
}
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,84 +1,86 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dsh-enhancement-suite",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "Install and update six DSH enhancement plugins from Desktop/Web configuration or the CLI, including Motion UI.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"engines": {
|
|
8
|
-
"node": ">=22.19",
|
|
9
|
-
"dsh": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1"
|
|
10
|
-
},
|
|
11
|
-
"bin": {
|
|
12
|
-
"dsh-enhance": "./bin/dsh-enhance.mjs"
|
|
13
|
-
},
|
|
14
|
-
"files": [
|
|
15
|
-
"bin",
|
|
16
|
-
"plugins.json",
|
|
17
|
-
"README.md",
|
|
18
|
-
"README.zh.md",
|
|
19
|
-
"LICENSE",
|
|
20
|
-
"docs",
|
|
21
|
-
"index.js",
|
|
22
|
-
"client.js",
|
|
23
|
-
"cordis.patch.yml",
|
|
24
|
-
"locale",
|
|
25
|
-
"VERIFICATION.md"
|
|
26
|
-
],
|
|
27
|
-
"scripts": {
|
|
28
|
-
"check": "node --check index.js && node --check client.js && node --check bin/dsh-enhance.mjs && node bin/validate-manifest.mjs && node bin/dsh-enhance.mjs --help && node bin/dsh-enhance.mjs list",
|
|
29
|
-
"prepublishOnly": "npm run check",
|
|
30
|
-
"test": "node --test tests/*.test.mjs"
|
|
31
|
-
},
|
|
32
|
-
"keywords": [
|
|
33
|
-
"deepseek-harness",
|
|
34
|
-
"dsh",
|
|
35
|
-
"dsh-plugin",
|
|
36
|
-
"ai-agent",
|
|
37
|
-
"vision",
|
|
38
|
-
"memory",
|
|
39
|
-
"persona",
|
|
40
|
-
"plugin-marketplace"
|
|
41
|
-
],
|
|
42
|
-
"repository": {
|
|
43
|
-
"type": "git",
|
|
44
|
-
"url": "git+https://github.com/Scorp1o117/dsh-enhancement-suite.git"
|
|
45
|
-
},
|
|
46
|
-
"bugs": {
|
|
47
|
-
"url": "https://github.com/Scorp1o117/dsh-enhancement-suite/issues"
|
|
48
|
-
},
|
|
49
|
-
"homepage": "https://github.com/Scorp1o117/dsh-enhancement-suite",
|
|
50
|
-
"dependencies": {
|
|
51
|
-
"dsh-plugin-marketplace": "^0.5.2",
|
|
52
|
-
"@deepseek-ai/schemastery": "^3.18.4"
|
|
53
|
-
},
|
|
54
|
-
"main": "index.js",
|
|
55
|
-
"exports": {
|
|
56
|
-
".": "./index.js",
|
|
57
|
-
"./client": "./client.js",
|
|
58
|
-
"./package.json": "./package.json",
|
|
59
|
-
"./locale/*.json": "./locale/*.json"
|
|
60
|
-
},
|
|
61
|
-
"peerDependencies": {
|
|
62
|
-
"@deepseek-ai/dsh-settings": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1",
|
|
63
|
-
"react": "^18.2.0"
|
|
64
|
-
},
|
|
65
|
-
"dsh": {
|
|
66
|
-
"bundle": {
|
|
67
|
-
"patch": "./cordis.patch.yml"
|
|
68
|
-
},
|
|
69
|
-
"client": {
|
|
70
|
-
"platform": "web"
|
|
71
|
-
},
|
|
72
|
-
"compatibility": {
|
|
73
|
-
"dsh": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1",
|
|
74
|
-
"node": ">=22.19",
|
|
75
|
-
"profiles": [
|
|
76
|
-
"web",
|
|
77
|
-
"desktop"
|
|
78
|
-
],
|
|
79
|
-
"dshReleases": {
|
|
80
|
-
"0.2.1-rc.1": "compatible"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-enhancement-suite",
|
|
3
|
+
"version": "0.3.4",
|
|
4
|
+
"description": "Install and update six DSH enhancement plugins from Desktop/Web configuration or the CLI, including Motion UI.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22.19",
|
|
9
|
+
"dsh": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3"
|
|
10
|
+
},
|
|
11
|
+
"bin": {
|
|
12
|
+
"dsh-enhance": "./bin/dsh-enhance.mjs"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"bin",
|
|
16
|
+
"plugins.json",
|
|
17
|
+
"README.md",
|
|
18
|
+
"README.zh.md",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"docs",
|
|
21
|
+
"index.js",
|
|
22
|
+
"client.js",
|
|
23
|
+
"cordis.patch.yml",
|
|
24
|
+
"locale",
|
|
25
|
+
"VERIFICATION.md"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"check": "node --check index.js && node --check client.js && node --check bin/dsh-enhance.mjs && node bin/validate-manifest.mjs && node bin/dsh-enhance.mjs --help && node bin/dsh-enhance.mjs list",
|
|
29
|
+
"prepublishOnly": "npm run check",
|
|
30
|
+
"test": "node --test tests/*.test.mjs"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"deepseek-harness",
|
|
34
|
+
"dsh",
|
|
35
|
+
"dsh-plugin",
|
|
36
|
+
"ai-agent",
|
|
37
|
+
"vision",
|
|
38
|
+
"memory",
|
|
39
|
+
"persona",
|
|
40
|
+
"plugin-marketplace"
|
|
41
|
+
],
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/Scorp1o117/dsh-enhancement-suite.git"
|
|
45
|
+
},
|
|
46
|
+
"bugs": {
|
|
47
|
+
"url": "https://github.com/Scorp1o117/dsh-enhancement-suite/issues"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/Scorp1o117/dsh-enhancement-suite",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"dsh-plugin-marketplace": "^0.5.2",
|
|
52
|
+
"@deepseek-ai/schemastery": "^3.18.4"
|
|
53
|
+
},
|
|
54
|
+
"main": "index.js",
|
|
55
|
+
"exports": {
|
|
56
|
+
".": "./index.js",
|
|
57
|
+
"./client": "./client.js",
|
|
58
|
+
"./package.json": "./package.json",
|
|
59
|
+
"./locale/*.json": "./locale/*.json"
|
|
60
|
+
},
|
|
61
|
+
"peerDependencies": {
|
|
62
|
+
"@deepseek-ai/dsh-settings": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
63
|
+
"react": "^18.2.0"
|
|
64
|
+
},
|
|
65
|
+
"dsh": {
|
|
66
|
+
"bundle": {
|
|
67
|
+
"patch": "./cordis.patch.yml"
|
|
68
|
+
},
|
|
69
|
+
"client": {
|
|
70
|
+
"platform": "web"
|
|
71
|
+
},
|
|
72
|
+
"compatibility": {
|
|
73
|
+
"dsh": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
74
|
+
"node": ">=22.19",
|
|
75
|
+
"profiles": [
|
|
76
|
+
"web",
|
|
77
|
+
"desktop"
|
|
78
|
+
],
|
|
79
|
+
"dshReleases": {
|
|
80
|
+
"0.2.1-rc.1": "compatible",
|
|
81
|
+
"0.2.1-rc.2": "compatible",
|
|
82
|
+
"0.2.1-rc.3": "compatible"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
package/plugins.json
CHANGED
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
{
|
|
2
|
-
"suite": "dsh-enhancement-suite",
|
|
3
|
-
"node": ">=22.19",
|
|
4
|
-
"dsh": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1",
|
|
5
|
-
"defaultProfile": "web",
|
|
6
|
-
"rc6Pins": {
|
|
7
|
-
"dsh-tool-vision": "0.6.1",
|
|
8
|
-
"dsh-soul-md": "0.5.6",
|
|
9
|
-
"dsh-tdai-memory": "0.2.11",
|
|
10
|
-
"dsh-plugin-marketplace": "0.2.6",
|
|
11
|
-
"dsh-reasoning-options": "none",
|
|
12
|
-
"dsh-motion-ui": "none"
|
|
13
|
-
},
|
|
14
|
-
"plugins": [
|
|
15
|
-
{
|
|
16
|
-
"key": "vision",
|
|
17
|
-
"name": "dsh-tool-vision",
|
|
18
|
-
"displayName": "dsh-tool-vision",
|
|
19
|
-
"emoji": "👁️",
|
|
20
|
-
"category": "Vision",
|
|
21
|
-
"repo": "https://github.com/Scorp1o117/dsh-tool-vision",
|
|
22
|
-
"description": "给文本模型增加视觉能力和图片桥接。",
|
|
23
|
-
"descriptionEn": "Adds vision capability and image bridging to text-only models."
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"key": "soul",
|
|
27
|
-
"name": "dsh-soul-md",
|
|
28
|
-
"displayName": "dsh-soul-md",
|
|
29
|
-
"emoji": "🎭",
|
|
30
|
-
"category": "Persona",
|
|
31
|
-
"repo": "https://github.com/Scorp1o117/dsh-soul-md",
|
|
32
|
-
"description": "为 Agent 增加 soul.md 人设、会话/工作区 Persona 和可演化人格。",
|
|
33
|
-
"descriptionEn": "soul.md personas, session/workspace persona switching, and an evolving personality with long-term memory."
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"key": "memory",
|
|
37
|
-
"name": "dsh-tdai-memory",
|
|
38
|
-
"displayName": "dsh-tdai-memory",
|
|
39
|
-
"emoji": "🧠",
|
|
40
|
-
"category": "Memory",
|
|
41
|
-
"repo": "https://github.com/Scorp1o117/dsh-tdai-memory",
|
|
42
|
-
"description": "完整的长期分层记忆、召回与搜索。",
|
|
43
|
-
"descriptionEn": "Full long-term layered memory (L0-L3), recall and search."
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"key": "marketplace",
|
|
47
|
-
"name": "dsh-plugin-marketplace",
|
|
48
|
-
"displayName": "dsh-plugin-marketplace",
|
|
49
|
-
"emoji": "🛒",
|
|
50
|
-
"category": "Marketplace",
|
|
51
|
-
"repo": "https://github.com/Scorp1o117/dsh-plugin-marketplace",
|
|
52
|
-
"description": "直接在 DSH Web UI 中发现和浏览插件。",
|
|
53
|
-
"descriptionEn": "Discover and browse plugins directly inside the DSH Web UI."
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"key": "reasoning",
|
|
57
|
-
"name": "dsh-reasoning-options",
|
|
58
|
-
"displayName": "dsh-reasoning-options",
|
|
59
|
-
"emoji": "🎚️",
|
|
60
|
-
"category": "Model",
|
|
61
|
-
"repo": "https://github.com/Scorp1o117/dsh-reasoning-options",
|
|
62
|
-
"description": "OpenCode 会话头与路由 Default 辅助;推理档位优先使用 DSH 原生设置。",
|
|
63
|
-
"descriptionEn": "OpenCode headers and provider Default helpers; native DSH model reasoning settings take precedence."
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"key": "motion",
|
|
67
|
-
"name": "dsh-motion-ui",
|
|
68
|
-
"displayName": "dsh-motion-ui",
|
|
69
|
-
"emoji": "✨",
|
|
70
|
-
"category": "UI",
|
|
71
|
-
"repo": "https://github.com/Scorp1o117/dsh-motion-ui",
|
|
72
|
-
"description": "交互界面、HTML/SVG 动画与本地计算。",
|
|
73
|
-
"descriptionEn": "Interactive UI, HTML/SVG animation and local calculations."
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"suite": "dsh-enhancement-suite",
|
|
3
|
+
"node": ">=22.19",
|
|
4
|
+
"dsh": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
5
|
+
"defaultProfile": "web",
|
|
6
|
+
"rc6Pins": {
|
|
7
|
+
"dsh-tool-vision": "0.6.1",
|
|
8
|
+
"dsh-soul-md": "0.5.6",
|
|
9
|
+
"dsh-tdai-memory": "0.2.11",
|
|
10
|
+
"dsh-plugin-marketplace": "0.2.6",
|
|
11
|
+
"dsh-reasoning-options": "none",
|
|
12
|
+
"dsh-motion-ui": "none"
|
|
13
|
+
},
|
|
14
|
+
"plugins": [
|
|
15
|
+
{
|
|
16
|
+
"key": "vision",
|
|
17
|
+
"name": "dsh-tool-vision",
|
|
18
|
+
"displayName": "dsh-tool-vision",
|
|
19
|
+
"emoji": "👁️",
|
|
20
|
+
"category": "Vision",
|
|
21
|
+
"repo": "https://github.com/Scorp1o117/dsh-tool-vision",
|
|
22
|
+
"description": "给文本模型增加视觉能力和图片桥接。",
|
|
23
|
+
"descriptionEn": "Adds vision capability and image bridging to text-only models."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"key": "soul",
|
|
27
|
+
"name": "dsh-soul-md",
|
|
28
|
+
"displayName": "dsh-soul-md",
|
|
29
|
+
"emoji": "🎭",
|
|
30
|
+
"category": "Persona",
|
|
31
|
+
"repo": "https://github.com/Scorp1o117/dsh-soul-md",
|
|
32
|
+
"description": "为 Agent 增加 soul.md 人设、会话/工作区 Persona 和可演化人格。",
|
|
33
|
+
"descriptionEn": "soul.md personas, session/workspace persona switching, and an evolving personality with long-term memory."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"key": "memory",
|
|
37
|
+
"name": "dsh-tdai-memory",
|
|
38
|
+
"displayName": "dsh-tdai-memory",
|
|
39
|
+
"emoji": "🧠",
|
|
40
|
+
"category": "Memory",
|
|
41
|
+
"repo": "https://github.com/Scorp1o117/dsh-tdai-memory",
|
|
42
|
+
"description": "完整的长期分层记忆、召回与搜索。",
|
|
43
|
+
"descriptionEn": "Full long-term layered memory (L0-L3), recall and search."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"key": "marketplace",
|
|
47
|
+
"name": "dsh-plugin-marketplace",
|
|
48
|
+
"displayName": "dsh-plugin-marketplace",
|
|
49
|
+
"emoji": "🛒",
|
|
50
|
+
"category": "Marketplace",
|
|
51
|
+
"repo": "https://github.com/Scorp1o117/dsh-plugin-marketplace",
|
|
52
|
+
"description": "直接在 DSH Web UI 中发现和浏览插件。",
|
|
53
|
+
"descriptionEn": "Discover and browse plugins directly inside the DSH Web UI."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"key": "reasoning",
|
|
57
|
+
"name": "dsh-reasoning-options",
|
|
58
|
+
"displayName": "dsh-reasoning-options",
|
|
59
|
+
"emoji": "🎚️",
|
|
60
|
+
"category": "Model",
|
|
61
|
+
"repo": "https://github.com/Scorp1o117/dsh-reasoning-options",
|
|
62
|
+
"description": "OpenCode 会话头与路由 Default 辅助;推理档位优先使用 DSH 原生设置。",
|
|
63
|
+
"descriptionEn": "OpenCode headers and provider Default helpers; native DSH model reasoning settings take precedence."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"key": "motion",
|
|
67
|
+
"name": "dsh-motion-ui",
|
|
68
|
+
"displayName": "dsh-motion-ui",
|
|
69
|
+
"emoji": "✨",
|
|
70
|
+
"category": "UI",
|
|
71
|
+
"repo": "https://github.com/Scorp1o117/dsh-motion-ui",
|
|
72
|
+
"description": "交互界面、HTML/SVG 动画与本地计算。",
|
|
73
|
+
"descriptionEn": "Interactive UI, HTML/SVG animation and local calculations."
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|