@wundr.io/cli 1.0.11 → 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 (180) hide show
  1. package/bin/wundr.js +8 -4
  2. package/dist/ai/ai-service.d.ts.map +1 -1
  3. package/dist/ai/ai-service.js.map +1 -1
  4. package/dist/ai/claude-client.js.map +1 -1
  5. package/dist/ai/conversation-manager.js.map +1 -1
  6. package/dist/commands/ai.d.ts.map +1 -1
  7. package/dist/commands/ai.js +179 -24
  8. package/dist/commands/ai.js.map +1 -1
  9. package/dist/commands/analyze-optimized.d.ts.map +1 -1
  10. package/dist/commands/analyze-optimized.js +15 -6
  11. package/dist/commands/analyze-optimized.js.map +1 -1
  12. package/dist/commands/batch.d.ts +22 -0
  13. package/dist/commands/batch.d.ts.map +1 -1
  14. package/dist/commands/batch.js +130 -14
  15. package/dist/commands/batch.js.map +1 -1
  16. package/dist/commands/chat.d.ts +1 -0
  17. package/dist/commands/chat.d.ts.map +1 -1
  18. package/dist/commands/chat.js +7 -3
  19. package/dist/commands/chat.js.map +1 -1
  20. package/dist/commands/claude-init.d.ts +1 -1
  21. package/dist/commands/claude-init.d.ts.map +1 -1
  22. package/dist/commands/claude-init.js +16 -16
  23. package/dist/commands/claude-init.js.map +1 -1
  24. package/dist/commands/claude-setup.d.ts +5 -5
  25. package/dist/commands/claude-setup.d.ts.map +1 -1
  26. package/dist/commands/claude-setup.js +65 -59
  27. package/dist/commands/claude-setup.js.map +1 -1
  28. package/dist/commands/computer-setup.d.ts +1 -0
  29. package/dist/commands/computer-setup.d.ts.map +1 -1
  30. package/dist/commands/computer-setup.js +35 -7
  31. package/dist/commands/computer-setup.js.map +1 -1
  32. package/dist/commands/dashboard.js.map +1 -1
  33. package/dist/commands/govern.js.map +1 -1
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +3 -3
  36. package/dist/commands/init.js.map +1 -1
  37. package/dist/commands/orchestrator.d.ts.map +1 -1
  38. package/dist/commands/orchestrator.js +11 -4
  39. package/dist/commands/orchestrator.js.map +1 -1
  40. package/dist/commands/performance-optimizer.d.ts.map +1 -1
  41. package/dist/commands/performance-optimizer.js.map +1 -1
  42. package/dist/commands/rag.d.ts.map +1 -1
  43. package/dist/commands/rag.js +9 -6
  44. package/dist/commands/rag.js.map +1 -1
  45. package/dist/commands/setup.d.ts +5 -10
  46. package/dist/commands/setup.d.ts.map +1 -1
  47. package/dist/commands/setup.js +35 -260
  48. package/dist/commands/setup.js.map +1 -1
  49. package/dist/commands/watch.d.ts.map +1 -1
  50. package/dist/commands/watch.js.map +1 -1
  51. package/dist/context/session-manager.js.map +1 -1
  52. package/dist/framework/command-interface.d.ts +349 -0
  53. package/dist/framework/command-interface.d.ts.map +1 -0
  54. package/dist/framework/command-interface.js +101 -0
  55. package/dist/framework/command-interface.js.map +1 -0
  56. package/dist/framework/command-registry.d.ts +173 -0
  57. package/dist/framework/command-registry.d.ts.map +1 -0
  58. package/dist/framework/command-registry.js +734 -0
  59. package/dist/framework/command-registry.js.map +1 -0
  60. package/dist/framework/completion-exporter.d.ts +79 -0
  61. package/dist/framework/completion-exporter.d.ts.map +1 -0
  62. package/dist/framework/completion-exporter.js +259 -0
  63. package/dist/framework/completion-exporter.js.map +1 -0
  64. package/dist/framework/debug-logger.d.ts +163 -0
  65. package/dist/framework/debug-logger.d.ts.map +1 -0
  66. package/dist/framework/debug-logger.js +373 -0
  67. package/dist/framework/debug-logger.js.map +1 -0
  68. package/dist/framework/error-handler.d.ts +196 -0
  69. package/dist/framework/error-handler.d.ts.map +1 -0
  70. package/dist/framework/error-handler.js +613 -0
  71. package/dist/framework/error-handler.js.map +1 -0
  72. package/dist/framework/help-generator.d.ts +78 -0
  73. package/dist/framework/help-generator.d.ts.map +1 -0
  74. package/dist/framework/help-generator.js +414 -0
  75. package/dist/framework/help-generator.js.map +1 -0
  76. package/dist/framework/index.d.ts +62 -0
  77. package/dist/framework/index.d.ts.map +1 -0
  78. package/dist/framework/index.js +95 -0
  79. package/dist/framework/index.js.map +1 -0
  80. package/dist/framework/interactive-repl.d.ts +138 -0
  81. package/dist/framework/interactive-repl.d.ts.map +1 -0
  82. package/dist/framework/interactive-repl.js +567 -0
  83. package/dist/framework/interactive-repl.js.map +1 -0
  84. package/dist/framework/output-formatter.d.ts +274 -0
  85. package/dist/framework/output-formatter.d.ts.map +1 -0
  86. package/dist/framework/output-formatter.js +545 -0
  87. package/dist/framework/output-formatter.js.map +1 -0
  88. package/dist/framework/progress-manager.d.ts +192 -0
  89. package/dist/framework/progress-manager.d.ts.map +1 -0
  90. package/dist/framework/progress-manager.js +408 -0
  91. package/dist/framework/progress-manager.js.map +1 -0
  92. package/dist/interactive/interactive-mode.js.map +1 -1
  93. package/dist/nlp/command-mapper.js.map +1 -1
  94. package/dist/nlp/command-parser.js.map +1 -1
  95. package/dist/nlp/intent-parser.d.ts.map +1 -1
  96. package/dist/nlp/intent-parser.js +4 -2
  97. package/dist/nlp/intent-parser.js.map +1 -1
  98. package/dist/plugins/plugin-manager.d.ts +2 -1
  99. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  100. package/dist/plugins/plugin-manager.js +30 -19
  101. package/dist/plugins/plugin-manager.js.map +1 -1
  102. package/dist/utils/backup-rollback-manager.d.ts.map +1 -1
  103. package/dist/utils/backup-rollback-manager.js +1 -2
  104. package/dist/utils/backup-rollback-manager.js.map +1 -1
  105. package/dist/utils/logger.js.map +1 -1
  106. package/package.json +6 -6
  107. package/src/ai/ai-service.ts +16 -17
  108. package/src/ai/claude-client.ts +16 -16
  109. package/src/ai/conversation-manager.ts +29 -29
  110. package/src/cli.ts +4 -4
  111. package/src/commands/ai.ts +246 -78
  112. package/src/commands/alignment.ts +74 -74
  113. package/src/commands/analyze-optimized.ts +111 -78
  114. package/src/commands/analyze.ts +14 -14
  115. package/src/commands/batch.ts +179 -42
  116. package/src/commands/chat.ts +37 -30
  117. package/src/commands/claude-init.ts +41 -45
  118. package/src/commands/claude-setup.ts +204 -119
  119. package/src/commands/computer-setup.ts +85 -43
  120. package/src/commands/create-command.ts +4 -4
  121. package/src/commands/create.ts +27 -27
  122. package/src/commands/dashboard.ts +24 -24
  123. package/src/commands/govern.ts +25 -25
  124. package/src/commands/governance.ts +34 -34
  125. package/src/commands/guardian.ts +56 -56
  126. package/src/commands/init.ts +25 -22
  127. package/src/commands/orchestrator.ts +68 -41
  128. package/src/commands/performance-optimizer.ts +34 -35
  129. package/src/commands/plugins.ts +27 -27
  130. package/src/commands/project-update.ts +175 -72
  131. package/src/commands/rag.ts +185 -78
  132. package/src/commands/session.ts +35 -35
  133. package/src/commands/setup.ts +40 -344
  134. package/src/commands/test-init.ts +3 -3
  135. package/src/commands/test.ts +4 -4
  136. package/src/commands/watch.ts +28 -29
  137. package/src/commands/worktree.ts +49 -49
  138. package/src/context/context-manager.ts +10 -10
  139. package/src/context/session-manager.ts +41 -41
  140. package/src/framework/command-interface.ts +520 -0
  141. package/src/framework/command-registry.ts +942 -0
  142. package/src/framework/completion-exporter.ts +383 -0
  143. package/src/framework/debug-logger.ts +519 -0
  144. package/src/framework/error-handler.ts +867 -0
  145. package/src/framework/help-generator.ts +540 -0
  146. package/src/framework/index.ts +169 -0
  147. package/src/framework/interactive-repl.ts +703 -0
  148. package/src/framework/output-formatter.ts +834 -0
  149. package/src/framework/progress-manager.ts +539 -0
  150. package/src/index.ts +4 -4
  151. package/src/interactive/interactive-mode.ts +16 -16
  152. package/src/lib/conflict-resolution.ts +799 -9
  153. package/src/lib/merge-strategy.ts +529 -7
  154. package/src/lib/safety-mechanisms.ts +422 -18
  155. package/src/lib/state-detection.ts +1015 -13
  156. package/src/nlp/command-mapper.ts +29 -29
  157. package/src/nlp/command-parser.ts +17 -17
  158. package/src/nlp/intent-classifier.ts +7 -7
  159. package/src/nlp/intent-parser.ts +54 -52
  160. package/src/plugins/plugin-manager.ts +61 -39
  161. package/src/tests/computer-setup-integration.test.ts +46 -15
  162. package/src/types/modules.d.ts +424 -1
  163. package/src/utils/backup-rollback-manager.ts +11 -8
  164. package/src/utils/config-manager.ts +3 -3
  165. package/src/utils/error-handler.ts +2 -2
  166. package/src/utils/logger.ts +22 -22
  167. package/templates/batch/ci-cd.yaml +7 -7
  168. package/test-suites/api/health.spec.ts +20 -23
  169. package/test-suites/helpers/test-config.ts +14 -13
  170. package/test-suites/ui/accessibility.spec.ts +27 -22
  171. package/test-suites/ui/smoke.spec.ts +26 -21
  172. package/dist/commands/computer-setup-commands.d.ts +0 -53
  173. package/dist/commands/computer-setup-commands.d.ts.map +0 -1
  174. package/dist/commands/computer-setup-commands.js +0 -705
  175. package/dist/commands/computer-setup-commands.js.map +0 -1
  176. package/dist/commands/vp.d.ts +0 -7
  177. package/dist/commands/vp.d.ts.map +0 -1
  178. package/dist/commands/vp.js +0 -571
  179. package/dist/commands/vp.js.map +0 -1
  180. package/src/commands/computer-setup-commands.ts +0 -872
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Help Generator - Generates structured help text from command metadata.
3
+ *
4
+ * Produces:
5
+ * - Categorized command listings
6
+ * - Per-command detailed help with examples
7
+ * - Man-page style output for documentation
8
+ * - Markdown help for README generation
9
+ * - Search across all commands
10
+ *
11
+ * @module framework/help-generator
12
+ */
13
+ import type { CommandDefinition } from './command-interface';
14
+ import type { CommandRegistry } from './command-registry';
15
+ /**
16
+ * Options for help text generation.
17
+ */
18
+ export interface HelpGeneratorOptions {
19
+ /** Program name. Defaults to 'wundr'. */
20
+ programName?: string;
21
+ /** Maximum line width. Defaults to terminal width or 80. */
22
+ maxWidth?: number;
23
+ /** Whether to use colors. Defaults to TTY detection. */
24
+ color?: boolean;
25
+ /** Output format. */
26
+ format?: 'terminal' | 'markdown' | 'plain';
27
+ }
28
+ /**
29
+ * Result of a command search.
30
+ */
31
+ export interface SearchResult {
32
+ command: CommandDefinition;
33
+ matchType: 'name' | 'alias' | 'description' | 'category';
34
+ score: number;
35
+ }
36
+ export declare class HelpGenerator {
37
+ private registry;
38
+ private programName;
39
+ private maxWidth;
40
+ private useColor;
41
+ private format;
42
+ constructor(registry: CommandRegistry, options?: HelpGeneratorOptions);
43
+ /**
44
+ * Generate the main help text showing all commands grouped by category.
45
+ */
46
+ generateMainHelp(): string;
47
+ /**
48
+ * Generate detailed help for a specific command.
49
+ */
50
+ generateCommandHelp(command: CommandDefinition): string;
51
+ /**
52
+ * Search for commands matching a query string.
53
+ */
54
+ search(query: string): SearchResult[];
55
+ /**
56
+ * Generate the main help as Markdown.
57
+ */
58
+ private generateMarkdownMainHelp;
59
+ /**
60
+ * Generate per-command help as Markdown.
61
+ */
62
+ private generateMarkdownCommandHelp;
63
+ /**
64
+ * Build a usage line from command definition.
65
+ */
66
+ private buildUsageLine;
67
+ /**
68
+ * Simple fuzzy matching score between query and target.
69
+ * Returns 0-1 where 1 is an exact match.
70
+ */
71
+ private fuzzyScore;
72
+ private heading;
73
+ private sectionTitle;
74
+ private highlight;
75
+ private dim;
76
+ private warn;
77
+ }
78
+ //# sourceMappingURL=help-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-generator.d.ts","sourceRoot":"","sources":["../../src/framework/help-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,qBAAqB,CAAC;AAE9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,qBAAqB;IACrB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,qBAAa,aAAa;IAOtB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,MAAM,CAAoC;gBAGxC,QAAQ,EAAE,eAAe,EACjC,OAAO,GAAE,oBAAyB;IAYpC;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAkF1B;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAwGvD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAiErC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAwDhC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAmEnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;OAGG;IACH,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,IAAI;CAIb"}
@@ -0,0 +1,414 @@
1
+ "use strict";
2
+ /**
3
+ * Help Generator - Generates structured help text from command metadata.
4
+ *
5
+ * Produces:
6
+ * - Categorized command listings
7
+ * - Per-command detailed help with examples
8
+ * - Man-page style output for documentation
9
+ * - Markdown help for README generation
10
+ * - Search across all commands
11
+ *
12
+ * @module framework/help-generator
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HelpGenerator = void 0;
16
+ const tslib_1 = require("tslib");
17
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
18
+ const command_interface_1 = require("./command-interface");
19
+ // ---------------------------------------------------------------------------
20
+ // Help Generator
21
+ // ---------------------------------------------------------------------------
22
+ class HelpGenerator {
23
+ registry;
24
+ programName;
25
+ maxWidth;
26
+ useColor;
27
+ format;
28
+ constructor(registry, options = {}) {
29
+ this.registry = registry;
30
+ this.programName = options.programName ?? 'wundr';
31
+ this.maxWidth = options.maxWidth ?? process.stdout.columns ?? 80;
32
+ this.useColor = options.color ?? process.stdout.isTTY === true;
33
+ this.format = options.format ?? 'terminal';
34
+ }
35
+ // -------------------------------------------------------------------------
36
+ // Main Help
37
+ // -------------------------------------------------------------------------
38
+ /**
39
+ * Generate the main help text showing all commands grouped by category.
40
+ */
41
+ generateMainHelp() {
42
+ if (this.format === 'markdown') {
43
+ return this.generateMarkdownMainHelp();
44
+ }
45
+ const lines = [];
46
+ // Header
47
+ lines.push('');
48
+ lines.push(this.heading(`${this.programName} - CLI Tool`));
49
+ lines.push('');
50
+ // Usage
51
+ lines.push(this.sectionTitle('Usage'));
52
+ lines.push(` ${this.programName} <command> [options]`);
53
+ lines.push('');
54
+ // Commands by category
55
+ const grouped = this.registry.grouped();
56
+ const categories = Array.from(grouped.keys()).sort();
57
+ for (const category of categories) {
58
+ const commands = grouped.get(category);
59
+ if (!commands || commands.length === 0)
60
+ continue;
61
+ // Skip hidden commands
62
+ const visible = commands.filter(cmd => !cmd.hidden && !cmd.name.includes(':'));
63
+ if (visible.length === 0)
64
+ continue;
65
+ const label = category === 'uncategorized'
66
+ ? 'Other Commands'
67
+ : (command_interface_1.CATEGORY_LABELS[category] ?? category);
68
+ lines.push(this.sectionTitle(label));
69
+ // Find max name width for alignment
70
+ const maxNameWidth = Math.max(...visible.map(cmd => {
71
+ const aliases = cmd.aliases ? `, ${cmd.aliases.join(', ')}` : '';
72
+ return cmd.name.length + aliases.length;
73
+ }));
74
+ for (const cmd of visible) {
75
+ const aliases = cmd.aliases ? `, ${cmd.aliases.join(', ')}` : '';
76
+ const nameCol = (cmd.name + aliases).padEnd(maxNameWidth + 2);
77
+ lines.push(` ${this.highlight(nameCol)} ${cmd.description}`);
78
+ }
79
+ lines.push('');
80
+ }
81
+ // Global options
82
+ lines.push(this.sectionTitle('Global Options'));
83
+ lines.push(' --verbose Enable verbose logging');
84
+ lines.push(' --quiet Suppress output');
85
+ lines.push(' --json Output as JSON');
86
+ lines.push(' --no-color Disable colored output');
87
+ lines.push(' --dry-run Show what would be done');
88
+ lines.push(' --config <path> Specify config file');
89
+ lines.push(' -h, --help Show help');
90
+ lines.push(' -v, --version Show version');
91
+ lines.push('');
92
+ // Footer
93
+ lines.push(this.dim(`Run '${this.programName} <command> --help' for detailed help on a command.`));
94
+ lines.push('');
95
+ return lines.join('\n');
96
+ }
97
+ // -------------------------------------------------------------------------
98
+ // Command Help
99
+ // -------------------------------------------------------------------------
100
+ /**
101
+ * Generate detailed help for a specific command.
102
+ */
103
+ generateCommandHelp(command) {
104
+ if (this.format === 'markdown') {
105
+ return this.generateMarkdownCommandHelp(command);
106
+ }
107
+ const lines = [];
108
+ // Header
109
+ lines.push('');
110
+ lines.push(this.heading(command.name));
111
+ lines.push(` ${command.description}`);
112
+ lines.push('');
113
+ // Aliases
114
+ if (command.aliases && command.aliases.length > 0) {
115
+ lines.push(this.sectionTitle('Aliases'));
116
+ lines.push(` ${command.aliases.join(', ')}`);
117
+ lines.push('');
118
+ }
119
+ // Usage
120
+ lines.push(this.sectionTitle('Usage'));
121
+ const usage = this.buildUsageLine(command);
122
+ lines.push(` ${usage}`);
123
+ lines.push('');
124
+ // Arguments
125
+ if (command.arguments && command.arguments.length > 0) {
126
+ lines.push(this.sectionTitle('Arguments'));
127
+ const maxArgWidth = Math.max(...command.arguments.map(a => a.name.length));
128
+ for (const arg of command.arguments) {
129
+ const nameCol = arg.name.padEnd(maxArgWidth + 2);
130
+ const required = arg.required
131
+ ? this.warn('(required)')
132
+ : this.dim('(optional)');
133
+ const defaultVal = arg.defaultValue
134
+ ? this.dim(` [default: ${arg.defaultValue}]`)
135
+ : '';
136
+ lines.push(` ${this.highlight(nameCol)} ${arg.description} ${required}${defaultVal}`);
137
+ }
138
+ lines.push('');
139
+ }
140
+ // Options
141
+ if (command.options && command.options.length > 0) {
142
+ lines.push(this.sectionTitle('Options'));
143
+ const maxFlagWidth = Math.max(...command.options.map(o => o.flags.length));
144
+ for (const opt of command.options) {
145
+ const flagCol = opt.flags.padEnd(maxFlagWidth + 2);
146
+ const required = opt.required ? this.warn('(required)') : '';
147
+ const choices = opt.choices
148
+ ? this.dim(` [${opt.choices.join('|')}]`)
149
+ : '';
150
+ const defaultVal = opt.defaultValue !== undefined
151
+ ? this.dim(` [default: ${opt.defaultValue}]`)
152
+ : '';
153
+ const envVar = opt.envVar ? this.dim(` [env: ${opt.envVar}]`) : '';
154
+ lines.push(` ${this.highlight(flagCol)} ${opt.description}${required}${choices}${defaultVal}${envVar}`);
155
+ }
156
+ lines.push('');
157
+ }
158
+ // Subcommands
159
+ if (command.subcommands && command.subcommands.length > 0) {
160
+ lines.push(this.sectionTitle('Subcommands'));
161
+ const maxSubWidth = Math.max(...command.subcommands.map(s => s.name.length));
162
+ for (const sub of command.subcommands) {
163
+ const nameCol = sub.name.padEnd(maxSubWidth + 2);
164
+ lines.push(` ${this.highlight(nameCol)} ${sub.description}`);
165
+ }
166
+ lines.push('');
167
+ }
168
+ // Examples
169
+ if (command.examples && command.examples.length > 0) {
170
+ lines.push(this.sectionTitle('Examples'));
171
+ for (const ex of command.examples) {
172
+ lines.push(` ${this.highlight(`$ ${ex.command}`)}`);
173
+ lines.push(` ${this.dim(ex.description)}`);
174
+ lines.push('');
175
+ }
176
+ }
177
+ return lines.join('\n');
178
+ }
179
+ // -------------------------------------------------------------------------
180
+ // Search
181
+ // -------------------------------------------------------------------------
182
+ /**
183
+ * Search for commands matching a query string.
184
+ */
185
+ search(query) {
186
+ const normalizedQuery = query.toLowerCase();
187
+ const results = [];
188
+ for (const command of this.registry.list()) {
189
+ if (command.hidden)
190
+ continue;
191
+ let bestScore = 0;
192
+ let matchType = 'name';
193
+ // Name match
194
+ const nameScore = this.fuzzyScore(normalizedQuery, command.name.toLowerCase());
195
+ if (nameScore > bestScore) {
196
+ bestScore = nameScore;
197
+ matchType = 'name';
198
+ }
199
+ // Alias match
200
+ if (command.aliases) {
201
+ for (const alias of command.aliases) {
202
+ const aliasScore = this.fuzzyScore(normalizedQuery, alias.toLowerCase());
203
+ if (aliasScore > bestScore) {
204
+ bestScore = aliasScore;
205
+ matchType = 'alias';
206
+ }
207
+ }
208
+ }
209
+ // Description match
210
+ const descScore = this.fuzzyScore(normalizedQuery, command.description.toLowerCase()) *
211
+ 0.6;
212
+ if (descScore > bestScore) {
213
+ bestScore = descScore;
214
+ matchType = 'description';
215
+ }
216
+ // Category match
217
+ if (command.category) {
218
+ const catLabel = command_interface_1.CATEGORY_LABELS[command.category]?.toLowerCase() ?? '';
219
+ const catScore = this.fuzzyScore(normalizedQuery, catLabel) * 0.4;
220
+ if (catScore > bestScore) {
221
+ bestScore = catScore;
222
+ matchType = 'category';
223
+ }
224
+ }
225
+ if (bestScore > 0.3) {
226
+ results.push({ command, matchType, score: bestScore });
227
+ }
228
+ }
229
+ return results.sort((a, b) => b.score - a.score);
230
+ }
231
+ // -------------------------------------------------------------------------
232
+ // Markdown Output
233
+ // -------------------------------------------------------------------------
234
+ /**
235
+ * Generate the main help as Markdown.
236
+ */
237
+ generateMarkdownMainHelp() {
238
+ const lines = [];
239
+ lines.push(`# ${this.programName} CLI`);
240
+ lines.push('');
241
+ lines.push('## Usage');
242
+ lines.push('');
243
+ lines.push('```');
244
+ lines.push(`${this.programName} <command> [options]`);
245
+ lines.push('```');
246
+ lines.push('');
247
+ const grouped = this.registry.grouped();
248
+ const categories = Array.from(grouped.keys()).sort();
249
+ for (const category of categories) {
250
+ const commands = grouped.get(category);
251
+ if (!commands || commands.length === 0)
252
+ continue;
253
+ const visible = commands.filter(cmd => !cmd.hidden && !cmd.name.includes(':'));
254
+ if (visible.length === 0)
255
+ continue;
256
+ const label = category === 'uncategorized'
257
+ ? 'Other Commands'
258
+ : (command_interface_1.CATEGORY_LABELS[category] ?? category);
259
+ lines.push(`## ${label}`);
260
+ lines.push('');
261
+ lines.push('| Command | Description |');
262
+ lines.push('|---------|-------------|');
263
+ for (const cmd of visible) {
264
+ const aliases = cmd.aliases ? ` (${cmd.aliases.join(', ')})` : '';
265
+ lines.push(`| \`${cmd.name}\`${aliases} | ${cmd.description} |`);
266
+ }
267
+ lines.push('');
268
+ }
269
+ lines.push('## Global Options');
270
+ lines.push('');
271
+ lines.push('| Option | Description |');
272
+ lines.push('|--------|-------------|');
273
+ lines.push('| `--verbose` | Enable verbose logging |');
274
+ lines.push('| `--quiet` | Suppress output |');
275
+ lines.push('| `--json` | Output as JSON |');
276
+ lines.push('| `--no-color` | Disable colored output |');
277
+ lines.push('| `--dry-run` | Show what would be done |');
278
+ lines.push('| `--config <path>` | Specify config file |');
279
+ lines.push('');
280
+ return lines.join('\n');
281
+ }
282
+ /**
283
+ * Generate per-command help as Markdown.
284
+ */
285
+ generateMarkdownCommandHelp(command) {
286
+ const lines = [];
287
+ lines.push(`# ${command.name}`);
288
+ lines.push('');
289
+ lines.push(command.description);
290
+ lines.push('');
291
+ if (command.aliases && command.aliases.length > 0) {
292
+ lines.push(`**Aliases:** ${command.aliases.join(', ')}`);
293
+ lines.push('');
294
+ }
295
+ lines.push('## Usage');
296
+ lines.push('');
297
+ lines.push('```');
298
+ lines.push(this.buildUsageLine(command));
299
+ lines.push('```');
300
+ lines.push('');
301
+ if (command.arguments && command.arguments.length > 0) {
302
+ lines.push('## Arguments');
303
+ lines.push('');
304
+ lines.push('| Name | Description | Required | Default |');
305
+ lines.push('|------|-------------|----------|---------|');
306
+ for (const arg of command.arguments) {
307
+ lines.push(`| \`${arg.name}\` | ${arg.description} | ${arg.required ? 'Yes' : 'No'} | ${arg.defaultValue ?? '-'} |`);
308
+ }
309
+ lines.push('');
310
+ }
311
+ if (command.options && command.options.length > 0) {
312
+ lines.push('## Options');
313
+ lines.push('');
314
+ lines.push('| Flag | Description | Required | Default |');
315
+ lines.push('|------|-------------|----------|---------|');
316
+ for (const opt of command.options) {
317
+ const defaultVal = opt.defaultValue !== undefined ? String(opt.defaultValue) : '-';
318
+ lines.push(`| \`${opt.flags}\` | ${opt.description} | ${opt.required ? 'Yes' : 'No'} | ${defaultVal} |`);
319
+ }
320
+ lines.push('');
321
+ }
322
+ if (command.examples && command.examples.length > 0) {
323
+ lines.push('## Examples');
324
+ lines.push('');
325
+ for (const ex of command.examples) {
326
+ lines.push(`**${ex.description}:**`);
327
+ lines.push('```');
328
+ lines.push(ex.command);
329
+ lines.push('```');
330
+ lines.push('');
331
+ }
332
+ }
333
+ return lines.join('\n');
334
+ }
335
+ // -------------------------------------------------------------------------
336
+ // Private Helpers
337
+ // -------------------------------------------------------------------------
338
+ /**
339
+ * Build a usage line from command definition.
340
+ */
341
+ buildUsageLine(command) {
342
+ const parts = [this.programName, command.name];
343
+ if (command.arguments) {
344
+ for (const arg of command.arguments) {
345
+ if (arg.required) {
346
+ parts.push(arg.variadic ? `<${arg.name}...>` : `<${arg.name}>`);
347
+ }
348
+ else {
349
+ parts.push(arg.variadic ? `[${arg.name}...]` : `[${arg.name}]`);
350
+ }
351
+ }
352
+ }
353
+ if (command.options && command.options.length > 0) {
354
+ parts.push('[options]');
355
+ }
356
+ return parts.join(' ');
357
+ }
358
+ /**
359
+ * Simple fuzzy matching score between query and target.
360
+ * Returns 0-1 where 1 is an exact match.
361
+ */
362
+ fuzzyScore(query, target) {
363
+ if (query === target)
364
+ return 1;
365
+ if (target.startsWith(query))
366
+ return 0.9;
367
+ if (target.includes(query))
368
+ return 0.7;
369
+ // Character-by-character fuzzy
370
+ let qi = 0;
371
+ let ti = 0;
372
+ let matched = 0;
373
+ while (qi < query.length && ti < target.length) {
374
+ if (query[qi] === target[ti]) {
375
+ matched++;
376
+ qi++;
377
+ }
378
+ ti++;
379
+ }
380
+ if (qi < query.length)
381
+ return 0;
382
+ return matched / target.length;
383
+ }
384
+ // -------------------------------------------------------------------------
385
+ // Text formatting helpers
386
+ // -------------------------------------------------------------------------
387
+ heading(text) {
388
+ if (!this.useColor)
389
+ return text;
390
+ return chalk_1.default.cyan.bold(text);
391
+ }
392
+ sectionTitle(text) {
393
+ if (!this.useColor)
394
+ return `${text}:`;
395
+ return chalk_1.default.white.bold(`${text}:`);
396
+ }
397
+ highlight(text) {
398
+ if (!this.useColor)
399
+ return text;
400
+ return chalk_1.default.green(text);
401
+ }
402
+ dim(text) {
403
+ if (!this.useColor)
404
+ return text;
405
+ return chalk_1.default.gray(text);
406
+ }
407
+ warn(text) {
408
+ if (!this.useColor)
409
+ return text;
410
+ return chalk_1.default.yellow(text);
411
+ }
412
+ }
413
+ exports.HelpGenerator = HelpGenerator;
414
+ //# sourceMappingURL=help-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-generator.js","sourceRoot":"","sources":["../../src/framework/help-generator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;AAEH,0DAA0B;AAG1B,2DAAsD;AAiCtD,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAa,aAAa;IAOd;IANF,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,QAAQ,CAAU;IAClB,MAAM,CAAoC;IAElD,YACU,QAAyB,EACjC,UAAgC,EAAE;QAD1B,aAAQ,GAAR,QAAQ,CAAiB;QAGjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;QAC/D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;IAC7C,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E;;OAEG;IACH,gBAAgB;QACd,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,SAAS;QACT,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,aAAa,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,QAAQ;QACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,sBAAsB,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,uBAAuB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEjD,uBAAuB;YACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC9C,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEnC,MAAM,KAAK,GACT,QAAQ,KAAK,eAAe;gBAC1B,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,CAAC,mCAAe,CAAC,QAA2B,CAAC,IAAI,QAAQ,CAAC,CAAC;YAEjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAErC,oCAAoC;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACnB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC1C,CAAC,CAAC,CACH,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBAC9D,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,iBAAiB;QACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,SAAS;QACT,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,GAAG,CACN,QAAQ,IAAI,CAAC,WAAW,oDAAoD,CAC7E,CACF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAE5E;;OAEG;IACH,mBAAmB,CAAC,OAA0B;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,SAAS;QACT,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,UAAU;QACV,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,QAAQ;QACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,YAAY;QACZ,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC7C,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;oBAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;oBACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY;oBACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,YAAY,GAAG,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC;gBACP,KAAK,CAAC,IAAI,CACR,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,WAAW,IAAI,QAAQ,GAAG,UAAU,EAAE,CAC5E,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,UAAU;QACV,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAC5C,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO;oBACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBACzC,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,UAAU,GACd,GAAG,CAAC,YAAY,KAAK,SAAS;oBAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,YAAY,GAAG,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,KAAK,CAAC,IAAI,CACR,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,EAAE,CAC9F,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,cAAc;QACd,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC/C,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAC5E,SAAS;IACT,4EAA4E;IAE5E;;OAEG;IACH,MAAM,CAAC,KAAa;QAClB,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,MAAM;gBAAE,SAAS;YAE7B,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,SAAS,GAA8B,MAAM,CAAC;YAElD,aAAa;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAC/B,eAAe,EACf,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAC3B,CAAC;YACF,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;gBAC1B,SAAS,GAAG,SAAS,CAAC;gBACtB,SAAS,GAAG,MAAM,CAAC;YACrB,CAAC;YAED,cAAc;YACd,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAChC,eAAe,EACf,KAAK,CAAC,WAAW,EAAE,CACpB,CAAC;oBACF,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;wBAC3B,SAAS,GAAG,UAAU,CAAC;wBACvB,SAAS,GAAG,OAAO,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,MAAM,SAAS,GACb,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;gBACnE,GAAG,CAAC;YACN,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;gBAC1B,SAAS,GAAG,SAAS,CAAC;gBACtB,SAAS,GAAG,aAAa,CAAC;YAC5B,CAAC;YAED,iBAAiB;YACjB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,mCAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;gBAClE,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;oBACzB,SAAS,GAAG,QAAQ,CAAC;oBACrB,SAAS,GAAG,UAAU,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E;;OAEG;IACK,wBAAwB;QAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,MAAM,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,sBAAsB,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEjD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC9C,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEnC,MAAM,KAAK,GACT,QAAQ,KAAK,eAAe;gBAC1B,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,CAAC,mCAAe,CAAC,QAA2B,CAAC,IAAI,QAAQ,CAAC,CAAC;YAEjE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAExC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,MAAM,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;YACnE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,OAA0B;QAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC1D,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CACR,OAAO,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,YAAY,IAAI,GAAG,IAAI,CACzG,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC1D,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,UAAU,GACd,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClE,KAAK,CAAC,IAAI,CACR,OAAO,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,UAAU,IAAI,CAC7F,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,KAAK,CAAC,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E;;OAEG;IACK,cAAc,CAAC,OAA0B;QAC/C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,UAAU,CAAC,KAAa,EAAE,MAAc;QAC9C,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAEvC,+BAA+B;QAC/B,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,CAAC;gBACV,EAAE,EAAE,CAAC;YACP,CAAC;YACD,EAAE,EAAE,CAAC;QACP,CAAC;QAED,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;QAChC,OAAO,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,4EAA4E;IAC5E,0BAA0B;IAC1B,4EAA4E;IAEpE,OAAO,CAAC,IAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,GAAG,IAAI,GAAG,CAAC;QACtC,OAAO,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,GAAG,CAAC,IAAY;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,IAAI,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF;AAteD,sCAseC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Wundr CLI Framework - Public API
3
+ *
4
+ * This module provides the core framework for building CLI commands:
5
+ *
6
+ * - **CommandDefinition**: The interface every command implements
7
+ * - **CommandRegistry**: Auto-discovery and Commander.js integration
8
+ * - **OutputFormatter**: Consistent table, JSON, YAML, status, progress output
9
+ * - **CliErrorHandler**: Typed errors with classification and recovery
10
+ * - **InteractiveRepl**: REPL loop with history, aliases, and tab completion
11
+ * - **HelpGenerator**: Structured help text from command metadata
12
+ * - **CompletionExporter**: Shell completion script generation
13
+ * - **DebugLogger**: Verbose/debug logging with TTY detection
14
+ * - **ProgressBar / StepTracker**: Progress tracking for long operations
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import {
19
+ * CommandDefinition,
20
+ * CommandRegistry,
21
+ * OutputFormatter,
22
+ * CliErrorHandler,
23
+ * InteractiveRepl,
24
+ * HelpGenerator,
25
+ * CompletionExporter,
26
+ * DebugLogger,
27
+ * ProgressBar,
28
+ * StepTracker,
29
+ * commandSuccess,
30
+ * commandFailure,
31
+ * validationOk,
32
+ * validationFail,
33
+ * } from './framework';
34
+ *
35
+ * const myCommand: CommandDefinition = {
36
+ * name: 'status',
37
+ * description: 'Show system status',
38
+ * category: 'daemon',
39
+ * async execute(args, options, context) {
40
+ * const data = await getStatus();
41
+ * const formatter = new OutputFormatter();
42
+ * const message = formatter.keyValue(data);
43
+ * return commandSuccess(data, message);
44
+ * },
45
+ * };
46
+ *
47
+ * const registry = new CommandRegistry();
48
+ * registry.register(myCommand);
49
+ * ```
50
+ *
51
+ * @module framework
52
+ */
53
+ export { type CommandDefinition, type CommandModule, type CommandHook, type ArgumentDefinition, type OptionDefinition, type CommandExample, type CommandCategory, CATEGORY_LABELS, type ValidationResult, type ValidationError, validationOk, validationFail, type CommandContext, type GlobalOptions, type ContextLogger, type OutputFormatterInterface, type ConfigManagerInterface, type CommandResult, commandSuccess, commandFailure, wrapLegacyCommand, } from './command-interface';
54
+ export { CommandRegistry, type RegistryOptions, type RegisteredCommand, } from './command-registry';
55
+ export { OutputFormatter, type TableOptions, type ColumnDefinition, type JsonOptions, type KeyValueOptions, type ListOptions, type TreeNode, type TreeOptions, type ProgressOptions, type StatusState, } from './output-formatter';
56
+ export { CliErrorHandler, CliError, type ErrorCode, type ErrorDetails, type RecoverySuggestion, type ErrorRecoveryHandler, type ErrorClassification, type ClassifiedError, classifyError, classifyAnyError, } from './error-handler';
57
+ export { InteractiveRepl, type ReplOptions, type HistoryEntry, } from './interactive-repl';
58
+ export { HelpGenerator, type HelpGeneratorOptions, type SearchResult, } from './help-generator';
59
+ export { CompletionExporter, type ShellType, type CompletionData, type CompletionCommand, type CompletionArgument, type CompletionOption, } from './completion-exporter';
60
+ export { DebugLogger, TaggedLogger, type LogLevel, type LogEntry, type DebugLoggerOptions, } from './debug-logger';
61
+ export { ProgressBar, MultiProgressManager, StepTracker, type ProgressBarOptions, type ProgressState, type ProgressStep, type StepTrackerOptions, } from './progress-manager';
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,WAAW,EAGhB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAGnB,KAAK,eAAe,EACpB,eAAe,EAGf,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,YAAY,EACZ,cAAc,EAGd,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAG3B,KAAK,aAAa,EAClB,cAAc,EACd,cAAc,EAGd,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,QAAQ,EACR,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}