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 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
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import { fileURLToPath } from "node:url";
3
+ import { dirname, join } from "node:path";
4
+
5
+ const here = dirname(fileURLToPath(import.meta.url));
6
+ await import(join(here, "..", "dist", "index.js"));
@@ -0,0 +1,2 @@
1
+
2
+ export { }