cyber-mux 0.7.0 → 0.9.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/.claude-plugin/plugin.json +14 -0
- package/.codex-plugin/plugin.json +17 -0
- package/.cursor-plugin/plugin.json +14 -0
- package/README.md +75 -0
- package/dist/agent.d.mts +1 -1
- package/dist/agent.mjs +2 -2
- package/dist/{backend-Dg5JGbd3.mjs → backend-26cY2q8x.mjs} +2 -2
- package/dist/{backend-Dg5JGbd3.mjs.map → backend-26cY2q8x.mjs.map} +1 -1
- package/dist/cli-DL7o4oKw.mjs +3134 -0
- package/dist/cli-DL7o4oKw.mjs.map +1 -0
- package/dist/cli.d.mts +44 -8
- package/dist/cli.d.mts.map +1 -1
- package/dist/cli.mjs +2 -2608
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{mux-CDrZQglk.d.mts → mux-DOhM8bnO.d.mts} +435 -29
- package/dist/mux-DOhM8bnO.d.mts.map +1 -0
- package/dist/plugin.d.mts +15 -0
- package/dist/plugin.d.mts.map +1 -0
- package/dist/plugin.mjs +23 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/template.mjs +1 -1
- package/dist/{worktree-Bj6IgHv7.mjs → worktree-08MMRO3P.mjs} +66 -2
- package/dist/worktree-08MMRO3P.mjs.map +1 -0
- package/dist/worktree.d.mts +2 -2
- package/dist/worktree.mjs +2 -2
- package/package.json +17 -5
- package/plugin.json +23 -0
- package/skills/mux/README.md +23 -0
- package/skills/mux/SKILL.md +74 -0
- package/src/cli-error.ts +5 -5
- package/src/cli-options.ts +62 -33
- package/src/cli.ts +987 -842
- package/src/output.ts +28 -12
- package/src/plugin.ts +20 -0
- package/src/worktree-pool.ts +146 -0
- package/src/worktree.ts +31 -4
- package/dist/cli.mjs.map +0 -1
- package/dist/mux-CDrZQglk.d.mts.map +0 -1
- package/dist/worktree-Bj6IgHv7.mjs.map +0 -1
- package/dist/worktree-QnKzOVzL.d.mts +0 -351
- package/dist/worktree-QnKzOVzL.d.mts.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cyber-mux",
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "Cross-multiplexer pane control: open, send, read, focus, and close panes over tmux, herdr, wezterm, and more.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "unional",
|
|
7
|
+
"email": "homawong@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://cyberuni.github.io/cyber-mux/",
|
|
10
|
+
"repository": "https://github.com/cyberuni/cyber-mux",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": ["tmux", "herdr", "multiplexer", "terminal", "pane", "agent"],
|
|
13
|
+
"skills": "./skills/"
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cyber-mux",
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "Cross-multiplexer pane control: open, send, read, focus, and close panes over tmux, herdr, wezterm, and more.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "unional",
|
|
7
|
+
"email": "homawong@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://cyberuni.github.io/cyber-mux/",
|
|
10
|
+
"repository": "https://github.com/cyberuni/cyber-mux",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": ["tmux", "herdr", "multiplexer", "terminal", "pane", "agent"],
|
|
13
|
+
"skills": "./skills/",
|
|
14
|
+
"interface": {
|
|
15
|
+
"displayName": "cyber-mux"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cyber-mux",
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "Cross-multiplexer pane control: open, send, read, focus, and close panes over tmux, herdr, wezterm, and more.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "unional",
|
|
7
|
+
"email": "homawong@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://cyberuni.github.io/cyber-mux/",
|
|
10
|
+
"repository": "https://github.com/cyberuni/cyber-mux",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": ["tmux", "herdr", "multiplexer", "terminal", "pane", "agent"],
|
|
13
|
+
"skills": "./skills/"
|
|
14
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# cyber-mux
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/cyber-mux)
|
|
4
|
+
[](https://www.npmjs.com/package/cyber-mux)
|
|
5
|
+
[](https://github.com/cyberuni/cyber-mux/actions/workflows/release.yml)
|
|
6
|
+
[](https://cyberuni.github.io/cyber-mux/)
|
|
7
|
+
[](https://www.npmjs.com/package/cyber-mux)
|
|
8
|
+
|
|
9
|
+
Cross-multiplexer pane control for AI-agent tooling. One contract over terminal multiplexers — open,
|
|
10
|
+
send, read, focus, and close panes without caring which multiplexer you are inside.
|
|
11
|
+
|
|
12
|
+
`cyber-mux` is the mux seam used by [`cyberlegion`](https://github.com/cyberuni/cyberplace), kept
|
|
13
|
+
deliberately narrow: it drives panes and nothing else.
|
|
14
|
+
|
|
15
|
+
Part of [cyber-civitas](https://cyber-civitas.github.io), a self-contained system for running AI coding agents. This package is its pane control beneath the runtime layer.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx cyber-mux mode
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## What it does
|
|
24
|
+
|
|
25
|
+
- **Detects** the multiplexer you are running under — env fast-path (`CYBER_MUX` / `CYBER_MUX_PANE`),
|
|
26
|
+
otherwise a process-ancestry walk falling back to the multiplexer's own env hints.
|
|
27
|
+
- **Drives panes** through one `MuxAdapter` contract: `open`, `send`, `submit`, `read`, `wait`,
|
|
28
|
+
`focus`, `close`, `list`, `exists`.
|
|
29
|
+
- **Nudges** a peer pane and verifies the turn was actually taken (recovers a submit swallowed by a
|
|
30
|
+
booting harness).
|
|
31
|
+
- **Worktrees**: create a git worktree and open it in a new workspace/session in one step.
|
|
32
|
+
|
|
33
|
+
## Backends
|
|
34
|
+
|
|
35
|
+
Drivable: **tmux**, **rmux**, **herdr**, **wezterm**, **zellij**, **cmux**, **otty**.
|
|
36
|
+
|
|
37
|
+
GNU **screen** is recognized and reported truthfully, then rejected with a named error rather than
|
|
38
|
+
driven — it addresses panes positionally, so a driver-created pane has no stable identity to send to,
|
|
39
|
+
read from, or self-identify by.
|
|
40
|
+
|
|
41
|
+
## Commands
|
|
42
|
+
|
|
43
|
+
| Command | Description |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| `cyber-mux doctor` | Probe the multiplexer, self pane, and backend; print fast-path pins |
|
|
46
|
+
| `cyber-mux mode` | Report the detected session backend |
|
|
47
|
+
| `cyber-mux open` | Open a new pane/tab/workspace, optionally launching a command in it |
|
|
48
|
+
| `cyber-mux send` | Drive a pane without taking its turn (text or keys) |
|
|
49
|
+
| `cyber-mux submit` | Take a pane's turn: type the text if given, then press Enter |
|
|
50
|
+
| `cyber-mux read` | Capture a pane's output |
|
|
51
|
+
| `cyber-mux wait` | Block until a pane's output matches (exit 0), or the timeout elapses (exit 1) |
|
|
52
|
+
| `cyber-mux focus` | Beam the attached client to a pane |
|
|
53
|
+
| `cyber-mux close` | Close a pane |
|
|
54
|
+
| `cyber-mux list` / `exists` | Enumerate live panes / probe whether one is still live |
|
|
55
|
+
| `cyber-mux worktree` | Git worktree helpers for spawning and tearing down a session |
|
|
56
|
+
| `cyber-mux template` | Manage named templates (apply one with `open`/`worktree --template`) |
|
|
57
|
+
| `cyber-mux agent` | Inspect and wait on a pane's agent-lifecycle state |
|
|
58
|
+
|
|
59
|
+
Full reference: <https://cyberuni.github.io/cyber-mux/>
|
|
60
|
+
|
|
61
|
+
## Development
|
|
62
|
+
|
|
63
|
+
Node and pnpm are pinned in `mise.toml` and managed by [mise](https://mise.jdx.dev):
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
mise install # node + pnpm at the pinned versions
|
|
67
|
+
pnpm install
|
|
68
|
+
pnpm verify # build + typecheck + lint + test
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The CLI lives in `packages/cyber-mux`; the docs site in `apps/website` (Astro + Starlight).
|
|
72
|
+
|
|
73
|
+
## License
|
|
74
|
+
|
|
75
|
+
MIT
|
package/dist/agent.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as Exec } from "./exec-B81m4yjz.mjs";
|
|
2
|
-
import { m as MuxTarget, n as AgentStatus, o as MuxAdapter, r as AgentWaitOptions, t as AgentLifecycle } from "./mux-
|
|
2
|
+
import { m as MuxTarget, n as AgentStatus, o as MuxAdapter, r as AgentWaitOptions, t as AgentLifecycle } from "./mux-DOhM8bnO.mjs";
|
|
3
3
|
//#region src/agent-states.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* The agent-wait STATE-SET refusal — what an `AgentLifecycle` backend answers when it has the native
|
package/dist/agent.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { b as agentWaitStatesSatisfiable, r as resolveMuxAdapter, x as refuseAgentWaitStates, y as AgentWaitStatesUnsupportedError } from "./backend-
|
|
1
|
+
import { V as nodeExec } from "./worktree-08MMRO3P.mjs";
|
|
2
|
+
import { b as agentWaitStatesSatisfiable, r as resolveMuxAdapter, x as refuseAgentWaitStates, y as AgentWaitStatesUnsupportedError } from "./backend-26cY2q8x.mjs";
|
|
3
3
|
//#region src/agent.ts
|
|
4
4
|
/**
|
|
5
5
|
* An agent-lifecycle wait asked of a backend that has no native agent-state primitive (`agent wait` on
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as withReason, V as nodeExec, c as normalizeWorktreePath } from "./worktree-08MMRO3P.mjs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
//#region src/env-fallback.ts
|
|
@@ -6202,4 +6202,4 @@ function callerPane(adapter, env) {
|
|
|
6202
6202
|
//#endregion
|
|
6203
6203
|
export { DEFAULT_WAIT_POLL_MS as A, restoringFocus as B, partition as C, PaneZoomUnsupportedError as D, isReadTruncated as E, PaneMoveUnsupportedError as F, envFallback as G, FloatingPanesUnsupportedError as H, canBreakPanes as I, canMovePanes as L, matchWaitPattern as M, pollForOutput as N, canZoomPanes as O, PaneBreakUnsupportedError as P, refusePaneBreak as R, herdrMuxAdapter as S, capturedRows as T, canFloatPanes as U, soleFocusedPane as V, refuseFloatingPane as W, RMUX_WORKSPACE_GROUP_OPTION as _, nudge as a, agentWaitStatesSatisfiable as b, createZellijAdapter as c, weztermMuxAdapter as d, nodeNewId as f, RMUX_TAB_NAME_OPTION as g, tmuxMuxAdapter as h, isStaged as i, assertWaitPattern as j, refusePaneZoom as k, zellijMuxAdapter as l, TMUX_WORKSPACE_GROUP_OPTION as m, resolveMux as n, currentPane as o, TMUX_TAB_NAME_OPTION as p, resolveMuxAdapter as r, probeMultiplexer as s, callerPane as t, createWeztermAdapter as u, rmuxMuxAdapter as v, FULL_SCROLLBACK_LINES as w, refuseAgentWaitStates as x, AgentWaitStatesUnsupportedError as y, refusePaneMove as z };
|
|
6204
6204
|
|
|
6205
|
-
//# sourceMappingURL=backend-
|
|
6205
|
+
//# sourceMappingURL=backend-26cY2q8x.mjs.map
|