@wundr.io/cli 1.0.0 → 1.0.2-dev.20260530174250.ef0ec927

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 (230) hide show
  1. package/README.md +696 -280
  2. package/bin/wundr.js +13 -5
  3. package/package.json +30 -9
  4. package/src/ai/ai-service.ts +6 -4
  5. package/src/ai/claude-client.ts +6 -2
  6. package/src/ai/conversation-manager.ts +12 -5
  7. package/src/cli.ts +42 -13
  8. package/src/commands/ai.ts +340 -64
  9. package/src/commands/alignment.ts +1212 -0
  10. package/src/commands/analyze-optimized.ts +371 -33
  11. package/src/commands/analyze.ts +8 -6
  12. package/src/commands/batch.ts +166 -26
  13. package/src/commands/chat.ts +20 -10
  14. package/src/commands/claude-init.ts +31 -27
  15. package/src/commands/claude-setup.ts +761 -81
  16. package/src/commands/computer-setup.ts +524 -12
  17. package/src/commands/create-command.ts +3 -3
  18. package/src/commands/create.ts +9 -6
  19. package/src/commands/dashboard.ts +11 -6
  20. package/src/commands/govern.ts +11 -6
  21. package/src/commands/governance.ts +1005 -0
  22. package/src/commands/guardian.ts +887 -0
  23. package/src/commands/init.ts +104 -11
  24. package/src/commands/orchestrator.ts +789 -0
  25. package/src/commands/performance-optimizer.ts +15 -10
  26. package/src/commands/plugins.ts +8 -5
  27. package/src/commands/project-update.ts +1156 -0
  28. package/src/commands/rag.ts +1011 -0
  29. package/src/commands/session.ts +631 -0
  30. package/src/commands/setup.ts +42 -344
  31. package/src/commands/test-init.ts +3 -2
  32. package/src/commands/test.ts +3 -2
  33. package/src/commands/watch.ts +21 -11
  34. package/src/commands/worktree.ts +1057 -0
  35. package/src/context/context-manager.ts +5 -2
  36. package/src/context/session-manager.ts +18 -7
  37. package/src/framework/command-interface.ts +520 -0
  38. package/src/framework/command-registry.ts +942 -0
  39. package/src/framework/completion-exporter.ts +383 -0
  40. package/src/framework/debug-logger.ts +519 -0
  41. package/src/framework/error-handler.ts +867 -0
  42. package/src/framework/help-generator.ts +540 -0
  43. package/src/framework/index.ts +169 -0
  44. package/src/framework/interactive-repl.ts +703 -0
  45. package/src/framework/output-formatter.ts +834 -0
  46. package/src/framework/progress-manager.ts +539 -0
  47. package/src/index.ts +3 -2
  48. package/src/interactive/interactive-mode.ts +14 -7
  49. package/src/lib/conflict-resolution.ts +818 -0
  50. package/src/lib/merge-strategy.ts +550 -0
  51. package/src/lib/safety-mechanisms.ts +451 -0
  52. package/src/lib/state-detection.ts +1030 -0
  53. package/src/nlp/command-mapper.ts +8 -3
  54. package/src/nlp/command-parser.ts +5 -2
  55. package/src/nlp/intent-parser.ts +23 -9
  56. package/src/plugins/plugin-manager.ts +50 -24
  57. package/src/tests/computer-setup-integration.test.ts +470 -0
  58. package/src/types/index.ts +1 -1
  59. package/src/types/modules.d.ts +425 -1
  60. package/src/utils/backup-rollback-manager.ts +366 -0
  61. package/src/utils/claude-config-installer.ts +823 -0
  62. package/src/utils/config-manager.ts +9 -6
  63. package/src/utils/error-handler.ts +3 -1
  64. package/src/utils/logger.ts +35 -12
  65. package/templates/batch/ci-cd.yaml +7 -7
  66. package/test-suites/api/health.spec.ts +20 -23
  67. package/test-suites/helpers/test-config.ts +14 -13
  68. package/test-suites/ui/accessibility.spec.ts +27 -22
  69. package/test-suites/ui/smoke.spec.ts +26 -21
  70. package/dist/ai/ai-service.d.ts +0 -152
  71. package/dist/ai/ai-service.d.ts.map +0 -1
  72. package/dist/ai/ai-service.js +0 -430
  73. package/dist/ai/ai-service.js.map +0 -1
  74. package/dist/ai/claude-client.d.ts +0 -130
  75. package/dist/ai/claude-client.d.ts.map +0 -1
  76. package/dist/ai/claude-client.js +0 -339
  77. package/dist/ai/claude-client.js.map +0 -1
  78. package/dist/ai/conversation-manager.d.ts +0 -164
  79. package/dist/ai/conversation-manager.d.ts.map +0 -1
  80. package/dist/ai/conversation-manager.js +0 -612
  81. package/dist/ai/conversation-manager.js.map +0 -1
  82. package/dist/ai/index.d.ts +0 -5
  83. package/dist/ai/index.d.ts.map +0 -1
  84. package/dist/ai/index.js +0 -8
  85. package/dist/ai/index.js.map +0 -1
  86. package/dist/cli.d.ts +0 -36
  87. package/dist/cli.d.ts.map +0 -1
  88. package/dist/cli.js +0 -173
  89. package/dist/cli.js.map +0 -1
  90. package/dist/commands/ai.d.ts +0 -89
  91. package/dist/commands/ai.d.ts.map +0 -1
  92. package/dist/commands/ai.js +0 -735
  93. package/dist/commands/ai.js.map +0 -1
  94. package/dist/commands/analyze-optimized.d.ts +0 -14
  95. package/dist/commands/analyze-optimized.d.ts.map +0 -1
  96. package/dist/commands/analyze-optimized.js +0 -437
  97. package/dist/commands/analyze-optimized.js.map +0 -1
  98. package/dist/commands/analyze.d.ts +0 -65
  99. package/dist/commands/analyze.d.ts.map +0 -1
  100. package/dist/commands/analyze.js +0 -435
  101. package/dist/commands/analyze.js.map +0 -1
  102. package/dist/commands/batch.d.ts +0 -71
  103. package/dist/commands/batch.d.ts.map +0 -1
  104. package/dist/commands/batch.js +0 -738
  105. package/dist/commands/batch.js.map +0 -1
  106. package/dist/commands/chat.d.ts +0 -71
  107. package/dist/commands/chat.d.ts.map +0 -1
  108. package/dist/commands/chat.js +0 -674
  109. package/dist/commands/chat.js.map +0 -1
  110. package/dist/commands/claude-init.d.ts +0 -28
  111. package/dist/commands/claude-init.d.ts.map +0 -1
  112. package/dist/commands/claude-init.js +0 -587
  113. package/dist/commands/claude-init.js.map +0 -1
  114. package/dist/commands/claude-setup.d.ts +0 -32
  115. package/dist/commands/claude-setup.d.ts.map +0 -1
  116. package/dist/commands/claude-setup.js +0 -570
  117. package/dist/commands/claude-setup.js.map +0 -1
  118. package/dist/commands/computer-setup-commands.d.ts +0 -39
  119. package/dist/commands/computer-setup-commands.d.ts.map +0 -1
  120. package/dist/commands/computer-setup-commands.js +0 -563
  121. package/dist/commands/computer-setup-commands.js.map +0 -1
  122. package/dist/commands/computer-setup.d.ts +0 -7
  123. package/dist/commands/computer-setup.d.ts.map +0 -1
  124. package/dist/commands/computer-setup.js +0 -481
  125. package/dist/commands/computer-setup.js.map +0 -1
  126. package/dist/commands/create-command.d.ts +0 -7
  127. package/dist/commands/create-command.d.ts.map +0 -1
  128. package/dist/commands/create-command.js +0 -158
  129. package/dist/commands/create-command.js.map +0 -1
  130. package/dist/commands/create.d.ts +0 -74
  131. package/dist/commands/create.d.ts.map +0 -1
  132. package/dist/commands/create.js +0 -556
  133. package/dist/commands/create.js.map +0 -1
  134. package/dist/commands/dashboard.d.ts +0 -91
  135. package/dist/commands/dashboard.d.ts.map +0 -1
  136. package/dist/commands/dashboard.js +0 -537
  137. package/dist/commands/dashboard.js.map +0 -1
  138. package/dist/commands/govern.d.ts +0 -70
  139. package/dist/commands/govern.d.ts.map +0 -1
  140. package/dist/commands/govern.js +0 -480
  141. package/dist/commands/govern.js.map +0 -1
  142. package/dist/commands/init.d.ts +0 -55
  143. package/dist/commands/init.d.ts.map +0 -1
  144. package/dist/commands/init.js +0 -584
  145. package/dist/commands/init.js.map +0 -1
  146. package/dist/commands/performance-optimizer.d.ts +0 -30
  147. package/dist/commands/performance-optimizer.d.ts.map +0 -1
  148. package/dist/commands/performance-optimizer.js +0 -649
  149. package/dist/commands/performance-optimizer.js.map +0 -1
  150. package/dist/commands/plugins.d.ts +0 -87
  151. package/dist/commands/plugins.d.ts.map +0 -1
  152. package/dist/commands/plugins.js +0 -685
  153. package/dist/commands/plugins.js.map +0 -1
  154. package/dist/commands/setup.d.ts +0 -29
  155. package/dist/commands/setup.d.ts.map +0 -1
  156. package/dist/commands/setup.js +0 -399
  157. package/dist/commands/setup.js.map +0 -1
  158. package/dist/commands/test-init.d.ts +0 -9
  159. package/dist/commands/test-init.d.ts.map +0 -1
  160. package/dist/commands/test-init.js +0 -222
  161. package/dist/commands/test-init.js.map +0 -1
  162. package/dist/commands/test.d.ts +0 -25
  163. package/dist/commands/test.d.ts.map +0 -1
  164. package/dist/commands/test.js +0 -217
  165. package/dist/commands/test.js.map +0 -1
  166. package/dist/commands/watch.d.ts +0 -76
  167. package/dist/commands/watch.d.ts.map +0 -1
  168. package/dist/commands/watch.js +0 -610
  169. package/dist/commands/watch.js.map +0 -1
  170. package/dist/context/context-manager.d.ts +0 -155
  171. package/dist/context/context-manager.d.ts.map +0 -1
  172. package/dist/context/context-manager.js +0 -383
  173. package/dist/context/context-manager.js.map +0 -1
  174. package/dist/context/index.d.ts +0 -3
  175. package/dist/context/index.d.ts.map +0 -1
  176. package/dist/context/index.js +0 -6
  177. package/dist/context/index.js.map +0 -1
  178. package/dist/context/session-manager.d.ts +0 -207
  179. package/dist/context/session-manager.d.ts.map +0 -1
  180. package/dist/context/session-manager.js +0 -682
  181. package/dist/context/session-manager.js.map +0 -1
  182. package/dist/index.d.ts +0 -8
  183. package/dist/index.d.ts.map +0 -1
  184. package/dist/index.js +0 -51
  185. package/dist/index.js.map +0 -1
  186. package/dist/interactive/interactive-mode.d.ts +0 -76
  187. package/dist/interactive/interactive-mode.d.ts.map +0 -1
  188. package/dist/interactive/interactive-mode.js +0 -730
  189. package/dist/interactive/interactive-mode.js.map +0 -1
  190. package/dist/nlp/command-mapper.d.ts +0 -174
  191. package/dist/nlp/command-mapper.d.ts.map +0 -1
  192. package/dist/nlp/command-mapper.js +0 -623
  193. package/dist/nlp/command-mapper.js.map +0 -1
  194. package/dist/nlp/command-parser.d.ts +0 -106
  195. package/dist/nlp/command-parser.d.ts.map +0 -1
  196. package/dist/nlp/command-parser.js +0 -416
  197. package/dist/nlp/command-parser.js.map +0 -1
  198. package/dist/nlp/index.d.ts +0 -5
  199. package/dist/nlp/index.d.ts.map +0 -1
  200. package/dist/nlp/index.js +0 -8
  201. package/dist/nlp/index.js.map +0 -1
  202. package/dist/nlp/intent-classifier.d.ts +0 -59
  203. package/dist/nlp/intent-classifier.d.ts.map +0 -1
  204. package/dist/nlp/intent-classifier.js +0 -384
  205. package/dist/nlp/intent-classifier.js.map +0 -1
  206. package/dist/nlp/intent-parser.d.ts +0 -152
  207. package/dist/nlp/intent-parser.d.ts.map +0 -1
  208. package/dist/nlp/intent-parser.js +0 -739
  209. package/dist/nlp/intent-parser.js.map +0 -1
  210. package/dist/plugins/plugin-manager.d.ts +0 -120
  211. package/dist/plugins/plugin-manager.d.ts.map +0 -1
  212. package/dist/plugins/plugin-manager.js +0 -595
  213. package/dist/plugins/plugin-manager.js.map +0 -1
  214. package/dist/types/index.d.ts +0 -224
  215. package/dist/types/index.d.ts.map +0 -1
  216. package/dist/types/index.js +0 -3
  217. package/dist/types/index.js.map +0 -1
  218. package/dist/utils/config-manager.d.ts +0 -73
  219. package/dist/utils/config-manager.d.ts.map +0 -1
  220. package/dist/utils/config-manager.js +0 -339
  221. package/dist/utils/config-manager.js.map +0 -1
  222. package/dist/utils/error-handler.d.ts +0 -46
  223. package/dist/utils/error-handler.d.ts.map +0 -1
  224. package/dist/utils/error-handler.js +0 -169
  225. package/dist/utils/error-handler.js.map +0 -1
  226. package/dist/utils/logger.d.ts +0 -25
  227. package/dist/utils/logger.d.ts.map +0 -1
  228. package/dist/utils/logger.js +0 -94
  229. package/dist/utils/logger.js.map +0 -1
  230. package/src/commands/computer-setup-commands.ts +0 -709
@@ -1,610 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WatchCommands = void 0;
4
- const tslib_1 = require("tslib");
5
- const chokidar_1 = require("chokidar");
6
- const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
7
- const path_1 = tslib_1.__importDefault(require("path"));
8
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
9
- const yaml_1 = tslib_1.__importDefault(require("yaml"));
10
- const logger_1 = require("../utils/logger");
11
- const error_handler_1 = require("../utils/error-handler");
12
- /**
13
- * Watch commands for real-time monitoring
14
- */
15
- class WatchCommands {
16
- program;
17
- configManager;
18
- pluginManager;
19
- watchers = new Map();
20
- activeWatches = new Map();
21
- constructor(program, configManager, pluginManager) {
22
- this.program = program;
23
- this.configManager = configManager;
24
- this.pluginManager = pluginManager;
25
- this.registerCommands();
26
- }
27
- registerCommands() {
28
- const watchCmd = this.program
29
- .command('watch')
30
- .description('real-time file and project monitoring');
31
- // Start watching
32
- watchCmd
33
- .command('start [patterns...]')
34
- .description('start watching files or directories')
35
- .option('--config <config>', 'watch configuration file')
36
- .option('--ignore <patterns>', 'patterns to ignore (comma-separated)')
37
- .option('--command <command>', 'command to run on changes')
38
- .option('--debounce <ms>', 'debounce delay in milliseconds', '300')
39
- .option('--recursive', 'watch subdirectories recursively')
40
- .action(async (patterns, options) => {
41
- await this.startWatching(patterns, options);
42
- });
43
- // Stop watching
44
- watchCmd
45
- .command('stop [name]')
46
- .description('stop specific watch or all watches')
47
- .action(async (name) => {
48
- await this.stopWatching(name);
49
- });
50
- // List active watches
51
- watchCmd
52
- .command('list')
53
- .alias('ls')
54
- .description('list active watches')
55
- .action(async () => {
56
- await this.listWatches();
57
- });
58
- // Watch status
59
- watchCmd
60
- .command('status [name]')
61
- .description('show watch status')
62
- .action(async (name) => {
63
- await this.showWatchStatus(name);
64
- });
65
- // Create watch config
66
- watchCmd
67
- .command('config create <name>')
68
- .description('create watch configuration')
69
- .option('--patterns <patterns>', 'file patterns to watch')
70
- .option('--commands <commands>', 'commands to run on changes')
71
- .option('--interactive', 'create configuration interactively')
72
- .action(async (name, options) => {
73
- await this.createWatchConfig(name, options);
74
- });
75
- // Load watch config
76
- watchCmd
77
- .command('config load <file>')
78
- .description('load watch configuration from file')
79
- .action(async (file) => {
80
- await this.loadWatchConfig(file);
81
- });
82
- // Save watch config
83
- watchCmd
84
- .command('config save <name> [file]')
85
- .description('save watch configuration to file')
86
- .action(async (name, file) => {
87
- await this.saveWatchConfig(name, file);
88
- });
89
- // Watch tests
90
- watchCmd
91
- .command('test')
92
- .description('watch and run tests on changes')
93
- .option('--framework <framework>', 'test framework (jest, mocha, vitest)', 'jest')
94
- .option('--coverage', 'run with coverage')
95
- .option('--changed-only', 'run tests for changed files only')
96
- .action(async (options) => {
97
- await this.watchTests(options);
98
- });
99
- // Watch build
100
- watchCmd
101
- .command('build')
102
- .description('watch and build on changes')
103
- .option('--target <target>', 'build target')
104
- .option('--incremental', 'enable incremental builds')
105
- .action(async (options) => {
106
- await this.watchBuild(options);
107
- });
108
- // Watch lint
109
- watchCmd
110
- .command('lint')
111
- .description('watch and lint on changes')
112
- .option('--fix', 'automatically fix linting issues')
113
- .option('--staged-only', 'lint staged files only')
114
- .action(async (options) => {
115
- await this.watchLint(options);
116
- });
117
- // Watch analysis
118
- watchCmd
119
- .command('analyze')
120
- .description('watch and analyze code quality')
121
- .option('--type <type>', 'analysis type (quality, deps, security)', 'quality')
122
- .option('--threshold <threshold>', 'quality threshold')
123
- .action(async (options) => {
124
- await this.watchAnalysis(options);
125
- });
126
- }
127
- /**
128
- * Start watching files or directories
129
- */
130
- async startWatching(patterns, options) {
131
- try {
132
- let watchConfig;
133
- if (options.config) {
134
- watchConfig = await this.loadWatchConfigFile(options.config);
135
- }
136
- else {
137
- watchConfig = this.createWatchConfigFromOptions(patterns, options);
138
- }
139
- const watchName = `watch-${Date.now()}`;
140
- logger_1.logger.info(`Starting watch: ${chalk_1.default.cyan(watchName)}`);
141
- const watcher = (0, chokidar_1.watch)(watchConfig.patterns, {
142
- ignored: watchConfig.ignore || [],
143
- persistent: true,
144
- ignoreInitial: true,
145
- awaitWriteFinish: {
146
- stabilityThreshold: parseInt(options.debounce) || 300,
147
- pollInterval: 100,
148
- },
149
- });
150
- // Set up event handlers
151
- this.setupWatchHandlers(watcher, watchConfig, watchName);
152
- // Store watcher and config
153
- this.watchers.set(watchName, watcher);
154
- this.activeWatches.set(watchName, watchConfig);
155
- logger_1.logger.success(`Watching ${watchConfig.patterns.join(', ')}`);
156
- logger_1.logger.info('Press Ctrl+C to stop watching');
157
- }
158
- catch (error) {
159
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_START_FAILED', 'Failed to start watching', { patterns, options }, true);
160
- }
161
- }
162
- /**
163
- * Stop watching
164
- */
165
- async stopWatching(name) {
166
- try {
167
- if (name) {
168
- const watcher = this.watchers.get(name);
169
- if (watcher) {
170
- await watcher.close();
171
- this.watchers.delete(name);
172
- this.activeWatches.delete(name);
173
- logger_1.logger.success(`Stopped watch: ${name}`);
174
- }
175
- else {
176
- logger_1.logger.warn(`Watch not found: ${name}`);
177
- }
178
- }
179
- else {
180
- // Stop all watches
181
- for (const [watchName, watcher] of this.watchers) {
182
- await watcher.close();
183
- logger_1.logger.info(`Stopped watch: ${watchName}`);
184
- }
185
- this.watchers.clear();
186
- this.activeWatches.clear();
187
- logger_1.logger.success('Stopped all watches');
188
- }
189
- }
190
- catch (error) {
191
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_STOP_FAILED', 'Failed to stop watching', { name }, true);
192
- }
193
- }
194
- /**
195
- * List active watches
196
- */
197
- async listWatches() {
198
- try {
199
- if (this.activeWatches.size === 0) {
200
- logger_1.logger.info('No active watches');
201
- return;
202
- }
203
- logger_1.logger.info(`Active watches (${this.activeWatches.size}):`);
204
- const watchData = Array.from(this.activeWatches.entries()).map(([name, config]) => ({
205
- Name: name,
206
- Patterns: config.patterns.join(', '),
207
- Commands: config.commands.length,
208
- Debounce: `${config.debounce || 300}ms`,
209
- }));
210
- console.table(watchData);
211
- }
212
- catch (error) {
213
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_LIST_FAILED', 'Failed to list watches', {}, true);
214
- }
215
- }
216
- /**
217
- * Show watch status
218
- */
219
- async showWatchStatus(name) {
220
- try {
221
- if (name) {
222
- const config = this.activeWatches.get(name);
223
- const watcher = this.watchers.get(name);
224
- if (!config || !watcher) {
225
- logger_1.logger.warn(`Watch not found: ${name}`);
226
- return;
227
- }
228
- console.log(chalk_1.default.blue(`\nWatch Status: ${name}`));
229
- console.log(`Patterns: ${config.patterns.join(', ')}`);
230
- console.log(`Commands: ${config.commands.length}`);
231
- console.log(`Debounce: ${config.debounce || 300}ms`);
232
- console.log(`Watched Paths: ${Object.keys(watcher.getWatched()).length}`);
233
- }
234
- else {
235
- console.log(chalk_1.default.blue('\nAll Watches Status:'));
236
- console.log(`Active Watches: ${this.activeWatches.size}`);
237
- console.log(`Total Watchers: ${this.watchers.size}`);
238
- for (const [watchName] of this.activeWatches) {
239
- await this.showWatchStatus(watchName);
240
- }
241
- }
242
- }
243
- catch (error) {
244
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_STATUS_FAILED', 'Failed to show watch status', { name }, true);
245
- }
246
- }
247
- /**
248
- * Create watch configuration
249
- */
250
- async createWatchConfig(name, options) {
251
- try {
252
- let config;
253
- if (options.interactive) {
254
- config = await this.createInteractiveWatchConfig();
255
- }
256
- else {
257
- config = {
258
- patterns: options.patterns ? options.patterns.split(',') : ['**/*'],
259
- commands: options.commands
260
- ? this.parseWatchCommands(options.commands)
261
- : [],
262
- debounce: 300,
263
- recursive: true,
264
- };
265
- }
266
- const configPath = path_1.default.join(process.cwd(), '.wundr', 'watch', `${name}.yaml`);
267
- await fs_extra_1.default.ensureDir(path_1.default.dirname(configPath));
268
- await fs_extra_1.default.writeFile(configPath, yaml_1.default.stringify(config));
269
- logger_1.logger.success(`Watch configuration created: ${configPath}`);
270
- }
271
- catch (error) {
272
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_CONFIG_CREATE_FAILED', 'Failed to create watch configuration', { name, options }, true);
273
- }
274
- }
275
- /**
276
- * Load watch configuration from file
277
- */
278
- async loadWatchConfig(file) {
279
- try {
280
- const config = await this.loadWatchConfigFile(file);
281
- const name = path_1.default.basename(file, path_1.default.extname(file));
282
- await this.startWatchingWithConfig(name, config);
283
- logger_1.logger.success(`Loaded watch configuration: ${file}`);
284
- }
285
- catch (error) {
286
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_CONFIG_LOAD_FAILED', 'Failed to load watch configuration', { file }, true);
287
- }
288
- }
289
- /**
290
- * Save watch configuration to file
291
- */
292
- async saveWatchConfig(name, file) {
293
- try {
294
- const config = this.activeWatches.get(name);
295
- if (!config) {
296
- throw new Error(`Watch not found: ${name}`);
297
- }
298
- const outputPath = file || path_1.default.join(process.cwd(), '.wundr', 'watch', `${name}.yaml`);
299
- await fs_extra_1.default.ensureDir(path_1.default.dirname(outputPath));
300
- await fs_extra_1.default.writeFile(outputPath, yaml_1.default.stringify(config));
301
- logger_1.logger.success(`Watch configuration saved: ${outputPath}`);
302
- }
303
- catch (error) {
304
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_CONFIG_SAVE_FAILED', 'Failed to save watch configuration', { name, file }, true);
305
- }
306
- }
307
- /**
308
- * Watch tests
309
- */
310
- async watchTests(options) {
311
- try {
312
- logger_1.logger.info('Starting test watcher...');
313
- const testPatterns = this.getTestPatterns(options.framework);
314
- const watchConfig = {
315
- patterns: testPatterns,
316
- commands: [
317
- {
318
- trigger: 'change',
319
- command: this.getTestCommand(options.framework, options),
320
- condition: 'test-files',
321
- },
322
- ],
323
- debounce: 1000,
324
- };
325
- await this.startWatchingWithConfig('test-watch', watchConfig);
326
- }
327
- catch (error) {
328
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_TEST_FAILED', 'Failed to start test watcher', { options }, true);
329
- }
330
- }
331
- /**
332
- * Watch build
333
- */
334
- async watchBuild(options) {
335
- try {
336
- logger_1.logger.info('Starting build watcher...');
337
- const buildPatterns = ['src/**/*', 'lib/**/*', '*.config.*'];
338
- const watchConfig = {
339
- patterns: buildPatterns,
340
- commands: [
341
- {
342
- trigger: 'change',
343
- command: this.getBuildCommand(options),
344
- condition: 'source-files',
345
- },
346
- ],
347
- debounce: 500,
348
- };
349
- await this.startWatchingWithConfig('build-watch', watchConfig);
350
- }
351
- catch (error) {
352
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_BUILD_FAILED', 'Failed to start build watcher', { options }, true);
353
- }
354
- }
355
- /**
356
- * Watch lint
357
- */
358
- async watchLint(options) {
359
- try {
360
- logger_1.logger.info('Starting lint watcher...');
361
- const lintPatterns = ['**/*.{ts,tsx,js,jsx}', '!node_modules/**'];
362
- const watchConfig = {
363
- patterns: lintPatterns,
364
- commands: [
365
- {
366
- trigger: 'change',
367
- command: this.getLintCommand(options),
368
- condition: 'lint-files',
369
- },
370
- ],
371
- debounce: 300,
372
- };
373
- await this.startWatchingWithConfig('lint-watch', watchConfig);
374
- }
375
- catch (error) {
376
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_LINT_FAILED', 'Failed to start lint watcher', { options }, true);
377
- }
378
- }
379
- /**
380
- * Watch analysis
381
- */
382
- async watchAnalysis(options) {
383
- try {
384
- logger_1.logger.info(`Starting ${options.type} analysis watcher...`);
385
- const analysisPatterns = ['src/**/*', 'lib/**/*'];
386
- const watchConfig = {
387
- patterns: analysisPatterns,
388
- commands: [
389
- {
390
- trigger: 'change',
391
- command: this.getAnalysisCommand(options),
392
- condition: 'analysis-files',
393
- },
394
- ],
395
- debounce: 2000,
396
- };
397
- await this.startWatchingWithConfig('analysis-watch', watchConfig);
398
- }
399
- catch (error) {
400
- throw error_handler_1.errorHandler.createError('WUNDR_WATCH_ANALYSIS_FAILED', 'Failed to start analysis watcher', { options }, true);
401
- }
402
- }
403
- /**
404
- * Helper methods
405
- */
406
- setupWatchHandlers(watcher, config, name) {
407
- const executeCommands = async (eventType, filePath) => {
408
- const relevantCommands = config.commands.filter(cmd => cmd.trigger === eventType || cmd.trigger === 'change');
409
- for (const cmd of relevantCommands) {
410
- if (this.shouldExecuteCommand(cmd, filePath)) {
411
- await this.executeWatchCommand(cmd, filePath);
412
- }
413
- }
414
- };
415
- watcher.on('add', filePath => {
416
- logger_1.logger.debug(`File added: ${filePath}`);
417
- executeCommands('add', filePath);
418
- });
419
- watcher.on('change', filePath => {
420
- logger_1.logger.debug(`File changed: ${filePath}`);
421
- executeCommands('change', filePath);
422
- });
423
- watcher.on('unlink', filePath => {
424
- logger_1.logger.debug(`File deleted: ${filePath}`);
425
- executeCommands('delete', filePath);
426
- });
427
- watcher.on('error', error => {
428
- logger_1.logger.error(`Watch error in ${name}:`, error);
429
- });
430
- watcher.on('ready', () => {
431
- logger_1.logger.debug(`Watch ready: ${name}`);
432
- });
433
- }
434
- shouldExecuteCommand(cmd, filePath) {
435
- if (!cmd.condition)
436
- return true;
437
- // Implement condition checking logic
438
- switch (cmd.condition) {
439
- case 'test-files':
440
- return filePath.includes('.test.') || filePath.includes('.spec.');
441
- case 'source-files':
442
- return !filePath.includes('.test.') && !filePath.includes('.spec.');
443
- case 'lint-files':
444
- return /\.(ts|tsx|js|jsx)$/.test(filePath);
445
- case 'analysis-files':
446
- return /\.(ts|tsx|js|jsx)$/.test(filePath);
447
- default:
448
- return true;
449
- }
450
- }
451
- async executeWatchCommand(cmd, filePath) {
452
- try {
453
- logger_1.logger.info(`Executing: ${cmd.command}`);
454
- // Replace placeholders in command
455
- const command = cmd.command.replace('{{file}}', filePath);
456
- // Execute command
457
- const { spawn } = await Promise.resolve().then(() => tslib_1.__importStar(require('child_process')));
458
- const [cmdName, ...args] = command.split(' ');
459
- if (!cmdName) {
460
- logger_1.logger.error('Invalid command: empty command string');
461
- return;
462
- }
463
- const child = spawn(cmdName, args, {
464
- stdio: 'inherit',
465
- shell: true,
466
- });
467
- child.on('exit', code => {
468
- if (code === 0) {
469
- logger_1.logger.success(`Command completed: ${cmd.command}`);
470
- }
471
- else {
472
- logger_1.logger.error(`Command failed with exit code ${code}: ${cmd.command}`);
473
- }
474
- });
475
- }
476
- catch (error) {
477
- logger_1.logger.error(`Failed to execute command: ${cmd.command}`, error);
478
- }
479
- }
480
- createWatchConfigFromOptions(patterns, options) {
481
- return {
482
- patterns: patterns.length > 0 ? patterns : ['**/*'],
483
- ignore: options.ignore ? options.ignore.split(',') : [],
484
- commands: options.command
485
- ? [
486
- {
487
- trigger: 'change',
488
- command: options.command,
489
- },
490
- ]
491
- : [],
492
- debounce: parseInt(options.debounce) || 300,
493
- recursive: options.recursive || true,
494
- };
495
- }
496
- async loadWatchConfigFile(file) {
497
- if (!(await fs_extra_1.default.pathExists(file))) {
498
- throw new Error(`Configuration file not found: ${file}`);
499
- }
500
- const content = await fs_extra_1.default.readFile(file, 'utf8');
501
- const ext = path_1.default.extname(file).toLowerCase();
502
- if (ext === '.yaml' || ext === '.yml') {
503
- return yaml_1.default.parse(content);
504
- }
505
- else if (ext === '.json') {
506
- return JSON.parse(content);
507
- }
508
- else {
509
- throw new Error(`Unsupported configuration format: ${ext}`);
510
- }
511
- }
512
- async startWatchingWithConfig(name, config) {
513
- const watcher = (0, chokidar_1.watch)(config.patterns, {
514
- ignored: config.ignore || [],
515
- persistent: true,
516
- ignoreInitial: true,
517
- awaitWriteFinish: {
518
- stabilityThreshold: config.debounce || 300,
519
- pollInterval: 100,
520
- },
521
- });
522
- this.setupWatchHandlers(watcher, config, name);
523
- this.watchers.set(name, watcher);
524
- this.activeWatches.set(name, config);
525
- logger_1.logger.success(`Started watch: ${name}`);
526
- }
527
- async createInteractiveWatchConfig() {
528
- const inquirer = await Promise.resolve().then(() => tslib_1.__importStar(require('inquirer')));
529
- const answers = await inquirer.default.prompt([
530
- {
531
- type: 'input',
532
- name: 'patterns',
533
- message: 'File patterns to watch (comma-separated):',
534
- default: '**/*',
535
- },
536
- {
537
- type: 'input',
538
- name: 'ignore',
539
- message: 'Patterns to ignore (comma-separated):',
540
- default: 'node_modules/**,dist/**',
541
- },
542
- {
543
- type: 'input',
544
- name: 'command',
545
- message: 'Command to run on changes:',
546
- validate: input => input.length > 0 || 'Command is required',
547
- },
548
- {
549
- type: 'number',
550
- name: 'debounce',
551
- message: 'Debounce delay (ms):',
552
- default: 300,
553
- },
554
- ]);
555
- return {
556
- patterns: answers.patterns.split(',').map(p => p.trim()),
557
- ignore: answers.ignore.split(',').map(p => p.trim()),
558
- commands: [
559
- {
560
- trigger: 'change',
561
- command: answers.command,
562
- },
563
- ],
564
- debounce: answers.debounce,
565
- recursive: true,
566
- };
567
- }
568
- parseWatchCommands(commandsStr) {
569
- return commandsStr.split(',').map(cmd => ({
570
- trigger: 'change',
571
- command: cmd.trim(),
572
- }));
573
- }
574
- getTestPatterns(framework) {
575
- switch (framework) {
576
- case 'jest':
577
- return ['**/*.{test,spec}.{js,jsx,ts,tsx}', 'src/**/*'];
578
- case 'mocha':
579
- return ['test/**/*.js', 'src/**/*'];
580
- case 'vitest':
581
- return ['**/*.{test,spec}.{js,ts}', 'src/**/*'];
582
- default:
583
- return ['**/*.{test,spec}.*', 'src/**/*'];
584
- }
585
- }
586
- getTestCommand(framework, options) {
587
- const baseCmd = framework === 'npm' ? `npm test` : `npx ${framework}`;
588
- const flags = [];
589
- if (options.coverage)
590
- flags.push('--coverage');
591
- if (options.changedOnly)
592
- flags.push('--changedSince=HEAD');
593
- return `${baseCmd} ${flags.join(' ')}`;
594
- }
595
- getBuildCommand(options) {
596
- const cmd = options.target
597
- ? `npm run build:${options.target}`
598
- : 'npm run build';
599
- return options.incremental ? `${cmd} --incremental` : cmd;
600
- }
601
- getLintCommand(options) {
602
- const cmd = 'npx eslint {{file}}';
603
- return options.fix ? `${cmd} --fix` : cmd;
604
- }
605
- getAnalysisCommand(options) {
606
- return `wundr analyze ${options.type}`;
607
- }
608
- }
609
- exports.WatchCommands = WatchCommands;
610
- //# sourceMappingURL=watch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}