@saferun/cli 0.5.11 → 0.5.13

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/README.md CHANGED
@@ -663,11 +663,6 @@ saferun config set api.url https://your-server.com
663
663
 
664
664
  ### Bypass SafeRun temporarily
665
665
 
666
- **Disable for single operation:**
667
- ```bash
668
- SAFERUN_DISABLE=1 git push --force origin main
669
- ```
670
-
671
666
  **Disable globally:**
672
667
  ```bash
673
668
  saferun config set mode lenient
@@ -1,5 +1,16 @@
1
+ interface SlackConfigOptions {
2
+ channel?: string;
3
+ webhookUrl?: string;
4
+ botToken?: string;
5
+ disable?: boolean;
6
+ test?: boolean;
7
+ }
1
8
  export declare class ConfigCommand {
2
9
  show(): Promise<void>;
3
10
  set(path: string, value: string): Promise<void>;
11
+ slack(options: SlackConfigOptions): Promise<void>;
12
+ private configureSlack;
13
+ private testSlack;
4
14
  private load;
5
15
  }
16
+ export {};
@@ -6,8 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ConfigCommand = void 0;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const js_yaml_1 = require("js-yaml");
9
+ const inquirer_1 = __importDefault(require("inquirer"));
9
10
  const git_1 = require("../utils/git");
10
11
  const config_1 = require("../utils/config");
12
+ const api_client_1 = require("../utils/api-client");
11
13
  class ConfigCommand {
12
14
  async show() {
13
15
  const config = await this.load();
@@ -37,6 +39,158 @@ class ConfigCommand {
37
39
  await (0, config_1.saveConfig)(config, gitInfo.repoRoot);
38
40
  console.log(chalk_1.default.green(`✓ Updated ${path}`));
39
41
  }
42
+ async slack(options) {
43
+ const isRepo = await (0, git_1.isGitRepository)();
44
+ if (!isRepo) {
45
+ console.error(chalk_1.default.red('❌ Not inside a git repository.'));
46
+ process.exitCode = 1;
47
+ return;
48
+ }
49
+ const gitInfo = await (0, git_1.getGitInfo)();
50
+ if (!gitInfo) {
51
+ console.error(chalk_1.default.red('❌ Unable to determine git repository information.'));
52
+ process.exitCode = 1;
53
+ return;
54
+ }
55
+ const config = await (0, config_1.loadConfig)(gitInfo.repoRoot, { allowCreate: true });
56
+ const apiKey = (0, api_client_1.resolveApiKey)(config);
57
+ if (!apiKey) {
58
+ console.error(chalk_1.default.red('❌ No API key configured.'));
59
+ console.error(chalk_1.default.yellow(' Set SAFERUN_API_KEY env or run: saferun init'));
60
+ process.exitCode = 1;
61
+ return;
62
+ }
63
+ console.log(chalk_1.default.cyan('\n🔔 SafeRun Slack Configuration\n'));
64
+ // Test mode - send test notification
65
+ if (options.test) {
66
+ await this.testSlack(apiKey, config.api.url);
67
+ return;
68
+ }
69
+ // Disable slack
70
+ if (options.disable) {
71
+ await this.configureSlack(apiKey, config.api.url, {
72
+ slack_enabled: false,
73
+ slack_channel: '#saferun-alerts',
74
+ notification_channels: ['slack'],
75
+ });
76
+ console.log(chalk_1.default.green('✅ Slack notifications disabled'));
77
+ return;
78
+ }
79
+ // Interactive mode if no options provided
80
+ if (!options.channel && !options.webhookUrl && !options.botToken) {
81
+ const answers = await inquirer_1.default.prompt([
82
+ {
83
+ type: 'list',
84
+ name: 'method',
85
+ message: 'Choose Slack integration method:',
86
+ choices: [
87
+ { name: 'Webhook URL (recommended, easier setup)', value: 'webhook' },
88
+ { name: 'Bot Token (advanced, more features)', value: 'bot' },
89
+ ],
90
+ },
91
+ {
92
+ type: 'input',
93
+ name: 'webhookUrl',
94
+ message: 'Slack Webhook URL:',
95
+ when: (answers) => answers.method === 'webhook',
96
+ validate: (value) => {
97
+ if (!value)
98
+ return 'Webhook URL is required';
99
+ if (!value.startsWith('https://hooks.slack.com/')) {
100
+ return 'Invalid webhook URL. Should start with https://hooks.slack.com/';
101
+ }
102
+ return true;
103
+ },
104
+ },
105
+ {
106
+ type: 'input',
107
+ name: 'botToken',
108
+ message: 'Slack Bot Token (xoxb-...):',
109
+ when: (answers) => answers.method === 'bot',
110
+ validate: (value) => {
111
+ if (!value)
112
+ return 'Bot token is required';
113
+ if (!value.startsWith('xoxb-')) {
114
+ return 'Invalid bot token. Should start with xoxb-';
115
+ }
116
+ return true;
117
+ },
118
+ },
119
+ {
120
+ type: 'input',
121
+ name: 'channel',
122
+ message: 'Slack Channel:',
123
+ default: '#saferun-alerts',
124
+ validate: (value) => {
125
+ if (!value.startsWith('#') && !value.startsWith('@')) {
126
+ return 'Channel should start with # or @';
127
+ }
128
+ return true;
129
+ },
130
+ },
131
+ ]);
132
+ options.webhookUrl = answers.webhookUrl || undefined;
133
+ options.botToken = answers.botToken || undefined;
134
+ options.channel = answers.channel;
135
+ }
136
+ // Configure slack
137
+ if (!options.webhookUrl && !options.botToken) {
138
+ console.error(chalk_1.default.red('❌ Either --webhook-url or --bot-token required'));
139
+ process.exitCode = 1;
140
+ return;
141
+ }
142
+ await this.configureSlack(apiKey, config.api.url, {
143
+ slack_webhook_url: options.webhookUrl,
144
+ slack_bot_token: options.botToken,
145
+ slack_channel: options.channel || '#saferun-alerts',
146
+ slack_enabled: true,
147
+ notification_channels: ['slack'],
148
+ });
149
+ console.log(chalk_1.default.green('\n✅ Slack notifications configured!'));
150
+ console.log(chalk_1.default.gray(` Channel: ${options.channel || '#saferun-alerts'}`));
151
+ console.log(chalk_1.default.gray('\n💡 Test with: saferun config slack --test'));
152
+ console.log(chalk_1.default.gray(' Or trigger a SafeRun operation (e.g., git push --force)'));
153
+ }
154
+ async configureSlack(apiKey, apiUrl, config) {
155
+ const url = `${apiUrl}/v1/settings/notifications`;
156
+ const response = await fetch(url, {
157
+ method: 'PUT',
158
+ headers: {
159
+ 'Content-Type': 'application/json',
160
+ 'X-API-Key': apiKey,
161
+ },
162
+ body: JSON.stringify(config),
163
+ });
164
+ if (!response.ok) {
165
+ const error = await response.text();
166
+ throw new Error(`Failed to configure Slack: ${error}`);
167
+ }
168
+ }
169
+ async testSlack(apiKey, apiUrl) {
170
+ console.log(chalk_1.default.gray('Sending test notification...\n'));
171
+ const url = `${apiUrl}/v1/settings/notifications/test/slack`;
172
+ try {
173
+ const response = await fetch(url, {
174
+ method: 'POST',
175
+ headers: {
176
+ 'X-API-Key': apiKey,
177
+ },
178
+ });
179
+ if (!response.ok) {
180
+ const error = await response.text();
181
+ console.error(chalk_1.default.red(`❌ Failed to send test notification: ${error}`));
182
+ process.exitCode = 1;
183
+ return;
184
+ }
185
+ const result = await response.json();
186
+ console.log(chalk_1.default.green('✅ ' + result.message));
187
+ console.log(chalk_1.default.gray('\n💡 Check your Slack channel for the test message'));
188
+ }
189
+ catch (error) {
190
+ console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
191
+ process.exitCode = 1;
192
+ }
193
+ }
40
194
  async load() {
41
195
  const isRepo = await (0, git_1.isGitRepository)();
42
196
  if (!isRepo) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,qCAA2C;AAC3C,sCAA2D;AAC3D,4CAAwF;AAExF,MAAa,aAAa;IACxB,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAA,cAAQ,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,KAAa;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,IAAI,MAAM,GAAY,KAAK,CAAC;QAC5B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,IAAA,uBAAc,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,GAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,IAAA,mBAAU,EAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAe,GAAE,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,GAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAhDD,sCAgDC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,qCAA2C;AAC3C,wDAAgC;AAChC,sCAA2D;AAC3D,4CAAwF;AACxF,oDAAoD;AAUpD,MAAa,aAAa;IACxB,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAA,cAAQ,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,KAAa;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,IAAI,MAAM,GAAY,KAAK,CAAC;QAC5B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,IAAA,uBAAc,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,GAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,IAAA,mBAAU,EAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAA2B;QACrC,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAe,GAAE,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,GAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAE9D,qCAAqC;QACrC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;gBAChD,aAAa,EAAE,KAAK;gBACpB,aAAa,EAAE,iBAAiB;gBAChC,qBAAqB,EAAE,CAAC,OAAO,CAAC;aACjC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACpC;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,kCAAkC;oBAC3C,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,yCAAyC,EAAE,KAAK,EAAE,SAAS,EAAE;wBACrE,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,KAAK,EAAE;qBAC9D;iBACF;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,oBAAoB;oBAC7B,IAAI,EAAE,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS;oBACpD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,IAAI,CAAC,KAAK;4BAAE,OAAO,yBAAyB,CAAC;wBAC7C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;4BAClD,OAAO,iEAAiE,CAAC;wBAC3E,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,6BAA6B;oBACtC,IAAI,EAAE,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK;oBAChD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,IAAI,CAAC,KAAK;4BAAE,OAAO,uBAAuB,CAAC;wBAC3C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC/B,OAAO,4CAA4C,CAAC;wBACtD,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gBAAgB;oBACzB,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;4BACrD,OAAO,kCAAkC,CAAC;wBAC5C,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;YACrD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;YACjD,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACpC,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YAChD,iBAAiB,EAAE,OAAO,CAAC,UAAU;YACrC,eAAe,EAAE,OAAO,CAAC,QAAQ;YACjC,aAAa,EAAE,OAAO,CAAC,OAAO,IAAI,iBAAiB;YACnD,aAAa,EAAE,IAAI;YACnB,qBAAqB,EAAE,CAAC,OAAO,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;IACxF,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,MAAc,EACd,MAAc,EACd,MAAW;QAEX,MAAM,GAAG,GAAG,GAAG,MAAM,4BAA4B,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,MAAM;aACpB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,MAAc;QACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAE1D,MAAM,GAAG,GAAG,GAAG,MAAM,uCAAuC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,WAAW,EAAE,MAAM;iBACpB;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAe,GAAE,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,GAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA7ND,sCA6NC"}
@@ -105,6 +105,18 @@ function registerCommands(program) {
105
105
  const { ConfigCommand } = await Promise.resolve().then(() => __importStar(require('./commands/config')));
106
106
  await new ConfigCommand().set('mode', mode);
107
107
  });
108
+ config
109
+ .command('slack')
110
+ .description('Configure Slack notifications')
111
+ .option('--channel <channel>', 'Slack channel (e.g., #my-team)')
112
+ .option('--webhook-url <url>', 'Slack webhook URL')
113
+ .option('--bot-token <token>', 'Slack bot token (xoxb-...)')
114
+ .option('--disable', 'Disable Slack notifications')
115
+ .option('--test', 'Send test notification')
116
+ .action(async (options) => {
117
+ const { ConfigCommand } = await Promise.resolve().then(() => __importStar(require('./commands/config')));
118
+ await new ConfigCommand().slack(options);
119
+ });
108
120
  // saferun allow - whitelist management
109
121
  program
110
122
  .command('allow')
@@ -1 +1 @@
1
- {"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":"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"}
@@ -131,12 +131,6 @@ Shows if AI agent is detected and confidence level.
131
131
  saferun init --force
132
132
  ```
133
133
 
134
- ### Temporarily disable SafeRun
135
-
136
- ```bash
137
- SAFERUN_DISABLE=1 git push --force origin main
138
- ```
139
-
140
134
  ### Switch to offline mode
141
135
 
142
136
  If API is unreachable:
@@ -517,11 +517,6 @@ saferun history --ai-only --since 1d
517
517
 
518
518
  If you need to bypass SafeRun completely in emergency:
519
519
 
520
- ```yaml
521
- env:
522
- SAFERUN_DISABLE: "1" # Only for emergencies!
523
- ```
524
-
525
520
  ## Troubleshooting
526
521
 
527
522
  ### CI is being blocked
@@ -170,12 +170,6 @@ git push origin staging
170
170
 
171
171
  **1. Always use SafeRun**
172
172
 
173
- Never disable SafeRun without team approval:
174
- ```bash
175
- # DON'T DO THIS without permission:
176
- SAFERUN_DISABLE=1 git push --force
177
- ```
178
-
179
173
  **2. Request approval for protected branches**
180
174
 
181
175
  If you need to force push to main:
@@ -2,8 +2,8 @@
2
2
  # SafeRun post-checkout hook
3
3
  # Protects against dangerous AI agent operations
4
4
 
5
- # Bypass for CI or explicit disable
6
- if [ "$SAFERUN_DISABLE" = "1" ] || [ "$CI" = "true" ] || [ "$CI" = "1" ]; then
5
+ # Allow bypass for CI environments only
6
+ if [ "$CI" = "true" ] || [ "$CI" = "1" ]; then
7
7
  exit 0
8
8
  fi
9
9
 
package/hooks/pre-commit CHANGED
@@ -2,8 +2,8 @@
2
2
  # SafeRun pre-commit hook
3
3
  # Protects against dangerous AI agent operations
4
4
 
5
- # Bypass for CI or explicit disable
6
- if [ "$SAFERUN_DISABLE" = "1" ] || [ "$CI" = "true" ] || [ "$CI" = "1" ]; then
5
+ # Allow bypass for CI environments only
6
+ if [ "$CI" = "true" ] || [ "$CI" = "1" ]; then
7
7
  exit 0
8
8
  fi
9
9
 
package/hooks/pre-push CHANGED
@@ -6,8 +6,8 @@ REMOTE_NAME="$1"
6
6
  REMOTE_URL="$2"
7
7
  shift 2 >/dev/null 2>&1 || true
8
8
 
9
- # Allow bypass for CI or explicit disable flag
10
- if [ "$SAFERUN_DISABLE" = "1" ] || [ "$CI" = "true" ] || [ "$CI" = "1" ]; then
9
+ # Allow bypass for CI environments only
10
+ if [ "$CI" = "true" ] || [ "$CI" = "1" ]; then
11
11
  exit 0
12
12
  fi
13
13
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saferun/cli",
3
- "version": "0.5.11",
3
+ "version": "0.5.13",
4
4
  "description": "AI Safety Middleware - Protect your Git workflows from dangerous AI agent operations",
5
5
  "author": "SafeRun Team",
6
6
  "license": "MIT",