@agentuity/opencode 0.1.41 → 0.1.42
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/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 +49 -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 +29 -1
- package/dist/tmux/executor.d.ts.map +1 -1
- package/dist/tmux/executor.js +328 -13
- 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 +36 -0
- package/dist/tmux/manager.d.ts.map +1 -1
- package/dist/tmux/manager.js +222 -10
- 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 +1 -0
- package/dist/tmux/types.d.ts.map +1 -1
- package/dist/tmux/types.js.map +1 -1
- package/package.json +3 -3
- package/src/agents/lead.ts +2 -3
- package/src/plugin/hooks/cadence.ts +2 -1
- package/src/plugin/plugin.ts +62 -11
- package/src/skills/frontmatter.ts +1 -1
- package/src/tmux/executor.ts +345 -13
- package/src/tmux/index.ts +3 -0
- package/src/tmux/manager.ts +255 -9
- package/src/tmux/state-query.ts +4 -1
- package/src/tmux/types.ts +1 -0
package/dist/tmux/manager.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { spawn, spawnSync } from 'bun';
|
|
1
2
|
import { POLL_INTERVAL_MS, SESSION_MISSING_GRACE_MS, SESSION_TIMEOUT_MS } from './types';
|
|
2
3
|
import { getCurrentPaneId, getTmuxPath, isInsideTmux } from './utils';
|
|
3
4
|
import { queryWindowState } from './state-query';
|
|
4
5
|
import { decideSpawnActions } from './decision-engine';
|
|
5
|
-
import { executeActions, closeAgentsWindow, closeAgentsWindowSync, closePaneById, } from './executor';
|
|
6
|
+
import { executeActions, closeAgentsWindow, closeAgentsWindowSync, closePaneById, killProcessByPid, killOrphanedAttachProcesses, killOrphanedAttachProcessesSync, } from './executor';
|
|
6
7
|
/**
|
|
7
8
|
* Check if the OpenCode server is running by hitting the health endpoint
|
|
8
9
|
*/
|
|
@@ -52,10 +53,15 @@ export class TmuxSessionManager {
|
|
|
52
53
|
* This is called by BackgroundManager when a background task starts
|
|
53
54
|
*/
|
|
54
55
|
async onSessionCreated(event) {
|
|
55
|
-
|
|
56
|
+
this.log(`onSessionCreated called for ${event.sessionId} (${event.title})`);
|
|
57
|
+
if (!this.isEnabled()) {
|
|
58
|
+
this.log(`Skipping - tmux not enabled (config: ${this.config.enabled}, insideTmux: ${isInsideTmux()})`);
|
|
56
59
|
return;
|
|
57
|
-
|
|
60
|
+
}
|
|
61
|
+
if (this.pendingSessions.has(event.sessionId) || this.sessions.has(event.sessionId)) {
|
|
62
|
+
this.log(`Skipping - session ${event.sessionId} already pending or tracked`);
|
|
58
63
|
return;
|
|
64
|
+
}
|
|
59
65
|
this.pendingSessions.add(event.sessionId);
|
|
60
66
|
try {
|
|
61
67
|
const tmuxPath = await getTmuxPath();
|
|
@@ -106,7 +112,8 @@ export class TmuxSessionManager {
|
|
|
106
112
|
this.log('Failed to execute tmux actions.');
|
|
107
113
|
return;
|
|
108
114
|
}
|
|
109
|
-
this.applyActionResults(decision.actions, result.
|
|
115
|
+
this.applyActionResults(decision.actions, result.results);
|
|
116
|
+
this.log(`Successfully spawned pane for ${event.sessionId}. Tracking ${this.sessions.size} sessions. PIDs: ${this.getTrackedPids().join(', ') || 'none'}`);
|
|
110
117
|
if (this.sessions.size > 0) {
|
|
111
118
|
this.startPolling();
|
|
112
119
|
}
|
|
@@ -115,6 +122,14 @@ export class TmuxSessionManager {
|
|
|
115
122
|
this.pendingSessions.delete(event.sessionId);
|
|
116
123
|
}
|
|
117
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Get all tracked PIDs for logging
|
|
127
|
+
*/
|
|
128
|
+
getTrackedPids() {
|
|
129
|
+
return Array.from(this.sessions.values())
|
|
130
|
+
.map((s) => s.pid)
|
|
131
|
+
.filter((pid) => pid !== undefined);
|
|
132
|
+
}
|
|
118
133
|
/**
|
|
119
134
|
* Handle a session being deleted
|
|
120
135
|
*
|
|
@@ -123,19 +138,29 @@ export class TmuxSessionManager {
|
|
|
123
138
|
* terminal that keeps running even after the session goes idle.
|
|
124
139
|
*/
|
|
125
140
|
async onSessionDeleted(event) {
|
|
126
|
-
|
|
141
|
+
this.log(`onSessionDeleted called for ${event.sessionId}`);
|
|
142
|
+
if (!this.isEnabled()) {
|
|
143
|
+
this.log(`Skipping delete - tmux not enabled`);
|
|
127
144
|
return;
|
|
145
|
+
}
|
|
128
146
|
// Find the session in our mappings
|
|
129
147
|
const session = this.sessions.get(event.sessionId);
|
|
130
|
-
if (!session)
|
|
148
|
+
if (!session) {
|
|
149
|
+
this.log(`Session ${event.sessionId} not found in tracked sessions`);
|
|
131
150
|
return;
|
|
151
|
+
}
|
|
152
|
+
this.log(`Closing pane ${session.paneId} (PID: ${session.pid}) for session ${event.sessionId}`);
|
|
132
153
|
// Kill the pane explicitly - opencode attach won't exit on its own
|
|
133
|
-
const result = await closePaneById(session.paneId);
|
|
154
|
+
const result = await closePaneById(session.paneId, session.pid);
|
|
134
155
|
if (!result.success) {
|
|
135
156
|
this.log(`Failed to close pane ${session.paneId}: ${result.error}`);
|
|
136
157
|
}
|
|
158
|
+
else {
|
|
159
|
+
this.log(`Successfully closed pane ${session.paneId}`);
|
|
160
|
+
}
|
|
137
161
|
// Update internal state
|
|
138
162
|
this.sessions.delete(event.sessionId);
|
|
163
|
+
this.log(`Removed session from tracking. Now tracking ${this.sessions.size} sessions.`);
|
|
139
164
|
if (this.sessions.size === 0) {
|
|
140
165
|
this.stopPolling();
|
|
141
166
|
}
|
|
@@ -144,12 +169,32 @@ export class TmuxSessionManager {
|
|
|
144
169
|
* Clean up all panes on shutdown
|
|
145
170
|
*
|
|
146
171
|
* Kills the entire "Agents" window, which closes all agent panes at once.
|
|
172
|
+
* Falls back to pkill if PID-based cleanup fails.
|
|
147
173
|
*/
|
|
148
174
|
async cleanup() {
|
|
175
|
+
this.log('Starting cleanup...');
|
|
149
176
|
this.stopPolling();
|
|
177
|
+
let pidCleanupFailed = false;
|
|
178
|
+
for (const session of this.sessions.values()) {
|
|
179
|
+
if (!session.pid)
|
|
180
|
+
continue;
|
|
181
|
+
this.log(`Killing process ${session.pid} for session ${session.sessionId}`);
|
|
182
|
+
const success = await killProcessByPid(session.pid);
|
|
183
|
+
if (!success) {
|
|
184
|
+
this.log(`Failed to kill process ${session.pid} for session ${session.sessionId}`);
|
|
185
|
+
pidCleanupFailed = true;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
150
188
|
// Kill the entire agents window - this closes all panes at once
|
|
151
189
|
await closeAgentsWindow();
|
|
152
190
|
this.sessions.clear();
|
|
191
|
+
// Fallback: if PID-based cleanup failed, use pkill to catch any orphans
|
|
192
|
+
if (pidCleanupFailed) {
|
|
193
|
+
this.log('PID-based cleanup had failures, running fallback cleanup...');
|
|
194
|
+
const serverUrl = this.getServerUrl();
|
|
195
|
+
await killOrphanedAttachProcesses(serverUrl, (msg) => this.log(msg));
|
|
196
|
+
}
|
|
197
|
+
this.log('Cleanup complete');
|
|
153
198
|
}
|
|
154
199
|
/**
|
|
155
200
|
* Synchronous cleanup for shutdown (ensures completion before exit)
|
|
@@ -158,10 +203,33 @@ export class TmuxSessionManager {
|
|
|
158
203
|
* process exits, which is necessary for signal handlers.
|
|
159
204
|
*/
|
|
160
205
|
cleanupSync() {
|
|
206
|
+
this.log('Starting sync cleanup...');
|
|
161
207
|
this.stopPolling();
|
|
208
|
+
let pidCleanupFailed = false;
|
|
209
|
+
for (const session of this.sessions.values()) {
|
|
210
|
+
if (!session.pid)
|
|
211
|
+
continue;
|
|
212
|
+
this.log(`Killing process ${session.pid} for session ${session.sessionId}`);
|
|
213
|
+
this.killProcessByPidSync(session.pid);
|
|
214
|
+
// Check if process is still alive after kill attempt
|
|
215
|
+
try {
|
|
216
|
+
process.kill(session.pid, 0);
|
|
217
|
+
pidCleanupFailed = true; // Process still exists
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// Process is dead, good
|
|
221
|
+
}
|
|
222
|
+
}
|
|
162
223
|
// Kill the entire agents window synchronously
|
|
163
224
|
closeAgentsWindowSync();
|
|
164
225
|
this.sessions.clear();
|
|
226
|
+
// Fallback: if PID-based cleanup failed, use pkill to catch any orphans
|
|
227
|
+
if (pidCleanupFailed) {
|
|
228
|
+
this.log('PID-based cleanup had failures, running fallback cleanup...');
|
|
229
|
+
const serverUrl = this.getServerUrl();
|
|
230
|
+
killOrphanedAttachProcessesSync(serverUrl, (msg) => this.log(msg));
|
|
231
|
+
}
|
|
232
|
+
this.log('Sync cleanup complete');
|
|
165
233
|
}
|
|
166
234
|
/**
|
|
167
235
|
* Start polling for session status
|
|
@@ -231,9 +299,10 @@ export class TmuxSessionManager {
|
|
|
231
299
|
return undefined;
|
|
232
300
|
return typeof serverUrl === 'string' ? serverUrl : serverUrl.toString();
|
|
233
301
|
}
|
|
234
|
-
applyActionResults(actions,
|
|
302
|
+
applyActionResults(actions, results) {
|
|
235
303
|
const now = new Date();
|
|
236
|
-
for (const action of actions) {
|
|
304
|
+
for (const [index, action] of actions.entries()) {
|
|
305
|
+
const actionResult = results[index]?.result;
|
|
237
306
|
switch (action.type) {
|
|
238
307
|
case 'close':
|
|
239
308
|
this.sessions.delete(action.sessionId);
|
|
@@ -243,18 +312,20 @@ export class TmuxSessionManager {
|
|
|
243
312
|
this.sessions.set(action.newSessionId, {
|
|
244
313
|
sessionId: action.newSessionId,
|
|
245
314
|
paneId: action.paneId,
|
|
315
|
+
pid: actionResult?.pid,
|
|
246
316
|
description: action.description,
|
|
247
317
|
createdAt: now,
|
|
248
318
|
lastSeenAt: now,
|
|
249
319
|
});
|
|
250
320
|
break;
|
|
251
321
|
case 'spawn': {
|
|
252
|
-
const paneId =
|
|
322
|
+
const paneId = actionResult?.paneId;
|
|
253
323
|
if (!paneId)
|
|
254
324
|
break;
|
|
255
325
|
this.sessions.set(action.sessionId, {
|
|
256
326
|
sessionId: action.sessionId,
|
|
257
327
|
paneId,
|
|
328
|
+
pid: actionResult?.pid,
|
|
258
329
|
description: action.description,
|
|
259
330
|
createdAt: now,
|
|
260
331
|
lastSeenAt: now,
|
|
@@ -264,9 +335,150 @@ export class TmuxSessionManager {
|
|
|
264
335
|
}
|
|
265
336
|
}
|
|
266
337
|
}
|
|
338
|
+
/**
|
|
339
|
+
* Find and report orphaned processes (does NOT kill them by default).
|
|
340
|
+
* Call this manually if you need to identify orphaned processes after a crash.
|
|
341
|
+
*
|
|
342
|
+
* Note: This method only reports - it does not kill processes because we cannot
|
|
343
|
+
* reliably distinguish between processes we spawned vs user-initiated sessions.
|
|
344
|
+
* The shutdown cleanup (cleanup/cleanupSync) is safe because it only kills PIDs
|
|
345
|
+
* we explicitly tracked during this session.
|
|
346
|
+
*/
|
|
347
|
+
async reportOrphanedProcesses() {
|
|
348
|
+
if (!this.isEnabled())
|
|
349
|
+
return [];
|
|
350
|
+
const serverUrl = this.getServerUrl();
|
|
351
|
+
if (!serverUrl)
|
|
352
|
+
return [];
|
|
353
|
+
const trackedSessionIds = new Set(this.sessions.keys());
|
|
354
|
+
const orphanedPids = await this.findOrphanedAttachPids(serverUrl, trackedSessionIds);
|
|
355
|
+
if (orphanedPids.length > 0) {
|
|
356
|
+
this.log(`Found ${orphanedPids.length} potentially orphaned processes: ${orphanedPids.join(', ')}`);
|
|
357
|
+
this.log('These may be user-initiated sessions. Run "pkill -f opencode\\ attach" to clean them up manually if needed.');
|
|
358
|
+
}
|
|
359
|
+
return orphanedPids;
|
|
360
|
+
}
|
|
361
|
+
async findOrphanedAttachPids(serverUrl, trackedSessionIds) {
|
|
362
|
+
try {
|
|
363
|
+
const proc = spawn(['ps', 'aux'], { stdout: 'pipe', stderr: 'pipe' });
|
|
364
|
+
await proc.exited;
|
|
365
|
+
const output = await new Response(proc.stdout).text();
|
|
366
|
+
const lines = output.split('\n');
|
|
367
|
+
const matches = [];
|
|
368
|
+
for (const line of lines) {
|
|
369
|
+
if (!line.includes('opencode attach'))
|
|
370
|
+
continue;
|
|
371
|
+
if (!line.includes(serverUrl))
|
|
372
|
+
continue;
|
|
373
|
+
const parts = line.trim().split(/\s+/);
|
|
374
|
+
const pid = Number(parts[1]);
|
|
375
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
376
|
+
continue;
|
|
377
|
+
if (pid === process.pid)
|
|
378
|
+
continue;
|
|
379
|
+
const sessionId = this.extractSessionId(line);
|
|
380
|
+
if (sessionId && trackedSessionIds.has(sessionId))
|
|
381
|
+
continue;
|
|
382
|
+
matches.push(pid);
|
|
383
|
+
}
|
|
384
|
+
return matches;
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
return [];
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
extractSessionId(line) {
|
|
391
|
+
const match = line.match(/--session\s+(['"]?)([^'";\s]+)\1/);
|
|
392
|
+
return match?.[2];
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Kill a process and all its children synchronously.
|
|
396
|
+
*
|
|
397
|
+
* This is necessary because we spawn `bash -c "opencode attach ...; tmux kill-pane"`
|
|
398
|
+
* and #{pane_pid} returns the bash PID, not the opencode attach PID.
|
|
399
|
+
*/
|
|
400
|
+
killProcessByPidSync(pid) {
|
|
401
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
402
|
+
return;
|
|
403
|
+
// First, kill all child processes
|
|
404
|
+
try {
|
|
405
|
+
spawnSync(['pkill', '-TERM', '-P', String(pid)]);
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
// Ignore errors - children may not exist
|
|
409
|
+
}
|
|
410
|
+
// Then kill the parent
|
|
411
|
+
try {
|
|
412
|
+
process.kill(pid, 'SIGTERM');
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
const code = error.code;
|
|
416
|
+
if (code === 'ESRCH')
|
|
417
|
+
return;
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
// Wait for processes to die
|
|
421
|
+
try {
|
|
422
|
+
const buffer = new SharedArrayBuffer(4);
|
|
423
|
+
const view = new Int32Array(buffer);
|
|
424
|
+
Atomics.wait(view, 0, 0, 1000);
|
|
425
|
+
}
|
|
426
|
+
catch {
|
|
427
|
+
// ignore sleep errors
|
|
428
|
+
}
|
|
429
|
+
// Check if parent is dead
|
|
430
|
+
try {
|
|
431
|
+
process.kill(pid, 0);
|
|
432
|
+
}
|
|
433
|
+
catch (error) {
|
|
434
|
+
const code = error.code;
|
|
435
|
+
if (code === 'ESRCH')
|
|
436
|
+
return; // Dead, good
|
|
437
|
+
}
|
|
438
|
+
// Force kill children
|
|
439
|
+
try {
|
|
440
|
+
spawnSync(['pkill', '-KILL', '-P', String(pid)]);
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
// Ignore errors
|
|
444
|
+
}
|
|
445
|
+
// Force kill parent
|
|
446
|
+
try {
|
|
447
|
+
process.kill(pid, 'SIGKILL');
|
|
448
|
+
}
|
|
449
|
+
catch {
|
|
450
|
+
// ignore errors
|
|
451
|
+
}
|
|
452
|
+
}
|
|
267
453
|
log(message) {
|
|
268
454
|
this.callbacks?.onLog?.(`[tmux] ${message}`);
|
|
269
455
|
}
|
|
456
|
+
/**
|
|
457
|
+
* Static method to clean up orphaned processes without needing an instance.
|
|
458
|
+
* This is useful for manual cleanup commands.
|
|
459
|
+
*
|
|
460
|
+
* @param serverUrl - Optional server URL to filter processes
|
|
461
|
+
* @param logger - Optional logging function
|
|
462
|
+
* @returns Object with cleanup results
|
|
463
|
+
*/
|
|
464
|
+
static async cleanupOrphans(serverUrl, logger) {
|
|
465
|
+
const log = logger ?? (() => { });
|
|
466
|
+
log('Starting orphan cleanup...');
|
|
467
|
+
// First, try to close the agents window (recovers from persisted file)
|
|
468
|
+
let windowClosed = false;
|
|
469
|
+
try {
|
|
470
|
+
await closeAgentsWindow();
|
|
471
|
+
windowClosed = true;
|
|
472
|
+
log('Closed agents window');
|
|
473
|
+
}
|
|
474
|
+
catch {
|
|
475
|
+
log('No agents window to close');
|
|
476
|
+
}
|
|
477
|
+
// Then kill any orphaned processes
|
|
478
|
+
const killed = await killOrphanedAttachProcesses(serverUrl, log);
|
|
479
|
+
log(`Orphan cleanup complete: ${killed} processes killed, window closed: ${windowClosed}`);
|
|
480
|
+
return { killed, windowClosed };
|
|
481
|
+
}
|
|
270
482
|
}
|
|
271
483
|
function findPane(state, paneId) {
|
|
272
484
|
if (state.mainPane?.paneId === paneId)
|
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":"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"}
|
|
@@ -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
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,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"}
|
package/dist/tmux/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tmux/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tmux/types.ts"],"names":[],"mappings":"AAmGA,0BAA0B;AAC1B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,oBAAoB;AACpB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/opencode",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.42",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"description": "Agentuity Open Code plugin with specialized AI coding agents",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"prepublishOnly": "bun run clean && bun run build"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@agentuity/core": "0.1.
|
|
43
|
+
"@agentuity/core": "0.1.42",
|
|
44
44
|
"@opencode-ai/plugin": "^1.1.36",
|
|
45
45
|
"yaml": "^2.8.1",
|
|
46
46
|
"zod": "^4.3.5"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@agentuity/test-utils": "0.1.
|
|
49
|
+
"@agentuity/test-utils": "0.1.42",
|
|
50
50
|
"@types/bun": "latest",
|
|
51
51
|
"bun-types": "latest",
|
|
52
52
|
"typescript": "^5.9.0"
|
package/src/agents/lead.ts
CHANGED
|
@@ -882,10 +882,9 @@ agentuity cloud queue publish agentuity-cadence-work '{
|
|
|
882
882
|
}'
|
|
883
883
|
\`\`\`
|
|
884
884
|
|
|
885
|
-
Check on child teams:
|
|
885
|
+
Check on child teams by querying KV state directly:
|
|
886
886
|
\`\`\`bash
|
|
887
|
-
agentuity
|
|
888
|
-
agentuity ai cadence status lp_child
|
|
887
|
+
agentuity cloud kv get agentuity-opencode-tasks "loop:lp_child:state" --json
|
|
889
888
|
\`\`\`
|
|
890
889
|
|
|
891
890
|
### Context Management
|
|
@@ -107,6 +107,7 @@ export function createCadenceHooks(ctx: PluginInput, _config: CoderConfig): Cade
|
|
|
107
107
|
);
|
|
108
108
|
if (statusMatch) {
|
|
109
109
|
const [, loopId, iteration, maxIterations] = statusMatch;
|
|
110
|
+
if (!iteration || !maxIterations) return;
|
|
110
111
|
const newIteration = parseInt(iteration, 10);
|
|
111
112
|
const newMax = parseInt(maxIterations, 10);
|
|
112
113
|
const changed =
|
|
@@ -127,7 +128,7 @@ export function createCadenceHooks(ctx: PluginInput, _config: CoderConfig): Cade
|
|
|
127
128
|
|
|
128
129
|
// Fallback: try to extract iteration from loose "iteration: N" pattern
|
|
129
130
|
const iterMatch = messageText.match(/iteration[:\s]+(\d+)/i);
|
|
130
|
-
if (iterMatch) {
|
|
131
|
+
if (iterMatch && iterMatch[1]) {
|
|
131
132
|
const newIteration = parseInt(iterMatch[1], 10);
|
|
132
133
|
if (newIteration !== state.iteration) {
|
|
133
134
|
state.iteration = newIteration;
|
package/src/plugin/plugin.ts
CHANGED
|
@@ -106,7 +106,17 @@ export async function createCoderPlugin(ctx: PluginInput): Promise<Hooks> {
|
|
|
106
106
|
// Create plugin tools using the @opencode-ai/plugin tool helper
|
|
107
107
|
const tools = createTools(backgroundManager);
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
// Create a logger for shutdown handler
|
|
110
|
+
const shutdownLogger = (message: string) =>
|
|
111
|
+
ctx.client.app.log({
|
|
112
|
+
body: {
|
|
113
|
+
service: 'agentuity-coder',
|
|
114
|
+
level: 'info',
|
|
115
|
+
message: `[shutdown] ${message}`,
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
registerShutdownHandler(backgroundManager, tmuxManager, shutdownLogger);
|
|
110
120
|
|
|
111
121
|
// Show startup toast (fire and forget, don't block)
|
|
112
122
|
try {
|
|
@@ -647,18 +657,59 @@ function extractEventFromInput(
|
|
|
647
657
|
|
|
648
658
|
function registerShutdownHandler(
|
|
649
659
|
manager: BackgroundManager,
|
|
650
|
-
tmuxManager?: TmuxSessionManager
|
|
660
|
+
tmuxManager?: TmuxSessionManager,
|
|
661
|
+
logger?: (msg: string) => void
|
|
651
662
|
): void {
|
|
652
|
-
if (typeof process === 'undefined')
|
|
653
|
-
|
|
654
|
-
|
|
663
|
+
if (typeof process === 'undefined') {
|
|
664
|
+
logger?.('[shutdown] process is undefined, cannot register handlers');
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
const log = logger ?? (() => {});
|
|
669
|
+
let shutdownCalled = false;
|
|
670
|
+
|
|
671
|
+
log(
|
|
672
|
+
`Registering shutdown handlers (PID: ${process.pid}, tmuxManager: ${tmuxManager ? 'yes' : 'no'})`
|
|
673
|
+
);
|
|
674
|
+
log(`Current tracked sessions in tmuxManager: ${tmuxManager ? 'checking...' : 'N/A'}`);
|
|
675
|
+
|
|
676
|
+
const shutdown = (signal?: string) => {
|
|
677
|
+
// Prevent multiple shutdown calls
|
|
678
|
+
if (shutdownCalled) {
|
|
679
|
+
log(`Shutdown already in progress, ignoring ${signal ?? 'unknown'} signal`);
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
shutdownCalled = true;
|
|
683
|
+
|
|
684
|
+
log(`Shutdown triggered by ${signal ?? 'unknown'} signal`);
|
|
685
|
+
|
|
686
|
+
try {
|
|
687
|
+
log('Shutting down background manager...');
|
|
688
|
+
manager.shutdown();
|
|
689
|
+
log('Background manager shutdown complete');
|
|
690
|
+
} catch (error) {
|
|
691
|
+
log(`Background manager shutdown error: ${error}`);
|
|
692
|
+
}
|
|
693
|
+
|
|
655
694
|
if (tmuxManager) {
|
|
656
|
-
|
|
657
|
-
|
|
695
|
+
try {
|
|
696
|
+
log('Cleaning up tmux sessions...');
|
|
697
|
+
// Use sync version to ensure cleanup completes before process exits
|
|
698
|
+
tmuxManager.cleanupSync();
|
|
699
|
+
log('Tmux cleanup complete');
|
|
700
|
+
} catch (error) {
|
|
701
|
+
log(`Tmux cleanup error: ${error}`);
|
|
702
|
+
}
|
|
658
703
|
}
|
|
704
|
+
|
|
705
|
+
log('Shutdown complete');
|
|
659
706
|
};
|
|
660
|
-
|
|
661
|
-
process.once('
|
|
662
|
-
process.once('
|
|
663
|
-
process.once('
|
|
707
|
+
|
|
708
|
+
process.once('beforeExit', () => shutdown('beforeExit'));
|
|
709
|
+
process.once('SIGINT', () => shutdown('SIGINT'));
|
|
710
|
+
process.once('SIGTERM', () => shutdown('SIGTERM'));
|
|
711
|
+
process.once('SIGHUP', () => shutdown('SIGHUP')); // Handle tmux pane close
|
|
712
|
+
process.once('exit', () => shutdown('exit')); // Also handle exit event for extra safety
|
|
713
|
+
|
|
714
|
+
log('Shutdown handlers registered for: beforeExit, SIGINT, SIGTERM, SIGHUP, exit');
|
|
664
715
|
}
|
|
@@ -13,7 +13,7 @@ export function parseFrontmatter<T = Record<string, unknown>>(
|
|
|
13
13
|
return { data: {} as T, body: content.trim() };
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
const frontmatter = match[1];
|
|
16
|
+
const frontmatter = match[1] ?? '';
|
|
17
17
|
const body = content.slice(match[0].length).trim();
|
|
18
18
|
|
|
19
19
|
try {
|