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.
- package/dist/commands/loop-phases.d.ts +6 -2
- package/dist/commands/loop-phases.d.ts.map +1 -1
- package/dist/commands/loop-phases.js +42 -2
- package/dist/commands/loop-phases.js.map +1 -1
- package/dist/commands/merge.d.ts.map +1 -1
- package/dist/commands/merge.js +13 -1
- package/dist/commands/merge.js.map +1 -1
- package/dist/commands/runners-parallel.d.ts +1 -0
- package/dist/commands/runners-parallel.d.ts.map +1 -1
- package/dist/commands/runners-parallel.js +93 -6
- package/dist/commands/runners-parallel.js.map +1 -1
- package/dist/commands/workspaces.d.ts.map +1 -1
- package/dist/commands/workspaces.js +38 -4
- package/dist/commands/workspaces.js.map +1 -1
- package/dist/config/loader.d.ts +9 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +9 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +45 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/database/queries.d.ts.map +1 -1
- package/dist/database/queries.js +15 -1
- package/dist/database/queries.js.map +1 -1
- package/dist/database/schema.d.ts +2 -2
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +9 -0
- package/dist/database/schema.js.map +1 -1
- package/dist/orchestrator/coder.js +1 -1
- package/dist/orchestrator/coder.js.map +1 -1
- package/dist/orchestrator/coordinator.d.ts.map +1 -1
- package/dist/orchestrator/coordinator.js +5 -3
- package/dist/orchestrator/coordinator.js.map +1 -1
- package/dist/orchestrator/fallback-handler.d.ts +2 -1
- package/dist/orchestrator/fallback-handler.d.ts.map +1 -1
- package/dist/orchestrator/fallback-handler.js +36 -20
- package/dist/orchestrator/fallback-handler.js.map +1 -1
- package/dist/orchestrator/post-reviewer.d.ts.map +1 -1
- package/dist/orchestrator/post-reviewer.js +18 -23
- package/dist/orchestrator/post-reviewer.js.map +1 -1
- package/dist/orchestrator/reviewer.d.ts +1 -1
- package/dist/orchestrator/reviewer.d.ts.map +1 -1
- package/dist/orchestrator/reviewer.js +19 -16
- package/dist/orchestrator/reviewer.js.map +1 -1
- package/dist/parallel/clone.d.ts +13 -0
- package/dist/parallel/clone.d.ts.map +1 -1
- package/dist/parallel/clone.js +40 -0
- package/dist/parallel/clone.js.map +1 -1
- package/dist/parallel/merge-conflict-attempts.d.ts +8 -0
- package/dist/parallel/merge-conflict-attempts.d.ts.map +1 -0
- package/dist/parallel/merge-conflict-attempts.js +68 -0
- package/dist/parallel/merge-conflict-attempts.js.map +1 -0
- package/dist/parallel/merge-conflict-invoke.d.ts +2 -0
- package/dist/parallel/merge-conflict-invoke.d.ts.map +1 -0
- package/dist/parallel/merge-conflict-invoke.js +41 -0
- package/dist/parallel/merge-conflict-invoke.js.map +1 -0
- package/dist/parallel/merge-conflict-prompts.d.ts +23 -0
- package/dist/parallel/merge-conflict-prompts.d.ts.map +1 -0
- package/dist/parallel/merge-conflict-prompts.js +40 -0
- package/dist/parallel/merge-conflict-prompts.js.map +1 -0
- package/dist/parallel/merge-conflict-task.d.ts +3 -0
- package/dist/parallel/merge-conflict-task.d.ts.map +1 -0
- package/dist/parallel/merge-conflict-task.js +59 -0
- package/dist/parallel/merge-conflict-task.js.map +1 -0
- package/dist/parallel/merge-conflict.d.ts +7 -7
- package/dist/parallel/merge-conflict.d.ts.map +1 -1
- package/dist/parallel/merge-conflict.js +91 -135
- package/dist/parallel/merge-conflict.js.map +1 -1
- package/dist/parallel/merge-errors.d.ts +2 -0
- package/dist/parallel/merge-errors.d.ts.map +1 -1
- package/dist/parallel/merge-errors.js +2 -0
- package/dist/parallel/merge-errors.js.map +1 -1
- package/dist/parallel/merge-git.d.ts.map +1 -1
- package/dist/parallel/merge-git.js +4 -1
- package/dist/parallel/merge-git.js.map +1 -1
- package/dist/parallel/merge-lock.d.ts +4 -2
- package/dist/parallel/merge-lock.d.ts.map +1 -1
- package/dist/parallel/merge-lock.js +51 -18
- package/dist/parallel/merge-lock.js.map +1 -1
- package/dist/parallel/merge-progress.d.ts +3 -1
- package/dist/parallel/merge-progress.d.ts.map +1 -1
- package/dist/parallel/merge-progress.js +9 -4
- package/dist/parallel/merge-progress.js.map +1 -1
- package/dist/parallel/merge.d.ts +4 -0
- package/dist/parallel/merge.d.ts.map +1 -1
- package/dist/parallel/merge.js +222 -17
- package/dist/parallel/merge.js.map +1 -1
- package/dist/prompts/prompt-helpers.d.ts +1 -1
- package/dist/prompts/prompt-helpers.d.ts.map +1 -1
- package/dist/prompts/prompt-helpers.js +10 -7
- package/dist/prompts/prompt-helpers.js.map +1 -1
- package/dist/prompts/reviewer.d.ts.map +1 -1
- package/dist/prompts/reviewer.js +48 -21
- package/dist/prompts/reviewer.js.map +1 -1
- package/dist/runners/global-db.d.ts +32 -0
- package/dist/runners/global-db.d.ts.map +1 -1
- package/dist/runners/global-db.js +403 -2
- package/dist/runners/global-db.js.map +1 -1
- package/dist/runners/orchestrator-loop.d.ts.map +1 -1
- package/dist/runners/orchestrator-loop.js +50 -3
- package/dist/runners/orchestrator-loop.js.map +1 -1
- package/dist/runners/wakeup.d.ts +1 -0
- package/dist/runners/wakeup.d.ts.map +1 -1
- package/dist/runners/wakeup.js +363 -29
- package/dist/runners/wakeup.js.map +1 -1
- package/migrations/012_add_merge_lock_epoch.sql +15 -0
- package/migrations/013_add_merge_progress_applied_commit_sha.sql +15 -0
- package/migrations/manifest.json +17 -1
- 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 (
|
|
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
|
-
|
|
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;
|
|
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') {
|