spec-agent 2.0.2 → 2.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.
Potentially problematic release.
This version of spec-agent might be problematic. Click here for more details.
- package/.cursor/rules/spec-agent-assistant.mdc +34 -0
- package/.cursor/skills/spec-agent-execution-orchestrator/SKILL.md +133 -0
- package/.cursor/skills/spec-agent-execution-orchestrator/agent-prompts.md +113 -0
- package/.cursor/skills/spec-agent-execution-orchestrator/reference.md +37 -0
- package/.cursor/skills/spec-agent-onboarding-agent/SKILL.md +77 -0
- package/.cursor/skills/spec-agent-product-dev-agent/SKILL.md +92 -0
- package/CURSOR_AGENT_PACK.md +66 -0
- package/README.md +33 -0
- package/USAGE_FROM_NPM.md +9 -0
- package/dist/commands/orchestrate.d.ts +46 -0
- package/dist/commands/orchestrate.d.ts.map +1 -0
- package/dist/commands/orchestrate.js +229 -0
- package/dist/commands/orchestrate.js.map +1 -0
- package/dist/commands/round.d.ts +15 -0
- package/dist/commands/round.d.ts.map +1 -0
- package/dist/commands/round.js +202 -0
- package/dist/commands/round.js.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -1
- package/orchestrator-v2-design.md +193 -0
- package/package.json +1 -1
- package/spec-agent-implementation.md +15 -0
- package/src/commands/orchestrate.ts +282 -0
- package/src/commands/round.ts +189 -0
- package/src/index.ts +27 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.orchestrateCommand = orchestrateCommand;
|
|
37
|
+
exports.buildOrchestratorContext = buildOrchestratorContext;
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const logger_1 = require("../utils/logger");
|
|
40
|
+
const file_1 = require("../utils/file");
|
|
41
|
+
async function orchestrateCommand(options, command) {
|
|
42
|
+
const logger = new logger_1.Logger();
|
|
43
|
+
try {
|
|
44
|
+
const workspacePath = path.resolve(options.workspace);
|
|
45
|
+
const inputArg = options.input || './docs';
|
|
46
|
+
const maxParallel = Math.max(1, parseInt(options.maxParallel || '4', 10) || 4);
|
|
47
|
+
const target = (options.target || 'cursor').toLowerCase();
|
|
48
|
+
const contextPath = path.join(workspacePath, 'orchestrator_context.json');
|
|
49
|
+
const context = await buildOrchestratorContext({
|
|
50
|
+
workspaceArg: options.workspace,
|
|
51
|
+
inputArg,
|
|
52
|
+
target,
|
|
53
|
+
maxParallel,
|
|
54
|
+
});
|
|
55
|
+
if (!options.dryRun) {
|
|
56
|
+
await (0, file_1.writeJson)(contextPath, context);
|
|
57
|
+
}
|
|
58
|
+
if (options.format === 'json') {
|
|
59
|
+
logger.json(context);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
logger.info(`Orchestrator state: ${context.state}`);
|
|
63
|
+
logger.info(`Next action: ${context.nextAction}`);
|
|
64
|
+
logger.info(`Metrics: pending=${context.metrics.pending}, running=${context.metrics.running}, succeeded=${context.metrics.succeeded}, failed=${context.metrics.failed}, blocked=${context.metrics.blocked}`);
|
|
65
|
+
logger.info(`Context file: ${contextPath}`);
|
|
66
|
+
logger.info('Recommended commands:');
|
|
67
|
+
for (const cmd of context.recommendedCommands) {
|
|
68
|
+
logger.info(` ${cmd}`);
|
|
69
|
+
}
|
|
70
|
+
if (options.dryRun) {
|
|
71
|
+
logger.warn('Dry run mode - context file not written');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
logger.error(`Orchestrate failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function buildOrchestratorContext(input) {
|
|
80
|
+
const workspacePath = path.resolve(input.workspaceArg);
|
|
81
|
+
const manifestPath = path.join(workspacePath, 'manifest.json');
|
|
82
|
+
const specPath = path.join(workspacePath, 'spec_summary.json');
|
|
83
|
+
const taskPlanPath = path.join(workspacePath, 'task_plan.json');
|
|
84
|
+
const dispatchPath = path.join(workspacePath, 'dispatch_plan.json');
|
|
85
|
+
const handoffPath = path.join(workspacePath, 'handoff', 'handoff_bundle.json');
|
|
86
|
+
const runStatePath = path.join(workspacePath, 'execution', 'run_state.json');
|
|
87
|
+
const reportPath = path.join(workspacePath, 'execution', 'execution_report.json');
|
|
88
|
+
const inputPath = path.resolve(input.inputArg);
|
|
89
|
+
const checks = {
|
|
90
|
+
manifest: await (0, file_1.fileExists)(manifestPath),
|
|
91
|
+
specSummary: await (0, file_1.fileExists)(specPath),
|
|
92
|
+
taskPlan: await (0, file_1.fileExists)(taskPlanPath),
|
|
93
|
+
dispatchPlan: await (0, file_1.fileExists)(dispatchPath),
|
|
94
|
+
handoffBundle: await (0, file_1.fileExists)(handoffPath),
|
|
95
|
+
runState: await (0, file_1.fileExists)(runStatePath),
|
|
96
|
+
executionReport: await (0, file_1.fileExists)(reportPath),
|
|
97
|
+
};
|
|
98
|
+
const metrics = {
|
|
99
|
+
pending: 0,
|
|
100
|
+
running: 0,
|
|
101
|
+
succeeded: 0,
|
|
102
|
+
failed: 0,
|
|
103
|
+
blocked: 0,
|
|
104
|
+
};
|
|
105
|
+
let lastAction = null;
|
|
106
|
+
let lastError = null;
|
|
107
|
+
let runningTaskIds = [];
|
|
108
|
+
if (checks.executionReport) {
|
|
109
|
+
const report = await (0, file_1.readJson)(reportPath);
|
|
110
|
+
metrics.pending = report.summary?.pending || 0;
|
|
111
|
+
metrics.running = report.summary?.running || 0;
|
|
112
|
+
metrics.succeeded = report.summary?.succeeded || 0;
|
|
113
|
+
metrics.failed = report.summary?.failed || 0;
|
|
114
|
+
metrics.blocked = report.summary?.blocked || 0;
|
|
115
|
+
const lastEvent = report.lastEvents && report.lastEvents.length > 0
|
|
116
|
+
? report.lastEvents[report.lastEvents.length - 1]
|
|
117
|
+
: null;
|
|
118
|
+
if (lastEvent?.action) {
|
|
119
|
+
lastAction = `${lastEvent.action}${lastEvent.taskId ? `:${lastEvent.taskId}` : ''}`;
|
|
120
|
+
}
|
|
121
|
+
if (lastEvent?.action === 'failed' || lastEvent?.action === 'blocked') {
|
|
122
|
+
lastError = lastEvent.detail || `${lastEvent.action} event detected`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (checks.runState) {
|
|
126
|
+
const runState = await (0, file_1.readJson)(runStatePath);
|
|
127
|
+
const tasks = runState.tasks || {};
|
|
128
|
+
runningTaskIds = Object.entries(tasks)
|
|
129
|
+
.filter(([, value]) => value.status === 'running')
|
|
130
|
+
.map(([taskId]) => taskId)
|
|
131
|
+
.sort((a, b) => a.localeCompare(b));
|
|
132
|
+
}
|
|
133
|
+
const { state, nextAction, recommendedCommands } = decideNextAction({
|
|
134
|
+
checks,
|
|
135
|
+
metrics,
|
|
136
|
+
workspaceArg: input.workspaceArg,
|
|
137
|
+
inputArg: input.inputArg,
|
|
138
|
+
inputPathExists: await (0, file_1.fileExists)(inputPath),
|
|
139
|
+
target: input.target,
|
|
140
|
+
maxParallel: input.maxParallel,
|
|
141
|
+
runningTaskIds,
|
|
142
|
+
});
|
|
143
|
+
return {
|
|
144
|
+
version: '2.0.0-beta',
|
|
145
|
+
updatedAt: new Date().toISOString(),
|
|
146
|
+
workspace: workspacePath,
|
|
147
|
+
state,
|
|
148
|
+
checks,
|
|
149
|
+
metrics,
|
|
150
|
+
lastAction,
|
|
151
|
+
lastError,
|
|
152
|
+
nextAction,
|
|
153
|
+
recommendedCommands,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function decideNextAction(input) {
|
|
157
|
+
const { checks, metrics, workspaceArg, inputArg, inputPathExists, target, maxParallel, runningTaskIds } = input;
|
|
158
|
+
const pipelineCmd = `spec-agent pipeline --input ${inputArg} --output ${workspaceArg}`;
|
|
159
|
+
const handoffCmd = `spec-agent handoff --workspace ${workspaceArg} --target ${target} --include-summaries`;
|
|
160
|
+
const executeCmd = `spec-agent execute --workspace ${workspaceArg} --max-parallel ${maxParallel}`;
|
|
161
|
+
const statusCmd = `spec-agent status --workspace ${workspaceArg}`;
|
|
162
|
+
if (!checks.dispatchPlan) {
|
|
163
|
+
if (!inputPathExists) {
|
|
164
|
+
return {
|
|
165
|
+
state: 'INIT',
|
|
166
|
+
nextAction: 'Prepare input docs directory before running pipeline',
|
|
167
|
+
recommendedCommands: [
|
|
168
|
+
`mkdir ${inputArg}`,
|
|
169
|
+
'# put your requirement documents under docs/',
|
|
170
|
+
pipelineCmd,
|
|
171
|
+
],
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
state: checks.manifest ? 'PIPELINE_RUNNING' : 'READY',
|
|
176
|
+
nextAction: 'Run pipeline to produce planning artifacts',
|
|
177
|
+
recommendedCommands: [pipelineCmd, statusCmd],
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
if (!checks.handoffBundle) {
|
|
181
|
+
return {
|
|
182
|
+
state: 'PIPELINE_READY',
|
|
183
|
+
nextAction: 'Generate handoff bundle for execution loop',
|
|
184
|
+
recommendedCommands: [handoffCmd, executeCmd],
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (!checks.runState) {
|
|
188
|
+
return {
|
|
189
|
+
state: 'EXECUTION_RUNNING',
|
|
190
|
+
nextAction: 'Initialize execution state and schedule first batch',
|
|
191
|
+
recommendedCommands: [executeCmd],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
if (metrics.running > 0) {
|
|
195
|
+
const completionIds = runningTaskIds.join(',');
|
|
196
|
+
const failExampleTask = runningTaskIds[0] || 'Txxx';
|
|
197
|
+
return {
|
|
198
|
+
state: 'WAITING_FEEDBACK',
|
|
199
|
+
nextAction: 'Collect worker feedback and apply --complete/--fail',
|
|
200
|
+
recommendedCommands: [
|
|
201
|
+
completionIds
|
|
202
|
+
? `spec-agent execute --workspace ${workspaceArg} --complete ${completionIds}`
|
|
203
|
+
: `spec-agent execute --workspace ${workspaceArg} --complete Txxx`,
|
|
204
|
+
`spec-agent execute --workspace ${workspaceArg} --fail ${failExampleTask} --error "compile failed"`,
|
|
205
|
+
executeCmd,
|
|
206
|
+
],
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
if (metrics.pending > 0) {
|
|
210
|
+
return {
|
|
211
|
+
state: 'EXECUTION_RUNNING',
|
|
212
|
+
nextAction: 'Schedule next executable batch',
|
|
213
|
+
recommendedCommands: [executeCmd],
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
if (metrics.failed > 0 || metrics.blocked > 0) {
|
|
217
|
+
return {
|
|
218
|
+
state: 'PARTIAL_FAILED',
|
|
219
|
+
nextAction: 'Investigate failed/blocked tasks then retry with execute',
|
|
220
|
+
recommendedCommands: [executeCmd, statusCmd],
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
state: 'DONE',
|
|
225
|
+
nextAction: 'Execution loop completed',
|
|
226
|
+
recommendedCommands: [statusCmd],
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=orchestrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../src/commands/orchestrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
interface RoundOptions {
|
|
3
|
+
workspace: string;
|
|
4
|
+
input: string;
|
|
5
|
+
target: string;
|
|
6
|
+
maxParallel: string;
|
|
7
|
+
retry?: string;
|
|
8
|
+
complete?: string;
|
|
9
|
+
fail?: string;
|
|
10
|
+
error?: string;
|
|
11
|
+
dryRun?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function roundCommand(options: RoundOptions, command: Command): Promise<void>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=round.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../src/commands/round.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgIzF"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.roundCommand = roundCommand;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const logger_1 = require("../utils/logger");
|
|
39
|
+
const file_1 = require("../utils/file");
|
|
40
|
+
const pipeline_1 = require("./pipeline");
|
|
41
|
+
const handoff_1 = require("./handoff");
|
|
42
|
+
const execute_1 = require("./execute");
|
|
43
|
+
const orchestrate_1 = require("./orchestrate");
|
|
44
|
+
async function roundCommand(options, command) {
|
|
45
|
+
const logger = new logger_1.Logger();
|
|
46
|
+
try {
|
|
47
|
+
const workspaceArg = options.workspace || './output';
|
|
48
|
+
const inputArg = options.input || './docs';
|
|
49
|
+
const target = (options.target || 'cursor').toLowerCase();
|
|
50
|
+
const maxParallel = Math.max(1, parseInt(options.maxParallel || '4', 10) || 4);
|
|
51
|
+
const retry = String(Math.max(0, parseInt(options.retry || '1', 10) || 1));
|
|
52
|
+
const hasFeedback = Boolean((options.complete || '').trim() || (options.fail || '').trim());
|
|
53
|
+
const workspacePath = path.resolve(workspaceArg);
|
|
54
|
+
const contextPath = path.join(workspacePath, 'orchestrator_context.json');
|
|
55
|
+
const before = await (0, orchestrate_1.buildOrchestratorContext)({
|
|
56
|
+
workspaceArg,
|
|
57
|
+
inputArg,
|
|
58
|
+
target,
|
|
59
|
+
maxParallel,
|
|
60
|
+
});
|
|
61
|
+
let executedAction = 'none';
|
|
62
|
+
if (!options.dryRun) {
|
|
63
|
+
if (hasFeedback && before.checks.runState) {
|
|
64
|
+
executedAction = 'execute_feedback';
|
|
65
|
+
await (0, execute_1.executeCommand)({
|
|
66
|
+
workspace: workspaceArg,
|
|
67
|
+
maxParallel: String(maxParallel),
|
|
68
|
+
retry,
|
|
69
|
+
complete: options.complete,
|
|
70
|
+
fail: options.fail,
|
|
71
|
+
error: options.error,
|
|
72
|
+
dryRun: false,
|
|
73
|
+
}, {});
|
|
74
|
+
const afterFeedback = await (0, orchestrate_1.buildOrchestratorContext)({
|
|
75
|
+
workspaceArg,
|
|
76
|
+
inputArg,
|
|
77
|
+
target,
|
|
78
|
+
maxParallel,
|
|
79
|
+
});
|
|
80
|
+
if (afterFeedback.metrics.pending > 0 && afterFeedback.metrics.running === 0) {
|
|
81
|
+
executedAction = 'execute_feedback_and_schedule';
|
|
82
|
+
await (0, execute_1.executeCommand)({
|
|
83
|
+
workspace: workspaceArg,
|
|
84
|
+
maxParallel: String(maxParallel),
|
|
85
|
+
retry,
|
|
86
|
+
dryRun: false,
|
|
87
|
+
}, {});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else if (!before.checks.dispatchPlan) {
|
|
91
|
+
executedAction = 'pipeline';
|
|
92
|
+
await (0, pipeline_1.pipelineCommand)({
|
|
93
|
+
input: inputArg,
|
|
94
|
+
output: workspaceArg,
|
|
95
|
+
agents: 'auto',
|
|
96
|
+
chunkSize: '200kb',
|
|
97
|
+
minChunkSize: '10kb',
|
|
98
|
+
analyzeRetries: '1',
|
|
99
|
+
analyzeBudgetTokens: '0',
|
|
100
|
+
framework: 'vue3',
|
|
101
|
+
dryRun: false,
|
|
102
|
+
}, {});
|
|
103
|
+
}
|
|
104
|
+
else if (!before.checks.handoffBundle) {
|
|
105
|
+
executedAction = 'handoff';
|
|
106
|
+
await (0, handoff_1.handoffCommand)({
|
|
107
|
+
workspace: workspaceArg,
|
|
108
|
+
output: 'handoff',
|
|
109
|
+
target,
|
|
110
|
+
includeSummaries: true,
|
|
111
|
+
dryRun: false,
|
|
112
|
+
}, {});
|
|
113
|
+
}
|
|
114
|
+
else if (!before.checks.runState || (before.metrics.pending > 0 && before.metrics.running === 0)) {
|
|
115
|
+
executedAction = 'execute';
|
|
116
|
+
await (0, execute_1.executeCommand)({
|
|
117
|
+
workspace: workspaceArg,
|
|
118
|
+
maxParallel: String(maxParallel),
|
|
119
|
+
retry,
|
|
120
|
+
dryRun: false,
|
|
121
|
+
}, {});
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
executedAction = 'wait_feedback';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const after = await (0, orchestrate_1.buildOrchestratorContext)({
|
|
128
|
+
workspaceArg,
|
|
129
|
+
inputArg,
|
|
130
|
+
target,
|
|
131
|
+
maxParallel,
|
|
132
|
+
});
|
|
133
|
+
if (!options.dryRun) {
|
|
134
|
+
await (0, file_1.writeJson)(contextPath, after);
|
|
135
|
+
}
|
|
136
|
+
logger.info(`Round action: ${executedAction}`);
|
|
137
|
+
logger.info(`State: ${after.state}`);
|
|
138
|
+
logger.info(`Next action: ${after.nextAction}`);
|
|
139
|
+
logger.info(`Metrics: pending=${after.metrics.pending}, running=${after.metrics.running}, succeeded=${after.metrics.succeeded}, failed=${after.metrics.failed}, blocked=${after.metrics.blocked}`);
|
|
140
|
+
logger.info('Recommended commands:');
|
|
141
|
+
for (const cmdLine of after.recommendedCommands) {
|
|
142
|
+
logger.info(` ${cmdLine}`);
|
|
143
|
+
}
|
|
144
|
+
if (options.dryRun) {
|
|
145
|
+
logger.warn('Dry run mode - no command execution performed');
|
|
146
|
+
}
|
|
147
|
+
logger.json({
|
|
148
|
+
status: 'success',
|
|
149
|
+
executedAction,
|
|
150
|
+
state: after.state,
|
|
151
|
+
nextAction: after.nextAction,
|
|
152
|
+
metrics: after.metrics,
|
|
153
|
+
contextPath,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
158
|
+
logger.error(`Round failed: ${message}`);
|
|
159
|
+
const recovery = inferRecoveryCommands(message, options);
|
|
160
|
+
if (recovery.length > 0) {
|
|
161
|
+
logger.info('Suggested recovery commands:');
|
|
162
|
+
for (const item of recovery) {
|
|
163
|
+
logger.info(` ${item}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function inferRecoveryCommands(message, options) {
|
|
170
|
+
const workspaceArg = options.workspace || './output';
|
|
171
|
+
const inputArg = options.input || './docs';
|
|
172
|
+
const lower = message.toLowerCase();
|
|
173
|
+
if (lower.includes('not recognized') || lower.includes('command not found')) {
|
|
174
|
+
return [
|
|
175
|
+
'npm install -g spec-agent --registry=https://registry.npmjs.org/',
|
|
176
|
+
'spec-agent --version',
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
if (lower.includes('eneedauth') || lower.includes('e403') || lower.includes('2fa')) {
|
|
180
|
+
return [
|
|
181
|
+
'npm login --registry=https://registry.npmjs.org/',
|
|
182
|
+
'npm profile get "two-factor auth" --registry=https://registry.npmjs.org/',
|
|
183
|
+
];
|
|
184
|
+
}
|
|
185
|
+
if (lower.includes('api key') || lower.includes('llm') || lower.includes('configuration')) {
|
|
186
|
+
return [
|
|
187
|
+
`spec-agent doctor --workspace ${workspaceArg} --check-llm`,
|
|
188
|
+
'# set LLM_API_KEY / LLM_BASE_URL / LLM_MODEL then retry',
|
|
189
|
+
];
|
|
190
|
+
}
|
|
191
|
+
if (lower.includes('manifest not found') || lower.includes('task plan not found') || lower.includes('dispatch_plan')) {
|
|
192
|
+
return [
|
|
193
|
+
`spec-agent pipeline --input ${inputArg} --output ${workspaceArg}`,
|
|
194
|
+
`spec-agent handoff --workspace ${workspaceArg} --target cursor --include-summaries`,
|
|
195
|
+
];
|
|
196
|
+
}
|
|
197
|
+
return [
|
|
198
|
+
`spec-agent orchestrate --workspace ${workspaceArg} --input ${inputArg}`,
|
|
199
|
+
`spec-agent round --workspace ${workspaceArg} --input ${inputArg} --target ${(options.target || 'cursor')}`,
|
|
200
|
+
];
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=round.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round.js","sourceRoot":"","sources":["../../src/commands/round.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,oCAgIC;AArJD,2CAA6B;AAE7B,4CAAyC;AACzC,wCAA0C;AAC1C,yCAA6C;AAC7C,uCAA2C;AAC3C,uCAA2C;AAC3C,+CAAyD;AAclD,KAAK,UAAU,YAAY,CAAC,OAAqB,EAAE,OAAgB;IACxE,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,IAAA,sCAAwB,EAAC;YAC5C,YAAY;YACZ,QAAQ;YACR,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;QAEH,IAAI,cAAc,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC1C,cAAc,GAAG,kBAAkB,CAAC;gBACpC,MAAM,IAAA,wBAAc,EAAC;oBACnB,SAAS,EAAE,YAAY;oBACvB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;oBAChC,KAAK;oBACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,MAAM,EAAE,KAAK;iBACd,EAAE,EAAa,CAAC,CAAC;gBAElB,MAAM,aAAa,GAAG,MAAM,IAAA,sCAAwB,EAAC;oBACnD,YAAY;oBACZ,QAAQ;oBACR,MAAM;oBACN,WAAW;iBACZ,CAAC,CAAC;gBAEH,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;oBAC7E,cAAc,GAAG,+BAA+B,CAAC;oBACjD,MAAM,IAAA,wBAAc,EAAC;wBACnB,SAAS,EAAE,YAAY;wBACvB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;wBAChC,KAAK;wBACL,MAAM,EAAE,KAAK;qBACd,EAAE,EAAa,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACvC,cAAc,GAAG,UAAU,CAAC;gBAC5B,MAAM,IAAA,0BAAe,EAAC;oBACpB,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,OAAO;oBAClB,YAAY,EAAE,MAAM;oBACpB,cAAc,EAAE,GAAG;oBACnB,mBAAmB,EAAE,GAAG;oBACxB,SAAS,EAAE,MAAM;oBACjB,MAAM,EAAE,KAAK;iBACd,EAAE,EAAa,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBACxC,cAAc,GAAG,SAAS,CAAC;gBAC3B,MAAM,IAAA,wBAAc,EAAC;oBACnB,SAAS,EAAE,YAAY;oBACvB,MAAM,EAAE,SAAS;oBACjB,MAAM;oBACN,gBAAgB,EAAE,IAAI;oBACtB,MAAM,EAAE,KAAK;iBACd,EAAE,EAAa,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;gBACnG,cAAc,GAAG,SAAS,CAAC;gBAC3B,MAAM,IAAA,wBAAc,EAAC;oBACnB,SAAS,EAAE,YAAY;oBACvB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;oBAChC,KAAK;oBACL,MAAM,EAAE,KAAK;iBACd,EAAE,EAAa,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,eAAe,CAAC;YACnC,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAA,sCAAwB,EAAC;YAC3C,YAAY;YACZ,QAAQ;YACR,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAA,gBAAS,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,iBAAiB,cAAc,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CACT,oBAAoB,KAAK,CAAC,OAAO,CAAC,OAAO,aAAa,KAAK,CAAC,OAAO,CAAC,OAAO,eAAe,KAAK,CAAC,OAAO,CAAC,SAAS,YAAY,KAAK,CAAC,OAAO,CAAC,MAAM,aAAa,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CACtL,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,SAAS;YACjB,cAAc;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe,EAAE,OAAqB;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC5E,OAAO;YACL,kEAAkE;YAClE,sBAAsB;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnF,OAAO;YACL,kDAAkD;YAClD,0EAA0E;SAC3E,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1F,OAAO;YACL,iCAAiC,YAAY,cAAc;YAC3D,yDAAyD;SAC1D,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACrH,OAAO;YACL,+BAA+B,QAAQ,aAAa,YAAY,EAAE;YAClE,kCAAkC,YAAY,sCAAsC;SACrF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,sCAAsC,YAAY,YAAY,QAAQ,EAAE;QACxE,gCAAgC,YAAY,YAAY,QAAQ,aAAa,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE;KAC5G,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -48,6 +48,8 @@ const clean_1 = require("./commands/clean");
|
|
|
48
48
|
const doctor_1 = require("./commands/doctor");
|
|
49
49
|
const handoff_1 = require("./commands/handoff");
|
|
50
50
|
const execute_1 = require("./commands/execute");
|
|
51
|
+
const orchestrate_1 = require("./commands/orchestrate");
|
|
52
|
+
const round_1 = require("./commands/round");
|
|
51
53
|
const program = new commander_1.Command();
|
|
52
54
|
const pkgVersion = (() => {
|
|
53
55
|
try {
|
|
@@ -193,5 +195,28 @@ program
|
|
|
193
195
|
.option('--reset', 'Reset existing run state and reinitialize from bundle')
|
|
194
196
|
.option('--dry-run', 'Preview execution transitions without writing state')
|
|
195
197
|
.action(execute_1.executeCommand);
|
|
198
|
+
program
|
|
199
|
+
.command('orchestrate')
|
|
200
|
+
.description('Generate orchestrator context and next-step decisions from artifacts')
|
|
201
|
+
.option('-w, --workspace <dir>', 'Workspace directory', './output')
|
|
202
|
+
.option('-i, --input <path>', 'Input docs path used for pipeline', './docs')
|
|
203
|
+
.option('-t, --target <name>', 'Execution target: cursor, qcoder, codebuddy, generic', 'cursor')
|
|
204
|
+
.option('-p, --max-parallel <count>', 'Max parallel tasks for execute suggestion', '4')
|
|
205
|
+
.option('--format <format>', 'Output format: text, json', 'text')
|
|
206
|
+
.option('--dry-run', 'Preview decisions without writing orchestrator_context.json')
|
|
207
|
+
.action(orchestrate_1.orchestrateCommand);
|
|
208
|
+
program
|
|
209
|
+
.command('round')
|
|
210
|
+
.description('Run one orchestrated round (pipeline/handoff/execute decision)')
|
|
211
|
+
.option('-w, --workspace <dir>', 'Workspace directory', './output')
|
|
212
|
+
.option('-i, --input <path>', 'Input docs path used for pipeline', './docs')
|
|
213
|
+
.option('-t, --target <name>', 'Execution target: cursor, qcoder, codebuddy, generic', 'cursor')
|
|
214
|
+
.option('-p, --max-parallel <count>', 'Max parallel tasks for execute', '4')
|
|
215
|
+
.option('-r, --retry <count>', 'Retry times per task after failure', '1')
|
|
216
|
+
.option('--complete <ids>', 'Mark task IDs as completed, comma-separated')
|
|
217
|
+
.option('--fail <ids>', 'Mark task IDs as failed, comma-separated')
|
|
218
|
+
.option('--error <message>', 'Failure reason when using --fail')
|
|
219
|
+
.option('--dry-run', 'Preview one-round decision without running commands')
|
|
220
|
+
.action(round_1.roundCommand);
|
|
196
221
|
program.parse();
|
|
197
222
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AAEpC,uCAAyB;AACzB,2CAA6B;AAC7B,0CAA8C;AAC9C,gDAAoD;AACpD,4CAAgD;AAChD,0CAA8C;AAC9C,kDAAsD;AACtD,4CAAgD;AAChD,kDAAsD;AACtD,8CAAkD;AAClD,4CAAgD;AAChD,8CAAkD;AAClD,gDAAoD;AACpD,gDAAoD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|