@claudetree/cli 0.5.0 → 0.5.2

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.
Files changed (111) hide show
  1. package/dist/commands/log.d.ts +3 -0
  2. package/dist/commands/log.d.ts.map +1 -0
  3. package/dist/commands/log.js +116 -0
  4. package/dist/commands/log.js.map +1 -0
  5. package/dist/index.js +6 -1
  6. package/dist/index.js.map +1 -1
  7. package/package.json +7 -4
  8. package/dist/commands/batch.test.d.ts +0 -2
  9. package/dist/commands/batch.test.d.ts.map +0 -1
  10. package/dist/commands/batch.test.js +0 -230
  11. package/dist/commands/batch.test.js.map +0 -1
  12. package/dist/commands/bustercall/issueFilters.test.d.ts +0 -2
  13. package/dist/commands/bustercall/issueFilters.test.d.ts.map +0 -1
  14. package/dist/commands/bustercall/issueFilters.test.js +0 -151
  15. package/dist/commands/bustercall/issueFilters.test.js.map +0 -1
  16. package/dist/commands/bustercall/sessionManager.test.d.ts +0 -2
  17. package/dist/commands/bustercall/sessionManager.test.d.ts.map +0 -1
  18. package/dist/commands/bustercall/sessionManager.test.js +0 -79
  19. package/dist/commands/bustercall/sessionManager.test.js.map +0 -1
  20. package/dist/commands/bustercall/statusDisplay.test.d.ts +0 -2
  21. package/dist/commands/bustercall/statusDisplay.test.d.ts.map +0 -1
  22. package/dist/commands/bustercall/statusDisplay.test.js +0 -111
  23. package/dist/commands/bustercall/statusDisplay.test.js.map +0 -1
  24. package/dist/commands/bustercall.test.d.ts +0 -2
  25. package/dist/commands/bustercall.test.d.ts.map +0 -1
  26. package/dist/commands/bustercall.test.js +0 -258
  27. package/dist/commands/bustercall.test.js.map +0 -1
  28. package/dist/commands/chain/chainDisplay.test.d.ts +0 -2
  29. package/dist/commands/chain/chainDisplay.test.d.ts.map +0 -1
  30. package/dist/commands/chain/chainDisplay.test.js +0 -128
  31. package/dist/commands/chain/chainDisplay.test.js.map +0 -1
  32. package/dist/commands/chain/chainSession.test.d.ts +0 -2
  33. package/dist/commands/chain/chainSession.test.d.ts.map +0 -1
  34. package/dist/commands/chain/chainSession.test.js +0 -93
  35. package/dist/commands/chain/chainSession.test.js.map +0 -1
  36. package/dist/commands/chain.test.d.ts +0 -2
  37. package/dist/commands/chain.test.d.ts.map +0 -1
  38. package/dist/commands/chain.test.js +0 -216
  39. package/dist/commands/chain.test.js.map +0 -1
  40. package/dist/commands/clean.test.d.ts +0 -2
  41. package/dist/commands/clean.test.d.ts.map +0 -1
  42. package/dist/commands/clean.test.js +0 -193
  43. package/dist/commands/clean.test.js.map +0 -1
  44. package/dist/commands/demo.d.ts +0 -3
  45. package/dist/commands/demo.d.ts.map +0 -1
  46. package/dist/commands/demo.js +0 -175
  47. package/dist/commands/demo.js.map +0 -1
  48. package/dist/commands/demo.test.d.ts +0 -2
  49. package/dist/commands/demo.test.d.ts.map +0 -1
  50. package/dist/commands/demo.test.js +0 -34
  51. package/dist/commands/demo.test.js.map +0 -1
  52. package/dist/commands/doctor.test.d.ts +0 -2
  53. package/dist/commands/doctor.test.d.ts.map +0 -1
  54. package/dist/commands/doctor.test.js +0 -324
  55. package/dist/commands/doctor.test.js.map +0 -1
  56. package/dist/commands/init.test.d.ts +0 -2
  57. package/dist/commands/init.test.d.ts.map +0 -1
  58. package/dist/commands/init.test.js +0 -94
  59. package/dist/commands/init.test.js.map +0 -1
  60. package/dist/commands/list.test.d.ts +0 -2
  61. package/dist/commands/list.test.d.ts.map +0 -1
  62. package/dist/commands/list.test.js +0 -106
  63. package/dist/commands/list.test.js.map +0 -1
  64. package/dist/commands/resume.test.d.ts +0 -2
  65. package/dist/commands/resume.test.d.ts.map +0 -1
  66. package/dist/commands/resume.test.js +0 -362
  67. package/dist/commands/resume.test.js.map +0 -1
  68. package/dist/commands/start/buildPrompt.test.d.ts +0 -2
  69. package/dist/commands/start/buildPrompt.test.d.ts.map +0 -1
  70. package/dist/commands/start/buildPrompt.test.js +0 -182
  71. package/dist/commands/start/buildPrompt.test.js.map +0 -1
  72. package/dist/commands/start/createWorktree.test.d.ts +0 -2
  73. package/dist/commands/start/createWorktree.test.d.ts.map +0 -1
  74. package/dist/commands/start/createWorktree.test.js +0 -81
  75. package/dist/commands/start/createWorktree.test.js.map +0 -1
  76. package/dist/commands/start/parseIssueInput.test.d.ts +0 -2
  77. package/dist/commands/start/parseIssueInput.test.d.ts.map +0 -1
  78. package/dist/commands/start/parseIssueInput.test.js +0 -118
  79. package/dist/commands/start/parseIssueInput.test.js.map +0 -1
  80. package/dist/commands/start/progressTracker.test.d.ts +0 -2
  81. package/dist/commands/start/progressTracker.test.d.ts.map +0 -1
  82. package/dist/commands/start/progressTracker.test.js +0 -100
  83. package/dist/commands/start/progressTracker.test.js.map +0 -1
  84. package/dist/commands/start/validationGates.test.d.ts +0 -2
  85. package/dist/commands/start/validationGates.test.d.ts.map +0 -1
  86. package/dist/commands/start/validationGates.test.js +0 -66
  87. package/dist/commands/start/validationGates.test.js.map +0 -1
  88. package/dist/commands/start.test.d.ts +0 -2
  89. package/dist/commands/start.test.d.ts.map +0 -1
  90. package/dist/commands/start.test.js +0 -260
  91. package/dist/commands/start.test.js.map +0 -1
  92. package/dist/commands/stats.test.d.ts +0 -2
  93. package/dist/commands/stats.test.d.ts.map +0 -1
  94. package/dist/commands/stats.test.js +0 -127
  95. package/dist/commands/stats.test.js.map +0 -1
  96. package/dist/commands/status.test.d.ts +0 -2
  97. package/dist/commands/status.test.d.ts.map +0 -1
  98. package/dist/commands/status.test.js +0 -172
  99. package/dist/commands/status.test.js.map +0 -1
  100. package/dist/commands/stop.test.d.ts +0 -2
  101. package/dist/commands/stop.test.d.ts.map +0 -1
  102. package/dist/commands/stop.test.js +0 -152
  103. package/dist/commands/stop.test.js.map +0 -1
  104. package/dist/commands/tdd.d.ts +0 -3
  105. package/dist/commands/tdd.d.ts.map +0 -1
  106. package/dist/commands/tdd.js +0 -472
  107. package/dist/commands/tdd.js.map +0 -1
  108. package/dist/commands/web.test.d.ts +0 -2
  109. package/dist/commands/web.test.d.ts.map +0 -1
  110. package/dist/commands/web.test.js +0 -133
  111. package/dist/commands/web.test.js.map +0 -1
@@ -1,175 +0,0 @@
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
- // eslint-disable-next-line no-control-regex
31
- const ANSI_REGEX = /\x1b\[[0-9;]*m/g;
32
- const maxLen = Math.max(...lines.map((l) => l.replace(ANSI_REGEX, '').length));
33
- const border = '─'.repeat(maxLen + 2);
34
- console.log(`${color}┌${border}┐${COLORS.reset}`);
35
- for (const line of lines) {
36
- const plainLen = line.replace(ANSI_REGEX, '').length;
37
- const padding = ' '.repeat(maxLen - plainLen);
38
- console.log(`${color}│${COLORS.reset} ${line}${padding} ${color}│${COLORS.reset}`);
39
- }
40
- console.log(`${color}└${border}┘${COLORS.reset}`);
41
- }
42
- async function waitForEnter(message = 'Press Enter to continue...') {
43
- const rl = readline.createInterface({
44
- input: process.stdin,
45
- output: process.stdout,
46
- });
47
- return new Promise((resolve) => {
48
- rl.question(`\n${COLORS.dim}${message}${COLORS.reset}`, () => {
49
- rl.close();
50
- resolve();
51
- });
52
- });
53
- }
54
- async function runDemo() {
55
- console.clear();
56
- console.log(`\n${COLORS.bold}${COLORS.cyan}🌳 claudetree Demo${COLORS.reset}\n`);
57
- console.log(`${COLORS.dim}This is a simulated walkthrough - no tokens will be consumed.${COLORS.reset}\n`);
58
- await waitForEnter();
59
- // Step 1: Issue
60
- console.clear();
61
- console.log(`\n${COLORS.bold}Step 1: You have a GitHub issue${COLORS.reset}\n`);
62
- printBox([
63
- `${COLORS.bold}Issue #42: Fix login button not responding${COLORS.reset}`,
64
- '',
65
- `${COLORS.dim}When clicking the login button, nothing happens.${COLORS.reset}`,
66
- `${COLORS.dim}Expected: Should redirect to /auth${COLORS.reset}`,
67
- `${COLORS.dim}Actual: No response${COLORS.reset}`,
68
- '',
69
- `${COLORS.yellow}Labels: bug, high-priority${COLORS.reset}`,
70
- ], COLORS.blue);
71
- console.log(`\n${COLORS.dim}Normally you'd copy-paste this and manually implement...${COLORS.reset}`);
72
- console.log(`${COLORS.green}With claudetree, just run one command:${COLORS.reset}\n`);
73
- console.log(` ${COLORS.cyan}$ ct start https://github.com/you/repo/issues/42${COLORS.reset}\n`);
74
- await waitForEnter();
75
- // Step 2: Worktree creation
76
- console.clear();
77
- console.log(`\n${COLORS.bold}Step 2: claudetree creates an isolated workspace${COLORS.reset}\n`);
78
- await simulateProgress([
79
- 'Fetching issue #42 from GitHub...',
80
- 'Creating branch: fix/issue-42-login-button',
81
- 'Creating worktree: .worktrees/issue-42-fix-login/',
82
- 'Initializing Claude session...',
83
- ]);
84
- console.log(`\n${COLORS.dim}Your main branch stays untouched.${COLORS.reset}`);
85
- console.log(`${COLORS.dim}Claude works in a completely isolated directory.${COLORS.reset}\n`);
86
- printBox([
87
- `${COLORS.bold}Project Structure${COLORS.reset}`,
88
- '',
89
- `my-app/ ${COLORS.dim}← You work here${COLORS.reset}`,
90
- `├── src/`,
91
- `└── .worktrees/`,
92
- ` └── issue-42-fix-login/ ${COLORS.cyan}← Claude works here${COLORS.reset}`,
93
- ], COLORS.green);
94
- await waitForEnter();
95
- // Step 3: Claude working
96
- console.clear();
97
- console.log(`\n${COLORS.bold}Step 3: Claude works autonomously${COLORS.reset}\n`);
98
- console.log(`${COLORS.cyan}Claude:${COLORS.reset} I'll analyze the login button issue...\n`);
99
- await typeText(`${COLORS.dim}> Reading src/components/LoginButton.tsx...${COLORS.reset}`, 20);
100
- await sleep(500);
101
- await typeText(`${COLORS.dim}> Found the issue: onClick handler is missing await${COLORS.reset}`, 20);
102
- await sleep(500);
103
- await typeText(`${COLORS.dim}> Editing src/components/LoginButton.tsx...${COLORS.reset}`, 20);
104
- await sleep(500);
105
- await typeText(`${COLORS.dim}> Running npm test...${COLORS.reset}`, 20);
106
- await sleep(800);
107
- console.log(`\n${COLORS.green}✓ All tests passing${COLORS.reset}\n`);
108
- await typeText(`${COLORS.dim}> Creating commit: "fix: add await to login handler"${COLORS.reset}`, 20);
109
- await typeText(`${COLORS.dim}> Pushing to origin/fix/issue-42-login-button...${COLORS.reset}`, 20);
110
- await typeText(`${COLORS.dim}> Creating pull request...${COLORS.reset}`, 20);
111
- await waitForEnter();
112
- // Step 4: Result
113
- console.clear();
114
- console.log(`\n${COLORS.bold}Step 4: PR is ready for review!${COLORS.reset}\n`);
115
- printBox([
116
- `${COLORS.bold}${COLORS.green}Pull Request #123${COLORS.reset}`,
117
- '',
118
- `${COLORS.bold}fix: add await to login handler${COLORS.reset}`,
119
- '',
120
- `Fixes #42`,
121
- '',
122
- `${COLORS.dim}Changes:${COLORS.reset}`,
123
- ` ${COLORS.green}+ await${COLORS.reset} router.push('/auth')`,
124
- ` ${COLORS.red}- ${COLORS.reset}router.push('/auth')`,
125
- '',
126
- `${COLORS.cyan}→ github.com/you/repo/pull/123${COLORS.reset}`,
127
- ], COLORS.green);
128
- console.log(`\n${COLORS.dim}Meanwhile, you were doing something else entirely.${COLORS.reset}`);
129
- console.log(`${COLORS.dim}Now just review and merge!${COLORS.reset}\n`);
130
- await waitForEnter();
131
- // Step 5: Parallel
132
- console.clear();
133
- console.log(`\n${COLORS.bold}Bonus: Run multiple issues in parallel!${COLORS.reset}\n`);
134
- console.log(` ${COLORS.cyan}$ ct start 42${COLORS.reset} ${COLORS.dim}# Fix login button${COLORS.reset}`);
135
- console.log(` ${COLORS.cyan}$ ct start 43${COLORS.reset} ${COLORS.dim}# Add dark mode${COLORS.reset}`);
136
- console.log(` ${COLORS.cyan}$ ct start 44${COLORS.reset} ${COLORS.dim}# Update deps${COLORS.reset}\n`);
137
- console.log(`${COLORS.dim}Monitor all sessions:${COLORS.reset}\n`);
138
- console.log(` ${COLORS.cyan}$ ct status${COLORS.reset} ${COLORS.dim}# CLI view${COLORS.reset}`);
139
- console.log(` ${COLORS.cyan}$ ct web${COLORS.reset} ${COLORS.dim}# Web dashboard at localhost:3000${COLORS.reset}\n`);
140
- printBox([
141
- `${COLORS.bold}Session Status${COLORS.reset}`,
142
- '',
143
- `${COLORS.green}●${COLORS.reset} issue-42 ${COLORS.dim}running${COLORS.reset} fix login button`,
144
- `${COLORS.green}●${COLORS.reset} issue-43 ${COLORS.dim}running${COLORS.reset} add dark mode`,
145
- `${COLORS.yellow}●${COLORS.reset} issue-44 ${COLORS.dim}pending${COLORS.reset} update dependencies`,
146
- ], COLORS.magenta);
147
- await waitForEnter();
148
- // Final
149
- console.clear();
150
- console.log(`\n${COLORS.bold}${COLORS.green}🎉 That's claudetree!${COLORS.reset}\n`);
151
- console.log(`${COLORS.bold}Quick Start:${COLORS.reset}\n`);
152
- console.log(` ${COLORS.cyan}1.${COLORS.reset} ct init ${COLORS.dim}# Initialize in your project${COLORS.reset}`);
153
- console.log(` ${COLORS.cyan}2.${COLORS.reset} ct doctor ${COLORS.dim}# Check everything is ready${COLORS.reset}`);
154
- console.log(` ${COLORS.cyan}3.${COLORS.reset} ct start <issue-url> ${COLORS.dim}# Start working on an issue${COLORS.reset}`);
155
- console.log(` ${COLORS.cyan}4.${COLORS.reset} ct status ${COLORS.dim}# Monitor progress${COLORS.reset}\n`);
156
- console.log(`${COLORS.bold}Key Commands:${COLORS.reset}\n`);
157
- console.log(` ct start <issue> ${COLORS.dim}Create worktree + start Claude${COLORS.reset}`);
158
- console.log(` ct status ${COLORS.dim}View all sessions${COLORS.reset}`);
159
- console.log(` ct stop [id] ${COLORS.dim}Stop a session${COLORS.reset}`);
160
- console.log(` ct web ${COLORS.dim}Open web dashboard${COLORS.reset}`);
161
- console.log(` ct batch <label> ${COLORS.dim}Process multiple issues${COLORS.reset}\n`);
162
- console.log(`${COLORS.dim}Learn more: https://github.com/wonjangcloud9/claude-tree${COLORS.reset}\n`);
163
- }
164
- export const demoCommand = new Command('demo')
165
- .description('Interactive demo of claudetree workflow (no tokens used)')
166
- .action(async () => {
167
- try {
168
- await runDemo();
169
- }
170
- catch {
171
- // User interrupted (Ctrl+C)
172
- console.log(`\n${COLORS.dim}Demo interrupted.${COLORS.reset}\n`);
173
- }
174
- });
175
- //# sourceMappingURL=demo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=demo.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.test.d.ts","sourceRoot":"","sources":["../../src/commands/demo.test.ts"],"names":[],"mappings":""}
@@ -1,34 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { demoCommand } from './demo.js';
3
- describe('demoCommand', () => {
4
- describe('command structure', () => {
5
- it('should have correct name', () => {
6
- expect(demoCommand.name()).toBe('demo');
7
- });
8
- it('should have correct description', () => {
9
- expect(demoCommand.description()).toContain('Interactive demo');
10
- expect(demoCommand.description()).toContain('no tokens');
11
- });
12
- it('should not require arguments', () => {
13
- // Demo command has no required arguments
14
- const args = demoCommand.registeredArguments;
15
- expect(args).toHaveLength(0);
16
- });
17
- it('should not have options', () => {
18
- // Demo command has no options
19
- const options = demoCommand.options;
20
- expect(options).toHaveLength(0);
21
- });
22
- });
23
- describe('command definition', () => {
24
- it('should be a Command instance', () => {
25
- expect(demoCommand).toBeDefined();
26
- expect(typeof demoCommand.parseAsync).toBe('function');
27
- });
28
- it('should have action handler', () => {
29
- // Commander stores action in _actionHandler
30
- expect(demoCommand._actionHandler).toBeDefined();
31
- });
32
- });
33
- });
34
- //# sourceMappingURL=demo.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.test.js","sourceRoot":"","sources":["../../src/commands/demo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAChE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,yCAAyC;YACzC,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,8BAA8B;YAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,4CAA4C;YAC5C,MAAM,CAAE,WAAsD,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=doctor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.test.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.test.ts"],"names":[],"mappings":""}
@@ -1,324 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { mkdtemp, rm, mkdir, writeFile } from 'node:fs/promises';
3
- import { tmpdir } from 'node:os';
4
- import { join } from 'node:path';
5
- // Mock execSync
6
- const mockExecSync = vi.fn();
7
- vi.mock('node:child_process', () => ({
8
- execSync: (...args) => mockExecSync(...args),
9
- }));
10
- import { doctorCommand } from './doctor.js';
11
- describe('doctorCommand', () => {
12
- let testDir;
13
- let originalCwd;
14
- let originalExit;
15
- let consoleLogSpy;
16
- let originalEnv;
17
- beforeEach(async () => {
18
- testDir = await mkdtemp(join(tmpdir(), 'claudetree-doctor-test-'));
19
- originalCwd = process.cwd();
20
- process.chdir(testDir);
21
- originalExit = process.exit;
22
- process.exit = vi.fn();
23
- originalEnv = { ...process.env };
24
- consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
25
- mockExecSync.mockReset();
26
- });
27
- afterEach(async () => {
28
- process.chdir(originalCwd);
29
- process.exit = originalExit;
30
- process.env = originalEnv;
31
- consoleLogSpy.mockRestore();
32
- vi.clearAllMocks();
33
- await rm(testDir, { recursive: true, force: true });
34
- });
35
- describe('Node.js check', () => {
36
- it('should pass for Node.js >= 18', async () => {
37
- // Setup mocks
38
- mockExecSync.mockImplementation((cmd) => {
39
- if (cmd === 'git rev-parse --git-dir')
40
- return '.git';
41
- if (cmd === 'claude --version')
42
- return 'claude 1.0.0';
43
- if (cmd === 'gh --version')
44
- return 'gh version 2.0.0';
45
- if (cmd === 'gh auth status')
46
- return '';
47
- throw new Error(`Unknown command: ${cmd}`);
48
- });
49
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
50
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
51
- await doctorCommand.parseAsync(['node', 'test']);
52
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('Node.js'));
53
- });
54
- });
55
- describe('Git Repository check', () => {
56
- it('should pass when inside git repo', async () => {
57
- mockExecSync.mockImplementation((cmd) => {
58
- if (cmd === 'git rev-parse --git-dir')
59
- return '.git';
60
- if (cmd === 'claude --version')
61
- return 'claude 1.0.0';
62
- if (cmd === 'gh --version')
63
- return 'gh version 2.0.0';
64
- if (cmd === 'gh auth status')
65
- return '';
66
- throw new Error(`Unknown command: ${cmd}`);
67
- });
68
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
69
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
70
- await doctorCommand.parseAsync(['node', 'test']);
71
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('Git Repository'));
72
- });
73
- it('should fail when not inside git repo', async () => {
74
- mockExecSync.mockImplementation((cmd) => {
75
- if (cmd === 'git rev-parse --git-dir') {
76
- throw new Error('not a git repository');
77
- }
78
- if (cmd === 'claude --version')
79
- return 'claude 1.0.0';
80
- if (cmd === 'gh --version')
81
- return 'gh version 2.0.0';
82
- if (cmd === 'gh auth status')
83
- return '';
84
- throw new Error(`Unknown command: ${cmd}`);
85
- });
86
- process.exit.mockImplementation(() => {
87
- throw new Error('process.exit called');
88
- });
89
- await expect(doctorCommand.parseAsync(['node', 'test'])).rejects.toThrow('process.exit called');
90
- expect(process.exit).toHaveBeenCalledWith(1);
91
- });
92
- });
93
- describe('Claude CLI check', () => {
94
- it('should pass when Claude CLI is installed', async () => {
95
- mockExecSync.mockImplementation((cmd) => {
96
- if (cmd === 'git rev-parse --git-dir')
97
- return '.git';
98
- if (cmd === 'claude --version')
99
- return 'claude 1.0.0\nsome other info';
100
- if (cmd === 'gh --version')
101
- return 'gh version 2.0.0';
102
- if (cmd === 'gh auth status')
103
- return '';
104
- throw new Error(`Unknown command: ${cmd}`);
105
- });
106
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
107
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
108
- await doctorCommand.parseAsync(['node', 'test']);
109
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('Claude CLI'));
110
- });
111
- it('should fail when Claude CLI is not installed', async () => {
112
- mockExecSync.mockImplementation((cmd) => {
113
- if (cmd === 'git rev-parse --git-dir')
114
- return '.git';
115
- if (cmd === 'claude --version')
116
- throw new Error('command not found');
117
- if (cmd === 'gh --version')
118
- return 'gh version 2.0.0';
119
- if (cmd === 'gh auth status')
120
- return '';
121
- throw new Error(`Unknown command: ${cmd}`);
122
- });
123
- process.exit.mockImplementation(() => {
124
- throw new Error('process.exit called');
125
- });
126
- await expect(doctorCommand.parseAsync(['node', 'test'])).rejects.toThrow('process.exit called');
127
- expect(process.exit).toHaveBeenCalledWith(1);
128
- });
129
- });
130
- describe('GitHub CLI check', () => {
131
- it('should pass (warn) when gh CLI is installed', async () => {
132
- mockExecSync.mockImplementation((cmd) => {
133
- if (cmd === 'git rev-parse --git-dir')
134
- return '.git';
135
- if (cmd === 'claude --version')
136
- return 'claude 1.0.0';
137
- if (cmd === 'gh --version')
138
- return 'gh version 2.40.0';
139
- if (cmd === 'gh auth status')
140
- return '';
141
- throw new Error(`Unknown command: ${cmd}`);
142
- });
143
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
144
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
145
- await doctorCommand.parseAsync(['node', 'test']);
146
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('GitHub CLI'));
147
- });
148
- it('should warn when gh CLI is not installed', async () => {
149
- mockExecSync.mockImplementation((cmd) => {
150
- if (cmd === 'git rev-parse --git-dir')
151
- return '.git';
152
- if (cmd === 'claude --version')
153
- return 'claude 1.0.0';
154
- if (cmd === 'gh --version')
155
- throw new Error('command not found');
156
- if (cmd === 'gh auth status')
157
- throw new Error('not authenticated');
158
- throw new Error(`Unknown command: ${cmd}`);
159
- });
160
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
161
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
162
- // gh CLI missing is a warning, not a failure
163
- await doctorCommand.parseAsync(['node', 'test']);
164
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('GitHub CLI'));
165
- });
166
- });
167
- describe('GitHub Auth check', () => {
168
- it('should pass when gh is authenticated', async () => {
169
- mockExecSync.mockImplementation((cmd) => {
170
- if (cmd === 'git rev-parse --git-dir')
171
- return '.git';
172
- if (cmd === 'claude --version')
173
- return 'claude 1.0.0';
174
- if (cmd === 'gh --version')
175
- return 'gh version 2.0.0';
176
- if (cmd === 'gh auth status')
177
- return 'Logged in as user';
178
- throw new Error(`Unknown command: ${cmd}`);
179
- });
180
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
181
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
182
- await doctorCommand.parseAsync(['node', 'test']);
183
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('GitHub Auth'));
184
- });
185
- it('should pass when GITHUB_TOKEN is set', async () => {
186
- process.env.GITHUB_TOKEN = 'test-token';
187
- mockExecSync.mockImplementation((cmd) => {
188
- if (cmd === 'git rev-parse --git-dir')
189
- return '.git';
190
- if (cmd === 'claude --version')
191
- return 'claude 1.0.0';
192
- if (cmd === 'gh --version')
193
- return 'gh version 2.0.0';
194
- if (cmd === 'gh auth status')
195
- throw new Error('not authenticated');
196
- throw new Error(`Unknown command: ${cmd}`);
197
- });
198
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
199
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
200
- await doctorCommand.parseAsync(['node', 'test']);
201
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('GitHub Auth'));
202
- });
203
- });
204
- describe('claudetree Init check', () => {
205
- it('should pass when initialized', async () => {
206
- mockExecSync.mockImplementation((cmd) => {
207
- if (cmd === 'git rev-parse --git-dir')
208
- return '.git';
209
- if (cmd === 'claude --version')
210
- return 'claude 1.0.0';
211
- if (cmd === 'gh --version')
212
- return 'gh version 2.0.0';
213
- if (cmd === 'gh auth status')
214
- return '';
215
- throw new Error(`Unknown command: ${cmd}`);
216
- });
217
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
218
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
219
- await doctorCommand.parseAsync(['node', 'test']);
220
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('claudetree Init'));
221
- });
222
- it('should fail when not initialized', async () => {
223
- mockExecSync.mockImplementation((cmd) => {
224
- if (cmd === 'git rev-parse --git-dir')
225
- return '.git';
226
- if (cmd === 'claude --version')
227
- return 'claude 1.0.0';
228
- if (cmd === 'gh --version')
229
- return 'gh version 2.0.0';
230
- if (cmd === 'gh auth status')
231
- return '';
232
- throw new Error(`Unknown command: ${cmd}`);
233
- });
234
- process.exit.mockImplementation(() => {
235
- throw new Error('process.exit called');
236
- });
237
- await expect(doctorCommand.parseAsync(['node', 'test'])).rejects.toThrow('process.exit called');
238
- expect(process.exit).toHaveBeenCalledWith(1);
239
- });
240
- });
241
- describe('Anthropic API Key check', () => {
242
- it('should pass when ANTHROPIC_API_KEY is set', async () => {
243
- process.env.ANTHROPIC_API_KEY = 'sk-ant-test-key-12345678901234567890';
244
- mockExecSync.mockImplementation((cmd) => {
245
- if (cmd === 'git rev-parse --git-dir')
246
- return '.git';
247
- if (cmd === 'claude --version')
248
- return 'claude 1.0.0';
249
- if (cmd === 'gh --version')
250
- return 'gh version 2.0.0';
251
- if (cmd === 'gh auth status')
252
- return '';
253
- throw new Error(`Unknown command: ${cmd}`);
254
- });
255
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
256
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
257
- await doctorCommand.parseAsync(['node', 'test']);
258
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('Anthropic API Key'));
259
- });
260
- it('should warn when ANTHROPIC_API_KEY is not set', async () => {
261
- delete process.env.ANTHROPIC_API_KEY;
262
- mockExecSync.mockImplementation((cmd) => {
263
- if (cmd === 'git rev-parse --git-dir')
264
- return '.git';
265
- if (cmd === 'claude --version')
266
- return 'claude 1.0.0';
267
- if (cmd === 'gh --version')
268
- return 'gh version 2.0.0';
269
- if (cmd === 'gh auth status')
270
- return '';
271
- throw new Error(`Unknown command: ${cmd}`);
272
- });
273
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
274
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
275
- // Missing API key is a warning, not failure
276
- await doctorCommand.parseAsync(['node', 'test']);
277
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('Anthropic API Key'));
278
- });
279
- });
280
- describe('--quiet option', () => {
281
- it('should only show failures and warnings', async () => {
282
- mockExecSync.mockImplementation((cmd) => {
283
- if (cmd === 'git rev-parse --git-dir')
284
- return '.git';
285
- if (cmd === 'claude --version')
286
- return 'claude 1.0.0';
287
- if (cmd === 'gh --version')
288
- return 'gh version 2.0.0';
289
- if (cmd === 'gh auth status')
290
- return '';
291
- throw new Error(`Unknown command: ${cmd}`);
292
- });
293
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
294
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
295
- delete process.env.ANTHROPIC_API_KEY;
296
- await doctorCommand.parseAsync(['node', 'test', '--quiet']);
297
- // In quiet mode, only warnings/failures should be logged
298
- // Check that it completes without error
299
- expect(process.exit).not.toHaveBeenCalled();
300
- });
301
- });
302
- describe('summary output', () => {
303
- it('should display ready message when all pass', async () => {
304
- mockExecSync.mockImplementation((cmd) => {
305
- if (cmd === 'git rev-parse --git-dir')
306
- return '.git';
307
- if (cmd === 'claude --version')
308
- return 'claude 1.0.0';
309
- if (cmd === 'gh --version')
310
- return 'gh version 2.0.0';
311
- if (cmd === 'gh auth status')
312
- return '';
313
- throw new Error(`Unknown command: ${cmd}`);
314
- });
315
- process.env.ANTHROPIC_API_KEY = 'sk-ant-test';
316
- process.env.GITHUB_TOKEN = 'test-token';
317
- await mkdir(join(testDir, '.claudetree'), { recursive: true });
318
- await writeFile(join(testDir, '.claudetree', 'config.json'), '{}');
319
- await doctorCommand.parseAsync(['node', 'test']);
320
- expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining('Ready to use claudetree'));
321
- });
322
- });
323
- });
324
- //# sourceMappingURL=doctor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../src/commands/doctor.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=init.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":""}