dsh-deeppilot 0.9.9 → 0.9.13

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/COMPATIBILITY.md CHANGED
@@ -1,16 +1,18 @@
1
1
  # Compatibility
2
2
 
3
- This branch targets exactly **five DSH releases**: `0.2.0-rc.2`, which the npm
4
- `latest` channel points at; `0.2.1-alpha.3`, `0.2.1-alpha.4`, and
5
- `0.2.1-alpha.5`, which the `alpha` channel has pointed at in turn; and
6
- `0.2.1-rc.2`, which the `next` channel points at. All five are
3
+ This branch targets exactly **eight DSH releases**: `0.2.0-rc.2`; the `alpha`
4
+ channel releases `0.2.1-alpha.3`, `0.2.1-alpha.4`, `0.2.1-alpha.5`, and
5
+ `0.2.2-alpha.2`; and the `next` channel releases `0.2.1-rc.2`, `0.2.1-rc.3`, and
6
+ `0.2.1-rc.4`. The npm channels have
7
+ moved since: `latest` now points at `0.2.1-rc.2`, promoted from `next`, `next`
8
+ at `0.2.1-rc.4`, and `alpha` at `0.2.2-alpha.2`. All eight are
7
9
  named in both `engines.dsh` and `peerDependencies`; no other version is accepted.
8
10
  DSH evaluates that declaration before composing a profile — on every start, not
9
11
  only on install — so a newly published DSH release deactivates this plugin until
10
12
  the list is widened deliberately. That is the intended trade: a plugin that
11
13
  cannot run on an unaudited host fails visibly instead of misbehaving quietly.
12
14
  The decision and the reversal it represents are recorded in
13
- [`docs/决策记录.md`](./docs/决策记录.md) (章节一), with the supporting audit in
15
+ the maintainers' local decision record `docs/adr/0001-dsh-compatibility-policy.md`, with the supporting audit in
14
16
  [`docs/DSH_RELEASE_MEMORY.md`](./docs/DSH_RELEASE_MEMORY.md).
15
17
 
16
18
  The development packages this branch builds and typechecks against stay pinned
@@ -21,9 +23,11 @@ recorded in the release memory.
21
23
  | Component | Current contract | Evidence |
22
24
  |---|---|---|
23
25
  | Node.js | 22 or newer | Package engine and CI |
24
- | DSH CLI and Host API | `engines.dsh` and `peerDependencies` both name `0.2.0-rc.2 \|\| 0.2.1-alpha.3 \|\| 0.2.1-alpha.4 \|\| 0.2.1-alpha.5 \|\| 0.2.1-rc.2` (dev pins `0.2.0-rc.2`) | Peer metadata, source typecheck, unit tests, bundle build, and config schema projection against a real 0.2.0-rc.2 CLI, plus isolated composes and live phone-protocol runs with the published 0.2.1-alpha.2, 0.2.1-alpha.3, and 0.2.1-alpha.4 CLIs, an isolated 0.2.1-alpha.5 host where this plugin now composes, starts, and answers `/phone/health` with 200 on its own LAN listener, and a pre-widening 0.2.1-rc.2 host run where the unchanged declaration is refused at compose time (audits below) |
26
+ | DSH CLI and Host API | `engines.dsh` and `peerDependencies` both name `0.2.0-rc.2 \|\| 0.2.1-alpha.3 \|\| 0.2.1-alpha.4 \|\| 0.2.1-alpha.5 \|\| 0.2.1-rc.2 \|\| 0.2.1-rc.3 \|\| 0.2.1-rc.4 \|\| 0.2.2-alpha.2` (dev pins `0.2.0-rc.2`) | Peer metadata, source typecheck, unit tests, bundle build, and config schema projection against a real 0.2.0-rc.2 CLI, plus isolated composes and live phone-protocol runs with the published 0.2.1-alpha.2, 0.2.1-alpha.3, and 0.2.1-alpha.4 CLIs, an isolated 0.2.1-alpha.5 host where this plugin now composes, starts, and answers `/phone/health` with 200 on its own LAN listener, a pre-widening 0.2.1-rc.2 host run where the unchanged declaration is refused at compose time, an isolated 0.2.1-rc.3 host where the widened declaration composes, starts, and answers `/phone/health` with 200, and isolated 0.2.1-rc.4 and 0.2.2-alpha.2 hosts where the eight-release declaration does the same (audits below) |
27
+ | DSH history read | `SessionController.inspect` when the host has it, `SessionController.page` otherwise | DSH 0.2.2-alpha.2 removed `inspect`; the adapter branches on its presence and maps the host page's `{type:'event',event}` records onto the bridge's `{event}` contract, expressing the phone's exclusive `beforeSeq` as the inclusive `throughSeq` cut. Unit tests cover both branches (audits below) |
25
28
  | iOS bridge | DeepPilot protocol v2 | Bridge protocol tests; device behavior must be checked with the running Host and app |
26
29
  | Remote access | Tailscale Funnel on ports 443, 8443, or 10000 | Helper and supervisor tests |
30
+ | Funnel helper platforms | macOS 13 Ventura or later, Linux, and Windows, each on amd64/arm64; built with Go 1.27, which dropped macOS 12 | CI starts the committed helper on a native runner for each of the six targets (`helper-smoke`); no runner covers macOS 13 itself |
27
31
 
28
32
  ## DSH interfaces used here
29
33
 
@@ -73,6 +77,136 @@ carries the old top-level `debug: true` is accepted but that value is ignored:
73
77
  verbose logging must be turned on again from the settings page. No other config
74
78
  field changed shape, and the old key is not read anywhere in this version.
75
79
 
80
+ ## 0.2.2-alpha.2 audit outcome
81
+
82
+ The artifact-level audit of `dsh-v0.2.2-alpha.2` (published to the npm registry
83
+ 2026-10-28T02:50:54Z, the `alpha` channel release; `latest` is still
84
+ `0.2.1-rc.2` and `next` moved to `0.2.1-rc.4`) against `dsh-v0.2.1-rc.3` found
85
+ **one break, confined to the history read**. The tree grows 307 → 332 packages.
86
+
87
+ - **The break.** `@deepseek-ai/dsh-api-session-controller` removed
88
+ `SessionController.inspect(sessionId, signal?)` — absent from both
89
+ `lib/types/index.d.ts` and the runtime `lib/index.js`. `sessions.history`
90
+ called it to read a whole log, so on this host the phone's history pagination
91
+ threw `TypeError`, while pairing, listing, prompting, the settings page, and
92
+ the plugin page kept working. The phone protocol itself is unchanged: the
93
+ `HistoryResult` shape is identical, only the host-side source moved.
94
+ - **The fix, one file.** `src/dsh-api-proxy.ts` now treats `inspect` as optional
95
+ and falls back to `SessionController.page`. The branch keys off `inspect`, not
96
+ off `page`: `page` exists on all eight admitted hosts, but its
97
+ `SessionPageRequest.throughSeq` is mandatory and validated on the seven older
98
+ ones, and this adapter has no log cursor to pass. On the `page` path the
99
+ phone's exclusive `beforeSeq` travels as the inclusive `throughSeq`, and the
100
+ host's `{type:'event',event}` records are unwrapped to the bridge's `{event}`.
101
+ - **Nothing else reaches this plugin.** 24 packages and 358 modules were
102
+ compared; 20 modules changed export surfaces, but only two at entry level
103
+ (`dsh-api-session-controller` dropping `buildModelCatalog`, `dsh-app-boot`
104
+ dropping five bundle-list constants and adding three platform helpers), and a
105
+ repo-wide grep shows the plugin uses none of them. The three packages the
106
+ plugin actually imports (`cordis`, `dsh-typert-protocol`, `schemastery`) have
107
+ unchanged export surfaces.
108
+ - **Patch anchor still valid.** The upstream `dsh-web-app/cordis.patch.yml`
109
+ gained and lost three ids, and the block this plugin disables
110
+ (`directory-picker`) moved from line 113 to 105 and byte 4664 to 4309, but the
111
+ block itself is byte-identical and the shared id order is unchanged; both
112
+ hosts' `loadOverlayPatches` resolve this plugin's patch to the same fields.
113
+ - **Vendor peers.** This host vendors `cordis 4.0.6-alpha.1` and
114
+ `schemastery 3.18.6-alpha.1`, which the previous ranges did not admit under
115
+ npm's default prerelease rule. The ranges now append `~4.0.6-alpha.1` and
116
+ `~3.18.6-alpha.1` rather than replacing the GA clauses, because every earlier
117
+ admitted host still vendors `4.0.5` / `3.18.5`. DSH's compatibility evaluator
118
+ ignores both peers; only npm's install-time resolution reads them.
119
+ - **Activation.** Before the widening this host refused the plugin with a single
120
+ `engines.dsh` requirement and skipped the whole bundle; after it the matrix
121
+ accepts exactly `0.2.2-alpha.2` with no new rejection, while `0.2.2-alpha.1`,
122
+ `0.2.2-alpha.3`, `0.2.2`, `0.2.2-rc.1`, `0.2.1`, and `0.3.0` stay refused.
123
+ - **One install-side prerequisite.** This host's `dsh` package raised
124
+ `engines.node` to `>= 24.9.0`; the plugin's own `engines.node` stays `>=22`.
125
+
126
+ ## 0.2.1-rc.4 audit outcome
127
+
128
+ The artifact-level audit of `dsh-v0.2.1-rc.4` (published 2026-10-28T02:49:58Z,
129
+ the `next` channel release) against `dsh-v0.2.1-rc.3` found **no change that
130
+ reaches this plugin**: 307 packages on both sides, 42,415 of 42,731 shared files
131
+ byte-identical, and 316 differing paths made of 296 `package.json` files plus 20
132
+ files in eight packages (MCP capability gating, one log call moved to stderr, one
133
+ View tooltip, four version strings, and documentation) — none of them in this
134
+ plugin's declaration or call surface. Export surfaces are unchanged across 3,271
135
+ modules, the evaluator is the same file as rc.3, and the patch anchor file is
136
+ byte-identical. The declaration admits exactly `0.2.1-rc.4` more and nothing
137
+ else.
138
+
139
+ ## 0.2.1-rc.3 audit outcome
140
+
141
+ The artifact-level audit of `dsh-v0.2.1-rc.3` (published to the npm registry
142
+ 2026-10-23T07:54:30Z, the `next` channel release; `latest` points at `0.2.1-rc.2`)
143
+ against `dsh-v0.2.1-rc.2` found **no change that reaches this plugin's call
144
+ surface**. Nineteen packages were compared as whole trees rather than by `lib/`
145
+ alone — eighteen from the two installed trees plus
146
+ `@deepseek-ai/dsh-client-ui-slots` (the seventh declared `dsh-*` peer, absent from
147
+ both trees) through its registry tarball:
148
+
149
+ - **Fourteen packages differ only in `package.json`** — version and dependency
150
+ specs — so every file those hosts read at runtime is byte-identical.
151
+ - **Three packages carry one non-`package.json` change each** — `dsh-api-remotes`,
152
+ `dsh-api-session-controller`, and `dsh-web-app` — detailed below.
153
+ - **`cordis 4.0.5` and `schemastery 3.18.5` are byte-identical including
154
+ `package.json`**, so the vendor peer ranges need no widening again.
155
+ - **The tree gains one package**: `rc.2` ships 306 packages and `rc.3` 307; the
156
+ addition is `@deepseek-ai/dsh-client-ui-entry-customization@0.2.1-rc.3`, the
157
+ bundle behind the More menus. This plugin neither references it nor depends on
158
+ it through its own patch.
159
+
160
+ Of 3,302 shared files, 3,275 are byte-identical and 20 differ: 16 `package.json`
161
+ files, the three code/config files above, and the `dsh-client-ui-slots`
162
+ `package.json`. Across 274 analysed modules **no export symbol is added or
163
+ removed** (18 entry modules compared), so every earlier fix still holds
164
+ unchanged. The manifest delta over 19 packages covers 585 paths — 17 version
165
+ bumps and 568 dependency-spec moves, **zero structural differences** — with no
166
+ package added or removed by dependency resolution.
167
+
168
+ **The one file outside `package.json` that could reach this plugin's patch layer
169
+ is additive.** `@deepseek-ai/dsh-web-app/cordis.patch.yml` gained one hunk that
170
+ inserts the `ui-entry-customization` bundle (the More menus named in the rc.3
171
+ release notes). The patch anchor this plugin targets, `id: directory-picker`, is
172
+ byte-identical on both sides at the same offsets, and neither the new package
173
+ name nor `entry-customization` appears in this plugin's `cordis.patch.yml` or
174
+ `package.json`, so the change cannot reach any patch this plugin applies.
175
+
176
+ The other two non-`package.json` files are equally out of reach:
177
+ `@deepseek-ai/dsh-api-remotes/lib/client.js` only widens the client telemetry
178
+ event schema (`is_new_session`, `agent_preset`, and the More-menu and
179
+ agent-preset switch events), which this plugin neither emits nor validates, and
180
+ `@deepseek-ai/dsh-api-session-controller`'s
181
+ `lib/types/client/sessions/service.d.ts` changes a doc comment only.
182
+
183
+ The activation verdict repeats the rc.2 shape: rc.3 also reads `engines.dsh`
184
+ alone. Before the widening, the published rc.3 evaluator refused `0.2.1-rc.3`
185
+ with a single `engines.dsh` requirement and `exempted: false`, and a real rc.3
186
+ CLI reproduced the refusal at compose time (`skipping profile bundle
187
+ "dsh-deeppilot"`) while the host itself still booted and served its web port.
188
+ After the widening, the same evaluator admits exactly `0.2.1-rc.3` and adds no
189
+ other acceptance: the five earlier hosts stay admitted, and `0.2.1-rc.1`,
190
+ `0.2.1-rc.3.1`, `0.2.1-rc.30`, `0.2.1-RC.3`, `0.2.1`, `0.2.1-rc.2.1`, `0.2.0`,
191
+ `0.3.0`, and `1.0.0` remain refused. Deleting `engines.dsh` from a copy of the
192
+ manifest falls back to the ten peers and still admits the same six hosts, so the
193
+ short-circuit is unchanged.
194
+
195
+ **The positive half is complete this time.** An isolated `0.2.1-rc.3` host — its
196
+ own `DSH_HOME`, the plugin linked from this working tree, and no other plugin —
197
+ composes the plugin into the tree, starts it, and answers `/phone/health` with
198
+ 200 on the plugin's own LAN listener (`serverVersion` `0.9.10`, protocol v2),
199
+ while the isolated home gains the plugin's data directory. The same profile run
200
+ with the declaration unchanged shows the skip line instead and no listener,
201
+ which is what makes the pair discriminative.
202
+
203
+ Evidence: `.rc3-verify/AUDIT.md` and `.rc3-verify/CHANGE_SURFACE.md` with the raw
204
+ logs under `.rc3-verify/logs/`, the evaluator reproduction in
205
+ `.rc3-verify/evaluator-repro.out.json`, the acceptance matrix in
206
+ `.rc3-verify/matrix.out.json`, the export-symbol diff in
207
+ `.rc3-verify/export-symbol-diff.out.json`, and the host run in
208
+ `.rc3-verify/HOST-BOOT.md`.
209
+
76
210
  ## 0.2.1-rc.2 audit outcome
77
211
 
78
212
  The artifact-level audit of `dsh-v0.2.1-rc.2` against `dsh-v0.2.1-alpha.5` found
@@ -269,7 +403,7 @@ needs a documentation update, not a peer-range widening.
269
403
 
270
404
  > **Superseded 2026-10-14.** That open-ended range was narrowed back to the two
271
405
  > versions actually audited, `0.2.0-rc.2` and `0.2.1-alpha.3`; see the
272
- > 0.2.1-alpha.3 outcome above and `docs/决策记录.md` (章节一). The paragraphs in
406
+ > 0.2.1-alpha.3 outcome above and `docs/adr/0001-dsh-compatibility-policy.md`. The paragraphs in
273
407
  > this historical entry describe the policy as it stood on 2026-09-29.
274
408
  > **This note is in turn superseded:** `0.2.1-alpha.4` was added the next day by
275
409
  > the same deliberate audit step, `0.2.1-alpha.5` on 2026-10-16, and
package/README.md CHANGED
@@ -19,6 +19,13 @@ Host on your own computer and does not replace or modify the DSH Web UI.
19
19
  ## What you get
20
20
 
21
21
  - Browse projects, sessions, history, and live agent output from iPhone.
22
+ - Stream assistant text and reasoning while viewing a session; reconnects recover
23
+ the durable history rather than treating partial output as a completed answer.
24
+ - Export a full ZIP log archive, or share the conversation body as Markdown when
25
+ the Host provides that optional route.
26
+ - Check plugin updates from the app and install an explicitly confirmed compatible
27
+ version. The Host handles hot replacement and rollback; without hot reload the
28
+ app reports that a DSH restart is required.
22
29
  - Send prompts, switch models, create sessions, and answer approvals/questions.
23
30
  - Pair with a five-minute single-use code and a per-device P-256 key; physical
24
31
  iPhones keep the private key in Secure Enclave.
@@ -32,19 +39,24 @@ Host on your own computer and does not replace or modify the DSH Web UI.
32
39
 
33
40
  ## Install from npm
34
41
 
35
- This source checkout targets Node.js 22+ and the five DSH releases it has been
36
- audited against — `0.2.0-rc.2` (the `latest` channel), the `alpha` channel
37
- releases `0.2.1-alpha.3`, `0.2.1-alpha.4`, and `0.2.1-alpha.5`, and `0.2.1-rc.2`
38
- (the `next` channel) — with a `web` profile. DSH checks a plugin's declared
42
+ This source checkout targets Node.js 22+ and the eight DSH releases it has been
43
+ audited against — `0.2.0-rc.2`, the `alpha` channel releases `0.2.1-alpha.3`,
44
+ `0.2.1-alpha.4`, `0.2.1-alpha.5`, and `0.2.2-alpha.2`, and the `next` channel
45
+ releases it has admitted in turn, `0.2.1-rc.2`, `0.2.1-rc.3`, and `0.2.1-rc.4` —
46
+ with a `web` profile. (The npm channels move: `latest` now points at
47
+ `0.2.1-rc.2`, which was promoted from `next`, `next` at `0.2.1-rc.4`, and
48
+ `alpha` at `0.2.2-alpha.2`.) DSH checks a plugin's declared
39
49
  requirements before composing a profile, on every start rather than only on
40
50
  install, so any other host version refuses to activate this plugin. From DSH
41
51
  `0.2.1-alpha.4` on, that check reads `engines.dsh` and ignores
42
52
  `peerDependencies`; older hosts know only the peer range, so both name the same
43
- five releases. The package includes Funnel helpers
53
+ eight releases. The package includes Funnel helpers
44
54
  for macOS, Linux, and Windows on amd64/arm64; trusted-LAN mode does not require
45
- the helper.
55
+ the helper. The helper is built with Go 1.27, which requires **macOS 13 Ventura
56
+ or later**: on macOS 12 and earlier, Funnel mode cannot start, while
57
+ trusted-LAN mode keeps working.
46
58
 
47
- The current working tree names exactly those five versions in `engines.dsh` and
59
+ The current working tree names exactly those six versions in `engines.dsh` and
48
60
  `peerDependencies` and is built/typechecked against `0.2.0-rc.2`. A previously
49
61
  published plugin package may still carry its own older compatibility
50
62
  declaration until a release is made from this tree.
package/README.zh-CN.md CHANGED
@@ -18,6 +18,10 @@
18
18
  ## 功能
19
19
 
20
20
  - 在 iPhone 查看项目、会话、历史记录和 Agent 实时输出;
21
+ - 打开会话时实时显示助手正文与思考,断线后以正式历史恢复,不把半截输出当成完整答复;
22
+ - 导出完整 ZIP 日志归档;宿主提供相应能力时,也可分享 Markdown 对话正文;
23
+ - 在 App 检查插件更新,明确确认后安装兼容版本。宿主负责热替换和失败回滚;
24
+ 未启用热重载时,App 明确提示需要重启 DSH;
21
25
  - 发送提示词、切换模型、创建会话,并处理审批与提问;
22
26
  - 使用 5 分钟有效的单次配对码与设备级 P-256 密钥;iPhone 真机私钥保存在
23
27
  Secure Enclave;
@@ -30,17 +34,20 @@
30
34
 
31
35
  ## 从 npm 安装
32
36
 
33
- 当前源码面向 Node.js 22+ 与带 `web` profile 的**五个已审计 DSH 版本**:
34
- `0.2.0-rc.2`(`latest` 通道)、`alpha` 通道的 `0.2.1-alpha.3`、
35
- `0.2.1-alpha.4` 与 `0.2.1-alpha.5`,以及 `0.2.1-rc.2`(`next` 通道)。
37
+ 当前源码面向 Node.js 22+ 与带 `web` profile 的**八个已审计 DSH 版本**:
38
+ `0.2.0-rc.2`、`alpha` 通道的 `0.2.1-alpha.3`、
39
+ `0.2.1-alpha.4`、`0.2.1-alpha.5` 与 `0.2.2-alpha.2`,以及先后三版 `next` 通道的
40
+ `0.2.1-rc.2`、`0.2.1-rc.3` 与 `0.2.1-rc.4`(npm 通道会移动:`latest` 现指向由 `next` 转正的
41
+ `0.2.1-rc.2`,`next` 指向 `0.2.1-rc.4`,`alpha` 指向 `0.2.2-alpha.2`)。
36
42
  DSH 在组合 profile 前会校验插件声明的
37
43
  兼容要求,且**每次启动都会校验**(不只是安装时),因此其他宿主版本会拒绝
38
44
  激活本插件。从 DSH `0.2.1-alpha.4` 起,该校验只读 `engines.dsh` 并忽略
39
- `peerDependencies`;更早的宿主只认 peer 范围,因此两处列出同一组五个版本。
45
+ `peerDependencies`;更早的宿主只认 peer 范围,因此两处列出同一组八个版本。
40
46
  npm 包内置 macOS、Linux、Windows 的 amd64/arm64 Funnel helper;可信局域网
41
- 模式不依赖 helper。
47
+ 模式不依赖 helper。helper 用 Go 1.27 编译,要求 **macOS 13 Ventura 或更高版本**:
48
+ macOS 12 及更早版本无法启动 Funnel 模式,可信局域网模式不受影响。
42
49
 
43
- 当前工作树的 `engines.dsh` 与 `peerDependencies` 精确列出这五个版本,构建与
50
+ 当前工作树的 `engines.dsh` 与 `peerDependencies` 精确列出这六个版本,构建与
44
51
  类型检查针对 `0.2.0-rc.2`。从此工作树发布新版本前,已发布的旧插件包仍可能
45
52
  带有各自旧的兼容声明。
46
53
 
package/bin/SHA256SUMS CHANGED
@@ -1,6 +1,6 @@
1
- 4e83f82d5c623115d121f58264ca84706e5fc935dadc0747b37ae886d102dc6a ./darwin-amd64/dsh-deeppilot-tunnel
2
- 7707999a5b745d11afeb4ab1868c85680e4ff5567202d97015d72d810817a134 ./darwin-arm64/dsh-deeppilot-tunnel
3
- 8a83351568cb223854efbe8f54ca9a403fc2b152382d4e7c952d372b0b0cb3e9 ./linux-amd64/dsh-deeppilot-tunnel
4
- dfa4eb4dd50b386aadf40d9767ac0df8151308b620fa395d0a560498f01eb0cb ./linux-arm64/dsh-deeppilot-tunnel
5
- 9c734ea42bc6dd5763930991db52f910d5138e9b12df0e826d6964ceb271e215 ./windows-amd64/dsh-deeppilot-tunnel.exe
6
- e7db4a0e62f04266d97a5bad38e1a21961474440e7231fd5b24980053589faa0 ./windows-arm64/dsh-deeppilot-tunnel.exe
1
+ cc7f9ae55c7a8b717a45cd83fd671e2c9b6993f91c09f33c44fd28ea459eeba0 ./darwin-amd64/dsh-deeppilot-tunnel
2
+ 37f7430994f6ad79a2a93573f79ea2a1b1a6108fac054117548d8268dca422db ./darwin-arm64/dsh-deeppilot-tunnel
3
+ 051ff06069db0f4ede5570a693811f380cf0740065df3969113b0b5d9ded3c0f ./linux-amd64/dsh-deeppilot-tunnel
4
+ f704a48365d952185e6b6c28d655db0e174cbf1b9557e3fe40493ca1f7c614fe ./linux-arm64/dsh-deeppilot-tunnel
5
+ ac2470db2843958af431de284212018ff8f2f9aa147a08359aada21e3a5a09b1 ./windows-amd64/dsh-deeppilot-tunnel.exe
6
+ 541da90383098daecda68f910058d8071439d07f2edd7726f0af6fdb3c778b7d ./windows-arm64/dsh-deeppilot-tunnel.exe
@@ -0,0 +1,43 @@
1
+ # DSH 0.2.2 能力接入
2
+
3
+ 本轮在既有协议 v2 上增加三个可选能力。正式 wire 契约以 [PROTOCOL.md](../PROTOCOL.md) 为准;[TypeScript 镜像](../src/protocol.ts) 与私有 App 的 Swift 镜像同步。能力缺失时保留原有行为,不要求重新配对。DSH 版本兼容性审计另见 [发布记忆](./DSH_RELEASE_MEMORY.md)。
4
+
5
+ ## 实际接口与阅读范围
6
+
7
+ 已扫描此次发布的能力清单,精读下列实际调用面。其余新 Web 插件、推荐、共享与工作树模块未接入,也不作为本次兼容性声明依据。
8
+
9
+ | 上游接口 | 方法或来源 | 本次阅读 | 桥接用途 |
10
+ |---|---|---|---|
11
+ | `/api/session.markdown` | GET,经 `connection.createSharedFetchHandler('/api')` 的 owner 调用 | 已读路由注册、处理器和依赖 | 复用现有导出分块,返回正文 `.md` |
12
+ | `/api/session.export` | GET,`includeDescendants=true` | 已读 | 缺省 ZIP 原 URL、分块及回执保持不变 |
13
+ | `connection.fetchRoutes` / `sessionQuery.readSession` | 已注册路由及非激活读取 | 已读 | 真正有 Markdown 路由和读取依赖时才声明能力 |
14
+ | `agent/assistant-stream` | `{agent,frame}`;start / chunk / end | 已读类型与实际发射次序 | 生成独立、无重放序号的 `s2c.session.delta` |
15
+ | `session/event` | 持久事件先于 committed stream end | 已读 | final 前发出窗口尾部,以 `streamId` 替换临时输出 |
16
+ | `typert.getPackage` | 公开 host face 类型反射 | 已读 | 识别 `SessionAssistantStreamFrame`;缺反射只降级流能力 |
17
+ | `pluginManager.listVersions` / `registries` | 公开版本目录及软件源配置 | 已读 | 显示候选版本,读取精确协议声明,确定实际候选源 |
18
+ | `pluginManager.updateBundle` / `listBundles` | 精确版本更新、实际安装清单 | 已读 | 由宿主完成 HMR 替换和失败回滚,再核对安装与运行版本 |
19
+ | `plugin-manager/registry.registryPlan` | 公开软件源选择规则 | 已读并建立对照测试 | 预检宿主可能回退到的全部来源,禁止不同协议或完整性摘要绕过闸门 |
20
+ | npm 精确版本 manifest | GET `{registry}/dsh-deeppilot/{version}` | 已读并限制响应大小及超时 | 核对包名、精确版本、bundle、`deepPilot.protocolVersion` 与强 SRI |
21
+ | 其他新模块 | 新增包及发布清单 | 仅盘点 | 未接入,不引入额外产品行为 |
22
+
23
+ ## 差异对照
24
+
25
+ | 类别 | 本轮范围内的状态 |
26
+ |---|---|
27
+ | 双方都有 | ZIP/Markdown 导出、瞬时流生命周期与正式事件关联、明确确认的更新及状态查询、兼容性闸门、宿主 HMR/回滚、断线后日志对账 |
28
+ | 上游有、我方未接 | 自动化任务批量清理、Web 引用交互、插件富文本详情及其他 Web 专属入口;本轮未扩展手机对应功能 |
29
+ | 我方有、上游没有 | 手机专用分块传输、独立瞬时 wire 帧、设备隔离的持久更新日志、App 协议版本闸门 |
30
+ | 双方都没有 | 不支持的宿主上强制重启进程、手机静默安装、替用户发布 npm/GitHub 版本 |
31
+
32
+ ## 关键默认值与边界
33
+
34
+ - 导出缺省仍是 ZIP。Markdown 需要 `sessionMarkdown`,不会把旧桥接忽略 `format` 后返回的 ZIP 当作正文。Markdown 不含思考过程、系统指令及注入上下文。
35
+ - 流能力使用 `assistantStream`。50 ms 窗口只合并相邻同类文字,正文与推理保持到达顺序;容量满时提前发出。瞬时帧不占重放序号、不进入 APNs 或持久缓存;断线、弃置尝试及取消均丢弃未完成临时输出。
36
+ - 自更新使用 `pluginUpdate`;check 需要 `sessions.read`,apply 需要 `sessions.manage`,widget 均不可使用。查询不会安装,安装只由手机确认触发,不随断线取消或自动重试。
37
+ - 候选来源使用宿主真正的回退规则。所有可达源的精确目标必须具有相同协议和强完整性摘要;不可核验或不一致时拒绝受理。不会修改用户全局软件源配置。
38
+ - 更新接受回执在目标校验和日志耐久写入后发送。最近结果保留供重连对账;同请求编号不能更换目标,也不能重复安装。日志不保存凭据或会话内容,设备归属仅保存摘要并只向所属设备返回。
39
+ - “恢复”指 HMR 后重连并恢复当前会话。宿主无 HMR 时返回 `restart-required`;不会强杀宿主,不能声称已经自动重启。安装失败由宿主恢复旧版本,桥接只核验并呈现结果。
40
+
41
+ ## 验证入口
42
+
43
+ 插件用例:`tests/markdown-export.test.ts`、`tests/assistant-stream.test.ts`、`tests/plugin-update.test.ts`,以及 wire 注册表、历史适配和命令回归。iOS 测试及实机边界见私有项目的对接说明。真机、实际 npm 安装和 Funnel 验证不得由模拟或语法检查替代。