@dsh-electron/dsh-plugin-multi-root-workspace 0.1.12 → 0.1.14
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/CHANGELOG.en.md +29 -1
- package/CHANGELOG.md +29 -1
- package/README.en.md +9 -8
- package/README.md +9 -8
- package/cordis.patch.yml +4 -0
- package/detail/DETAIL.en.md +1 -0
- package/detail/DETAIL.md +1 -0
- package/detail/preview.svg +1 -0
- package/detail/preview.zh.svg +1 -0
- package/lib/client.js +492 -87
- package/lib/client.js.map +1 -1
- package/lib/{command-CmLekG1M.js → command-Dcz6nULo.js} +25 -3
- package/lib/command.js +1 -1
- package/lib/{compat-Bg2HFVMX.js → compat-veDqCOoa.js} +3 -1
- package/lib/compat.js +1 -1
- package/lib/{fs-CfzJq2wd.js → fs-Uws0ZpmV.js} +38 -0
- package/lib/fs.js +1 -1
- package/lib/index.js +4 -4
- package/lib/{native-win32-2waCRkPI.js → native-win32-CRNXr11U.js} +2 -1
- package/lib/{protocol-4zdwV7u4.js → protocol-CnR1KTXy.js} +62 -9
- package/lib/{registry-YTUOjmVu.js → registry-DR_sMuvS.js} +425 -125
- package/lib/{registry-lease-win32-DVTq9d4D.js → registry-lease-win32-DDO-c7ig.js} +2 -1
- package/lib/registry.js +2 -2
- package/lib/scope.js +36 -2
- package/lib/types/authority/protocol.d.ts +1 -1
- package/lib/types/authority/recovery.d.ts +58 -0
- package/lib/types/client/RootSwitcher.d.ts +8 -3
- package/lib/types/client/auto-review-settings.d.ts +18 -0
- package/lib/types/client/files-tree/FilesTree.d.ts +4 -1
- package/lib/types/client/files-tree/adapter.d.ts +63 -1
- package/lib/types/client/files-tree/locales.d.ts +1 -1
- package/lib/types/client/locales.d.ts +12 -0
- package/lib/types/client/open-in-app/locales.d.ts +1 -1
- package/lib/types/client/skills-settings.d.ts +12 -0
- package/lib/types/client/styles.d.ts +1 -1
- package/lib/types/compat/auto-review-client.d.ts +58 -0
- package/lib/types/compat/connection-rpc.d.ts +12 -0
- package/lib/types/compat/dsh-version.d.ts +1 -1
- package/lib/types/compat/files-tree.d.ts +36 -0
- package/lib/types/compat/fs-patch.d.ts +6 -0
- package/lib/types/compat/koffi.d.ts +2 -0
- package/lib/types/fs.d.ts +3 -1
- package/lib/types/registry.d.ts +98 -0
- package/lib/types/scope.d.ts +18 -0
- package/locale/en.json +7 -0
- package/locale/zh.json +7 -0
- package/package.json +89 -82
- package/src/auto-review/README.en.md +1 -1
- package/src/auto-review/README.md +1 -1
package/CHANGELOG.en.md
CHANGED
|
@@ -8,6 +8,32 @@ This file records the user-visible changes of every **released** version.
|
|
|
8
8
|
- For installation sources, the supported upstream runtimes, and known limitations, see the [README](./README.en.md).
|
|
9
9
|
- The evidence, numbering, and release state of each version live in the [roadmap progress ledger](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账). The body of each GitHub Release is generated from the commit history by `scripts/release-notes.mjs` and is the complete raw list behind this file.
|
|
10
10
|
|
|
11
|
+
## [0.1.14] - 2026-11-05
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **Exact support for DSH `0.2.2-alpha.3` and `0.2.2-rc.1`**: the support matrix now covers 22 exact releases and the dev pin moves to `0.2.2-rc.1` (cordis `4.1.0` / Schemastery `3.19.0`). From `alpha.3` upstream routes `patchText` / `deleteFile` / `moveFile` through the same filesystem fence and Registry admission (a move's source and target share one admission snapshot), binds the Connection RPC getter to the consuming fiber that owns the routes (fixing the panel channel's HTTP 405 under the new Cordis), and switches the Files tab to the host-provided file-tree Factory; `rc.1` differs from `alpha.3` only in version numbers and vendor stabilization — no new interface shapes, so no new adapter branch. The upgrade script's stable-vendor selector now picks only the newest stable patch inside the host's declared minor line, keeping an old Cordis out of the new loader. The optional Auto Review entry stays pinned to its `0.2.1-rc.2` baseline ([interface review](./docs/reference/dsh-0.2.2-migration.md)).
|
|
16
|
+
- **An experimental "Multi-root Auto Review" switch on the plugin detail page's settings card (off by default)**: equivalent to the same-named Loader row in Plugin Manager — it persists through `remote.pluginManager.setPluginEnabled`, applies hot, and shows a restart Toast when `restart-required`; the row is not rendered when the host has no pluginManager Remote or the composition does not list the optional row, and it shares the single `plugins.bundle.config` settings cell with additional-root Skills.
|
|
17
|
+
- **Rich plugin-manager detail page**: localized `meta.detail` (`locale/en|zh.json` exposed through the `./locale/*.json` export) plus a self-contained 640×300 preview image (`detail/`), following the upstream plugin-detail convention.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **The `profile-core-mixed` / `profile-core-copy` launcher warnings ([issue #30](https://github.com/cherrchen/dsh-plugin-multi-root-workspace/issues/30))**: `schemastery` and `node-addon-system` moved into `peerDependencies` — the two shared upstream singletons are now supplied once by the host's `dsh-sandbox-local`; as `dependencies` they let the package manager install a second copy inside the profile (`^3.18.2` does not match the host prerelease, producing `3.18.5` plus `cosmokit@1.8.6`). `compat:check` and the tests now hard-reject any `@deepseek-ai/*` name in `dependencies` / `optionalDependencies`; profiles that already installed an older version need a remove + add to rebuild `node_modules` ([troubleshooting](./docs/troubleshooting/profile-core-mixed.md)).
|
|
22
|
+
- **Silent SIGBUS exits of installed copies on darwin-arm64**: `koffi` is now always resolved to the host's copy through `loadHostKoffi()` (`src/compat/koffi.ts`, anchored on the required peer `dsh-fs-local`) — a profile install lays down a private koffi that, next to the `koffi.node` image the host already loaded, forms a second native image in one process and dies under pointer validation; only when no host copy resolves does it fall back to the bundled one.
|
|
23
|
+
- **Settings-card concurrent-refresh race**: when a `plugin-manager/changed` refresh and the post-`setEnabled()` refresh overlap, the older response could land last and overwrite the new snapshot, leaving the switch on its pre-write value; a `refreshSeq` generation counter now drops every non-latest `listPlugins()` response.
|
|
24
|
+
- **Settings-card error feedback moved to Toast banners**: the inline `role=alert` copy on the Auto Review and Skills rows is replaced by top Toast notices that dismiss themselves when their state source disappears.
|
|
25
|
+
|
|
26
|
+
## [0.1.13] - 2026-10-31
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- **Background recovery for the shared Registry (on by default)**: when Hosts share a registry, retryable authority contention, disconnections, and storage-open failures are retried automatically with backoff and jitter. A follower is considered recovered only after it has resynchronized its tracked primary roots. Set `backgroundRecovery: false` on `multi-root-registry` to disable background retries; on-demand recovery remains available. Configuration errors and writes with an unknown state still require configuration correction or a restart. Recovery preserves deny boundaries, every new operation still requires admission, and mutations with an unknown result are never replayed automatically. Read-only diagnostics and deduplicated transition logs help diagnose failures ([ADR-0026](./docs/decisions/ADR-0026-registry-background-recovery.md)).
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- **Files tab retains its selected root when opening a file**: when opening a file in an additional root unmounts and remounts the Files tab, its selected root, expanded directories, and scroll position are retained. A pending or failed list request no longer resets the selection to the primary root; closing the tab cleans up watches and tree resources.
|
|
35
|
+
- **Shared-authority recovery safety and consistency**: a retry cannot bypass a failed storage-to-lock binding check. Recovery synchronizes root projections and publishes consistent state in a batch; empty snapshots clear stale boundaries, and failed recovery rounds no longer generate repeated notifications. On Windows, the request timer stays active during the connection handshake so the process cannot exit prematurely.
|
|
36
|
+
|
|
11
37
|
## [0.1.12] - 2026-10-30
|
|
12
38
|
|
|
13
39
|
### Added
|
|
@@ -203,7 +229,9 @@ The first release: the three MVP milestones (M1–M3).
|
|
|
203
229
|
|
|
204
230
|
- All eight findings of the pre-release external review (three of them release-blocking) are fixed, each with a regression test: a registered directory replaced by a symlink transplanting its authority (which introduced `recordedPath` — **re-resolving a path is not re-authorizing it**), concurrent registry mutations losing a write or reviving a revoked grant (per-primary-root mutations are serialized), a refresh not re-checking directories, a typed path being overwritten by the directory picker, the `reveal` response contract and failure code, duplicate ids not validated, the primary root missing from nesting validation, and CI testing before building.
|
|
205
231
|
|
|
206
|
-
[Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.
|
|
232
|
+
[Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.14...HEAD
|
|
233
|
+
[0.1.14]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.13...v0.1.14
|
|
234
|
+
[0.1.13]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.12...v0.1.13
|
|
207
235
|
[0.1.12]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.11...v0.1.12
|
|
208
236
|
[0.1.11]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.10...v0.1.11
|
|
209
237
|
[0.1.10]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.9...v0.1.10
|
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,32 @@ English: [CHANGELOG.en.md](./CHANGELOG.en.md)
|
|
|
8
8
|
- 安装方式、受支持的上游运行时与已知限制见 [README](./README.md)。
|
|
9
9
|
- 每个版本的实施证据、编号口径与发布状态见[路线图 §进度总账](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账);GitHub Release 的正文由 `scripts/release-notes.mjs` 从 commit 历史生成,是本文件之外的完整原始清单。
|
|
10
10
|
|
|
11
|
+
## [0.1.14] - 2026-11-05
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **精确支持 DSH `0.2.2-alpha.3` 与 `0.2.2-rc.1`**:支持矩阵扩至 22 个精确版本,开发 pin 提升到 `0.2.2-rc.1`(cordis `4.1.0` / Schemastery `3.19.0`)。`alpha.3` 起上游把 `patchText` / `deleteFile` / `moveFile` 纳入同一文件系统围栏与 Registry admission(移动的源与目标共用同一准入快照)、Connection RPC getter 绑定拥有路由的消费 fiber(修复新版 Cordis 下面板通道 HTTP 405)、Files 页签改用宿主提供的文件树 Factory;`rc.1` 相对 `alpha.3` 仅有版本号与 vendor 稳定化,没有新接口形状,未新增适配分支。升级脚本的稳定 vendor 选择器改为只取宿主声明 minor 线内的最新稳定 patch,避免旧版 Cordis 混入新 loader。可选 Auto Review 仍钉 `0.2.1-rc.2` 基线([接口审查](./docs/reference/dsh-0.2.2-migration.md))。
|
|
16
|
+
- **插件详情页「多根 Auto Review」设置开关(实验性,默认关闭)**:与插件管理页同名 Loader 行等价,经 `remote.pluginManager.setPluginEnabled` 持久化并热应用,`restart-required` 时以 Toast 提示重启;宿主无 pluginManager Remote 或组合未列该可选行时该行不渲染,与附属根 Skills 共用单一 `plugins.bundle.config` 设置单元格。
|
|
17
|
+
- **插件管理页富文本详情**:本地化 `meta.detail`(`locale/en|zh.json` 经 `./locale/*.json` 导出)与 640×300 自包含预览图(`detail/`),遵循上游插件详情页惯例。
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **`profile-core-mixed` / `profile-core-copy` 启动器告警([issue #30](https://github.com/cherrchen/dsh-plugin-multi-root-workspace/issues/30))**:`schemastery` 与 `node-addon-system` 移入 `peerDependencies`——两个共享上游单例改由宿主 `dsh-sandbox-local` 供给唯一副本;此前它们作为 `dependencies` 会让包管理器在 profile 里装出第二份(`^3.18.2` 不匹配宿主 prerelease,装出 `3.18.5` 连带 `cosmokit@1.8.6`)。`compat:check` 与测试现在硬性拒绝 `dependencies` / `optionalDependencies` 里的任何 `@deepseek-ai/*`;已装旧版的 profile 需 remove + add 重建 `node_modules`([排查](./docs/troubleshooting/profile-core-mixed.md))。
|
|
22
|
+
- **darwin-arm64 上安装副本无声 SIGBUS 退出**:`koffi` 一律经 `loadHostKoffi()`(`src/compat/koffi.ts`,以必需 peer `dsh-fs-local` 为锚)解析宿主副本——profile 安装会再装一份私有 koffi,与宿主已加载的 `koffi.node` 构成同进程第二个原生镜像,在指针校验下直接 SIGBUS;解析不到宿主副本时才回退包内自带。
|
|
23
|
+
- **设置卡并发刷新竞态**:`plugin-manager/changed` 刷新与 `setEnabled()` 后的刷新并发时,旧响应后到会覆盖新快照、开关停留在写入前的值;新增 `refreshSeq` 代际计数,非最新请求的结果直接丢弃。
|
|
24
|
+
- **设置卡错误反馈改 Toast 横幅**:Auto Review 与 Skills 设置行的内联 `role=alert` 文案改为顶部 Toast 提示,状态源消失时自动撤下。
|
|
25
|
+
|
|
26
|
+
## [0.1.13] - 2026-10-31
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- **共享 Registry 后台恢复(默认开启)**:多个 Host 共享登记表时,可重试的权威争用、断线或存储打开失败会以退避和抖动自动重试;follower 重新同步已跟踪主根后才视为恢复。`multi-root-registry` 的 `backgroundRecovery: false` 可关闭后台重试,按需恢复仍可用;配置错误和状态不明的写入仍需修正配置或重启。恢复期间继续保留拒绝边界,每个新操作仍须授权,结果不明的变更不会自动重放。只读诊断信息和去重的状态转换日志有助于排查故障([ADR-0026](./docs/decisions/ADR-0026-registry-background-recovery.md))。
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- **Files 页签打开文件后保留所选根**:打开附加根中的文件导致 Files 页签卸载并重新挂载时,保留该页签所选的根、目录展开状态与滚动位置;列表尚未应答或请求失败不会误将选择切回主根,关闭页签时会清理监听与目录树资源。
|
|
35
|
+
- **共享权威恢复的安全性和一致性**:介质与锁绑定校验失败后重试不能绕过校验;恢复时同步根投影并批量发布一致的状态,空快照能清除过期边界,失败的恢复轮次不再产生重复通知。Windows 连接握手期间保持请求计时器有效,避免进程提前退出。
|
|
36
|
+
|
|
11
37
|
## [0.1.12] - 2026-10-30
|
|
12
38
|
|
|
13
39
|
### Added
|
|
@@ -203,7 +229,9 @@ English: [CHANGELOG.en.md](./CHANGELOG.en.md)
|
|
|
203
229
|
|
|
204
230
|
- 发布前外部评审提出的 8 项发现(其中 3 项发布阻断)全部修复,每项各带一个回归测试:登记目录被替换为符号链接后授权转移(引入 `recordedPath`,**重新解析路径不等于重新授权**)、并发修改注册表丢写或复活已撤销的授权(每个主根的变更串行)、刷新不重新检查目录、手输路径被目录选择器覆盖、`reveal` 的应答契约与失败码、重复 id 未校验、主根未纳入嵌套校验、CI 先测后构建。
|
|
205
231
|
|
|
206
|
-
[Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.
|
|
232
|
+
[Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.14...HEAD
|
|
233
|
+
[0.1.14]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.13...v0.1.14
|
|
234
|
+
[0.1.13]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.12...v0.1.13
|
|
207
235
|
[0.1.12]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.11...v0.1.12
|
|
208
236
|
[0.1.11]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.10...v0.1.11
|
|
209
237
|
[0.1.10]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.9...v0.1.10
|
package/README.en.md
CHANGED
|
@@ -16,11 +16,12 @@ Not every project is a monorepo. A real development project is usually several i
|
|
|
16
16
|
|
|
17
17
|
- **No new tools**: the agent keeps using the native `read` / `write` / `edit` / `bash`; only the granted directories grow.
|
|
18
18
|
- **Sandbox confinement**: an additional root may inherit the session's (primary root's) permission setting, or be pinned to read-only or read-write; under read-only and read-write, confinement does not rest on system prompts — it is enforced by an in-process filesystem fence plus kernel-level sandboxes (macOS Seatbelt / Linux bwrap / Landlock / Windows ACL), with files and bash sharing one and the same scope.
|
|
19
|
+
- **Browse additional roots in the Files tab**: the Files tab header switches between the primary root and any registered additional root; an additional root's directory renders in the same native Files view, with open-file, open-in-app, and auto-refresh behaving identically.
|
|
19
20
|
- **Optional Auto review (off by default)**: a fork of upstream's experimental auto-review that gives the reviewer the additional directories' context — the current workspace topology, each root's access level, and live instruction files; it ships disabled and only takes effect once the `@dsh-electron/dsh-plugin-multi-root-workspace/auto-review` row is explicitly enabled in the Plugin Manager row list, taking over the official bundle while on.
|
|
20
21
|
- **Additional-root Skills**: discovers `.dsh/skills` and `.agents/skills` inside additional folders, invoked through the namespaced `/alias-id:skill-name` reference and the native `skill` tool; each root has an independent toggle and editable `aliasId`, with a global setting that defaults to on.
|
|
21
22
|
- **Absent when absent**: with no additional root configured, its behavior is item-for-item identical to an uninstalled harness; every misconfiguration fails loudly instead of silently degrading.
|
|
22
23
|
|
|
23
|
-
Current released version: `v0.1.
|
|
24
|
+
Current released version: `v0.1.14`. The user-visible changes of each version live in the [CHANGELOG](./CHANGELOG.en.md); progress and release state live in the [roadmap progress ledger](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账).
|
|
24
25
|
|
|
25
26
|
## Quick Start
|
|
26
27
|
|
|
@@ -50,11 +51,11 @@ The agent can now read, write, and run bash in that directory — the default is
|
|
|
50
51
|
| `0.1.7` | `0.1.7-alpha.1`, `0.1.7-alpha.2`, `0.1.7-rc.1`, `0.1.7-rc.2` |
|
|
51
52
|
| `0.2.0` | `0.2.0-rc.1`, `0.2.0-rc.2` |
|
|
52
53
|
| `0.2.1` | `0.2.1-alpha.1`, `0.2.1-alpha.2`, `0.2.1-alpha.3`, `0.2.1-alpha.4`, `0.2.1-alpha.5`, `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` |
|
|
53
|
-
| `0.2.2` | `0.2.2-alpha.2` |
|
|
54
|
+
| `0.2.2` | `0.2.2-alpha.2`, `0.2.2-alpha.3`, `0.2.2-rc.1` |
|
|
54
55
|
|
|
55
56
|
The plugin does not start — as if it were not installed — when the DSH release is not in the table or the `@deepseek-ai/dsh-*` packages disagree on a version.
|
|
56
57
|
|
|
57
|
-
**Building from source / contributing**: Node.js `^22.19.0 || >=24`, pnpm `11.25.0` (enable via corepack); the dev-pinned DSH is `0.2.2-
|
|
58
|
+
**Building from source / contributing**: Node.js `^22.19.0 || >=24`, pnpm `11.25.0` (enable via corepack); the dev-pinned DSH is `0.2.2-rc.1` (Node ≥24.9).
|
|
58
59
|
|
|
59
60
|
**Platforms**: macOS (Seatbelt), Linux (bwrap / Landlock), Windows (root-set ACL runner).
|
|
60
61
|
|
|
@@ -93,8 +94,8 @@ This installs pre-built artifacts; the first install needs the `allowBuilds` add
|
|
|
93
94
|
```sh
|
|
94
95
|
pnpm pack @dsh-electron/dsh-plugin-multi-root-workspace
|
|
95
96
|
# or download the tgz from the GitHub Release assets, e.g.:
|
|
96
|
-
# https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.
|
|
97
|
-
dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.
|
|
97
|
+
# https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.14/dsh-electron-dsh-plugin-multi-root-workspace-0.1.14.tgz
|
|
98
|
+
dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.14.tgz
|
|
98
99
|
```
|
|
99
100
|
|
|
100
101
|
Also pre-built, handy for air-gapped or offline delivery; the first install needs the same `allowBuilds` addition.
|
|
@@ -113,10 +114,10 @@ allowBuilds:
|
|
|
113
114
|
koffi: true
|
|
114
115
|
```
|
|
115
116
|
|
|
116
|
-
Pinning a version (e.g. `#v0.1.
|
|
117
|
+
Pinning a version (e.g. `#v0.1.14`) is recommended so a later push cannot silently change what actually runs:
|
|
117
118
|
|
|
118
119
|
```sh
|
|
119
|
-
dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.
|
|
120
|
+
dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.14
|
|
120
121
|
```
|
|
121
122
|
|
|
122
123
|
### Install from a local clone
|
|
@@ -253,7 +254,7 @@ The additional-root topology is injected into the system prompt so the model kno
|
|
|
253
254
|
|
|
254
255
|
## Optional Auto Review integration
|
|
255
256
|
|
|
256
|
-
For multi-root reviewer context, enable the default-disabled [Auto Review row](./src/auto-review/README.en.md) in the main package’s Plugin Manager row list. The joint integration targets only DSH `0.2.1-rc.2`; ordinary installation keeps the existing support matrix and does not enable or select Auto.
|
|
257
|
+
For multi-root reviewer context, enable the default-disabled [Auto Review row](./src/auto-review/README.en.md) in the main package’s Plugin Manager row list; the experimental "Multi-root Auto Review" switch in the same detail page's settings card is equivalent to that row switch and is off by default as well. The joint integration targets only DSH `0.2.1-rc.2`; ordinary installation keeps the existing support matrix and does not enable or select Auto.
|
|
257
258
|
|
|
258
259
|
## Project Structure
|
|
259
260
|
|
package/README.md
CHANGED
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
- **不新增工具**:Agent 照旧使用原生 `read` / `write` / `edit` / `bash`,只是授权的目录变多了。
|
|
18
18
|
- **沙箱约束**:附加根可继承会话(主目录)的权限设置,也可单独固定为只读或读写;在只读与读写下,约束不靠系统提示词,而由进程内文件围栏 + 内核级沙箱(macOS Seatbelt / Linux bwrap / Landlock / Windows ACL)执行,文件与 bash 共享同一份授权范围。
|
|
19
|
+
- **Files 页签浏览附加根**:Files 页签头部可直接在主根与任一已登记附加根之间切换,附加根的目录树以与主根相同的原生 Files 视图呈现,打开文件、在外部应用打开、自动刷新等操作完全一致。
|
|
19
20
|
- **可选 Auto review(默认关闭)**:fork 上游实验性「自动授权审查」,向 Reviewer 补充附加目录的审查上下文——当前工作区拓扑、各根访问级别与实时指令文件;出厂关闭,需在插件管理器的行列表中显式打开 `@dsh-electron/dsh-plugin-multi-root-workspace/auto-review` 行后生效,启用时接管官方同名 bundle。
|
|
20
21
|
- **附属根 Skills**:发现附属目录的 `.dsh/skills` 与 `.agents/skills`,附属根经 `/alias-id:skill-name` 命名空间调用原生 `skill` 工具;每根独立开关、可编辑 `aliasId`,全局设置默认开启。
|
|
21
22
|
- **不配等于没装**:未登记附加根时行为与未装插件逐项一致;配置错误一律明确报错,从不静默降级。
|
|
22
23
|
|
|
23
|
-
当前发布版本 `v0.1.
|
|
24
|
+
当前发布版本 `v0.1.14`。各版本的用户可见变更见 [CHANGELOG](./CHANGELOG.md);进度与发布状态见[路线图 §进度总账](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账)。
|
|
24
25
|
|
|
25
26
|
## 快速开始
|
|
26
27
|
|
|
@@ -52,11 +53,11 @@ tarball、GitHub、本地源码等其他安装方式见[安装](#安装)。
|
|
|
52
53
|
| `0.1.7` | `0.1.7-alpha.1`、`0.1.7-alpha.2`、`0.1.7-rc.1`、`0.1.7-rc.2` |
|
|
53
54
|
| `0.2.0` | `0.2.0-rc.1`、`0.2.0-rc.2` |
|
|
54
55
|
| `0.2.1` | `0.2.1-alpha.1`、`0.2.1-alpha.2`、`0.2.1-alpha.3`、`0.2.1-alpha.4`、`0.2.1-alpha.5`、`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` |
|
|
55
|
-
| `0.2.2` | `0.2.2-alpha.2` |
|
|
56
|
+
| `0.2.2` | `0.2.2-alpha.2`、`0.2.2-alpha.3`、`0.2.2-rc.1` |
|
|
56
57
|
|
|
57
58
|
DSH 版本不在表内、或 `@deepseek-ai/dsh-*` 各包版本不一致时,插件不会启动,行为等同没装。
|
|
58
59
|
|
|
59
|
-
**从源码构建 / 贡献**:Node.js `^22.19.0 || >=24`,pnpm `11.25.0`(建议经 corepack 启用);开发 pin 的 DSH 为 `0.2.2-
|
|
60
|
+
**从源码构建 / 贡献**:Node.js `^22.19.0 || >=24`,pnpm `11.25.0`(建议经 corepack 启用);开发 pin 的 DSH 为 `0.2.2-rc.1`(Node ≥24.9)。
|
|
60
61
|
|
|
61
62
|
**运行平台**:macOS(Seatbelt)、Linux(bwrap / Landlock)、Windows(root-set ACL runner)。
|
|
62
63
|
|
|
@@ -95,8 +96,8 @@ dsh plugin --profile web add @dsh-electron/dsh-plugin-multi-root-workspace
|
|
|
95
96
|
```sh
|
|
96
97
|
pnpm pack @dsh-electron/dsh-plugin-multi-root-workspace
|
|
97
98
|
# 或从 GitHub Release 资产下载,例如:
|
|
98
|
-
# https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.
|
|
99
|
-
dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.
|
|
99
|
+
# https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.14/dsh-electron-dsh-plugin-multi-root-workspace-0.1.14.tgz
|
|
100
|
+
dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.14.tgz
|
|
100
101
|
```
|
|
101
102
|
|
|
102
103
|
同样是预构建产物,适合内网或离线环境交付;首次安装同样需要添加 `allowBuilds`。
|
|
@@ -115,10 +116,10 @@ allowBuilds:
|
|
|
115
116
|
koffi: true
|
|
116
117
|
```
|
|
117
118
|
|
|
118
|
-
建议锁定版本(如 `#v0.1.
|
|
119
|
+
建议锁定版本(如 `#v0.1.14`),让后续推送无法悄悄改变实际运行的内容:
|
|
119
120
|
|
|
120
121
|
```sh
|
|
121
|
-
dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.
|
|
122
|
+
dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.14
|
|
122
123
|
```
|
|
123
124
|
|
|
124
125
|
### 从本地源码安装
|
|
@@ -255,7 +256,7 @@ Settings → Plugins → Multi-root Workspace 中的 **启用附属根 Skills**
|
|
|
255
256
|
|
|
256
257
|
## 可选 Auto Review 适配
|
|
257
258
|
|
|
258
|
-
需要 Auto Review 多根上下文时,在插件管理器的主包行列表中启用默认关闭的 [Auto Review 入口](./src/auto-review/README.md)
|
|
259
|
+
需要 Auto Review 多根上下文时,在插件管理器的主包行列表中启用默认关闭的 [Auto Review 入口](./src/auto-review/README.md);同一详情页设置卡中的「多根 Auto Review(实验性)」开关与该行开关等价,默认同样关闭。该集成仅面向 DSH `0.2.1-rc.2`;普通安装保持原支持范围且不会启用或选择 Auto。
|
|
259
260
|
|
|
260
261
|
## 项目结构
|
|
261
262
|
|
package/cordis.patch.yml
CHANGED
|
@@ -88,6 +88,10 @@
|
|
|
88
88
|
# already exceeds it keeps granting — only new adds are refused. Bench
|
|
89
89
|
# evidence for the default: docs/reference/bench-root-scale-*.json.
|
|
90
90
|
maxAdditionalRoots: 16
|
|
91
|
+
# Bounded background recovery of a degraded authority (contended,
|
|
92
|
+
# follower reconnect, retryable storage failure); on by default.
|
|
93
|
+
# Set false for on-demand recovery only (refresh still works).
|
|
94
|
+
backgroundRecovery: true
|
|
91
95
|
# Upstream `agent-instructions` only discovers instruction files from the
|
|
92
96
|
# session cwd upward, so an additional root's own AGENTS.md is invisible to
|
|
93
97
|
# the model. This row closes that gap for the additional roots only; the
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+

|
package/detail/DETAIL.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+

|