@wastedcode/claudemux 0.2.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 (249) hide show
  1. package/CHANGELOG.md +257 -0
  2. package/LICENSE +21 -0
  3. package/README.md +493 -0
  4. package/bin/claudemux +6 -0
  5. package/dist/agents/claude.d.ts +3 -0
  6. package/dist/agents/claude.d.ts.map +1 -0
  7. package/dist/agents/claude.js +585 -0
  8. package/dist/agents/claude.js.map +1 -0
  9. package/dist/agents/index.d.ts +2 -0
  10. package/dist/agents/index.d.ts.map +1 -0
  11. package/dist/agents/index.js +2 -0
  12. package/dist/agents/index.js.map +1 -0
  13. package/dist/agents/types.d.ts +252 -0
  14. package/dist/agents/types.d.ts.map +1 -0
  15. package/dist/agents/types.js +2 -0
  16. package/dist/agents/types.js.map +1 -0
  17. package/dist/backends/tmux/capture.d.ts +25 -0
  18. package/dist/backends/tmux/capture.d.ts.map +1 -0
  19. package/dist/backends/tmux/capture.js +35 -0
  20. package/dist/backends/tmux/capture.js.map +1 -0
  21. package/dist/backends/tmux/exec.d.ts +105 -0
  22. package/dist/backends/tmux/exec.d.ts.map +1 -0
  23. package/dist/backends/tmux/exec.js +226 -0
  24. package/dist/backends/tmux/exec.js.map +1 -0
  25. package/dist/backends/tmux/index.d.ts +22 -0
  26. package/dist/backends/tmux/index.d.ts.map +1 -0
  27. package/dist/backends/tmux/index.js +108 -0
  28. package/dist/backends/tmux/index.js.map +1 -0
  29. package/dist/backends/tmux/keys.d.ts +38 -0
  30. package/dist/backends/tmux/keys.d.ts.map +1 -0
  31. package/dist/backends/tmux/keys.js +63 -0
  32. package/dist/backends/tmux/keys.js.map +1 -0
  33. package/dist/backends/tmux/options.d.ts +24 -0
  34. package/dist/backends/tmux/options.d.ts.map +1 -0
  35. package/dist/backends/tmux/options.js +84 -0
  36. package/dist/backends/tmux/options.js.map +1 -0
  37. package/dist/backends/tmux/sessions.d.ts +70 -0
  38. package/dist/backends/tmux/sessions.d.ts.map +1 -0
  39. package/dist/backends/tmux/sessions.js +156 -0
  40. package/dist/backends/tmux/sessions.js.map +1 -0
  41. package/dist/backends/tmux/socket.d.ts +26 -0
  42. package/dist/backends/tmux/socket.d.ts.map +1 -0
  43. package/dist/backends/tmux/socket.js +31 -0
  44. package/dist/backends/tmux/socket.js.map +1 -0
  45. package/dist/backends/types.d.ts +110 -0
  46. package/dist/backends/types.d.ts.map +1 -0
  47. package/dist/backends/types.js +24 -0
  48. package/dist/backends/types.js.map +1 -0
  49. package/dist/cli/ask.d.ts +11 -0
  50. package/dist/cli/ask.d.ts.map +1 -0
  51. package/dist/cli/ask.js +17 -0
  52. package/dist/cli/ask.js.map +1 -0
  53. package/dist/cli/capture.d.ts +8 -0
  54. package/dist/cli/capture.d.ts.map +1 -0
  55. package/dist/cli/capture.js +15 -0
  56. package/dist/cli/capture.js.map +1 -0
  57. package/dist/cli/context.d.ts +71 -0
  58. package/dist/cli/context.d.ts.map +1 -0
  59. package/dist/cli/context.js +82 -0
  60. package/dist/cli/context.js.map +1 -0
  61. package/dist/cli/exists.d.ts +7 -0
  62. package/dist/cli/exists.d.ts.map +1 -0
  63. package/dist/cli/exists.js +16 -0
  64. package/dist/cli/exists.js.map +1 -0
  65. package/dist/cli/interrupt.d.ts +10 -0
  66. package/dist/cli/interrupt.d.ts.map +1 -0
  67. package/dist/cli/interrupt.js +13 -0
  68. package/dist/cli/interrupt.js.map +1 -0
  69. package/dist/cli/kill.d.ts +7 -0
  70. package/dist/cli/kill.d.ts.map +1 -0
  71. package/dist/cli/kill.js +14 -0
  72. package/dist/cli/kill.js.map +1 -0
  73. package/dist/cli/list.d.ts +10 -0
  74. package/dist/cli/list.d.ts.map +1 -0
  75. package/dist/cli/list.js +19 -0
  76. package/dist/cli/list.js.map +1 -0
  77. package/dist/cli/main.d.ts +13 -0
  78. package/dist/cli/main.d.ts.map +1 -0
  79. package/dist/cli/main.js +143 -0
  80. package/dist/cli/main.js.map +1 -0
  81. package/dist/cli/messages.d.ts +9 -0
  82. package/dist/cli/messages.d.ts.map +1 -0
  83. package/dist/cli/messages.js +13 -0
  84. package/dist/cli/messages.js.map +1 -0
  85. package/dist/cli/respond.d.ts +10 -0
  86. package/dist/cli/respond.d.ts.map +1 -0
  87. package/dist/cli/respond.js +23 -0
  88. package/dist/cli/respond.js.map +1 -0
  89. package/dist/cli/resume.d.ts +12 -0
  90. package/dist/cli/resume.d.ts.map +1 -0
  91. package/dist/cli/resume.js +21 -0
  92. package/dist/cli/resume.js.map +1 -0
  93. package/dist/cli/send.d.ts +9 -0
  94. package/dist/cli/send.d.ts.map +1 -0
  95. package/dist/cli/send.js +16 -0
  96. package/dist/cli/send.js.map +1 -0
  97. package/dist/cli/spawn.d.ts +14 -0
  98. package/dist/cli/spawn.d.ts.map +1 -0
  99. package/dist/cli/spawn.js +21 -0
  100. package/dist/cli/spawn.js.map +1 -0
  101. package/dist/cli/state.d.ts +7 -0
  102. package/dist/cli/state.d.ts.map +1 -0
  103. package/dist/cli/state.js +11 -0
  104. package/dist/cli/state.js.map +1 -0
  105. package/dist/cli/turn-complete.d.ts +8 -0
  106. package/dist/cli/turn-complete.d.ts.map +1 -0
  107. package/dist/cli/turn-complete.js +14 -0
  108. package/dist/cli/turn-complete.js.map +1 -0
  109. package/dist/cli/wait.d.ts +13 -0
  110. package/dist/cli/wait.d.ts.map +1 -0
  111. package/dist/cli/wait.js +17 -0
  112. package/dist/cli/wait.js.map +1 -0
  113. package/dist/compose.d.ts +81 -0
  114. package/dist/compose.d.ts.map +1 -0
  115. package/dist/compose.js +64 -0
  116. package/dist/compose.js.map +1 -0
  117. package/dist/errors.d.ts +250 -0
  118. package/dist/errors.d.ts.map +1 -0
  119. package/dist/errors.js +300 -0
  120. package/dist/errors.js.map +1 -0
  121. package/dist/index.d.ts +22 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +17 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/io/baseline.d.ts +53 -0
  126. package/dist/io/baseline.d.ts.map +1 -0
  127. package/dist/io/baseline.js +97 -0
  128. package/dist/io/baseline.js.map +1 -0
  129. package/dist/io/capture.d.ts +15 -0
  130. package/dist/io/capture.d.ts.map +1 -0
  131. package/dist/io/capture.js +13 -0
  132. package/dist/io/capture.js.map +1 -0
  133. package/dist/io/interrupt.d.ts +46 -0
  134. package/dist/io/interrupt.d.ts.map +1 -0
  135. package/dist/io/interrupt.js +60 -0
  136. package/dist/io/interrupt.js.map +1 -0
  137. package/dist/io/respond.d.ts +28 -0
  138. package/dist/io/respond.d.ts.map +1 -0
  139. package/dist/io/respond.js +33 -0
  140. package/dist/io/respond.js.map +1 -0
  141. package/dist/io/send.d.ts +44 -0
  142. package/dist/io/send.d.ts.map +1 -0
  143. package/dist/io/send.js +66 -0
  144. package/dist/io/send.js.map +1 -0
  145. package/dist/io/stabilize.d.ts +28 -0
  146. package/dist/io/stabilize.d.ts.map +1 -0
  147. package/dist/io/stabilize.js +20 -0
  148. package/dist/io/stabilize.js.map +1 -0
  149. package/dist/io/wait.d.ts +47 -0
  150. package/dist/io/wait.d.ts.map +1 -0
  151. package/dist/io/wait.js +117 -0
  152. package/dist/io/wait.js.map +1 -0
  153. package/dist/observe/incremental.d.ts +28 -0
  154. package/dist/observe/incremental.d.ts.map +1 -0
  155. package/dist/observe/incremental.js +57 -0
  156. package/dist/observe/incremental.js.map +1 -0
  157. package/dist/observe/observer.d.ts +86 -0
  158. package/dist/observe/observer.d.ts.map +1 -0
  159. package/dist/observe/observer.js +167 -0
  160. package/dist/observe/observer.js.map +1 -0
  161. package/dist/observe/session-observer.d.ts +49 -0
  162. package/dist/observe/session-observer.d.ts.map +1 -0
  163. package/dist/observe/session-observer.js +123 -0
  164. package/dist/observe/session-observer.js.map +1 -0
  165. package/dist/session/adopt.d.ts +52 -0
  166. package/dist/session/adopt.d.ts.map +1 -0
  167. package/dist/session/adopt.js +57 -0
  168. package/dist/session/adopt.js.map +1 -0
  169. package/dist/session/boot.d.ts +66 -0
  170. package/dist/session/boot.d.ts.map +1 -0
  171. package/dist/session/boot.js +216 -0
  172. package/dist/session/boot.js.map +1 -0
  173. package/dist/session/constants.d.ts +57 -0
  174. package/dist/session/constants.d.ts.map +1 -0
  175. package/dist/session/constants.js +54 -0
  176. package/dist/session/constants.js.map +1 -0
  177. package/dist/session/create.d.ts +88 -0
  178. package/dist/session/create.d.ts.map +1 -0
  179. package/dist/session/create.js +66 -0
  180. package/dist/session/create.js.map +1 -0
  181. package/dist/session/default-backend.d.ts +27 -0
  182. package/dist/session/default-backend.d.ts.map +1 -0
  183. package/dist/session/default-backend.js +58 -0
  184. package/dist/session/default-backend.js.map +1 -0
  185. package/dist/session/handle.d.ts +63 -0
  186. package/dist/session/handle.d.ts.map +1 -0
  187. package/dist/session/handle.js +284 -0
  188. package/dist/session/handle.js.map +1 -0
  189. package/dist/session/hooks.d.ts +37 -0
  190. package/dist/session/hooks.d.ts.map +1 -0
  191. package/dist/session/hooks.js +42 -0
  192. package/dist/session/hooks.js.map +1 -0
  193. package/dist/session/mutex.d.ts +15 -0
  194. package/dist/session/mutex.d.ts.map +1 -0
  195. package/dist/session/mutex.js +29 -0
  196. package/dist/session/mutex.js.map +1 -0
  197. package/dist/session/recover.d.ts +43 -0
  198. package/dist/session/recover.d.ts.map +1 -0
  199. package/dist/session/recover.js +45 -0
  200. package/dist/session/recover.js.map +1 -0
  201. package/dist/session/ref.d.ts +2 -0
  202. package/dist/session/ref.d.ts.map +1 -0
  203. package/dist/session/ref.js +5 -0
  204. package/dist/session/ref.js.map +1 -0
  205. package/dist/session/registry.d.ts +31 -0
  206. package/dist/session/registry.d.ts.map +1 -0
  207. package/dist/session/registry.js +32 -0
  208. package/dist/session/registry.js.map +1 -0
  209. package/dist/session/resolve.d.ts +30 -0
  210. package/dist/session/resolve.d.ts.map +1 -0
  211. package/dist/session/resolve.js +24 -0
  212. package/dist/session/resolve.js.map +1 -0
  213. package/dist/session/resume.d.ts +68 -0
  214. package/dist/session/resume.d.ts.map +1 -0
  215. package/dist/session/resume.js +54 -0
  216. package/dist/session/resume.js.map +1 -0
  217. package/dist/session/spawn-boot.d.ts +44 -0
  218. package/dist/session/spawn-boot.d.ts.map +1 -0
  219. package/dist/session/spawn-boot.js +87 -0
  220. package/dist/session/spawn-boot.js.map +1 -0
  221. package/dist/session/validate.d.ts +10 -0
  222. package/dist/session/validate.d.ts.map +1 -0
  223. package/dist/session/validate.js +0 -0
  224. package/dist/session/validate.js.map +1 -0
  225. package/dist/state/classifier.d.ts +29 -0
  226. package/dist/state/classifier.d.ts.map +1 -0
  227. package/dist/state/classifier.js +37 -0
  228. package/dist/state/classifier.js.map +1 -0
  229. package/dist/state/types.d.ts +32 -0
  230. package/dist/state/types.d.ts.map +1 -0
  231. package/dist/state/types.js +2 -0
  232. package/dist/state/types.js.map +1 -0
  233. package/dist/types.d.ts +401 -0
  234. package/dist/types.d.ts.map +1 -0
  235. package/dist/types.js +9 -0
  236. package/dist/types.js.map +1 -0
  237. package/dist/util/ansi.d.ts +14 -0
  238. package/dist/util/ansi.d.ts.map +1 -0
  239. package/dist/util/ansi.js +18 -0
  240. package/dist/util/ansi.js.map +1 -0
  241. package/dist/util/emitter.d.ts +17 -0
  242. package/dist/util/emitter.d.ts.map +1 -0
  243. package/dist/util/emitter.js +33 -0
  244. package/dist/util/emitter.js.map +1 -0
  245. package/dist/util/sleep.d.ts +8 -0
  246. package/dist/util/sleep.d.ts.map +1 -0
  247. package/dist/util/sleep.js +10 -0
  248. package/dist/util/sleep.js.map +1 -0
  249. package/package.json +50 -0
@@ -0,0 +1,82 @@
1
+ import { claude } from "../agents/claude.js";
2
+ import { adopt } from "../session/adopt.js";
3
+ import { DEFAULT_NAMESPACE } from "../session/constants.js";
4
+ import { backendWithSocket, resolveSocket, sharedDefaultBackend, } from "../session/default-backend.js";
5
+ /**
6
+ * Resolve the agent by short name. Only `claude` is supported currently;
7
+ * any other value exits with a typed error message.
8
+ */
9
+ export function resolveAgent(name) {
10
+ const key = name ?? "claude";
11
+ if (key !== "claude") {
12
+ process.stderr.write(`claudemux: unknown agent "${key}" — only "claude" is supported\n`);
13
+ process.exit(2);
14
+ }
15
+ return claude;
16
+ }
17
+ /** Resolve the namespace, applying the substrate's default. */
18
+ export function resolveNamespace(name) {
19
+ return name ?? DEFAULT_NAMESPACE;
20
+ }
21
+ /**
22
+ * Resolve the backend for this CLI invocation. If `--socket` was passed
23
+ * (and is non-empty after trimming), builds a fresh backend on the
24
+ * resolved socket; otherwise returns the process-wide shared default
25
+ * (which itself honors `CLAUDEMUX_SOCKET`). The trim → gate-and-return
26
+ * consistency lives in `resolveSocket` so a padded `--socket ' x '` lands
27
+ * on the same server as `--socket x`.
28
+ */
29
+ export function backend(opts = {}) {
30
+ if (opts.socket?.trim()) {
31
+ return backendWithSocket(resolveSocket(opts.socket));
32
+ }
33
+ return sharedDefaultBackend();
34
+ }
35
+ /**
36
+ * Attach a session handle for the CLI's per-invocation reattach. Delegates to
37
+ * the library {@link adopt} — the ONE owner of "re-attach to a running session"
38
+ * — so the CLI **recovers the agentSessionId** (and thus can locate the
39
+ * transcript + hook rendezvous) instead of reimplementing a weaker attach.
40
+ * Async because recovery reads session metadata.
41
+ *
42
+ * @throws `SessionGone` if the named session is not alive (adopt's contract) —
43
+ * the CLI surfaces it as a typed, no-tmux-leak error.
44
+ */
45
+ export function handleFor(o) {
46
+ return adopt({
47
+ backend: backend(o),
48
+ agent: resolveAgent(o.agent),
49
+ namespace: resolveNamespace(o.namespace),
50
+ name: o.name,
51
+ });
52
+ }
53
+ /** The CLI's own default wall-clock cap. */
54
+ const CLI_DEFAULT_MAX_MS = 300_000;
55
+ /**
56
+ * Build the library's {@link ReadyOpts} from CLI patience flags. The library
57
+ * imposes **no** default patience; the CLI is a *consumer* and supplies its own
58
+ * so a shell `wait`/`ask` can't hang forever: if neither bound is given it caps
59
+ * the wall-clock at {@link CLI_DEFAULT_MAX_MS}. `--timeout-ms` and `--idle-ms`
60
+ * override; passing `--idle-ms` alone opts out of the wall-clock default (the
61
+ * caller chose a no-progress bound deliberately).
62
+ */
63
+ export function patienceOpts(o) {
64
+ const maxMs = o.timeoutMs ?? (o.idleMs === undefined ? CLI_DEFAULT_MAX_MS : undefined);
65
+ return {
66
+ ...(maxMs === undefined ? {} : { maxMs }),
67
+ ...(o.idleMs === undefined ? {} : { idleMs: o.idleMs }),
68
+ };
69
+ }
70
+ /** Read all of stdin as UTF-8 — the `<text>` = `"-"` piping convention. */
71
+ export function readStdin() {
72
+ return new Promise((resolve, reject) => {
73
+ let buf = "";
74
+ process.stdin.setEncoding("utf8");
75
+ process.stdin.on("data", (chunk) => {
76
+ buf += chunk;
77
+ });
78
+ process.stdin.on("end", () => resolve(buf));
79
+ process.stdin.on("error", reject);
80
+ });
81
+ }
82
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAyBvC;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,MAAM,GAAG,GAAG,IAAI,IAAI,QAAQ,CAAC;IAC7B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,kCAAkC,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,IAAwB;IACvD,OAAO,IAAI,IAAI,iBAAiB,CAAC;AACnC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE;IACxC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,CAAgC;IACxD,OAAO,KAAK,CAAC;QACX,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACnB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5B,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QACxC,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC;AACL,CAAC;AAUD,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,CAAkB;IAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvF,OAAO;QACL,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,GAAG,IAAI,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type RefOpts } from "./context.js";
2
+ /**
3
+ * `claudemux exists <name>` — print `true` / `false` and exit 0 / 1
4
+ * (matches POSIX shell convention: existence as success).
5
+ */
6
+ export declare function existsCli(name: string, opts?: RefOpts): Promise<void>;
7
+ //# sourceMappingURL=exists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../../src/cli/exists.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,cAAc,CAAC;AAEvE;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E"}
@@ -0,0 +1,16 @@
1
+ import { exists } from "../session/registry.js";
2
+ import { backend, resolveNamespace } from "./context.js";
3
+ /**
4
+ * `claudemux exists <name>` — print `true` / `false` and exit 0 / 1
5
+ * (matches POSIX shell convention: existence as success).
6
+ */
7
+ export async function existsCli(name, opts = {}) {
8
+ const ok = await exists({
9
+ name,
10
+ namespace: resolveNamespace(opts.namespace),
11
+ backend: backend(opts),
12
+ });
13
+ process.stdout.write(`${ok}\n`);
14
+ process.exit(ok ? 0 : 1);
15
+ }
16
+ //# sourceMappingURL=exists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.js","sourceRoot":"","sources":["../../src/cli/exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAgB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,OAAgB,EAAE;IAC9D,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC;QACtB,IAAI;QACJ,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;KACvB,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type CommonOpts } from "./context.js";
2
+ /**
3
+ * `claudemux interrupt <name>` — fire ESC at the session to stop a working
4
+ * agent. Mirrors the `interrupt()` library verb 1:1 (no body, unlike `send`).
5
+ *
6
+ * ESC is sent regardless of state; it is meaningful only when the agent is
7
+ * `working`. ESC on an idle claude is harmless (it clears the input box).
8
+ */
9
+ export declare function interruptCli(name: string, opts?: CommonOpts): Promise<void>;
10
+ //# sourceMappingURL=interrupt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupt.d.ts","sourceRoot":"","sources":["../../src/cli/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,cAAc,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF"}
@@ -0,0 +1,13 @@
1
+ import { handleFor } from "./context.js";
2
+ /**
3
+ * `claudemux interrupt <name>` — fire ESC at the session to stop a working
4
+ * agent. Mirrors the `interrupt()` library verb 1:1 (no body, unlike `send`).
5
+ *
6
+ * ESC is sent regardless of state; it is meaningful only when the agent is
7
+ * `working`. ESC on an idle claude is harmless (it clears the input box).
8
+ */
9
+ export async function interruptCli(name, opts = {}) {
10
+ const handle = await handleFor({ ...opts, name });
11
+ await handle.interrupt();
12
+ }
13
+ //# sourceMappingURL=interrupt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../../src/cli/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAAmB,EAAE;IACpE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type RefOpts } from "./context.js";
2
+ /**
3
+ * `claudemux kill <name>` — kill exactly the named session. Idempotent:
4
+ * killing a session that's already gone exits 0.
5
+ */
6
+ export declare function killCli(name: string, opts?: RefOpts): Promise<void>;
7
+ //# sourceMappingURL=kill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kill.d.ts","sourceRoot":"","sources":["../../src/cli/kill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,cAAc,CAAC;AAEvE;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E"}
@@ -0,0 +1,14 @@
1
+ import { kill } from "../session/registry.js";
2
+ import { backend, resolveNamespace } from "./context.js";
3
+ /**
4
+ * `claudemux kill <name>` — kill exactly the named session. Idempotent:
5
+ * killing a session that's already gone exits 0.
6
+ */
7
+ export async function killCli(name, opts = {}) {
8
+ await kill({
9
+ name,
10
+ namespace: resolveNamespace(opts.namespace),
11
+ backend: backend(opts),
12
+ });
13
+ }
14
+ //# sourceMappingURL=kill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kill.js","sourceRoot":"","sources":["../../src/cli/kill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAgB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,OAAgB,EAAE;IAC5D,MAAM,IAAI,CAAC;QACT,IAAI;QACJ,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;KACvB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type RefOpts } from "./context.js";
2
+ /**
3
+ * `claudemux list [namespace]` — print short session names in `namespace`, one
4
+ * per line. The namespace may come from the positional OR `--namespace`; the
5
+ * flag wins when both are given (the CLI's cross-verb vocabulary uses the flag).
6
+ * That reconciliation is owned HERE, not in the command wiring — every other
7
+ * verb passes opts straight through, so this verb shouldn't be the exception.
8
+ */
9
+ export declare function listCli(positionalNamespace: string | undefined, opts?: RefOpts): Promise<void>;
10
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,cAAc,CAAC;AAEvE;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,19 @@
1
+ import { list } from "../session/registry.js";
2
+ import { backend, resolveNamespace } from "./context.js";
3
+ /**
4
+ * `claudemux list [namespace]` — print short session names in `namespace`, one
5
+ * per line. The namespace may come from the positional OR `--namespace`; the
6
+ * flag wins when both are given (the CLI's cross-verb vocabulary uses the flag).
7
+ * That reconciliation is owned HERE, not in the command wiring — every other
8
+ * verb passes opts straight through, so this verb shouldn't be the exception.
9
+ */
10
+ export async function listCli(positionalNamespace, opts = {}) {
11
+ const names = await list({
12
+ namespace: resolveNamespace(opts.namespace ?? positionalNamespace),
13
+ backend: backend(opts),
14
+ });
15
+ for (const name of names) {
16
+ process.stdout.write(`${name}\n`);
17
+ }
18
+ }
19
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAgB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,mBAAuC,EACvC,OAAgB,EAAE;IAElB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC;QACvB,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,IAAI,mBAAmB,CAAC;QAClE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;KACvB,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * Build the `claudemux` commander entry. Exported separately from `bin/`
4
+ * so tests can drive it without spawning a subprocess.
5
+ *
6
+ * Verb names match the library 1:1 — `claudemux send name "..."` is
7
+ * `send(name, "...")` on the library side. Help strings carry zero
8
+ * references to any specific backend.
9
+ */
10
+ export declare function buildProgram(): Command;
11
+ /** Entry point — handles typed-error exit codes uniformly. */
12
+ export declare function runCli(argv: string[]): Promise<number>;
13
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,OAAO,CA2HtC;AAQD,8DAA8D;AAC9D,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAa5D"}
@@ -0,0 +1,143 @@
1
+ import { Command } from "commander";
2
+ import { ClaudemuxError } from "../errors.js";
3
+ import { askCli } from "./ask.js";
4
+ import { captureCli } from "./capture.js";
5
+ import { existsCli } from "./exists.js";
6
+ import { interruptCli } from "./interrupt.js";
7
+ import { killCli } from "./kill.js";
8
+ import { listCli } from "./list.js";
9
+ import { messagesCli } from "./messages.js";
10
+ import { respondCli } from "./respond.js";
11
+ import { resumeCli } from "./resume.js";
12
+ import { sendCli } from "./send.js";
13
+ import { spawnCli } from "./spawn.js";
14
+ import { stateCli } from "./state.js";
15
+ import { turnCompleteCli } from "./turn-complete.js";
16
+ import { waitCli } from "./wait.js";
17
+ /**
18
+ * Build the `claudemux` commander entry. Exported separately from `bin/`
19
+ * so tests can drive it without spawning a subprocess.
20
+ *
21
+ * Verb names match the library 1:1 — `claudemux send name "..."` is
22
+ * `send(name, "...")` on the library side. Help strings carry zero
23
+ * references to any specific backend.
24
+ */
25
+ export function buildProgram() {
26
+ const program = new Command();
27
+ program.name("claudemux").description("Drive long-lived Claude Code sessions from Node.");
28
+ // Every verb locates a session: namespace prefix + an explicit socket override
29
+ // (the latter for dev / debugging — most users share the default socket).
30
+ const common = (cmd) => cmd
31
+ .option("-n, --namespace <name>", 'session namespace (default: "claudemux")')
32
+ .option("-s, --socket <name>", 'explicit socket name (default: $CLAUDEMUX_SOCKET or "claudemux")');
33
+ // Verbs that resolve an AGENT (spawn/resume/send/ask/…) also take --agent.
34
+ // Registry verbs (kill/list/exists) don't — they query the backend by name,
35
+ // so --agent there would be dead. Keeping it off them is the coherent shape.
36
+ const withAgent = (cmd) => common(cmd).option("-a, --agent <name>", 'agent (default: "claude"; only "claude" supported currently)');
37
+ withAgent(program.command("spawn <name>"))
38
+ .description("start a session and wait for the REPL to be ready")
39
+ .requiredOption("--cwd <path>", "working directory for the session")
40
+ .option("--boot-timeout-ms <ms>", "boot timeout (default 60000)", parseIntOpt)
41
+ .option("--trust-workspace", "grant the agent read/edit/execute on --cwd (writes a persistent per-folder trust flag); without it, an untrusted folder fails closed")
42
+ .action(async (name, opts) => {
43
+ await spawnCli(name, opts);
44
+ });
45
+ withAgent(program.command("resume <name> <agentSessionId>"))
46
+ .description("continue an existing conversation in a fresh pane")
47
+ .requiredOption("--cwd <path>", "working directory for the session")
48
+ .option("--boot-timeout-ms <ms>", "boot timeout (default 60000)", parseIntOpt)
49
+ .option("--trust-workspace", "grant the agent read/edit/execute on --cwd (see spawn)")
50
+ .action(async (name, agentSessionId, opts) => {
51
+ await resumeCli(name, agentSessionId, opts);
52
+ });
53
+ withAgent(program.command("send <name> <text>"))
54
+ .description("deliver text as one logical user turn (use '-' to read from stdin)")
55
+ .action(async (name, text, opts) => {
56
+ await sendCli(name, text, opts);
57
+ });
58
+ withAgent(program.command("ask <name> <text>"))
59
+ .description("one Q&A round-trip: send, wait for the turn, print outcome + messages")
60
+ .option("--timeout-ms <ms>", "wall-clock cap in ms (CLI default 300000)", parseIntOpt)
61
+ .option("--idle-ms <ms>", "give up after this long with no progress", parseIntOpt)
62
+ .action(async (name, text, opts) => {
63
+ await askCli(name, text, opts);
64
+ });
65
+ withAgent(program.command("messages <name> <cursor>"))
66
+ .description("print the messages produced since <cursor> (from send/ask) as JSON")
67
+ .action(async (name, cursor, opts) => {
68
+ await messagesCli(name, cursor, opts);
69
+ });
70
+ withAgent(program.command("turn-complete <name> <cursor>"))
71
+ .description("print true/false (exit 0/1): did the turn at <cursor> produce a reply?")
72
+ .action(async (name, cursor, opts) => {
73
+ await turnCompleteCli(name, cursor, opts);
74
+ });
75
+ withAgent(program.command("interrupt <name>"))
76
+ .description("fire ESC at the session to stop a working agent (harmless when idle)")
77
+ .action(async (name, opts) => {
78
+ await interruptCli(name, opts);
79
+ });
80
+ withAgent(program.command("respond <name> <choice>"))
81
+ .description("answer a permission prompt: choice = approve | approve-for-session | deny")
82
+ .action(async (name, choice, opts) => {
83
+ await respondCli(name, choice, opts);
84
+ });
85
+ withAgent(program.command("wait <name>"))
86
+ .description("block until the turn reaches a terminal outcome; print it as JSON")
87
+ .option("--timeout-ms <ms>", "wall-clock cap in ms (CLI default 300000)", parseIntOpt)
88
+ .option("--idle-ms <ms>", "give up after this long with no progress", parseIntOpt)
89
+ .action(async (name, opts) => {
90
+ await waitCli(name, opts);
91
+ });
92
+ withAgent(program.command("state <name>"))
93
+ .description("print the current fused session state")
94
+ .action(async (name, opts) => {
95
+ await stateCli(name, opts);
96
+ });
97
+ withAgent(program.command("capture <name>"))
98
+ .description("print the pane text")
99
+ .option("--ansi", "preserve escape sequences")
100
+ .option("--lines <n>", "print only the bottom-N lines", parseIntOpt)
101
+ .action(async (name, opts) => {
102
+ await captureCli(name, opts);
103
+ });
104
+ common(program.command("kill <name>"))
105
+ .description("kill the named session (idempotent — kill of a missing session is success)")
106
+ .action(async (name, opts) => {
107
+ await killCli(name, opts);
108
+ });
109
+ common(program.command("list [namespace]"))
110
+ .description("print short session names in the namespace, one per line")
111
+ .action(async (positionalNs, opts) => {
112
+ await listCli(positionalNs, opts);
113
+ });
114
+ common(program.command("exists <name>"))
115
+ .description('print "true"/"false"; exit 0 if alive, 1 if not')
116
+ .action(async (name, opts) => {
117
+ await existsCli(name, opts);
118
+ });
119
+ return program;
120
+ }
121
+ function parseIntOpt(raw) {
122
+ const n = Number.parseInt(raw, 10);
123
+ if (!Number.isFinite(n))
124
+ throw new Error(`invalid integer: ${raw}`);
125
+ return n;
126
+ }
127
+ /** Entry point — handles typed-error exit codes uniformly. */
128
+ export async function runCli(argv) {
129
+ const program = buildProgram();
130
+ try {
131
+ await program.parseAsync(argv);
132
+ return 0;
133
+ }
134
+ catch (err) {
135
+ if (err instanceof ClaudemuxError) {
136
+ process.stderr.write(`${err.message}\n`);
137
+ return 1;
138
+ }
139
+ process.stderr.write(`claudemux: ${err.message}\n`);
140
+ return 1;
141
+ }
142
+ }
143
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type CommonOpts } from "./context.js";
2
+ /**
3
+ * `claudemux messages <name> <cursor>` — read the messages produced since the
4
+ * given cursor (the one `send`/`ask` emitted). Prints them as a JSON array.
5
+ * The CLI read face for the library's `messagesSince(cursor)` — without it,
6
+ * `send` would emit a cursor the CLI could never consume.
7
+ */
8
+ export declare function messagesCli(name: string, cursor: string, opts?: CommonOpts): Promise<void>;
9
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/cli/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,cAAc,CAAC;AAE1D;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,13 @@
1
+ import { handleFor } from "./context.js";
2
+ /**
3
+ * `claudemux messages <name> <cursor>` — read the messages produced since the
4
+ * given cursor (the one `send`/`ask` emitted). Prints them as a JSON array.
5
+ * The CLI read face for the library's `messagesSince(cursor)` — without it,
6
+ * `send` would emit a cursor the CLI could never consume.
7
+ */
8
+ export async function messagesCli(name, cursor, opts = {}) {
9
+ const handle = await handleFor({ ...opts, name });
10
+ const messages = await handle.messagesSince(cursor);
11
+ process.stdout.write(`${JSON.stringify(messages)}\n`);
12
+ }
13
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/cli/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,MAAc,EACd,OAAmB,EAAE;IAErB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type CommonOpts } from "./context.js";
2
+ /**
3
+ * `claudemux respond <name> <choice>` — answer the permission prompt the
4
+ * session is awaiting. Mirrors the `respond()` library verb 1:1. `<choice>` is
5
+ * one of `approve` / `approve-for-session` / `deny` (NOT a digit — the menu
6
+ * order is the agent's, not the caller's). Gate on `state <name>` reading
7
+ * `permission-prompt` first, in the same quick sequence.
8
+ */
9
+ export declare function respondCli(name: string, choice: string, opts?: CommonOpts): Promise<void>;
10
+ //# sourceMappingURL=respond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../src/cli/respond.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,cAAc,CAAC;AAS1D;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -0,0 +1,23 @@
1
+ import { handleFor } from "./context.js";
2
+ /** The CLI choice tokens, mapped 1:1 to the neutral {@link PromptChoice}. */
3
+ const CHOICES = {
4
+ approve: "approve",
5
+ "approve-for-session": "approve-for-session",
6
+ deny: "deny",
7
+ };
8
+ /**
9
+ * `claudemux respond <name> <choice>` — answer the permission prompt the
10
+ * session is awaiting. Mirrors the `respond()` library verb 1:1. `<choice>` is
11
+ * one of `approve` / `approve-for-session` / `deny` (NOT a digit — the menu
12
+ * order is the agent's, not the caller's). Gate on `state <name>` reading
13
+ * `permission-prompt` first, in the same quick sequence.
14
+ */
15
+ export async function respondCli(name, choice, opts = {}) {
16
+ const parsed = CHOICES[choice];
17
+ if (parsed === undefined) {
18
+ throw new Error(`unknown choice ${JSON.stringify(choice)}; expected one of: ${Object.keys(CHOICES).join(", ")}`);
19
+ }
20
+ const handle = await handleFor({ ...opts, name });
21
+ await handle.respond(parsed);
22
+ }
23
+ //# sourceMappingURL=respond.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respond.js","sourceRoot":"","sources":["../../src/cli/respond.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,6EAA6E;AAC7E,MAAM,OAAO,GAAiC;IAC5C,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,qBAAqB;IAC5C,IAAI,EAAE,MAAM;CACb,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,MAAc,EACd,OAAmB,EAAE;IAErB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type CommonOpts } from "./context.js";
2
+ export interface ResumeCliOpts extends CommonOpts {
3
+ cwd: string;
4
+ bootTimeoutMs?: number;
5
+ trustWorkspace?: boolean;
6
+ }
7
+ /**
8
+ * `claudemux resume <name> <agentSessionId> --cwd <path>` — continue an existing
9
+ * conversation in a fresh pane. A thin face over the library {@link resume}.
10
+ */
11
+ export declare function resumeCli(name: string, agentSessionId: string, opts: ResumeCliOpts): Promise<void>;
12
+ //# sourceMappingURL=resume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/cli/resume.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,cAAc,CAAC;AAExF,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,21 @@
1
+ import { resume } from "../session/resume.js";
2
+ import { backend, resolveAgent, resolveNamespace } from "./context.js";
3
+ /**
4
+ * `claudemux resume <name> <agentSessionId> --cwd <path>` — continue an existing
5
+ * conversation in a fresh pane. A thin face over the library {@link resume}.
6
+ */
7
+ export async function resumeCli(name, agentSessionId, opts) {
8
+ const session = await resume({
9
+ name,
10
+ agentSessionId,
11
+ cwd: opts.cwd,
12
+ backend: backend(opts),
13
+ agent: resolveAgent(opts.agent),
14
+ namespace: resolveNamespace(opts.namespace),
15
+ ...(opts.bootTimeoutMs === undefined ? {} : { bootTimeoutMs: opts.bootTimeoutMs }),
16
+ ...(opts.trustWorkspace === undefined ? {} : { trustWorkspace: opts.trustWorkspace }),
17
+ });
18
+ // Same shape as spawn — the resumed conversation id, for the next hop.
19
+ process.stdout.write(`${JSON.stringify({ agentSessionId: session.agentSessionId ?? null })}\n`);
20
+ }
21
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/cli/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAmB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQxF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,cAAsB,EACtB,IAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;QAC3B,IAAI;QACJ,cAAc;QACd,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;QACtB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;KACtF,CAAC,CAAC;IACH,uEAAuE;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAClG,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type CommonOpts } from "./context.js";
2
+ /**
3
+ * `claudemux send <name> <text>` — deliver text as one logical user turn.
4
+ *
5
+ * If `text` is `"-"`, the body is read from stdin (useful for piping in
6
+ * larger payloads or templated content).
7
+ */
8
+ export declare function sendCli(name: string, text: string, opts?: CommonOpts): Promise<void>;
9
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/cli/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,cAAc,CAAC;AAErE;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9F"}
@@ -0,0 +1,16 @@
1
+ import { handleFor, readStdin } from "./context.js";
2
+ /**
3
+ * `claudemux send <name> <text>` — deliver text as one logical user turn.
4
+ *
5
+ * If `text` is `"-"`, the body is read from stdin (useful for piping in
6
+ * larger payloads or templated content).
7
+ */
8
+ export async function sendCli(name, text, opts = {}) {
9
+ const body = text === "-" ? await readStdin() : text;
10
+ const handle = await handleFor({ ...opts, name });
11
+ const cursor = await handle.send(body);
12
+ // Emit the cursor so `claudemux messages <name> <cursor>` can read this turn's
13
+ // output (CLI mirrors the library's send → cursor contract).
14
+ process.stdout.write(`${JSON.stringify({ cursor })}\n`);
15
+ }
16
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/cli/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,OAAmB,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,+EAA+E;IAC/E,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type CommonOpts } from "./context.js";
2
+ export interface SpawnCliOpts extends CommonOpts {
3
+ cwd: string;
4
+ bootTimeoutMs?: number;
5
+ extraArgs?: string[];
6
+ trustWorkspace?: boolean;
7
+ }
8
+ /**
9
+ * `claudemux spawn <name> --cwd <path>` — start a session and wait for ready.
10
+ * Emits `{ "agentSessionId": "<id>" }` so a CLI user can persist the id and
11
+ * later `claudemux resume <name2> <id>` (mirrors `send` emitting its cursor).
12
+ */
13
+ export declare function spawnCli(name: string, opts: SpawnCliOpts): Promise<void>;
14
+ //# sourceMappingURL=spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/cli/spawn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,cAAc,CAAC;AAExF,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9E"}
@@ -0,0 +1,21 @@
1
+ import { create } from "../session/create.js";
2
+ import { backend, resolveAgent, resolveNamespace } from "./context.js";
3
+ /**
4
+ * `claudemux spawn <name> --cwd <path>` — start a session and wait for ready.
5
+ * Emits `{ "agentSessionId": "<id>" }` so a CLI user can persist the id and
6
+ * later `claudemux resume <name2> <id>` (mirrors `send` emitting its cursor).
7
+ */
8
+ export async function spawnCli(name, opts) {
9
+ const session = await create({
10
+ name,
11
+ cwd: opts.cwd,
12
+ backend: backend(opts),
13
+ agent: resolveAgent(opts.agent),
14
+ namespace: resolveNamespace(opts.namespace),
15
+ ...(opts.bootTimeoutMs === undefined ? {} : { bootTimeoutMs: opts.bootTimeoutMs }),
16
+ ...(opts.extraArgs === undefined ? {} : { extraArgs: opts.extraArgs }),
17
+ ...(opts.trustWorkspace === undefined ? {} : { trustWorkspace: opts.trustWorkspace }),
18
+ });
19
+ process.stdout.write(`${JSON.stringify({ agentSessionId: session.agentSessionId ?? null })}\n`);
20
+ }
21
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/cli/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAmB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AASxF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAkB;IAC7D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;QAC3B,IAAI;QACJ,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;QACtB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;KACtF,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAClG,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type CommonOpts } from "./context.js";
2
+ /**
3
+ * `claudemux state <name>` — print the current pane state
4
+ * (`working` / `idle` / `permission-prompt` / `dialog` / `unknown`).
5
+ */
6
+ export declare function stateCli(name: string, opts?: CommonOpts): Promise<void>;
7
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,cAAc,CAAC;AAE1D;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjF"}