copilot-flow 1.4.0 → 2.0.0
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/README.md +80 -1
- package/dist/commands/exec.d.ts +3 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +173 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/index.js +4 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/plan.d.ts +3 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +133 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/types.d.ts +24 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -86,6 +86,13 @@ copilot-flow agent spawn --type coder --task "..." \
|
|
|
86
86
|
# Disable retries entirely
|
|
87
87
|
copilot-flow agent spawn --type coder --task "..." --no-retry
|
|
88
88
|
|
|
89
|
+
# Override session timeout (default: 120 s — increase for large/complex tasks)
|
|
90
|
+
copilot-flow agent spawn --task "..." --timeout 300000 # 5 minutes
|
|
91
|
+
copilot-flow swarm start --spec big-task.md --timeout 600000 # 10 minutes
|
|
92
|
+
|
|
93
|
+
# Verbose mode: see session lifecycle, model, prompt size, and retry events
|
|
94
|
+
copilot-flow agent spawn --task "..." --verbose
|
|
95
|
+
|
|
89
96
|
# List agent states
|
|
90
97
|
copilot-flow agent list
|
|
91
98
|
copilot-flow agent types
|
|
@@ -120,6 +127,75 @@ copilot-flow swarm init --topology hierarchical --max-agents 8
|
|
|
120
127
|
copilot-flow swarm status
|
|
121
128
|
```
|
|
122
129
|
|
|
130
|
+
### `plan` / `exec` — phased pipelines
|
|
131
|
+
|
|
132
|
+
For multi-phase projects where one swarm feeds into the next, use `plan` to generate
|
|
133
|
+
a structured YAML plan from a spec, then `exec` to run it.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# 1. Generate a phases.yaml from a spec file
|
|
137
|
+
copilot-flow plan spec.md # writes phases.yaml
|
|
138
|
+
copilot-flow plan spec.md -f my-plan.yaml # custom output file
|
|
139
|
+
|
|
140
|
+
# 2. Execute all phases in order
|
|
141
|
+
copilot-flow exec phases.yaml
|
|
142
|
+
|
|
143
|
+
# 3. Execute a single phase (deps must already have output files on disk)
|
|
144
|
+
copilot-flow exec phases.yaml --phase implement
|
|
145
|
+
|
|
146
|
+
# 4. Re-run a phase even if its output file exists
|
|
147
|
+
copilot-flow exec phases.yaml --phase implement --force
|
|
148
|
+
|
|
149
|
+
# 5. Stream output as it arrives
|
|
150
|
+
copilot-flow exec phases.yaml --stream
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**How it works:**
|
|
154
|
+
|
|
155
|
+
1. `plan` runs an `analyst` agent against your spec and produces a `phases.yaml` file.
|
|
156
|
+
2. `exec` reads the plan, resolves execution order, and runs each phase:
|
|
157
|
+
- **`type: agent`** — single specialist agent
|
|
158
|
+
- **`type: swarm`** — multi-agent pipeline with a configurable topology
|
|
159
|
+
3. Each phase writes its output to `phase-{id}.md` (or a custom filename set in the YAML).
|
|
160
|
+
4. Each phase's prompt automatically includes the original spec **and** the output files of all its dependencies — so context flows through the pipeline automatically.
|
|
161
|
+
5. If a phase output file already exists, `exec` skips it and moves on. Use `--force` to re-run.
|
|
162
|
+
|
|
163
|
+
**`phases.yaml` format:**
|
|
164
|
+
|
|
165
|
+
```yaml
|
|
166
|
+
version: "1"
|
|
167
|
+
spec: spec.md # injected into every phase prompt
|
|
168
|
+
phases:
|
|
169
|
+
- id: research
|
|
170
|
+
description: Investigate the problem domain and gather context.
|
|
171
|
+
type: agent
|
|
172
|
+
agentType: researcher
|
|
173
|
+
dependsOn: []
|
|
174
|
+
|
|
175
|
+
- id: design
|
|
176
|
+
description: Design the solution architecture based on the research.
|
|
177
|
+
type: swarm
|
|
178
|
+
topology: hierarchical
|
|
179
|
+
agents: [architect, analyst]
|
|
180
|
+
dependsOn: [research]
|
|
181
|
+
|
|
182
|
+
- id: implement
|
|
183
|
+
description: Implement the designed solution.
|
|
184
|
+
type: swarm
|
|
185
|
+
topology: hierarchical
|
|
186
|
+
agents: [coder, coder, tester]
|
|
187
|
+
dependsOn: [design]
|
|
188
|
+
|
|
189
|
+
- id: review
|
|
190
|
+
description: Review the implementation for quality and correctness.
|
|
191
|
+
type: agent
|
|
192
|
+
agentType: reviewer
|
|
193
|
+
output: final-review.md # optional: override the default phase-{id}.md name
|
|
194
|
+
dependsOn: [implement]
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
123
199
|
### `memory`
|
|
124
200
|
|
|
125
201
|
```bash
|
|
@@ -350,6 +426,7 @@ const result2 = await withRetry(
|
|
|
350
426
|
{
|
|
351
427
|
"version": "1.0.0",
|
|
352
428
|
"defaultModel": "gpt-4o",
|
|
429
|
+
"defaultTimeoutMs": 120000,
|
|
353
430
|
"swarm": {
|
|
354
431
|
"topology": "hierarchical",
|
|
355
432
|
"maxAgents": 8
|
|
@@ -375,8 +452,10 @@ const result2 = await withRetry(
|
|
|
375
452
|
|
|
376
453
|
Environment variable overrides:
|
|
377
454
|
```bash
|
|
378
|
-
GITHUB_TOKEN=ghp_...
|
|
455
|
+
GITHUB_TOKEN=ghp_... # GitHub token (bypasses keychain on managed Macs)
|
|
456
|
+
GH_TOKEN=$(gh auth token) # Alternative: reuse the GitHub CLI token
|
|
379
457
|
COPILOT_FLOW_DEFAULT_MODEL=gpt-4o
|
|
458
|
+
COPILOT_FLOW_TIMEOUT_MS=300000 # Default session timeout in ms (default: 120000)
|
|
380
459
|
COPILOT_FLOW_MAX_RETRIES=3
|
|
381
460
|
COPILOT_FLOW_RETRY_DELAY_MS=1000
|
|
382
461
|
COPILOT_FLOW_LOG_LEVEL=info # debug | info | warn | error | silent
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0EpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8HnD"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerExec = registerExec;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
9
|
+
const executor_js_1 = require("../agents/executor.js");
|
|
10
|
+
const coordinator_js_1 = require("../swarm/coordinator.js");
|
|
11
|
+
const output_js_1 = require("../output.js");
|
|
12
|
+
const config_js_1 = require("../config.js");
|
|
13
|
+
const client_manager_js_1 = require("../core/client-manager.js");
|
|
14
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
15
|
+
function phaseOutputFile(phase) {
|
|
16
|
+
return phase.output ?? `phase-${phase.id}.md`;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Topological sort: returns phases in a valid execution order
|
|
20
|
+
* where every dependency appears before the phase that needs it.
|
|
21
|
+
*/
|
|
22
|
+
function topoSort(phases) {
|
|
23
|
+
const byId = new Map(phases.map(p => [p.id, p]));
|
|
24
|
+
const result = [];
|
|
25
|
+
const visited = new Set();
|
|
26
|
+
function visit(id) {
|
|
27
|
+
if (visited.has(id))
|
|
28
|
+
return;
|
|
29
|
+
visited.add(id);
|
|
30
|
+
const phase = byId.get(id);
|
|
31
|
+
if (!phase)
|
|
32
|
+
throw new Error(`Unknown phase id in dependsOn: "${id}"`);
|
|
33
|
+
for (const dep of phase.dependsOn ?? [])
|
|
34
|
+
visit(dep);
|
|
35
|
+
result.push(phase);
|
|
36
|
+
}
|
|
37
|
+
for (const phase of phases)
|
|
38
|
+
visit(phase.id);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Build the prompt for a phase: original spec + outputs from all dependencies
|
|
43
|
+
* (read from the in-memory results map first, then fall back to disk).
|
|
44
|
+
*/
|
|
45
|
+
function buildPhasePrompt(phase, plan, phaseResults) {
|
|
46
|
+
const sections = [];
|
|
47
|
+
if (plan.spec && (0, fs_1.existsSync)(plan.spec)) {
|
|
48
|
+
sections.push(`## Original specification (${plan.spec})\n\n${(0, fs_1.readFileSync)(plan.spec, 'utf-8').trim()}`);
|
|
49
|
+
}
|
|
50
|
+
for (const depId of phase.dependsOn ?? []) {
|
|
51
|
+
const depPhase = plan.phases.find(p => p.id === depId);
|
|
52
|
+
if (!depPhase)
|
|
53
|
+
continue;
|
|
54
|
+
const content = phaseResults.get(depId) ??
|
|
55
|
+
((0, fs_1.existsSync)(phaseOutputFile(depPhase))
|
|
56
|
+
? (0, fs_1.readFileSync)(phaseOutputFile(depPhase), 'utf-8').trim()
|
|
57
|
+
: null);
|
|
58
|
+
if (content) {
|
|
59
|
+
sections.push(`## Output from phase "${depId}"\n\n${content}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
sections.push(`## Your task — phase "${phase.id}"\n\n${phase.description}`);
|
|
63
|
+
return sections.join('\n\n---\n\n');
|
|
64
|
+
}
|
|
65
|
+
// ─── Command ──────────────────────────────────────────────────────────────────
|
|
66
|
+
function registerExec(program) {
|
|
67
|
+
program
|
|
68
|
+
.command('exec <plan>')
|
|
69
|
+
.description('Execute a phased plan — all phases or a single one')
|
|
70
|
+
.option('--phase <id>', 'Run only this phase (dependency output files must exist on disk)')
|
|
71
|
+
.option('--force', 'Re-run phases even if their output file already exists')
|
|
72
|
+
.option('--timeout <ms>', 'Session timeout per agent in ms (overrides config)')
|
|
73
|
+
.option('--stream', 'Stream agent output as it arrives')
|
|
74
|
+
.action(async (planFile, opts) => {
|
|
75
|
+
if (!(0, fs_1.existsSync)(planFile)) {
|
|
76
|
+
output_js_1.output.error(`Plan file not found: ${planFile}`);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
let plan;
|
|
80
|
+
try {
|
|
81
|
+
plan = js_yaml_1.default.load((0, fs_1.readFileSync)(planFile, 'utf-8'));
|
|
82
|
+
if (!Array.isArray(plan?.phases) || plan.phases.length === 0) {
|
|
83
|
+
throw new Error('No phases found');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
output_js_1.output.error(`Invalid plan file: ${err instanceof Error ? err.message : String(err)}`);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
const config = (0, config_js_1.loadConfig)();
|
|
91
|
+
const timeoutMs = opts.timeout ? parseInt(opts.timeout, 10) : config.defaultTimeoutMs;
|
|
92
|
+
const phaseResults = new Map();
|
|
93
|
+
// Determine which phases to run
|
|
94
|
+
let phasesToRun;
|
|
95
|
+
if (opts.phase) {
|
|
96
|
+
const target = plan.phases.find(p => p.id === opts.phase);
|
|
97
|
+
if (!target) {
|
|
98
|
+
output_js_1.output.error(`Phase not found: "${opts.phase}". Available: ${plan.phases.map(p => p.id).join(', ')}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
phasesToRun = [target];
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
phasesToRun = topoSort(plan.phases);
|
|
105
|
+
}
|
|
106
|
+
output_js_1.output.header(`Executing plan: ${planFile}`);
|
|
107
|
+
output_js_1.output.dim(`Phases: ${phasesToRun.map(p => p.id).join(' → ')}`);
|
|
108
|
+
output_js_1.output.blank();
|
|
109
|
+
for (const phase of phasesToRun) {
|
|
110
|
+
const outFile = phaseOutputFile(phase);
|
|
111
|
+
output_js_1.output.header(`Phase: ${phase.id}`);
|
|
112
|
+
output_js_1.output.dim(phase.description);
|
|
113
|
+
// Skip already-complete phases unless --force
|
|
114
|
+
if (!opts.force && (0, fs_1.existsSync)(outFile)) {
|
|
115
|
+
const existing = (0, fs_1.readFileSync)(outFile, 'utf-8').trim();
|
|
116
|
+
phaseResults.set(phase.id, existing);
|
|
117
|
+
output_js_1.output.dim(` Already complete — skipping (${outFile}). Use --force to re-run.`);
|
|
118
|
+
output_js_1.output.blank();
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const prompt = buildPhasePrompt(phase, plan, phaseResults);
|
|
122
|
+
let phaseOutput;
|
|
123
|
+
if (phase.type === 'swarm') {
|
|
124
|
+
const topology = phase.topology ?? 'hierarchical';
|
|
125
|
+
const agentTypes = phase.agents ?? ['researcher', 'coder', 'reviewer'];
|
|
126
|
+
output_js_1.output.info(`Swarm (${topology}): ${agentTypes.map(a => (0, output_js_1.agentBadge)(a)).join(' → ')}`);
|
|
127
|
+
const tasks = agentTypes.map((agentType, i) => ({
|
|
128
|
+
id: `${phase.id}-task-${i + 1}`,
|
|
129
|
+
agentType,
|
|
130
|
+
prompt,
|
|
131
|
+
dependsOn: i > 0 ? [`${phase.id}-task-${i}`] : undefined,
|
|
132
|
+
sessionOptions: { timeoutMs },
|
|
133
|
+
}));
|
|
134
|
+
const results = await (0, coordinator_js_1.runSwarm)(tasks, topology, {
|
|
135
|
+
onProgress: opts.stream
|
|
136
|
+
? (_taskId, agentType, chunk) => process.stdout.write(`${(0, output_js_1.agentBadge)(agentType)} ${chunk}`)
|
|
137
|
+
: undefined,
|
|
138
|
+
});
|
|
139
|
+
const last = results.get(tasks[tasks.length - 1].id);
|
|
140
|
+
if (!last?.success) {
|
|
141
|
+
output_js_1.output.error(`Phase "${phase.id}" failed: ${last?.error ?? 'unknown error'}`);
|
|
142
|
+
await client_manager_js_1.clientManager.shutdown();
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
phaseOutput = last.output;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const agentType = phase.agentType ?? 'analyst';
|
|
149
|
+
output_js_1.output.info(`Agent: ${(0, output_js_1.agentBadge)(agentType)}`);
|
|
150
|
+
const result = await (0, executor_js_1.runAgentTask)(agentType, prompt, {
|
|
151
|
+
timeoutMs,
|
|
152
|
+
onChunk: opts.stream ? chunk => process.stdout.write(chunk) : undefined,
|
|
153
|
+
});
|
|
154
|
+
if (!result.success) {
|
|
155
|
+
output_js_1.output.error(`Phase "${phase.id}" failed: ${result.error}`);
|
|
156
|
+
await client_manager_js_1.clientManager.shutdown();
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
phaseOutput = result.output;
|
|
160
|
+
}
|
|
161
|
+
(0, fs_1.writeFileSync)(outFile, `# Phase: ${phase.id}\n\n${phaseOutput}\n`, 'utf-8');
|
|
162
|
+
phaseResults.set(phase.id, phaseOutput);
|
|
163
|
+
if (opts.stream)
|
|
164
|
+
output_js_1.output.blank();
|
|
165
|
+
output_js_1.output.success(`Phase "${phase.id}" complete → ${outFile}`);
|
|
166
|
+
output_js_1.output.blank();
|
|
167
|
+
}
|
|
168
|
+
output_js_1.output.success('All phases complete.');
|
|
169
|
+
await client_manager_js_1.clientManager.shutdown();
|
|
170
|
+
process.exit(0);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.js
CHANGED
|
@@ -12,6 +12,8 @@ const hooks_js_1 = require("./hooks.js");
|
|
|
12
12
|
const route_js_1 = require("./route.js");
|
|
13
13
|
const status_js_1 = require("./status.js");
|
|
14
14
|
const doctor_js_1 = require("./doctor.js");
|
|
15
|
+
const plan_js_1 = require("./plan.js");
|
|
16
|
+
const exec_js_1 = require("./exec.js");
|
|
15
17
|
const program = new commander_1.Command();
|
|
16
18
|
program
|
|
17
19
|
.name('copilot-flow')
|
|
@@ -27,5 +29,7 @@ program
|
|
|
27
29
|
(0, route_js_1.registerRoute)(program);
|
|
28
30
|
(0, status_js_1.registerStatus)(program);
|
|
29
31
|
(0, doctor_js_1.registerDoctor)(program);
|
|
32
|
+
(0, plan_js_1.registerPlan)(program);
|
|
33
|
+
(0, exec_js_1.registerExec)(program);
|
|
30
34
|
program.parse(process.argv);
|
|
31
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,yCAAoC;AACpC,uCAAyC;AACzC,yCAA2C;AAC3C,yCAA2C;AAC3C,2CAA6C;AAC7C,yCAA2C;AAC3C,yCAA2C;AAC3C,2CAA6C;AAC7C,2CAA6C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,yCAAoC;AACpC,uCAAyC;AACzC,yCAA2C;AAC3C,yCAA2C;AAC3C,2CAA6C;AAC7C,yCAA2C;AAC3C,yCAA2C;AAC3C,2CAA6C;AAC7C,2CAA6C;AAC7C,uCAAyC;AACzC,uCAAyC;AAEzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CACV,8DAA8D;IAC9D,yEAAyE,CAC1E;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,wBAAwB;AACxB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;AACvB,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;AACvB,IAAA,0BAAc,EAAC,OAAO,CAAC,CAAC;AACxB,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;AACvB,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;AACvB,IAAA,0BAAc,EAAC,OAAO,CAAC,CAAC;AACxB,IAAA,0BAAc,EAAC,OAAO,CAAC,CAAC;AACxB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AAEtB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8DpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6EnD"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerPlan = registerPlan;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
9
|
+
const executor_js_1 = require("../agents/executor.js");
|
|
10
|
+
const output_js_1 = require("../output.js");
|
|
11
|
+
const config_js_1 = require("../config.js");
|
|
12
|
+
const client_manager_js_1 = require("../core/client-manager.js");
|
|
13
|
+
const AGENT_TYPES = [
|
|
14
|
+
'coder', 'researcher', 'tester', 'reviewer', 'architect',
|
|
15
|
+
'coordinator', 'analyst', 'debugger', 'documenter', 'optimizer',
|
|
16
|
+
'security-auditor', 'performance-engineer',
|
|
17
|
+
].join(', ');
|
|
18
|
+
function buildPlannerPrompt(specContent) {
|
|
19
|
+
return `You are a software project planner for an AI agent pipeline. \
|
|
20
|
+
Analyse the following specification and produce a YAML execution plan \
|
|
21
|
+
that breaks the work into sequential phases.
|
|
22
|
+
|
|
23
|
+
Rules:
|
|
24
|
+
- Each phase must have a unique kebab-case id.
|
|
25
|
+
- type must be "agent" (single specialist) or "swarm" (multi-agent pipeline).
|
|
26
|
+
- agentType (type: agent) must be one of: ${AGENT_TYPES}
|
|
27
|
+
- topology (type: swarm) must be one of: hierarchical, sequential, mesh
|
|
28
|
+
- agents (type: swarm) is a list of agentType values forming the pipeline.
|
|
29
|
+
- dependsOn lists phase ids that must complete before this phase starts.
|
|
30
|
+
- The first phase must have an empty dependsOn list.
|
|
31
|
+
- output is optional — if omitted the file will be named phase-{id}.md.
|
|
32
|
+
- Output ONLY valid YAML inside a single \`\`\`yaml code block. No other text.
|
|
33
|
+
|
|
34
|
+
Example structure:
|
|
35
|
+
\`\`\`yaml
|
|
36
|
+
version: "1"
|
|
37
|
+
phases:
|
|
38
|
+
- id: research
|
|
39
|
+
description: Investigate the problem domain and gather requirements.
|
|
40
|
+
type: agent
|
|
41
|
+
agentType: researcher
|
|
42
|
+
dependsOn: []
|
|
43
|
+
- id: design
|
|
44
|
+
description: Design the solution architecture based on research.
|
|
45
|
+
type: swarm
|
|
46
|
+
topology: hierarchical
|
|
47
|
+
agents: [architect, analyst]
|
|
48
|
+
dependsOn: [research]
|
|
49
|
+
- id: implement
|
|
50
|
+
description: Implement the designed solution.
|
|
51
|
+
type: swarm
|
|
52
|
+
topology: hierarchical
|
|
53
|
+
agents: [coder, coder, tester]
|
|
54
|
+
dependsOn: [design]
|
|
55
|
+
- id: review
|
|
56
|
+
description: Review the implementation for quality and correctness.
|
|
57
|
+
type: agent
|
|
58
|
+
agentType: reviewer
|
|
59
|
+
dependsOn: [implement]
|
|
60
|
+
\`\`\`
|
|
61
|
+
|
|
62
|
+
Specification to plan:
|
|
63
|
+
${specContent}`;
|
|
64
|
+
}
|
|
65
|
+
function registerPlan(program) {
|
|
66
|
+
program
|
|
67
|
+
.command('plan <spec>')
|
|
68
|
+
.description('Analyse a spec file and generate a phased execution plan (YAML)')
|
|
69
|
+
.option('-f, --file <path>', 'Output path for the plan file', 'phases.yaml')
|
|
70
|
+
.option('--model <model>', 'Model override')
|
|
71
|
+
.action(async (spec, opts) => {
|
|
72
|
+
if (!(0, fs_1.existsSync)(spec)) {
|
|
73
|
+
output_js_1.output.error(`Spec file not found: ${spec}`);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
const specContent = (0, fs_1.readFileSync)(spec, 'utf-8').trim();
|
|
77
|
+
const config = (0, config_js_1.loadConfig)();
|
|
78
|
+
output_js_1.output.info(`Analysing spec: ${spec}`);
|
|
79
|
+
output_js_1.output.info(`Generating plan → ${opts.file}`);
|
|
80
|
+
output_js_1.output.blank();
|
|
81
|
+
const result = await (0, executor_js_1.runAgentTask)('analyst', buildPlannerPrompt(specContent), {
|
|
82
|
+
model: opts.model ?? config.defaultModel,
|
|
83
|
+
timeoutMs: config.defaultTimeoutMs,
|
|
84
|
+
});
|
|
85
|
+
if (!result.success) {
|
|
86
|
+
output_js_1.output.error(`Planning failed: ${result.error}`);
|
|
87
|
+
await client_manager_js_1.clientManager.shutdown();
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
// Extract YAML from a ```yaml code block, or treat the whole response as YAML
|
|
91
|
+
const match = result.output.match(/```ya?ml\s*\n([\s\S]*?)```/);
|
|
92
|
+
const rawYaml = match ? match[1].trim() : result.output.trim();
|
|
93
|
+
let plan;
|
|
94
|
+
try {
|
|
95
|
+
plan = js_yaml_1.default.load(rawYaml);
|
|
96
|
+
if (!Array.isArray(plan?.phases) || plan.phases.length === 0) {
|
|
97
|
+
throw new Error('No phases found in the generated plan');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
output_js_1.output.error(`Generated YAML is invalid: ${err instanceof Error ? err.message : String(err)}`);
|
|
102
|
+
output_js_1.output.dim('Raw model output:');
|
|
103
|
+
output_js_1.output.dim(result.output.slice(0, 600));
|
|
104
|
+
await client_manager_js_1.clientManager.shutdown();
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
// Stamp in the spec path and version before saving
|
|
108
|
+
plan.spec = spec;
|
|
109
|
+
plan.version = plan.version ?? '1';
|
|
110
|
+
// Normalise optional fields
|
|
111
|
+
for (const phase of plan.phases) {
|
|
112
|
+
phase.dependsOn = phase.dependsOn ?? [];
|
|
113
|
+
if (phase.type === 'swarm') {
|
|
114
|
+
phase.topology = phase.topology ?? 'hierarchical';
|
|
115
|
+
phase.agents = phase.agents ?? ['researcher', 'coder', 'reviewer'];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
(0, fs_1.writeFileSync)(opts.file, js_yaml_1.default.dump(plan, { lineWidth: 100 }), 'utf-8');
|
|
119
|
+
output_js_1.output.success(`Plan written to ${opts.file}`);
|
|
120
|
+
output_js_1.output.blank();
|
|
121
|
+
output_js_1.output.print(` ${plan.phases.length} phase(s):`);
|
|
122
|
+
for (const phase of plan.phases) {
|
|
123
|
+
const typeLabel = phase.type === 'swarm'
|
|
124
|
+
? `swarm/${phase.topology} [${(phase.agents ?? []).join(', ')}]`
|
|
125
|
+
: `agent/${phase.agentType}`;
|
|
126
|
+
const deps = phase.dependsOn?.length ? ` (after: ${phase.dependsOn.join(', ')})` : '';
|
|
127
|
+
output_js_1.output.print(` ${phase.id.padEnd(22)} ${typeLabel}${deps}`);
|
|
128
|
+
}
|
|
129
|
+
await client_manager_js_1.clientManager.shutdown();
|
|
130
|
+
process.exit(0);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -129,6 +129,30 @@ export interface CopilotFlowConfig {
|
|
|
129
129
|
directories: string[];
|
|
130
130
|
};
|
|
131
131
|
}
|
|
132
|
+
export interface PlanPhase {
|
|
133
|
+
/** Unique kebab-case identifier used for output filename and dependsOn references. */
|
|
134
|
+
id: string;
|
|
135
|
+
/** Human-readable description of what this phase should accomplish. */
|
|
136
|
+
description: string;
|
|
137
|
+
/** 'agent' runs a single specialist; 'swarm' runs a multi-agent pipeline. */
|
|
138
|
+
type: 'agent' | 'swarm';
|
|
139
|
+
/** Agent type (required when type is 'agent'). */
|
|
140
|
+
agentType?: AgentType;
|
|
141
|
+
/** Swarm topology (used when type is 'swarm'). Default: 'hierarchical'. */
|
|
142
|
+
topology?: SwarmTopology;
|
|
143
|
+
/** Agent types in the swarm pipeline (used when type is 'swarm'). */
|
|
144
|
+
agents?: AgentType[];
|
|
145
|
+
/** Output filename. Defaults to phase-{id}.md. */
|
|
146
|
+
output?: string;
|
|
147
|
+
/** IDs of phases that must complete before this one. */
|
|
148
|
+
dependsOn?: string[];
|
|
149
|
+
}
|
|
150
|
+
export interface Plan {
|
|
151
|
+
version: string;
|
|
152
|
+
/** Path to the original spec file — injected into every phase prompt. */
|
|
153
|
+
spec: string;
|
|
154
|
+
phases: PlanPhase[];
|
|
155
|
+
}
|
|
132
156
|
export interface CommandContext {
|
|
133
157
|
args: string[];
|
|
134
158
|
flags: Record<string, unknown>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "copilot-flow",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Multi-agent orchestration framework for GitHub Copilot CLI — inspired by Ruflo (claude-flow)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -37,9 +37,11 @@
|
|
|
37
37
|
"commander": "^12.1.0",
|
|
38
38
|
"dotenv": "^16.4.5",
|
|
39
39
|
"gray-matter": "^4.0.3",
|
|
40
|
+
"js-yaml": "^4.1.1",
|
|
40
41
|
"ora": "^8.1.1"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
44
|
+
"@types/js-yaml": "^4.0.9",
|
|
43
45
|
"@types/node": "^22.0.0",
|
|
44
46
|
"ts-node": "^10.9.2",
|
|
45
47
|
"typescript": "^5.5.4",
|