fuzzi-cli 0.1.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/README.md +123 -0
- package/assets/changelog.json +21 -0
- package/bin/fuzzi.js +6 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1880 -0
- package/dist/index.js.map +1 -0
- package/package.json +56 -0
package/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Fuzzi CLI
|
|
2
|
+
|
|
3
|
+
Node.js/TypeScript command-line tool for running Fuzzi security scans without a browser. Supports an interactive shell (`fuzzi`) and direct commands for CI/CD (`fuzzi scan <url>`).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g fuzzi-cli
|
|
9
|
+
# or zero-install
|
|
10
|
+
npx fuzzi-cli@latest scan https://example.com
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick start
|
|
14
|
+
|
|
15
|
+
1. Generate an API key at [app.fuzzi.dev/settings/api-keys](https://app.fuzzi.dev/settings/api-keys)
|
|
16
|
+
2. Log in:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
fuzzi auth login
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
3. Run a scan:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
fuzzi scan https://example.com
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Two modes
|
|
29
|
+
|
|
30
|
+
| Invocation | Behavior |
|
|
31
|
+
|------------|----------|
|
|
32
|
+
| `fuzzi` | Interactive home screen + `>` slash-command REPL |
|
|
33
|
+
| `fuzzi scan <url>` | One-shot command, exits (CI/scripting) |
|
|
34
|
+
|
|
35
|
+
### Interactive slash commands
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
/scan <url> Run scan with live progress
|
|
39
|
+
/scans Browse recent scans
|
|
40
|
+
/status Auth status & rate limits
|
|
41
|
+
/keys View/revoke API keys
|
|
42
|
+
/config k=v Set local config
|
|
43
|
+
/changelog Release notes
|
|
44
|
+
/help All commands
|
|
45
|
+
/exit Leave the shell
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Direct commands
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
fuzzi scan <url> [--title] [--env production|staging|development] [--wait] [--no-wait] [--format table|json|markdown] [--fail-on low|medium|high|critical] [--fail-threshold 0.0-1.0]
|
|
52
|
+
fuzzi scans list [--status] [--risk-level] [--limit 20] [--format table|json]
|
|
53
|
+
fuzzi scans get <scan-id> [--format table|json|markdown]
|
|
54
|
+
fuzzi report <scan-id> --format pdf|csv|json [--output ./path]
|
|
55
|
+
fuzzi whatif <scan-id> --set dimension=value [--format json]
|
|
56
|
+
fuzzi compare <scan-a> <scan-b> [--format table|json]
|
|
57
|
+
fuzzi auth login [--api-key] | logout | status
|
|
58
|
+
fuzzi config get [key] | set <key> <value> | list
|
|
59
|
+
fuzzi --version
|
|
60
|
+
fuzzi --help
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## CI exit codes
|
|
64
|
+
|
|
65
|
+
| Code | Meaning |
|
|
66
|
+
|------|---------|
|
|
67
|
+
| 0 | Success; scan risk below `--fail-on` threshold |
|
|
68
|
+
| 1 | Scan succeeded but risk meets/exceeds `--fail-on` |
|
|
69
|
+
| 2 | Command failed (network, auth, invalid URL, etc.) |
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
fuzzi scan https://staging.example.com --fail-on critical
|
|
73
|
+
# exit 0 = risk < CRITICAL
|
|
74
|
+
# exit 1 = risk >= CRITICAL (intentional gate)
|
|
75
|
+
# exit 2 = scan error
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Configuration
|
|
79
|
+
|
|
80
|
+
**Credentials:** `~/.fuzzi/credentials` (mode 600)
|
|
81
|
+
|
|
82
|
+
**CLI config:** `~/.fuzzi/config`
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
fuzzi config set default_env staging
|
|
86
|
+
fuzzi config set default_format markdown
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Project config:** `.fuzzirc` (JSON) or `fuzzi.toml` in the working directory:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"scan": {
|
|
94
|
+
"url": "https://staging.example.com",
|
|
95
|
+
"environment": "staging",
|
|
96
|
+
"fail_on": "high"
|
|
97
|
+
},
|
|
98
|
+
"output": {
|
|
99
|
+
"format": "markdown"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
CLI flags override project config values.
|
|
105
|
+
|
|
106
|
+
## Development
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm install
|
|
110
|
+
npm run build
|
|
111
|
+
npm test
|
|
112
|
+
npm link # optional global `fuzzi` command
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Brand
|
|
116
|
+
|
|
117
|
+
- Accent: `#4FC3A1` (teal)
|
|
118
|
+
- Risk colors: LOW green, MEDIUM amber, HIGH red, CRITICAL purple
|
|
119
|
+
|
|
120
|
+
## v2 (not yet)
|
|
121
|
+
|
|
122
|
+
- Browser login (`fuzzi auth login --browser`)
|
|
123
|
+
- GitHub Action wrapper
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"date": "2026-06-19",
|
|
5
|
+
"highlights": [
|
|
6
|
+
"Added confidence gating",
|
|
7
|
+
"Fixed Netflix-style false positives",
|
|
8
|
+
"Interactive home screen with slash commands",
|
|
9
|
+
"API key authentication"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"version": "0.0.9",
|
|
14
|
+
"date": "2026-06-01",
|
|
15
|
+
"highlights": [
|
|
16
|
+
"OTP signup flow on backend",
|
|
17
|
+
"Production deployment",
|
|
18
|
+
"Branded transactional emails"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
]
|
package/bin/fuzzi.js
ADDED
package/dist/index.d.ts
ADDED