millhouse 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -0
- package/README.md +248 -0
- package/commands/millhouse.md +223 -0
- package/dist/analysis/graph-builder.d.ts +42 -0
- package/dist/analysis/graph-builder.d.ts.map +1 -0
- package/dist/analysis/graph-builder.js +98 -0
- package/dist/analysis/graph-builder.js.map +1 -0
- package/dist/analysis/issue-analyzer.d.ts +20 -0
- package/dist/analysis/issue-analyzer.d.ts.map +1 -0
- package/dist/analysis/issue-analyzer.js +167 -0
- package/dist/analysis/issue-analyzer.js.map +1 -0
- package/dist/analysis/plan-parser.d.ts +8 -0
- package/dist/analysis/plan-parser.d.ts.map +1 -0
- package/dist/analysis/plan-parser.js +112 -0
- package/dist/analysis/plan-parser.js.map +1 -0
- package/dist/cli/cleanup.d.ts +20 -0
- package/dist/cli/cleanup.d.ts.map +1 -0
- package/dist/cli/cleanup.js +186 -0
- package/dist/cli/cleanup.js.map +1 -0
- package/dist/cli/commands/clean.d.ts +2 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +16 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +2 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +82 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/run.d.ts +10 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +352 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +6 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +74 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/status.d.ts +7 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +83 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/progress-display.d.ts +93 -0
- package/dist/cli/progress-display.d.ts.map +1 -0
- package/dist/cli/progress-display.js +318 -0
- package/dist/cli/progress-display.js.map +1 -0
- package/dist/core/orchestrator.d.ts +79 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +389 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/scheduler.d.ts +72 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +234 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/execution/claude-runner.d.ts +41 -0
- package/dist/execution/claude-runner.d.ts.map +1 -0
- package/dist/execution/claude-runner.js +241 -0
- package/dist/execution/claude-runner.js.map +1 -0
- package/dist/execution/worktree-manager.d.ts +52 -0
- package/dist/execution/worktree-manager.d.ts.map +1 -0
- package/dist/execution/worktree-manager.js +208 -0
- package/dist/execution/worktree-manager.js.map +1 -0
- package/dist/github/client.d.ts +27 -0
- package/dist/github/client.d.ts.map +1 -0
- package/dist/github/client.js +178 -0
- package/dist/github/client.js.map +1 -0
- package/dist/github/issue-discoverer.d.ts +20 -0
- package/dist/github/issue-discoverer.d.ts.map +1 -0
- package/dist/github/issue-discoverer.js +83 -0
- package/dist/github/issue-discoverer.js.map +1 -0
- package/dist/github/label-manager.d.ts +44 -0
- package/dist/github/label-manager.d.ts.map +1 -0
- package/dist/github/label-manager.js +93 -0
- package/dist/github/label-manager.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/storage/config.d.ts +4 -0
- package/dist/storage/config.d.ts.map +1 -0
- package/dist/storage/config.js +25 -0
- package/dist/storage/config.js.map +1 -0
- package/dist/storage/json-store.d.ts +20 -0
- package/dist/storage/json-store.d.ts.map +1 -0
- package/dist/storage/json-store.js +92 -0
- package/dist/storage/json-store.js.map +1 -0
- package/dist/types.d.ts +142 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +36 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface RunOptions {
|
|
2
|
+
concurrency?: string;
|
|
3
|
+
display?: 'compact' | 'detailed';
|
|
4
|
+
dryRun?: boolean;
|
|
5
|
+
dangerouslySkipPermissions?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function runPlanCommand(plan: string | undefined, options: RunOptions): Promise<void>;
|
|
8
|
+
export declare function runIssuesCommand(numbers: string | undefined, options: RunOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AA0BA,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAqKD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFjG;AAGD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4HtG"}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import readline from 'node:readline';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import { promises as fs } from 'node:fs';
|
|
7
|
+
import { Orchestrator } from '../../core/orchestrator.js';
|
|
8
|
+
import { loadConfig } from '../../storage/config.js';
|
|
9
|
+
import { JsonStore } from '../../storage/json-store.js';
|
|
10
|
+
import { GitHubClient } from '../../github/client.js';
|
|
11
|
+
import { IssueDiscoverer } from '../../github/issue-discoverer.js';
|
|
12
|
+
import { LabelManager } from '../../github/label-manager.js';
|
|
13
|
+
import { IssueAnalyzer } from '../../analysis/issue-analyzer.js';
|
|
14
|
+
import { PlanParser } from '../../analysis/plan-parser.js';
|
|
15
|
+
import { GraphBuilder } from '../../analysis/graph-builder.js';
|
|
16
|
+
import { WorktreeManager } from '../../execution/worktree-manager.js';
|
|
17
|
+
import { ClaudeRunner } from '../../execution/claude-runner.js';
|
|
18
|
+
import { Scheduler } from '../../core/scheduler.js';
|
|
19
|
+
import { detectLeftoverState, cleanupAllState, displayLeftoverState, } from '../cleanup.js';
|
|
20
|
+
import { resumeCommand } from './resume.js';
|
|
21
|
+
import { ProgressDisplay } from '../progress-display.js';
|
|
22
|
+
async function promptUser(question) {
|
|
23
|
+
const rl = readline.createInterface({
|
|
24
|
+
input: process.stdin,
|
|
25
|
+
output: process.stdout,
|
|
26
|
+
});
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
rl.question(question, (answer) => {
|
|
29
|
+
rl.close();
|
|
30
|
+
resolve(answer.trim().toLowerCase());
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async function checkLeftoverState() {
|
|
35
|
+
const leftoverState = await detectLeftoverState();
|
|
36
|
+
if (leftoverState.hasLeftovers) {
|
|
37
|
+
displayLeftoverState(leftoverState);
|
|
38
|
+
let prompt = 'What would you like to do?\n';
|
|
39
|
+
if (leftoverState.interruptedRuns.length > 0) {
|
|
40
|
+
prompt += ' [r] Resume the most recent interrupted run\n';
|
|
41
|
+
}
|
|
42
|
+
prompt += ' [c] Clean up and start fresh\n';
|
|
43
|
+
prompt += ' [q] Quit\n';
|
|
44
|
+
prompt += 'Choice: ';
|
|
45
|
+
const choice = await promptUser(prompt);
|
|
46
|
+
if (choice === 'r' && leftoverState.interruptedRuns.length > 0) {
|
|
47
|
+
const mostRecent = leftoverState.interruptedRuns.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime())[0];
|
|
48
|
+
console.log(chalk.blue(`\nResuming run: ${mostRecent.id}\n`));
|
|
49
|
+
await resumeCommand(mostRecent.id);
|
|
50
|
+
return false; // Don't continue with new run
|
|
51
|
+
}
|
|
52
|
+
else if (choice === 'c') {
|
|
53
|
+
const spinner = ora('Cleaning up...').start();
|
|
54
|
+
await cleanupAllState();
|
|
55
|
+
spinner.succeed('Cleaned up previous state');
|
|
56
|
+
console.log('');
|
|
57
|
+
return true; // Continue with new run
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.log(chalk.gray('Exiting.'));
|
|
61
|
+
process.exit(0);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return true; // No leftovers, continue
|
|
65
|
+
}
|
|
66
|
+
async function findProjectPlans() {
|
|
67
|
+
// Convert cwd to Claude project path format: /Users/dave/src/foo -> -Users-dave-src-foo
|
|
68
|
+
const cwd = process.cwd();
|
|
69
|
+
const projectDirName = cwd.replace(/\//g, '-');
|
|
70
|
+
const projectDir = path.join(os.homedir(), '.claude', 'projects', projectDirName);
|
|
71
|
+
const planRefs = new Set();
|
|
72
|
+
try {
|
|
73
|
+
const files = await fs.readdir(projectDir);
|
|
74
|
+
const jsonlFiles = files.filter(f => f.endsWith('.jsonl'));
|
|
75
|
+
// Search transcript files for plan references
|
|
76
|
+
for (const file of jsonlFiles) {
|
|
77
|
+
try {
|
|
78
|
+
const content = await fs.readFile(path.join(projectDir, file), 'utf-8');
|
|
79
|
+
// Match plan file paths like .claude/plans/name.md or ~/.claude/plans/name.md
|
|
80
|
+
const matches = content.match(/\.claude\/plans\/[a-z-]+\.md/g);
|
|
81
|
+
if (matches) {
|
|
82
|
+
for (const match of matches) {
|
|
83
|
+
// Extract just the filename
|
|
84
|
+
const filename = match.split('/').pop();
|
|
85
|
+
if (filename && !filename.includes('-agent-')) {
|
|
86
|
+
// Skip agent subplans
|
|
87
|
+
planRefs.add(filename);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Skip files we can't read
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Project directory doesn't exist
|
|
99
|
+
}
|
|
100
|
+
return Array.from(planRefs);
|
|
101
|
+
}
|
|
102
|
+
async function findMostRecentPlan() {
|
|
103
|
+
const plansDir = path.join(os.homedir(), '.claude', 'plans');
|
|
104
|
+
// First, get plans associated with this project
|
|
105
|
+
const projectPlans = await findProjectPlans();
|
|
106
|
+
try {
|
|
107
|
+
const files = await fs.readdir(plansDir);
|
|
108
|
+
const mdFiles = files.filter(f => f.endsWith('.md'));
|
|
109
|
+
if (mdFiles.length === 0) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
// Filter to only project-specific plans if we found any
|
|
113
|
+
const relevantFiles = projectPlans.length > 0
|
|
114
|
+
? mdFiles.filter(f => projectPlans.includes(f))
|
|
115
|
+
: mdFiles;
|
|
116
|
+
if (relevantFiles.length === 0) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
const fileStats = await Promise.all(relevantFiles.map(async (f) => {
|
|
120
|
+
const fullPath = path.join(plansDir, f);
|
|
121
|
+
const stat = await fs.stat(fullPath);
|
|
122
|
+
return { path: fullPath, mtime: stat.mtime };
|
|
123
|
+
}));
|
|
124
|
+
fileStats.sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
|
|
125
|
+
return fileStats[0].path;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function resolvePlanPath(planPath) {
|
|
132
|
+
// If no plan specified, find most recent plan
|
|
133
|
+
if (!planPath) {
|
|
134
|
+
const recentPlan = await findMostRecentPlan();
|
|
135
|
+
if (!recentPlan) {
|
|
136
|
+
throw new Error('No plan files found in ~/.claude/plans/');
|
|
137
|
+
}
|
|
138
|
+
return recentPlan;
|
|
139
|
+
}
|
|
140
|
+
// First, try the path as given
|
|
141
|
+
try {
|
|
142
|
+
await fs.access(planPath);
|
|
143
|
+
return planPath;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Not found locally
|
|
147
|
+
}
|
|
148
|
+
// If it's just a filename (no directory), check ~/.claude/plans/
|
|
149
|
+
if (!planPath.includes(path.sep) && !planPath.startsWith('.')) {
|
|
150
|
+
const claudePlansPath = path.join(os.homedir(), '.claude', 'plans', planPath);
|
|
151
|
+
try {
|
|
152
|
+
await fs.access(claudePlansPath);
|
|
153
|
+
return claudePlansPath;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Not found there either
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Return original path - will fail with helpful error
|
|
160
|
+
return planPath;
|
|
161
|
+
}
|
|
162
|
+
// Plan mode: millhouse run [plan-file]
|
|
163
|
+
export async function runPlanCommand(plan, options) {
|
|
164
|
+
const shouldContinue = await checkLeftoverState();
|
|
165
|
+
if (!shouldContinue)
|
|
166
|
+
return;
|
|
167
|
+
const spinner = ora('Initializing Millhouse (plan mode)...').start();
|
|
168
|
+
try {
|
|
169
|
+
const concurrency = parseInt(options.concurrency || '8', 10);
|
|
170
|
+
// Load plan from file (check ~/.claude/plans/ if not found locally)
|
|
171
|
+
spinner.text = 'Loading plan...';
|
|
172
|
+
const planPath = await resolvePlanPath(plan);
|
|
173
|
+
const planContent = await fs.readFile(planPath, 'utf-8');
|
|
174
|
+
spinner.succeed(`Loaded plan from ${planPath}`);
|
|
175
|
+
// Parse plan into work items
|
|
176
|
+
console.log(chalk.blue('\nš Analyzing plan...'));
|
|
177
|
+
const planParser = new PlanParser();
|
|
178
|
+
const analyzedIssues = await planParser.parse(planContent);
|
|
179
|
+
console.log(chalk.green(` ā Created ${analyzedIssues.length} work item(s)`));
|
|
180
|
+
// Load config
|
|
181
|
+
const config = await loadConfig();
|
|
182
|
+
// Initialize components (no GitHub needed)
|
|
183
|
+
const store = new JsonStore();
|
|
184
|
+
const graphBuilder = new GraphBuilder();
|
|
185
|
+
const worktreeManager = new WorktreeManager();
|
|
186
|
+
const progressDisplay = new ProgressDisplay({ displayMode: options.display });
|
|
187
|
+
const claudeRunner = new ClaudeRunner(config, {
|
|
188
|
+
dangerouslySkipPermissions: options.dangerouslySkipPermissions,
|
|
189
|
+
onLog: (issueNumber, message) => {
|
|
190
|
+
progressDisplay.logDetailed(issueNumber, message);
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
const scheduler = new Scheduler({
|
|
194
|
+
concurrency,
|
|
195
|
+
continueOnError: config.execution.continueOnError,
|
|
196
|
+
});
|
|
197
|
+
// Create orchestrator without GitHub components
|
|
198
|
+
const orchestrator = new Orchestrator({
|
|
199
|
+
config,
|
|
200
|
+
store,
|
|
201
|
+
graphBuilder,
|
|
202
|
+
worktreeManager,
|
|
203
|
+
claudeRunner,
|
|
204
|
+
scheduler,
|
|
205
|
+
progressDisplay,
|
|
206
|
+
});
|
|
207
|
+
// Build graph
|
|
208
|
+
console.log(chalk.blue('\nš Building dependency graph...'));
|
|
209
|
+
const graph = graphBuilder.build(analyzedIssues);
|
|
210
|
+
console.log(chalk.green(` ā Graph built`));
|
|
211
|
+
// Show execution plan
|
|
212
|
+
console.log(chalk.blue('\nš Execution Plan:'));
|
|
213
|
+
const readyIssues = graph.getReady([]);
|
|
214
|
+
const blockedCount = analyzedIssues.length - readyIssues.length;
|
|
215
|
+
console.log(` Total items: ${analyzedIssues.length}`);
|
|
216
|
+
console.log(` Ready to start: ${readyIssues.length} (${readyIssues.map(i => `#${i}`).join(', ')})`);
|
|
217
|
+
console.log(` Blocked by dependencies: ${blockedCount}`);
|
|
218
|
+
console.log(` Concurrency: ${concurrency}`);
|
|
219
|
+
if (options.dryRun) {
|
|
220
|
+
console.log(chalk.yellow('\nš Dry run complete. No changes made.'));
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
// Run orchestration
|
|
224
|
+
console.log(chalk.blue('\nš Starting execution...'));
|
|
225
|
+
const result = await orchestrator.run(analyzedIssues);
|
|
226
|
+
if (result.status === 'completed') {
|
|
227
|
+
console.log(chalk.green('\nā
All items completed successfully!'));
|
|
228
|
+
}
|
|
229
|
+
else if (result.status === 'failed') {
|
|
230
|
+
console.log(chalk.red(`\nā Run failed: ${result.error}`));
|
|
231
|
+
console.log(` Completed: ${result.completedIssues.length}`);
|
|
232
|
+
console.log(` Failed: ${result.failedIssues.length}`);
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
spinner.fail('Error');
|
|
238
|
+
console.error(chalk.red(`\n${error instanceof Error ? error.message : error}`));
|
|
239
|
+
process.exit(1);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// GitHub issues mode: millhouse run issues [numbers]
|
|
243
|
+
export async function runIssuesCommand(numbers, options) {
|
|
244
|
+
const shouldContinue = await checkLeftoverState();
|
|
245
|
+
if (!shouldContinue)
|
|
246
|
+
return;
|
|
247
|
+
const spinner = ora('Initializing Millhouse (GitHub issues mode)...').start();
|
|
248
|
+
try {
|
|
249
|
+
const concurrency = parseInt(options.concurrency || '8', 10);
|
|
250
|
+
spinner.text = 'Loading configuration...';
|
|
251
|
+
const config = await loadConfig();
|
|
252
|
+
// Initialize components
|
|
253
|
+
spinner.text = 'Connecting to GitHub...';
|
|
254
|
+
const githubClient = new GitHubClient();
|
|
255
|
+
// Parse issue numbers or fetch all open issues
|
|
256
|
+
let issueNumbers = [];
|
|
257
|
+
if (numbers) {
|
|
258
|
+
issueNumbers = numbers.split(',').map(s => parseInt(s.trim(), 10));
|
|
259
|
+
}
|
|
260
|
+
if (issueNumbers.length === 0) {
|
|
261
|
+
spinner.text = 'Fetching all open issues...';
|
|
262
|
+
const openIssues = await githubClient.listOpenIssues();
|
|
263
|
+
issueNumbers = openIssues.map(i => i.number);
|
|
264
|
+
if (issueNumbers.length === 0) {
|
|
265
|
+
spinner.fail('No open issues found in this repository');
|
|
266
|
+
process.exit(1);
|
|
267
|
+
}
|
|
268
|
+
spinner.succeed(`Found ${issueNumbers.length} open issue(s)`);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
spinner.succeed('Initialized');
|
|
272
|
+
}
|
|
273
|
+
const store = new JsonStore();
|
|
274
|
+
const labelManager = new LabelManager(githubClient);
|
|
275
|
+
const issueDiscoverer = new IssueDiscoverer(githubClient);
|
|
276
|
+
const issueAnalyzer = new IssueAnalyzer();
|
|
277
|
+
const graphBuilder = new GraphBuilder();
|
|
278
|
+
const worktreeManager = new WorktreeManager();
|
|
279
|
+
// Create progress display
|
|
280
|
+
const progressDisplay = new ProgressDisplay({ displayMode: options.display });
|
|
281
|
+
const claudeRunner = new ClaudeRunner(config, {
|
|
282
|
+
dangerouslySkipPermissions: options.dangerouslySkipPermissions,
|
|
283
|
+
onLog: (issueNumber, message) => {
|
|
284
|
+
progressDisplay.logDetailed(issueNumber, message);
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
// Create scheduler
|
|
288
|
+
const scheduler = new Scheduler({
|
|
289
|
+
concurrency,
|
|
290
|
+
continueOnError: config.execution.continueOnError,
|
|
291
|
+
});
|
|
292
|
+
// Create orchestrator
|
|
293
|
+
const orchestrator = new Orchestrator({
|
|
294
|
+
config,
|
|
295
|
+
store,
|
|
296
|
+
githubClient,
|
|
297
|
+
labelManager,
|
|
298
|
+
issueDiscoverer,
|
|
299
|
+
issueAnalyzer,
|
|
300
|
+
graphBuilder,
|
|
301
|
+
worktreeManager,
|
|
302
|
+
claudeRunner,
|
|
303
|
+
scheduler,
|
|
304
|
+
progressDisplay,
|
|
305
|
+
});
|
|
306
|
+
// Discover issues (always recursive to find linked issues)
|
|
307
|
+
console.log(chalk.blue('\nš Discovering issues...'));
|
|
308
|
+
const issues = await orchestrator.discoverIssues(issueNumbers, true);
|
|
309
|
+
console.log(chalk.green(` ā Found ${issues.length} issue(s)`));
|
|
310
|
+
// Analyze dependencies
|
|
311
|
+
console.log(chalk.blue('\nš Analyzing dependencies...'));
|
|
312
|
+
const analyzedIssues = await orchestrator.analyzeIssues(issues);
|
|
313
|
+
console.log(chalk.green(` ā Analysis complete`));
|
|
314
|
+
// Build graph
|
|
315
|
+
console.log(chalk.blue('\nš Building dependency graph...'));
|
|
316
|
+
const graph = graphBuilder.build(analyzedIssues);
|
|
317
|
+
console.log(chalk.green(` ā Graph built`));
|
|
318
|
+
// Show execution plan
|
|
319
|
+
console.log(chalk.blue('\nš Execution Plan:'));
|
|
320
|
+
const readyIssues = graph.getReady([]);
|
|
321
|
+
const blockedCount = analyzedIssues.length - readyIssues.length;
|
|
322
|
+
console.log(` Total issues: ${analyzedIssues.length}`);
|
|
323
|
+
console.log(` Ready to start: ${readyIssues.length} (${readyIssues.map(i => `#${i}`).join(', ')})`);
|
|
324
|
+
console.log(` Blocked by dependencies: ${blockedCount}`);
|
|
325
|
+
console.log(` Concurrency: ${concurrency}`);
|
|
326
|
+
if (options.dryRun) {
|
|
327
|
+
console.log(chalk.yellow('\nš Dry run complete. No changes made.'));
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
// Run orchestration
|
|
331
|
+
console.log(chalk.blue('\nš Starting execution...'));
|
|
332
|
+
const result = await orchestrator.run(analyzedIssues);
|
|
333
|
+
if (result.status === 'completed') {
|
|
334
|
+
console.log(chalk.green('\nā
All issues completed successfully!'));
|
|
335
|
+
if (result.pullRequestUrl) {
|
|
336
|
+
console.log(chalk.blue(` Pull request: ${result.pullRequestUrl}`));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else if (result.status === 'failed') {
|
|
340
|
+
console.log(chalk.red(`\nā Run failed: ${result.error}`));
|
|
341
|
+
console.log(` Completed: ${result.completedIssues.length}`);
|
|
342
|
+
console.log(` Failed: ${result.failedIssues.length}`);
|
|
343
|
+
process.exit(1);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
spinner.fail('Error');
|
|
348
|
+
console.error(chalk.red(`\n${error instanceof Error ? error.message : error}`));
|
|
349
|
+
process.exit(1);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AASA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEvE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { promises as fs } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
export async function setupCommand(options) {
|
|
9
|
+
try {
|
|
10
|
+
// Find the commands directory in the package
|
|
11
|
+
const packageRoot = path.resolve(__dirname, '..', '..', '..');
|
|
12
|
+
const sourceDir = path.join(packageRoot, 'commands');
|
|
13
|
+
// Determine target directory
|
|
14
|
+
const targetDir = options.global
|
|
15
|
+
? path.join(os.homedir(), '.claude', 'commands')
|
|
16
|
+
: path.join(process.cwd(), '.claude', 'commands');
|
|
17
|
+
// Check if source directory exists
|
|
18
|
+
try {
|
|
19
|
+
await fs.access(sourceDir);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
console.error(chalk.red(`Commands directory not found: ${sourceDir}`));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
// Create target directory if needed
|
|
26
|
+
await fs.mkdir(targetDir, { recursive: true });
|
|
27
|
+
// Copy all command files
|
|
28
|
+
const files = await fs.readdir(sourceDir);
|
|
29
|
+
const mdFiles = files.filter(f => f.endsWith('.md'));
|
|
30
|
+
if (mdFiles.length === 0) {
|
|
31
|
+
console.log(chalk.yellow('No command files found to install.'));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
let installed = 0;
|
|
35
|
+
for (const file of mdFiles) {
|
|
36
|
+
const sourcePath = path.join(sourceDir, file);
|
|
37
|
+
const targetPath = path.join(targetDir, file);
|
|
38
|
+
// Check if file already exists
|
|
39
|
+
try {
|
|
40
|
+
await fs.access(targetPath);
|
|
41
|
+
console.log(chalk.yellow(` Skipping ${file} (already exists)`));
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// File doesn't exist, proceed with copy
|
|
46
|
+
}
|
|
47
|
+
await fs.copyFile(sourcePath, targetPath);
|
|
48
|
+
console.log(chalk.green(` Installed ${file}`));
|
|
49
|
+
installed++;
|
|
50
|
+
}
|
|
51
|
+
const location = options.global ? 'globally' : `in ${targetDir}`;
|
|
52
|
+
if (installed > 0) {
|
|
53
|
+
console.log(chalk.green(`\nā Installed ${installed} command(s) ${location}`));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log(chalk.yellow(`\nNo new commands to install ${location}`));
|
|
57
|
+
}
|
|
58
|
+
console.log(`
|
|
59
|
+
${chalk.bold('Slash commands (in Claude Code):')}
|
|
60
|
+
/millhouse plan [file] Refine a plan (omit file to use current plan)
|
|
61
|
+
/millhouse issues [file] Create GitHub issues (omit file to use current plan)
|
|
62
|
+
|
|
63
|
+
${chalk.bold('Then run from terminal:')}
|
|
64
|
+
millhouse run [file] Execute plan (omit file to use latest plan)
|
|
65
|
+
millhouse run issues [id] Execute GitHub issues (omit id to run all)
|
|
66
|
+
millhouse status Show run status
|
|
67
|
+
`);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error(chalk.red(`Error: ${error instanceof Error ? error.message : error}`));
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCzE"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { JsonStore } from '../../storage/json-store.js';
|
|
3
|
+
export async function statusCommand(options) {
|
|
4
|
+
try {
|
|
5
|
+
const store = new JsonStore();
|
|
6
|
+
let runs;
|
|
7
|
+
if (options.runId) {
|
|
8
|
+
const run = await store.getRun(options.runId);
|
|
9
|
+
if (!run) {
|
|
10
|
+
console.error(chalk.red(`Run not found: ${options.runId}`));
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
runs = [run];
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
runs = await store.listRuns();
|
|
17
|
+
}
|
|
18
|
+
if (runs.length === 0) {
|
|
19
|
+
console.log(chalk.yellow('No runs found.'));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (options.json) {
|
|
23
|
+
console.log(JSON.stringify(runs, null, 2));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
for (const run of runs) {
|
|
27
|
+
printRunStatus(run);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error(chalk.red(`Error: ${error instanceof Error ? error.message : error}`));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function printRunStatus(run) {
|
|
36
|
+
const statusColors = {
|
|
37
|
+
running: chalk.blue,
|
|
38
|
+
completed: chalk.green,
|
|
39
|
+
failed: chalk.red,
|
|
40
|
+
interrupted: chalk.yellow,
|
|
41
|
+
};
|
|
42
|
+
const statusColor = statusColors[run.status] || chalk.white;
|
|
43
|
+
console.log(chalk.bold(`\nš¦ Run: ${run.id}`));
|
|
44
|
+
console.log(` Status: ${statusColor(run.status)}`);
|
|
45
|
+
console.log(` Created: ${new Date(run.createdAt).toLocaleString()}`);
|
|
46
|
+
console.log(` Branch: ${run.runBranch}`);
|
|
47
|
+
if (run.pullRequestUrl) {
|
|
48
|
+
console.log(` PR: ${chalk.blue(run.pullRequestUrl)}`);
|
|
49
|
+
}
|
|
50
|
+
// Task summary
|
|
51
|
+
const tasksByStatus = groupBy(run.tasks, t => t.status);
|
|
52
|
+
console.log('\n Tasks:');
|
|
53
|
+
const taskStatusDisplay = [
|
|
54
|
+
{ status: 'completed', icon: 'ā
', color: chalk.green },
|
|
55
|
+
{ status: 'in-progress', icon: 'š', color: chalk.blue },
|
|
56
|
+
{ status: 'ready', icon: 'ā³', color: chalk.cyan },
|
|
57
|
+
{ status: 'blocked', icon: 'š«', color: chalk.yellow },
|
|
58
|
+
{ status: 'queued', icon: 'š', color: chalk.gray },
|
|
59
|
+
{ status: 'failed', icon: 'ā', color: chalk.red },
|
|
60
|
+
];
|
|
61
|
+
for (const { status, icon, color } of taskStatusDisplay) {
|
|
62
|
+
const tasks = tasksByStatus[status] || [];
|
|
63
|
+
if (tasks.length > 0) {
|
|
64
|
+
const issueNums = tasks.map(t => `#${t.issueNumber}`).join(', ');
|
|
65
|
+
console.log(` ${icon} ${color(status)}: ${issueNums}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (run.error) {
|
|
69
|
+
console.log(chalk.red(`\n Error: ${run.error}`));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function groupBy(array, keyFn) {
|
|
73
|
+
const result = {};
|
|
74
|
+
for (const item of array) {
|
|
75
|
+
const key = keyFn(item);
|
|
76
|
+
if (!result[key]) {
|
|
77
|
+
result[key] = [];
|
|
78
|
+
}
|
|
79
|
+
result[key].push(item);
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|