steroids-cli 0.8.32 → 0.8.34

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 (109) hide show
  1. package/dist/commands/loop-phases.d.ts +6 -2
  2. package/dist/commands/loop-phases.d.ts.map +1 -1
  3. package/dist/commands/loop-phases.js +42 -2
  4. package/dist/commands/loop-phases.js.map +1 -1
  5. package/dist/commands/merge.d.ts.map +1 -1
  6. package/dist/commands/merge.js +13 -1
  7. package/dist/commands/merge.js.map +1 -1
  8. package/dist/commands/runners-parallel.d.ts +1 -0
  9. package/dist/commands/runners-parallel.d.ts.map +1 -1
  10. package/dist/commands/runners-parallel.js +93 -6
  11. package/dist/commands/runners-parallel.js.map +1 -1
  12. package/dist/commands/workspaces.d.ts.map +1 -1
  13. package/dist/commands/workspaces.js +38 -4
  14. package/dist/commands/workspaces.js.map +1 -1
  15. package/dist/config/loader.d.ts +9 -0
  16. package/dist/config/loader.d.ts.map +1 -1
  17. package/dist/config/loader.js +9 -0
  18. package/dist/config/loader.js.map +1 -1
  19. package/dist/config/schema.d.ts.map +1 -1
  20. package/dist/config/schema.js +45 -0
  21. package/dist/config/schema.js.map +1 -1
  22. package/dist/database/queries.d.ts.map +1 -1
  23. package/dist/database/queries.js +15 -1
  24. package/dist/database/queries.js.map +1 -1
  25. package/dist/database/schema.d.ts +2 -2
  26. package/dist/database/schema.d.ts.map +1 -1
  27. package/dist/database/schema.js +9 -0
  28. package/dist/database/schema.js.map +1 -1
  29. package/dist/orchestrator/coder.js +1 -1
  30. package/dist/orchestrator/coder.js.map +1 -1
  31. package/dist/orchestrator/coordinator.d.ts.map +1 -1
  32. package/dist/orchestrator/coordinator.js +5 -3
  33. package/dist/orchestrator/coordinator.js.map +1 -1
  34. package/dist/orchestrator/fallback-handler.d.ts +2 -1
  35. package/dist/orchestrator/fallback-handler.d.ts.map +1 -1
  36. package/dist/orchestrator/fallback-handler.js +36 -20
  37. package/dist/orchestrator/fallback-handler.js.map +1 -1
  38. package/dist/orchestrator/post-reviewer.d.ts.map +1 -1
  39. package/dist/orchestrator/post-reviewer.js +18 -23
  40. package/dist/orchestrator/post-reviewer.js.map +1 -1
  41. package/dist/orchestrator/reviewer.d.ts +1 -1
  42. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  43. package/dist/orchestrator/reviewer.js +19 -16
  44. package/dist/orchestrator/reviewer.js.map +1 -1
  45. package/dist/parallel/clone.d.ts +13 -0
  46. package/dist/parallel/clone.d.ts.map +1 -1
  47. package/dist/parallel/clone.js +40 -0
  48. package/dist/parallel/clone.js.map +1 -1
  49. package/dist/parallel/merge-conflict-attempts.d.ts +8 -0
  50. package/dist/parallel/merge-conflict-attempts.d.ts.map +1 -0
  51. package/dist/parallel/merge-conflict-attempts.js +68 -0
  52. package/dist/parallel/merge-conflict-attempts.js.map +1 -0
  53. package/dist/parallel/merge-conflict-invoke.d.ts +2 -0
  54. package/dist/parallel/merge-conflict-invoke.d.ts.map +1 -0
  55. package/dist/parallel/merge-conflict-invoke.js +41 -0
  56. package/dist/parallel/merge-conflict-invoke.js.map +1 -0
  57. package/dist/parallel/merge-conflict-prompts.d.ts +23 -0
  58. package/dist/parallel/merge-conflict-prompts.d.ts.map +1 -0
  59. package/dist/parallel/merge-conflict-prompts.js +40 -0
  60. package/dist/parallel/merge-conflict-prompts.js.map +1 -0
  61. package/dist/parallel/merge-conflict-task.d.ts +3 -0
  62. package/dist/parallel/merge-conflict-task.d.ts.map +1 -0
  63. package/dist/parallel/merge-conflict-task.js +59 -0
  64. package/dist/parallel/merge-conflict-task.js.map +1 -0
  65. package/dist/parallel/merge-conflict.d.ts +7 -7
  66. package/dist/parallel/merge-conflict.d.ts.map +1 -1
  67. package/dist/parallel/merge-conflict.js +91 -135
  68. package/dist/parallel/merge-conflict.js.map +1 -1
  69. package/dist/parallel/merge-errors.d.ts +2 -0
  70. package/dist/parallel/merge-errors.d.ts.map +1 -1
  71. package/dist/parallel/merge-errors.js +2 -0
  72. package/dist/parallel/merge-errors.js.map +1 -1
  73. package/dist/parallel/merge-git.d.ts.map +1 -1
  74. package/dist/parallel/merge-git.js +4 -1
  75. package/dist/parallel/merge-git.js.map +1 -1
  76. package/dist/parallel/merge-lock.d.ts +4 -2
  77. package/dist/parallel/merge-lock.d.ts.map +1 -1
  78. package/dist/parallel/merge-lock.js +51 -18
  79. package/dist/parallel/merge-lock.js.map +1 -1
  80. package/dist/parallel/merge-progress.d.ts +3 -1
  81. package/dist/parallel/merge-progress.d.ts.map +1 -1
  82. package/dist/parallel/merge-progress.js +9 -4
  83. package/dist/parallel/merge-progress.js.map +1 -1
  84. package/dist/parallel/merge.d.ts +4 -0
  85. package/dist/parallel/merge.d.ts.map +1 -1
  86. package/dist/parallel/merge.js +222 -17
  87. package/dist/parallel/merge.js.map +1 -1
  88. package/dist/prompts/prompt-helpers.d.ts +1 -1
  89. package/dist/prompts/prompt-helpers.d.ts.map +1 -1
  90. package/dist/prompts/prompt-helpers.js +10 -7
  91. package/dist/prompts/prompt-helpers.js.map +1 -1
  92. package/dist/prompts/reviewer.d.ts.map +1 -1
  93. package/dist/prompts/reviewer.js +48 -21
  94. package/dist/prompts/reviewer.js.map +1 -1
  95. package/dist/runners/global-db.d.ts +32 -0
  96. package/dist/runners/global-db.d.ts.map +1 -1
  97. package/dist/runners/global-db.js +403 -2
  98. package/dist/runners/global-db.js.map +1 -1
  99. package/dist/runners/orchestrator-loop.d.ts.map +1 -1
  100. package/dist/runners/orchestrator-loop.js +50 -3
  101. package/dist/runners/orchestrator-loop.js.map +1 -1
  102. package/dist/runners/wakeup.d.ts +1 -0
  103. package/dist/runners/wakeup.d.ts.map +1 -1
  104. package/dist/runners/wakeup.js +363 -29
  105. package/dist/runners/wakeup.js.map +1 -1
  106. package/migrations/012_add_merge_lock_epoch.sql +15 -0
  107. package/migrations/013_add_merge_progress_applied_commit_sha.sql +15 -0
  108. package/migrations/manifest.json +17 -1
  109. package/package.json +1 -1
@@ -12,7 +12,14 @@ exports.getGlobalDbPath = getGlobalDbPath;
12
12
  exports.isGlobalDbInitialized = isGlobalDbInitialized;
13
13
  exports.openGlobalDatabase = openGlobalDatabase;
14
14
  exports.getGlobalSchemaVersion = getGlobalSchemaVersion;
15
+ exports.updateParallelSessionStatus = updateParallelSessionStatus;
16
+ exports.revokeWorkstreamLeasesForSession = revokeWorkstreamLeasesForSession;
17
+ exports.listParallelSessionRunners = listParallelSessionRunners;
18
+ exports.removeParallelSessionRunner = removeParallelSessionRunner;
19
+ exports.recordValidationEscalation = recordValidationEscalation;
20
+ exports.resolveValidationEscalationsForSession = resolveValidationEscalationsForSession;
15
21
  const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
22
+ const node_crypto_1 = require("node:crypto");
16
23
  const node_fs_1 = require("node:fs");
17
24
  const node_path_1 = require("node:path");
18
25
  const node_os_1 = require("node:os");
@@ -118,7 +125,20 @@ const GLOBAL_SCHEMA_V8_SQL = `
118
125
  CREATE TABLE IF NOT EXISTS parallel_sessions (
119
126
  id TEXT PRIMARY KEY,
120
127
  project_path TEXT NOT NULL,
121
- status TEXT NOT NULL CHECK (status IN ('running', 'merging', 'completed', 'failed')),
128
+ status TEXT NOT NULL CHECK (
129
+ status IN (
130
+ 'running',
131
+ 'merging',
132
+ 'cleanup_pending',
133
+ 'cleanup_draining',
134
+ 'blocked_conflict',
135
+ 'blocked_recovery',
136
+ 'blocked_validation',
137
+ 'completed',
138
+ 'failed',
139
+ 'aborted'
140
+ )
141
+ ),
122
142
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
123
143
  completed_at TEXT
124
144
  );
@@ -139,7 +159,239 @@ CREATE TABLE IF NOT EXISTS workstreams (
139
159
  -- Associate runners with a parallel session
140
160
  ALTER TABLE runners ADD COLUMN parallel_session_id TEXT;
141
161
  `;
142
- const GLOBAL_SCHEMA_VERSION = '8';
162
+ /**
163
+ * Schema upgrade from version 8 to version 9: add project_repo_id and active-session guards.
164
+ */
165
+ const GLOBAL_SCHEMA_V9_INDEX_AND_TRIGGERS_SQL = `
166
+ CREATE INDEX IF NOT EXISTS idx_parallel_sessions_project_repo_id
167
+ ON parallel_sessions(project_repo_id);
168
+
169
+ CREATE TRIGGER IF NOT EXISTS trg_parallel_sessions_active_insert
170
+ BEFORE INSERT ON parallel_sessions
171
+ WHEN NEW.project_repo_id IS NOT NULL
172
+ AND NEW.status NOT IN ('completed', 'failed', 'aborted')
173
+ BEGIN
174
+ SELECT RAISE(ABORT, 'active parallel session already exists for project repo')
175
+ WHERE EXISTS (
176
+ SELECT 1
177
+ FROM parallel_sessions
178
+ WHERE project_repo_id = NEW.project_repo_id
179
+ AND status NOT IN ('completed', 'failed', 'aborted')
180
+ );
181
+ END;
182
+
183
+ CREATE TRIGGER IF NOT EXISTS trg_parallel_sessions_active_update
184
+ BEFORE UPDATE OF project_repo_id, status ON parallel_sessions
185
+ WHEN NEW.project_repo_id IS NOT NULL
186
+ AND NEW.status NOT IN ('completed', 'failed', 'aborted')
187
+ BEGIN
188
+ SELECT RAISE(ABORT, 'active parallel session already exists for project repo')
189
+ WHERE EXISTS (
190
+ SELECT 1
191
+ FROM parallel_sessions
192
+ WHERE project_repo_id = NEW.project_repo_id
193
+ AND status NOT IN ('completed', 'failed', 'aborted')
194
+ AND id != NEW.id
195
+ );
196
+ END;
197
+ `;
198
+ /**
199
+ * Schema upgrade from version 9 to version 10: add workstream lease fields.
200
+ */
201
+ const GLOBAL_SCHEMA_V10_SQL = `
202
+ CREATE INDEX IF NOT EXISTS idx_workstreams_session_status
203
+ ON workstreams(session_id, status);
204
+ `;
205
+ /**
206
+ * Schema upgrade from version 10 to version 11: add sealed merge input fields.
207
+ */
208
+ const GLOBAL_SCHEMA_V11_SQL = `
209
+ CREATE INDEX IF NOT EXISTS idx_workstreams_completion_order
210
+ ON workstreams(session_id, completion_order);
211
+ `;
212
+ /**
213
+ * Schema upgrade from version 11 to version 12: add reconciliation/backoff fields.
214
+ */
215
+ const GLOBAL_SCHEMA_V12_SQL = `
216
+ CREATE INDEX IF NOT EXISTS idx_workstreams_next_retry_at
217
+ ON workstreams(next_retry_at);
218
+ `;
219
+ /**
220
+ * Schema upgrade from version 13 to version 14: add conflict attempt tracking.
221
+ */
222
+ const GLOBAL_SCHEMA_V14_SQL = `
223
+ CREATE INDEX IF NOT EXISTS idx_workstreams_conflict_attempts
224
+ ON workstreams(conflict_attempts);
225
+ `;
226
+ /**
227
+ * Schema upgrade from version 14 to version 15: add validation escalation tracking.
228
+ */
229
+ const GLOBAL_SCHEMA_V15_SQL = `
230
+ CREATE TABLE IF NOT EXISTS validation_escalations (
231
+ id TEXT PRIMARY KEY,
232
+ session_id TEXT NOT NULL REFERENCES parallel_sessions(id),
233
+ project_path TEXT NOT NULL,
234
+ workspace_path TEXT NOT NULL,
235
+ validation_command TEXT NOT NULL,
236
+ error_message TEXT NOT NULL,
237
+ stdout_snippet TEXT,
238
+ stderr_snippet TEXT,
239
+ status TEXT NOT NULL DEFAULT 'open' CHECK(status IN ('open', 'resolved')),
240
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
241
+ resolved_at TEXT
242
+ );
243
+
244
+ CREATE INDEX IF NOT EXISTS idx_validation_escalations_session
245
+ ON validation_escalations(session_id, status, created_at DESC);
246
+ CREATE INDEX IF NOT EXISTS idx_validation_escalations_project
247
+ ON validation_escalations(project_path, status, created_at DESC);
248
+ `;
249
+ const GLOBAL_SCHEMA_VERSION = '15';
250
+ function hasColumn(db, tableName, columnName) {
251
+ const columns = db
252
+ .prepare(`PRAGMA table_info(${tableName})`)
253
+ .all();
254
+ return columns.some((column) => column.name === columnName);
255
+ }
256
+ function applyGlobalSchemaV9(db) {
257
+ if (!hasColumn(db, 'parallel_sessions', 'project_repo_id')) {
258
+ db.exec('ALTER TABLE parallel_sessions ADD COLUMN project_repo_id TEXT');
259
+ }
260
+ db.exec("UPDATE parallel_sessions SET project_repo_id = project_path WHERE project_repo_id IS NULL");
261
+ db.exec(GLOBAL_SCHEMA_V9_INDEX_AND_TRIGGERS_SQL);
262
+ }
263
+ function applyGlobalSchemaV10(db) {
264
+ if (!hasColumn(db, 'workstreams', 'claim_generation')) {
265
+ db.exec('ALTER TABLE workstreams ADD COLUMN claim_generation INTEGER NOT NULL DEFAULT 0');
266
+ }
267
+ if (!hasColumn(db, 'workstreams', 'lease_expires_at')) {
268
+ db.exec('ALTER TABLE workstreams ADD COLUMN lease_expires_at TEXT');
269
+ }
270
+ db.exec("UPDATE workstreams SET lease_expires_at = datetime('now', '+120 seconds') " +
271
+ "WHERE lease_expires_at IS NULL AND status = 'running'");
272
+ db.exec(GLOBAL_SCHEMA_V10_SQL);
273
+ }
274
+ function applyGlobalSchemaV11(db) {
275
+ if (!hasColumn(db, 'workstreams', 'sealed_base_sha')) {
276
+ db.exec('ALTER TABLE workstreams ADD COLUMN sealed_base_sha TEXT');
277
+ }
278
+ if (!hasColumn(db, 'workstreams', 'sealed_head_sha')) {
279
+ db.exec('ALTER TABLE workstreams ADD COLUMN sealed_head_sha TEXT');
280
+ }
281
+ if (!hasColumn(db, 'workstreams', 'sealed_commit_shas')) {
282
+ db.exec('ALTER TABLE workstreams ADD COLUMN sealed_commit_shas TEXT');
283
+ }
284
+ if (!hasColumn(db, 'workstreams', 'completion_order')) {
285
+ db.exec('ALTER TABLE workstreams ADD COLUMN completion_order INTEGER');
286
+ }
287
+ db.exec(GLOBAL_SCHEMA_V11_SQL);
288
+ }
289
+ function applyGlobalSchemaV12(db) {
290
+ if (!hasColumn(db, 'workstreams', 'recovery_attempts')) {
291
+ db.exec('ALTER TABLE workstreams ADD COLUMN recovery_attempts INTEGER NOT NULL DEFAULT 0');
292
+ }
293
+ if (!hasColumn(db, 'workstreams', 'next_retry_at')) {
294
+ db.exec('ALTER TABLE workstreams ADD COLUMN next_retry_at TEXT');
295
+ }
296
+ if (!hasColumn(db, 'workstreams', 'last_reconcile_action')) {
297
+ db.exec('ALTER TABLE workstreams ADD COLUMN last_reconcile_action TEXT');
298
+ }
299
+ if (!hasColumn(db, 'workstreams', 'last_reconciled_at')) {
300
+ db.exec('ALTER TABLE workstreams ADD COLUMN last_reconciled_at TEXT');
301
+ }
302
+ db.exec(GLOBAL_SCHEMA_V12_SQL);
303
+ }
304
+ function supportsBlockedParallelSessionStatuses(db) {
305
+ const row = db
306
+ .prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'parallel_sessions'")
307
+ .get();
308
+ const sql = row?.sql ?? '';
309
+ return (sql.includes('blocked_conflict') &&
310
+ sql.includes('blocked_recovery') &&
311
+ sql.includes('blocked_validation') &&
312
+ sql.includes('aborted'));
313
+ }
314
+ function applyGlobalSchemaV13(db) {
315
+ if (supportsBlockedParallelSessionStatuses(db)) {
316
+ db.exec(GLOBAL_SCHEMA_V9_INDEX_AND_TRIGGERS_SQL);
317
+ return;
318
+ }
319
+ db.exec('PRAGMA foreign_keys = OFF');
320
+ try {
321
+ db.exec('BEGIN IMMEDIATE');
322
+ try {
323
+ db.exec('DROP TABLE IF EXISTS parallel_sessions_new');
324
+ db.exec(`
325
+ CREATE TABLE IF NOT EXISTS parallel_sessions_new (
326
+ id TEXT PRIMARY KEY,
327
+ project_path TEXT NOT NULL,
328
+ project_repo_id TEXT,
329
+ status TEXT NOT NULL CHECK (
330
+ status IN (
331
+ 'running',
332
+ 'merging',
333
+ 'cleanup_pending',
334
+ 'cleanup_draining',
335
+ 'blocked_conflict',
336
+ 'blocked_recovery',
337
+ 'blocked_validation',
338
+ 'completed',
339
+ 'failed',
340
+ 'aborted'
341
+ )
342
+ ),
343
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
344
+ completed_at TEXT
345
+ );
346
+ `);
347
+ db.exec(`
348
+ INSERT INTO parallel_sessions_new (id, project_path, project_repo_id, status, created_at, completed_at)
349
+ SELECT
350
+ id,
351
+ project_path,
352
+ project_repo_id,
353
+ CASE
354
+ WHEN status IN (
355
+ 'running',
356
+ 'merging',
357
+ 'cleanup_pending',
358
+ 'cleanup_draining',
359
+ 'blocked_conflict',
360
+ 'blocked_recovery',
361
+ 'blocked_validation',
362
+ 'completed',
363
+ 'failed',
364
+ 'aborted'
365
+ ) THEN status
366
+ ELSE 'running'
367
+ END,
368
+ created_at,
369
+ completed_at
370
+ FROM parallel_sessions;
371
+ `);
372
+ db.exec('DROP TABLE parallel_sessions');
373
+ db.exec('ALTER TABLE parallel_sessions_new RENAME TO parallel_sessions');
374
+ db.exec('COMMIT');
375
+ }
376
+ catch (error) {
377
+ db.exec('ROLLBACK');
378
+ throw error;
379
+ }
380
+ }
381
+ finally {
382
+ db.exec('PRAGMA foreign_keys = ON');
383
+ }
384
+ db.exec(GLOBAL_SCHEMA_V9_INDEX_AND_TRIGGERS_SQL);
385
+ }
386
+ function applyGlobalSchemaV14(db) {
387
+ if (!hasColumn(db, 'workstreams', 'conflict_attempts')) {
388
+ db.exec('ALTER TABLE workstreams ADD COLUMN conflict_attempts INTEGER NOT NULL DEFAULT 0');
389
+ }
390
+ db.exec(GLOBAL_SCHEMA_V14_SQL);
391
+ }
392
+ function applyGlobalSchemaV15(db) {
393
+ db.exec(GLOBAL_SCHEMA_V15_SQL);
394
+ }
143
395
  /**
144
396
  * Get the path to the global steroids directory.
145
397
  * Respects STEROIDS_HOME env var for test isolation (Jest's ESM VM context
@@ -192,6 +444,10 @@ function openGlobalDatabase() {
192
444
  db.exec(GLOBAL_SCHEMA_V6_SQL);
193
445
  db.exec(GLOBAL_SCHEMA_V7_SQL);
194
446
  db.exec(GLOBAL_SCHEMA_V8_SQL);
447
+ applyGlobalSchemaV9(db);
448
+ applyGlobalSchemaV10(db);
449
+ applyGlobalSchemaV11(db);
450
+ applyGlobalSchemaV12(db);
195
451
  db.prepare('INSERT INTO _global_schema (key, value) VALUES (?, ?)').run('version', GLOBAL_SCHEMA_VERSION);
196
452
  db.prepare('INSERT INTO _global_schema (key, value) VALUES (?, ?)').run('created_at', new Date().toISOString());
197
453
  }
@@ -204,6 +460,10 @@ function openGlobalDatabase() {
204
460
  db.exec(GLOBAL_SCHEMA_V6_SQL);
205
461
  db.exec(GLOBAL_SCHEMA_V7_SQL);
206
462
  db.exec(GLOBAL_SCHEMA_V8_SQL);
463
+ applyGlobalSchemaV9(db);
464
+ applyGlobalSchemaV10(db);
465
+ applyGlobalSchemaV11(db);
466
+ applyGlobalSchemaV12(db);
207
467
  db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
208
468
  }
209
469
  else if (currentVersion === '2') {
@@ -214,6 +474,10 @@ function openGlobalDatabase() {
214
474
  db.exec(GLOBAL_SCHEMA_V6_SQL);
215
475
  db.exec(GLOBAL_SCHEMA_V7_SQL);
216
476
  db.exec(GLOBAL_SCHEMA_V8_SQL);
477
+ applyGlobalSchemaV9(db);
478
+ applyGlobalSchemaV10(db);
479
+ applyGlobalSchemaV11(db);
480
+ applyGlobalSchemaV12(db);
217
481
  db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
218
482
  }
219
483
  else if (currentVersion === '3') {
@@ -223,6 +487,10 @@ function openGlobalDatabase() {
223
487
  db.exec(GLOBAL_SCHEMA_V6_SQL);
224
488
  db.exec(GLOBAL_SCHEMA_V7_SQL);
225
489
  db.exec(GLOBAL_SCHEMA_V8_SQL);
490
+ applyGlobalSchemaV9(db);
491
+ applyGlobalSchemaV10(db);
492
+ applyGlobalSchemaV11(db);
493
+ applyGlobalSchemaV12(db);
226
494
  db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
227
495
  }
228
496
  else if (currentVersion === '4') {
@@ -231,6 +499,10 @@ function openGlobalDatabase() {
231
499
  db.exec(GLOBAL_SCHEMA_V6_SQL);
232
500
  db.exec(GLOBAL_SCHEMA_V7_SQL);
233
501
  db.exec(GLOBAL_SCHEMA_V8_SQL);
502
+ applyGlobalSchemaV9(db);
503
+ applyGlobalSchemaV10(db);
504
+ applyGlobalSchemaV11(db);
505
+ applyGlobalSchemaV12(db);
234
506
  db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
235
507
  }
236
508
  else if (currentVersion === '5') {
@@ -238,20 +510,64 @@ function openGlobalDatabase() {
238
510
  db.exec(GLOBAL_SCHEMA_V6_SQL);
239
511
  db.exec(GLOBAL_SCHEMA_V7_SQL);
240
512
  db.exec(GLOBAL_SCHEMA_V8_SQL);
513
+ applyGlobalSchemaV9(db);
514
+ applyGlobalSchemaV10(db);
515
+ applyGlobalSchemaV11(db);
516
+ applyGlobalSchemaV12(db);
241
517
  db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
242
518
  }
243
519
  else if (currentVersion === '6') {
244
520
  // Upgrade from version 6 to version 7
245
521
  db.exec(GLOBAL_SCHEMA_V7_SQL);
246
522
  db.exec(GLOBAL_SCHEMA_V8_SQL);
523
+ applyGlobalSchemaV9(db);
524
+ applyGlobalSchemaV10(db);
525
+ applyGlobalSchemaV11(db);
526
+ applyGlobalSchemaV12(db);
247
527
  db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
248
528
  }
249
529
  else if (currentVersion === '7') {
250
530
  // Upgrade from version 7 to version 8
251
531
  db.exec(GLOBAL_SCHEMA_V8_SQL);
532
+ applyGlobalSchemaV9(db);
533
+ db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
534
+ }
535
+ else if (currentVersion === '8') {
536
+ // Upgrade from version 8 to version 9
537
+ applyGlobalSchemaV9(db);
538
+ applyGlobalSchemaV10(db);
539
+ applyGlobalSchemaV11(db);
540
+ applyGlobalSchemaV12(db);
541
+ db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
542
+ }
543
+ else if (currentVersion === '9') {
544
+ // Upgrade from version 9 to version 10
545
+ applyGlobalSchemaV10(db);
546
+ applyGlobalSchemaV11(db);
547
+ applyGlobalSchemaV12(db);
548
+ db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
549
+ }
550
+ else if (currentVersion === '10') {
551
+ // Upgrade from version 10 to version 11
552
+ applyGlobalSchemaV11(db);
553
+ applyGlobalSchemaV12(db);
554
+ db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
555
+ }
556
+ else if (currentVersion === '11') {
557
+ // Upgrade from version 11 to version 12
558
+ applyGlobalSchemaV12(db);
252
559
  db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
253
560
  }
254
561
  // Future upgrades would be handled here with additional conditions
562
+ applyGlobalSchemaV9(db);
563
+ applyGlobalSchemaV10(db);
564
+ applyGlobalSchemaV11(db);
565
+ applyGlobalSchemaV12(db);
566
+ applyGlobalSchemaV13(db);
567
+ applyGlobalSchemaV14(db);
568
+ applyGlobalSchemaV15(db);
569
+ db.prepare(`INSERT INTO _global_schema (key, value) VALUES (?, ?)
570
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run('version', GLOBAL_SCHEMA_VERSION);
255
571
  return {
256
572
  db,
257
573
  close: () => db.close(),
@@ -271,4 +587,89 @@ function getGlobalSchemaVersion(db) {
271
587
  return null;
272
588
  }
273
589
  }
590
+ function updateParallelSessionStatus(sessionId, status, markCompletedAt = false) {
591
+ const { db, close } = openGlobalDatabase();
592
+ try {
593
+ db.prepare(`UPDATE parallel_sessions
594
+ SET status = ?,
595
+ completed_at = CASE
596
+ WHEN ? = 1 THEN datetime('now')
597
+ ELSE completed_at
598
+ END
599
+ WHERE id = ?`).run(status, markCompletedAt ? 1 : 0, sessionId);
600
+ }
601
+ finally {
602
+ close();
603
+ }
604
+ }
605
+ function revokeWorkstreamLeasesForSession(sessionId) {
606
+ const { db, close } = openGlobalDatabase();
607
+ try {
608
+ const result = db.prepare(`UPDATE workstreams
609
+ SET runner_id = NULL,
610
+ lease_expires_at = datetime('now')
611
+ WHERE session_id = ?`).run(sessionId);
612
+ return result.changes;
613
+ }
614
+ finally {
615
+ close();
616
+ }
617
+ }
618
+ function listParallelSessionRunners(sessionId) {
619
+ const { db, close } = openGlobalDatabase();
620
+ try {
621
+ return db
622
+ .prepare('SELECT id, pid FROM runners WHERE parallel_session_id = ?')
623
+ .all(sessionId);
624
+ }
625
+ finally {
626
+ close();
627
+ }
628
+ }
629
+ function removeParallelSessionRunner(runnerId) {
630
+ const { db, close } = openGlobalDatabase();
631
+ try {
632
+ db.prepare('DELETE FROM runners WHERE id = ?').run(runnerId);
633
+ }
634
+ finally {
635
+ close();
636
+ }
637
+ }
638
+ function recordValidationEscalation(input) {
639
+ const { db, close } = openGlobalDatabase();
640
+ const id = (0, node_crypto_1.randomUUID)();
641
+ try {
642
+ db.prepare(`INSERT INTO validation_escalations (
643
+ id, session_id, project_path, workspace_path, validation_command,
644
+ error_message, stdout_snippet, stderr_snippet, status
645
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'open')`).run(id, input.sessionId, input.projectPath, input.workspacePath, input.validationCommand, input.errorMessage, input.stdoutSnippet ?? null, input.stderrSnippet ?? null);
646
+ const row = db
647
+ .prepare(`SELECT id, session_id, project_path, workspace_path, validation_command,
648
+ error_message, stdout_snippet, stderr_snippet, status, created_at, resolved_at
649
+ FROM validation_escalations
650
+ WHERE id = ?`)
651
+ .get(id);
652
+ if (!row) {
653
+ throw new Error(`Failed to read validation escalation record for id ${id}`);
654
+ }
655
+ return row;
656
+ }
657
+ finally {
658
+ close();
659
+ }
660
+ }
661
+ function resolveValidationEscalationsForSession(sessionId) {
662
+ const { db, close } = openGlobalDatabase();
663
+ try {
664
+ const result = db.prepare(`UPDATE validation_escalations
665
+ SET status = 'resolved',
666
+ resolved_at = datetime('now')
667
+ WHERE session_id = ?
668
+ AND status = 'open'`).run(sessionId);
669
+ return result.changes;
670
+ }
671
+ finally {
672
+ close();
673
+ }
674
+ }
274
675
  //# sourceMappingURL=global-db.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-db.js","sourceRoot":"","sources":["../../src/runners/global-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global-db.js","sourceRoot":"","sources":["../../src/runners/global-db.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator-loop.d.ts","sourceRoot":"","sources":["../../src/runners/orchestrator-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsT7E"}
1
+ {"version":3,"file":"orchestrator-loop.d.ts","sourceRoot":"","sources":["../../src/runners/orchestrator-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkFH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4V7E"}
@@ -18,6 +18,7 @@ const node_child_process_1 = require("node:child_process");
18
18
  const loop_phases_js_1 = require("../commands/loop-phases.js");
19
19
  const credit_pause_js_1 = require("./credit-pause.js");
20
20
  const push_js_1 = require("../git/push.js");
21
+ const global_db_js_1 = require("./global-db.js");
21
22
  function sleep(ms) {
22
23
  return new Promise((resolve) => setTimeout(resolve, ms));
23
24
  }
@@ -27,6 +28,40 @@ function resolveSectionIds(sectionId, sectionIds) {
27
28
  }
28
29
  return sectionId ? [sectionId] : undefined;
29
30
  }
31
+ function refreshParallelWorkstreamLease(parallelSessionId, projectPath, runnerId) {
32
+ if (!parallelSessionId) {
33
+ return;
34
+ }
35
+ const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
36
+ try {
37
+ const row = db
38
+ .prepare(`SELECT id, claim_generation, runner_id
39
+ FROM workstreams
40
+ WHERE session_id = ?
41
+ AND clone_path = ?
42
+ AND status = 'running'
43
+ LIMIT 1`)
44
+ .get(parallelSessionId, projectPath);
45
+ if (!row) {
46
+ throw new Error('Parallel workstream row not found for lease refresh');
47
+ }
48
+ const owner = runnerId ?? row.runner_id ?? `runner:${process.pid ?? 'unknown'}`;
49
+ const result = db
50
+ .prepare(`UPDATE workstreams
51
+ SET runner_id = ?,
52
+ lease_expires_at = datetime('now', '+120 seconds')
53
+ WHERE id = ?
54
+ AND status = 'running'
55
+ AND claim_generation = ?`)
56
+ .run(owner, row.id, row.claim_generation);
57
+ if (result.changes !== 1) {
58
+ throw new Error('Parallel workstream lease fence check failed');
59
+ }
60
+ }
61
+ finally {
62
+ close();
63
+ }
64
+ }
30
65
  /**
31
66
  * Run the orchestrator loop
32
67
  * Processes tasks until all are complete or shouldStop returns true
@@ -67,6 +102,7 @@ async function runOrchestratorLoop(options) {
67
102
  iteration++;
68
103
  console.log(`\n─── Iteration ${iteration} ───\n`);
69
104
  options.onIteration?.(iteration);
105
+ refreshParallelWorkstreamLease(options.parallelSessionId, projectPath, options.runnerId);
70
106
  // Batch mode: process multiple pending tasks at once
71
107
  // Only active when not focusing on a specific section and batch mode is enabled
72
108
  if (batchMode && !activeSectionIds) {
@@ -74,6 +110,7 @@ async function runOrchestratorLoop(options) {
74
110
  if (batch && batch.tasks.length > 0) {
75
111
  console.log(`[BATCH MODE] Section "${batch.sectionName}" - ${batch.tasks.length} tasks`);
76
112
  // Mark all tasks as in_progress
113
+ refreshParallelWorkstreamLease(options.parallelSessionId, projectPath, options.runnerId);
77
114
  for (const task of batch.tasks) {
78
115
  (0, task_selector_js_1.markTaskInProgress)(db, task.id);
79
116
  options.onTaskStart?.(task.id, 'batch');
@@ -165,6 +202,7 @@ async function runOrchestratorLoop(options) {
165
202
  return updated?.status === 'completed';
166
203
  });
167
204
  if (approvedTasks.length > 0) {
205
+ refreshParallelWorkstreamLease(options.parallelSessionId, projectPath, options.runnerId);
168
206
  const pushResult = (0, push_js_1.pushToRemote)(projectPath, 'origin', branchName);
169
207
  if (pushResult.success) {
170
208
  console.log('Pushing batch changes to git...');
@@ -205,13 +243,22 @@ async function runOrchestratorLoop(options) {
205
243
  let phaseResult;
206
244
  if (action === 'start') {
207
245
  (0, task_selector_js_1.markTaskInProgress)(db, task.id);
208
- phaseResult = await (0, loop_phases_js_1.runCoderPhase)(db, task, projectPath, 'start', false);
246
+ phaseResult = await (0, loop_phases_js_1.runCoderPhase)(db, task, projectPath, 'start', false, undefined, undefined, {
247
+ parallelSessionId: options.parallelSessionId,
248
+ runnerId: options.runnerId,
249
+ });
209
250
  }
210
251
  else if (action === 'resume') {
211
- phaseResult = await (0, loop_phases_js_1.runCoderPhase)(db, task, projectPath, 'resume', false);
252
+ phaseResult = await (0, loop_phases_js_1.runCoderPhase)(db, task, projectPath, 'resume', false, undefined, undefined, {
253
+ parallelSessionId: options.parallelSessionId,
254
+ runnerId: options.runnerId,
255
+ });
212
256
  }
213
257
  else if (action === 'review') {
214
- phaseResult = await (0, loop_phases_js_1.runReviewerPhase)(db, task, projectPath, false, undefined, branchName);
258
+ phaseResult = await (0, loop_phases_js_1.runReviewerPhase)(db, task, projectPath, false, undefined, branchName, {
259
+ parallelSessionId: options.parallelSessionId,
260
+ runnerId: options.runnerId,
261
+ });
215
262
  }
216
263
  // Check for credit exhaustion from single-task phase
217
264
  if (phaseResult?.action === 'pause_credit_exhaustion') {