argus-ci 1.1.1 → 1.1.2

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.
@@ -1,7 +1,10 @@
1
1
  /**
2
- * Pre-commit hook installer.
3
- * Writes a git hook that runs `argus-ci scan --staged`
4
- * and blocks the commit if any ERROR-severity findings are found.
2
+ * argus-ci setup — single command that does everything:
3
+ * 1. Auto-installs Semgrep if missing (brew on macOS, pip3 elsewhere)
4
+ * 2. Copies CLAUDE.md + .cursorrules trigger files into the repo
5
+ * 3. Installs the pre-commit git hook
6
+ *
7
+ * Usage: npx argus-ci setup
5
8
  */
6
9
  export declare function setupHook(cwd: string): Promise<void>;
7
10
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkCH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D1D"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA4CH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B1D"}
@@ -1,93 +1,190 @@
1
1
  /**
2
- * Pre-commit hook installer.
3
- * Writes a git hook that runs `argus-ci scan --staged`
4
- * and blocks the commit if any ERROR-severity findings are found.
2
+ * argus-ci setup — single command that does everything:
3
+ * 1. Auto-installs Semgrep if missing (brew on macOS, pip3 elsewhere)
4
+ * 2. Copies CLAUDE.md + .cursorrules trigger files into the repo
5
+ * 3. Installs the pre-commit git hook
6
+ *
7
+ * Usage: npx argus-ci setup
5
8
  */
6
- import { existsSync, mkdirSync, writeFileSync, chmodSync, readFileSync } from "fs";
7
- import { join } from "path";
9
+ import { existsSync, mkdirSync, writeFileSync, chmodSync, readFileSync, copyFileSync, } from "fs";
10
+ import { join, dirname } from "path";
11
+ import { spawnSync } from "child_process";
12
+ import { fileURLToPath } from "url";
13
+ import { platform } from "os";
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+ // Resolve the package root (two levels up from dist/hooks/)
17
+ const PKG_ROOT = join(__dirname, "..", "..");
8
18
  const HOOK_MARKER = "# argus-ci-hook";
9
19
  const HOOK_SCRIPT = `#!/usr/bin/env sh
10
20
  ${HOOK_MARKER}
11
21
  # Semgrep quality gate — runs on every commit.
12
- # Remove with: argus-ci setup --remove
22
+ # Remove with: npx argus-ci setup --remove
13
23
  # Bypass (emergency only): git commit --no-verify
14
24
 
15
- echo "🔍 Running Semgrep security scan on staged files..."
25
+ echo "🔍 argus-ci: scanning staged files..."
16
26
 
17
- # Run argus-ci scan on staged files
18
- # Exit code 1 = errors found → block commit
19
- # Exit code 0 = clean → allow commit
20
27
  npx --yes argus-ci scan --staged
21
-
22
28
  EXIT_CODE=$?
23
29
 
24
30
  if [ $EXIT_CODE -ne 0 ]; then
25
31
  echo ""
26
- echo "❌ Semgrep found security issues — commit blocked."
27
- echo " Fix the issues above, then run: git commit"
28
- echo " To skip (not recommended): git commit --no-verify"
32
+ echo "❌ Security issues found — commit blocked."
33
+ echo " Fix the issues above, then commit again."
34
+ echo " Emergency bypass: git commit --no-verify"
29
35
  exit 1
30
36
  fi
31
37
 
32
- echo "✅ Semgrep scan passed."
38
+ echo "✅ argus-ci: all clear."
33
39
  exit 0
34
40
  `;
41
+ // ─── Main export ──────────────────────────────────────────────────────────────
35
42
  export async function setupHook(cwd) {
36
43
  const remove = process.argv.includes("--remove");
37
- // Find .git directory
44
+ if (remove) {
45
+ const hookPath = join(cwd, ".git", "hooks", "pre-commit");
46
+ await removeHook(hookPath);
47
+ return;
48
+ }
49
+ console.log("\n🚀 argus-ci setup\n");
50
+ // Step 1: ensure Semgrep is installed
51
+ await ensureSemgrep();
52
+ // Step 2: copy trigger files into the repo
53
+ copyTriggerFiles(cwd);
54
+ // Step 3: install the pre-commit hook
55
+ installPreCommitHook(cwd);
56
+ console.log(`
57
+ ✅ Setup complete. argus-ci is now active in this repo.
58
+
59
+ What happens next:
60
+ • Every file your AI agent writes is scanned automatically (via MCP)
61
+ • Every commit is scanned — errors block the commit
62
+ • CLAUDE.md and .cursorrules tell your AI agent to run scans automatically
63
+
64
+ To review a PR: npx argus-ci pr <github-url>
65
+ To remove the hook: npx argus-ci setup --remove
66
+ `);
67
+ }
68
+ // ─── Step 1: auto-install Semgrep ────────────────────────────────────────────
69
+ async function ensureSemgrep() {
70
+ if (isSemgrepInstalled()) {
71
+ const v = getSemgrepVersion();
72
+ console.log(` ✓ Semgrep already installed (${v})`);
73
+ return;
74
+ }
75
+ console.log(" ⚙️ Semgrep not found — installing automatically...");
76
+ const os = platform();
77
+ let installed = false;
78
+ if (os === "darwin") {
79
+ // Try Homebrew first on macOS
80
+ if (commandExists("brew")) {
81
+ console.log(" → brew install semgrep");
82
+ const r = spawnSync("brew", ["install", "semgrep"], { stdio: "inherit" });
83
+ installed = r.status === 0;
84
+ }
85
+ }
86
+ if (!installed) {
87
+ // Fallback: pip3 / pip (works on macOS, Linux, Windows)
88
+ const pipCmd = commandExists("pip3") ? "pip3" : "pip";
89
+ console.log(` → ${pipCmd} install semgrep`);
90
+ const r = spawnSync(pipCmd, ["install", "semgrep"], { stdio: "inherit" });
91
+ installed = r.status === 0;
92
+ }
93
+ if (!installed || !isSemgrepInstalled()) {
94
+ console.error(`
95
+ ❌ Could not install Semgrep automatically.
96
+ Please install it manually then re-run setup:
97
+
98
+ brew install semgrep (macOS)
99
+ pip install semgrep (any platform)
100
+ `);
101
+ process.exit(1);
102
+ }
103
+ const v = getSemgrepVersion();
104
+ console.log(` ✓ Semgrep installed (${v})`);
105
+ }
106
+ function isSemgrepInstalled() {
107
+ const candidates = ["semgrep", "/usr/local/bin/semgrep", "/opt/homebrew/bin/semgrep"];
108
+ for (const cmd of candidates) {
109
+ const r = spawnSync(cmd, ["--version"], { encoding: "utf8" });
110
+ if (r.status === 0)
111
+ return true;
112
+ }
113
+ // Try python module form
114
+ const r = spawnSync("python3", ["-m", "semgrep", "--version"], { encoding: "utf8" });
115
+ return r.status === 0;
116
+ }
117
+ function getSemgrepVersion() {
118
+ const r = spawnSync("semgrep", ["--version"], { encoding: "utf8" });
119
+ if (r.status === 0)
120
+ return r.stdout.trim().split("\n")[0];
121
+ const r2 = spawnSync("python3", ["-m", "semgrep", "--version"], { encoding: "utf8" });
122
+ return r2.stdout?.trim().split("\n")[0] ?? "unknown";
123
+ }
124
+ function commandExists(cmd) {
125
+ const r = spawnSync(platform() === "win32" ? "where" : "which", [cmd], { encoding: "utf8" });
126
+ return r.status === 0;
127
+ }
128
+ // ─── Step 2: copy trigger files ───────────────────────────────────────────────
129
+ function copyTriggerFiles(cwd) {
130
+ const files = [
131
+ { src: join(PKG_ROOT, "CLAUDE.md"), dest: join(cwd, "CLAUDE.md") },
132
+ { src: join(PKG_ROOT, ".cursorrules"), dest: join(cwd, ".cursorrules") },
133
+ ];
134
+ for (const { src, dest } of files) {
135
+ if (!existsSync(src)) {
136
+ console.log(` ⚠️ Could not find ${src} in package — skipping`);
137
+ continue;
138
+ }
139
+ if (existsSync(dest)) {
140
+ // Check if already contains argus-ci instructions
141
+ const existing = readFileSync(dest, "utf8");
142
+ if (existing.includes("argus-ci") || existing.includes("scan_files")) {
143
+ console.log(` ✓ ${dest.split("/").pop()} already contains argus-ci instructions`);
144
+ continue;
145
+ }
146
+ // Append to existing file
147
+ const appended = existing.trimEnd() + "\n\n" + readFileSync(src, "utf8");
148
+ writeFileSync(dest, appended, "utf8");
149
+ console.log(` ✓ argus-ci instructions appended to existing ${dest.split("/").pop()}`);
150
+ }
151
+ else {
152
+ copyFileSync(src, dest);
153
+ console.log(` ✓ ${dest.split("/").pop()} written`);
154
+ }
155
+ }
156
+ }
157
+ // ─── Step 3: install pre-commit hook ─────────────────────────────────────────
158
+ function installPreCommitHook(cwd) {
38
159
  const gitDir = join(cwd, ".git");
39
160
  if (!existsSync(gitDir)) {
40
- console.error(" Not a git repository. Run this from the repo root.");
41
- process.exit(1);
161
+ console.warn(" ⚠️ No .git directory found skipping pre-commit hook");
162
+ console.warn(" Run from a git repo root to install the commit gate.");
163
+ return;
42
164
  }
43
165
  const hooksDir = join(gitDir, "hooks");
44
166
  const hookPath = join(hooksDir, "pre-commit");
45
- if (remove) {
46
- await removeHook(hookPath);
47
- return;
48
- }
49
- // Create hooks dir if needed
50
167
  if (!existsSync(hooksDir))
51
168
  mkdirSync(hooksDir, { recursive: true });
52
- // Check if a hook already exists (not ours)
53
169
  if (existsSync(hookPath)) {
54
170
  const existing = readFileSync(hookPath, "utf8");
55
171
  if (existing.includes(HOOK_MARKER)) {
56
- console.log(" argus-ci pre-commit hook already installed.");
172
+ console.log(" Pre-commit hook already installed");
57
173
  return;
58
174
  }
59
- // Append to existing hook
175
+ // Append to existing hook rather than overwrite
60
176
  const appended = existing.trimEnd() + "\n\n" + HOOK_SCRIPT;
61
177
  writeFileSync(hookPath, appended, "utf8");
62
178
  chmodSync(hookPath, 0o755);
63
- console.log(" argus-ci hook appended to existing pre-commit hook.");
179
+ console.log(" argus-ci appended to existing pre-commit hook");
64
180
  }
65
181
  else {
66
182
  writeFileSync(hookPath, HOOK_SCRIPT, "utf8");
67
183
  chmodSync(hookPath, 0o755);
68
- console.log(" argus-ci pre-commit hook installed.");
69
- }
70
- // Verify semgrep is available
71
- const { spawnSync } = await import("child_process");
72
- const check = spawnSync("semgrep", ["--version"], { encoding: "utf8" });
73
- if (check.status !== 0) {
74
- console.log("\n⚠️ semgrep not found on PATH.");
75
- console.log(" Install it before the hook will work:");
76
- console.log(" → pip install semgrep");
77
- console.log(" → brew install semgrep\n");
78
- }
79
- else {
80
- const version = check.stdout.trim();
81
- console.log(` Using semgrep ${version}`);
184
+ console.log(" Pre-commit hook installed");
82
185
  }
83
- console.log("\nThe hook will:");
84
- console.log(" • Run on every git commit automatically");
85
- console.log(" • Scan only the files you're committing (fast)");
86
- console.log(" • Block the commit if any ERROR-severity issues are found");
87
- console.log(" • Allow commits with only warnings");
88
- console.log("\nTo remove: argus-ci setup --remove");
89
- console.log("To bypass: git commit --no-verify (emergency only)\n");
90
186
  }
187
+ // ─── Remove ───────────────────────────────────────────────────────────────────
91
188
  async function removeHook(hookPath) {
92
189
  if (!existsSync(hookPath)) {
93
190
  console.log("No pre-commit hook found.");
@@ -98,20 +195,18 @@ async function removeHook(hookPath) {
98
195
  console.log("argus-ci hook not found in pre-commit hook.");
99
196
  return;
100
197
  }
101
- // If the entire file is our hook, delete it
102
198
  if (content.trim() === HOOK_SCRIPT.trim()) {
103
199
  const { unlinkSync } = await import("fs");
104
200
  unlinkSync(hookPath);
105
201
  console.log("✅ argus-ci pre-commit hook removed.");
106
202
  return;
107
203
  }
108
- // Otherwise strip our section from the file
109
204
  const lines = content.split("\n");
110
205
  const markerIdx = lines.findIndex((l) => l.includes(HOOK_MARKER));
111
- if (markerIdx > 0) {
206
+ if (markerIdx >= 0) {
112
207
  const stripped = lines.slice(0, markerIdx).join("\n").trimEnd() + "\n";
113
208
  writeFileSync(hookPath, stripped, "utf8");
114
- console.log("✅ argus-ci section removed from pre-commit hook.");
209
+ console.log("✅ argus-ci removed from pre-commit hook.");
115
210
  }
116
211
  }
117
212
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/hooks/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "argus-ci",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "AI-powered code security agent — MCP server for Cursor/Claude, mandatory pre-commit gate, and conversational PR/branch review",
5
5
  "type": "module",
6
6
  "main": "dist/mcp/server.js",