@saferun/cli 0.5.25 → 0.5.27

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.
@@ -0,0 +1,528 @@
1
+ "use strict";
2
+ /**
3
+ * SafeRun Setup Wizard
4
+ * Complete onboarding in one command: API Key → Slack → GitHub App → Repo Setup
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SetupCommand = void 0;
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const inquirer_1 = __importDefault(require("inquirer"));
13
+ const child_process_1 = require("child_process");
14
+ const util_1 = require("util");
15
+ const os_1 = __importDefault(require("os"));
16
+ const git_1 = require("../utils/git");
17
+ const config_1 = require("../utils/config");
18
+ const installer_1 = require("../hooks/installer");
19
+ const credentials_1 = require("../utils/credentials");
20
+ const gitignore_1 = require("../utils/gitignore");
21
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
22
+ const SAFERUN_DASHBOARD_URL = 'https://saferun-landing.vercel.app';
23
+ const SAFERUN_API_URL = 'https://saferun-api.up.railway.app';
24
+ const SLACK_APP_URL = 'https://api.slack.com/apps';
25
+ const GITHUB_APP_URL = 'https://github.com/apps/saferun-ai/installations/new';
26
+ class SetupCommand {
27
+ constructor() {
28
+ this.slackConfigured = false;
29
+ this.githubAppInstalled = false;
30
+ this.repoInitialized = false;
31
+ this.protectionMode = 'block';
32
+ }
33
+ async run(options = {}) {
34
+ console.log(chalk_1.default.cyan('\n🛡️ SafeRun Setup Wizard\n'));
35
+ console.log(chalk_1.default.gray('This wizard will help you set up complete SafeRun protection.\n'));
36
+ // Step 1: API Key
37
+ await this.stepApiKey(options.apiKey);
38
+ if (!this.apiKey) {
39
+ console.log(chalk_1.default.red('\n❌ Setup cancelled: API key is required.\n'));
40
+ process.exitCode = 1;
41
+ return;
42
+ }
43
+ // Step 2: Slack (required for alerts)
44
+ if (!options.skipSlack) {
45
+ await this.stepSlack();
46
+ }
47
+ else {
48
+ console.log(chalk_1.default.yellow('\n⚠️ Skipping Slack setup (--skip-slack)\n'));
49
+ }
50
+ // Step 3: GitHub App (optional but recommended)
51
+ if (!options.skipGithub) {
52
+ await this.stepGitHubApp();
53
+ }
54
+ else {
55
+ console.log(chalk_1.default.yellow('\n⚠️ Skipping GitHub App setup (--skip-github)\n'));
56
+ }
57
+ // Step 4: Repository Setup (if in a git repo)
58
+ await this.stepRepoSetup();
59
+ // Step 5: Protection Mode
60
+ await this.stepProtectionMode();
61
+ // Summary
62
+ this.printSummary();
63
+ }
64
+ /**
65
+ * Step 1: Configure API Key
66
+ */
67
+ async stepApiKey(providedKey) {
68
+ console.log(chalk_1.default.bold('Step 1/5: API Key'));
69
+ console.log(chalk_1.default.gray('─'.repeat(40)));
70
+ // Check if already configured
71
+ const existingKey = await (0, credentials_1.resolveApiKey)();
72
+ if (existingKey) {
73
+ console.log(chalk_1.default.green(`✓ API key already configured: ${(0, credentials_1.maskApiKey)(existingKey)}`));
74
+ const { useExisting } = await inquirer_1.default.prompt([{
75
+ type: 'confirm',
76
+ name: 'useExisting',
77
+ message: 'Use existing API key?',
78
+ default: true,
79
+ }]);
80
+ if (useExisting) {
81
+ this.apiKey = existingKey;
82
+ console.log('');
83
+ return;
84
+ }
85
+ }
86
+ // If key provided via flag
87
+ if (providedKey) {
88
+ if ((0, credentials_1.isValidApiKeyFormat)(providedKey)) {
89
+ await (0, credentials_1.saveGlobalCredentials)({ api_key: providedKey });
90
+ this.apiKey = providedKey;
91
+ console.log(chalk_1.default.green(`✓ API key saved to ${(0, credentials_1.getGlobalConfigDir)()}/credentials`));
92
+ console.log('');
93
+ return;
94
+ }
95
+ else {
96
+ console.log(chalk_1.default.yellow('⚠️ Provided API key has invalid format (should start with sr_)'));
97
+ }
98
+ }
99
+ // Interactive prompt
100
+ console.log(chalk_1.default.cyan('\n📋 How to get your API key:\n'));
101
+ console.log(' 1. Go to ' + chalk_1.default.bold('saferun.dev') + ' (or saferun-landing.vercel.app)');
102
+ console.log(' 2. Sign up with GitHub or email');
103
+ console.log(' 3. Copy your API key from the dashboard');
104
+ console.log(chalk_1.default.gray(' (starts with "sr_...")\n'));
105
+ const { openDashboard } = await inquirer_1.default.prompt([{
106
+ type: 'confirm',
107
+ name: 'openDashboard',
108
+ message: 'Open SafeRun website in browser?',
109
+ default: true,
110
+ }]);
111
+ if (openDashboard) {
112
+ await this.openBrowser(SAFERUN_DASHBOARD_URL);
113
+ console.log(chalk_1.default.gray('\n✓ Browser opened. Copy your API key after signing up.\n'));
114
+ }
115
+ const { apiKey } = await inquirer_1.default.prompt([{
116
+ type: 'password',
117
+ name: 'apiKey',
118
+ message: 'Enter your SafeRun API key:',
119
+ mask: '*',
120
+ validate: (value) => {
121
+ if (!value)
122
+ return 'API key is required';
123
+ if (!(0, credentials_1.isValidApiKeyFormat)(value)) {
124
+ return 'Invalid format. API key should start with "sr_" and be at least 20 characters.';
125
+ }
126
+ return true;
127
+ },
128
+ }]);
129
+ // Validate with API
130
+ const isValid = await this.validateApiKey(apiKey);
131
+ if (!isValid) {
132
+ console.log(chalk_1.default.red('❌ API key validation failed. Please check your key and try again.'));
133
+ return;
134
+ }
135
+ // Save globally
136
+ await (0, credentials_1.saveGlobalCredentials)({ api_key: apiKey });
137
+ this.apiKey = apiKey;
138
+ console.log(chalk_1.default.green(`\n✓ API key saved to ${(0, credentials_1.getGlobalConfigDir)()}/credentials (chmod 600)`));
139
+ console.log('');
140
+ }
141
+ /**
142
+ * Step 2: Configure Slack notifications
143
+ */
144
+ async stepSlack() {
145
+ console.log(chalk_1.default.bold('\nStep 2/5: Slack Notifications'));
146
+ console.log(chalk_1.default.gray('─'.repeat(40)));
147
+ console.log(chalk_1.default.yellow('⚠️ Slack is REQUIRED for security alerts (force push, branch delete, etc.)\n'));
148
+ // Check if already configured
149
+ const slackStatus = await this.checkSlackStatus();
150
+ if (slackStatus.configured) {
151
+ console.log(chalk_1.default.green(`✓ Slack already configured: ${slackStatus.channel || 'webhook'}`));
152
+ this.slackConfigured = true;
153
+ const { reconfigure } = await inquirer_1.default.prompt([{
154
+ type: 'confirm',
155
+ name: 'reconfigure',
156
+ message: 'Reconfigure Slack?',
157
+ default: false,
158
+ }]);
159
+ if (!reconfigure) {
160
+ console.log('');
161
+ return;
162
+ }
163
+ }
164
+ const { method } = await inquirer_1.default.prompt([{
165
+ type: 'list',
166
+ name: 'method',
167
+ message: 'Choose Slack setup method:',
168
+ choices: [
169
+ { name: '🔗 Open browser to create Slack webhook (recommended)', value: 'browser' },
170
+ { name: '📝 Enter existing webhook URL', value: 'manual' },
171
+ { name: '⏭️ Skip for now (⚠️ you won\'t receive alerts!)', value: 'skip' },
172
+ ],
173
+ }]);
174
+ if (method === 'skip') {
175
+ console.log(chalk_1.default.yellow('\n⚠️ Skipping Slack. You won\'t receive security alerts!'));
176
+ console.log(chalk_1.default.gray(' Run "saferun config slack" later to configure.\n'));
177
+ return;
178
+ }
179
+ if (method === 'browser') {
180
+ console.log(chalk_1.default.cyan('\n📋 How to create Slack webhook:\n'));
181
+ console.log(' 1. Click "Create New App" → "From scratch"');
182
+ console.log(' 2. Name it "SafeRun" and select your workspace');
183
+ console.log(' 3. Go to ' + chalk_1.default.bold('"Incoming Webhooks"') + ' in left menu');
184
+ console.log(' 4. Toggle ' + chalk_1.default.bold('"Activate Incoming Webhooks"') + ' ON');
185
+ console.log(' 5. Click "Add New Webhook to Workspace"');
186
+ console.log(' 6. Select channel (e.g., #saferun-alerts)');
187
+ console.log(' 7. Copy the webhook URL');
188
+ console.log(chalk_1.default.gray(' (starts with "https://hooks.slack.com/...")\n'));
189
+ await this.openBrowser(SLACK_APP_URL);
190
+ }
191
+ const { webhookUrl } = await inquirer_1.default.prompt([{
192
+ type: 'input',
193
+ name: 'webhookUrl',
194
+ message: 'Paste your Slack webhook URL:',
195
+ validate: (value) => {
196
+ if (!value)
197
+ return 'Webhook URL is required';
198
+ if (!value.startsWith('https://hooks.slack.com/')) {
199
+ return 'Invalid URL. Should start with https://hooks.slack.com/';
200
+ }
201
+ return true;
202
+ },
203
+ }]);
204
+ const { channel } = await inquirer_1.default.prompt([{
205
+ type: 'input',
206
+ name: 'channel',
207
+ message: 'Slack channel name:',
208
+ default: '#saferun-alerts',
209
+ validate: (value) => {
210
+ if (!value.startsWith('#') && !value.startsWith('@')) {
211
+ return 'Channel should start with # or @';
212
+ }
213
+ return true;
214
+ },
215
+ }]);
216
+ // Configure via API
217
+ const success = await this.configureSlack(webhookUrl, channel);
218
+ if (success) {
219
+ console.log(chalk_1.default.green('\n✓ Slack configured!'));
220
+ console.log(chalk_1.default.gray(' Test by triggering a SafeRun operation (e.g., git push --force)'));
221
+ this.slackConfigured = true;
222
+ }
223
+ else {
224
+ console.log(chalk_1.default.red('\n❌ Failed to configure Slack. Run "saferun config slack" to try again.'));
225
+ }
226
+ console.log('');
227
+ }
228
+ /**
229
+ * Step 3: Install GitHub App
230
+ */
231
+ async stepGitHubApp() {
232
+ console.log(chalk_1.default.bold('\nStep 3/5: GitHub App'));
233
+ console.log(chalk_1.default.gray('─'.repeat(40)));
234
+ console.log(chalk_1.default.cyan('\n📋 Why GitHub App?\n'));
235
+ console.log(' GitHub App catches dangerous operations that bypass CLI:');
236
+ console.log(' • Force pushes made directly on GitHub');
237
+ console.log(' • Branch deletions via GitHub UI');
238
+ console.log(' • Changes from other machines without SafeRun\n');
239
+ const { install } = await inquirer_1.default.prompt([{
240
+ type: 'list',
241
+ name: 'install',
242
+ message: 'Install SafeRun GitHub App?',
243
+ choices: [
244
+ { name: '✅ Yes, open browser to install', value: 'yes' },
245
+ { name: '⏭️ Skip (CLI protection only)', value: 'skip' },
246
+ { name: '✓ Already installed', value: 'done' },
247
+ ],
248
+ }]);
249
+ if (install === 'skip') {
250
+ console.log(chalk_1.default.yellow('\n⚠️ Skipping GitHub App. Webhook protection won\'t be active.'));
251
+ console.log(chalk_1.default.gray(' Install later at: ' + GITHUB_APP_URL + '\n'));
252
+ return;
253
+ }
254
+ if (install === 'done') {
255
+ this.githubAppInstalled = true;
256
+ console.log(chalk_1.default.green('\n✓ GitHub App marked as installed.\n'));
257
+ return;
258
+ }
259
+ console.log(chalk_1.default.cyan('\n📋 How to install GitHub App:\n'));
260
+ console.log(' 1. Click "Install" on the GitHub page');
261
+ console.log(' 2. Select your account or organization');
262
+ console.log(' 3. Choose "All repositories" or select specific ones');
263
+ console.log(' 4. Click "Install" to confirm\n');
264
+ await this.openBrowser(GITHUB_APP_URL);
265
+ const { installed } = await inquirer_1.default.prompt([{
266
+ type: 'confirm',
267
+ name: 'installed',
268
+ message: 'Did you complete the GitHub App installation?',
269
+ default: true,
270
+ }]);
271
+ if (installed) {
272
+ this.githubAppInstalled = true;
273
+ console.log(chalk_1.default.green('\n✓ GitHub App installed!\n'));
274
+ }
275
+ }
276
+ /**
277
+ * Step 4: Initialize repository
278
+ */
279
+ async stepRepoSetup() {
280
+ console.log(chalk_1.default.bold('\nStep 4/5: Repository Setup'));
281
+ console.log(chalk_1.default.gray('─'.repeat(40)));
282
+ const isRepo = await (0, git_1.isGitRepository)();
283
+ if (!isRepo) {
284
+ console.log(chalk_1.default.yellow('⚠️ Not inside a git repository.'));
285
+ console.log(chalk_1.default.gray(' Navigate to a repo and run "saferun init" to set up protection.\n'));
286
+ return;
287
+ }
288
+ const gitInfo = await (0, git_1.getGitInfo)();
289
+ if (!gitInfo) {
290
+ console.log(chalk_1.default.red('❌ Could not determine git repository info.\n'));
291
+ return;
292
+ }
293
+ console.log(chalk_1.default.gray(`Repository: ${gitInfo.repoSlug || gitInfo.repoRoot}\n`));
294
+ const { initialize } = await inquirer_1.default.prompt([{
295
+ type: 'confirm',
296
+ name: 'initialize',
297
+ message: `Initialize SafeRun in this repository?`,
298
+ default: true,
299
+ }]);
300
+ if (!initialize) {
301
+ console.log(chalk_1.default.gray('\n Run "saferun init" later to initialize.\n'));
302
+ return;
303
+ }
304
+ // Install hooks
305
+ console.log(chalk_1.default.gray('\nInstalling git hooks...'));
306
+ try {
307
+ const hooksResult = await (0, installer_1.installHooks)({
308
+ repoRoot: gitInfo.repoRoot,
309
+ gitDir: gitInfo.gitDir
310
+ });
311
+ console.log(chalk_1.default.green(`✓ ${hooksResult.installed.length} hooks installed`));
312
+ }
313
+ catch (err) {
314
+ console.log(chalk_1.default.red(`❌ Failed to install hooks: ${err}`));
315
+ }
316
+ // Check/update .gitignore
317
+ console.log(chalk_1.default.gray('\nChecking .gitignore...'));
318
+ const gitignoreCheck = await (0, gitignore_1.checkGitignore)(gitInfo.repoRoot);
319
+ if (!gitignoreCheck.hasSaferunEntries) {
320
+ console.log(chalk_1.default.yellow(`⚠️ SafeRun entries not in .gitignore`));
321
+ if (gitignoreCheck.missingEntries.length > 0) {
322
+ console.log(chalk_1.default.gray(' Missing entries:'));
323
+ for (const entry of gitignoreCheck.missingEntries.slice(0, 3)) {
324
+ console.log(chalk_1.default.gray(` • ${entry}`));
325
+ }
326
+ if (gitignoreCheck.missingEntries.length > 3) {
327
+ console.log(chalk_1.default.gray(` • ... and ${gitignoreCheck.missingEntries.length - 3} more`));
328
+ }
329
+ }
330
+ const { updateGitignore } = await inquirer_1.default.prompt([{
331
+ type: 'confirm',
332
+ name: 'updateGitignore',
333
+ message: 'Add SafeRun entries to .gitignore?',
334
+ default: true,
335
+ }]);
336
+ if (updateGitignore) {
337
+ await (0, gitignore_1.addToGitignore)(gitInfo.repoRoot);
338
+ console.log(chalk_1.default.green('✓ .gitignore updated'));
339
+ }
340
+ else {
341
+ console.log(chalk_1.default.yellow('⚠️ Please add .saferun/credentials to .gitignore manually!'));
342
+ }
343
+ }
344
+ else {
345
+ console.log(chalk_1.default.green('✓ .gitignore already has SafeRun entries'));
346
+ }
347
+ // Save local config (mode will be set in Step 5)
348
+ console.log(chalk_1.default.gray('\nCreating .saferun/config.yml...'));
349
+ let config = await (0, config_1.loadConfig)(gitInfo.repoRoot, { allowCreate: true });
350
+ // Set repo info
351
+ if (gitInfo.repoSlug) {
352
+ config.github.repo = gitInfo.repoSlug;
353
+ }
354
+ if (gitInfo.defaultBranch) {
355
+ const branches = new Set(config.github.protected_branches);
356
+ branches.add(gitInfo.defaultBranch);
357
+ config.github.protected_branches = Array.from(branches);
358
+ }
359
+ await (0, config_1.saveConfig)(config, gitInfo.repoRoot);
360
+ console.log(chalk_1.default.green('✓ Config saved'));
361
+ this.repoInitialized = true;
362
+ console.log('');
363
+ }
364
+ /**
365
+ * Step 5: Select Protection Mode
366
+ */
367
+ async stepProtectionMode() {
368
+ console.log(chalk_1.default.bold('\nStep 5/5: Protection Mode'));
369
+ console.log(chalk_1.default.gray('─'.repeat(40)));
370
+ if (!this.repoInitialized) {
371
+ console.log(chalk_1.default.gray('Skipped (repository not initialized)\n'));
372
+ return;
373
+ }
374
+ console.log(chalk_1.default.cyan('\n📋 What should SafeRun do when it detects risky operations?\n'));
375
+ const { mode } = await inquirer_1.default.prompt([{
376
+ type: 'list',
377
+ name: 'mode',
378
+ message: 'Select protection mode:',
379
+ default: 'block',
380
+ choices: [
381
+ { name: '👀 Monitor — log only, no blocking (for testing)', value: 'monitor' },
382
+ { name: '⚠️ Warn — show warnings, but allow operations', value: 'warn' },
383
+ { name: '🛑 Block — require approval for risky actions (recommended)', value: 'block' },
384
+ { name: '🔒 Enforce — strict blocking, maximum security', value: 'enforce' },
385
+ ],
386
+ }]);
387
+ this.protectionMode = mode;
388
+ // Update config with mode
389
+ const gitInfo = await (0, git_1.getGitInfo)();
390
+ if (gitInfo) {
391
+ let config = await (0, config_1.loadConfig)(gitInfo.repoRoot, { allowCreate: false });
392
+ config.mode = mode;
393
+ await (0, config_1.saveConfig)(config, gitInfo.repoRoot);
394
+ }
395
+ console.log(chalk_1.default.green(`\n✓ Protection mode set to: ${mode.toUpperCase()}`));
396
+ console.log('');
397
+ }
398
+ /**
399
+ * Print setup summary
400
+ */
401
+ printSummary() {
402
+ console.log(chalk_1.default.cyan('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
403
+ console.log(chalk_1.default.bold('🎉 SafeRun Setup Complete!\n'));
404
+ console.log('Your setup:');
405
+ console.log(` ${this.apiKey ? chalk_1.default.green('✓') : chalk_1.default.red('✗')} API Key: ${this.apiKey ? 'configured (global)' : 'not configured'}`);
406
+ console.log(` ${this.slackConfigured ? chalk_1.default.green('✓') : chalk_1.default.yellow('⚠')} Slack: ${this.slackConfigured ? 'connected' : 'not configured'}`);
407
+ console.log(` ${this.githubAppInstalled ? chalk_1.default.green('✓') : chalk_1.default.yellow('⚠')} GitHub App: ${this.githubAppInstalled ? 'installed' : 'not installed'}`);
408
+ console.log(` ${this.repoInitialized ? chalk_1.default.green('✓') : chalk_1.default.yellow('⚠')} Repository: ${this.repoInitialized ? 'hooks installed' : 'skipped (run "saferun init")'}`);
409
+ console.log(` ${this.repoInitialized ? chalk_1.default.green('✓') : chalk_1.default.gray('○')} Mode: ${this.repoInitialized ? this.protectionMode.toUpperCase() : 'not set'}`);
410
+ console.log(chalk_1.default.gray('\nNext steps:'));
411
+ if (!this.slackConfigured) {
412
+ console.log(chalk_1.default.yellow(' • Run "saferun config slack" to configure notifications'));
413
+ }
414
+ if (!this.githubAppInstalled) {
415
+ console.log(chalk_1.default.gray(` • Install GitHub App: ${GITHUB_APP_URL}`));
416
+ }
417
+ if (this.repoInitialized) {
418
+ console.log(chalk_1.default.cyan(' • Test it: git push --force origin main'));
419
+ }
420
+ console.log(chalk_1.default.gray('\nVerify setup:'));
421
+ console.log(chalk_1.default.cyan(' saferun doctor'));
422
+ console.log(chalk_1.default.gray('\nDocumentation:'));
423
+ console.log(chalk_1.default.cyan(' https://saferun.dev/docs\n'));
424
+ }
425
+ // ─────────────────────────────────────────────────────────────────
426
+ // Helper methods
427
+ // ─────────────────────────────────────────────────────────────────
428
+ async openBrowser(url) {
429
+ const platform = os_1.default.platform();
430
+ try {
431
+ if (platform === 'darwin') {
432
+ await execAsync(`open "${url}"`);
433
+ }
434
+ else if (platform === 'win32') {
435
+ await execAsync(`start "" "${url}"`);
436
+ }
437
+ else {
438
+ // Linux
439
+ await execAsync(`xdg-open "${url}"`);
440
+ }
441
+ }
442
+ catch {
443
+ console.log(chalk_1.default.gray(`\nCouldn't open browser. Please visit:\n${chalk_1.default.cyan(url)}\n`));
444
+ }
445
+ }
446
+ async validateApiKey(apiKey) {
447
+ try {
448
+ // Use an authenticated endpoint to validate the key
449
+ const response = await fetch(`${SAFERUN_API_URL}/v1/settings`, {
450
+ headers: { 'X-API-Key': apiKey },
451
+ });
452
+ // 200 = valid, 401/403 = invalid, 404 = endpoint not found (still valid key format)
453
+ return response.ok || response.status === 404;
454
+ }
455
+ catch {
456
+ // Network error - assume key is valid if format is correct
457
+ return true;
458
+ }
459
+ }
460
+ async checkSlackStatus() {
461
+ if (!this.apiKey)
462
+ return { configured: false };
463
+ try {
464
+ const response = await fetch(`${SAFERUN_API_URL}/v1/settings/notifications`, {
465
+ headers: { 'X-API-Key': this.apiKey },
466
+ });
467
+ if (response.ok) {
468
+ const data = await response.json();
469
+ return {
470
+ configured: data.slack_enabled === true,
471
+ channel: data.slack_channel,
472
+ };
473
+ }
474
+ }
475
+ catch {
476
+ // Ignore errors
477
+ }
478
+ return { configured: false };
479
+ }
480
+ async configureSlack(webhookUrl, channel) {
481
+ if (!this.apiKey)
482
+ return false;
483
+ try {
484
+ const response = await fetch(`${SAFERUN_API_URL}/v1/settings/notifications`, {
485
+ method: 'PUT',
486
+ headers: {
487
+ 'Content-Type': 'application/json',
488
+ 'X-API-Key': this.apiKey,
489
+ },
490
+ body: JSON.stringify({
491
+ slack_enabled: true,
492
+ slack_webhook_url: webhookUrl,
493
+ slack_channel: channel,
494
+ notification_channels: ['slack'],
495
+ }),
496
+ });
497
+ return response.ok;
498
+ }
499
+ catch {
500
+ return false;
501
+ }
502
+ }
503
+ async sendTestSlack() {
504
+ if (!this.apiKey)
505
+ return;
506
+ console.log(chalk_1.default.gray('Sending test notification...'));
507
+ try {
508
+ const response = await fetch(`${SAFERUN_API_URL}/v1/settings/notifications/test`, {
509
+ method: 'POST',
510
+ headers: {
511
+ 'Content-Type': 'application/json',
512
+ 'X-API-Key': this.apiKey,
513
+ },
514
+ });
515
+ if (response.ok) {
516
+ console.log(chalk_1.default.green('✓ Test notification sent! Check your Slack channel.'));
517
+ }
518
+ else {
519
+ console.log(chalk_1.default.yellow('⚠️ Could not send test notification.'));
520
+ }
521
+ }
522
+ catch {
523
+ console.log(chalk_1.default.yellow('⚠️ Could not send test notification (network error).'));
524
+ }
525
+ }
526
+ }
527
+ exports.SetupCommand = SetupCommand;
528
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -137,20 +137,23 @@ async function interceptClean(context) {
137
137
  catch (error) {
138
138
  const message = error instanceof Error ? error.message : String(error);
139
139
  console.error(chalk_1.default.red(`SafeRun error: ${message}`));
140
- console.warn(chalk_1.default.yellow('Proceeding without SafeRun approval.'));
141
- context.metrics.track('operation_allowed', {
140
+ // SECURITY: Block operation when API unavailable (fail-secure)
141
+ console.error(chalk_1.default.red('🚫 Operation blocked - SafeRun API unreachable'));
142
+ console.error(chalk_1.default.yellow(' Cannot verify safety without API connection.'));
143
+ context.metrics.track('operation_blocked', {
142
144
  hook: 'alias:clean',
143
145
  operation_type: 'clean',
144
146
  repo: repoSlug,
145
- reason: 'api_error',
147
+ reason: 'api_unreachable',
146
148
  }).catch(() => undefined);
147
149
  await (0, logger_1.logOperation)(context.gitInfo.repoRoot, {
148
150
  event: 'clean',
149
151
  operation: 'clean',
150
152
  repo: repoSlug,
151
- outcome: 'api_error',
153
+ outcome: 'blocked_api_error',
152
154
  error: message,
153
155
  });
156
+ return 1;
154
157
  }
155
158
  const exitCode = await (0, git_1.runGitCommand)(['clean', ...context.args], {
156
159
  cwd: context.gitInfo.repoRoot,
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/interceptors/clean.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/interceptors/clean.ts"],"names":[],"mappings":"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"}