guardvibe 0.4.0
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/LICENSE +21 -0
- package/README.md +205 -0
- package/build/cli.d.ts +3 -0
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +118 -0
- package/build/cli.js.map +1 -0
- package/build/data/framework-guides.d.ts +8 -0
- package/build/data/framework-guides.d.ts.map +1 -0
- package/build/data/framework-guides.js +500 -0
- package/build/data/framework-guides.js.map +1 -0
- package/build/data/owasp-rules.d.ts +12 -0
- package/build/data/owasp-rules.d.ts.map +1 -0
- package/build/data/owasp-rules.js +469 -0
- package/build/data/owasp-rules.js.map +1 -0
- package/build/data/rules/core.d.ts +3 -0
- package/build/data/rules/core.d.ts.map +1 -0
- package/build/data/rules/core.js +245 -0
- package/build/data/rules/core.js.map +1 -0
- package/build/data/rules/go.d.ts +3 -0
- package/build/data/rules/go.d.ts.map +1 -0
- package/build/data/rules/go.js +64 -0
- package/build/data/rules/go.js.map +1 -0
- package/build/data/rules/index.d.ts +3 -0
- package/build/data/rules/index.d.ts.map +1 -0
- package/build/data/rules/index.js +13 -0
- package/build/data/rules/index.js.map +1 -0
- package/build/data/rules/java.d.ts +3 -0
- package/build/data/rules/java.d.ts.map +1 -0
- package/build/data/rules/java.js +64 -0
- package/build/data/rules/java.js.map +1 -0
- package/build/data/rules/php.d.ts +3 -0
- package/build/data/rules/php.d.ts.map +1 -0
- package/build/data/rules/php.js +54 -0
- package/build/data/rules/php.js.map +1 -0
- package/build/data/rules/ruby.d.ts +3 -0
- package/build/data/rules/ruby.d.ts.map +1 -0
- package/build/data/rules/ruby.js +54 -0
- package/build/data/rules/ruby.js.map +1 -0
- package/build/data/rules/types.d.ts +11 -0
- package/build/data/rules/types.d.ts.map +1 -0
- package/build/data/rules/types.js +2 -0
- package/build/data/rules/types.js.map +1 -0
- package/build/data/secret-patterns.d.ts +9 -0
- package/build/data/secret-patterns.d.ts.map +1 -0
- package/build/data/secret-patterns.js +87 -0
- package/build/data/secret-patterns.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +117 -0
- package/build/index.js.map +1 -0
- package/build/tools/check-code.d.ts +9 -0
- package/build/tools/check-code.d.ts.map +1 -0
- package/build/tools/check-code.js +125 -0
- package/build/tools/check-code.js.map +1 -0
- package/build/tools/check-deps.d.ts +8 -0
- package/build/tools/check-deps.d.ts.map +1 -0
- package/build/tools/check-deps.js +57 -0
- package/build/tools/check-deps.js.map +1 -0
- package/build/tools/check-project.d.ts +7 -0
- package/build/tools/check-project.d.ts.map +1 -0
- package/build/tools/check-project.js +134 -0
- package/build/tools/check-project.js.map +1 -0
- package/build/tools/get-security-docs.d.ts +2 -0
- package/build/tools/get-security-docs.d.ts.map +1 -0
- package/build/tools/get-security-docs.js +61 -0
- package/build/tools/get-security-docs.js.map +1 -0
- package/build/tools/scan-dependencies.d.ts +2 -0
- package/build/tools/scan-dependencies.d.ts.map +1 -0
- package/build/tools/scan-dependencies.js +69 -0
- package/build/tools/scan-dependencies.js.map +1 -0
- package/build/tools/scan-directory.d.ts +2 -0
- package/build/tools/scan-directory.d.ts.map +1 -0
- package/build/tools/scan-directory.js +120 -0
- package/build/tools/scan-directory.js.map +1 -0
- package/build/tools/scan-secrets.d.ts +11 -0
- package/build/tools/scan-secrets.d.ts.map +1 -0
- package/build/tools/scan-secrets.js +150 -0
- package/build/tools/scan-secrets.js.map +1 -0
- package/build/utils/manifest-parser.d.ts +7 -0
- package/build/utils/manifest-parser.d.ts.map +1 -0
- package/build/utils/manifest-parser.js +102 -0
- package/build/utils/manifest-parser.js.map +1 -0
- package/build/utils/osv-client.d.ts +37 -0
- package/build/utils/osv-client.d.ts.map +1 -0
- package/build/utils/osv-client.js +78 -0
- package/build/utils/osv-client.js.map +1 -0
- package/package.json +46 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 VibeGuard Security
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# GuardVibe Security
|
|
2
|
+
|
|
3
|
+
**Security guardian for vibe-coders.** An MCP server that gives your AI coding assistant (Gemini, Claude, Cursor) real-time security knowledge.
|
|
4
|
+
|
|
5
|
+
Stop shipping vulnerable code. GuardVibe checks your code against OWASP Top 10, scans dependencies for CVEs, and provides framework-specific security guides — all inside your AI workflow.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Code Security Analysis** — Scans code for 45+ vulnerability patterns (SQL injection, XSS, hardcoded secrets, cloud API keys, CORS misconfig, and more)
|
|
10
|
+
- **Directory Scanning** — Scan your entire project directory directly from the filesystem with security scoring (A-F grade)
|
|
11
|
+
- **Secret Detection** — Pattern + entropy-based detection of leaked API keys, tokens, and credentials in code and config files
|
|
12
|
+
- **Dependency CVE Check** — Parse lockfiles (package.json, requirements.txt, go.mod, Gemfile.lock, Cargo.lock) and batch-query Google's OSV database
|
|
13
|
+
- **False Positive Suppression** — `// guardvibe-ignore VG001` comments to suppress known false positives
|
|
14
|
+
- **Security Documentation** — Instant best-practice guides for Express, Next.js, FastAPI, React, and more
|
|
15
|
+
- **8 Languages** — JavaScript, TypeScript, Python, Go, Java, PHP, Ruby, and more
|
|
16
|
+
- **OWASP Top 10:2025** — All rules mapped to the latest OWASP standards
|
|
17
|
+
- **Zero-Config Setup** — `npx guardvibe init claude` sets up everything automatically
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
20
|
+
|
|
21
|
+
### Auto Setup (Recommended)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Set up for your AI coding assistant
|
|
25
|
+
npx guardvibe init claude # Claude Code
|
|
26
|
+
npx guardvibe init gemini # Gemini CLI
|
|
27
|
+
npx guardvibe init cursor # Cursor / VS Code
|
|
28
|
+
npx guardvibe init all # All platforms
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Manual Setup
|
|
32
|
+
|
|
33
|
+
**Claude Code:**
|
|
34
|
+
```bash
|
|
35
|
+
claude mcp add guardvibe -- npx guardvibe
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Gemini CLI** — add to `~/.gemini/settings.json`:
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"mcpServers": {
|
|
42
|
+
"guardvibe": {
|
|
43
|
+
"command": "npx",
|
|
44
|
+
"args": ["-y", "guardvibe"]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Cursor / VS Code** — add to MCP settings:
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"mcpServers": {
|
|
54
|
+
"guardvibe": {
|
|
55
|
+
"command": "npx",
|
|
56
|
+
"args": ["-y", "guardvibe"]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Tools
|
|
63
|
+
|
|
64
|
+
### `check_code`
|
|
65
|
+
Analyze a single code snippet for security vulnerabilities.
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Input: { code: string, language: "javascript"|"typescript"|"python"|"go"|"java"|"php"|"ruby"|..., framework?: string }
|
|
69
|
+
Output: Security report with findings, severity, OWASP mapping, and fix suggestions
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `check_project`
|
|
73
|
+
Scan multiple files and generate a project-wide security report with a score (A-F).
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Input: { files: [{ path: "src/app.ts", content: "..." }, ...] }
|
|
77
|
+
Output: Project security report with score, summary table, and per-file findings
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### `get_security_docs`
|
|
81
|
+
Get security best practices for a topic or framework.
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Input: { topic: "express authentication" | "sql injection" | "nextjs csrf" | ... }
|
|
85
|
+
Output: Markdown guide with code examples
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### `scan_directory`
|
|
89
|
+
Scan an entire project directory directly from the filesystem. No need to pass file contents.
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
Input: { path: "./src", recursive?: true, exclude?: ["vendor"] }
|
|
93
|
+
Output: Project security report with A-F score, summary, and per-file findings
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### `scan_dependencies`
|
|
97
|
+
Parse a lockfile/manifest and check all dependencies for CVEs in one batch query.
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Input: { manifest_path: "package.json" }
|
|
101
|
+
Supported: package.json, package-lock.json, requirements.txt, go.mod, Gemfile.lock, Cargo.lock
|
|
102
|
+
Output: Vulnerability report with normalized severity and fix versions
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### `scan_secrets`
|
|
106
|
+
Detect leaked secrets, API keys, and tokens in code and config files.
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
Input: { path: ".", recursive?: true }
|
|
110
|
+
Output: Secret scan report with provider identification, .gitignore coverage check, entropy-based detection
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### `check_dependencies`
|
|
114
|
+
Check individual packages for known CVEs via Google OSV.
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Input: { packages: [{ name: "lodash", version: "4.17.20", ecosystem: "npm" }] }
|
|
118
|
+
Output: Vulnerability report with CVE IDs, severity, and fix versions
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Supported Topics
|
|
122
|
+
|
|
123
|
+
| Topic | Coverage |
|
|
124
|
+
|-------|----------|
|
|
125
|
+
| OWASP Top 10 | Full 2025 reference |
|
|
126
|
+
| Express.js | Helmet, CORS, rate limiting, sessions, input validation |
|
|
127
|
+
| Next.js | Server Components, Server Actions, CSRF, CSP, env vars |
|
|
128
|
+
| FastAPI | Pydantic, CORS, rate limiting, SQLAlchemy, auth |
|
|
129
|
+
| React | XSS prevention, secure API calls, state management |
|
|
130
|
+
| SQL Injection | Parameterized queries, ORMs (Prisma, Drizzle, SQLAlchemy) |
|
|
131
|
+
| XSS | DOM sanitization, CSP, React escaping |
|
|
132
|
+
| Authentication | bcrypt, JWT, OAuth, session security |
|
|
133
|
+
| Environment Variables | .env management, Vercel, secret rotation |
|
|
134
|
+
|
|
135
|
+
## Security Rules (45+ patterns)
|
|
136
|
+
|
|
137
|
+
### Core Rules (All supported languages)
|
|
138
|
+
|
|
139
|
+
| ID | Rule | Severity | Languages |
|
|
140
|
+
|----|------|----------|-----------|
|
|
141
|
+
| VG001 | Hardcoded credentials | Critical | All |
|
|
142
|
+
| VG003 | Cloud provider API keys (AWS, GitHub, OpenAI, Stripe) | Critical | All |
|
|
143
|
+
| VG010 | SQL injection | Critical | All |
|
|
144
|
+
| VG011 | Command injection | Critical | All |
|
|
145
|
+
| VG014 | Dynamic code execution (eval) | Critical | JS/TS/Python/PHP/Ruby |
|
|
146
|
+
| VG060 | Weak password hashing (MD5/SHA-1) | Critical | All |
|
|
147
|
+
| VG040 | CORS wildcard | High | All |
|
|
148
|
+
| VG030 | Missing rate limiting | Medium | All |
|
|
149
|
+
|
|
150
|
+
### Language-Specific Rules
|
|
151
|
+
|
|
152
|
+
| ID Range | Language | Rules |
|
|
153
|
+
|----------|----------|-------|
|
|
154
|
+
| VG002, VG012-VG015 | JavaScript/TypeScript | Missing auth, XSS, NoSQL injection, JWT |
|
|
155
|
+
| VG005 | Python | Missing auth (FastAPI/Flask) |
|
|
156
|
+
| VG110-VG115 | Go | SQL injection (fmt.Sprintf), os/exec, template.HTML, handler auth, weak hash, CORS |
|
|
157
|
+
| VG120-VG125 | Java | SQL concat, Runtime.exec, JSP XSS, Spring auth, MessageDigest, @CrossOrigin |
|
|
158
|
+
| VG130-VG134 | PHP | $_GET/$_POST SQL injection, shell_exec, echo XSS, md5/sha1, eval |
|
|
159
|
+
| VG140-VG144 | Ruby | String interpolation SQL, backtick injection, html_safe XSS, route auth, Digest |
|
|
160
|
+
|
|
161
|
+
## Suppressing False Positives
|
|
162
|
+
|
|
163
|
+
Add `guardvibe-ignore` comments to suppress specific findings:
|
|
164
|
+
|
|
165
|
+
```javascript
|
|
166
|
+
// Suppress a specific rule on this line
|
|
167
|
+
const password = process.env.DB_PASSWORD; // guardvibe-ignore VG001
|
|
168
|
+
|
|
169
|
+
// Suppress a rule on the next line
|
|
170
|
+
// guardvibe-ignore-next-line VG002
|
|
171
|
+
app.get('/api/health', (req, res) => res.json({ ok: true }));
|
|
172
|
+
|
|
173
|
+
// Suppress all rules on this line
|
|
174
|
+
const x = something; // guardvibe-ignore
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Supports `//`, `#`, and `<!-- -->` comment styles.
|
|
178
|
+
|
|
179
|
+
## How It Works
|
|
180
|
+
|
|
181
|
+
GuardVibe runs as a local MCP server (stdio transport). When your AI assistant needs security guidance, it calls GuardVibe's tools:
|
|
182
|
+
|
|
183
|
+
1. **Writing code?** → `check_code` scans for vulnerability patterns
|
|
184
|
+
2. **Reviewing a project?** → `scan_directory` scans your entire codebase
|
|
185
|
+
3. **Adding a package?** → `scan_dependencies` checks your lockfile for CVEs
|
|
186
|
+
4. **Worried about leaks?** → `scan_secrets` detects API keys and tokens
|
|
187
|
+
5. **Need guidance?** → `get_security_docs` returns best practices
|
|
188
|
+
|
|
189
|
+
No API keys needed. No cloud dependency. Runs entirely on your machine.
|
|
190
|
+
|
|
191
|
+
## Development
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
git clone https://github.com/goklab/guardvibe.git
|
|
195
|
+
cd guardvibe
|
|
196
|
+
npm install
|
|
197
|
+
npm run dev # watch mode
|
|
198
|
+
npm run build # compile
|
|
199
|
+
npm test # run tests
|
|
200
|
+
npm start # run server
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## License
|
|
204
|
+
|
|
205
|
+
MIT
|
package/build/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/build/cli.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
3
|
+
import { join, dirname } from "path";
|
|
4
|
+
import { homedir } from "os";
|
|
5
|
+
const GUARDVIBE_MCP_CONFIG = {
|
|
6
|
+
command: "npx",
|
|
7
|
+
args: ["-y", "guardvibe"],
|
|
8
|
+
};
|
|
9
|
+
const platforms = {
|
|
10
|
+
claude: {
|
|
11
|
+
path: join(process.cwd(), ".claude.json"),
|
|
12
|
+
description: "Claude Code (.claude.json)",
|
|
13
|
+
},
|
|
14
|
+
gemini: {
|
|
15
|
+
path: join(homedir(), ".gemini", "settings.json"),
|
|
16
|
+
description: "Gemini CLI (~/.gemini/settings.json)",
|
|
17
|
+
},
|
|
18
|
+
cursor: {
|
|
19
|
+
path: join(process.cwd(), ".cursor", "mcp.json"),
|
|
20
|
+
description: "Cursor (.cursor/mcp.json)",
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
function readJsonFile(filePath) {
|
|
24
|
+
try {
|
|
25
|
+
const content = readFileSync(filePath, "utf-8");
|
|
26
|
+
return JSON.parse(content);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function writeJsonFile(filePath, data) {
|
|
33
|
+
const dir = dirname(filePath);
|
|
34
|
+
if (!existsSync(dir)) {
|
|
35
|
+
mkdirSync(dir, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n", "utf-8");
|
|
38
|
+
}
|
|
39
|
+
function setupPlatform(name) {
|
|
40
|
+
const platform = platforms[name];
|
|
41
|
+
if (!platform)
|
|
42
|
+
return false;
|
|
43
|
+
const existing = readJsonFile(platform.path);
|
|
44
|
+
if (existing) {
|
|
45
|
+
// Merge - don't overwrite existing MCP servers
|
|
46
|
+
if (!existing.mcpServers) {
|
|
47
|
+
existing.mcpServers = {};
|
|
48
|
+
}
|
|
49
|
+
if (existing.mcpServers["guardvibe"]) {
|
|
50
|
+
console.log(` [OK] GuardVibe already configured in ${platform.description}`);
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
existing.mcpServers["guardvibe"] = GUARDVIBE_MCP_CONFIG;
|
|
54
|
+
writeJsonFile(platform.path, existing);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Create new config
|
|
58
|
+
writeJsonFile(platform.path, {
|
|
59
|
+
mcpServers: {
|
|
60
|
+
vibeguard: GUARDVIBE_MCP_CONFIG,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
console.log(` [OK] Added MCP server to ${platform.description}`);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
function printUsage() {
|
|
68
|
+
console.log(`
|
|
69
|
+
GuardVibe Security - Setup CLI
|
|
70
|
+
|
|
71
|
+
Usage:
|
|
72
|
+
npx guardvibe init <platform>
|
|
73
|
+
|
|
74
|
+
Platforms:
|
|
75
|
+
claude Configure for Claude Code (.claude.json)
|
|
76
|
+
gemini Configure for Gemini CLI (~/.gemini/settings.json)
|
|
77
|
+
cursor Configure for Cursor (.cursor/mcp.json)
|
|
78
|
+
all Configure all platforms
|
|
79
|
+
|
|
80
|
+
Examples:
|
|
81
|
+
npx guardvibe init claude
|
|
82
|
+
npx guardvibe init all
|
|
83
|
+
`);
|
|
84
|
+
}
|
|
85
|
+
function main() {
|
|
86
|
+
const args = process.argv.slice(2);
|
|
87
|
+
if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
|
|
88
|
+
printUsage();
|
|
89
|
+
process.exit(0);
|
|
90
|
+
}
|
|
91
|
+
if (args[0] !== "init") {
|
|
92
|
+
console.error(` Unknown command: ${args[0]}`);
|
|
93
|
+
printUsage();
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
const platform = args[1]?.toLowerCase();
|
|
97
|
+
if (!platform) {
|
|
98
|
+
console.error(" Please specify a platform: claude, gemini, cursor, or all");
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
console.log(`\n GuardVibe Security Setup\n`);
|
|
102
|
+
if (platform === "all") {
|
|
103
|
+
for (const name of Object.keys(platforms)) {
|
|
104
|
+
setupPlatform(name);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (platforms[platform]) {
|
|
108
|
+
setupPlatform(platform);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.error(` Unknown platform: ${platform}`);
|
|
112
|
+
console.error(` Available: claude, gemini, cursor, all`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
console.log(`\n [OK] Ready! Start coding securely.\n`);
|
|
116
|
+
}
|
|
117
|
+
main();
|
|
118
|
+
//# sourceMappingURL=cli.js.map
|
package/build/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,oBAAoB,GAAG;IAC3B,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;CAC1B,CAAC;AAOF,MAAM,SAAS,GAA0D;IACvE,MAAM,EAAE;QACN,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC;QACzC,WAAW,EAAE,4BAA4B;KAC1C;IACD,MAAM,EAAE;QACN,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC;QACjD,WAAW,EAAE,sCAAsC;KACpD;IACD,MAAM,EAAE;QACN,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;QAChD,WAAW,EAAE,2BAA2B;KACzC;CACF,CAAC;AAEF,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,IAAe;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,QAAQ,EAAE,CAAC;QACb,+CAA+C;QAC/C,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAK,QAAQ,CAAC,UAAsC,CAAC,WAAW,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,0CAA0C,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;QACA,QAAQ,CAAC,UAAsC,CAAC,WAAW,CAAC,GAAG,oBAAoB,CAAC;QACrF,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC3B,UAAU,EAAE;gBACV,SAAS,EAAE,oBAAoB;aAChC;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,IAAI;IACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClE,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/C,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,aAAa,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-guides.d.ts","sourceRoot":"","sources":["../../src/data/framework-guides.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,eAAO,MAAM,eAAe,EAAE,aAAa,EAwf1C,CAAC"}
|