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.
Files changed (42) hide show
  1. package/.claude-plugin/plugin.json +14 -0
  2. package/.codex-plugin/plugin.json +17 -0
  3. package/.cursor-plugin/plugin.json +14 -0
  4. package/README.md +75 -0
  5. package/dist/agent.d.mts +1 -1
  6. package/dist/agent.mjs +2 -2
  7. package/dist/{backend-Dg5JGbd3.mjs → backend-26cY2q8x.mjs} +2 -2
  8. package/dist/{backend-Dg5JGbd3.mjs.map → backend-26cY2q8x.mjs.map} +1 -1
  9. package/dist/cli-DL7o4oKw.mjs +3134 -0
  10. package/dist/cli-DL7o4oKw.mjs.map +1 -0
  11. package/dist/cli.d.mts +44 -8
  12. package/dist/cli.d.mts.map +1 -1
  13. package/dist/cli.mjs +2 -2608
  14. package/dist/index.d.mts +1 -1
  15. package/dist/index.mjs +2 -2
  16. package/dist/{mux-CDrZQglk.d.mts → mux-DOhM8bnO.d.mts} +435 -29
  17. package/dist/mux-DOhM8bnO.d.mts.map +1 -0
  18. package/dist/plugin.d.mts +15 -0
  19. package/dist/plugin.d.mts.map +1 -0
  20. package/dist/plugin.mjs +23 -0
  21. package/dist/plugin.mjs.map +1 -0
  22. package/dist/template.mjs +1 -1
  23. package/dist/{worktree-Bj6IgHv7.mjs → worktree-08MMRO3P.mjs} +66 -2
  24. package/dist/worktree-08MMRO3P.mjs.map +1 -0
  25. package/dist/worktree.d.mts +2 -2
  26. package/dist/worktree.mjs +2 -2
  27. package/package.json +17 -5
  28. package/plugin.json +23 -0
  29. package/skills/mux/README.md +23 -0
  30. package/skills/mux/SKILL.md +74 -0
  31. package/src/cli-error.ts +5 -5
  32. package/src/cli-options.ts +62 -33
  33. package/src/cli.ts +987 -842
  34. package/src/output.ts +28 -12
  35. package/src/plugin.ts +20 -0
  36. package/src/worktree-pool.ts +146 -0
  37. package/src/worktree.ts +31 -4
  38. package/dist/cli.mjs.map +0 -1
  39. package/dist/mux-CDrZQglk.d.mts.map +0 -1
  40. package/dist/worktree-Bj6IgHv7.mjs.map +0 -1
  41. package/dist/worktree-QnKzOVzL.d.mts +0 -351
  42. 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
+ [![npm version](https://img.shields.io/npm/v/cyber-mux.svg)](https://www.npmjs.com/package/cyber-mux)
4
+ [![npm downloads](https://img.shields.io/npm/dm/cyber-mux.svg)](https://www.npmjs.com/package/cyber-mux)
5
+ [![release](https://github.com/cyberuni/cyber-mux/actions/workflows/release.yml/badge.svg)](https://github.com/cyberuni/cyber-mux/actions/workflows/release.yml)
6
+ [![docs](https://img.shields.io/badge/docs-cyberuni.github.io-blue)](https://cyberuni.github.io/cyber-mux/)
7
+ [![license](https://img.shields.io/npm/l/cyber-mux.svg)](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-CDrZQglk.mjs";
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 { h as nodeExec } from "./worktree-Bj6IgHv7.mjs";
2
- import { b as agentWaitStatesSatisfiable, r as resolveMuxAdapter, x as refuseAgentWaitStates, y as AgentWaitStatesUnsupportedError } from "./backend-Dg5JGbd3.mjs";
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 { c as normalizeWorktreePath, g as withReason, h as nodeExec } from "./worktree-Bj6IgHv7.mjs";
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-Dg5JGbd3.mjs.map
6205
+ //# sourceMappingURL=backend-26cY2q8x.mjs.map