dsh-deeppilot 0.9.14 → 0.9.16
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 +21 -6
- package/README.zh-CN.md +13 -4
- package/bin/SHA256SUMS +6 -6
- package/bin/darwin-amd64/dsh-deeppilot-tunnel +0 -0
- package/bin/darwin-arm64/dsh-deeppilot-tunnel +0 -0
- package/bin/linux-amd64/dsh-deeppilot-tunnel +0 -0
- package/bin/linux-arm64/dsh-deeppilot-tunnel +0 -0
- package/bin/windows-amd64/dsh-deeppilot-tunnel.exe +0 -0
- package/bin/windows-arm64/dsh-deeppilot-tunnel.exe +0 -0
- package/docs/DSH_RELEASE_MEMORY.md +33 -0
- package/docs/NPM_PUBLISHING.md +36 -13
- package/lib/client.js +494 -447
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +89 -1
- package/lib/index.js +563 -26
- package/lib/index.js.map +1 -1
- package/package.json +10 -2
package/README.md
CHANGED
|
@@ -32,6 +32,11 @@ Host on your own computer and does not replace or modify the DSH Web UI.
|
|
|
32
32
|
- Connect over the LAN (TLS with a Host-issued certificate pinned during
|
|
33
33
|
pairing) or the optional embedded Tailscale Funnel.
|
|
34
34
|
- Receive live notifications and optional APNs notifications while offline.
|
|
35
|
+
- Quiet scheduled runs (DSH 0.2.2+): write a rule into a scheduled task's
|
|
36
|
+
prompt, such as "if everything is normal, don't notify me". The agent can
|
|
37
|
+
then skip that run's "task completed" notification with the
|
|
38
|
+
`deeppilot_skip_completion_notice` tool. Approvals, questions and errors
|
|
39
|
+
still notify, and tasks without such a rule notify on every run as before.
|
|
35
40
|
- Self-update hint: the settings page footer shows the installed plugin
|
|
36
41
|
version, with an inline "new version" link to the matching GitHub
|
|
37
42
|
release when one exists (background check, stable releases only, no
|
|
@@ -65,16 +70,18 @@ dsh plugin --profile web add dsh-deeppilot
|
|
|
65
70
|
dsh web
|
|
66
71
|
```
|
|
67
72
|
|
|
68
|
-
After DSH restarts, open **Settings → DeepPilot**,
|
|
69
|
-
|
|
70
|
-
panel shows one copyable piece of pairing info (address, single-use code and
|
|
73
|
+
After DSH restarts, open **Settings → DeepPilot**, turn on **Allow phone connections**,
|
|
74
|
+
and click **Add phone** beside **Paired devices**, then scan the QR code in the app. The same panel also shows one copyable piece of pairing info (address, single-use code and
|
|
71
75
|
certificate fingerprint) that can be pasted into the app in one step — useful for
|
|
72
76
|
Simulator or when the camera is unavailable. Switching between the LAN and
|
|
73
77
|
public address issues a matching new QR code and string immediately, with the
|
|
74
78
|
panel staying open.
|
|
75
79
|
|
|
76
|
-
LAN access is
|
|
77
|
-
and is TLS-only.
|
|
80
|
+
LAN access is always on (there is no switch) on the plugin's independent TCP
|
|
81
|
+
port `3098` and is TLS-only. After every connection the plugin tells the app
|
|
82
|
+
its current LAN addresses and the public Funnel address, so a paired phone
|
|
83
|
+
connects over the LAN on the same Wi-Fi and falls back to Funnel elsewhere,
|
|
84
|
+
without pairing again. The plugin generates a self-signed certificate on first start
|
|
78
85
|
(key under `$DSH_HOME/deeppilot/lan-tls/`), and the pairing QR code carries its
|
|
79
86
|
public-key fingerprint so the app pins that exact Host. DSH may continue
|
|
80
87
|
listening only on `127.0.0.1:3080`; the plugin no longer registers any `/phone`
|
|
@@ -135,7 +142,15 @@ stored in the host registry and survive iPhone reconnects or changes to the
|
|
|
135
142
|
system-reported name; saving an empty value restores the iPhone-reported
|
|
136
143
|
default.
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
Each device's **More actions** control contains its fingerprint, rename action,
|
|
146
|
+
and deletion action; deletion still requires confirmation. Connection options,
|
|
147
|
+
connection help, diagnostic tools, and system information start collapsed.
|
|
148
|
+
Desktop secondary buttons are 28px high; custom action touch targets remain at
|
|
149
|
+
least 44px. **Add phone** uses DSH's built-in small outlined `Button`; all
|
|
150
|
+
toggles use its `Switch`. Native controls keep the host's appearance and sizing.
|
|
151
|
+
See [settings UI and validation](docs/SETTINGS_UI.md).
|
|
152
|
+
|
|
153
|
+
The settings page's **Diagnostic tools** group has a `debug` toggle.
|
|
139
154
|
Turning it on prints per-frame and push diagnostics to the DSH host's terminal
|
|
140
155
|
output (for example, the actual capability bits sent in `s2c.welcome`); it
|
|
141
156
|
never prints pairing tokens, APNs tokens, or message content. The toggle is
|
package/README.zh-CN.md
CHANGED
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
- 局域网连接全程 TLS:插件自签证书,App 按配对二维码中的指纹固定信任;
|
|
29
29
|
也可选用内嵌 Tailscale Funnel 远程连接;
|
|
30
30
|
- 接收在线通知,以及可选的离线 APNs 推送;
|
|
31
|
+
- 计划任务按需提醒(DSH 0.2.2 起):在任务提示词里写明规则,例如"一切正常就不用提醒我",
|
|
32
|
+
Agent 即可通过 `deeppilot_skip_completion_notice` 工具跳过这一轮的「任务完成」通知;
|
|
33
|
+
审批、提问和出错照常提醒,没写规则的任务照旧每轮提醒;
|
|
31
34
|
- 更新提示:设置页底部显示当前插件版本,并在有新版本时附加一个指向
|
|
32
35
|
对应 GitHub Release 的链接(后台静默检查,仅比较稳定版,不引入第
|
|
33
36
|
三方依赖)。
|
|
@@ -56,12 +59,14 @@ dsh plugin --profile web add dsh-deeppilot
|
|
|
56
59
|
dsh web
|
|
57
60
|
```
|
|
58
61
|
|
|
59
|
-
DSH 重启后,打开 **设置 → DeepPilot
|
|
60
|
-
DeepPilot App
|
|
62
|
+
DSH 重启后,打开 **设置 → DeepPilot**,开启“允许手机连接”,在“已配对设备”右侧
|
|
63
|
+
点击“添加手机”,然后在 DeepPilot App 中扫码。配对面板中还显示一段可复制的「配对信息」(含地址、一次性配对码
|
|
61
64
|
与证书指纹),在 App 里粘贴一次即可完成配对,适合模拟器或相机不可用时使用;在「内网 /
|
|
62
65
|
公网」之间切换会立即为所选地址生成新的二维码与配对信息,面板保持展开。
|
|
63
66
|
|
|
64
|
-
|
|
67
|
+
局域网连接始终开启(没有开关),使用插件独立的 TCP `3098` 端口,且只提供 TLS。每次连上后,
|
|
68
|
+
插件会把当前的局域网地址和公网 Funnel 地址告诉 App:同一 Wi-Fi 下手机自动走局域网,在外自动
|
|
69
|
+
改走 Funnel,不需要重新配对。插件首次启动时生成
|
|
65
70
|
自签证书(私钥位于 `$DSH_HOME/deeppilot/lan-tls/`),配对二维码携带其公钥指纹,
|
|
66
71
|
App 只信任与该指纹一致的主机。DSH 可以继续只监听 `127.0.0.1:3080`;插件不再在
|
|
67
72
|
DSH Web 服务上注册任何 `/phone` 路由。启用系统防火墙时,请仅在你使用的网络放行
|
|
@@ -114,7 +119,11 @@ DeepPilot 设置页提供“每个公网来源的连接上限”,默认 `8`,
|
|
|
114
119
|
自定义名称;名称会保存在主机设备注册表中,即使 iPhone 重连或上报了新的系统名称
|
|
115
120
|
也不会被覆盖。留空保存可恢复 iPhone 上报的默认名称。
|
|
116
121
|
|
|
117
|
-
|
|
122
|
+
设备行的“更多操作”可查看指纹、重命名或删除设备;删除仍需再次确认。
|
|
123
|
+
连接选项、连接帮助、诊断工具和系统信息默认收起。桌面次要操作按钮高 28px,
|
|
124
|
+
自有操作的触屏点击区域至少 44px。“添加手机”直接使用 DSH 内置 `Button` 的小号描边样式,所有开关使用内置 `Switch`;这些原生控件的外观与尺寸均沿用宿主。布局与验收方式见 [设置页说明](docs/SETTINGS_UI.md)。
|
|
125
|
+
|
|
126
|
+
设置页的“诊断工具”分组下有一个 `debug` 开关,打开后会在 DSH host 的
|
|
118
127
|
终端输出里打印逐帧与推送等诊断信息(例如 `s2c.welcome` 里实际发出的能力位),
|
|
119
128
|
不会打印配对令牌、APNs token 或消息内容。该开关按连接快照,已建立的连接需要
|
|
120
129
|
重连一次才按新值工作。
|
package/bin/SHA256SUMS
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
eecc0241e0940e901c7f0bcda96945c22dcc5b24bd27349c391231d0398e50c2 ./darwin-amd64/dsh-deeppilot-tunnel
|
|
2
|
+
e834c3d5e02abe0fc459b99ba3dd4f8e9b63f9f94ade402ab8bfaf34720dea86 ./darwin-arm64/dsh-deeppilot-tunnel
|
|
3
|
+
1bcb0af171a9491566ec26f971930eb97a380f1a0db1d8dd55ee5e1fff46a9c5 ./linux-amd64/dsh-deeppilot-tunnel
|
|
4
|
+
555846f645f3bbfcf96250d4a7e981829cfaf3e1bcda8b7854cf3b74b8cc4505 ./linux-arm64/dsh-deeppilot-tunnel
|
|
5
|
+
725213a7302f325f098c6313ef38bf3a60e9b0929e4705e3f2e03e5977dca502 ./windows-amd64/dsh-deeppilot-tunnel.exe
|
|
6
|
+
90cb4018d48e7e0b637d50d7725a8c1782fc93e8775b429380a979e3a8b04887 ./windows-arm64/dsh-deeppilot-tunnel.exe
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -5,6 +5,39 @@
|
|
|
5
5
|
> move the lower bound, at each `0.x` minor boundary, or when a host inside the
|
|
6
6
|
> range breaks at runtime.
|
|
7
7
|
|
|
8
|
+
## UI integration check — native settings controls (2026-11-05)
|
|
9
|
+
|
|
10
|
+
- **Runtime surface:** `@deepseek-ai/dsh-client-ui-primitives` is an implicit
|
|
11
|
+
browser baseline module. The installed frontend bundles for the supported
|
|
12
|
+
floor `0.2.1-rc.5` and local host `0.2.2-rc.1` both seed the module and export
|
|
13
|
+
`Switch`; the general settings page uses the same component.
|
|
14
|
+
- **Decision:** four DeepPilot settings switches use the host component with
|
|
15
|
+
`checked`, `disabled`, `label`, and `onChange(next)`. No switch CSS override,
|
|
16
|
+
runtime dependency, or explicit client injection is added. The exact floor
|
|
17
|
+
version is a development-only type/fixture dependency; the production bundle
|
|
18
|
+
keeps its host-module require. Compatibility declarations stay unchanged.
|
|
19
|
+
- **Scope:** frontend-only. Host activation metadata, production dependencies,
|
|
20
|
+
and the phone protocol are unchanged; this source/module-table check does
|
|
21
|
+
not claim phone integration or a published release.
|
|
22
|
+
- **Switch migration verification:** typecheck and build pass; the production bundle requires
|
|
23
|
+
the host primitives module. Unit tests: 721 pass, zero fail, one skip, one
|
|
24
|
+
existing TODO (a first run hit an unrelated push-test temporary-directory
|
|
25
|
+
cleanup race; the full rerun passed). Browser E2E: 21 pass, including official
|
|
26
|
+
switch style comparison, keyboard/mouse changes, disabled states, and config
|
|
27
|
+
writes. The real `0.2.2-rc.1` host at `127.0.0.1:3080` was reloaded: DeepPilot
|
|
28
|
+
renders the same switch/thumb classes as general settings, with a 36×20px
|
|
29
|
+
track and 16px thumb, and no custom pseudo-elements. Live network switches
|
|
30
|
+
were inspected without changing their values.
|
|
31
|
+
- **Add phone follow-up:** the same module supplies `Button` on both audited
|
|
32
|
+
frontend versions. The pairing toggle now uses `variant: 'outline'` and
|
|
33
|
+
`size: 'sm'` with a leading SVG icon; only its wrapper aligns it to the right.
|
|
34
|
+
Plugin button, font, focus, and touch-size overrides do not reach this native
|
|
35
|
+
control. Typecheck/build and unit tests pass (721 pass, zero fail, one skip,
|
|
36
|
+
one existing TODO); 22 browser E2E tests pass, including native button style
|
|
37
|
+
comparison and Enter/Space pairing toggles. The reloaded real rc.1 host
|
|
38
|
+
renders the official button/outline/sm classes at H28/R8 with 12px text.
|
|
39
|
+
No real pairing grant was issued during visual inspection.
|
|
40
|
+
|
|
8
41
|
## Audit record — `dsh-v0.2.2-rc.1` (rebuild of alpha.3, no runtime change)
|
|
9
42
|
|
|
10
43
|
- **Release (2026-11-04):** `dsh-v0.2.2-rc.1`, now npm `next`; `latest` stays
|
package/docs/NPM_PUBLISHING.md
CHANGED
|
@@ -34,12 +34,10 @@
|
|
|
34
34
|
npm 不在保存配置时验证绑定;首次发布成功才证明认证可用。
|
|
35
35
|
4. 新绑定必须在 **2 天内完成首次成功发布**。因此准备好新版本后再绑定;若过期,
|
|
36
36
|
删除过期绑定并重新创建。先验证可信发布成功,再按需调整原有令牌发布权限。
|
|
37
|
-
5.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
若要恢复直接发布,需在包设置的 Trusted Publisher 中勾选 `Allow npm publish`
|
|
42
|
-
(账户强制 2FA 时可能不可用),并同步改本节、AGENTS.md 与第 4 步的核对逻辑。
|
|
37
|
+
5. **当前绑定允许直接发布(2026-11-05 起)。** 2026-10-29 实测绑定只允许暂存发布:
|
|
38
|
+
`npm publish` 把版本送进 staged 区,需维护者 2FA 批准后才公开(见第四节第 11 条)。
|
|
39
|
+
2026-11-05 用户在 Trusted Publisher 中勾选 `Allow npm publish`,改为工作流直接公开,
|
|
40
|
+
不再需要批准;首次直接发布的结果在下一次发版时核实并记入第四节。
|
|
43
41
|
|
|
44
42
|
## 三、每次发布
|
|
45
43
|
|
|
@@ -69,13 +67,11 @@
|
|
|
69
67
|
压缩包发布跳过生命周期脚本(`--ignore-scripts`);测试、类型检查和构建已在前序
|
|
70
68
|
步骤执行,打包仍执行 `prepack`(打包前构建)。发布后核对版本、分发标签、
|
|
71
69
|
压缩包完整性和来源证明元数据。
|
|
72
|
-
6.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
`npm stage list dsh-deeppilot` → `npm stage approve <id
|
|
76
|
-
|
|
77
|
-
工作流末尾「核对发布版本、包完整性与来源证明」在批准前必然 404 失败、整次运行标红;
|
|
78
|
-
这是暂存模式的预期结果,不代表上传失败,发布证据以批准后的手工核验为准。
|
|
70
|
+
6. 发布步骤直接公开版本并写入分发标签(`latest` / `alpha`),末尾核对随即通过。
|
|
71
|
+
若核对持续 404、发布步骤提示进入 staged 区,说明绑定退回暂存模式:维护者在
|
|
72
|
+
npmjs.com 的 **Staged Packages** 标签用 2FA 批准 `dsh-deeppilot@<版本>`(或本机
|
|
73
|
+
`npm login` 后 `npm stage list dsh-deeppilot` → `npm stage approve <id>`),
|
|
74
|
+
同一版本不能重跑工作流(`E409 Cannot publish over previously staged version`)。
|
|
79
75
|
7. 确认 npm 包可安装,在全新 DSH 配置中完成安装验证后,再公开 GitHub 发布草稿。
|
|
80
76
|
工作流不自动公开发布草稿;npm 上传和发布后的核对分别记录在步骤中。
|
|
81
77
|
|
|
@@ -188,6 +184,33 @@
|
|
|
188
184
|
暂存流程与批准步骤已写入第二、三节与 `AGENTS.md`;工作流末尾核对在暂存模式下
|
|
189
185
|
的标红问题本轮未改,留待下次发布前决定是否检测 staged 后按成功处理。
|
|
190
186
|
|
|
187
|
+
12. `0.9.14` 的实际发布结果(2026-11-05):`release/0.9.14` 快进推到 `main`
|
|
188
|
+
(`40fe063..9ff31ba`),该提交的 CI(运行号 `41953217573`)与 CodeQL
|
|
189
|
+
(`41953216405`)均绿;附注标签 `v0.9.14` 指向
|
|
190
|
+
`9ff31ba16a50a7707d8de18e0a72cc166fb03f61`。`publish.yml` 运行 `41953700019`
|
|
191
|
+
(`latest`)**整次为绿**:末尾核对重试 12 次(约 3.5 分钟)后,暂存版本在此期间
|
|
192
|
+
获批,核对通过——批准落在重试窗口内时不会标红,批准晚于窗口仍会按第 11 条标红。
|
|
193
|
+
注册表 `latest = 0.9.14`;来源证明类型为 `https://slsa.dev/provenance/v1`、
|
|
194
|
+
`gitCommit` 为该提交、工作流引用 `refs/tags/v0.9.14`;69 个条目、解包
|
|
195
|
+
131,580,166 字节,与本地 `npm pack --dry-run` 一致(压缩包 SHA1 因在 CI 重新打包
|
|
196
|
+
而与本地预演不同)。随后在全新隔离 `DSH_HOME` 中从 npm 安装
|
|
197
|
+
`dsh-deeppilot@0.9.14`(真实目录,不是 link,无 peer 警告),用真实
|
|
198
|
+
`0.2.2-rc.1` 宿主启动:`--dump-config` 退出码 0、无跳过,插件自有端口
|
|
199
|
+
`/phone/health` 返回 200,`serverVersion` 为 `0.9.14`、`protocolVersion` 2、
|
|
200
|
+
`dataPlane: true`;GitHub Release 在这一步通过后才公开并标记 Latest。
|
|
201
|
+
|
|
202
|
+
13. `0.9.15` 的实际发布结果(2026-11-05):发布提交 `688dabc` 直接推到 `main`,
|
|
203
|
+
CI(运行号 `42036820848`)与 CodeQL(`42036820840`)均绿;附注标签 `v0.9.15` 指向
|
|
204
|
+
`688dabcc1b8c5f73664633750c47cb90fad1caac`。`publish.yml` 运行 `42037502337`
|
|
205
|
+
(`latest`)**整次为绿**:本次仍进入 staged 区,维护者在末尾核对的重试窗口内批准,
|
|
206
|
+
并同时勾选 `Allow npm publish`,下次发版起直接公开。注册表 `latest = 0.9.15`;
|
|
207
|
+
来源证明类型为 `https://slsa.dev/provenance/v1`、`gitCommit` 为该提交、工作流引用
|
|
208
|
+
`refs/tags/v0.9.15`、invocation 为 `42037502337`;69 个条目、解包 131,613,948 字节,
|
|
209
|
+
与本地 `npm pack --dry-run` 一致。随后在全新隔离 `DSH_HOME` 中从 npm 安装
|
|
210
|
+
`dsh-deeppilot@0.9.15`,用真实 `0.2.2-rc.1` 宿主启动:插件自有端口 `/phone/health`
|
|
211
|
+
返回 200,`serverVersion` 为 `0.9.15`、`protocolVersion` 2、`dataPlane: true`,
|
|
212
|
+
日志显示按需完成通知工具已注册;GitHub Release 在这一步通过后才公开并标记 Latest。
|
|
213
|
+
|
|
191
214
|
## 五、官方资料
|
|
192
215
|
|
|
193
216
|
1. [npm 可信发布配置与限制](https://docs.npmjs.com/trusted-publishers/)
|