@specforge/mcp 3.0.1 → 3.0.3
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/autopilot/cli/pause.d.ts.map +1 -1
- package/dist/autopilot/cli/pause.js +29 -8
- package/dist/autopilot/cli/pause.js.map +1 -1
- package/dist/autopilot/cli/resume.d.ts.map +1 -1
- package/dist/autopilot/cli/resume.js +42 -12
- package/dist/autopilot/cli/resume.js.map +1 -1
- package/dist/autopilot/cli/run.d.ts.map +1 -1
- package/dist/autopilot/cli/run.js +16 -2
- package/dist/autopilot/cli/run.js.map +1 -1
- package/dist/autopilot/cli/status.d.ts.map +1 -1
- package/dist/autopilot/cli/status.js +32 -9
- package/dist/autopilot/cli/status.js.map +1 -1
- package/dist/autopilot/core/dispatcher.d.ts +16 -0
- package/dist/autopilot/core/dispatcher.d.ts.map +1 -1
- package/dist/autopilot/core/dispatcher.js +45 -0
- package/dist/autopilot/core/dispatcher.js.map +1 -1
- package/dist/autopilot/core/state-manager.d.ts +18 -0
- package/dist/autopilot/core/state-manager.d.ts.map +1 -1
- package/dist/autopilot/core/state-manager.js +91 -0
- package/dist/autopilot/core/state-manager.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/tools/core/context-helper.d.ts +23 -0
- package/dist/tools/core/context-helper.d.ts.map +1 -0
- package/dist/tools/core/context-helper.js +61 -0
- package/dist/tools/core/context-helper.js.map +1 -0
- package/dist/tools/core/epic.d.ts.map +1 -1
- package/dist/tools/core/epic.js +10 -7
- package/dist/tools/core/epic.js.map +1 -1
- package/dist/tools/core/lookup.d.ts.map +1 -1
- package/dist/tools/core/lookup.js +12 -9
- package/dist/tools/core/lookup.js.map +1 -1
- package/dist/tools/core/specification.d.ts.map +1 -1
- package/dist/tools/core/specification.js +4 -2
- package/dist/tools/core/specification.js.map +1 -1
- package/dist/tools/core/ticket.d.ts.map +1 -1
- package/dist/tools/core/ticket.js +10 -8
- package/dist/tools/core/ticket.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +85 -62
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/pause.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/pause.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAuHD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsB3D"}
|
|
@@ -12,22 +12,34 @@ import { c, formatCost } from './display.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Load and update state
|
|
14
14
|
*/
|
|
15
|
-
async function pauseState(workingDirectory) {
|
|
15
|
+
async function pauseState(workingDirectory, force = false) {
|
|
16
16
|
const statePath = path.join(workingDirectory, '.specforge', STATE_FILE_NAME);
|
|
17
17
|
try {
|
|
18
18
|
const content = await fs.readFile(statePath, 'utf-8');
|
|
19
19
|
const state = JSON.parse(content);
|
|
20
|
+
let wasForced = false;
|
|
20
21
|
// Update status to paused
|
|
21
|
-
if (state.status === 'running') {
|
|
22
|
+
if (state.status === 'running' || state.status === 'rate_limited') {
|
|
22
23
|
state.status = 'paused';
|
|
23
24
|
state.pausedAt = new Date().toISOString();
|
|
25
|
+
state.pauseReason = force ? 'Force paused by user' : 'Paused by user';
|
|
26
|
+
// If force pause, mark all active workers as paused
|
|
27
|
+
if (force) {
|
|
28
|
+
wasForced = true;
|
|
29
|
+
for (const worker of state.workers) {
|
|
30
|
+
if (worker.status === 'implementing' || worker.status === 'validating' || worker.status === 'committing') {
|
|
31
|
+
worker.status = 'paused';
|
|
32
|
+
// Note: currentTicketId is preserved so it can be retried on resume
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
24
36
|
// Save updated state
|
|
25
37
|
await fs.writeFile(statePath, JSON.stringify(state, null, 2));
|
|
26
38
|
}
|
|
27
|
-
return state;
|
|
39
|
+
return { state, wasForced };
|
|
28
40
|
}
|
|
29
41
|
catch {
|
|
30
|
-
return null;
|
|
42
|
+
return { state: null, wasForced: false };
|
|
31
43
|
}
|
|
32
44
|
}
|
|
33
45
|
/**
|
|
@@ -35,21 +47,24 @@ async function pauseState(workingDirectory) {
|
|
|
35
47
|
*/
|
|
36
48
|
async function pauseAction(options) {
|
|
37
49
|
const workingDirectory = process.cwd();
|
|
50
|
+
const spinnerText = options.force
|
|
51
|
+
? 'Force pausing autopilot (interrupting active workers)...'
|
|
52
|
+
: 'Pausing autopilot...';
|
|
38
53
|
const spinner = ora({
|
|
39
|
-
text:
|
|
54
|
+
text: spinnerText,
|
|
40
55
|
color: 'cyan',
|
|
41
56
|
}).start();
|
|
42
57
|
try {
|
|
43
|
-
const state = await pauseState(workingDirectory);
|
|
58
|
+
const { state, wasForced } = await pauseState(workingDirectory, options.force);
|
|
44
59
|
if (!state) {
|
|
45
60
|
spinner.fail('No active autopilot session');
|
|
46
61
|
throw new CliError('No active session', 1, 'No autopilot session is currently running.');
|
|
47
62
|
}
|
|
48
|
-
if (state.status !== 'paused' && state.status !== 'running') {
|
|
63
|
+
if (state.status !== 'paused' && state.status !== 'running' && state.status !== 'rate_limited') {
|
|
49
64
|
spinner.fail(`Session is ${state.status}`);
|
|
50
65
|
throw new CliError('Cannot pause', 1, `Session is already ${state.status}. Cannot pause.`);
|
|
51
66
|
}
|
|
52
|
-
spinner.succeed('Autopilot paused');
|
|
67
|
+
spinner.succeed(wasForced ? 'Autopilot force paused' : 'Autopilot paused');
|
|
53
68
|
if (options.json) {
|
|
54
69
|
console.log(JSON.stringify({
|
|
55
70
|
success: true,
|
|
@@ -58,12 +73,18 @@ async function pauseAction(options) {
|
|
|
58
73
|
completed: state.completedTickets.length,
|
|
59
74
|
failed: state.failedTickets.length,
|
|
60
75
|
cost: state.totalCostUsd,
|
|
76
|
+
wasForced,
|
|
61
77
|
}, null, 2));
|
|
62
78
|
}
|
|
63
79
|
else {
|
|
64
80
|
console.log('');
|
|
65
81
|
console.log(c.bold('Session Paused'));
|
|
66
82
|
console.log('');
|
|
83
|
+
if (wasForced) {
|
|
84
|
+
console.log(c.yellow('⚠ Force pause: Active workers were interrupted.'));
|
|
85
|
+
console.log(c.yellow(' In-progress tickets may need to be retried on resume.'));
|
|
86
|
+
console.log('');
|
|
87
|
+
}
|
|
67
88
|
console.log(`Run ID: ${c.dim(state.runId)}`);
|
|
68
89
|
console.log(`Completed: ${c.green(state.completedTickets.length.toString())} tickets`);
|
|
69
90
|
console.log(`Failed: ${c.red(state.failedTickets.length.toString())} tickets`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../src/autopilot/cli/pause.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAW7C;;GAEG;AACH,KAAK,UAAU,UAAU,
|
|
1
|
+
{"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../src/autopilot/cli/pause.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAW7C;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,gBAAwB,EACxB,QAAiB,KAAK;IAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QACpD,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,0BAA0B;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAClE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;YACxB,KAAK,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAqB,CAAC;YAC7D,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAEtE,oDAAoD;YACpD,IAAI,KAAK,EAAE,CAAC;gBACV,SAAS,GAAG,IAAI,CAAC;gBACjB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnC,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;wBACzG,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;wBACzB,oEAAoE;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,OAAqB;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;QAC/B,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC,sBAAsB,CAAC;IAE3B,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,MAAM;KACd,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAE/E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAChB,mBAAmB,EACnB,CAAC,EACD,4CAA4C,CAC7C,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAC/F,OAAO,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,CAAC,EACD,sBAAsB,KAAK,CAAC,MAAM,iBAAiB,CACpD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE3E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM;gBACxC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;gBAClC,IAAI,EAAE,KAAK,CAAC,YAAY;gBACxB,SAAS;aACV,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;gBACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,aAAa,EAAE,wCAAwC,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;CAczB,CAAC;SACG,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/resume.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/resume.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgND;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB5D"}
|
|
@@ -11,12 +11,17 @@ import { withErrorHandler, CliError } from '../../cli/middleware/error-handler.j
|
|
|
11
11
|
import { loadAutopilotConfig, mergeWithDefaults } from '../config.js';
|
|
12
12
|
import { createDispatcher } from '../core/dispatcher.js';
|
|
13
13
|
import { AutopilotApiClient } from '../api/autopilot-api-client.js';
|
|
14
|
-
import { STATE_FILE_NAME } from '../core/state-manager.js';
|
|
14
|
+
import { STATE_FILE_NAME, StateManager } from '../core/state-manager.js';
|
|
15
15
|
import { renderDashboard, renderCompactStatus, c } from './display.js';
|
|
16
16
|
/**
|
|
17
|
-
* Load state from file
|
|
17
|
+
* Load state from file or by run ID
|
|
18
18
|
*/
|
|
19
|
-
async function loadState(workingDirectory) {
|
|
19
|
+
async function loadState(workingDirectory, runId) {
|
|
20
|
+
// If run ID specified, load from archive
|
|
21
|
+
if (runId) {
|
|
22
|
+
return StateManager.loadByRunId(runId, workingDirectory);
|
|
23
|
+
}
|
|
24
|
+
// Otherwise load current state file
|
|
20
25
|
const statePath = path.join(workingDirectory, '.specforge', STATE_FILE_NAME);
|
|
21
26
|
try {
|
|
22
27
|
const content = await fs.readFile(statePath, 'utf-8');
|
|
@@ -41,11 +46,27 @@ async function resumeAction(options) {
|
|
|
41
46
|
color: 'cyan',
|
|
42
47
|
}).start();
|
|
43
48
|
try {
|
|
44
|
-
// Load saved state
|
|
45
|
-
const savedState = await loadState(workingDirectory);
|
|
49
|
+
// Load saved state (from archive if run ID specified, otherwise current state)
|
|
50
|
+
const savedState = await loadState(workingDirectory, options.runId);
|
|
46
51
|
if (!savedState) {
|
|
47
|
-
spinner.fail('No saved autopilot state found');
|
|
48
|
-
|
|
52
|
+
spinner.fail(options.runId ? `Run not found: ${options.runId}` : 'No saved autopilot state found');
|
|
53
|
+
// List available runs if loading by run ID failed
|
|
54
|
+
if (options.runId) {
|
|
55
|
+
const runs = StateManager.listRuns(workingDirectory);
|
|
56
|
+
if (runs.length > 0) {
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log(c.bold('Available runs:'));
|
|
59
|
+
for (const run of runs.slice(0, 5)) {
|
|
60
|
+
console.log(` ${run.runId.substring(0, 8)} ${run.status.padEnd(10)} ${run.startedAt.toISOString().substring(0, 16)}`);
|
|
61
|
+
}
|
|
62
|
+
if (runs.length > 5) {
|
|
63
|
+
console.log(c.dim(` ... and ${runs.length - 5} more`));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw new CliError('No saved state', 1, options.runId
|
|
68
|
+
? `Run ${options.runId} not found in archive.`
|
|
69
|
+
: 'No paused autopilot session found. Use `specforge autopilot run` to start a new session.');
|
|
49
70
|
}
|
|
50
71
|
// Check if already completed
|
|
51
72
|
if (savedState.status === 'completed') {
|
|
@@ -58,6 +79,10 @@ async function resumeAction(options) {
|
|
|
58
79
|
// Create API client
|
|
59
80
|
const apiClient = AutopilotApiClient.fromApiKey(cliConfig.apiKey, { apiUrl: cliConfig.apiUrl });
|
|
60
81
|
spinner.succeed('State loaded');
|
|
82
|
+
// Validate skip/retry options are mutually exclusive
|
|
83
|
+
if (options.skipFailed && options.retryFailed) {
|
|
84
|
+
throw new CliError('Invalid options', 1, 'Cannot use both --skip-failed and --retry-failed. Choose one.');
|
|
85
|
+
}
|
|
61
86
|
// Create dispatcher with state from saved session
|
|
62
87
|
const dispatcher = createDispatcher({
|
|
63
88
|
specificationId: savedState.specificationId,
|
|
@@ -65,15 +90,20 @@ async function resumeAction(options) {
|
|
|
65
90
|
workingDirectory,
|
|
66
91
|
config: autopilotConfig,
|
|
67
92
|
apiClient,
|
|
93
|
+
resumeOptions: {
|
|
94
|
+
skipFailed: options.skipFailed,
|
|
95
|
+
retryFailed: options.retryFailed,
|
|
96
|
+
previousState: savedState,
|
|
97
|
+
},
|
|
68
98
|
});
|
|
69
|
-
//
|
|
99
|
+
// Display resume options
|
|
70
100
|
if (options.skipFailed) {
|
|
71
|
-
|
|
101
|
+
const failedCount = savedState.failedTickets.length;
|
|
102
|
+
console.log(c.yellow(`Skipping ${failedCount} previously failed ticket${failedCount !== 1 ? 's' : ''} and their dependents`));
|
|
72
103
|
}
|
|
73
104
|
if (options.retryFailed) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// For now, this is a placeholder for the feature
|
|
105
|
+
const failedCount = savedState.failedTickets.length;
|
|
106
|
+
console.log(c.blue(`Retrying ${failedCount} previously failed ticket${failedCount !== 1 ? 's' : ''}`));
|
|
77
107
|
}
|
|
78
108
|
// Set up event handlers
|
|
79
109
|
dispatcher.on('state:changed', (state) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/autopilot/cli/resume.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/autopilot/cli/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoPD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoCzD"}
|
|
@@ -67,6 +67,15 @@ function displayRunPlan(specificationId, config, epicId) {
|
|
|
67
67
|
* Run command action
|
|
68
68
|
*/
|
|
69
69
|
async function runAction(options) {
|
|
70
|
+
// Redirect --resume to the resume command
|
|
71
|
+
if (options.resume) {
|
|
72
|
+
console.log(c.yellow('Note: The --resume option is deprecated on the run command.'));
|
|
73
|
+
console.log('');
|
|
74
|
+
console.log('Please use the resume command instead:');
|
|
75
|
+
console.log(` ${c.bold('specforge autopilot resume')} ${options.resume ? `--run-id ${options.resume}` : ''}`);
|
|
76
|
+
console.log('');
|
|
77
|
+
throw new CliError('Use resume command', 1, 'The --resume option has been moved to the dedicated resume command.');
|
|
78
|
+
}
|
|
70
79
|
const cliConfig = resolveCliConfig();
|
|
71
80
|
// Validate prerequisites
|
|
72
81
|
const { specificationId, autopilotConfig } = await validatePrerequisites(cliConfig, options);
|
|
@@ -95,6 +104,7 @@ async function runAction(options) {
|
|
|
95
104
|
workingDirectory: process.cwd(),
|
|
96
105
|
config: autopilotConfig,
|
|
97
106
|
apiClient,
|
|
107
|
+
epicId: options.epic,
|
|
98
108
|
});
|
|
99
109
|
spinner.succeed('Autopilot initialized');
|
|
100
110
|
// Set up event handlers
|
|
@@ -196,16 +206,20 @@ export function registerRunCommand(program) {
|
|
|
196
206
|
.option('-w, --watch', 'Watch mode with live dashboard')
|
|
197
207
|
.option('-v, --verbose', 'Show detailed progress')
|
|
198
208
|
.option('--json', 'Output as JSON')
|
|
199
|
-
.option('-r, --resume <run-id>', 'Resume a previous run')
|
|
209
|
+
.option('-r, --resume <run-id>', 'Resume a previous run (deprecated: use `autopilot resume` instead)')
|
|
200
210
|
.addHelpText('after', `
|
|
201
211
|
Examples:
|
|
202
212
|
$ specforge autopilot run # Run with current spec
|
|
203
213
|
$ specforge autopilot run --spec <id> # Run with specific spec
|
|
214
|
+
$ specforge autopilot run --epic <id> # Run only specific epic
|
|
204
215
|
$ specforge autopilot run --parallel 2 # Run with 2 workers
|
|
205
216
|
$ specforge autopilot run --max-cost 10 # Limit to $10
|
|
206
217
|
$ specforge autopilot run --dry-run # Preview without running
|
|
207
218
|
$ specforge autopilot run --watch # Live dashboard mode
|
|
208
|
-
|
|
219
|
+
|
|
220
|
+
To resume a previous run, use:
|
|
221
|
+
$ specforge autopilot resume # Resume latest session
|
|
222
|
+
$ specforge autopilot resume --run-id <id> # Resume specific run
|
|
209
223
|
|
|
210
224
|
Configuration:
|
|
211
225
|
Settings can be configured in .specforge.json under the "autopilot" key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/autopilot/cli/run.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/autopilot/cli/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkPD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuB5D"}
|
|
@@ -6,13 +6,18 @@
|
|
|
6
6
|
import ora from 'ora';
|
|
7
7
|
import * as fs from 'fs/promises';
|
|
8
8
|
import * as path from 'path';
|
|
9
|
-
import { withErrorHandler } from '../../cli/middleware/error-handler.js';
|
|
10
|
-
import { STATE_FILE_NAME } from '../core/state-manager.js';
|
|
9
|
+
import { withErrorHandler, CliError } from '../../cli/middleware/error-handler.js';
|
|
10
|
+
import { STATE_FILE_NAME, StateManager } from '../core/state-manager.js';
|
|
11
11
|
import { renderDashboard, renderCompactStatus, c, formatDuration, formatCost } from './display.js';
|
|
12
12
|
/**
|
|
13
|
-
* Load state from file
|
|
13
|
+
* Load state from file or by run ID
|
|
14
14
|
*/
|
|
15
|
-
async function loadState(workingDirectory) {
|
|
15
|
+
async function loadState(workingDirectory, runId) {
|
|
16
|
+
// If run ID specified, load from archive
|
|
17
|
+
if (runId) {
|
|
18
|
+
return StateManager.loadByRunId(runId, workingDirectory);
|
|
19
|
+
}
|
|
20
|
+
// Otherwise load current state file
|
|
16
21
|
const statePath = path.join(workingDirectory, '.specforge', STATE_FILE_NAME);
|
|
17
22
|
try {
|
|
18
23
|
const content = await fs.readFile(statePath, 'utf-8');
|
|
@@ -129,18 +134,21 @@ async function watchStatus(workingDirectory, verbose) {
|
|
|
129
134
|
*/
|
|
130
135
|
async function statusAction(options) {
|
|
131
136
|
const workingDirectory = process.cwd();
|
|
132
|
-
// Watch mode
|
|
137
|
+
// Watch mode (not available for historical runs)
|
|
133
138
|
if (options.watch) {
|
|
139
|
+
if (options.runId) {
|
|
140
|
+
throw new CliError('Watch mode not available', 1, 'Watch mode is only available for the current session, not historical runs.');
|
|
141
|
+
}
|
|
134
142
|
await watchStatus(workingDirectory, options.verbose ?? false);
|
|
135
143
|
return;
|
|
136
144
|
}
|
|
137
145
|
const spinner = ora({
|
|
138
|
-
text: 'Checking autopilot status...',
|
|
146
|
+
text: options.runId ? `Loading run ${options.runId}...` : 'Checking autopilot status...',
|
|
139
147
|
color: 'cyan',
|
|
140
148
|
}).start();
|
|
141
149
|
try {
|
|
142
|
-
// Load current state
|
|
143
|
-
const state = await loadState(workingDirectory);
|
|
150
|
+
// Load state (from archive if run ID specified, otherwise current state)
|
|
151
|
+
const state = await loadState(workingDirectory, options.runId);
|
|
144
152
|
spinner.stop();
|
|
145
153
|
// JSON output
|
|
146
154
|
if (options.json) {
|
|
@@ -152,8 +160,23 @@ async function statusAction(options) {
|
|
|
152
160
|
}
|
|
153
161
|
return;
|
|
154
162
|
}
|
|
155
|
-
// No active session
|
|
163
|
+
// No active session or run not found
|
|
156
164
|
if (!state) {
|
|
165
|
+
if (options.runId) {
|
|
166
|
+
spinner.fail(`Run not found: ${options.runId}`);
|
|
167
|
+
const runs = StateManager.listRuns(workingDirectory);
|
|
168
|
+
if (runs.length > 0) {
|
|
169
|
+
console.log('');
|
|
170
|
+
console.log(c.bold('Available runs:'));
|
|
171
|
+
for (const run of runs.slice(0, 5)) {
|
|
172
|
+
console.log(` ${run.runId.substring(0, 8)} ${run.status.padEnd(10)} ${run.startedAt.toISOString().substring(0, 16)}`);
|
|
173
|
+
}
|
|
174
|
+
if (runs.length > 5) {
|
|
175
|
+
console.log(c.dim(` ... and ${runs.length - 5} more`));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
157
180
|
const runs = await listRuns(workingDirectory);
|
|
158
181
|
displayNoSession(runs);
|
|
159
182
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/autopilot/cli/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/autopilot/cli/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,14 @@ import type { AutopilotConfig, AutopilotState, RunSummary, ImplementationResult
|
|
|
9
9
|
import { StateManager } from './state-manager.js';
|
|
10
10
|
import { DependencyResolver } from './dependency-resolver.js';
|
|
11
11
|
import type { AutopilotApiClient } from '../api/autopilot-api-client.js';
|
|
12
|
+
/**
|
|
13
|
+
* Resume options for handling previously failed tickets
|
|
14
|
+
*/
|
|
15
|
+
export interface ResumeOptions {
|
|
16
|
+
skipFailed?: boolean;
|
|
17
|
+
retryFailed?: boolean;
|
|
18
|
+
previousState?: AutopilotState;
|
|
19
|
+
}
|
|
12
20
|
/**
|
|
13
21
|
* Dispatcher configuration
|
|
14
22
|
*/
|
|
@@ -18,6 +26,8 @@ export interface DispatcherOptions {
|
|
|
18
26
|
specificationId: string;
|
|
19
27
|
projectId: string;
|
|
20
28
|
workingDirectory: string;
|
|
29
|
+
epicId?: string;
|
|
30
|
+
resumeOptions?: ResumeOptions;
|
|
21
31
|
onImplementTicket?: (ticket: Ticket, workerId: number, worktreePath: string) => Promise<ImplementationResult>;
|
|
22
32
|
}
|
|
23
33
|
/**
|
|
@@ -86,6 +96,8 @@ export declare class Dispatcher extends EventEmitter {
|
|
|
86
96
|
private rateLimitHandler;
|
|
87
97
|
private workingDirectory;
|
|
88
98
|
private onImplementTicket?;
|
|
99
|
+
private epicIdFilter?;
|
|
100
|
+
private resumeOptions?;
|
|
89
101
|
private specification?;
|
|
90
102
|
private epics;
|
|
91
103
|
private currentEpicIndex;
|
|
@@ -107,6 +119,10 @@ export declare class Dispatcher extends EventEmitter {
|
|
|
107
119
|
* Load specification and epics from API
|
|
108
120
|
*/
|
|
109
121
|
private loadSpecification;
|
|
122
|
+
/**
|
|
123
|
+
* Apply resume options to handle previously failed tickets
|
|
124
|
+
*/
|
|
125
|
+
private applyResumeOptions;
|
|
110
126
|
/**
|
|
111
127
|
* Initialize worker sessions
|
|
112
128
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../../src/autopilot/core/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAiB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAGd,UAAU,EAEV,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,eAAe,EAAE,cAAc,CAAC;IAChC,cAAc,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAC/B,gBAAgB,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC/E,iBAAiB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,kBAAkB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,eAAe,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,eAAe,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,mBAAmB,EAAE,IAAI,CAAC;IAC1B,oBAAoB,EAAE,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAyC;
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../../src/autopilot/core/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAiB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAGd,UAAU,EAEV,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,cAAc,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,eAAe,EAAE,cAAc,CAAC;IAChC,cAAc,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAC/B,gBAAgB,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC/E,iBAAiB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,kBAAkB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,eAAe,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,eAAe,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,mBAAmB,EAAE,IAAI,CAAC;IAC1B,oBAAoB,EAAE,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAyC;IACnE,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAAkB;gBAExB,OAAO,EAAE,iBAAiB;IA0BtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IA8ClC;;OAEG;YACW,iBAAiB;IAyB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;YACW,YAAY;IAe1B;;OAEG;YACW,WAAW;IA+CzB;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;YACW,aAAa;IAmD3B;;OAEG;YACW,mBAAmB;IA0DjC;;OAEG;YACW,mBAAmB;IA0CjC;;OAEG;YACW,mBAAmB;IAcjC;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;YACW,uBAAuB;IAWrC;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;YACW,aAAa;IAU3B;;OAEG;YACW,qBAAqB;IAUnC;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ3B;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;OAEG;IACH,OAAO,CAAC,QAAQ;IAiChB;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAmCjC;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,QAAQ,IAAI,cAAc;IAI1B;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,qBAAqB,IAAI,kBAAkB;IAI3C;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,aAAa,IAAI,OAAO;CAGzB;AAGD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAEvE"}
|
|
@@ -24,6 +24,8 @@ export class Dispatcher extends EventEmitter {
|
|
|
24
24
|
rateLimitHandler;
|
|
25
25
|
workingDirectory;
|
|
26
26
|
onImplementTicket;
|
|
27
|
+
epicIdFilter;
|
|
28
|
+
resumeOptions;
|
|
27
29
|
specification;
|
|
28
30
|
epics = [];
|
|
29
31
|
currentEpicIndex = 0;
|
|
@@ -38,6 +40,8 @@ export class Dispatcher extends EventEmitter {
|
|
|
38
40
|
this.apiClient = options.apiClient;
|
|
39
41
|
this.workingDirectory = options.workingDirectory;
|
|
40
42
|
this.onImplementTicket = options.onImplementTicket;
|
|
43
|
+
this.epicIdFilter = options.epicId;
|
|
44
|
+
this.resumeOptions = options.resumeOptions;
|
|
41
45
|
// Initialize managers
|
|
42
46
|
this.stateManager = new StateManager({
|
|
43
47
|
specificationId: options.specificationId,
|
|
@@ -104,6 +108,10 @@ export class Dispatcher extends EventEmitter {
|
|
|
104
108
|
await this.loadSpecification();
|
|
105
109
|
// Build dependency graph
|
|
106
110
|
await this.dependencyResolver.buildGraph(this.stateManager.getState().specificationId);
|
|
111
|
+
// Apply resume options if resuming a previous run
|
|
112
|
+
if (this.resumeOptions) {
|
|
113
|
+
this.applyResumeOptions();
|
|
114
|
+
}
|
|
107
115
|
// Initialize workers
|
|
108
116
|
this.initializeWorkers();
|
|
109
117
|
// Process epics
|
|
@@ -131,9 +139,46 @@ export class Dispatcher extends EventEmitter {
|
|
|
131
139
|
if (this.epics.length === 0) {
|
|
132
140
|
throw new Error('No epics found in specification');
|
|
133
141
|
}
|
|
142
|
+
// Filter to specific epic if requested
|
|
143
|
+
if (this.epicIdFilter) {
|
|
144
|
+
this.epics = this.epics.filter(epic => epic.id === this.epicIdFilter);
|
|
145
|
+
if (this.epics.length === 0) {
|
|
146
|
+
throw new Error(`Epic not found: ${this.epicIdFilter}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
134
149
|
// Sort epics by order
|
|
135
150
|
this.epics.sort((a, b) => a.order - b.order);
|
|
136
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Apply resume options to handle previously failed tickets
|
|
154
|
+
*/
|
|
155
|
+
applyResumeOptions() {
|
|
156
|
+
if (!this.resumeOptions?.previousState)
|
|
157
|
+
return;
|
|
158
|
+
const previousState = this.resumeOptions.previousState;
|
|
159
|
+
if (this.resumeOptions.skipFailed) {
|
|
160
|
+
// Move failed tickets to skipped
|
|
161
|
+
for (const failure of previousState.failedTickets) {
|
|
162
|
+
this.stateManager.ticketSkipped(failure.ticketId, `Skipped (previously failed: ${failure.error})`);
|
|
163
|
+
// Mark in dependency resolver so dependents are also skipped
|
|
164
|
+
const affected = this.dependencyResolver.markFailed(failure.ticketId);
|
|
165
|
+
for (const affectedId of affected) {
|
|
166
|
+
this.stateManager.ticketSkipped(affectedId, `Dependency ${failure.ticketId} was skipped`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else if (this.resumeOptions.retryFailed) {
|
|
171
|
+
// Reset failed tickets for retry - clear from failed list
|
|
172
|
+
// The tickets will be re-queued when the dependency resolver builds the queue
|
|
173
|
+
for (const failure of previousState.failedTickets) {
|
|
174
|
+
// Clear failure tracking in failure handler
|
|
175
|
+
this.failureHandler.clearTicketFailures(failure.ticketId);
|
|
176
|
+
// Reset dependency status so it gets re-queued
|
|
177
|
+
this.dependencyResolver.updateStatus(failure.ticketId, 'queue');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Default: preserve failed status (do nothing special)
|
|
181
|
+
}
|
|
137
182
|
/**
|
|
138
183
|
* Initialize worker sessions
|
|
139
184
|
*/
|