{"_id":"@cybedefend/vibedefend","_rev":"28-fcf21ea01f7a7872991a51b8392e02a8","name":"@cybedefend/vibedefend","dist-tags":{"latest":"1.4.7"},"versions":{"1.1.1":{"name":"@cybedefend/vibedefend","version":"1.1.1","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.1.1","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"db068a34a97073f163fc0eb0009dd80d97bb53bb","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.1.1.tgz","fileCount":103,"integrity":"sha512-UvRXMwrZHwVRNxlF5lKkzheb5NmjLlS4FlaQ2B0MgXIPCoe94eCaFoaBKD60uSuBiwiCtcvVCbCRdcSwesaP2g==","signatures":[{"sig":"MEUCIB8GMV/I2oq3vJL0/gBnIkaRCR+WyPdOApElDUQ788psAiEAj+3uj1h1oAVq9T6+V0xHf/I9kSyLbtHIENGpNOJ8+lk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693759},"type":"module","engines":{"node":">=18.17"},"gitHead":"6c496a69eb447fe46c362e0b1d53211bdc03efc2","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.11.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"24.14.1","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.1.1_1779751582994_0.011789044269562732","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@cybedefend/vibedefend","version":"1.1.2","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.1.2","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"3757c7e5600f3fc1085fd6b41bf04f70c6cde9dd","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.1.2.tgz","fileCount":103,"integrity":"sha512-VWddcxOGLJbJjwgA4bP7RjUzwVQBoQrnB0pWzWNymxkGuy+IeD5HwbFZquoUAq/ynzemcnEA8LVM7fZtuSngJA==","signatures":[{"sig":"MEUCIGp3YUWNLNCETu+qo1Fc5t4ZH5RFGhbzw8d5dmNsvaoSAiEAgdU2Fm5I6WRia7dCQFShWqd3eAM9aqpkYeXPV4lFJQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":698618},"type":"module","engines":{"node":">=18.17"},"gitHead":"206efa0108b05786d979f231f1077652693041c9","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.15.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.1.2_1779808410367_0.08109868237230411","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@cybedefend/vibedefend","version":"1.2.0","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.2.0","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"8f2a9cda4fddee691dd9db0399d7ba11550cd50a","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.2.0.tgz","fileCount":112,"integrity":"sha512-OuhqzxhyEOY/tDODrq+I424acbPhsQrPFLalEskttpCfBd95hVDJgGVafUvqA0cDBsDQDyJUxZlpbdtFYM/IdQ==","signatures":[{"sig":"MEUCIQCq6BeoeEeaSgFsP27DJNvLL8tX2p5CTPTZApM/td7erwIgVRfFyZMSasI0NQUdS7ud8OlltaN35Bmd/Pn5WrQP8P0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":748939},"type":"module","engines":{"node":">=18.17"},"gitHead":"1f0e289657571fa1805cd99de17abd6aaadadab1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.16.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.2.0_1781076598052_0.15769177569362802","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@cybedefend/vibedefend","version":"1.2.1","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.2.1","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"1972c285db81f5bfe7bb7ca7eb57f78c535b8e16","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.2.1.tgz","fileCount":114,"integrity":"sha512-B18aBdmkcoG3eekPNaDc6Zz0Qp3ajbiuO37SH/D3jKXU4L3An3B10f9r4gEltRbVI0wobqb6/yQrlQspF61+Ow==","signatures":[{"sig":"MEQCIGgGPKddr67ghRznASwH6ZGcX0TucIS4W3blJ62iykmmAiBPeIJnSmddbadZGAG/ILSBSgS3k3YC6lA08C+KXjdf/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":755330},"type":"module","engines":{"node":">=18.17"},"gitHead":"1774a5eb5e769196b4766a0fcd57485fdb217466","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.16.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.2.1_1781078728744_0.6976463950390812","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@cybedefend/vibedefend","version":"1.2.2","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.2.2","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"5bdb4ed8ff79df987ca89f251a11150724bd3e72","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.2.2.tgz","fileCount":114,"integrity":"sha512-RKP2+HPPMGYAWTWSVmZcSiyuGWs95NR6bAGE0USV+YtYLVv6USsFI8RoyXpO6GHGY9TFxSKRtYXUBsKyk7cxyw==","signatures":[{"sig":"MEUCIE8p3j7DhEoaHbWPFyQ5GPOKYkF2cyMDFth0HTqEjIfxAiEAnSj/j2maYX3ddHD/GJs5lbrHBf5SD00GewdM1hZ5AZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":758761},"type":"module","engines":{"node":">=18.17"},"gitHead":"9857c518c8e5161b9881ffc29a91baabf1da019e","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.16.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.2.2_1781082006726_0.589492009310723","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@cybedefend/vibedefend","version":"1.2.3","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.2.3","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"403ce64975bc580b1bada40c3f07a888c39b7a82","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.2.3.tgz","fileCount":114,"integrity":"sha512-v/cfTsk/QJB9OCZho3244hE83LhaHCpmG0cu1FjgLE12sNV9FZtFF9t6HYTsOPQ8U0fkLMBbaOPJZBYB7jQUKA==","signatures":[{"sig":"MEQCIFUIc71t0SZAaxWzLjjztybpY/wh1roEJqLxFOEowfYKAiATxcHYY7ccG8TS3jSIEGyHOstrzE4EKrvLhIr6v3U/kA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":761823},"type":"module","engines":{"node":">=18.17"},"gitHead":"53ec4e0455fc976eb869d9d8663956706522ce23","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.16.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.2.3_1781083778143_0.6551913443156643","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@cybedefend/vibedefend","version":"1.2.4","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.2.4","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"17ebecf0980323c58454fed4796559d31b5d1a9b","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.2.4.tgz","fileCount":114,"integrity":"sha512-DvmHtcREvUwT1tq67eAuoLCoTIeWRHk2K6PMmf7OAEQcvoAZbgaeYIKlzDWdw6T+hOO7sDB/8hm/E0rQ180vEA==","signatures":[{"sig":"MEYCIQD+1EFbyCs93VlXSNVjkCiFFmr9o7k8iP6YCRbBYa4HOQIhAI5IBTrxqmEb3TKlSrIzF2uMN/Z2H/w78ocCPKRhi8ob","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":761829},"type":"module","engines":{"node":">=18.17"},"gitHead":"725a0b5e61e3b8c200ae256b21219a65fd0cba86","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.16.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.2.4_1781187191886_0.2942466018630021","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@cybedefend/vibedefend","version":"1.3.0","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.3.0","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"b8b39e692a3076e215478ae9a7051965ecb7364b","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.3.0.tgz","fileCount":120,"integrity":"sha512-19ukuBlGe0DAA48zeyjjpYMk8XB+A4peCJP+Ov3GDJDYLh7fEtw8ZSu+vku06N213xi7p0FyAcinS3wA5N6qxw==","signatures":[{"sig":"MEQCICS/+iE0aWk6vAfZinDFNQuJ2VuMPIwrX+dp9Ge4lCZpAiAVpHjikpieH+JUPPlrsCovpb4/1fUzR4oD5nngIIIdbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":840398},"type":"module","engines":{"node":">=18.17"},"gitHead":"959fbbd86d9deb4b530ff5e978be8d1c6f83b8b1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.18.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.3.0_1783886276501_0.41466490222450814","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@cybedefend/vibedefend","version":"1.3.1","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.3.1","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"6bf1b1a238037d7f5e6167ba17e56f5ad0172986","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.3.1.tgz","fileCount":120,"integrity":"sha512-5l7xW4bfr+4kDGZOc4MeQA9G/Djztv22fTcoFjN7IUqJpYmwNwRG7j7Hn8oeYp+rdWUf7iDzyQ4R8oEPY99U7w==","signatures":[{"sig":"MEUCIQCJdXIm6Mu6HnTF2HAu0QvRx5jgobjwUIdoOPHSMNlOrwIgElILSdpsIuFdEmZmt8O0xgBjR44fqBP1bQYcp8tAO/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":842454},"type":"module","engines":{"node":">=18.17"},"gitHead":"554878f77c773d84326a78909258f1892bca816a","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.18.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.3.1_1783940390165_0.07678303660314278","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@cybedefend/vibedefend","version":"1.3.2","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.3.2","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"5179820221400afd858b3aee6b3f2d5876e761a1","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.3.2.tgz","fileCount":121,"integrity":"sha512-Rafm5NTE/SJLg8HPEbtSdkyr8OWxMI6nfRvaQoNiobGgKHoMY1ZJkz+b6UDUUrR89W9RvxNH/9TUCEW0yedMEg==","signatures":[{"sig":"MEYCIQCxDBo8az2Hwy86LB7m7DSHRXaP56C13LSEWjUTchjSNwIhAPtHB5oQD0ZMyypgeBiqJViAveiSd62DaRJ1EyTiVqUS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847665},"type":"module","engines":{"node":">=18.17"},"gitHead":"ad76a9fd49f3045b30eee106b285a76726034160","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.18.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.3.2_1783947348373_0.7720312989492422","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@cybedefend/vibedefend","version":"1.4.0","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.4.0","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"8fbe17b778f23f348288d903d5fad37a70bc2d55","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.0.tgz","fileCount":137,"integrity":"sha512-Cu3FHBgtlDkopc1jyAHjLFwohssD2dXH/gYBkAw8FajrJ5oAcWCXPd2XjwbzpAaoFSTIBXfOhbpXicpBcQ2zPw==","signatures":[{"sig":"MEYCIQC9Znu3EDbqn/gjKbWTr79S5fNk9hy9cVGaMxENH1C0VAIhAOKU72dQEYUQKcZZem/70vzSJQj/IDX2P8PVVsVNYSAT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":943109},"type":"module","engines":{"node":">=18.17"},"gitHead":"42c196e10d0db689a1214f35fdcecfe9bc23f3c5","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.18.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.4.0_1784291054880_0.5250352564884744","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@cybedefend/vibedefend","version":"1.4.1","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.4.1","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"4d4f26154fec2ac98dade69f7df2c60c59889ab4","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.1.tgz","fileCount":137,"integrity":"sha512-cu/sbw9pcl0WvcmY/gvleD9k1Nf7uAF5Cg2BYgLsvn+2gjku0lqcEw0io9lNlveAgEnz74fi5i3Gkk10sk2SSg==","signatures":[{"sig":"MEQCIDZtZYymnYT1JuDt3SK8gSoPzyYoXRQwy5lMFpW7+8s1AiAQvzEql78FnXHw/Pd6ouMyA45lV4Eb9ZfKKv6gpQ3JVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":943635},"type":"module","engines":{"node":">=18.17"},"gitHead":"dd4f2680754386736f06c0c21a2a4e2d8086367f","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.18.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.8.3","update-notifier":"^7.3.1","@inquirer/prompts":"^7.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^2.1.0","esbuild":"^0.28.0","typescript":"^5.6.0","@types/node":"^20.14.0","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.4.1_1784490333899_0.9729190162013353","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@cybedefend/vibedefend","version":"1.4.2","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.4.2","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"758f462aef4438808b7341adaaf452b3efeb78e1","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.2.tgz","fileCount":141,"integrity":"sha512-+3Cow+bvNnspsuODCOm5heZHga2wwl9uX4hoSAmSW0cq5hRnFIsRbrbyjqH4z9E1RsYJ5pG4QqyYrvZeOKLndg==","signatures":[{"sig":"MEUCIDt0CcLec4OIdKkmodOUydWujNq/zmJhakBMRfLK1Z2QAiEAocC/Ne+nUL2Xq0yBaC5jjjZBX8f10X9HBgRMnUjayS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1125006},"pnpm":{"overrides":{"vite":">=6.4.3 <8.0.0","postcss":">=8.5.18 <9.0.0"}},"type":"module","engines":{"node":">=18.17"},"gitHead":"23718c98f11a97ce9ea9cf1f9fb47a978260f4d6","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.19.1","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.10.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.10.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^3.2.7","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^20.19.43","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.4.2_1788534002608_0.0033346528125457464","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@cybedefend/vibedefend","version":"1.4.3","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.4.3","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"5112d3f1e9976ec8493e5b27a6edce9526e375e0","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.3.tgz","fileCount":143,"integrity":"sha512-/F0QgQnazjn+t5+m8/9wmrn/KKH28hCTnTXyf4p3VoqewhX13Nzmkp7mF8fqVPFSqC4ywxWDi9cOmchAq8aCdw==","signatures":[{"sig":"MEUCIQCkHB4p282g40uqCp8vgHYyQyJF9geRkS5j60aHd8dWEwIgb9G3C+WFaeKCa0NKvlrf/JkTS61roTUfr3D3n5iIAEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDYKmapSe+W4gHNmh4cPHZT7lTJrNKyFK5vC4z8l5LFVwIhAIv2zKGVVPybD7Hycboy+YWK67NLM9Ic71i1DQzeJHDg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1163383},"pnpm":{"overrides":{"vite":">=6.4.3 <8.0.0","postcss":">=8.5.18 <9.0.0"}},"type":"module","engines":{"node":">=18.17"},"gitHead":"87b16d8f2a532b206722167142e643972410e493","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.20.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.10.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.10.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^20.19.43","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.4.3_1790157553784_0.28073861957393786","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@cybedefend/vibedefend","version":"1.4.4","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.4.4","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"9d736539b787192cc9d7584febfb58cb748e8c71","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.4.tgz","fileCount":147,"integrity":"sha512-IQv0Uokqu4C1gtkWL3SDur53A+vQZHR0ULzJLPFR+VG5z0j1qxWe2eOOvjDp6nlUZ7UEWx//rCdVkCB3iy0S5A==","signatures":[{"sig":"MEYCIQCCe1CtmkPKuZ++3X6c3Rgw/dAbvJJaaXmt97JGMn3DGgIhAMjsPAQP5m3jkXfWkaAvdnIi2FxW8v49m/GIWt3tZPgG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGs0yBqvRu3VTE4stGy/5EdMiyEb+NXFFYAh+lL671VOAiAlNIlw343N+mpvzLtgrFOQKrvpys2d+VDYU+tbpVR5Cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1179701},"pnpm":{"overrides":{"vite":">=6.4.3 <8.0.0","postcss":">=8.5.18 <9.0.0"}},"type":"module","engines":{"node":">=18.17"},"gitHead":"5c5f7684f365f6426644d2f26d6a8608d0775ec9","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.20.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.10.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.10.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^4.1.11","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^20.19.43","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.4.4_1790258099187_0.06239963038649954","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@cybedefend/vibedefend","version":"1.4.5","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.4.5","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"bdc9990bbb92dfc25836da3b661c61928e6cae79","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.5.tgz","fileCount":155,"integrity":"sha512-D9GJKAf/bJT9V6Ayc5Iera4vcnCABHqWvJRCfL87zSjmJPRjBu7njVIGMmSF/kX9GZgM+RNNN54p3H4Nva2/ww==","signatures":[{"sig":"MEQCIFHlKWTbQc4Mcqa9Wg+BlxVhF93UEZwiA0L8bBWhEpShAiBogiUOXuckoGr87pGnbVB6g5m5HotjMmTzXhs+5lKpLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHfuXSn9LsYCXT/dhadKDvHejQdBGpAfApJeI9vvSaDwAiEAy2D1PqV6HBbDSnAjEuKpcK8fNxGAxarbYTsWrqcqgVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1245620},"pnpm":{"overrides":{"vite":">=6.4.3 <8.0.0","postcss":">=8.5.18 <9.0.0"}},"type":"module","engines":{"node":">=18.17"},"gitHead":"115c41f699bc276db5b8379c94fe1f7c60170445","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.21.0","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.12.0","update-notifier":"^7.3.1","@inquirer/prompts":"^7.10.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","vitest":"^4.1.11","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^20.19.43","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.4.5_1792020218239_0.28252332300506744","host":"s3://npm-registry-packages-npm-production"}},"1.4.6":{"name":"@cybedefend/vibedefend","version":"1.4.6","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"license":"BUSL-1.1","_id":"@cybedefend/vibedefend@1.4.6","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"homepage":"https://github.com/CybeDefend/vibedefend#readme","bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"bin":{"vibedefend":"bin/vibedefend.js"},"dist":{"shasum":"c328d85916888ba7f9c060d3113e083fe3d42d05","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.6.tgz","fileCount":159,"integrity":"sha512-VEtgcij+WS69NtlokmJDIQ/gAWjA7sJHZjOdqKXa206brwp116AXqSonP1u3CGRSz9tTKwCz3hsngYCUZAkVCg==","signatures":[{"sig":"MEYCIQDWkzgvqaLacYx+Vae70oozVYCVg1QY+zK93QCBcVtmHwIhAJ2TvNlCyQzZP7qh++8pbL59Qpi4OCv1dByoxph0jHpj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBiLRM5qWRMLdq1IIkOwHZx49KBX16hv1JIH7rvbGQUoAiEA61nHPehVMxRZRC7KTDU9oSByvDN9rdgnvcXhK/nok0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1271245},"pnpm":{"overrides":{"vite":">=6.4.3 <8.0.0","postcss":">=8.5.18 <9.0.0"}},"type":"module","engines":{"node":">=18.17"},"gitHead":"3c92855e72246a3e12df50b7ede67f3e915e2909","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.21.1","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.12.0","jsonc-parser":"^3.3.1","update-notifier":"^7.3.1","@inquirer/prompts":"^7.10.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","vite":"^7.3.7","vitest":"^4.1.12","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^20.19.43","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"tmp":"tmp/vibedefend_1.4.6_1792675928721_0.28553431942728147","host":"s3://npm-registry-packages-npm-production"}},"1.4.7":{"_id":"@cybedefend/vibedefend@1.4.7","bin":{"vibedefend":"bin/vibedefend.js"},"bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"dist":{"shasum":"30264533aee22a847dae266e1a37e003ccded98e","tarball":"https://registry.npmjs.org/@cybedefend/vibedefend/-/vibedefend-1.4.7.tgz","fileCount":161,"integrity":"sha512-qugWlgcFU9lJZS0ySCrgsZvXlkoV4/1VmFhBxB9cJvzTdwOUJQ/LJvZrENe6qUOnB8MGP15Lxqnh6bZYPACecQ==","signatures":[{"sig":"MEUCIQDhX5PH5yOz9A0whgYjkT1WA7+OeZ9c+RxP7TFRsdl+hAIgddkAwBk7KELMJvEbJfAEBdBBjnRHPB9Vz5X7MdkXqWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDOF3FBRTUpYMhHeUtdXIbip3uB5ExpcQ8xsLhUiQ8rdQIhAKofWEoc8IIfBnEks2l10yhgZN38QiZ6hTxhj46Cdt8D"}],"unpackedSize":1300054},"name":"@cybedefend/vibedefend","pnpm":{"overrides":{"vite":">=6.4.3 <8.0.0","postcss":">=8.5.18 <9.0.0"}},"type":"module","engines":{"node":">=18.17"},"gitHead":"80a6d275d5c4bff4fe618b84bc41a18adb8c5060","license":"BUSL-1.1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc && node scripts/build-hook-runner.mjs","prepack":"npm run build","build:tsc":"tsc","test:watch":"vitest","build:hooks":"node scripts/build-hook-runner.mjs","prepublishOnly":"npm test && npm run build"},"version":"1.4.7","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a560f90-c9da-4197-a1be-dbc76440ee1a"}},"homepage":"https://github.com/CybeDefend/vibedefend#readme","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"_npmVersion":"11.21.1","description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","directories":{},"maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","kleur":"^4.1.5","re2-wasm":"^1.0.2","commander":"^12.1.0","shell-quote":"^1.12.0","jsonc-parser":"^3.3.1","update-notifier":"^7.3.1","@inquirer/prompts":"^7.10.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","vite":"^7.3.7","vitest":"^4.1.12","esbuild":"^0.28.2","typescript":"^5.9.3","@types/node":"^20.19.43","@types/shell-quote":"^1.7.5","@types/update-notifier":"^6.0.8"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vibedefend_1.4.7_1792717728466_0.6549526214978623"}}},"time":{"created":"2026-05-25T23:26:22.786Z","modified":"2026-10-23T01:08:48.755Z","1.0.0":"2026-05-25T16:04:15.523Z","1.0.1":"2026-05-25T23:09:32.849Z","1.1.0":"2026-05-25T23:20:54.600Z","1.1.1":"2026-05-25T23:26:23.167Z","1.1.2":"2026-05-26T15:13:30.522Z","1.2.0":"2026-06-10T07:29:58.237Z","1.2.1":"2026-06-10T08:05:28.877Z","1.2.2":"2026-06-10T09:00:06.887Z","1.2.3":"2026-06-10T09:29:38.291Z","1.2.4":"2026-06-11T14:13:12.020Z","1.3.0":"2026-07-12T19:57:56.644Z","1.3.1":"2026-07-13T10:59:50.313Z","1.3.2":"2026-07-13T12:55:48.521Z","1.4.0":"2026-07-17T12:24:15.146Z","1.4.1":"2026-07-19T19:45:34.071Z","1.4.2":"2026-09-04T15:00:02.773Z","1.4.3":"2026-09-23T09:59:13.877Z","1.4.4":"2026-09-24T13:54:59.275Z","1.4.5":"2026-10-14T23:23:38.674Z","1.4.6":"2026-10-22T13:32:08.825Z","1.4.7":"2026-10-23T01:08:48.571Z"},"bugs":{"url":"https://github.com/CybeDefend/vibedefend/issues"},"license":"BUSL-1.1","homepage":"https://github.com/CybeDefend/vibedefend#readme","keywords":["cybedefend","vibedefend","vibe-coding","mcp","model-context-protocol","claude-code","cursor","codex","windsurf","security","business-rules","ai-coding-agent","hooks"],"repository":{"url":"git+https://github.com/CybeDefend/vibedefend.git","type":"git"},"description":"VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).","maintainers":[{"name":"julienzammit-cybedefend","email":"julien.zammit@cybedefend.com"},{"name":"florentinledy","email":"florentin.ledy@cybedefend.com"}],"readme":"# `@cybedefend/vibedefend`\n\n[![npm version](https://img.shields.io/npm/v/@cybedefend/vibedefend.svg)](https://www.npmjs.com/package/@cybedefend/vibedefend)\n[![node](https://img.shields.io/badge/node-%3E%3D18.17-brightgreen.svg)](https://nodejs.org)\n[![license](https://img.shields.io/badge/license-BUSL--1.1-yellow.svg)](./LICENSE)\n\n> **VibeDefend** — one-shot installer that connects your AI coding agent\n> to CybeDefend. Each time the agent edits code, the right business and\n> security rules for the change land in its context. Each time you commit\n> work, a quick gap analysis catches the rules you never wrote down.\n\n## Install\n\n```bash\nnpx -y @cybedefend/vibedefend@latest install\n```\n\nWorks on **macOS, Linux, and Windows** (PowerShell, cmd, bash, zsh, fish,\nGit Bash — pick any). Requires **Node 18.17 or later** — most users already\nhave it because Claude Code / Cursor / Codex ship with a bundled Node.\n\nThe installer is fully interactive, and signs you in **first**:\n\n1. **Pick a region** (EU / US).\n2. **Sign in** — your browser opens for a one-time CybeDefend sign-in\n   (skipped if you're already signed in from a previous run).\n3. **Organization check** — if your account doesn't belong to an\n   organization yet, the dashboard on-boarding page opens and the installer\n   waits while you create or join one (Ctrl-C to skip and finish later).\n4. **Pick which agents to wire** (auto-detected), confirm. That's it.\n\nRun through `npx` (or `pnpm dlx` / `yarn dlx`), the installer first installs\nthe CLI globally (`npm install -g @cybedefend/vibedefend`), so the\n`vibedefend` command is available afterwards and the hooks auto-update. If that\nglobal install fails (e.g. a root-owned npm prefix), MCP + hooks are still set\nup and the installer prints the command to run yourself. Pass `--no-global` to\nskip it and only wire MCP + hooks.\n\nOr install globally yourself first:\n\n```bash\nnpm  install -g @cybedefend/vibedefend && vibedefend install\n# or pnpm / yarn — same package\n```\n\n## Supported agents\n\nVibeDefend auto-detects and wires whichever of these you have installed.\n\n| Capability | Claude Code | Cursor | OpenAI Codex | Windsurf | VS Code Copilot |\n|---|:---:|:---:|:---:|:---:|:---:|\n| **MCP server install** | ✅ | ✅ | ✅ | ✅ | ✅ |\n| **Business + Security Rules** *(injected pre-write)* | ✅ edit + shell⁴ | ✅ | ✅ edit + shell⁴ | ⚠️ writes only | ✅ |\n| **Action Guards** *(hard block on deny)* | ✅ all tools | ✅ all tools | ✅ all tools | ⚠️ writes + MCP fallback¹ | ❌ not yet wired |\n| **Session Start** *(loads doctrine + proposals inbox)* | ✅ | ✅ | ✅ | ⚠️ proxied² | ✅ |\n| **Session Review** *(end-of-session gap analysis + pre-commit diff scan)* | ✅ | ✅ | ✅ | ✅ | ✅ |\n| **PreCompact** *(long-session gap analysis)* | ✅ | ✅ | ❌ no event | ❌ no event | ✅ |\n| **Doctrine backstop** *(per-prompt reminder)* | ✅ | ❌ | ✱ via MCP³ | ❌ | ❌ |\n| **Min version** | latest | ≥ 1.7 | latest | latest | ≥ 1.110 |\n\n**Legend** — ✅ supported · ⚠️ supported with caveats · ❌ not exposed by the agent · ✱ alternate mechanism\n\n¹ Windsurf's `pre_write_code` hook hard-blocks on file writes only. For non-write tool calls (Read / Bash / WebFetch) the installer drops a snippet into `.windsurfrules` instructing the agent to call `cybe_guards_check` via MCP before sensitive actions — soft enforcement that relies on the model following its rules file.\n\n² Windsurf has no native SessionStart event. We wire `pre_user_prompt`, which fires on every turn. The hook is idempotent and cheap (one GET to the proposals endpoint, returns \"0 pending\" once the inbox is empty), so the per-turn cost is negligible.\n\n³ Codex follows the doctrine via the MCP server's `Server.instructions` field on each session, removing the need for a per-prompt reminder hook.\n\n⁴ On Claude Code and Codex the rules hook also fires on shell commands that write files (`>` / `>>` redirections, heredocs, `tee`, `sed -i`, `perl -pi`, `cp` / `mv`, `dd of=`, `bash -c '…'`), so an agent that edits through the shell gets the same rules as one using the edit tool. Read-only commands fetch nothing. Inline interpreters (`python -c`, `node -e`) and `git apply` / `patch` are not inspected. Cursor, Windsurf and VS Code Copilot: edit tools only.\n\n**Codex setup gotcha:** Codex 0.131+ requires you to approve each hook via the `/hooks` panel inside Codex *before* they fire. After running `vibedefend install`, open Codex, run `/hooks`, and trust the `cybedefend` entries — until you do that the panel will show `Installed N / Active 0`.\n\n**Pre-commit diff scan (on by default):** when Session Review fires, the agent\nis also asked to run a quick **diff scan** (SAST / IaC / secrets) on the files\nit changed this session, via the `cybe_scan_diff` MCP tool — a best-effort\npre-commit check that complements (never replaces) a full scan. It rides on the\nSession Review hook, so it follows the same edits threshold. Decline it at\ninstall, or set `\"enableDiffScan\": false` in `~/.cybedefend/runtime-config.json`.\n\n**Non-blocking mode (autonomous agents, off by default):** by default the agent\npauses for you on business-rule proposals: an Accept / Reject picker for the\npending ones at session start, and a \"Propose this rule? Yes / No\" at the end of\na session. An autonomous agent such as Cyrus or a CI runner has nobody in the chat to answer, so turn on non-blocking mode\nat install. The agent then never asks: pending proposals are left for a human to\naccept or reject in the CybeDefend dashboard, and the end-of-session gap\nanalysis pushes its (at most one) proposal there directly. The agent never\naccepts or rejects a proposal on its own. You can set it per process with\n`CYBEDEFEND_NON_BLOCKING=1` (or `0` to force the prompts back), which takes\nprecedence over the installed setting. For example, set it only in the autonomous\nagent's environment on a machine a human also codes on. You can also set\n`\"nonBlockingMode\": true` in `~/.cybedefend/runtime-config.json`.\n\n**Auto-propose mode** (also asked at install, off by default) is the middle\nground. The end-of-session gap analysis proposes its rule without asking first,\nbut you still accept or reject pending proposals at the next session start.\nIt works the same way: `CYBEDEFEND_AUTO_PROPOSE=1` (or `0`) takes precedence\nover `\"autoProposeMode\"` in `~/.cybedefend/runtime-config.json`. Non-blocking\nmode supersedes it.\n\nUnchecked agents stay untouched. Re-run `vibedefend install` later to\ntoggle any on or off.\n\n## Commands\n\n```\nvibedefend install            Set up MCP + hooks (interactive, signs you in first)\nvibedefend update             Refresh hooks to the latest version\nvibedefend update --self      Upgrade the CLI itself\nvibedefend status             Read-only install report\nvibedefend doctor             Diagnose and repair common issues\nvibedefend login              (Re-)authenticate against the CybeDefend API\nvibedefend logout             Clear stored credentials (a fresh sign-in next run)\nvibedefend link               Link a repo to a CybeDefend project\nvibedefend uninstall          Remove every VibeDefend-installed file\nvibedefend --help             Full help\n```\n\n## Linking a repo to its project\n\nFor **projects imported from GitHub or GitLab, there is nothing to do**:\nVibeDefend reads the repo's `origin` remote and resolves the matching\nCybeDefend project automatically on the first hook call.\n\nFor any other repo (no remote, a mirror, a monorepo subfolder, an\nunimported project…), link it once:\n\n```bash\nvibedefend link                       # interactive: auto-detect, or pick org → project\nvibedefend link --project <uuid>      # non-interactive, if you know the project UUID\n# or without a global install:\nnpx -y @cybedefend/vibedefend@latest link --project <PROJECT_ID>\n```\n\n`link` writes a `.cybedefend/config.json` next to your code:\n\n```json\n{ \"projectId\": \"<your-cybedefend-project-uuid>\" }\n```\n\nThat file is now **optional** for GitHub/GitLab-linked projects, but it\nremains a supported override everywhere — when present, it always wins over\ngit-origin auto-resolution (as does the `CYBEDEFEND_PROJECT_ID` env var).\n\n`.cybedefend/config.json` also accepts an optional `apiBase`. Because the file\nis committed — and therefore comes from whoever published the repository you\njust cloned — that key is only honoured when it points at an origin **you**\nalready trust: a built-in region, the region you installed against\n(`~/.cybedefend/runtime-config.json`), or a custom region declared in your own\n`~/.cybedefend/regions.json`. Anything else is ignored with a warning and the\nhooks keep talking to your configured region. To point the hooks at a cluster\nof your own, add it to `~/.cybedefend/regions.json` or re-run\n`vibedefend install` — or set `CYBEDEFEND_API_BASE` in your own environment.\nYou can grab the UUID from the project page on the EU dashboard\n([eu.cybedefend.com](https://eu.cybedefend.com)) or the US dashboard\n([us.cybedefend.com](https://us.cybedefend.com)).\n\n## Updating\n\nAt install you're asked **\"Enable automatic background updates? (recommended)\"**.\nLeave it on and you never have to update by hand: the SessionStart hook checks\nnpm at most once a day and, when a newer version is out, upgrades\n`@cybedefend/vibedefend` in the background — the next session picks it up via the\nself-resolving runner shim. Opt out (or pin a version / locked-down env) and you\ninstead get a one-line nudge.\n\nTo update manually at any time:\n\n```bash\nvibedefend update     # upgrades the binary if newer, then refreshes hooks\n```\n\n(`vibedefend update --self` upgrades only the binary, without touching hooks.)\n\n**One-time bootstrap for installs older than 1.2.0:** those versions shipped a\n*frozen* copy of the hook runner with no update logic, so `vibedefend update`\nalone cannot upgrade the binary — do it explicitly first:\n\n```bash\nnpm i -g @cybedefend/vibedefend@latest   # or: vibedefend update --self\nvibedefend update                         # render the self-resolving shim\n```\n\nAfter that, updates are hands-off (or one `vibedefend update`) as above.\n\n## Uninstalling\n\n```bash\nvibedefend uninstall          # asks for confirmation; --yes to skip\n# Then drop the global package (the command prints the exact one for npm / pnpm / yarn):\nnpm uninstall -g @cybedefend/vibedefend\n```\n\n`uninstall` removes, from every supported agent, the VibeDefend hook entries\nand the CybeDefend MCP server registration — hooks and MCP servers that aren't\nours are left untouched. It also clears VibeDefend's stored credentials and\ndeletes `~/.cybedefend/`, keeping only your own `~/.cybedefend/regions.json`.\nRepositories keep their committed `.cybedefend/config.json`. A Windsurf\n`.windsurfrules` block is removed from the current directory only: in any other\nrepo you wired for Windsurf, delete it by hand. Codex's `[features] hooks = true`\nflag stays set, since other hooks may rely on it.\n\n## Sibling: `cybedefend-cli`\n\n[`cybedefend-cli`](https://github.com/CybeDefend/cybedefend-cli) is the\nplatform CLI (scan, list vulnerabilities, manage projects from your\nterminal or CI). VibeDefend handles the AI-agent integration side; the\ntwo are complementary and unaware of each other.\n\n## Documentation\n\nFull documentation, configuration reference, and troubleshooting at\n**[docs.cybedefend.com](https://docs.cybedefend.com)**.\n\n## Support\n\n- Bug reports / feature requests:\n  [support@cybedefend.com](mailto:support@cybedefend.com)\n- Email: [support@cybedefend.com](mailto:support@cybedefend.com)\n- Status: [status.cybedefend.com](https://status.cybedefend.com)\n\n## License\n\nBUSL-1.1 — see [LICENSE](./LICENSE). Copyright 2026 CybeDefend. Converts to Apache-2.0 on 2030-05-25.\n","readmeFilename":"README.md"}