@claudetree/cli 0.1.0 → 0.2.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.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const batchCommand: Command;
3
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsGpC,eAAO,MAAM,YAAY,SA0KrB,CAAC"}
@@ -0,0 +1,201 @@
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(issue, options) {
19
+ return new Promise((resolve, reject) => {
20
+ const args = ['start', issue];
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
+ // Don't wait for completion, just start
31
+ setTimeout(() => resolve(), 1000);
32
+ proc.on('error', reject);
33
+ });
34
+ }
35
+ function printStatus(items) {
36
+ console.clear();
37
+ console.log('\n=== Batch Progress ===\n');
38
+ for (const item of items) {
39
+ const icon = item.status === 'pending' ? '○' :
40
+ item.status === 'running' ? '◐' :
41
+ item.status === 'completed' ? '●' :
42
+ '✗';
43
+ const color = item.status === 'pending' ? '\x1b[90m' :
44
+ item.status === 'running' ? '\x1b[33m' :
45
+ item.status === 'completed' ? '\x1b[32m' :
46
+ '\x1b[31m';
47
+ console.log(`${color}${icon}\x1b[0m ${item.issue} - ${item.status}`);
48
+ if (item.error) {
49
+ console.log(` \x1b[31m${item.error}\x1b[0m`);
50
+ }
51
+ }
52
+ const completed = items.filter((i) => i.status === 'completed').length;
53
+ const failed = items.filter((i) => i.status === 'failed').length;
54
+ const running = items.filter((i) => i.status === 'running').length;
55
+ console.log(`\n[${completed}/${items.length}] completed, ${running} running, ${failed} failed`);
56
+ }
57
+ export const batchCommand = new Command('batch')
58
+ .description('Start multiple Claude sessions in parallel')
59
+ .argument('[issues...]', 'Issue numbers or GitHub URLs')
60
+ .option('-l, --label <label>', 'Filter GitHub issues by label')
61
+ .option('-n, --limit <number>', 'Maximum number of issues to process', '5')
62
+ .option('-T, --template <template>', 'Session template to use')
63
+ .option('-t, --token <token>', 'GitHub token (or use GITHUB_TOKEN env)')
64
+ .option('-f, --file <file>', 'Read issues from file (one per line)')
65
+ .option('-P, --parallel <number>', 'Number of parallel sessions', '3')
66
+ .option('--dry-run', 'Show what would be started without starting', false)
67
+ .action(async (issueArgs, options) => {
68
+ const cwd = process.cwd();
69
+ const config = await loadConfig(cwd);
70
+ if (!config) {
71
+ console.error('Error: claudetree not initialized. Run "claudetree init" first.');
72
+ process.exit(1);
73
+ }
74
+ const ghToken = options.token ?? process.env.GITHUB_TOKEN ?? config.github?.token;
75
+ let issues = [];
76
+ // Collect issues from arguments
77
+ if (issueArgs.length > 0) {
78
+ issues = issueArgs;
79
+ }
80
+ // Read from file if specified
81
+ if (options.file) {
82
+ try {
83
+ const content = await readFile(options.file, 'utf-8');
84
+ const fileIssues = content
85
+ .split('\n')
86
+ .map((line) => line.trim())
87
+ .filter((line) => line && !line.startsWith('#'));
88
+ issues.push(...fileIssues);
89
+ }
90
+ catch (err) {
91
+ console.error(`Error reading file: ${options.file}`);
92
+ process.exit(1);
93
+ }
94
+ }
95
+ // Fetch from GitHub by label
96
+ if (options.label) {
97
+ if (!ghToken || !config.github?.owner || !config.github?.repo) {
98
+ console.error('Error: GitHub token and repo config required for --label');
99
+ process.exit(1);
100
+ }
101
+ const ghAdapter = new GitHubAdapter(ghToken);
102
+ console.log(`Fetching issues with label: ${options.label}...`);
103
+ try {
104
+ const ghIssues = await ghAdapter.listIssues(config.github.owner, config.github.repo, { labels: options.label, state: 'open' });
105
+ const issueNumbers = ghIssues
106
+ .slice(0, parseInt(options.limit, 10))
107
+ .map((i) => String(i.number));
108
+ console.log(`Found ${ghIssues.length} issues, using first ${issueNumbers.length}`);
109
+ issues.push(...issueNumbers);
110
+ }
111
+ catch (err) {
112
+ console.error(`Error fetching issues: ${err instanceof Error ? err.message : err}`);
113
+ process.exit(1);
114
+ }
115
+ }
116
+ if (issues.length === 0) {
117
+ console.error('Error: No issues specified.');
118
+ console.log('\nUsage:');
119
+ console.log(' ct batch 101 102 103 # Issue numbers');
120
+ console.log(' ct batch --label bug # By GitHub label');
121
+ console.log(' ct batch --file issues.txt # From file');
122
+ process.exit(1);
123
+ }
124
+ // Deduplicate
125
+ issues = [...new Set(issues)];
126
+ // Apply limit
127
+ const limit = parseInt(options.limit, 10);
128
+ if (issues.length > limit) {
129
+ console.log(`Limiting to ${limit} issues (use --limit to change)`);
130
+ issues = issues.slice(0, limit);
131
+ }
132
+ console.log(`\nBatch: ${issues.length} issues`);
133
+ if (options.template) {
134
+ console.log(`Template: ${options.template}`);
135
+ }
136
+ // Dry run mode
137
+ if (options.dryRun) {
138
+ console.log('\n[Dry Run] Would start sessions for:');
139
+ issues.forEach((issue, i) => {
140
+ console.log(` ${i + 1}. ${issue}`);
141
+ });
142
+ return;
143
+ }
144
+ // Initialize batch items
145
+ const items = issues.map((issue) => ({
146
+ issue,
147
+ status: 'pending',
148
+ }));
149
+ const parallelLimit = parseInt(options.parallel, 10);
150
+ let runningCount = 0;
151
+ let currentIndex = 0;
152
+ const startNext = async () => {
153
+ while (runningCount < parallelLimit && currentIndex < items.length) {
154
+ const item = items[currentIndex];
155
+ if (!item)
156
+ break;
157
+ currentIndex++;
158
+ runningCount++;
159
+ item.status = 'running';
160
+ printStatus(items);
161
+ try {
162
+ await startSession(item.issue, {
163
+ template: options.template,
164
+ cwd,
165
+ });
166
+ item.status = 'completed';
167
+ }
168
+ catch (err) {
169
+ item.status = 'failed';
170
+ item.error = err instanceof Error ? err.message : 'Unknown error';
171
+ }
172
+ runningCount--;
173
+ printStatus(items);
174
+ }
175
+ };
176
+ // Start initial batch
177
+ const promises = [];
178
+ for (let i = 0; i < parallelLimit && i < items.length; i++) {
179
+ promises.push(startNext());
180
+ }
181
+ await Promise.all(promises);
182
+ // Final status
183
+ console.log('\n=== Batch Complete ===');
184
+ const completed = items.filter((i) => i.status === 'completed').length;
185
+ const failed = items.filter((i) => i.status === 'failed').length;
186
+ console.log(`Completed: ${completed}, Failed: ${failed}`);
187
+ // Send Slack notification
188
+ if (config.slack?.webhookUrl) {
189
+ const slack = new SlackNotifier(config.slack.webhookUrl);
190
+ await slack.notifyBatch(items.map((item) => ({
191
+ issue: item.issue,
192
+ status: item.status === 'completed' ? 'completed' : 'failed',
193
+ error: item.error,
194
+ })));
195
+ console.log('\nSlack notification sent.');
196
+ }
197
+ // Show session status command
198
+ console.log('\nView all sessions: claudetree status');
199
+ console.log('Open dashboard: claudetree web');
200
+ });
201
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const demoCommand: Command;
3
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoNpC,eAAO,MAAM,WAAW,SASpB,CAAC"}
@@ -0,0 +1,173 @@
1
+ import { Command } from 'commander';
2
+ import * as readline from 'node:readline';
3
+ const COLORS = {
4
+ green: '\x1b[32m',
5
+ red: '\x1b[31m',
6
+ yellow: '\x1b[33m',
7
+ cyan: '\x1b[36m',
8
+ magenta: '\x1b[35m',
9
+ blue: '\x1b[34m',
10
+ dim: '\x1b[2m',
11
+ reset: '\x1b[0m',
12
+ bold: '\x1b[1m',
13
+ };
14
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
15
+ async function typeText(text, delay = 30) {
16
+ for (const char of text) {
17
+ process.stdout.write(char);
18
+ await sleep(delay);
19
+ }
20
+ console.log();
21
+ }
22
+ async function simulateProgress(steps, delayMs = 800) {
23
+ for (const step of steps) {
24
+ process.stdout.write(` ${COLORS.dim}○${COLORS.reset} ${step}`);
25
+ await sleep(delayMs);
26
+ process.stdout.write(`\r ${COLORS.green}✓${COLORS.reset} ${step}\n`);
27
+ }
28
+ }
29
+ function printBox(lines, color = COLORS.cyan) {
30
+ const maxLen = Math.max(...lines.map((l) => l.replace(/\x1b\[[0-9;]*m/g, '').length));
31
+ const border = '─'.repeat(maxLen + 2);
32
+ console.log(`${color}┌${border}┐${COLORS.reset}`);
33
+ for (const line of lines) {
34
+ const plainLen = line.replace(/\x1b\[[0-9;]*m/g, '').length;
35
+ const padding = ' '.repeat(maxLen - plainLen);
36
+ console.log(`${color}│${COLORS.reset} ${line}${padding} ${color}│${COLORS.reset}`);
37
+ }
38
+ console.log(`${color}└${border}┘${COLORS.reset}`);
39
+ }
40
+ async function waitForEnter(message = 'Press Enter to continue...') {
41
+ const rl = readline.createInterface({
42
+ input: process.stdin,
43
+ output: process.stdout,
44
+ });
45
+ return new Promise((resolve) => {
46
+ rl.question(`\n${COLORS.dim}${message}${COLORS.reset}`, () => {
47
+ rl.close();
48
+ resolve();
49
+ });
50
+ });
51
+ }
52
+ async function runDemo() {
53
+ console.clear();
54
+ console.log(`\n${COLORS.bold}${COLORS.cyan}🌳 claudetree Demo${COLORS.reset}\n`);
55
+ console.log(`${COLORS.dim}This is a simulated walkthrough - no tokens will be consumed.${COLORS.reset}\n`);
56
+ await waitForEnter();
57
+ // Step 1: Issue
58
+ console.clear();
59
+ console.log(`\n${COLORS.bold}Step 1: You have a GitHub issue${COLORS.reset}\n`);
60
+ printBox([
61
+ `${COLORS.bold}Issue #42: Fix login button not responding${COLORS.reset}`,
62
+ '',
63
+ `${COLORS.dim}When clicking the login button, nothing happens.${COLORS.reset}`,
64
+ `${COLORS.dim}Expected: Should redirect to /auth${COLORS.reset}`,
65
+ `${COLORS.dim}Actual: No response${COLORS.reset}`,
66
+ '',
67
+ `${COLORS.yellow}Labels: bug, high-priority${COLORS.reset}`,
68
+ ], COLORS.blue);
69
+ console.log(`\n${COLORS.dim}Normally you'd copy-paste this and manually implement...${COLORS.reset}`);
70
+ console.log(`${COLORS.green}With claudetree, just run one command:${COLORS.reset}\n`);
71
+ console.log(` ${COLORS.cyan}$ ct start https://github.com/you/repo/issues/42${COLORS.reset}\n`);
72
+ await waitForEnter();
73
+ // Step 2: Worktree creation
74
+ console.clear();
75
+ console.log(`\n${COLORS.bold}Step 2: claudetree creates an isolated workspace${COLORS.reset}\n`);
76
+ await simulateProgress([
77
+ 'Fetching issue #42 from GitHub...',
78
+ 'Creating branch: fix/issue-42-login-button',
79
+ 'Creating worktree: .worktrees/issue-42-fix-login/',
80
+ 'Initializing Claude session...',
81
+ ]);
82
+ console.log(`\n${COLORS.dim}Your main branch stays untouched.${COLORS.reset}`);
83
+ console.log(`${COLORS.dim}Claude works in a completely isolated directory.${COLORS.reset}\n`);
84
+ printBox([
85
+ `${COLORS.bold}Project Structure${COLORS.reset}`,
86
+ '',
87
+ `my-app/ ${COLORS.dim}← You work here${COLORS.reset}`,
88
+ `├── src/`,
89
+ `└── .worktrees/`,
90
+ ` └── issue-42-fix-login/ ${COLORS.cyan}← Claude works here${COLORS.reset}`,
91
+ ], COLORS.green);
92
+ await waitForEnter();
93
+ // Step 3: Claude working
94
+ console.clear();
95
+ console.log(`\n${COLORS.bold}Step 3: Claude works autonomously${COLORS.reset}\n`);
96
+ console.log(`${COLORS.cyan}Claude:${COLORS.reset} I'll analyze the login button issue...\n`);
97
+ await typeText(`${COLORS.dim}> Reading src/components/LoginButton.tsx...${COLORS.reset}`, 20);
98
+ await sleep(500);
99
+ await typeText(`${COLORS.dim}> Found the issue: onClick handler is missing await${COLORS.reset}`, 20);
100
+ await sleep(500);
101
+ await typeText(`${COLORS.dim}> Editing src/components/LoginButton.tsx...${COLORS.reset}`, 20);
102
+ await sleep(500);
103
+ await typeText(`${COLORS.dim}> Running npm test...${COLORS.reset}`, 20);
104
+ await sleep(800);
105
+ console.log(`\n${COLORS.green}✓ All tests passing${COLORS.reset}\n`);
106
+ await typeText(`${COLORS.dim}> Creating commit: "fix: add await to login handler"${COLORS.reset}`, 20);
107
+ await typeText(`${COLORS.dim}> Pushing to origin/fix/issue-42-login-button...${COLORS.reset}`, 20);
108
+ await typeText(`${COLORS.dim}> Creating pull request...${COLORS.reset}`, 20);
109
+ await waitForEnter();
110
+ // Step 4: Result
111
+ console.clear();
112
+ console.log(`\n${COLORS.bold}Step 4: PR is ready for review!${COLORS.reset}\n`);
113
+ printBox([
114
+ `${COLORS.bold}${COLORS.green}Pull Request #123${COLORS.reset}`,
115
+ '',
116
+ `${COLORS.bold}fix: add await to login handler${COLORS.reset}`,
117
+ '',
118
+ `Fixes #42`,
119
+ '',
120
+ `${COLORS.dim}Changes:${COLORS.reset}`,
121
+ ` ${COLORS.green}+ await${COLORS.reset} router.push('/auth')`,
122
+ ` ${COLORS.red}- ${COLORS.reset}router.push('/auth')`,
123
+ '',
124
+ `${COLORS.cyan}→ github.com/you/repo/pull/123${COLORS.reset}`,
125
+ ], COLORS.green);
126
+ console.log(`\n${COLORS.dim}Meanwhile, you were doing something else entirely.${COLORS.reset}`);
127
+ console.log(`${COLORS.dim}Now just review and merge!${COLORS.reset}\n`);
128
+ await waitForEnter();
129
+ // Step 5: Parallel
130
+ console.clear();
131
+ console.log(`\n${COLORS.bold}Bonus: Run multiple issues in parallel!${COLORS.reset}\n`);
132
+ console.log(` ${COLORS.cyan}$ ct start 42${COLORS.reset} ${COLORS.dim}# Fix login button${COLORS.reset}`);
133
+ console.log(` ${COLORS.cyan}$ ct start 43${COLORS.reset} ${COLORS.dim}# Add dark mode${COLORS.reset}`);
134
+ console.log(` ${COLORS.cyan}$ ct start 44${COLORS.reset} ${COLORS.dim}# Update deps${COLORS.reset}\n`);
135
+ console.log(`${COLORS.dim}Monitor all sessions:${COLORS.reset}\n`);
136
+ console.log(` ${COLORS.cyan}$ ct status${COLORS.reset} ${COLORS.dim}# CLI view${COLORS.reset}`);
137
+ console.log(` ${COLORS.cyan}$ ct web${COLORS.reset} ${COLORS.dim}# Web dashboard at localhost:3000${COLORS.reset}\n`);
138
+ printBox([
139
+ `${COLORS.bold}Session Status${COLORS.reset}`,
140
+ '',
141
+ `${COLORS.green}●${COLORS.reset} issue-42 ${COLORS.dim}running${COLORS.reset} fix login button`,
142
+ `${COLORS.green}●${COLORS.reset} issue-43 ${COLORS.dim}running${COLORS.reset} add dark mode`,
143
+ `${COLORS.yellow}●${COLORS.reset} issue-44 ${COLORS.dim}pending${COLORS.reset} update dependencies`,
144
+ ], COLORS.magenta);
145
+ await waitForEnter();
146
+ // Final
147
+ console.clear();
148
+ console.log(`\n${COLORS.bold}${COLORS.green}🎉 That's claudetree!${COLORS.reset}\n`);
149
+ console.log(`${COLORS.bold}Quick Start:${COLORS.reset}\n`);
150
+ console.log(` ${COLORS.cyan}1.${COLORS.reset} ct init ${COLORS.dim}# Initialize in your project${COLORS.reset}`);
151
+ console.log(` ${COLORS.cyan}2.${COLORS.reset} ct doctor ${COLORS.dim}# Check everything is ready${COLORS.reset}`);
152
+ console.log(` ${COLORS.cyan}3.${COLORS.reset} ct start <issue-url> ${COLORS.dim}# Start working on an issue${COLORS.reset}`);
153
+ console.log(` ${COLORS.cyan}4.${COLORS.reset} ct status ${COLORS.dim}# Monitor progress${COLORS.reset}\n`);
154
+ console.log(`${COLORS.bold}Key Commands:${COLORS.reset}\n`);
155
+ console.log(` ct start <issue> ${COLORS.dim}Create worktree + start Claude${COLORS.reset}`);
156
+ console.log(` ct status ${COLORS.dim}View all sessions${COLORS.reset}`);
157
+ console.log(` ct stop [id] ${COLORS.dim}Stop a session${COLORS.reset}`);
158
+ console.log(` ct web ${COLORS.dim}Open web dashboard${COLORS.reset}`);
159
+ console.log(` ct batch <label> ${COLORS.dim}Process multiple issues${COLORS.reset}\n`);
160
+ console.log(`${COLORS.dim}Learn more: https://github.com/wonjangcloud9/claude-tree${COLORS.reset}\n`);
161
+ }
162
+ export const demoCommand = new Command('demo')
163
+ .description('Interactive demo of claudetree workflow (no tokens used)')
164
+ .action(async () => {
165
+ try {
166
+ await runDemo();
167
+ }
168
+ catch {
169
+ // User interrupted (Ctrl+C)
170
+ console.log(`\n${COLORS.dim}Demo interrupted.${COLORS.reset}\n`);
171
+ }
172
+ });
173
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const doctorCommand: Command;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoJpC,eAAO,MAAM,aAAa,SAiDtB,CAAC"}
@@ -0,0 +1,175 @@
1
+ import { Command } from 'commander';
2
+ import { execSync } from 'node:child_process';
3
+ import { access } from 'node:fs/promises';
4
+ import { join } from 'node:path';
5
+ const CONFIG_DIR = '.claudetree';
6
+ const CONFIG_FILE = 'config.json';
7
+ const COLORS = {
8
+ green: '\x1b[32m',
9
+ red: '\x1b[31m',
10
+ yellow: '\x1b[33m',
11
+ cyan: '\x1b[36m',
12
+ dim: '\x1b[2m',
13
+ reset: '\x1b[0m',
14
+ bold: '\x1b[1m',
15
+ };
16
+ const ICONS = {
17
+ pass: `${COLORS.green}✓${COLORS.reset}`,
18
+ fail: `${COLORS.red}✗${COLORS.reset}`,
19
+ warn: `${COLORS.yellow}!${COLORS.reset}`,
20
+ };
21
+ async function checkGitRepo() {
22
+ try {
23
+ execSync('git rev-parse --git-dir', { stdio: 'pipe' });
24
+ return { name: 'Git Repository', status: 'pass', message: 'Inside a git repository' };
25
+ }
26
+ catch {
27
+ return {
28
+ name: 'Git Repository',
29
+ status: 'fail',
30
+ message: 'Not a git repository',
31
+ fix: 'Run: git init',
32
+ };
33
+ }
34
+ }
35
+ async function checkClaudeCli() {
36
+ try {
37
+ const stdout = execSync('claude --version', { stdio: 'pipe', encoding: 'utf-8' });
38
+ const version = stdout.trim().split('\n')[0];
39
+ return { name: 'Claude CLI', status: 'pass', message: `Installed (${version})` };
40
+ }
41
+ catch {
42
+ return {
43
+ name: 'Claude CLI',
44
+ status: 'fail',
45
+ message: 'Claude CLI not found',
46
+ fix: 'Install: npm install -g @anthropic-ai/claude-code',
47
+ };
48
+ }
49
+ }
50
+ async function checkGhCli() {
51
+ try {
52
+ const stdout = execSync('gh --version', { stdio: 'pipe', encoding: 'utf-8' });
53
+ const version = stdout.trim().split('\n')[0];
54
+ return { name: 'GitHub CLI', status: 'pass', message: `Installed (${version})` };
55
+ }
56
+ catch {
57
+ return {
58
+ name: 'GitHub CLI',
59
+ status: 'warn',
60
+ message: 'GitHub CLI not found (optional)',
61
+ fix: 'Install: brew install gh',
62
+ };
63
+ }
64
+ }
65
+ async function checkGhAuth() {
66
+ try {
67
+ execSync('gh auth status', { stdio: 'pipe' });
68
+ return { name: 'GitHub Auth', status: 'pass', message: 'Authenticated' };
69
+ }
70
+ catch {
71
+ const token = process.env.GITHUB_TOKEN;
72
+ if (token) {
73
+ return { name: 'GitHub Auth', status: 'pass', message: 'Using GITHUB_TOKEN env' };
74
+ }
75
+ return {
76
+ name: 'GitHub Auth',
77
+ status: 'warn',
78
+ message: 'Not authenticated (needed for issue fetching)',
79
+ fix: 'Run: gh auth login OR export GITHUB_TOKEN=<token>',
80
+ };
81
+ }
82
+ }
83
+ async function checkClaudetreeInit() {
84
+ const cwd = process.cwd();
85
+ const configPath = join(cwd, CONFIG_DIR, CONFIG_FILE);
86
+ try {
87
+ await access(configPath);
88
+ return { name: 'claudetree Init', status: 'pass', message: 'Initialized (.claudetree/config.json exists)' };
89
+ }
90
+ catch {
91
+ return {
92
+ name: 'claudetree Init',
93
+ status: 'fail',
94
+ message: 'Not initialized in this directory',
95
+ fix: 'Run: ct init',
96
+ };
97
+ }
98
+ }
99
+ async function checkNodeVersion() {
100
+ const version = process.version;
101
+ const major = parseInt(version.slice(1).split('.')[0] ?? '0', 10);
102
+ if (major >= 18) {
103
+ return { name: 'Node.js', status: 'pass', message: `${version} (>= 18 required)` };
104
+ }
105
+ return {
106
+ name: 'Node.js',
107
+ status: 'fail',
108
+ message: `${version} (>= 18 required)`,
109
+ fix: 'Upgrade Node.js to v18 or higher',
110
+ };
111
+ }
112
+ async function checkAnthropicKey() {
113
+ const key = process.env.ANTHROPIC_API_KEY;
114
+ if (key) {
115
+ const masked = key.slice(0, 10) + '...' + key.slice(-4);
116
+ return { name: 'Anthropic API Key', status: 'pass', message: `Set (${masked})` };
117
+ }
118
+ return {
119
+ name: 'Anthropic API Key',
120
+ status: 'warn',
121
+ message: 'Not set (Claude CLI may use its own auth)',
122
+ fix: 'export ANTHROPIC_API_KEY=<your-key>',
123
+ };
124
+ }
125
+ function printResult(result) {
126
+ const icon = ICONS[result.status];
127
+ console.log(` ${icon} ${COLORS.bold}${result.name}${COLORS.reset}`);
128
+ console.log(` ${COLORS.dim}${result.message}${COLORS.reset}`);
129
+ if (result.fix && result.status !== 'pass') {
130
+ console.log(` ${COLORS.cyan}→ ${result.fix}${COLORS.reset}`);
131
+ }
132
+ }
133
+ export const doctorCommand = new Command('doctor')
134
+ .description('Check environment and dependencies for claudetree')
135
+ .option('-q, --quiet', 'Only show failures and warnings', false)
136
+ .action(async (options) => {
137
+ console.log(`\n${COLORS.bold}claudetree doctor${COLORS.reset}\n`);
138
+ console.log(`${COLORS.dim}Checking your environment...${COLORS.reset}\n`);
139
+ const checks = [
140
+ checkNodeVersion,
141
+ checkGitRepo,
142
+ checkClaudeCli,
143
+ checkGhCli,
144
+ checkGhAuth,
145
+ checkAnthropicKey,
146
+ checkClaudetreeInit,
147
+ ];
148
+ const results = [];
149
+ for (const check of checks) {
150
+ const result = await check();
151
+ results.push(result);
152
+ if (!options.quiet || result.status !== 'pass') {
153
+ printResult(result);
154
+ console.log();
155
+ }
156
+ }
157
+ const fails = results.filter((r) => r.status === 'fail');
158
+ const warns = results.filter((r) => r.status === 'warn');
159
+ const passes = results.filter((r) => r.status === 'pass');
160
+ console.log(`${COLORS.dim}${'─'.repeat(40)}${COLORS.reset}`);
161
+ console.log(`\n ${COLORS.green}${passes.length} passed${COLORS.reset} ` +
162
+ `${warns.length > 0 ? `${COLORS.yellow}${warns.length} warnings${COLORS.reset} ` : ''}` +
163
+ `${fails.length > 0 ? `${COLORS.red}${fails.length} failed${COLORS.reset}` : ''}`);
164
+ if (fails.length === 0) {
165
+ console.log(`\n ${COLORS.green}${COLORS.bold}✓ Ready to use claudetree!${COLORS.reset}\n`);
166
+ if (warns.length > 0) {
167
+ console.log(` ${COLORS.dim}Fix warnings above for full functionality.${COLORS.reset}\n`);
168
+ }
169
+ }
170
+ else {
171
+ console.log(`\n ${COLORS.red}${COLORS.bold}✗ Fix the issues above before using claudetree.${COLORS.reset}\n`);
172
+ process.exit(1);
173
+ }
174
+ });
175
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,WAAW,SAsDpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,WAAW,SA8EpB,CAAC"}
@@ -1,12 +1,15 @@
1
1
  import { Command } from 'commander';
2
2
  import { mkdir, writeFile, access } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
+ import { DEFAULT_TEMPLATES } from '@claudetree/core';
4
5
  const CONFIG_DIR = '.claudetree';
5
6
  const CONFIG_FILE = 'config.json';
7
+ const TEMPLATES_DIR = 'templates';
6
8
  export const initCommand = new Command('init')
7
9
  .description('Initialize claudetree in current repository')
8
10
  .option('-d, --worktree-dir <dir>', 'Base directory for worktrees', '.worktrees')
9
11
  .option('-f, --force', 'Overwrite existing configuration', false)
12
+ .option('--slack <webhook-url>', 'Slack webhook URL for notifications')
10
13
  .action(async (options) => {
11
14
  const cwd = process.cwd();
12
15
  const configDir = join(cwd, CONFIG_DIR);
@@ -30,6 +33,10 @@ export const initCommand = new Command('init')
30
33
  worktreeDir: options.worktreeDir,
31
34
  sessions: {},
32
35
  };
36
+ // Add Slack webhook if provided
37
+ if (options.slack) {
38
+ config.slack = { webhookUrl: options.slack };
39
+ }
33
40
  await writeFile(configPath, JSON.stringify(config, null, 2));
34
41
  // Create worktree directory
35
42
  const worktreeDir = join(cwd, options.worktreeDir);
@@ -48,8 +55,19 @@ export const initCommand = new Command('init')
48
55
  catch {
49
56
  // Ignore gitignore errors
50
57
  }
58
+ // Create default templates
59
+ const templatesDir = join(configDir, TEMPLATES_DIR);
60
+ await mkdir(templatesDir, { recursive: true });
61
+ for (const [name, template] of Object.entries(DEFAULT_TEMPLATES)) {
62
+ const templatePath = join(templatesDir, `${name}.json`);
63
+ await writeFile(templatePath, JSON.stringify(template, null, 2));
64
+ }
51
65
  console.log(`Initialized claudetree in ${cwd}`);
52
66
  console.log(` Config: ${configPath}`);
53
67
  console.log(` Worktrees: ${worktreeDir}`);
68
+ console.log(` Templates: ${templatesDir} (${Object.keys(DEFAULT_TEMPLATES).length} templates)`);
69
+ if (options.slack) {
70
+ console.log(` Slack: notifications enabled`);
71
+ }
54
72
  });
55
73
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,WAAW,GAAG,aAAa,CAAC;AAOlC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,0BAA0B,EAAE,8BAA8B,EAAE,YAAY,CAAC;KAChF,MAAM,CAAC,aAAa,EAAE,kCAAkC,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEhD,+BAA+B;IAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,wBAAwB;IACxB,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7D,4BAA4B;IAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,mBAAmB;IACnB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC;aACtD,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aACjD,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,gBAAgB,GAAG,mBAAmB,UAAU,MAAM,OAAO,CAAC,WAAW,KAAK,CAAC;YAClG,MAAM,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const resumeCommand: Command;
3
+ //# sourceMappingURL=resume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,aAAa,SA4JtB,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { Command } from 'commander';
2
+ import { join } from 'node:path';
3
+ import { access } from 'node:fs/promises';
4
+ import { randomUUID } from 'node:crypto';
5
+ import { ClaudeSessionAdapter, FileSessionRepository, FileEventRepository, } from '@claudetree/core';
6
+ const CONFIG_DIR = '.claudetree';
7
+ export const resumeCommand = new Command('resume')
8
+ .description('Resume a paused Claude session')
9
+ .argument('<session-id>', 'Session ID (prefix match supported)')
10
+ .option('-p, --prompt <prompt>', 'Additional prompt for resume')
11
+ .action(async (sessionIdArg, options) => {
12
+ const cwd = process.cwd();
13
+ const configDir = join(cwd, CONFIG_DIR);
14
+ try {
15
+ await access(configDir);
16
+ }
17
+ catch {
18
+ console.error('Error: claudetree not initialized. Run "claudetree init" first.');
19
+ process.exit(1);
20
+ }
21
+ const sessionRepo = new FileSessionRepository(configDir);
22
+ const sessions = await sessionRepo.findAll();
23
+ // Find session by prefix match
24
+ const session = sessions.find((s) => s.id.startsWith(sessionIdArg) &&
25
+ (s.status === 'paused' || s.status === 'running'));
26
+ if (!session) {
27
+ console.error(`No resumable session found matching: ${sessionIdArg}`);
28
+ console.log('\nResumable sessions (paused/running):');
29
+ const resumable = sessions.filter((s) => s.status === 'paused' || s.status === 'running');
30
+ if (resumable.length === 0) {
31
+ console.log(' (none)');
32
+ }
33
+ else {
34
+ resumable.forEach((s) => {
35
+ console.log(` ${s.id.slice(0, 8)} - ${s.status} - Issue #${s.issueNumber ?? 'N/A'}`);
36
+ });
37
+ }
38
+ process.exit(1);
39
+ }
40
+ if (!session.claudeSessionId) {
41
+ console.error('Error: Session has no Claude session ID. Cannot resume.');
42
+ console.log('Hint: This session may not have captured its session ID before pausing.');
43
+ process.exit(1);
44
+ }
45
+ if (!session.worktreePath) {
46
+ console.error('Error: Session has no worktree path. Cannot resume.');
47
+ process.exit(1);
48
+ }
49
+ // Check if worktree still exists
50
+ try {
51
+ await access(session.worktreePath);
52
+ }
53
+ catch {
54
+ console.error(`Error: Worktree no longer exists: ${session.worktreePath}`);
55
+ process.exit(1);
56
+ }
57
+ console.log(`Resuming session: ${session.id.slice(0, 8)}`);
58
+ console.log(` Claude Session: ${session.claudeSessionId.slice(0, 8)}`);
59
+ console.log(` Worktree: ${session.worktreePath}`);
60
+ const claudeAdapter = new ClaudeSessionAdapter();
61
+ const eventRepo = new FileEventRepository(configDir);
62
+ // Build resume prompt
63
+ const prompt = options.prompt ?? 'Continue from where you left off.';
64
+ // Setup event listener
65
+ claudeAdapter.on('output', async (event) => {
66
+ const { output } = event;
67
+ let eventType = 'output';
68
+ if (output.type === 'tool_use')
69
+ eventType = 'tool_call';
70
+ else if (output.type === 'error')
71
+ eventType = 'error';
72
+ try {
73
+ await eventRepo.append({
74
+ id: randomUUID(),
75
+ sessionId: session.id,
76
+ type: eventType,
77
+ content: output.content,
78
+ timestamp: output.timestamp,
79
+ });
80
+ }
81
+ catch {
82
+ // Ignore file write errors
83
+ }
84
+ });
85
+ // Resume Claude session
86
+ const result = await claudeAdapter.resume(session.claudeSessionId, prompt);
87
+ // Update session
88
+ session.processId = result.processId;
89
+ session.osProcessId = result.osProcessId;
90
+ session.status = 'running';
91
+ session.lastHeartbeat = new Date();
92
+ session.updatedAt = new Date();
93
+ await sessionRepo.save(session);
94
+ console.log('\nSession resumed. Claude is working...\n');
95
+ // Setup graceful shutdown
96
+ const handleShutdown = async () => {
97
+ console.log('\n[Info] Pausing session...');
98
+ session.status = 'paused';
99
+ session.updatedAt = new Date();
100
+ await sessionRepo.save(session);
101
+ console.log(`Session paused: ${session.id.slice(0, 8)}`);
102
+ process.exit(0);
103
+ };
104
+ process.on('SIGINT', handleShutdown);
105
+ process.on('SIGTERM', handleShutdown);
106
+ // Stream output
107
+ let outputCount = 0;
108
+ for await (const output of claudeAdapter.getOutput(result.processId)) {
109
+ outputCount++;
110
+ session.lastHeartbeat = new Date();
111
+ if (output.type === 'text') {
112
+ console.log(output.content);
113
+ }
114
+ else if (output.type === 'tool_use') {
115
+ console.log(`\x1b[36m[Tool]\x1b[0m ${output.content}`);
116
+ }
117
+ else if (output.type === 'error') {
118
+ console.error(`\x1b[31m[Error]\x1b[0m ${output.content}`);
119
+ }
120
+ else if (output.type === 'done') {
121
+ console.log(`\x1b[32m[Done]\x1b[0m Session completed`);
122
+ if (output.content) {
123
+ session.claudeSessionId = output.content;
124
+ }
125
+ }
126
+ // Update heartbeat periodically
127
+ if (outputCount % 10 === 0) {
128
+ session.updatedAt = new Date();
129
+ await sessionRepo.save(session);
130
+ }
131
+ }
132
+ // Session completed
133
+ session.status = 'completed';
134
+ session.updatedAt = new Date();
135
+ await sessionRepo.save(session);
136
+ console.log('\nSession completed.');
137
+ });
138
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CpC,eAAO,MAAM,YAAY,SAuSrB,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDpC,eAAO,MAAM,YAAY,SA8YrB,CAAC"}
@@ -2,7 +2,7 @@ import { Command } from 'commander';
2
2
  import { join } from 'node:path';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { access, readFile } from 'node:fs/promises';
5
- import { GitWorktreeAdapter, ClaudeSessionAdapter, FileSessionRepository, FileEventRepository, FileToolApprovalRepository, GitHubAdapter, } from '@claudetree/core';
5
+ import { GitWorktreeAdapter, ClaudeSessionAdapter, FileSessionRepository, FileEventRepository, FileToolApprovalRepository, GitHubAdapter, TemplateLoader, DEFAULT_TEMPLATES, SlackNotifier, } from '@claudetree/core';
6
6
  const CONFIG_DIR = '.claudetree';
7
7
  async function loadConfig(cwd) {
8
8
  try {
@@ -21,6 +21,7 @@ export const startCommand = new Command('start')
21
21
  .option('-p, --prompt <prompt>', 'Initial prompt for Claude')
22
22
  .option('--no-session', 'Create worktree without starting Claude')
23
23
  .option('-s, --skill <skill>', 'Skill to activate (tdd, review)')
24
+ .option('-T, --template <template>', 'Session template (bugfix, feature, refactor, review)')
24
25
  .option('-b, --branch <branch>', 'Custom branch name')
25
26
  .option('-t, --token <token>', 'GitHub token (or use GITHUB_TOKEN env)')
26
27
  .action(async (issue, options) => {
@@ -146,8 +147,32 @@ export const startCommand = new Command('start')
146
147
  prompt: options.prompt ?? null,
147
148
  createdAt: new Date(),
148
149
  updatedAt: new Date(),
150
+ // Recovery fields
151
+ processId: null,
152
+ osProcessId: null,
153
+ lastHeartbeat: null,
154
+ errorCount: 0,
155
+ worktreePath: worktree.path,
156
+ // Token usage
157
+ usage: null,
149
158
  };
150
159
  await sessionRepo.save(session);
160
+ // Load template if specified
161
+ let template = null;
162
+ if (options.template) {
163
+ const templateLoader = new TemplateLoader(join(cwd, CONFIG_DIR));
164
+ template = await templateLoader.load(options.template);
165
+ // Fall back to default templates
166
+ if (!template && options.template in DEFAULT_TEMPLATES) {
167
+ template = DEFAULT_TEMPLATES[options.template] ?? null;
168
+ }
169
+ if (!template) {
170
+ console.error(`Error: Template "${options.template}" not found.`);
171
+ console.log('Available templates: bugfix, feature, refactor, review');
172
+ process.exit(1);
173
+ }
174
+ console.log(` Template: ${template.name}`);
175
+ }
151
176
  // Build prompt
152
177
  let prompt;
153
178
  if (options.prompt) {
@@ -176,17 +201,28 @@ Start implementing now.`;
176
201
  else {
177
202
  prompt = `Working on ${branchName}. Implement any required changes.`;
178
203
  }
179
- // Add skill if specified
204
+ // Apply template to prompt
205
+ if (template) {
206
+ const prefix = template.promptPrefix ? `${template.promptPrefix}\n\n` : '';
207
+ const suffix = template.promptSuffix ? `\n\n${template.promptSuffix}` : '';
208
+ prompt = `${prefix}${prompt}${suffix}`;
209
+ }
210
+ // Add skill if specified (template skill takes precedence)
180
211
  let systemPrompt;
181
- if (options.skill === 'tdd') {
212
+ const effectiveSkill = template?.skill || options.skill;
213
+ if (effectiveSkill === 'tdd') {
182
214
  systemPrompt = 'Follow TDD workflow: write failing test first, then implement, then refactor.';
183
215
  }
184
- else if (options.skill === 'review') {
216
+ else if (effectiveSkill === 'review') {
185
217
  systemPrompt = 'Review code thoroughly for security, quality, and best practices.';
186
218
  }
219
+ // Template system prompt overrides
220
+ if (template?.systemPrompt) {
221
+ systemPrompt = template.systemPrompt;
222
+ }
187
223
  console.log('\nStarting Claude session...');
188
- if (systemPrompt) {
189
- console.log(` Skill: ${options.skill}`);
224
+ if (effectiveSkill) {
225
+ console.log(` Skill: ${effectiveSkill}`);
190
226
  }
191
227
  // Initialize event repositories
192
228
  const eventRepo = new FileEventRepository(join(cwd, CONFIG_DIR));
@@ -245,10 +281,27 @@ Start implementing now.`;
245
281
  allowedTools: ['Read', 'Write', 'Edit', 'Bash', 'Glob', 'Grep'],
246
282
  });
247
283
  console.log(`\x1b[33m[Debug]\x1b[0m Process started with ID: ${result.processId.slice(0, 8)}`);
248
- // Update session
284
+ // Update session with process info
285
+ session.processId = result.processId;
286
+ session.osProcessId = result.osProcessId;
287
+ session.lastHeartbeat = new Date();
249
288
  session.status = 'running';
250
289
  session.updatedAt = new Date();
251
290
  await sessionRepo.save(session);
291
+ // Setup graceful shutdown
292
+ const handleShutdown = async () => {
293
+ console.log('\n[Info] Pausing session...');
294
+ session.status = 'paused';
295
+ session.updatedAt = new Date();
296
+ await sessionRepo.save(session);
297
+ console.log(`Session paused: ${session.id.slice(0, 8)}`);
298
+ if (session.claudeSessionId) {
299
+ console.log(`Resume with: claudetree resume ${session.id.slice(0, 8)}`);
300
+ }
301
+ process.exit(0);
302
+ };
303
+ process.on('SIGINT', handleShutdown);
304
+ process.on('SIGTERM', handleShutdown);
252
305
  console.log(`\nSession started: ${session.id.slice(0, 8)}`);
253
306
  console.log(`Working directory: ${worktree.path}`);
254
307
  console.log('Claude is now working on the issue...\n');
@@ -257,6 +310,7 @@ Start implementing now.`;
257
310
  let outputCount = 0;
258
311
  for await (const output of claudeAdapter.getOutput(result.processId)) {
259
312
  outputCount++;
313
+ session.lastHeartbeat = new Date();
260
314
  console.log(`\x1b[33m[Debug]\x1b[0m Received output #${outputCount}: type=${output.type}`);
261
315
  if (output.type === 'text') {
262
316
  console.log(output.content);
@@ -269,6 +323,20 @@ Start implementing now.`;
269
323
  }
270
324
  else if (output.type === 'done') {
271
325
  console.log(`\x1b[32m[Done]\x1b[0m Session ID: ${output.content}`);
326
+ // Capture Claude session ID for resume
327
+ if (output.content) {
328
+ session.claudeSessionId = output.content;
329
+ }
330
+ // Capture token usage
331
+ if (output.usage) {
332
+ session.usage = output.usage;
333
+ console.log(`\x1b[32m[Usage]\x1b[0m Tokens: ${output.usage.inputTokens} in / ${output.usage.outputTokens} out | Cost: $${output.usage.totalCostUsd.toFixed(4)}`);
334
+ }
335
+ }
336
+ // Update heartbeat periodically
337
+ if (outputCount % 10 === 0) {
338
+ session.updatedAt = new Date();
339
+ await sessionRepo.save(session);
272
340
  }
273
341
  }
274
342
  console.log(`\x1b[33m[Debug]\x1b[0m Total outputs received: ${outputCount}`);
@@ -277,8 +345,31 @@ Start implementing now.`;
277
345
  session.updatedAt = new Date();
278
346
  await sessionRepo.save(session);
279
347
  console.log('\nSession completed.');
348
+ // Send Slack notification
349
+ if (config.slack?.webhookUrl) {
350
+ const slack = new SlackNotifier(config.slack.webhookUrl);
351
+ await slack.notifySession({
352
+ sessionId: session.id,
353
+ status: 'completed',
354
+ issueNumber,
355
+ branch: branchName,
356
+ worktreePath: worktree.path,
357
+ duration: Date.now() - session.createdAt.getTime(),
358
+ });
359
+ }
280
360
  }
281
361
  catch (error) {
362
+ // Send failure notification
363
+ if (config.slack?.webhookUrl) {
364
+ const slack = new SlackNotifier(config.slack.webhookUrl);
365
+ await slack.notifySession({
366
+ sessionId: 'unknown',
367
+ status: 'failed',
368
+ issueNumber,
369
+ branch: branchName,
370
+ error: error instanceof Error ? error.message : 'Unknown error',
371
+ });
372
+ }
282
373
  if (error instanceof Error) {
283
374
  console.error(`Error: ${error.message}`);
284
375
  }
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,aAAa,SAmEtB,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,aAAa,SAwFtB,CAAC"}
@@ -37,6 +37,9 @@ export const statusCommand = new Command('status')
37
37
  return;
38
38
  }
39
39
  console.log('Sessions:\n');
40
+ let totalCost = 0;
41
+ let totalInputTokens = 0;
42
+ let totalOutputTokens = 0;
40
43
  for (const session of sessions) {
41
44
  const color = STATUS_COLORS[session.status] ?? '';
42
45
  const statusStr = `${color}${session.status}${RESET}`;
@@ -50,8 +53,22 @@ export const statusCommand = new Command('status')
50
53
  console.log(` Prompt: ${truncatedPrompt}`);
51
54
  }
52
55
  console.log(` Created: ${session.createdAt.toLocaleString()}`);
56
+ // Display token usage
57
+ if (session.usage) {
58
+ const { inputTokens, outputTokens, totalCostUsd } = session.usage;
59
+ console.log(` \x1b[33mTokens:\x1b[0m ${inputTokens.toLocaleString()} in / ${outputTokens.toLocaleString()} out`);
60
+ console.log(` \x1b[33mCost:\x1b[0m $${totalCostUsd.toFixed(4)}`);
61
+ totalCost += totalCostUsd;
62
+ totalInputTokens += inputTokens;
63
+ totalOutputTokens += outputTokens;
64
+ }
53
65
  console.log('');
54
66
  }
67
+ // Show totals if any session has usage data
68
+ if (totalCost > 0) {
69
+ console.log('\x1b[2m─────────────────────────────────────\x1b[0m');
70
+ console.log(`\x1b[1mTotal:\x1b[0m ${totalInputTokens.toLocaleString()} in / ${totalOutputTokens.toLocaleString()} out | \x1b[32m$${totalCost.toFixed(4)}\x1b[0m\n`);
71
+ }
55
72
  };
56
73
  if (options.watch) {
57
74
  console.log('Watching sessions... (Ctrl+C to exit)\n');
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { program } from 'commander';
3
+ import { batchCommand } from './commands/batch.js';
4
+ import { demoCommand } from './commands/demo.js';
5
+ import { doctorCommand } from './commands/doctor.js';
3
6
  import { initCommand } from './commands/init.js';
4
7
  import { listCommand } from './commands/list.js';
8
+ import { resumeCommand } from './commands/resume.js';
5
9
  import { startCommand } from './commands/start.js';
6
10
  import { statusCommand } from './commands/status.js';
7
11
  import { stopCommand } from './commands/stop.js';
@@ -10,8 +14,12 @@ program
10
14
  .name('claudetree')
11
15
  .description('Git Worktree-based Claude Code multi-session manager')
12
16
  .version('0.1.0');
17
+ program.addCommand(batchCommand);
18
+ program.addCommand(demoCommand);
19
+ program.addCommand(doctorCommand);
13
20
  program.addCommand(initCommand);
14
21
  program.addCommand(listCommand);
22
+ program.addCommand(resumeCommand);
15
23
  program.addCommand(startCommand);
16
24
  program.addCommand(statusCommand);
17
25
  program.addCommand(stopCommand);
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,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,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,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudetree/cli",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "CLI for claudetree - Manage Claude sessions with git worktrees",
5
5
  "type": "module",
6
6
  "bin": {
@@ -25,9 +25,9 @@
25
25
  },
26
26
  "license": "MIT",
27
27
  "dependencies": {
28
- "@claudetree/core": "0.1.0",
29
- "@claudetree/shared": "0.1.0",
30
- "commander": "^13.0.0"
28
+ "commander": "^13.0.0",
29
+ "@claudetree/core": "0.2.0",
30
+ "@claudetree/shared": "0.2.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^22.10.0",