@copilot-swarm/core 0.0.14 → 0.0.17
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/defaults/agents/cross-model-reviewer.md +2 -1
- package/defaults/swarm.config.yaml +4 -0
- package/dist/checkpoint.test.js +1 -0
- package/dist/checkpoint.test.js.map +1 -1
- package/dist/config.d.ts +9 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +38 -3
- package/dist/config.js.map +1 -1
- package/dist/finish.d.ts +32 -0
- package/dist/finish.d.ts.map +1 -0
- package/dist/finish.js +235 -0
- package/dist/finish.js.map +1 -0
- package/dist/global-registry.d.ts +15 -0
- package/dist/global-registry.d.ts.map +1 -0
- package/dist/global-registry.js +54 -0
- package/dist/global-registry.js.map +1 -0
- package/dist/index.js +106 -1
- package/dist/index.js.map +1 -1
- package/dist/messages.d.ts +17 -0
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +19 -0
- package/dist/messages.js.map +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +5 -0
- package/dist/orchestrator.js.map +1 -1
- package/dist/paths.d.ts +6 -6
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +17 -10
- package/dist/paths.js.map +1 -1
- package/dist/pipeline-config.d.ts.map +1 -1
- package/dist/pipeline-config.js +24 -1
- package/dist/pipeline-config.js.map +1 -1
- package/dist/pipeline-config.test.js +26 -0
- package/dist/pipeline-config.test.js.map +1 -1
- package/dist/pipeline-engine.d.ts +11 -0
- package/dist/pipeline-engine.d.ts.map +1 -1
- package/dist/pipeline-engine.js +113 -4
- package/dist/pipeline-engine.js.map +1 -1
- package/dist/pipeline-types.d.ts +15 -1
- package/dist/pipeline-types.d.ts.map +1 -1
- package/dist/planning-engine.d.ts +5 -0
- package/dist/planning-engine.d.ts.map +1 -1
- package/dist/planning-engine.js +67 -18
- package/dist/planning-engine.js.map +1 -1
- package/dist/progress-tracker.d.ts +4 -0
- package/dist/progress-tracker.d.ts.map +1 -1
- package/dist/progress-tracker.js +5 -0
- package/dist/progress-tracker.js.map +1 -1
- package/dist/session-store.d.ts +38 -0
- package/dist/session-store.d.ts.map +1 -0
- package/dist/session-store.js +167 -0
- package/dist/session-store.js.map +1 -0
- package/dist/textarea.d.ts.map +1 -1
- package/dist/textarea.js +119 -36
- package/dist/textarea.js.map +1 -1
- package/dist/tui-renderer.d.ts +2 -0
- package/dist/tui-renderer.d.ts.map +1 -1
- package/dist/tui-renderer.js +29 -1
- package/dist/tui-renderer.js.map +1 -1
- package/dist/verify-detect.d.ts +7 -0
- package/dist/verify-detect.d.ts.map +1 -0
- package/dist/verify-detect.js +84 -0
- package/dist/verify-detect.js.map +1 -0
- package/dist/verify-detect.test.d.ts +2 -0
- package/dist/verify-detect.test.d.ts.map +1 -0
- package/dist/verify-detect.test.js +68 -0
- package/dist/verify-detect.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -14,6 +14,7 @@ You are an independent Senior Reviewer using a **different AI model** than the o
|
|
|
14
14
|
5. **Quality:** Verify error handling, edge cases, performance implications, and adherence to project conventions.
|
|
15
15
|
6. **Exploratory Testing:** Look for edge cases and scenarios not explicitly covered by the spec or existing tests.
|
|
16
16
|
7. **Be Specific:** Every issue must include: file path, line number (if applicable), description, severity (critical/major/minor), and a concrete suggestion for the fix.
|
|
17
|
-
8. **
|
|
17
|
+
8. **Stay Focused:** Only report issues that affect correctness, security, or spec compliance. Do not flag style preferences, naming opinions, or suggest refactors that don't fix a real problem. The goal is surgical fixes, not a rewrite.
|
|
18
|
+
9. **Decision:**
|
|
18
19
|
- If the code is correct, secure, passes all checks, and fully satisfies the spec, reply: "APPROVED".
|
|
19
20
|
- If there are issues, provide a detailed numbered list of required fixes.
|
package/dist/checkpoint.test.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.test.js","sourceRoot":"","sources":["../src/checkpoint.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGnG,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,KAAK;QACV,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,QAAQ;QAClB,KAAK;QACL,gBAAgB,EAAE,OAAO;QACzB,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"checkpoint.test.js","sourceRoot":"","sources":["../src/checkpoint.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import type { VerifyConfig } from "./pipeline-types.js";
|
|
2
|
+
export type SwarmCommand = "run" | "plan" | "analyze" | "review" | "session" | "finish" | "list";
|
|
3
|
+
export declare function readVersion(): string;
|
|
2
4
|
/**
|
|
3
5
|
* Core config loaded from environment variables and CLI arguments.
|
|
4
6
|
* CLI args take precedence over env vars.
|
|
@@ -20,6 +22,12 @@ export interface SwarmConfig {
|
|
|
20
22
|
readonly maxAutoResume: number;
|
|
21
23
|
/** For review mode: the runId of the previous run to review (default: latest). */
|
|
22
24
|
readonly reviewRunId: string | undefined;
|
|
25
|
+
/** Explicit session ID from --session flag. */
|
|
26
|
+
readonly sessionId: string | undefined;
|
|
27
|
+
/** Resolved session ID (set after session resolution). */
|
|
28
|
+
resolvedSessionId?: string;
|
|
29
|
+
/** Verification commands from CLI flags (override YAML and auto-detect). */
|
|
30
|
+
readonly verifyOverrides?: VerifyConfig;
|
|
23
31
|
}
|
|
24
32
|
export declare function loadConfig(): Promise<SwarmConfig>;
|
|
25
33
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA6BxD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAkBjG,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AA8KD;;;;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;CACzC;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CA6DvD"}
|
package/dist/config.js
CHANGED
|
@@ -32,7 +32,7 @@ function readEnvPositiveInt(key, fallback) {
|
|
|
32
32
|
}
|
|
33
33
|
return parsed;
|
|
34
34
|
}
|
|
35
|
-
function readVersion() {
|
|
35
|
+
export function readVersion() {
|
|
36
36
|
const dir = path.dirname(fileURLToPath(import.meta.url));
|
|
37
37
|
const pkgPath = path.join(dir, "..", "package.json");
|
|
38
38
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
@@ -45,6 +45,9 @@ Commands:
|
|
|
45
45
|
plan Interactive planning mode — clarify requirements before running
|
|
46
46
|
analyze Analyze the repository and generate a context document
|
|
47
47
|
review Review a previous run — provide feedback for agents to fix/improve
|
|
48
|
+
session Manage sessions: create, list, use (group related runs)
|
|
49
|
+
finish Finalize the active session — summarize, log to changelog, clean up
|
|
50
|
+
list List all sessions across all repositories
|
|
48
51
|
|
|
49
52
|
Options:
|
|
50
53
|
-v, --verbose Enable verbose streaming output
|
|
@@ -53,7 +56,11 @@ Options:
|
|
|
53
56
|
-f, --file <file> Read prompt from a file instead of inline text
|
|
54
57
|
-r, --resume Resume from the last checkpoint (skip completed phases)
|
|
55
58
|
--run <runId> Specify which run to review (default: latest)
|
|
59
|
+
--session <id> Use a specific session (default: active session)
|
|
56
60
|
--no-tui Disable TUI dashboard (use plain log output)
|
|
61
|
+
--verify-build <cmd> Shell command to verify the build (e.g. "npm run build")
|
|
62
|
+
--verify-test <cmd> Shell command to run tests (e.g. "npm test")
|
|
63
|
+
--verify-lint <cmd> Shell command to run linting (e.g. "npm run lint")
|
|
57
64
|
-V, --version Show version number
|
|
58
65
|
-h, --help Show this help message
|
|
59
66
|
|
|
@@ -80,6 +87,11 @@ Examples:
|
|
|
80
87
|
swarm analyze
|
|
81
88
|
swarm review "Fix the auth bug" Review latest run with feedback
|
|
82
89
|
swarm review -e --run 2026-02-17T08-00 Review a specific run
|
|
90
|
+
swarm session create "Dark mode feature" Create a new session
|
|
91
|
+
swarm session list List all sessions
|
|
92
|
+
swarm session use <id> Switch active session
|
|
93
|
+
swarm finish Finalize active session
|
|
94
|
+
swarm finish --session <id> Finalize a specific session
|
|
83
95
|
|
|
84
96
|
Environment variables override defaults; CLI args override env vars.
|
|
85
97
|
See documentation for all env var options.`;
|
|
@@ -97,6 +109,10 @@ function parseCliArgs() {
|
|
|
97
109
|
plan: { type: "string", short: "p" },
|
|
98
110
|
file: { type: "string", short: "f" },
|
|
99
111
|
run: { type: "string" },
|
|
112
|
+
session: { type: "string" },
|
|
113
|
+
"verify-build": { type: "string" },
|
|
114
|
+
"verify-test": { type: "string" },
|
|
115
|
+
"verify-lint": { type: "string" },
|
|
100
116
|
},
|
|
101
117
|
});
|
|
102
118
|
if (values.version) {
|
|
@@ -113,7 +129,10 @@ function parseCliArgs() {
|
|
|
113
129
|
(positionals[0] === "plan" ||
|
|
114
130
|
positionals[0] === "run" ||
|
|
115
131
|
positionals[0] === "analyze" ||
|
|
116
|
-
positionals[0] === "review"
|
|
132
|
+
positionals[0] === "review" ||
|
|
133
|
+
positionals[0] === "session" ||
|
|
134
|
+
positionals[0] === "finish" ||
|
|
135
|
+
positionals[0] === "list")) {
|
|
117
136
|
command = positionals[0];
|
|
118
137
|
promptParts = positionals.slice(1);
|
|
119
138
|
}
|
|
@@ -127,6 +146,10 @@ function parseCliArgs() {
|
|
|
127
146
|
resume: values.resume,
|
|
128
147
|
noTui: values["no-tui"],
|
|
129
148
|
reviewRunId: values.run,
|
|
149
|
+
sessionId: values.session,
|
|
150
|
+
verifyBuild: values["verify-build"],
|
|
151
|
+
verifyTest: values["verify-test"],
|
|
152
|
+
verifyLint: values["verify-lint"],
|
|
130
153
|
};
|
|
131
154
|
}
|
|
132
155
|
/** Extract the "Refined Requirements" section (and optional Engineering/Design Decisions) from a plan file. */
|
|
@@ -191,12 +214,22 @@ export async function loadConfig() {
|
|
|
191
214
|
const raw = cli.prompt ?? process.env.ISSUE_BODY;
|
|
192
215
|
issueBody = resolveGitHubIssue(raw) ?? raw;
|
|
193
216
|
}
|
|
194
|
-
if (cli.command !== "analyze" &&
|
|
217
|
+
if (cli.command !== "analyze" &&
|
|
218
|
+
cli.command !== "session" &&
|
|
219
|
+
cli.command !== "finish" &&
|
|
220
|
+
cli.command !== "list" &&
|
|
221
|
+
!cli.resume &&
|
|
222
|
+
(!issueBody || issueBody === "")) {
|
|
195
223
|
console.error(`Error: No prompt provided. Pass it as an argument, use --editor, --plan, or set ISSUE_BODY.\n\n${HELP_TEXT}`);
|
|
196
224
|
process.exit(1);
|
|
197
225
|
}
|
|
198
226
|
const swarmDir = readEnvString("SWARM_DIR", ".swarm");
|
|
199
227
|
const runId = new Date().toISOString().replace(/[:.]/g, "-");
|
|
228
|
+
// Build verify overrides from CLI flags (only include flags that were explicitly set)
|
|
229
|
+
const hasVerifyFlags = cli.verifyBuild !== undefined || cli.verifyTest !== undefined || cli.verifyLint !== undefined;
|
|
230
|
+
const verifyOverrides = hasVerifyFlags
|
|
231
|
+
? { build: cli.verifyBuild, test: cli.verifyTest, lint: cli.verifyLint }
|
|
232
|
+
: undefined;
|
|
200
233
|
return {
|
|
201
234
|
command: cli.command,
|
|
202
235
|
repoRoot,
|
|
@@ -212,6 +245,8 @@ export async function loadConfig() {
|
|
|
212
245
|
maxRetries: readEnvPositiveInt("MAX_RETRIES", 2),
|
|
213
246
|
maxAutoResume: readEnvPositiveInt("MAX_AUTO_RESUME", 3),
|
|
214
247
|
reviewRunId: cli.reviewRunId,
|
|
248
|
+
sessionId: cli.sessionId,
|
|
249
|
+
verifyOverrides,
|
|
215
250
|
};
|
|
216
251
|
}
|
|
217
252
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/finish.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finish command — finalize a session (logical feature).
|
|
3
|
+
*
|
|
4
|
+
* Collects all run/plan/analysis artifacts from the session,
|
|
5
|
+
* writes a summary entry to the central `.swarm/changelog.md`,
|
|
6
|
+
* cleans up checkpoint files, and marks the session as finished.
|
|
7
|
+
*/
|
|
8
|
+
import type { SwarmConfig } from "./config.js";
|
|
9
|
+
/** A single entry appended to the changelog. */
|
|
10
|
+
export interface ChangelogEntry {
|
|
11
|
+
sessionId: string;
|
|
12
|
+
sessionName: string;
|
|
13
|
+
finishedAt: string;
|
|
14
|
+
originalRequest: string;
|
|
15
|
+
phases: PhaseRecord[];
|
|
16
|
+
runCount: number;
|
|
17
|
+
}
|
|
18
|
+
interface PhaseRecord {
|
|
19
|
+
mode: string;
|
|
20
|
+
runId: string;
|
|
21
|
+
summary: string;
|
|
22
|
+
}
|
|
23
|
+
/** Collect all context from a session's artifacts and produce a changelog entry. */
|
|
24
|
+
export declare function buildChangelogEntry(config: SwarmConfig, sessionId: string): Promise<ChangelogEntry | null>;
|
|
25
|
+
/** Remove checkpoint.json files from all runs in the session. */
|
|
26
|
+
export declare function cleanupCheckpoints(config: SwarmConfig, sessionId: string): Promise<number>;
|
|
27
|
+
/** Mark session as finished by adding a `finished` timestamp to session.json. */
|
|
28
|
+
export declare function markSessionFinished(config: SwarmConfig, sessionId: string): Promise<void>;
|
|
29
|
+
/** Append a changelog entry to .swarm/changelog.md */
|
|
30
|
+
export declare function appendChangelog(config: SwarmConfig, entry: ChangelogEntry): Promise<string>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=finish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finish.d.ts","sourceRoot":"","sources":["../src/finish.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oFAAoF;AACpF,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkDhH;AAED,iEAAiE;AACjE,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAchG;AAED,iFAAiF;AACjF,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F;AAED,sDAAsD;AACtD,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBjG"}
|
package/dist/finish.js
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finish command — finalize a session (logical feature).
|
|
3
|
+
*
|
|
4
|
+
* Collects all run/plan/analysis artifacts from the session,
|
|
5
|
+
* writes a summary entry to the central `.swarm/changelog.md`,
|
|
6
|
+
* cleans up checkpoint files, and marks the session as finished.
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from "node:fs/promises";
|
|
9
|
+
import * as path from "node:path";
|
|
10
|
+
import { markRegistryFinished } from "./global-registry.js";
|
|
11
|
+
import { swarmRoot } from "./paths.js";
|
|
12
|
+
import { getSession } from "./session-store.js";
|
|
13
|
+
/** Collect all context from a session's artifacts and produce a changelog entry. */
|
|
14
|
+
export async function buildChangelogEntry(config, sessionId) {
|
|
15
|
+
const session = await getSession(config, sessionId);
|
|
16
|
+
if (!session)
|
|
17
|
+
return null;
|
|
18
|
+
const sessionDir = path.join(swarmRoot(config), "sessions", sessionId);
|
|
19
|
+
const phases = [];
|
|
20
|
+
let originalRequest = "";
|
|
21
|
+
// Collect plan artifacts
|
|
22
|
+
const plansPath = path.join(sessionDir, "plans");
|
|
23
|
+
const latestPlan = path.join(plansPath, "plan-latest.md");
|
|
24
|
+
try {
|
|
25
|
+
const content = await fs.readFile(latestPlan, "utf-8");
|
|
26
|
+
const reqMatch = content.match(/## Original Request\n\n([\s\S]*?)(?=\n##|\n#[^#]|$)/);
|
|
27
|
+
if (reqMatch)
|
|
28
|
+
originalRequest = reqMatch[1].trim();
|
|
29
|
+
phases.push({ mode: "plan", runId: "plan", summary: extractPlanSummary(content) });
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// No plan
|
|
33
|
+
}
|
|
34
|
+
// Collect analysis artifacts
|
|
35
|
+
const analysisPath = path.join(sessionDir, "analysis", "repo-analysis.md");
|
|
36
|
+
try {
|
|
37
|
+
const content = await fs.readFile(analysisPath, "utf-8");
|
|
38
|
+
phases.push({ mode: "analyze", runId: "analysis", summary: truncate(content, 500) });
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// No analysis
|
|
42
|
+
}
|
|
43
|
+
// Collect run artifacts (sorted chronologically)
|
|
44
|
+
const runsPath = path.join(sessionDir, "runs");
|
|
45
|
+
const runs = await listRunDirs(runsPath);
|
|
46
|
+
for (const runId of runs) {
|
|
47
|
+
const record = await collectRunRecord(runsPath, runId);
|
|
48
|
+
if (record) {
|
|
49
|
+
if (!originalRequest && record.issueBody)
|
|
50
|
+
originalRequest = record.issueBody;
|
|
51
|
+
phases.push(record);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!originalRequest)
|
|
55
|
+
originalRequest = "(no prompt recorded)";
|
|
56
|
+
return {
|
|
57
|
+
sessionId,
|
|
58
|
+
sessionName: session.name,
|
|
59
|
+
finishedAt: new Date().toISOString(),
|
|
60
|
+
originalRequest,
|
|
61
|
+
phases,
|
|
62
|
+
runCount: runs.length,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** Remove checkpoint.json files from all runs in the session. */
|
|
66
|
+
export async function cleanupCheckpoints(config, sessionId) {
|
|
67
|
+
const runsPath = path.join(swarmRoot(config), "sessions", sessionId, "runs");
|
|
68
|
+
const runs = await listRunDirs(runsPath);
|
|
69
|
+
let cleaned = 0;
|
|
70
|
+
for (const runId of runs) {
|
|
71
|
+
const cp = path.join(runsPath, runId, "checkpoint.json");
|
|
72
|
+
try {
|
|
73
|
+
await fs.unlink(cp);
|
|
74
|
+
cleaned++;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Already gone
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return cleaned;
|
|
81
|
+
}
|
|
82
|
+
/** Mark session as finished by adding a `finished` timestamp to session.json. */
|
|
83
|
+
export async function markSessionFinished(config, sessionId) {
|
|
84
|
+
const jsonPath = path.join(swarmRoot(config), "sessions", sessionId, "session.json");
|
|
85
|
+
try {
|
|
86
|
+
const content = await fs.readFile(jsonPath, "utf-8");
|
|
87
|
+
const session = JSON.parse(content);
|
|
88
|
+
session.finished = new Date().toISOString();
|
|
89
|
+
await fs.writeFile(jsonPath, JSON.stringify(session, null, 2));
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Ignore if session file missing
|
|
93
|
+
}
|
|
94
|
+
// Update global registry
|
|
95
|
+
await markRegistryFinished(sessionId, config.repoRoot);
|
|
96
|
+
}
|
|
97
|
+
/** Append a changelog entry to .swarm/changelog.md */
|
|
98
|
+
export async function appendChangelog(config, entry) {
|
|
99
|
+
const changelogPath = path.join(swarmRoot(config), "changelog.md");
|
|
100
|
+
const section = formatChangelogEntry(entry);
|
|
101
|
+
let existing = "";
|
|
102
|
+
try {
|
|
103
|
+
existing = await fs.readFile(changelogPath, "utf-8");
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// First entry — write header
|
|
107
|
+
existing = "# Copilot Swarm Changelog\n\nCompleted features and sessions.\n\n";
|
|
108
|
+
}
|
|
109
|
+
// Insert new entry after the header (newest first)
|
|
110
|
+
const headerEnd = existing.indexOf("\n\n", existing.indexOf("\n\n") + 1);
|
|
111
|
+
const before = existing.substring(0, headerEnd + 2);
|
|
112
|
+
const after = existing.substring(headerEnd + 2);
|
|
113
|
+
await fs.writeFile(changelogPath, `${before}${section}\n${after}`);
|
|
114
|
+
return changelogPath;
|
|
115
|
+
}
|
|
116
|
+
// --- Internal helpers ---
|
|
117
|
+
function formatChangelogEntry(entry) {
|
|
118
|
+
const date = entry.finishedAt.split("T")[0];
|
|
119
|
+
const lines = [];
|
|
120
|
+
lines.push(`## ${entry.sessionName}`);
|
|
121
|
+
lines.push("");
|
|
122
|
+
lines.push(`- **Session:** \`${entry.sessionId}\``);
|
|
123
|
+
lines.push(`- **Finished:** ${date}`);
|
|
124
|
+
lines.push(`- **Runs:** ${entry.runCount}`);
|
|
125
|
+
lines.push("");
|
|
126
|
+
lines.push("### Request");
|
|
127
|
+
lines.push("");
|
|
128
|
+
lines.push(truncate(entry.originalRequest, 500));
|
|
129
|
+
lines.push("");
|
|
130
|
+
if (entry.phases.length > 0) {
|
|
131
|
+
lines.push("### Activity");
|
|
132
|
+
lines.push("");
|
|
133
|
+
for (const phase of entry.phases) {
|
|
134
|
+
lines.push(`#### ${phase.mode} (${phase.runId})`);
|
|
135
|
+
lines.push("");
|
|
136
|
+
lines.push(phase.summary);
|
|
137
|
+
lines.push("");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
lines.push("---");
|
|
141
|
+
lines.push("");
|
|
142
|
+
return lines.join("\n");
|
|
143
|
+
}
|
|
144
|
+
async function listRunDirs(runsPath) {
|
|
145
|
+
try {
|
|
146
|
+
const entries = await fs.readdir(runsPath, { withFileTypes: true });
|
|
147
|
+
return entries
|
|
148
|
+
.filter((e) => e.isDirectory())
|
|
149
|
+
.map((e) => e.name)
|
|
150
|
+
.sort();
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async function collectRunRecord(runsPath, runId) {
|
|
157
|
+
const dir = path.join(runsPath, runId);
|
|
158
|
+
// Try checkpoint first for structured data
|
|
159
|
+
const cpPath = path.join(dir, "checkpoint.json");
|
|
160
|
+
try {
|
|
161
|
+
const content = await fs.readFile(cpPath, "utf-8");
|
|
162
|
+
const cp = JSON.parse(content);
|
|
163
|
+
return {
|
|
164
|
+
mode: cp.mode ?? "run",
|
|
165
|
+
runId,
|
|
166
|
+
summary: buildRunSummary(cp),
|
|
167
|
+
issueBody: cp.issueBody,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Fall through
|
|
172
|
+
}
|
|
173
|
+
// Reconstruct from role files
|
|
174
|
+
const rolesPath = path.join(dir, "roles");
|
|
175
|
+
const roleSummaries = await collectRoleSummaries(rolesPath);
|
|
176
|
+
if (roleSummaries.length === 0)
|
|
177
|
+
return null;
|
|
178
|
+
return {
|
|
179
|
+
mode: "run",
|
|
180
|
+
runId,
|
|
181
|
+
summary: roleSummaries.join("\n\n"),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function buildRunSummary(cp) {
|
|
185
|
+
const parts = [];
|
|
186
|
+
if (cp.completedPhases.length > 0) {
|
|
187
|
+
parts.push(`**Completed phases:** ${cp.completedPhases.join(", ")}`);
|
|
188
|
+
}
|
|
189
|
+
if (cp.spec) {
|
|
190
|
+
parts.push(`**Spec:** ${truncate(cp.spec, 200)}`);
|
|
191
|
+
}
|
|
192
|
+
if (cp.tasks.length > 0) {
|
|
193
|
+
parts.push(`**Tasks:** ${cp.tasks.length} task(s)`);
|
|
194
|
+
for (const task of cp.tasks) {
|
|
195
|
+
parts.push(` - ${truncate(task, 120)}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (cp.designSpec) {
|
|
199
|
+
parts.push(`**Design spec:** ${truncate(cp.designSpec, 150)}`);
|
|
200
|
+
}
|
|
201
|
+
if (cp.streamResults.length > 0) {
|
|
202
|
+
parts.push(`**Streams:** ${cp.streamResults.length} completed`);
|
|
203
|
+
}
|
|
204
|
+
return parts.join("\n");
|
|
205
|
+
}
|
|
206
|
+
async function collectRoleSummaries(rolesPath) {
|
|
207
|
+
try {
|
|
208
|
+
const entries = await fs.readdir(rolesPath);
|
|
209
|
+
const summaries = [];
|
|
210
|
+
for (const file of entries.filter((f) => f.endsWith(".md")).sort()) {
|
|
211
|
+
const content = await fs.readFile(path.join(rolesPath, file), "utf-8");
|
|
212
|
+
const role = file.replace(/\.md$/, "");
|
|
213
|
+
summaries.push(`**${role}:** ${truncate(content, 200)}`);
|
|
214
|
+
}
|
|
215
|
+
return summaries;
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return [];
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function extractPlanSummary(planContent) {
|
|
222
|
+
// Try to extract the refined requirements section
|
|
223
|
+
const refinedMatch = planContent.match(/## Refined Requirements\n\n([\s\S]*?)(?=\n##|\n#[^#]|$)/);
|
|
224
|
+
if (refinedMatch)
|
|
225
|
+
return truncate(refinedMatch[1].trim(), 500);
|
|
226
|
+
// Fall back to truncated content (skip header)
|
|
227
|
+
const bodyStart = planContent.indexOf("\n\n");
|
|
228
|
+
return truncate(planContent.substring(bodyStart + 2), 500);
|
|
229
|
+
}
|
|
230
|
+
function truncate(text, maxLen) {
|
|
231
|
+
if (text.length <= maxLen)
|
|
232
|
+
return text;
|
|
233
|
+
return `${text.substring(0, maxLen)}…`;
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=finish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finish.js","sourceRoot":"","sources":["../src/finish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface GlobalSessionRecord {
|
|
2
|
+
sessionId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
repoRoot: string;
|
|
5
|
+
swarmDir: string;
|
|
6
|
+
created: string;
|
|
7
|
+
finished?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Register a new session in the global registry. */
|
|
10
|
+
export declare function registerSession(record: GlobalSessionRecord): Promise<void>;
|
|
11
|
+
/** Mark a session as finished in the global registry. */
|
|
12
|
+
export declare function markRegistryFinished(sessionId: string, repoRoot: string): Promise<void>;
|
|
13
|
+
/** List all sessions from the global registry, newest first. */
|
|
14
|
+
export declare function listGlobalSessions(): Promise<GlobalSessionRecord[]>;
|
|
15
|
+
//# sourceMappingURL=global-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-registry.d.ts","sourceRoot":"","sources":["../src/global-registry.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+BD,qDAAqD;AACrD,wBAAsB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhF;AAED,yDAAyD;AACzD,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F;AAED,gEAAgE;AAChE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAGzE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global session registry — stores session records across all repos
|
|
3
|
+
* in a central config directory (~/.config/copilot-swarm/sessions.json).
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from "node:fs/promises";
|
|
6
|
+
import * as os from "node:os";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
function registryDir() {
|
|
9
|
+
const xdg = process.env.XDG_CONFIG_HOME;
|
|
10
|
+
const base = xdg && xdg !== "" ? xdg : path.join(os.homedir(), ".config");
|
|
11
|
+
return path.join(base, "copilot-swarm");
|
|
12
|
+
}
|
|
13
|
+
function registryPath() {
|
|
14
|
+
return path.join(registryDir(), "sessions.json");
|
|
15
|
+
}
|
|
16
|
+
async function readRegistry() {
|
|
17
|
+
try {
|
|
18
|
+
const content = await fs.readFile(registryPath(), "utf-8");
|
|
19
|
+
return JSON.parse(content);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return { sessions: [] };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function writeRegistry(data) {
|
|
26
|
+
const dir = registryDir();
|
|
27
|
+
await fs.mkdir(dir, { recursive: true });
|
|
28
|
+
await fs.writeFile(registryPath(), JSON.stringify(data, null, 2));
|
|
29
|
+
}
|
|
30
|
+
/** Register a new session in the global registry. */
|
|
31
|
+
export async function registerSession(record) {
|
|
32
|
+
const data = await readRegistry();
|
|
33
|
+
// Deduplicate by sessionId + repoRoot
|
|
34
|
+
data.sessions = data.sessions.filter((s) => !(s.sessionId === record.sessionId && s.repoRoot === record.repoRoot));
|
|
35
|
+
data.sessions.unshift(record); // Newest first
|
|
36
|
+
await writeRegistry(data);
|
|
37
|
+
}
|
|
38
|
+
/** Mark a session as finished in the global registry. */
|
|
39
|
+
export async function markRegistryFinished(sessionId, repoRoot) {
|
|
40
|
+
const data = await readRegistry();
|
|
41
|
+
for (const s of data.sessions) {
|
|
42
|
+
if (s.sessionId === sessionId && s.repoRoot === repoRoot) {
|
|
43
|
+
s.finished = new Date().toISOString();
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
await writeRegistry(data);
|
|
48
|
+
}
|
|
49
|
+
/** List all sessions from the global registry, newest first. */
|
|
50
|
+
export async function listGlobalSessions() {
|
|
51
|
+
const data = await readRegistry();
|
|
52
|
+
return data.sessions;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=global-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-registry.js","sourceRoot":"","sources":["../src/global-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAelC,SAAS,WAAW;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAkB;IAC7C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA2B;IAC/D,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,sCAAsC;IACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe;IAC9C,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAiB,EAAE,QAAgB;IAC5E,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACzD,CAAC,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC"}
|