@copilot-swarm/core 0.0.50 → 0.0.52
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/config.d.ts.map +1 -1
- package/dist/config.js +4 -24
- package/dist/config.js.map +1 -1
- package/package.json +5 -3
- package/scripts/demo-fleet.ts +283 -0
- package/scripts/demo-intro.ts +23 -0
- package/scripts/demo-tui.ts +251 -0
- package/scripts/postinstall.js +26 -0
- package/scripts/test-textarea.ts +64 -0
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA6CxD,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,GACT,YAAY,GACZ,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAyBjC,wBAAgB,WAAW,IAAI,MAAM,CAKpC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA6CxD,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,GACT,YAAY,GACZ,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAyBjC,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AAsPD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,gDAAgD;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CAgHvD"}
|
package/dist/config.js
CHANGED
|
@@ -253,7 +253,6 @@ function parseCliArgs() {
|
|
|
253
253
|
preparePath,
|
|
254
254
|
};
|
|
255
255
|
}
|
|
256
|
-
/** Extract the "Refined Requirements" section (and optional Engineering/Design Decisions) from a plan file. */
|
|
257
256
|
function readPlanFile(filePath) {
|
|
258
257
|
const root = detectRepoRoot() ?? process.cwd();
|
|
259
258
|
const resolved = path.isAbsolute(filePath) ? filePath : path.join(root, filePath);
|
|
@@ -261,31 +260,12 @@ function readPlanFile(filePath) {
|
|
|
261
260
|
console.error(`Error: Plan file not found: ${resolved}`);
|
|
262
261
|
process.exit(1);
|
|
263
262
|
}
|
|
264
|
-
const content = fs.readFileSync(resolved, "utf-8");
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
if (start === -1) {
|
|
268
|
-
console.error(`Error: Plan file does not contain a "${marker}" section: ${resolved}`);
|
|
263
|
+
const content = fs.readFileSync(resolved, "utf-8").trim();
|
|
264
|
+
if (!content) {
|
|
265
|
+
console.error(`Error: Plan file is empty: ${resolved}`);
|
|
269
266
|
process.exit(1);
|
|
270
267
|
}
|
|
271
|
-
|
|
272
|
-
// Extract Refined Requirements
|
|
273
|
-
const afterMarker = content.substring(start + marker.length);
|
|
274
|
-
const nextHeading = afterMarker.indexOf("\n## ");
|
|
275
|
-
sections.push((nextHeading !== -1 ? afterMarker.substring(0, nextHeading) : afterMarker).trim());
|
|
276
|
-
// Also include Engineering Decisions and Design Decisions if present
|
|
277
|
-
for (const section of ["## Engineering Decisions", "## Design Decisions"]) {
|
|
278
|
-
const sStart = content.indexOf(section);
|
|
279
|
-
if (sStart !== -1) {
|
|
280
|
-
const afterSection = content.substring(sStart + section.length);
|
|
281
|
-
const sNext = afterSection.indexOf("\n## ");
|
|
282
|
-
const body = (sNext !== -1 ? afterSection.substring(0, sNext) : afterSection).trim();
|
|
283
|
-
if (body) {
|
|
284
|
-
sections.push(`${section.replace("## ", "### ")}\n\n${body}`);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
return sections.join("\n\n");
|
|
268
|
+
return content;
|
|
289
269
|
}
|
|
290
270
|
/** Read the entire contents of a file as the prompt. */
|
|
291
271
|
function readPromptFile(filePath) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@copilot-swarm/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.52",
|
|
4
4
|
"description": "Multi-agent orchestrator for GitHub Copilot — coordinates PM, designer, engineer, reviewer, and tester agents through a declarative pipeline",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
-
"defaults"
|
|
12
|
+
"defaults",
|
|
13
|
+
"scripts"
|
|
13
14
|
],
|
|
14
15
|
"publishConfig": {
|
|
15
16
|
"access": "public"
|
|
@@ -39,6 +40,7 @@
|
|
|
39
40
|
"build": "tsc",
|
|
40
41
|
"typecheck": "tsc --noEmit",
|
|
41
42
|
"check": "biome check src/",
|
|
42
|
-
"test": "vitest run"
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"postinstall": "node scripts/postinstall.js"
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Mock Fleet TUI demo — simulates a multi-repo fleet pipeline run
|
|
4
|
+
* without connecting to any AI backend.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx tsx apps/core/scripts/demo-fleet.ts # full fleet simulation
|
|
8
|
+
* npx tsx apps/core/scripts/demo-fleet.ts --fast # 2× speed
|
|
9
|
+
* npx tsx apps/core/scripts/demo-fleet.ts --stats-only # just print stats
|
|
10
|
+
*
|
|
11
|
+
* Or from the repo root:
|
|
12
|
+
* pnpm demo:fleet
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import * as crypto from "node:crypto";
|
|
16
|
+
import { ProgressTracker } from "../src/progress-tracker.js";
|
|
17
|
+
import { formatStats, loadStats, recordAgentInvocation, recordRunStart } from "../src/stats.js";
|
|
18
|
+
import { TuiRenderer } from "../src/tui-renderer.js";
|
|
19
|
+
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Helpers
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
const sleep = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));
|
|
25
|
+
const sid = () => crypto.randomUUID();
|
|
26
|
+
|
|
27
|
+
const fast = process.argv.includes("--fast");
|
|
28
|
+
const statsOnly = process.argv.includes("--stats-only");
|
|
29
|
+
const SPEED = fast ? 0.5 : 1;
|
|
30
|
+
|
|
31
|
+
const dur = (ms: number) => ms * SPEED;
|
|
32
|
+
|
|
33
|
+
const mockConfig = {
|
|
34
|
+
repoRoot: process.cwd(),
|
|
35
|
+
swarmDir: ".swarm",
|
|
36
|
+
} as import("../src/config.js").SwarmConfig;
|
|
37
|
+
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Stats-only mode
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
if (statsOnly) {
|
|
43
|
+
const stats = await loadStats(mockConfig);
|
|
44
|
+
console.log(formatStats(stats));
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// Fleet repos
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
|
|
52
|
+
const REPOS = [
|
|
53
|
+
{ name: "acme-corp/api-gateway-service", role: "API Gateway (Node.js)" },
|
|
54
|
+
{ name: "acme-corp/user-authentication-service", role: "User microservice (Go)" },
|
|
55
|
+
{ name: "acme-corp/billing-and-payments-service", role: "Billing microservice (Python)" },
|
|
56
|
+
{ name: "acme-corp/web-dashboard-frontend", role: "React frontend" },
|
|
57
|
+
{ name: "acme-corp/shared-typescript-definitions", role: "Shared TypeScript types" },
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
const MODELS = {
|
|
61
|
+
primary: "claude-sonnet-4",
|
|
62
|
+
review: "gpt-4.1",
|
|
63
|
+
fast: "claude-haiku-4.5",
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Fleet phases mirror fleet-engine.ts
|
|
67
|
+
const FLEET_PHASES = [
|
|
68
|
+
{ phase: "fleet-analyze" },
|
|
69
|
+
{ phase: "fleet-strategize" },
|
|
70
|
+
{ phase: "fleet-wave-1" },
|
|
71
|
+
{ phase: "fleet-wave-2" },
|
|
72
|
+
{ phase: "fleet-cross-review" },
|
|
73
|
+
{ phase: "fleet-summary" },
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
// Add fleet phase names to tracker's display
|
|
77
|
+
const FLEET_PHASE_NAMES: Record<string, string> = {
|
|
78
|
+
"fleet-analyze": "Analyze Repositories",
|
|
79
|
+
"fleet-strategize": "Cross-Repo Dependency Strategy",
|
|
80
|
+
"fleet-wave-1": "Wave 1 — Foundation Services & Shared Types",
|
|
81
|
+
"fleet-wave-2": "Wave 2 — Consumer Applications",
|
|
82
|
+
"fleet-cross-review": "Cross-Repository Consistency Review",
|
|
83
|
+
"fleet-summary": "Summary & Documentation",
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// Simulation
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
|
|
90
|
+
const tracker = new ProgressTracker();
|
|
91
|
+
tracker.runId = "fleet-demo-mock";
|
|
92
|
+
tracker.primaryModel = MODELS.primary;
|
|
93
|
+
tracker.reviewModel = MODELS.review;
|
|
94
|
+
tracker.version = "0.0.34-demo";
|
|
95
|
+
tracker.cwd = process.cwd();
|
|
96
|
+
|
|
97
|
+
// Inject fleet phase names
|
|
98
|
+
for (const [key, name] of Object.entries(FLEET_PHASE_NAMES)) {
|
|
99
|
+
// Patch phase names via initPhases override
|
|
100
|
+
(tracker as unknown as Record<string, unknown>)[`_fleetName_${key}`] = name;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const tui = new TuiRenderer(tracker);
|
|
104
|
+
|
|
105
|
+
/** Simulate an agent session. */
|
|
106
|
+
async function mockAgent(label: string, model: string, durationMs: number): Promise<void> {
|
|
107
|
+
const id = sid();
|
|
108
|
+
tracker.addActiveAgent(id, label, model);
|
|
109
|
+
tracker.addLog(`${label} started (${model})`);
|
|
110
|
+
await sleep(durationMs);
|
|
111
|
+
tracker.removeActiveAgent(id);
|
|
112
|
+
tracker.addLog(`${label} finished`);
|
|
113
|
+
await recordAgentInvocation(mockConfig, label, model, durationMs);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async function run() {
|
|
117
|
+
// Init phases with fleet-specific names
|
|
118
|
+
tracker.phases = FLEET_PHASES.map((p, i) => ({
|
|
119
|
+
key: `${p.phase}-${i}`,
|
|
120
|
+
name: FLEET_PHASE_NAMES[p.phase] ?? p.phase,
|
|
121
|
+
status: "pending" as const,
|
|
122
|
+
}));
|
|
123
|
+
|
|
124
|
+
tui.start();
|
|
125
|
+
await recordRunStart(mockConfig);
|
|
126
|
+
|
|
127
|
+
// ── Phase 1: Analyze all repos in parallel ──
|
|
128
|
+
const analyzeKey = "fleet-analyze-0";
|
|
129
|
+
tracker.activatePhase(analyzeKey);
|
|
130
|
+
tracker.setActiveAgent("analyzing repositories…");
|
|
131
|
+
tracker.addLog(`Analyzing ${REPOS.length} repositories in parallel`);
|
|
132
|
+
|
|
133
|
+
// Spawn parallel analysis agents — one per repo
|
|
134
|
+
const analyzeWork = REPOS.map(async (repo) => {
|
|
135
|
+
tracker.addLog(`📂 Analyzing ${repo.name}…`);
|
|
136
|
+
await mockAgent(`scout:${repo.name}`, MODELS.fast, dur(2000 + Math.random() * 2000));
|
|
137
|
+
tracker.addLog(`📂 ${repo.name} analysis complete`);
|
|
138
|
+
});
|
|
139
|
+
await Promise.all(analyzeWork);
|
|
140
|
+
|
|
141
|
+
tracker.setActiveAgent(null);
|
|
142
|
+
tracker.completePhase(analyzeKey);
|
|
143
|
+
tracker.addLog("All repo analyses complete");
|
|
144
|
+
|
|
145
|
+
// ── Phase 2: Strategize — single strategist agent ──
|
|
146
|
+
const stratKey = "fleet-strategize-1";
|
|
147
|
+
tracker.activatePhase(stratKey);
|
|
148
|
+
tracker.setActiveAgent("strategist planning cross-repo approach…");
|
|
149
|
+
tracker.addLog("Fleet strategist analyzing dependencies");
|
|
150
|
+
|
|
151
|
+
await mockAgent("fleet-strategist", MODELS.primary, dur(5000));
|
|
152
|
+
|
|
153
|
+
tracker.addLog("Strategy: 2 waves, shared API contract identified");
|
|
154
|
+
tracker.setActiveAgent(null);
|
|
155
|
+
tracker.completePhase(stratKey);
|
|
156
|
+
|
|
157
|
+
// ── Phase 3: Wave 1 — Foundation repos (shared-types, user-service, billing-service) ──
|
|
158
|
+
const wave1Key = "fleet-wave-1-2";
|
|
159
|
+
const wave1Repos = [REPOS[4], REPOS[1], REPOS[2]]; // shared-types, user-service, billing-service
|
|
160
|
+
tracker.activatePhase(wave1Key);
|
|
161
|
+
tracker.setActiveAgent(null);
|
|
162
|
+
tracker.addLog(`🌊 Wave 1: ${wave1Repos.map((r) => r.name).join(", ")}`);
|
|
163
|
+
|
|
164
|
+
// Show repos as streams
|
|
165
|
+
tracker.initStreams(wave1Repos.map((r) => `${r.name} — ${r.role}`));
|
|
166
|
+
|
|
167
|
+
const wave1Work = wave1Repos.map(async (repo, idx) => {
|
|
168
|
+
// Each repo goes through: PM → implement → review
|
|
169
|
+
tracker.updateStream(idx, "engineering");
|
|
170
|
+
tracker.addLog(`${repo.name}: PM drafting spec`);
|
|
171
|
+
await mockAgent(`pm:${repo.name}`, MODELS.primary, dur(2000 + Math.random() * 1000));
|
|
172
|
+
|
|
173
|
+
tracker.addLog(`${repo.name}: engineering`);
|
|
174
|
+
await mockAgent(`engineer:${repo.name}`, MODELS.primary, dur(4000 + Math.random() * 3000));
|
|
175
|
+
|
|
176
|
+
tracker.updateStream(idx, "reviewing");
|
|
177
|
+
tracker.addLog(`${repo.name}: code review`);
|
|
178
|
+
await mockAgent(`reviewer:${repo.name}`, MODELS.primary, dur(2000 + Math.random() * 1000));
|
|
179
|
+
|
|
180
|
+
tracker.updateStream(idx, "testing");
|
|
181
|
+
tracker.addLog(`${repo.name}: verification`);
|
|
182
|
+
await sleep(dur(1500 + Math.random() * 1000));
|
|
183
|
+
tracker.addLog(`${repo.name}: ✅ build/test passed`);
|
|
184
|
+
|
|
185
|
+
tracker.updateStream(idx, "done");
|
|
186
|
+
tracker.addLog(`${repo.name}: complete`);
|
|
187
|
+
});
|
|
188
|
+
await Promise.all(wave1Work);
|
|
189
|
+
|
|
190
|
+
tracker.completePhase(wave1Key);
|
|
191
|
+
tracker.addLog("Wave 1 complete — foundation repos done");
|
|
192
|
+
|
|
193
|
+
// ── Phase 4: Wave 2 — Consumer repos (api-gateway, web-dashboard) ──
|
|
194
|
+
const wave2Key = "fleet-wave-2-3";
|
|
195
|
+
const wave2Repos = [REPOS[0], REPOS[3]]; // api-gateway, web-dashboard
|
|
196
|
+
tracker.activatePhase(wave2Key);
|
|
197
|
+
tracker.setActiveAgent(null);
|
|
198
|
+
tracker.addLog(`🌊 Wave 2: ${wave2Repos.map((r) => r.name).join(", ")}`);
|
|
199
|
+
|
|
200
|
+
// Replace streams for wave 2
|
|
201
|
+
tracker.initStreams(wave2Repos.map((r) => `${r.name} — ${r.role}`));
|
|
202
|
+
|
|
203
|
+
const wave2Work = wave2Repos.map(async (repo, idx) => {
|
|
204
|
+
tracker.updateStream(idx, "engineering");
|
|
205
|
+
tracker.addLog(`${repo.name}: PM drafting spec (with wave 1 context)`);
|
|
206
|
+
await mockAgent(`pm:${repo.name}`, MODELS.primary, dur(2500 + Math.random() * 1000));
|
|
207
|
+
|
|
208
|
+
tracker.addLog(`${repo.name}: engineering`);
|
|
209
|
+
await mockAgent(`engineer:${repo.name}`, MODELS.primary, dur(5000 + Math.random() * 3000));
|
|
210
|
+
|
|
211
|
+
tracker.updateStream(idx, "reviewing");
|
|
212
|
+
tracker.addLog(`${repo.name}: code review`);
|
|
213
|
+
await mockAgent(`reviewer:${repo.name}`, MODELS.primary, dur(2500 + Math.random() * 1000));
|
|
214
|
+
|
|
215
|
+
tracker.updateStream(idx, "testing");
|
|
216
|
+
tracker.addLog(`${repo.name}: verification`);
|
|
217
|
+
await sleep(dur(1500 + Math.random() * 1000));
|
|
218
|
+
tracker.addLog(`${repo.name}: ✅ build/test passed`);
|
|
219
|
+
|
|
220
|
+
tracker.updateStream(idx, "done");
|
|
221
|
+
tracker.addLog(`${repo.name}: complete`);
|
|
222
|
+
});
|
|
223
|
+
await Promise.all(wave2Work);
|
|
224
|
+
|
|
225
|
+
tracker.completePhase(wave2Key);
|
|
226
|
+
tracker.addLog("Wave 2 complete — consumer repos done");
|
|
227
|
+
|
|
228
|
+
// ── Phase 5: Cross-repo review ──
|
|
229
|
+
const reviewKey = "fleet-cross-review-4";
|
|
230
|
+
tracker.activatePhase(reviewKey);
|
|
231
|
+
tracker.setActiveAgent("fleet-reviewer checking cross-repo consistency…");
|
|
232
|
+
tracker.addLog("Cross-repo reviewer validating consistency");
|
|
233
|
+
|
|
234
|
+
// Clear streams for review phase
|
|
235
|
+
tracker.streams = [];
|
|
236
|
+
|
|
237
|
+
await mockAgent("fleet-reviewer", MODELS.review, dur(4000));
|
|
238
|
+
tracker.addLog("Cross-repo review: FLEET_APPROVED");
|
|
239
|
+
|
|
240
|
+
tracker.setActiveAgent(null);
|
|
241
|
+
tracker.completePhase(reviewKey);
|
|
242
|
+
|
|
243
|
+
// ── Phase 6: Summary ──
|
|
244
|
+
const summaryKey = "fleet-summary-5";
|
|
245
|
+
tracker.activatePhase(summaryKey);
|
|
246
|
+
tracker.setActiveAgent("generating fleet summary…");
|
|
247
|
+
tracker.addLog("Generating fleet summary");
|
|
248
|
+
|
|
249
|
+
await sleep(dur(1000));
|
|
250
|
+
tracker.addLog("Summary written to .swarm/fleet/fleet-summary.md");
|
|
251
|
+
|
|
252
|
+
tracker.setActiveAgent(null);
|
|
253
|
+
tracker.completePhase(summaryKey);
|
|
254
|
+
tracker.addLog("🐝 Fleet run complete");
|
|
255
|
+
await sleep(dur(2000));
|
|
256
|
+
|
|
257
|
+
tui.stop();
|
|
258
|
+
|
|
259
|
+
// Post-TUI summary
|
|
260
|
+
const sec = Math.floor(tracker.elapsedMs / 1000);
|
|
261
|
+
const m = Math.floor(sec / 60);
|
|
262
|
+
const s = sec % 60;
|
|
263
|
+
const elapsed = `${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
|
|
264
|
+
const done = tracker.phases.filter((p) => p.status === "done").length;
|
|
265
|
+
|
|
266
|
+
console.log("");
|
|
267
|
+
console.log("─".repeat(60));
|
|
268
|
+
console.log(`✅ Fleet mock run completed in ${elapsed}`);
|
|
269
|
+
console.log(` Phases: ${done}/${tracker.totalPhaseCount}`);
|
|
270
|
+
console.log(` Repos: ${REPOS.length} (${REPOS.map((r) => r.name).join(", ")})`);
|
|
271
|
+
console.log(` Waves: 2`);
|
|
272
|
+
console.log("─".repeat(60));
|
|
273
|
+
|
|
274
|
+
console.log("");
|
|
275
|
+
const stats = await loadStats(mockConfig);
|
|
276
|
+
console.log(formatStats(stats));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
run().catch((err) => {
|
|
280
|
+
tui.stop();
|
|
281
|
+
console.error(err);
|
|
282
|
+
process.exit(1);
|
|
283
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Interactive Copilot Swarm intro — guided walkthrough of CLI modes.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx tsx apps/core/scripts/demo-intro.ts
|
|
7
|
+
* pnpm demo:intro
|
|
8
|
+
* swarm demo
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { SwarmConfig } from "../src/config.js";
|
|
12
|
+
import { runDemo } from "../src/demo.js";
|
|
13
|
+
|
|
14
|
+
const mockConfig = {
|
|
15
|
+
repoRoot: process.cwd(),
|
|
16
|
+
swarmDir: ".swarm",
|
|
17
|
+
} as SwarmConfig;
|
|
18
|
+
|
|
19
|
+
runDemo(mockConfig).catch((err) => {
|
|
20
|
+
console.error(err);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
});
|
|
23
|
+
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Mock TUI demo — exercises the TUI renderer and stats system
|
|
4
|
+
* without connecting to any AI backend.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx tsx apps/core/scripts/demo-tui.ts # full pipeline simulation
|
|
8
|
+
* npx tsx apps/core/scripts/demo-tui.ts --fast # 2× speed
|
|
9
|
+
* npx tsx apps/core/scripts/demo-tui.ts --stats-only # just print stats
|
|
10
|
+
*
|
|
11
|
+
* Or from the repo root:
|
|
12
|
+
* pnpm demo
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import * as crypto from "node:crypto";
|
|
16
|
+
import { ProgressTracker } from "../src/progress-tracker.js";
|
|
17
|
+
import { formatStats, loadStats, recordAgentInvocation, recordRunStart, type SwarmStats } from "../src/stats.js";
|
|
18
|
+
import { TuiRenderer } from "../src/tui-renderer.js";
|
|
19
|
+
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Helpers
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
const sleep = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));
|
|
25
|
+
const sid = () => crypto.randomUUID();
|
|
26
|
+
|
|
27
|
+
const fast = process.argv.includes("--fast");
|
|
28
|
+
const statsOnly = process.argv.includes("--stats-only");
|
|
29
|
+
const SPEED = fast ? 0.5 : 1;
|
|
30
|
+
|
|
31
|
+
/** Scale a duration by the current speed factor. */
|
|
32
|
+
const dur = (ms: number) => ms * SPEED;
|
|
33
|
+
|
|
34
|
+
// Minimal SwarmConfig stub — only the fields stats/paths need.
|
|
35
|
+
const mockConfig = {
|
|
36
|
+
repoRoot: process.cwd(),
|
|
37
|
+
swarmDir: ".swarm",
|
|
38
|
+
} as import("../src/config.js").SwarmConfig;
|
|
39
|
+
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// Stats-only mode
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
|
|
44
|
+
if (statsOnly) {
|
|
45
|
+
const stats = await loadStats(mockConfig);
|
|
46
|
+
console.log(formatStats(stats));
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
// Mock pipeline definition (matches the default swarm.config.yaml)
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
|
|
54
|
+
const PIPELINE = [
|
|
55
|
+
{ phase: "spec" },
|
|
56
|
+
{ phase: "decompose" },
|
|
57
|
+
{ phase: "design" },
|
|
58
|
+
{ phase: "implement" },
|
|
59
|
+
{ phase: "cross-model-review" },
|
|
60
|
+
{ phase: "verify" },
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const TASKS = [
|
|
64
|
+
"[FRONTEND] Add dark-mode toggle component",
|
|
65
|
+
"Create theme persistence in localStorage",
|
|
66
|
+
"Add CSS custom properties for theming",
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const MODELS = {
|
|
70
|
+
primary: "claude-sonnet-4",
|
|
71
|
+
review: "gpt-4.1",
|
|
72
|
+
fast: "claude-haiku-4.5",
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Simulation
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
|
|
79
|
+
const tracker = new ProgressTracker();
|
|
80
|
+
tracker.runId = "demo-mock";
|
|
81
|
+
tracker.primaryModel = MODELS.primary;
|
|
82
|
+
tracker.reviewModel = MODELS.review;
|
|
83
|
+
tracker.version = "0.0.34-demo";
|
|
84
|
+
tracker.cwd = process.cwd();
|
|
85
|
+
|
|
86
|
+
const tui = new TuiRenderer(tracker);
|
|
87
|
+
|
|
88
|
+
/** Simulate an agent session: add → sleep → record stats → remove. */
|
|
89
|
+
async function mockAgent(label: string, model: string, durationMs: number): Promise<void> {
|
|
90
|
+
const id = sid();
|
|
91
|
+
tracker.addActiveAgent(id, label, model);
|
|
92
|
+
tracker.addLog(`${label} started (${model})`);
|
|
93
|
+
|
|
94
|
+
await sleep(durationMs);
|
|
95
|
+
|
|
96
|
+
tracker.removeActiveAgent(id);
|
|
97
|
+
tracker.addLog(`${label} finished`);
|
|
98
|
+
|
|
99
|
+
// Record stats just like the real SessionManager does
|
|
100
|
+
await recordAgentInvocation(mockConfig, label, model, durationMs);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async function run() {
|
|
104
|
+
tracker.initPhases(PIPELINE);
|
|
105
|
+
tui.start();
|
|
106
|
+
|
|
107
|
+
// Record a run start
|
|
108
|
+
await recordRunStart(mockConfig);
|
|
109
|
+
|
|
110
|
+
// ── Phase 1: Spec ──
|
|
111
|
+
const specKey = "spec-0";
|
|
112
|
+
tracker.activatePhase(specKey);
|
|
113
|
+
tracker.setActiveAgent("pm is drafting specification…");
|
|
114
|
+
tracker.addLog("Starting PM specification");
|
|
115
|
+
|
|
116
|
+
await mockAgent("pm", MODELS.primary, dur(3000));
|
|
117
|
+
|
|
118
|
+
// review loop
|
|
119
|
+
tracker.addLog("PM-reviewer reviewing specification");
|
|
120
|
+
await mockAgent("pm-reviewer", MODELS.primary, dur(2000));
|
|
121
|
+
|
|
122
|
+
tracker.addLog("Spec-reviewer reviewing specification");
|
|
123
|
+
await mockAgent("spec-reviewer", MODELS.primary, dur(2000));
|
|
124
|
+
|
|
125
|
+
tracker.setActiveAgent(null);
|
|
126
|
+
tracker.completePhase(specKey);
|
|
127
|
+
tracker.addLog("Specification complete");
|
|
128
|
+
|
|
129
|
+
// ── Phase 2: Decompose ──
|
|
130
|
+
const decompKey = "decompose-1";
|
|
131
|
+
tracker.activatePhase(decompKey);
|
|
132
|
+
tracker.setActiveAgent("decompose-agent is breaking down tasks…");
|
|
133
|
+
tracker.addLog("Decomposing specification into tasks");
|
|
134
|
+
|
|
135
|
+
await mockAgent("decompose-agent", MODELS.fast, dur(1500));
|
|
136
|
+
|
|
137
|
+
tracker.setActiveAgent(null);
|
|
138
|
+
tracker.completePhase(decompKey);
|
|
139
|
+
tracker.addLog(`Decomposed into ${TASKS.length} tasks`);
|
|
140
|
+
|
|
141
|
+
// ── Phase 3: Design ──
|
|
142
|
+
const designKey = "design-2";
|
|
143
|
+
tracker.activatePhase(designKey);
|
|
144
|
+
tracker.setActiveAgent("designer is creating UI specification…");
|
|
145
|
+
tracker.addLog("Starting design phase");
|
|
146
|
+
|
|
147
|
+
await mockAgent("designer", MODELS.primary, dur(3000));
|
|
148
|
+
|
|
149
|
+
tracker.addLog("Design-reviewer reviewing");
|
|
150
|
+
await mockAgent("design-reviewer", MODELS.primary, dur(1500));
|
|
151
|
+
|
|
152
|
+
tracker.setActiveAgent(null);
|
|
153
|
+
tracker.completePhase(designKey);
|
|
154
|
+
tracker.addLog("Design phase complete");
|
|
155
|
+
|
|
156
|
+
// ── Phase 4: Implement ──
|
|
157
|
+
const implKey = "implement-3";
|
|
158
|
+
tracker.activatePhase(implKey);
|
|
159
|
+
tracker.setActiveAgent(null);
|
|
160
|
+
tracker.initStreams(TASKS);
|
|
161
|
+
tracker.addLog("Launching implementation streams");
|
|
162
|
+
|
|
163
|
+
// Run streams in parallel
|
|
164
|
+
const streamWork = TASKS.map(async (task, idx) => {
|
|
165
|
+
const label = `S${idx + 1}`;
|
|
166
|
+
|
|
167
|
+
// Engineering
|
|
168
|
+
tracker.updateStream(idx, "engineering");
|
|
169
|
+
tracker.addLog(`${label}: engineering started`);
|
|
170
|
+
await mockAgent("engineer", MODELS.primary, dur(4000 + Math.random() * 2000));
|
|
171
|
+
|
|
172
|
+
// Code review
|
|
173
|
+
tracker.updateStream(idx, "reviewing");
|
|
174
|
+
tracker.addLog(`${label}: code review`);
|
|
175
|
+
await mockAgent("code-reviewer", MODELS.primary, dur(2000 + Math.random() * 1000));
|
|
176
|
+
|
|
177
|
+
// QA
|
|
178
|
+
tracker.updateStream(idx, "testing");
|
|
179
|
+
tracker.addLog(`${label}: QA testing`);
|
|
180
|
+
await mockAgent("qa", MODELS.primary, dur(2000 + Math.random() * 1000));
|
|
181
|
+
|
|
182
|
+
tracker.updateStream(idx, "done");
|
|
183
|
+
tracker.addLog(`${label}: complete`);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
await Promise.all(streamWork);
|
|
187
|
+
|
|
188
|
+
tracker.completePhase(implKey);
|
|
189
|
+
tracker.addLog("All streams complete");
|
|
190
|
+
|
|
191
|
+
// ── Phase 5: Cross-model review ──
|
|
192
|
+
const cmrKey = "cross-model-review-4";
|
|
193
|
+
tracker.activatePhase(cmrKey);
|
|
194
|
+
tracker.setActiveAgent("cross-model reviewer checking…");
|
|
195
|
+
tracker.addLog("Cross-model review (different model)");
|
|
196
|
+
|
|
197
|
+
await mockAgent("cross-model-reviewer", MODELS.review, dur(3000));
|
|
198
|
+
await mockAgent("engineer", MODELS.primary, dur(2000));
|
|
199
|
+
|
|
200
|
+
tracker.setActiveAgent(null);
|
|
201
|
+
tracker.completePhase(cmrKey);
|
|
202
|
+
tracker.addLog("Cross-model review complete");
|
|
203
|
+
|
|
204
|
+
// ── Phase 6: Verify ──
|
|
205
|
+
const verifyKey = "verify-5";
|
|
206
|
+
tracker.activatePhase(verifyKey);
|
|
207
|
+
tracker.setActiveAgent("running verification commands…");
|
|
208
|
+
tracker.addLog("Running build verification");
|
|
209
|
+
|
|
210
|
+
await sleep(dur(1500));
|
|
211
|
+
tracker.addLog("✅ Build passed");
|
|
212
|
+
await sleep(dur(1000));
|
|
213
|
+
tracker.addLog("✅ Tests passed");
|
|
214
|
+
await sleep(dur(800));
|
|
215
|
+
tracker.addLog("✅ Lint passed");
|
|
216
|
+
|
|
217
|
+
tracker.setActiveAgent(null);
|
|
218
|
+
tracker.completePhase(verifyKey);
|
|
219
|
+
tracker.addLog("Verification complete");
|
|
220
|
+
|
|
221
|
+
// ── Done ──
|
|
222
|
+
tracker.addLog("🐝 Swarm run complete");
|
|
223
|
+
await sleep(dur(2000));
|
|
224
|
+
|
|
225
|
+
tui.stop();
|
|
226
|
+
|
|
227
|
+
// Print post-TUI summary
|
|
228
|
+
const sec = Math.floor(tracker.elapsedMs / 1000);
|
|
229
|
+
const m = Math.floor(sec / 60);
|
|
230
|
+
const s = sec % 60;
|
|
231
|
+
const elapsed = `${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
|
|
232
|
+
const done = tracker.phases.filter((p) => p.status === "done").length;
|
|
233
|
+
|
|
234
|
+
console.log("");
|
|
235
|
+
console.log("─".repeat(60));
|
|
236
|
+
console.log(`✅ Mock run completed in ${elapsed}`);
|
|
237
|
+
console.log(` Phases: ${done}/${tracker.totalPhaseCount}`);
|
|
238
|
+
console.log(` Streams: ${TASKS.length}/${TASKS.length} done`);
|
|
239
|
+
console.log("─".repeat(60));
|
|
240
|
+
|
|
241
|
+
// Show stats
|
|
242
|
+
console.log("");
|
|
243
|
+
const stats = await loadStats(mockConfig);
|
|
244
|
+
console.log(formatStats(stats));
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
run().catch((err) => {
|
|
248
|
+
tui.stop();
|
|
249
|
+
console.error(err);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
|
|
4
|
+
// vscode-jsonrpc@8.2.1 lacks an "exports" field, causing ESM resolution
|
|
5
|
+
// failures when @github/copilot-sdk imports "vscode-jsonrpc/node" (without .js).
|
|
6
|
+
// This postinstall script adds the missing exports map.
|
|
7
|
+
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
let pkgPath;
|
|
10
|
+
try {
|
|
11
|
+
pkgPath = require.resolve("vscode-jsonrpc/package.json");
|
|
12
|
+
} catch {
|
|
13
|
+
process.exit(0);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
17
|
+
if (pkg.exports) process.exit(0);
|
|
18
|
+
|
|
19
|
+
pkg.exports = {
|
|
20
|
+
".": "./lib/node/main.js",
|
|
21
|
+
"./node": "./node.js",
|
|
22
|
+
"./node.js": "./node.js",
|
|
23
|
+
"./browser": "./browser.js",
|
|
24
|
+
"./browser.js": "./browser.js",
|
|
25
|
+
};
|
|
26
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, "\t") + "\n");
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Local test script for the textarea components.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx tsx apps/core/scripts/test-textarea.ts # single-pane editor
|
|
7
|
+
* npx tsx apps/core/scripts/test-textarea.ts --split # split-pane with sample context
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { openSplitEditor, openTextarea } from "../src/textarea.js";
|
|
11
|
+
|
|
12
|
+
const SAMPLE_QUESTIONS = `## PM Questions — Round 1
|
|
13
|
+
|
|
14
|
+
Thank you for the feature request. I have a few clarifying questions before we proceed:
|
|
15
|
+
|
|
16
|
+
1. **Scope of the dark mode toggle:**
|
|
17
|
+
Should this apply to the entire application, or only specific sections? For example, should the settings page, modals, and tooltips all respect the dark mode preference?
|
|
18
|
+
|
|
19
|
+
2. **Persistence:**
|
|
20
|
+
Should the dark mode preference be persisted across sessions? If so, where — localStorage, a user profile setting in the database, or both?
|
|
21
|
+
|
|
22
|
+
3. **System preference detection:**
|
|
23
|
+
Should the application automatically detect the user's OS-level dark mode preference (via \`prefers-color-scheme\`) and default to that?
|
|
24
|
+
|
|
25
|
+
4. **Transition behavior:**
|
|
26
|
+
When the user toggles dark mode, should there be an animated transition between themes, or should it switch instantly?
|
|
27
|
+
|
|
28
|
+
5. **Component library considerations:**
|
|
29
|
+
You're using Carbon Design System — are you aware that Carbon provides built-in theming support? Should we leverage \`@carbon/themes\` for the dark mode tokens, or do you have a custom design palette in mind?
|
|
30
|
+
|
|
31
|
+
Please answer these questions so I can produce a complete specification.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
*Note: If any of these questions aren't relevant, feel free to skip them and I'll use my best judgment.*`;
|
|
36
|
+
|
|
37
|
+
const useSplit = process.argv.includes("--split");
|
|
38
|
+
|
|
39
|
+
if (useSplit) {
|
|
40
|
+
console.log("Opening split-pane editor...\n");
|
|
41
|
+
const result = await openSplitEditor(SAMPLE_QUESTIONS, {
|
|
42
|
+
editorTitle: "Your Answer",
|
|
43
|
+
contextTitle: "PM Questions",
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
if (result === undefined) {
|
|
47
|
+
console.log("\n❌ Cancelled");
|
|
48
|
+
} else if (result === "") {
|
|
49
|
+
console.log("\n⏭️ Skipped (AI will use its judgment)");
|
|
50
|
+
} else {
|
|
51
|
+
console.log("\n✅ Submitted:");
|
|
52
|
+
console.log(result);
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
console.log("Opening single-pane editor...\n");
|
|
56
|
+
const result = await openTextarea();
|
|
57
|
+
|
|
58
|
+
if (result === undefined) {
|
|
59
|
+
console.log("\n❌ Cancelled");
|
|
60
|
+
} else {
|
|
61
|
+
console.log("\n✅ Submitted:");
|
|
62
|
+
console.log(result);
|
|
63
|
+
}
|
|
64
|
+
}
|