opencode-mux 1.2.0 → 1.3.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/README.md +56 -10
- package/dist/args.d.ts +2 -0
- package/dist/args.js +11 -1
- package/dist/args.js.map +1 -1
- package/dist/cli.d.ts +52 -1
- package/dist/cli.js +227 -25
- package/dist/cli.js.map +1 -1
- package/dist/session.d.ts +9 -0
- package/dist/session.js +7 -0
- package/dist/session.js.map +1 -1
- package/dist/tmux.d.ts +34 -1
- package/dist/tmux.js +86 -14
- package/dist/tmux.js.map +1 -1
- package/dist/tracker.d.ts +13 -1
- package/dist/tracker.js +20 -5
- package/dist/tracker.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/watch.d.ts +15 -0
- package/dist/watch.js +250 -13
- package/dist/watch.js.map +1 -1
- package/package.json +11 -6
package/dist/watch.js
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
import { resolve, sep } from "node:path";
|
|
1
3
|
import { childTitle, classifyEvent } from "./session.js";
|
|
2
4
|
import { childSessions, events } from "./server.js";
|
|
3
5
|
import { currentPane } from "./tmux.js";
|
|
6
|
+
/** Resolves symlinks when possible so cwd and daemon-reported paths compare. */
|
|
7
|
+
function normalizeDirectory(path) {
|
|
8
|
+
let out;
|
|
9
|
+
try {
|
|
10
|
+
out = realpathSync(path);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
out = resolve(path);
|
|
14
|
+
}
|
|
15
|
+
return out.length > 1 && out.endsWith(sep) ? out.slice(0, -1) : out;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* True when both paths name the same project: equal, or one contains the other.
|
|
19
|
+
* Containment covers opencode reporting the project root while the wrapper runs
|
|
20
|
+
* in a subdirectory (and vice versa); component-aware so "/a/proj" and
|
|
21
|
+
* "/a/proj-2" stay distinct.
|
|
22
|
+
*/
|
|
23
|
+
export function isSameProject(left, right) {
|
|
24
|
+
const a = normalizeDirectory(left);
|
|
25
|
+
const b = normalizeDirectory(right);
|
|
26
|
+
return a === b || a.startsWith(`${b}${sep}`) || b.startsWith(`${a}${sep}`);
|
|
27
|
+
}
|
|
4
28
|
/**
|
|
5
29
|
* Upstream workaround for opencode issue #50135: `opencode mini` keeps a
|
|
6
30
|
* long-lived `session.wait` request open, but its client uses Bun's default
|
|
@@ -24,6 +48,29 @@ export function defaultPaneArgv(sessionID, paneCommand = "mini") {
|
|
|
24
48
|
const head = paneCommand === "mini" ? ["env", MINI_IDLE_TIMEOUT_ENV, "opencode", "mini"] : ["opencode"];
|
|
25
49
|
return [...head, "-s", sessionID];
|
|
26
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Delay before the watcher subscribes again after the event stream ended or
|
|
53
|
+
* failed. Fixed on purpose: a stream that fails instantly means the daemon is
|
|
54
|
+
* gone, so a hot loop is what must be avoided — not a slow retry. The daemon
|
|
55
|
+
* is reachable again within a second of a restart, so exponential backoff
|
|
56
|
+
* would only delay the recovery that matters.
|
|
57
|
+
*/
|
|
58
|
+
const RECONNECT_DELAY_MS = 1000;
|
|
59
|
+
/** Resolves after `ms`, or right away when `signal` aborts (listener removed). */
|
|
60
|
+
function sleep(ms, signal) {
|
|
61
|
+
if (signal.aborted)
|
|
62
|
+
return Promise.resolve();
|
|
63
|
+
return new Promise((resolve) => {
|
|
64
|
+
const finish = () => {
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
signal.removeEventListener("abort", finish);
|
|
67
|
+
resolve();
|
|
68
|
+
};
|
|
69
|
+
const timer = setTimeout(finish, ms);
|
|
70
|
+
timer.unref();
|
|
71
|
+
signal.addEventListener("abort", finish, { once: true });
|
|
72
|
+
});
|
|
73
|
+
}
|
|
27
74
|
/** Wires server events → tracker state machine → tmux actions. */
|
|
28
75
|
export function createWatcher(deps) {
|
|
29
76
|
const targetPane = deps.targetPane ?? currentPane(process.env);
|
|
@@ -33,6 +80,55 @@ export function createWatcher(deps) {
|
|
|
33
80
|
const paneArgv = deps.paneArgv ?? defaultPaneArgv;
|
|
34
81
|
const now = deps.now ?? Date.now;
|
|
35
82
|
const log = deps.log;
|
|
83
|
+
/**
|
|
84
|
+
* parent session id → does it belong to this instance's project? Cached per
|
|
85
|
+
* parent (a session's directory rarely changes; `session.moved` invalidates
|
|
86
|
+
* the entry). Lookups that fail are not cached, so a transient error does not
|
|
87
|
+
* permanently hide a parent. Capped so a long-lived watcher cannot grow it
|
|
88
|
+
* without bound.
|
|
89
|
+
*/
|
|
90
|
+
const ownedParents = new Map();
|
|
91
|
+
const MAX_OWNED_PARENTS = 256;
|
|
92
|
+
/**
|
|
93
|
+
* Whether a subagent's parent session belongs to this instance. Always true
|
|
94
|
+
* with an explicit parent (the id match already pins it) or without a scope.
|
|
95
|
+
*/
|
|
96
|
+
const ownsParent = async (parentID) => {
|
|
97
|
+
if (deps.parentID !== null || deps.projectDirectories === undefined)
|
|
98
|
+
return true;
|
|
99
|
+
const cached = ownedParents.get(parentID);
|
|
100
|
+
if (cached !== undefined)
|
|
101
|
+
return cached;
|
|
102
|
+
try {
|
|
103
|
+
const info = await deps.client.session.get({ sessionID: parentID });
|
|
104
|
+
const owned = deps.projectDirectories.some((dir) => isSameProject(info.location.directory, dir));
|
|
105
|
+
// Evict the oldest entry (Map insertion order) before inserting.
|
|
106
|
+
while (ownedParents.size >= MAX_OWNED_PARENTS) {
|
|
107
|
+
const oldest = ownedParents.keys().next();
|
|
108
|
+
if (oldest.done === true)
|
|
109
|
+
break;
|
|
110
|
+
ownedParents.delete(oldest.value);
|
|
111
|
+
}
|
|
112
|
+
ownedParents.set(parentID, owned);
|
|
113
|
+
return owned;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
log(`scope lookup failed: ${parentID} — ${String(error)}`);
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Shared-window skips already logged, so a split storm in a window that
|
|
122
|
+
* another instance owns does not spam the log. A skip is not a failure: the
|
|
123
|
+
* pane exists, only the window geometry was left to the first instance.
|
|
124
|
+
*/
|
|
125
|
+
const loggedSkips = new Set();
|
|
126
|
+
const logLayoutSkip = (reason) => {
|
|
127
|
+
if (loggedSkips.has(reason))
|
|
128
|
+
return;
|
|
129
|
+
loggedSkips.add(reason);
|
|
130
|
+
log(`layout skipped: ${reason}`);
|
|
131
|
+
};
|
|
36
132
|
const openPane = async (sessionID, title) => {
|
|
37
133
|
const argv = paneArgv(sessionID);
|
|
38
134
|
const result = await deps.tmux.splitPane({ targetPane, layout: deps.layout, mainPaneSize: deps.mainPaneSize, argv });
|
|
@@ -40,6 +136,16 @@ export function createWatcher(deps) {
|
|
|
40
136
|
log(`action failed: split-window ${argv.join(" ")} — ${result.error ?? "unknown error"}`);
|
|
41
137
|
return null;
|
|
42
138
|
}
|
|
139
|
+
if (result.layoutError !== undefined) {
|
|
140
|
+
// The pane exists, only the window could not be shaped: appearance
|
|
141
|
+
// failures are non-fatal, so log and keep the pane.
|
|
142
|
+
log(`action failed: layout ${deps.layout} — ${result.layoutError}`);
|
|
143
|
+
}
|
|
144
|
+
const skipped = result.layoutSkipped;
|
|
145
|
+
// A shared window (another opencode-mux instance owns panes here) skips the
|
|
146
|
+
// window-wide layout deliberately — worth a line, not a failure.
|
|
147
|
+
if (skipped !== undefined)
|
|
148
|
+
logLayoutSkip(skipped);
|
|
43
149
|
log(`opened pane ${result.paneId} for session ${sessionID} (${title})`);
|
|
44
150
|
return result.paneId;
|
|
45
151
|
};
|
|
@@ -53,13 +159,64 @@ export function createWatcher(deps) {
|
|
|
53
159
|
return;
|
|
54
160
|
}
|
|
55
161
|
deps.tracker.open(sessionID, paneId, now());
|
|
162
|
+
// Opening a pane is a lifecycle moment: a border clear that tmux skipped
|
|
163
|
+
// earlier (shared window) gets another chance instead of waiting for the
|
|
164
|
+
// next theme change.
|
|
165
|
+
await retryPendingClear();
|
|
56
166
|
};
|
|
57
167
|
const applyAction = async (action) => {
|
|
58
168
|
if (action.kind !== "close")
|
|
59
169
|
return;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
170
|
+
// A delayed or duplicated terminal event (e.g. the previous turn's
|
|
171
|
+
// session.execution.succeeded landing after the next execution.started)
|
|
172
|
+
// can arm a close while the session is mid-turn again. Never kill a pane
|
|
173
|
+
// whose session is actually running: cancel the close and keep the pane.
|
|
174
|
+
let active = false;
|
|
175
|
+
try {
|
|
176
|
+
const running = await deps.client.session.active();
|
|
177
|
+
active = action.sessionID in running;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
// Fail open: an unreachable lookup must never leak a pane forever.
|
|
181
|
+
log(`close check failed: ${String(error)}`);
|
|
182
|
+
}
|
|
183
|
+
if (active) {
|
|
184
|
+
deps.tracker.markBusy(action.sessionID);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
// The lookup above is asynchronous and the tick interval is not serialized
|
|
188
|
+
// with the dispatch loop, so a real busy event can land while it is in
|
|
189
|
+
// flight: markBusy then turned the state back to open and this close is
|
|
190
|
+
// stale. Kill only a state that is still closing, with this exact pane.
|
|
191
|
+
const state = deps.tracker.snapshot().get(action.sessionID);
|
|
192
|
+
if (state === undefined || state.phase !== "closing" || !state.emitted || state.paneId !== action.paneId)
|
|
193
|
+
return;
|
|
194
|
+
try {
|
|
195
|
+
const result = await deps.tmux.killPane(action.paneId);
|
|
196
|
+
if (!result.ok) {
|
|
197
|
+
log(`action failed: kill-pane ${action.paneId} — ${result.error ?? "unknown error"}`);
|
|
198
|
+
}
|
|
199
|
+
// tmux hands the freed cells to a single neighbouring pane, so the remaining
|
|
200
|
+
// subagent panes end up with uneven sizes (one grows, the others keep their
|
|
201
|
+
// old size). Re-applying the configured layout re-tiles them equally, and
|
|
202
|
+
// restores the configured main pane size for main-* layouts. Runs even when
|
|
203
|
+
// the kill failed: the pane may have exited on its own, and the uneven
|
|
204
|
+
// window still needs re-tiling. Appearance failures are non-fatal.
|
|
205
|
+
const relayout = await deps.tmux.relayout({ targetPane, layout: deps.layout, mainPaneSize: deps.mainPaneSize });
|
|
206
|
+
if (!relayout.ok) {
|
|
207
|
+
log(`action failed: relayout ${deps.layout} — ${relayout.error ?? "unknown error"}`);
|
|
208
|
+
}
|
|
209
|
+
// A shared window skips the relayout deliberately: log it once, not as a failure.
|
|
210
|
+
if (relayout.skipped !== undefined)
|
|
211
|
+
logLayoutSkip(relayout.skipped);
|
|
212
|
+
await retryPendingClear();
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
// The close is done either way: drop the emitted state so the session can
|
|
216
|
+
// be re-opened (and reopened panes get a fresh close cycle). In a finally
|
|
217
|
+
// so an adapter that throws on kill-pane/relayout cannot leave a stale
|
|
218
|
+
// entry behind that blocks the session's next close cycle.
|
|
219
|
+
deps.tracker.forget(action.sessionID);
|
|
63
220
|
}
|
|
64
221
|
};
|
|
65
222
|
const applyTick = async (nowMs) => {
|
|
@@ -80,6 +237,8 @@ export function createWatcher(deps) {
|
|
|
80
237
|
return;
|
|
81
238
|
if (deps.parentID !== null && info.parentID !== deps.parentID)
|
|
82
239
|
return;
|
|
240
|
+
if (info.parentID === undefined || !(await ownsParent(info.parentID)))
|
|
241
|
+
return;
|
|
83
242
|
await openTracked(info.id, childTitle(info.title, info.id));
|
|
84
243
|
}
|
|
85
244
|
catch {
|
|
@@ -88,6 +247,44 @@ export function createWatcher(deps) {
|
|
|
88
247
|
};
|
|
89
248
|
/** JSON of the styles last applied to the window (null when none/cleared). */
|
|
90
249
|
let appliedThemeSig = null;
|
|
250
|
+
/**
|
|
251
|
+
* A border clear that tmux skipped because another opencode-mux instance
|
|
252
|
+
* shares the window. Recorded instead of retried per tick (the "zero tmux
|
|
253
|
+
* calls when nothing changed" invariant), retried from the pane lifecycle
|
|
254
|
+
* paths — otherwise the old colours would persist forever.
|
|
255
|
+
*/
|
|
256
|
+
let pendingClear = false;
|
|
257
|
+
/**
|
|
258
|
+
* Retries a skipped border clear. Called from the pane lifecycle paths only
|
|
259
|
+
* (after a split, after a close): a shared window can end at any moment, but
|
|
260
|
+
* polling it every tick would mean tmux calls on every tick even when nothing
|
|
261
|
+
* changed. Re-resolves the theme, so a retry never clears borders the current
|
|
262
|
+
* theme wants.
|
|
263
|
+
*/
|
|
264
|
+
const retryPendingClear = async () => {
|
|
265
|
+
if (!pendingClear || deps.themeStyles === undefined)
|
|
266
|
+
return;
|
|
267
|
+
let styles;
|
|
268
|
+
try {
|
|
269
|
+
styles = deps.themeStyles.current();
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
log(`styling failed: ${String(error)}`);
|
|
273
|
+
return; // keep pending: try again on the next lifecycle event
|
|
274
|
+
}
|
|
275
|
+
if (styles !== null) {
|
|
276
|
+
// The theme came back: drop the pending clear and let syncTheme apply it
|
|
277
|
+
// on the next tick instead of stripping the colours the user just chose.
|
|
278
|
+
pendingClear = false;
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const result = await deps.tmux.clearBorderStyles(targetPane);
|
|
282
|
+
if (!result.ok) {
|
|
283
|
+
log(`styling failed: clear — ${result.error ?? "unknown error"}`);
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
pendingClear = result.skipped !== undefined;
|
|
287
|
+
};
|
|
91
288
|
/**
|
|
92
289
|
* Applies the resolved theme's border styles, or clears them when the theme
|
|
93
290
|
* became null. No tmux calls when the provider is absent or unchanged;
|
|
@@ -114,6 +311,10 @@ export function createWatcher(deps) {
|
|
|
114
311
|
const result = await deps.tmux.clearBorderStyles(targetPane);
|
|
115
312
|
if (!result.ok)
|
|
116
313
|
log(`styling failed: clear — ${result.error ?? "unknown error"}`);
|
|
314
|
+
// A skipped clear did not happen (shared window): remember it for the
|
|
315
|
+
// lifecycle paths instead of memoizing it as applied.
|
|
316
|
+
else
|
|
317
|
+
pendingClear = result.skipped !== undefined;
|
|
117
318
|
return;
|
|
118
319
|
}
|
|
119
320
|
const result = await deps.tmux.applyBorderStyles(targetPane, styles);
|
|
@@ -132,6 +333,8 @@ export function createWatcher(deps) {
|
|
|
132
333
|
// when they completed).
|
|
133
334
|
if (!(info.id in active))
|
|
134
335
|
continue;
|
|
336
|
+
if (info.parentID === undefined || !(await ownsParent(info.parentID)))
|
|
337
|
+
continue;
|
|
135
338
|
await openTracked(info.id, childTitle(info.title, info.id));
|
|
136
339
|
}
|
|
137
340
|
await applyTick(now());
|
|
@@ -142,11 +345,27 @@ export function createWatcher(deps) {
|
|
|
142
345
|
},
|
|
143
346
|
async dispatch(event) {
|
|
144
347
|
const cls = classifyEvent(event);
|
|
348
|
+
if (cls.kind === "connected") {
|
|
349
|
+
// The event stream can reconnect (daemon restart); sessions created
|
|
350
|
+
// during the disconnect are invisible unless we adopt again.
|
|
351
|
+
log("server connected: re-adopting");
|
|
352
|
+
await watcher.adopt();
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
if (cls.kind === "moved") {
|
|
356
|
+
ownedParents.delete(cls.sessionID);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
145
359
|
if (cls.kind === "created") {
|
|
146
360
|
if (cls.parentID === undefined)
|
|
147
361
|
return;
|
|
148
|
-
if (deps.parentID !== null
|
|
362
|
+
if (deps.parentID !== null) {
|
|
363
|
+
if (cls.parentID !== deps.parentID)
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
else if (!(await ownsParent(cls.parentID))) {
|
|
149
367
|
return;
|
|
368
|
+
}
|
|
150
369
|
await openTracked(cls.sessionID, childTitle(cls.title, cls.slug));
|
|
151
370
|
return;
|
|
152
371
|
}
|
|
@@ -184,21 +403,39 @@ export function createWatcher(deps) {
|
|
|
184
403
|
appliedThemeSig = "error";
|
|
185
404
|
}
|
|
186
405
|
}
|
|
406
|
+
// One tick interval for the whole watcher lifetime: it must stay alive
|
|
407
|
+
// across reconnects and is cleared only when the loop below is done.
|
|
187
408
|
const timer = setInterval(() => void watcher.tick(now()), deps.tickEveryMs);
|
|
188
409
|
timer.unref();
|
|
189
|
-
signal.addEventListener("abort", () => clearInterval(timer), { once: true });
|
|
190
410
|
try {
|
|
411
|
+
// Startup adopt guarantees panes for already-running children even if
|
|
412
|
+
// the first subscribe fails, and is idempotent (the tracker reserve
|
|
413
|
+
// guard blocks duplicates when the connect event adopts again).
|
|
191
414
|
await watcher.adopt();
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
415
|
+
// Both SDK generations wrap subscribe in SharedEvents.make, which
|
|
416
|
+
// finishes its subscribers when the stream ends or errors — it does not
|
|
417
|
+
// reconnect. Without this loop the watcher would exit on the first
|
|
418
|
+
// daemon restart and stay blind for the rest of the TUI's life.
|
|
419
|
+
while (!signal.aborted) {
|
|
420
|
+
let failure = "event stream ended";
|
|
421
|
+
try {
|
|
422
|
+
const stream = await events(deps.client, signal);
|
|
423
|
+
for await (const event of stream) {
|
|
424
|
+
await watcher.dispatch(event);
|
|
425
|
+
await watcher.tick(now());
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
failure = String(error);
|
|
430
|
+
}
|
|
431
|
+
if (signal.aborted)
|
|
432
|
+
break;
|
|
433
|
+
log(`watcher error: ${failure}`);
|
|
434
|
+
// Exactly one subscription is active at a time: the previous one has
|
|
435
|
+
// finished before the delay, and the next one starts after it.
|
|
436
|
+
await sleep(RECONNECT_DELAY_MS, signal);
|
|
196
437
|
}
|
|
197
438
|
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
if (!signal.aborted)
|
|
200
|
-
log(`watcher error: ${String(error)}`);
|
|
201
|
-
}
|
|
202
439
|
finally {
|
|
203
440
|
clearInterval(timer);
|
|
204
441
|
}
|
package/dist/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-mux",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Drop-in opencode wrapper that opens tmux panes for subagent sessions automatically",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,14 +20,19 @@
|
|
|
20
20
|
"prepublishOnly": "npm run check && npm test && npm run build"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@opencode/client": "^2.
|
|
23
|
+
"@opencode/client": "^2.1.3",
|
|
24
24
|
"@opencode/client-legacy": "npm:@opencode/client@2.0.5"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@types/node": "^22.
|
|
28
|
-
"tsx": "^4.
|
|
29
|
-
"typescript": "^5.
|
|
30
|
-
"vitest": "^4.1.
|
|
27
|
+
"@types/node": "^22.20.5",
|
|
28
|
+
"tsx": "^4.23.15",
|
|
29
|
+
"typescript": "^5.9.3",
|
|
30
|
+
"vitest": "^4.1.12"
|
|
31
|
+
},
|
|
32
|
+
"overrides": {
|
|
33
|
+
"@opencode/client-legacy": {
|
|
34
|
+
"effect": "4.0.1"
|
|
35
|
+
}
|
|
31
36
|
},
|
|
32
37
|
"license": "MIT",
|
|
33
38
|
"repository": {
|