steroids-cli 0.9.11 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/parallel/merge-commit-checks.d.ts +6 -0
- package/dist/parallel/merge-commit-checks.d.ts.map +1 -0
- package/dist/parallel/merge-commit-checks.js +28 -0
- package/dist/parallel/merge-commit-checks.js.map +1 -0
- package/dist/parallel/merge-process.d.ts +21 -0
- package/dist/parallel/merge-process.d.ts.map +1 -0
- package/dist/parallel/merge-process.js +104 -0
- package/dist/parallel/merge-process.js.map +1 -0
- package/dist/parallel/merge-sealing.d.ts +11 -0
- package/dist/parallel/merge-sealing.d.ts.map +1 -0
- package/dist/parallel/merge-sealing.js +64 -0
- package/dist/parallel/merge-sealing.js.map +1 -0
- package/dist/parallel/merge-validation.d.ts +6 -0
- package/dist/parallel/merge-validation.d.ts.map +1 -0
- package/dist/parallel/merge-validation.js +57 -0
- package/dist/parallel/merge-validation.js.map +1 -0
- package/dist/parallel/merge-workspace.d.ts +8 -0
- package/dist/parallel/merge-workspace.d.ts.map +1 -0
- package/dist/parallel/merge-workspace.js +37 -0
- package/dist/parallel/merge-workspace.js.map +1 -0
- package/dist/parallel/merge.d.ts +2 -5
- package/dist/parallel/merge.d.ts.map +1 -1
- package/dist/parallel/merge.js +14 -245
- package/dist/parallel/merge.js.map +1 -1
- package/dist/runners/wakeup-checks.d.ts +14 -0
- package/dist/runners/wakeup-checks.d.ts.map +1 -0
- package/dist/runners/wakeup-checks.js +85 -0
- package/dist/runners/wakeup-checks.js.map +1 -0
- package/dist/runners/wakeup-reconcile.d.ts +10 -0
- package/dist/runners/wakeup-reconcile.d.ts.map +1 -0
- package/dist/runners/wakeup-reconcile.js +84 -0
- package/dist/runners/wakeup-reconcile.js.map +1 -0
- package/dist/runners/wakeup-runner.d.ts +18 -0
- package/dist/runners/wakeup-runner.d.ts.map +1 -0
- package/dist/runners/wakeup-runner.js +47 -0
- package/dist/runners/wakeup-runner.js.map +1 -0
- package/dist/runners/wakeup-sanitise.d.ts +24 -0
- package/dist/runners/wakeup-sanitise.d.ts.map +1 -0
- package/dist/runners/wakeup-sanitise.js +247 -0
- package/dist/runners/wakeup-sanitise.js.map +1 -0
- package/dist/runners/wakeup-timing.d.ts +12 -0
- package/dist/runners/wakeup-timing.d.ts.map +1 -0
- package/dist/runners/wakeup-timing.js +37 -0
- package/dist/runners/wakeup-timing.js.map +1 -0
- package/dist/runners/wakeup.d.ts +7 -8
- package/dist/runners/wakeup.d.ts.map +1 -1
- package/dist/runners/wakeup.js +26 -464
- package/dist/runners/wakeup.js.map +1 -1
- package/package.json +1 -1
package/dist/parallel/merge.js
CHANGED
|
@@ -4,258 +4,27 @@
|
|
|
4
4
|
* Cherry-picks completed workstream branches into main with crash-safe progress tracking.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ParallelMergeError = void 0;
|
|
7
|
+
exports.cleanupWorkspaceState = exports.ParallelMergeError = void 0;
|
|
8
8
|
exports.runParallelMerge = runParallelMerge;
|
|
9
|
-
exports.getNowISOString = getNowISOString;
|
|
10
|
-
exports.cleanupWorkspaceState = cleanupWorkspaceState;
|
|
11
9
|
const node_path_1 = require("node:path");
|
|
12
10
|
const node_fs_1 = require("node:fs");
|
|
13
|
-
const node_child_process_1 = require("node:child_process");
|
|
14
11
|
const clone_js_1 = require("./clone.js");
|
|
15
|
-
const clone_js_2 = require("./clone.js");
|
|
16
|
-
const clone_js_3 = require("./clone.js");
|
|
17
12
|
const connection_js_1 = require("../database/connection.js");
|
|
18
13
|
const global_db_js_1 = require("../runners/global-db.js");
|
|
19
14
|
const merge_git_js_1 = require("./merge-git.js");
|
|
20
15
|
const merge_lock_js_1 = require("./merge-lock.js");
|
|
21
16
|
const merge_progress_js_1 = require("./merge-progress.js");
|
|
22
|
-
const merge_conflict_js_1 = require("./merge-conflict.js");
|
|
23
17
|
const merge_errors_js_1 = require("./merge-errors.js");
|
|
24
18
|
Object.defineProperty(exports, "ParallelMergeError", { enumerable: true, get: function () { return merge_errors_js_1.ParallelMergeError; } });
|
|
19
|
+
const merge_validation_js_1 = require("./merge-validation.js");
|
|
20
|
+
const merge_workspace_js_1 = require("./merge-workspace.js");
|
|
21
|
+
Object.defineProperty(exports, "cleanupWorkspaceState", { enumerable: true, get: function () { return merge_workspace_js_1.cleanupWorkspaceState; } });
|
|
22
|
+
const merge_sealing_js_1 = require("./merge-sealing.js");
|
|
23
|
+
const merge_process_js_1 = require("./merge-process.js");
|
|
25
24
|
const DEFAULT_REMOTE = 'origin';
|
|
26
25
|
const DEFAULT_MAIN_BRANCH = 'main';
|
|
27
26
|
const DEFAULT_LOCK_TIMEOUT_MINUTES = 120;
|
|
28
27
|
const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
|
|
29
|
-
const VALIDATION_MAX_BUFFER_BYTES = 20 * 1024 * 1024;
|
|
30
|
-
const VALIDATION_SNIPPET_LIMIT = 8_000;
|
|
31
|
-
function getNowISOString() {
|
|
32
|
-
return new Date().toISOString();
|
|
33
|
-
}
|
|
34
|
-
function ensureMergeWorkingTree(projectPath) {
|
|
35
|
-
const lines = (0, merge_git_js_1.gitStatusLines)(projectPath);
|
|
36
|
-
if (lines.length === 0)
|
|
37
|
-
return;
|
|
38
|
-
if (!(0, merge_git_js_1.hasCherryPickInProgress)(projectPath)) {
|
|
39
|
-
throw new merge_errors_js_1.ParallelMergeError('Working tree is dirty. Commit or stash changes before merging.', 'DIRTY_WORKTREE');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function cleanupWorkspaceState(projectPath, workspaceRoot, workstreamIds, options) {
|
|
43
|
-
if (!options.cleanupOnSuccess)
|
|
44
|
-
return;
|
|
45
|
-
const baseRoot = (0, node_path_1.resolve)(workspaceRoot);
|
|
46
|
-
const hash = (0, clone_js_2.getProjectHash)(projectPath);
|
|
47
|
-
const projectWorkspaceRoot = (0, node_path_1.resolve)(baseRoot, hash);
|
|
48
|
-
if (!projectWorkspaceRoot.startsWith(baseRoot)) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
for (const workstreamId of workstreamIds) {
|
|
52
|
-
const folder = (0, node_path_1.resolve)(projectWorkspaceRoot, workstreamId.startsWith('ws-') ? workstreamId : `ws-${workstreamId}`);
|
|
53
|
-
if ((0, node_path_1.resolve)(folder).startsWith(projectWorkspaceRoot)) {
|
|
54
|
-
(0, node_fs_1.rmSync)(folder, { recursive: true, force: true });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
function runValidationGate(mergePath, validationCommand) {
|
|
59
|
-
if (!validationCommand || validationCommand.trim().length === 0) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
(0, node_child_process_1.execSync)(validationCommand, {
|
|
64
|
-
cwd: mergePath,
|
|
65
|
-
stdio: 'pipe',
|
|
66
|
-
encoding: 'utf-8',
|
|
67
|
-
maxBuffer: VALIDATION_MAX_BUFFER_BYTES,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
const err = error;
|
|
72
|
-
const stderr = typeof err.stderr === 'string' ? err.stderr : err.stderr?.toString() ?? '';
|
|
73
|
-
const stdout = typeof err.stdout === 'string' ? err.stdout : err.stdout?.toString() ?? '';
|
|
74
|
-
if (err.code === 'ENOBUFS') {
|
|
75
|
-
throw new merge_errors_js_1.ParallelMergeError('Validation gate output exceeded the maximum buffer size. Reduce output verbosity or split the command.', 'VALIDATION_FAILED', {
|
|
76
|
-
details: {
|
|
77
|
-
command: validationCommand.trim(),
|
|
78
|
-
stderr: stderr ?? '',
|
|
79
|
-
stdout: stdout ?? '',
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
const message = [stderr, stdout, err.message].filter(Boolean).join('\n') || String(error);
|
|
84
|
-
throw new merge_errors_js_1.ParallelMergeError(`Validation gate failed: ${message}`, 'VALIDATION_FAILED', {
|
|
85
|
-
details: {
|
|
86
|
-
command: validationCommand.trim(),
|
|
87
|
-
stderr,
|
|
88
|
-
stdout,
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
function snippet(value, limit = VALIDATION_SNIPPET_LIMIT) {
|
|
94
|
-
if (!value) {
|
|
95
|
-
return '';
|
|
96
|
-
}
|
|
97
|
-
const trimmed = value.trim();
|
|
98
|
-
if (trimmed.length <= limit) {
|
|
99
|
-
return trimmed;
|
|
100
|
-
}
|
|
101
|
-
return trimmed.slice(-limit);
|
|
102
|
-
}
|
|
103
|
-
function isAppliedCommitIntegrated(projectPath, commitSha) {
|
|
104
|
-
if (!commitSha) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
const output = (0, merge_git_js_1.runGitCommand)(projectPath, ['branch', '--contains', commitSha, '--list', 'HEAD'], { allowFailure: true });
|
|
108
|
-
const lower = output.toLowerCase();
|
|
109
|
-
if (lower.includes('fatal:') || lower.includes('error:')) {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
return output.trim().length > 0;
|
|
113
|
-
}
|
|
114
|
-
function resolveGitSha(output) {
|
|
115
|
-
const trimmed = output.trim();
|
|
116
|
-
if (!trimmed)
|
|
117
|
-
return null;
|
|
118
|
-
if (/fatal:|error:/i.test(trimmed))
|
|
119
|
-
return null;
|
|
120
|
-
return trimmed.split('\n').at(-1)?.trim() ?? null;
|
|
121
|
-
}
|
|
122
|
-
function sealWorkstreamsForMerge(mergeDb, sessionId, runnerId, lockEpoch, mergePath, remote, mainBranch, workstreams) {
|
|
123
|
-
const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
|
|
124
|
-
try {
|
|
125
|
-
const sealedEntries = [];
|
|
126
|
-
(0, merge_lock_js_1.assertMergeLockEpoch)(mergeDb, sessionId, runnerId, lockEpoch);
|
|
127
|
-
for (let index = 0; index < workstreams.length; index += 1) {
|
|
128
|
-
(0, merge_lock_js_1.assertMergeLockEpoch)(mergeDb, sessionId, runnerId, lockEpoch);
|
|
129
|
-
const stream = workstreams[index];
|
|
130
|
-
const commits = (0, merge_git_js_1.getWorkstreamCommitList)(mergePath, remote, stream.branchName, mainBranch);
|
|
131
|
-
const sealedHeadSha = resolveGitSha((0, merge_git_js_1.runGitCommand)(mergePath, ['rev-parse', `${remote}/${stream.branchName}`], { allowFailure: true }));
|
|
132
|
-
const sealedBaseSha = resolveGitSha((0, merge_git_js_1.runGitCommand)(mergePath, ['merge-base', `${remote}/${mainBranch}`, `${remote}/${stream.branchName}`], { allowFailure: true }));
|
|
133
|
-
if (!sealedHeadSha || !sealedBaseSha) {
|
|
134
|
-
throw new merge_errors_js_1.ParallelMergeError(`Could not resolve sealed merge SHAs for ${remote}/${stream.branchName}`, 'REMOTE_BRANCH_MISSING');
|
|
135
|
-
}
|
|
136
|
-
sealedEntries.push({
|
|
137
|
-
streamId: stream.id,
|
|
138
|
-
sealedBaseSha,
|
|
139
|
-
sealedHeadSha,
|
|
140
|
-
commits,
|
|
141
|
-
completionOrder: index + 1,
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
const applySealedUpdates = db.transaction(() => {
|
|
145
|
-
for (const entry of sealedEntries) {
|
|
146
|
-
const update = db.prepare(`UPDATE workstreams
|
|
147
|
-
SET sealed_base_sha = ?,
|
|
148
|
-
sealed_head_sha = ?,
|
|
149
|
-
sealed_commit_shas = ?,
|
|
150
|
-
completion_order = COALESCE(completion_order, ?),
|
|
151
|
-
completed_at = COALESCE(completed_at, datetime('now')),
|
|
152
|
-
status = 'completed'
|
|
153
|
-
WHERE session_id = ?
|
|
154
|
-
AND id = ?
|
|
155
|
-
AND status IN ('running', 'completed')`).run(entry.sealedBaseSha, entry.sealedHeadSha, JSON.stringify(entry.commits), entry.completionOrder, sessionId, entry.streamId);
|
|
156
|
-
if (update.changes !== 1) {
|
|
157
|
-
throw new merge_errors_js_1.ParallelMergeError(`Workstream lease check failed while sealing ${entry.streamId}`, 'LEASE_FENCE_FAILED');
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
applySealedUpdates();
|
|
162
|
-
}
|
|
163
|
-
finally {
|
|
164
|
-
close();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
async function processWorkstream(db, projectPath, sessionId, workstream, mainBranch, remote, progressRows, heartbeat) {
|
|
168
|
-
const summary = { applied: 0, skipped: 0, conflicts: 0 };
|
|
169
|
-
const commits = (0, merge_git_js_1.getWorkstreamCommitList)(projectPath, remote, workstream.branchName, mainBranch);
|
|
170
|
-
if (commits.length === 0) {
|
|
171
|
-
return summary;
|
|
172
|
-
}
|
|
173
|
-
const workstreamProgress = (0, merge_progress_js_1.getMergeProgressForWorkstream)(progressRows, workstream.id);
|
|
174
|
-
const workstreamLookup = new Map();
|
|
175
|
-
for (const row of workstreamProgress) {
|
|
176
|
-
workstreamLookup.set(row.position, row);
|
|
177
|
-
}
|
|
178
|
-
for (let position = 0; position < commits.length; position += 1) {
|
|
179
|
-
const commitSha = commits[position];
|
|
180
|
-
const shortSha = (0, merge_git_js_1.getCommitShortSha)(commitSha);
|
|
181
|
-
const prior = workstreamLookup.get(position);
|
|
182
|
-
if (prior?.status === 'applied' && prior.commit_sha === commitSha) {
|
|
183
|
-
if (isAppliedCommitIntegrated(projectPath, prior.applied_commit_sha)) {
|
|
184
|
-
summary.applied += 1;
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
(0, merge_progress_js_1.clearProgressEntry)(db, sessionId, workstream.id, position);
|
|
188
|
-
}
|
|
189
|
-
if (prior?.status === 'skipped' && prior.commit_sha === commitSha) {
|
|
190
|
-
summary.skipped += 1;
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
if (prior?.status === 'conflict' && prior.commit_sha === commitSha) {
|
|
194
|
-
if ((0, merge_git_js_1.hasCherryPickInProgress)(projectPath)) {
|
|
195
|
-
const outcome = await (0, merge_conflict_js_1.runConflictResolutionCycle)({
|
|
196
|
-
db,
|
|
197
|
-
projectPath,
|
|
198
|
-
sessionId,
|
|
199
|
-
workstreamId: workstream.id,
|
|
200
|
-
runnerId: heartbeat.runnerId,
|
|
201
|
-
mergeLockHeartbeat: {
|
|
202
|
-
lockEpoch: heartbeat.lockEpoch,
|
|
203
|
-
timeoutMinutes: heartbeat.timeoutMinutes,
|
|
204
|
-
},
|
|
205
|
-
branchName: workstream.branchName,
|
|
206
|
-
position,
|
|
207
|
-
commitSha,
|
|
208
|
-
existingTaskId: prior.conflict_task_id ?? undefined,
|
|
209
|
-
});
|
|
210
|
-
if (outcome === 'skipped')
|
|
211
|
-
summary.skipped += 1;
|
|
212
|
-
else
|
|
213
|
-
summary.applied += 1;
|
|
214
|
-
summary.conflicts += 1;
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
(0, merge_progress_js_1.clearProgressEntry)(db, sessionId, workstream.id, position);
|
|
218
|
-
}
|
|
219
|
-
if (prior && prior.commit_sha !== commitSha) {
|
|
220
|
-
(0, merge_progress_js_1.clearProgressEntry)(db, sessionId, workstream.id, position);
|
|
221
|
-
}
|
|
222
|
-
try {
|
|
223
|
-
(0, merge_git_js_1.runGitCommand)(projectPath, ['cherry-pick', commitSha]);
|
|
224
|
-
const appliedCommitSha = (0, merge_git_js_1.runGitCommand)(projectPath, ['rev-parse', 'HEAD']).trim();
|
|
225
|
-
(0, merge_progress_js_1.upsertProgressEntry)(db, sessionId, workstream.id, position, commitSha, 'applied', null, appliedCommitSha);
|
|
226
|
-
summary.applied += 1;
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
230
|
-
if (!/CONFLICT|merge conflict|could not apply|needs merge/i.test(message)) {
|
|
231
|
-
throw error;
|
|
232
|
-
}
|
|
233
|
-
const outcome = await (0, merge_conflict_js_1.runConflictResolutionCycle)({
|
|
234
|
-
db,
|
|
235
|
-
projectPath,
|
|
236
|
-
sessionId,
|
|
237
|
-
workstreamId: workstream.id,
|
|
238
|
-
runnerId: heartbeat.runnerId,
|
|
239
|
-
mergeLockHeartbeat: {
|
|
240
|
-
lockEpoch: heartbeat.lockEpoch,
|
|
241
|
-
timeoutMinutes: heartbeat.timeoutMinutes,
|
|
242
|
-
},
|
|
243
|
-
branchName: workstream.branchName,
|
|
244
|
-
position,
|
|
245
|
-
commitSha,
|
|
246
|
-
});
|
|
247
|
-
if (outcome === 'skipped') {
|
|
248
|
-
summary.skipped += 1;
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
summary.applied += 1;
|
|
252
|
-
}
|
|
253
|
-
summary.conflicts += 1;
|
|
254
|
-
}
|
|
255
|
-
(0, merge_lock_js_1.refreshMergeLock)(db, heartbeat.sessionId, heartbeat.runnerId, heartbeat.timeoutMinutes, heartbeat.lockEpoch);
|
|
256
|
-
}
|
|
257
|
-
return summary;
|
|
258
|
-
}
|
|
259
28
|
/**
|
|
260
29
|
* Run cherry-pick merge loop across completed workstreams.
|
|
261
30
|
*/
|
|
@@ -297,7 +66,7 @@ async function runParallelMerge(options) {
|
|
|
297
66
|
lockEpoch = lock.lock?.lock_epoch ?? 0;
|
|
298
67
|
(0, merge_lock_js_1.assertMergeLockEpoch)(db, sessionId, runnerId, lockEpoch);
|
|
299
68
|
(0, global_db_js_1.updateParallelSessionStatus)(sessionId, 'merging');
|
|
300
|
-
const integrationWorkspace = (0,
|
|
69
|
+
const integrationWorkspace = (0, clone_js_1.createIntegrationWorkspace)({
|
|
301
70
|
projectPath,
|
|
302
71
|
sessionId,
|
|
303
72
|
baseBranch: mainBranch,
|
|
@@ -317,13 +86,13 @@ async function runParallelMerge(options) {
|
|
|
317
86
|
// If heartbeat fails, merge keeps running until lock-dependent operations fail.
|
|
318
87
|
}
|
|
319
88
|
}, heartbeatIntervalMs);
|
|
320
|
-
ensureMergeWorkingTree(mergePath);
|
|
89
|
+
(0, merge_workspace_js_1.ensureMergeWorkingTree)(mergePath);
|
|
321
90
|
(0, merge_lock_js_1.assertMergeLockEpoch)(db, sessionId, runnerId, lockEpoch);
|
|
322
91
|
for (const stream of workstreams) {
|
|
323
92
|
(0, merge_lock_js_1.assertMergeLockEpoch)(db, sessionId, runnerId, lockEpoch);
|
|
324
93
|
(0, merge_git_js_1.safeRunMergeCommand)(mergePath, remote, stream.branchName);
|
|
325
94
|
}
|
|
326
|
-
sealWorkstreamsForMerge(db, sessionId, runnerId, lockEpoch, mergePath, remote, mainBranch, workstreams);
|
|
95
|
+
(0, merge_sealing_js_1.sealWorkstreamsForMerge)(db, sessionId, runnerId, lockEpoch, mergePath, remote, mainBranch, workstreams);
|
|
327
96
|
if (!recoveringFromCherryPick) {
|
|
328
97
|
const pullOutput = (0, merge_git_js_1.runGitCommand)(mergePath, ['pull', '--ff-only', remote, mainBranch], { allowFailure: true });
|
|
329
98
|
const pullOutputLower = pullOutput.toLowerCase();
|
|
@@ -337,12 +106,12 @@ async function runParallelMerge(options) {
|
|
|
337
106
|
}
|
|
338
107
|
const progressRows = (0, merge_progress_js_1.listMergeProgress)(db, sessionId);
|
|
339
108
|
for (const workstream of workstreams) {
|
|
340
|
-
const stats = await processWorkstream(db, mergePath, sessionId, workstream, mainBranch, remote, progressRows, { sessionId, runnerId, timeoutMinutes: lockTimeoutMinutes, lockEpoch });
|
|
109
|
+
const stats = await (0, merge_process_js_1.processWorkstream)(db, mergePath, sessionId, workstream, mainBranch, remote, progressRows, { sessionId, runnerId, timeoutMinutes: lockTimeoutMinutes, lockEpoch });
|
|
341
110
|
summary.completedCommits += stats.applied;
|
|
342
111
|
summary.skipped += stats.skipped;
|
|
343
112
|
summary.conflicts += stats.conflicts;
|
|
344
113
|
}
|
|
345
|
-
runValidationGate(mergePath, validationCommand);
|
|
114
|
+
(0, merge_validation_js_1.runValidationGate)(mergePath, validationCommand);
|
|
346
115
|
(0, merge_lock_js_1.assertMergeLockEpoch)(db, sessionId, runnerId, lockEpoch);
|
|
347
116
|
const pushResult = (0, merge_git_js_1.runGitCommand)(mergePath, ['push', remote, mainBranch], { allowFailure: true });
|
|
348
117
|
if ((0, merge_git_js_1.isNoPushError)(pushResult)) {
|
|
@@ -361,7 +130,7 @@ async function runParallelMerge(options) {
|
|
|
361
130
|
}
|
|
362
131
|
(0, merge_git_js_1.runGitCommand)(mergePath, ['remote', 'prune', remote]);
|
|
363
132
|
if (cleanupOnSuccess) {
|
|
364
|
-
cleanupWorkspaceState(projectPath, workspaceRoot, workstreams.map((stream) => stream.id), {
|
|
133
|
+
(0, merge_workspace_js_1.cleanupWorkspaceState)(projectPath, workspaceRoot, workstreams.map((stream) => stream.id), {
|
|
365
134
|
cleanupOnSuccess,
|
|
366
135
|
});
|
|
367
136
|
if (integrationWorkspacePath) {
|
|
@@ -405,8 +174,8 @@ async function runParallelMerge(options) {
|
|
|
405
174
|
workspacePath: integrationWorkspacePath ?? mergePath,
|
|
406
175
|
validationCommand: commandFromError ?? (validationCommand?.trim() || '(not configured)'),
|
|
407
176
|
errorMessage: message,
|
|
408
|
-
stdoutSnippet: snippet(stdoutFromError),
|
|
409
|
-
stderrSnippet: snippet(stderrFromError || message),
|
|
177
|
+
stdoutSnippet: (0, merge_validation_js_1.snippet)(stdoutFromError),
|
|
178
|
+
stderrSnippet: (0, merge_validation_js_1.snippet)(stderrFromError || message),
|
|
410
179
|
});
|
|
411
180
|
summary.validationEscalationId = escalation.id;
|
|
412
181
|
summary.validationWorkspacePath = escalation.workspace_path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/parallel/merge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/parallel/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project state checks for wakeup
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a project has pending work
|
|
6
|
+
*/
|
|
7
|
+
export declare function projectHasPendingWork(projectPath: string): Promise<boolean>;
|
|
8
|
+
/**
|
|
9
|
+
* Check if there's an active runner for a specific project
|
|
10
|
+
* Exported for use in daemon startup checks
|
|
11
|
+
*/
|
|
12
|
+
export declare function hasActiveRunnerForProject(projectPath: string): boolean;
|
|
13
|
+
export declare function hasActiveParallelSessionForProject(projectPath: string): boolean;
|
|
14
|
+
//# sourceMappingURL=wakeup-checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wakeup-checks.d.ts","sourceRoot":"","sources":["../../src/runners/wakeup-checks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBjF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAiBtE;AAED,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAkC/E"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Project state checks for wakeup
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.projectHasPendingWork = projectHasPendingWork;
|
|
7
|
+
exports.hasActiveRunnerForProject = hasActiveRunnerForProject;
|
|
8
|
+
exports.hasActiveParallelSessionForProject = hasActiveParallelSessionForProject;
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const global_db_js_1 = require("./global-db.js");
|
|
12
|
+
/**
|
|
13
|
+
* Check if a project has pending work
|
|
14
|
+
*/
|
|
15
|
+
async function projectHasPendingWork(projectPath) {
|
|
16
|
+
const dbPath = (0, node_path_1.join)(projectPath, '.steroids', 'steroids.db');
|
|
17
|
+
if (!(0, node_fs_1.existsSync)(dbPath)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
// Use dynamic import for ESM compatibility
|
|
22
|
+
const { default: Database } = await import('better-sqlite3');
|
|
23
|
+
const db = new Database(dbPath, { readonly: true });
|
|
24
|
+
const result = db
|
|
25
|
+
.prepare(`SELECT COUNT(*) as count FROM tasks
|
|
26
|
+
WHERE status IN ('pending', 'in_progress', 'review')`)
|
|
27
|
+
.get();
|
|
28
|
+
db.close();
|
|
29
|
+
return result.count > 0;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if there's an active runner for a specific project
|
|
37
|
+
* Exported for use in daemon startup checks
|
|
38
|
+
*/
|
|
39
|
+
function hasActiveRunnerForProject(projectPath) {
|
|
40
|
+
const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
|
|
41
|
+
try {
|
|
42
|
+
const row = db
|
|
43
|
+
.prepare(`SELECT 1 FROM runners
|
|
44
|
+
WHERE project_path = ?
|
|
45
|
+
AND status != 'stopped'
|
|
46
|
+
AND heartbeat_at > datetime('now', '-5 minutes')
|
|
47
|
+
AND parallel_session_id IS NULL`)
|
|
48
|
+
.get(projectPath);
|
|
49
|
+
return row !== undefined;
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
close();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function hasActiveParallelSessionForProject(projectPath) {
|
|
56
|
+
const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
|
|
57
|
+
try {
|
|
58
|
+
// Primary check: session record in non-terminal state.
|
|
59
|
+
const sessionRow = db
|
|
60
|
+
.prepare(`SELECT 1 FROM parallel_sessions
|
|
61
|
+
WHERE project_path = ?
|
|
62
|
+
AND status NOT IN ('completed', 'failed', 'aborted')
|
|
63
|
+
LIMIT 1`)
|
|
64
|
+
.get(projectPath);
|
|
65
|
+
if (sessionRow !== undefined)
|
|
66
|
+
return true;
|
|
67
|
+
// Belt-and-suspenders: if any runner for this project has an active
|
|
68
|
+
// parallel_session_id and a fresh heartbeat, treat it as active even if the
|
|
69
|
+
// session record somehow ended up in a terminal state. This prevents wakeup
|
|
70
|
+
// from spawning a new parallel session while workstream runners are still live.
|
|
71
|
+
const runnerRow = db
|
|
72
|
+
.prepare(`SELECT 1 FROM runners r
|
|
73
|
+
JOIN parallel_sessions ps ON ps.id = r.parallel_session_id
|
|
74
|
+
WHERE ps.project_path = ?
|
|
75
|
+
AND r.status != 'stopped'
|
|
76
|
+
AND r.heartbeat_at > datetime('now', '-5 minutes')
|
|
77
|
+
LIMIT 1`)
|
|
78
|
+
.get(projectPath);
|
|
79
|
+
return runnerRow !== undefined;
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
close();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=wakeup-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wakeup-checks.js","sourceRoot":"","sources":["../../src/runners/wakeup-checks.ts"],"names":[],"mappings":";AAAA;;GAEG;;AASH,sDAuBC;AAMD,8DAiBC;AAED,gFAkCC;AAzFD,qCAAqC;AACrC,yCAAiC;AACjC,iDAAoD;AAEpD;;GAEG;AACI,KAAK,UAAU,qBAAqB,CAAC,WAAmB;IAC7D,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAA,oBAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAG,EAAE;aACd,OAAO,CACN;8DACsD,CACvD;aACA,GAAG,EAAuB,CAAC;QAE9B,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,WAAmB;IAC3D,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CACN;;;;yCAIiC,CAClC;aACA,GAAG,CAAC,WAAW,CAA8B,CAAC;QAEjD,OAAO,GAAG,KAAK,SAAS,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED,SAAgB,kCAAkC,CAAC,WAAmB;IACpE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,uDAAuD;QACvD,MAAM,UAAU,GAAG,EAAE;aAClB,OAAO,CACN;;;iBAGS,CACV;aACA,GAAG,CAAC,WAAW,CAA8B,CAAC;QAEjD,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE1C,oEAAoE;QACpE,4EAA4E;QAC5E,4EAA4E;QAC5E,gFAAgF;QAChF,MAAM,SAAS,GAAG,EAAE;aACjB,OAAO,CACN;;;;;iBAKS,CACV;aACA,GAAG,CAAC,WAAW,CAA8B,CAAC;QAEjD,OAAO,SAAS,KAAK,SAAS,CAAC;IACjC,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parallel session reconciliation for wakeup
|
|
3
|
+
*/
|
|
4
|
+
import { openGlobalDatabase } from './global-db.js';
|
|
5
|
+
export declare function releaseExpiredWorkstreamLeases(db: ReturnType<typeof openGlobalDatabase>['db']): number;
|
|
6
|
+
export declare function reconcileParallelSessionRecovery(db: ReturnType<typeof openGlobalDatabase>['db'], projectPath: string): {
|
|
7
|
+
scheduledRetries: number;
|
|
8
|
+
blockedWorkstreams: number;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=wakeup-reconcile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wakeup-reconcile.d.ts","sourceRoot":"","sources":["../../src/runners/wakeup-reconcile.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAC9C,MAAM,CAWR;AAED,wBAAgB,gCAAgC,CAC9C,EAAE,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAC/C,WAAW,EAAE,MAAM,GAClB;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CA4F1D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Parallel session reconciliation for wakeup
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.releaseExpiredWorkstreamLeases = releaseExpiredWorkstreamLeases;
|
|
7
|
+
exports.reconcileParallelSessionRecovery = reconcileParallelSessionRecovery;
|
|
8
|
+
function releaseExpiredWorkstreamLeases(db) {
|
|
9
|
+
const result = db.prepare(`UPDATE workstreams
|
|
10
|
+
SET runner_id = NULL,
|
|
11
|
+
lease_expires_at = NULL
|
|
12
|
+
WHERE status = 'running'
|
|
13
|
+
AND lease_expires_at IS NOT NULL
|
|
14
|
+
AND lease_expires_at <= datetime('now')`).run();
|
|
15
|
+
return result.changes;
|
|
16
|
+
}
|
|
17
|
+
function reconcileParallelSessionRecovery(db, projectPath) {
|
|
18
|
+
const sessions = db
|
|
19
|
+
.prepare(`SELECT id
|
|
20
|
+
FROM parallel_sessions
|
|
21
|
+
WHERE project_path = ?
|
|
22
|
+
AND status NOT IN ('completed', 'failed', 'aborted', 'blocked_validation', 'blocked_recovery')`)
|
|
23
|
+
.all(projectPath);
|
|
24
|
+
let scheduledRetries = 0;
|
|
25
|
+
let blockedWorkstreams = 0;
|
|
26
|
+
for (const session of sessions) {
|
|
27
|
+
let blockedInSession = 0;
|
|
28
|
+
const candidates = db
|
|
29
|
+
.prepare(`SELECT id, recovery_attempts
|
|
30
|
+
FROM workstreams
|
|
31
|
+
WHERE session_id = ?
|
|
32
|
+
AND status = 'running'
|
|
33
|
+
AND (lease_expires_at IS NULL OR lease_expires_at <= datetime('now'))
|
|
34
|
+
AND (next_retry_at IS NULL OR next_retry_at <= datetime('now'))`)
|
|
35
|
+
.all(session.id);
|
|
36
|
+
for (const candidate of candidates) {
|
|
37
|
+
const nextAttempts = (candidate.recovery_attempts ?? 0) + 1;
|
|
38
|
+
if (nextAttempts >= 5) {
|
|
39
|
+
db.prepare(`UPDATE workstreams
|
|
40
|
+
SET status = 'failed',
|
|
41
|
+
recovery_attempts = ?,
|
|
42
|
+
next_retry_at = NULL,
|
|
43
|
+
last_reconcile_action = 'blocked_recovery',
|
|
44
|
+
last_reconciled_at = datetime('now')
|
|
45
|
+
WHERE id = ?`).run(nextAttempts, candidate.id);
|
|
46
|
+
blockedWorkstreams += 1;
|
|
47
|
+
blockedInSession += 1;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const backoffMinutes = Math.min(2 ** nextAttempts, 30);
|
|
51
|
+
db.prepare(`UPDATE workstreams
|
|
52
|
+
SET recovery_attempts = ?,
|
|
53
|
+
next_retry_at = datetime('now', ?),
|
|
54
|
+
last_reconcile_action = 'retry_scheduled',
|
|
55
|
+
last_reconciled_at = datetime('now')
|
|
56
|
+
WHERE id = ?`).run(nextAttempts, `+${backoffMinutes} minutes`, candidate.id);
|
|
57
|
+
scheduledRetries += 1;
|
|
58
|
+
}
|
|
59
|
+
if (blockedInSession > 0) {
|
|
60
|
+
db.prepare(`UPDATE parallel_sessions
|
|
61
|
+
SET status = 'blocked_recovery',
|
|
62
|
+
completed_at = NULL
|
|
63
|
+
WHERE id = ?`).run(session.id);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// If all workstreams are in a terminal state but the session is still marked
|
|
67
|
+
// running (e.g. because autoMergeOnCompletion crashed before it could call
|
|
68
|
+
// updateParallelSessionStatus), close it out now so wakeup doesn't block.
|
|
69
|
+
const nonTerminal = db.prepare(`SELECT COUNT(*) as count FROM workstreams
|
|
70
|
+
WHERE session_id = ? AND status NOT IN ('completed', 'failed', 'aborted')`).get(session.id);
|
|
71
|
+
if (nonTerminal.count === 0) {
|
|
72
|
+
const total = db.prepare(`SELECT COUNT(*) as count FROM workstreams WHERE session_id = ?`).get(session.id);
|
|
73
|
+
if (total.count > 0) {
|
|
74
|
+
// All workstreams finished — mark session completed so wakeup can move on.
|
|
75
|
+
db.prepare(`UPDATE parallel_sessions
|
|
76
|
+
SET status = 'completed',
|
|
77
|
+
completed_at = COALESCE(completed_at, datetime('now'))
|
|
78
|
+
WHERE id = ?`).run(session.id);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return { scheduledRetries, blockedWorkstreams };
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=wakeup-reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wakeup-reconcile.js","sourceRoot":"","sources":["../../src/runners/wakeup-reconcile.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,wEAaC;AAED,4EA+FC;AA9GD,SAAgB,8BAA8B,CAC5C,EAA+C;IAE/C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB;;;;;+CAK2C,CAC5C,CAAC,GAAG,EAAE,CAAC;IAER,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,SAAgB,gCAAgC,CAC9C,EAA+C,EAC/C,WAAmB;IAEnB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CACN;;;wGAGkG,CACnG;SACA,GAAG,CAAC,WAAW,CAA0B,CAAC;IAE7C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG,EAAE;aAClB,OAAO,CACN;;;;;2EAKmE,CACpE;aACA,GAAG,CAAC,OAAO,CAAC,EAAE,CAAqD,CAAC;QAEvE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAE5D,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACtB,EAAE,CAAC,OAAO,CACR;;;;;;wBAMc,CACf,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;gBAClC,kBAAkB,IAAI,CAAC,CAAC;gBACxB,gBAAgB,IAAI,CAAC,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,EAAE,EAAE,CAAC,CAAC;YACvD,EAAE,CAAC,OAAO,CACR;;;;;sBAKc,CACf,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,cAAc,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAChE,gBAAgB,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,OAAO,CACR;;;sBAGc,CACf,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QAED,6EAA6E;QAC7E,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B;iFAC2E,CAC5E,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAsB,CAAC;QAEvC,IAAI,WAAW,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CACtB,gEAAgE,CACjE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAsB,CAAC;YAEvC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBACpB,2EAA2E;gBAC3E,EAAE,CAAC,OAAO,CACR;;;wBAGc,CACf,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runner management for wakeup
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Kill a process by PID
|
|
6
|
+
*/
|
|
7
|
+
export declare function killProcess(pid: number): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Start a new runner daemon
|
|
10
|
+
* Uses 'steroids runners start --detach' so the runner registers in the global DB
|
|
11
|
+
* and updates heartbeat, allowing hasActiveRunnerForProject() to detect it.
|
|
12
|
+
* When runners.parallel.enabled is true, launches a parallel session instead.
|
|
13
|
+
*/
|
|
14
|
+
export declare function startRunner(projectPath: string): {
|
|
15
|
+
pid: number;
|
|
16
|
+
parallel?: boolean;
|
|
17
|
+
} | null;
|
|
18
|
+
//# sourceMappingURL=wakeup-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wakeup-runner.d.ts","sourceRoot":"","sources":["../../src/runners/wakeup-runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOhD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAoB3F"}
|