@buoy-design/cli 0.3.33 → 0.3.35

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 (93) hide show
  1. package/dist/commands/audit.d.ts +3 -0
  2. package/dist/commands/audit.d.ts.map +1 -0
  3. package/dist/commands/audit.js +235 -0
  4. package/dist/commands/audit.js.map +1 -0
  5. package/dist/commands/baseline.d.ts +47 -0
  6. package/dist/commands/baseline.d.ts.map +1 -0
  7. package/dist/commands/baseline.js +327 -0
  8. package/dist/commands/baseline.js.map +1 -0
  9. package/dist/commands/begin.d.ts +9 -0
  10. package/dist/commands/begin.d.ts.map +1 -0
  11. package/dist/commands/begin.js +827 -0
  12. package/dist/commands/begin.js.map +1 -0
  13. package/dist/commands/build.d.ts +8 -0
  14. package/dist/commands/build.d.ts.map +1 -0
  15. package/dist/commands/build.js +26 -0
  16. package/dist/commands/build.js.map +1 -0
  17. package/dist/commands/check.d.ts.sync-conflict-20260305-170128-6PCZ3ZU.map +1 -0
  18. package/dist/commands/check.sync-conflict-20260305-155016-6PCZ3ZU.d.ts +26 -0
  19. package/dist/commands/check.sync-conflict-20260305-155016-6PCZ3ZU.d.ts.map +1 -0
  20. package/dist/commands/check.sync-conflict-20260305-155016-6PCZ3ZU.js +438 -0
  21. package/dist/commands/check.sync-conflict-20260305-155016-6PCZ3ZU.js.map +1 -0
  22. package/dist/commands/commands.d.ts +8 -0
  23. package/dist/commands/commands.d.ts.map +1 -0
  24. package/dist/commands/commands.js +148 -0
  25. package/dist/commands/commands.js.map +1 -0
  26. package/dist/commands/components-query.d.ts +13 -0
  27. package/dist/commands/components-query.d.ts.map +1 -0
  28. package/dist/commands/components-query.js +263 -0
  29. package/dist/commands/components-query.js.map +1 -0
  30. package/dist/commands/components.d.ts +8 -0
  31. package/dist/commands/components.d.ts.map +1 -0
  32. package/dist/commands/components.js +14 -0
  33. package/dist/commands/components.js.map +1 -0
  34. package/dist/commands/dock.sync-conflict-20260309-191923-6PCZ3ZU.js +1006 -0
  35. package/dist/commands/history.d.ts +3 -0
  36. package/dist/commands/history.d.ts.map +1 -0
  37. package/dist/commands/history.js +352 -0
  38. package/dist/commands/history.js.map +1 -0
  39. package/dist/commands/plugins.d.ts +3 -0
  40. package/dist/commands/plugins.d.ts.map +1 -0
  41. package/dist/commands/plugins.js +63 -0
  42. package/dist/commands/plugins.js.map +1 -0
  43. package/dist/commands/show.d.ts.sync-conflict-20260306-165917-6PCZ3ZU.map +1 -0
  44. package/dist/commands/show.sync-conflict-20260305-140755-6PCZ3ZU.js +1735 -0
  45. package/dist/commands/show.sync-conflict-20260309-130326-6PCZ3ZU.d.ts +11 -0
  46. package/dist/commands/show.sync-conflict-20260309-130326-6PCZ3ZU.d.ts.map +1 -0
  47. package/dist/commands/show.sync-conflict-20260309-130326-6PCZ3ZU.js +1735 -0
  48. package/dist/commands/show.sync-conflict-20260309-130326-6PCZ3ZU.js.map +1 -0
  49. package/dist/config/loader.js +1 -1
  50. package/dist/config/loader.js.map +1 -1
  51. package/dist/config/loader.js.sync-conflict-20260309-033512-6PCZ3ZU.map +1 -0
  52. package/dist/config/loader.sync-conflict-20260307-175208-6PCZ3ZU.d.ts +8 -0
  53. package/dist/config/loader.sync-conflict-20260307-175208-6PCZ3ZU.d.ts.map +1 -0
  54. package/dist/config/loader.sync-conflict-20260307-175208-6PCZ3ZU.js +162 -0
  55. package/dist/config/loader.sync-conflict-20260307-175208-6PCZ3ZU.js.map +1 -0
  56. package/dist/config/schema.d.ts.sync-conflict-20260309-154654-6PCZ3ZU.map +1 -0
  57. package/dist/config/schema.sync-conflict-20260309-135703-6PCZ3ZU.js +214 -0
  58. package/dist/detect/frameworks.js.sync-conflict-20260306-123756-6PCZ3ZU.map +1 -0
  59. package/dist/detect/monorepo-patterns.js.sync-conflict-20260309-155400-6PCZ3ZU.map +1 -0
  60. package/dist/hooks/index.d.ts.sync-conflict-20260306-220901-6PCZ3ZU.map +1 -0
  61. package/dist/output/formatters.js.sync-conflict-20260306-134702-6PCZ3ZU.map +1 -0
  62. package/dist/output/formatters.sync-conflict-20260306-180804-6PCZ3ZU.js +867 -0
  63. package/dist/output/formatters.sync-conflict-20260307-131418-5SN2GZG.d.ts +29 -0
  64. package/dist/output/formatters.sync-conflict-20260307-131418-5SN2GZG.d.ts.map +1 -0
  65. package/dist/output/formatters.sync-conflict-20260307-131418-5SN2GZG.js +867 -0
  66. package/dist/output/formatters.sync-conflict-20260307-131418-5SN2GZG.js.map +1 -0
  67. package/dist/output/formatters.sync-conflict-20260307-143122-5SN2GZG.d.ts +29 -0
  68. package/dist/output/formatters.sync-conflict-20260307-143122-5SN2GZG.d.ts.map +1 -0
  69. package/dist/output/formatters.sync-conflict-20260307-143122-5SN2GZG.js +867 -0
  70. package/dist/output/formatters.sync-conflict-20260307-143122-5SN2GZG.js.map +1 -0
  71. package/dist/output/index.sync-conflict-20260309-222859-6PCZ3ZU.js +5 -0
  72. package/dist/output/reporters.d.sync-conflict-20260309-193820-6PCZ3ZU.ts +38 -0
  73. package/dist/output/reporters.d.ts.sync-conflict-20260306-193811-6PCZ3ZU.map +1 -0
  74. package/dist/output/reporters.sync-conflict-20260309-030558-6PCZ3ZU.js +182 -0
  75. package/dist/output/reports.d.ts.sync-conflict-20260307-172149-6PCZ3ZU.map +1 -0
  76. package/dist/output/reports.js.sync-conflict-20260305-161643-6PCZ3ZU.map +1 -0
  77. package/dist/output/reports.sync-conflict-20260305-211951-6PCZ3ZU.js +393 -0
  78. package/dist/output/visuals.d.ts +53 -0
  79. package/dist/output/visuals.d.ts.map +1 -0
  80. package/dist/output/visuals.js +194 -0
  81. package/dist/output/visuals.js.map +1 -0
  82. package/dist/services/drift-analysis.d.sync-conflict-20260306-151016-6PCZ3ZU.ts +194 -0
  83. package/dist/services/drift-analysis.d.ts.sync-conflict-20260307-175904-6PCZ3ZU.map +1 -0
  84. package/dist/services/drift-analysis.sync-conflict-20260309-133811-6PCZ3ZU.d.ts +194 -0
  85. package/dist/services/drift-analysis.sync-conflict-20260309-133811-6PCZ3ZU.d.ts.map +1 -0
  86. package/dist/services/drift-analysis.sync-conflict-20260309-133811-6PCZ3ZU.js +1022 -0
  87. package/dist/services/drift-analysis.sync-conflict-20260309-133811-6PCZ3ZU.js.map +1 -0
  88. package/dist/services/skill-export.d.ts.sync-conflict-20260309-171021-6PCZ3ZU.map +1 -0
  89. package/dist/services/skill-export.sync-conflict-20260309-144621-6PCZ3ZU.d.ts +109 -0
  90. package/dist/services/skill-export.sync-conflict-20260309-144621-6PCZ3ZU.d.ts.map +1 -0
  91. package/dist/services/skill-export.sync-conflict-20260309-144621-6PCZ3ZU.js +737 -0
  92. package/dist/services/skill-export.sync-conflict-20260309-144621-6PCZ3ZU.js.map +1 -0
  93. package/package.json +3 -3
@@ -0,0 +1,148 @@
1
+ /**
2
+ * buoy commands - Manage Claude Code slash commands
3
+ *
4
+ * Install Buoy's slash commands to ~/.claude/commands/
5
+ */
6
+ import { Command } from 'commander';
7
+ import chalk from 'chalk';
8
+ import { existsSync, mkdirSync, copyFileSync, readdirSync } from 'fs';
9
+ import { dirname, join, resolve } from 'path';
10
+ import { homedir } from 'os';
11
+ import { fileURLToPath } from 'url';
12
+ import { setJsonMode } from '../output/reporters.js';
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+ /**
16
+ * Install Buoy's Claude commands to ~/.claude/commands/
17
+ */
18
+ function installClaudeCommands(dryRun = false) {
19
+ const commandsDir = join(homedir(), '.claude', 'commands');
20
+ const assetsDir = resolve(__dirname, '..', '..', 'assets', 'commands');
21
+ const installed = [];
22
+ const alreadyExisted = [];
23
+ const skipped = [];
24
+ // Check if assets directory exists
25
+ if (!existsSync(assetsDir)) {
26
+ return { installed, alreadyExisted, skipped };
27
+ }
28
+ // Create commands directory if needed
29
+ if (!dryRun && !existsSync(commandsDir)) {
30
+ mkdirSync(commandsDir, { recursive: true });
31
+ }
32
+ // Copy each command file
33
+ const commandFiles = readdirSync(assetsDir).filter(f => f.endsWith('.md'));
34
+ for (const file of commandFiles) {
35
+ const srcPath = join(assetsDir, file);
36
+ const destPath = join(commandsDir, file);
37
+ if (existsSync(destPath)) {
38
+ alreadyExisted.push(file.replace('.md', ''));
39
+ }
40
+ else {
41
+ if (!dryRun) {
42
+ copyFileSync(srcPath, destPath);
43
+ }
44
+ installed.push(file.replace('.md', ''));
45
+ }
46
+ }
47
+ return { installed, alreadyExisted, skipped };
48
+ }
49
+ /**
50
+ * List available commands
51
+ */
52
+ function listAvailableCommands() {
53
+ const assetsDir = resolve(__dirname, '..', '..', 'assets', 'commands');
54
+ if (!existsSync(assetsDir)) {
55
+ return [];
56
+ }
57
+ return readdirSync(assetsDir)
58
+ .filter(f => f.endsWith('.md'))
59
+ .map(f => f.replace('.md', ''));
60
+ }
61
+ export function createCommandsCommand() {
62
+ const cmd = new Command('commands')
63
+ .description('Manage Claude Code slash commands');
64
+ // List available commands
65
+ cmd.command('list')
66
+ .description('List available Buoy slash commands')
67
+ .option('--json', 'Output as JSON')
68
+ .action((options) => {
69
+ if (options.json) {
70
+ setJsonMode(true);
71
+ }
72
+ const available = listAvailableCommands();
73
+ const commandsDir = join(homedir(), '.claude', 'commands');
74
+ if (options.json) {
75
+ const result = available.map(cmd => ({
76
+ name: cmd,
77
+ installed: existsSync(join(commandsDir, `${cmd}.md`)),
78
+ }));
79
+ console.log(JSON.stringify(result, null, 2));
80
+ return;
81
+ }
82
+ console.log('');
83
+ console.log(chalk.cyan.bold(' Available Buoy Commands'));
84
+ console.log('');
85
+ if (available.length === 0) {
86
+ console.log(chalk.dim(' No commands available'));
87
+ return;
88
+ }
89
+ for (const cmd of available) {
90
+ const isInstalled = existsSync(join(commandsDir, `${cmd}.md`));
91
+ const status = isInstalled
92
+ ? chalk.green('✓ installed')
93
+ : chalk.dim('not installed');
94
+ console.log(` /${cmd} ${status}`);
95
+ }
96
+ console.log('');
97
+ console.log(chalk.dim(' Run `buoy commands install` to install all commands'));
98
+ console.log('');
99
+ });
100
+ // Install commands
101
+ cmd.command('install')
102
+ .description('Install Buoy slash commands to ~/.claude/commands/')
103
+ .option('--dry-run', 'Show what would be installed')
104
+ .option('--json', 'Output as JSON')
105
+ .action((options) => {
106
+ if (options.json) {
107
+ setJsonMode(true);
108
+ }
109
+ const result = installClaudeCommands(options.dryRun);
110
+ if (options.json) {
111
+ console.log(JSON.stringify(result, null, 2));
112
+ return;
113
+ }
114
+ console.log('');
115
+ if (options.dryRun) {
116
+ console.log(chalk.cyan.bold(' Dry Run - Would install:'));
117
+ console.log('');
118
+ for (const cmd of result.installed) {
119
+ console.log(` ${chalk.green('+')} /${cmd}`);
120
+ }
121
+ for (const cmd of result.alreadyExisted) {
122
+ console.log(` ${chalk.dim('○')} /${cmd} (already exists)`);
123
+ }
124
+ }
125
+ else {
126
+ if (result.installed.length > 0) {
127
+ console.log(chalk.green.bold(' ✓ Installed slash commands:'));
128
+ console.log('');
129
+ for (const cmd of result.installed) {
130
+ console.log(` /${cmd}`);
131
+ }
132
+ }
133
+ if (result.alreadyExisted.length > 0) {
134
+ console.log('');
135
+ console.log(chalk.dim(` Already installed: ${result.alreadyExisted.map(c => `/${c}`).join(', ')}`));
136
+ }
137
+ if (result.installed.length === 0 && result.alreadyExisted.length > 0) {
138
+ console.log(chalk.dim(' All commands already installed'));
139
+ }
140
+ }
141
+ console.log('');
142
+ console.log(chalk.dim(` Commands installed to: ~/.claude/commands/`));
143
+ console.log(chalk.dim(' Restart Claude Code to use them'));
144
+ console.log('');
145
+ });
146
+ return cmd;
147
+ }
148
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * buoy show components - Find and explore components in the codebase
3
+ *
4
+ * Helps AI agents quickly find relevant components when building features.
5
+ *
6
+ * Examples:
7
+ * buoy show components "button" # Find button components
8
+ * buoy show components --prop "onClick" # Find components with onClick
9
+ * buoy show components --pattern "form" # Find form-related components
10
+ */
11
+ import { Command } from 'commander';
12
+ export declare function createComponentsQueryCommand(): Command;
13
+ //# sourceMappingURL=components-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-query.d.ts","sourceRoot":"","sources":["../../src/commands/components-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsKpC,wBAAgB,4BAA4B,IAAI,OAAO,CA+ItD"}
@@ -0,0 +1,263 @@
1
+ /**
2
+ * buoy show components - Find and explore components in the codebase
3
+ *
4
+ * Helps AI agents quickly find relevant components when building features.
5
+ *
6
+ * Examples:
7
+ * buoy show components "button" # Find button components
8
+ * buoy show components --prop "onClick" # Find components with onClick
9
+ * buoy show components --pattern "form" # Find form-related components
10
+ */
11
+ import { Command } from 'commander';
12
+ import chalk from 'chalk';
13
+ import { loadConfig, getConfigPath } from '../config/loader.js';
14
+ import { buildAutoConfig } from '../config/auto-detect.js';
15
+ import { ScanOrchestrator } from '../scan/orchestrator.js';
16
+ import { spinner, error, info, newline, header, keyValue, } from '../output/reporters.js';
17
+ /**
18
+ * Calculate fuzzy match score (0-100)
19
+ */
20
+ function fuzzyScore(query, target) {
21
+ const q = query.toLowerCase();
22
+ const t = target.toLowerCase();
23
+ // Exact match
24
+ if (q === t)
25
+ return 100;
26
+ // Contains match
27
+ if (t.includes(q)) {
28
+ const bonus = q.length / t.length * 50;
29
+ return 70 + bonus;
30
+ }
31
+ // Word match (query words appear in target)
32
+ const queryWords = q.split(/[-_\s]+/);
33
+ const targetWords = t.split(/[-_\s]+/);
34
+ const matchedWords = queryWords.filter(qw => targetWords.some(tw => tw.includes(qw) || qw.includes(tw)));
35
+ if (matchedWords.length > 0) {
36
+ return 50 + (matchedWords.length / queryWords.length * 30);
37
+ }
38
+ return 0;
39
+ }
40
+ /**
41
+ * Search components by name
42
+ */
43
+ function searchByName(components, query) {
44
+ const results = [];
45
+ for (const component of components) {
46
+ const score = fuzzyScore(query, component.name);
47
+ if (score >= 30) {
48
+ results.push({
49
+ component,
50
+ score,
51
+ matchType: score === 100 ? 'exact' : 'fuzzy',
52
+ });
53
+ }
54
+ }
55
+ return results.sort((a, b) => b.score - a.score);
56
+ }
57
+ /**
58
+ * Search components by prop name
59
+ */
60
+ function searchByProp(components, propName) {
61
+ const results = [];
62
+ const lowerProp = propName.toLowerCase();
63
+ for (const component of components) {
64
+ const props = component.props || [];
65
+ const matchingProp = props.find(p => p.name.toLowerCase().includes(lowerProp));
66
+ if (matchingProp) {
67
+ results.push({
68
+ component,
69
+ score: matchingProp.name.toLowerCase() === lowerProp ? 100 : 80,
70
+ matchType: 'prop',
71
+ });
72
+ }
73
+ }
74
+ return results.sort((a, b) => b.score - a.score);
75
+ }
76
+ /**
77
+ * Search components by pattern (checks name, props, and variants)
78
+ */
79
+ function searchByPattern(components, pattern) {
80
+ const results = [];
81
+ const lowerPattern = pattern.toLowerCase();
82
+ for (const component of components) {
83
+ let score = 0;
84
+ // Check name
85
+ const nameScore = fuzzyScore(pattern, component.name);
86
+ if (nameScore > 0)
87
+ score += nameScore * 0.5;
88
+ // Check props
89
+ const props = component.props || [];
90
+ const propMatch = props.some(p => p.name.toLowerCase().includes(lowerPattern) ||
91
+ (p.type && p.type.toLowerCase().includes(lowerPattern)));
92
+ if (propMatch)
93
+ score += 30;
94
+ // Check variants
95
+ const variants = component.variants || [];
96
+ const variantMatch = variants.some(v => v.name.toLowerCase().includes(lowerPattern));
97
+ if (variantMatch)
98
+ score += 20;
99
+ if (score >= 30) {
100
+ results.push({
101
+ component,
102
+ score: Math.min(100, score),
103
+ matchType: 'pattern',
104
+ });
105
+ }
106
+ }
107
+ return results.sort((a, b) => b.score - a.score);
108
+ }
109
+ /**
110
+ * Format component path for display
111
+ */
112
+ function getComponentPath(component) {
113
+ if ('path' in component.source) {
114
+ return component.source.path;
115
+ }
116
+ return 'unknown';
117
+ }
118
+ /**
119
+ * Format props for display
120
+ */
121
+ function formatProps(component) {
122
+ const props = component.props || [];
123
+ if (props.length === 0)
124
+ return chalk.dim('(no props)');
125
+ const propStrs = props.slice(0, 5).map(p => {
126
+ const required = p.required ? '*' : '';
127
+ const type = p.type ? chalk.dim(`: ${p.type}`) : '';
128
+ return `${p.name}${required}${type}`;
129
+ });
130
+ if (props.length > 5) {
131
+ propStrs.push(chalk.dim(`+${props.length - 5} more`));
132
+ }
133
+ return propStrs.join(', ');
134
+ }
135
+ export function createComponentsQueryCommand() {
136
+ return new Command('query')
137
+ .description('Find components by name, prop, or pattern')
138
+ .argument('[query]', 'Search query (component name or partial match)')
139
+ .option('--prop <propName>', 'Search by prop name (e.g., "onClick")')
140
+ .option('--pattern <pattern>', 'Search by pattern (checks name, props, variants)')
141
+ .option('-n, --limit <number>', 'Maximum results to show', '10')
142
+ .option('--json', 'Output as JSON')
143
+ .action(async (query, options) => {
144
+ const cwd = process.cwd();
145
+ // Need either query, prop, or pattern
146
+ if (!query && !options.prop && !options.pattern) {
147
+ error('Please provide a search query, --prop, or --pattern');
148
+ info('Examples:');
149
+ info(' buoy show components "button"');
150
+ info(' buoy show components --prop "onClick"');
151
+ info(' buoy show components --pattern "form"');
152
+ process.exit(1);
153
+ }
154
+ const spin = spinner('Scanning components...');
155
+ try {
156
+ // Load config
157
+ const configPath = getConfigPath();
158
+ let config;
159
+ if (configPath) {
160
+ const result = await loadConfig();
161
+ config = result.config;
162
+ }
163
+ else {
164
+ const autoResult = await buildAutoConfig(cwd);
165
+ config = autoResult.config;
166
+ }
167
+ // Scan for components
168
+ const orchestrator = new ScanOrchestrator(config, cwd);
169
+ const { components } = await orchestrator.scanComponents({});
170
+ if (components.length === 0) {
171
+ spin.stop();
172
+ error('No components found');
173
+ info('Run `buoy show all` to scan your codebase first');
174
+ process.exit(1);
175
+ }
176
+ spin.stop();
177
+ // Perform search
178
+ let results = [];
179
+ if (options.prop) {
180
+ results = searchByProp(components, options.prop);
181
+ }
182
+ else if (options.pattern) {
183
+ results = searchByPattern(components, options.pattern);
184
+ }
185
+ else if (query) {
186
+ results = searchByName(components, query);
187
+ }
188
+ // Apply limit
189
+ const limit = parseInt(options.limit, 10);
190
+ results = results.slice(0, limit);
191
+ // Output
192
+ if (options.json) {
193
+ console.log(JSON.stringify({
194
+ query: query || null,
195
+ prop: options.prop || null,
196
+ pattern: options.pattern || null,
197
+ results: results.map(r => ({
198
+ name: r.component.name,
199
+ path: getComponentPath(r.component),
200
+ props: r.component.props?.map(p => ({
201
+ name: p.name,
202
+ type: p.type,
203
+ required: p.required,
204
+ })),
205
+ variants: r.component.variants?.map(v => v.name),
206
+ score: Math.round(r.score),
207
+ matchType: r.matchType,
208
+ })),
209
+ totalComponents: components.length,
210
+ }, null, 2));
211
+ return;
212
+ }
213
+ // Human-readable output
214
+ if (results.length === 0) {
215
+ newline();
216
+ info('No matching components found');
217
+ newline();
218
+ if (query) {
219
+ info(`Try a different search term or use --pattern for broader search`);
220
+ }
221
+ return;
222
+ }
223
+ newline();
224
+ header(`Found ${results.length} component${results.length === 1 ? '' : 's'}`);
225
+ newline();
226
+ for (const result of results) {
227
+ const { component, score, matchType } = result;
228
+ // Score indicator
229
+ const scoreLabel = matchType === 'exact'
230
+ ? chalk.green('exact')
231
+ : matchType === 'prop'
232
+ ? chalk.cyan('prop match')
233
+ : matchType === 'pattern'
234
+ ? chalk.yellow('pattern')
235
+ : chalk.dim(`${Math.round(score)}%`);
236
+ console.log(` ${chalk.bold(component.name)} ${scoreLabel}`);
237
+ keyValue(' Path', getComponentPath(component));
238
+ keyValue(' Props', formatProps(component));
239
+ // Show variants if present
240
+ const variants = component.variants || [];
241
+ if (variants.length > 0) {
242
+ const variantNames = variants.slice(0, 4).map(v => v.name).join(', ');
243
+ const more = variants.length > 4 ? ` +${variants.length - 4} more` : '';
244
+ keyValue(' Variants', variantNames + more);
245
+ }
246
+ newline();
247
+ }
248
+ // Summary
249
+ console.log(chalk.dim(`─`.repeat(40)));
250
+ info(`${components.length} total components in project`);
251
+ if (results.length === limit) {
252
+ info(`Showing first ${limit} results. Use --limit to see more.`);
253
+ }
254
+ }
255
+ catch (err) {
256
+ spin.stop();
257
+ const message = err instanceof Error ? err.message : String(err);
258
+ error(`Component query failed: ${message}`);
259
+ process.exit(1);
260
+ }
261
+ });
262
+ }
263
+ //# sourceMappingURL=components-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-query.js","sourceRoot":"","sources":["../../src/commands/components-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * buoy components - Component discovery and inspection
3
+ *
4
+ * Commands for finding and exploring components in the codebase.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function createComponentsCommand(): Command;
8
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/commands/components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,uBAAuB,IAAI,OAAO,CAOjD"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * buoy components - Component discovery and inspection
3
+ *
4
+ * Commands for finding and exploring components in the codebase.
5
+ */
6
+ import { Command } from 'commander';
7
+ import { createComponentsQueryCommand } from './components-query.js';
8
+ export function createComponentsCommand() {
9
+ const cmd = new Command('components')
10
+ .description('Discover and inspect components');
11
+ cmd.addCommand(createComponentsQueryCommand());
12
+ return cmd;
13
+ }
14
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/commands/components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;SAClC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAElD,GAAG,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAE/C,OAAO,GAAG,CAAC;AACb,CAAC"}