@wundr.io/cli 1.0.12 → 1.0.14

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 (233) 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 +954 -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 +609 -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 +93 -0
  38. package/dist/commands/batch.d.ts.map +1 -0
  39. package/dist/commands/batch.js +854 -0
  40. package/dist/commands/batch.js.map +1 -0
  41. package/dist/commands/chat.d.ts +72 -0
  42. package/dist/commands/chat.d.ts.map +1 -0
  43. package/dist/commands/chat.js +678 -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 +1079 -0
  52. package/dist/commands/claude-setup.js.map +1 -0
  53. package/dist/commands/computer-setup.d.ts +8 -0
  54. package/dist/commands/computer-setup.d.ts.map +1 -0
  55. package/dist/commands/computer-setup.js +877 -0
  56. package/dist/commands/computer-setup.js.map +1 -0
  57. package/dist/commands/create-command.d.ts +7 -0
  58. package/dist/commands/create-command.d.ts.map +1 -0
  59. package/dist/commands/create-command.js +158 -0
  60. package/dist/commands/create-command.js.map +1 -0
  61. package/dist/commands/create.d.ts +74 -0
  62. package/dist/commands/create.d.ts.map +1 -0
  63. package/dist/commands/create.js +556 -0
  64. package/dist/commands/create.js.map +1 -0
  65. package/dist/commands/dashboard.d.ts +91 -0
  66. package/dist/commands/dashboard.d.ts.map +1 -0
  67. package/dist/commands/dashboard.js +538 -0
  68. package/dist/commands/dashboard.js.map +1 -0
  69. package/dist/commands/govern.d.ts +70 -0
  70. package/dist/commands/govern.d.ts.map +1 -0
  71. package/dist/commands/govern.js +481 -0
  72. package/dist/commands/govern.js.map +1 -0
  73. package/dist/commands/governance.d.ts +17 -0
  74. package/dist/commands/governance.d.ts.map +1 -0
  75. package/dist/commands/governance.js +703 -0
  76. package/dist/commands/governance.js.map +1 -0
  77. package/dist/commands/guardian.d.ts +20 -0
  78. package/dist/commands/guardian.d.ts.map +1 -0
  79. package/dist/commands/guardian.js +597 -0
  80. package/dist/commands/guardian.js.map +1 -0
  81. package/dist/commands/init.d.ts +59 -0
  82. package/dist/commands/init.d.ts.map +1 -0
  83. package/dist/commands/init.js +650 -0
  84. package/dist/commands/init.js.map +1 -0
  85. package/dist/commands/orchestrator.d.ts +7 -0
  86. package/dist/commands/orchestrator.d.ts.map +1 -0
  87. package/dist/commands/orchestrator.js +578 -0
  88. package/dist/commands/orchestrator.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 +751 -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 +24 -0
  106. package/dist/commands/setup.d.ts.map +1 -0
  107. package/dist/commands/setup.js +172 -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/watch.d.ts +76 -0
  118. package/dist/commands/watch.d.ts.map +1 -0
  119. package/dist/commands/watch.js +613 -0
  120. package/dist/commands/watch.js.map +1 -0
  121. package/dist/commands/worktree.d.ts +63 -0
  122. package/dist/commands/worktree.d.ts.map +1 -0
  123. package/dist/commands/worktree.js +774 -0
  124. package/dist/commands/worktree.js.map +1 -0
  125. package/dist/context/context-manager.d.ts +155 -0
  126. package/dist/context/context-manager.d.ts.map +1 -0
  127. package/dist/context/context-manager.js +383 -0
  128. package/dist/context/context-manager.js.map +1 -0
  129. package/dist/context/index.d.ts +3 -0
  130. package/dist/context/index.d.ts.map +1 -0
  131. package/dist/context/index.js +6 -0
  132. package/dist/context/index.js.map +1 -0
  133. package/dist/context/session-manager.d.ts +207 -0
  134. package/dist/context/session-manager.d.ts.map +1 -0
  135. package/dist/context/session-manager.js +686 -0
  136. package/dist/context/session-manager.js.map +1 -0
  137. package/dist/framework/command-interface.d.ts +349 -0
  138. package/dist/framework/command-interface.d.ts.map +1 -0
  139. package/dist/framework/command-interface.js +101 -0
  140. package/dist/framework/command-interface.js.map +1 -0
  141. package/dist/framework/command-registry.d.ts +173 -0
  142. package/dist/framework/command-registry.d.ts.map +1 -0
  143. package/dist/framework/command-registry.js +734 -0
  144. package/dist/framework/command-registry.js.map +1 -0
  145. package/dist/framework/completion-exporter.d.ts +79 -0
  146. package/dist/framework/completion-exporter.d.ts.map +1 -0
  147. package/dist/framework/completion-exporter.js +259 -0
  148. package/dist/framework/completion-exporter.js.map +1 -0
  149. package/dist/framework/debug-logger.d.ts +163 -0
  150. package/dist/framework/debug-logger.d.ts.map +1 -0
  151. package/dist/framework/debug-logger.js +373 -0
  152. package/dist/framework/debug-logger.js.map +1 -0
  153. package/dist/framework/error-handler.d.ts +196 -0
  154. package/dist/framework/error-handler.d.ts.map +1 -0
  155. package/dist/framework/error-handler.js +613 -0
  156. package/dist/framework/error-handler.js.map +1 -0
  157. package/dist/framework/help-generator.d.ts +78 -0
  158. package/dist/framework/help-generator.d.ts.map +1 -0
  159. package/dist/framework/help-generator.js +414 -0
  160. package/dist/framework/help-generator.js.map +1 -0
  161. package/dist/framework/index.d.ts +62 -0
  162. package/dist/framework/index.d.ts.map +1 -0
  163. package/dist/framework/index.js +95 -0
  164. package/dist/framework/index.js.map +1 -0
  165. package/dist/framework/interactive-repl.d.ts +138 -0
  166. package/dist/framework/interactive-repl.d.ts.map +1 -0
  167. package/dist/framework/interactive-repl.js +567 -0
  168. package/dist/framework/interactive-repl.js.map +1 -0
  169. package/dist/framework/output-formatter.d.ts +274 -0
  170. package/dist/framework/output-formatter.d.ts.map +1 -0
  171. package/dist/framework/output-formatter.js +545 -0
  172. package/dist/framework/output-formatter.js.map +1 -0
  173. package/dist/framework/progress-manager.d.ts +192 -0
  174. package/dist/framework/progress-manager.d.ts.map +1 -0
  175. package/dist/framework/progress-manager.js +408 -0
  176. package/dist/framework/progress-manager.js.map +1 -0
  177. package/dist/index.d.ts +8 -0
  178. package/dist/index.d.ts.map +1 -0
  179. package/dist/index.js +51 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/interactive/interactive-mode.d.ts +76 -0
  182. package/dist/interactive/interactive-mode.d.ts.map +1 -0
  183. package/dist/interactive/interactive-mode.js +732 -0
  184. package/dist/interactive/interactive-mode.js.map +1 -0
  185. package/dist/nlp/command-mapper.d.ts +174 -0
  186. package/dist/nlp/command-mapper.d.ts.map +1 -0
  187. package/dist/nlp/command-mapper.js +624 -0
  188. package/dist/nlp/command-mapper.js.map +1 -0
  189. package/dist/nlp/command-parser.d.ts +106 -0
  190. package/dist/nlp/command-parser.d.ts.map +1 -0
  191. package/dist/nlp/command-parser.js +417 -0
  192. package/dist/nlp/command-parser.js.map +1 -0
  193. package/dist/nlp/index.d.ts +5 -0
  194. package/dist/nlp/index.d.ts.map +1 -0
  195. package/dist/nlp/index.js +8 -0
  196. package/dist/nlp/index.js.map +1 -0
  197. package/dist/nlp/intent-classifier.d.ts +59 -0
  198. package/dist/nlp/intent-classifier.d.ts.map +1 -0
  199. package/dist/nlp/intent-classifier.js +384 -0
  200. package/dist/nlp/intent-classifier.js.map +1 -0
  201. package/dist/nlp/intent-parser.d.ts +152 -0
  202. package/dist/nlp/intent-parser.d.ts.map +1 -0
  203. package/dist/nlp/intent-parser.js +746 -0
  204. package/dist/nlp/intent-parser.js.map +1 -0
  205. package/dist/plugins/plugin-manager.d.ts +121 -0
  206. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  207. package/dist/plugins/plugin-manager.js +606 -0
  208. package/dist/plugins/plugin-manager.js.map +1 -0
  209. package/dist/types/index.d.ts +224 -0
  210. package/dist/types/index.d.ts.map +1 -0
  211. package/dist/types/index.js +3 -0
  212. package/dist/types/index.js.map +1 -0
  213. package/dist/utils/backup-rollback-manager.d.ts +72 -0
  214. package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
  215. package/dist/utils/backup-rollback-manager.js +288 -0
  216. package/dist/utils/backup-rollback-manager.js.map +1 -0
  217. package/dist/utils/claude-config-installer.d.ts +98 -0
  218. package/dist/utils/claude-config-installer.d.ts.map +1 -0
  219. package/dist/utils/claude-config-installer.js +678 -0
  220. package/dist/utils/claude-config-installer.js.map +1 -0
  221. package/dist/utils/config-manager.d.ts +73 -0
  222. package/dist/utils/config-manager.d.ts.map +1 -0
  223. package/dist/utils/config-manager.js +339 -0
  224. package/dist/utils/config-manager.js.map +1 -0
  225. package/dist/utils/error-handler.d.ts +46 -0
  226. package/dist/utils/error-handler.d.ts.map +1 -0
  227. package/dist/utils/error-handler.js +169 -0
  228. package/dist/utils/error-handler.js.map +1 -0
  229. package/dist/utils/logger.d.ts +25 -0
  230. package/dist/utils/logger.d.ts.map +1 -0
  231. package/dist/utils/logger.js +105 -0
  232. package/dist/utils/logger.js.map +1 -0
  233. package/package.json +6 -6
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+ /**
3
+ * Debug Logger - Verbose/debug mode with detailed logging and TTY detection.
4
+ *
5
+ * Provides:
6
+ * - Verbosity levels (silent, error, warn, info, debug, trace)
7
+ * - Pipe-friendly output (auto-detects TTY vs piped output)
8
+ * - Structured log entries with timestamps and context
9
+ * - Color-coded output with chalk (disabled for non-TTY)
10
+ * - Performance timing helpers
11
+ * - Log filtering by tag/component
12
+ *
13
+ * @module framework/debug-logger
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.TaggedLogger = exports.DebugLogger = void 0;
17
+ const tslib_1 = require("tslib");
18
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
19
+ // ---------------------------------------------------------------------------
20
+ // Constants
21
+ // ---------------------------------------------------------------------------
22
+ const LEVEL_ORDER = {
23
+ silent: 0,
24
+ error: 1,
25
+ warn: 2,
26
+ info: 3,
27
+ debug: 4,
28
+ trace: 5,
29
+ };
30
+ const LEVEL_LABELS = {
31
+ silent: '',
32
+ error: 'ERR',
33
+ warn: 'WRN',
34
+ info: 'INF',
35
+ debug: 'DBG',
36
+ trace: 'TRC',
37
+ };
38
+ // ---------------------------------------------------------------------------
39
+ // Debug Logger
40
+ // ---------------------------------------------------------------------------
41
+ class DebugLogger {
42
+ level;
43
+ isTTY;
44
+ noColor;
45
+ showTimestamps;
46
+ includeTags;
47
+ excludeTags;
48
+ write;
49
+ writeError;
50
+ timers = new Map();
51
+ entries = [];
52
+ collectEntries;
53
+ constructor(options = {}) {
54
+ this.level = options.level ?? 'info';
55
+ this.isTTY = options.isTTY ?? process.stdout.isTTY === true;
56
+ this.noColor =
57
+ options.noColor ?? (process.env['NO_COLOR'] === '1' || !this.isTTY);
58
+ this.showTimestamps =
59
+ options.timestamps ?? (this.level === 'debug' || this.level === 'trace');
60
+ this.includeTags = options.includeTags
61
+ ? new Set(options.includeTags)
62
+ : null;
63
+ this.excludeTags = new Set(options.excludeTags ?? []);
64
+ this.write = options.write ?? ((msg) => process.stderr.write(msg));
65
+ this.writeError =
66
+ options.writeError ?? ((msg) => process.stderr.write(msg));
67
+ this.collectEntries = options.collectEntries ?? false;
68
+ // Disable chalk color if not TTY or noColor
69
+ if (this.noColor) {
70
+ chalk_1.default.level = 0;
71
+ }
72
+ }
73
+ /**
74
+ * Create a logger from global CLI options.
75
+ */
76
+ static fromGlobalOptions(options) {
77
+ let level = 'info';
78
+ if (options.quiet)
79
+ level = 'error';
80
+ if (options.verbose)
81
+ level = 'debug';
82
+ return new DebugLogger({
83
+ level,
84
+ noColor: options.noColor,
85
+ });
86
+ }
87
+ // -------------------------------------------------------------------------
88
+ // Core log methods implementing ContextLogger
89
+ // -------------------------------------------------------------------------
90
+ debug(message, ...args) {
91
+ this.log('debug', message, undefined, args.length > 0 ? args : undefined);
92
+ }
93
+ info(message, ...args) {
94
+ this.log('info', message, undefined, args.length > 0 ? args : undefined);
95
+ }
96
+ warn(message, ...args) {
97
+ this.log('warn', message, undefined, args.length > 0 ? args : undefined);
98
+ }
99
+ error(message, ...args) {
100
+ this.log('error', message, undefined, args.length > 0 ? args : undefined);
101
+ }
102
+ success(message, ...args) {
103
+ this.log('info', message, undefined, args.length > 0 ? args : undefined, true);
104
+ }
105
+ trace(message, ...args) {
106
+ this.log('trace', message, undefined, args.length > 0 ? args : undefined);
107
+ }
108
+ // -------------------------------------------------------------------------
109
+ // Tagged logging
110
+ // -------------------------------------------------------------------------
111
+ /**
112
+ * Create a tagged sub-logger that prefixes all messages with a component tag.
113
+ */
114
+ tagged(tag) {
115
+ return new TaggedLogger(this, tag);
116
+ }
117
+ /**
118
+ * Log a message with a specific tag.
119
+ */
120
+ logTagged(level, tag, message, data) {
121
+ this.log(level, message, tag, data);
122
+ }
123
+ // -------------------------------------------------------------------------
124
+ // Performance timing
125
+ // -------------------------------------------------------------------------
126
+ /**
127
+ * Start a performance timer.
128
+ *
129
+ * @param label - Timer label
130
+ */
131
+ time(label) {
132
+ this.timers.set(label, performance.now());
133
+ this.log('debug', `Timer started: ${label}`);
134
+ }
135
+ /**
136
+ * End a performance timer and log the duration.
137
+ *
138
+ * @param label - Timer label
139
+ * @returns Duration in milliseconds, or -1 if timer not found
140
+ */
141
+ timeEnd(label) {
142
+ const start = this.timers.get(label);
143
+ if (start === undefined) {
144
+ this.log('warn', `Timer not found: ${label}`);
145
+ return -1;
146
+ }
147
+ const duration = performance.now() - start;
148
+ this.timers.delete(label);
149
+ const entry = {
150
+ timestamp: new Date(),
151
+ level: 'debug',
152
+ message: `Timer ${label}: ${duration.toFixed(2)}ms`,
153
+ tag: 'perf',
154
+ durationMs: duration,
155
+ };
156
+ if (this.collectEntries) {
157
+ this.entries.push(entry);
158
+ }
159
+ this.log('debug', `${label}: ${this.formatDuration(duration)}`);
160
+ return duration;
161
+ }
162
+ // -------------------------------------------------------------------------
163
+ // Pipe-friendly output
164
+ // -------------------------------------------------------------------------
165
+ /**
166
+ * Write data to stdout suitable for piping.
167
+ * Uses plain text without colors when output is piped.
168
+ *
169
+ * @param data - Data to output
170
+ */
171
+ stdout(data) {
172
+ process.stdout.write(data);
173
+ if (!data.endsWith('\n')) {
174
+ process.stdout.write('\n');
175
+ }
176
+ }
177
+ /**
178
+ * Check if output is being piped (non-TTY).
179
+ */
180
+ isPiped() {
181
+ return !this.isTTY;
182
+ }
183
+ // -------------------------------------------------------------------------
184
+ // Configuration
185
+ // -------------------------------------------------------------------------
186
+ /**
187
+ * Update the log level at runtime.
188
+ */
189
+ setLevel(level) {
190
+ this.level = level;
191
+ this.showTimestamps = level === 'debug' || level === 'trace';
192
+ }
193
+ /**
194
+ * Get the current log level.
195
+ */
196
+ getLevel() {
197
+ return this.level;
198
+ }
199
+ /**
200
+ * Get all collected log entries (when collectEntries is enabled).
201
+ */
202
+ getEntries() {
203
+ return this.entries;
204
+ }
205
+ /**
206
+ * Clear collected entries.
207
+ */
208
+ clearEntries() {
209
+ this.entries = [];
210
+ }
211
+ // -------------------------------------------------------------------------
212
+ // Private
213
+ // -------------------------------------------------------------------------
214
+ /**
215
+ * Core log implementation.
216
+ */
217
+ log(level, message, tag, data, isSuccess) {
218
+ // Check level threshold
219
+ if (LEVEL_ORDER[level] > LEVEL_ORDER[this.level]) {
220
+ return;
221
+ }
222
+ // Check tag filters
223
+ if (tag) {
224
+ if (this.excludeTags.has(tag))
225
+ return;
226
+ if (this.includeTags && !this.includeTags.has(tag))
227
+ return;
228
+ }
229
+ // Collect entry
230
+ if (this.collectEntries) {
231
+ this.entries.push({
232
+ timestamp: new Date(),
233
+ level,
234
+ message,
235
+ tag,
236
+ data,
237
+ });
238
+ }
239
+ // Format and write
240
+ const formatted = this.formatMessage(level, message, tag, isSuccess);
241
+ const writeFn = level === 'error' ? this.writeError : this.write;
242
+ writeFn(formatted + '\n');
243
+ // Write data details in debug/trace mode
244
+ if (data !== undefined && LEVEL_ORDER[this.level] >= LEVEL_ORDER['debug']) {
245
+ const dataStr = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
246
+ const indented = dataStr
247
+ .split('\n')
248
+ .map(line => ' ' + line)
249
+ .join('\n');
250
+ writeFn(this.colorize('gray', indented) + '\n');
251
+ }
252
+ }
253
+ /**
254
+ * Format a log message for display.
255
+ */
256
+ formatMessage(level, message, tag, isSuccess) {
257
+ const parts = [];
258
+ // Timestamp
259
+ if (this.showTimestamps) {
260
+ const ts = new Date().toISOString().substring(11, 23); // HH:mm:ss.SSS
261
+ parts.push(this.colorize('gray', ts));
262
+ }
263
+ // Level badge
264
+ const label = LEVEL_LABELS[level];
265
+ if (label) {
266
+ parts.push(this.colorizeLevel(level, label));
267
+ }
268
+ // Tag
269
+ if (tag) {
270
+ parts.push(this.colorize('cyan', `[${tag}]`));
271
+ }
272
+ // Message
273
+ if (isSuccess) {
274
+ parts.push(this.colorize('green', message));
275
+ }
276
+ else {
277
+ parts.push(this.colorizeLevelMessage(level, message));
278
+ }
279
+ return parts.join(' ');
280
+ }
281
+ /**
282
+ * Colorize a level badge.
283
+ */
284
+ colorizeLevel(level, text) {
285
+ if (this.noColor)
286
+ return `[${text}]`;
287
+ switch (level) {
288
+ case 'error':
289
+ return chalk_1.default.red.bold(`[${text}]`);
290
+ case 'warn':
291
+ return chalk_1.default.yellow(`[${text}]`);
292
+ case 'info':
293
+ return chalk_1.default.blue(`[${text}]`);
294
+ case 'debug':
295
+ return chalk_1.default.gray(`[${text}]`);
296
+ case 'trace':
297
+ return chalk_1.default.dim(`[${text}]`);
298
+ default:
299
+ return `[${text}]`;
300
+ }
301
+ }
302
+ /**
303
+ * Colorize a message based on its level.
304
+ */
305
+ colorizeLevelMessage(level, text) {
306
+ if (this.noColor)
307
+ return text;
308
+ switch (level) {
309
+ case 'error':
310
+ return chalk_1.default.red(text);
311
+ case 'warn':
312
+ return chalk_1.default.yellow(text);
313
+ case 'trace':
314
+ return chalk_1.default.dim(text);
315
+ default:
316
+ return text;
317
+ }
318
+ }
319
+ /**
320
+ * Apply a color name to text.
321
+ */
322
+ colorize(color, text) {
323
+ if (this.noColor)
324
+ return text;
325
+ const colorFn = chalk_1.default[color];
326
+ return colorFn ? colorFn(text) : text;
327
+ }
328
+ /**
329
+ * Format a duration in milliseconds to a human-readable string.
330
+ */
331
+ formatDuration(ms) {
332
+ if (ms < 1)
333
+ return `${(ms * 1000).toFixed(0)}us`;
334
+ if (ms < 1000)
335
+ return `${ms.toFixed(1)}ms`;
336
+ if (ms < 60000)
337
+ return `${(ms / 1000).toFixed(2)}s`;
338
+ return `${(ms / 60000).toFixed(1)}min`;
339
+ }
340
+ }
341
+ exports.DebugLogger = DebugLogger;
342
+ // ---------------------------------------------------------------------------
343
+ // Tagged Logger
344
+ // ---------------------------------------------------------------------------
345
+ /**
346
+ * A logger that prepends a tag to all messages.
347
+ * Created via `DebugLogger.tagged('component')`.
348
+ */
349
+ class TaggedLogger {
350
+ parent;
351
+ tag;
352
+ constructor(parent, tag) {
353
+ this.parent = parent;
354
+ this.tag = tag;
355
+ }
356
+ debug(message, ...args) {
357
+ this.parent.logTagged('debug', this.tag, message, args.length > 0 ? args : undefined);
358
+ }
359
+ info(message, ...args) {
360
+ this.parent.logTagged('info', this.tag, message, args.length > 0 ? args : undefined);
361
+ }
362
+ warn(message, ...args) {
363
+ this.parent.logTagged('warn', this.tag, message, args.length > 0 ? args : undefined);
364
+ }
365
+ error(message, ...args) {
366
+ this.parent.logTagged('error', this.tag, message, args.length > 0 ? args : undefined);
367
+ }
368
+ success(message, ...args) {
369
+ this.parent.logTagged('info', this.tag, message, args.length > 0 ? args : undefined);
370
+ }
371
+ }
372
+ exports.TaggedLogger = TaggedLogger;
373
+ //# sourceMappingURL=debug-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/framework/debug-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * CLI Error Handler - Centralized error handling with recovery suggestions.
3
+ *
4
+ * Provides:
5
+ * - Typed error codes with hierarchical naming
6
+ * - Contextual recovery suggestions for every error
7
+ * - Consistent formatting across all commands
8
+ * - Verbose mode stack traces
9
+ * - Error wrapping for async operations
10
+ * - Custom error handler registration for extensions
11
+ *
12
+ * @module framework/error-handler
13
+ */
14
+ import type { CommandContext, CommandDefinition } from './command-interface';
15
+ /**
16
+ * Hierarchical error code type.
17
+ *
18
+ * Format: WUNDR_{DOMAIN}_{NUMBER}
19
+ * Domain groups: CLI, DAEMON, CONFIG, AGENT, MEMORY, PLUGIN, BATCH, SETUP, AUDIT
20
+ */
21
+ export type ErrorCode = 'WUNDR_CLI_001' | 'WUNDR_CLI_002' | 'WUNDR_CLI_003' | 'WUNDR_CLI_004' | 'WUNDR_CLI_005' | 'WUNDR_DAEMON_001' | 'WUNDR_DAEMON_002' | 'WUNDR_DAEMON_003' | 'WUNDR_DAEMON_004' | 'WUNDR_DAEMON_005' | 'WUNDR_DAEMON_006' | 'WUNDR_CONFIG_001' | 'WUNDR_CONFIG_002' | 'WUNDR_CONFIG_003' | 'WUNDR_CONFIG_004' | 'WUNDR_AGENT_001' | 'WUNDR_AGENT_002' | 'WUNDR_AGENT_003' | 'WUNDR_AGENT_004' | 'WUNDR_AGENT_005' | 'WUNDR_MEMORY_001' | 'WUNDR_MEMORY_002' | 'WUNDR_MEMORY_003' | 'WUNDR_MEMORY_004' | 'WUNDR_PLUGIN_001' | 'WUNDR_PLUGIN_002' | 'WUNDR_PLUGIN_003' | 'WUNDR_PLUGIN_004' | 'WUNDR_BATCH_001' | 'WUNDR_BATCH_002' | 'WUNDR_BATCH_003' | 'WUNDR_BATCH_004' | 'WUNDR_SETUP_001' | 'WUNDR_SETUP_002' | 'WUNDR_SETUP_003' | 'WUNDR_SETUP_004' | 'WUNDR_AUDIT_001' | 'WUNDR_AUDIT_002' | 'WUNDR_SYS_001' | 'WUNDR_SYS_002' | 'WUNDR_SYS_003' | 'WUNDR_SYS_004' | string;
22
+ /**
23
+ * Additional context attached to a CLI error.
24
+ */
25
+ export interface ErrorDetails {
26
+ /** The command that was running when the error occurred */
27
+ command?: string;
28
+ /** Relevant file path */
29
+ file?: string;
30
+ /** Relevant port number */
31
+ port?: number;
32
+ /** Process ID */
33
+ pid?: number;
34
+ /** Agent or session ID */
35
+ entityId?: string;
36
+ /** Plugin name */
37
+ plugin?: string;
38
+ /** Original error that caused this one */
39
+ cause?: Error;
40
+ /** Arbitrary additional context */
41
+ [key: string]: unknown;
42
+ }
43
+ /**
44
+ * Recovery suggestion displayed to the user.
45
+ */
46
+ export interface RecoverySuggestion {
47
+ /** Human-readable description of what to do */
48
+ description: string;
49
+ /** Optional command the user can run */
50
+ command?: string;
51
+ /** Optional documentation link */
52
+ docLink?: string;
53
+ }
54
+ /**
55
+ * Typed CLI error with error code, details, and recovery suggestions.
56
+ *
57
+ * All framework-level errors should use this type. Commands create them
58
+ * via `CliErrorHandler.createError()` and throw them; the handler
59
+ * formats them for display.
60
+ */
61
+ export declare class CliError extends Error {
62
+ readonly code: ErrorCode;
63
+ readonly details: ErrorDetails;
64
+ readonly suggestions: RecoverySuggestion[];
65
+ readonly recoverable: boolean;
66
+ readonly timestamp: Date;
67
+ constructor(code: ErrorCode, message: string, details?: ErrorDetails, suggestions?: RecoverySuggestion[], recoverable?: boolean);
68
+ }
69
+ /**
70
+ * High-level error classification for routing error handling behavior.
71
+ */
72
+ export type ErrorClassification = 'user' | 'system' | 'network' | 'config' | 'plugin' | 'unknown';
73
+ /**
74
+ * Classified error with category and recommended action.
75
+ */
76
+ export interface ClassifiedError {
77
+ classification: ErrorClassification;
78
+ retryable: boolean;
79
+ userFacing: boolean;
80
+ exitCode: number;
81
+ }
82
+ /**
83
+ * Classify an error code into a high-level category.
84
+ *
85
+ * User errors: bad input, missing args, invalid config values
86
+ * System errors: file not found, permission denied, disk full
87
+ * Network errors: connection refused, timeout, DNS failure
88
+ * Config errors: missing config, validation failure
89
+ * Plugin errors: plugin not found, incompatible, activation failure
90
+ */
91
+ export declare function classifyError(code: ErrorCode): ClassifiedError;
92
+ /**
93
+ * Classify any Error (including non-CliError) into a high-level category.
94
+ */
95
+ export declare function classifyAnyError(error: Error): ClassifiedError;
96
+ /**
97
+ * Custom error recovery handler for extending error handling.
98
+ */
99
+ export interface ErrorRecoveryHandler {
100
+ /** Whether this handler can handle the given error code */
101
+ canHandle(code: ErrorCode): boolean;
102
+ /**
103
+ * Attempt to recover from the error.
104
+ * Returns true if recovery succeeded, false otherwise.
105
+ */
106
+ recover(error: CliError, context: CommandContext): Promise<boolean>;
107
+ }
108
+ export declare class CliErrorHandler {
109
+ private customHandlers;
110
+ private customSuggestions;
111
+ /**
112
+ * Create a typed CLI error.
113
+ *
114
+ * @param code - Error code from the registry
115
+ * @param message - Human-readable error message
116
+ * @param details - Additional context
117
+ * @param recoverable - Whether the error is potentially recoverable
118
+ * @returns A CliError instance
119
+ */
120
+ createError(code: ErrorCode, message: string, details?: ErrorDetails, recoverable?: boolean): CliError;
121
+ /**
122
+ * Wrap a system error (ENOENT, EACCES, etc.) into a CliError.
123
+ *
124
+ * @param error - The original system error
125
+ * @param context - Additional context about what operation was being performed
126
+ * @returns A CliError with appropriate code and suggestions
127
+ */
128
+ wrapSystemError(error: Error & {
129
+ code?: string;
130
+ }, context?: string): CliError;
131
+ /**
132
+ * Handle a command execution error.
133
+ *
134
+ * Formats the error for display, including:
135
+ * - Error code and message
136
+ * - Context details
137
+ * - Recovery suggestions
138
+ * - Stack trace (in verbose mode)
139
+ *
140
+ * @param error - The error to handle
141
+ * @param command - The command that was executing
142
+ * @param context - The command context
143
+ */
144
+ handleCommandError(error: Error, command: CommandDefinition | undefined, context: CommandContext): void;
145
+ /**
146
+ * Wrap an async operation with consistent error handling.
147
+ *
148
+ * @param operation - The async operation to execute
149
+ * @param errorContext - Context string for error messages
150
+ * @param code - Error code to use if the operation fails
151
+ * @returns The operation result
152
+ */
153
+ withErrorHandling<T>(operation: () => Promise<T>, errorContext: string, code?: ErrorCode): Promise<T>;
154
+ /**
155
+ * Register a custom error recovery handler.
156
+ *
157
+ * @param handler - The recovery handler
158
+ */
159
+ registerHandler(handler: ErrorRecoveryHandler): void;
160
+ /**
161
+ * Register custom recovery suggestions for an error code.
162
+ *
163
+ * @param code - Error code
164
+ * @param suggestions - Recovery suggestions
165
+ */
166
+ registerSuggestions(code: string, suggestions: RecoverySuggestion[]): void;
167
+ /**
168
+ * Attempt to recover from an error using registered handlers.
169
+ *
170
+ * @param error - The error to recover from
171
+ * @param context - Command context
172
+ * @returns Whether recovery was successful
173
+ */
174
+ attemptRecovery(error: CliError, context: CommandContext): Promise<boolean>;
175
+ /**
176
+ * Get recovery suggestions for an error code, merging built-in and custom.
177
+ */
178
+ private getSuggestions;
179
+ /**
180
+ * Format a CliError for terminal display.
181
+ */
182
+ private formatCliError;
183
+ /**
184
+ * Format a plain Error for terminal display.
185
+ */
186
+ private formatPlainError;
187
+ /**
188
+ * Convert an error to a JSON-serializable object.
189
+ */
190
+ private toJson;
191
+ /**
192
+ * Format a detail value for display.
193
+ */
194
+ private formatDetailValue;
195
+ }
196
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/framework/error-handler.ts"],"names":[],"mappings":"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"}