@copilot-swarm/core 0.0.6 → 0.0.8
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/engineer.md +2 -1
- package/defaults/agents/pm.md +1 -1
- package/defaults/swarm.config.yaml +2 -0
- package/dist/analysis-engine.d.ts +3 -1
- package/dist/analysis-engine.d.ts.map +1 -1
- package/dist/analysis-engine.js +14 -1
- package/dist/analysis-engine.js.map +1 -1
- package/dist/checkpoint.d.ts +11 -0
- package/dist/checkpoint.d.ts.map +1 -1
- package/dist/checkpoint.js.map +1 -1
- package/dist/checkpoint.test.d.ts +2 -0
- package/dist/checkpoint.test.d.ts.map +1 -0
- package/dist/checkpoint.test.js +137 -0
- package/dist/checkpoint.test.js.map +1 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +75 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +13 -2
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +74 -3
- package/dist/logger.js.map +1 -1
- package/dist/messages.d.ts +15 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +27 -1
- package/dist/messages.js.map +1 -1
- package/dist/orchestrator.d.ts +5 -4
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +64 -2
- package/dist/orchestrator.js.map +1 -1
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +4 -0
- package/dist/paths.js.map +1 -1
- package/dist/pipeline-config.d.ts.map +1 -1
- package/dist/pipeline-config.js +4 -0
- package/dist/pipeline-config.js.map +1 -1
- package/dist/pipeline-config.test.js +37 -0
- package/dist/pipeline-config.test.js.map +1 -1
- package/dist/pipeline-engine.d.ts +6 -1
- package/dist/pipeline-engine.d.ts.map +1 -1
- package/dist/pipeline-engine.js +206 -67
- package/dist/pipeline-engine.js.map +1 -1
- package/dist/pipeline-types.d.ts +2 -0
- package/dist/pipeline-types.d.ts.map +1 -1
- package/dist/planning-engine.d.ts +11 -1
- package/dist/planning-engine.d.ts.map +1 -1
- package/dist/planning-engine.js +42 -4
- package/dist/planning-engine.js.map +1 -1
- package/dist/progress-tracker.d.ts +40 -0
- package/dist/progress-tracker.d.ts.map +1 -0
- package/dist/progress-tracker.js +77 -0
- package/dist/progress-tracker.js.map +1 -0
- package/dist/progress-tracker.test.d.ts +2 -0
- package/dist/progress-tracker.test.d.ts.map +1 -0
- package/dist/progress-tracker.test.js +90 -0
- package/dist/progress-tracker.test.js.map +1 -0
- package/dist/tui-renderer.d.ts +26 -0
- package/dist/tui-renderer.d.ts.map +1 -0
- package/dist/tui-renderer.js +162 -0
- package/dist/tui-renderer.js.map +1 -0
- package/package.json +1 -1
|
@@ -9,4 +9,5 @@ You are a Senior Software Engineer. Your goal is to implement the provided speci
|
|
|
9
9
|
3. **Follow Design:** For frontend tasks, implement the design spec precisely — use the specified components, tokens, and interaction patterns.
|
|
10
10
|
4. **Verify:** Run the build, linter, type checker, and relevant tests using `run_terminal`.
|
|
11
11
|
5. **Fix Defects:** When receiving a QA report, fix all reported issues and verify each fix.
|
|
12
|
-
6. **
|
|
12
|
+
6. **Clarification:** If the specification is ambiguous or missing critical information that blocks implementation, respond with `CLARIFICATION_NEEDED` followed by your specific questions. Use your best judgment for minor ambiguities — only escalate when you truly cannot proceed without an answer.
|
|
13
|
+
7. **Report:** Summarize the files you changed and why.
|
package/defaults/agents/pm.md
CHANGED
|
@@ -7,5 +7,5 @@ You are a Senior Product Manager. Your goal is to analyze requirements and produ
|
|
|
7
7
|
1. **Understand Context:** Use `list_dir` and `read_file` to understand the existing project structure and codebase.
|
|
8
8
|
2. **Write Specs:** Produce specifications with: problem statement, acceptance criteria, technical requirements, edge cases, and out-of-scope items.
|
|
9
9
|
3. **Decompose:** When asked, break specs into independent sub-tasks. Mark frontend-related tasks with `[FRONTEND]`.
|
|
10
|
-
4. **Clarify:** When other agents request clarification, provide precise, unambiguous answers grounded in the original requirements.
|
|
10
|
+
4. **Clarify:** When other agents request clarification, provide precise, unambiguous answers grounded in the original requirements. If the answer is not in the requirements, make a reasonable assumption, state it clearly, and explain your reasoning.
|
|
11
11
|
5. **Report:** Summarize decisions and rationale.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { SwarmConfig } from "./config.js";
|
|
2
2
|
import type { Logger } from "./logger.js";
|
|
3
3
|
import type { PipelineConfig } from "./pipeline-types.js";
|
|
4
|
+
import type { ProgressTracker } from "./progress-tracker.js";
|
|
4
5
|
export declare class AnalysisEngine {
|
|
5
6
|
private readonly config;
|
|
6
7
|
private readonly pipeline;
|
|
7
8
|
private readonly logger;
|
|
9
|
+
private readonly tracker?;
|
|
8
10
|
private readonly sessions;
|
|
9
|
-
constructor(config: SwarmConfig, pipeline: PipelineConfig, logger: Logger);
|
|
11
|
+
constructor(config: SwarmConfig, pipeline: PipelineConfig, logger: Logger, tracker?: ProgressTracker | undefined);
|
|
10
12
|
start(): Promise<void>;
|
|
11
13
|
stop(): Promise<void>;
|
|
12
14
|
execute(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-engine.d.ts","sourceRoot":"","sources":["../src/analysis-engine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"analysis-engine.d.ts","sourceRoot":"","sources":["../src/analysis-engine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoE7D,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAN3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAGvB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,YAAA;IAKtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAiChB,sBAAsB;CAwDrC"}
|
package/dist/analysis-engine.js
CHANGED
|
@@ -69,11 +69,13 @@ export class AnalysisEngine {
|
|
|
69
69
|
config;
|
|
70
70
|
pipeline;
|
|
71
71
|
logger;
|
|
72
|
+
tracker;
|
|
72
73
|
sessions;
|
|
73
|
-
constructor(config, pipeline, logger) {
|
|
74
|
+
constructor(config, pipeline, logger, tracker) {
|
|
74
75
|
this.config = config;
|
|
75
76
|
this.pipeline = pipeline;
|
|
76
77
|
this.logger = logger;
|
|
78
|
+
this.tracker = tracker;
|
|
77
79
|
this.sessions = new SessionManager(config, pipeline, logger);
|
|
78
80
|
}
|
|
79
81
|
async start() {
|
|
@@ -84,11 +86,22 @@ export class AnalysisEngine {
|
|
|
84
86
|
}
|
|
85
87
|
async execute() {
|
|
86
88
|
this.logger.info(msg.analyzeStart);
|
|
89
|
+
const phases = [{ phase: "analyze-architect" }, { phase: "analyze-review" }];
|
|
90
|
+
if (this.pipeline.reviewModel !== this.pipeline.primaryModel) {
|
|
91
|
+
phases.push({ phase: "analyze-architect" }, { phase: "analyze-review" });
|
|
92
|
+
}
|
|
93
|
+
this.tracker?.initPhases(phases);
|
|
87
94
|
// Phase 1: Primary model — architect drafts, senior engineer reviews
|
|
95
|
+
this.tracker?.activatePhase("analyze-architect-0");
|
|
88
96
|
let analysis = await this.runArchitectReviewLoop(this.pipeline.primaryModel);
|
|
97
|
+
this.tracker?.completePhase("analyze-architect-0");
|
|
98
|
+
this.tracker?.completePhase("analyze-review-1");
|
|
89
99
|
// Phase 2: Cross-model — same flow with the review model
|
|
90
100
|
if (this.pipeline.reviewModel !== this.pipeline.primaryModel) {
|
|
101
|
+
this.tracker?.activatePhase("analyze-architect-2");
|
|
91
102
|
analysis = await this.runArchitectReviewLoop(this.pipeline.reviewModel, analysis);
|
|
103
|
+
this.tracker?.completePhase("analyze-architect-2");
|
|
104
|
+
this.tracker?.completePhase("analyze-review-3");
|
|
92
105
|
}
|
|
93
106
|
// Save result
|
|
94
107
|
const dir = analysisDir(this.config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-engine.js","sourceRoot":"","sources":["../src/analysis-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"analysis-engine.js","sourceRoot":"","sources":["../src/analysis-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/checkpoint.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { SwarmConfig } from "./config.js";
|
|
2
|
+
/** Snapshot of a single review/QA iteration's progress. */
|
|
3
|
+
export interface IterationSnapshot {
|
|
4
|
+
content: string;
|
|
5
|
+
completedIterations: number;
|
|
6
|
+
}
|
|
2
7
|
export interface PipelineCheckpoint {
|
|
3
8
|
completedPhases: string[];
|
|
4
9
|
spec: string;
|
|
@@ -7,6 +12,12 @@ export interface PipelineCheckpoint {
|
|
|
7
12
|
streamResults: string[];
|
|
8
13
|
issueBody: string;
|
|
9
14
|
runId: string;
|
|
15
|
+
/** Phase key that was actively executing when the checkpoint was saved. */
|
|
16
|
+
activePhase?: string;
|
|
17
|
+
/** Draft content produced by the main agent before review loops began. */
|
|
18
|
+
phaseDraft?: string;
|
|
19
|
+
/** Iteration progress within review/QA loops, keyed by stable identifiers. */
|
|
20
|
+
iterationProgress?: Record<string, IterationSnapshot>;
|
|
10
21
|
}
|
|
11
22
|
export declare function saveCheckpoint(config: SwarmConfig, checkpoint: PipelineCheckpoint): Promise<void>;
|
|
12
23
|
export declare function loadCheckpoint(config: SwarmConfig): Promise<PipelineCheckpoint | null>;
|
package/dist/checkpoint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACvD;AAqBD,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvG;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAQ5F;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxE"}
|
package/dist/checkpoint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAwBlE,mGAAmG;AACnG,KAAK,UAAU,cAAc,CAAC,MAAmB;IAC/C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAmB;IACnD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB,EAAE,UAA8B;IACtF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAElE,wBAAwB;IACxB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAmB;IACtD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAmB;IACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.test.d.ts","sourceRoot":"","sources":["../src/checkpoint.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { clearCheckpoint, loadCheckpoint, saveCheckpoint } from "./checkpoint.js";
|
|
6
|
+
function makeConfig(runId) {
|
|
7
|
+
const tmpDir = path.join(os.tmpdir(), `checkpoint-test-${Date.now()}`);
|
|
8
|
+
return {
|
|
9
|
+
command: "run",
|
|
10
|
+
repoRoot: tmpDir,
|
|
11
|
+
verbose: false,
|
|
12
|
+
resume: false,
|
|
13
|
+
tui: false,
|
|
14
|
+
issueBody: "test",
|
|
15
|
+
agentsDir: ".github/agents",
|
|
16
|
+
swarmDir: ".swarm",
|
|
17
|
+
runId,
|
|
18
|
+
sessionTimeoutMs: 300_000,
|
|
19
|
+
maxRetries: 2,
|
|
20
|
+
maxAutoResume: 3,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const cleanupDirs = [];
|
|
24
|
+
afterEach(async () => {
|
|
25
|
+
for (const dir of cleanupDirs) {
|
|
26
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
27
|
+
}
|
|
28
|
+
cleanupDirs.length = 0;
|
|
29
|
+
});
|
|
30
|
+
describe("checkpoint round-trip", () => {
|
|
31
|
+
it("saves and loads a basic checkpoint", async () => {
|
|
32
|
+
const config = makeConfig("test-basic");
|
|
33
|
+
cleanupDirs.push(config.repoRoot);
|
|
34
|
+
const checkpoint = {
|
|
35
|
+
completedPhases: ["spec-0", "decompose-1"],
|
|
36
|
+
spec: "test spec",
|
|
37
|
+
tasks: ["task1", "task2"],
|
|
38
|
+
designSpec: "design",
|
|
39
|
+
streamResults: ["result1"],
|
|
40
|
+
issueBody: "test issue",
|
|
41
|
+
runId: "test-basic",
|
|
42
|
+
};
|
|
43
|
+
await saveCheckpoint(config, checkpoint);
|
|
44
|
+
const loaded = await loadCheckpoint(config);
|
|
45
|
+
expect(loaded).toEqual(checkpoint);
|
|
46
|
+
});
|
|
47
|
+
it("saves and loads iteration progress", async () => {
|
|
48
|
+
const config = makeConfig("test-iter");
|
|
49
|
+
cleanupDirs.push(config.repoRoot);
|
|
50
|
+
const checkpoint = {
|
|
51
|
+
completedPhases: ["spec-0"],
|
|
52
|
+
spec: "spec content",
|
|
53
|
+
tasks: ["task1"],
|
|
54
|
+
designSpec: "",
|
|
55
|
+
streamResults: [],
|
|
56
|
+
issueBody: "issue",
|
|
57
|
+
runId: "test-iter",
|
|
58
|
+
activePhase: "design-2",
|
|
59
|
+
phaseDraft: "initial design draft",
|
|
60
|
+
iterationProgress: {
|
|
61
|
+
"review-0": { content: "revised after iteration 1", completedIterations: 1 },
|
|
62
|
+
"review-1": { content: "revised after iteration 2", completedIterations: 2 },
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
await saveCheckpoint(config, checkpoint);
|
|
66
|
+
const loaded = await loadCheckpoint(config);
|
|
67
|
+
expect(loaded).toEqual(checkpoint);
|
|
68
|
+
expect(loaded?.activePhase).toBe("design-2");
|
|
69
|
+
expect(loaded?.phaseDraft).toBe("initial design draft");
|
|
70
|
+
expect(loaded?.iterationProgress?.["review-0"]).toEqual({
|
|
71
|
+
content: "revised after iteration 1",
|
|
72
|
+
completedIterations: 1,
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
it("saves and loads stream-level iteration progress", async () => {
|
|
76
|
+
const config = makeConfig("test-stream-iter");
|
|
77
|
+
cleanupDirs.push(config.repoRoot);
|
|
78
|
+
const checkpoint = {
|
|
79
|
+
completedPhases: ["spec-0", "decompose-1"],
|
|
80
|
+
spec: "spec",
|
|
81
|
+
tasks: ["task1", "task2"],
|
|
82
|
+
designSpec: "design",
|
|
83
|
+
streamResults: ["done", ""],
|
|
84
|
+
issueBody: "issue",
|
|
85
|
+
runId: "test-stream-iter",
|
|
86
|
+
activePhase: "implement-3",
|
|
87
|
+
iterationProgress: {
|
|
88
|
+
"stream-0-code": { content: "initial code for stream 0", completedIterations: 0 },
|
|
89
|
+
"stream-1-code": { content: "initial code for stream 1", completedIterations: 0 },
|
|
90
|
+
"stream-1-review-0": { content: "revised stream 1 code", completedIterations: 1 },
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
await saveCheckpoint(config, checkpoint);
|
|
94
|
+
const loaded = await loadCheckpoint(config);
|
|
95
|
+
expect(loaded?.iterationProgress?.["stream-1-review-0"]).toEqual({
|
|
96
|
+
content: "revised stream 1 code",
|
|
97
|
+
completedIterations: 1,
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
it("omits optional fields when not set", async () => {
|
|
101
|
+
const config = makeConfig("test-no-iter");
|
|
102
|
+
cleanupDirs.push(config.repoRoot);
|
|
103
|
+
const checkpoint = {
|
|
104
|
+
completedPhases: [],
|
|
105
|
+
spec: "",
|
|
106
|
+
tasks: [],
|
|
107
|
+
designSpec: "",
|
|
108
|
+
streamResults: [],
|
|
109
|
+
issueBody: "issue",
|
|
110
|
+
runId: "test-no-iter",
|
|
111
|
+
};
|
|
112
|
+
await saveCheckpoint(config, checkpoint);
|
|
113
|
+
const loaded = await loadCheckpoint(config);
|
|
114
|
+
expect(loaded?.activePhase).toBeUndefined();
|
|
115
|
+
expect(loaded?.phaseDraft).toBeUndefined();
|
|
116
|
+
expect(loaded?.iterationProgress).toBeUndefined();
|
|
117
|
+
});
|
|
118
|
+
it("clears checkpoint", async () => {
|
|
119
|
+
const config = makeConfig("test-clear");
|
|
120
|
+
cleanupDirs.push(config.repoRoot);
|
|
121
|
+
await saveCheckpoint(config, {
|
|
122
|
+
completedPhases: ["spec-0"],
|
|
123
|
+
spec: "s",
|
|
124
|
+
tasks: [],
|
|
125
|
+
designSpec: "",
|
|
126
|
+
streamResults: [],
|
|
127
|
+
issueBody: "i",
|
|
128
|
+
runId: "test-clear",
|
|
129
|
+
activePhase: "design-1",
|
|
130
|
+
iterationProgress: { "review-0": { content: "c", completedIterations: 1 } },
|
|
131
|
+
});
|
|
132
|
+
await clearCheckpoint(config);
|
|
133
|
+
const loaded = await loadCheckpoint(config);
|
|
134
|
+
expect(loaded).toBeNull();
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=checkpoint.test.js.map
|
|
@@ -0,0 +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,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGlF,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,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;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAa,EAAE,CAAC;AAEjC,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,UAAU,GAAuB;YACrC,eAAe,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;YAC1C,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YACzB,UAAU,EAAE,QAAQ;YACpB,aAAa,EAAE,CAAC,SAAS,CAAC;YAC1B,SAAS,EAAE,YAAY;YACvB,KAAK,EAAE,YAAY;SACpB,CAAC;QAEF,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACvC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,UAAU,GAAuB;YACrC,eAAe,EAAE,CAAC,QAAQ,CAAC;YAC3B,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,UAAU;YACvB,UAAU,EAAE,sBAAsB;YAClC,iBAAiB,EAAE;gBACjB,UAAU,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,CAAC,EAAE;gBAC5E,UAAU,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,CAAC,EAAE;aAC7E;SACF,CAAC;QAEF,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YACtD,OAAO,EAAE,2BAA2B;YACpC,mBAAmB,EAAE,CAAC;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC9C,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,UAAU,GAAuB;YACrC,eAAe,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;YAC1C,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YACzB,UAAU,EAAE,QAAQ;YACpB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3B,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,aAAa;YAC1B,iBAAiB,EAAE;gBACjB,eAAe,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,CAAC,EAAE;gBACjF,eAAe,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,CAAC,EAAE;gBACjF,mBAAmB,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,CAAC,EAAE;aAClF;SACF,CAAC;QAEF,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/D,OAAO,EAAE,uBAAuB;YAChC,mBAAmB,EAAE,CAAC;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,UAAU,GAAuB;YACrC,eAAe,EAAE,EAAE;YACnB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,cAAc;SACtB,CAAC;QAEF,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,cAAc,CAAC,MAAM,EAAE;YAC3B,eAAe,EAAE,CAAC,QAAQ,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,UAAU;YACvB,iBAAiB,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,EAAE,EAAE;SAC5E,CAAC,CAAC;QAEH,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AA+HtD;;;;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,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;CAChC;AAED,wBAAgB,UAAU,IAAI,WAAW,CAmCxC"}
|
package/dist/config.js
CHANGED
|
@@ -48,6 +48,7 @@ Options:
|
|
|
48
48
|
-p, --plan <file> Use a plan file as input (reads the refined requirements section)
|
|
49
49
|
-f, --file <file> Read prompt from a file instead of inline text
|
|
50
50
|
-r, --resume Resume from the last checkpoint (skip completed phases)
|
|
51
|
+
--no-tui Disable TUI dashboard (use plain log output)
|
|
51
52
|
-V, --version Show version number
|
|
52
53
|
-h, --help Show this help message
|
|
53
54
|
|
|
@@ -71,6 +72,7 @@ function parseCliArgs() {
|
|
|
71
72
|
help: { type: "boolean", short: "h", default: false },
|
|
72
73
|
version: { type: "boolean", short: "V", default: false },
|
|
73
74
|
resume: { type: "boolean", short: "r", default: false },
|
|
75
|
+
"no-tui": { type: "boolean", default: false },
|
|
74
76
|
plan: { type: "string", short: "p" },
|
|
75
77
|
file: { type: "string", short: "f" },
|
|
76
78
|
},
|
|
@@ -97,6 +99,7 @@ function parseCliArgs() {
|
|
|
97
99
|
planFile: values.plan,
|
|
98
100
|
promptFile: values.file,
|
|
99
101
|
resume: values.resume,
|
|
102
|
+
noTui: values["no-tui"],
|
|
100
103
|
};
|
|
101
104
|
}
|
|
102
105
|
/** Extract the "Refined Requirements" section from a plan file. */
|
|
@@ -151,6 +154,7 @@ export function loadConfig() {
|
|
|
151
154
|
repoRoot,
|
|
152
155
|
verbose: cli.verbose || readEnvBoolean("VERBOSE", false),
|
|
153
156
|
resume: cli.resume,
|
|
157
|
+
tui: !cli.noTui && !cli.verbose && process.stdout.isTTY === true,
|
|
154
158
|
issueBody: issueBody ?? "",
|
|
155
159
|
agentsDir: readEnvString("AGENTS_DIR", ".github/agents"),
|
|
156
160
|
swarmDir,
|
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;AAEtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAEzF,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,QAAiB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM,KAAK,+BAA+B,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,QAAgB;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM,KAAK,gCAAgC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,96 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import * as path from "node:path";
|
|
2
3
|
import { loadConfig } from "./config.js";
|
|
3
4
|
import { Logger } from "./logger.js";
|
|
4
5
|
import { msg } from "./messages.js";
|
|
5
6
|
import { SwarmOrchestrator } from "./orchestrator.js";
|
|
7
|
+
import { analysisDir, plansDir } from "./paths.js";
|
|
6
8
|
import { PlanningEngine } from "./planning-engine.js";
|
|
9
|
+
import { ProgressTracker } from "./progress-tracker.js";
|
|
10
|
+
import { TuiRenderer } from "./tui-renderer.js";
|
|
7
11
|
const config = loadConfig();
|
|
8
|
-
const logger = new Logger(config.verbose);
|
|
12
|
+
const logger = new Logger(config.verbose, config.runId);
|
|
13
|
+
const showLogOnError = (err) => {
|
|
14
|
+
if (logger.logFilePath) {
|
|
15
|
+
console.error(msg.logFileHint(logger.logFilePath));
|
|
16
|
+
}
|
|
17
|
+
throw err;
|
|
18
|
+
};
|
|
19
|
+
function fmtElapsed(ms) {
|
|
20
|
+
const sec = Math.floor(ms / 1000);
|
|
21
|
+
const m = Math.floor(sec / 60);
|
|
22
|
+
const s = sec % 60;
|
|
23
|
+
return `${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
|
|
24
|
+
}
|
|
25
|
+
function printSummary(heading, outputDir, tracker) {
|
|
26
|
+
console.log("");
|
|
27
|
+
console.log(msg.summaryDivider);
|
|
28
|
+
console.log(heading);
|
|
29
|
+
if (tracker) {
|
|
30
|
+
const done = tracker.phases.filter((p) => p.status === "done").length;
|
|
31
|
+
const skipped = tracker.phases.filter((p) => p.status === "skipped").length;
|
|
32
|
+
console.log(msg.summaryPhases(done, tracker.totalPhaseCount, skipped));
|
|
33
|
+
}
|
|
34
|
+
console.log(msg.summaryOutput(outputDir));
|
|
35
|
+
if (logger.logFilePath) {
|
|
36
|
+
console.log(msg.logFileHint(logger.logFilePath));
|
|
37
|
+
}
|
|
38
|
+
console.log(msg.summaryDivider);
|
|
39
|
+
}
|
|
9
40
|
if (config.command === "plan") {
|
|
10
41
|
const pipeline = (await import("./pipeline-config.js")).loadPipelineConfig(config.repoRoot);
|
|
11
|
-
|
|
42
|
+
let tracker;
|
|
43
|
+
let renderer;
|
|
44
|
+
if (config.tui) {
|
|
45
|
+
tracker = new ProgressTracker();
|
|
46
|
+
tracker.runId = config.runId;
|
|
47
|
+
renderer = new TuiRenderer(tracker);
|
|
48
|
+
logger.setTracker(tracker);
|
|
49
|
+
}
|
|
50
|
+
const startMs = Date.now();
|
|
51
|
+
const planner = new PlanningEngine(config, pipeline, logger, tracker, renderer);
|
|
52
|
+
renderer?.start();
|
|
12
53
|
planner
|
|
13
54
|
.start()
|
|
14
55
|
.then(() => planner.execute())
|
|
15
|
-
.
|
|
56
|
+
.catch(showLogOnError)
|
|
57
|
+
.finally(() => {
|
|
58
|
+
renderer?.stop();
|
|
59
|
+
if (tracker)
|
|
60
|
+
logger.setTracker(null);
|
|
61
|
+
planner.stop();
|
|
62
|
+
const elapsed = fmtElapsed(tracker?.elapsedMs ?? Date.now() - startMs);
|
|
63
|
+
const outDir = path.relative(config.repoRoot, plansDir(config));
|
|
64
|
+
printSummary(msg.summaryPlanComplete(elapsed), outDir, tracker);
|
|
65
|
+
});
|
|
16
66
|
}
|
|
17
67
|
else if (config.command === "analyze") {
|
|
18
68
|
const pipeline = (await import("./pipeline-config.js")).loadPipelineConfig(config.repoRoot);
|
|
19
69
|
const { AnalysisEngine } = await import("./analysis-engine.js");
|
|
20
|
-
|
|
70
|
+
let tracker;
|
|
71
|
+
let renderer;
|
|
72
|
+
if (config.tui) {
|
|
73
|
+
tracker = new ProgressTracker();
|
|
74
|
+
tracker.runId = config.runId;
|
|
75
|
+
renderer = new TuiRenderer(tracker);
|
|
76
|
+
logger.setTracker(tracker);
|
|
77
|
+
}
|
|
78
|
+
const startMs = Date.now();
|
|
79
|
+
const analyzer = new AnalysisEngine(config, pipeline, logger, tracker);
|
|
80
|
+
renderer?.start();
|
|
21
81
|
analyzer
|
|
22
82
|
.start()
|
|
23
83
|
.then(() => analyzer.execute())
|
|
24
|
-
.
|
|
84
|
+
.catch(showLogOnError)
|
|
85
|
+
.finally(() => {
|
|
86
|
+
renderer?.stop();
|
|
87
|
+
if (tracker)
|
|
88
|
+
logger.setTracker(null);
|
|
89
|
+
analyzer.stop();
|
|
90
|
+
const elapsed = fmtElapsed(tracker?.elapsedMs ?? Date.now() - startMs);
|
|
91
|
+
const outDir = path.relative(config.repoRoot, analysisDir(config));
|
|
92
|
+
printSummary(msg.summaryAnalyzeComplete(elapsed), outDir, tracker);
|
|
93
|
+
});
|
|
25
94
|
}
|
|
26
95
|
else {
|
|
27
96
|
logger.info(msg.startingSwarm);
|
|
@@ -29,6 +98,7 @@ else {
|
|
|
29
98
|
swarm
|
|
30
99
|
.start()
|
|
31
100
|
.then(() => swarm.execute())
|
|
101
|
+
.catch(showLogOnError)
|
|
32
102
|
.finally(() => swarm.stop());
|
|
33
103
|
}
|
|
34
104
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import type { ProgressTracker } from "./progress-tracker.js";
|
|
1
2
|
/** Thin logging wrapper for centralized output control. */
|
|
2
3
|
export declare class Logger {
|
|
3
4
|
private readonly verbose;
|
|
4
5
|
private spinnerInterval;
|
|
5
6
|
private spinnerFrame;
|
|
7
|
+
private tracker;
|
|
8
|
+
private readonly logFile;
|
|
6
9
|
private static readonly SPINNER_FRAMES;
|
|
7
|
-
constructor(verbose: boolean);
|
|
10
|
+
constructor(verbose: boolean, runId: string);
|
|
11
|
+
/** Try to create the log file. Returns the path on success, null on failure. */
|
|
12
|
+
private initLogFile;
|
|
13
|
+
/** Append a line to the log file (fire-and-forget). */
|
|
14
|
+
private appendLog;
|
|
15
|
+
/** Path to the current run's log file, or null if logging failed to initialize. */
|
|
16
|
+
get logFilePath(): string | null;
|
|
17
|
+
/** Attach a progress tracker — routes all output to the TUI. */
|
|
18
|
+
setTracker(tracker: ProgressTracker | null): void;
|
|
8
19
|
info(message: string): void;
|
|
9
20
|
warn(message: string): void;
|
|
10
21
|
error(message: string, err?: unknown): void;
|
|
@@ -12,7 +23,7 @@ export declare class Logger {
|
|
|
12
23
|
write(text: string): void;
|
|
13
24
|
/** Write a newline to stdout. Used after streaming completes. */
|
|
14
25
|
newline(): void;
|
|
15
|
-
/** Log only when verbose mode is enabled. */
|
|
26
|
+
/** Log only when verbose mode is enabled. Always written to log file. */
|
|
16
27
|
debug(message: string): void;
|
|
17
28
|
/** Show an animated spinner with a message. No-op in verbose mode (streaming output is enough). */
|
|
18
29
|
startSpinner(message: string): void;
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,2DAA2D;AAC3D,qBAAa,MAAM;IAQf,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAsD;gBAGzE,OAAO,EAAE,OAAO,EACjC,KAAK,EAAE,MAAM;IAKf,gFAAgF;IAChF,OAAO,CAAC,WAAW;IAWnB,uDAAuD;IACvD,OAAO,CAAC,SAAS;IAUjB,mFAAmF;IACnF,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,gEAAgE;IAChE,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAIjD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS3B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;IAW3C,wEAAwE;IACxE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB,iEAAiE;IACjE,OAAO,IAAI,IAAI;IAOf,yEAAyE;IACzE,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ5B,mGAAmG;IACnG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAiBnC,2CAA2C;IAC3C,WAAW,IAAI,IAAI;CAWpB"}
|