@agentuity/opencode 0.1.41 → 0.1.43
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 +3 -10
- package/dist/agents/lead.d.ts +1 -1
- package/dist/agents/lead.d.ts.map +1 -1
- package/dist/agents/lead.js +2 -3
- package/dist/agents/lead.js.map +1 -1
- package/dist/background/manager.d.ts +1 -0
- package/dist/background/manager.d.ts.map +1 -1
- package/dist/background/manager.js +6 -0
- package/dist/background/manager.js.map +1 -1
- package/dist/plugin/hooks/cadence.d.ts.map +1 -1
- package/dist/plugin/hooks/cadence.js +3 -1
- package/dist/plugin/hooks/cadence.js.map +1 -1
- package/dist/plugin/plugin.d.ts.map +1 -1
- package/dist/plugin/plugin.js +54 -11
- package/dist/plugin/plugin.js.map +1 -1
- package/dist/skills/frontmatter.js +1 -1
- package/dist/skills/frontmatter.js.map +1 -1
- package/dist/tmux/executor.d.ts +57 -6
- package/dist/tmux/executor.d.ts.map +1 -1
- package/dist/tmux/executor.js +676 -57
- package/dist/tmux/executor.js.map +1 -1
- package/dist/tmux/index.d.ts +1 -1
- package/dist/tmux/index.d.ts.map +1 -1
- package/dist/tmux/index.js +1 -1
- package/dist/tmux/index.js.map +1 -1
- package/dist/tmux/manager.d.ts +70 -0
- package/dist/tmux/manager.d.ts.map +1 -1
- package/dist/tmux/manager.js +357 -22
- package/dist/tmux/manager.js.map +1 -1
- package/dist/tmux/state-query.d.ts.map +1 -1
- package/dist/tmux/state-query.js +4 -1
- package/dist/tmux/state-query.js.map +1 -1
- package/dist/tmux/types.d.ts +11 -0
- package/dist/tmux/types.d.ts.map +1 -1
- package/dist/tmux/types.js.map +1 -1
- package/dist/tmux/utils.d.ts +17 -0
- package/dist/tmux/utils.d.ts.map +1 -1
- package/dist/tmux/utils.js +39 -0
- package/dist/tmux/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/agents/lead.ts +2 -3
- package/src/background/manager.ts +6 -0
- package/src/plugin/hooks/cadence.ts +2 -1
- package/src/plugin/plugin.ts +67 -11
- package/src/skills/frontmatter.ts +1 -1
- package/src/tmux/executor.ts +748 -55
- package/src/tmux/index.ts +6 -0
- package/src/tmux/manager.ts +410 -21
- package/src/tmux/state-query.ts +4 -1
- package/src/tmux/types.ts +12 -0
- package/src/tmux/utils.ts +39 -0
package/dist/tmux/manager.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { spawnSync } from 'bun';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
1
3
|
import { POLL_INTERVAL_MS, SESSION_MISSING_GRACE_MS, SESSION_TIMEOUT_MS } from './types';
|
|
2
|
-
import { getCurrentPaneId, getTmuxPath, isInsideTmux } from './utils';
|
|
4
|
+
import { canonicalizeServerUrl, getCurrentPaneId, getTmuxPath, getTmuxSessionId, isInsideTmux, } from './utils';
|
|
3
5
|
import { queryWindowState } from './state-query';
|
|
4
6
|
import { decideSpawnActions } from './decision-engine';
|
|
5
|
-
import { executeActions, closeAgentsWindow, closeAgentsWindowSync, closePaneById, } from './executor';
|
|
7
|
+
import { executeActions, closeAgentsWindow, closeAgentsWindowSync, closePaneById, killProcessByPid, getPanePid, getPanePidSync, cleanupOwnedResources, cleanupOwnedResourcesSync, findOwnedAgentPanes, } from './executor';
|
|
6
8
|
/**
|
|
7
9
|
* Check if the OpenCode server is running by hitting the health endpoint
|
|
8
10
|
*/
|
|
@@ -35,12 +37,32 @@ export class TmuxSessionManager {
|
|
|
35
37
|
pendingSessions = new Set();
|
|
36
38
|
pollInterval;
|
|
37
39
|
sourcePaneId;
|
|
40
|
+
tmuxSessionId;
|
|
41
|
+
instanceId = randomUUID().slice(0, 8);
|
|
42
|
+
ownerPid = process.pid;
|
|
43
|
+
serverKey;
|
|
44
|
+
statusMissingSince = new Map();
|
|
45
|
+
/**
|
|
46
|
+
* Operation queue to serialize tmux mutations.
|
|
47
|
+
* This prevents race conditions when multiple sessions are created rapidly.
|
|
48
|
+
*/
|
|
49
|
+
tmuxOpQueue = Promise.resolve();
|
|
38
50
|
constructor(ctx, config, callbacks) {
|
|
39
51
|
this.ctx = ctx;
|
|
40
52
|
this.config = config;
|
|
41
53
|
this.callbacks = callbacks;
|
|
42
54
|
this.sourcePaneId = getCurrentPaneId();
|
|
43
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Enqueue a tmux operation to ensure sequential execution.
|
|
58
|
+
* This prevents race conditions when multiple sessions are created/deleted rapidly.
|
|
59
|
+
*/
|
|
60
|
+
enqueue(fn) {
|
|
61
|
+
const result = this.tmuxOpQueue.then(fn, fn); // Run even if previous failed
|
|
62
|
+
// Update queue but don't propagate errors to next operation
|
|
63
|
+
this.tmuxOpQueue = result.then(() => { }, () => { });
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
44
66
|
/**
|
|
45
67
|
* Check if tmux integration is enabled and available
|
|
46
68
|
*/
|
|
@@ -50,12 +72,26 @@ export class TmuxSessionManager {
|
|
|
50
72
|
/**
|
|
51
73
|
* Handle a new background session being created
|
|
52
74
|
* This is called by BackgroundManager when a background task starts
|
|
75
|
+
*
|
|
76
|
+
* Operations are queued to prevent race conditions when multiple sessions
|
|
77
|
+
* are created rapidly.
|
|
53
78
|
*/
|
|
54
79
|
async onSessionCreated(event) {
|
|
55
|
-
|
|
80
|
+
return this.enqueue(() => this.doSessionCreated(event));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Internal implementation of session creation (runs within the queue)
|
|
84
|
+
*/
|
|
85
|
+
async doSessionCreated(event) {
|
|
86
|
+
this.log(`onSessionCreated called for ${event.sessionId} (${event.title})`);
|
|
87
|
+
if (!this.isEnabled()) {
|
|
88
|
+
this.log(`Skipping - tmux not enabled (config: ${this.config.enabled}, insideTmux: ${isInsideTmux()})`);
|
|
56
89
|
return;
|
|
57
|
-
|
|
90
|
+
}
|
|
91
|
+
if (this.pendingSessions.has(event.sessionId) || this.sessions.has(event.sessionId)) {
|
|
92
|
+
this.log(`Skipping - session ${event.sessionId} already pending or tracked`);
|
|
58
93
|
return;
|
|
94
|
+
}
|
|
59
95
|
this.pendingSessions.add(event.sessionId);
|
|
60
96
|
try {
|
|
61
97
|
const tmuxPath = await getTmuxPath();
|
|
@@ -70,6 +106,13 @@ export class TmuxSessionManager {
|
|
|
70
106
|
this.log('Unable to determine source pane id.');
|
|
71
107
|
return;
|
|
72
108
|
}
|
|
109
|
+
// Get the tmux session ID for this pane (cached after first lookup)
|
|
110
|
+
if (!this.tmuxSessionId) {
|
|
111
|
+
this.tmuxSessionId = await getTmuxSessionId(this.sourcePaneId);
|
|
112
|
+
if (this.tmuxSessionId) {
|
|
113
|
+
this.log(`Resolved tmux session ID: ${this.tmuxSessionId}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
73
116
|
const state = await queryWindowState(this.sourcePaneId);
|
|
74
117
|
if (!state) {
|
|
75
118
|
this.log('Failed to query tmux window state.');
|
|
@@ -97,16 +140,26 @@ export class TmuxSessionManager {
|
|
|
97
140
|
this.log(`Server not running at ${serverUrl}. Start opencode with --port flag to enable tmux integration.`);
|
|
98
141
|
return;
|
|
99
142
|
}
|
|
143
|
+
const serverKey = canonicalizeServerUrl(serverUrl);
|
|
144
|
+
this.serverKey = serverKey;
|
|
100
145
|
const result = await executeActions(decision.actions, {
|
|
101
146
|
config: this.config,
|
|
102
147
|
serverUrl,
|
|
103
148
|
windowState: state,
|
|
149
|
+
ownership: {
|
|
150
|
+
instanceId: this.instanceId,
|
|
151
|
+
ownerPid: this.ownerPid,
|
|
152
|
+
serverKey,
|
|
153
|
+
tmuxSessionId: this.tmuxSessionId,
|
|
154
|
+
},
|
|
104
155
|
});
|
|
105
156
|
if (!result.success) {
|
|
106
157
|
this.log('Failed to execute tmux actions.');
|
|
107
158
|
return;
|
|
108
159
|
}
|
|
109
|
-
this.applyActionResults(decision.actions, result.
|
|
160
|
+
this.applyActionResults(decision.actions, result.results);
|
|
161
|
+
await this.refreshMissingPids();
|
|
162
|
+
this.log(`Successfully spawned pane for ${event.sessionId}. Tracking ${this.sessions.size} sessions. PIDs: ${this.getTrackedPids().join(', ') || 'none'}`);
|
|
110
163
|
if (this.sessions.size > 0) {
|
|
111
164
|
this.startPolling();
|
|
112
165
|
}
|
|
@@ -115,27 +168,54 @@ export class TmuxSessionManager {
|
|
|
115
168
|
this.pendingSessions.delete(event.sessionId);
|
|
116
169
|
}
|
|
117
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Get all tracked PIDs for logging
|
|
173
|
+
*/
|
|
174
|
+
getTrackedPids() {
|
|
175
|
+
return Array.from(this.sessions.values())
|
|
176
|
+
.map((s) => s.pid)
|
|
177
|
+
.filter((pid) => pid !== undefined);
|
|
178
|
+
}
|
|
118
179
|
/**
|
|
119
180
|
* Handle a session being deleted
|
|
120
181
|
*
|
|
121
182
|
* Explicitly kills the pane when a background session completes.
|
|
122
183
|
* We can't rely on `opencode attach` exiting because it's an interactive
|
|
123
184
|
* terminal that keeps running even after the session goes idle.
|
|
185
|
+
*
|
|
186
|
+
* Operations are queued to prevent race conditions.
|
|
124
187
|
*/
|
|
125
188
|
async onSessionDeleted(event) {
|
|
126
|
-
|
|
189
|
+
return this.enqueue(() => this.doSessionDeleted(event));
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Internal implementation of session deletion (runs within the queue)
|
|
193
|
+
*/
|
|
194
|
+
async doSessionDeleted(event) {
|
|
195
|
+
this.log(`onSessionDeleted called for ${event.sessionId}`);
|
|
196
|
+
if (!this.isEnabled()) {
|
|
197
|
+
this.log(`Skipping delete - tmux not enabled`);
|
|
127
198
|
return;
|
|
199
|
+
}
|
|
128
200
|
// Find the session in our mappings
|
|
129
201
|
const session = this.sessions.get(event.sessionId);
|
|
130
|
-
if (!session)
|
|
202
|
+
if (!session) {
|
|
203
|
+
this.log(`Session ${event.sessionId} not found in tracked sessions`);
|
|
131
204
|
return;
|
|
205
|
+
}
|
|
206
|
+
this.log(`Closing pane ${session.paneId} (PID: ${session.pid}) for session ${event.sessionId}`);
|
|
132
207
|
// Kill the pane explicitly - opencode attach won't exit on its own
|
|
133
|
-
const result = await closePaneById(session.paneId);
|
|
208
|
+
const result = await closePaneById(session.paneId, session.pid);
|
|
134
209
|
if (!result.success) {
|
|
135
210
|
this.log(`Failed to close pane ${session.paneId}: ${result.error}`);
|
|
136
211
|
}
|
|
212
|
+
else {
|
|
213
|
+
this.log(`Successfully closed pane ${session.paneId}`);
|
|
214
|
+
}
|
|
137
215
|
// Update internal state
|
|
138
216
|
this.sessions.delete(event.sessionId);
|
|
217
|
+
this.statusMissingSince.delete(event.sessionId);
|
|
218
|
+
this.log(`Removed session from tracking. Now tracking ${this.sessions.size} sessions.`);
|
|
139
219
|
if (this.sessions.size === 0) {
|
|
140
220
|
this.stopPolling();
|
|
141
221
|
}
|
|
@@ -144,12 +224,37 @@ export class TmuxSessionManager {
|
|
|
144
224
|
* Clean up all panes on shutdown
|
|
145
225
|
*
|
|
146
226
|
* Kills the entire "Agents" window, which closes all agent panes at once.
|
|
227
|
+
* Falls back to pkill if PID-based cleanup fails.
|
|
147
228
|
*/
|
|
148
229
|
async cleanup() {
|
|
230
|
+
this.log('Starting cleanup...');
|
|
149
231
|
this.stopPolling();
|
|
150
|
-
|
|
151
|
-
|
|
232
|
+
for (const session of this.sessions.values()) {
|
|
233
|
+
let pid = session.pid;
|
|
234
|
+
if (!pid) {
|
|
235
|
+
pid = await getPanePid(session.paneId);
|
|
236
|
+
if (pid) {
|
|
237
|
+
session.pid = pid;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!pid)
|
|
241
|
+
continue;
|
|
242
|
+
this.log(`Killing process ${pid} for session ${session.sessionId}`);
|
|
243
|
+
const success = await killProcessByPid(pid);
|
|
244
|
+
if (!success) {
|
|
245
|
+
this.log(`Failed to kill process ${pid} for session ${session.sessionId}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const serverKey = this.getServerKey();
|
|
249
|
+
if (serverKey) {
|
|
250
|
+
await cleanupOwnedResources(serverKey, this.instanceId);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
await closeAgentsWindow();
|
|
254
|
+
}
|
|
152
255
|
this.sessions.clear();
|
|
256
|
+
this.statusMissingSince.clear();
|
|
257
|
+
this.log('Cleanup complete');
|
|
153
258
|
}
|
|
154
259
|
/**
|
|
155
260
|
* Synchronous cleanup for shutdown (ensures completion before exit)
|
|
@@ -158,10 +263,31 @@ export class TmuxSessionManager {
|
|
|
158
263
|
* process exits, which is necessary for signal handlers.
|
|
159
264
|
*/
|
|
160
265
|
cleanupSync() {
|
|
266
|
+
this.log('Starting sync cleanup...');
|
|
161
267
|
this.stopPolling();
|
|
162
|
-
|
|
163
|
-
|
|
268
|
+
for (const session of this.sessions.values()) {
|
|
269
|
+
let pid = session.pid;
|
|
270
|
+
if (!pid) {
|
|
271
|
+
pid = getPanePidSync(session.paneId);
|
|
272
|
+
if (pid) {
|
|
273
|
+
session.pid = pid;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (!pid)
|
|
277
|
+
continue;
|
|
278
|
+
this.log(`Killing process ${pid} for session ${session.sessionId}`);
|
|
279
|
+
this.killProcessByPidSync(pid);
|
|
280
|
+
}
|
|
281
|
+
const serverKey = this.getServerKey();
|
|
282
|
+
if (serverKey) {
|
|
283
|
+
cleanupOwnedResourcesSync(serverKey, this.instanceId);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
closeAgentsWindowSync();
|
|
287
|
+
}
|
|
164
288
|
this.sessions.clear();
|
|
289
|
+
this.statusMissingSince.clear();
|
|
290
|
+
this.log('Sync cleanup complete');
|
|
165
291
|
}
|
|
166
292
|
/**
|
|
167
293
|
* Start polling for session status
|
|
@@ -186,6 +312,12 @@ export class TmuxSessionManager {
|
|
|
186
312
|
* Poll active sessions for status changes
|
|
187
313
|
*/
|
|
188
314
|
async pollSessions() {
|
|
315
|
+
return this.enqueue(() => this.doPollSessions());
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Poll active sessions for status changes
|
|
319
|
+
*/
|
|
320
|
+
async doPollSessions() {
|
|
189
321
|
if (!this.isEnabled())
|
|
190
322
|
return;
|
|
191
323
|
if (!this.sourcePaneId)
|
|
@@ -193,22 +325,55 @@ export class TmuxSessionManager {
|
|
|
193
325
|
const state = await queryWindowState(this.sourcePaneId);
|
|
194
326
|
if (!state)
|
|
195
327
|
return;
|
|
328
|
+
const statusMap = await this.fetchSessionStatuses();
|
|
196
329
|
const now = Date.now();
|
|
330
|
+
const sessionsToClose = [];
|
|
197
331
|
for (const session of this.sessions.values()) {
|
|
198
332
|
const pane = findPane(state, session.paneId);
|
|
199
333
|
if (pane) {
|
|
200
334
|
session.lastSeenAt = new Date();
|
|
201
|
-
|
|
335
|
+
if (!session.pid) {
|
|
336
|
+
const pid = await getPanePid(session.paneId);
|
|
337
|
+
if (pid) {
|
|
338
|
+
session.pid = pid;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
202
341
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
342
|
+
else {
|
|
343
|
+
const missingFor = now - session.lastSeenAt.getTime();
|
|
344
|
+
if (missingFor > SESSION_MISSING_GRACE_MS) {
|
|
345
|
+
if (session.pid) {
|
|
346
|
+
await killProcessByPid(session.pid);
|
|
347
|
+
}
|
|
348
|
+
this.sessions.delete(session.sessionId);
|
|
349
|
+
this.statusMissingSince.delete(session.sessionId);
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
const status = statusMap[session.sessionId];
|
|
354
|
+
if (status) {
|
|
355
|
+
this.statusMissingSince.delete(session.sessionId);
|
|
207
356
|
}
|
|
357
|
+
else if (!this.statusMissingSince.has(session.sessionId)) {
|
|
358
|
+
this.statusMissingSince.set(session.sessionId, now);
|
|
359
|
+
}
|
|
360
|
+
const statusMissingAt = this.statusMissingSince.get(session.sessionId);
|
|
361
|
+
const missingTooLong = statusMissingAt !== undefined && now - statusMissingAt > SESSION_MISSING_GRACE_MS;
|
|
208
362
|
const age = now - session.createdAt.getTime();
|
|
209
|
-
|
|
210
|
-
|
|
363
|
+
const isTimedOut = age > SESSION_TIMEOUT_MS;
|
|
364
|
+
const isIdle = status?.type === 'idle';
|
|
365
|
+
if (isIdle || missingTooLong || isTimedOut) {
|
|
366
|
+
sessionsToClose.push(session);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
for (const session of sessionsToClose) {
|
|
370
|
+
this.log(`Closing idle session ${session.sessionId} (pane: ${session.paneId})`);
|
|
371
|
+
const result = await closePaneById(session.paneId, session.pid);
|
|
372
|
+
if (!result.success) {
|
|
373
|
+
this.log(`Failed to close pane ${session.paneId} for session ${session.sessionId}: ${result.error}`);
|
|
211
374
|
}
|
|
375
|
+
this.sessions.delete(session.sessionId);
|
|
376
|
+
this.statusMissingSince.delete(session.sessionId);
|
|
212
377
|
}
|
|
213
378
|
if (this.sessions.size === 0) {
|
|
214
379
|
this.stopPolling();
|
|
@@ -231,30 +396,50 @@ export class TmuxSessionManager {
|
|
|
231
396
|
return undefined;
|
|
232
397
|
return typeof serverUrl === 'string' ? serverUrl : serverUrl.toString();
|
|
233
398
|
}
|
|
234
|
-
|
|
399
|
+
getServerKey() {
|
|
400
|
+
if (this.serverKey)
|
|
401
|
+
return this.serverKey;
|
|
402
|
+
const serverUrl = this.getServerUrl();
|
|
403
|
+
if (!serverUrl)
|
|
404
|
+
return undefined;
|
|
405
|
+
try {
|
|
406
|
+
const serverKey = canonicalizeServerUrl(serverUrl);
|
|
407
|
+
this.serverKey = serverKey;
|
|
408
|
+
return serverKey;
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
this.log(`Failed to canonicalize server URL "${serverUrl}": ${error}`);
|
|
412
|
+
return undefined;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
applyActionResults(actions, results) {
|
|
235
416
|
const now = new Date();
|
|
236
|
-
for (const action of actions) {
|
|
417
|
+
for (const [index, action] of actions.entries()) {
|
|
418
|
+
const actionResult = results[index]?.result;
|
|
237
419
|
switch (action.type) {
|
|
238
420
|
case 'close':
|
|
239
421
|
this.sessions.delete(action.sessionId);
|
|
240
422
|
break;
|
|
241
423
|
case 'replace':
|
|
242
424
|
this.sessions.delete(action.oldSessionId);
|
|
425
|
+
this.statusMissingSince.delete(action.oldSessionId);
|
|
243
426
|
this.sessions.set(action.newSessionId, {
|
|
244
427
|
sessionId: action.newSessionId,
|
|
245
428
|
paneId: action.paneId,
|
|
429
|
+
pid: actionResult?.pid,
|
|
246
430
|
description: action.description,
|
|
247
431
|
createdAt: now,
|
|
248
432
|
lastSeenAt: now,
|
|
249
433
|
});
|
|
250
434
|
break;
|
|
251
435
|
case 'spawn': {
|
|
252
|
-
const paneId =
|
|
436
|
+
const paneId = actionResult?.paneId;
|
|
253
437
|
if (!paneId)
|
|
254
438
|
break;
|
|
255
439
|
this.sessions.set(action.sessionId, {
|
|
256
440
|
sessionId: action.sessionId,
|
|
257
441
|
paneId,
|
|
442
|
+
pid: actionResult?.pid,
|
|
258
443
|
description: action.description,
|
|
259
444
|
createdAt: now,
|
|
260
445
|
lastSeenAt: now,
|
|
@@ -264,13 +449,163 @@ export class TmuxSessionManager {
|
|
|
264
449
|
}
|
|
265
450
|
}
|
|
266
451
|
}
|
|
452
|
+
async refreshMissingPids() {
|
|
453
|
+
for (const session of this.sessions.values()) {
|
|
454
|
+
if (session.pid)
|
|
455
|
+
continue;
|
|
456
|
+
const pid = await getPanePid(session.paneId);
|
|
457
|
+
if (pid) {
|
|
458
|
+
session.pid = pid;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
async fetchSessionStatuses() {
|
|
463
|
+
try {
|
|
464
|
+
const result = await this.ctx.client.session.status({
|
|
465
|
+
path: undefined,
|
|
466
|
+
throwOnError: false,
|
|
467
|
+
});
|
|
468
|
+
const data = unwrapResponse(result);
|
|
469
|
+
if (!data || typeof data !== 'object')
|
|
470
|
+
return {};
|
|
471
|
+
return data;
|
|
472
|
+
}
|
|
473
|
+
catch {
|
|
474
|
+
return {};
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Find and report orphaned processes (does NOT kill them by default).
|
|
479
|
+
* Call this manually if you need to identify orphaned processes after a crash.
|
|
480
|
+
*
|
|
481
|
+
* Note: This method only reports - it does not kill processes because we cannot
|
|
482
|
+
* reliably distinguish between processes we spawned vs user-initiated sessions.
|
|
483
|
+
* The shutdown cleanup (cleanup/cleanupSync) is safe because it only kills PIDs
|
|
484
|
+
* we explicitly tracked during this session.
|
|
485
|
+
*/
|
|
486
|
+
async reportOrphanedProcesses() {
|
|
487
|
+
if (!this.isEnabled())
|
|
488
|
+
return [];
|
|
489
|
+
const serverKey = this.getServerKey();
|
|
490
|
+
if (!serverKey)
|
|
491
|
+
return [];
|
|
492
|
+
const trackedSessionIds = new Set(this.sessions.keys());
|
|
493
|
+
const panes = await findOwnedAgentPanes(serverKey);
|
|
494
|
+
const orphanedPanes = panes.filter((pane) => {
|
|
495
|
+
if (!pane.sessionId)
|
|
496
|
+
return false;
|
|
497
|
+
return !trackedSessionIds.has(pane.sessionId);
|
|
498
|
+
});
|
|
499
|
+
if (orphanedPanes.length > 0) {
|
|
500
|
+
const sessionIds = orphanedPanes
|
|
501
|
+
.map((pane) => pane.sessionId)
|
|
502
|
+
.filter((sessionId) => !!sessionId);
|
|
503
|
+
this.log(`Found ${orphanedPanes.length} potentially orphaned sessions: ${sessionIds.join(', ')}`);
|
|
504
|
+
this.log('These may be user-initiated sessions. Close their tmux panes manually if needed.');
|
|
505
|
+
}
|
|
506
|
+
return orphanedPanes
|
|
507
|
+
.map((pane) => pane.panePid)
|
|
508
|
+
.filter((pid) => typeof pid === 'number');
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Kill a process and all its children synchronously.
|
|
512
|
+
*
|
|
513
|
+
* This is necessary because we spawn `bash -c "opencode attach ...; tmux kill-pane"`
|
|
514
|
+
* and #{pane_pid} returns the bash PID, not the opencode attach PID.
|
|
515
|
+
*/
|
|
516
|
+
killProcessByPidSync(pid) {
|
|
517
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
518
|
+
return;
|
|
519
|
+
// First, kill all child processes
|
|
520
|
+
try {
|
|
521
|
+
spawnSync(['pkill', '-TERM', '-P', String(pid)]);
|
|
522
|
+
}
|
|
523
|
+
catch {
|
|
524
|
+
// Ignore errors - children may not exist
|
|
525
|
+
}
|
|
526
|
+
// Then kill the parent
|
|
527
|
+
try {
|
|
528
|
+
process.kill(pid, 'SIGTERM');
|
|
529
|
+
}
|
|
530
|
+
catch (error) {
|
|
531
|
+
const code = error.code;
|
|
532
|
+
if (code === 'ESRCH')
|
|
533
|
+
return;
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
// Wait for processes to die
|
|
537
|
+
try {
|
|
538
|
+
const buffer = new SharedArrayBuffer(4);
|
|
539
|
+
const view = new Int32Array(buffer);
|
|
540
|
+
Atomics.wait(view, 0, 0, 1000);
|
|
541
|
+
}
|
|
542
|
+
catch {
|
|
543
|
+
// ignore sleep errors
|
|
544
|
+
}
|
|
545
|
+
// Check if parent is dead
|
|
546
|
+
try {
|
|
547
|
+
process.kill(pid, 0);
|
|
548
|
+
}
|
|
549
|
+
catch (error) {
|
|
550
|
+
const code = error.code;
|
|
551
|
+
if (code === 'ESRCH')
|
|
552
|
+
return; // Dead, good
|
|
553
|
+
}
|
|
554
|
+
// Force kill children
|
|
555
|
+
try {
|
|
556
|
+
spawnSync(['pkill', '-KILL', '-P', String(pid)]);
|
|
557
|
+
}
|
|
558
|
+
catch {
|
|
559
|
+
// Ignore errors
|
|
560
|
+
}
|
|
561
|
+
// Force kill parent
|
|
562
|
+
try {
|
|
563
|
+
process.kill(pid, 'SIGKILL');
|
|
564
|
+
}
|
|
565
|
+
catch {
|
|
566
|
+
// ignore errors
|
|
567
|
+
}
|
|
568
|
+
}
|
|
267
569
|
log(message) {
|
|
268
570
|
this.callbacks?.onLog?.(`[tmux] ${message}`);
|
|
269
571
|
}
|
|
572
|
+
/**
|
|
573
|
+
* Static method to clean up orphaned processes without needing an instance.
|
|
574
|
+
* This is useful for manual cleanup commands.
|
|
575
|
+
*
|
|
576
|
+
* @param serverUrl - Optional server URL to filter processes
|
|
577
|
+
* @param logger - Optional logging function
|
|
578
|
+
* @param instanceId - Ownership instance id to target cleanup
|
|
579
|
+
* @returns Object with cleanup results
|
|
580
|
+
*/
|
|
581
|
+
static async cleanupOrphans(serverUrl, logger, instanceId) {
|
|
582
|
+
const log = logger ?? (() => { });
|
|
583
|
+
log('Starting orphan cleanup...');
|
|
584
|
+
let serverKey;
|
|
585
|
+
try {
|
|
586
|
+
serverKey = serverUrl ? canonicalizeServerUrl(serverUrl) : undefined;
|
|
587
|
+
}
|
|
588
|
+
catch {
|
|
589
|
+
serverKey = undefined;
|
|
590
|
+
}
|
|
591
|
+
if (!serverKey || !instanceId) {
|
|
592
|
+
log('No server URL or instance ID provided; skipping ownership cleanup.');
|
|
593
|
+
return { killed: 0, windowClosed: false };
|
|
594
|
+
}
|
|
595
|
+
const result = await cleanupOwnedResources(serverKey, instanceId);
|
|
596
|
+
log(`Orphan cleanup complete: ${result.panesClosed} panes closed, window closed: ${result.windowClosed}`);
|
|
597
|
+
return { killed: result.panesClosed, windowClosed: result.windowClosed };
|
|
598
|
+
}
|
|
270
599
|
}
|
|
271
600
|
function findPane(state, paneId) {
|
|
272
601
|
if (state.mainPane?.paneId === paneId)
|
|
273
602
|
return state.mainPane;
|
|
274
603
|
return state.agentPanes.find((pane) => pane.paneId === paneId);
|
|
275
604
|
}
|
|
605
|
+
function unwrapResponse(result) {
|
|
606
|
+
if (typeof result === 'object' && result !== null && 'data' in result) {
|
|
607
|
+
return result.data;
|
|
608
|
+
}
|
|
609
|
+
return result;
|
|
610
|
+
}
|
|
276
611
|
//# sourceMappingURL=manager.js.map
|
package/dist/tmux/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/tmux/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/tmux/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,YAAY,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACnB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,SAAiB;IAC/C,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAMD;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAAkB;IAiBrB;IACA;IACA;IAlBD,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC7C,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,YAAY,CAAkC;IAC9C,YAAY,CAAqB;IACjC,aAAa,CAAqB;IAClC,UAAU,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IACvB,SAAS,CAAqB;IAC9B,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvD;;;OAGG;IACK,WAAW,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEvD,YACS,GAAgB,EAChB,MAAkB,EAClB,SAAuC;QAFvC,QAAG,GAAH,GAAG,CAAa;QAChB,WAAM,GAAN,MAAM,CAAY;QAClB,cAAS,GAAT,SAAS,CAA8B;QAE/C,IAAI,CAAC,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACK,OAAO,CAAI,EAAoB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B;QAC5E,4DAA4D;QAC5D,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAC7B,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,CACR,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACH,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAItB;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,KAI9B;QACA,IAAI,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CACP,wCAAwC,IAAI,CAAC,MAAM,CAAC,OAAO,iBAAiB,YAAY,EAAE,GAAG,CAC7F,CAAC;YACF,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,SAAS,6BAA6B,CAAC,CAAC;YAC7E,OAAO;QACR,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACnC,OAAO;YACR,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,GAAG,gBAAgB,EAAE,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBAChD,OAAO;YACR,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/D,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,IAAI,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACF,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAC/C,OAAO;YACR,CAAC;YAED,MAAM,QAAQ,GAAG,kBAAkB,CAClC,KAAK,EACL,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,EACX;gBACC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;gBAC9C,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;gBAChD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;aAC9B,EACD,IAAI,CAAC,kBAAkB,EAAE,CACzB,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACxB,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO;YACR,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;gBACrD,OAAO;YACR,CAAC;YAED,iEAAiE;YACjE,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpB,IAAI,CAAC,GAAG,CACP,yBAAyB,SAAS,+DAA+D,CACjG,CAAC;gBACF,OAAO;YACR,CAAC;YAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE;gBACrD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS;gBACT,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE;oBACV,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS;oBACT,aAAa,EAAE,IAAI,CAAC,aAAa;iBACjC;aACD,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC5C,OAAO;YACR,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CACP,iCAAiC,KAAK,CAAC,SAAS,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,oBAAoB,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAChJ,CAAC;YACF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;IACF,CAAC;IAED;;OAEG;IACK,cAAc;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;aACjB,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAA4B;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,KAA4B;QAC1D,IAAI,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC/C,OAAO;QACR,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,SAAS,gCAAgC,CAAC,CAAC;YACrE,OAAO;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CACP,gBAAgB,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,GAAG,iBAAiB,KAAK,CAAC,SAAS,EAAE,CACrF,CAAC;QAEF,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,+CAA+C,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,CAAC;QAExF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACV,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,GAAG,EAAE,CAAC;oBACT,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;gBACnB,CAAC;YACF,CAAC;YACD,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,gBAAgB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,0BAA0B,GAAG,gBAAgB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5E,CAAC;QACF,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACP,MAAM,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEhC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,WAAW;QACV,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACV,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,GAAG,EAAE,CAAC;oBACT,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;gBACnB,CAAC;YACF,CAAC;YACD,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,gBAAgB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,SAAS,EAAE,CAAC;YACf,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,qBAAqB,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEhC,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,YAAY;QACnB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACpC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,WAAW;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QAC9B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC7C,IAAI,GAAG,EAAE,CAAC;wBACT,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;oBACnB,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,MAAM,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACtD,IAAI,UAAU,GAAG,wBAAwB,EAAE,CAAC;oBAC3C,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;wBACjB,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACrC,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAClD,SAAS;gBACV,CAAC;YACF,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACvE,MAAM,cAAc,GACnB,eAAe,KAAK,SAAS,IAAI,GAAG,GAAG,eAAe,GAAG,wBAAwB,CAAC;YACnF,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,GAAG,GAAG,kBAAkB,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC;YAEvC,IAAI,MAAM,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;gBAC5C,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,SAAS,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CACP,wBAAwB,OAAO,CAAC,MAAM,gBAAgB,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK,EAAE,CAC1F,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC;IACF,CAAC;IAED;;OAEG;IACK,kBAAkB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3D,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAIhB,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;QACtE,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACzE,CAAC;IAEO,YAAY;QACnB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,sCAAsC,SAAS,MAAM,KAAK,EAAE,CAAC,CAAC;YACvE,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAEO,kBAAkB,CACzB,OAAqB,EACrB,OAAiF;QAEjF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAC5C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,OAAO;oBACX,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACvC,MAAM;gBACP,KAAK,SAAS;oBACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC1C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE;wBACtC,SAAS,EAAE,MAAM,CAAC,YAAY;wBAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,GAAG,EAAE,YAAY,EAAE,GAAG;wBACtB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,SAAS,EAAE,GAAG;wBACd,UAAU,EAAE,GAAG;qBACf,CAAC,CAAC;oBACH,MAAM;gBACP,KAAK,OAAO,CAAC,CAAC,CAAC;oBACd,MAAM,MAAM,GAAG,YAAY,EAAE,MAAM,CAAC;oBACpC,IAAI,CAAC,MAAM;wBAAE,MAAM;oBACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;wBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,MAAM;wBACN,GAAG,EAAE,YAAY,EAAE,GAAG;wBACtB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,SAAS,EAAE,GAAG;wBACd,UAAU,EAAE,GAAG;qBACf,CAAC,CAAC;oBACH,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,GAAG;gBAAE,SAAS;YAC1B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;YACnB,CAAC;QACF,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,oBAAoB;QACjC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBACnD,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,cAAc,CAAoC,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,uBAAuB;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAClC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,aAAa;iBAC9B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC7B,MAAM,CAAC,CAAC,SAAS,EAAuB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,CACP,SAAS,aAAa,CAAC,MAAM,mCAAmC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAC;YACF,IAAI,CAAC,GAAG,CACP,kFAAkF,CAClF,CAAC;QACH,CAAC;QAED,OAAO,aAAa;aAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;aAC3B,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACK,oBAAoB,CAAC,GAAW;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO;QAE9C,kCAAkC;QAClC,IAAI,CAAC;YACJ,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACR,yCAAyC;QAC1C,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO;YAC7B,OAAO;QACR,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACR,sBAAsB;QACvB,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,CAAC,aAAa;QAC5C,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC;YACJ,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACR,gBAAgB;QACjB,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACR,gBAAgB;QACjB,CAAC;IACF,CAAC;IAEO,GAAG,CAAC,OAAe;QAC1B,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CAC1B,SAAkB,EAClB,MAA8B,EAC9B,UAAmB;QAEnB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEjC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAElC,IAAI,SAA6B,CAAC;QAClC,IAAI,CAAC;YACJ,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACR,SAAS,GAAG,SAAS,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,GAAG,CAAC,oEAAoE,CAAC,CAAC;YAC1E,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClE,GAAG,CACF,4BAA4B,MAAM,CAAC,WAAW,iCAAiC,MAAM,CAAC,YAAY,EAAE,CACpG,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;IAC1E,CAAC;CACD;AAED,SAAS,QAAQ,CAAC,KAAkB,EAAE,MAAc;IACnD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;IAC7D,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CAAI,MAAe;IACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACvE,OAAQ,MAAuB,CAAC,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,MAAW,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-query.d.ts","sourceRoot":"","sources":["../../src/tmux/state-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,SAAS,CAAC;AAGzD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"state-query.d.ts","sourceRoot":"","sources":["../../src/tmux/state-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,SAAS,CAAC;AAGzD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqExF"}
|
package/dist/tmux/state-query.js
CHANGED
|
@@ -27,6 +27,9 @@ export async function queryWindowState(sourcePaneId) {
|
|
|
27
27
|
const parts = line.split(',');
|
|
28
28
|
if (parts.length < 9)
|
|
29
29
|
continue;
|
|
30
|
+
const paneId = parts[0];
|
|
31
|
+
if (!paneId)
|
|
32
|
+
continue;
|
|
30
33
|
const windowWidthValue = Number(parts[parts.length - 2]);
|
|
31
34
|
const windowHeightValue = Number(parts[parts.length - 1]);
|
|
32
35
|
const isActiveValue = parts[parts.length - 3] === '1';
|
|
@@ -39,7 +42,7 @@ export async function queryWindowState(sourcePaneId) {
|
|
|
39
42
|
continue;
|
|
40
43
|
}
|
|
41
44
|
const paneInfo = {
|
|
42
|
-
paneId
|
|
45
|
+
paneId,
|
|
43
46
|
width,
|
|
44
47
|
height,
|
|
45
48
|
left,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-query.js","sourceRoot":"","sources":["../../src/tmux/state-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IAC1D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,YAAY;QACZ,IAAI;QACJ,YAAY;QACZ,IAAI;QACJ,gIAAgI;KAChI,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM;SACzB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAE/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACrE,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAiB;YAC9B,MAAM
|
|
1
|
+
{"version":3,"file":"state-query.js","sourceRoot":"","sources":["../../src/tmux/state-query.ts"],"names":[],"mappings":"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"}
|
package/dist/tmux/types.d.ts
CHANGED
|
@@ -10,6 +10,16 @@ export interface TmuxPaneInfo {
|
|
|
10
10
|
title: string;
|
|
11
11
|
isActive: boolean;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Ownership tags stored in tmux user options
|
|
15
|
+
*/
|
|
16
|
+
export interface TmuxOwnershipTags {
|
|
17
|
+
isOpencode: boolean;
|
|
18
|
+
serverKey: string;
|
|
19
|
+
ownerPid: number;
|
|
20
|
+
instanceId: string;
|
|
21
|
+
sessionId?: string;
|
|
22
|
+
}
|
|
13
23
|
/**
|
|
14
24
|
* Current state of the tmux window
|
|
15
25
|
*/
|
|
@@ -25,6 +35,7 @@ export interface WindowState {
|
|
|
25
35
|
export interface TrackedSession {
|
|
26
36
|
sessionId: string;
|
|
27
37
|
paneId: string;
|
|
38
|
+
pid?: number;
|
|
28
39
|
description: string;
|
|
29
40
|
createdAt: Date;
|
|
30
41
|
lastSeenAt: Date;
|
package/dist/tmux/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tmux/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,UAAU,GACnB;IACA,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;CAC9B,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpD;IACA,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACnB,CAAC;AAEL;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAGD,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAGlC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,kBAAkB,QAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tmux/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,UAAU,GACnB;IACA,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;CAC9B,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpD;IACA,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACnB,CAAC;AAEL;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAGD,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAGlC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,kBAAkB,QAAiB,CAAC"}
|