@sidevoice/uplink 0.4.2 → 0.5.0
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 +27 -14
- package/dist/cli.mjs +10512 -0
- package/dist/package.json +32 -0
- package/package.json +10 -14
- package/cli.mjs +0 -10
- package/connector.mjs +0 -322
- package/harness-claude.mjs +0 -227
- package/harness-codex.mjs +0 -126
- package/harness-contract.mjs +0 -116
- package/harness-http.mjs +0 -39
- package/harnesses.mjs +0 -19
- package/install.mjs +0 -212
- package/mcp.mjs +0 -198
- package/pair.mjs +0 -65
- package/skill/voice-room/SKILL.md +0 -16
- package/skill.mjs +0 -57
package/README.md
CHANGED
|
@@ -3,19 +3,20 @@
|
|
|
3
3
|
The client side. One bin (`sidevoice`), these entry points:
|
|
4
4
|
|
|
5
5
|
- `install` — registers the MCP server with the harness (re-pinned to this
|
|
6
|
-
version when an older one was registered) and
|
|
7
|
-
nothing; reports whether the machine is paired and
|
|
6
|
+
version when an older one was registered) and removes a skill copy an earlier
|
|
7
|
+
version left. Pairs with nothing; reports whether the machine is paired and
|
|
8
|
+
with which room.
|
|
8
9
|
- `mcp` — the stdio MCP server a harness starts. One per conversation. Exposes
|
|
9
10
|
`voice_connect`, `voice_pair`, `voice_say`, `voice_disconnect`, `voice_status`; carries the
|
|
10
11
|
operational instructions in its `initialize` result. It never talks to the
|
|
11
12
|
room: it keeps one local connection to the connector for as long as the
|
|
12
13
|
session lives, and the binding it registered dies with that connection.
|
|
13
14
|
- `connector` — one per machine, started by the first façade that needs it and
|
|
14
|
-
gone fifteen seconds after the last binding leaves. Holds the outbound
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
gone fifteen seconds after the last binding leaves. Holds the outbound link to
|
|
16
|
+
the room, re-announces its bindings on every reconnect, keeps a durable outbox
|
|
17
|
+
for speech published while offline, and delivers one input event at a time per
|
|
18
|
+
binding through the adapter that binding was registered with. A file lock
|
|
19
|
+
makes it a singleton.
|
|
19
20
|
- `pair` — redeems, by hand, a pairing code from the room UI for this machine's
|
|
20
21
|
credential (`~/.sidevoice/credentials.json`, mode 0600). The usual path is the
|
|
21
22
|
conversation's `voice_pair`, with the code the user read from the room; nothing
|
|
@@ -28,11 +29,23 @@ or malformed declaration becomes `unknown`, never false. Claude Code, Codex and
|
|
|
28
29
|
generic HTTP each have one module. See the repository's
|
|
29
30
|
[`docs/HARNESS_CONTRACT.md`](../../docs/HARNESS_CONTRACT.md).
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
The link is Socket.IO (`link.mjs`), to `/api/connectors/link` in the
|
|
33
|
+
namespace `/connectors`, WebSocket transport only. Who this connector is travels
|
|
34
|
+
in the connect handshake — `connector_id`, `token`, `protocol`, host and version
|
|
35
|
+
— so a credential the room does not know never reaches an event; the room
|
|
36
|
+
refuses it with a message that says to pair again, and a refused credential is
|
|
37
|
+
not retried. Acknowledgements, keepalive and reconnection with backoff are the
|
|
38
|
+
library's. The durable outbox is not: a buffer dies with the process, and speech
|
|
39
|
+
a conversation was told was queued must not.
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
Events: `connector.welcome` after connecting; `binding.register` (carrying the
|
|
42
|
+
declared harness capabilities), answered with the binding or `{ error }`;
|
|
43
|
+
`binding.unregister`; `input.deliver`, answered with the acknowledgement;
|
|
44
|
+
`input.working`; `input.read`; `speech.publish`, answered with what the room did
|
|
45
|
+
with it; `binding.close`. Protocol version 2.
|
|
46
|
+
|
|
47
|
+
Node 22+. The published package has **no runtime dependencies**: `npm run build`
|
|
48
|
+
bundles `socket.io-client` and everything else into `dist/cli.mjs` with esbuild,
|
|
49
|
+
so installing it copies files and fetches nothing. Tests run on the source:
|
|
50
|
+
`node --test test/test_connector.mjs`; the room's `test_connector_interop.py`
|
|
51
|
+
runs this connector for real, from the checkout and from the bundle.
|