@buoy-design/cli 0.1.30 → 0.2.0
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.
- package/assets/commands/contribution-loop.md +195 -0
- package/dist/bin.js +0 -0
- package/dist/cloud/config.d.ts +8 -0
- package/dist/cloud/config.d.ts.map +1 -1
- package/dist/cloud/config.js +10 -0
- package/dist/cloud/config.js.map +1 -1
- package/dist/cloud/feature-gate.d.ts +30 -0
- package/dist/cloud/feature-gate.d.ts.map +1 -0
- package/dist/cloud/feature-gate.js +138 -0
- package/dist/cloud/feature-gate.js.map +1 -0
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +1 -0
- package/dist/cloud/index.js.map +1 -1
- package/dist/commands/anchor.js +1 -1
- package/dist/commands/anchor.js.map +1 -1
- package/dist/commands/begin.d.ts.map +1 -1
- package/dist/commands/begin.js +118 -5
- package/dist/commands/begin.js.map +1 -1
- package/dist/commands/billing.d.ts +1 -1
- package/dist/commands/billing.js +22 -18
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/bot.d.ts +9 -0
- package/dist/commands/bot.d.ts.map +1 -0
- package/dist/commands/bot.js +258 -0
- package/dist/commands/bot.js.map +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +16 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/cloud.d.ts +15 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +36 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/commands.d.ts +8 -0
- package/dist/commands/commands.d.ts.map +1 -0
- package/dist/commands/commands.js +148 -0
- package/dist/commands/commands.js.map +1 -0
- package/dist/commands/components-query.d.ts +13 -0
- package/dist/commands/components-query.d.ts.map +1 -0
- package/dist/commands/components-query.js +263 -0
- package/dist/commands/components-query.js.map +1 -0
- package/dist/commands/components.d.ts +8 -0
- package/dist/commands/components.d.ts.map +1 -0
- package/dist/commands/components.js +14 -0
- package/dist/commands/components.js.map +1 -0
- package/dist/commands/dock.d.ts +13 -0
- package/dist/commands/dock.d.ts.map +1 -1
- package/dist/commands/dock.js +594 -832
- package/dist/commands/dock.js.map +1 -1
- package/dist/commands/drift.d.ts.map +1 -1
- package/dist/commands/drift.js +4 -13
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/fix.js +1 -1
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/github.d.ts.map +1 -1
- package/dist/commands/github.js +8 -6
- package/dist/commands/github.js.map +1 -1
- package/dist/commands/history.js +2 -2
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/import.js +1 -1
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/index.d.ts +2 -22
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -23
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/learn.d.ts +9 -0
- package/dist/commands/learn.d.ts.map +1 -0
- package/dist/commands/learn.js +244 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/link.js +2 -2
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +12 -3
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +64 -1
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/plans.d.ts +9 -0
- package/dist/commands/plans.d.ts.map +1 -0
- package/dist/commands/plans.js +140 -0
- package/dist/commands/plans.js.map +1 -0
- package/dist/commands/ship.d.ts +14 -0
- package/dist/commands/ship.d.ts.map +1 -0
- package/dist/commands/ship.js +342 -0
- package/dist/commands/ship.js.map +1 -0
- package/dist/commands/show.d.ts +3 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +340 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +13 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.js +1 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tokens-lookup.d.ts +14 -0
- package/dist/commands/tokens-lookup.d.ts.map +1 -0
- package/dist/commands/tokens-lookup.js +300 -0
- package/dist/commands/tokens-lookup.js.map +1 -0
- package/dist/commands/tokens.d.ts.map +1 -1
- package/dist/commands/tokens.js +6 -1
- package/dist/commands/tokens.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +60 -3
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/schema.d.ts +132 -132
- package/dist/fix/applier.js +1 -1
- package/dist/fix/applier.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +31 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -43
- package/dist/index.js.map +1 -1
- package/dist/insights/project-insights.d.ts.map +1 -1
- package/dist/insights/project-insights.js +0 -8
- package/dist/insights/project-insights.js.map +1 -1
- package/dist/output/fix-formatters.d.ts.map +1 -1
- package/dist/output/fix-formatters.js +10 -2
- package/dist/output/fix-formatters.js.map +1 -1
- package/dist/services/context-generator.js +2 -2
- package/dist/services/context-generator.js.map +1 -1
- package/dist/services/skill-export.d.ts.map +1 -1
- package/dist/services/skill-export.js +39 -4
- package/dist/services/skill-export.js.map +1 -1
- package/dist/wizard/ai-guardrails-generator.js +1 -1
- package/package.json +16 -15
- package/LICENSE +0 -21
- package/dist/commands/explain.d.ts +0 -3
- package/dist/commands/explain.js +0 -224
- package/dist/commands/explain.js.map +0 -1
- package/dist/explain/agents.d.ts +0 -31
- package/dist/explain/agents.d.ts.map +0 -1
- package/dist/explain/agents.js +0 -507
- package/dist/explain/agents.js.map +0 -1
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buoy bot - Manage PR bot integrations
|
|
3
|
+
*
|
|
4
|
+
* buoy bot github - GitHub App integration
|
|
5
|
+
* buoy bot gitlab - GitLab integration (coming soon)
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import open from 'open';
|
|
10
|
+
import { isLoggedIn, getApiEndpoint, listGitHubInstallations, revokeGitHubInstallation, getGitHubInstallUrl, requireFeature, } from '../cloud/index.js';
|
|
11
|
+
import { spinner, success, error, info, warning, keyValue, newline, header, } from '../output/reporters.js';
|
|
12
|
+
export function createBotCommand() {
|
|
13
|
+
const cmd = new Command('bot');
|
|
14
|
+
cmd
|
|
15
|
+
.description('Manage PR bot integrations')
|
|
16
|
+
.addCommand(createGitHubCommand())
|
|
17
|
+
.addCommand(createGitLabCommand());
|
|
18
|
+
return cmd;
|
|
19
|
+
}
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// GitHub
|
|
22
|
+
// ============================================================================
|
|
23
|
+
function createGitHubCommand() {
|
|
24
|
+
const cmd = new Command('github');
|
|
25
|
+
cmd
|
|
26
|
+
.description('GitHub App integration')
|
|
27
|
+
.addCommand(createGitHubStatusCommand())
|
|
28
|
+
.addCommand(createGitHubConnectCommand())
|
|
29
|
+
.addCommand(createGitHubDisconnectCommand());
|
|
30
|
+
// Default action shows status
|
|
31
|
+
cmd.action(async () => {
|
|
32
|
+
cmd.commands.find(c => c.name() === 'status')?.parse([], { from: 'user' });
|
|
33
|
+
});
|
|
34
|
+
return cmd;
|
|
35
|
+
}
|
|
36
|
+
function createGitHubStatusCommand() {
|
|
37
|
+
return new Command('status')
|
|
38
|
+
.description('Show GitHub integration status')
|
|
39
|
+
.option('--json', 'Output as JSON')
|
|
40
|
+
.action(async (options) => {
|
|
41
|
+
if (!isLoggedIn()) {
|
|
42
|
+
if (options.json) {
|
|
43
|
+
console.log(JSON.stringify({ error: 'Not logged in' }));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
error('Not logged in');
|
|
47
|
+
info('Run `buoy login` to sign in');
|
|
48
|
+
}
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const spin = spinner('Checking GitHub integration...').start();
|
|
52
|
+
try {
|
|
53
|
+
const result = await listGitHubInstallations();
|
|
54
|
+
spin.stop();
|
|
55
|
+
if (!result.ok) {
|
|
56
|
+
if (options.json) {
|
|
57
|
+
console.log(JSON.stringify({ error: result.error }));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
error(result.error || 'Failed to get GitHub status');
|
|
61
|
+
}
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
const installations = result.data?.installations || [];
|
|
65
|
+
if (options.json) {
|
|
66
|
+
console.log(JSON.stringify({ installations }, null, 2));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
header('GitHub Bot Integration');
|
|
70
|
+
newline();
|
|
71
|
+
if (installations.length === 0) {
|
|
72
|
+
info('No GitHub App installed');
|
|
73
|
+
newline();
|
|
74
|
+
info('Run `buoy bot github connect` to install the Buoy GitHub App');
|
|
75
|
+
info('This enables:');
|
|
76
|
+
info(' - PR comments with drift analysis');
|
|
77
|
+
info(' - Check Runs for CI integration');
|
|
78
|
+
info(' - Automatic scanning on push');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
for (const install of installations) {
|
|
82
|
+
const statusIcon = install.suspended ? chalk.red('suspended') : chalk.green('active');
|
|
83
|
+
console.log(`${chalk.bold(install.accountLogin)} (${install.accountType})`);
|
|
84
|
+
keyValue(' Status', statusIcon);
|
|
85
|
+
keyValue(' Repositories', install.repositorySelection === 'all' ? 'All' : 'Selected');
|
|
86
|
+
keyValue(' Installed', new Date(install.createdAt).toLocaleDateString());
|
|
87
|
+
if (install.suspended && install.suspendedAt) {
|
|
88
|
+
keyValue(' Suspended', new Date(install.suspendedAt).toLocaleDateString());
|
|
89
|
+
}
|
|
90
|
+
newline();
|
|
91
|
+
}
|
|
92
|
+
success(`${installations.length} GitHub installation(s) connected`);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
spin.fail('Failed to check GitHub status');
|
|
96
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
97
|
+
error(message);
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function createGitHubConnectCommand() {
|
|
103
|
+
return new Command('connect')
|
|
104
|
+
.description('Install the Buoy GitHub App')
|
|
105
|
+
.action(async () => {
|
|
106
|
+
const allowed = await requireFeature('github-pr-comments');
|
|
107
|
+
if (!allowed) {
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
const endpoint = getApiEndpoint();
|
|
111
|
+
const installUrl = getGitHubInstallUrl(endpoint);
|
|
112
|
+
info('Opening browser to install the Buoy GitHub App...');
|
|
113
|
+
newline();
|
|
114
|
+
try {
|
|
115
|
+
await open(installUrl);
|
|
116
|
+
success('Browser opened!');
|
|
117
|
+
newline();
|
|
118
|
+
info('Complete the installation in your browser.');
|
|
119
|
+
info('Choose which repositories Buoy should have access to.');
|
|
120
|
+
newline();
|
|
121
|
+
info('After installation, run `buoy bot github status` to verify.');
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
error('Failed to open browser');
|
|
125
|
+
newline();
|
|
126
|
+
info('Please visit this URL manually:');
|
|
127
|
+
console.log(chalk.cyan(installUrl));
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function createGitHubDisconnectCommand() {
|
|
132
|
+
return new Command('disconnect')
|
|
133
|
+
.description('Remove a GitHub installation')
|
|
134
|
+
.argument('[account]', 'GitHub account to disconnect (optional)')
|
|
135
|
+
.option('--all', 'Disconnect all installations')
|
|
136
|
+
.option('--json', 'Output as JSON')
|
|
137
|
+
.action(async (account, options) => {
|
|
138
|
+
if (!isLoggedIn()) {
|
|
139
|
+
if (options.json) {
|
|
140
|
+
console.log(JSON.stringify({ error: 'Not logged in' }));
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
error('Not logged in');
|
|
144
|
+
info('Run `buoy login` to sign in');
|
|
145
|
+
}
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
const spin = spinner('Getting GitHub installations...').start();
|
|
149
|
+
try {
|
|
150
|
+
const result = await listGitHubInstallations();
|
|
151
|
+
if (!result.ok) {
|
|
152
|
+
spin.fail('Failed to get installations');
|
|
153
|
+
if (options.json) {
|
|
154
|
+
console.log(JSON.stringify({ error: result.error }));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
error(result.error || 'Failed to get installations');
|
|
158
|
+
}
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
const installations = result.data?.installations || [];
|
|
162
|
+
if (installations.length === 0) {
|
|
163
|
+
spin.stop();
|
|
164
|
+
if (options.json) {
|
|
165
|
+
console.log(JSON.stringify({ message: 'No installations to disconnect' }));
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
info('No GitHub installations to disconnect');
|
|
169
|
+
}
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
let toDisconnect = installations;
|
|
173
|
+
if (!options.all && account) {
|
|
174
|
+
toDisconnect = installations.filter((i) => i.accountLogin.toLowerCase() === account.toLowerCase());
|
|
175
|
+
if (toDisconnect.length === 0) {
|
|
176
|
+
spin.stop();
|
|
177
|
+
if (options.json) {
|
|
178
|
+
console.log(JSON.stringify({ error: `No installation found for ${account}` }));
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
error(`No installation found for "${account}"`);
|
|
182
|
+
info('Available installations:');
|
|
183
|
+
for (const i of installations) {
|
|
184
|
+
info(` - ${i.accountLogin}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else if (!options.all && installations.length > 1) {
|
|
191
|
+
spin.stop();
|
|
192
|
+
error('Multiple installations found');
|
|
193
|
+
info('Specify an account name or use --all:');
|
|
194
|
+
for (const i of installations) {
|
|
195
|
+
info(` buoy bot github disconnect ${i.accountLogin}`);
|
|
196
|
+
}
|
|
197
|
+
info(' buoy bot github disconnect --all');
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
spin.text = 'Disconnecting...';
|
|
201
|
+
const disconnected = [];
|
|
202
|
+
const failed = [];
|
|
203
|
+
for (const install of toDisconnect) {
|
|
204
|
+
const deleteResult = await revokeGitHubInstallation(install.id);
|
|
205
|
+
if (deleteResult.ok) {
|
|
206
|
+
disconnected.push(install.accountLogin);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
failed.push(install.accountLogin);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
spin.stop();
|
|
213
|
+
if (options.json) {
|
|
214
|
+
console.log(JSON.stringify({ disconnected, failed }));
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (disconnected.length > 0) {
|
|
218
|
+
success(`Disconnected: ${disconnected.join(', ')}`);
|
|
219
|
+
}
|
|
220
|
+
if (failed.length > 0) {
|
|
221
|
+
warning(`Failed to disconnect: ${failed.join(', ')}`);
|
|
222
|
+
}
|
|
223
|
+
newline();
|
|
224
|
+
info('Note: This only removes the connection from Buoy.');
|
|
225
|
+
info('To fully uninstall, visit GitHub Settings > Applications.');
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
spin.fail('Failed to disconnect');
|
|
229
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
230
|
+
error(message);
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
// ============================================================================
|
|
236
|
+
// GitLab
|
|
237
|
+
// ============================================================================
|
|
238
|
+
function createGitLabCommand() {
|
|
239
|
+
const cmd = new Command('gitlab');
|
|
240
|
+
cmd
|
|
241
|
+
.description('GitLab integration (coming soon)')
|
|
242
|
+
.action(() => {
|
|
243
|
+
header('GitLab Integration');
|
|
244
|
+
newline();
|
|
245
|
+
info('GitLab integration is coming soon!');
|
|
246
|
+
newline();
|
|
247
|
+
info('In the meantime, you can use the CLI directly in GitLab CI:');
|
|
248
|
+
newline();
|
|
249
|
+
console.log(chalk.dim(' # .gitlab-ci.yml'));
|
|
250
|
+
console.log(chalk.cyan(' buoy_check:'));
|
|
251
|
+
console.log(chalk.cyan(' script:'));
|
|
252
|
+
console.log(chalk.cyan(' - npx @buoy-design/cli check --json'));
|
|
253
|
+
newline();
|
|
254
|
+
info('Follow updates at: https://buoy.design/roadmap');
|
|
255
|
+
});
|
|
256
|
+
return cmd;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=bot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../src/commands/bot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,UAAU,EACV,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,OAAO,EACP,OAAO,EACP,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,MAAM,GACP,MAAM,wBAAwB,CAAC;AAEhC,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/B,GAAG;SACA,WAAW,CAAC,4BAA4B,CAAC;SACzC,UAAU,CAAC,mBAAmB,EAAE,CAAC;SACjC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAErC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElC,GAAG;SACA,WAAW,CAAC,wBAAwB,CAAC;SACrC,UAAU,CAAC,yBAAyB,EAAE,CAAC;SACvC,UAAU,CAAC,0BAA0B,EAAE,CAAC;SACxC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAE/C,8BAA8B;IAC9B,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACpB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAClB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,eAAe,CAAC,CAAC;gBACvB,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;YAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,6BAA6B,CAAC,CAAC;gBACvD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC;YAEvD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACjC,OAAO,EAAE,CAAC;YAEV,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAChC,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,8DAA8D,CAAC,CAAC;gBACrE,IAAI,CAAC,eAAe,CAAC,CAAC;gBACtB,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBAC5C,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBAC1C,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAEtF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC5E,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBACvF,QAAQ,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAE1E,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBAC7C,QAAQ,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC9E,CAAC;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,mCAAmC,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,KAAK,CAAC,OAAO,CAAC,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,0BAA0B;IACjC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC;QAEV,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC3B,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,4CAA4C,CAAC,CAAC;YACnD,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAChC,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,6BAA6B;IACpC,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;SAC7B,WAAW,CAAC,8BAA8B,CAAC;SAC3C,QAAQ,CAAC,WAAW,EAAE,yCAAyC,CAAC;SAChE,MAAM,CAAC,OAAO,EAAE,8BAA8B,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACjC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAClB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,eAAe,CAAC,CAAC;gBACvB,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;YAE/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACzC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,6BAA6B,CAAC,CAAC;gBACvD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC;YAEvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,YAAY,GAAG,aAAa,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC5B,YAAY,GAAG,aAAa,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAC9D,CAAC;gBAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,6BAA6B,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACjF,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;wBAChD,IAAI,CAAC,0BAA0B,CAAC,CAAC;wBACjC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;4BAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;wBAChC,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBACtC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAC9C,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC9B,IAAI,CAAC,gCAAgC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;gBACzD,CAAC;gBACD,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;YAE/B,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACnC,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;oBACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,iBAAiB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAC1D,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,KAAK,CAAC,OAAO,CAAC,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElC,GAAG;SACA,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC7B,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACpE,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,gDAAgD,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAQ/D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAQ/D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAoB3D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1E,MAAM,CAyDR;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAgBzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA4B9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAgBnF;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAuJ5C"}
|
package/dist/commands/check.js
CHANGED
|
@@ -3,6 +3,18 @@ import { Command } from "commander";
|
|
|
3
3
|
import { loadConfig, getConfigPath } from "../config/loader.js";
|
|
4
4
|
import { execSync } from "node:child_process";
|
|
5
5
|
import { DriftAnalysisService, hasDriftsAboveThreshold, calculateDriftSummary, } from "../services/drift-analysis.js";
|
|
6
|
+
/**
|
|
7
|
+
* Generate a copy-paste ready diff snippet for a drift fix
|
|
8
|
+
*/
|
|
9
|
+
function generateFixSnippet(file, line, oldValue, newValue) {
|
|
10
|
+
const location = line ? `${file}:${line}` : file;
|
|
11
|
+
const lines = [`// ${location}`];
|
|
12
|
+
if (oldValue) {
|
|
13
|
+
lines.push(`- ${oldValue}`);
|
|
14
|
+
}
|
|
15
|
+
lines.push(`+ ${newValue}`);
|
|
16
|
+
return lines.join("\n");
|
|
17
|
+
}
|
|
6
18
|
/**
|
|
7
19
|
* Format drift signals as AI-friendly JSON feedback
|
|
8
20
|
*/
|
|
@@ -13,11 +25,13 @@ export function formatAiFeedback(drifts, exitCode, summary) {
|
|
|
13
25
|
// Extract fix suggestion from details if available
|
|
14
26
|
const suggestions = drift.details?.suggestions;
|
|
15
27
|
const firstSuggestion = suggestions?.[0];
|
|
28
|
+
const oldValue = drift.details?.actual;
|
|
16
29
|
const fix = firstSuggestion
|
|
17
30
|
? {
|
|
18
31
|
type: "replace",
|
|
19
|
-
old:
|
|
32
|
+
old: oldValue,
|
|
20
33
|
new: firstSuggestion,
|
|
34
|
+
snippet: generateFixSnippet(file || drift.source.entityName, lineStr ? parseInt(lineStr, 10) : undefined, oldValue, firstSuggestion),
|
|
21
35
|
}
|
|
22
36
|
: undefined;
|
|
23
37
|
return {
|
|
@@ -224,7 +238,7 @@ export function createCheckCommand() {
|
|
|
224
238
|
}
|
|
225
239
|
}
|
|
226
240
|
console.log("");
|
|
227
|
-
console.log("Run `buoy drift
|
|
241
|
+
console.log("Run `buoy drift` for details");
|
|
228
242
|
}
|
|
229
243
|
}
|
|
230
244
|
process.exit(exitCode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAIvC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAqB,EACrB,QAAgB,EAChB,OAA2E;IAE3E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpD,mDAAmD;QACnD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAE,WAAmC,CAAC;QACvE,MAAM,eAAe,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,eAAe;YACzB,CAAC,CAAC;gBACE,IAAI,EAAE,SAAkB;gBACxB,GAAG,EAAE,KAAK,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buoy cloud - Manage Buoy Cloud connection
|
|
3
|
+
*
|
|
4
|
+
* buoy cloud login - Authenticate with Buoy Cloud
|
|
5
|
+
* buoy cloud logout - Sign out
|
|
6
|
+
* buoy cloud whoami - Show current user
|
|
7
|
+
* buoy cloud link - Connect project to cloud
|
|
8
|
+
* buoy cloud unlink - Disconnect project
|
|
9
|
+
* buoy cloud sync - Sync queued scans
|
|
10
|
+
* buoy cloud billing - Manage subscription
|
|
11
|
+
* buoy cloud plans - Compare pricing
|
|
12
|
+
*/
|
|
13
|
+
import { Command } from 'commander';
|
|
14
|
+
export declare function createCloudCommand(): Command;
|
|
15
|
+
//# sourceMappingURL=cloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,kBAAkB,IAAI,OAAO,CAe5C"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buoy cloud - Manage Buoy Cloud connection
|
|
3
|
+
*
|
|
4
|
+
* buoy cloud login - Authenticate with Buoy Cloud
|
|
5
|
+
* buoy cloud logout - Sign out
|
|
6
|
+
* buoy cloud whoami - Show current user
|
|
7
|
+
* buoy cloud link - Connect project to cloud
|
|
8
|
+
* buoy cloud unlink - Disconnect project
|
|
9
|
+
* buoy cloud sync - Sync queued scans
|
|
10
|
+
* buoy cloud billing - Manage subscription
|
|
11
|
+
* buoy cloud plans - Compare pricing
|
|
12
|
+
*/
|
|
13
|
+
import { Command } from 'commander';
|
|
14
|
+
import { createLoginCommand } from './login.js';
|
|
15
|
+
import { createLogoutCommand } from './logout.js';
|
|
16
|
+
import { createWhoamiCommand } from './whoami.js';
|
|
17
|
+
import { createLinkCommand } from './link.js';
|
|
18
|
+
import { createUnlinkCommand } from './unlink.js';
|
|
19
|
+
import { createSyncCommand } from './sync.js';
|
|
20
|
+
import { createBillingCommand } from './billing.js';
|
|
21
|
+
import { createPlansCommand } from './plans.js';
|
|
22
|
+
export function createCloudCommand() {
|
|
23
|
+
const cmd = new Command('cloud');
|
|
24
|
+
cmd
|
|
25
|
+
.description('Manage Buoy Cloud connection')
|
|
26
|
+
.addCommand(createLoginCommand())
|
|
27
|
+
.addCommand(createLogoutCommand())
|
|
28
|
+
.addCommand(createWhoamiCommand())
|
|
29
|
+
.addCommand(createLinkCommand())
|
|
30
|
+
.addCommand(createUnlinkCommand())
|
|
31
|
+
.addCommand(createSyncCommand())
|
|
32
|
+
.addCommand(createBillingCommand())
|
|
33
|
+
.addCommand(createPlansCommand());
|
|
34
|
+
return cmd;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,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,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC,GAAG;SACA,WAAW,CAAC,8BAA8B,CAAC;SAC3C,UAAU,CAAC,kBAAkB,EAAE,CAAC;SAChC,UAAU,CAAC,mBAAmB,EAAE,CAAC;SACjC,UAAU,CAAC,mBAAmB,EAAE,CAAC;SACjC,UAAU,CAAC,iBAAiB,EAAE,CAAC;SAC/B,UAAU,CAAC,mBAAmB,EAAE,CAAC;SACjC,UAAU,CAAC,iBAAiB,EAAE,CAAC;SAC/B,UAAU,CAAC,oBAAoB,EAAE,CAAC;SAClC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEpC,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands/commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmEpC,wBAAgB,qBAAqB,IAAI,OAAO,CAqG/C"}
|
|
@@ -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 components query - Find and explore components in the codebase
|
|
3
|
+
*
|
|
4
|
+
* Helps AI agents quickly find relevant components when building features.
|
|
5
|
+
*
|
|
6
|
+
* Examples:
|
|
7
|
+
* buoy components query "button" # Find button components
|
|
8
|
+
* buoy components query --prop "onClick" # Find components with onClick
|
|
9
|
+
* buoy components query --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"}
|