steroids-cli 0.14.2 → 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 (113) 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 +78 -74
  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 +21 -0
  96. package/dist/runners/wakeup-sanitise-recovery.d.ts.map +1 -0
  97. package/dist/runners/wakeup-sanitise-recovery.js +209 -0
  98. package/dist/runners/wakeup-sanitise-recovery.js.map +1 -0
  99. package/dist/runners/wakeup-sanitise.d.ts +1 -1
  100. package/dist/runners/wakeup-sanitise.d.ts.map +1 -1
  101. package/dist/runners/wakeup-sanitise.js +58 -179
  102. package/dist/runners/wakeup-sanitise.js.map +1 -1
  103. package/dist/workspace/git-helpers.d.ts +8 -0
  104. package/dist/workspace/git-helpers.d.ts.map +1 -1
  105. package/dist/workspace/git-helpers.js +34 -0
  106. package/dist/workspace/git-helpers.js.map +1 -1
  107. package/dist/workspace/merge-lock.d.ts +5 -3
  108. package/dist/workspace/merge-lock.d.ts.map +1 -1
  109. package/dist/workspace/merge-lock.js +16 -15
  110. package/dist/workspace/merge-lock.js.map +1 -1
  111. package/migrations/028_add_merge_queue_fields.sql +8 -0
  112. package/migrations/manifest.json +9 -1
  113. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"scanner-queries.d.ts","sourceRoot":"","sources":["../../src/monitor/scanner-queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAY5C,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAiBX;AAYD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,uBAAuB,EAAE,MAAM,GAC9B,OAAO,EAAE,CA6BX;AAaD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAuBX;AAYD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAmBX"}
1
+ {"version":3,"file":"scanner-queries.d.ts","sourceRoot":"","sources":["../../src/monitor/scanner-queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAY5C,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAiBX;AAYD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,uBAAuB,EAAE,MAAM,GAC9B,OAAO,EAAE,CA6BX;AAaD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAuBX;AAYD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAmBX;AAaD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAsBX;AAWD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,CAeX;AAaD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,EAAE,CAqBX"}
@@ -8,6 +8,9 @@ exports.scanFailedAndSkippedTasks = scanFailedAndSkippedTasks;
8
8
  exports.scanHighInvocations = scanHighInvocations;
9
9
  exports.scanRepeatedFailures = scanRepeatedFailures;
10
10
  exports.scanBlockedTasks = scanBlockedTasks;
11
+ exports.scanStuckMergePhase = scanStuckMergePhase;
12
+ exports.scanDisputedTasks = scanDisputedTasks;
13
+ exports.scanStaleMergeLocks = scanStaleMergeLocks;
11
14
  function scanFailedAndSkippedTasks(projectDb, projectPath, projectName) {
12
15
  const rows = projectDb
13
16
  .prepare(`SELECT id, title, status FROM tasks WHERE status IN ('failed', 'skipped')`)
@@ -88,4 +91,58 @@ function scanBlockedTasks(projectDb, projectPath, projectName) {
88
91
  context: { status: row.status },
89
92
  }));
90
93
  }
94
+ function scanStuckMergePhase(projectDb, projectPath, projectName) {
95
+ const rows = projectDb
96
+ .prepare(`SELECT id, title, merge_phase, updated_at FROM tasks
97
+ WHERE status = 'merge_pending' AND merge_phase IS NOT NULL
98
+ AND (
99
+ (merge_phase = 'queued' AND updated_at < datetime('now', '-15 minutes'))
100
+ OR (merge_phase IN ('rebasing', 'rebase_review') AND updated_at < datetime('now', '-90 minutes'))
101
+ )`)
102
+ .all();
103
+ return rows.map((row) => ({
104
+ type: 'stuck_merge_phase',
105
+ severity: 'warning',
106
+ projectPath,
107
+ projectName,
108
+ taskId: row.id,
109
+ taskTitle: row.title,
110
+ details: `Task "${row.title}" stuck in merge phase '${row.merge_phase}'`,
111
+ context: { mergePhase: row.merge_phase, updatedAt: row.updated_at },
112
+ }));
113
+ }
114
+ function scanDisputedTasks(projectDb, projectPath, projectName) {
115
+ const rows = projectDb
116
+ .prepare(`SELECT id, title FROM tasks WHERE status = 'disputed'`)
117
+ .all();
118
+ return rows.map((row) => ({
119
+ type: 'disputed_task',
120
+ severity: 'warning',
121
+ projectPath,
122
+ projectName,
123
+ taskId: row.id,
124
+ taskTitle: row.title,
125
+ details: `Task "${row.title}" is disputed — needs manual resolution`,
126
+ context: {},
127
+ }));
128
+ }
129
+ function scanStaleMergeLocks(globalDb, projectPath, projectName, projectId) {
130
+ const staleCutoffMs = Date.now() - 5 * 60_000; // 5 minutes
131
+ const row = globalDb
132
+ .prepare(`SELECT project_id, runner_id, acquired_at, heartbeat_at
133
+ FROM workspace_merge_locks
134
+ WHERE project_id = ? AND heartbeat_at < ?`)
135
+ .get(projectId, staleCutoffMs);
136
+ if (!row)
137
+ return [];
138
+ const ageMinutes = Math.round((Date.now() - row.heartbeat_at) / 60_000);
139
+ return [{
140
+ type: 'stale_merge_lock',
141
+ severity: 'warning',
142
+ projectPath,
143
+ projectName,
144
+ details: `Merge lock held for ${ageMinutes}m without heartbeat (runner: ${row.runner_id})`,
145
+ context: { runnerId: row.runner_id, acquiredAt: row.acquired_at, heartbeatAt: row.heartbeat_at },
146
+ }];
147
+ }
91
148
  //# sourceMappingURL=scanner-queries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner-queries.js","sourceRoot":"","sources":["../../src/monitor/scanner-queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner-queries.js","sourceRoot":"","sources":["../../src/monitor/scanner-queries.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * - Graceful: missing/corrupt project DBs are skipped with a warning
12
12
  */
13
13
  export interface Anomaly {
14
- type: 'orphaned_task' | 'hanging_invocation' | 'zombie_runner' | 'dead_runner' | 'db_inconsistency' | 'credit_exhaustion' | 'failed_task' | 'skipped_task' | 'idle_project' | 'high_invocations' | 'repeated_failures' | 'blocked_task';
14
+ type: 'orphaned_task' | 'hanging_invocation' | 'zombie_runner' | 'dead_runner' | 'db_inconsistency' | 'credit_exhaustion' | 'failed_task' | 'skipped_task' | 'idle_project' | 'high_invocations' | 'repeated_failures' | 'blocked_task' | 'stale_merge_lock' | 'stuck_merge_phase' | 'disputed_task';
15
15
  severity: 'info' | 'warning' | 'critical';
16
16
  projectPath: string;
17
17
  projectName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/monitor/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA2BH,MAAM,WAAW,OAAO;IACtB,IAAI,EACA,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,aAAa,GACb,kBAAkB,GAClB,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,cAAc,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AA4MD,wBAAsB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAoJnD"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/monitor/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA+BH,MAAM,WAAW,OAAO;IACtB,IAAI,EACA,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,aAAa,GACb,kBAAkB,GAClB,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AA4MD,wBAAsB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CA8JnD"}
@@ -23,6 +23,7 @@ const node_path_2 = require("node:path");
23
23
  const stuck_task_detector_js_1 = require("../health/stuck-task-detector.js");
24
24
  const global_db_connection_js_1 = require("../runners/global-db-connection.js");
25
25
  const cron_js_1 = require("../runners/cron.js");
26
+ const clone_js_1 = require("../parallel/clone.js");
26
27
  const global_db_backoffs_js_1 = require("../runners/global-db-backoffs.js");
27
28
  const scanner_queries_js_1 = require("./scanner-queries.js");
28
29
  // ---------------------------------------------------------------------------
@@ -91,7 +92,7 @@ function hasPendingWork(projectDb) {
91
92
  // disputed tasks (S3's sanitiser auto-resolves them after 30 min).
92
93
  const row = projectDb
93
94
  .prepare(`SELECT COUNT(*) as count FROM tasks
94
- WHERE status IN ('pending', 'in_progress', 'review')`)
95
+ WHERE status IN ('pending', 'in_progress', 'review', 'merge_pending')`)
95
96
  .get();
96
97
  return row.count > 0;
97
98
  }
@@ -252,7 +253,14 @@ async function runScan() {
252
253
  anomalies.push(...(0, scanner_queries_js_1.scanRepeatedFailures)(projectDb, projectPath, projectName));
253
254
  // 5. Blocked tasks (merge conflicts or errors needing reset)
254
255
  anomalies.push(...(0, scanner_queries_js_1.scanBlockedTasks)(projectDb, projectPath, projectName));
255
- // 6. Idle project check warning if cron is running (should have spawned a runner)
256
+ // 6. Stuck merge phase (queued > 15 min, rebasing > 90 min)
257
+ anomalies.push(...(0, scanner_queries_js_1.scanStuckMergePhase)(projectDb, projectPath, projectName));
258
+ // 7. Disputed tasks
259
+ anomalies.push(...(0, scanner_queries_js_1.scanDisputedTasks)(projectDb, projectPath, projectName));
260
+ // 8. Stale merge locks (>5 min without heartbeat)
261
+ const projectId = (0, clone_js_1.getProjectHash)(projectPath);
262
+ anomalies.push(...(0, scanner_queries_js_1.scanStaleMergeLocks)(globalDb, projectPath, projectName, projectId));
263
+ // 9. Idle project check — warning if cron is running (should have spawned a runner)
256
264
  if (hasPendingWork(projectDb) && !hasActiveRunner(globalDb, projectPath)) {
257
265
  const cronActive = (0, cron_js_1.cronStatus)().installed;
258
266
  // S6: Check if any provider is backed off — this legitimately prevents wakeup
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/monitor/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/monitor/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Merge queue rebase cycle — handles LLM-powered conflict resolution.
3
+ *
4
+ * Responsibility: rebase coder invocation, diff fence validation,
5
+ * rebase review orchestration, and merge_phase transitions.
6
+ *
7
+ * Step functions are exported for unit testing.
8
+ */
9
+ import type Database from 'better-sqlite3';
10
+ import type { Task } from '../database/queries.js';
11
+ import type { SteroidsConfig } from '../config/loader.js';
12
+ export declare function resetBranchToSha(slotPath: string, taskBranch: string, sha: string): void;
13
+ export interface ConflictCapture {
14
+ ok: boolean;
15
+ conflictFiles: string[];
16
+ error?: string;
17
+ }
18
+ export declare function captureConflictFiles(slotPath: string, taskBranch: string, targetBranch: string): ConflictCapture;
19
+ export interface DiffFenceResult {
20
+ valid: boolean;
21
+ violations: string[];
22
+ }
23
+ export declare function validateDiffFence(slotPath: string, allowedFiles: string[], baseRef: string): DiffFenceResult;
24
+ export declare function handleRebaseCoder(db: Database.Database, task: Task, config: SteroidsConfig, slotPath: string, targetBranch: string, taskBranch: string, runnerId?: string): Promise<void>;
25
+ export declare function handleRebaseReview(db: Database.Database, task: Task, config: SteroidsConfig, slotPath: string, targetBranch: string, taskBranch: string, runnerId?: string): Promise<void>;
26
+ export declare function parseRebaseReviewDecision(stdout: string): 'approve' | 'reject';
27
+ //# sourceMappingURL=merge-queue-rebase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-queue-rebase.d.ts","sourceRoot":"","sources":["../../src/orchestrator/merge-queue-rebase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAS1D,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACV,IAAI,CAIN;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,eAAe,CAoCjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,GACd,eAAe,CAejB;AAyCD,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAsJf;AAID,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA0Hf;AAID,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAQ9E"}
@@ -0,0 +1,355 @@
1
+ "use strict";
2
+ /**
3
+ * Merge queue rebase cycle — handles LLM-powered conflict resolution.
4
+ *
5
+ * Responsibility: rebase coder invocation, diff fence validation,
6
+ * rebase review orchestration, and merge_phase transitions.
7
+ *
8
+ * Step functions are exported for unit testing.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.resetBranchToSha = resetBranchToSha;
12
+ exports.captureConflictFiles = captureConflictFiles;
13
+ exports.validateDiffFence = validateDiffFence;
14
+ exports.handleRebaseCoder = handleRebaseCoder;
15
+ exports.handleRebaseReview = handleRebaseReview;
16
+ exports.parseRebaseReviewDecision = parseRebaseReviewDecision;
17
+ const node_child_process_1 = require("node:child_process");
18
+ const queries_js_1 = require("../database/queries.js");
19
+ const merge_queue_js_1 = require("./merge-queue.js");
20
+ const registry_js_1 = require("../providers/registry.js");
21
+ const invocation_logger_js_1 = require("../providers/invocation-logger.js");
22
+ const node_fs_1 = require("node:fs");
23
+ const node_os_1 = require("node:os");
24
+ const node_path_1 = require("node:path");
25
+ // ─── Pure step functions ────────────────────────────────────────────────────
26
+ function resetBranchToSha(slotPath, taskBranch, sha) {
27
+ (0, node_child_process_1.execFileSync)('git', ['checkout', '-B', taskBranch, sha], {
28
+ cwd: slotPath, encoding: 'utf-8', timeout: 30_000,
29
+ });
30
+ }
31
+ function captureConflictFiles(slotPath, taskBranch, targetBranch) {
32
+ // Start rebase to discover conflicts
33
+ try {
34
+ (0, node_child_process_1.execFileSync)('git', ['rebase', `origin/${targetBranch}`], {
35
+ cwd: slotPath, encoding: 'utf-8', timeout: 120_000,
36
+ });
37
+ // No conflicts — rebase succeeded cleanly (shouldn't reach here if
38
+ // attemptRebaseAndFastForward already failed, but handle gracefully)
39
+ return { ok: true, conflictFiles: [] };
40
+ }
41
+ catch {
42
+ // Expected — rebase failed due to conflicts
43
+ }
44
+ // Capture conflicting files
45
+ let conflictFiles = [];
46
+ try {
47
+ const output = (0, node_child_process_1.execFileSync)('git', ['diff', '--name-only', '--diff-filter=U'], {
48
+ cwd: slotPath, encoding: 'utf-8', timeout: 10_000,
49
+ }).trim();
50
+ conflictFiles = output ? output.split('\n').filter(Boolean) : [];
51
+ }
52
+ catch {
53
+ // Fallback: no conflict info available
54
+ }
55
+ // Abort the in-progress rebase
56
+ try {
57
+ (0, node_child_process_1.execFileSync)('git', ['rebase', '--abort'], {
58
+ cwd: slotPath, encoding: 'utf-8', timeout: 10_000,
59
+ });
60
+ }
61
+ catch { /* already clean */ }
62
+ if (conflictFiles.length === 0) {
63
+ return { ok: false, conflictFiles: [], error: 'Could not determine conflicting files' };
64
+ }
65
+ return { ok: true, conflictFiles };
66
+ }
67
+ function validateDiffFence(slotPath, allowedFiles, baseRef) {
68
+ let modifiedFiles;
69
+ try {
70
+ const output = (0, node_child_process_1.execFileSync)('git', ['diff', '--name-only', baseRef], {
71
+ cwd: slotPath, encoding: 'utf-8', timeout: 10_000,
72
+ }).trim();
73
+ modifiedFiles = output ? output.split('\n').filter(Boolean) : [];
74
+ }
75
+ catch {
76
+ return { valid: false, violations: ['Could not determine modified files'] };
77
+ }
78
+ const allowedSet = new Set(allowedFiles);
79
+ const violations = modifiedFiles.filter(f => !allowedSet.has(f));
80
+ return { valid: violations.length === 0, violations };
81
+ }
82
+ // ─── Rebase coder prompt ────────────────────────────────────────────────────
83
+ function buildRebaseCoderPrompt(task, conflictFiles, targetBranch) {
84
+ return [
85
+ `TASK ID: ${task.id}`,
86
+ '',
87
+ '# Rebase Conflict Resolution',
88
+ '',
89
+ `You are resolving merge conflicts so this task branch can be merged into \`${targetBranch}\`.`,
90
+ '',
91
+ '## Conflict Files',
92
+ ...conflictFiles.map(f => `- ${f}`),
93
+ '',
94
+ '## Rules',
95
+ '1. Read CLAUDE.md and AGENTS.md before starting.',
96
+ '2. ONLY modify files listed above. Do NOT touch any other files.',
97
+ '3. Resolve each conflict by understanding both sides and producing correct merged code.',
98
+ '4. Run the build command to verify your changes compile.',
99
+ '5. Run the test command to verify nothing is broken.',
100
+ '6. If you cannot resolve a conflict correctly, say so — do not guess.',
101
+ '',
102
+ '## Task Context',
103
+ `Title: ${task.title}`,
104
+ '',
105
+ '## Instructions',
106
+ `1. Run: git rebase origin/${targetBranch}`,
107
+ '2. For each conflict file, resolve the conflict markers.',
108
+ '3. Stage resolved files: git add <file>',
109
+ '4. Continue rebase: git rebase --continue',
110
+ '5. Build and test to verify.',
111
+ ].join('\n');
112
+ }
113
+ // ─── Orchestrator: handleRebaseCoder ────────────────────────────────────────
114
+ async function handleRebaseCoder(db, task, config, slotPath, targetBranch, taskBranch, runnerId) {
115
+ const approvedSha = task.approved_sha;
116
+ if (!approvedSha) {
117
+ (0, queries_js_1.updateTaskStatus)(db, task.id, 'blocked_error', 'orchestrator', '[merge_queue] No approved_sha for rebase — cannot proceed');
118
+ return;
119
+ }
120
+ // Step 1: Reset task branch to approved_sha (clean slate for each attempt)
121
+ try {
122
+ (0, node_child_process_1.execFileSync)('git', ['fetch', 'origin', targetBranch, taskBranch], {
123
+ cwd: slotPath, encoding: 'utf-8', timeout: 120_000,
124
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
125
+ });
126
+ }
127
+ catch {
128
+ // Transient — retry next iteration
129
+ return;
130
+ }
131
+ resetBranchToSha(slotPath, taskBranch, `origin/${taskBranch}`);
132
+ // Step 2: Capture conflict files
133
+ const capture = captureConflictFiles(slotPath, taskBranch, targetBranch);
134
+ if (!capture.ok) {
135
+ if (capture.conflictFiles.length === 0 && !capture.error) {
136
+ // Clean rebase succeeded — no conflicts, go back to queued for merge attempt
137
+ db.prepare(`UPDATE tasks SET merge_phase = 'queued', updated_at = datetime('now') WHERE id = ?`).run(task.id);
138
+ return;
139
+ }
140
+ db.prepare(`UPDATE tasks SET status = 'disputed', merge_phase = NULL, approved_sha = NULL, rebase_attempts = 0, updated_at = datetime('now') WHERE id = ?`).run(task.id);
141
+ (0, queries_js_1.addAuditEntry)(db, task.id, 'merge_pending', 'disputed', 'orchestrator', {
142
+ actorType: 'orchestrator',
143
+ notes: `[merge_queue] Could not capture conflict files: ${capture.error}`,
144
+ });
145
+ return;
146
+ }
147
+ if (capture.conflictFiles.length === 0) {
148
+ // No conflicts — go back to queued
149
+ db.prepare(`UPDATE tasks SET merge_phase = 'queued', updated_at = datetime('now') WHERE id = ?`).run(task.id);
150
+ return;
151
+ }
152
+ // Reset branch again for the LLM to work on
153
+ resetBranchToSha(slotPath, taskBranch, `origin/${taskBranch}`);
154
+ const preRebaseSha = (0, node_child_process_1.execFileSync)('git', ['rev-parse', 'HEAD'], {
155
+ cwd: slotPath, encoding: 'utf-8', timeout: 10_000,
156
+ }).trim();
157
+ // Step 3: Invoke LLM rebase coder
158
+ const coderConfig = config.ai?.coder;
159
+ if (!coderConfig?.provider || !coderConfig.model) {
160
+ (0, queries_js_1.updateTaskStatus)(db, task.id, 'blocked_error', 'orchestrator', '[merge_queue] No coder AI provider configured for rebase');
161
+ return;
162
+ }
163
+ const prompt = buildRebaseCoderPrompt(task, capture.conflictFiles, targetBranch);
164
+ const promptFile = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `steroids-rebase-coder-${Date.now()}.txt`);
165
+ (0, node_fs_1.writeFileSync)(promptFile, prompt, 'utf-8');
166
+ let llmSuccess = false;
167
+ try {
168
+ const registry = await (0, registry_js_1.getProviderRegistry)();
169
+ const provider = registry.get(coderConfig.provider);
170
+ if (!(await provider.isAvailable())) {
171
+ (0, queries_js_1.updateTaskStatus)(db, task.id, 'blocked_error', 'orchestrator', `[merge_queue] Rebase coder provider '${coderConfig.provider}' not available`);
172
+ return;
173
+ }
174
+ const result = await (0, invocation_logger_js_1.logInvocation)(prompt, (ctx) => provider.invoke(prompt, {
175
+ model: coderConfig.model,
176
+ timeout: 1800_000, // 30 min
177
+ cwd: slotPath,
178
+ promptFile,
179
+ role: 'coder',
180
+ streamOutput: false,
181
+ onActivity: ctx?.onActivity,
182
+ }), {
183
+ role: 'rebase_coder',
184
+ provider: coderConfig.provider,
185
+ model: coderConfig.model,
186
+ taskId: task.id,
187
+ projectPath: slotPath,
188
+ runnerId,
189
+ });
190
+ llmSuccess = result.success;
191
+ }
192
+ catch {
193
+ llmSuccess = false;
194
+ }
195
+ finally {
196
+ try {
197
+ (0, node_fs_1.unlinkSync)(promptFile);
198
+ }
199
+ catch { /* ignore */ }
200
+ }
201
+ if (!llmSuccess) {
202
+ db.prepare(`UPDATE tasks SET status = 'disputed', merge_phase = NULL, approved_sha = NULL, rebase_attempts = 0, updated_at = datetime('now') WHERE id = ?`).run(task.id);
203
+ (0, queries_js_1.addAuditEntry)(db, task.id, 'merge_pending', 'disputed', 'orchestrator', {
204
+ actorType: 'orchestrator',
205
+ notes: '[merge_queue] LLM rebase coder failed — escalating to disputed',
206
+ });
207
+ return;
208
+ }
209
+ // Step 4: Validate diff fence
210
+ const fence = validateDiffFence(slotPath, capture.conflictFiles, preRebaseSha);
211
+ if (!fence.valid) {
212
+ db.prepare(`UPDATE tasks SET status = 'disputed', merge_phase = NULL, approved_sha = NULL, rebase_attempts = 0, updated_at = datetime('now') WHERE id = ?`).run(task.id);
213
+ (0, queries_js_1.addAuditEntry)(db, task.id, 'merge_pending', 'disputed', 'orchestrator', {
214
+ actorType: 'orchestrator',
215
+ notes: `[merge_queue] Diff fence violation — LLM modified files outside conflict scope: ${fence.violations.join(', ')}`,
216
+ });
217
+ return;
218
+ }
219
+ // Step 5: Force-push updated task branch
220
+ try {
221
+ (0, node_child_process_1.execFileSync)('git', ['push', 'origin', taskBranch, '--force-with-lease'], {
222
+ cwd: slotPath, encoding: 'utf-8', timeout: 60_000,
223
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
224
+ });
225
+ }
226
+ catch {
227
+ (0, queries_js_1.updateTaskStatus)(db, task.id, 'blocked_error', 'orchestrator', '[merge_queue] Failed to push rebased task branch');
228
+ return;
229
+ }
230
+ // Step 6: Transition to rebase_review (do NOT set approved_sha)
231
+ db.prepare(`UPDATE tasks SET merge_phase = 'rebase_review', updated_at = datetime('now') WHERE id = ?`).run(task.id);
232
+ (0, queries_js_1.addAuditEntry)(db, task.id, 'merge_pending', 'merge_pending', 'orchestrator', {
233
+ actorType: 'orchestrator',
234
+ notes: `[merge_queue] Rebase coder completed — awaiting rebase review (conflicts: ${capture.conflictFiles.join(', ')})`,
235
+ });
236
+ }
237
+ // ─── Orchestrator: handleRebaseReview ───────────────────────────────────────
238
+ async function handleRebaseReview(db, task, config, slotPath, targetBranch, taskBranch, runnerId) {
239
+ // Fetch latest
240
+ try {
241
+ (0, node_child_process_1.execFileSync)('git', ['fetch', 'origin', targetBranch, taskBranch], {
242
+ cwd: slotPath, encoding: 'utf-8', timeout: 120_000,
243
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
244
+ });
245
+ }
246
+ catch {
247
+ return; // Transient — retry next iteration
248
+ }
249
+ // Invoke reviewer on the rebased task branch
250
+ const reviewerConfig = config.ai?.reviewer;
251
+ if (!reviewerConfig?.provider || !reviewerConfig.model) {
252
+ (0, queries_js_1.updateTaskStatus)(db, task.id, 'blocked_error', 'orchestrator', '[merge_queue] No reviewer AI provider configured for rebase review');
253
+ return;
254
+ }
255
+ const prompt = [
256
+ `TASK ID: ${task.id}`,
257
+ '',
258
+ '# Rebase Review',
259
+ '',
260
+ 'Review the conflict resolution changes on this task branch.',
261
+ 'Focus on: correctness of merge conflict resolution, no regressions, build passes.',
262
+ '',
263
+ `Task: ${task.title}`,
264
+ '',
265
+ 'Instructions:',
266
+ '1. Read CLAUDE.md and AGENTS.md.',
267
+ `2. Review the diff: git diff origin/${targetBranch}...origin/${taskBranch}`,
268
+ '3. Verify build and tests pass.',
269
+ '4. Output DECISION: APPROVE or DECISION: REJECT with reasoning.',
270
+ ].join('\n');
271
+ const promptFile = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `steroids-rebase-reviewer-${Date.now()}.txt`);
272
+ (0, node_fs_1.writeFileSync)(promptFile, prompt, 'utf-8');
273
+ let reviewerStdout = '';
274
+ let reviewerSuccess = false;
275
+ try {
276
+ const registry = await (0, registry_js_1.getProviderRegistry)();
277
+ const provider = registry.get(reviewerConfig.provider);
278
+ if (!(await provider.isAvailable())) {
279
+ (0, queries_js_1.updateTaskStatus)(db, task.id, 'blocked_error', 'orchestrator', `[merge_queue] Rebase reviewer provider '${reviewerConfig.provider}' not available`);
280
+ return;
281
+ }
282
+ const result = await (0, invocation_logger_js_1.logInvocation)(prompt, (ctx) => provider.invoke(prompt, {
283
+ model: reviewerConfig.model,
284
+ timeout: 900_000, // 15 min
285
+ cwd: slotPath,
286
+ promptFile,
287
+ role: 'reviewer',
288
+ streamOutput: false,
289
+ onActivity: ctx?.onActivity,
290
+ }), {
291
+ role: 'rebase_reviewer',
292
+ provider: reviewerConfig.provider,
293
+ model: reviewerConfig.model,
294
+ taskId: task.id,
295
+ projectPath: slotPath,
296
+ runnerId,
297
+ });
298
+ reviewerStdout = result.stdout;
299
+ reviewerSuccess = result.success;
300
+ }
301
+ catch {
302
+ reviewerSuccess = false;
303
+ }
304
+ finally {
305
+ try {
306
+ (0, node_fs_1.unlinkSync)(promptFile);
307
+ }
308
+ catch { /* ignore */ }
309
+ }
310
+ if (!reviewerSuccess) {
311
+ db.prepare(`UPDATE tasks SET status = 'disputed', merge_phase = NULL, approved_sha = NULL, rebase_attempts = 0, updated_at = datetime('now') WHERE id = ?`).run(task.id);
312
+ (0, queries_js_1.addAuditEntry)(db, task.id, 'merge_pending', 'disputed', 'orchestrator', {
313
+ actorType: 'orchestrator',
314
+ notes: '[merge_queue] Rebase reviewer failed — escalating to disputed',
315
+ });
316
+ return;
317
+ }
318
+ // Parse decision from reviewer output
319
+ const decision = parseRebaseReviewDecision(reviewerStdout);
320
+ if (decision === 'approve') {
321
+ // Re-record approved_sha from remote HEAD of task branch
322
+ let newApprovedSha;
323
+ try {
324
+ newApprovedSha = (0, node_child_process_1.execFileSync)('git', ['rev-parse', `origin/${taskBranch}`], {
325
+ cwd: slotPath, encoding: 'utf-8', timeout: 10_000,
326
+ }).trim();
327
+ }
328
+ catch { /* fall through */ }
329
+ if (!newApprovedSha) {
330
+ (0, queries_js_1.updateTaskStatus)(db, task.id, 'blocked_error', 'orchestrator', '[merge_queue] Could not resolve approved_sha after rebase review');
331
+ return;
332
+ }
333
+ db.prepare(`UPDATE tasks SET merge_phase = 'queued', approved_sha = ?, updated_at = datetime('now')
334
+ WHERE id = ?`).run(newApprovedSha, task.id);
335
+ (0, queries_js_1.addAuditEntry)(db, task.id, 'merge_pending', 'merge_pending', 'orchestrator', {
336
+ actorType: 'orchestrator',
337
+ notes: `[merge_queue] Rebase review approved — re-queued for merge (new sha: ${newApprovedSha})`,
338
+ });
339
+ }
340
+ else {
341
+ // Reject — transition back to rebasing (handles increment + cap)
342
+ (0, merge_queue_js_1.transitionToRebasing)(db, task.id, 'Rebase review rejected');
343
+ }
344
+ }
345
+ // ─── Decision parser ────────────────────────────────────────────────────────
346
+ function parseRebaseReviewDecision(stdout) {
347
+ const upper = stdout.toUpperCase();
348
+ // Look for explicit DECISION: APPROVE/REJECT tokens
349
+ if (upper.includes('DECISION: APPROVE') || upper.includes('DECISION:APPROVE')) {
350
+ return 'approve';
351
+ }
352
+ // Default to reject if no clear approval signal
353
+ return 'reject';
354
+ }
355
+ //# sourceMappingURL=merge-queue-rebase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-queue-rebase.js","sourceRoot":"","sources":["../../src/orchestrator/merge-queue-rebase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Merge queue pipeline — routes merge_pending tasks through the merge gate.
3
+ *
4
+ * Responsibility: pipeline routing, merge orchestration, pool slot and lock lifecycle.
5
+ * Step functions (fetchAndPrepare, attemptRebaseAndFastForward, etc.) are composed
6
+ * here but contain their own logic.
7
+ */
8
+ import type Database from 'better-sqlite3';
9
+ import type { Task } from '../database/queries.js';
10
+ import type { SteroidsConfig } from '../config/loader.js';
11
+ export type PushErrorClass = 'race_loss' | 'transient' | 'permanent';
12
+ export type FetchErrorClass = 'transient' | 'permanent';
13
+ export declare function classifyPushError(error: string): PushErrorClass;
14
+ export declare function classifyFetchError(error: string): FetchErrorClass;
15
+ export interface PrepResult {
16
+ ok: boolean;
17
+ alreadyMerged?: boolean;
18
+ error?: 'sha_mismatch' | 'fetch_transient' | 'fetch_permanent';
19
+ slotPath?: string;
20
+ taskBranchLocal?: string;
21
+ targetBranch?: string;
22
+ }
23
+ export declare function fetchAndPrepare(slotPath: string, taskBranch: string, targetBranch: string, approvedSha: string): PrepResult;
24
+ export declare function handlePrepFailure(db: Database.Database, taskId: string, error: 'sha_mismatch' | 'fetch_transient' | 'fetch_permanent'): void;
25
+ export interface MergeAttemptResult {
26
+ merged: boolean;
27
+ reason?: 'conflicts' | 'ff_only';
28
+ }
29
+ export declare function attemptRebaseAndFastForward(slotPath: string, taskBranch: string, targetBranch: string): MergeAttemptResult;
30
+ export declare function pushTargetBranch(slotPath: string, targetBranch: string): Promise<{
31
+ ok: boolean;
32
+ errorClass?: PushErrorClass;
33
+ error?: string;
34
+ }>;
35
+ export declare function cleanupTaskBranch(slotPath: string, taskBranch: string): void;
36
+ export declare function markCompleted(db: Database.Database, taskId: string, mergedSha?: string): void;
37
+ export declare function transitionToRebasing(db: Database.Database, taskId: string, reason: string): void;
38
+ export declare function handleMergeAttempt(db: Database.Database, task: Task, config: SteroidsConfig, sourceProjectPath: string, runnerId?: string): Promise<void>;
39
+ export declare function processMergeQueue(db: Database.Database, task: Task, config: SteroidsConfig, sourceProjectPath: string, runnerId?: string): Promise<void>;
40
+ //# sourceMappingURL=merge-queue.d.ts.map