muuuuse 5.0.0 → 5.0.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 +18 -29
- package/package.json +1 -1
- package/src/util.js +11 -2
package/README.md
CHANGED
|
@@ -1,56 +1,44 @@
|
|
|
1
1
|
# 🔌Muuuuse
|
|
2
2
|
|
|
3
|
-
`🔌Muuuuse` is a tiny terminal relay.
|
|
3
|
+
`🔌Muuuuse` is a tiny terminal relay with flexible routing.
|
|
4
4
|
|
|
5
5
|
It does one job:
|
|
6
|
-
- arm
|
|
7
|
-
-
|
|
8
|
-
- have seat 1 generate a session key and seat 2 sign it
|
|
9
|
-
- additional isolated pairs work the same way: `3/4`, `5/6`, `7/8`, ...
|
|
10
|
-
- choose per-seat relay mode with `flow on` or `flow off`
|
|
6
|
+
- arm any number of terminals with `muuuuse <N>`
|
|
7
|
+
- each seat can route to any other seats with individual flow modes
|
|
11
8
|
- watch Codex, Claude, or Gemini for local assistant output
|
|
12
|
-
-
|
|
9
|
+
- relay that output to configured targets with per-target flow control
|
|
13
10
|
- keep looping until you stop it
|
|
14
11
|
|
|
15
12
|
The whole surface is:
|
|
16
13
|
|
|
17
14
|
```bash
|
|
18
15
|
muuuuse 1
|
|
19
|
-
muuuuse 1 flow on
|
|
20
|
-
muuuuse 1 flow off
|
|
21
|
-
muuuuse 1 flow off continue 5
|
|
22
16
|
muuuuse 2
|
|
23
|
-
muuuuse 2 flow off
|
|
24
|
-
muuuuse
|
|
25
|
-
muuuuse 3
|
|
26
|
-
muuuuse 3 flow on
|
|
27
|
-
muuuuse 4
|
|
28
|
-
muuuuse 4 flow off continue 1
|
|
17
|
+
muuuuse 3 link 1 flow on 2 flow off
|
|
18
|
+
muuuuse 4 link 3 flow on
|
|
29
19
|
muuuuse status
|
|
30
20
|
muuuuse stop
|
|
31
21
|
```
|
|
32
22
|
|
|
33
|
-
##
|
|
23
|
+
## Routing
|
|
34
24
|
|
|
35
|
-
|
|
25
|
+
Any seat can route to any targets. Syntax:
|
|
36
26
|
|
|
37
27
|
```bash
|
|
38
|
-
muuuuse
|
|
28
|
+
muuuuse <seat> link <target1> flow <on|off> [<target2> flow <on|off> ...]
|
|
39
29
|
```
|
|
40
30
|
|
|
41
|
-
|
|
31
|
+
Example: Seat 3 routes to seat 1 with full output (flow on) and seat 4 with final answers only (flow off):
|
|
42
32
|
|
|
43
33
|
```bash
|
|
44
|
-
muuuuse
|
|
34
|
+
muuuuse 3 link 1 flow on 4 flow off
|
|
45
35
|
```
|
|
46
36
|
|
|
47
|
-
|
|
37
|
+
Each seat defines its own routing targets. When that seat gets an answer from Claude/Codex/Gemini, it sends to all configured targets with their respective flow modes.
|
|
48
38
|
|
|
49
|
-
`flow on` means
|
|
39
|
+
`flow on` means relay both thinking/commentary and final answers. `flow off` means relay final answers only.
|
|
50
40
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
If you want Codex in one and Gemini in the other, start them inside the armed shells:
|
|
41
|
+
If you want Codex in one and Gemini in another, start them inside the armed shells:
|
|
54
42
|
|
|
55
43
|
```bash
|
|
56
44
|
codex
|
|
@@ -60,7 +48,7 @@ codex
|
|
|
60
48
|
gemini
|
|
61
49
|
```
|
|
62
50
|
|
|
63
|
-
`🔌Muuuuse` tails the local session logs for supported CLIs, relays according to each
|
|
51
|
+
`🔌Muuuuse` tails the local session logs for supported CLIs, relays according to each target's flow mode, types that output into the target seat, and then sends Enter as a separate keystroke.
|
|
64
52
|
|
|
65
53
|
Check the live state from any terminal:
|
|
66
54
|
|
|
@@ -77,8 +65,9 @@ muuuuse stop
|
|
|
77
65
|
## Notes
|
|
78
66
|
|
|
79
67
|
- state lives under `~/.muuuuse`
|
|
80
|
-
-
|
|
81
|
-
-
|
|
68
|
+
- each seat defines its own routing targets independently
|
|
69
|
+
- any seat can route to any other seat number
|
|
70
|
+
- flow modes are per-target (not per-seat)
|
|
82
71
|
- supported relay detection is built for Codex, Claude, and Gemini
|
|
83
72
|
|
|
84
73
|
## Install
|
package/package.json
CHANGED
package/src/util.js
CHANGED
|
@@ -9,7 +9,16 @@ const fs = require("node:fs");
|
|
|
9
9
|
const os = require("node:os");
|
|
10
10
|
const path = require("node:path");
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
function getBrand() {
|
|
13
|
+
try {
|
|
14
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, "../package.json"), "utf8"));
|
|
15
|
+
return `🔌Muuuuse v${pkg.version}`;
|
|
16
|
+
} catch {
|
|
17
|
+
return "🔌Muuuuse";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const BRAND = getBrand();
|
|
13
22
|
const POLL_MS = 220;
|
|
14
23
|
const MAX_RELAY_CHARS = 4000;
|
|
15
24
|
const SESSION_MATCH_WINDOW_MS = 5 * 60 * 1000;
|
|
@@ -282,7 +291,7 @@ function listSessionNames() {
|
|
|
282
291
|
|
|
283
292
|
function usage() {
|
|
284
293
|
return [
|
|
285
|
-
`${BRAND} arms
|
|
294
|
+
`${BRAND} arms terminals with flexible routing to any targets - pure message relay graph.`,
|
|
286
295
|
"",
|
|
287
296
|
"Usage:",
|
|
288
297
|
" muuuuse",
|