@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.
Files changed (2) hide show
  1. package/README.md +65 -11
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -1,9 +1,27 @@
1
- # @deepseekharness-mobile/companion
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
- The [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) host plugin for **DSH
4
- Mobile**: a WebSocket bridge on port 6768, QR and device-token pairing, the embedded PWA and the
5
- session/transcript/question/command/provider/device features described in the
6
- [root README](https://github.com/joseph12n/dsh-mobile).
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` and mounts the plugin. Restart DSH after the
15
- install; the PWA is served at `/` and pairing at `/pair`. For the tailnet and phone steps, see
16
- [docs/phone-setup.md](https://github.com/joseph12n/dsh-mobile/blob/main/docs/phone-setup.md).
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
- The listener binds loopback by default and a phone must pair before any frame is accepted.
21
- Device tokens can be revoked from the phone or from the host devices file. Do not expose the
22
- listener directly to the internet; use the tailnet or a reverse proxy with TLS.
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.0",
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.0",
41
+ "@deepseekharness-mobile/protocol": "0.1.1",
42
42
  "qrcode": "^1.5.4",
43
43
  "ws": "^8.18.3"
44
44
  },