@wundr.io/cli 1.0.12 → 1.0.13

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 (234) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ai/ai-service.d.ts +152 -0
  3. package/dist/ai/ai-service.d.ts.map +1 -0
  4. package/dist/ai/ai-service.js +430 -0
  5. package/dist/ai/ai-service.js.map +1 -0
  6. package/dist/ai/claude-client.d.ts +130 -0
  7. package/dist/ai/claude-client.d.ts.map +1 -0
  8. package/dist/ai/claude-client.js +340 -0
  9. package/dist/ai/claude-client.js.map +1 -0
  10. package/dist/ai/conversation-manager.d.ts +164 -0
  11. package/dist/ai/conversation-manager.d.ts.map +1 -0
  12. package/dist/ai/conversation-manager.js +614 -0
  13. package/dist/ai/conversation-manager.js.map +1 -0
  14. package/dist/ai/index.d.ts +5 -0
  15. package/dist/ai/index.d.ts.map +1 -0
  16. package/dist/ai/index.js +8 -0
  17. package/dist/ai/index.js.map +1 -0
  18. package/dist/cli.d.ts +36 -0
  19. package/dist/cli.d.ts.map +1 -0
  20. package/dist/cli.js +192 -0
  21. package/dist/cli.js.map +1 -0
  22. package/dist/commands/ai.d.ts +89 -0
  23. package/dist/commands/ai.d.ts.map +1 -0
  24. package/dist/commands/ai.js +954 -0
  25. package/dist/commands/ai.js.map +1 -0
  26. package/dist/commands/alignment.d.ts +78 -0
  27. package/dist/commands/alignment.d.ts.map +1 -0
  28. package/dist/commands/alignment.js +817 -0
  29. package/dist/commands/alignment.js.map +1 -0
  30. package/dist/commands/analyze-optimized.d.ts +14 -0
  31. package/dist/commands/analyze-optimized.d.ts.map +1 -0
  32. package/dist/commands/analyze-optimized.js +609 -0
  33. package/dist/commands/analyze-optimized.js.map +1 -0
  34. package/dist/commands/analyze.d.ts +65 -0
  35. package/dist/commands/analyze.d.ts.map +1 -0
  36. package/dist/commands/analyze.js +435 -0
  37. package/dist/commands/analyze.js.map +1 -0
  38. package/dist/commands/batch.d.ts +93 -0
  39. package/dist/commands/batch.d.ts.map +1 -0
  40. package/dist/commands/batch.js +854 -0
  41. package/dist/commands/batch.js.map +1 -0
  42. package/dist/commands/chat.d.ts +72 -0
  43. package/dist/commands/chat.d.ts.map +1 -0
  44. package/dist/commands/chat.js +678 -0
  45. package/dist/commands/chat.js.map +1 -0
  46. package/dist/commands/claude-init.d.ts +28 -0
  47. package/dist/commands/claude-init.d.ts.map +1 -0
  48. package/dist/commands/claude-init.js +591 -0
  49. package/dist/commands/claude-init.js.map +1 -0
  50. package/dist/commands/claude-setup.d.ts +119 -0
  51. package/dist/commands/claude-setup.d.ts.map +1 -0
  52. package/dist/commands/claude-setup.js +1079 -0
  53. package/dist/commands/claude-setup.js.map +1 -0
  54. package/dist/commands/computer-setup.d.ts +8 -0
  55. package/dist/commands/computer-setup.d.ts.map +1 -0
  56. package/dist/commands/computer-setup.js +877 -0
  57. package/dist/commands/computer-setup.js.map +1 -0
  58. package/dist/commands/create-command.d.ts +7 -0
  59. package/dist/commands/create-command.d.ts.map +1 -0
  60. package/dist/commands/create-command.js +158 -0
  61. package/dist/commands/create-command.js.map +1 -0
  62. package/dist/commands/create.d.ts +74 -0
  63. package/dist/commands/create.d.ts.map +1 -0
  64. package/dist/commands/create.js +556 -0
  65. package/dist/commands/create.js.map +1 -0
  66. package/dist/commands/dashboard.d.ts +91 -0
  67. package/dist/commands/dashboard.d.ts.map +1 -0
  68. package/dist/commands/dashboard.js +538 -0
  69. package/dist/commands/dashboard.js.map +1 -0
  70. package/dist/commands/govern.d.ts +70 -0
  71. package/dist/commands/govern.d.ts.map +1 -0
  72. package/dist/commands/govern.js +481 -0
  73. package/dist/commands/govern.js.map +1 -0
  74. package/dist/commands/governance.d.ts +17 -0
  75. package/dist/commands/governance.d.ts.map +1 -0
  76. package/dist/commands/governance.js +703 -0
  77. package/dist/commands/governance.js.map +1 -0
  78. package/dist/commands/guardian.d.ts +20 -0
  79. package/dist/commands/guardian.d.ts.map +1 -0
  80. package/dist/commands/guardian.js +597 -0
  81. package/dist/commands/guardian.js.map +1 -0
  82. package/dist/commands/init.d.ts +59 -0
  83. package/dist/commands/init.d.ts.map +1 -0
  84. package/dist/commands/init.js +650 -0
  85. package/dist/commands/init.js.map +1 -0
  86. package/dist/commands/orchestrator.d.ts +7 -0
  87. package/dist/commands/orchestrator.d.ts.map +1 -0
  88. package/dist/commands/orchestrator.js +578 -0
  89. package/dist/commands/orchestrator.js.map +1 -0
  90. package/dist/commands/performance-optimizer.d.ts +30 -0
  91. package/dist/commands/performance-optimizer.d.ts.map +1 -0
  92. package/dist/commands/performance-optimizer.js +650 -0
  93. package/dist/commands/performance-optimizer.js.map +1 -0
  94. package/dist/commands/plugins.d.ts +87 -0
  95. package/dist/commands/plugins.d.ts.map +1 -0
  96. package/dist/commands/plugins.js +685 -0
  97. package/dist/commands/plugins.js.map +1 -0
  98. package/dist/commands/rag.d.ts +7 -0
  99. package/dist/commands/rag.d.ts.map +1 -0
  100. package/dist/commands/rag.js +751 -0
  101. package/dist/commands/rag.js.map +1 -0
  102. package/dist/commands/session.d.ts +41 -0
  103. package/dist/commands/session.d.ts.map +1 -0
  104. package/dist/commands/session.js +441 -0
  105. package/dist/commands/session.js.map +1 -0
  106. package/dist/commands/setup.d.ts +24 -0
  107. package/dist/commands/setup.d.ts.map +1 -0
  108. package/dist/commands/setup.js +172 -0
  109. package/dist/commands/setup.js.map +1 -0
  110. package/dist/commands/test-init.d.ts +9 -0
  111. package/dist/commands/test-init.d.ts.map +1 -0
  112. package/dist/commands/test-init.js +222 -0
  113. package/dist/commands/test-init.js.map +1 -0
  114. package/dist/commands/test.d.ts +25 -0
  115. package/dist/commands/test.d.ts.map +1 -0
  116. package/dist/commands/test.js +217 -0
  117. package/dist/commands/test.js.map +1 -0
  118. package/dist/commands/watch.d.ts +76 -0
  119. package/dist/commands/watch.d.ts.map +1 -0
  120. package/dist/commands/watch.js +613 -0
  121. package/dist/commands/watch.js.map +1 -0
  122. package/dist/commands/worktree.d.ts +63 -0
  123. package/dist/commands/worktree.d.ts.map +1 -0
  124. package/dist/commands/worktree.js +774 -0
  125. package/dist/commands/worktree.js.map +1 -0
  126. package/dist/context/context-manager.d.ts +155 -0
  127. package/dist/context/context-manager.d.ts.map +1 -0
  128. package/dist/context/context-manager.js +383 -0
  129. package/dist/context/context-manager.js.map +1 -0
  130. package/dist/context/index.d.ts +3 -0
  131. package/dist/context/index.d.ts.map +1 -0
  132. package/dist/context/index.js +6 -0
  133. package/dist/context/index.js.map +1 -0
  134. package/dist/context/session-manager.d.ts +207 -0
  135. package/dist/context/session-manager.d.ts.map +1 -0
  136. package/dist/context/session-manager.js +686 -0
  137. package/dist/context/session-manager.js.map +1 -0
  138. package/dist/framework/command-interface.d.ts +349 -0
  139. package/dist/framework/command-interface.d.ts.map +1 -0
  140. package/dist/framework/command-interface.js +101 -0
  141. package/dist/framework/command-interface.js.map +1 -0
  142. package/dist/framework/command-registry.d.ts +173 -0
  143. package/dist/framework/command-registry.d.ts.map +1 -0
  144. package/dist/framework/command-registry.js +734 -0
  145. package/dist/framework/command-registry.js.map +1 -0
  146. package/dist/framework/completion-exporter.d.ts +79 -0
  147. package/dist/framework/completion-exporter.d.ts.map +1 -0
  148. package/dist/framework/completion-exporter.js +259 -0
  149. package/dist/framework/completion-exporter.js.map +1 -0
  150. package/dist/framework/debug-logger.d.ts +163 -0
  151. package/dist/framework/debug-logger.d.ts.map +1 -0
  152. package/dist/framework/debug-logger.js +373 -0
  153. package/dist/framework/debug-logger.js.map +1 -0
  154. package/dist/framework/error-handler.d.ts +196 -0
  155. package/dist/framework/error-handler.d.ts.map +1 -0
  156. package/dist/framework/error-handler.js +613 -0
  157. package/dist/framework/error-handler.js.map +1 -0
  158. package/dist/framework/help-generator.d.ts +78 -0
  159. package/dist/framework/help-generator.d.ts.map +1 -0
  160. package/dist/framework/help-generator.js +414 -0
  161. package/dist/framework/help-generator.js.map +1 -0
  162. package/dist/framework/index.d.ts +62 -0
  163. package/dist/framework/index.d.ts.map +1 -0
  164. package/dist/framework/index.js +95 -0
  165. package/dist/framework/index.js.map +1 -0
  166. package/dist/framework/interactive-repl.d.ts +138 -0
  167. package/dist/framework/interactive-repl.d.ts.map +1 -0
  168. package/dist/framework/interactive-repl.js +567 -0
  169. package/dist/framework/interactive-repl.js.map +1 -0
  170. package/dist/framework/output-formatter.d.ts +274 -0
  171. package/dist/framework/output-formatter.d.ts.map +1 -0
  172. package/dist/framework/output-formatter.js +545 -0
  173. package/dist/framework/output-formatter.js.map +1 -0
  174. package/dist/framework/progress-manager.d.ts +192 -0
  175. package/dist/framework/progress-manager.d.ts.map +1 -0
  176. package/dist/framework/progress-manager.js +408 -0
  177. package/dist/framework/progress-manager.js.map +1 -0
  178. package/dist/index.d.ts +8 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +51 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/interactive/interactive-mode.d.ts +76 -0
  183. package/dist/interactive/interactive-mode.d.ts.map +1 -0
  184. package/dist/interactive/interactive-mode.js +732 -0
  185. package/dist/interactive/interactive-mode.js.map +1 -0
  186. package/dist/nlp/command-mapper.d.ts +174 -0
  187. package/dist/nlp/command-mapper.d.ts.map +1 -0
  188. package/dist/nlp/command-mapper.js +624 -0
  189. package/dist/nlp/command-mapper.js.map +1 -0
  190. package/dist/nlp/command-parser.d.ts +106 -0
  191. package/dist/nlp/command-parser.d.ts.map +1 -0
  192. package/dist/nlp/command-parser.js +417 -0
  193. package/dist/nlp/command-parser.js.map +1 -0
  194. package/dist/nlp/index.d.ts +5 -0
  195. package/dist/nlp/index.d.ts.map +1 -0
  196. package/dist/nlp/index.js +8 -0
  197. package/dist/nlp/index.js.map +1 -0
  198. package/dist/nlp/intent-classifier.d.ts +59 -0
  199. package/dist/nlp/intent-classifier.d.ts.map +1 -0
  200. package/dist/nlp/intent-classifier.js +384 -0
  201. package/dist/nlp/intent-classifier.js.map +1 -0
  202. package/dist/nlp/intent-parser.d.ts +152 -0
  203. package/dist/nlp/intent-parser.d.ts.map +1 -0
  204. package/dist/nlp/intent-parser.js +746 -0
  205. package/dist/nlp/intent-parser.js.map +1 -0
  206. package/dist/plugins/plugin-manager.d.ts +121 -0
  207. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  208. package/dist/plugins/plugin-manager.js +606 -0
  209. package/dist/plugins/plugin-manager.js.map +1 -0
  210. package/dist/types/index.d.ts +224 -0
  211. package/dist/types/index.d.ts.map +1 -0
  212. package/dist/types/index.js +3 -0
  213. package/dist/types/index.js.map +1 -0
  214. package/dist/utils/backup-rollback-manager.d.ts +72 -0
  215. package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
  216. package/dist/utils/backup-rollback-manager.js +288 -0
  217. package/dist/utils/backup-rollback-manager.js.map +1 -0
  218. package/dist/utils/claude-config-installer.d.ts +98 -0
  219. package/dist/utils/claude-config-installer.d.ts.map +1 -0
  220. package/dist/utils/claude-config-installer.js +678 -0
  221. package/dist/utils/claude-config-installer.js.map +1 -0
  222. package/dist/utils/config-manager.d.ts +73 -0
  223. package/dist/utils/config-manager.d.ts.map +1 -0
  224. package/dist/utils/config-manager.js +339 -0
  225. package/dist/utils/config-manager.js.map +1 -0
  226. package/dist/utils/error-handler.d.ts +46 -0
  227. package/dist/utils/error-handler.d.ts.map +1 -0
  228. package/dist/utils/error-handler.js +169 -0
  229. package/dist/utils/error-handler.js.map +1 -0
  230. package/dist/utils/logger.d.ts +25 -0
  231. package/dist/utils/logger.d.ts.map +1 -0
  232. package/dist/utils/logger.js +105 -0
  233. package/dist/utils/logger.js.map +1 -0
  234. package/package.json +23 -23
@@ -0,0 +1,613 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WatchCommands = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const path_1 = tslib_1.__importDefault(require("path"));
6
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
+ const chokidar_1 = require("chokidar");
8
+ const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
9
+ const yaml_1 = tslib_1.__importDefault(require("yaml"));
10
+ const error_handler_1 = require("../utils/error-handler");
11
+ const logger_1 = require("../utils/logger");
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
+ }
438
+ // Implement condition checking logic
439
+ switch (cmd.condition) {
440
+ case 'test-files':
441
+ return filePath.includes('.test.') || filePath.includes('.spec.');
442
+ case 'source-files':
443
+ return !filePath.includes('.test.') && !filePath.includes('.spec.');
444
+ case 'lint-files':
445
+ return /\.(ts|tsx|js|jsx)$/.test(filePath);
446
+ case 'analysis-files':
447
+ return /\.(ts|tsx|js|jsx)$/.test(filePath);
448
+ default:
449
+ return true;
450
+ }
451
+ }
452
+ async executeWatchCommand(cmd, filePath) {
453
+ try {
454
+ logger_1.logger.info(`Executing: ${cmd.command}`);
455
+ // Replace placeholders in command
456
+ const command = cmd.command.replace('{{file}}', filePath);
457
+ // Execute command
458
+ const { spawn } = await Promise.resolve().then(() => tslib_1.__importStar(require('child_process')));
459
+ const [cmdName, ...args] = command.split(' ');
460
+ if (!cmdName) {
461
+ logger_1.logger.error('Invalid command: empty command string');
462
+ return;
463
+ }
464
+ const child = spawn(cmdName, args, {
465
+ stdio: 'inherit',
466
+ shell: true,
467
+ });
468
+ child.on('exit', code => {
469
+ if (code === 0) {
470
+ logger_1.logger.success(`Command completed: ${cmd.command}`);
471
+ }
472
+ else {
473
+ logger_1.logger.error(`Command failed with exit code ${code}: ${cmd.command}`);
474
+ }
475
+ });
476
+ }
477
+ catch (error) {
478
+ logger_1.logger.error(`Failed to execute command: ${cmd.command}`, error);
479
+ }
480
+ }
481
+ createWatchConfigFromOptions(patterns, options) {
482
+ return {
483
+ patterns: patterns.length > 0 ? patterns : ['**/*'],
484
+ ignore: options.ignore ? options.ignore.split(',') : [],
485
+ commands: options.command
486
+ ? [
487
+ {
488
+ trigger: 'change',
489
+ command: options.command,
490
+ },
491
+ ]
492
+ : [],
493
+ debounce: parseInt(options.debounce) || 300,
494
+ recursive: options.recursive || true,
495
+ };
496
+ }
497
+ async loadWatchConfigFile(file) {
498
+ if (!(await fs_extra_1.default.pathExists(file))) {
499
+ throw new Error(`Configuration file not found: ${file}`);
500
+ }
501
+ const content = await fs_extra_1.default.readFile(file, 'utf8');
502
+ const ext = path_1.default.extname(file).toLowerCase();
503
+ if (ext === '.yaml' || ext === '.yml') {
504
+ return yaml_1.default.parse(content);
505
+ }
506
+ else if (ext === '.json') {
507
+ return JSON.parse(content);
508
+ }
509
+ else {
510
+ throw new Error(`Unsupported configuration format: ${ext}`);
511
+ }
512
+ }
513
+ async startWatchingWithConfig(name, config) {
514
+ const watcher = (0, chokidar_1.watch)(config.patterns, {
515
+ ignored: config.ignore || [],
516
+ persistent: true,
517
+ ignoreInitial: true,
518
+ awaitWriteFinish: {
519
+ stabilityThreshold: config.debounce || 300,
520
+ pollInterval: 100,
521
+ },
522
+ });
523
+ this.setupWatchHandlers(watcher, config, name);
524
+ this.watchers.set(name, watcher);
525
+ this.activeWatches.set(name, config);
526
+ logger_1.logger.success(`Started watch: ${name}`);
527
+ }
528
+ async createInteractiveWatchConfig() {
529
+ const inquirer = await Promise.resolve().then(() => tslib_1.__importStar(require('inquirer')));
530
+ const answers = await inquirer.default.prompt([
531
+ {
532
+ type: 'input',
533
+ name: 'patterns',
534
+ message: 'File patterns to watch (comma-separated):',
535
+ default: '**/*',
536
+ },
537
+ {
538
+ type: 'input',
539
+ name: 'ignore',
540
+ message: 'Patterns to ignore (comma-separated):',
541
+ default: 'node_modules/**,dist/**',
542
+ },
543
+ {
544
+ type: 'input',
545
+ name: 'command',
546
+ message: 'Command to run on changes:',
547
+ validate: input => input.length > 0 || 'Command is required',
548
+ },
549
+ {
550
+ type: 'number',
551
+ name: 'debounce',
552
+ message: 'Debounce delay (ms):',
553
+ default: 300,
554
+ },
555
+ ]);
556
+ return {
557
+ patterns: answers.patterns.split(',').map(p => p.trim()),
558
+ ignore: answers.ignore.split(',').map(p => p.trim()),
559
+ commands: [
560
+ {
561
+ trigger: 'change',
562
+ command: answers.command,
563
+ },
564
+ ],
565
+ debounce: answers.debounce,
566
+ recursive: true,
567
+ };
568
+ }
569
+ parseWatchCommands(commandsStr) {
570
+ return commandsStr.split(',').map(cmd => ({
571
+ trigger: 'change',
572
+ command: cmd.trim(),
573
+ }));
574
+ }
575
+ getTestPatterns(framework) {
576
+ switch (framework) {
577
+ case 'jest':
578
+ return ['**/*.{test,spec}.{js,jsx,ts,tsx}', 'src/**/*'];
579
+ case 'mocha':
580
+ return ['test/**/*.js', 'src/**/*'];
581
+ case 'vitest':
582
+ return ['**/*.{test,spec}.{js,ts}', 'src/**/*'];
583
+ default:
584
+ return ['**/*.{test,spec}.*', 'src/**/*'];
585
+ }
586
+ }
587
+ getTestCommand(framework, options) {
588
+ const baseCmd = framework === 'npm' ? 'npm test' : `npx ${framework}`;
589
+ const flags = [];
590
+ if (options.coverage) {
591
+ flags.push('--coverage');
592
+ }
593
+ if (options.changedOnly) {
594
+ flags.push('--changedSince=HEAD');
595
+ }
596
+ return `${baseCmd} ${flags.join(' ')}`;
597
+ }
598
+ getBuildCommand(options) {
599
+ const cmd = options.target
600
+ ? `npm run build:${options.target}`
601
+ : 'npm run build';
602
+ return options.incremental ? `${cmd} --incremental` : cmd;
603
+ }
604
+ getLintCommand(options) {
605
+ const cmd = 'npx eslint {{file}}';
606
+ return options.fix ? `${cmd} --fix` : cmd;
607
+ }
608
+ getAnalysisCommand(options) {
609
+ return `wundr analyze ${options.type}`;
610
+ }
611
+ }
612
+ exports.WatchCommands = WatchCommands;
613
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}