@claudetree/cli 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +1 -0
- package/README.ko.md +1 -0
- package/README.md +1 -0
- package/README.zh.md +1 -0
- package/dist/commands/bustercall.d.ts +3 -0
- package/dist/commands/bustercall.d.ts.map +1 -0
- package/dist/commands/bustercall.js +182 -0
- package/dist/commands/bustercall.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.ja.md
CHANGED
package/README.ko.md
CHANGED
package/README.md
CHANGED
|
@@ -44,6 +44,7 @@ ct web
|
|
|
44
44
|
| `ct doctor` | Check environment health |
|
|
45
45
|
| `ct demo` | Interactive demo (no tokens used) |
|
|
46
46
|
| `ct batch` | Process multiple issues in parallel |
|
|
47
|
+
| `ct bustercall` | Auto-fetch all open issues and run parallel sessions |
|
|
47
48
|
| `ct web` | Start web dashboard |
|
|
48
49
|
|
|
49
50
|
## Key Features
|
package/README.zh.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bustercall.d.ts","sourceRoot":"","sources":["../../src/commands/bustercall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyGpC,eAAO,MAAM,iBAAiB,SAiJ1B,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { access, readFile } from 'node:fs/promises';
|
|
4
|
+
import { spawn } from 'node:child_process';
|
|
5
|
+
import { GitHubAdapter, SlackNotifier } from '@claudetree/core';
|
|
6
|
+
const CONFIG_DIR = '.claudetree';
|
|
7
|
+
async function loadConfig(cwd) {
|
|
8
|
+
try {
|
|
9
|
+
const configPath = join(cwd, CONFIG_DIR, 'config.json');
|
|
10
|
+
await access(configPath);
|
|
11
|
+
const content = await readFile(configPath, 'utf-8');
|
|
12
|
+
return JSON.parse(content);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function startSession(issueNumber, options) {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
const args = ['start', String(issueNumber)];
|
|
21
|
+
if (options.template) {
|
|
22
|
+
args.push('--template', options.template);
|
|
23
|
+
}
|
|
24
|
+
const proc = spawn('claudetree', args, {
|
|
25
|
+
cwd: options.cwd,
|
|
26
|
+
stdio: 'inherit',
|
|
27
|
+
detached: true,
|
|
28
|
+
});
|
|
29
|
+
proc.unref();
|
|
30
|
+
setTimeout(() => resolve(), 1000);
|
|
31
|
+
proc.on('error', reject);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function truncate(str, maxLen) {
|
|
35
|
+
if (str.length <= maxLen)
|
|
36
|
+
return str;
|
|
37
|
+
return str.slice(0, maxLen - 3) + '...';
|
|
38
|
+
}
|
|
39
|
+
function printStatus(items) {
|
|
40
|
+
console.clear();
|
|
41
|
+
console.log('\n=== Bustercall ===\n');
|
|
42
|
+
for (const item of items) {
|
|
43
|
+
const icon = item.status === 'pending' ? '\u25CB' :
|
|
44
|
+
item.status === 'running' ? '\u25D0' :
|
|
45
|
+
item.status === 'completed' ? '\u25CF' :
|
|
46
|
+
'\u2717';
|
|
47
|
+
const color = item.status === 'pending' ? '\x1b[90m' :
|
|
48
|
+
item.status === 'running' ? '\x1b[33m' :
|
|
49
|
+
item.status === 'completed' ? '\x1b[32m' :
|
|
50
|
+
'\x1b[31m';
|
|
51
|
+
const title = truncate(item.issue.title, 40);
|
|
52
|
+
const statusText = item.error ? ` [${item.error}]` : '';
|
|
53
|
+
console.log(` ${color}${icon}\x1b[0m #${item.issue.number} - ${title}${statusText}`);
|
|
54
|
+
}
|
|
55
|
+
const completed = items.filter((i) => i.status === 'completed').length;
|
|
56
|
+
const failed = items.filter((i) => i.status === 'failed').length;
|
|
57
|
+
const running = items.filter((i) => i.status === 'running').length;
|
|
58
|
+
console.log(`\n[${completed}/${items.length}] completed, ${running} running, ${failed} failed`);
|
|
59
|
+
}
|
|
60
|
+
export const bustercallCommand = new Command('bustercall')
|
|
61
|
+
.description('Auto-fetch all open issues and start parallel Claude sessions')
|
|
62
|
+
.option('-l, --label <label>', 'Filter by GitHub label (comma-separated for AND)')
|
|
63
|
+
.option('-n, --limit <number>', 'Maximum issues to process', '10')
|
|
64
|
+
.option('-P, --parallel <number>', 'Number of parallel sessions', '3')
|
|
65
|
+
.option('-T, --template <template>', 'Session template to use')
|
|
66
|
+
.option('-t, --token <token>', 'GitHub token (or use GITHUB_TOKEN env)')
|
|
67
|
+
.option('-e, --exclude <numbers>', 'Exclude issue numbers (comma-separated)')
|
|
68
|
+
.option('--dry-run', 'Show target issues without starting', false)
|
|
69
|
+
.action(async (options) => {
|
|
70
|
+
const cwd = process.cwd();
|
|
71
|
+
const config = await loadConfig(cwd);
|
|
72
|
+
if (!config) {
|
|
73
|
+
console.error('Error: claudetree not initialized. Run "claudetree init" first.');
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
const ghToken = options.token ?? process.env.GITHUB_TOKEN ?? config.github?.token;
|
|
77
|
+
if (!ghToken || !config.github?.owner || !config.github?.repo) {
|
|
78
|
+
console.error('Error: GitHub configuration required for bustercall.');
|
|
79
|
+
console.log('\nRequired:');
|
|
80
|
+
console.log(' - GITHUB_TOKEN environment variable or --token flag');
|
|
81
|
+
console.log(' - github.owner and github.repo in .claudetree/config.json');
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
const ghAdapter = new GitHubAdapter(ghToken);
|
|
85
|
+
console.log('Fetching open issues from GitHub...');
|
|
86
|
+
let issues;
|
|
87
|
+
try {
|
|
88
|
+
issues = await ghAdapter.listIssues(config.github.owner, config.github.repo, {
|
|
89
|
+
labels: options.label,
|
|
90
|
+
state: 'open',
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
console.error(`Error fetching issues: ${err instanceof Error ? err.message : err}`);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
// Apply exclude filter
|
|
98
|
+
if (options.exclude) {
|
|
99
|
+
const excludeSet = new Set(options.exclude.split(',').map((n) => parseInt(n.trim(), 10)));
|
|
100
|
+
issues = issues.filter((i) => !excludeSet.has(i.number));
|
|
101
|
+
}
|
|
102
|
+
// Apply limit
|
|
103
|
+
const limit = parseInt(options.limit, 10);
|
|
104
|
+
if (issues.length > limit) {
|
|
105
|
+
console.log(`Found ${issues.length} issues, limiting to ${limit}`);
|
|
106
|
+
issues = issues.slice(0, limit);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
console.log(`Found ${issues.length} issues`);
|
|
110
|
+
}
|
|
111
|
+
if (issues.length === 0) {
|
|
112
|
+
console.log('No open issues found matching criteria.');
|
|
113
|
+
process.exit(0);
|
|
114
|
+
}
|
|
115
|
+
// Dry run mode
|
|
116
|
+
if (options.dryRun) {
|
|
117
|
+
console.log('\n[Dry Run] Would start sessions for:\n');
|
|
118
|
+
issues.forEach((issue, i) => {
|
|
119
|
+
console.log(` ${i + 1}. #${issue.number} - ${issue.title}`);
|
|
120
|
+
if (issue.labels.length > 0) {
|
|
121
|
+
console.log(` Labels: ${issue.labels.join(', ')}`);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Initialize items
|
|
127
|
+
const items = issues.map((issue) => ({
|
|
128
|
+
issue,
|
|
129
|
+
status: 'pending',
|
|
130
|
+
}));
|
|
131
|
+
const parallelLimit = parseInt(options.parallel, 10);
|
|
132
|
+
let runningCount = 0;
|
|
133
|
+
let currentIndex = 0;
|
|
134
|
+
const startNext = async () => {
|
|
135
|
+
while (runningCount < parallelLimit && currentIndex < items.length) {
|
|
136
|
+
const item = items[currentIndex];
|
|
137
|
+
if (!item)
|
|
138
|
+
break;
|
|
139
|
+
currentIndex++;
|
|
140
|
+
runningCount++;
|
|
141
|
+
item.status = 'running';
|
|
142
|
+
printStatus(items);
|
|
143
|
+
try {
|
|
144
|
+
await startSession(item.issue.number, {
|
|
145
|
+
template: options.template,
|
|
146
|
+
cwd,
|
|
147
|
+
});
|
|
148
|
+
item.status = 'completed';
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
item.status = 'failed';
|
|
152
|
+
item.error = err instanceof Error ? err.message : 'Unknown error';
|
|
153
|
+
}
|
|
154
|
+
runningCount--;
|
|
155
|
+
printStatus(items);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
// Start initial batch
|
|
159
|
+
const promises = [];
|
|
160
|
+
for (let i = 0; i < parallelLimit && i < items.length; i++) {
|
|
161
|
+
promises.push(startNext());
|
|
162
|
+
}
|
|
163
|
+
await Promise.all(promises);
|
|
164
|
+
// Final status
|
|
165
|
+
console.log('\n=== Bustercall Complete ===');
|
|
166
|
+
const completed = items.filter((i) => i.status === 'completed').length;
|
|
167
|
+
const failed = items.filter((i) => i.status === 'failed').length;
|
|
168
|
+
console.log(`Completed: ${completed}, Failed: ${failed}`);
|
|
169
|
+
// Send Slack notification
|
|
170
|
+
if (config.slack?.webhookUrl) {
|
|
171
|
+
const slack = new SlackNotifier(config.slack.webhookUrl);
|
|
172
|
+
await slack.notifyBatch(items.map((item) => ({
|
|
173
|
+
issue: String(item.issue.number),
|
|
174
|
+
status: item.status === 'completed' ? 'completed' : 'failed',
|
|
175
|
+
error: item.error,
|
|
176
|
+
})));
|
|
177
|
+
console.log('\nSlack notification sent.');
|
|
178
|
+
}
|
|
179
|
+
console.log('\nView all sessions: claudetree status');
|
|
180
|
+
console.log('Open dashboard: claudetree web');
|
|
181
|
+
});
|
|
182
|
+
//# sourceMappingURL=bustercall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bustercall.js","sourceRoot":"","sources":["../../src/commands/bustercall.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { program } from 'commander';
|
|
3
3
|
import { batchCommand } from './commands/batch.js';
|
|
4
|
+
import { bustercallCommand } from './commands/bustercall.js';
|
|
4
5
|
import { demoCommand } from './commands/demo.js';
|
|
5
6
|
import { doctorCommand } from './commands/doctor.js';
|
|
6
7
|
import { initCommand } from './commands/init.js';
|
|
@@ -15,6 +16,7 @@ program
|
|
|
15
16
|
.description('Git Worktree-based Claude Code multi-session manager')
|
|
16
17
|
.version('0.1.0');
|
|
17
18
|
program.addCommand(batchCommand);
|
|
19
|
+
program.addCommand(bustercallCommand);
|
|
18
20
|
program.addCommand(demoCommand);
|
|
19
21
|
program.addCommand(doctorCommand);
|
|
20
22
|
program.addCommand(initCommand);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudetree/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "CLI for claudetree - Manage Claude sessions with git worktrees",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"commander": "^13.0.0",
|
|
31
|
-
"@claudetree/core": "0.
|
|
32
|
-
"@claudetree/shared": "0.
|
|
31
|
+
"@claudetree/core": "0.3.0",
|
|
32
|
+
"@claudetree/shared": "0.3.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.10.0",
|