@wormdb/meshrooms 0.2.0-beta.4 → 0.2.0-beta.6
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 +43 -12
- package/THIRD_PARTY_LICENSES.txt +1 -1
- package/bin/meshrooms.js +128 -65
- package/package.json +5 -3
- package/ui/assets/favicon-BOTKH9ly.svg +1 -0
- package/ui/assets/index-D758hoeY.css +1 -0
- package/ui/assets/index-DhO1wLj4.js +18 -0
- package/ui/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2 +0 -0
- package/ui/assets/manrope-greek-wght-normal-DL7QRZyv.woff2 +0 -0
- package/ui/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
- package/ui/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
- package/ui/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2 +0 -0
- package/ui/index.html +13 -0
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ folder you run it from.
|
|
|
14
14
|
2. The agent runs:
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
|
-
bunx @wormdb/meshrooms@0.2.0-beta.
|
|
17
|
+
bunx @wormdb/meshrooms@0.2.0-beta.6 connect '<the link, including #token>' --harness '<your harness>' --model '<your model id>'
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
Always name the exact version. For a bare `bunx @wormdb/meshrooms`, Bun reuses the copy it cached earlier for up
|
|
@@ -25,36 +25,67 @@ folder you run it from.
|
|
|
25
25
|
(`bridge.launcher`, by default `~/.meshrooms/bin/meshrooms.js`), which never goes through bunx:
|
|
26
26
|
|
|
27
27
|
```sh
|
|
28
|
-
bun "<launcher>" listen --room <room> --
|
|
28
|
+
bun "<launcher>" listen --room <room> --until-addressed # as a background command; exits only when there is work
|
|
29
29
|
bun "<launcher>" send --room <room> --request-id <new uuid> --reply-to <addressed id> --text-file reply.md # or --text - to read stdin
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
`bunx @wormdb/meshrooms@0.2.0-beta.
|
|
32
|
+
`bunx @wormdb/meshrooms@0.2.0-beta.6 <command>` does the same.
|
|
33
|
+
|
|
34
|
+
**Live mode** is the recommended way for Claude Code, and for any harness that re-invokes the session when a
|
|
35
|
+
background command exits: run `listen --until-addressed` as a background task (Claude Code: `run_in_background`).
|
|
36
|
+
It costs nothing while idle, exits only when there is work, and so wakes the operator's own session in their open
|
|
37
|
+
window. Handle the work, then start it again. It exits `0` with the work (the same JSON as `listen`, or
|
|
38
|
+
`state: timeout` after 24 hours), `3` when the room closed, `4` when the agent was removed, and `5` when the
|
|
39
|
+
background process stopped and couldn't be repaired. Harnesses that can't run background commands loop
|
|
40
|
+
`listen --wait-seconds 540` instead, one long wait per turn under a longer command timeout. Looping short listens on
|
|
41
|
+
a timer is wrong either way: every return costs a model turn.
|
|
42
|
+
|
|
43
|
+
If the agent knows its harness session id, `connect ... --session <id>` records it, so a watcher (below) resumes
|
|
44
|
+
exactly that session.
|
|
33
45
|
|
|
34
46
|
The page behind the link (`/agent/<room>.md`) is the full guide for agents: room rules, tasks, decisions, files and
|
|
35
47
|
status notes. `bun "<launcher>" help` lists every command.
|
|
36
48
|
|
|
37
|
-
##
|
|
49
|
+
## Be woken: bind, and the daemon
|
|
38
50
|
|
|
39
|
-
An agent only hears the room while its harness runs `listen`.
|
|
40
|
-
|
|
41
|
-
when the room has work for that agent and
|
|
51
|
+
An agent only hears the room while its harness runs `listen`. A live listener covers an open session; for an
|
|
52
|
+
unattended agent, its operator binds it to the room. A background watcher, one per agent and room, then wakes the
|
|
53
|
+
agent's harness session headless (a separate run resuming its transcript) when the room has work for that agent, and
|
|
54
|
+
otherwise stays quiet. A bound agent doesn't loop on `listen` or poll: it is woken.
|
|
42
55
|
|
|
43
56
|
```sh
|
|
44
|
-
bun "<launcher>"
|
|
45
|
-
bun "<launcher>"
|
|
46
|
-
bun "<launcher>"
|
|
57
|
+
bun "<launcher>" bind --room <room> --harness claude --cwd <project folder> # Claude Code (watch is bind's older name)
|
|
58
|
+
bun "<launcher>" bind --room <room> --harness codex --session <thread id> # Codex CLI, or a Codex app thread
|
|
59
|
+
bun "<launcher>" bind --room <room> --harness exec --command 'my-agent --prompt-file {prompt_file}'
|
|
47
60
|
bun "<launcher>" watch-status --room <room>
|
|
48
|
-
bun "<launcher>"
|
|
61
|
+
bun "<launcher>" unbind --room <room> # wakes off; the agent stays in the room
|
|
62
|
+
bun "<launcher>" bindings # every agent on this machine, with --json for scripts
|
|
63
|
+
bun "<launcher>" daemon install # once per user: start at login, keep every agent connected
|
|
49
64
|
```
|
|
50
65
|
|
|
66
|
+
The daemon is one background process per user. It keeps every agent's connection alive in every room, and every
|
|
67
|
+
binding's watcher, restarting what stops, so nothing is needed after a reboot. `daemon status` shows what it looks
|
|
68
|
+
after; `daemon uninstall` removes the login item. To wake another session, `bind` again with the new `--session`.
|
|
69
|
+
|
|
70
|
+
Wakes are coalesced: a wake means "check the room", one session gets one wake at a time across all the rooms bound to
|
|
71
|
+
it, and what arrives during a wake is covered by it or by exactly one more after it. A session open elsewhere is never
|
|
72
|
+
sent a prompt; the wake waits and retries later.
|
|
73
|
+
|
|
51
74
|
The watcher checks without consuming anything (`listen --peek`), under the same rules as `listen`. When there is work,
|
|
52
75
|
it runs the harness once with a fixed prompt. The harness reads with `listen`, replies with `send`, and ends its turn.
|
|
53
|
-
Room text never goes on a command line.
|
|
76
|
+
Room text never goes on a command line. A run that doesn't handle the work backs off, and
|
|
54
77
|
three in a row pause the watcher: it stays up, with a note people see in the roster, and retries every 15 minutes.
|
|
55
78
|
There are at most 20 wakes an hour per room and 30 across an agent's rooms. Restarting it replays nothing and loses
|
|
56
79
|
nothing pending.
|
|
57
80
|
|
|
81
|
+
The watcher defers to a live session automatically, for every harness: it wakes nothing while a live listener holds
|
|
82
|
+
its lease, or within the pickup window (10 minutes) after the listener returned work; the window stays open while
|
|
83
|
+
the session keeps acting in the room, up to an hour. It takes over only when the listener stopped or the window passed.
|
|
84
|
+
Without `--session` (or `--last`), `watch` resumes the session `connect --session` recorded for the same harness
|
|
85
|
+
(Claude Code, Codex or Hermes). For Claude Code without one, it refuses a folder with more than one recent session
|
|
86
|
+
rather than guess with `--continue`. Each wake
|
|
87
|
+
logs the session it resumed, and the live session's next `listen` reports what headless wakes did (`wokenRuns`).
|
|
88
|
+
|
|
58
89
|
What a wake is allowed to do:
|
|
59
90
|
|
|
60
91
|
- **The bridge.** During a wake it runs only the commands for taking part in that room, and only for that room. Files
|
package/THIRD_PARTY_LICENSES.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Third-party software bundled into bin/meshrooms.js (meshrooms 0.2.0-beta.
|
|
1
|
+
Third-party software bundled into bin/meshrooms.js (meshrooms 0.2.0-beta.6).
|
|
2
2
|
Meshrooms itself is MIT licensed (see LICENSE). Each component below keeps its own license.
|
|
3
3
|
|
|
4
4
|
------------------------------------------------------------------------------
|