dsh-deeppilot 0.2.0 → 0.2.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/README.md +14 -3
- package/README.zh-CN.md +14 -4
- package/bin/SHA256SUMS +6 -1
- 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/lib/client.js +14 -3
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +47 -3
- package/lib/index.js +541 -47
- package/lib/index.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -23,6 +23,10 @@ Host on your own Mac and does not replace or modify the DSH Web UI.
|
|
|
23
23
|
- Pair through a QR code with the secret stored on the Mac and in iOS Keychain.
|
|
24
24
|
- Connect over a trusted LAN or the optional embedded Tailscale Funnel.
|
|
25
25
|
- Receive live notifications and optional APNs notifications while offline.
|
|
26
|
+
- Self-update hint: the settings page footer shows the installed plugin
|
|
27
|
+
version, with an inline "new version" link to the matching GitHub
|
|
28
|
+
release when one exists (background check, stable releases only, no
|
|
29
|
+
third-party dependency).
|
|
26
30
|
|
|
27
31
|
## Install from npm
|
|
28
32
|
|
|
@@ -63,9 +67,9 @@ do not pass through the relay. Read [PRIVACY.md](./PRIVACY.md) and
|
|
|
63
67
|
|
|
64
68
|
## Screenshots
|
|
65
69
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
| Home | Sidebar | Chat | Settings |
|
|
71
|
+
| --- | --- | --- | --- |
|
|
72
|
+
| <img src="./assets/screenshots/home.png" alt="DeepPilot home screen" width="220"> | <img src="./assets/screenshots/sidebar.png" alt="DeepPilot sidebar" width="220"> | <img src="./assets/screenshots/chat.png" alt="DeepPilot chat screen" width="220"> | <img src="./assets/screenshots/settings.png" alt="DeepPilot settings screen" width="220"> |
|
|
69
73
|
|
|
70
74
|
## Compatibility
|
|
71
75
|
|
|
@@ -73,6 +77,12 @@ See [COMPATIBILITY.md](./COMPATIBILITY.md) for the tested baseline and current
|
|
|
73
77
|
limitations. DSH is still evolving; include exact DSH and plugin versions when
|
|
74
78
|
reporting an issue.
|
|
75
79
|
|
|
80
|
+
## Protocol
|
|
81
|
+
|
|
82
|
+
[PROTOCOL.md](./PROTOCOL.md) is the normative DeepPilot bridge protocol. Any
|
|
83
|
+
wire change must update that document and `src/protocol.ts` together, preserve
|
|
84
|
+
protocol-v1 compatibility, and be coordinated with the private iOS client.
|
|
85
|
+
|
|
76
86
|
## Development
|
|
77
87
|
|
|
78
88
|
```sh
|
|
@@ -88,6 +98,7 @@ cd helper && go test ./...
|
|
|
88
98
|
- [GitHub Issues](https://github.com/Mars-Sea/dsh-deeppilot/issues)
|
|
89
99
|
- [GitHub Releases](https://github.com/Mars-Sea/dsh-deeppilot/releases)
|
|
90
100
|
- [npm package](https://www.npmjs.com/package/dsh-deeppilot)
|
|
101
|
+
- [Linux.do 社区](https://linux.do/)
|
|
91
102
|
|
|
92
103
|
DeepPilot is an independent community project and is not affiliated with or
|
|
93
104
|
endorsed by DeepSeek.
|
package/README.zh-CN.md
CHANGED
|
@@ -21,7 +21,10 @@
|
|
|
21
21
|
- 发送提示词、切换模型、创建会话,并处理审批与提问;
|
|
22
22
|
- 扫描二维码配对,密钥保存在 Mac 与 iOS Keychain;
|
|
23
23
|
- 使用可信局域网,或可选的内嵌 Tailscale Funnel 远程连接;
|
|
24
|
-
- 接收在线通知,以及可选的离线 APNs
|
|
24
|
+
- 接收在线通知,以及可选的离线 APNs 推送;
|
|
25
|
+
- 更新提示:设置页底部显示当前插件版本,并在有新版本时附加一个指向
|
|
26
|
+
对应 GitHub Release 的链接(后台静默检查,仅比较稳定版,不引入第
|
|
27
|
+
三方依赖)。
|
|
25
28
|
|
|
26
29
|
## 从 npm 安装
|
|
27
30
|
|
|
@@ -59,15 +62,21 @@ dsh plugin --profile web remove dsh-deeppilot
|
|
|
59
62
|
|
|
60
63
|
## App 截图
|
|
61
64
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
| 首页 | 侧边栏 | 聊天 | 设置 |
|
|
66
|
+
| --- | --- | --- | --- |
|
|
67
|
+
| <img src="./assets/screenshots/home.png" alt="DeepPilot 首页" width="220"> | <img src="./assets/screenshots/sidebar.png" alt="DeepPilot 侧边栏" width="220"> | <img src="./assets/screenshots/chat.png" alt="DeepPilot 聊天界面" width="220"> | <img src="./assets/screenshots/settings.png" alt="DeepPilot 设置界面" width="220"> |
|
|
65
68
|
|
|
66
69
|
## 兼容性
|
|
67
70
|
|
|
68
71
|
已验证的基线与当前限制见 [COMPATIBILITY.md](./COMPATIBILITY.md)。DSH 仍在快速
|
|
69
72
|
迭代;提交问题时请附上准确的 DSH 与插件版本。
|
|
70
73
|
|
|
74
|
+
## 协议
|
|
75
|
+
|
|
76
|
+
[PROTOCOL.md](./PROTOCOL.md) 是 DeepPilot 桥接协议的规范性文档。任何 wire
|
|
77
|
+
变更都必须同步更新该文档与 `src/protocol.ts`,保持协议 v1 向后兼容,并与
|
|
78
|
+
私有 iOS 客户端协调。
|
|
79
|
+
|
|
71
80
|
## 开发
|
|
72
81
|
|
|
73
82
|
```sh
|
|
@@ -83,6 +92,7 @@ cd helper && go test ./...
|
|
|
83
92
|
- [GitHub Issues](https://github.com/Mars-Sea/dsh-deeppilot/issues)
|
|
84
93
|
- [GitHub Releases](https://github.com/Mars-Sea/dsh-deeppilot/releases)
|
|
85
94
|
- [npm 包](https://www.npmjs.com/package/dsh-deeppilot)
|
|
95
|
+
- [Linux.do 社区](https://linux.do/)
|
|
86
96
|
|
|
87
97
|
DeepPilot 是独立社区项目,与 DeepSeek 官方无隶属或背书关系。
|
|
88
98
|
|
package/bin/SHA256SUMS
CHANGED
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
6f7caac1655a0d2bce606bcfde2e53a4dde6aea89dff8d99fe2fb3d055d4461f ./darwin-amd64/dsh-deeppilot-tunnel
|
|
2
|
+
1eaa95742dbe592ab6e5c8bc00715fa63028b975a11876841e221390657535df ./darwin-arm64/dsh-deeppilot-tunnel
|
|
3
|
+
766c4dfdd70e1b7607b276d4e0cc66cfb6398904c9b841f973641622d9da26ab ./linux-amd64/dsh-deeppilot-tunnel
|
|
4
|
+
a61bc73b2eca7b6b8358d0c6ff3e6475de8200448d1ac423647d95c37b4d9a2f ./linux-arm64/dsh-deeppilot-tunnel
|
|
5
|
+
205f598f9c79138f4d8cef372f7a4aa9883f6a70d313bd5277ebac442e46063c ./windows-amd64/dsh-deeppilot-tunnel.exe
|
|
6
|
+
0282ee0a0a20bb1d220f9a6d4158a5f17d4c4afbbdb2451a22a246f219bbcde5 ./windows-arm64/dsh-deeppilot-tunnel.exe
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/client.js
CHANGED
|
@@ -2636,9 +2636,13 @@ window.__ModuleLoader__.load({
|
|
|
2636
2636
|
const lanAddresses = s.lanAddresses;
|
|
2637
2637
|
if (!Array.isArray(devices)) reject("devices");
|
|
2638
2638
|
if (!Array.isArray(lanAddresses) || lanAddresses.some((value) => typeof value !== "string")) reject("lanAddresses");
|
|
2639
|
+
const releaseUrl = s.releaseUrl;
|
|
2639
2640
|
return {
|
|
2640
2641
|
protocolVersion: num(s, "protocolVersion", "protocolVersion"),
|
|
2641
2642
|
serverVersion: str(s, "serverVersion", "serverVersion"),
|
|
2643
|
+
pluginVersion: str(s, "pluginVersion", "pluginVersion"),
|
|
2644
|
+
...s.updateAvailable === true ? { updateAvailable: true } : {},
|
|
2645
|
+
...typeof releaseUrl === "string" && releaseUrl.length > 0 ? { releaseUrl } : {},
|
|
2642
2646
|
enabled: bool(s, "enabled", "enabled"),
|
|
2643
2647
|
tokenPath: str(s, "tokenPath", "tokenPath"),
|
|
2644
2648
|
tokenReady: bool(s, "tokenReady", "tokenReady"),
|
|
@@ -2802,7 +2806,10 @@ window.__ModuleLoader__.load({
|
|
|
2802
2806
|
".pbb-helpList li+li{margin-top:4px}",
|
|
2803
2807
|
".pbb-helpText{margin:0;color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.6}",
|
|
2804
2808
|
".pbb-helpCode{display:block;margin:2px 0 0;padding:10px;overflow:auto;white-space:pre-wrap;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-primary);font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}",
|
|
2805
|
-
".pbb-helpLink{color:var(--dsw-alias-label-secondary);text-decoration:underline;text-underline-offset:2px}"
|
|
2809
|
+
".pbb-helpLink{color:var(--dsw-alias-label-secondary);text-decoration:underline;text-underline-offset:2px}",
|
|
2810
|
+
".pbb-versionFooter{display:flex;justify-content:center;align-items:center;gap:8px;font-size:11px;color:var(--dsw-alias-label-tertiary);padding:8px 0 4px;line-height:1.4}",
|
|
2811
|
+
".pbb-versionFooter a{color:var(--dsw-alias-state-success-primary,#22a06b);text-decoration:none}",
|
|
2812
|
+
".pbb-versionFooter a:hover{text-decoration:underline;text-underline-offset:2px}"
|
|
2806
2813
|
].join("\n");
|
|
2807
2814
|
function injectCss() {
|
|
2808
2815
|
if (typeof document === "undefined") return;
|
|
@@ -3313,7 +3320,7 @@ window.__ModuleLoader__.load({
|
|
|
3313
3320
|
const deviceTable = report !== null && report.devices.length > 0 ? (0, react.createElement)("table", { className: "pbb-table" }, (0, react.createElement)("thead", null, (0, react.createElement)("tr", null, (0, react.createElement)("th", null, "设备"), (0, react.createElement)("th", null, "App 版本"), (0, react.createElement)("th", null, "离线推送"), (0, react.createElement)("th", null, "最近在线"))), (0, react.createElement)("tbody", null, report.devices.map((d) => (0, react.createElement)("tr", { key: d.deviceId }, (0, react.createElement)("td", null, d.deviceName), (0, react.createElement)("td", null, d.appVersion), (0, react.createElement)("td", null, d.apns ? "已注册(" + (d.apns.environment === "production" ? "生产" : "开发") + ")" : "未注册"), (0, react.createElement)("td", null, new Date(d.lastSeenTs).toLocaleString()))))) : (0, react.createElement)("p", { className: "pbb-empty" }, "还没有设备配对过。在 iPhone 上的 DeepPilot App 中扫码或填入本机地址与 Token 即可配对。");
|
|
3314
3321
|
const switchTitle = "DeepPilot 连接";
|
|
3315
3322
|
const switchDesc = switchReady ? enabled ? "已开启:接受手机连接。" : "已关闭:不接受手机连接。" : "正在读取配置…";
|
|
3316
|
-
return (0, react.createElement)("div", { className: "pbb-section" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("h2", { className: "pbb-title" }, "DeepPilot"), (0, react.createElement)("button", {
|
|
3323
|
+
return (0, react.createElement)("div", { className: "pbb-section" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("h2", { className: "pbb-title" }, "DeepPilot"), (0, react.createElement)("div", { style: { flex: "1" } }), (0, react.createElement)("button", {
|
|
3317
3324
|
className: "pbb-refresh",
|
|
3318
3325
|
onClick: () => {
|
|
3319
3326
|
if (typeof props.refresh === "function") props.refresh();
|
|
@@ -3385,7 +3392,11 @@ window.__ModuleLoader__.load({
|
|
|
3385
3392
|
}, (step.ok ? "✓ " : "✗ ") + (step.id === "health" ? "服务可达" : "自动注册") + (step.latencyMs !== void 0 ? ` (${String(step.latencyMs)}ms)` : "") + " — " + step.message))), pushTestError ? (0, react.createElement)("p", { className: "pbb-diag pbb-diagBad" }, pushTestError) : null, pushTestResult === null ? (0, react.createElement)("p", { className: "pbb-diag" }, "向所有已注册设备强制发送一条真实推送(不受在线状态与分类开关影响)。") : (0, react.createElement)("div", { className: "pbb-helpBody" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("code", { className: "pbb-token " + (pushTestResult.overall === "sent" ? "pbb-ok" : pushTestResult.overall === "failed" ? "pbb-bad" : "") }, pushTestResult.overall === "sent" ? "已送达" : pushTestResult.overall === "failed" ? "发送失败" : pushTestResult.overall === "no-targets" ? "无已注册设备" : "推送未启用")), pushTestResult.message ? (0, react.createElement)("p", { className: "pbb-diag" }, pushTestResult.message) : null, pushTestResult.results.map((r, index) => (0, react.createElement)("p", {
|
|
3386
3393
|
className: "pbb-diag",
|
|
3387
3394
|
key: String(index)
|
|
3388
|
-
}, (r.outcome === "sent" ? "✓ " : "✗ ") + r.name + " [" + r.environment + "] — " + r.outcome + (r.reason ? "(" + r.reason + ")" : "") + (r.tokenFingerprint ? " token:" + r.tokenFingerprint + "…" : "")))))), (0, react.createElement)("div", { className: "pbb-card" }, (0, react.createElement)("div", { className: "pbb-field" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("span", { className: "pbb-label" }, "已配对设备"), (0, react.createElement)("span", { className: "pbb-badge" }, String(report !== null ? report.devices.length : 0))), deviceTable)),
|
|
3395
|
+
}, (r.outcome === "sent" ? "✓ " : "✗ ") + r.name + " [" + r.environment + "] — " + r.outcome + (r.reason ? "(" + r.reason + ")" : "") + (r.tokenFingerprint ? " token:" + r.tokenFingerprint + "…" : "")))))), (0, react.createElement)("div", { className: "pbb-card" }, (0, react.createElement)("div", { className: "pbb-field" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("span", { className: "pbb-label" }, "已配对设备"), (0, react.createElement)("span", { className: "pbb-badge" }, String(report !== null ? report.devices.length : 0))), deviceTable)), report === null ? null : (0, react.createElement)("div", { className: "pbb-versionFooter" }, (0, react.createElement)("span", null, "v" + report.pluginVersion), report.updateAvailable === true ? (0, react.createElement)("a", {
|
|
3396
|
+
href: typeof report.releaseUrl === "string" && /^https:\/\//.test(report.releaseUrl) ? report.releaseUrl : "https://github.com/Mars-Sea/dsh-deeppilot/releases",
|
|
3397
|
+
target: "_blank",
|
|
3398
|
+
rel: "noreferrer"
|
|
3399
|
+
}, "有新版本") : null), diag.length > 0 ? (0, react.createElement)("p", { className: "pbb-diag" + (failed ? " pbb-diagBad" : "") }, "diag: " + diag.join(" | ")) : null);
|
|
3389
3400
|
}
|
|
3390
3401
|
//#endregion
|
|
3391
3402
|
exports.DeepPilotSettingsPage = DeepPilotSettingsPage;
|