dsh-deeppilot 0.9.13 → 0.9.15
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 +113 -19
- package/README.md +34 -23
- package/README.zh-CN.md +26 -19
- 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_022_FEATURES.md +38 -3
- package/docs/DSH_RELEASE_MEMORY.md +191 -2
- package/docs/NPM_PUBLISHING.md +48 -1
- package/lib/client.js +582 -468
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +350 -33
- package/lib/index.js +1858 -128
- package/lib/index.js.map +1 -1
- package/locale/en.json +2 -1
- package/locale/zh.json +2 -1
- package/package.json +31 -23
|
@@ -1,7 +1,186 @@
|
|
|
1
1
|
# DSH release compatibility memory
|
|
2
2
|
|
|
3
|
-
> This is the durable audit record for DeepPilot's public DSH plugin.
|
|
4
|
-
> the
|
|
3
|
+
> This is the durable audit record for DeepPilot's public DSH plugin. Since
|
|
4
|
+
> 2026-10-30 the declaration is a rolling range: audit a release when it would
|
|
5
|
+
> move the lower bound, at each `0.x` minor boundary, or when a host inside the
|
|
6
|
+
> range breaks at runtime.
|
|
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
|
+
|
|
41
|
+
## Audit record — `dsh-v0.2.2-rc.1` (rebuild of alpha.3, no runtime change)
|
|
42
|
+
|
|
43
|
+
- **Release (2026-11-04):** `dsh-v0.2.2-rc.1`, now npm `next`; `latest` stays
|
|
44
|
+
`0.2.1-rc.5`, `alpha` stays `0.2.2-alpha.3`. Inside the rolling range, so **no
|
|
45
|
+
declaration change**. The release notes summarize everything since
|
|
46
|
+
`0.2.1-rc.5`, so most listed items already shipped in `0.2.2-alpha.2/3`.
|
|
47
|
+
- **Tree vs `0.2.2-alpha.3`:** 330 shared packages, zero manifest structural
|
|
48
|
+
changes after normalizing version strings, and only four non-manifest files
|
|
49
|
+
differ (`dsh-client-modules` build commit, three client bundles' version
|
|
50
|
+
strings). `cordis 4.0.6-alpha.2 → 4.1.0` and `schemastery 3.18.6-alpha.2 →
|
|
51
|
+
3.19.0` change only `package.json` (version and `cosmokit`/`cordis-plugin-*`
|
|
52
|
+
ranges); code is byte-identical. The evaluator `dsh-app-boot/lib/index.js` is
|
|
53
|
+
byte-identical (sha256 `346f8322…`), so every alpha.3 finding — including the
|
|
54
|
+
schedule host-adapter requirement — carries over unchanged.
|
|
55
|
+
- **Gate (real rc.1 evaluator):** worktree `0.9.14` accepted on `0.2.2-rc.1`,
|
|
56
|
+
`0.2.2-alpha.3`, `0.2.1-rc.5`, `0.2.2`; refused on `0.3.0-rc.1`. Published
|
|
57
|
+
`0.9.13` (eight-release list) is refused on every one of them — `next`-channel
|
|
58
|
+
users need `0.9.14` published before the plugin activates.
|
|
59
|
+
- **Boot:** isolated `DSH_HOME` with the rc.1 CLI: `--dump-config` exit 0, empty
|
|
60
|
+
stderr, 7 `deeppilot` hits; `/phone/health` 200 (`protocolVersion` 2,
|
|
61
|
+
`serverVersion` 0.9.14, `dataPlane` active); `deeppilot/host-id` and
|
|
62
|
+
`lan-tls/` created.
|
|
63
|
+
- **Vendor peers (install-time only), decided 2026-11-05:** the previous
|
|
64
|
+
`@deepseek-ai/cordis` / `@deepseek-ai/schemastery` peers did not admit the
|
|
65
|
+
vendored `4.1.0` / `3.19.0`. Both are optional peers the evaluator ignores
|
|
66
|
+
(`engines.dsh` decides), so activation was never affected. `0.9.14` appends
|
|
67
|
+
`~4.1.0` / `~3.19.0` (append, not replace: earlier hosts still vendor the
|
|
68
|
+
older pairs); `tests/compatibility-metadata.test.ts` pins both.
|
|
69
|
+
- **Not covered:** no real-device pairing, Funnel end-to-end, model turn, or
|
|
70
|
+
`npm install` from the registry via the host's plugin manager.
|
|
71
|
+
|
|
72
|
+
## Audit record — `dsh-v0.2.2-alpha.3` (runtime break inside the range)
|
|
73
|
+
|
|
74
|
+
- **Release (2026-11-03):** `dsh-v0.2.2-alpha.3` on the npm `alpha` channel
|
|
75
|
+
(published 2026-11-03T07:48:26Z); `latest` and `next` remain `0.2.1-rc.5`. It
|
|
76
|
+
is inside the rolling range, so **no declaration change** was needed. The real
|
|
77
|
+
`0.2.2-alpha.3` evaluator accepted the worktree `0.9.14` manifest with zero
|
|
78
|
+
requirements and refused the published `0.9.13` (eight-release list) with a
|
|
79
|
+
single `engines.dsh` requirement — alpha-channel users must upgrade the plugin
|
|
80
|
+
before it activates.
|
|
81
|
+
- **Gate and install surface:** 18 candidate versions were scored with the
|
|
82
|
+
published evaluator and an independent semver recomputation with zero
|
|
83
|
+
disagreements (`0.3.0-0`, `0.3.0-rc.1`, `0.3.0`, `1.0.0` stay refused). The
|
|
84
|
+
host vendors `cordis 4.0.6-alpha.2` / `schemastery 3.18.6-alpha.2`, both
|
|
85
|
+
inside this plugin's peer ranges; its `engines.node` is `>=24.9.0`.
|
|
86
|
+
- **One runtime break, confined to schedule.** `0.2.2-alpha.3` moved automation
|
|
87
|
+
to host-level task management and rewrote `dsh-schedule`: `update` and
|
|
88
|
+
`delete` are gone (`edit({ id, action: 'update' | 'delete', patch,
|
|
89
|
+
expectedUpdatedAt })` replaces them), `list` returns
|
|
90
|
+
`{ items, shown, total, limit, offset }` instead of an array, `create` takes
|
|
91
|
+
`(request, actorSessionId, signal)`, and the request body uses `timing` /
|
|
92
|
+
`target` instead of `at` / `after_seconds` / …. The four bridge call sites
|
|
93
|
+
(`src/dsh-api-proxy.ts:216/232/236/248`) still speak the `0.2.2-alpha.2`
|
|
94
|
+
contract, so the phone's schedule list, create, edit and delete fail while
|
|
95
|
+
`schedule.history` keeps working. The `schedules` capability bit stays `true`
|
|
96
|
+
because it probes service presence only, so the break is silent (each action
|
|
97
|
+
returns an internal error) instead of hiding the feature. No other contract
|
|
98
|
+
changed: 24 of the 25 audited interfaces are identical or compatibly changed
|
|
99
|
+
and the client face is untouched.
|
|
100
|
+
- **Runtime verification:** an isolated `0.2.2-alpha.3` host composed and started
|
|
101
|
+
the `0.9.14` worktree (`--dump-config` exit 0, no skipped bundle, 199 composed
|
|
102
|
+
entries), `/phone/health` returned 200 with `protocolVersion` 2 and
|
|
103
|
+
`serverVersion` `0.9.14`, and the live 3080 host on the same build serves the
|
|
104
|
+
same plugin from its linked worktree. The config schema projection accepts
|
|
105
|
+
every `deeppilot` option, and `NODE_DEBUG=esm` proves the plugin's
|
|
106
|
+
`@deepseek-ai/*` imports resolve to the alpha.3 installation tree rather than
|
|
107
|
+
the pinned dev copies.
|
|
108
|
+
- **Decision:** keep the rolling range; ship `0.9.14` so alpha-channel users get
|
|
109
|
+
a host-activatable plugin. The schedule adapter now serves both contracts
|
|
110
|
+
(shape-detected `legacy` / `host` adapters, additive protocol v2 capability
|
|
111
|
+
`schedulesHost`, host-level frames, legacy frames projected onto host-level
|
|
112
|
+
tasks, iOS mirror); the wire contract lives in `PROTOCOL.md` section "Schedule
|
|
113
|
+
宿主级任务扩展". The public contract consequence is recorded in
|
|
114
|
+
`COMPATIBILITY.md`.
|
|
115
|
+
- **Evidence:** `.alpha3-verify/AUDIT.md`, `CHANGE_SURFACE.md`, `CLIENT_FACE.md`,
|
|
116
|
+
`HOST-BOOT.md` and `logs/` in this repository; `.alpha3-verify/gate-matrix.mjs`
|
|
117
|
+
reproduces every activation verdict.
|
|
118
|
+
|
|
119
|
+
## Current decision — rolling range from `dsh-v0.2.1-rc.5`
|
|
120
|
+
|
|
121
|
+
- **Decision (2026-10-30):** the compatibility declaration is one rolling range,
|
|
122
|
+
`>=0.2.1-rc.5 <0.3.0-0`, in `engines.dsh` and all ten `@deepseek-ai/dsh*`
|
|
123
|
+
peers, replacing the eight-release closed list. The lower bound is the newest
|
|
124
|
+
`rc` release (`0.2.1-rc.5`, published 2026-10-29T14:15:23Z); the current
|
|
125
|
+
`alpha` release `0.2.2-alpha.2` sorts above it and needs no second clause.
|
|
126
|
+
`<0.3.0-0` keeps the `0.3.0` audit gate. Dev packages move to the exact
|
|
127
|
+
`0.2.1-rc.5` baseline with vendored `cordis 4.0.5` / `schemastery 3.18.5`.
|
|
128
|
+
Release `0.9.14`. Recorded in `docs/adr/0001-dsh-compatibility-policy.md`
|
|
129
|
+
section 8.
|
|
130
|
+
- **Trigger:** `latest` and `next` both moved to `0.2.1-rc.5`; the closed list
|
|
131
|
+
(ending `0.2.2-alpha.2`) refused to activate on it, and every DSH release
|
|
132
|
+
required eleven declaration edits plus a lockfile, test, and doc pass.
|
|
133
|
+
- **Audit of `dsh-v0.2.1-rc.5` against `dsh-v0.2.1-rc.4` (`.rc5-verify/`):**
|
|
134
|
+
**no runtime break, `src/` unchanged.** 307 = 307 packages; 42,731 shared
|
|
135
|
+
files: 42,421 byte-identical, 310 differing (296 `package.json` + 14
|
|
136
|
+
non-manifest files in 7 packages), plus one file new in rc.5 only
|
|
137
|
+
(`dsh-client-ui-chat/lib/types/client/reasoning-text.d.ts`, 363 B). The rc.4
|
|
138
|
+
tree fingerprint reproduced the previous audit's value. All 307 manifests have
|
|
139
|
+
zero structural changes across the full 11,099-leaf union; 3,706 dependency
|
|
140
|
+
specs are mechanical `0.2.1-rc.4 → 0.2.1-rc.5` replacements. The evaluator
|
|
141
|
+
`dsh-app-boot/lib/index.js` is byte-identical to rc.4 (sha256 `5135179a…`,
|
|
142
|
+
same as rc.3). `dsh-web-app/cordis.patch.yml` is byte-identical, so the
|
|
143
|
+
`id: directory-picker` patch anchor is untouched. The four client faces are
|
|
144
|
+
byte-identical. 3,271 `lib/` modules and 681 entry modules show zero export
|
|
145
|
+
deltas. The 15 non-manifest files (14 changed, 1 added) live in
|
|
146
|
+
`dsh-client-ui-chat` (the internal `conversation.chat.reasoning.body` Slot
|
|
147
|
+
gains `rawText`, reasoning text strips its `<signature>` wrapper before
|
|
148
|
+
display, plus types and READMEs), `dsh-cordis-client-runner` (embedded Slot
|
|
149
|
+
registry metadata), `dsh-experimental-client-ui-cot-translation` (JSDoc/type
|
|
150
|
+
comments only), `dsh-client-modules` (build-commit constant), and three
|
|
151
|
+
settings/sidebar client bundles (version strings, same byte size). A machine
|
|
152
|
+
check over the 7 packages reports `allOutsideDeclarationSurface`; none is in
|
|
153
|
+
the declaration surface (10 peers + 4 client injects + vendored
|
|
154
|
+
cordis/schemastery) or the plugin call surface.
|
|
155
|
+
- **Matrix (rc.5 evaluator, `includePrerelease: true`):** before → `0.2.1-rc.5`
|
|
156
|
+
rejected; after → `0.2.1-rc.5`, `0.2.2-alpha.2`, `0.2.1`, later rc/alpha/GA
|
|
157
|
+
admitted — 12 candidates newly admitted, exactly the seven former list members
|
|
158
|
+
newly refused — while `0.3.0-rc.1`, `0.3.0`, `0.3.0-0`, and `1.0.0` stay
|
|
159
|
+
rejected. Every verdict matched an independent semver calculation, and dropping
|
|
160
|
+
`engines.dsh` to exercise the peer path yields the same accepted set. The range
|
|
161
|
+
also admits unaudited prereleases above the bound by construction
|
|
162
|
+
(`0.2.2-alpha.1`, `0.2.2-alpha.2.1`, `0.2.2-ALPHA.2`, `0.2.2-0`); this is
|
|
163
|
+
pinned as a known admission surface in `tests/compatibility-metadata.test.ts`.
|
|
164
|
+
- **Positive load (isolated `DSH_HOME`, `.rc5-verify/HOST-BOOT.md`):** with a
|
|
165
|
+
projected manifest carrying only the new range, the rc.5 host composes the
|
|
166
|
+
plugin (`--dump-config` exit 0, no `skipping profile bundle` line, 7
|
|
167
|
+
`deeppilot` hits), starts it, and the plugin's own LAN port answers
|
|
168
|
+
`/phone/health` with 200 (`ok`, `enabled`, `protocolVersion` 2, `dataPlane`
|
|
169
|
+
active). Both the committed 0.9.13 artifacts (`serverVersion` 0.9.13) and the
|
|
170
|
+
in-flight 0.9.14 worktree (`serverVersion` 0.9.14) load. The isolated home
|
|
171
|
+
received `deeppilot/host-id` and `deeppilot/lan-tls/`.
|
|
172
|
+
- **Verification:** `npm test` 681 (679 pass, 1 pre-existing todo, 1 skipped),
|
|
173
|
+
`typecheck`, `build`, `check:config-schema` against the `0.2.1-rc.5` CLI,
|
|
174
|
+
`smoke:helper`, `go test ./...`, `bin/SHA256SUMS` 6/6.
|
|
175
|
+
- **Evidence:** `.rc5-verify/AUDIT.md`, `CHANGE_SURFACE.md`, `HOST-BOOT.md`,
|
|
176
|
+
`tree-compare.out.json`, `matrix.out.json`, `evaluator-repro.out.json`,
|
|
177
|
+
`patch-anchor-check.out.json`, `export-symbol-diff.out.json`,
|
|
178
|
+
`pkg-manifest-delta.out.json`, `vendor-check.out.json`, `diffs/`, `logs/`.
|
|
179
|
+
- **Honest boundary:** `dsh-client-ui-slots` has no artifact in either tree (as
|
|
180
|
+
in the rc.4 round), so it was not byte-compared; `react` and the npm
|
|
181
|
+
install-time resolution were not checked; no real-device pairing, Funnel
|
|
182
|
+
end-to-end, or model turn was run; `0.9.14` is prepared locally, not
|
|
183
|
+
published.
|
|
5
184
|
|
|
6
185
|
## Current decision — `dsh-v0.2.2-alpha.2`
|
|
7
186
|
|
|
@@ -2187,3 +2366,13 @@ release notes.
|
|
|
2187
2366
|
2. 手机协议:模型当前选择投影新增 `s2c.models.changed`,受 `sessions.read` 控制;原生权限执行可附加 `expectedDefinitionId`,重读目录核对来源,旧客户端字段缺省兼容。无新增周期轮询或第二层主机时间缓存。
|
|
2188
2367
|
3. 客户端:内存五分钟、磁盘最长七天,重启旧目录先展示并校验,按配对身份/主机/会话隔离;当前模型、权限和执行结果不落盘。具体约定和格式重建见[移动端目录缓存](移动端目录缓存.md)。
|
|
2189
2368
|
4. 验证:插件 577 项通过、1 项原有待办,类型检查、生成产物构建和使用本机固定版本的离线配置校验通过;两端缓存单元与模拟器证据见各自文档。随 0.9.8(2026-10-18)发布;真机与系统分享仍未验收。
|
|
2369
|
+
|
|
2370
|
+
## 2026-10-30 — 发布 `dsh-deeppilot@0.9.13`
|
|
2371
|
+
|
|
2372
|
+
- **版本收口。** `0.9.12` 的版本提交 `a5a6f59` 曾落在 `main`,但从未打 tag、上传 npm 或建 GitHub Release;本次在 `0.9.11` 之上统一收口为 `0.9.13`:八版白名单(新增 `0.2.1-rc.4` 与 `0.2.2-alpha.2`,`SessionController.inspect` 缺失时 `sessions.history` 走 `page`)、运行中排队与转向、Markdown 导出、实时流式增量、插件自更新、设置页重设计,以及 helper 上报内嵌 Tailscale 版本后的六平台 `bin/` 重建。
|
|
2373
|
+
- **安装面。** `engines.dsh` 与十条 `dsh-*` peer 枚举八个精确版本;vendor peer 追加 `cordis ~4.0.6-alpha.1` / `schemastery ~3.18.6-alpha.1`;无配置字段变化。审计与隔离宿主证据见 `.alpha2-verify/`、`.rc4-verify/`(`0.2.1-rc.4` 27/27、`0.2.2-alpha.2` 32/32)。
|
|
2374
|
+
- **本地校验(发布工作树)。** `npm ci`;`npm test` 679 项(677 通过、1 项环境门禁跳过、1 项有意 TODO、0 失败);`typecheck`;`build`(`lib/` 无变化);`check:config-schema`(0.2.0-rc.2 CLI);`smoke:helper`(darwin-arm64);`go test ./...`;`bin/SHA256SUMS` 6/6;六平台 helper 重建后 `bin/` 无漂移;`npm pack` 69 项、51,405,933 字节。
|
|
2375
|
+
- **发布。** 发布提交 `0107efb584be4031af7279eb9f6cdf4404189081`,附注标签 `v0.9.13`;CI `40910195877` 与 CodeQL `40910195831` 绿色。`publish.yml` 首次运行 `40911590022` 的上传与来源证明步骤成功,但末尾核对在 24 次重试后仍 404,整次运行标红;重跑 `40918429580` 在发布步骤报 `E409 Cannot publish over previously staged version "0.9.13"`,由此确认**当前可信发布者绑定只允许暂存发布**:版本进入 npm staged 区,需维护者 2FA 批准后才公开。维护者批准后,注册表 `latest = 0.9.13`。
|
|
2376
|
+
- **发布后核验。** 来源证明类型 `https://slsa.dev/provenance/v1`,`gitCommit` 为发布提交,工作流引用 `refs/tags/v0.9.13`,invocation 为 `40911590022`;tarball SHA1 `ca2c754e3421cddd14a795c5b4d869c5ea4b3cf9`、SHA512 与注册表一致,69 个条目、解包 131,263,175 字节。全新隔离 `DSH_HOME`(`/tmp/dsh-verify-0913`,pnpm 从 npm 安装,不是 link)在真实 `0.2.2-alpha.2` 宿主上启动,`https://127.0.0.1:3098/phone/health` 返回 200,`serverVersion` 为 `0.9.13`、`dataPlane: true`;GitHub Release 在这一步通过后才公开并标记 Latest。
|
|
2377
|
+
- **流程变更。** 用户决定保留暂存流程;批准步骤与「工作流末尾核对在批准前必然失败」已写入 `docs/NPM_PUBLISHING.md` 与 `AGENTS.md` 发布第 4–5 步。工作流本身未改:末尾核对在 staged 版本上仍会标红,是否改成「检测到 staged 即视为成功并输出待批准」留待下次发布前决定。
|
|
2378
|
+
- **局限。** 未做真机、Funnel 端到端、真实 `updateBundle`/HMR 回滚安装,也没有在 `0.2.1-rc.4` 上做真实业务回合;上述健康检查只证明插件能被宿主组合、启动并应答。
|
package/docs/NPM_PUBLISHING.md
CHANGED
|
@@ -34,6 +34,12 @@
|
|
|
34
34
|
npm 不在保存配置时验证绑定;首次发布成功才证明认证可用。
|
|
35
35
|
4. 新绑定必须在 **2 天内完成首次成功发布**。因此准备好新版本后再绑定;若过期,
|
|
36
36
|
删除过期绑定并重新创建。先验证可信发布成功,再按需调整原有令牌发布权限。
|
|
37
|
+
5. **2026-10-29 实测:当前绑定只允许暂存发布。** `publish.yml` 里的 `npm publish`
|
|
38
|
+
不再直接公开版本,而是把它送进 staged 区(命令返回成功并提示“正在处理”,
|
|
39
|
+
但注册表的版本、tarball 与来源证明持续 404)。用户决定**保留暂存流程**:
|
|
40
|
+
每次发版由工作流暂存,维护者用 2FA 批准后才公开(步骤见第三节)。
|
|
41
|
+
若要恢复直接发布,需在包设置的 Trusted Publisher 中勾选 `Allow npm publish`
|
|
42
|
+
(账户强制 2FA 时可能不可用),并同步改本节、AGENTS.md 与第 4 步的核对逻辑。
|
|
37
43
|
|
|
38
44
|
## 三、每次发布
|
|
39
45
|
|
|
@@ -63,7 +69,14 @@
|
|
|
63
69
|
压缩包发布跳过生命周期脚本(`--ignore-scripts`);测试、类型检查和构建已在前序
|
|
64
70
|
步骤执行,打包仍执行 `prepack`(打包前构建)。发布后核对版本、分发标签、
|
|
65
71
|
压缩包完整性和来源证明元数据。
|
|
66
|
-
6.
|
|
72
|
+
6. **批准暂存版本(暂存模式下必需)。** 工作流把版本送进 staged 区后,由维护者完成
|
|
73
|
+
2FA 批准:在 npmjs.com 的 **Staged Packages** 标签找到
|
|
74
|
+
`dsh-deeppilot@<版本>` → Approve;或本机 `npm login` 后
|
|
75
|
+
`npm stage list dsh-deeppilot` → `npm stage approve <id>`。
|
|
76
|
+
批准即公开该版本,并按发布命令写入分发标签(`latest` / `alpha`)。
|
|
77
|
+
工作流末尾「核对发布版本、包完整性与来源证明」在批准前必然 404 失败、整次运行标红;
|
|
78
|
+
这是暂存模式的预期结果,不代表上传失败,发布证据以批准后的手工核验为准。
|
|
79
|
+
7. 确认 npm 包可安装,在全新 DSH 配置中完成安装验证后,再公开 GitHub 发布草稿。
|
|
67
80
|
工作流不自动公开发布草稿;npm 上传和发布后的核对分别记录在步骤中。
|
|
68
81
|
|
|
69
82
|
## 四、失败处理与证据边界
|
|
@@ -156,6 +169,40 @@
|
|
|
156
169
|
**遗留处理:** `0.9.10` 的 GitHub Release 原为 Draft,按用户决定于本轮**删除**
|
|
157
170
|
(远端标签 `v0.9.10` 与 npm 上的 `0.9.10` 包均保留,未做任何版本删除或回撤)。
|
|
158
171
|
|
|
172
|
+
11. `0.9.13` 的实际发布结果(2026-10-29/30):附注标签 `v0.9.13` 指向
|
|
173
|
+
`0107efb584be4031af7279eb9f6cdf4404189081`,该提交的 CI(运行号
|
|
174
|
+
`40910195877`,7 分 27 秒)与 CodeQL(运行号 `40910195831`)均绿。
|
|
175
|
+
`publish.yml` 首次运行 `40911590022` 的上传与来源证明步骤成功,但末尾核对在
|
|
176
|
+
24 次重试后仍抛 `读取 npm 发布信息失败(dsh-deeppilot/0.9.13,HTTP 404)`,
|
|
177
|
+
整次运行标红;重跑 `40918429580` 在发布步骤报
|
|
178
|
+
`E409 Cannot publish over previously staged version "0.9.13"`。由此确认
|
|
179
|
+
**当前绑定只允许暂存发布**,版本进入 staged 区后需维护者 2FA 批准(见第二节
|
|
180
|
+
第 5 条与第三节第 6 步)。批准后注册表 `latest = 0.9.13`;来源证明类型为
|
|
181
|
+
`https://slsa.dev/provenance/v1`、`gitCommit` 为该提交、工作流引用
|
|
182
|
+
`refs/tags/v0.9.13`、invocation 为 `40911590022`;tarball SHA1
|
|
183
|
+
`ca2c754e3421cddd14a795c5b4d869c5ea4b3cf9` 与 SHA512 同注册表一致,共 69 个
|
|
184
|
+
条目、解包 131,263,175 字节。随后在全新隔离 `DSH_HOME` 中从 npm 安装
|
|
185
|
+
`dsh-deeppilot@0.9.13`(pnpm 安装,不是 link),用真实 `0.2.2-alpha.2` 宿主
|
|
186
|
+
启动,插件自有端口 3098 的 `/phone/health` 返回 200,`serverVersion` 为
|
|
187
|
+
`0.9.13`、`dataPlane: true`;GitHub Release 在这一步通过后才公开并标记 Latest。
|
|
188
|
+
暂存流程与批准步骤已写入第二、三节与 `AGENTS.md`;工作流末尾核对在暂存模式下
|
|
189
|
+
的标红问题本轮未改,留待下次发布前决定是否检测 staged 后按成功处理。
|
|
190
|
+
|
|
191
|
+
12. `0.9.14` 的实际发布结果(2026-11-05):`release/0.9.14` 快进推到 `main`
|
|
192
|
+
(`40fe063..9ff31ba`),该提交的 CI(运行号 `41953217573`)与 CodeQL
|
|
193
|
+
(`41953216405`)均绿;附注标签 `v0.9.14` 指向
|
|
194
|
+
`9ff31ba16a50a7707d8de18e0a72cc166fb03f61`。`publish.yml` 运行 `41953700019`
|
|
195
|
+
(`latest`)**整次为绿**:末尾核对重试 12 次(约 3.5 分钟)后,暂存版本在此期间
|
|
196
|
+
获批,核对通过——批准落在重试窗口内时不会标红,批准晚于窗口仍会按第 11 条标红。
|
|
197
|
+
注册表 `latest = 0.9.14`;来源证明类型为 `https://slsa.dev/provenance/v1`、
|
|
198
|
+
`gitCommit` 为该提交、工作流引用 `refs/tags/v0.9.14`;69 个条目、解包
|
|
199
|
+
131,580,166 字节,与本地 `npm pack --dry-run` 一致(压缩包 SHA1 因在 CI 重新打包
|
|
200
|
+
而与本地预演不同)。随后在全新隔离 `DSH_HOME` 中从 npm 安装
|
|
201
|
+
`dsh-deeppilot@0.9.14`(真实目录,不是 link,无 peer 警告),用真实
|
|
202
|
+
`0.2.2-rc.1` 宿主启动:`--dump-config` 退出码 0、无跳过,插件自有端口
|
|
203
|
+
`/phone/health` 返回 200,`serverVersion` 为 `0.9.14`、`protocolVersion` 2、
|
|
204
|
+
`dataPlane: true`;GitHub Release 在这一步通过后才公开并标记 Latest。
|
|
205
|
+
|
|
159
206
|
## 五、官方资料
|
|
160
207
|
|
|
161
208
|
1. [npm 可信发布配置与限制](https://docs.npmjs.com/trusted-publishers/)
|