@saferun/cli 0.5.38 → 0.6.1
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/dist/commands/doctor.d.ts +2 -1
- package/dist/commands/doctor.js +62 -46
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/hook.js +12 -2
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.js +22 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/is-protected.d.ts +10 -0
- package/dist/commands/is-protected.js +40 -0
- package/dist/commands/is-protected.js.map +1 -0
- package/dist/commands/shell-init.js +5 -3
- package/dist/commands/shell-init.js.map +1 -1
- package/dist/commands/uninstall.js +6 -0
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/register-commands.js +9 -0
- package/dist/register-commands.js.map +1 -1
- package/dist/utils/global-config.d.ts +51 -0
- package/dist/utils/global-config.js +283 -0
- package/dist/utils/global-config.js.map +1 -0
- package/dist/utils/protected-repos.d.ts +64 -0
- package/dist/utils/protected-repos.js +178 -0
- package/dist/utils/protected-repos.js.map +1 -0
- package/package.json +1 -1
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
export declare class DoctorCommand {
|
|
6
6
|
private checks;
|
|
7
7
|
run(): Promise<void>;
|
|
8
|
+
private checkGlobalConfig;
|
|
9
|
+
private checkProtectedRepo;
|
|
8
10
|
private checkApiKey;
|
|
9
11
|
private checkApiServer;
|
|
10
12
|
private checkSlack;
|
|
11
13
|
private checkGitHubApp;
|
|
12
14
|
private checkGitHooks;
|
|
13
15
|
private checkShellWrapper;
|
|
14
|
-
private checkGitignore;
|
|
15
16
|
private checkFilePermissions;
|
|
16
17
|
private printResults;
|
|
17
18
|
private fetchWithTimeout;
|
package/dist/commands/doctor.js
CHANGED
|
@@ -13,9 +13,10 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
13
13
|
const path_1 = __importDefault(require("path"));
|
|
14
14
|
const os_1 = __importDefault(require("os"));
|
|
15
15
|
const git_1 = require("../utils/git");
|
|
16
|
+
const global_config_1 = require("../utils/global-config");
|
|
17
|
+
const protected_repos_1 = require("../utils/protected-repos");
|
|
16
18
|
const installer_1 = require("../hooks/installer");
|
|
17
19
|
const credentials_1 = require("../utils/credentials");
|
|
18
|
-
const gitignore_1 = require("../utils/gitignore");
|
|
19
20
|
const SAFERUN_API_URL = 'https://saferun-api.up.railway.app';
|
|
20
21
|
class DoctorCommand {
|
|
21
22
|
constructor() {
|
|
@@ -26,15 +27,74 @@ class DoctorCommand {
|
|
|
26
27
|
// Run all checks
|
|
27
28
|
await this.checkApiKey();
|
|
28
29
|
await this.checkApiServer();
|
|
30
|
+
await this.checkGlobalConfig();
|
|
31
|
+
await this.checkProtectedRepo();
|
|
29
32
|
await this.checkSlack();
|
|
30
33
|
await this.checkGitHubApp();
|
|
31
34
|
await this.checkGitHooks();
|
|
32
35
|
await this.checkShellWrapper();
|
|
33
|
-
|
|
36
|
+
// Note: .gitignore check removed - config is now in ~/.saferun/ (global)
|
|
34
37
|
await this.checkFilePermissions();
|
|
35
38
|
// Print results
|
|
36
39
|
this.printResults();
|
|
37
40
|
}
|
|
41
|
+
async checkGlobalConfig() {
|
|
42
|
+
if ((0, global_config_1.globalConfigExists)()) {
|
|
43
|
+
const config = await (0, global_config_1.loadGlobalConfig)();
|
|
44
|
+
this.checks.push({
|
|
45
|
+
name: 'Global Config',
|
|
46
|
+
status: 'ok',
|
|
47
|
+
message: `Mode: ${config.mode.toUpperCase()}`,
|
|
48
|
+
detail: '~/.saferun/config.yml',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.checks.push({
|
|
53
|
+
name: 'Global Config',
|
|
54
|
+
status: 'warn',
|
|
55
|
+
message: 'Using defaults',
|
|
56
|
+
detail: 'Run "saferun setup" to customize',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async checkProtectedRepo() {
|
|
61
|
+
const isRepo = await (0, git_1.isGitRepository)();
|
|
62
|
+
if (!isRepo) {
|
|
63
|
+
this.checks.push({
|
|
64
|
+
name: 'Protected Repo',
|
|
65
|
+
status: 'skip',
|
|
66
|
+
message: 'Not in a git repository',
|
|
67
|
+
});
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const gitInfo = await (0, git_1.getGitInfo)();
|
|
71
|
+
if (!gitInfo) {
|
|
72
|
+
this.checks.push({
|
|
73
|
+
name: 'Protected Repo',
|
|
74
|
+
status: 'error',
|
|
75
|
+
message: 'Could not get git info',
|
|
76
|
+
});
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const isProtected = (0, protected_repos_1.isRepoProtectedSync)(gitInfo.repoRoot);
|
|
80
|
+
const repoInfo = (0, protected_repos_1.getProtectedRepoSync)(gitInfo.repoRoot);
|
|
81
|
+
if (isProtected) {
|
|
82
|
+
this.checks.push({
|
|
83
|
+
name: 'Protected Repo',
|
|
84
|
+
status: 'ok',
|
|
85
|
+
message: `Registered (${(repoInfo === null || repoInfo === void 0 ? void 0 : repoInfo.github) || (repoInfo === null || repoInfo === void 0 ? void 0 : repoInfo.name) || 'local'})`,
|
|
86
|
+
detail: 'Protected via global registry',
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.checks.push({
|
|
91
|
+
name: 'Protected Repo',
|
|
92
|
+
status: 'error',
|
|
93
|
+
message: 'Not protected',
|
|
94
|
+
detail: 'Run "saferun init" to protect this repo',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
38
98
|
async checkApiKey() {
|
|
39
99
|
const apiKey = await (0, credentials_1.resolveApiKey)();
|
|
40
100
|
if (!apiKey) {
|
|
@@ -328,50 +388,6 @@ class DoctorCommand {
|
|
|
328
388
|
});
|
|
329
389
|
}
|
|
330
390
|
}
|
|
331
|
-
async checkGitignore() {
|
|
332
|
-
const isRepo = await (0, git_1.isGitRepository)();
|
|
333
|
-
if (!isRepo) {
|
|
334
|
-
this.checks.push({
|
|
335
|
-
name: '.gitignore',
|
|
336
|
-
status: 'skip',
|
|
337
|
-
message: 'Not in a git repository',
|
|
338
|
-
});
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
const gitInfo = await (0, git_1.getGitInfo)();
|
|
342
|
-
if (!gitInfo) {
|
|
343
|
-
this.checks.push({
|
|
344
|
-
name: '.gitignore',
|
|
345
|
-
status: 'skip',
|
|
346
|
-
message: 'Could not get git info',
|
|
347
|
-
});
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
const result = await (0, gitignore_1.checkGitignore)(gitInfo.repoRoot);
|
|
351
|
-
if (result.hasSaferunEntries) {
|
|
352
|
-
this.checks.push({
|
|
353
|
-
name: '.gitignore',
|
|
354
|
-
status: 'ok',
|
|
355
|
-
message: 'Credentials excluded',
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
else if (result.exists) {
|
|
359
|
-
this.checks.push({
|
|
360
|
-
name: '.gitignore',
|
|
361
|
-
status: 'warn',
|
|
362
|
-
message: 'Missing SafeRun entries',
|
|
363
|
-
detail: 'Run "saferun setup" to add entries',
|
|
364
|
-
});
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
this.checks.push({
|
|
368
|
-
name: '.gitignore',
|
|
369
|
-
status: 'warn',
|
|
370
|
-
message: 'No .gitignore file',
|
|
371
|
-
detail: 'Run "saferun setup" to create',
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
391
|
async checkFilePermissions() {
|
|
376
392
|
const credentialsPath = (0, credentials_1.getCredentialsPath)();
|
|
377
393
|
if (!fs_1.default.existsSync(credentialsPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/hook.js
CHANGED
|
@@ -38,7 +38,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.HookCommand = void 0;
|
|
40
40
|
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
-
const
|
|
41
|
+
const global_config_1 = require("../utils/global-config");
|
|
42
|
+
const protected_repos_1 = require("../utils/protected-repos");
|
|
42
43
|
const api_client_1 = require("../utils/api-client");
|
|
43
44
|
const git_1 = require("../utils/git");
|
|
44
45
|
const metrics_1 = require("../utils/metrics");
|
|
@@ -49,7 +50,16 @@ class HookCommand {
|
|
|
49
50
|
if (!gitInfo) {
|
|
50
51
|
return (0, git_1.runGitCommand)(this.mapHandlerToGitCommand(handler, forwarded), { disableAliases: [this.aliasName(handler)] });
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
+
// Check if repo is protected (using global registry)
|
|
54
|
+
if (!(0, protected_repos_1.isRepoProtectedSync)(gitInfo.repoRoot)) {
|
|
55
|
+
// Not protected - pass through
|
|
56
|
+
return (0, git_1.runGitCommand)(this.mapHandlerToGitCommand(handler, forwarded), {
|
|
57
|
+
cwd: gitInfo.repoRoot,
|
|
58
|
+
disableAliases: [this.aliasName(handler)]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// Load global config (not local!)
|
|
62
|
+
const config = await (0, global_config_1.loadGlobalConfig)();
|
|
53
63
|
const modeSettings = (_a = config.modes) === null || _a === void 0 ? void 0 : _a[config.mode];
|
|
54
64
|
const metrics = new metrics_1.MetricsCollector(gitInfo.repoRoot, config);
|
|
55
65
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
package/dist/commands/init.js
CHANGED
|
@@ -9,7 +9,8 @@ const inquirer_1 = __importDefault(require("inquirer"));
|
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
10
|
const fs_1 = __importDefault(require("fs"));
|
|
11
11
|
const git_1 = require("../utils/git");
|
|
12
|
-
const
|
|
12
|
+
const global_config_1 = require("../utils/global-config");
|
|
13
|
+
const protected_repos_1 = require("../utils/protected-repos");
|
|
13
14
|
const installer_1 = require("../hooks/installer");
|
|
14
15
|
class InitCommand {
|
|
15
16
|
async run(options) {
|
|
@@ -26,26 +27,30 @@ class InitCommand {
|
|
|
26
27
|
return;
|
|
27
28
|
}
|
|
28
29
|
console.log(chalk_1.default.cyan('\n🛡️ SafeRun CLI Setup\n'));
|
|
29
|
-
|
|
30
|
+
// Load global config (not local!)
|
|
31
|
+
let config = await (0, global_config_1.loadGlobalConfig)();
|
|
32
|
+
// Configure mode and branches
|
|
30
33
|
config = await this.configure(config, gitInfo.repoRoot, options.auto, gitInfo.repoSlug, gitInfo.defaultBranch);
|
|
31
|
-
|
|
34
|
+
// Save to global config
|
|
35
|
+
await (0, global_config_1.saveGlobalConfig)(config);
|
|
36
|
+
// Register repo in global protected repos registry
|
|
37
|
+
await (0, protected_repos_1.registerProtectedRepo)(gitInfo.repoRoot, {
|
|
38
|
+
github: gitInfo.repoSlug,
|
|
39
|
+
mode: config.mode,
|
|
40
|
+
});
|
|
32
41
|
const hooksInfo = await (0, installer_1.installHooks)({ repoRoot: gitInfo.repoRoot, gitDir: gitInfo.gitDir });
|
|
33
42
|
await this.configureAliases(gitInfo.repoRoot);
|
|
34
|
-
this.printSummary(config, hooksInfo.installed.length, gitInfo.gitDir);
|
|
43
|
+
this.printSummary(config, hooksInfo.installed.length, gitInfo.gitDir, gitInfo.repoRoot);
|
|
35
44
|
}
|
|
36
45
|
async configure(config, repoRoot, auto, repoSlug, defaultBranch) {
|
|
37
|
-
var _a
|
|
46
|
+
var _a;
|
|
38
47
|
const protectedBranches = new Set(config.github.protected_branches);
|
|
39
48
|
if (defaultBranch && !protectedBranches.has(defaultBranch)) {
|
|
40
49
|
protectedBranches.add(defaultBranch);
|
|
41
50
|
}
|
|
42
|
-
if (repoSlug && (config.github.repo === 'auto' || !config.github.repo)) {
|
|
43
|
-
config.github.repo = repoSlug;
|
|
44
|
-
}
|
|
45
51
|
if (auto) {
|
|
46
52
|
config.mode = (_a = process.env.SAFERUN_MODE) !== null && _a !== void 0 ? _a : config.mode;
|
|
47
53
|
config.github.protected_branches = Array.from(protectedBranches);
|
|
48
|
-
this.ensureApiKey(config);
|
|
49
54
|
return config;
|
|
50
55
|
}
|
|
51
56
|
const answers = await inquirer_1.default.prompt([
|
|
@@ -68,38 +73,11 @@ class InitCommand {
|
|
|
68
73
|
default: Array.from(protectedBranches).join(', '),
|
|
69
74
|
filter: (input) => input.split(',').map((value) => value.trim()).filter(Boolean),
|
|
70
75
|
},
|
|
71
|
-
{
|
|
72
|
-
type: 'input',
|
|
73
|
-
name: 'githubRepo',
|
|
74
|
-
message: 'GitHub repository (owner/repo):',
|
|
75
|
-
default: (_b = repoSlug !== null && repoSlug !== void 0 ? repoSlug : config.github.repo) !== null && _b !== void 0 ? _b : 'auto',
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
type: 'password',
|
|
79
|
-
name: 'apiKey',
|
|
80
|
-
message: 'SafeRun API key (leave empty to use environment variable):',
|
|
81
|
-
mask: '*',
|
|
82
|
-
validate: (value) => (!value ? true : value.length >= 16 || 'API key looks too short'),
|
|
83
|
-
},
|
|
84
76
|
]);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (answers.githubRepo && answers.githubRepo !== 'auto') {
|
|
88
|
-
(0, config_1.setConfigValue)(config, 'github.repo', answers.githubRepo);
|
|
89
|
-
}
|
|
90
|
-
if (answers.apiKey) {
|
|
91
|
-
(0, config_1.setConfigValue)(config, 'api.key', answers.apiKey);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
this.ensureApiKey(config);
|
|
95
|
-
}
|
|
77
|
+
config.mode = answers.mode;
|
|
78
|
+
config.github.protected_branches = answers.protectedBranches;
|
|
96
79
|
return config;
|
|
97
80
|
}
|
|
98
|
-
ensureApiKey(config) {
|
|
99
|
-
if (!config.api.key && !process.env.SAFERUN_API_KEY) {
|
|
100
|
-
console.warn(chalk_1.default.yellow('\n⚠️ SafeRun API key is not configured. Set SAFERUN_API_KEY env or update .saferun/config.yml'));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
81
|
async configureAliases(repoRoot) {
|
|
104
82
|
const aliasMap = {
|
|
105
83
|
branch: '!saferun hook git-branch',
|
|
@@ -138,18 +116,20 @@ class InitCommand {
|
|
|
138
116
|
await (0, git_1.ensureDir)(path_1.default.dirname(backupPath));
|
|
139
117
|
await fs_1.default.promises.writeFile(backupPath, JSON.stringify(backup, null, 2));
|
|
140
118
|
}
|
|
141
|
-
async printSummary(config, hooksInstalled, gitDir) {
|
|
119
|
+
async printSummary(config, hooksInstalled, gitDir, repoRoot) {
|
|
142
120
|
console.log(chalk_1.default.green('\n✅ SafeRun initialized successfully!\n'));
|
|
143
121
|
console.log(chalk_1.default.gray('Mode: '), chalk_1.default.bold(config.mode.toUpperCase()));
|
|
144
122
|
console.log(chalk_1.default.gray('Git hooks: '), hooksInstalled > 0 ? chalk_1.default.green(`${hooksInstalled} installed`) : chalk_1.default.yellow('none installed'));
|
|
123
|
+
console.log(chalk_1.default.gray('Protected: '), chalk_1.default.green('✓ Registered in global registry'));
|
|
124
|
+
console.log(chalk_1.default.gray('Config: '), chalk_1.default.cyan('~/.saferun/config.yml'));
|
|
145
125
|
const existingHooks = await (0, git_1.listHooks)(gitDir);
|
|
146
126
|
if (existingHooks.length > 0) {
|
|
147
127
|
console.log(chalk_1.default.gray('Hooks dir: '), gitDir);
|
|
148
128
|
}
|
|
149
129
|
console.log('\nNext steps:');
|
|
150
|
-
console.log(` • Run ${chalk_1.default.cyan('saferun
|
|
151
|
-
console.log(` •
|
|
152
|
-
console.log(` • Try a protected action (e.g. ${chalk_1.default.cyan('git
|
|
130
|
+
console.log(` • Run ${chalk_1.default.cyan('saferun doctor')} to verify configuration`);
|
|
131
|
+
console.log(` • Run ${chalk_1.default.cyan('saferun config show')} to see current settings`);
|
|
132
|
+
console.log(` • Try a protected action (e.g. ${chalk_1.default.cyan('git reset --hard')}) to see SafeRun in action`);
|
|
153
133
|
}
|
|
154
134
|
}
|
|
155
135
|
exports.InitCommand = InitCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,wDAAgC;AAChC,gDAAwB;AACxB,4CAAoB;AACpB,sCAA0F;AAC1F,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command: saferun is-protected
|
|
3
|
+
* Check if current directory is a protected repository
|
|
4
|
+
* Used by shell wrapper for fast protection checking
|
|
5
|
+
*/
|
|
6
|
+
export declare class IsProtectedCommand {
|
|
7
|
+
run(options: {
|
|
8
|
+
quiet?: boolean;
|
|
9
|
+
}): Promise<number>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Command: saferun is-protected
|
|
4
|
+
* Check if current directory is a protected repository
|
|
5
|
+
* Used by shell wrapper for fast protection checking
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.IsProtectedCommand = void 0;
|
|
9
|
+
const protected_repos_1 = require("../utils/protected-repos");
|
|
10
|
+
const git_1 = require("../utils/git");
|
|
11
|
+
class IsProtectedCommand {
|
|
12
|
+
async run(options) {
|
|
13
|
+
// Get current repo root
|
|
14
|
+
const repoRoot = await (0, git_1.getRepositoryRoot)(process.cwd());
|
|
15
|
+
if (!repoRoot) {
|
|
16
|
+
// Not in a git repo
|
|
17
|
+
if (!options.quiet) {
|
|
18
|
+
console.log('Not in a git repository');
|
|
19
|
+
}
|
|
20
|
+
return 1;
|
|
21
|
+
}
|
|
22
|
+
// Check global registry
|
|
23
|
+
const isProtected = (0, protected_repos_1.isRepoProtectedSync)(repoRoot);
|
|
24
|
+
if (isProtected) {
|
|
25
|
+
if (!options.quiet) {
|
|
26
|
+
const repo = (0, protected_repos_1.getProtectedRepoSync)(repoRoot);
|
|
27
|
+
console.log(`Protected: ${(repo === null || repo === void 0 ? void 0 : repo.github) || (repo === null || repo === void 0 ? void 0 : repo.name) || repoRoot}`);
|
|
28
|
+
}
|
|
29
|
+
return 0; // Exit 0 = protected
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (!options.quiet) {
|
|
33
|
+
console.log('Not protected');
|
|
34
|
+
}
|
|
35
|
+
return 1; // Exit 1 = not protected
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.IsProtectedCommand = IsProtectedCommand;
|
|
40
|
+
//# sourceMappingURL=is-protected.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-protected.js","sourceRoot":"","sources":["../../src/commands/is-protected.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,8DAAqF;AACrF,sCAAiD;AAEjD,MAAa,kBAAkB;IAC7B,KAAK,CAAC,GAAG,CAAC,OAA4B;QACpC,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAiB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,oBAAoB;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,wBAAwB;QACxB,MAAM,WAAW,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,IAAA,sCAAoB,EAAC,QAAQ,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,IAAI,QAAQ,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,CAAC,CAAC,CAAC,qBAAqB;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,CAAC,CAAC,CAAC,yBAAyB;QACrC,CAAC;IACH,CAAC;CACF;AA7BD,gDA6BC"}
|
|
@@ -61,8 +61,9 @@ export SAFERUN_AGENT_ID="\${USER}-\$(date +%s)"
|
|
|
61
61
|
# Git Command Interceptor
|
|
62
62
|
# Catches dangerous operations in SafeRun-protected repos
|
|
63
63
|
git() {
|
|
64
|
-
# Check if we're in a SafeRun protected repo
|
|
65
|
-
|
|
64
|
+
# Check if we're in a SafeRun protected repo (using global registry)
|
|
65
|
+
# This check is fast and cannot be bypassed by modifying repo files
|
|
66
|
+
if saferun is-protected --quiet 2>/dev/null; then
|
|
66
67
|
local cmd="\$1"
|
|
67
68
|
local all_args="\$*"
|
|
68
69
|
|
|
@@ -147,7 +148,8 @@ set -x SAFERUN_AI_SESSION "conversational"
|
|
|
147
148
|
set -x SAFERUN_AGENT_ID "$USER-"(date +%s)
|
|
148
149
|
|
|
149
150
|
function git --wraps git
|
|
150
|
-
if
|
|
151
|
+
# Check if we're in a SafeRun protected repo (using global registry)
|
|
152
|
+
if saferun is-protected --quiet 2>/dev/null
|
|
151
153
|
set -l cmd $argv[1]
|
|
152
154
|
set -l all_args "$argv"
|
|
153
155
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-init.js","sourceRoot":"","sources":["../../src/commands/shell-init.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,kDAA0B;AAC1B,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AAExB,MAAa,gBAAgB;IAC3B,KAAK,CAAC,GAAG,CAAC,OAA4D;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,sEAAsE;QACtE,oDAAoD;QACpD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAEtC,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7B,kCAAkC;YAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAE1C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAE9C,OAAO,MAAM,CAAC,CAAC,UAAU;IAC3B,CAAC;IAEO,eAAe,CAAC,KAAa;QACnC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpC,CAAC;QAED,mBAAmB;QACnB,OAAO
|
|
1
|
+
{"version":3,"file":"shell-init.js","sourceRoot":"","sources":["../../src/commands/shell-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const git_1 = require("../utils/git");
|
|
12
12
|
const installer_1 = require("../hooks/installer");
|
|
13
|
+
const protected_repos_1 = require("../utils/protected-repos");
|
|
13
14
|
const logger_1 = require("../utils/logger");
|
|
14
15
|
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
15
16
|
class UninstallCommand {
|
|
@@ -42,7 +43,12 @@ class UninstallCommand {
|
|
|
42
43
|
}
|
|
43
44
|
await (0, installer_1.uninstallHooks)(gitInfo.repoRoot, gitInfo.gitDir);
|
|
44
45
|
await this.restoreAliases(gitInfo.repoRoot);
|
|
46
|
+
// Remove from global protected repos registry
|
|
47
|
+
const wasProtected = await (0, protected_repos_1.unregisterProtectedRepo)(gitInfo.repoRoot);
|
|
45
48
|
console.log(chalk_1.default.green('✅ SafeRun hooks removed. Existing hooks restored if backups were found.'));
|
|
49
|
+
if (wasProtected) {
|
|
50
|
+
console.log(chalk_1.default.gray(' Removed from global protected repos registry.'));
|
|
51
|
+
}
|
|
46
52
|
console.log(chalk_1.default.gray('\n💡 To reinstall: saferun init'));
|
|
47
53
|
}
|
|
48
54
|
async showStatistics(repoRoot) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,wDAAgC;AAChC,4CAAoB;AACpB,gDAAwB;AACxB,sCAAoE;AACpE,kDAAoD;AACpD,4CAAiD;AACjD,4DAA+B;AAE/B,MAAa,gBAAgB;IAC3B,KAAK,CAAC,GAAG;QACP,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,sCAAsC;QACtC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,2CAA2C;gBACpD,OAAO,EAAE,KAAK,EAAE,2CAA2C;aAC5D;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,IAAA,0BAAc,EAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,15 @@ function registerCommands(program) {
|
|
|
87
87
|
const { StatusCommand } = await Promise.resolve().then(() => __importStar(require('./commands/status')));
|
|
88
88
|
await new StatusCommand().run({ agents: options.agents, pending: options.pending });
|
|
89
89
|
});
|
|
90
|
+
program
|
|
91
|
+
.command('is-protected')
|
|
92
|
+
.description('Check if current directory is a protected repository')
|
|
93
|
+
.option('-q, --quiet', 'Quiet mode - only exit code')
|
|
94
|
+
.action(async (options) => {
|
|
95
|
+
const { IsProtectedCommand } = await Promise.resolve().then(() => __importStar(require('./commands/is-protected')));
|
|
96
|
+
const exitCode = await new IsProtectedCommand().run({ quiet: options.quiet });
|
|
97
|
+
process.exit(exitCode);
|
|
98
|
+
});
|
|
90
99
|
program
|
|
91
100
|
.command('history')
|
|
92
101
|
.description('Show recent SafeRun activity')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global configuration management for SafeRun
|
|
3
|
+
* Stores all rules, modes, and settings in ~/.saferun/config.yml
|
|
4
|
+
* This config is NOT affected by git operations in any repository
|
|
5
|
+
*/
|
|
6
|
+
import { SafeRunConfig, ProtectionMode, ModeSettings, OperationRuleConfig } from './config';
|
|
7
|
+
/**
|
|
8
|
+
* Default global configuration
|
|
9
|
+
* These are the baseline security settings
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_GLOBAL_CONFIG: SafeRunConfig;
|
|
12
|
+
/**
|
|
13
|
+
* Load global config (sync for performance in shell wrapper)
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadGlobalConfigSync(): SafeRunConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Load global config (async version)
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadGlobalConfig(): Promise<SafeRunConfig>;
|
|
20
|
+
/**
|
|
21
|
+
* Save global config
|
|
22
|
+
*/
|
|
23
|
+
export declare function saveGlobalConfig(config: SafeRunConfig): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Update specific config values
|
|
26
|
+
*/
|
|
27
|
+
export declare function updateGlobalConfig(updates: Partial<SafeRunConfig>): Promise<SafeRunConfig>;
|
|
28
|
+
/**
|
|
29
|
+
* Set protection mode globally
|
|
30
|
+
*/
|
|
31
|
+
export declare function setGlobalMode(mode: ProtectionMode): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Get current protection mode
|
|
34
|
+
*/
|
|
35
|
+
export declare function getGlobalModeSync(): ProtectionMode;
|
|
36
|
+
/**
|
|
37
|
+
* Get rule for an operation
|
|
38
|
+
*/
|
|
39
|
+
export declare function getRuleSync(operation: string): OperationRuleConfig | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Get current mode settings
|
|
42
|
+
*/
|
|
43
|
+
export declare function getModeSettingsSync(): ModeSettings;
|
|
44
|
+
/**
|
|
45
|
+
* Check if global config exists
|
|
46
|
+
*/
|
|
47
|
+
export declare function globalConfigExists(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Initialize global config with defaults if it doesn't exist
|
|
50
|
+
*/
|
|
51
|
+
export declare function initGlobalConfig(): Promise<boolean>;
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Global configuration management for SafeRun
|
|
4
|
+
* Stores all rules, modes, and settings in ~/.saferun/config.yml
|
|
5
|
+
* This config is NOT affected by git operations in any repository
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
var _a;
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DEFAULT_GLOBAL_CONFIG = void 0;
|
|
13
|
+
exports.loadGlobalConfigSync = loadGlobalConfigSync;
|
|
14
|
+
exports.loadGlobalConfig = loadGlobalConfig;
|
|
15
|
+
exports.saveGlobalConfig = saveGlobalConfig;
|
|
16
|
+
exports.updateGlobalConfig = updateGlobalConfig;
|
|
17
|
+
exports.setGlobalMode = setGlobalMode;
|
|
18
|
+
exports.getGlobalModeSync = getGlobalModeSync;
|
|
19
|
+
exports.getRuleSync = getRuleSync;
|
|
20
|
+
exports.getModeSettingsSync = getModeSettingsSync;
|
|
21
|
+
exports.globalConfigExists = globalConfigExists;
|
|
22
|
+
exports.initGlobalConfig = initGlobalConfig;
|
|
23
|
+
const fs_1 = __importDefault(require("fs"));
|
|
24
|
+
const path_1 = __importDefault(require("path"));
|
|
25
|
+
const os_1 = __importDefault(require("os"));
|
|
26
|
+
const js_yaml_1 = require("js-yaml");
|
|
27
|
+
const GLOBAL_CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.saferun');
|
|
28
|
+
const GLOBAL_CONFIG_FILE = path_1.default.join(GLOBAL_CONFIG_DIR, 'config.yml');
|
|
29
|
+
/**
|
|
30
|
+
* Default global configuration
|
|
31
|
+
* These are the baseline security settings
|
|
32
|
+
*/
|
|
33
|
+
exports.DEFAULT_GLOBAL_CONFIG = {
|
|
34
|
+
mode: 'block', // Default to block mode for security
|
|
35
|
+
modes: {
|
|
36
|
+
monitor: {
|
|
37
|
+
description: 'Log only, no blocking',
|
|
38
|
+
block_operations: false,
|
|
39
|
+
show_warnings: false,
|
|
40
|
+
send_notifications: false,
|
|
41
|
+
collect_metrics: true,
|
|
42
|
+
},
|
|
43
|
+
warn: {
|
|
44
|
+
description: 'Show warnings but allow operations',
|
|
45
|
+
block_operations: false,
|
|
46
|
+
show_warnings: true,
|
|
47
|
+
send_notifications: true,
|
|
48
|
+
collect_metrics: true,
|
|
49
|
+
},
|
|
50
|
+
block: {
|
|
51
|
+
description: 'Require approval for risky actions',
|
|
52
|
+
block_operations: true,
|
|
53
|
+
require_approval: true,
|
|
54
|
+
collect_metrics: true,
|
|
55
|
+
},
|
|
56
|
+
enforce: {
|
|
57
|
+
description: 'Strict blocking, maximum security',
|
|
58
|
+
block_operations: true,
|
|
59
|
+
require_approval: true,
|
|
60
|
+
collect_metrics: true,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
api: {
|
|
64
|
+
url: (_a = process.env.SAFERUN_API_URL) !== null && _a !== void 0 ? _a : 'https://saferun-api.up.railway.app',
|
|
65
|
+
timeout: 5000,
|
|
66
|
+
retry_count: 3,
|
|
67
|
+
fail_mode: 'strict',
|
|
68
|
+
error_handling: {
|
|
69
|
+
'403_forbidden': {
|
|
70
|
+
action: 'block',
|
|
71
|
+
message: '🚫 API limit exceeded - operations blocked for safety.',
|
|
72
|
+
},
|
|
73
|
+
'500_server_error': {
|
|
74
|
+
action: 'block',
|
|
75
|
+
message: '🚫 API temporarily unavailable - operation blocked for safety',
|
|
76
|
+
},
|
|
77
|
+
'network_error': {
|
|
78
|
+
action: 'block',
|
|
79
|
+
message: '🚫 Network error - operation blocked for safety',
|
|
80
|
+
},
|
|
81
|
+
'timeout': {
|
|
82
|
+
action: 'block',
|
|
83
|
+
message: '🚫 API timeout - operation blocked for safety',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
github: {
|
|
88
|
+
repo: 'auto',
|
|
89
|
+
protected_branches: ['main', 'master', 'release/*', 'production'],
|
|
90
|
+
branch_rules: [
|
|
91
|
+
{ pattern: 'feature/*', risk_level: 'low', allow_force_push: true },
|
|
92
|
+
{ pattern: 'hotfix/*', risk_level: 'medium', require_approval: false },
|
|
93
|
+
{ pattern: 'experiment/*', risk_level: 'low', skip_checks: true },
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
approval_timeout: {
|
|
97
|
+
action: 'reject',
|
|
98
|
+
duration: 7200, // 2 hours
|
|
99
|
+
reminders: 3,
|
|
100
|
+
reminder_interval: 1800,
|
|
101
|
+
},
|
|
102
|
+
rules: {
|
|
103
|
+
force_push: {
|
|
104
|
+
action: 'require_approval',
|
|
105
|
+
risk_score: 8,
|
|
106
|
+
timeout_action: 'reject',
|
|
107
|
+
timeout_duration: 7200,
|
|
108
|
+
},
|
|
109
|
+
branch_delete: {
|
|
110
|
+
action: 'require_approval',
|
|
111
|
+
risk_score: 6,
|
|
112
|
+
timeout_action: 'reject',
|
|
113
|
+
timeout_duration: 7200,
|
|
114
|
+
exclude_patterns: ['tmp/*', 'test/*'],
|
|
115
|
+
},
|
|
116
|
+
reset_hard: {
|
|
117
|
+
action: 'require_approval',
|
|
118
|
+
risk_score: 8,
|
|
119
|
+
timeout_action: 'reject',
|
|
120
|
+
timeout_duration: 7200,
|
|
121
|
+
max_commits_back: 5,
|
|
122
|
+
},
|
|
123
|
+
clean: {
|
|
124
|
+
action: 'require_approval',
|
|
125
|
+
risk_score: 6,
|
|
126
|
+
timeout_action: 'reject',
|
|
127
|
+
timeout_duration: 3600,
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
notifications: {
|
|
131
|
+
slack: {
|
|
132
|
+
enabled: true,
|
|
133
|
+
channel: '#dev-safety',
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
telemetry: {
|
|
137
|
+
enabled: true,
|
|
138
|
+
anonymous: true,
|
|
139
|
+
events: [
|
|
140
|
+
'operation_blocked',
|
|
141
|
+
'operation_allowed',
|
|
142
|
+
'approval_requested',
|
|
143
|
+
'approval_granted',
|
|
144
|
+
'installation',
|
|
145
|
+
'uninstallation',
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Ensure global config directory exists
|
|
151
|
+
*/
|
|
152
|
+
function ensureGlobalConfigDir() {
|
|
153
|
+
if (!fs_1.default.existsSync(GLOBAL_CONFIG_DIR)) {
|
|
154
|
+
fs_1.default.mkdirSync(GLOBAL_CONFIG_DIR, { mode: 0o700, recursive: true });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Load global config (sync for performance in shell wrapper)
|
|
159
|
+
*/
|
|
160
|
+
function loadGlobalConfigSync() {
|
|
161
|
+
try {
|
|
162
|
+
if (!fs_1.default.existsSync(GLOBAL_CONFIG_FILE)) {
|
|
163
|
+
return { ...exports.DEFAULT_GLOBAL_CONFIG };
|
|
164
|
+
}
|
|
165
|
+
const content = fs_1.default.readFileSync(GLOBAL_CONFIG_FILE, 'utf-8');
|
|
166
|
+
const parsed = (0, js_yaml_1.load)(content);
|
|
167
|
+
// Deep merge with defaults
|
|
168
|
+
return mergeConfig(exports.DEFAULT_GLOBAL_CONFIG, parsed);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return { ...exports.DEFAULT_GLOBAL_CONFIG };
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Load global config (async version)
|
|
176
|
+
*/
|
|
177
|
+
async function loadGlobalConfig() {
|
|
178
|
+
return loadGlobalConfigSync();
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Save global config
|
|
182
|
+
*/
|
|
183
|
+
async function saveGlobalConfig(config) {
|
|
184
|
+
ensureGlobalConfigDir();
|
|
185
|
+
// Only save non-default values to keep file clean
|
|
186
|
+
const content = (0, js_yaml_1.dump)(config, { lineWidth: 120 });
|
|
187
|
+
await fs_1.default.promises.writeFile(GLOBAL_CONFIG_FILE, content, { mode: 0o600 });
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Update specific config values
|
|
191
|
+
*/
|
|
192
|
+
async function updateGlobalConfig(updates) {
|
|
193
|
+
const current = await loadGlobalConfig();
|
|
194
|
+
const updated = mergeConfig(current, updates);
|
|
195
|
+
await saveGlobalConfig(updated);
|
|
196
|
+
return updated;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Set protection mode globally
|
|
200
|
+
*/
|
|
201
|
+
async function setGlobalMode(mode) {
|
|
202
|
+
const config = await loadGlobalConfig();
|
|
203
|
+
config.mode = mode;
|
|
204
|
+
await saveGlobalConfig(config);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get current protection mode
|
|
208
|
+
*/
|
|
209
|
+
function getGlobalModeSync() {
|
|
210
|
+
const config = loadGlobalConfigSync();
|
|
211
|
+
return config.mode;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get rule for an operation
|
|
215
|
+
*/
|
|
216
|
+
function getRuleSync(operation) {
|
|
217
|
+
const config = loadGlobalConfigSync();
|
|
218
|
+
return config.rules[operation];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get current mode settings
|
|
222
|
+
*/
|
|
223
|
+
function getModeSettingsSync() {
|
|
224
|
+
const config = loadGlobalConfigSync();
|
|
225
|
+
return config.modes[config.mode] || config.modes['block'];
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Check if global config exists
|
|
229
|
+
*/
|
|
230
|
+
function globalConfigExists() {
|
|
231
|
+
return fs_1.default.existsSync(GLOBAL_CONFIG_FILE);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Initialize global config with defaults if it doesn't exist
|
|
235
|
+
*/
|
|
236
|
+
async function initGlobalConfig() {
|
|
237
|
+
if (globalConfigExists()) {
|
|
238
|
+
return false; // Already exists
|
|
239
|
+
}
|
|
240
|
+
await saveGlobalConfig(exports.DEFAULT_GLOBAL_CONFIG);
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Deep merge configs (source overrides target)
|
|
245
|
+
*/
|
|
246
|
+
function mergeConfig(target, source) {
|
|
247
|
+
const result = { ...target };
|
|
248
|
+
for (const [key, value] of Object.entries(source)) {
|
|
249
|
+
if (value === undefined || value === null)
|
|
250
|
+
continue;
|
|
251
|
+
if (Array.isArray(value)) {
|
|
252
|
+
result[key] = [...value];
|
|
253
|
+
}
|
|
254
|
+
else if (typeof value === 'object') {
|
|
255
|
+
result[key] = mergeDeep(result[key] || {}, value);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
result[key] = value;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return result;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Deep merge any objects
|
|
265
|
+
*/
|
|
266
|
+
function mergeDeep(target, source) {
|
|
267
|
+
const result = { ...target };
|
|
268
|
+
for (const [key, value] of Object.entries(source)) {
|
|
269
|
+
if (value === undefined || value === null)
|
|
270
|
+
continue;
|
|
271
|
+
if (Array.isArray(value)) {
|
|
272
|
+
result[key] = [...value];
|
|
273
|
+
}
|
|
274
|
+
else if (typeof value === 'object') {
|
|
275
|
+
result[key] = mergeDeep(result[key] || {}, value);
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
result[key] = value;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return result;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=global-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/utils/global-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protected repositories registry
|
|
3
|
+
* Stores list of protected repos in ~/.saferun/protected-repos.json
|
|
4
|
+
* This is invisible to AI agents and cannot be modified through git operations
|
|
5
|
+
*/
|
|
6
|
+
export interface ProtectedRepo {
|
|
7
|
+
path: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
github?: string;
|
|
10
|
+
addedAt: string;
|
|
11
|
+
mode?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ProtectedReposRegistry {
|
|
14
|
+
version: number;
|
|
15
|
+
repos: ProtectedRepo[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Load protected repos registry (sync for shell wrapper performance)
|
|
19
|
+
*/
|
|
20
|
+
export declare function loadProtectedReposSync(): ProtectedReposRegistry;
|
|
21
|
+
/**
|
|
22
|
+
* Load protected repos registry (async version)
|
|
23
|
+
*/
|
|
24
|
+
export declare function loadProtectedRepos(): Promise<ProtectedReposRegistry>;
|
|
25
|
+
/**
|
|
26
|
+
* Save protected repos registry
|
|
27
|
+
*/
|
|
28
|
+
export declare function saveProtectedRepos(registry: ProtectedReposRegistry): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a path is protected (sync for shell wrapper)
|
|
31
|
+
*/
|
|
32
|
+
export declare function isRepoProtectedSync(repoPath: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Check if a path is protected (async version)
|
|
35
|
+
*/
|
|
36
|
+
export declare function isRepoProtected(repoPath: string): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Get protected repo info by path
|
|
39
|
+
*/
|
|
40
|
+
export declare function getProtectedRepoSync(repoPath: string): ProtectedRepo | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Get protected repo info by path (async version)
|
|
43
|
+
*/
|
|
44
|
+
export declare function getProtectedRepo(repoPath: string): Promise<ProtectedRepo | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* Register a repository as protected
|
|
47
|
+
*/
|
|
48
|
+
export declare function registerProtectedRepo(repoPath: string, options?: {
|
|
49
|
+
name?: string;
|
|
50
|
+
github?: string;
|
|
51
|
+
mode?: string;
|
|
52
|
+
}): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Unregister a repository (remove protection)
|
|
55
|
+
*/
|
|
56
|
+
export declare function unregisterProtectedRepo(repoPath: string): Promise<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* List all protected repositories
|
|
59
|
+
*/
|
|
60
|
+
export declare function listProtectedRepos(): Promise<ProtectedRepo[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Update protection mode for a repo
|
|
63
|
+
*/
|
|
64
|
+
export declare function updateRepoMode(repoPath: string, mode: string): Promise<boolean>;
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Protected repositories registry
|
|
4
|
+
* Stores list of protected repos in ~/.saferun/protected-repos.json
|
|
5
|
+
* This is invisible to AI agents and cannot be modified through git operations
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.loadProtectedReposSync = loadProtectedReposSync;
|
|
12
|
+
exports.loadProtectedRepos = loadProtectedRepos;
|
|
13
|
+
exports.saveProtectedRepos = saveProtectedRepos;
|
|
14
|
+
exports.isRepoProtectedSync = isRepoProtectedSync;
|
|
15
|
+
exports.isRepoProtected = isRepoProtected;
|
|
16
|
+
exports.getProtectedRepoSync = getProtectedRepoSync;
|
|
17
|
+
exports.getProtectedRepo = getProtectedRepo;
|
|
18
|
+
exports.registerProtectedRepo = registerProtectedRepo;
|
|
19
|
+
exports.unregisterProtectedRepo = unregisterProtectedRepo;
|
|
20
|
+
exports.listProtectedRepos = listProtectedRepos;
|
|
21
|
+
exports.updateRepoMode = updateRepoMode;
|
|
22
|
+
const fs_1 = __importDefault(require("fs"));
|
|
23
|
+
const path_1 = __importDefault(require("path"));
|
|
24
|
+
const os_1 = __importDefault(require("os"));
|
|
25
|
+
const GLOBAL_CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.saferun');
|
|
26
|
+
const PROTECTED_REPOS_FILE = path_1.default.join(GLOBAL_CONFIG_DIR, 'protected-repos.json');
|
|
27
|
+
const DEFAULT_REGISTRY = {
|
|
28
|
+
version: 1,
|
|
29
|
+
repos: [],
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Ensure global config directory exists
|
|
33
|
+
*/
|
|
34
|
+
function ensureGlobalConfigDir() {
|
|
35
|
+
if (!fs_1.default.existsSync(GLOBAL_CONFIG_DIR)) {
|
|
36
|
+
fs_1.default.mkdirSync(GLOBAL_CONFIG_DIR, { mode: 0o700, recursive: true });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Load protected repos registry (sync for shell wrapper performance)
|
|
41
|
+
*/
|
|
42
|
+
function loadProtectedReposSync() {
|
|
43
|
+
try {
|
|
44
|
+
if (!fs_1.default.existsSync(PROTECTED_REPOS_FILE)) {
|
|
45
|
+
return DEFAULT_REGISTRY;
|
|
46
|
+
}
|
|
47
|
+
const content = fs_1.default.readFileSync(PROTECTED_REPOS_FILE, 'utf-8');
|
|
48
|
+
const registry = JSON.parse(content);
|
|
49
|
+
// Migration: ensure version field
|
|
50
|
+
if (!registry.version) {
|
|
51
|
+
registry.version = 1;
|
|
52
|
+
}
|
|
53
|
+
return registry;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return DEFAULT_REGISTRY;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Load protected repos registry (async version)
|
|
61
|
+
*/
|
|
62
|
+
async function loadProtectedRepos() {
|
|
63
|
+
return loadProtectedReposSync();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Save protected repos registry
|
|
67
|
+
*/
|
|
68
|
+
async function saveProtectedRepos(registry) {
|
|
69
|
+
ensureGlobalConfigDir();
|
|
70
|
+
const content = JSON.stringify(registry, null, 2);
|
|
71
|
+
await fs_1.default.promises.writeFile(PROTECTED_REPOS_FILE, content, { mode: 0o600 });
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Normalize path for comparison (resolve symlinks, remove trailing slashes)
|
|
75
|
+
*/
|
|
76
|
+
function normalizePath(p) {
|
|
77
|
+
try {
|
|
78
|
+
// Resolve to absolute path and remove trailing slashes
|
|
79
|
+
const resolved = path_1.default.resolve(p);
|
|
80
|
+
return resolved.replace(/\/+$/, '');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return p.replace(/\/+$/, '');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if a path is protected (sync for shell wrapper)
|
|
88
|
+
*/
|
|
89
|
+
function isRepoProtectedSync(repoPath) {
|
|
90
|
+
const registry = loadProtectedReposSync();
|
|
91
|
+
const normalizedPath = normalizePath(repoPath);
|
|
92
|
+
return registry.repos.some(repo => normalizePath(repo.path) === normalizedPath);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check if a path is protected (async version)
|
|
96
|
+
*/
|
|
97
|
+
async function isRepoProtected(repoPath) {
|
|
98
|
+
return isRepoProtectedSync(repoPath);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get protected repo info by path
|
|
102
|
+
*/
|
|
103
|
+
function getProtectedRepoSync(repoPath) {
|
|
104
|
+
const registry = loadProtectedReposSync();
|
|
105
|
+
const normalizedPath = normalizePath(repoPath);
|
|
106
|
+
return registry.repos.find(repo => normalizePath(repo.path) === normalizedPath);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get protected repo info by path (async version)
|
|
110
|
+
*/
|
|
111
|
+
async function getProtectedRepo(repoPath) {
|
|
112
|
+
return getProtectedRepoSync(repoPath);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Register a repository as protected
|
|
116
|
+
*/
|
|
117
|
+
async function registerProtectedRepo(repoPath, options = {}) {
|
|
118
|
+
const registry = await loadProtectedRepos();
|
|
119
|
+
const normalizedPath = normalizePath(repoPath);
|
|
120
|
+
// Check if already registered
|
|
121
|
+
const existingIndex = registry.repos.findIndex(repo => normalizePath(repo.path) === normalizedPath);
|
|
122
|
+
const newRepo = {
|
|
123
|
+
path: normalizedPath,
|
|
124
|
+
name: options.name,
|
|
125
|
+
github: options.github,
|
|
126
|
+
addedAt: new Date().toISOString(),
|
|
127
|
+
mode: options.mode,
|
|
128
|
+
};
|
|
129
|
+
if (existingIndex >= 0) {
|
|
130
|
+
// Update existing
|
|
131
|
+
registry.repos[existingIndex] = {
|
|
132
|
+
...registry.repos[existingIndex],
|
|
133
|
+
...newRepo,
|
|
134
|
+
addedAt: registry.repos[existingIndex].addedAt, // Keep original addedAt
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// Add new
|
|
139
|
+
registry.repos.push(newRepo);
|
|
140
|
+
}
|
|
141
|
+
await saveProtectedRepos(registry);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Unregister a repository (remove protection)
|
|
145
|
+
*/
|
|
146
|
+
async function unregisterProtectedRepo(repoPath) {
|
|
147
|
+
const registry = await loadProtectedRepos();
|
|
148
|
+
const normalizedPath = normalizePath(repoPath);
|
|
149
|
+
const initialLength = registry.repos.length;
|
|
150
|
+
registry.repos = registry.repos.filter(repo => normalizePath(repo.path) !== normalizedPath);
|
|
151
|
+
if (registry.repos.length < initialLength) {
|
|
152
|
+
await saveProtectedRepos(registry);
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* List all protected repositories
|
|
159
|
+
*/
|
|
160
|
+
async function listProtectedRepos() {
|
|
161
|
+
const registry = await loadProtectedRepos();
|
|
162
|
+
return registry.repos;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Update protection mode for a repo
|
|
166
|
+
*/
|
|
167
|
+
async function updateRepoMode(repoPath, mode) {
|
|
168
|
+
const registry = await loadProtectedRepos();
|
|
169
|
+
const normalizedPath = normalizePath(repoPath);
|
|
170
|
+
const repo = registry.repos.find(r => normalizePath(r.path) === normalizedPath);
|
|
171
|
+
if (repo) {
|
|
172
|
+
repo.mode = mode;
|
|
173
|
+
await saveProtectedRepos(registry);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=protected-repos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protected-repos.js","sourceRoot":"","sources":["../../src/utils/protected-repos.ts"],"names":[],"mappings":"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"}
|