dsh-zen-remote 2.2.3 → 2.2.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/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/docs/interface.md +1 -1
- package/docs/plugin-bridge.md +1 -1
- package/docs/remote-access.en.md +1 -1
- package/docs/remote-access.md +1 -1
- package/lib/adapters/dsh-better-sidebar/index.js +6 -2
- package/lib/adapters/dsh-better-sidebar/index.js.map +1 -1
- package/lib/types/adapters/dsh-better-sidebar/index.d.ts +2 -1
- package/lib/types/adapters/dsh-better-sidebar/index.d.ts.map +1 -1
- package/package.json +35 -35
- package/src/adapters/dsh-better-sidebar/index.ts +6 -2
package/README.md
CHANGED
|
@@ -94,7 +94,7 @@ dsh plugin --profile web add dsh-zen-remote
|
|
|
94
94
|
// ~/.dsh/profiles/desktop/package.json
|
|
95
95
|
{
|
|
96
96
|
"dependencies": {
|
|
97
|
-
"dsh-zen-remote": "^2.2.
|
|
97
|
+
"dsh-zen-remote": "^2.2.4" // for local development: "link:/path/to/dsh-zen-remote"
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
```
|
|
@@ -346,7 +346,7 @@ What a paired device is trusted with, stated plainly:
|
|
|
346
346
|
- "Export session" is disabled in a remote session (the menu item is hidden, and the backend refuses virtual session ids); the changes panel's **summary and diff do work** (relayed), while the entries that would pop a dialog on the server machine — "open", "reveal in Finder", "open in app", on the changes panel and deliverable cards alike — are hidden there.
|
|
347
347
|
- The host truncates @-mention candidates to the **first 50 rows before** share-filtering: on a server with many sessions, a shared one may be missing from the candidate list (the reference check itself is unaffected — references you type out are still verified one by one).
|
|
348
348
|
- A third-party plugin's own endpoints work in remote sessions only through the [plugin bridge](docs/plugin-bridge.md): cooperative plugins register themselves, third-party plugins are covered by built-in adapters. A plugin with neither has its panels degraded or hidden in remote sessions (its **tools** still run on the server, unaffected).
|
|
349
|
-
- With [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) installed, remote sessions have TWO treatments: **0.25.0 and 0.26.
|
|
349
|
+
- With [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) installed, remote sessions have TWO treatments: **0.25.0, 0.26.0 and 0.26.1** are bridged by zen-remote's built-in adapter — its file / git / task panels read and write the SERVER's data in a remote session (consent required, see the security boundary doc). Any OTHER version keeps the hide-local-surfaces treatment: its surfaces are hidden in remote sessions because they would read and write the **client machine's own** files; and because 0.19+ takes over the host's "Files" tab, an unbridged remote session has no sidebar file browser for now; file links in chat or deliverables open an empty right column in a remote session.
|
|
350
350
|
- Both ends need the **same zen-remote version** (identical relay protocol version). DSH versions may differ; interface differences are annotated "(版本有差异)".
|
|
351
351
|
|
|
352
352
|
---
|
|
@@ -377,7 +377,7 @@ The mobile UI has specific adaptations for the plugins below. Every adaptation i
|
|
|
377
377
|
|
|
378
378
|
| Plugin | What the mobile adaptation does | Version tested |
|
|
379
379
|
| --- | --- | --- |
|
|
380
|
-
| [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) | 0.19+: all its tabs live in DSH 0.1.5's native right sidebar, which the host takes full screen on a phone (padded clear of the notch / home indicator) — the session header keeps an entry button for it, the left-edge swipe-back closes it, and tapping an @-reference in the file tree closes it. ≤ 0.18 (own right panel, DSH < 0.1.5 only): full-width phone drawer with notch safe area and a centred close pill. **Plugin bridge**: **0.25.0 and 0.26.
|
|
380
|
+
| [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) | 0.19+: all its tabs live in DSH 0.1.5's native right sidebar, which the host takes full screen on a phone (padded clear of the notch / home indicator) — the session header keeps an entry button for it, the left-edge swipe-back closes it, and tapping an @-reference in the file tree closes it. ≤ 0.18 (own right panel, DSH < 0.1.5 only): full-width phone drawer with notch safe area and a centred close pill. **Plugin bridge**: **0.25.0, 0.26.0 and 0.26.1** are bridged by zen-remote’s built-in adapter — in remote sessions its file / git / task panels read and write the SERVER’s data (whole-machine data, per-plugin consent on the server’s settings page; that equals whole-disk access and git writes on the server, see the [security boundary](docs/remote-access.md)); any other version stays unbridged and keeps the hide-local-surfaces treatment | 0.19.1 (legacy rules: 0.15.0; adapter: 0.25.0, 0.26.0, 0.26.1) |
|
|
381
381
|
| [@nanmicoder/dsh-agent-teams](https://github.com/NanmiCoder/dsh-agent-teams) | The AgentTeams activity overlay moves below the session header (its original position covered the header buttons) and hides itself on the session list; a subagent session keeps a tappable parent-session title in its header for jumping back | 0.1.9 |
|
|
382
382
|
| [@ychris12138/dsh-usage-stats](https://github.com/Ychris12138/dsh-usage-stats) | Usage and balance entries fold into the home-screen chips row | 0.2.9 |
|
|
383
383
|
| [@opendsh/dsh-plugin-scheduled-tasks](https://github.com/Ceelog/dsh-plugins) | The scheduled-tasks entry folds into the home-screen chips row | 0.2.3 |
|
package/README.zh-CN.md
CHANGED
|
@@ -94,7 +94,7 @@ dsh plugin --profile web add dsh-zen-remote
|
|
|
94
94
|
// ~/.dsh/profiles/desktop/package.json
|
|
95
95
|
{
|
|
96
96
|
"dependencies": {
|
|
97
|
-
"dsh-zen-remote": "^2.2.
|
|
97
|
+
"dsh-zen-remote": "^2.2.4" // 本地开发换成 "link:/path/to/dsh-zen-remote"
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
```
|
|
@@ -346,7 +346,7 @@ cd ~/.dsh/profiles/desktop && pnpm install
|
|
|
346
346
|
- 远程会话里「导出会话」已禁用(菜单项隐藏,后台对虚拟会话 id 一律拒绝);改动面板的**摘要与 diff 可以看**(经中继转发),但「打开 / 在访达中显示 / 在应用中打开」这类会在服务端机器上弹窗的入口在远程会话里隐藏(交付物卡片同理)。
|
|
347
347
|
- @ 引用候选由宿主**先截前 50 条再按共享过滤**:服务端会话很多时,已共享会话可能不出现在候选列表里(不影响引用检查本身——直接写出的引用仍会被逐条校验)。
|
|
348
348
|
- 第三方插件自己的接口要经[插件桥](docs/plugin-bridge.md)才能在远程会话里工作:协作插件自行登记,第三方插件靠内置适配器。都没接的插件,其面板在远程会话里降级或隐藏(插件的**工具**跑在服务端,不受影响)。
|
|
349
|
-
- 装了 [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) 时,远程会话里它有两档处理:**0.25.0 与 0.26.
|
|
349
|
+
- 装了 [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) 时,远程会话里它有两档处理:**0.25.0、0.26.0 与 0.26.1** 三版由内置适配器桥接——面板读写的是主服务端的数据(整机数据,需在主服务端设置页逐插件同意,见[安全边界](docs/remote-access.md));**其他版本维持隐藏**——那些版本的面板读写的是子客户端**本机**的文件,且因为它接管了宿主的「文件」标签,未桥接的远程会话里侧栏文件 tab 显示「未桥接」说明占位;聊天或交付物里的文件链接在远程会话里会打开一个空的右栏。
|
|
350
350
|
- 两端 zen-remote 需为**相同版本**(中继协议版本一致);DSH 版本可以不同,接口指纹有差异时远程分组标注「(版本有差异)」。
|
|
351
351
|
|
|
352
352
|
---
|
|
@@ -378,7 +378,7 @@ cd ~/.dsh/profiles/desktop && pnpm install
|
|
|
378
378
|
|
|
379
379
|
| 插件 | 移动端适配内容 | 实测版本 |
|
|
380
380
|
| --- | --- | --- |
|
|
381
|
-
| [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) | 0.19+:它的全部 tab 都在 DSH 0.1.5 官方右侧栏里、手机上宿主自己切全屏(避让刘海与底部指示条)——会话页头部留入口按钮,左缘回退手势收它,文件树里点 @ 引用后自动收起。≤ 0.18(自绘右栏,只在 DSH < 0.1.5 上):手机全宽抽屉并避让刘海安全区、底部居中的关闭按钮。**插件桥**:**0.25.0 与 0.26.
|
|
381
|
+
| [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) | 0.19+:它的全部 tab 都在 DSH 0.1.5 官方右侧栏里、手机上宿主自己切全屏(避让刘海与底部指示条)——会话页头部留入口按钮,左缘回退手势收它,文件树里点 @ 引用后自动收起。≤ 0.18(自绘右栏,只在 DSH < 0.1.5 上):手机全宽抽屉并避让刘海安全区、底部居中的关闭按钮。**插件桥**:**0.25.0、0.26.0 与 0.26.1** 三版由 zen-remote 的内置适配器桥接——远程会话里它的文件 / git / 任务面板读写的是主服务端的数据(整机数据,需在主服务端设置页逐插件同意;等于让桌面应用端读写服务端整盘并执行 git 写操作,见[安全边界](docs/remote-access.md));其他版本不桥接,远程会话维持「隐藏本机界面」的原有处理 | 0.19.1(老版规则 0.15.0;适配器 0.25.0, 0.26.0, 0.26.1) |
|
|
382
382
|
| [@nanmicoder/dsh-agent-teams](https://github.com/NanmiCoder/dsh-agent-teams) | AgentTeams 活动浮层挪到会话头部下方(原位置压住头部按钮)、会话列表页自动隐藏;子代理会话头部保留可点的父会话标题,一键切回主会话 | 0.1.9 |
|
|
383
383
|
| [@ychris12138/dsh-usage-stats](https://github.com/Ychris12138/dsh-usage-stats) | 用量与余额入口收进主屏 chips 行 | 0.2.9 |
|
|
384
384
|
| [@opendsh/dsh-plugin-scheduled-tasks](https://github.com/Ceelog/dsh-plugins) | 定时任务入口收进主屏 chips 行 | 0.2.3 |
|
package/docs/interface.md
CHANGED
|
@@ -366,7 +366,7 @@ composer 最左的回形针打开的是**手机本地**的文件选择器(iOS
|
|
|
366
366
|
## 兼容插件
|
|
367
367
|
|
|
368
368
|
- [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar)(0.19+:它的全部 tab 都在 DSH 0.1.5 官方右侧栏里,手机上宿主自己切全屏,本插件在会话页头部给它留入口位、左缘回退手势收它、文件树里点 @ 引用后自动收起——面板全屏盖住会话页,草稿变化看不见,收起本身就是点击反馈;≤ 0.18 自绘右栏的老版本:全宽抽屉 + 安全区 + 底部关闭 pill,只在 DSH < 0.1.5 上还会走到)——本机实测 **0.19.1**(老版规则实测 0.15.0)
|
|
369
|
-
- dsh-better-sidebar 的**远程会话处理**(PB-12 起分两档):**0.25.0 与 0.26.
|
|
369
|
+
- dsh-better-sidebar 的**远程会话处理**(PB-12 起分两档):**0.25.0、0.26.0 与 0.26.1** 三版由 zen-remote 的内置适配器(`src/adapters/dsh-better-sidebar/`)**代理**——它的文件浏览、编辑器、git 变动、任务等界面在远程会话里读写的是主服务端的数据(整机数据,需主服务端主人在设置页同意;`open.external` 远程拒绝、`settings.*` 与 `/sidebar/bundle` 留本机、侧聊转发(子会话继承父会话共享);0.26 新方法已一并接入(`fs.readPage` 分页读、`sidechat.dequeue` 撤回排队消息、`sidechat.model`/`sidechat.models` 线程切模型、`/sidebar/write` 编辑器保存;`ws/sidechat` 推送不桥接,远程侧聊走 0.26 自带的 15s 兜底轮询,正确性无损))。**其他版本维持隐藏**:那些版本的界面都带 `{sessionId, cwd}` 语境调它自己的 `/sidebar/api/*` 接口,远程会话里这些请求落到子客户端本机——文件树会显示本机同名文件、编辑会真的写本机文件;远程会话(`html[data-zr-remote-session="1"]`)里按插件自己的挂载/渲染标记隐藏这些界面,选择器在 `src/client/styles/remote-session.css.ts`,未安装时一条都不命中。因为它接管了宿主的「文件」标签,未桥接的远程会话里暂时没有侧栏文件浏览;聊天或交付物里的文件链接(`dsh-resource://file/**`)会被它的编辑器注册抢先接住,展开一个空的右栏(根治要等 zen-remote 自己的远程文件树)。隐藏档的定位仍是**隐藏而非代理**:插件组件保持挂载并继续静默发只读请求,但所有写控件都在被隐藏的界面里,不会误写本机。PB-14 起显示规则按桥接状态生效:已桥接(0.25.0/0.26.0 且主服务端同意)时远程会话里**照常显示**(面板数据经适配器来自主服务端,隐藏规则全部让位);未桥接时维持隐藏,已打开的 tab 空态改为一行说明占位(better-sidebar 未在远程会话桥接——中英双语,随浏览器语言),空白工作台浮动按钮一并隐藏
|
|
370
370
|
- [@nanmicoder/dsh-agent-teams](https://github.com/NanmiCoder/dsh-agent-teams)(AgentTeams 活动浮层:手机端挪到会话头部下方、避开安全区,会话列表页隐藏;子代理会话头部保留可点的父会话面包屑用于切回)——本机实测 **0.1.9**
|
|
371
371
|
- [@ychris12138/dsh-usage-stats](https://github.com/Ychris12138/dsh-usage-stats)(用量与余额,主屏 chips 行可直接打开;旧包名 `dsh-usage-stats` 已废弃,两个名字同时留在 profile 里会因重复的 `usage-stats` 行让 DSH 起不来)——本机实测 **0.2.9**
|
|
372
372
|
- [@opendsh/dsh-plugin-scheduled-tasks](https://github.com/Ceelog/dsh-plugins)(定时任务,主屏 chips 行自动收割入口)——本机实测 **0.2.3**
|
package/docs/plugin-bridge.md
CHANGED
|
@@ -127,7 +127,7 @@ content-type: application/json; charset=utf-8
|
|
|
127
127
|
|
|
128
128
|
## 开发一个适配器
|
|
129
129
|
|
|
130
|
-
先确认目标插件真的需要适配器:能让作者加几行 `zenRemote.bridge(...)` 就优先走协作声明——适配器只在第三方插件不配合时使用。当前唯一在册的适配器是 **`dsh-better-sidebar`(0.25.0 与 0.26.
|
|
130
|
+
先确认目标插件真的需要适配器:能让作者加几行 `zenRemote.bridge(...)` 就优先走协作声明——适配器只在第三方插件不配合时使用。当前唯一在册的适配器是 **`dsh-better-sidebar`(0.25.0、0.26.0 与 0.26.1 三版)**(`src/adapters/dsh-better-sidebar/`),新适配器照它写。
|
|
131
131
|
|
|
132
132
|
步骤:
|
|
133
133
|
|
package/docs/remote-access.en.md
CHANGED
|
@@ -328,7 +328,7 @@ The `/v1/http` route is a second allowlist, keyed by **route name** (not part of
|
|
|
328
328
|
- Terminals are deliberate (a desktop client is a trusted device): what opens is a **server-side** PTY running as the server user, without the agent sandbox or approval restrictions; closing the session's remote access kills its terminal streams with it;
|
|
329
329
|
- `workspaceFiles/read` and friends are not contained to the session directory (DSH itself does not contain them) — anything the server process can read is readable, under the same trusted-device premise as terminals;
|
|
330
330
|
- The plugin bridge's whole-machine data requires the server owner's per-plugin consent — the toggles in the settings page's Plugin bridge section, everything OFF by default; the loopback carries the operator's cookie, so a bridged plugin sees the same permissions the local browser sees. The bridge's boundary is therefore the DECLARED route set (exact equality) plus the share table — there is **no** parameter-level scanning;
|
|
331
|
-
- **Adapters (better-sidebar)**: beyond cooperative declarations, zen-remote ships a built-in adapter for `dsh-better-sidebar` **0.25.0 and 0.26.
|
|
331
|
+
- **Adapters (better-sidebar)**: beyond cooperative declarations, zen-remote ships a built-in adapter for `dsh-better-sidebar` **0.25.0, 0.26.0 and 0.26.1** (`src/adapters/` — non-cooperative third-party plugins are bridged by it, with prefix/path-segment route matching and session-id rewriting in JSON bodies and path segments). **Consenting to its whole-machine toggle hands the paired desktop client whole-disk file read/write on the server, git write operations (commit, push, revert, …), and model spend through commit-message generation** — the product decision is "both directions forward, no path fencing", and a server owner should treat that toggle as terminal-grade trust in the paired machine; `open.external` (launching processes on the host) refuses for remote sessions, `settings.*` and `/sidebar/bundle` stay on the sub-client's own machine; the two WebSockets (`/sidebar/ws/fs-watch` file-tree watch, `/sidebar/ws/agent-opens` open push) bridge over the byte tunnel (frames pass through untouched — the browser never reads the session id inside a push); side chat (`sidechat.*`) forwards — its child sessions carry `meta.parentSession`, so they inherit the parent's share through the ancestor chain, and the `childId` in `sidechat.start`'s answer is virtualized before it reaches the browser; 0.26's `ws/sidechat` push socket is **not** bridged — remote side chat falls back to 0.26's built-in 15s polling, correctness intact, only the push cadence degrades to polling; `sidechat.models` shows the **sub-client's own** model catalog in the picker while the choice goes through `sidechat.model` and takes effect on the **server** — when the two machines' catalogs differ, what the server actually applies is authoritative;
|
|
332
332
|
- Concurrent streams are budgeted per device (32), and so are invokes kept in flight at once — past the per-device cap the invoke answers 429 `too-many-invokes`. Error codes shaped `*/internal` (`gateway/internal` and friends) are returned as the bare code with no message — that kind of message quotes server-side internals. Event answers are matched against the subscription and device they were forwarded to. Approval/question forwarding is **first come, first served**: whichever of the server's own UI and the sub-client answers first wins; the later answer is refused by the gateway and the client syncs to "already handled". The relay **never answers on the client's behalf**: an unshared session's approval/question events are not forwarded at all, and with the server's own UI offline too, the approval simply keeps waiting — the gateway re-delivers still-pending events to the next `$events` subscriber. A wait, never a rejection (an abstention would fail every pending approval of the session at once and break the push → wake → approve flow). Notification-type events (EMIT frames: session-list summaries, account expirations and other server-wide state) of an unshared session are never forwarded.
|
|
333
333
|
|
|
334
334
|
|
package/docs/remote-access.md
CHANGED
|
@@ -345,7 +345,7 @@ sudo cloudflared service install # 通了再装成常驻服务
|
|
|
345
345
|
- 终端是有意开放的(桌面应用端是可信设备):开的是**服务端**的 PTY,以服务端用户身份运行、不受智能体沙箱与审批限制;关闭会话的远程时终端流一并终止;
|
|
346
346
|
- `workspaceFiles/read` 等文件预览接口不限制在会话目录内(DSH 自身就不限制),服务端进程可读的文件都能读——信任前提与终端相同;
|
|
347
347
|
- 插件桥的整机数据需要主服务端主人逐插件同意——设置页「插件桥」里的开关,缺省全部关闭;回环执行带操作者 cookie,插件接口看到的权限与本机浏览器相同,因此桥接的边界就是声明登记的路径(exact 相等)加会话共享表,**不做**参数级扫描;
|
|
348
|
-
- **适配器(better-sidebar)**:协作声明之外,zen-remote 为 `dsh-better-sidebar` **0.25.0 与 0.26.
|
|
348
|
+
- **适配器(better-sidebar)**:协作声明之外,zen-remote 为 `dsh-better-sidebar` **0.25.0、0.26.0 与 0.26.1** 内置了一个适配器(`src/adapters/`,不配合的第三方插件由它代为桥接,路由按前缀/路径段匹配、会话 id 在 JSON 体与路径段里改写)。**同意它的整机数据开关,等于让已配对的桌面应用端读写主服务端整盘文件、执行 git 写操作(提交、推送、回滚……),并通过提交信息生成消耗主服务端的模型额度**——产品上的决定就是「读写都接、不加路径围栏」,主服务端主人应当把它当成给对方一台本机终端级别的信任来开;`open.external`(在宿主机起进程)对远程会话拒绝,`settings.*` 与 `/sidebar/bundle` 留在子客户端本机;两条 WebSocket(`/sidebar/ws/fs-watch` 文件树监视、`/sidebar/ws/agent-opens` 打开推送)经字节隧道桥接(帧原样透传,浏览器不消费推送里的会话 id);侧聊(`sidechat.*`)转发——侧聊子会话带 `meta.parentSession`,按祖先链自动继承父会话的共享,`sidechat.start` 响应里的 `childId` 会换算成虚拟 id 回给浏览器;0.26 新增的 `ws/sidechat` 侧聊推送**不桥接**——远程侧聊走 0.26 自带的 15s 兜底轮询,正确性无损,只是推送降级为轮询节奏;`sidechat.models` 的模型选择器显示的是**子客户端本机**的模型目录,而选择经 `sidechat.model` 作用在**服务端**——两机目录不一致时以服务端实际生效为准;
|
|
349
349
|
- 每台设备并发流数有上限(32)、同时在途的 invoke 数也有上限(32,超出 429 `too-many-invokes`);`*/internal` 形状的错误码(`gateway/internal` 等)只回码不带消息——那类消息引用的是服务端内部细节。事件应答按「转发时的订阅 + 设备」核对归属。审批/提问的转发是**先到先得**:服务端自己的界面和子客户端谁先应答谁生效,后答的一方被网关拒绝、同步成「已处理」。中继**不代答**:未共享会话的审批/提问事件不会被转发,服务端界面也不在线时这个审批就一直等待——网关会把仍未应答的事件转交给下一个连上来的订阅,等,而不是替你拒绝(代答会把整批待审批一次性判死,砸掉「推送 → 唤醒 → 审批」链路)。未共享会话的**通知类**事件(EMIT 帧:会话列表摘要、账号到期之类的服务端全局状态)一律不转发;唯一的例外是已共享会话(含其子会话)的 `api-session/status`——它只描述单个会话的运行/空闲,逐帧按共享表判定,子客户端靠它在主机侧一轮开始或结束时同步运行状态徽标(断线期间的翻转由重连后补拉列表纠正)。
|
|
350
350
|
|
|
351
351
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The dsh-better-sidebar adapter (PB-12), written against EXACTLY
|
|
3
|
-
* versions 0.25.0 and 0.26.
|
|
3
|
+
* versions 0.25.0, 0.26.0 and 0.26.1 (PB-15 widened the list; 0.26.1 is a
|
|
4
|
+
* perf-only patch with the same wire surface as 0.26.0; 0.26.0 is a JSON-api
|
|
4
5
|
* superset of 0.25.0 — it grows fs.readPage and the sidechat dequeue/model/
|
|
5
6
|
* models methods, and moves fs.write's content onto the new raw-text
|
|
6
7
|
* /sidebar/write route). Everything the adapter knows about the plugin came
|
|
@@ -43,7 +44,10 @@ const SIDEBAR_MAX_BODY_BYTES = 1024 * 1024;
|
|
|
43
44
|
const apiMethodOf = (pathname) => sidebarMethodNameOf(pathname) ?? '';
|
|
44
45
|
export const dshBetterSidebarAdapter = {
|
|
45
46
|
plugin: 'dsh-better-sidebar',
|
|
46
|
-
|
|
47
|
+
// 0.26.1 (perf patch): JSON-api method set, routes and WebSocket paths
|
|
48
|
+
// identical to 0.26.0's wire surface (verified against the npm build;
|
|
49
|
+
// lib/index.js itself differs — a perf refactor, not byte-identical).
|
|
50
|
+
versions: ['0.25.0', '0.26.0', '0.26.1'],
|
|
47
51
|
routes: [
|
|
48
52
|
{
|
|
49
53
|
// The JSON API: the method name rides the path tail, the session
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/dsh-better-sidebar/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/dsh-better-sidebar/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The dsh-better-sidebar adapter (PB-12), written against EXACTLY
|
|
3
|
-
* versions 0.25.0 and 0.26.
|
|
3
|
+
* versions 0.25.0, 0.26.0 and 0.26.1 (PB-15 widened the list; 0.26.1 is a
|
|
4
|
+
* perf-only patch with the same wire surface as 0.26.0; 0.26.0 is a JSON-api
|
|
4
5
|
* superset of 0.25.0 — it grows fs.readPage and the sidechat dequeue/model/
|
|
5
6
|
* models methods, and moves fs.write's content onto the new raw-text
|
|
6
7
|
* /sidebar/write route). Everything the adapter knows about the plugin came
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/dsh-better-sidebar/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/dsh-better-sidebar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAmBhD,eAAO,MAAM,uBAAuB,EAAE,aA6GrC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-zen-remote",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.4",
|
|
4
4
|
"description": "一个插件、两种角色:主服务端把 DeepSeek Harness 变成手机能安全访问的 PWA(移动端界面、配对码网关、Web Push),并把选定会话共享给已配对的桌面端;子客户端在另一台 DSH 桌面端的侧边栏里远程使用这些会话。One DSH plugin, two roles: the host turns DeepSeek Harness into a phone-reachable PWA (mobile UI, pairing-code gateway behind your own reverse proxy, Web Push) and shares chosen sessions to paired desktops; the client uses those sessions remotely from another DSH desktop app's sidebar.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -117,40 +117,40 @@
|
|
|
117
117
|
"devDependencies": {
|
|
118
118
|
"@deepseek-ai/cordis": "4.0.5-alpha.2",
|
|
119
119
|
"@deepseek-ai/cosmokit": "1.8.5",
|
|
120
|
-
"@deepseek-ai/dsh-agent": "0.2.1-alpha.
|
|
121
|
-
"@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.
|
|
122
|
-
"@deepseek-ai/dsh-api-session-controller": "0.2.1-alpha.
|
|
123
|
-
"@deepseek-ai/dsh-api-workspace-controller": "0.2.1-alpha.
|
|
124
|
-
"@deepseek-ai/dsh-brand": "0.2.1-alpha.
|
|
125
|
-
"@deepseek-ai/dsh-client-connection": "0.2.1-alpha.
|
|
126
|
-
"@deepseek-ai/dsh-client-locale": "0.2.1-alpha.
|
|
127
|
-
"@deepseek-ai/dsh-client-store": "0.2.1-alpha.
|
|
128
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.2.1-alpha.
|
|
129
|
-
"@deepseek-ai/dsh-client-ui-layout": "0.2.1-alpha.
|
|
130
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-alpha.
|
|
131
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.
|
|
132
|
-
"@deepseek-ai/dsh-client-ui-session": "0.2.1-alpha.
|
|
133
|
-
"@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-alpha.
|
|
134
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.
|
|
135
|
-
"@deepseek-ai/dsh-host-webserver": "0.2.1-alpha.
|
|
136
|
-
"@deepseek-ai/dsh-llm": "0.2.1-alpha.
|
|
137
|
-
"@deepseek-ai/dsh-ptc-runtime": "0.2.1-alpha.
|
|
138
|
-
"@deepseek-ai/dsh-sandbox": "0.2.1-alpha.
|
|
139
|
-
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.
|
|
140
|
-
"@deepseek-ai/dsh-scope": "0.2.1-alpha.
|
|
141
|
-
"@deepseek-ai/dsh-session": "0.2.1-alpha.
|
|
142
|
-
"@deepseek-ai/dsh-session-log-export": "0.2.1-alpha.
|
|
143
|
-
"@deepseek-ai/dsh-session-projection": "0.2.1-alpha.
|
|
144
|
-
"@deepseek-ai/dsh-session-query": "0.2.1-alpha.
|
|
145
|
-
"@deepseek-ai/dsh-session-stats": "0.2.1-alpha.
|
|
146
|
-
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.
|
|
147
|
-
"@deepseek-ai/dsh-timeout": "0.2.1-alpha.
|
|
148
|
-
"@deepseek-ai/dsh-token-meter": "0.2.1-alpha.
|
|
149
|
-
"@deepseek-ai/dsh-tools": "0.2.1-alpha.
|
|
150
|
-
"@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.
|
|
151
|
-
"@deepseek-ai/dsh-util-crypto": "0.2.1-alpha.
|
|
152
|
-
"@deepseek-ai/dsh-util-values": "0.2.1-alpha.
|
|
153
|
-
"@deepseek-ai/dsh-workspace": "0.2.1-alpha.
|
|
120
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.4",
|
|
121
|
+
"@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.4",
|
|
122
|
+
"@deepseek-ai/dsh-api-session-controller": "0.2.1-alpha.4",
|
|
123
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.2.1-alpha.4",
|
|
124
|
+
"@deepseek-ai/dsh-brand": "0.2.1-alpha.4",
|
|
125
|
+
"@deepseek-ai/dsh-client-connection": "0.2.1-alpha.4",
|
|
126
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-alpha.4",
|
|
127
|
+
"@deepseek-ai/dsh-client-store": "0.2.1-alpha.4",
|
|
128
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.1-alpha.4",
|
|
129
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.2.1-alpha.4",
|
|
130
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-alpha.4",
|
|
131
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.4",
|
|
132
|
+
"@deepseek-ai/dsh-client-ui-session": "0.2.1-alpha.4",
|
|
133
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-alpha.4",
|
|
134
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.4",
|
|
135
|
+
"@deepseek-ai/dsh-host-webserver": "0.2.1-alpha.4",
|
|
136
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.4",
|
|
137
|
+
"@deepseek-ai/dsh-ptc-runtime": "0.2.1-alpha.4",
|
|
138
|
+
"@deepseek-ai/dsh-sandbox": "0.2.1-alpha.4",
|
|
139
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.4",
|
|
140
|
+
"@deepseek-ai/dsh-scope": "0.2.1-alpha.4",
|
|
141
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.4",
|
|
142
|
+
"@deepseek-ai/dsh-session-log-export": "0.2.1-alpha.4",
|
|
143
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-alpha.4",
|
|
144
|
+
"@deepseek-ai/dsh-session-query": "0.2.1-alpha.4",
|
|
145
|
+
"@deepseek-ai/dsh-session-stats": "0.2.1-alpha.4",
|
|
146
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.4",
|
|
147
|
+
"@deepseek-ai/dsh-timeout": "0.2.1-alpha.4",
|
|
148
|
+
"@deepseek-ai/dsh-token-meter": "0.2.1-alpha.4",
|
|
149
|
+
"@deepseek-ai/dsh-tools": "0.2.1-alpha.4",
|
|
150
|
+
"@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.4",
|
|
151
|
+
"@deepseek-ai/dsh-util-crypto": "0.2.1-alpha.4",
|
|
152
|
+
"@deepseek-ai/dsh-util-values": "0.2.1-alpha.4",
|
|
153
|
+
"@deepseek-ai/dsh-workspace": "0.2.1-alpha.4",
|
|
154
154
|
"@deepseek-ai/schemastery": "3.18.4",
|
|
155
155
|
"@types/node": "^26.2.0",
|
|
156
156
|
"@types/react": "~18.3.1",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The dsh-better-sidebar adapter (PB-12), written against EXACTLY
|
|
3
|
-
* versions 0.25.0 and 0.26.
|
|
3
|
+
* versions 0.25.0, 0.26.0 and 0.26.1 (PB-15 widened the list; 0.26.1 is a
|
|
4
|
+
* perf-only patch with the same wire surface as 0.26.0; 0.26.0 is a JSON-api
|
|
4
5
|
* superset of 0.25.0 — it grows fs.readPage and the sidechat dequeue/model/
|
|
5
6
|
* models methods, and moves fs.write's content onto the new raw-text
|
|
6
7
|
* /sidebar/write route). Everything the adapter knows about the plugin came
|
|
@@ -49,7 +50,10 @@ const apiMethodOf = (pathname: string): string => sidebarMethodNameOf(pathname)
|
|
|
49
50
|
|
|
50
51
|
export const dshBetterSidebarAdapter: BridgeAdapter = {
|
|
51
52
|
plugin: 'dsh-better-sidebar',
|
|
52
|
-
|
|
53
|
+
// 0.26.1 (perf patch): JSON-api method set, routes and WebSocket paths
|
|
54
|
+
// identical to 0.26.0's wire surface (verified against the npm build;
|
|
55
|
+
// lib/index.js itself differs — a perf refactor, not byte-identical).
|
|
56
|
+
versions: ['0.25.0', '0.26.0', '0.26.1'],
|
|
53
57
|
routes: [
|
|
54
58
|
{
|
|
55
59
|
// The JSON API: the method name rides the path tail, the session
|