dsh-enhancement-suite 0.3.3 → 0.3.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/LICENSE +21 -21
- package/README.en.md +61 -0
- package/README.md +61 -37
- package/README.zh.md +5 -35
- package/VERIFICATION.md +46 -23
- 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 +91 -85
- 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.en.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# DeepSeek Harness Enhancement Suite
|
|
2
|
+
|
|
3
|
+
[简体中文](README.md) | English
|
|
4
|
+
|
|
5
|
+
Install and update six enhancements for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) from one plugin page or the `dsh-enhance` CLI. Each plugin can also be installed and maintained independently.
|
|
6
|
+
|
|
7
|
+
## Included plugins
|
|
8
|
+
|
|
9
|
+
| Plugin | Purpose | CLI key |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| [dsh-tool-vision](https://github.com/Scorp1o117/dsh-tool-vision) | Vision endpoint, image bridge and image tools | `vision` |
|
|
12
|
+
| [dsh-soul-md](https://github.com/Scorp1o117/dsh-soul-md) | Persona cards, session / workspace personas and file-based memory | `soul` |
|
|
13
|
+
| [dsh-tdai-memory](https://github.com/Scorp1o117/dsh-tdai-memory) | Layered long-term memory, extraction and recall | `memory` |
|
|
14
|
+
| [dsh-plugin-marketplace](https://github.com/Scorp1o117/dsh-plugin-marketplace) | Discover, install and manage plugins | `marketplace` |
|
|
15
|
+
| [dsh-reasoning-options](https://github.com/Scorp1o117/dsh-reasoning-options) | OpenCode session headers, provider defaults and opt-in reasoning levels | `reasoning` |
|
|
16
|
+
| [dsh-motion-ui](https://github.com/Scorp1o117/dsh-motion-ui) | Interactive interfaces, diagrams, animation and local video production | `motion` |
|
|
17
|
+
|
|
18
|
+
The suite is an installer and does not merge these projects into a single plugin. See each plugin for its features, model connections and runtime dependencies.
|
|
19
|
+
|
|
20
|
+
## Compatibility
|
|
21
|
+
|
|
22
|
+
- DSH Web and Desktop. The suite declares support for `0.2.0-rc.2`, `0.2.1-rc.1` / `rc.2` / `rc.3` / `rc.4` / `rc.5`, and versions matching `>=0.2.0-rc.2 <0.3.0`. See [package.json](package.json) for the complete prerelease range.
|
|
23
|
+
- The suite requires Node.js `>=22.19`. Individual plugins can have different requirements; in particular, Motion UI explicitly lists its supported DSH versions.
|
|
24
|
+
|
|
25
|
+
## Installation and use
|
|
26
|
+
|
|
27
|
+
For Desktop, first install its `dsh` command using **Application → Manage dsh Command**, then run:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
dsh plugin --profile desktop add dsh-enhancement-suite
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
For Web, replace `desktop` with `web`. Restart DSH and open **Plugins → Installed → dsh-enhancement-suite**:
|
|
34
|
+
|
|
35
|
+
1. Choose **Install all**, or install only the plugins you need.
|
|
36
|
+
2. **Update installed plugins** skips plugins that are not installed.
|
|
37
|
+
3. Check progress, actual installed versions and errors; restart DSH after changes.
|
|
38
|
+
|
|
39
|
+
The suite shares its operations engine with the marketplace without mounting a duplicate. Install all adds the marketplace as an independent plugin. Use the marketplace to uninstall or manage other plugins. Built-in DSH bundles remain managed by the host.
|
|
40
|
+
|
|
41
|
+
### Command line
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
# List the registry and installation state for the Desktop profile
|
|
45
|
+
npx dsh-enhancement-suite list --profile desktop
|
|
46
|
+
|
|
47
|
+
# Preview, then install all
|
|
48
|
+
npx dsh-enhancement-suite install --profile desktop --dry-run
|
|
49
|
+
npx dsh-enhancement-suite install --profile desktop
|
|
50
|
+
|
|
51
|
+
# Update only the installed Motion UI and Reasoning Options plugins
|
|
52
|
+
npx dsh-enhancement-suite update --profile desktop --only motion,reasoning
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`--only` accepts comma-separated keys or package names. The default profile is `web`. Desktop users should use the command installed by the Desktop app. If a global Web CLI shadows it on Windows, set `DSH_ENHANCE_DESKTOP_EXECUTABLE` to the absolute path of `DeepSeek Harness.exe`.
|
|
56
|
+
|
|
57
|
+
## Development and feedback
|
|
58
|
+
|
|
59
|
+
- `npm run check` checks syntax, the plugin registry and CLI; `npm test` runs the suite tests.
|
|
60
|
+
- [Plugin registry](plugins.json) · [Architecture](docs/architecture.md) · [Issues](https://github.com/Scorp1o117/dsh-enhancement-suite/issues) · [npm](https://www.npmjs.com/package/dsh-enhancement-suite)
|
|
61
|
+
- [MIT License](LICENSE)
|
package/README.md
CHANGED
|
@@ -1,37 +1,61 @@
|
|
|
1
|
-
# DeepSeek Harness Enhancement Suite
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
# DeepSeek Harness Enhancement Suite
|
|
2
|
+
|
|
3
|
+
简体中文 | [English](README.en.md)
|
|
4
|
+
|
|
5
|
+
在 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 中集中安装和更新六款增强插件。通过插件配置页操作,也可以使用 `dsh-enhance` 命令行;各插件仍可独立安装和维护。
|
|
6
|
+
|
|
7
|
+
## 包含哪些插件?
|
|
8
|
+
|
|
9
|
+
| 插件 | 用途 | CLI 短名称 |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| [dsh-tool-vision](https://github.com/Scorp1o117/dsh-tool-vision) | 视觉模型接入、图片桥接和图像工具 | `vision` |
|
|
12
|
+
| [dsh-soul-md](https://github.com/Scorp1o117/dsh-soul-md) | 人设卡、会话 / 工作区人设与文件记忆 | `soul` |
|
|
13
|
+
| [dsh-tdai-memory](https://github.com/Scorp1o117/dsh-tdai-memory) | 分层长期记忆、提取与召回 | `memory` |
|
|
14
|
+
| [dsh-plugin-marketplace](https://github.com/Scorp1o117/dsh-plugin-marketplace) | 发现、安装和管理插件 | `marketplace` |
|
|
15
|
+
| [dsh-reasoning-options](https://github.com/Scorp1o117/dsh-reasoning-options) | OpenCode 会话头、路由默认值与可选推理档位补齐 | `reasoning` |
|
|
16
|
+
| [dsh-motion-ui](https://github.com/Scorp1o117/dsh-motion-ui) | 交互界面、图解、动画与本地视频制作 | `motion` |
|
|
17
|
+
|
|
18
|
+
套件本身是安装入口,并不把六个插件的源码合并为一个插件。各插件的能力、模型连接和运行依赖见各自文档。
|
|
19
|
+
|
|
20
|
+
## 兼容性
|
|
21
|
+
|
|
22
|
+
- 支持 DSH Web 与 Desktop。套件声明兼容 `0.2.0-rc.2`、`0.2.1-rc.1` / `rc.2` / `rc.3` / `rc.4` / `rc.5` 以及符合 `>=0.2.0-rc.2 <0.3.0` 的版本;预发布版本的完整匹配规则见 [package.json](package.json)。
|
|
23
|
+
- 套件要求 Node.js `>=22.19`。各插件的要求可能不同,尤其是 Motion UI 的 DSH 兼容范围是明确列出的版本。
|
|
24
|
+
|
|
25
|
+
## 安装与使用
|
|
26
|
+
|
|
27
|
+
Desktop 请先在 **应用 → 管理 dsh 命令** 中安装桌面版提供的命令,然后执行:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
dsh plugin --profile desktop add dsh-enhancement-suite
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Web 用户将 `desktop` 改为 `web`。安装后重启 DSH,打开 **插件 → 已安装 → dsh-enhancement-suite**:
|
|
34
|
+
|
|
35
|
+
1. 选择**安装全部**,或只安装需要的插件。
|
|
36
|
+
2. **更新已安装插件**只更新已安装项;未安装项会跳过。
|
|
37
|
+
3. 查看进度、实际安装版本和错误;操作完成后重启 DSH。
|
|
38
|
+
|
|
39
|
+
套件和插件市场共用操作后端,不会重复挂载市场;安装全部时,市场会作为独立插件安装。卸载或管理套件之外的插件可使用插件市场。DSH 内置 bundle 由宿主管理。
|
|
40
|
+
|
|
41
|
+
### 命令行
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
# 查看清单和 Desktop Profile 的安装状态
|
|
45
|
+
npx dsh-enhancement-suite list --profile desktop
|
|
46
|
+
|
|
47
|
+
# 预览操作,再安装全部
|
|
48
|
+
npx dsh-enhancement-suite install --profile desktop --dry-run
|
|
49
|
+
npx dsh-enhancement-suite install --profile desktop
|
|
50
|
+
|
|
51
|
+
# 仅更新已安装的 Motion UI 和 Reasoning Options
|
|
52
|
+
npx dsh-enhancement-suite update --profile desktop --only motion,reasoning
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`--only` 支持逗号分隔的短名称或完整包名;不指定 Profile 时默认为 `web`。Desktop 请使用桌面应用提供的 `dsh` 命令。如果 Windows 上的全局 Web CLI 遮挡了它,可将环境变量 `DSH_ENHANCE_DESKTOP_EXECUTABLE` 设为 `DeepSeek Harness.exe` 的绝对路径。
|
|
56
|
+
|
|
57
|
+
## 开发与反馈
|
|
58
|
+
|
|
59
|
+
- `npm run check` 检查语法、插件清单和 CLI;`npm test` 运行套件测试。
|
|
60
|
+
- [插件清单](plugins.json) · [架构说明](docs/architecture.md) · [问题反馈](https://github.com/Scorp1o117/dsh-enhancement-suite/issues) · [npm](https://www.npmjs.com/package/dsh-enhancement-suite)
|
|
61
|
+
- [MIT License](LICENSE)
|
package/README.zh.md
CHANGED
|
@@ -1,35 +1,5 @@
|
|
|
1
|
-
# DeepSeek Harness Enhancement Suite
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## DSH 0.2.1-rc.1
|
|
8
|
-
|
|
9
|
-
支持 DSH 0.2.1-rc.1,通过 `engines.dsh` 和一致的 peer 范围声明兼容,明确包含该预发布版本,并保留已有 0.2.0-rc.2 支持。
|
|
10
|
-
|
|
11
|
-
在 DSH 插件配置页或 dsh-enhance 命令行中安装、更新 **视觉、Soul / Persona、长期记忆、插件市场、推理强度、Motion UI** 六个插件。0.3.1 需要 DSH 0.2.0-rc.2 或后续 0.2.x,以及 Node >=22.19。
|
|
12
|
-
|
|
13
|
-
## Desktop / Web 配置页
|
|
14
|
-
|
|
15
|
-
使用 Desktop 提供的 dsh 命令(应用 → 管理 dsh 命令):
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
dsh plugin --profile desktop add dsh-enhancement-suite@0.3.1
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Web 使用 --profile web。重启后打开 **插件 → 已安装 → dsh-enhancement-suite**,可一键安装全部、一键更新已安装插件,或单独安装/更新。Motion UI 对应 dsh-motion-ui。页面展示真实安装版本、进度和错误,不需要 API 密钥。更新已安装插件会跳过未安装项;安装全部则安装或更新全部六项。完成后重启 DSH。
|
|
22
|
-
|
|
23
|
-
套件共用插件市场的操作后端,不重复挂载市场插件。一键安装全部后,市场作为独立 bundle 挂载。卸载插件和管理套件之外的插件,请使用插件市场配置页。内置 DSH bundle 由 DSH 自身管理。
|
|
24
|
-
|
|
25
|
-
## 命令行
|
|
26
|
-
|
|
27
|
-
```sh
|
|
28
|
-
npx dsh-enhancement-suite list --profile desktop
|
|
29
|
-
npx dsh-enhancement-suite install --profile desktop
|
|
30
|
-
npx dsh-enhancement-suite update --profile desktop --only motion,reasoning
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Desktop 的 PATH 命令应通过 Desktop 安装。如果被全局 Web CLI 遮挡,Windows 可设置 DSH_ENHANCE_DESKTOP_EXECUTABLE 为 DeepSeek Harness.exe 的绝对路径,命令行会调用 Desktop 自带 CLI 和 pnpm。--dry-run 预览操作;--only 支持短名称和完整包名。各插件保持独立维护并直接安装到 Profile。
|
|
34
|
-
|
|
35
|
-
npm run check 验证语法、六插件清单和 CLI help/list;npm test 验证 bundle、配置页和命令行选择。
|
|
1
|
+
# DeepSeek Harness Enhancement Suite(简体中文)
|
|
2
|
+
|
|
3
|
+
中文文档已迁移至仓库首页:[阅读中文版](README.md)。
|
|
4
|
+
|
|
5
|
+
[English](README.en.md)
|
package/VERIFICATION.md
CHANGED
|
@@ -1,25 +1,48 @@
|
|
|
1
|
-
# v0.3.1 validation — 2026-10-12
|
|
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.
|
|
2
34
|
|
|
3
|
-
-
|
|
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.
|
|
35
|
+
## 2026-10-31: DSH 0.2.1-rc.4 / rc.5 (local, unreleased)
|
|
8
36
|
|
|
9
|
-
- The
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
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.
|
|
37
|
+
- `npm test` passed. The suite test tree still resolves its existing marketplace dependency against DSH rc.3; the real-host checks below use rc.4 and rc.5.
|
|
38
|
+
- Local package tarballs for all seven plugins installed into separate isolated Web profiles built from the official rc.4 and rc.5 templates. Each host started, served the authenticated Web UI, and showed all seven plugin pages as running without browser page exceptions.
|
|
39
|
+
- DSH rc.3→rc.5 source comparison found a changed reasoning Body slot, which these plugins do not use. DSH compatibility and SDK peer ranges accept rc.4 and rc.5 while retaining prior declared versions; 0.2.2-alpha.2 is not claimed.
|
|
40
|
+
- The suite still resolves the published marketplace 0.5.6 as a nested dependency; its management implementation matches this local marketplace source, but its published peer metadata does not include rc.4/rc.5. Publish the updated marketplace first and raise the suite dependency minimum when preparing a release.
|
|
41
|
+
- Native Desktop, external model calls, publication, and deployment were not exercised.
|
|
42
|
+
|
|
43
|
+
## 2026-10-31: v0.3.5 release candidate
|
|
44
|
+
|
|
45
|
+
- The suite dependency minimum is updated to marketplace 0.5.7. A clean test tree using the local marketplace 0.5.7 package and DSH settings rc.5 passed `npm test` and `npm run check`.
|
|
46
|
+
- After marketplace 0.5.7 became available on npm, a fresh registry lock and installed dependency tree resolved both marketplace and DSH settings/llm rc.5 without peer conflicts; `npm test` and `npm run check` passed again.
|
|
47
|
+
- The earlier rc.4/rc.5 host checks used the prior suite package; native Desktop was not tested.
|
|
48
|
+
- All seven final versioned package tarballs were then installed together in a fresh rc.5 Web profile. Their configuration pages reported running, the Soul selector switch was hidden and restored, and the browser reported no page exceptions.
|
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 || 0.2.1-rc.2") fail(`expected dsh requirement >=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2, 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 || 0.2.1-rc.4 || 0.2.1-rc.5") 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 || 0.2.1-rc.4 || 0.2.1-rc.5, 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,85 +1,91 @@
|
|
|
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 || 0.2.1-rc.2"
|
|
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.
|
|
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
|
-
"
|
|
62
|
-
"@deepseek-ai/dsh-settings": "
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
},
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-enhancement-suite",
|
|
3
|
+
"version": "0.3.5",
|
|
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 || 0.2.1-rc.4 || 0.2.1-rc.5"
|
|
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.7",
|
|
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
|
+
"devDependencies": {
|
|
62
|
+
"@deepseek-ai/dsh-settings": "0.2.1-rc.5"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@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 || 0.2.1-rc.4 || 0.2.1-rc.5",
|
|
66
|
+
"react": "^18.2.0"
|
|
67
|
+
},
|
|
68
|
+
"dsh": {
|
|
69
|
+
"bundle": {
|
|
70
|
+
"patch": "./cordis.patch.yml"
|
|
71
|
+
},
|
|
72
|
+
"client": {
|
|
73
|
+
"platform": "web"
|
|
74
|
+
},
|
|
75
|
+
"compatibility": {
|
|
76
|
+
"dsh": ">=0.2.0-rc.2 <0.3.0 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3 || 0.2.1-rc.4 || 0.2.1-rc.5",
|
|
77
|
+
"node": ">=22.19",
|
|
78
|
+
"profiles": [
|
|
79
|
+
"web",
|
|
80
|
+
"desktop"
|
|
81
|
+
],
|
|
82
|
+
"dshReleases": {
|
|
83
|
+
"0.2.1-rc.1": "compatible",
|
|
84
|
+
"0.2.1-rc.2": "compatible",
|
|
85
|
+
"0.2.1-rc.3": "compatible",
|
|
86
|
+
"0.2.1-rc.4": "compatible",
|
|
87
|
+
"0.2.1-rc.5": "compatible"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
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 || 0.2.1-rc.2",
|
|
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 || 0.2.1-rc.4 || 0.2.1-rc.5",
|
|
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
|
+
}
|