dsh-deeppilot 0.5.0 → 0.6.0-alpha.2

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
@@ -7,7 +7,7 @@ This file separates tested evidence from intended behavior. Passing unit tests d
7
7
  | Component | Baseline | Evidence |
8
8
  |---|---|---|
9
9
  | Node.js | 22 or newer | package engine and CI |
10
- | DSH Host API | 0.1.2 controller family | source-built 0.1.2 Host, paired iOS client, new- and legacy-session history, and `/phone` protocol tests |
10
+ | DSH CLI and Host API | `0.1.2-alpha.2` minimum | published alpha.2 type/build checks, profile install and Host-start smoke test, plus 0.1.2 history and `/phone` protocol tests |
11
11
  | Host OS | macOS on Apple silicon | embedded helper artifact and local integration testing |
12
12
  | Remote access | Tailscale Funnel, ports 443/8443/10000 | helper and supervisor tests |
13
13
  | iOS | native DeepPilot client, protocol v2 | simulator build and v2 pairing/challenge evidence |
@@ -18,10 +18,12 @@ This file separates tested evidence from intended behavior. Passing unit tests d
18
18
  - Bearer authentication, URL credentials, and first-frame shared tokens are rejected. A supported client registers a P-256 public key through `/phone/pair` and signs each WebSocket challenge.
19
19
  - Without a compatible embedded helper, the core bridge and trusted-LAN mode can still run; remote Funnel reports `unavailable`.
20
20
  - If a DSH Host API is missing, only the dependent capability should be disabled. The plugin must not crash the Host.
21
- - On the tested 0.1.2 Host, the compatibility facade converts the
21
+ - DSH versions older than `0.1.2-alpha.2` are unsupported: they do not expose
22
+ the controller and client package family required by this plugin.
23
+ - On the tested `0.1.2-alpha.2` Host, the compatibility facade converts the
22
24
  current Session controller's raw event arrays into the stable wrapped
23
25
  history entries consumed by the phone bridge. Sessions persisted by earlier
24
- Hosts can therefore be listed and opened when the 0.1.2 Host's own
26
+ Hosts can therefore be listed and opened when the alpha.2 Host's own
25
27
  persistence reader accepts their log vocabulary. Unsupported persisted
26
28
  formats still fail closed in the Host without modifying the original log.
27
29
 
@@ -30,7 +32,7 @@ This file separates tested evidence from intended behavior. Passing unit tests d
30
32
  - Intel macOS support for the embedded helper;
31
33
  - signed/notarized helper distribution;
32
34
  - Windows or Linux host validation;
33
- - repair or migration of persisted history rejected by the `0.1.2`
35
+ - repair or migration of persisted history rejected by the `0.1.2-alpha.2`
34
36
  Host's own session reader;
35
37
  - every DSH developer-preview revision;
36
38
  - physical-device performance and every carrier/network combination;
package/README.md CHANGED
@@ -31,10 +31,26 @@ Host on your own Mac and does not replace or modify the DSH Web UI.
31
31
 
32
32
  ## Install from npm
33
33
 
34
- Requirements: Node.js 22+, DSH 0.1.2 with a `web` profile, and macOS. The bundled Funnel
35
- helper currently supports Apple silicon; trusted-LAN mode does not require it.
34
+ Requirements: Node.js 22+, DSH with a `web` profile, and macOS. The bundled
35
+ Funnel helper currently supports Apple silicon; trusted-LAN mode does not
36
+ require it.
37
+
38
+ | Plugin version | Required DSH | How to install |
39
+ |---|---|---|
40
+ | `0.6.0-alpha.x` (new, `alpha` tag) | DSH `0.1.2-alpha.2` or newer | `dsh plugin --profile web add dsh-deeppilot@alpha` |
41
+ | `0.5.x` (previous stable, `latest`) | DSH `0.1.1-rc.2`–`0.1.2-alpha.1` | `dsh plugin --profile web add dsh-deeppilot` |
42
+
43
+ The `0.6.0` alpha line is built against the DSH
44
+ [0.1.2-alpha.2](https://www.npmjs.com/package/@deepseek-ai/dsh/v/0.1.2-alpha.2)
45
+ controller and client package family, so it requires DSH `0.1.2-alpha.2` or
46
+ newer (its `alpha` npm dist-tag). Earlier DSH builds do not provide the Host
47
+ APIs required by this plugin. Users who need a DSH release before that must
48
+ stay on the `0.5.x` plugin.
36
49
 
37
50
  ```sh
51
+ # DSH 0.1.2-alpha.2 or newer (recommended):
52
+ dsh plugin --profile web add dsh-deeppilot@alpha
53
+ # DSH 0.1.1-rc.2 through 0.1.2-alpha.1 (previous stable):
38
54
  dsh plugin --profile web add dsh-deeppilot
39
55
  dsh web
40
56
  ```
@@ -55,6 +71,37 @@ dsh plugin --profile web remove dsh-deeppilot
55
71
  Restart DSH after updating. Uninstalling the package does not delete the local
56
72
  DeepPilot state under `$DSH_HOME/deeppilot/`.
57
73
 
74
+ ## Publishing (maintainers)
75
+
76
+ `0.6.0-alpha.x` targets DSH `0.1.2-alpha.2`+; `0.5.x` stays compatible with
77
+ DSH `0.1.1-rc.2`–`0.1.2-alpha.1`. Keep both published:
78
+
79
+ 1. Bump `version` in `package.json` and in the root `""` entry of
80
+ `package-lock.json`, then run `npm test && npm run typecheck && npm run build`
81
+ and inspect `npm pack --dry-run --json` (the check
82
+ `tests/compatibility-metadata.test.ts` enforces the `^0.1.2-alpha.2` peer
83
+ ranges).
84
+ 2. Commit the release and push it. `npm publish` runs `prepack` (build) and
85
+ `prepublishOnly` (test + typecheck) automatically.
86
+ 3. Publish the alpha line without touching `latest`:
87
+
88
+ ```sh
89
+ npm publish --tag alpha
90
+ ```
91
+
92
+ After a successful publish, `npm view dsh-deeppilot dist-tags --json` shows
93
+ `"latest": "0.5.x"` and `"alpha": "0.6.0-alpha.x"`. Verify the published
94
+ package by installing it into a DSH `0.1.2-alpha.2` profile before pointing
95
+ users at it.
96
+ 4. Tag the release commit `v0.6.0-alpha.x` and prepare a GitHub Release
97
+ (English + 简体中文 notes) that links this README section.
98
+ 5. When the alpha graduates to stable, bump to `0.6.0` and publish with
99
+ `npm publish --tag latest`, which moves `latest` to the new line. Stable
100
+ releases must never be published with `--tag alpha`.
101
+
102
+ Never run `npm publish` from a copy that still has the old `0.5.x` version.
103
+
104
+
58
105
  ## Connection and privacy
59
106
 
60
107
  Conversation traffic travels directly between the iPhone and your DSH Host.
package/README.zh-CN.md CHANGED
@@ -29,10 +29,24 @@
29
29
 
30
30
  ## 从 npm 安装
31
31
 
32
- 需要 Node.js 22+、带 `web` profile 的 DSH 0.1.2 与 macOS。内嵌 Funnel helper 目前支持
33
- Apple silicon;可信局域网模式不依赖 helper。
32
+ 需要 Node.js 22+、带 `web` profile 的 DSH,以及 macOS。内嵌 Funnel helper
33
+ 目前支持 Apple silicon;可信局域网模式不依赖 helper。
34
+
35
+ | 插件版本 | 所需 DSH | 安装命令 |
36
+ |---|---|---|
37
+ | `0.6.0-alpha.x`(新版,`alpha` tag) | DSH `0.1.2-alpha.2` 或更高 | `dsh plugin --profile web add dsh-deeppilot@alpha` |
38
+ | `0.5.x`(旧版稳定版,`latest`) | DSH `0.1.1-rc.2`–`0.1.2-alpha.1` | `dsh plugin --profile web add dsh-deeppilot` |
39
+
40
+ `0.6.0` alpha 系列基于 DSH
41
+ [0.1.2-alpha.2](https://www.npmjs.com/package/@deepseek-ai/dsh/v/0.1.2-alpha.2)
42
+ 的 controller 与 client 包族构建,因此要求 DSH `0.1.2-alpha.2` 或更高版本
43
+ (对应 npm `alpha` dist-tag)。更早的 DSH 版本不提供本插件依赖的 Host API;
44
+ 需要更早 DSH 版本的用户请继续使用 `0.5.x` 插件。
34
45
 
35
46
  ```sh
47
+ # DSH 0.1.2-alpha.2 或更高(推荐):
48
+ dsh plugin --profile web add dsh-deeppilot@alpha
49
+ # DSH 0.1.1-rc.2 至 0.1.2-alpha.1(旧版稳定):
36
50
  dsh plugin --profile web add dsh-deeppilot
37
51
  dsh web
38
52
  ```
@@ -51,6 +65,34 @@ dsh plugin --profile web remove dsh-deeppilot
51
65
 
52
66
  更新后请重启 DSH。卸载 npm 包不会删除 `$DSH_HOME/deeppilot/` 下的本地数据。
53
67
 
68
+ ## 发布说明(维护者)
69
+
70
+ `0.6.0-alpha.x` 面向 DSH `0.1.2-alpha.2`+;`0.5.x` 保持兼容 DSH
71
+ `0.1.1-rc.2`–`0.1.2-alpha.1`,两个版本线都要保持发布:
72
+
73
+ 1. 同步修改 `package.json` 与 `package-lock.json` 根 `""` 条目中的
74
+ `version`,然后运行 `npm test && npm run typecheck && npm run build`,
75
+ 并检查 `npm pack --dry-run --json`(`tests/compatibility-metadata.test.ts`
76
+ 会强制校验 `^0.1.2-alpha.2` 的 peer 范围)。
77
+ 2. 提交发布并推送。`npm publish` 会自动执行 `prepack`(构建)与
78
+ `prepublishOnly`(测试 + 类型检查)。
79
+ 3. 发布 alpha 版本线,不要动 `latest`:
80
+
81
+ ```sh
82
+ npm publish --tag alpha
83
+ ```
84
+
85
+ 发布成功后,`npm view dsh-deeppilot dist-tags --json` 应显示
86
+ `"latest": "0.5.x"` 与 `"alpha": "0.6.0-alpha.x"`。向用户推荐前,请先在
87
+ DSH `0.1.2-alpha.2` profile 中安装验证发布的包。
88
+ 4. 为发布提交打 `v0.6.0-alpha.x` tag,并准备包含英文与简体中文说明的
89
+ GitHub Release,链接本 README 的发布说明。
90
+ 5. alpha 转正时升级到 `0.6.0`,用 `npm publish --tag latest` 发布,使
91
+ `latest` 切换到新版线。稳定版绝不使用 `--tag alpha` 发布。
92
+
93
+ 绝不要从仍是旧 `0.5.x` 版本的副本执行 `npm publish`。
94
+
95
+
54
96
  ## 连接与隐私
55
97
 
56
98
  完整会话流量由 iPhone 直接连接用户自己的 DSH Host。可信局域网中的 `ws://`
package/lib/index.d.ts CHANGED
@@ -609,7 +609,7 @@ declare const Config: z<Schemastery.ObjectS<{
609
609
  maxConnectionsPerSource: z<number, number>;
610
610
  }>>;
611
611
  push: z<Schemastery.ObjectS<{
612
- provider: z<"none" | "apns" | "relay", "none" | "apns" | "relay">;
612
+ provider: z<"apns" | "none" | "relay", "apns" | "none" | "relay">;
613
613
  teamId: z<string, string>;
614
614
  keyId: z<string, string>;
615
615
  keyPath: z<string, string>;
@@ -617,7 +617,7 @@ declare const Config: z<Schemastery.ObjectS<{
617
617
  relayUrl: z<string, string>;
618
618
  relayToken: z<string, string>;
619
619
  }>, Schemastery.ObjectT<{
620
- provider: z<"none" | "apns" | "relay", "none" | "apns" | "relay">;
620
+ provider: z<"apns" | "none" | "relay", "apns" | "none" | "relay">;
621
621
  teamId: z<string, string>;
622
622
  keyId: z<string, string>;
623
623
  keyPath: z<string, string>;
@@ -648,7 +648,7 @@ declare const Config: z<Schemastery.ObjectS<{
648
648
  maxConnectionsPerSource: z<number, number>;
649
649
  }>>;
650
650
  push: z<Schemastery.ObjectS<{
651
- provider: z<"none" | "apns" | "relay", "none" | "apns" | "relay">;
651
+ provider: z<"apns" | "none" | "relay", "apns" | "none" | "relay">;
652
652
  teamId: z<string, string>;
653
653
  keyId: z<string, string>;
654
654
  keyPath: z<string, string>;
@@ -656,7 +656,7 @@ declare const Config: z<Schemastery.ObjectS<{
656
656
  relayUrl: z<string, string>;
657
657
  relayToken: z<string, string>;
658
658
  }>, Schemastery.ObjectT<{
659
- provider: z<"none" | "apns" | "relay", "none" | "apns" | "relay">;
659
+ provider: z<"apns" | "none" | "relay", "apns" | "none" | "relay">;
660
660
  teamId: z<string, string>;
661
661
  keyId: z<string, string>;
662
662
  keyPath: z<string, string>;
package/lib/index.js CHANGED
@@ -5,7 +5,6 @@ import { access, chmod, mkdir, readFile, rename, unlink, writeFile } from "node:
5
5
  import { dirname, join, resolve } from "node:path";
6
6
  import { WebSocketServer } from "ws";
7
7
  import { homedir, networkInterfaces } from "node:os";
8
- import { installSettingsSection, settingsNamespace } from "@deepseek-ai/dsh-settings";
9
8
  import { TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
10
9
  import { connect } from "node:http2";
11
10
  import { spawn } from "node:child_process";
@@ -4426,12 +4425,15 @@ function apply(ctx, options) {
4426
4425
  return normalizeOptions(options);
4427
4426
  };
4428
4427
  const enabledNow = () => currentConfig().enabled === true;
4429
- installSettingsSection(ctx, settingsNamespace("deeppilot"), Config, normalizeOptions(void 0), {
4428
+ const settingsHooks = {
4430
4429
  setSource: (source) => {
4431
4430
  liveSource = source;
4432
4431
  queueMicrotask(() => scheduleRemoteReconcile?.());
4433
4432
  },
4434
4433
  onChange: () => queueMicrotask(() => scheduleRemoteReconcile?.())
4434
+ };
4435
+ ctx.inject(["settings"], (settingsCtx) => {
4436
+ settingsCtx.settings.installSection(ctx, "deeppilot", Config, normalizeOptions(void 0), settingsHooks);
4435
4437
  });
4436
4438
  if (currentConfig().enabled !== true) log("disabled via settings; bridge stays inactive (rumors of /phone below are skipped)");
4437
4439
  const dataDir = bridgeDataDir();