steroids-cli 0.9.11 → 0.9.12

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 (49) hide show
  1. package/dist/parallel/merge-commit-checks.d.ts +6 -0
  2. package/dist/parallel/merge-commit-checks.d.ts.map +1 -0
  3. package/dist/parallel/merge-commit-checks.js +28 -0
  4. package/dist/parallel/merge-commit-checks.js.map +1 -0
  5. package/dist/parallel/merge-process.d.ts +21 -0
  6. package/dist/parallel/merge-process.d.ts.map +1 -0
  7. package/dist/parallel/merge-process.js +104 -0
  8. package/dist/parallel/merge-process.js.map +1 -0
  9. package/dist/parallel/merge-sealing.d.ts +11 -0
  10. package/dist/parallel/merge-sealing.d.ts.map +1 -0
  11. package/dist/parallel/merge-sealing.js +64 -0
  12. package/dist/parallel/merge-sealing.js.map +1 -0
  13. package/dist/parallel/merge-validation.d.ts +6 -0
  14. package/dist/parallel/merge-validation.d.ts.map +1 -0
  15. package/dist/parallel/merge-validation.js +57 -0
  16. package/dist/parallel/merge-validation.js.map +1 -0
  17. package/dist/parallel/merge-workspace.d.ts +8 -0
  18. package/dist/parallel/merge-workspace.d.ts.map +1 -0
  19. package/dist/parallel/merge-workspace.js +37 -0
  20. package/dist/parallel/merge-workspace.js.map +1 -0
  21. package/dist/parallel/merge.d.ts +2 -5
  22. package/dist/parallel/merge.d.ts.map +1 -1
  23. package/dist/parallel/merge.js +14 -245
  24. package/dist/parallel/merge.js.map +1 -1
  25. package/dist/runners/wakeup-checks.d.ts +14 -0
  26. package/dist/runners/wakeup-checks.d.ts.map +1 -0
  27. package/dist/runners/wakeup-checks.js +85 -0
  28. package/dist/runners/wakeup-checks.js.map +1 -0
  29. package/dist/runners/wakeup-reconcile.d.ts +10 -0
  30. package/dist/runners/wakeup-reconcile.d.ts.map +1 -0
  31. package/dist/runners/wakeup-reconcile.js +84 -0
  32. package/dist/runners/wakeup-reconcile.js.map +1 -0
  33. package/dist/runners/wakeup-runner.d.ts +18 -0
  34. package/dist/runners/wakeup-runner.d.ts.map +1 -0
  35. package/dist/runners/wakeup-runner.js +47 -0
  36. package/dist/runners/wakeup-runner.js.map +1 -0
  37. package/dist/runners/wakeup-sanitise.d.ts +24 -0
  38. package/dist/runners/wakeup-sanitise.d.ts.map +1 -0
  39. package/dist/runners/wakeup-sanitise.js +247 -0
  40. package/dist/runners/wakeup-sanitise.js.map +1 -0
  41. package/dist/runners/wakeup-timing.d.ts +12 -0
  42. package/dist/runners/wakeup-timing.d.ts.map +1 -0
  43. package/dist/runners/wakeup-timing.js +37 -0
  44. package/dist/runners/wakeup-timing.js.map +1 -0
  45. package/dist/runners/wakeup.d.ts +7 -8
  46. package/dist/runners/wakeup.d.ts.map +1 -1
  47. package/dist/runners/wakeup.js +26 -464
  48. package/dist/runners/wakeup.js.map +1 -1
  49. package/package.json +1 -1
@@ -3,14 +3,10 @@
3
3
  * Cron wake-up command for restarting stale/dead runners
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.hasActiveRunnerForProject = hasActiveRunnerForProject;
7
- exports.hasActiveParallelSessionForProject = hasActiveParallelSessionForProject;
8
- exports.getLastWakeupTime = getLastWakeupTime;
6
+ exports.hasActiveParallelSessionForProject = exports.hasActiveRunnerForProject = exports.getLastWakeupTime = void 0;
9
7
  exports.wakeup = wakeup;
10
8
  exports.checkWakeupNeeded = checkWakeupNeeded;
11
9
  const node_fs_1 = require("node:fs");
12
- const node_path_1 = require("node:path");
13
- const node_child_process_1 = require("node:child_process");
14
10
  const lock_js_1 = require("./lock.js");
15
11
  const global_db_js_1 = require("./global-db.js");
16
12
  const heartbeat_js_1 = require("./heartbeat.js");
@@ -19,460 +15,21 @@ const connection_js_1 = require("../database/connection.js");
19
15
  const loader_js_1 = require("../config/loader.js");
20
16
  const stuck_task_recovery_js_1 = require("../health/stuck-task-recovery.js");
21
17
  const invocation_logs_js_1 = require("../cleanup/invocation-logs.js");
22
- const node_fs_2 = require("node:fs");
23
- const DEFAULT_SANITISE_INTERVAL_MINUTES = 5;
24
- const DEFAULT_SANITISE_INVOCATION_TIMEOUT_SEC = 1800;
25
- /**
26
- * Check if a project has pending work
27
- */
28
- async function projectHasPendingWork(projectPath) {
29
- const dbPath = (0, node_path_1.join)(projectPath, '.steroids', 'steroids.db');
30
- if (!(0, node_fs_1.existsSync)(dbPath)) {
31
- return false;
32
- }
33
- try {
34
- // Use dynamic import for ESM compatibility
35
- const { default: Database } = await import('better-sqlite3');
36
- const db = new Database(dbPath, { readonly: true });
37
- const result = db
38
- .prepare(`SELECT COUNT(*) as count FROM tasks
39
- WHERE status IN ('pending', 'in_progress', 'review')`)
40
- .get();
41
- db.close();
42
- return result.count > 0;
43
- }
44
- catch {
45
- return false;
46
- }
47
- }
48
- /**
49
- * Check if there's an active runner for a specific project
50
- * Exported for use in daemon startup checks
51
- */
52
- function hasActiveRunnerForProject(projectPath) {
53
- const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
54
- try {
55
- const row = db
56
- .prepare(`SELECT 1 FROM runners
57
- WHERE project_path = ?
58
- AND status != 'stopped'
59
- AND heartbeat_at > datetime('now', '-5 minutes')
60
- AND parallel_session_id IS NULL`)
61
- .get(projectPath);
62
- return row !== undefined;
63
- }
64
- finally {
65
- close();
66
- }
67
- }
68
- function hasActiveParallelSessionForProject(projectPath) {
69
- const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
70
- try {
71
- // Primary check: session record in non-terminal state.
72
- const sessionRow = db
73
- .prepare(`SELECT 1 FROM parallel_sessions
74
- WHERE project_path = ?
75
- AND status NOT IN ('completed', 'failed', 'aborted')
76
- LIMIT 1`)
77
- .get(projectPath);
78
- if (sessionRow !== undefined)
79
- return true;
80
- // Belt-and-suspenders: if any runner for this project has an active
81
- // parallel_session_id and a fresh heartbeat, treat it as active even if the
82
- // session record somehow ended up in a terminal state. This prevents wakeup
83
- // from spawning a new parallel session while workstream runners are still live.
84
- const runnerRow = db
85
- .prepare(`SELECT 1 FROM runners r
86
- JOIN parallel_sessions ps ON ps.id = r.parallel_session_id
87
- WHERE ps.project_path = ?
88
- AND r.status != 'stopped'
89
- AND r.heartbeat_at > datetime('now', '-5 minutes')
90
- LIMIT 1`)
91
- .get(projectPath);
92
- return runnerRow !== undefined;
93
- }
94
- finally {
95
- close();
96
- }
97
- }
98
- function releaseExpiredWorkstreamLeases(db) {
99
- const result = db.prepare(`UPDATE workstreams
100
- SET runner_id = NULL,
101
- lease_expires_at = NULL
102
- WHERE status = 'running'
103
- AND lease_expires_at IS NOT NULL
104
- AND lease_expires_at <= datetime('now')`).run();
105
- return result.changes;
106
- }
107
- function reconcileParallelSessionRecovery(db, projectPath) {
108
- const sessions = db
109
- .prepare(`SELECT id
110
- FROM parallel_sessions
111
- WHERE project_path = ?
112
- AND status NOT IN ('completed', 'failed', 'aborted', 'blocked_validation', 'blocked_recovery')`)
113
- .all(projectPath);
114
- let scheduledRetries = 0;
115
- let blockedWorkstreams = 0;
116
- for (const session of sessions) {
117
- let blockedInSession = 0;
118
- const candidates = db
119
- .prepare(`SELECT id, recovery_attempts
120
- FROM workstreams
121
- WHERE session_id = ?
122
- AND status = 'running'
123
- AND (lease_expires_at IS NULL OR lease_expires_at <= datetime('now'))
124
- AND (next_retry_at IS NULL OR next_retry_at <= datetime('now'))`)
125
- .all(session.id);
126
- for (const candidate of candidates) {
127
- const nextAttempts = (candidate.recovery_attempts ?? 0) + 1;
128
- if (nextAttempts >= 5) {
129
- db.prepare(`UPDATE workstreams
130
- SET status = 'failed',
131
- recovery_attempts = ?,
132
- next_retry_at = NULL,
133
- last_reconcile_action = 'blocked_recovery',
134
- last_reconciled_at = datetime('now')
135
- WHERE id = ?`).run(nextAttempts, candidate.id);
136
- blockedWorkstreams += 1;
137
- blockedInSession += 1;
138
- continue;
139
- }
140
- const backoffMinutes = Math.min(2 ** nextAttempts, 30);
141
- db.prepare(`UPDATE workstreams
142
- SET recovery_attempts = ?,
143
- next_retry_at = datetime('now', ?),
144
- last_reconcile_action = 'retry_scheduled',
145
- last_reconciled_at = datetime('now')
146
- WHERE id = ?`).run(nextAttempts, `+${backoffMinutes} minutes`, candidate.id);
147
- scheduledRetries += 1;
148
- }
149
- if (blockedInSession > 0) {
150
- db.prepare(`UPDATE parallel_sessions
151
- SET status = 'blocked_recovery',
152
- completed_at = NULL
153
- WHERE id = ?`).run(session.id);
154
- continue;
155
- }
156
- // If all workstreams are in a terminal state but the session is still marked
157
- // running (e.g. because autoMergeOnCompletion crashed before it could call
158
- // updateParallelSessionStatus), close it out now so wakeup doesn't block.
159
- const nonTerminal = db.prepare(`SELECT COUNT(*) as count FROM workstreams
160
- WHERE session_id = ? AND status NOT IN ('completed', 'failed', 'aborted')`).get(session.id);
161
- if (nonTerminal.count === 0) {
162
- const total = db.prepare(`SELECT COUNT(*) as count FROM workstreams WHERE session_id = ?`).get(session.id);
163
- if (total.count > 0) {
164
- // All workstreams finished — mark session completed so wakeup can move on.
165
- db.prepare(`UPDATE parallel_sessions
166
- SET status = 'completed',
167
- completed_at = COALESCE(completed_at, datetime('now'))
168
- WHERE id = ?`).run(session.id);
169
- }
170
- }
171
- }
172
- return { scheduledRetries, blockedWorkstreams };
173
- }
174
- /**
175
- * Kill a process by PID
176
- */
177
- function killProcess(pid) {
178
- try {
179
- process.kill(pid, 'SIGTERM');
180
- return true;
181
- }
182
- catch {
183
- return false;
184
- }
185
- }
186
- /**
187
- * Start a new runner daemon
188
- * Uses 'steroids runners start --detach' so the runner registers in the global DB
189
- * and updates heartbeat, allowing hasActiveRunnerForProject() to detect it.
190
- * When runners.parallel.enabled is true, launches a parallel session instead.
191
- */
192
- function startRunner(projectPath) {
193
- try {
194
- const config = (0, loader_js_1.loadConfig)(projectPath);
195
- const parallelEnabled = config.runners?.parallel?.enabled === true;
196
- const args = parallelEnabled
197
- ? ['runners', 'start', '--parallel', '--project', projectPath]
198
- : ['runners', 'start', '--detach', '--project', projectPath];
199
- const child = (0, node_child_process_1.spawn)('steroids', args, {
200
- cwd: projectPath,
201
- detached: true,
202
- stdio: 'ignore',
203
- });
204
- child.unref();
205
- return { pid: child.pid ?? 0, parallel: parallelEnabled };
206
- }
207
- catch {
208
- return null;
209
- }
210
- }
211
- function getSanitiseSettings(projectPath) {
212
- const config = (0, loader_js_1.loadConfig)(projectPath);
213
- const health = config.health ?? {};
214
- const enabled = health.sanitiseEnabled ?? true;
215
- const intervalMinutes = Math.max(1, Number(health.sanitiseIntervalMinutes ?? DEFAULT_SANITISE_INTERVAL_MINUTES));
216
- const staleInvocationTimeoutSec = Math.max(60, Number(health.sanitiseInvocationTimeoutSec ?? DEFAULT_SANITISE_INVOCATION_TIMEOUT_SEC));
217
- return { enabled, intervalMinutes, staleInvocationTimeoutSec };
218
- }
219
- function getSanitiseSchemaKey(projectPath) {
220
- return `wakeup_sanitise_last_run::${projectPath}`;
221
- }
222
- function shouldRunPeriodicSanitise(db, projectPath, intervalMinutes) {
223
- const key = getSanitiseSchemaKey(projectPath);
224
- const row = db
225
- .prepare('SELECT value FROM _global_schema WHERE key = ?')
226
- .get(key);
227
- if (!row?.value) {
228
- return true;
229
- }
230
- const due = db.prepare(`SELECT CASE
231
- WHEN datetime(?) <= datetime('now', ?)
232
- THEN 1 ELSE 0
233
- END AS due`).get(row.value, `-${intervalMinutes} minutes`);
234
- return (due?.due ?? 0) === 1;
235
- }
236
- function markPeriodicSanitiseRun(db, projectPath) {
237
- db.prepare(`INSERT INTO _global_schema (key, value) VALUES (?, datetime('now'))
238
- ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(getSanitiseSchemaKey(projectPath));
239
- }
240
- function parseReviewerDecisionFromLog(projectPath, invocationId) {
241
- const logPath = (0, node_path_1.join)(projectPath, '.steroids', 'invocations', `${invocationId}.log`);
242
- if (!(0, node_fs_1.existsSync)(logPath)) {
243
- return null;
244
- }
245
- try {
246
- const raw = (0, node_fs_2.readFileSync)(logPath, 'utf-8');
247
- if (raw.includes('DECISION: APPROVE')) {
248
- return 'approve';
249
- }
250
- if (raw.includes('DECISION: REJECT')) {
251
- return 'reject';
252
- }
253
- }
254
- catch {
255
- return null;
256
- }
257
- return null;
258
- }
259
- function sanitiseProjectState(globalDb, projectDb, projectPath, dryRun, staleInvocationTimeoutSec) {
260
- const summary = {
261
- ran: true,
262
- reason: 'ok',
263
- recoveredApprovals: 0,
264
- recoveredRejects: 0,
265
- closedStaleInvocations: 0,
266
- releasedTaskLocks: 0,
267
- releasedSectionLocks: 0,
268
- };
269
- const staleCutoffMs = Date.now() - staleInvocationTimeoutSec * 1000;
270
- const activeRunnerTaskRows = globalDb
271
- .prepare(`SELECT current_task_id, parallel_session_id
272
- FROM runners
273
- WHERE project_path = ?
274
- AND status = 'running'
275
- AND heartbeat_at > datetime('now', '-5 minutes')
276
- AND (current_task_id IS NOT NULL OR parallel_session_id IS NOT NULL)`)
277
- .all(projectPath);
278
- const activeTaskIds = new Set(activeRunnerTaskRows
279
- .map((row) => row.current_task_id)
280
- .filter((taskId) => typeof taskId === 'string' && taskId.length > 0));
281
- const hasActiveParallelRunner = activeRunnerTaskRows.some((row) => typeof row.parallel_session_id === 'string' && row.parallel_session_id.length > 0);
282
- let hasActiveMergeLock = false;
283
- try {
284
- const mergeLockRows = projectDb
285
- .prepare('SELECT expires_at FROM merge_locks')
286
- .all();
287
- const nowMs = Date.now();
288
- hasActiveMergeLock = mergeLockRows.some((row) => {
289
- const expiresAtMs = Date.parse(row.expires_at);
290
- return Number.isFinite(expiresAtMs) && expiresAtMs > nowMs;
291
- });
292
- }
293
- catch {
294
- hasActiveMergeLock = false;
295
- }
296
- const hasActiveParallelContext = hasActiveParallelRunner || hasActiveMergeLock;
297
- const staleInvocations = projectDb
298
- .prepare(`SELECT i.id, i.task_id, i.role, i.started_at_ms, t.status AS task_status
299
- FROM task_invocations i
300
- LEFT JOIN tasks t ON t.id = i.task_id
301
- WHERE i.status = 'running'
302
- AND i.started_at_ms IS NOT NULL
303
- AND i.started_at_ms <= ?
304
- ORDER BY i.started_at_ms ASC`)
305
- .all(staleCutoffMs);
306
- for (const row of staleInvocations) {
307
- if (activeTaskIds.has(row.task_id) || hasActiveParallelContext) {
308
- continue;
309
- }
310
- const completedAtMs = Date.now();
311
- const durationMs = Math.max(0, completedAtMs - row.started_at_ms);
312
- const reviewerDecision = row.role === 'reviewer'
313
- ? parseReviewerDecisionFromLog(projectPath, row.id)
314
- : null;
315
- if (!dryRun) {
316
- if (reviewerDecision === 'approve' && row.task_status === 'review') {
317
- projectDb
318
- .prepare(`UPDATE task_invocations
319
- SET status = 'completed',
320
- success = 1,
321
- timed_out = 0,
322
- exit_code = 0,
323
- completed_at_ms = ?,
324
- duration_ms = ?,
325
- error = COALESCE(error, 'Recovered by periodic sanitise (review approve token found).')
326
- WHERE id = ? AND status = 'running'`)
327
- .run(completedAtMs, durationMs, row.id);
328
- projectDb
329
- .prepare(`UPDATE tasks
330
- SET status = 'completed',
331
- updated_at = datetime('now')
332
- WHERE id = ? AND status = 'review'`)
333
- .run(row.task_id);
334
- projectDb
335
- .prepare(`INSERT INTO audit (task_id, from_status, to_status, actor, actor_type, notes, created_at)
336
- SELECT ?, 'review', 'completed', 'orchestrator', 'orchestrator',
337
- 'Recovered by periodic sanitise from reviewer decision log (DECISION: APPROVE).',
338
- datetime('now')
339
- WHERE EXISTS (SELECT 1 FROM tasks WHERE id = ? AND status = 'completed')`)
340
- .run(row.task_id, row.task_id);
341
- }
342
- else if (reviewerDecision === 'reject' && row.task_status === 'review') {
343
- projectDb
344
- .prepare(`UPDATE task_invocations
345
- SET status = 'completed',
346
- success = 1,
347
- timed_out = 0,
348
- exit_code = 0,
349
- completed_at_ms = ?,
350
- duration_ms = ?,
351
- error = COALESCE(error, 'Recovered by periodic sanitise (review reject token found).')
352
- WHERE id = ? AND status = 'running'`)
353
- .run(completedAtMs, durationMs, row.id);
354
- projectDb
355
- .prepare(`UPDATE tasks
356
- SET status = 'in_progress',
357
- rejection_count = COALESCE(rejection_count, 0) + 1,
358
- updated_at = datetime('now')
359
- WHERE id = ? AND status = 'review'`)
360
- .run(row.task_id);
361
- projectDb
362
- .prepare(`INSERT INTO audit (task_id, from_status, to_status, actor, actor_type, notes, created_at)
363
- SELECT ?, 'review', 'in_progress', 'orchestrator', 'orchestrator',
364
- 'Recovered by periodic sanitise from reviewer decision log (DECISION: REJECT).',
365
- datetime('now')
366
- WHERE EXISTS (SELECT 1 FROM tasks WHERE id = ? AND status = 'in_progress')`)
367
- .run(row.task_id, row.task_id);
368
- }
369
- else {
370
- projectDb
371
- .prepare(`UPDATE task_invocations
372
- SET status = 'failed',
373
- success = 0,
374
- timed_out = 1,
375
- exit_code = 1,
376
- completed_at_ms = ?,
377
- duration_ms = ?,
378
- error = COALESCE(error, 'Periodic sanitise closed stale running invocation.')
379
- WHERE id = ? AND status = 'running'`)
380
- .run(completedAtMs, durationMs, row.id);
381
- }
382
- }
383
- if (reviewerDecision === 'approve' && row.task_status === 'review') {
384
- summary.recoveredApprovals += 1;
385
- }
386
- else if (reviewerDecision === 'reject' && row.task_status === 'review') {
387
- summary.recoveredRejects += 1;
388
- }
389
- else {
390
- summary.closedStaleInvocations += 1;
391
- }
392
- }
393
- if (!dryRun) {
394
- const releasedTaskLocks = projectDb
395
- .prepare(`DELETE FROM task_locks WHERE expires_at <= datetime('now')`)
396
- .run();
397
- summary.releasedTaskLocks = releasedTaskLocks.changes;
398
- const releasedSectionLocks = projectDb
399
- .prepare(`DELETE FROM section_locks WHERE expires_at <= datetime('now')`)
400
- .run();
401
- summary.releasedSectionLocks = releasedSectionLocks.changes;
402
- }
403
- return summary;
404
- }
405
- function runPeriodicSanitiseForProject(globalDb, projectDb, projectPath, dryRun) {
406
- const settings = getSanitiseSettings(projectPath);
407
- if (!settings.enabled) {
408
- return {
409
- ran: false,
410
- reason: 'disabled',
411
- recoveredApprovals: 0,
412
- recoveredRejects: 0,
413
- closedStaleInvocations: 0,
414
- releasedTaskLocks: 0,
415
- releasedSectionLocks: 0,
416
- };
417
- }
418
- if (!shouldRunPeriodicSanitise(globalDb, projectPath, settings.intervalMinutes)) {
419
- return {
420
- ran: false,
421
- reason: 'interval_not_due',
422
- recoveredApprovals: 0,
423
- recoveredRejects: 0,
424
- closedStaleInvocations: 0,
425
- releasedTaskLocks: 0,
426
- releasedSectionLocks: 0,
427
- };
428
- }
429
- const summary = sanitiseProjectState(globalDb, projectDb, projectPath, dryRun, settings.staleInvocationTimeoutSec);
430
- if (!dryRun) {
431
- markPeriodicSanitiseRun(globalDb, projectPath);
432
- }
433
- return summary;
434
- }
435
- function sanitisedActionCount(summary) {
436
- return (summary.recoveredApprovals +
437
- summary.recoveredRejects +
438
- summary.closedStaleInvocations +
439
- summary.releasedTaskLocks +
440
- summary.releasedSectionLocks);
441
- }
18
+ // Import from helper files
19
+ const wakeup_sanitise_js_1 = require("./wakeup-sanitise.js");
20
+ const wakeup_reconcile_js_1 = require("./wakeup-reconcile.js");
21
+ const wakeup_checks_js_1 = require("./wakeup-checks.js");
22
+ Object.defineProperty(exports, "hasActiveRunnerForProject", { enumerable: true, get: function () { return wakeup_checks_js_1.hasActiveRunnerForProject; } });
23
+ Object.defineProperty(exports, "hasActiveParallelSessionForProject", { enumerable: true, get: function () { return wakeup_checks_js_1.hasActiveParallelSessionForProject; } });
24
+ const wakeup_runner_js_1 = require("./wakeup-runner.js");
25
+ const wakeup_timing_js_1 = require("./wakeup-timing.js");
26
+ Object.defineProperty(exports, "getLastWakeupTime", { enumerable: true, get: function () { return wakeup_timing_js_1.getLastWakeupTime; } });
442
27
  /**
443
28
  * Main wake-up function
444
29
  * Called by cron every minute to ensure runners are healthy
445
30
  * Iterates over ALL registered projects and starts runners as needed
446
31
  * Returns per-project results
447
32
  */
448
- /**
449
- * Record the last wakeup invocation time
450
- */
451
- function recordWakeupTime() {
452
- const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
453
- try {
454
- db.prepare(`INSERT INTO _global_schema (key, value) VALUES ('last_wakeup_at', datetime('now'))
455
- ON CONFLICT(key) DO UPDATE SET value = datetime('now')`).run();
456
- }
457
- finally {
458
- close();
459
- }
460
- }
461
- /**
462
- * Get the last wakeup invocation time
463
- */
464
- function getLastWakeupTime() {
465
- const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
466
- try {
467
- const row = db
468
- .prepare("SELECT value FROM _global_schema WHERE key = 'last_wakeup_at'")
469
- .get();
470
- return row?.value ?? null;
471
- }
472
- finally {
473
- close();
474
- }
475
- }
476
33
  async function wakeup(options = {}) {
477
34
  const { quiet = false, dryRun = false } = options;
478
35
  const results = [];
@@ -482,7 +39,7 @@ async function wakeup(options = {}) {
482
39
  };
483
40
  // Record wakeup invocation time (even for dry runs)
484
41
  if (!dryRun) {
485
- recordWakeupTime();
42
+ (0, wakeup_timing_js_1.recordWakeupTime)();
486
43
  }
487
44
  // Step 1: Clean up stale runners first
488
45
  const global = (0, global_db_js_1.openGlobalDatabase)();
@@ -494,7 +51,7 @@ async function wakeup(options = {}) {
494
51
  if (!dryRun) {
495
52
  for (const runner of staleRunners) {
496
53
  if (runner.pid) {
497
- killProcess(runner.pid);
54
+ (0, wakeup_runner_js_1.killProcess)(runner.pid);
498
55
  }
499
56
  global.db.prepare(`UPDATE workstreams
500
57
  SET runner_id = NULL,
@@ -514,7 +71,12 @@ async function wakeup(options = {}) {
514
71
  // ignore global DB issues; wakeup will still attempt per-project checks
515
72
  }
516
73
  try {
517
- const releasedLeases = releaseExpiredWorkstreamLeases(global.db);
74
+ const releasedLeases = global.db.prepare(`UPDATE workstreams
75
+ SET runner_id = NULL,
76
+ lease_expires_at = NULL
77
+ WHERE status = 'running'
78
+ AND lease_expires_at IS NOT NULL
79
+ AND lease_expires_at <= datetime('now')`).run().changes;
518
80
  if (releasedLeases > 0) {
519
81
  log(`Released ${releasedLeases} expired workstream lease(s)`);
520
82
  }
@@ -574,8 +136,8 @@ async function wakeup(options = {}) {
574
136
  try {
575
137
  const { db: projectDb, close: closeProjectDb } = (0, connection_js_1.openDatabase)(project.path);
576
138
  try {
577
- const sanitiseSummary = runPeriodicSanitiseForProject(global.db, projectDb, project.path, dryRun);
578
- sanitisedActions = sanitisedActionCount(sanitiseSummary);
139
+ const sanitiseSummary = (0, wakeup_sanitise_js_1.runPeriodicSanitiseForProject)(global.db, projectDb, project.path, dryRun);
140
+ sanitisedActions = (0, wakeup_sanitise_js_1.sanitisedActionCount)(sanitiseSummary);
579
141
  if (sanitisedActions > 0 && !quiet) {
580
142
  log(`Sanitised ${sanitisedActions} stale item(s) in ${project.path}`);
581
143
  }
@@ -606,7 +168,7 @@ async function wakeup(options = {}) {
606
168
  // If sanitise/recovery can't run (DB missing/corrupt), we still proceed with runner checks.
607
169
  }
608
170
  // Check for pending work after sanitise/recovery
609
- const hasWork = await projectHasPendingWork(project.path);
171
+ const hasWork = await (0, wakeup_checks_js_1.projectHasPendingWork)(project.path);
610
172
  if (!hasWork) {
611
173
  const noWorkReason = sanitisedActions > 0
612
174
  ? `No pending tasks after sanitise (${sanitisedActions} action(s))`
@@ -625,10 +187,10 @@ async function wakeup(options = {}) {
625
187
  }
626
188
  // Skip projects currently executing a parallel session before attempting recovery/startup.
627
189
  // This prevents parallel runners from being interfered with by a cron-managed runner.
628
- if (hasActiveParallelSessionForProject(project.path)) {
190
+ if ((0, wakeup_checks_js_1.hasActiveParallelSessionForProject)(project.path)) {
629
191
  let retrySummary = '';
630
192
  if (!dryRun) {
631
- const recovery = reconcileParallelSessionRecovery(global.db, project.path);
193
+ const recovery = (0, wakeup_reconcile_js_1.reconcileParallelSessionRecovery)(global.db, project.path);
632
194
  if (recovery.scheduledRetries > 0) {
633
195
  retrySummary += `, scheduled ${recovery.scheduledRetries} recovery retry(s)`;
634
196
  }
@@ -646,7 +208,7 @@ async function wakeup(options = {}) {
646
208
  continue;
647
209
  }
648
210
  // Skip if project already has an active runner (after recovery, which may have killed/removed it).
649
- if (hasActiveRunnerForProject(project.path)) {
211
+ if ((0, wakeup_checks_js_1.hasActiveRunnerForProject)(project.path)) {
650
212
  log(`Skipping ${project.path}: runner already active`);
651
213
  results.push({
652
214
  action: 'none',
@@ -677,7 +239,7 @@ async function wakeup(options = {}) {
677
239
  });
678
240
  continue;
679
241
  }
680
- const startResult = startRunner(project.path);
242
+ const startResult = (0, wakeup_runner_js_1.startRunner)(project.path);
681
243
  if (startResult) {
682
244
  const mode = startResult.parallel ? 'parallel session' : 'runner';
683
245
  results.push({
@@ -744,7 +306,7 @@ async function checkWakeupNeeded() {
744
306
  const registeredProjects = (0, projects_js_1.getRegisteredProjects)(false);
745
307
  let projectsWithWork = 0;
746
308
  for (const project of registeredProjects) {
747
- if ((0, node_fs_1.existsSync)(project.path) && (await projectHasPendingWork(project.path))) {
309
+ if ((0, node_fs_1.existsSync)(project.path) && (await (0, wakeup_checks_js_1.projectHasPendingWork)(project.path))) {
748
310
  projectsWithWork++;
749
311
  }
750
312
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wakeup.js","sourceRoot":"","sources":["../../src/runners/wakeup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wakeup.js","sourceRoot":"","sources":["../../src/runners/wakeup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "steroids-cli",
3
- "version": "0.9.11",
3
+ "version": "0.9.12",
4
4
  "description": "Automated task execution system with coder/reviewer loop",
5
5
  "main": "dist/index.js",
6
6
  "bin": {