@wundr.io/cli 1.0.1 → 1.0.4

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 (249) hide show
  1. package/dist/ai/ai-service.d.ts +152 -0
  2. package/dist/ai/ai-service.d.ts.map +1 -0
  3. package/dist/ai/ai-service.js +430 -0
  4. package/dist/ai/ai-service.js.map +1 -0
  5. package/dist/ai/claude-client.d.ts +130 -0
  6. package/dist/ai/claude-client.d.ts.map +1 -0
  7. package/dist/ai/claude-client.js +340 -0
  8. package/dist/ai/claude-client.js.map +1 -0
  9. package/dist/ai/conversation-manager.d.ts +164 -0
  10. package/dist/ai/conversation-manager.d.ts.map +1 -0
  11. package/dist/ai/conversation-manager.js +614 -0
  12. package/dist/ai/conversation-manager.js.map +1 -0
  13. package/dist/ai/index.d.ts +5 -0
  14. package/dist/ai/index.d.ts.map +1 -0
  15. package/dist/ai/index.js +8 -0
  16. package/dist/ai/index.js.map +1 -0
  17. package/dist/cli.d.ts +36 -0
  18. package/dist/cli.d.ts.map +1 -0
  19. package/dist/cli.js +192 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/commands/ai.d.ts +89 -0
  22. package/dist/commands/ai.d.ts.map +1 -0
  23. package/dist/commands/ai.js +799 -0
  24. package/dist/commands/ai.js.map +1 -0
  25. package/dist/commands/alignment.d.ts +78 -0
  26. package/dist/commands/alignment.d.ts.map +1 -0
  27. package/dist/commands/alignment.js +817 -0
  28. package/dist/commands/alignment.js.map +1 -0
  29. package/dist/commands/analyze-optimized.d.ts +14 -0
  30. package/dist/commands/analyze-optimized.d.ts.map +1 -0
  31. package/dist/commands/analyze-optimized.js +600 -0
  32. package/dist/commands/analyze-optimized.js.map +1 -0
  33. package/dist/commands/analyze.d.ts +65 -0
  34. package/dist/commands/analyze.d.ts.map +1 -0
  35. package/dist/commands/analyze.js +435 -0
  36. package/dist/commands/analyze.js.map +1 -0
  37. package/dist/commands/batch.d.ts +71 -0
  38. package/dist/commands/batch.d.ts.map +1 -0
  39. package/dist/commands/batch.js +738 -0
  40. package/dist/commands/batch.js.map +1 -0
  41. package/dist/commands/chat.d.ts +71 -0
  42. package/dist/commands/chat.d.ts.map +1 -0
  43. package/dist/commands/chat.js +674 -0
  44. package/dist/commands/chat.js.map +1 -0
  45. package/dist/commands/claude-init.d.ts +28 -0
  46. package/dist/commands/claude-init.d.ts.map +1 -0
  47. package/dist/commands/claude-init.js +591 -0
  48. package/dist/commands/claude-init.js.map +1 -0
  49. package/dist/commands/claude-setup.d.ts +119 -0
  50. package/dist/commands/claude-setup.d.ts.map +1 -0
  51. package/dist/commands/claude-setup.js +1073 -0
  52. package/dist/commands/claude-setup.js.map +1 -0
  53. package/dist/commands/computer-setup-commands.d.ts +53 -0
  54. package/dist/commands/computer-setup-commands.d.ts.map +1 -0
  55. package/dist/commands/computer-setup-commands.js +705 -0
  56. package/dist/commands/computer-setup-commands.js.map +1 -0
  57. package/dist/commands/computer-setup.d.ts +7 -0
  58. package/dist/commands/computer-setup.d.ts.map +1 -0
  59. package/dist/commands/computer-setup.js +849 -0
  60. package/dist/commands/computer-setup.js.map +1 -0
  61. package/dist/commands/create-command.d.ts +7 -0
  62. package/dist/commands/create-command.d.ts.map +1 -0
  63. package/dist/commands/create-command.js +158 -0
  64. package/dist/commands/create-command.js.map +1 -0
  65. package/dist/commands/create.d.ts +74 -0
  66. package/dist/commands/create.d.ts.map +1 -0
  67. package/dist/commands/create.js +556 -0
  68. package/dist/commands/create.js.map +1 -0
  69. package/dist/commands/dashboard.d.ts +91 -0
  70. package/dist/commands/dashboard.d.ts.map +1 -0
  71. package/dist/commands/dashboard.js +538 -0
  72. package/dist/commands/dashboard.js.map +1 -0
  73. package/dist/commands/govern.d.ts +70 -0
  74. package/dist/commands/govern.d.ts.map +1 -0
  75. package/dist/commands/govern.js +481 -0
  76. package/dist/commands/govern.js.map +1 -0
  77. package/dist/commands/governance.d.ts +17 -0
  78. package/dist/commands/governance.d.ts.map +1 -0
  79. package/dist/commands/governance.js +703 -0
  80. package/dist/commands/governance.js.map +1 -0
  81. package/dist/commands/guardian.d.ts +20 -0
  82. package/dist/commands/guardian.d.ts.map +1 -0
  83. package/dist/commands/guardian.js +597 -0
  84. package/dist/commands/guardian.js.map +1 -0
  85. package/dist/commands/init.d.ts +59 -0
  86. package/dist/commands/init.d.ts.map +1 -0
  87. package/dist/commands/init.js +650 -0
  88. package/dist/commands/init.js.map +1 -0
  89. package/dist/commands/performance-optimizer.d.ts +30 -0
  90. package/dist/commands/performance-optimizer.d.ts.map +1 -0
  91. package/dist/commands/performance-optimizer.js +650 -0
  92. package/dist/commands/performance-optimizer.js.map +1 -0
  93. package/dist/commands/plugins.d.ts +87 -0
  94. package/dist/commands/plugins.d.ts.map +1 -0
  95. package/dist/commands/plugins.js +685 -0
  96. package/dist/commands/plugins.js.map +1 -0
  97. package/dist/commands/rag.d.ts +7 -0
  98. package/dist/commands/rag.d.ts.map +1 -0
  99. package/dist/commands/rag.js +748 -0
  100. package/dist/commands/rag.js.map +1 -0
  101. package/dist/commands/session.d.ts +41 -0
  102. package/dist/commands/session.d.ts.map +1 -0
  103. package/dist/commands/session.js +441 -0
  104. package/dist/commands/session.js.map +1 -0
  105. package/dist/commands/setup.d.ts +29 -0
  106. package/dist/commands/setup.d.ts.map +1 -0
  107. package/dist/commands/setup.js +397 -0
  108. package/dist/commands/setup.js.map +1 -0
  109. package/dist/commands/test-init.d.ts +9 -0
  110. package/dist/commands/test-init.d.ts.map +1 -0
  111. package/dist/commands/test-init.js +222 -0
  112. package/dist/commands/test-init.js.map +1 -0
  113. package/dist/commands/test.d.ts +25 -0
  114. package/dist/commands/test.d.ts.map +1 -0
  115. package/dist/commands/test.js +217 -0
  116. package/dist/commands/test.js.map +1 -0
  117. package/dist/commands/vp.d.ts +7 -0
  118. package/dist/commands/vp.d.ts.map +1 -0
  119. package/dist/commands/vp.js +571 -0
  120. package/dist/commands/vp.js.map +1 -0
  121. package/dist/commands/watch.d.ts +76 -0
  122. package/dist/commands/watch.d.ts.map +1 -0
  123. package/dist/commands/watch.js +613 -0
  124. package/dist/commands/watch.js.map +1 -0
  125. package/dist/commands/worktree.d.ts +63 -0
  126. package/dist/commands/worktree.d.ts.map +1 -0
  127. package/dist/commands/worktree.js +774 -0
  128. package/dist/commands/worktree.js.map +1 -0
  129. package/dist/context/context-manager.d.ts +155 -0
  130. package/dist/context/context-manager.d.ts.map +1 -0
  131. package/dist/context/context-manager.js +383 -0
  132. package/dist/context/context-manager.js.map +1 -0
  133. package/dist/context/index.d.ts +3 -0
  134. package/dist/context/index.d.ts.map +1 -0
  135. package/dist/context/index.js +6 -0
  136. package/dist/context/index.js.map +1 -0
  137. package/dist/context/session-manager.d.ts +207 -0
  138. package/dist/context/session-manager.d.ts.map +1 -0
  139. package/dist/context/session-manager.js +686 -0
  140. package/dist/context/session-manager.js.map +1 -0
  141. package/dist/index.d.ts +8 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +51 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/interactive/interactive-mode.d.ts +76 -0
  146. package/dist/interactive/interactive-mode.d.ts.map +1 -0
  147. package/dist/interactive/interactive-mode.js +732 -0
  148. package/dist/interactive/interactive-mode.js.map +1 -0
  149. package/dist/nlp/command-mapper.d.ts +174 -0
  150. package/dist/nlp/command-mapper.d.ts.map +1 -0
  151. package/dist/nlp/command-mapper.js +624 -0
  152. package/dist/nlp/command-mapper.js.map +1 -0
  153. package/dist/nlp/command-parser.d.ts +106 -0
  154. package/dist/nlp/command-parser.d.ts.map +1 -0
  155. package/dist/nlp/command-parser.js +417 -0
  156. package/dist/nlp/command-parser.js.map +1 -0
  157. package/dist/nlp/index.d.ts +5 -0
  158. package/dist/nlp/index.d.ts.map +1 -0
  159. package/dist/nlp/index.js +8 -0
  160. package/dist/nlp/index.js.map +1 -0
  161. package/dist/nlp/intent-classifier.d.ts +59 -0
  162. package/dist/nlp/intent-classifier.d.ts.map +1 -0
  163. package/dist/nlp/intent-classifier.js +384 -0
  164. package/dist/nlp/intent-classifier.js.map +1 -0
  165. package/dist/nlp/intent-parser.d.ts +152 -0
  166. package/dist/nlp/intent-parser.d.ts.map +1 -0
  167. package/dist/nlp/intent-parser.js +744 -0
  168. package/dist/nlp/intent-parser.js.map +1 -0
  169. package/dist/plugins/plugin-manager.d.ts +120 -0
  170. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  171. package/dist/plugins/plugin-manager.js +595 -0
  172. package/dist/plugins/plugin-manager.js.map +1 -0
  173. package/dist/types/index.d.ts +224 -0
  174. package/dist/types/index.d.ts.map +1 -0
  175. package/dist/types/index.js +3 -0
  176. package/dist/types/index.js.map +1 -0
  177. package/dist/utils/backup-rollback-manager.d.ts +72 -0
  178. package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
  179. package/dist/utils/backup-rollback-manager.js +289 -0
  180. package/dist/utils/backup-rollback-manager.js.map +1 -0
  181. package/dist/utils/claude-config-installer.d.ts +94 -0
  182. package/dist/utils/claude-config-installer.d.ts.map +1 -0
  183. package/dist/utils/claude-config-installer.js +628 -0
  184. package/dist/utils/claude-config-installer.js.map +1 -0
  185. package/dist/utils/config-manager.d.ts +73 -0
  186. package/dist/utils/config-manager.d.ts.map +1 -0
  187. package/dist/utils/config-manager.js +339 -0
  188. package/dist/utils/config-manager.js.map +1 -0
  189. package/dist/utils/error-handler.d.ts +46 -0
  190. package/dist/utils/error-handler.d.ts.map +1 -0
  191. package/dist/utils/error-handler.js +169 -0
  192. package/dist/utils/error-handler.js.map +1 -0
  193. package/dist/utils/logger.d.ts +25 -0
  194. package/dist/utils/logger.d.ts.map +1 -0
  195. package/dist/utils/logger.js +105 -0
  196. package/dist/utils/logger.js.map +1 -0
  197. package/package.json +6 -4
  198. package/src/ai/ai-service.ts +22 -19
  199. package/src/ai/claude-client.ts +20 -16
  200. package/src/ai/conversation-manager.ts +37 -30
  201. package/src/cli.ts +46 -17
  202. package/src/commands/ai.ts +196 -88
  203. package/src/commands/alignment.ts +1212 -0
  204. package/src/commands/analyze-optimized.ts +394 -89
  205. package/src/commands/analyze.ts +22 -20
  206. package/src/commands/batch.ts +41 -38
  207. package/src/commands/chat.ts +37 -34
  208. package/src/commands/claude-init.ts +38 -30
  209. package/src/commands/claude-setup.ts +692 -97
  210. package/src/commands/computer-setup-commands.ts +45 -39
  211. package/src/commands/computer-setup.ts +490 -20
  212. package/src/commands/create-command.ts +7 -7
  213. package/src/commands/create.ts +36 -33
  214. package/src/commands/dashboard.ts +33 -28
  215. package/src/commands/govern.ts +34 -29
  216. package/src/commands/governance.ts +1005 -0
  217. package/src/commands/guardian.ts +887 -0
  218. package/src/commands/init.ts +112 -22
  219. package/src/commands/performance-optimizer.ts +48 -42
  220. package/src/commands/plugins.ts +35 -32
  221. package/src/commands/project-update.ts +1053 -0
  222. package/src/commands/rag.ts +904 -0
  223. package/src/commands/session.ts +631 -0
  224. package/src/commands/setup.ts +35 -31
  225. package/src/commands/test-init.ts +6 -5
  226. package/src/commands/test.ts +7 -6
  227. package/src/commands/vp.ts +762 -0
  228. package/src/commands/watch.ts +44 -33
  229. package/src/commands/worktree.ts +1057 -0
  230. package/src/context/context-manager.ts +15 -12
  231. package/src/context/session-manager.ts +51 -40
  232. package/src/index.ts +7 -6
  233. package/src/interactive/interactive-mode.ts +25 -18
  234. package/src/lib/conflict-resolution.ts +28 -0
  235. package/src/lib/merge-strategy.ts +28 -0
  236. package/src/lib/safety-mechanisms.ts +47 -0
  237. package/src/lib/state-detection.ts +28 -0
  238. package/src/nlp/command-mapper.ts +35 -30
  239. package/src/nlp/command-parser.ts +20 -17
  240. package/src/nlp/intent-classifier.ts +7 -7
  241. package/src/nlp/intent-parser.ts +61 -49
  242. package/src/plugins/plugin-manager.ts +27 -23
  243. package/src/types/index.ts +1 -1
  244. package/src/types/modules.d.ts +1 -0
  245. package/src/utils/backup-rollback-manager.ts +13 -11
  246. package/src/utils/claude-config-installer.ts +18 -16
  247. package/src/utils/config-manager.ts +12 -9
  248. package/src/utils/error-handler.ts +5 -3
  249. package/src/utils/logger.ts +35 -12
@@ -0,0 +1,628 @@
1
+ "use strict";
2
+ /**
3
+ * Claude Code Configuration Installer
4
+ * Handles installation of CLAUDE.md, hooks, conventions, and agent templates
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ClaudeConfigInstaller = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const fs_1 = require("fs");
10
+ const fs = tslib_1.__importStar(require("fs/promises"));
11
+ const path = tslib_1.__importStar(require("path"));
12
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
13
+ const ora_1 = tslib_1.__importDefault(require("ora"));
14
+ const backup_rollback_manager_1 = require("./backup-rollback-manager");
15
+ const logger_1 = require("./logger");
16
+ class ClaudeConfigInstaller {
17
+ claudeDir;
18
+ sourceDir;
19
+ backupManager;
20
+ homeDir;
21
+ constructor(options = {}) {
22
+ this.homeDir = process.env.HOME || process.env.USERPROFILE || '';
23
+ this.claudeDir = options.claudeDir || path.join(this.homeDir, '.claude');
24
+ this.sourceDir = options.sourceDir || process.cwd();
25
+ this.backupManager = new backup_rollback_manager_1.BackupRollbackManager();
26
+ }
27
+ /**
28
+ * Initialize installer
29
+ */
30
+ async initialize() {
31
+ await this.backupManager.initialize();
32
+ // Create Claude directory structure
33
+ await this.createDirectoryStructure();
34
+ }
35
+ /**
36
+ * Install all Claude Code configurations
37
+ */
38
+ async install(options = {}) {
39
+ const { dryRun = false, skipBackup = false, overwrite = false, verbose = false } = options;
40
+ const result = {
41
+ success: false,
42
+ installed: [],
43
+ skipped: [],
44
+ errors: [],
45
+ };
46
+ try {
47
+ console.log(chalk_1.default.cyan('\n🔧 Installing Claude Code Configuration\n'));
48
+ // Create backup of existing configs
49
+ if (!skipBackup && !dryRun) {
50
+ const existingFiles = await this.getExistingConfigFiles();
51
+ if (existingFiles.length > 0) {
52
+ const spinner = (0, ora_1.default)('Creating backup of existing configurations...').start();
53
+ const backup = await this.backupManager.createBackup(existingFiles, 'Pre-installation backup');
54
+ result.backupId = backup.backupId;
55
+ spinner.succeed(`Backup created: ${backup.backupId}`);
56
+ }
57
+ }
58
+ // Install CLAUDE.md
59
+ await this.installClaudeMd(result, { dryRun, overwrite, verbose });
60
+ // Install hooks
61
+ await this.installHooks(result, { dryRun, overwrite, verbose });
62
+ // Install conventions
63
+ await this.installConventions(result, { dryRun, overwrite, verbose });
64
+ // Install agent templates
65
+ await this.installAgentTemplates(result, { dryRun, overwrite, verbose });
66
+ // Install git-worktree workflows
67
+ await this.installGitWorktreeWorkflows(result, { dryRun, overwrite, verbose });
68
+ // Install validation scripts
69
+ await this.installValidationScripts(result, { dryRun, overwrite, verbose });
70
+ result.success = result.errors.length === 0;
71
+ // Display summary
72
+ this.displayInstallSummary(result, dryRun);
73
+ return result;
74
+ }
75
+ catch (error) {
76
+ logger_1.logger.error('Installation failed', error);
77
+ result.errors.push({
78
+ file: 'general',
79
+ error: error instanceof Error ? error.message : String(error),
80
+ });
81
+ return result;
82
+ }
83
+ }
84
+ /**
85
+ * Install enhanced CLAUDE.md to ~/.claude/
86
+ */
87
+ async installClaudeMd(result, options) {
88
+ const spinner = (0, ora_1.default)('Installing CLAUDE.md...').start();
89
+ try {
90
+ const sourcePath = path.join(this.sourceDir, 'CLAUDE.md');
91
+ const targetPath = path.join(this.claudeDir, 'CLAUDE.md');
92
+ if (!(0, fs_1.existsSync)(sourcePath)) {
93
+ spinner.warn('CLAUDE.md not found in source directory');
94
+ result.skipped.push('CLAUDE.md');
95
+ return;
96
+ }
97
+ if ((0, fs_1.existsSync)(targetPath) && !options.overwrite) {
98
+ if (options.verbose) {
99
+ spinner.info('CLAUDE.md already exists (use --overwrite to replace)');
100
+ }
101
+ result.skipped.push('CLAUDE.md');
102
+ return;
103
+ }
104
+ if (options.dryRun) {
105
+ spinner.info('Would install CLAUDE.md');
106
+ result.installed.push('CLAUDE.md (dry-run)');
107
+ return;
108
+ }
109
+ await fs.copyFile(sourcePath, targetPath);
110
+ spinner.succeed('CLAUDE.md installed');
111
+ result.installed.push('CLAUDE.md');
112
+ logger_1.logger.info('CLAUDE.md installed', { target: targetPath });
113
+ }
114
+ catch (error) {
115
+ spinner.fail('Failed to install CLAUDE.md');
116
+ result.errors.push({
117
+ file: 'CLAUDE.md',
118
+ error: error instanceof Error ? error.message : String(error),
119
+ });
120
+ logger_1.logger.error('CLAUDE.md installation failed', error);
121
+ }
122
+ }
123
+ /**
124
+ * Install hooks configuration
125
+ */
126
+ async installHooks(result, options) {
127
+ const spinner = (0, ora_1.default)('Installing hooks...').start();
128
+ try {
129
+ const hooksDir = path.join(this.claudeDir, 'hooks');
130
+ await fs.mkdir(hooksDir, { recursive: true });
131
+ const hooks = this.generateHooksConfig();
132
+ for (const [hookName, hookContent] of Object.entries(hooks)) {
133
+ const hookPath = path.join(hooksDir, hookName);
134
+ if ((0, fs_1.existsSync)(hookPath) && !options.overwrite) {
135
+ result.skipped.push(`hooks/${hookName}`);
136
+ continue;
137
+ }
138
+ if (options.dryRun) {
139
+ result.installed.push(`hooks/${hookName} (dry-run)`);
140
+ continue;
141
+ }
142
+ await fs.writeFile(hookPath, hookContent);
143
+ await fs.chmod(hookPath, 0o755); // Make executable
144
+ result.installed.push(`hooks/${hookName}`);
145
+ }
146
+ spinner.succeed(`Hooks installed (${Object.keys(hooks).length} files)`);
147
+ logger_1.logger.info('Hooks installed', { count: Object.keys(hooks).length });
148
+ }
149
+ catch (error) {
150
+ spinner.fail('Failed to install hooks');
151
+ result.errors.push({
152
+ file: 'hooks',
153
+ error: error instanceof Error ? error.message : String(error),
154
+ });
155
+ logger_1.logger.error('Hooks installation failed', error);
156
+ }
157
+ }
158
+ /**
159
+ * Install conventions
160
+ */
161
+ async installConventions(result, options) {
162
+ const spinner = (0, ora_1.default)('Installing conventions...').start();
163
+ try {
164
+ const conventionsPath = path.join(this.claudeDir, 'conventions.json');
165
+ const conventions = this.generateConventions();
166
+ if ((0, fs_1.existsSync)(conventionsPath) && !options.overwrite) {
167
+ spinner.info('Conventions already exist');
168
+ result.skipped.push('conventions.json');
169
+ return;
170
+ }
171
+ if (options.dryRun) {
172
+ spinner.info('Would install conventions');
173
+ result.installed.push('conventions.json (dry-run)');
174
+ return;
175
+ }
176
+ await fs.writeFile(conventionsPath, JSON.stringify(conventions, null, 2));
177
+ spinner.succeed('Conventions installed');
178
+ result.installed.push('conventions.json');
179
+ logger_1.logger.info('Conventions installed', { path: conventionsPath });
180
+ }
181
+ catch (error) {
182
+ spinner.fail('Failed to install conventions');
183
+ result.errors.push({
184
+ file: 'conventions.json',
185
+ error: error instanceof Error ? error.message : String(error),
186
+ });
187
+ logger_1.logger.error('Conventions installation failed', error);
188
+ }
189
+ }
190
+ /**
191
+ * Install agent templates
192
+ */
193
+ async installAgentTemplates(result, options) {
194
+ const spinner = (0, ora_1.default)('Installing agent templates...').start();
195
+ try {
196
+ const agentsDir = path.join(this.claudeDir, 'agents');
197
+ await fs.mkdir(agentsDir, { recursive: true });
198
+ const templates = this.generateAgentTemplates();
199
+ for (const [agentName, agentConfig] of Object.entries(templates)) {
200
+ const agentPath = path.join(agentsDir, `${agentName}.json`);
201
+ if ((0, fs_1.existsSync)(agentPath) && !options.overwrite) {
202
+ result.skipped.push(`agents/${agentName}.json`);
203
+ continue;
204
+ }
205
+ if (options.dryRun) {
206
+ result.installed.push(`agents/${agentName}.json (dry-run)`);
207
+ continue;
208
+ }
209
+ await fs.writeFile(agentPath, JSON.stringify(agentConfig, null, 2));
210
+ result.installed.push(`agents/${agentName}.json`);
211
+ }
212
+ spinner.succeed(`Agent templates installed (${Object.keys(templates).length} templates)`);
213
+ logger_1.logger.info('Agent templates installed', { count: Object.keys(templates).length });
214
+ }
215
+ catch (error) {
216
+ spinner.fail('Failed to install agent templates');
217
+ result.errors.push({
218
+ file: 'agent-templates',
219
+ error: error instanceof Error ? error.message : String(error),
220
+ });
221
+ logger_1.logger.error('Agent templates installation failed', error);
222
+ }
223
+ }
224
+ /**
225
+ * Install git-worktree workflows
226
+ */
227
+ async installGitWorktreeWorkflows(result, options) {
228
+ const spinner = (0, ora_1.default)('Installing git-worktree workflows...').start();
229
+ try {
230
+ const workflowsDir = path.join(this.claudeDir, 'workflows');
231
+ await fs.mkdir(workflowsDir, { recursive: true });
232
+ const workflows = this.generateGitWorktreeWorkflows();
233
+ for (const [workflowName, workflowContent] of Object.entries(workflows)) {
234
+ const workflowPath = path.join(workflowsDir, `${workflowName}.json`);
235
+ if ((0, fs_1.existsSync)(workflowPath) && !options.overwrite) {
236
+ result.skipped.push(`workflows/${workflowName}.json`);
237
+ continue;
238
+ }
239
+ if (options.dryRun) {
240
+ result.installed.push(`workflows/${workflowName}.json (dry-run)`);
241
+ continue;
242
+ }
243
+ await fs.writeFile(workflowPath, JSON.stringify(workflowContent, null, 2));
244
+ result.installed.push(`workflows/${workflowName}.json`);
245
+ }
246
+ spinner.succeed(`Git-worktree workflows installed (${Object.keys(workflows).length} workflows)`);
247
+ logger_1.logger.info('Git-worktree workflows installed', { count: Object.keys(workflows).length });
248
+ }
249
+ catch (error) {
250
+ spinner.fail('Failed to install git-worktree workflows');
251
+ result.errors.push({
252
+ file: 'git-worktree-workflows',
253
+ error: error instanceof Error ? error.message : String(error),
254
+ });
255
+ logger_1.logger.error('Git-worktree workflows installation failed', error);
256
+ }
257
+ }
258
+ /**
259
+ * Install validation scripts
260
+ */
261
+ async installValidationScripts(result, options) {
262
+ const spinner = (0, ora_1.default)('Installing validation scripts...').start();
263
+ try {
264
+ const scriptsDir = path.join(this.claudeDir, 'scripts');
265
+ await fs.mkdir(scriptsDir, { recursive: true });
266
+ const scripts = this.generateValidationScripts();
267
+ for (const [scriptName, scriptContent] of Object.entries(scripts)) {
268
+ const scriptPath = path.join(scriptsDir, scriptName);
269
+ if ((0, fs_1.existsSync)(scriptPath) && !options.overwrite) {
270
+ result.skipped.push(`scripts/${scriptName}`);
271
+ continue;
272
+ }
273
+ if (options.dryRun) {
274
+ result.installed.push(`scripts/${scriptName} (dry-run)`);
275
+ continue;
276
+ }
277
+ await fs.writeFile(scriptPath, scriptContent);
278
+ await fs.chmod(scriptPath, 0o755); // Make executable
279
+ result.installed.push(`scripts/${scriptName}`);
280
+ }
281
+ spinner.succeed(`Validation scripts installed (${Object.keys(scripts).length} scripts)`);
282
+ logger_1.logger.info('Validation scripts installed', { count: Object.keys(scripts).length });
283
+ }
284
+ catch (error) {
285
+ spinner.fail('Failed to install validation scripts');
286
+ result.errors.push({
287
+ file: 'validation-scripts',
288
+ error: error instanceof Error ? error.message : String(error),
289
+ });
290
+ logger_1.logger.error('Validation scripts installation failed', error);
291
+ }
292
+ }
293
+ /**
294
+ * Create directory structure
295
+ */
296
+ async createDirectoryStructure() {
297
+ const dirs = [
298
+ this.claudeDir,
299
+ path.join(this.claudeDir, 'hooks'),
300
+ path.join(this.claudeDir, 'agents'),
301
+ path.join(this.claudeDir, 'workflows'),
302
+ path.join(this.claudeDir, 'scripts'),
303
+ path.join(this.claudeDir, 'templates'),
304
+ ];
305
+ for (const dir of dirs) {
306
+ await fs.mkdir(dir, { recursive: true });
307
+ }
308
+ }
309
+ /**
310
+ * Get existing config files for backup
311
+ */
312
+ async getExistingConfigFiles() {
313
+ const files = [];
314
+ const checkFiles = [
315
+ path.join(this.claudeDir, 'CLAUDE.md'),
316
+ path.join(this.claudeDir, 'conventions.json'),
317
+ ];
318
+ for (const file of checkFiles) {
319
+ if ((0, fs_1.existsSync)(file)) {
320
+ files.push(file);
321
+ }
322
+ }
323
+ return files;
324
+ }
325
+ /**
326
+ * Generate hooks configuration files
327
+ */
328
+ generateHooksConfig() {
329
+ return {
330
+ 'pre-commit': `#!/bin/bash
331
+ # Claude Code pre-commit hook
332
+ # Auto-generated by Wundr computer-setup
333
+
334
+ echo "🔍 Running pre-commit checks..."
335
+
336
+ # Run linting
337
+ if command -v npm &> /dev/null; then
338
+ npm run lint --if-present || true
339
+ fi
340
+
341
+ # Run type checking
342
+ if command -v npm &> /dev/null; then
343
+ npm run typecheck --if-present || true
344
+ fi
345
+
346
+ echo "✅ Pre-commit checks completed"
347
+ `,
348
+ 'post-checkout': `#!/bin/bash
349
+ # Claude Code post-checkout hook
350
+ # Auto-generated by Wundr computer-setup
351
+
352
+ echo "🔄 Post-checkout: Installing dependencies..."
353
+
354
+ # Install dependencies if package.json changed
355
+ if command -v npm &> /dev/null; then
356
+ npm install --if-present || true
357
+ fi
358
+
359
+ echo "✅ Post-checkout completed"
360
+ `,
361
+ };
362
+ }
363
+ /**
364
+ * Generate conventions configuration
365
+ */
366
+ generateConventions() {
367
+ return {
368
+ fileNaming: {
369
+ components: 'PascalCase',
370
+ utilities: 'camelCase',
371
+ constants: 'UPPER_SNAKE_CASE',
372
+ types: 'PascalCase',
373
+ },
374
+ codeStyle: {
375
+ indentation: 2,
376
+ quotes: 'single',
377
+ semicolons: true,
378
+ trailingComma: 'es5',
379
+ },
380
+ imports: {
381
+ order: ['external', 'internal', 'parent', 'sibling', 'index'],
382
+ grouping: true,
383
+ },
384
+ testing: {
385
+ framework: 'jest',
386
+ coverage: {
387
+ statements: 80,
388
+ branches: 80,
389
+ functions: 80,
390
+ lines: 80,
391
+ },
392
+ },
393
+ git: {
394
+ commitMessage: 'conventional-commits',
395
+ branchNaming: 'feature/*, fix/*, chore/*',
396
+ },
397
+ };
398
+ }
399
+ /**
400
+ * Generate agent templates
401
+ */
402
+ generateAgentTemplates() {
403
+ return {
404
+ 'backend-developer': {
405
+ name: 'Backend Developer',
406
+ role: 'backend-dev',
407
+ responsibilities: [
408
+ 'Design RESTful and GraphQL APIs',
409
+ 'Implement database models and queries',
410
+ 'Create authentication and authorization',
411
+ 'Write comprehensive API documentation',
412
+ ],
413
+ tools: ['node', 'typescript', 'postgresql', 'redis'],
414
+ patterns: [
415
+ 'Controller-Service-Repository',
416
+ 'DTO pattern',
417
+ 'Middleware pattern',
418
+ ],
419
+ },
420
+ 'frontend-developer': {
421
+ name: 'Frontend Developer',
422
+ role: 'frontend-dev',
423
+ responsibilities: [
424
+ 'Build responsive user interfaces',
425
+ 'Implement state management',
426
+ 'Create reusable components',
427
+ 'Optimize performance',
428
+ ],
429
+ tools: ['react', 'typescript', 'tailwind', 'vite'],
430
+ patterns: ['Component composition', 'Custom hooks', 'Context API'],
431
+ },
432
+ 'fullstack-developer': {
433
+ name: 'Fullstack Developer',
434
+ role: 'fullstack-dev',
435
+ responsibilities: [
436
+ 'Develop end-to-end features',
437
+ 'Integrate frontend and backend',
438
+ 'Manage database schemas',
439
+ 'Deploy applications',
440
+ ],
441
+ tools: ['node', 'react', 'typescript', 'docker'],
442
+ patterns: ['Full-stack architecture', 'API integration', 'CI/CD'],
443
+ },
444
+ };
445
+ }
446
+ /**
447
+ * Generate git-worktree workflows
448
+ */
449
+ generateGitWorktreeWorkflows() {
450
+ return {
451
+ 'feature-development': {
452
+ name: 'Feature Development Workflow',
453
+ description: 'Workflow for developing new features in isolation',
454
+ steps: [
455
+ {
456
+ name: 'Create worktree',
457
+ command: 'git worktree add ../feature-name feature/name',
458
+ },
459
+ {
460
+ name: 'Setup environment',
461
+ command: 'cd ../feature-name && npm install',
462
+ },
463
+ {
464
+ name: 'Run tests',
465
+ command: 'npm test',
466
+ },
467
+ {
468
+ name: 'Commit changes',
469
+ command: 'git add . && git commit -m "feat: description"',
470
+ },
471
+ ],
472
+ },
473
+ 'bug-fix': {
474
+ name: 'Bug Fix Workflow',
475
+ description: 'Workflow for fixing bugs without affecting main development',
476
+ steps: [
477
+ {
478
+ name: 'Create worktree',
479
+ command: 'git worktree add ../fix-bug fix/bug-name',
480
+ },
481
+ {
482
+ name: 'Reproduce bug',
483
+ command: 'npm test -- bug.test.ts',
484
+ },
485
+ {
486
+ name: 'Fix and verify',
487
+ command: 'npm test',
488
+ },
489
+ {
490
+ name: 'Commit fix',
491
+ command: 'git add . && git commit -m "fix: description"',
492
+ },
493
+ ],
494
+ },
495
+ };
496
+ }
497
+ /**
498
+ * Generate validation scripts
499
+ */
500
+ generateValidationScripts() {
501
+ return {
502
+ 'validate-setup.sh': `#!/bin/bash
503
+ # Validate Claude Code setup
504
+ # Auto-generated by Wundr computer-setup
505
+
506
+ echo "🔍 Validating Claude Code setup..."
507
+
508
+ # Check for required files
509
+ FILES=(
510
+ "$HOME/.claude/CLAUDE.md"
511
+ "$HOME/.claude/conventions.json"
512
+ )
513
+
514
+ MISSING=0
515
+ for file in "\${FILES[@]}"; do
516
+ if [ ! -f "$file" ]; then
517
+ echo "❌ Missing: $file"
518
+ MISSING=$((MISSING + 1))
519
+ else
520
+ echo "✅ Found: $file"
521
+ fi
522
+ done
523
+
524
+ # Check for required directories
525
+ DIRS=(
526
+ "$HOME/.claude/hooks"
527
+ "$HOME/.claude/agents"
528
+ "$HOME/.claude/workflows"
529
+ )
530
+
531
+ for dir in "\${DIRS[@]}"; do
532
+ if [ ! -d "$dir" ]; then
533
+ echo "❌ Missing directory: $dir"
534
+ MISSING=$((MISSING + 1))
535
+ else
536
+ echo "✅ Found directory: $dir"
537
+ fi
538
+ done
539
+
540
+ if [ $MISSING -eq 0 ]; then
541
+ echo "✅ All validations passed!"
542
+ exit 0
543
+ else
544
+ echo "❌ $MISSING validation(s) failed"
545
+ exit 1
546
+ fi
547
+ `,
548
+ 'check-config.sh': `#!/bin/bash
549
+ # Check Claude Code configuration
550
+ # Auto-generated by Wundr computer-setup
551
+
552
+ echo "🔧 Checking Claude Code configuration..."
553
+
554
+ # Check Claude CLI
555
+ if command -v claude &> /dev/null; then
556
+ echo "✅ Claude CLI: $(claude --version)"
557
+ else
558
+ echo "⚠️ Claude CLI not found"
559
+ fi
560
+
561
+ # Check Node.js
562
+ if command -v node &> /dev/null; then
563
+ echo "✅ Node.js: $(node --version)"
564
+ else
565
+ echo "❌ Node.js not found"
566
+ fi
567
+
568
+ # Check Git
569
+ if command -v git &> /dev/null; then
570
+ echo "✅ Git: $(git --version)"
571
+ else
572
+ echo "❌ Git not found"
573
+ fi
574
+
575
+ echo "✅ Configuration check complete"
576
+ `,
577
+ };
578
+ }
579
+ /**
580
+ * Display installation summary
581
+ */
582
+ displayInstallSummary(result, dryRun) {
583
+ console.log(chalk_1.default.cyan('\n📊 Installation Summary\n'));
584
+ if (dryRun) {
585
+ console.log(chalk_1.default.yellow('🔍 DRY RUN MODE - No files were modified\n'));
586
+ }
587
+ if (result.backupId) {
588
+ console.log(chalk_1.default.gray(`Backup ID: ${result.backupId}\n`));
589
+ }
590
+ if (result.installed.length > 0) {
591
+ console.log(chalk_1.default.green(`✅ Installed (${result.installed.length}):`));
592
+ result.installed.forEach(file => {
593
+ console.log(chalk_1.default.white(` • ${file}`));
594
+ });
595
+ console.log();
596
+ }
597
+ if (result.skipped.length > 0) {
598
+ console.log(chalk_1.default.yellow(`⏭️ Skipped (${result.skipped.length}):`));
599
+ result.skipped.forEach(file => {
600
+ console.log(chalk_1.default.gray(` • ${file}`));
601
+ });
602
+ console.log();
603
+ }
604
+ if (result.errors.length > 0) {
605
+ console.log(chalk_1.default.red(`❌ Errors (${result.errors.length}):`));
606
+ result.errors.forEach(error => {
607
+ console.log(chalk_1.default.red(` • ${error.file}: ${error.error}`));
608
+ });
609
+ console.log();
610
+ }
611
+ if (result.success) {
612
+ console.log(chalk_1.default.green('✅ Installation completed successfully!\n'));
613
+ console.log(chalk_1.default.cyan('Next steps:'));
614
+ console.log(chalk_1.default.white(' 1. Review installed configurations'));
615
+ console.log(chalk_1.default.white(' 2. Run validation: ~/.claude/scripts/validate-setup.sh'));
616
+ console.log(chalk_1.default.white(' 3. Customize agent templates as needed'));
617
+ }
618
+ else {
619
+ console.log(chalk_1.default.red('❌ Installation completed with errors\n'));
620
+ if (result.backupId) {
621
+ console.log(chalk_1.default.cyan('To rollback:'));
622
+ console.log(chalk_1.default.white(` wundr computer-setup rollback --backup ${result.backupId}`));
623
+ }
624
+ }
625
+ }
626
+ }
627
+ exports.ClaudeConfigInstaller = ClaudeConfigInstaller;
628
+ //# sourceMappingURL=claude-config-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-config-installer.js","sourceRoot":"","sources":["../../src/utils/claude-config-installer.ts"],"names":[],"mappings":"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"}