@deepseekharness-mobile/companion 0.1.0 → 0.1.1
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 +65 -11
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/joseph12n/dsh-mobile/main/docs/assets/logo.png" width="88" alt="DSH Mobile" />
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
<h1>@deepseekharness-mobile/companion</h1>
|
|
5
|
+
|
|
6
|
+
<p><strong>The host plugin for DSH Mobile.</strong><br />
|
|
7
|
+
Serves the PWA, pairs phones and bridges the <code>dsh-mobile/1</code> contract to DeepSeek
|
|
8
|
+
Harness — loopback-only, one token per device, no cloud in between.</p>
|
|
9
|
+
|
|
10
|
+
<p>
|
|
11
|
+
<a href="https://www.npmjs.com/package/@deepseekharness-mobile/companion"><img src="https://img.shields.io/npm/v/@deepseekharness-mobile/companion?label=npm&color=4D6BFE" alt="npm" /></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@deepseekharness-mobile/companion"><img src="https://img.shields.io/npm/dm/@deepseekharness-mobile/companion?color=4D6BFE" alt="Downloads" /></a>
|
|
13
|
+
<a href="https://github.com/joseph12n/dsh-mobile/actions/workflows/ci.yml"><img src="https://github.com/joseph12n/dsh-mobile/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
14
|
+
<a href="https://sonarcloud.io/summary/new_code?id=joseph12n_dsh-mobile"><img src="https://sonarcloud.io/api/project_badges/measure?project=joseph12n_dsh-mobile&metric=alert_status" alt="Quality Gate" /></a>
|
|
15
|
+
<a href="https://github.com/joseph12n/dsh-mobile/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-4D6BFE.svg" alt="License" /></a>
|
|
16
|
+
<a href="https://github.com/deepseek-ai/deepseek-harness"><img src="https://img.shields.io/badge/DeepSeek%20Harness-companion-4D6BFE?logo=deepseek&logoColor=white" alt="DeepSeek Harness" /></a>
|
|
17
|
+
<a href="https://github.com/joseph12n/dsh-mobile/blob/main/docs/phone-setup.md"><img src="https://img.shields.io/badge/PWA-installable-5A0FC8?logo=googlechrome&logoColor=white" alt="PWA" /></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p>
|
|
21
|
+
<img src="https://raw.githubusercontent.com/joseph12n/dsh-mobile/main/docs/assets/session.png" width="215" alt="A live turn with the agent activity panel" />
|
|
22
|
+
<img src="https://raw.githubusercontent.com/joseph12n/dsh-mobile/main/docs/assets/settings.png" width="215" alt="Model providers and paired devices" />
|
|
23
|
+
</p>
|
|
24
|
+
</div>
|
|
7
25
|
|
|
8
26
|
## Install
|
|
9
27
|
|
|
@@ -11,15 +29,51 @@ session/transcript/question/command/provider/device features described in the
|
|
|
11
29
|
dsh profile add @deepseekharness-mobile/companion
|
|
12
30
|
```
|
|
13
31
|
|
|
14
|
-
The profile reads the bundle's `cordis.patch.yml
|
|
15
|
-
|
|
16
|
-
|
|
32
|
+
The profile reads the bundle's `cordis.patch.yml`, mounts the plugin and serves the embedded
|
|
33
|
+
PWA on `127.0.0.1:6768`. Restart DSH afterwards, run `/mobile` in a session and open the link
|
|
34
|
+
on the phone; the PWA installs from the browser menu.
|
|
35
|
+
|
|
36
|
+
The listener is **loopback-only** by design: the phone reaches it through the tailnet name with
|
|
37
|
+
`tailscale serve`, which provides HTTPS and a secure context. The full path, with the usual
|
|
38
|
+
problems, is in
|
|
39
|
+
[`docs/phone-setup.md`](https://github.com/joseph12n/dsh-mobile/blob/main/docs/phone-setup.md).
|
|
40
|
+
|
|
41
|
+
## What the phone gets
|
|
42
|
+
|
|
43
|
+
- **Live transcript** with paged history, separated reasoning and streaming events.
|
|
44
|
+
- **Questions and approvals**, including the blocking `ask_user_question`, in an inline card.
|
|
45
|
+
- **Agent activity**: goal and round, running subagents and open tasks in a floating panel that
|
|
46
|
+
does not shrink the conversation.
|
|
47
|
+
- **Slash commands** from the composer, with the result outside the model transcript.
|
|
48
|
+
- **Model providers**: test a key and connect it; the key is stored on the host and never comes
|
|
49
|
+
back, and endpoints, headers, model overrides and OAuth stay on the desktop.
|
|
50
|
+
- **Paired devices**: last seen, revoke and forget, with the host revoking first.
|
|
51
|
+
- **Sessions, folders, model choice**, write and cancel, and an installable PWA with four
|
|
52
|
+
locales.
|
|
53
|
+
|
|
54
|
+
The full feature tour, the architecture and the security model live in the
|
|
55
|
+
[repository README](https://github.com/joseph12n/dsh-mobile#readme).
|
|
17
56
|
|
|
18
57
|
## Security
|
|
19
58
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
59
|
+
- **Loopback only.** The listen address is a constant, not an option; the tailnet name is the
|
|
60
|
+
only supported path and LAN access is not implemented.
|
|
61
|
+
- **Pair before anything.** The QR carries a single-use code in the URL fragment, valid for
|
|
62
|
+
10 minutes and never written to a log; redeeming it creates a device token stored as a hash.
|
|
63
|
+
- **One token per device.** Revoking one cuts its sockets and does not affect the others.
|
|
64
|
+
- **The host decides.** Capabilities are negotiated in `hello.ok`; the client cannot see or do
|
|
65
|
+
what the server does not send.
|
|
66
|
+
|
|
67
|
+
## Documentation
|
|
68
|
+
|
|
69
|
+
- [Repository](https://github.com/joseph12n/dsh-mobile) — the product, the features and the
|
|
70
|
+
screenshots.
|
|
71
|
+
- [Phone setup](https://github.com/joseph12n/dsh-mobile/blob/main/docs/phone-setup.md) —
|
|
72
|
+
Tailscale, pairing and the usual problems.
|
|
73
|
+
- [Architecture](https://github.com/joseph12n/dsh-mobile/blob/main/docs/architecture.md) — why
|
|
74
|
+
it is built this way.
|
|
75
|
+
- [`@deepseekharness-mobile/protocol`](https://www.npmjs.com/package/@deepseekharness-mobile/protocol)
|
|
76
|
+
— the wire contract, also on npm.
|
|
23
77
|
|
|
24
78
|
## License
|
|
25
79
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseekharness-mobile/companion",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "DSH host plugin: WebSocket bridge, QR pairing and device tokens for DSH Mobile",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"cordis.patch.yml"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@deepseekharness-mobile/protocol": "0.1.
|
|
41
|
+
"@deepseekharness-mobile/protocol": "0.1.1",
|
|
42
42
|
"qrcode": "^1.5.4",
|
|
43
43
|
"ws": "^8.18.3"
|
|
44
44
|
},
|