@buoy-design/cli 0.1.13 → 0.1.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 (78) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/begin.d.ts.map +1 -1
  3. package/dist/commands/begin.js +18 -0
  4. package/dist/commands/begin.js.map +1 -1
  5. package/dist/commands/check.d.ts +10 -0
  6. package/dist/commands/check.d.ts.map +1 -1
  7. package/dist/commands/check.js +75 -1
  8. package/dist/commands/check.js.map +1 -1
  9. package/dist/commands/ci.d.ts.map +1 -1
  10. package/dist/commands/ci.js +29 -3
  11. package/dist/commands/ci.js.map +1 -1
  12. package/dist/commands/ci.logic.d.ts +8 -2
  13. package/dist/commands/ci.logic.d.ts.map +1 -1
  14. package/dist/commands/ci.logic.js +17 -3
  15. package/dist/commands/ci.logic.js.map +1 -1
  16. package/dist/commands/context.d.ts +9 -0
  17. package/dist/commands/context.d.ts.map +1 -0
  18. package/dist/commands/context.js +217 -0
  19. package/dist/commands/context.js.map +1 -0
  20. package/dist/commands/fix.d.ts +8 -0
  21. package/dist/commands/fix.d.ts.map +1 -0
  22. package/dist/commands/fix.js +224 -0
  23. package/dist/commands/fix.js.map +1 -0
  24. package/dist/commands/index.d.ts +3 -0
  25. package/dist/commands/index.d.ts.map +1 -1
  26. package/dist/commands/index.js +3 -0
  27. package/dist/commands/index.js.map +1 -1
  28. package/dist/commands/skill.d.ts +9 -0
  29. package/dist/commands/skill.d.ts.map +1 -0
  30. package/dist/commands/skill.js +190 -0
  31. package/dist/commands/skill.js.map +1 -0
  32. package/dist/commands/tokens.d.ts.map +1 -1
  33. package/dist/commands/tokens.js +169 -2
  34. package/dist/commands/tokens.js.map +1 -1
  35. package/dist/fix/applier.d.ts +25 -0
  36. package/dist/fix/applier.d.ts.map +1 -0
  37. package/dist/fix/applier.js +211 -0
  38. package/dist/fix/applier.js.map +1 -0
  39. package/dist/fix/index.d.ts +10 -0
  40. package/dist/fix/index.d.ts.map +1 -0
  41. package/dist/fix/index.js +8 -0
  42. package/dist/fix/index.js.map +1 -0
  43. package/dist/fix/safety.d.ts +30 -0
  44. package/dist/fix/safety.d.ts.map +1 -0
  45. package/dist/fix/safety.js +168 -0
  46. package/dist/fix/safety.js.map +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +59 -13
  49. package/dist/index.js.map +1 -1
  50. package/dist/output/fix-formatters.d.ts +36 -0
  51. package/dist/output/fix-formatters.d.ts.map +1 -0
  52. package/dist/output/fix-formatters.js +247 -0
  53. package/dist/output/fix-formatters.js.map +1 -0
  54. package/dist/output/index.d.ts +1 -0
  55. package/dist/output/index.d.ts.map +1 -1
  56. package/dist/output/index.js +1 -0
  57. package/dist/output/index.js.map +1 -1
  58. package/dist/output/reports.d.ts +154 -0
  59. package/dist/output/reports.d.ts.map +1 -0
  60. package/dist/output/reports.js +392 -0
  61. package/dist/output/reports.js.map +1 -0
  62. package/dist/services/context-generator.d.ts +43 -0
  63. package/dist/services/context-generator.d.ts.map +1 -0
  64. package/dist/services/context-generator.js +252 -0
  65. package/dist/services/context-generator.js.map +1 -0
  66. package/dist/services/skill-export.d.ts +96 -0
  67. package/dist/services/skill-export.d.ts.map +1 -0
  68. package/dist/services/skill-export.js +566 -0
  69. package/dist/services/skill-export.js.map +1 -0
  70. package/dist/wizard/ai-guardrails-generator.d.ts +20 -0
  71. package/dist/wizard/ai-guardrails-generator.d.ts.map +1 -0
  72. package/dist/wizard/ai-guardrails-generator.js +259 -0
  73. package/dist/wizard/ai-guardrails-generator.js.map +1 -0
  74. package/dist/wizard/index.d.ts +1 -0
  75. package/dist/wizard/index.d.ts.map +1 -1
  76. package/dist/wizard/index.js +1 -0
  77. package/dist/wizard/index.js.map +1 -1
  78. package/package.json +15 -15
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Context Command
3
+ *
4
+ * Generates design system context for CLAUDE.md files.
5
+ * Helps AI agents understand and follow design system rules.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { readFile, writeFile, appendFile } from 'node:fs/promises';
9
+ import { existsSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { loadConfig, getConfigPath } from '../config/loader.js';
12
+ import { buildAutoConfig } from '../config/auto-detect.js';
13
+ import { spinner, success, error, warning, info, setJsonMode, } from '../output/reporters.js';
14
+ import { ScanOrchestrator } from '../scan/orchestrator.js';
15
+ import { generateContext, } from '../services/context-generator.js';
16
+ export function createContextCommand() {
17
+ const cmd = new Command('context')
18
+ .description('Generate design system context for CLAUDE.md')
19
+ .option('-o, --output <path>', 'Output file path (default: stdout)')
20
+ .option('--append', 'Append to CLAUDE.md in current directory')
21
+ .option('-d, --detail <level>', 'Detail level: minimal, standard, comprehensive', 'standard')
22
+ .option('--no-tokens', 'Exclude token information')
23
+ .option('--no-components', 'Exclude component information')
24
+ .option('--no-validation', 'Exclude validation commands')
25
+ .option('--json', 'Output as JSON with stats')
26
+ .action(async (options) => {
27
+ if (options.json) {
28
+ setJsonMode(true);
29
+ }
30
+ const spin = spinner('Loading configuration...');
31
+ try {
32
+ // Load or auto-detect config
33
+ const existingConfigPath = getConfigPath();
34
+ let config;
35
+ if (existingConfigPath) {
36
+ const result = await loadConfig();
37
+ config = result.config;
38
+ }
39
+ else {
40
+ spin.text = 'Auto-detecting project setup...';
41
+ const autoResult = await buildAutoConfig(process.cwd());
42
+ config = autoResult.config;
43
+ }
44
+ // Scan for tokens and components
45
+ spin.text = 'Scanning design system...';
46
+ const orchestrator = new ScanOrchestrator(config, process.cwd());
47
+ const scanResult = await orchestrator.scan();
48
+ // Run drift analysis to get anti-patterns
49
+ spin.text = 'Analyzing drift...';
50
+ const { SemanticDiffEngine } = await import('@buoy-design/core/analysis');
51
+ const engine = new SemanticDiffEngine();
52
+ const diffResult = engine.analyzeComponents(scanResult.components, {
53
+ availableTokens: scanResult.tokens,
54
+ });
55
+ // Get project name
56
+ const projectName = await getProjectName(process.cwd());
57
+ // Prepare context data
58
+ const contextData = {
59
+ tokens: scanResult.tokens,
60
+ components: scanResult.components,
61
+ drifts: diffResult.drifts,
62
+ projectName,
63
+ };
64
+ // Validate detail level
65
+ const detailLevel = validateDetailLevel(options.detail);
66
+ // Generate context
67
+ spin.text = 'Generating context...';
68
+ const result = generateContext(contextData, {
69
+ detailLevel,
70
+ includeTokens: options.tokens,
71
+ includeComponents: options.components,
72
+ includeValidation: options.validation,
73
+ });
74
+ spin.stop();
75
+ // Handle output
76
+ if (options.json) {
77
+ console.log(JSON.stringify({
78
+ content: result.content,
79
+ stats: result.stats,
80
+ detailLevel,
81
+ }, null, 2));
82
+ return;
83
+ }
84
+ if (options.append) {
85
+ await handleAppend(result.content, process.cwd(), result.stats);
86
+ return;
87
+ }
88
+ if (options.output) {
89
+ await writeFile(options.output, result.content, 'utf-8');
90
+ success(`Context written to ${options.output}`);
91
+ showStats(result.stats);
92
+ return;
93
+ }
94
+ // Default: stdout
95
+ console.log(result.content);
96
+ // No Dead Ends: Show guidance after output
97
+ if (result.stats.tokenCount === 0 && result.stats.componentCount === 0) {
98
+ console.error('');
99
+ console.error('Note: Generated minimal context (no tokens or components found).');
100
+ console.error(' Run `buoy scan` to see what can be detected.');
101
+ console.error(' Run `buoy tokens` to extract tokens from hardcoded values.');
102
+ }
103
+ }
104
+ catch (err) {
105
+ spin.stop();
106
+ error(err instanceof Error ? err.message : 'Context generation failed');
107
+ process.exit(1);
108
+ }
109
+ });
110
+ return cmd;
111
+ }
112
+ /**
113
+ * Get project name from package.json or directory name
114
+ */
115
+ async function getProjectName(cwd) {
116
+ const packageJsonPath = join(cwd, 'package.json');
117
+ if (existsSync(packageJsonPath)) {
118
+ try {
119
+ const content = await readFile(packageJsonPath, 'utf-8');
120
+ const pkg = JSON.parse(content);
121
+ if (pkg.name) {
122
+ // Clean up package name (remove scope, capitalize)
123
+ const name = pkg.name.replace(/^@[^/]+\//, '');
124
+ return name
125
+ .split('-')
126
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
127
+ .join(' ');
128
+ }
129
+ }
130
+ catch {
131
+ // Ignore parse errors
132
+ }
133
+ }
134
+ // Fall back to directory name
135
+ const parts = cwd.split('/');
136
+ const dirName = parts[parts.length - 1] || 'Project';
137
+ return dirName
138
+ .split('-')
139
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
140
+ .join(' ');
141
+ }
142
+ /**
143
+ * Validate and normalize detail level
144
+ */
145
+ function validateDetailLevel(level) {
146
+ const normalized = level.toLowerCase();
147
+ if (normalized === 'minimal' || normalized === 'standard' || normalized === 'comprehensive') {
148
+ return normalized;
149
+ }
150
+ return 'standard';
151
+ }
152
+ /**
153
+ * Handle append mode - append to CLAUDE.md
154
+ */
155
+ async function handleAppend(content, cwd, stats) {
156
+ const claudeMdPath = join(cwd, 'CLAUDE.md');
157
+ if (existsSync(claudeMdPath)) {
158
+ // Check if design system section already exists
159
+ const existing = await readFile(claudeMdPath, 'utf-8');
160
+ if (existing.includes('## Design System Rules')) {
161
+ // No Dead Ends: Explain what we found and give options
162
+ warning('CLAUDE.md already has a Design System Rules section.');
163
+ console.log('');
164
+ console.log(' What was scanned:');
165
+ if (stats) {
166
+ console.log(` • ${stats.tokenCount} tokens found`);
167
+ console.log(` • ${stats.componentCount} components found`);
168
+ if (stats.antiPatternCount > 0) {
169
+ console.log(` • ${stats.antiPatternCount} anti-patterns detected`);
170
+ }
171
+ }
172
+ console.log('');
173
+ console.log(' Options:');
174
+ console.log(' • Remove existing section manually, then re-run');
175
+ console.log(' • Use --output context.md to write to a separate file');
176
+ console.log(' • Pipe to clipboard: buoy context | pbcopy (macOS)');
177
+ console.log('');
178
+ return;
179
+ }
180
+ // Append with separator
181
+ const toAppend = '\n\n---\n\n' + content;
182
+ await appendFile(claudeMdPath, toAppend, 'utf-8');
183
+ success('Design system context appended to CLAUDE.md');
184
+ if (stats) {
185
+ showStats(stats);
186
+ }
187
+ }
188
+ else {
189
+ // Create new CLAUDE.md
190
+ const header = `# Project Instructions
191
+
192
+ This file provides guidance to AI tools working with this codebase.
193
+
194
+ `;
195
+ await writeFile(claudeMdPath, header + content, 'utf-8');
196
+ success('Created CLAUDE.md with design system context');
197
+ if (stats) {
198
+ showStats(stats);
199
+ }
200
+ }
201
+ // No Dead Ends: Suggest next steps
202
+ console.log('');
203
+ info('Next steps:');
204
+ console.log(' • AI tools will now see these rules in context');
205
+ console.log(' • Run `buoy skill export` to create detailed skill files');
206
+ console.log(' • Update context when design system changes');
207
+ }
208
+ /**
209
+ * Show stats after generation
210
+ */
211
+ function showStats(stats) {
212
+ info(`Included: ${stats.tokenCount} tokens, ${stats.componentCount} components`);
213
+ if (stats.antiPatternCount > 0) {
214
+ info(`Found ${stats.antiPatternCount} anti-patterns from drift analysis`);
215
+ }
216
+ }
217
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Fix Command
3
+ *
4
+ * Suggests and applies fixes for hardcoded values by replacing them with design tokens.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function createFixCommand(): Command;
8
+ //# sourceMappingURL=fix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,wBAAgB,gBAAgB,IAAI,OAAO,CAyL1C"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Fix Command
3
+ *
4
+ * Suggests and applies fixes for hardcoded values by replacing them with design tokens.
5
+ */
6
+ import { Command } from 'commander';
7
+ import { loadConfig, getConfigPath } from '../config/loader.js';
8
+ import { buildAutoConfig } from '../config/auto-detect.js';
9
+ import { spinner, success, error, warning, setJsonMode, } from '../output/reporters.js';
10
+ import { formatFixPreview, formatFixDiff, formatFixResult, formatSafetyCheck, formatFixesJson, } from '../output/fix-formatters.js';
11
+ import { ScanOrchestrator } from '../scan/orchestrator.js';
12
+ import { applyFixes, runSafetyChecks, validateFixTargets } from '../fix/index.js';
13
+ import { generateFixes, } from '@buoy-design/core';
14
+ export function createFixCommand() {
15
+ const cmd = new Command('fix')
16
+ .description('Suggest and apply fixes for design drift issues')
17
+ .option('--apply', 'Apply fixes to source files')
18
+ .option('--dry-run', 'Show detailed diff without applying changes')
19
+ .option('-c, --confidence <level>', 'Minimum confidence level (high, medium, low)', 'high')
20
+ .option('-t, --type <types>', 'Fix types to include (comma-separated: hardcoded-color,hardcoded-spacing)')
21
+ .option('-f, --file <patterns>', 'File glob patterns to include (comma-separated)')
22
+ .option('--exclude <patterns>', 'File glob patterns to exclude (comma-separated)')
23
+ .option('--backup', 'Create .bak backup files before modifying')
24
+ .option('--json', 'Output as JSON')
25
+ .option('--force', 'Skip safety checks')
26
+ .action(async (options) => {
27
+ if (options.json) {
28
+ setJsonMode(true);
29
+ }
30
+ const spin = spinner('Loading configuration...');
31
+ try {
32
+ // Load or auto-detect config
33
+ const existingConfigPath = getConfigPath();
34
+ let config;
35
+ if (existingConfigPath) {
36
+ const result = await loadConfig();
37
+ config = result.config;
38
+ }
39
+ else {
40
+ spin.text = 'Auto-detecting project setup...';
41
+ const autoResult = await buildAutoConfig(process.cwd());
42
+ config = autoResult.config;
43
+ }
44
+ // Run scan to get drift signals and tokens
45
+ spin.text = 'Scanning for drift signals...';
46
+ const orchestrator = new ScanOrchestrator(config, process.cwd());
47
+ const scanResult = await orchestrator.scan();
48
+ // Get tokens from scan
49
+ const tokens = scanResult.tokens || [];
50
+ if (tokens.length === 0) {
51
+ spin.stop();
52
+ // No Dead Ends: Show what we found and guide next steps
53
+ console.log('');
54
+ warning('No design tokens found to match against');
55
+ console.log('');
56
+ console.log(' But here\'s what I found:');
57
+ if (scanResult.components.length > 0) {
58
+ console.log(` • ${scanResult.components.length} components scanned`);
59
+ }
60
+ const frameworks = config.sources ? Object.keys(config.sources).filter(k => config.sources[k]?.enabled) : [];
61
+ if (frameworks.length > 0) {
62
+ console.log(` • Frameworks: ${frameworks.join(', ')}`);
63
+ }
64
+ console.log('');
65
+ console.log(' Next steps:');
66
+ console.log(' • Run `buoy tokens` to extract tokens from hardcoded values');
67
+ console.log(' • Or create a tokens file (design-tokens.json)');
68
+ console.log(' • Run `buoy scan` to see full analysis');
69
+ console.log('');
70
+ return;
71
+ }
72
+ // Run drift analysis to get hardcoded value signals
73
+ spin.text = 'Analyzing for hardcoded values...';
74
+ const { SemanticDiffEngine } = await import('@buoy-design/core/analysis');
75
+ const engine = new SemanticDiffEngine();
76
+ const components = scanResult.components || [];
77
+ // Pass availableTokens to get token suggestions for hardcoded values
78
+ const diffResult = engine.analyzeComponents(components, {
79
+ availableTokens: tokens,
80
+ });
81
+ // Get drift signals (hardcoded values specifically)
82
+ const driftSignals = diffResult.drifts.filter((d) => d.type.startsWith('hardcoded-'));
83
+ if (driftSignals.length === 0) {
84
+ spin.stop();
85
+ // No Dead Ends: Celebrate success and show what was checked
86
+ console.log('');
87
+ success('No hardcoded values found - your code is clean!');
88
+ console.log('');
89
+ console.log(' What was checked:');
90
+ console.log(` • ${components.length} components scanned`);
91
+ console.log(` • ${tokens.length} tokens available for matching`);
92
+ const otherDrifts = diffResult.drifts.filter(d => !d.type.startsWith('hardcoded-'));
93
+ if (otherDrifts.length > 0) {
94
+ console.log('');
95
+ console.log(` Note: ${otherDrifts.length} other drift signals found (naming, etc.)`);
96
+ console.log(' Run `buoy drift check` for full analysis');
97
+ }
98
+ console.log('');
99
+ return;
100
+ }
101
+ // Parse options
102
+ const minConfidence = parseConfidenceLevel(options.confidence);
103
+ const includeTypes = options.type
104
+ ? options.type.split(',').map((t) => t.trim())
105
+ : undefined;
106
+ const includeFiles = options.file
107
+ ? options.file.split(',').map((f) => f.trim())
108
+ : [];
109
+ const excludeFiles = options.exclude
110
+ ? options.exclude.split(',').map((f) => f.trim())
111
+ : [];
112
+ // Generate fixes
113
+ spin.text = 'Generating fix suggestions...';
114
+ const fixes = generateFixes(driftSignals, tokens, {
115
+ types: includeTypes,
116
+ minConfidence,
117
+ includeFiles,
118
+ excludeFiles,
119
+ });
120
+ spin.stop();
121
+ if (fixes.length === 0) {
122
+ // No Dead Ends: Explain what didn't match and suggest alternatives
123
+ console.log('');
124
+ warning('No fixable issues match your criteria');
125
+ console.log('');
126
+ console.log(` Found ${driftSignals.length} hardcoded values, but:`);
127
+ if (minConfidence === 'high') {
128
+ console.log(' • No high-confidence fixes available');
129
+ console.log(' • Try: --confidence medium or --confidence low');
130
+ }
131
+ if (includeTypes?.length) {
132
+ console.log(` • Types filter: ${includeTypes.join(', ')}`);
133
+ console.log(' • Try: Remove --type filter to see all issues');
134
+ }
135
+ if (includeFiles.length > 0) {
136
+ console.log(` • File filter: ${includeFiles.join(', ')}`);
137
+ console.log(' • Try: Remove --file filter to see all files');
138
+ }
139
+ console.log('');
140
+ console.log(' Or run `buoy fix --dry-run` without filters to preview all fixes');
141
+ console.log('');
142
+ return;
143
+ }
144
+ // Validate fix targets
145
+ const { valid, invalid } = validateFixTargets(fixes);
146
+ if (invalid.length > 0) {
147
+ warning(`${invalid.length} fixes have invalid targets and will be skipped`);
148
+ }
149
+ // Output based on mode
150
+ if (options.json) {
151
+ console.log(formatFixesJson(valid));
152
+ return;
153
+ }
154
+ if (options.apply) {
155
+ // Apply mode: actually modify files
156
+ await handleApplyMode(valid, options);
157
+ }
158
+ else if (options.dryRun) {
159
+ // Dry-run mode: show detailed diff
160
+ console.log(formatFixDiff(valid));
161
+ }
162
+ else {
163
+ // Default preview mode
164
+ console.log(formatFixPreview(valid));
165
+ }
166
+ }
167
+ catch (err) {
168
+ spin.stop();
169
+ error(err instanceof Error ? err.message : 'Fix command failed');
170
+ process.exit(1);
171
+ }
172
+ });
173
+ return cmd;
174
+ }
175
+ /**
176
+ * Handle apply mode - run safety checks and apply fixes
177
+ */
178
+ async function handleApplyMode(fixes, options) {
179
+ // Run safety checks unless forced
180
+ if (!options.force) {
181
+ const safetyResult = runSafetyChecks(fixes);
182
+ console.log(formatSafetyCheck(safetyResult));
183
+ if (!safetyResult.safe) {
184
+ error('Safety checks failed. Use --force to override.');
185
+ process.exit(1);
186
+ }
187
+ if (safetyResult.warnings.length > 0) {
188
+ console.log('');
189
+ warning('Proceeding despite warnings...');
190
+ console.log('');
191
+ }
192
+ }
193
+ // Apply fixes
194
+ const spin = spinner('Applying fixes...');
195
+ const minConfidence = parseConfidenceLevel(options.confidence || 'high');
196
+ try {
197
+ const result = await applyFixes(fixes, {
198
+ dryRun: false,
199
+ backup: options.backup,
200
+ minConfidence,
201
+ });
202
+ spin.stop();
203
+ console.log(formatFixResult(result));
204
+ if (result.failed > 0) {
205
+ process.exit(1);
206
+ }
207
+ }
208
+ catch (err) {
209
+ spin.stop();
210
+ error(err instanceof Error ? err.message : 'Failed to apply fixes');
211
+ process.exit(1);
212
+ }
213
+ }
214
+ /**
215
+ * Parse confidence level from string
216
+ */
217
+ function parseConfidenceLevel(level) {
218
+ const normalized = level.toLowerCase();
219
+ if (normalized === 'high' || normalized === 'medium' || normalized === 'low') {
220
+ return normalized;
221
+ }
222
+ return 'high';
223
+ }
224
+ //# sourceMappingURL=fix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,aAAa,GAKd,MAAM,mBAAmB,CAAC;AAG3B,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;SAC3B,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,SAAS,EAAE,6BAA6B,CAAC;SAChD,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CACL,0BAA0B,EAC1B,8CAA8C,EAC9C,MAAM,CACP;SACA,MAAM,CACL,oBAAoB,EACpB,2EAA2E,CAC5E;SACA,MAAM,CAAC,uBAAuB,EAAE,iDAAiD,CAAC;SAClF,MAAM,CAAC,sBAAsB,EAAE,iDAAiD,CAAC;SACjF,MAAM,CAAC,UAAU,EAAE,2CAA2C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,SAAS,EAAE,oBAAoB,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,kBAAkB,GAAG,aAAa,EAAE,CAAC;YAC3C,IAAI,MAAkB,CAAC;YAEvB,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;gBAClC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;gBAC9C,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAC7B,CAAC;YAED,2CAA2C;YAC3C,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;YAC5C,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;YAE7C,uBAAuB;YACvB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;YAEvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,wDAAwD;gBACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,yCAAyC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gBAC3C,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,MAAM,qBAAqB,CAAC,CAAC;gBAC1E,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzE,MAAM,CAAC,OAAO,CAAC,CAAgC,CAAC,EAAE,OAAO,CAC1D,CAAC,CAAC,CAAC,EAAE,CAAC;gBACP,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;gBAC/E,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;YAChD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;YAE/C,qEAAqE;YACrE,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE;gBACtD,eAAe,EAAE,MAAuB;aACzC,CAAC,CAAC;YAEH,oDAAoD;YACpD,MAAM,YAAY,GAAkB,UAAU,CAAC,MAAM,CAAC,MAAM,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CACvC,CAAC;YAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,4DAA4D;gBAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,iDAAiD,CAAC,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,MAAM,qBAAqB,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,gCAAgC,CAAC,CAAC;gBACpE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,MAAM,2CAA2C,CAAC,CAAC;oBACtF,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,gBAAgB;YAChB,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI;gBAC/B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI;gBAC/B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtD,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO;gBAClC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,CAAC,CAAC,EAAE,CAAC;YAEP,iBAAiB;YACjB,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;YAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,YAA6B,EAAE,MAAuB,EAAE;gBAClF,KAAK,EAAE,YAAY;gBACnB,aAAa;gBACb,YAAY;gBACZ,YAAY;aACb,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,mEAAmE;gBACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,uCAAuC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,WAAW,YAAY,CAAC,MAAM,yBAAyB,CAAC,CAAC;gBACrE,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;oBACxD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,uBAAuB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9D,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;gBACnE,CAAC;gBACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC7D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAClE,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;gBAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,uBAAuB;YACvB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,iDAAiD,CAAC,CAAC;YAC9E,CAAC;YAED,uBAAuB;YACvB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,oCAAoC;gBACpC,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,mCAAmC;gBACnC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,uBAAuB;gBACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,KAAY,EACZ,OAAmE;IAEnE,kCAAkC;IAClC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,gCAAgC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;IAEzE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE;YACrC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QAC7E,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -15,6 +15,9 @@ export { createGraphCommand } from "./graph.js";
15
15
  export { createImportCommand } from "./import.js";
16
16
  export { createHistoryCommand } from "./history.js";
17
17
  export { createBeginCommand } from "./begin.js";
18
+ export { createSkillCommand } from "./skill.js";
19
+ export { createFixCommand } from "./fix.js";
20
+ export { createContextCommand } from "./context.js";
18
21
  export { createLoginCommand } from "./login.js";
19
22
  export { createLogoutCommand } from "./logout.js";
20
23
  export { createWhoamiCommand } from "./whoami.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -15,6 +15,9 @@ export { createGraphCommand } from "./graph.js";
15
15
  export { createImportCommand } from "./import.js";
16
16
  export { createHistoryCommand } from "./history.js";
17
17
  export { createBeginCommand } from "./begin.js";
18
+ export { createSkillCommand } from "./skill.js";
19
+ export { createFixCommand } from "./fix.js";
20
+ export { createContextCommand } from "./context.js";
18
21
  // Cloud commands
19
22
  export { createLoginCommand } from "./login.js";
20
23
  export { createLogoutCommand } from "./logout.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,iBAAiB;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,iBAAiB;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * buoy skill - Generate and manage design system skills for AI agents
3
+ *
4
+ * Exports tokens, components, patterns, and anti-patterns as markdown files
5
+ * optimized for progressive disclosure in AI agent workflows.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare function createSkillCommand(): Command;
9
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,kBAAkB,IAAI,OAAO,CAQ5C"}