steroids-cli 0.14.3 → 0.15.0

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 (111) hide show
  1. package/dist/commands/ai-run.d.ts +10 -0
  2. package/dist/commands/ai-run.d.ts.map +1 -0
  3. package/dist/commands/ai-run.js +255 -0
  4. package/dist/commands/ai-run.js.map +1 -0
  5. package/dist/commands/ai.d.ts.map +1 -1
  6. package/dist/commands/ai.js +7 -1
  7. package/dist/commands/ai.js.map +1 -1
  8. package/dist/commands/coder-noop-submission.d.ts +2 -2
  9. package/dist/commands/coder-noop-submission.d.ts.map +1 -1
  10. package/dist/commands/coder-noop-submission.js +8 -1
  11. package/dist/commands/coder-noop-submission.js.map +1 -1
  12. package/dist/commands/completion.d.ts.map +1 -1
  13. package/dist/commands/completion.js +9 -0
  14. package/dist/commands/completion.js.map +1 -1
  15. package/dist/commands/loop-phases-coder-decision.d.ts +2 -0
  16. package/dist/commands/loop-phases-coder-decision.d.ts.map +1 -1
  17. package/dist/commands/loop-phases-coder-decision.js +18 -41
  18. package/dist/commands/loop-phases-coder-decision.js.map +1 -1
  19. package/dist/commands/loop-phases-coder.d.ts.map +1 -1
  20. package/dist/commands/loop-phases-coder.js +2 -1
  21. package/dist/commands/loop-phases-coder.js.map +1 -1
  22. package/dist/commands/loop-phases-reviewer.d.ts.map +1 -1
  23. package/dist/commands/loop-phases-reviewer.js +42 -71
  24. package/dist/commands/loop-phases-reviewer.js.map +1 -1
  25. package/dist/commands/loop.d.ts.map +1 -1
  26. package/dist/commands/loop.js +6 -0
  27. package/dist/commands/loop.js.map +1 -1
  28. package/dist/commands/push-task-branch.d.ts +12 -0
  29. package/dist/commands/push-task-branch.d.ts.map +1 -0
  30. package/dist/commands/push-task-branch.js +24 -0
  31. package/dist/commands/push-task-branch.js.map +1 -0
  32. package/dist/commands/tasks.js +1 -1
  33. package/dist/commands/tasks.js.map +1 -1
  34. package/dist/database/queries.d.ts +8 -2
  35. package/dist/database/queries.d.ts.map +1 -1
  36. package/dist/database/queries.js +17 -1
  37. package/dist/database/queries.js.map +1 -1
  38. package/dist/git/section-pr.js +1 -1
  39. package/dist/health/stuck-task-detector-types.d.ts +3 -3
  40. package/dist/health/stuck-task-detector-types.d.ts.map +1 -1
  41. package/dist/health/stuck-task-detector.js +21 -5
  42. package/dist/health/stuck-task-detector.js.map +1 -1
  43. package/dist/index.js +0 -4
  44. package/dist/index.js.map +1 -1
  45. package/dist/monitor/investigator-actions.d.ts.map +1 -1
  46. package/dist/monitor/investigator-actions.js +44 -39
  47. package/dist/monitor/investigator-actions.js.map +1 -1
  48. package/dist/monitor/investigator-agent.d.ts +9 -0
  49. package/dist/monitor/investigator-agent.d.ts.map +1 -1
  50. package/dist/monitor/investigator-agent.js +2 -0
  51. package/dist/monitor/investigator-agent.js.map +1 -1
  52. package/dist/monitor/investigator-helpers.d.ts +5 -0
  53. package/dist/monitor/investigator-helpers.d.ts.map +1 -0
  54. package/dist/monitor/investigator-helpers.js +44 -0
  55. package/dist/monitor/investigator-helpers.js.map +1 -0
  56. package/dist/monitor/investigator-prompt.d.ts.map +1 -1
  57. package/dist/monitor/investigator-prompt.js +11 -3
  58. package/dist/monitor/investigator-prompt.js.map +1 -1
  59. package/dist/monitor/scanner-queries.d.ts +3 -0
  60. package/dist/monitor/scanner-queries.d.ts.map +1 -1
  61. package/dist/monitor/scanner-queries.js +57 -0
  62. package/dist/monitor/scanner-queries.js.map +1 -1
  63. package/dist/monitor/scanner.d.ts +1 -1
  64. package/dist/monitor/scanner.d.ts.map +1 -1
  65. package/dist/monitor/scanner.js +10 -2
  66. package/dist/monitor/scanner.js.map +1 -1
  67. package/dist/orchestrator/merge-queue-rebase.d.ts +27 -0
  68. package/dist/orchestrator/merge-queue-rebase.d.ts.map +1 -0
  69. package/dist/orchestrator/merge-queue-rebase.js +355 -0
  70. package/dist/orchestrator/merge-queue-rebase.js.map +1 -0
  71. package/dist/orchestrator/merge-queue.d.ts +40 -0
  72. package/dist/orchestrator/merge-queue.d.ts.map +1 -0
  73. package/dist/orchestrator/merge-queue.js +352 -0
  74. package/dist/orchestrator/merge-queue.js.map +1 -0
  75. package/dist/orchestrator/task-selector.d.ts +2 -1
  76. package/dist/orchestrator/task-selector.d.ts.map +1 -1
  77. package/dist/orchestrator/task-selector.js +20 -5
  78. package/dist/orchestrator/task-selector.js.map +1 -1
  79. package/dist/parallel/clone.d.ts +0 -15
  80. package/dist/parallel/clone.d.ts.map +1 -1
  81. package/dist/parallel/clone.js +0 -37
  82. package/dist/parallel/clone.js.map +1 -1
  83. package/dist/providers/invocation-logger.d.ts +2 -2
  84. package/dist/providers/invocation-logger.d.ts.map +1 -1
  85. package/dist/providers/invocation-logger.js +1 -1
  86. package/dist/providers/invocation-logger.js.map +1 -1
  87. package/dist/runners/daemon.d.ts.map +1 -1
  88. package/dist/runners/daemon.js +0 -79
  89. package/dist/runners/daemon.js.map +1 -1
  90. package/dist/runners/orchestrator-loop.d.ts.map +1 -1
  91. package/dist/runners/orchestrator-loop.js +11 -29
  92. package/dist/runners/orchestrator-loop.js.map +1 -1
  93. package/dist/runners/wakeup-checks.js +1 -1
  94. package/dist/runners/wakeup-checks.js.map +1 -1
  95. package/dist/runners/wakeup-sanitise-recovery.d.ts.map +1 -1
  96. package/dist/runners/wakeup-sanitise-recovery.js +39 -5
  97. package/dist/runners/wakeup-sanitise-recovery.js.map +1 -1
  98. package/dist/runners/wakeup-sanitise.d.ts.map +1 -1
  99. package/dist/runners/wakeup-sanitise.js +11 -7
  100. package/dist/runners/wakeup-sanitise.js.map +1 -1
  101. package/dist/workspace/git-helpers.d.ts +8 -0
  102. package/dist/workspace/git-helpers.d.ts.map +1 -1
  103. package/dist/workspace/git-helpers.js +34 -0
  104. package/dist/workspace/git-helpers.js.map +1 -1
  105. package/dist/workspace/merge-lock.d.ts +5 -3
  106. package/dist/workspace/merge-lock.d.ts.map +1 -1
  107. package/dist/workspace/merge-lock.js +16 -15
  108. package/dist/workspace/merge-lock.js.map +1 -1
  109. package/migrations/028_add_merge_queue_fields.sql +8 -0
  110. package/migrations/manifest.json +9 -1
  111. package/package.json +1 -1
@@ -10,6 +10,7 @@ exports.runPeriodicSanitiseForProject = runPeriodicSanitiseForProject;
10
10
  exports.sanitisedActionCount = sanitisedActionCount;
11
11
  const loader_js_1 = require("../config/loader.js");
12
12
  const wakeup_sanitise_recovery_js_1 = require("./wakeup-sanitise-recovery.js");
13
+ const clone_js_1 = require("../parallel/clone.js");
13
14
  const DEFAULT_SANITISE_INTERVAL_MINUTES = 5;
14
15
  const DEFAULT_SANITISE_INVOCATION_TIMEOUT_SEC = 1800;
15
16
  function getSanitiseSettings(projectPath) {
@@ -71,13 +72,15 @@ function sanitiseProjectState(globalDb, projectDb, projectPath, dryRun, staleInv
71
72
  const hasActiveParallelRunner = activeRunnerTaskRows.some((row) => typeof row.parallel_session_id === 'string' && row.parallel_session_id.length > 0);
72
73
  let hasActiveMergeLock = false;
73
74
  try {
74
- const mergeLockRows = projectDb
75
- .prepare('SELECT expires_at FROM merge_locks')
76
- .all();
75
+ const STALE_LOCK_TTL_MS = 90_000;
76
+ const projectId = (0, clone_js_1.getProjectHash)(projectPath);
77
+ const mergeLockRows = globalDb
78
+ .prepare('SELECT heartbeat_at FROM workspace_merge_locks WHERE project_id = ?')
79
+ .all(projectId);
77
80
  const nowMs = Date.now();
78
81
  hasActiveMergeLock = mergeLockRows.some((row) => {
79
- const expiresAtMs = Date.parse(row.expires_at);
80
- return Number.isFinite(expiresAtMs) && expiresAtMs > nowMs;
82
+ const hbMs = Date.parse(row.heartbeat_at);
83
+ return Number.isFinite(hbMs) && (nowMs - hbMs) < STALE_LOCK_TTL_MS;
81
84
  });
82
85
  }
83
86
  catch {
@@ -113,7 +116,8 @@ function sanitiseProjectState(globalDb, projectDb, projectPath, dryRun, staleInv
113
116
  ORDER BY i.started_at_ms ASC`)
114
117
  .all(staleCutoffMs, deadRunnerCutoffMs);
115
118
  for (const row of recentRunningInvocations) {
116
- if (activeTaskIds.has(row.task_id) || hasActiveMergeLock) {
119
+ const isRebaseRole = row.role === 'rebase_coder' || row.role === 'rebase_reviewer';
120
+ if (activeTaskIds.has(row.task_id) || (hasActiveMergeLock && !isRebaseRole)) {
117
121
  continue;
118
122
  }
119
123
  // Only recover if we can confirm the runner process is dead
@@ -169,7 +173,7 @@ function sanitiseProjectState(globalDb, projectDb, projectPath, dryRun, staleInv
169
173
  const ids = disputedRows.map((r) => r.id);
170
174
  const placeholders = ids.map(() => '?').join(',');
171
175
  projectDb
172
- .prepare(`UPDATE tasks SET status = 'pending', updated_at = datetime('now')
176
+ .prepare(`UPDATE tasks SET status = 'pending', merge_phase = NULL, approved_sha = NULL, rebase_attempts = 0, updated_at = datetime('now')
173
177
  WHERE id IN (${placeholders})`)
174
178
  .run(...ids);
175
179
  const auditStmt = projectDb.prepare(`INSERT INTO audit (task_id, from_status, to_status, actor, actor_type, notes, created_at)
@@ -1 +1 @@
1
- {"version":3,"file":"wakeup-sanitise.js","sourceRoot":"","sources":["../../src/runners/wakeup-sanitise.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wakeup-sanitise.js","sourceRoot":"","sources":["../../src/runners/wakeup-sanitise.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,14 @@ export declare function pushWithRetries(cwd: string, remote: string, refspec: st
42
42
  success: boolean;
43
43
  error?: string;
44
44
  };
45
+ /**
46
+ * Async version of pushWithRetries — uses setTimeout instead of busy-wait
47
+ * so heartbeat timers can fire during backoff delays.
48
+ */
49
+ export declare function pushWithRetriesAsync(cwd: string, remote: string, refspec: string, retries?: number, backoffMs?: number[], forceWithLease?: boolean): Promise<{
50
+ success: boolean;
51
+ error?: string;
52
+ }>;
45
53
  /**
46
54
  * Check if `ancestor` is an ancestor of `descendant`.
47
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"git-helpers.d.ts","sourceRoot":"","sources":["../../src/workspace/git-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,MAAM,GAAG,IAAI,CAef;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,YAAY,GAAE,MAAM,GAAG,IAAW,GACjC,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAU,EACnB,SAAS,GAAE,MAAM,EAAwB,EACzC,cAAc,GAAE,OAAe,GAC9B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmCtC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAQrF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvE"}
1
+ {"version":3,"file":"git-helpers.d.ts","sourceRoot":"","sources":["../../src/workspace/git-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,MAAM,GAAG,IAAI,CAef;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,YAAY,GAAE,MAAM,GAAG,IAAW,GACjC,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAU,EACnB,SAAS,GAAE,MAAM,EAAwB,EACzC,cAAc,GAAE,OAAe,GAC9B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmCtC;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAU,EACnB,SAAS,GAAE,MAAM,EAAwB,EACzC,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAQrF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvE"}
@@ -10,12 +10,15 @@ exports.hasMidRebase = hasMidRebase;
10
10
  exports.abortRebase = abortRebase;
11
11
  exports.resolveBaseBranch = resolveBaseBranch;
12
12
  exports.pushWithRetries = pushWithRetries;
13
+ exports.pushWithRetriesAsync = pushWithRetriesAsync;
13
14
  exports.isAncestor = isAncestor;
14
15
  exports.getStatusPorcelain = getStatusPorcelain;
15
16
  exports.getLogOneline = getLogOneline;
16
17
  const node_child_process_1 = require("node:child_process");
17
18
  const node_fs_1 = require("node:fs");
18
19
  const node_path_1 = require("node:path");
20
+ const node_util_1 = require("node:util");
21
+ const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
19
22
  /**
20
23
  * Run a git command synchronously. Returns trimmed stdout on success.
21
24
  * Throws on non-zero exit unless `tolerateFailure` is set.
@@ -109,6 +112,37 @@ function pushWithRetries(cwd, remote, refspec, retries = 3, backoffMs = [1000, 4
109
112
  }
110
113
  return { success: false, error: `Push failed after ${retries} attempts: ${lastError}` };
111
114
  }
115
+ /**
116
+ * Async version of pushWithRetries — uses setTimeout instead of busy-wait
117
+ * so heartbeat timers can fire during backoff delays.
118
+ */
119
+ async function pushWithRetriesAsync(cwd, remote, refspec, retries = 3, backoffMs = [1000, 4000, 16000], forceWithLease = false) {
120
+ const pushArgs = ['push', remote, refspec];
121
+ if (forceWithLease) {
122
+ pushArgs.push('--force-with-lease');
123
+ }
124
+ let lastError = '';
125
+ for (let attempt = 0; attempt < retries; attempt++) {
126
+ try {
127
+ await execFileAsync('git', pushArgs, {
128
+ cwd,
129
+ encoding: 'utf-8',
130
+ timeout: 120_000,
131
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
132
+ });
133
+ return { success: true };
134
+ }
135
+ catch (err) {
136
+ const msg = err instanceof Error ? err.message : String(err);
137
+ const stderr = err?.stderr ?? '';
138
+ lastError = stderr.trim() || msg;
139
+ }
140
+ if (attempt < retries - 1 && attempt < backoffMs.length) {
141
+ await new Promise(r => setTimeout(r, backoffMs[attempt]));
142
+ }
143
+ }
144
+ return { success: false, error: `Push failed after ${retries} attempts: ${lastError}` };
145
+ }
112
146
  /**
113
147
  * Check if `ancestor` is an ancestor of `descendant`.
114
148
  */
@@ -1 +1 @@
1
- {"version":3,"file":"git-helpers.js","sourceRoot":"","sources":["../../src/workspace/git-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-helpers.js","sourceRoot":"","sources":["../../src/workspace/git-helpers.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,14 @@
7
7
  import type Database from 'better-sqlite3';
8
8
  /**
9
9
  * Attempt to acquire the merge lock for a project.
10
- * Polls every `pollMs` until `timeoutMs` elapses.
11
- * Reclaims stale locks older than 3 minutes.
10
+ *
11
+ * When `tryOnce` is true, makes a single attempt and returns immediately.
12
+ * Otherwise polls every `pollMs` until `timeoutMs` elapses.
13
+ * Reclaims stale locks older than 90 seconds.
12
14
  *
13
15
  * Returns true if the lock was acquired.
14
16
  */
15
- export declare function acquireWorkspaceMergeLock(globalDb: Database.Database, projectId: string, runnerId: string, slotId: number, timeoutMs?: number, pollMs?: number): boolean;
17
+ export declare function acquireWorkspaceMergeLock(globalDb: Database.Database, projectId: string, runnerId: string, slotId: number, timeoutMs?: number, pollMs?: number, tryOnce?: boolean): boolean;
16
18
  /**
17
19
  * Release the merge lock for a project.
18
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"merge-lock.d.ts","sourceRoot":"","sources":["../../src/workspace/merge-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAgB,EAC3B,MAAM,GAAE,MAAc,GACrB,OAAO,CAgET;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,IAAI,CAQN"}
1
+ {"version":3,"file":"merge-lock.d.ts","sourceRoot":"","sources":["../../src/workspace/merge-lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAgB,EAC3B,MAAM,GAAE,MAAc,EACtB,OAAO,GAAE,OAAe,GACvB,OAAO,CA8DT;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,IAAI,CAQN"}
@@ -9,37 +9,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.acquireWorkspaceMergeLock = acquireWorkspaceMergeLock;
10
10
  exports.releaseWorkspaceMergeLock = releaseWorkspaceMergeLock;
11
11
  exports.refreshWorkspaceMergeLockHeartbeat = refreshWorkspaceMergeLockHeartbeat;
12
+ const STALE_LOCK_TTL_MS = 90_000; // 90s — merge queue uses heartbeats, so stale = missed ~3 heartbeat cycles
12
13
  /**
13
14
  * Attempt to acquire the merge lock for a project.
14
- * Polls every `pollMs` until `timeoutMs` elapses.
15
- * Reclaims stale locks older than 3 minutes.
15
+ *
16
+ * When `tryOnce` is true, makes a single attempt and returns immediately.
17
+ * Otherwise polls every `pollMs` until `timeoutMs` elapses.
18
+ * Reclaims stale locks older than 90 seconds.
16
19
  *
17
20
  * Returns true if the lock was acquired.
18
21
  */
19
- function acquireWorkspaceMergeLock(globalDb, projectId, runnerId, slotId, timeoutMs = 300_000, pollMs = 5_000) {
20
- const deadline = Date.now() + timeoutMs;
21
- const STALE_LOCK_TTL_MS = 10 * 60 * 1000; // 10 minutes — must exceed worst-case push retry (3×120s = 360s)
22
- while (Date.now() < deadline) {
23
- const acquired = globalDb.transaction(() => {
24
- // Check for existing lock
22
+ function acquireWorkspaceMergeLock(globalDb, projectId, runnerId, slotId, timeoutMs = 300_000, pollMs = 5_000, tryOnce = false) {
23
+ const attemptAcquire = () => {
24
+ return globalDb.transaction(() => {
25
25
  const existing = globalDb
26
26
  .prepare('SELECT * FROM workspace_merge_locks WHERE project_id = ?')
27
27
  .get(projectId);
28
28
  if (existing) {
29
- // Check if stale
30
29
  const age = Date.now() - existing.heartbeat_at;
31
30
  if (age > STALE_LOCK_TTL_MS) {
32
- // Reclaim stale lock
33
31
  globalDb
34
32
  .prepare('DELETE FROM workspace_merge_locks WHERE id = ?')
35
33
  .run(existing.id);
36
34
  }
37
35
  else {
38
- // Lock is held by another runner
39
36
  return false;
40
37
  }
41
38
  }
42
- // Insert new lock
43
39
  const now = Date.now();
44
40
  try {
45
41
  globalDb
@@ -51,15 +47,20 @@ function acquireWorkspaceMergeLock(globalDb, projectId, runnerId, slotId, timeou
51
47
  }
52
48
  catch (error) {
53
49
  if (error.message?.includes('UNIQUE constraint')) {
54
- return false; // Another runner acquired it
50
+ return false;
55
51
  }
56
52
  throw error;
57
53
  }
58
54
  }).immediate();
59
- if (acquired) {
55
+ };
56
+ if (tryOnce) {
57
+ return attemptAcquire();
58
+ }
59
+ const deadline = Date.now() + timeoutMs;
60
+ while (Date.now() < deadline) {
61
+ if (attemptAcquire()) {
60
62
  return true;
61
63
  }
62
- // Wait before retrying
63
64
  const remaining = deadline - Date.now();
64
65
  if (remaining <= 0)
65
66
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"merge-lock.js","sourceRoot":"","sources":["../../src/workspace/merge-lock.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAWH,8DAuEC;AAKD,8DAOC;AAMD,gFAYC;AA5GD;;;;;;GAMG;AACH,SAAgB,yBAAyB,CACvC,QAA2B,EAC3B,SAAiB,EACjB,QAAgB,EAChB,MAAc,EACd,YAAoB,OAAO,EAC3B,SAAiB,KAAK;IAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,iEAAiE;IAE3G,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACzC,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,QAAQ;iBACtB,OAAO,CAAC,0DAA0D,CAAC;iBACnE,GAAG,CAAC,SAAS,CAIH,CAAC;YAEd,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB;gBACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC/C,IAAI,GAAG,GAAG,iBAAiB,EAAE,CAAC;oBAC5B,qBAAqB;oBACrB,QAAQ;yBACL,OAAO,CAAC,gDAAgD,CAAC;yBACzD,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,iCAAiC;oBACjC,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ;qBACL,OAAO,CACN;;oCAEwB,CACzB;qBACA,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACjD,OAAO,KAAK,CAAC,CAAC,6BAA6B;gBAC7C,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAEf,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,SAAS,IAAI,CAAC;YAAE,MAAM;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YACxB,gDAAgD;QAClD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CACvC,QAA2B,EAC3B,SAAiB;IAEjB,QAAQ;SACL,OAAO,CAAC,wDAAwD,CAAC;SACjE,GAAG,CAAC,SAAS,CAAC,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,kCAAkC,CAChD,QAA2B,EAC3B,SAAiB,EACjB,QAAgB;IAEhB,QAAQ;SACL,OAAO,CACN;;8CAEwC,CACzC;SACA,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"merge-lock.js","sourceRoot":"","sources":["../../src/workspace/merge-lock.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAeH,8DAsEC;AAKD,8DAOC;AAMD,gFAYC;AA/GD,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,2EAA2E;AAE7G;;;;;;;;GAQG;AACH,SAAgB,yBAAyB,CACvC,QAA2B,EAC3B,SAAiB,EACjB,QAAgB,EAChB,MAAc,EACd,YAAoB,OAAO,EAC3B,SAAiB,KAAK,EACtB,UAAmB,KAAK;IAExB,MAAM,cAAc,GAAG,GAAY,EAAE;QACnC,OAAO,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YAC/B,MAAM,QAAQ,GAAG,QAAQ;iBACtB,OAAO,CAAC,0DAA0D,CAAC;iBACnE,GAAG,CAAC,SAAS,CAIH,CAAC;YAEd,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC/C,IAAI,GAAG,GAAG,iBAAiB,EAAE,CAAC;oBAC5B,QAAQ;yBACL,OAAO,CAAC,gDAAgD,CAAC;yBACzD,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ;qBACL,OAAO,CACN;;oCAEwB,CACzB;qBACA,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACjD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,cAAc,EAAE,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,SAAS,IAAI,CAAC;YAAE,MAAM;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YACxB,gDAAgD;QAClD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CACvC,QAA2B,EAC3B,SAAiB;IAEjB,QAAQ;SACL,OAAO,CAAC,wDAAwD,CAAC;SACjE,GAAG,CAAC,SAAS,CAAC,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,kCAAkC,CAChD,QAA2B,EAC3B,SAAiB,EACjB,QAAgB;IAEhB,QAAQ;SACL,OAAO,CACN;;8CAEwC,CACzC;SACA,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,8 @@
1
+ -- UP
2
+ ALTER TABLE tasks ADD COLUMN merge_phase TEXT;
3
+ ALTER TABLE tasks ADD COLUMN approved_sha TEXT;
4
+ ALTER TABLE tasks ADD COLUMN rebase_attempts INTEGER DEFAULT 0;
5
+
6
+ -- DOWN
7
+ -- SQLite does not support DROP COLUMN; these columns are nullable/defaulted
8
+ -- and harmless if left in place after rollback.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "0.2.3",
3
- "latestDbVersion": 27,
3
+ "latestDbVersion": 28,
4
4
  "migrations": [
5
5
  {
6
6
  "id": 1,
@@ -217,6 +217,14 @@
217
217
  "description": "Add task_dependencies table for explicit task-level dependency tracking",
218
218
  "checksum": "",
219
219
  "cliVersion": "0.12.7"
220
+ },
221
+ {
222
+ "id": 28,
223
+ "name": "028_add_merge_queue_fields",
224
+ "file": "028_add_merge_queue_fields.sql",
225
+ "description": "Add merge_phase, approved_sha, rebase_attempts columns for merge queue pipeline",
226
+ "checksum": "",
227
+ "cliVersion": "0.14.3"
220
228
  }
221
229
  ]
222
230
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "steroids-cli",
3
- "version": "0.14.3",
3
+ "version": "0.15.0",
4
4
  "description": "Automated task execution system with coder/reviewer loop",
5
5
  "main": "dist/index.js",
6
6
  "bin": {