@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.
Files changed (135) hide show
  1. package/assets/commands/contribution-loop.md +195 -0
  2. package/dist/bin.js +0 -0
  3. package/dist/cloud/config.d.ts +8 -0
  4. package/dist/cloud/config.d.ts.map +1 -1
  5. package/dist/cloud/config.js +10 -0
  6. package/dist/cloud/config.js.map +1 -1
  7. package/dist/cloud/feature-gate.d.ts +30 -0
  8. package/dist/cloud/feature-gate.d.ts.map +1 -0
  9. package/dist/cloud/feature-gate.js +138 -0
  10. package/dist/cloud/feature-gate.js.map +1 -0
  11. package/dist/cloud/index.d.ts +1 -0
  12. package/dist/cloud/index.d.ts.map +1 -1
  13. package/dist/cloud/index.js +1 -0
  14. package/dist/cloud/index.js.map +1 -1
  15. package/dist/commands/anchor.js +1 -1
  16. package/dist/commands/anchor.js.map +1 -1
  17. package/dist/commands/begin.d.ts.map +1 -1
  18. package/dist/commands/begin.js +118 -5
  19. package/dist/commands/begin.js.map +1 -1
  20. package/dist/commands/billing.d.ts +1 -1
  21. package/dist/commands/billing.js +22 -18
  22. package/dist/commands/billing.js.map +1 -1
  23. package/dist/commands/bot.d.ts +9 -0
  24. package/dist/commands/bot.d.ts.map +1 -0
  25. package/dist/commands/bot.js +258 -0
  26. package/dist/commands/bot.js.map +1 -0
  27. package/dist/commands/check.d.ts.map +1 -1
  28. package/dist/commands/check.js +16 -2
  29. package/dist/commands/check.js.map +1 -1
  30. package/dist/commands/cloud.d.ts +15 -0
  31. package/dist/commands/cloud.d.ts.map +1 -0
  32. package/dist/commands/cloud.js +36 -0
  33. package/dist/commands/cloud.js.map +1 -0
  34. package/dist/commands/commands.d.ts +8 -0
  35. package/dist/commands/commands.d.ts.map +1 -0
  36. package/dist/commands/commands.js +148 -0
  37. package/dist/commands/commands.js.map +1 -0
  38. package/dist/commands/components-query.d.ts +13 -0
  39. package/dist/commands/components-query.d.ts.map +1 -0
  40. package/dist/commands/components-query.js +263 -0
  41. package/dist/commands/components-query.js.map +1 -0
  42. package/dist/commands/components.d.ts +8 -0
  43. package/dist/commands/components.d.ts.map +1 -0
  44. package/dist/commands/components.js +14 -0
  45. package/dist/commands/components.js.map +1 -0
  46. package/dist/commands/dock.d.ts +13 -0
  47. package/dist/commands/dock.d.ts.map +1 -1
  48. package/dist/commands/dock.js +594 -832
  49. package/dist/commands/dock.js.map +1 -1
  50. package/dist/commands/drift.d.ts.map +1 -1
  51. package/dist/commands/drift.js +4 -13
  52. package/dist/commands/drift.js.map +1 -1
  53. package/dist/commands/fix.js +1 -1
  54. package/dist/commands/fix.js.map +1 -1
  55. package/dist/commands/github.d.ts.map +1 -1
  56. package/dist/commands/github.js +8 -6
  57. package/dist/commands/github.js.map +1 -1
  58. package/dist/commands/history.js +2 -2
  59. package/dist/commands/history.js.map +1 -1
  60. package/dist/commands/import.js +1 -1
  61. package/dist/commands/import.js.map +1 -1
  62. package/dist/commands/index.d.ts +2 -22
  63. package/dist/commands/index.d.ts.map +1 -1
  64. package/dist/commands/index.js +3 -23
  65. package/dist/commands/index.js.map +1 -1
  66. package/dist/commands/learn.d.ts +9 -0
  67. package/dist/commands/learn.d.ts.map +1 -0
  68. package/dist/commands/learn.js +244 -0
  69. package/dist/commands/learn.js.map +1 -0
  70. package/dist/commands/link.js +2 -2
  71. package/dist/commands/link.js.map +1 -1
  72. package/dist/commands/login.d.ts.map +1 -1
  73. package/dist/commands/login.js +12 -3
  74. package/dist/commands/login.js.map +1 -1
  75. package/dist/commands/onboard.d.ts.map +1 -1
  76. package/dist/commands/onboard.js +64 -1
  77. package/dist/commands/onboard.js.map +1 -1
  78. package/dist/commands/plans.d.ts +9 -0
  79. package/dist/commands/plans.d.ts.map +1 -0
  80. package/dist/commands/plans.js +140 -0
  81. package/dist/commands/plans.js.map +1 -0
  82. package/dist/commands/ship.d.ts +14 -0
  83. package/dist/commands/ship.d.ts.map +1 -0
  84. package/dist/commands/ship.js +342 -0
  85. package/dist/commands/ship.js.map +1 -0
  86. package/dist/commands/show.d.ts +3 -0
  87. package/dist/commands/show.d.ts.map +1 -0
  88. package/dist/commands/show.js +340 -0
  89. package/dist/commands/show.js.map +1 -0
  90. package/dist/commands/status.d.ts.map +1 -1
  91. package/dist/commands/status.js +13 -0
  92. package/dist/commands/status.js.map +1 -1
  93. package/dist/commands/sync.js +1 -1
  94. package/dist/commands/sync.js.map +1 -1
  95. package/dist/commands/tokens-lookup.d.ts +14 -0
  96. package/dist/commands/tokens-lookup.d.ts.map +1 -0
  97. package/dist/commands/tokens-lookup.js +300 -0
  98. package/dist/commands/tokens-lookup.js.map +1 -0
  99. package/dist/commands/tokens.d.ts.map +1 -1
  100. package/dist/commands/tokens.js +6 -1
  101. package/dist/commands/tokens.js.map +1 -1
  102. package/dist/commands/whoami.d.ts.map +1 -1
  103. package/dist/commands/whoami.js +60 -3
  104. package/dist/commands/whoami.js.map +1 -1
  105. package/dist/config/schema.d.ts +132 -132
  106. package/dist/fix/applier.js +1 -1
  107. package/dist/fix/applier.js.map +1 -1
  108. package/dist/hooks/index.d.ts +2 -1
  109. package/dist/hooks/index.d.ts.map +1 -1
  110. package/dist/hooks/index.js +31 -3
  111. package/dist/hooks/index.js.map +1 -1
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +19 -43
  114. package/dist/index.js.map +1 -1
  115. package/dist/insights/project-insights.d.ts.map +1 -1
  116. package/dist/insights/project-insights.js +0 -8
  117. package/dist/insights/project-insights.js.map +1 -1
  118. package/dist/output/fix-formatters.d.ts.map +1 -1
  119. package/dist/output/fix-formatters.js +10 -2
  120. package/dist/output/fix-formatters.js.map +1 -1
  121. package/dist/services/context-generator.js +2 -2
  122. package/dist/services/context-generator.js.map +1 -1
  123. package/dist/services/skill-export.d.ts.map +1 -1
  124. package/dist/services/skill-export.js +39 -4
  125. package/dist/services/skill-export.js.map +1 -1
  126. package/dist/wizard/ai-guardrails-generator.js +1 -1
  127. package/package.json +16 -15
  128. package/LICENSE +0 -21
  129. package/dist/commands/explain.d.ts +0 -3
  130. package/dist/commands/explain.js +0 -224
  131. package/dist/commands/explain.js.map +0 -1
  132. package/dist/explain/agents.d.ts +0 -31
  133. package/dist/explain/agents.d.ts.map +0 -1
  134. package/dist/explain/agents.js +0 -507
  135. package/dist/explain/agents.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ /**
2
+ * buoy plans - Show available plans and features
3
+ *
4
+ * Displays a comparison of Free vs Team plans with pricing info.
5
+ * Helps users understand what they get with an upgrade.
6
+ */
7
+ import { Command } from 'commander';
8
+ import chalk from 'chalk';
9
+ import { isLoggedIn, getBillingStatus, } from '../cloud/index.js';
10
+ import { header, newline, info, } from '../output/reporters.js';
11
+ const FREE_FEATURES = [
12
+ 'Auto-detect design system',
13
+ 'All drift detection commands',
14
+ 'Token import (JSON, CSS, Tokens Studio)',
15
+ 'AI guardrails (skills, MCP, context)',
16
+ 'Local scan history',
17
+ 'Unlimited developers',
18
+ ];
19
+ const TEAM_FEATURES = [
20
+ 'Everything in Free',
21
+ 'Unlimited repos',
22
+ 'GitHub PR comments',
23
+ 'Slack & Teams alerts',
24
+ 'Cloud history & trends',
25
+ 'Figma Monitor plugin',
26
+ ];
27
+ const ENTERPRISE_FEATURES = [
28
+ 'Everything in Team',
29
+ 'SSO / SAML',
30
+ 'Audit logs',
31
+ 'SLA guarantees',
32
+ 'Implementation consulting',
33
+ 'Dedicated Slack channel',
34
+ ];
35
+ export function createPlansCommand() {
36
+ return new Command('plans')
37
+ .description('Compare available plans and pricing')
38
+ .option('--json', 'Output as JSON')
39
+ .action(async (options) => {
40
+ if (options.json) {
41
+ console.log(JSON.stringify({
42
+ plans: [
43
+ {
44
+ id: 'free',
45
+ name: 'Free',
46
+ price: '$0',
47
+ period: 'forever',
48
+ features: FREE_FEATURES,
49
+ },
50
+ {
51
+ id: 'team',
52
+ name: 'Team',
53
+ price: '$25',
54
+ period: '/dev/month',
55
+ annualPrice: '$20',
56
+ annualPeriod: '/dev/month (billed annually)',
57
+ features: TEAM_FEATURES,
58
+ },
59
+ {
60
+ id: 'enterprise',
61
+ name: 'Enterprise',
62
+ price: 'Custom',
63
+ features: ENTERPRISE_FEATURES,
64
+ },
65
+ ],
66
+ }, null, 2));
67
+ return;
68
+ }
69
+ // Check current plan
70
+ let currentPlan = 'free';
71
+ let trialDays = 0;
72
+ if (isLoggedIn()) {
73
+ try {
74
+ const result = await getBillingStatus();
75
+ if (result.ok && result.data) {
76
+ currentPlan = result.data.plan.id;
77
+ if (result.data.trial?.active) {
78
+ trialDays = result.data.trial.daysRemaining;
79
+ }
80
+ }
81
+ }
82
+ catch {
83
+ // Ignore - assume free
84
+ }
85
+ }
86
+ // Header
87
+ console.log('');
88
+ header('Buoy Plans');
89
+ newline();
90
+ // Free plan
91
+ const freeLabel = currentPlan === 'free' && trialDays === 0
92
+ ? chalk.green(' ← current')
93
+ : '';
94
+ console.log(chalk.bold('Free') + chalk.dim(' $0/forever') + freeLabel);
95
+ for (const feature of FREE_FEATURES) {
96
+ console.log(` ${chalk.green('✓')} ${feature}`);
97
+ }
98
+ newline();
99
+ // Team plan
100
+ const teamLabel = currentPlan === 'team'
101
+ ? chalk.green(' ← current')
102
+ : trialDays > 0
103
+ ? chalk.yellow(` ← trial (${trialDays} days left)`)
104
+ : '';
105
+ console.log(chalk.cyan.bold('Team') + chalk.dim(' $25/dev/month') + teamLabel);
106
+ console.log(chalk.dim(' $20/dev/month billed annually (20% off)'));
107
+ for (const feature of TEAM_FEATURES) {
108
+ console.log(` ${chalk.green('✓')} ${feature}`);
109
+ }
110
+ newline();
111
+ // Enterprise plan
112
+ const entLabel = currentPlan === 'enterprise' ? chalk.green(' ← current') : '';
113
+ console.log(chalk.magenta.bold('Enterprise') + chalk.dim(' Custom pricing') + entLabel);
114
+ for (const feature of ENTERPRISE_FEATURES) {
115
+ console.log(` ${chalk.green('✓')} ${feature}`);
116
+ }
117
+ newline();
118
+ // Call to action
119
+ console.log(chalk.dim('─'.repeat(50)));
120
+ if (currentPlan === 'free' && trialDays === 0) {
121
+ console.log(chalk.dim('💡 ') +
122
+ 'Run ' +
123
+ chalk.cyan('buoy billing upgrade') +
124
+ ' to start your Team trial');
125
+ }
126
+ else if (trialDays > 0) {
127
+ console.log(chalk.dim('💡 ') +
128
+ 'Run ' +
129
+ chalk.cyan('buoy billing upgrade') +
130
+ ' to keep Team features after trial');
131
+ }
132
+ else if (currentPlan === 'team') {
133
+ info('Contact sales@buoy.dev for Enterprise');
134
+ }
135
+ console.log(chalk.dim(' ') +
136
+ 'Learn more: ' +
137
+ chalk.cyan('https://buoy.dev/pricing'));
138
+ });
139
+ }
140
+ //# sourceMappingURL=plans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/commands/plans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * buoy ship - Buoy Cloud management
3
+ *
4
+ * buoy ship login - Authenticate
5
+ * buoy ship logout - Sign out
6
+ * buoy ship status - Show account, project, and bot status
7
+ * buoy ship github - Set up GitHub PR bot
8
+ * buoy ship gitlab - Set up GitLab PR bot (coming soon)
9
+ * buoy ship billing - Manage subscription
10
+ * buoy ship plans - Compare pricing
11
+ */
12
+ import { Command } from 'commander';
13
+ export declare function createShipCommand(): Command;
14
+ //# sourceMappingURL=ship.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../../src/commands/ship.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,iBAAiB,IAAI,OAAO,CAsB3C"}
@@ -0,0 +1,342 @@
1
+ /**
2
+ * buoy ship - Buoy Cloud management
3
+ *
4
+ * buoy ship login - Authenticate
5
+ * buoy ship logout - Sign out
6
+ * buoy ship status - Show account, project, and bot status
7
+ * buoy ship github - Set up GitHub PR bot
8
+ * buoy ship gitlab - Set up GitLab PR bot (coming soon)
9
+ * buoy ship billing - Manage subscription
10
+ * buoy ship plans - Compare pricing
11
+ */
12
+ import { Command } from 'commander';
13
+ import chalk from 'chalk';
14
+ import open from 'open';
15
+ import { isLoggedIn, getApiEndpoint, listGitHubInstallations, revokeGitHubInstallation, getGitHubInstallUrl, requireFeature, getBillingStatus, getQueueCount, } from '../cloud/index.js';
16
+ import { getMe } from '../cloud/client.js';
17
+ import { spinner, success, error, info, warning, keyValue, newline, header, } from '../output/reporters.js';
18
+ import { createLoginCommand } from './login.js';
19
+ import { createLogoutCommand } from './logout.js';
20
+ import { createBillingCommand } from './billing.js';
21
+ import { createPlansCommand } from './plans.js';
22
+ export function createShipCommand() {
23
+ const cmd = new Command('ship');
24
+ cmd
25
+ .description('Ship to Buoy Cloud - PR bot and team features')
26
+ .addCommand(createLoginCommand())
27
+ .addCommand(createLogoutCommand())
28
+ .addCommand(createStatusCommand())
29
+ .addCommand(createGitHubCommand())
30
+ .addCommand(createGitLabCommand())
31
+ .addCommand(createBillingCommand())
32
+ .addCommand(createPlansCommand());
33
+ // Default action shows status
34
+ cmd.action(async () => {
35
+ const statusCmd = cmd.commands.find(c => c.name() === 'status');
36
+ if (statusCmd) {
37
+ await statusCmd.parseAsync([], { from: 'user' });
38
+ }
39
+ });
40
+ return cmd;
41
+ }
42
+ // ============================================================================
43
+ // Status - Combined view of account, project, and bot
44
+ // ============================================================================
45
+ function createStatusCommand() {
46
+ return new Command('status')
47
+ .description('Show cloud account, project link, and bot status')
48
+ .option('--json', 'Output as JSON')
49
+ .action(async (options) => {
50
+ if (!isLoggedIn()) {
51
+ if (options.json) {
52
+ console.log(JSON.stringify({ loggedIn: false }));
53
+ }
54
+ else {
55
+ warning('Not logged in');
56
+ info('Run `buoy ship login` to sign in');
57
+ }
58
+ return;
59
+ }
60
+ const spin = spinner('Checking cloud status...').start();
61
+ try {
62
+ // Fetch user info
63
+ const meResult = await getMe();
64
+ if (!meResult.ok || !meResult.data) {
65
+ spin.fail('Session expired');
66
+ error('Please login again: buoy ship login');
67
+ process.exit(1);
68
+ }
69
+ // Fetch GitHub installations
70
+ const githubResult = await listGitHubInstallations();
71
+ const installations = githubResult.ok ? (githubResult.data?.installations || []) : [];
72
+ // Fetch billing
73
+ let billing = null;
74
+ try {
75
+ const billingResult = await getBillingStatus();
76
+ if (billingResult.ok && billingResult.data) {
77
+ billing = billingResult.data;
78
+ }
79
+ }
80
+ catch {
81
+ // Ignore billing errors
82
+ }
83
+ // Get queue count
84
+ const queueCount = getQueueCount(process.cwd());
85
+ spin.stop();
86
+ const { user, account } = meResult.data;
87
+ if (options.json) {
88
+ console.log(JSON.stringify({
89
+ loggedIn: true,
90
+ user: {
91
+ id: user.id,
92
+ email: user.email,
93
+ name: user.name,
94
+ },
95
+ account: {
96
+ id: account.id,
97
+ name: account.name,
98
+ plan: account.plan,
99
+ },
100
+ github: {
101
+ installations: installations.map(i => ({
102
+ account: i.accountLogin,
103
+ type: i.accountType,
104
+ suspended: i.suspended,
105
+ })),
106
+ },
107
+ queue: queueCount,
108
+ billing: billing ? {
109
+ plan: billing.plan?.name,
110
+ trial: billing.trial,
111
+ subscription: !!billing.subscription,
112
+ } : null,
113
+ }, null, 2));
114
+ return;
115
+ }
116
+ // Human-readable output
117
+ newline();
118
+ header('Buoy Cloud Status');
119
+ newline();
120
+ // Account section
121
+ console.log(chalk.bold('Account'));
122
+ keyValue(' User', user.name || user.email);
123
+ keyValue(' Email', user.email);
124
+ keyValue(' Organization', account.name);
125
+ // Plan with color
126
+ const planColor = billing?.plan?.id === 'team' ? chalk.green :
127
+ billing?.plan?.id === 'enterprise' ? chalk.magenta :
128
+ chalk.gray;
129
+ keyValue(' Plan', planColor(billing?.plan?.name || account.plan));
130
+ if (billing?.trial?.active) {
131
+ keyValue(' Status', chalk.yellow(`Trial (${billing.trial.daysRemaining} days left)`));
132
+ }
133
+ else if (billing?.subscription) {
134
+ keyValue(' Status', chalk.green('Active'));
135
+ }
136
+ newline();
137
+ // GitHub Bot section
138
+ console.log(chalk.bold('GitHub Bot'));
139
+ if (installations.length === 0) {
140
+ keyValue(' Status', chalk.dim('Not installed'));
141
+ info(' Run `buoy ship github` to set up PR comments');
142
+ }
143
+ else {
144
+ for (const install of installations) {
145
+ const statusIcon = install.suspended ? chalk.red('suspended') : chalk.green('active');
146
+ keyValue(` ${install.accountLogin}`, statusIcon);
147
+ }
148
+ }
149
+ newline();
150
+ // Sync queue
151
+ console.log(chalk.bold('Sync Queue'));
152
+ if (queueCount > 0) {
153
+ keyValue(' Pending', chalk.yellow(String(queueCount)));
154
+ info(' Scans will sync automatically on next run');
155
+ }
156
+ else {
157
+ keyValue(' Pending', chalk.green('0'));
158
+ }
159
+ // Payment alert if any
160
+ if (billing?.paymentAlert) {
161
+ newline();
162
+ warning(`Payment ${billing.paymentAlert.status}`);
163
+ info(`${billing.paymentAlert.daysRemaining} days until account restriction`);
164
+ info(`Run ${chalk.cyan('buoy ship billing')} to update payment`);
165
+ }
166
+ }
167
+ catch (err) {
168
+ spin.fail('Failed to check status');
169
+ const message = err instanceof Error ? err.message : String(err);
170
+ error(message);
171
+ process.exit(1);
172
+ }
173
+ });
174
+ }
175
+ // ============================================================================
176
+ // GitHub Bot Setup
177
+ // ============================================================================
178
+ function createGitHubCommand() {
179
+ const cmd = new Command('github');
180
+ cmd
181
+ .description('Set up GitHub PR bot')
182
+ .option('--disconnect [account]', 'Remove GitHub installation')
183
+ .option('--json', 'Output as JSON')
184
+ .action(async (options) => {
185
+ if (!isLoggedIn()) {
186
+ if (options.json) {
187
+ console.log(JSON.stringify({ error: 'Not logged in' }));
188
+ }
189
+ else {
190
+ error('Not logged in');
191
+ info('Run `buoy ship login` to sign in');
192
+ }
193
+ process.exit(1);
194
+ }
195
+ // Handle disconnect
196
+ if (options.disconnect !== undefined) {
197
+ await handleGitHubDisconnect(options.disconnect, options.json);
198
+ return;
199
+ }
200
+ // Check feature access
201
+ const allowed = await requireFeature('github-pr-comments');
202
+ if (!allowed) {
203
+ process.exit(1);
204
+ }
205
+ // Show current status first
206
+ const spin = spinner('Checking GitHub status...').start();
207
+ const result = await listGitHubInstallations();
208
+ spin.stop();
209
+ if (result.ok) {
210
+ const installations = result.data?.installations || [];
211
+ if (installations.length > 0) {
212
+ if (options.json) {
213
+ console.log(JSON.stringify({ installations }, null, 2));
214
+ return;
215
+ }
216
+ header('GitHub Bot');
217
+ newline();
218
+ for (const install of installations) {
219
+ const statusIcon = install.suspended ? chalk.red('suspended') : chalk.green('active');
220
+ console.log(`${chalk.bold(install.accountLogin)} (${install.accountType})`);
221
+ keyValue(' Status', statusIcon);
222
+ keyValue(' Repositories', install.repositorySelection === 'all' ? 'All' : 'Selected');
223
+ newline();
224
+ }
225
+ success(`${installations.length} installation(s) connected`);
226
+ newline();
227
+ info('To add another org/account, run this command again');
228
+ info('To disconnect: buoy ship github --disconnect <account>');
229
+ // Still offer to add more
230
+ newline();
231
+ }
232
+ }
233
+ // Open install URL
234
+ const endpoint = getApiEndpoint();
235
+ const installUrl = getGitHubInstallUrl(endpoint);
236
+ info('Opening browser to install the Buoy GitHub App...');
237
+ newline();
238
+ try {
239
+ await open(installUrl);
240
+ success('Browser opened!');
241
+ newline();
242
+ info('Complete the installation in your browser.');
243
+ info('Choose which repositories Buoy should have access to.');
244
+ newline();
245
+ info('After installation, run `buoy ship status` to verify.');
246
+ }
247
+ catch {
248
+ error('Failed to open browser');
249
+ newline();
250
+ info('Please visit this URL manually:');
251
+ console.log(chalk.cyan(installUrl));
252
+ }
253
+ });
254
+ return cmd;
255
+ }
256
+ async function handleGitHubDisconnect(account, json) {
257
+ const spin = spinner('Getting installations...').start();
258
+ const result = await listGitHubInstallations();
259
+ if (!result.ok) {
260
+ spin.fail('Failed to get installations');
261
+ error(result.error || 'Unknown error');
262
+ process.exit(1);
263
+ }
264
+ const installations = result.data?.installations || [];
265
+ if (installations.length === 0) {
266
+ spin.stop();
267
+ if (json) {
268
+ console.log(JSON.stringify({ message: 'No installations' }));
269
+ }
270
+ else {
271
+ info('No GitHub installations to disconnect');
272
+ }
273
+ return;
274
+ }
275
+ let toDisconnect = installations;
276
+ // If specific account provided
277
+ if (typeof account === 'string') {
278
+ toDisconnect = installations.filter((i) => i.accountLogin.toLowerCase() === account.toLowerCase());
279
+ if (toDisconnect.length === 0) {
280
+ spin.stop();
281
+ error(`No installation found for "${account}"`);
282
+ info('Available: ' + installations.map(i => i.accountLogin).join(', '));
283
+ process.exit(1);
284
+ }
285
+ }
286
+ else if (installations.length > 1) {
287
+ // Multiple installations, need to specify
288
+ spin.stop();
289
+ error('Multiple installations found. Specify which to disconnect:');
290
+ for (const i of installations) {
291
+ info(` buoy ship github --disconnect ${i.accountLogin}`);
292
+ }
293
+ process.exit(1);
294
+ }
295
+ spin.text = 'Disconnecting...';
296
+ const disconnected = [];
297
+ const failed = [];
298
+ for (const install of toDisconnect) {
299
+ const deleteResult = await revokeGitHubInstallation(install.id);
300
+ if (deleteResult.ok) {
301
+ disconnected.push(install.accountLogin);
302
+ }
303
+ else {
304
+ failed.push(install.accountLogin);
305
+ }
306
+ }
307
+ spin.stop();
308
+ if (json) {
309
+ console.log(JSON.stringify({ disconnected, failed }));
310
+ return;
311
+ }
312
+ if (disconnected.length > 0) {
313
+ success(`Disconnected: ${disconnected.join(', ')}`);
314
+ }
315
+ if (failed.length > 0) {
316
+ warning(`Failed: ${failed.join(', ')}`);
317
+ }
318
+ newline();
319
+ info('Note: To fully uninstall, visit GitHub Settings > Applications');
320
+ }
321
+ // ============================================================================
322
+ // GitLab (Coming Soon)
323
+ // ============================================================================
324
+ function createGitLabCommand() {
325
+ return new Command('gitlab')
326
+ .description('Set up GitLab PR bot (coming soon)')
327
+ .action(() => {
328
+ header('GitLab Integration');
329
+ newline();
330
+ info('GitLab integration is coming soon!');
331
+ newline();
332
+ info('In the meantime, use the CLI in GitLab CI:');
333
+ newline();
334
+ console.log(chalk.dim(' # .gitlab-ci.yml'));
335
+ console.log(chalk.cyan(' buoy_check:'));
336
+ console.log(chalk.cyan(' script:'));
337
+ console.log(chalk.cyan(' - npx @buoy-design/cli check --json'));
338
+ newline();
339
+ info('Follow updates at: https://buoy.design/roadmap');
340
+ });
341
+ }
342
+ //# sourceMappingURL=ship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship.js","sourceRoot":"","sources":["../../src/commands/ship.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createShowCommand(): Command;
3
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,iBAAiB,IAAI,OAAO,CA6Q3C"}