@coralai/sps-cli 0.8.1 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +830 -47
  2. package/dist/commands/doctor.d.ts.map +1 -1
  3. package/dist/commands/doctor.js +164 -7
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/workerDashboard.d.ts +2 -0
  6. package/dist/commands/workerDashboard.d.ts.map +1 -0
  7. package/dist/commands/workerDashboard.js +415 -0
  8. package/dist/commands/workerDashboard.js.map +1 -0
  9. package/dist/core/state.d.ts +6 -0
  10. package/dist/core/state.d.ts.map +1 -1
  11. package/dist/core/state.js +1 -0
  12. package/dist/core/state.js.map +1 -1
  13. package/dist/engines/CloseoutEngine.d.ts +7 -0
  14. package/dist/engines/CloseoutEngine.d.ts.map +1 -1
  15. package/dist/engines/CloseoutEngine.js +85 -38
  16. package/dist/engines/CloseoutEngine.js.map +1 -1
  17. package/dist/engines/ExecutionEngine.d.ts +10 -2
  18. package/dist/engines/ExecutionEngine.d.ts.map +1 -1
  19. package/dist/engines/ExecutionEngine.js +46 -50
  20. package/dist/engines/ExecutionEngine.js.map +1 -1
  21. package/dist/engines/SchedulerEngine.d.ts +5 -0
  22. package/dist/engines/SchedulerEngine.d.ts.map +1 -1
  23. package/dist/engines/SchedulerEngine.js +15 -5
  24. package/dist/engines/SchedulerEngine.js.map +1 -1
  25. package/dist/interfaces/RepoBackend.d.ts +1 -0
  26. package/dist/interfaces/RepoBackend.d.ts.map +1 -1
  27. package/dist/interfaces/WorkerProvider.d.ts +16 -0
  28. package/dist/interfaces/WorkerProvider.d.ts.map +1 -1
  29. package/dist/main.js +12 -2
  30. package/dist/main.js.map +1 -1
  31. package/dist/providers/ClaudeWorkerProvider.d.ts +13 -3
  32. package/dist/providers/ClaudeWorkerProvider.d.ts.map +1 -1
  33. package/dist/providers/ClaudeWorkerProvider.js +21 -8
  34. package/dist/providers/ClaudeWorkerProvider.js.map +1 -1
  35. package/dist/providers/CodexWorkerProvider.d.ts +11 -1
  36. package/dist/providers/CodexWorkerProvider.d.ts.map +1 -1
  37. package/dist/providers/CodexWorkerProvider.js +19 -4
  38. package/dist/providers/CodexWorkerProvider.js.map +1 -1
  39. package/dist/providers/GitLabRepoBackend.d.ts +1 -0
  40. package/dist/providers/GitLabRepoBackend.d.ts.map +1 -1
  41. package/dist/providers/GitLabRepoBackend.js +36 -0
  42. package/dist/providers/GitLabRepoBackend.js.map +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,415 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { existsSync, readdirSync } from 'node:fs';
3
+ import { resolve } from 'node:path';
4
+ import { ProjectContext } from '../core/context.js';
5
+ import { readState } from '../core/state.js';
6
+ const HOME = process.env.HOME || '/home/coral';
7
+ // ── tmux helpers ──────────────────────────────────────────────────────
8
+ function tmux(args) {
9
+ try {
10
+ return execFileSync('tmux', args, {
11
+ encoding: 'utf-8',
12
+ timeout: 5_000,
13
+ stdio: ['ignore', 'pipe', 'pipe'],
14
+ });
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ function listTmuxSessions() {
21
+ const out = tmux(['list-sessions', '-F', '#{session_name}']);
22
+ if (!out)
23
+ return [];
24
+ return out.trim().split('\n').filter(Boolean);
25
+ }
26
+ function capturePaneText(session, lines) {
27
+ return tmux(['capture-pane', '-t', session, '-p', '-S', `-${lines}`]) ?? '';
28
+ }
29
+ function getSessionDimensions(session) {
30
+ const out = tmux(['display-message', '-t', session, '-p', '#{window_width},#{window_height}']);
31
+ if (!out)
32
+ return { cols: 0, rows: 0 };
33
+ const [cols, rows] = out.trim().split(',').map(Number);
34
+ return { cols: cols || 0, rows: rows || 0 };
35
+ }
36
+ // ── ANSI helpers ──────────────────────────────────────────────────────
37
+ const RESET = '\x1b[0m';
38
+ const BOLD = '\x1b[1m';
39
+ const DIM = '\x1b[2m';
40
+ const FG = {
41
+ red: '\x1b[31m',
42
+ green: '\x1b[32m',
43
+ yellow: '\x1b[33m',
44
+ blue: '\x1b[34m',
45
+ magenta: '\x1b[35m',
46
+ cyan: '\x1b[36m',
47
+ white: '\x1b[37m',
48
+ gray: '\x1b[90m',
49
+ };
50
+ const BG = {
51
+ black: '\x1b[40m',
52
+ };
53
+ function statusColor(status) {
54
+ switch (status) {
55
+ case 'active': return FG.green;
56
+ case 'idle': return FG.gray;
57
+ case 'releasing': return FG.yellow;
58
+ default: return FG.white;
59
+ }
60
+ }
61
+ function statusIcon(status) {
62
+ switch (status) {
63
+ case 'active': return '●';
64
+ case 'idle': return '○';
65
+ case 'releasing': return '◐';
66
+ default: return '?';
67
+ }
68
+ }
69
+ function sessionStatusIcon(alive) {
70
+ return alive ? `${FG.green}▶${RESET}` : `${FG.red}■${RESET}`;
71
+ }
72
+ // ── Strip ANSI escape codes for width calculations ────────────────────
73
+ function stripAnsi(s) {
74
+ return s.replace(/\x1b\[[0-9;]*m/g, '');
75
+ }
76
+ function visibleLength(s) {
77
+ return stripAnsi(s).length;
78
+ }
79
+ // ── Pad / truncate to visible width ──────────────────────────────────
80
+ function padOrTruncate(s, width) {
81
+ const vLen = visibleLength(s);
82
+ if (vLen > width) {
83
+ // Truncate: walk character by character, tracking visible length
84
+ let visible = 0;
85
+ let result = '';
86
+ let inEscape = false;
87
+ for (const ch of s) {
88
+ if (ch === '\x1b') {
89
+ inEscape = true;
90
+ result += ch;
91
+ continue;
92
+ }
93
+ if (inEscape) {
94
+ result += ch;
95
+ if (/[a-zA-Z]/.test(ch))
96
+ inEscape = false;
97
+ continue;
98
+ }
99
+ if (visible >= width - 1) {
100
+ result += '…';
101
+ break;
102
+ }
103
+ result += ch;
104
+ visible++;
105
+ }
106
+ return result;
107
+ }
108
+ return s + ' '.repeat(width - vLen);
109
+ }
110
+ // ── Discover all SPS projects from ~/.projects/ ──────────────────────
111
+ function discoverProjects() {
112
+ const projectsDir = resolve(HOME, '.projects');
113
+ if (!existsSync(projectsDir))
114
+ return [];
115
+ try {
116
+ return readdirSync(projectsDir, { withFileTypes: true })
117
+ .filter(d => d.isDirectory() && existsSync(resolve(projectsDir, d.name, 'conf')))
118
+ .map(d => d.name)
119
+ .sort();
120
+ }
121
+ catch {
122
+ return [];
123
+ }
124
+ }
125
+ function collectPanels(projects) {
126
+ const panels = [];
127
+ const allSessions = new Set(listTmuxSessions());
128
+ for (const projectName of projects) {
129
+ let ctx;
130
+ try {
131
+ ctx = ProjectContext.load(projectName);
132
+ }
133
+ catch {
134
+ continue;
135
+ }
136
+ const state = readState(ctx.paths.stateFile, ctx.maxWorkers);
137
+ for (const [slotName, slot] of Object.entries(state.workers)) {
138
+ const sessionName = slot.tmuxSession || `${projectName}-${slotName}`;
139
+ const sessionAlive = allSessions.has(sessionName);
140
+ // Only show panels with active slots or live tmux sessions
141
+ if (slot.status === 'idle' && !sessionAlive)
142
+ continue;
143
+ const paneText = sessionAlive ? capturePaneText(sessionName, 30) : '';
144
+ const paneLines = paneText.split('\n');
145
+ panels.push({
146
+ projectName,
147
+ slotName,
148
+ slot,
149
+ sessionAlive,
150
+ paneLines,
151
+ });
152
+ }
153
+ }
154
+ return panels;
155
+ }
156
+ // ── Render dashboard ─────────────────────────────────────────────────
157
+ function renderHeader(termWidth) {
158
+ const title = ' SPS Worker Dashboard ';
159
+ const now = new Date().toLocaleTimeString();
160
+ const rightInfo = `${DIM}${now} q=quit r=refresh${RESET}`;
161
+ const rightLen = visibleLength(rightInfo);
162
+ const leftPad = Math.max(0, Math.floor((termWidth - title.length) / 2));
163
+ return [
164
+ `${BOLD}${FG.cyan}${'─'.repeat(termWidth)}${RESET}`,
165
+ `${' '.repeat(leftPad)}${BOLD}${FG.cyan}${title}${RESET}${' '.repeat(Math.max(0, termWidth - leftPad - title.length - rightLen))}${rightInfo}`,
166
+ `${BOLD}${FG.cyan}${'─'.repeat(termWidth)}${RESET}`,
167
+ ];
168
+ }
169
+ function renderPanel(panel, panelWidth, panelHeight) {
170
+ const lines = [];
171
+ const innerWidth = panelWidth - 2; // borders
172
+ // ── Header bar ──
173
+ const sIcon = statusIcon(panel.slot.status);
174
+ const sColor = statusColor(panel.slot.status);
175
+ const aliveIcon = sessionStatusIcon(panel.sessionAlive);
176
+ const seqInfo = panel.slot.seq !== null ? ` seq:${panel.slot.seq}` : '';
177
+ const branchInfo = panel.slot.branch ? ` ${DIM}${panel.slot.branch}${RESET}` : '';
178
+ const headerText = `${sColor}${sIcon} ${BOLD}${panel.projectName}/${panel.slotName}${RESET}${seqInfo} ${aliveIcon}${branchInfo}`;
179
+ const headerLine = ` ${padOrTruncate(headerText, innerWidth)} `;
180
+ // ── Time info ──
181
+ const elapsed = panel.slot.claimedAt
182
+ ? formatElapsed(new Date(panel.slot.claimedAt))
183
+ : '';
184
+ const heartbeat = panel.slot.lastHeartbeat
185
+ ? `hb: ${formatElapsed(new Date(panel.slot.lastHeartbeat))} ago`
186
+ : '';
187
+ const timeLine = elapsed || heartbeat
188
+ ? ` ${DIM}${[elapsed, heartbeat].filter(Boolean).join(' │ ')}${RESET}`
189
+ : '';
190
+ // Top border
191
+ lines.push(`${FG.gray}┌${'─'.repeat(panelWidth - 2)}┐${RESET}`);
192
+ lines.push(`${FG.gray}│${RESET}${padOrTruncate(headerText, innerWidth)}${FG.gray}│${RESET}`);
193
+ if (timeLine) {
194
+ lines.push(`${FG.gray}│${RESET}${padOrTruncate(timeLine, innerWidth)}${FG.gray}│${RESET}`);
195
+ }
196
+ lines.push(`${FG.gray}├${'─'.repeat(panelWidth - 2)}┤${RESET}`);
197
+ // ── Pane content ──
198
+ const contentHeight = panelHeight - lines.length - 1; // -1 for bottom border
199
+ const trimmedLines = panel.paneLines
200
+ .filter(l => l.trim() !== '') // skip empty lines
201
+ .slice(-contentHeight); // show last N lines
202
+ for (let i = 0; i < contentHeight; i++) {
203
+ const raw = trimmedLines[i] ?? '';
204
+ const content = padOrTruncate(`${DIM}${raw}${RESET}`, innerWidth);
205
+ lines.push(`${FG.gray}│${RESET}${content}${FG.gray}│${RESET}`);
206
+ }
207
+ // Bottom border
208
+ lines.push(`${FG.gray}└${'─'.repeat(panelWidth - 2)}┘${RESET}`);
209
+ return lines;
210
+ }
211
+ function renderIdleSummary(projects, termWidth) {
212
+ const lines = [];
213
+ for (const projectName of projects) {
214
+ let ctx;
215
+ try {
216
+ ctx = ProjectContext.load(projectName);
217
+ }
218
+ catch {
219
+ continue;
220
+ }
221
+ const state = readState(ctx.paths.stateFile, ctx.maxWorkers);
222
+ const total = Object.keys(state.workers).length;
223
+ const idle = Object.values(state.workers).filter(w => w.status === 'idle').length;
224
+ const active = Object.values(state.workers).filter(w => w.status === 'active').length;
225
+ const activeCards = Object.keys(state.activeCards).length;
226
+ lines.push(` ${BOLD}${projectName}${RESET}: ${FG.green}${active} active${RESET} / ${FG.gray}${idle} idle${RESET} / ${total} total │ ${FG.cyan}${activeCards} cards${RESET}`);
227
+ }
228
+ return lines;
229
+ }
230
+ function renderEmptyState(termWidth) {
231
+ return [
232
+ '',
233
+ `${DIM} No active workers found.${RESET}`,
234
+ `${DIM} All worker slots are idle across all projects.${RESET}`,
235
+ '',
236
+ `${DIM} Tip: Start a pipeline with ${RESET}sps tick <project>${DIM} to launch workers.${RESET}`,
237
+ '',
238
+ ];
239
+ }
240
+ function formatElapsed(from) {
241
+ const ms = Date.now() - from.getTime();
242
+ if (ms < 0)
243
+ return '';
244
+ const secs = Math.floor(ms / 1000);
245
+ if (secs < 60)
246
+ return `${secs}s`;
247
+ const mins = Math.floor(secs / 60);
248
+ if (mins < 60)
249
+ return `${mins}m${secs % 60}s`;
250
+ const hours = Math.floor(mins / 60);
251
+ return `${hours}h${mins % 60}m`;
252
+ }
253
+ function getTerminalSize() {
254
+ return {
255
+ cols: process.stdout.columns || 120,
256
+ rows: process.stdout.rows || 40,
257
+ };
258
+ }
259
+ function renderDashboard(projects) {
260
+ const { cols: termWidth, rows: termHeight } = getTerminalSize();
261
+ const output = [];
262
+ // Header
263
+ output.push(...renderHeader(termWidth));
264
+ // Summary line
265
+ output.push('');
266
+ output.push(...renderIdleSummary(projects, termWidth));
267
+ output.push('');
268
+ // Collect active panels
269
+ const panels = collectPanels(projects);
270
+ if (panels.length === 0) {
271
+ output.push(...renderEmptyState(termWidth));
272
+ return output.join('\n');
273
+ }
274
+ // Calculate grid layout
275
+ const gridCols = panels.length <= 2 ? panels.length : panels.length <= 4 ? 2 : 3;
276
+ const gridRows = Math.ceil(panels.length / gridCols);
277
+ const panelWidth = Math.floor((termWidth - 1) / gridCols); // -1 for spacing
278
+ const usedHeaderRows = output.length;
279
+ const availableRows = termHeight - usedHeaderRows - 2; // -2 for footer
280
+ const panelHeight = Math.max(10, Math.floor(availableRows / gridRows));
281
+ // Render panels row by row
282
+ for (let row = 0; row < gridRows; row++) {
283
+ const rowPanels = [];
284
+ for (let col = 0; col < gridCols; col++) {
285
+ const idx = row * gridCols + col;
286
+ if (idx < panels.length) {
287
+ rowPanels.push(renderPanel(panels[idx], panelWidth, panelHeight));
288
+ }
289
+ else {
290
+ // Empty filler
291
+ rowPanels.push(Array(panelHeight + 2).fill(' '.repeat(panelWidth)));
292
+ }
293
+ }
294
+ // Merge columns side by side
295
+ const maxLines = Math.max(...rowPanels.map(p => p.length));
296
+ for (let line = 0; line < maxLines; line++) {
297
+ const merged = rowPanels
298
+ .map(p => p[line] ?? ' '.repeat(panelWidth))
299
+ .join(' ');
300
+ output.push(merged);
301
+ }
302
+ }
303
+ return output.join('\n');
304
+ }
305
+ function buildJsonOutput(projects) {
306
+ const allSessions = new Set(listTmuxSessions());
307
+ const result = {
308
+ timestamp: new Date().toISOString(),
309
+ projects: [],
310
+ tmuxSessions: [...allSessions].sort(),
311
+ };
312
+ for (const projectName of projects) {
313
+ let ctx;
314
+ try {
315
+ ctx = ProjectContext.load(projectName);
316
+ }
317
+ catch {
318
+ continue;
319
+ }
320
+ const state = readState(ctx.paths.stateFile, ctx.maxWorkers);
321
+ const workers = [];
322
+ for (const [slotName, slot] of Object.entries(state.workers)) {
323
+ const sessionName = slot.tmuxSession || `${projectName}-${slotName}`;
324
+ const sessionAlive = allSessions.has(sessionName);
325
+ const panePreview = sessionAlive
326
+ ? capturePaneText(sessionName, 5).trim()
327
+ : '';
328
+ workers.push({
329
+ slot: slotName,
330
+ status: slot.status,
331
+ seq: slot.seq,
332
+ branch: slot.branch,
333
+ tmuxSession: slot.tmuxSession,
334
+ sessionAlive,
335
+ claimedAt: slot.claimedAt,
336
+ lastHeartbeat: slot.lastHeartbeat,
337
+ panePreview,
338
+ });
339
+ }
340
+ result.projects.push({
341
+ name: projectName,
342
+ workers,
343
+ activeCards: state.activeCards,
344
+ });
345
+ }
346
+ return result;
347
+ }
348
+ // ── Live mode (watch) ────────────────────────────────────────────────
349
+ async function runLive(projects, intervalMs) {
350
+ // Hide cursor
351
+ process.stdout.write('\x1b[?25l');
352
+ // Restore cursor on exit
353
+ const cleanup = () => {
354
+ process.stdout.write('\x1b[?25h'); // show cursor
355
+ process.stdout.write('\x1b[0m'); // reset colors
356
+ process.exit(0);
357
+ };
358
+ process.on('SIGINT', cleanup);
359
+ process.on('SIGTERM', cleanup);
360
+ // Enable raw mode for keypress detection
361
+ if (process.stdin.isTTY) {
362
+ process.stdin.setRawMode(true);
363
+ process.stdin.resume();
364
+ process.stdin.setEncoding('utf-8');
365
+ process.stdin.on('data', (key) => {
366
+ if (key === 'q' || key === '\x03') { // q or Ctrl+C
367
+ cleanup();
368
+ }
369
+ if (key === 'r') {
370
+ // Force immediate refresh
371
+ draw();
372
+ }
373
+ });
374
+ }
375
+ const draw = () => {
376
+ const screen = renderDashboard(projects);
377
+ // Clear screen and move cursor to top-left
378
+ process.stdout.write('\x1b[2J\x1b[H');
379
+ process.stdout.write(screen);
380
+ };
381
+ draw();
382
+ setInterval(draw, intervalMs);
383
+ // Block forever
384
+ return new Promise(() => { });
385
+ }
386
+ // ── Main entry point ─────────────────────────────────────────────────
387
+ export async function executeWorkerDashboard(projects, flags) {
388
+ const jsonOutput = !!flags.json;
389
+ const watch = !flags.once; // default to live mode unless --once
390
+ // If no projects specified, discover all
391
+ if (projects.length === 0) {
392
+ projects = discoverProjects();
393
+ }
394
+ if (projects.length === 0) {
395
+ if (jsonOutput) {
396
+ console.log(JSON.stringify({ timestamp: new Date().toISOString(), projects: [], tmuxSessions: [] }));
397
+ }
398
+ else {
399
+ console.error('No projects found in ~/.projects/');
400
+ }
401
+ process.exit(1);
402
+ }
403
+ if (jsonOutput) {
404
+ console.log(JSON.stringify(buildJsonOutput(projects), null, 2));
405
+ return;
406
+ }
407
+ if (watch) {
408
+ const intervalMs = parseInt(process.env.SPS_DASHBOARD_INTERVAL || '3000', 10);
409
+ await runLive(projects, intervalMs);
410
+ }
411
+ else {
412
+ console.log(renderDashboard(projects));
413
+ }
414
+ }
415
+ //# sourceMappingURL=workerDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerDashboard.js","sourceRoot":"","sources":["../../src/commands/workerDashboard.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,11 @@ export interface ActiveCardState {
15
15
  conflictDomains: string[];
16
16
  startedAt: string;
17
17
  }
18
+ export interface WorktreeCleanupEntry {
19
+ branch: string;
20
+ worktreePath: string;
21
+ markedAt: string;
22
+ }
18
23
  export interface RuntimeState {
19
24
  version: number;
20
25
  generation: number;
@@ -22,6 +27,7 @@ export interface RuntimeState {
22
27
  updatedBy: string;
23
28
  workers: Record<string, WorkerSlotState>;
24
29
  activeCards: Record<string, ActiveCardState>;
30
+ worktreeCleanup: WorktreeCleanupEntry[];
25
31
  }
26
32
  export declare function readState(stateFile: string, maxWorkers: number): RuntimeState;
27
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAyBD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAU7E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAW1F"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,eAAe,EAAE,oBAAoB,EAAE,CAAC;CACzC;AA0BD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAU7E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAW1F"}
@@ -20,6 +20,7 @@ function defaultState(maxWorkers) {
20
20
  updatedBy: 'init',
21
21
  workers,
22
22
  activeCards: {},
23
+ worktreeCleanup: [],
23
24
  };
24
25
  }
25
26
  export function readState(stateFile, maxWorkers) {
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAC;AA8B7C,SAAS,YAAY,CAAC,UAAkB;IACtC,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;YACvB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,MAAM;QACjB,OAAO;QACP,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,UAAkB;IAC7D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,KAAmB,EAAE,SAAiB;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAE5B,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACnC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAC;AAqC7C,SAAS,YAAY,CAAC,UAAkB;IACtC,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;YACvB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,MAAM;QACjB,OAAO;QACP,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,UAAkB;IAC7D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,KAAmB,EAAE,SAAiB;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAE5B,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACnC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACjC,CAAC"}
@@ -50,6 +50,13 @@ export declare class CloseoutEngine {
50
50
  * Returns true if resolution was initiated (wait for next tick to verify).
51
51
  */
52
52
  private resolveConflict;
53
+ /**
54
+ * Process the worktreeCleanup queue: remove worktree directories and
55
+ * delete local branches that have been merged.
56
+ *
57
+ * Each entry is processed independently — one failure does not block others.
58
+ */
59
+ private cleanupWorktrees;
53
60
  private buildBranchName;
54
61
  private markNeedsFix;
55
62
  private addLabelSafe;
@@ -1 +1 @@
1
- {"version":3,"file":"CloseoutEngine.d.ts","sourceRoot":"","sources":["../../src/engines/CloseoutEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,oBAAoB,CAAC;AAI/F;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ,CAAC;IAPnB,OAAO,CAAC,GAAG,CAAS;gBAGV,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,QAAQ,YAAA;IAKvB,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;YAkEtB,aAAa;YAoDb,aAAa;YAkHb,eAAe;YAmFf,YAAY;IAyC1B;;;;;;;;;;OAUG;YACW,cAAc;IA0H5B;;;;;OAKG;YACW,eAAe;IAuF7B,OAAO,CAAC,eAAe;YAST,YAAY;YAMZ,YAAY;YASZ,WAAW;YASX,UAAU;IAYxB,OAAO,CAAC,QAAQ;CAcjB"}
1
+ {"version":3,"file":"CloseoutEngine.d.ts","sourceRoot":"","sources":["../../src/engines/CloseoutEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,oBAAoB,CAAC;AAK/F;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ,CAAC;IAPnB,OAAO,CAAC,GAAG,CAAS;gBAGV,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,QAAQ,YAAA;IAKvB,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;YAoEtB,aAAa;YAoDb,aAAa;YAkHb,eAAe;YAmFf,YAAY;IAyC1B;;;;;;;;;;OAUG;YACW,cAAc;IA0H5B;;;;;OAKG;YACW,eAAe;IAuF7B;;;;;OAKG;YACW,gBAAgB;IA4C9B,OAAO,CAAC,eAAe;YAST,YAAY;YAMZ,YAAY;YASZ,WAAW;YASX,UAAU;IAYxB,OAAO,CAAC,QAAQ;CAcjB"}