@coralai/sps-cli 0.36.1 → 0.37.1
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/pipelineTick.d.ts.map +1 -1
- package/dist/commands/pipelineTick.js +1 -7
- package/dist/commands/pipelineTick.js.map +1 -1
- package/dist/commands/projectInit.d.ts.map +1 -1
- package/dist/commands/projectInit.js +41 -96
- package/dist/commands/projectInit.js.map +1 -1
- package/dist/commands/qaTick.d.ts.map +1 -1
- package/dist/commands/qaTick.js +1 -8
- package/dist/commands/qaTick.js.map +1 -1
- package/dist/commands/tick.d.ts.map +1 -1
- package/dist/commands/tick.js +56 -23
- package/dist/commands/tick.js.map +1 -1
- package/dist/commands/workerLaunch.d.ts.map +1 -1
- package/dist/commands/workerLaunch.js +1 -7
- package/dist/commands/workerLaunch.js.map +1 -1
- package/dist/core/projectPipelineAdapter.d.ts +3 -1
- package/dist/core/projectPipelineAdapter.d.ts.map +1 -1
- package/dist/core/projectPipelineAdapter.js +30 -24
- package/dist/core/projectPipelineAdapter.js.map +1 -1
- package/dist/engines/StageEngine.d.ts +0 -4
- package/dist/engines/StageEngine.d.ts.map +1 -1
- package/dist/engines/StageEngine.js +14 -191
- package/dist/engines/StageEngine.js.map +1 -1
- package/dist/interfaces/TaskBackend.d.ts +2 -0
- package/dist/interfaces/TaskBackend.d.ts.map +1 -1
- package/dist/manager/worker-manager-impl.d.ts +0 -15
- package/dist/manager/worker-manager-impl.d.ts.map +1 -1
- package/dist/manager/worker-manager-impl.js +9 -160
- package/dist/manager/worker-manager-impl.js.map +1 -1
- package/dist/manager/worker-manager-impl.test.js +2 -18
- package/dist/manager/worker-manager-impl.test.js.map +1 -1
- package/dist/models/types.d.ts +2 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/providers/MarkdownTaskBackend.d.ts +2 -0
- package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
- package/dist/providers/MarkdownTaskBackend.js +16 -0
- package/dist/providers/MarkdownTaskBackend.js.map +1 -1
- package/dist/providers/PlaneTaskBackend.d.ts +2 -0
- package/dist/providers/PlaneTaskBackend.d.ts.map +1 -1
- package/dist/providers/PlaneTaskBackend.js +10 -0
- package/dist/providers/PlaneTaskBackend.js.map +1 -1
- package/dist/providers/TrelloTaskBackend.d.ts +2 -0
- package/dist/providers/TrelloTaskBackend.d.ts.map +1 -1
- package/dist/providers/TrelloTaskBackend.js +2 -0
- package/dist/providers/TrelloTaskBackend.js.map +1 -1
- package/package.json +1 -1
- package/skills/sps-pipeline/SKILL.md +18 -10
|
@@ -209,38 +209,59 @@ function loadProjectPipelineYaml(projectName, projectDir) {
|
|
|
209
209
|
return null;
|
|
210
210
|
}
|
|
211
211
|
function buildFromYaml(yaml, config) {
|
|
212
|
-
// Card states: merge YAML over defaults
|
|
212
|
+
// Card states: merge YAML over defaults (pm.card_states is optional)
|
|
213
213
|
const states = {
|
|
214
214
|
...DEFAULT_STATES,
|
|
215
|
-
...(yaml.pm?.card_states || {}),
|
|
215
|
+
...(yaml.pm?.card_states || yaml.states || {}),
|
|
216
216
|
};
|
|
217
217
|
// Stages: build from YAML or use defaults
|
|
218
218
|
let stages;
|
|
219
219
|
if (yaml.stages && Array.isArray(yaml.stages) && yaml.stages.length > 0) {
|
|
220
220
|
const yamlStages = yaml.stages;
|
|
221
|
+
// Auto-generate stage states from on_complete chain
|
|
222
|
+
// First stage trigger = states.ready, active = 'Inprogress' (or explicit card_state)
|
|
223
|
+
// Subsequent stages: trigger = previous stage's on_complete target
|
|
221
224
|
stages = yamlStages.map((s, idx) => {
|
|
222
|
-
//
|
|
225
|
+
// Determine trigger state
|
|
226
|
+
let triggerState;
|
|
227
|
+
if (s.trigger) {
|
|
228
|
+
triggerState = parseTrigger(s.trigger) || states.ready;
|
|
229
|
+
}
|
|
230
|
+
else if (idx === 0) {
|
|
231
|
+
triggerState = states.ready;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Auto: previous stage's on_complete target
|
|
235
|
+
const prevComplete = parseOnComplete(yamlStages[idx - 1].on_complete, '');
|
|
236
|
+
triggerState = prevComplete || states.ready;
|
|
237
|
+
}
|
|
238
|
+
// Determine active state (must differ from trigger to show progress)
|
|
239
|
+
const activeState = s.card_state || (idx === 0 ? states.active : triggerState);
|
|
240
|
+
// Default on_complete: next stage trigger or Done for last
|
|
223
241
|
const nextTrigger = idx < yamlStages.length - 1
|
|
224
242
|
? (parseTrigger(yamlStages[idx + 1].trigger) || yamlStages[idx + 1].card_state || states.done)
|
|
225
243
|
: states.done;
|
|
244
|
+
// Parse on_fail halt config
|
|
245
|
+
const onFailRaw = s.on_fail;
|
|
246
|
+
const halt = onFailRaw?.halt !== false; // default true
|
|
226
247
|
return {
|
|
227
248
|
name: s.name,
|
|
228
|
-
triggerState
|
|
229
|
-
activeState
|
|
249
|
+
triggerState,
|
|
250
|
+
activeState,
|
|
230
251
|
agent: s.agent || config.WORKER_TOOL || 'claude',
|
|
231
252
|
profile: s.profile,
|
|
232
|
-
completion: s.completion || '
|
|
253
|
+
completion: s.completion || 'exit-code', // Default: exit-code (single worker model)
|
|
233
254
|
onCompleteState: parseOnComplete(s.on_complete, nextTrigger),
|
|
234
255
|
onFailLabel: parseOnFailLabel(s.on_fail),
|
|
235
256
|
onFailComment: parseOnFailComment(s.on_fail),
|
|
236
|
-
queue:
|
|
257
|
+
queue: undefined, // Ignored: single worker, no queue
|
|
237
258
|
timeout: s.timeout,
|
|
259
|
+
halt, // Failure halt: default true
|
|
238
260
|
};
|
|
239
261
|
});
|
|
240
262
|
}
|
|
241
263
|
else {
|
|
242
264
|
stages = defaultStages(config);
|
|
243
|
-
// Remap default stages to use custom state names
|
|
244
265
|
stages[0].triggerState = states.ready;
|
|
245
266
|
stages[0].activeState = states.active;
|
|
246
267
|
stages[0].onCompleteState = states.review;
|
|
@@ -261,23 +282,8 @@ function buildFromYaml(yaml, config) {
|
|
|
261
282
|
activeStateSet.add(stage.activeState);
|
|
262
283
|
}
|
|
263
284
|
const activeStates = Array.from(activeStateSet);
|
|
264
|
-
// Git mode: default true,
|
|
285
|
+
// Git mode: default true (commit+push), false (no git ops)
|
|
265
286
|
const gitEnabled = yaml.git !== false;
|
|
266
|
-
// Validate: git-dependent completion strategies require git
|
|
267
|
-
if (!gitEnabled) {
|
|
268
|
-
for (const stage of stages) {
|
|
269
|
-
if (stage.completion === 'git-evidence' || stage.completion === 'fast-forward-merge') {
|
|
270
|
-
throw new Error(`Stage "${stage.name}" uses completion: ${stage.completion} but git is disabled (git: false). ` +
|
|
271
|
-
`Use completion: exit-code when git: false.`);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
// Default completion for git:false — override any implicit git-evidence defaults
|
|
275
|
-
for (const stage of stages) {
|
|
276
|
-
if (!stage.completion || stage.completion === 'git-evidence') {
|
|
277
|
-
stage.completion = 'exit-code';
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
287
|
return {
|
|
282
288
|
gitEnabled,
|
|
283
289
|
states,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectPipelineAdapter.js","sourceRoot":"","sources":["../../src/core/projectPipelineAdapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projectPipelineAdapter.js","sourceRoot":"","sources":["../../src/core/projectPipelineAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,6 @@ export declare class StageEngine {
|
|
|
53
53
|
/** Whether this is the last stage (responsible for release: worktree cleanup) */
|
|
54
54
|
get isLastStage(): boolean;
|
|
55
55
|
/** Whether this stage uses FIFO queue for serialization */
|
|
56
|
-
get usesQueue(): boolean;
|
|
57
56
|
tick(opts?: {
|
|
58
57
|
dryRun?: boolean;
|
|
59
58
|
}): Promise<CommandResult>;
|
|
@@ -74,11 +73,8 @@ export declare class StageEngine {
|
|
|
74
73
|
private derivePmStateFromLease;
|
|
75
74
|
private buildStagePrompt;
|
|
76
75
|
private loadSkillProfiles;
|
|
77
|
-
private cleanupWorktrees;
|
|
78
|
-
private isMergedToBase;
|
|
79
76
|
private shouldSkip;
|
|
80
77
|
private cleanAuxiliaryLabels;
|
|
81
|
-
private buildBranchName;
|
|
82
78
|
private findRuntimeSlotName;
|
|
83
79
|
private releaseSlot;
|
|
84
80
|
private releaseSlotForStage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageEngine.d.ts","sourceRoot":"","sources":["../../src/engines/StageEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"StageEngine.d.ts","sourceRoot":"","sources":["../../src/engines/StageEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAKjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAmC,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,KAAK,EAAsC,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAM/G;;;;;;;;;GASG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,QAAQ,CAAC;IAZnB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,YAAY,CAAe;gBAGzB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,sBAAsB,EACvC,QAAQ,CAAC,EAAE,QAAQ,YAAA;IAM7B,2BAA2B;IAC3B,IAAI,IAAI,IAAI,MAAM,CAA4B;IAE9C,mFAAmF;IACnF,IAAI,YAAY,IAAI,OAAO,CAAkC;IAE7D,iFAAiF;IACjF,IAAI,WAAW,IAAI,OAAO,CAAqD;IAE/E,2DAA2D;IAGrD,IAAI,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC;YA2HrD,gBAAgB;YAgChB,kBAAkB;YAgElB,gBAAgB;YAwGhB,kBAAkB;IAkChC;;;OAGG;YACW,cAAc;YA4Fd,eAAe;YAmDf,WAAW;YAuBX,YAAY;YA4GZ,2BAA2B;YAe3B,4BAA4B;IA6C1C,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,gBAAgB;IA6CxB,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,UAAU;YAIJ,oBAAoB;IAclC,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,WAAW;YAWL,mBAAmB;YAyBnB,YAAY;YAQZ,YAAY;YAMZ,WAAW;YAMX,UAAU;IAKxB,OAAO,CAAC,QAAQ;IAYhB;;;OAGG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC;CA4DzF"}
|
|
@@ -16,18 +16,15 @@
|
|
|
16
16
|
* @stateTransition stage.from → stage.to (由 StageDefinition 配置驱动)
|
|
17
17
|
* @workflow tick → prepare (first stage) → claim → launch worker → complete → release (last stage)
|
|
18
18
|
*/
|
|
19
|
-
import { execFileSync } from 'node:child_process';
|
|
20
19
|
import { existsSync, readFileSync } from 'node:fs';
|
|
21
20
|
import { resolve } from 'node:path';
|
|
22
21
|
import { resolveGitlabProjectId, resolveWorkflowTransport } from '../core/config.js';
|
|
23
22
|
import { Logger } from '../core/logger.js';
|
|
24
23
|
import { buildFullMemoryContext, buildMemoryWriteInstructions } from '../core/memory.js';
|
|
25
|
-
import { resolveWorktreePath } from '../core/paths.js';
|
|
26
24
|
import { readQueue } from '../core/queue.js';
|
|
27
25
|
import { RuntimeStore } from '../core/runtimeStore.js';
|
|
28
26
|
import { buildPhasePrompt, buildTaskPrompt } from '../core/taskPrompts.js';
|
|
29
|
-
|
|
30
|
-
import { branchCommitsAhead, branchPushed } from '../providers/outputParser.js';
|
|
27
|
+
// branchPushed/branchCommitsAhead removed — no worktree/branch management
|
|
31
28
|
const SKIP_LABELS = ['BLOCKED', 'NEEDS-FIX', 'CONFLICT', 'WAITING-CONFIRMATION', 'STALE-RUNTIME'];
|
|
32
29
|
const CLEANUP_LABELS = [...SKIP_LABELS, 'CLAIMED'];
|
|
33
30
|
/**
|
|
@@ -72,7 +69,7 @@ export class StageEngine {
|
|
|
72
69
|
/** Whether this is the last stage (responsible for release: worktree cleanup) */
|
|
73
70
|
get isLastStage() { return this.stageIndex === this.totalStages - 1; }
|
|
74
71
|
/** Whether this stage uses FIFO queue for serialization */
|
|
75
|
-
|
|
72
|
+
// usesQueue removed — single worker, no queue needed
|
|
76
73
|
async tick(opts = {}) {
|
|
77
74
|
const actions = [];
|
|
78
75
|
const recommendedActions = [];
|
|
@@ -190,10 +187,6 @@ export class StageEngine {
|
|
|
190
187
|
result.exitCode = 1;
|
|
191
188
|
result.details = { error: msg };
|
|
192
189
|
}
|
|
193
|
-
// Last stage: always run worktree cleanup
|
|
194
|
-
if (this.isLastStage) {
|
|
195
|
-
await this.cleanupWorktrees(actions);
|
|
196
|
-
}
|
|
197
190
|
if (actions.some((a) => a.result === 'fail') && result.status === 'ok') {
|
|
198
191
|
result.status = this.isLastStage ? 'degraded' : 'fail';
|
|
199
192
|
result.exitCode = 1;
|
|
@@ -205,28 +198,8 @@ export class StageEngine {
|
|
|
205
198
|
const seq = card.seq;
|
|
206
199
|
const state = this.runtimeStore.readState();
|
|
207
200
|
const runtime = this.runtimeStore.getTask(seq, state);
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
this.buildBranchName(card);
|
|
211
|
-
const worktree = runtime.lease?.worktree ||
|
|
212
|
-
runtime.evidence?.worktree ||
|
|
213
|
-
resolveWorktreePath(this.ctx.projectName, seq, this.ctx.config.WORKTREE_DIR);
|
|
214
|
-
if (this.pipelineAdapter.gitEnabled && (!worktree || !existsSync(worktree))) {
|
|
215
|
-
await this.markNeedsFix(seq, `${this.stage.name} task has no usable worktree`);
|
|
216
|
-
actions.push({
|
|
217
|
-
action: 'mark-needs-fix',
|
|
218
|
-
entity: `seq:${seq}`,
|
|
219
|
-
result: 'ok',
|
|
220
|
-
message: `No usable worktree for ${this.stage.name} task`,
|
|
221
|
-
});
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
// For stages with fast-forward-merge completion: check if already merged (git only)
|
|
225
|
-
if (this.pipelineAdapter.gitEnabled && this.stage.completion === 'fast-forward-merge' && this.isMergedToBase(worktree, branchName)) {
|
|
226
|
-
this.log.info(`seq ${seq}: integration already complete, proceeding to release`);
|
|
227
|
-
await this.completeAndAdvance(card, actions);
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
201
|
+
const worktree = this.ctx.paths.repoDir;
|
|
202
|
+
const branchName = `task-${seq}`;
|
|
230
203
|
// Check if worker is already running for this card
|
|
231
204
|
const activeStatus = await this.inspectStageWorker(card, runtime.slotName, worktree, branchName, actions);
|
|
232
205
|
if (activeStatus === 'active' || activeStatus === 'waiting' || activeStatus === 'done') {
|
|
@@ -285,18 +258,8 @@ export class StageEngine {
|
|
|
285
258
|
return 'active';
|
|
286
259
|
}
|
|
287
260
|
if (snapshot.state === 'completed') {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
if (this.isMergedToBase(worktree, branchName)) {
|
|
291
|
-
await this.completeAndAdvance(card, actions);
|
|
292
|
-
return 'done';
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
// Other completion strategies: worker completed = stage done
|
|
297
|
-
await this.completeAndAdvance(card, actions);
|
|
298
|
-
return 'done';
|
|
299
|
-
}
|
|
261
|
+
await this.completeAndAdvance(card, actions);
|
|
262
|
+
return 'done';
|
|
300
263
|
}
|
|
301
264
|
// 'failed' or 'completed' without expected completion
|
|
302
265
|
await this.releaseSlotForStage(card.seq, slotName);
|
|
@@ -513,46 +476,6 @@ export class StageEngine {
|
|
|
513
476
|
const msg = err instanceof Error ? err.message : String(err);
|
|
514
477
|
this.log.debug(`seq ${seq}: Worker cleanup: ${msg}`);
|
|
515
478
|
}
|
|
516
|
-
// Step 4b: Clear from IntegrationQueue
|
|
517
|
-
if (this.usesQueue) {
|
|
518
|
-
try {
|
|
519
|
-
const iq = new IntegrationQueue(this.ctx.paths.stateFile, this.ctx.config.MAX_CONCURRENT_WORKERS);
|
|
520
|
-
const active = iq.getActive(this.ctx.projectName, this.ctx.mergeBranch);
|
|
521
|
-
if (active && active.taskId === seq) {
|
|
522
|
-
iq.dequeueNext(this.ctx.projectName, this.ctx.mergeBranch);
|
|
523
|
-
this.log.ok(`seq ${seq}: Integration queue advanced`);
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
catch (err) {
|
|
527
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
528
|
-
this.log.warn(`seq ${seq}: Failed to advance integration queue: ${msg}`);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
// Step 5: Mark worktree for cleanup (git only)
|
|
532
|
-
if (!this.pipelineAdapter.gitEnabled) {
|
|
533
|
-
// No worktree to clean up
|
|
534
|
-
}
|
|
535
|
-
else
|
|
536
|
-
try {
|
|
537
|
-
const freshState = this.runtimeStore.readState();
|
|
538
|
-
const branchName = this.buildBranchName(card);
|
|
539
|
-
const worktreePath = runtime.lease?.worktree ||
|
|
540
|
-
runtime.evidence?.worktree ||
|
|
541
|
-
resolveWorktreePath(this.ctx.projectName, seq, this.ctx.config.WORKTREE_DIR);
|
|
542
|
-
const cleanup = freshState.worktreeCleanup ?? [];
|
|
543
|
-
const alreadyMarked = cleanup.some((e) => e.branch === branchName);
|
|
544
|
-
if (!alreadyMarked) {
|
|
545
|
-
cleanup.push({ branch: branchName, worktreePath, markedAt: new Date().toISOString() });
|
|
546
|
-
this.runtimeStore.updateState('stage-worktree-mark', (draft) => {
|
|
547
|
-
draft.worktreeCleanup = cleanup;
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
catch (err) {
|
|
552
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
553
|
-
this.log.error(`seq ${seq}: Failed to mark worktree for cleanup: ${msg}`);
|
|
554
|
-
errors.push(`worktree-mark: ${msg}`);
|
|
555
|
-
}
|
|
556
479
|
// Notify
|
|
557
480
|
if (errors.length === 0) {
|
|
558
481
|
await this.notifySafe(`✅ [${this.ctx.projectName}] seq:${seq} completed and released successfully`);
|
|
@@ -610,61 +533,32 @@ export class StageEngine {
|
|
|
610
533
|
return null;
|
|
611
534
|
}
|
|
612
535
|
// ─── First stage: prepare (Backlog → Ready) ────────────────────
|
|
536
|
+
// ─── First stage: prepare (Backlog → Ready) ─────────────────
|
|
537
|
+
// Single worker model: no branch/worktree creation. Just move card to Ready.
|
|
613
538
|
async prepareCard(card, opts) {
|
|
614
539
|
const seq = card.seq;
|
|
615
|
-
const gitEnabled = this.pipelineAdapter.gitEnabled;
|
|
616
540
|
if (opts.dryRun) {
|
|
617
541
|
return { action: 'prepare', entity: `seq:${seq}`, result: 'ok', message: 'dry-run' };
|
|
618
542
|
}
|
|
619
|
-
if (gitEnabled) {
|
|
620
|
-
const branchName = this.buildBranchName(card);
|
|
621
|
-
const worktreePath = resolveWorktreePath(this.ctx.projectName, seq, this.ctx.config.WORKTREE_DIR);
|
|
622
|
-
// Step 1: Create branch
|
|
623
|
-
try {
|
|
624
|
-
await this.repoBackend.ensureBranch(this.ctx.paths.repoDir, branchName, this.ctx.mergeBranch);
|
|
625
|
-
this.log.ok(`Step 1: Branch ${branchName} created for seq ${seq}`);
|
|
626
|
-
}
|
|
627
|
-
catch (err) {
|
|
628
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
629
|
-
this.log.error(`Step 1 failed (branch) for seq ${seq}: ${msg}`);
|
|
630
|
-
this.logEvent('prepare-branch', seq, 'fail', { error: msg });
|
|
631
|
-
return { action: 'prepare', entity: `seq:${seq}`, result: 'fail', message: `Branch creation failed: ${msg}` };
|
|
632
|
-
}
|
|
633
|
-
// Step 2: Create worktree
|
|
634
|
-
try {
|
|
635
|
-
await this.repoBackend.ensureWorktree(this.ctx.paths.repoDir, branchName, worktreePath);
|
|
636
|
-
this.log.ok(`Step 2: Worktree created for seq ${seq} at ${worktreePath}`);
|
|
637
|
-
}
|
|
638
|
-
catch (err) {
|
|
639
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
640
|
-
this.log.error(`Step 2 failed (worktree) for seq ${seq}: ${msg}`);
|
|
641
|
-
this.logEvent('prepare-worktree', seq, 'fail', { error: msg });
|
|
642
|
-
return { action: 'prepare', entity: `seq:${seq}`, result: 'fail', message: `Worktree creation failed: ${msg}` };
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
// Move card to Ready (git or not)
|
|
646
543
|
try {
|
|
647
544
|
await this.taskBackend.move(seq, this.pipelineAdapter.states.ready);
|
|
648
|
-
this.log.ok(`
|
|
545
|
+
this.log.ok(`Moved seq ${seq} ${this.pipelineAdapter.states.backlog} → ${this.pipelineAdapter.states.ready}`);
|
|
649
546
|
this.logEvent('prepare', seq, 'ok');
|
|
650
|
-
await this.notifySafe(`ℹ️ [${this.ctx.projectName}] seq:${seq}
|
|
547
|
+
await this.notifySafe(`ℹ️ [${this.ctx.projectName}] seq:${seq} ready (${this.pipelineAdapter.states.backlog} → ${this.pipelineAdapter.states.ready})`);
|
|
651
548
|
return { action: 'prepare', entity: `seq:${seq}`, result: 'ok', message: `${this.pipelineAdapter.states.backlog} → ${this.pipelineAdapter.states.ready}` };
|
|
652
549
|
}
|
|
653
550
|
catch (err) {
|
|
654
551
|
const msg = err instanceof Error ? err.message : String(err);
|
|
655
|
-
this.log.error(`
|
|
656
|
-
this.logEvent('prepare
|
|
552
|
+
this.log.error(`Prepare failed for seq ${seq}: ${msg}`);
|
|
553
|
+
this.logEvent('prepare', seq, 'fail', { error: msg });
|
|
657
554
|
return { action: 'prepare', entity: `seq:${seq}`, result: 'fail', message: `Move to ${this.pipelineAdapter.states.ready} failed: ${msg}` };
|
|
658
555
|
}
|
|
659
556
|
}
|
|
660
557
|
// ─── First stage: launch worker (Ready → Active) ───────────────
|
|
661
558
|
async launchWorker(card, opts, failedSlots = new Set()) {
|
|
662
559
|
const seq = card.seq;
|
|
663
|
-
const
|
|
664
|
-
const branchName =
|
|
665
|
-
const worktreePath = gitEnabled
|
|
666
|
-
? resolveWorktreePath(this.ctx.projectName, seq, this.ctx.config.WORKTREE_DIR)
|
|
667
|
-
: this.ctx.paths.repoDir;
|
|
560
|
+
const worktreePath = this.ctx.paths.repoDir; // Single worker: always use PROJECT_DIR
|
|
561
|
+
const branchName = `task-${seq}`; // Logical identifier, not a git branch
|
|
668
562
|
if (opts.dryRun) {
|
|
669
563
|
return { action: 'launch', entity: `seq:${seq}`, result: 'ok', message: 'dry-run' };
|
|
670
564
|
}
|
|
@@ -900,69 +794,6 @@ export class StageEngine {
|
|
|
900
794
|
}
|
|
901
795
|
// loadProjectKnowledge removed — replaced by memory system (buildMemoryContext)
|
|
902
796
|
// ─── Worktree cleanup (last stage only) ────────────────────────
|
|
903
|
-
async cleanupWorktrees(actions) {
|
|
904
|
-
const state = this.runtimeStore.readState();
|
|
905
|
-
const queue = state.worktreeCleanup ?? [];
|
|
906
|
-
if (queue.length === 0)
|
|
907
|
-
return;
|
|
908
|
-
const now = Date.now();
|
|
909
|
-
const ready = queue.filter(e => now - new Date(e.markedAt).getTime() >= 30_000);
|
|
910
|
-
const deferred = queue.filter(e => now - new Date(e.markedAt).getTime() < 30_000);
|
|
911
|
-
if (ready.length === 0) {
|
|
912
|
-
if (deferred.length > 0) {
|
|
913
|
-
this.log.debug(`${deferred.length} worktree(s) deferred — waiting for worker shutdown`);
|
|
914
|
-
}
|
|
915
|
-
return;
|
|
916
|
-
}
|
|
917
|
-
this.log.info(`Cleaning up ${ready.length} worktree(s)`);
|
|
918
|
-
const remaining = [...deferred];
|
|
919
|
-
for (const entry of ready) {
|
|
920
|
-
try {
|
|
921
|
-
await this.repoBackend.removeWorktree(this.ctx.paths.repoDir, entry.worktreePath, entry.branch);
|
|
922
|
-
this.log.ok(`Cleaned up worktree: ${entry.branch}`);
|
|
923
|
-
actions.push({
|
|
924
|
-
action: 'worktree-cleanup',
|
|
925
|
-
entity: entry.branch,
|
|
926
|
-
result: 'ok',
|
|
927
|
-
message: `Removed worktree ${entry.worktreePath}`,
|
|
928
|
-
});
|
|
929
|
-
this.logEvent('worktree-cleanup', entry.branch, 'ok');
|
|
930
|
-
}
|
|
931
|
-
catch (err) {
|
|
932
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
933
|
-
this.log.warn(`Failed to clean up worktree ${entry.branch}: ${msg}`);
|
|
934
|
-
remaining.push(entry);
|
|
935
|
-
actions.push({
|
|
936
|
-
action: 'worktree-cleanup',
|
|
937
|
-
entity: entry.branch,
|
|
938
|
-
result: 'fail',
|
|
939
|
-
message: `Cleanup failed: ${msg}`,
|
|
940
|
-
});
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
this.runtimeStore.updateState('stage-worktree-cleanup', (freshState) => {
|
|
944
|
-
freshState.worktreeCleanup = remaining;
|
|
945
|
-
});
|
|
946
|
-
}
|
|
947
|
-
// ─── Merge detection ───────────────────────────────────────────
|
|
948
|
-
isMergedToBase(worktree, branchName) {
|
|
949
|
-
try {
|
|
950
|
-
execFileSync('git', ['-C', worktree, 'fetch', 'origin', this.ctx.mergeBranch], { stdio: 'ignore' });
|
|
951
|
-
}
|
|
952
|
-
catch { /* best effort */ }
|
|
953
|
-
try {
|
|
954
|
-
execFileSync('git', ['-C', worktree, 'merge-base', '--is-ancestor', branchName, `origin/${this.ctx.mergeBranch}`], { stdio: 'ignore' });
|
|
955
|
-
}
|
|
956
|
-
catch {
|
|
957
|
-
return false;
|
|
958
|
-
}
|
|
959
|
-
const pushed = branchPushed(worktree, branchName);
|
|
960
|
-
const localAhead = branchCommitsAhead(worktree, branchName, this.ctx.mergeBranch);
|
|
961
|
-
if (pushed || localAhead > 0)
|
|
962
|
-
return true;
|
|
963
|
-
this.log.debug(`branch ${branchName}: ancestor of ${this.ctx.mergeBranch} but no artifacts — not a real merge`);
|
|
964
|
-
return false;
|
|
965
|
-
}
|
|
966
797
|
// ─── Common helpers ────────────────────────────────────────────
|
|
967
798
|
shouldSkip(card) {
|
|
968
799
|
return SKIP_LABELS.some((label) => card.labels.includes(label));
|
|
@@ -981,14 +812,6 @@ export class StageEngine {
|
|
|
981
812
|
}
|
|
982
813
|
}
|
|
983
814
|
}
|
|
984
|
-
buildBranchName(card) {
|
|
985
|
-
const slug = card.name
|
|
986
|
-
.toLowerCase()
|
|
987
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
988
|
-
.replace(/^-|-$/g, '')
|
|
989
|
-
.slice(0, 40);
|
|
990
|
-
return `feature/${card.seq}-${slug}`;
|
|
991
|
-
}
|
|
992
815
|
findRuntimeSlotName(state, seq, lease) {
|
|
993
816
|
if (lease?.slot && state.workers[lease.slot])
|
|
994
817
|
return lease.slot;
|