@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,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 @@
|
|
|
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"}
|