steroids-cli 0.8.21 → 0.8.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/llm.d.ts.map +1 -1
- package/dist/commands/llm.js +4 -0
- package/dist/commands/llm.js.map +1 -1
- package/dist/commands/loop-phases.d.ts +1 -1
- package/dist/commands/loop-phases.d.ts.map +1 -1
- package/dist/commands/loop-phases.js +3 -3
- package/dist/commands/loop-phases.js.map +1 -1
- package/dist/commands/runners.js +4 -0
- package/dist/commands/runners.js.map +1 -1
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +86 -33
- package/dist/commands/tasks.js.map +1 -1
- package/dist/database/queries.d.ts +14 -0
- package/dist/database/queries.d.ts.map +1 -1
- package/dist/database/queries.js +46 -0
- package/dist/database/queries.js.map +1 -1
- package/dist/database/schema.d.ts +2 -2
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +30 -0
- package/dist/database/schema.js.map +1 -1
- package/dist/orchestrator/task-selector.d.ts +7 -2
- package/dist/orchestrator/task-selector.d.ts.map +1 -1
- package/dist/orchestrator/task-selector.js +91 -14
- package/dist/orchestrator/task-selector.js.map +1 -1
- package/dist/parallel/clone.d.ts +41 -0
- package/dist/parallel/clone.d.ts.map +1 -0
- package/dist/parallel/clone.js +176 -0
- package/dist/parallel/clone.js.map +1 -0
- package/dist/parallel/clone.test.d.ts +2 -0
- package/dist/parallel/clone.test.d.ts.map +1 -0
- package/dist/parallel/clone.test.js +252 -0
- package/dist/parallel/clone.test.js.map +1 -0
- package/dist/parallel/merge-conflict.d.ts +22 -0
- package/dist/parallel/merge-conflict.d.ts.map +1 -0
- package/dist/parallel/merge-conflict.js +227 -0
- package/dist/parallel/merge-conflict.js.map +1 -0
- package/dist/parallel/merge-errors.d.ts +10 -0
- package/dist/parallel/merge-errors.d.ts.map +1 -0
- package/dist/parallel/merge-errors.js +16 -0
- package/dist/parallel/merge-errors.js.map +1 -0
- package/dist/parallel/merge-git.d.ts +25 -0
- package/dist/parallel/merge-git.d.ts.map +1 -0
- package/dist/parallel/merge-git.js +134 -0
- package/dist/parallel/merge-git.js.map +1 -0
- package/dist/parallel/merge-lock.d.ts +26 -0
- package/dist/parallel/merge-lock.d.ts.map +1 -0
- package/dist/parallel/merge-lock.js +58 -0
- package/dist/parallel/merge-lock.js.map +1 -0
- package/dist/parallel/merge-progress.d.ts +20 -0
- package/dist/parallel/merge-progress.d.ts.map +1 -0
- package/dist/parallel/merge-progress.js +36 -0
- package/dist/parallel/merge-progress.js.map +1 -0
- package/dist/parallel/merge.d.ts +39 -0
- package/dist/parallel/merge.d.ts.map +1 -0
- package/dist/parallel/merge.js +231 -0
- package/dist/parallel/merge.js.map +1 -0
- package/dist/parallel/merge.test.d.ts +5 -0
- package/dist/parallel/merge.test.d.ts.map +1 -0
- package/dist/parallel/merge.test.js +322 -0
- package/dist/parallel/merge.test.js.map +1 -0
- package/dist/parallel/scheduler.d.ts +43 -0
- package/dist/parallel/scheduler.d.ts.map +1 -0
- package/dist/parallel/scheduler.js +281 -0
- package/dist/parallel/scheduler.js.map +1 -0
- package/dist/runners/daemon.d.ts +11 -1
- package/dist/runners/daemon.d.ts.map +1 -1
- package/dist/runners/daemon.js +18 -4
- package/dist/runners/daemon.js.map +1 -1
- package/dist/runners/global-db.d.ts.map +1 -1
- package/dist/runners/global-db.js +42 -1
- package/dist/runners/global-db.js.map +1 -1
- package/dist/runners/orchestrator-loop.d.ts +3 -0
- package/dist/runners/orchestrator-loop.d.ts.map +1 -1
- package/dist/runners/orchestrator-loop.js +19 -9
- package/dist/runners/orchestrator-loop.js.map +1 -1
- package/dist/runners/wakeup.d.ts.map +1 -1
- package/dist/runners/wakeup.js +2 -1
- package/dist/runners/wakeup.js.map +1 -1
- package/migrations/011_add_merge_locks_and_progress.sql +39 -0
- package/migrations/manifest.json +9 -1
- package/package.json +1 -1
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workstream scheduler for parallel section execution.
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Validate dependency graphs (including cycle detection)
|
|
7
|
+
* - Create deterministic topological ordering
|
|
8
|
+
* - Partition sections into connected components (undirected)
|
|
9
|
+
* - Order each workstream by topological sort
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.findConnectedComponents = exports.topologicalSortSectionIds = exports.topologicalSort = exports.buildWorkstreams = exports.partitionSectionsIntoWorkstreams = exports.partitionIntoWorkstreams = exports.scheduleWorkstreams = exports.createWorkstreams = exports.CyclicDependencyError = void 0;
|
|
13
|
+
exports.topologicalSortSections = topologicalSortSections;
|
|
14
|
+
exports.partitionWorkstreams = partitionWorkstreams;
|
|
15
|
+
class CyclicDependencyError extends Error {
|
|
16
|
+
cycle;
|
|
17
|
+
constructor(cycle) {
|
|
18
|
+
super(`Cyclic dependency detected: ${cycle.join(' -> ')}`);
|
|
19
|
+
this.name = 'CyclicDependencyError';
|
|
20
|
+
this.cycle = cycle;
|
|
21
|
+
if (Error.captureStackTrace) {
|
|
22
|
+
Error.captureStackTrace(this, CyclicDependencyError);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.CyclicDependencyError = CyclicDependencyError;
|
|
27
|
+
function buildSectionOrderMap(sections) {
|
|
28
|
+
const orderMap = new Map();
|
|
29
|
+
for (let i = 0; i < sections.length; i += 1) {
|
|
30
|
+
const section = sections[i];
|
|
31
|
+
if (orderMap.has(section.id)) {
|
|
32
|
+
throw new Error(`Duplicate section id: ${section.id}`);
|
|
33
|
+
}
|
|
34
|
+
const explicitPosition = section.position;
|
|
35
|
+
orderMap.set(section.id, explicitPosition ?? i);
|
|
36
|
+
}
|
|
37
|
+
return orderMap;
|
|
38
|
+
}
|
|
39
|
+
function compareSectionIds(a, b, orderMap) {
|
|
40
|
+
const posA = orderMap.get(a) ?? Number.MAX_SAFE_INTEGER;
|
|
41
|
+
const posB = orderMap.get(b) ?? Number.MAX_SAFE_INTEGER;
|
|
42
|
+
if (posA !== posB) {
|
|
43
|
+
return posA - posB;
|
|
44
|
+
}
|
|
45
|
+
return a.localeCompare(b);
|
|
46
|
+
}
|
|
47
|
+
function buildGraphData(sections, dependencies) {
|
|
48
|
+
const sectionsById = new Map();
|
|
49
|
+
const orderMap = buildSectionOrderMap(sections);
|
|
50
|
+
const dependencyMap = new Map();
|
|
51
|
+
const reverseDependencyMap = new Map();
|
|
52
|
+
const undirectedDependencyMap = new Map();
|
|
53
|
+
for (const section of sections) {
|
|
54
|
+
sectionsById.set(section.id, section);
|
|
55
|
+
dependencyMap.set(section.id, new Set());
|
|
56
|
+
reverseDependencyMap.set(section.id, new Set());
|
|
57
|
+
undirectedDependencyMap.set(section.id, new Set());
|
|
58
|
+
}
|
|
59
|
+
for (const dependency of dependencies) {
|
|
60
|
+
const { sectionId, dependsOnSectionId } = dependency;
|
|
61
|
+
if (!sectionsById.has(sectionId)) {
|
|
62
|
+
throw new Error(`Unknown section in dependency: ${sectionId}`);
|
|
63
|
+
}
|
|
64
|
+
if (!sectionsById.has(dependsOnSectionId)) {
|
|
65
|
+
throw new Error(`Unknown section in dependency: ${dependsOnSectionId}`);
|
|
66
|
+
}
|
|
67
|
+
const deps = dependencyMap.get(sectionId);
|
|
68
|
+
const dependents = reverseDependencyMap.get(dependsOnSectionId);
|
|
69
|
+
const leftAdj = undirectedDependencyMap.get(sectionId);
|
|
70
|
+
const rightAdj = undirectedDependencyMap.get(dependsOnSectionId);
|
|
71
|
+
if (!deps || !dependents || !leftAdj || !rightAdj) {
|
|
72
|
+
throw new Error('Dependency graph is not initialized correctly');
|
|
73
|
+
}
|
|
74
|
+
if (!deps.has(dependsOnSectionId)) {
|
|
75
|
+
deps.add(dependsOnSectionId);
|
|
76
|
+
dependents.add(sectionId);
|
|
77
|
+
leftAdj.add(dependsOnSectionId);
|
|
78
|
+
rightAdj.add(sectionId);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
for (const adjacency of [dependencyMap, reverseDependencyMap, undirectedDependencyMap]) {
|
|
82
|
+
for (const [sectionId, neighbors] of adjacency.entries()) {
|
|
83
|
+
const orderedNeighbors = [...neighbors].sort((a, b) => compareSectionIds(a, b, orderMap));
|
|
84
|
+
adjacency.set(sectionId, new Set(orderedNeighbors));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
sectionsById,
|
|
89
|
+
orderMap,
|
|
90
|
+
dependencyMap,
|
|
91
|
+
reverseDependencyMap,
|
|
92
|
+
undirectedDependencyMap,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function detectCycleInGraph(sections, dependencies, sectionFilter) {
|
|
96
|
+
const graph = buildGraphData(sections, dependencies);
|
|
97
|
+
const allSectionIds = [...graph.sectionsById.keys()]
|
|
98
|
+
.filter((id) => !sectionFilter || sectionFilter.has(id))
|
|
99
|
+
.sort((a, b) => compareSectionIds(a, b, graph.orderMap));
|
|
100
|
+
if (allSectionIds.length === 0) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const state = new Map();
|
|
104
|
+
const stack = [];
|
|
105
|
+
const stackIndex = new Map();
|
|
106
|
+
for (const sectionId of allSectionIds) {
|
|
107
|
+
state.set(sectionId, 'unvisited');
|
|
108
|
+
}
|
|
109
|
+
const visitedNeighbors = (currentId) => {
|
|
110
|
+
const neighbors = graph.dependencyMap.get(currentId);
|
|
111
|
+
if (!neighbors) {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
return [...neighbors]
|
|
115
|
+
.filter((neighborId) => !sectionFilter || sectionFilter.has(neighborId))
|
|
116
|
+
.sort((a, b) => compareSectionIds(a, b, graph.orderMap));
|
|
117
|
+
};
|
|
118
|
+
const dfs = (currentId) => {
|
|
119
|
+
state.set(currentId, 'visiting');
|
|
120
|
+
stackIndex.set(currentId, stack.length);
|
|
121
|
+
stack.push(currentId);
|
|
122
|
+
for (const neighborId of visitedNeighbors(currentId)) {
|
|
123
|
+
const neighborState = state.get(neighborId);
|
|
124
|
+
if (neighborState === 'visiting') {
|
|
125
|
+
const start = stackIndex.get(neighborId);
|
|
126
|
+
if (start === undefined) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
return [...stack.slice(start), neighborId];
|
|
130
|
+
}
|
|
131
|
+
if (neighborState === 'unvisited') {
|
|
132
|
+
const cycle = dfs(neighborId);
|
|
133
|
+
if (cycle) {
|
|
134
|
+
return cycle;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
stack.pop();
|
|
139
|
+
stackIndex.delete(currentId);
|
|
140
|
+
state.set(currentId, 'done');
|
|
141
|
+
return null;
|
|
142
|
+
};
|
|
143
|
+
for (const sectionId of allSectionIds) {
|
|
144
|
+
if (state.get(sectionId) === 'unvisited') {
|
|
145
|
+
const cycle = dfs(sectionId);
|
|
146
|
+
if (cycle) {
|
|
147
|
+
return cycle;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
function topologicalSortSections(sections, dependencies, sectionFilter) {
|
|
154
|
+
const graph = buildGraphData(sections, dependencies);
|
|
155
|
+
const validSectionIds = new Set(sectionFilter ? [...sectionFilter] : [...graph.sectionsById.keys()]);
|
|
156
|
+
for (const sectionId of validSectionIds) {
|
|
157
|
+
if (!graph.sectionsById.has(sectionId)) {
|
|
158
|
+
throw new Error(`Unknown section in filter: ${sectionId}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const relevantSectionIds = [...validSectionIds].sort((a, b) => compareSectionIds(a, b, graph.orderMap));
|
|
162
|
+
const indegree = new Map();
|
|
163
|
+
const dependents = new Map();
|
|
164
|
+
for (const sectionId of relevantSectionIds) {
|
|
165
|
+
indegree.set(sectionId, 0);
|
|
166
|
+
dependents.set(sectionId, new Set());
|
|
167
|
+
}
|
|
168
|
+
for (const [sectionId, directDeps] of graph.dependencyMap.entries()) {
|
|
169
|
+
if (!relevantSectionIds.includes(sectionId)) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
for (const dependsOnSectionId of directDeps) {
|
|
173
|
+
if (!relevantSectionIds.includes(dependsOnSectionId)) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const currentDependents = dependents.get(dependsOnSectionId);
|
|
177
|
+
if (!currentDependents) {
|
|
178
|
+
throw new Error('Dependency graph is inconsistent');
|
|
179
|
+
}
|
|
180
|
+
if (!currentDependents.has(sectionId)) {
|
|
181
|
+
currentDependents.add(sectionId);
|
|
182
|
+
indegree.set(sectionId, (indegree.get(sectionId) ?? 0) + 1);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const queue = [];
|
|
187
|
+
for (const sectionId of relevantSectionIds) {
|
|
188
|
+
if ((indegree.get(sectionId) ?? 0) === 0) {
|
|
189
|
+
queue.push(sectionId);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const order = [];
|
|
193
|
+
while (queue.length > 0) {
|
|
194
|
+
queue.sort((a, b) => compareSectionIds(a, b, graph.orderMap));
|
|
195
|
+
const current = queue.shift();
|
|
196
|
+
order.push(current);
|
|
197
|
+
const outgoing = dependents.get(current) ?? new Set();
|
|
198
|
+
for (const dependentId of outgoing) {
|
|
199
|
+
const next = (indegree.get(dependentId) ?? 0) - 1;
|
|
200
|
+
indegree.set(dependentId, next);
|
|
201
|
+
if (next === 0) {
|
|
202
|
+
queue.push(dependentId);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
if (order.length !== relevantSectionIds.length) {
|
|
207
|
+
const cycle = detectCycleInGraph(sections, dependencies, validSectionIds);
|
|
208
|
+
if (cycle) {
|
|
209
|
+
throw new CyclicDependencyError(cycle);
|
|
210
|
+
}
|
|
211
|
+
throw new Error('Unable to complete topological sort because dependencies are inconsistent');
|
|
212
|
+
}
|
|
213
|
+
return order;
|
|
214
|
+
}
|
|
215
|
+
function getConnectedComponents(graph, sectionIds) {
|
|
216
|
+
const sectionSet = new Set(sectionIds);
|
|
217
|
+
const visited = new Set();
|
|
218
|
+
const components = [];
|
|
219
|
+
const sortedStartingNodes = [...sectionIds].sort((a, b) => compareSectionIds(a, b, graph.orderMap));
|
|
220
|
+
for (const sectionId of sortedStartingNodes) {
|
|
221
|
+
if (visited.has(sectionId)) {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const queue = [sectionId];
|
|
225
|
+
const component = [];
|
|
226
|
+
visited.add(sectionId);
|
|
227
|
+
while (queue.length > 0) {
|
|
228
|
+
const current = queue.shift();
|
|
229
|
+
component.push(current);
|
|
230
|
+
const neighbors = graph.undirectedDependencyMap.get(current);
|
|
231
|
+
if (!neighbors) {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const sortedNeighbors = [...neighbors]
|
|
235
|
+
.filter((neighborId) => sectionSet.has(neighborId) && !visited.has(neighborId))
|
|
236
|
+
.sort((a, b) => compareSectionIds(a, b, graph.orderMap));
|
|
237
|
+
for (const neighborId of sortedNeighbors) {
|
|
238
|
+
visited.add(neighborId);
|
|
239
|
+
queue.push(neighborId);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
components.push(component);
|
|
243
|
+
}
|
|
244
|
+
return components;
|
|
245
|
+
}
|
|
246
|
+
function partitionWorkstreams(sections, dependencies) {
|
|
247
|
+
const sortedAll = topologicalSortSections(sections, dependencies);
|
|
248
|
+
const graph = buildGraphData(sections, dependencies);
|
|
249
|
+
const components = getConnectedComponents(graph, sortedAll);
|
|
250
|
+
const position = new Map();
|
|
251
|
+
sortedAll.forEach((sectionId, index) => position.set(sectionId, index));
|
|
252
|
+
const orderedComponents = components
|
|
253
|
+
.slice()
|
|
254
|
+
.map((component) => ({
|
|
255
|
+
component,
|
|
256
|
+
minOrder: Math.min(...component.map((sectionId) => position.get(sectionId) ?? Number.MAX_SAFE_INTEGER)),
|
|
257
|
+
}))
|
|
258
|
+
.sort((a, b) => {
|
|
259
|
+
if (a.minOrder !== b.minOrder) {
|
|
260
|
+
return a.minOrder - b.minOrder;
|
|
261
|
+
}
|
|
262
|
+
const aId = a.component[0] ?? '';
|
|
263
|
+
const bId = b.component[0] ?? '';
|
|
264
|
+
return compareSectionIds(aId, bId, graph.orderMap);
|
|
265
|
+
});
|
|
266
|
+
const workstreams = orderedComponents.map(({ component }) => topologicalSortSections(sections, dependencies, component));
|
|
267
|
+
return { workstreams };
|
|
268
|
+
}
|
|
269
|
+
exports.createWorkstreams = partitionWorkstreams;
|
|
270
|
+
exports.scheduleWorkstreams = partitionWorkstreams;
|
|
271
|
+
exports.partitionIntoWorkstreams = partitionWorkstreams;
|
|
272
|
+
exports.partitionSectionsIntoWorkstreams = partitionWorkstreams;
|
|
273
|
+
exports.buildWorkstreams = partitionWorkstreams;
|
|
274
|
+
exports.topologicalSort = topologicalSortSections;
|
|
275
|
+
exports.topologicalSortSectionIds = topologicalSortSections;
|
|
276
|
+
const findConnectedComponents = (sections, dependencies) => {
|
|
277
|
+
const graph = buildGraphData(sections, dependencies);
|
|
278
|
+
return getConnectedComponents(graph, [...graph.sectionsById.keys()].sort((a, b) => compareSectionIds(a, b, graph.orderMap)));
|
|
279
|
+
};
|
|
280
|
+
exports.findConnectedComponents = findConnectedComponents;
|
|
281
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/parallel/scheduler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAgNH,0DAkFC;AAiDD,oDAgCC;AAlWD,MAAa,qBAAsB,SAAQ,KAAK;IAC9B,KAAK,CAAW;IAEhC,YAAY,KAAe;QACzB,KAAK,CAAC,+BAA+B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF;AAZD,sDAYC;AAUD,SAAS,oBAAoB,CAAC,QAA6B;IACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CACxB,CAAS,EACT,CAAS,EACT,QAA6B;IAE7B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAExD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CACrB,QAA6B,EAC7B,YAAiC;IAEjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC1D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5D,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE/D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACtC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACzC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAChD,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,UAAU,CAAC;QAErD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kCAAkC,kBAAkB,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC7B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,uBAAuB,CAAC,EAAE,CAAC;QACvF,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,MAAM,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1F,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,oBAAoB;QACpB,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,QAA6B,EAC7B,YAAiC,EACjC,aAA2B;IAE3B,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SACjD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAA6C,CAAC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAY,EAAE;QACvD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,GAAG,SAAS,CAAC;aAClB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACvE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,SAAiB,EAAmB,EAAE;QACjD,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtB,KAAK,MAAM,UAAU,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE5C,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC9B,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,GAAG,EAAE,CAAC;QACZ,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,uBAAuB,CACrC,QAA6B,EAC7B,YAAiC,EACjC,aAAwB;IAExB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CACpE,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAElD,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3B,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACpE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,KAAK,MAAM,kBAAkB,IAAI,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACrD,SAAS;YACX,CAAC;YAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC7D,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAY,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACtD,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEhC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QAC1E,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAgB,EAChB,UAAoB;IAEpB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,UAAU,GAAe,EAAE,CAAC;IAElC,MAAM,mBAAmB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxD,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CACxC,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAY,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAExB,MAAM,SAAS,GAAG,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,GAAG,SAAS,CAAC;iBACnC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;iBAC9E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE3D,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,oBAAoB,CAClC,QAA6B,EAC7B,YAAiC;IAEjC,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAExE,MAAM,iBAAiB,GAAG,UAAU;SACjC,KAAK,EAAE;SACP,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnB,SAAS;QACT,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;KACxG,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACjC,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEL,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAC1D,uBAAuB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAC3D,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC;AAEY,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AACzC,QAAA,mBAAmB,GAAG,oBAAoB,CAAC;AAC3C,QAAA,wBAAwB,GAAG,oBAAoB,CAAC;AAChD,QAAA,gCAAgC,GAAG,oBAAoB,CAAC;AACxD,QAAA,gBAAgB,GAAG,oBAAoB,CAAC;AACxC,QAAA,eAAe,GAAG,uBAAuB,CAAC;AAC1C,QAAA,yBAAyB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,uBAAuB,GAAG,CACrC,QAA6B,EAC7B,YAAiC,EACrB,EAAE;IACd,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,OAAO,sBAAsB,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/H,CAAC,CAAC;AANW,QAAA,uBAAuB,2BAMlC"}
|
package/dist/runners/daemon.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface Runner {
|
|
|
8
8
|
pid: number | null;
|
|
9
9
|
project_path: string | null;
|
|
10
10
|
section_id: string | null;
|
|
11
|
+
parallel_session_id: string | null;
|
|
11
12
|
current_task_id: string | null;
|
|
12
13
|
started_at: string | null;
|
|
13
14
|
heartbeat_at: string;
|
|
@@ -15,14 +16,22 @@ export interface Runner {
|
|
|
15
16
|
export interface DaemonOptions {
|
|
16
17
|
projectPath?: string;
|
|
17
18
|
sectionId?: string;
|
|
19
|
+
sectionIds?: string[];
|
|
20
|
+
branchName?: string;
|
|
21
|
+
parallelSessionId?: string;
|
|
18
22
|
onTaskStart?: (taskId: string) => void;
|
|
19
23
|
onTaskComplete?: (taskId: string) => void;
|
|
20
24
|
onShutdown?: () => void;
|
|
21
25
|
}
|
|
26
|
+
type RegisterRunnerOptions = {
|
|
27
|
+
sectionId?: string;
|
|
28
|
+
sectionIds?: string[];
|
|
29
|
+
parallelSessionId?: string;
|
|
30
|
+
};
|
|
22
31
|
/**
|
|
23
32
|
* Register a new runner in the database
|
|
24
33
|
*/
|
|
25
|
-
export declare function registerRunner(projectPath?: string,
|
|
34
|
+
export declare function registerRunner(projectPath?: string, options?: string | RegisterRunnerOptions): {
|
|
26
35
|
runnerId: string;
|
|
27
36
|
close: () => void;
|
|
28
37
|
};
|
|
@@ -68,4 +77,5 @@ export declare function canStartDaemon(projectPath?: string): {
|
|
|
68
77
|
reason?: string;
|
|
69
78
|
existingPid?: number;
|
|
70
79
|
};
|
|
80
|
+
export {};
|
|
71
81
|
//# sourceMappingURL=daemon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/runners/daemon.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3D,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/runners/daemon.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3D,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,KAAK,qBAAqB,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GAAG,qBAAqB,GACvC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAwBzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,IAAI,CAiBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,IAAI,CASN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAOtC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASzD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2G5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAwBA"}
|
package/dist/runners/daemon.js
CHANGED
|
@@ -25,11 +25,17 @@ const queries_js_1 = require("../database/queries.js");
|
|
|
25
25
|
/**
|
|
26
26
|
* Register a new runner in the database
|
|
27
27
|
*/
|
|
28
|
-
function registerRunner(projectPath,
|
|
28
|
+
function registerRunner(projectPath, options) {
|
|
29
|
+
const resolvedSectionId = typeof options === 'string'
|
|
30
|
+
? options
|
|
31
|
+
: options?.sectionId ?? options?.sectionIds?.[0];
|
|
32
|
+
const parallelSessionId = typeof options === 'string'
|
|
33
|
+
? null
|
|
34
|
+
: (options?.parallelSessionId ?? null);
|
|
29
35
|
const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
|
|
30
36
|
const runnerId = (0, uuid_1.v4)();
|
|
31
|
-
db.prepare(`INSERT INTO runners (id, status, pid, project_path, section_id, started_at, heartbeat_at)
|
|
32
|
-
VALUES (?, 'idle', ?, ?, ?, datetime('now'), datetime('now'))`).run(runnerId, process.pid, projectPath ?? null,
|
|
37
|
+
db.prepare(`INSERT INTO runners (id, status, pid, project_path, section_id, parallel_session_id, started_at, heartbeat_at)
|
|
38
|
+
VALUES (?, 'idle', ?, ?, ?, ?, datetime('now'), datetime('now'))`).run(runnerId, process.pid, projectPath ?? null, resolvedSectionId ?? null, parallelSessionId);
|
|
33
39
|
return { runnerId, close };
|
|
34
40
|
}
|
|
35
41
|
/**
|
|
@@ -157,7 +163,12 @@ async function startDaemon(options = {}) {
|
|
|
157
163
|
}
|
|
158
164
|
// Register runner with effective project path and section ID
|
|
159
165
|
// Note: Per-project isolation is enforced by hasActiveRunnerForProject() above
|
|
160
|
-
const
|
|
166
|
+
const sectionIdForRegistration = options.sectionIds?.[0] ?? options.sectionId;
|
|
167
|
+
const { runnerId, close: closeDb } = registerRunner(effectiveProjectPath, {
|
|
168
|
+
sectionId: sectionIdForRegistration,
|
|
169
|
+
sectionIds: options.sectionIds,
|
|
170
|
+
parallelSessionId: options.parallelSessionId,
|
|
171
|
+
});
|
|
161
172
|
const { db } = (0, global_db_js_1.openGlobalDatabase)();
|
|
162
173
|
// Start heartbeat
|
|
163
174
|
const heartbeat = (0, heartbeat_js_1.createHeartbeatManager)(db, runnerId);
|
|
@@ -195,6 +206,9 @@ async function startDaemon(options = {}) {
|
|
|
195
206
|
await (0, orchestrator_loop_js_1.runOrchestratorLoop)({
|
|
196
207
|
projectPath: effectiveProjectPath,
|
|
197
208
|
sectionId: options.sectionId,
|
|
209
|
+
sectionIds: options.sectionIds,
|
|
210
|
+
branchName: options.branchName,
|
|
211
|
+
parallelSessionId: options.parallelSessionId,
|
|
198
212
|
runnerId, // Pass runner ID for activity logging
|
|
199
213
|
shouldStop: () => shutdownRequested,
|
|
200
214
|
onIteration: (iteration) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/runners/daemon.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/runners/daemon.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA8CH,wCA2BC;AAKD,gDAqBC;AAKD,sDASC;AAMD,4CAcC;AAKD,0DAYC;AAKD,4CAOC;AAKD,kCAOC;AAKD,8BASC;AAMD,kCA2GC;AAKD,wCA4BC;AA5UD,yCAAoC;AACpC,+BAAoC;AACpC,iDAAoD;AACpD,iDAAwD;AACxD,2CAAwD;AACxD,iEAA6D;AAC7D,+CAAyE;AACzE,6DAAyD;AACzD,uDAA+D;AAiC/D;;GAEG;AACH,SAAgB,cAAc,CAC5B,WAAoB,EACpB,OAAwC;IAExC,MAAM,iBAAiB,GAAG,OAAO,OAAO,KAAK,QAAQ;QACnD,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,MAAM,iBAAiB,GAAG,OAAO,OAAO,KAAK,QAAQ;QACnD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,OAAO,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC;IAEzC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAA,SAAM,GAAE,CAAC;IAE1B,EAAE,CAAC,OAAO,CACR;sEACkE,CACnE,CAAC,GAAG,CACH,QAAQ,EACR,OAAO,CAAC,GAAG,EACX,WAAW,IAAI,IAAI,EACnB,iBAAiB,IAAI,IAAI,EACzB,iBAAiB,CAClB,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,QAAgB,EAChB,MAAoB,EACpB,aAA6B;IAE7B,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,EAAE,CAAC,OAAO,CACR;sBACc,CACf,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,OAAO,CACR;sBACc,CACf,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CACR,gEAAgE,CACjE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAY,EAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,kCAAqB,EAAC,EAAE,CAAC,CAAC;YACxC,IAAA,gCAAkB,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;gBAAS,CAAC;YACT,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6CAA6C;QAC7C,8CAA8C;QAC9C,OAAO,CAAC,KAAK,CAAC,4BAA4B,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,MAAqB;IAErB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CACR,qFAAqF,CACtF,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1B,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,EAAc,CAAC;IAC/D,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,QAAgB;IACxC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,EAAE;aACN,OAAO,CAAC,oCAAoC,CAAC;aAC7C,GAAG,CAAC,QAAQ,CAAkB,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,UAAyB,EAAE;IAC3D,mEAAmE;IACnE,0DAA0D;IAC1D,MAAM,oBAAoB,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3E,sDAAsD;IACtD,MAAM,iBAAiB,GAAG,IAAA,kCAAoB,EAAC,oBAAoB,CAAC,CAAC;IACrE,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,wBAAwB,oBAAoB,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;IAChD,CAAC;IAED,sEAAsE;IACtE,IAAI,IAAA,qCAAyB,EAAC,oBAAoB,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CACX,2CAA2C,oBAAoB,EAAE,CAClE,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAC/C,CAAC;IAED,6DAA6D;IAC7D,+EAA+E;IAC/E,MAAM,wBAAwB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;IAC9E,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,oBAAoB,EAAE;QACxE,SAAS,EAAE,wBAAwB;QACnC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAC;IACH,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IAEpC,kBAAkB;IAClB,MAAM,SAAS,GAAG,IAAA,qCAAsB,EAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvD,SAAS,CAAC,KAAK,EAAE,CAAC;IAElB,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QACvD,IAAI,cAAc;YAAE,OAAO;QAC3B,cAAc,GAAG,IAAI,CAAC;QAEtB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,+BAA+B,CAAC,CAAC;QAEjE,iBAAiB;QACjB,SAAS,CAAC,IAAI,EAAE,CAAC;QAEjB,gBAAgB;QAChB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEzC,yBAAyB;QACzB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;QAED,WAAW;QACX,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC;QAEV,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,UAAU,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACrE,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAExC,kCAAkC;IAClC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,IAAA,0CAAmB,EAAC;YACxB,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,QAAQ,EAAG,sCAAsC;YACjD,UAAU,EAAE,GAAG,EAAE,CAAC,iBAAiB;YACnC,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE;gBACzB,qCAAqC;gBACrC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBAEhC,uDAAuD;gBACvD,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;YACzC,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBAChB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YACD,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;gBACtB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;YACD,cAAc,EAAE,GAAG,EAAE;gBACnB,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB;IACnB,QAAQ,CAAC,WAAW,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,WAAoB;IAKjD,sEAAsE;IACtE,kCAAkC;IAClC,MAAM,aAAa,GAAG,IAAA,mBAAO,EAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE5D,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,IAAA,kCAAoB,EAAC,aAAa,CAAC,CAAC;IAC9D,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,wBAAwB,aAAa,gDAAgD;SAC9F,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,IAAI,IAAA,qCAAyB,EAAC,aAAa,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,2CAA2C,aAAa,EAAE;SACnE,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-db.d.ts","sourceRoot":"","sources":["../../src/runners/global-db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAQtC,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"global-db.d.ts","sourceRoot":"","sources":["../../src/runners/global-db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAQtC,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAqID;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,CAuH7D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAS3E"}
|
|
@@ -110,7 +110,36 @@ const GLOBAL_SCHEMA_V7_SQL = `
|
|
|
110
110
|
-- Add commit_sha column to activity_log for GitHub links
|
|
111
111
|
ALTER TABLE activity_log ADD COLUMN commit_sha TEXT;
|
|
112
112
|
`;
|
|
113
|
-
|
|
113
|
+
/**
|
|
114
|
+
* Schema upgrade from version 7 to version 8: Add parallel session tracking
|
|
115
|
+
*/
|
|
116
|
+
const GLOBAL_SCHEMA_V8_SQL = `
|
|
117
|
+
-- Parallel run sessions for independent workstreams
|
|
118
|
+
CREATE TABLE IF NOT EXISTS parallel_sessions (
|
|
119
|
+
id TEXT PRIMARY KEY,
|
|
120
|
+
project_path TEXT NOT NULL,
|
|
121
|
+
status TEXT NOT NULL CHECK (status IN ('running', 'merging', 'completed', 'failed')),
|
|
122
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
123
|
+
completed_at TEXT
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
-- Workstreams within a parallel session
|
|
127
|
+
CREATE TABLE IF NOT EXISTS workstreams (
|
|
128
|
+
id TEXT PRIMARY KEY,
|
|
129
|
+
session_id TEXT NOT NULL REFERENCES parallel_sessions(id),
|
|
130
|
+
branch_name TEXT NOT NULL,
|
|
131
|
+
section_ids TEXT NOT NULL,
|
|
132
|
+
clone_path TEXT,
|
|
133
|
+
status TEXT NOT NULL CHECK (status IN ('running', 'completed', 'failed')),
|
|
134
|
+
runner_id TEXT,
|
|
135
|
+
completed_at TEXT,
|
|
136
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
-- Associate runners with a parallel session
|
|
140
|
+
ALTER TABLE runners ADD COLUMN parallel_session_id TEXT;
|
|
141
|
+
`;
|
|
142
|
+
const GLOBAL_SCHEMA_VERSION = '8';
|
|
114
143
|
/**
|
|
115
144
|
* Get the path to the global steroids directory.
|
|
116
145
|
* Respects STEROIDS_HOME env var for test isolation (Jest's ESM VM context
|
|
@@ -162,6 +191,7 @@ function openGlobalDatabase() {
|
|
|
162
191
|
db.exec(GLOBAL_SCHEMA_V5_SQL);
|
|
163
192
|
db.exec(GLOBAL_SCHEMA_V6_SQL);
|
|
164
193
|
db.exec(GLOBAL_SCHEMA_V7_SQL);
|
|
194
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
165
195
|
db.prepare('INSERT INTO _global_schema (key, value) VALUES (?, ?)').run('version', GLOBAL_SCHEMA_VERSION);
|
|
166
196
|
db.prepare('INSERT INTO _global_schema (key, value) VALUES (?, ?)').run('created_at', new Date().toISOString());
|
|
167
197
|
}
|
|
@@ -173,6 +203,7 @@ function openGlobalDatabase() {
|
|
|
173
203
|
db.exec(GLOBAL_SCHEMA_V5_SQL);
|
|
174
204
|
db.exec(GLOBAL_SCHEMA_V6_SQL);
|
|
175
205
|
db.exec(GLOBAL_SCHEMA_V7_SQL);
|
|
206
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
176
207
|
db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
|
|
177
208
|
}
|
|
178
209
|
else if (currentVersion === '2') {
|
|
@@ -182,6 +213,7 @@ function openGlobalDatabase() {
|
|
|
182
213
|
db.exec(GLOBAL_SCHEMA_V5_SQL);
|
|
183
214
|
db.exec(GLOBAL_SCHEMA_V6_SQL);
|
|
184
215
|
db.exec(GLOBAL_SCHEMA_V7_SQL);
|
|
216
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
185
217
|
db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
|
|
186
218
|
}
|
|
187
219
|
else if (currentVersion === '3') {
|
|
@@ -190,6 +222,7 @@ function openGlobalDatabase() {
|
|
|
190
222
|
db.exec(GLOBAL_SCHEMA_V5_SQL);
|
|
191
223
|
db.exec(GLOBAL_SCHEMA_V6_SQL);
|
|
192
224
|
db.exec(GLOBAL_SCHEMA_V7_SQL);
|
|
225
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
193
226
|
db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
|
|
194
227
|
}
|
|
195
228
|
else if (currentVersion === '4') {
|
|
@@ -197,17 +230,25 @@ function openGlobalDatabase() {
|
|
|
197
230
|
db.exec(GLOBAL_SCHEMA_V5_SQL);
|
|
198
231
|
db.exec(GLOBAL_SCHEMA_V6_SQL);
|
|
199
232
|
db.exec(GLOBAL_SCHEMA_V7_SQL);
|
|
233
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
200
234
|
db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
|
|
201
235
|
}
|
|
202
236
|
else if (currentVersion === '5') {
|
|
203
237
|
// Upgrade from version 5 to latest
|
|
204
238
|
db.exec(GLOBAL_SCHEMA_V6_SQL);
|
|
205
239
|
db.exec(GLOBAL_SCHEMA_V7_SQL);
|
|
240
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
206
241
|
db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
|
|
207
242
|
}
|
|
208
243
|
else if (currentVersion === '6') {
|
|
209
244
|
// Upgrade from version 6 to version 7
|
|
210
245
|
db.exec(GLOBAL_SCHEMA_V7_SQL);
|
|
246
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
247
|
+
db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
|
|
248
|
+
}
|
|
249
|
+
else if (currentVersion === '7') {
|
|
250
|
+
// Upgrade from version 7 to version 8
|
|
251
|
+
db.exec(GLOBAL_SCHEMA_V8_SQL);
|
|
211
252
|
db.prepare('UPDATE _global_schema SET value = ? WHERE key = ?').run(GLOBAL_SCHEMA_VERSION, 'version');
|
|
212
253
|
}
|
|
213
254
|
// Future upgrades would be handled here with additional conditions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-db.js","sourceRoot":"","sources":["../../src/runners/global-db.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;
|
|
1
|
+
{"version":3,"file":"global-db.js","sourceRoot":"","sources":["../../src/runners/global-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@ export interface LoopOptions {
|
|
|
6
6
|
projectPath: string;
|
|
7
7
|
once?: boolean;
|
|
8
8
|
sectionId?: string;
|
|
9
|
+
sectionIds?: string[];
|
|
10
|
+
branchName?: string;
|
|
11
|
+
parallelSessionId?: string;
|
|
9
12
|
runnerId?: string;
|
|
10
13
|
onIteration?: (iteration: number) => void;
|
|
11
14
|
onTaskStart?: (taskId: string, action: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator-loop.d.ts","sourceRoot":"","sources":["../../src/runners/orchestrator-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"orchestrator-loop.d.ts","sourceRoot":"","sources":["../../src/runners/orchestrator-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsT7E"}
|