codeprobe-scanner 1.0.4 → 1.0.6

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.
Files changed (73) hide show
  1. package/bin/codeprobe.cjs +1 -1
  2. package/package.json +1 -1
  3. package/src/integrations/videodb.ts +9 -8
  4. package/.claude/settings.local.json +0 -19
  5. package/.dockerignore +0 -17
  6. package/.env.development +0 -8
  7. package/.env.setup +0 -214
  8. package/.github/workflows/codeprobe-scan.yml +0 -137
  9. package/.github/workflows/codeprobe.yml +0 -84
  10. package/.github/workflows/scan-schedule.yml +0 -28
  11. package/ANALYSIS_SUMMARY.md +0 -365
  12. package/API_INTEGRATIONS.md +0 -469
  13. package/BUILD_PLAYBOOK.md +0 -349
  14. package/CLAUDE.md +0 -106
  15. package/DEPLOY.md +0 -452
  16. package/DEPLOYMENT_STATUS.md +0 -240
  17. package/DEPLOY_CHECKLIST.md +0 -316
  18. package/Dockerfile +0 -24
  19. package/EXECUTION_PLAN.html +0 -1086
  20. package/IMPLEMENTATION_COMPLETE.md +0 -288
  21. package/IMPLEMENTATION_SUMMARY.md +0 -443
  22. package/INTERACTIVE_FIX_FLOW.md +0 -308
  23. package/MIGRATION_COMPLETE.md +0 -327
  24. package/ORCHESTRATOR_SYNTHESIS.json +0 -80
  25. package/PENDING_WORK.md +0 -308
  26. package/PREFLIGHT_PLAN.md +0 -182
  27. package/QUICKSTART.md +0 -305
  28. package/STAGE_1_SETUP_ENGINE.md +0 -245
  29. package/STAGE_2_ARCHITECTURE.md +0 -714
  30. package/STAGE_2_CLI_VERIFICATION.md +0 -269
  31. package/STAGE_2_COMPLETE.md +0 -332
  32. package/STAGE_2_IMPLEMENTATION_PLAN.md +0 -679
  33. package/STAGE_3_COMPLETE.md +0 -246
  34. package/STAGE_3_DASHBOARD_POLISH.md +0 -371
  35. package/STAGE_3_SETUP.md +0 -155
  36. package/VIDEODB_INTEGRATION.md +0 -237
  37. package/archived/DASHBOARD_UI_WALKTHROUGH.md +0 -392
  38. package/archived/FRONTEND_SETUP.md +0 -236
  39. package/archived/auth.ts +0 -40
  40. package/archived/dashboard/components/BusinessImpactCard.tsx +0 -48
  41. package/archived/dashboard/components/CVETable.tsx +0 -104
  42. package/archived/dashboard/components/ErrorBoundary.tsx +0 -48
  43. package/archived/dashboard/components/PatchDiffViewer.tsx +0 -43
  44. package/archived/dashboard/components/RiskGauge.tsx +0 -64
  45. package/archived/dashboard/frontend.tsx +0 -104
  46. package/archived/dashboard/hooks/useAuth.ts +0 -32
  47. package/archived/dashboard/hooks/useScan.ts +0 -65
  48. package/archived/dashboard/index.html +0 -15
  49. package/archived/dashboard/pages/LoginPage.tsx +0 -28
  50. package/archived/dashboard/pages/ScanDetailPage.tsx +0 -143
  51. package/archived/dashboard/pages/ScansListPage.tsx +0 -160
  52. package/bun.lock +0 -603
  53. package/codeprobe-prd.md +0 -674
  54. package/cve-cache.json +0 -25
  55. package/demo-vulnerable-app/.github/workflows/codeprobe.yml +0 -32
  56. package/demo-vulnerable-app/README.md +0 -70
  57. package/demo-vulnerable-app/package-lock.json +0 -27
  58. package/demo-vulnerable-app/package.json +0 -15
  59. package/demo-vulnerable-app/server.js +0 -34
  60. package/demo.sh +0 -45
  61. package/index.ts +0 -19
  62. package/patches.json +0 -12
  63. package/serve-dashboard.ts +0 -23
  64. package/src/cli/index.ts +0 -137
  65. package/src/engine/index.ts +0 -90
  66. package/src/test/cli.test.ts +0 -211
  67. package/src/test/dashboard.test.ts +0 -38
  68. package/src/test/demo-scan.json +0 -32
  69. package/src/test/engine.test.ts +0 -157
  70. package/tailwind.config.js +0 -11
  71. package/tsconfig.json +0 -30
  72. package/verify-dashboard.ts +0 -87
  73. package/verify-env.sh +0 -98
@@ -1,269 +0,0 @@
1
- # CodeProbe MVP — Stage 2: CLI + Verification + Fallbacks
2
- **Duration:** 2–4 hours
3
- **Team:** 1–2 engineers (can work in parallel with Stage 1 or sequentially)
4
- **Dependency:** Stage 1 must be working
5
-
6
- ---
7
-
8
- ## Overview
9
-
10
- Build the **CLI interface** and **production-grade fallback logic**. This is where the "demo moment" happens: user runs `codeprobe scan` and sees real-time exploit verification. Includes error handling, retry logic, and graceful degradation if external APIs fail.
11
-
12
- **Success Metric:** `codeprobe scan ./demo-vulnerable-app` completes in <3 minutes, shows risk score + confirmed exploitable CVEs, patches are ready to apply.
13
-
14
- ---
15
-
16
- ## Critical Decisions (Locked)
17
-
18
- | What | Decision | Why |
19
- |------|----------|-----|
20
- | CLI Framework | No heavy framework; use chalk + table.js | Keep it simple, fast startup. No `commander.js` overhead. |
21
- | Real-Time Output | Event emitter (progress updates) → CLI polls/logs | Engine emits: "parsing...", "scraping...", "sandboxing...", CLI logs with timestamps. |
22
- | Fallback Strategy | Bright Data fails → cached CVE JSON. Daytona crash → mark "verification failed". LLM fails → use pre-baked patch. | Demo must work even if 1–2 APIs are flaky. Pre-record fallback video anyway. |
23
- | Config Storage | `~/.codeprobe/config.json` (GitHub token encrypted with SHA256 + salt) | Simple, portable. No database. |
24
- | Exit Codes | 0 = success, 1 = vulnerabilities found, 2 = scan failed | Matches CI/CD standards. |
25
-
26
- ---
27
-
28
- ## Deliverables
29
-
30
- ### 1. CLI Entry Point
31
- - [ ] `src/cli/index.ts`:
32
- - Commands: `scan`, `scan --fix`, `report`
33
- - No args = show help
34
- - `--json` flag for machine-readable output
35
- - `--verbose` flag for detailed logs
36
- - Error handling: catch all errors, show friendly messages + suggestion
37
- - **Test**: `bun ./src/cli/index.ts --help` shows usage
38
-
39
- ### 2. `codeprobe scan` Command
40
- - [ ] `src/cli/commands/scan.ts`:
41
- - Input: repo URL or local path (default: current dir)
42
- - Output: Real-time progress to stdout
43
- - Flow:
44
- ```
45
- ⚡ CodeProbe v1.0.0
46
- [12:34:56] Parsing dependencies...
47
- [12:34:58] Found 8 dependencies
48
- [12:34:59] Fetching CVE data (Bright Data)...
49
- [12:35:14] Found 3 CVEs matching your dependencies
50
- [12:35:15] Spinning up sandboxes for CRITICAL CVEs...
51
- [12:35:16] ├─ Sandbox 1: CVE-2022-29078 (ejs Template Injection RCE)
52
- [12:35:17] Running exploit...
53
- [12:36:17] ✓ CONFIRMED EXPLOITABLE (RCE achieved in 1.2s)
54
-
55
- ────────────────────────────────────────────────
56
- SCAN COMPLETE
57
- Risk Score: 9.0/10 (CRITICAL)
58
- Confirmed Exploitable: 1
59
- Theoretical Risk: 1
60
-
61
- Patches Available: 1
62
- View full report: ~/.codeprobe/scans/{scan_id}.json
63
- ────────────────────────────────────────────────
64
- ```
65
- - Colors: Green = confirmed, Yellow = theoretical, Red = supply chain warnings
66
- - Exit code: 0 (no vulns), 1 (vulns found), 2 (scan failed)
67
-
68
- ### 3. `codeprobe scan --fix` Command
69
- - [ ] `src/cli/commands/scan-with-fix.ts`:
70
- - After scan completes, generate patches for confirmed CVEs
71
- - Create new git branch: `codeprobe-fix-{timestamp}`
72
- - Apply patches (update package.json + package-lock.json)
73
- - Commit with message:
74
- ```
75
- [CodeProbe] Fix CVE-2023-44487 (HTTP/2 Rapid Reset)
76
-
77
- Exploit verification: CONFIRMED EXPLOITABLE
78
- Risk Score: 8.5/10
79
- Patch: http2-server 1.0.0 → 1.0.1
80
- ```
81
- - Output:
82
- ```
83
- [12:36:20] Applying patches...
84
- [12:36:25] ✓ Updated ejs: 3.1.6 → 3.1.7
85
- [12:36:26] Committed to branch: codeprobe-fix-2026-06-13-001
86
- [12:36:27] Push to GitHub: git push -u origin codeprobe-fix-2026-06-13-001
87
- ```
88
- - Exit code: 0 (patches applied), 1 (patches failed), 2 (scan failed)
89
-
90
- ### 4. `codeprobe report` Command
91
- - [ ] `src/cli/commands/report.ts`:
92
- - Display last scan results (from `~/.codeprobe/scans/latest.json`)
93
- - Formatted table: CVE | Package | Severity | Exploitable | Patch Version
94
- - Option: `--export json` or `--export html`
95
- - Exit code: 0
96
-
97
- ### 5. Config Management
98
- - [ ] `src/cli/config.ts`:
99
- - Load/save `~/.codeprobe/config.json`
100
- - Store: GitHub token (encrypted), Bright Data API key, Daytona API key, Nosana API key
101
- - Encryption: SHA256 + salt (simple, not production-grade, but OK for MVP)
102
- - Methods: `getConfig()`, `setConfig(key, value)`, `clearConfig(key)`
103
- - On first run: prompt for GitHub token (if needed for later features)
104
-
105
- ### 6. Progress + Logging
106
- - [ ] `src/cli/progress.ts`:
107
- - Event emitter from Stage 1 engine
108
- - Translate engine events → human-readable CLI output
109
- - Progress bar library: use simple ASCII (no fancy libraries)
110
- - Colors: chalk.js
111
- - Timestamps: dayjs.js
112
- - Levels: `info`, `warn`, `error`, `success`
113
- - **Test**: `bun run index.ts scan . --verbose` should show all events
114
-
115
- ### 7. Error Handling + Fallbacks
116
- - [ ] `src/cli/errors.ts`:
117
- - Catch all exceptions at top level
118
- - Map to user-friendly messages:
119
- ```
120
- ❌ Bright Data API failed (network timeout)
121
- → Using cached CVE data (last updated 2h ago)
122
- → Scan continues but results may be incomplete
123
- ⚠️ Run `codeprobe config set BRIGHT_DATA_API_KEY <key>` to use live data
124
- ```
125
- - Fallback triggers:
126
- - Bright Data timeout (5s) → use cache
127
- - Daytona spawn fail (2 retries) → mark "verification failed", continue
128
- - LLM generation fail (2 retries) → use pre-baked patch
129
- - Never silently fail; always log what went wrong + what we're doing instead
130
-
131
- ### 8. Integration Tests
132
- - [ ] `src/test/cli.test.ts`:
133
- ```ts
134
- test("CLI: scan demo repo end-to-end", async () => {
135
- const { exitCode, output } = await runCLI(["scan", "./demo-vulnerable-app"]);
136
- expect(exitCode).toBe(1); // 1 = vulnerabilities found
137
- expect(output).toContain("CVE-2022-29078");
138
- expect(output).toContain("CONFIRMED EXPLOITABLE");
139
- expect(output).toContain("Risk Score");
140
- });
141
-
142
- test("CLI: --fix creates branch and commits", async () => {
143
- const { exitCode, output } = await runCLI(["scan", "./demo-vulnerable-app", "--fix"]);
144
- expect(exitCode).toBe(1);
145
- expect(output).toContain("codeprobe-fix");
146
- // Check git branch was created
147
- const branches = await $`git branch`.text();
148
- expect(branches).toContain("codeprobe-fix");
149
- });
150
- ```
151
- - [ ] Run: `bun test` → should pass
152
-
153
- ### 9. Performance Optimization
154
- - [ ] Measure + log scan time:
155
- ```
156
- ⏱️ Scan completed in 2m 34s
157
- - Parsing: 2s
158
- - Scraping: 18s
159
- - Sandbox setup: 45s
160
- - Exploit execution: 28s
161
- - Patch generation: 1s
162
- ```
163
- - [ ] If any step > 30s, log warning: "⚠️ Step XYZ slow (YYs). Consider checking your network."
164
- - [ ] Target: <3 minutes end-to-end
165
-
166
- ### 10. Demo Rehearsal Script
167
- - [ ] `demo.sh`:
168
- ```bash
169
- #!/bin/bash
170
- set -e
171
- echo "=== CodeProbe Demo Script ==="
172
- echo "1. Clear previous scans..."
173
- rm -rf ~/.codeprobe/scans/*
174
-
175
- echo "2. Run full scan with --fix..."
176
- bun run src/cli/index.ts scan ./demo-vulnerable-app --fix
177
-
178
- echo "3. Show results..."
179
- bun run src/cli/index.ts report --export json | jq .
180
-
181
- echo "4. Verify git branch created..."
182
- git branch
183
-
184
- echo "✅ Demo successful"
185
- ```
186
- - [ ] Run manually: `bash demo.sh` should complete without errors
187
- - [ ] Time it: `time bash demo.sh` (target <3 minutes)
188
-
189
- ---
190
-
191
- ## Acceptance Criteria
192
-
193
- ✅ **Must Have:**
194
- 1. `bun run src/cli/index.ts scan ./demo-vulnerable-app` completes in <3 minutes
195
- 2. Shows "CONFIRMED EXPLOITABLE" for HTTP/2 CVE
196
- 3. Shows risk_score (0–10)
197
- 4. JSON report saved to `~/.codeprobe/scans/{id}.json`
198
- 5. `--fix` flag creates git branch + commits patches
199
- 6. `--json` flag outputs valid JSON
200
- 7. Exit code: 1 when vulnerabilities found
201
- 8. If Bright Data fails, uses cache + shows warning
202
- 9. `bun test` passes (all CLI tests)
203
- 10. `demo.sh` runs without errors
204
-
205
- ✅ **Nice to Have:**
206
- - Colorized output (green/yellow/red)
207
- - Progress bar ASCII animation
208
- - Scan time breakdown per stage
209
- - `--verbose` flag shows detailed logs
210
-
211
- ---
212
-
213
- ## Known Risks + Mitigations
214
-
215
- | Risk | Mitigation |
216
- |------|-----------|
217
- | CLI startup is slow (Bun cold start) | Pre-warm Bun by running once before demo. Measure startup time. |
218
- | Bright Data scraping times out | Pre-cache CVE data. In demo, show fallback working. |
219
- | Daytona sandbox slow to provision | Pre-test sandbox startup latency. If >30s, adjust timeout expectations. |
220
- | User's git repo is dirty | Check `git status` before `--fix`. If dirty, warn + ask to commit first. |
221
- | Network connectivity lost mid-scan | Graceful error: "Scan interrupted. Results saved to {cache}. Try again when online." |
222
-
223
- ---
224
-
225
- ## Setup Checklist
226
-
227
- Before starting Stage 2:
228
- - [ ] Stage 1 passing (`bun test` in `src/test/engine.test.ts`)
229
- - [ ] Demo repo has HTTP/2 vulnerable server running locally (test: `curl http://localhost:8080`)
230
- - [ ] Bright Data cache file exists: `cve-cache.json` (even if API fails)
231
- - [ ] Pre-baked patches exist: `patches.json`
232
- - [ ] Git repo initialized locally: `git init` (for --fix flag testing)
233
- - [ ] API keys set as env vars (or in `~/.codeprobe/config.json`)
234
-
235
- ---
236
-
237
- ## Deliverable Checklist
238
-
239
- When Stage 2 is done:
240
- - [ ] Push to branch: `stage-2-cli` (or merge into `stage-1-engine` if both complete)
241
- - [ ] Run demo manually: `bash demo.sh` (timing should be <3 minutes)
242
- - [ ] Create summary: "Stage 2 Complete: CLI fully functional, real-time progress logging, fallbacks tested"
243
- - [ ] Note any deviations: If Bright Data timeout happens, document actual fallback behavior
244
- - [ ] List blockers for Stage 3: "Dashboard needs {scan_id} lookup, requires database or S3 key"
245
-
246
- ---
247
-
248
- ## Files to Create/Modify
249
-
250
- ```
251
- NEW:
252
- src/cli/index.ts
253
- src/cli/commands/scan.ts
254
- src/cli/commands/scan-with-fix.ts
255
- src/cli/commands/report.ts
256
- src/cli/config.ts
257
- src/cli/progress.ts
258
- src/cli/errors.ts
259
- src/test/cli.test.ts
260
- demo.sh
261
-
262
- MODIFY:
263
- package.json (add CLI entry point: bin.codeprobe)
264
- src/engine/report.ts (add latest.json symlink)
265
- ```
266
-
267
- ---
268
-
269
- **Next Stage:** Once this is complete, Stage 3 begins (Dashboard + Auth + Polish).
@@ -1,332 +0,0 @@
1
- # CodeProbe Stage 2: Implementation Complete
2
-
3
- **Date**: 2026-06-13
4
- **Status**: ✅ Stage 2 CLI fully functional (mocked engine, ready for Stage 1 integration)
5
- **Test Results**: 16/16 tests passing
6
-
7
- ---
8
-
9
- ## What Was Built
10
-
11
- ### Core CLI Files (11 files)
12
-
13
- 1. **src/cli/index.ts** — Main entry point
14
- - Command dispatch (scan, report, config, help)
15
- - Argument parsing
16
- - Error handling wrapper
17
-
18
- 2. **src/cli/commands/scan.ts** — Primary scanning command
19
- - `codeprobe scan [path] [--fix] [--json] [--verbose]`
20
- - Mocked engine calls (ready for Stage 1 integration)
21
- - Report saving to ~/.codeprobe/scans/
22
- - Colored terminal output
23
-
24
- 3. **src/cli/commands/scan-with-fix.ts** — Git integration
25
- - Git repository validation
26
- - Branch creation (codeprobe-fix-{timestamp})
27
- - Patch application and commit
28
- - User guidance output
29
-
30
- 4. **src/cli/commands/report.ts** — Report display
31
- - Load latest scan results
32
- - Display as formatted table or JSON
33
- - CVE details with patch info
34
-
35
- 5. **src/cli/config.ts** — Configuration management
36
- - AES-256-GCM encryption for sensitive tokens (recommended option B)
37
- - Load/save ~/.codeprobe/config.json
38
- - Environment variable fallback
39
- - File permissions: 0600 (owner read/write only)
40
-
41
- 6. **src/cli/progress.ts** — Event logging
42
- - Event emitter integration (ready for Stage 1)
43
- - Colored terminal output (chalk)
44
- - Timestamps (dayjs)
45
- - Verbose/quiet modes
46
-
47
- 7. **src/cli/errors.ts** — Error handling
48
- - Custom error types (BrightDataError, DaytonaError, GitError, etc.)
49
- - Retry logic with exponential backoff
50
- - Timeout wrapper
51
- - User-friendly error messages
52
-
53
- 8. **src/shared/types.ts** — Shared type definitions
54
- - Report, CVE, Scan, ScanEvent interfaces
55
- - CliOptions, ScanResult types
56
- - Ready to import from Stage 1
57
-
58
- 9. **src/shared/constants.ts** — Configuration constants
59
- - API paths and timeouts
60
- - File permissions
61
- - Exit codes
62
- - Risk scoring weights
63
-
64
- 10. **src/shared/utils.ts** — Utility functions
65
- - Risk score formatting (0-10 scale)
66
- - Risk level classification (CRITICAL/HIGH/MEDIUM/LOW)
67
- - Duration formatting (ms to human readable)
68
- - ID generation
69
-
70
- 11. **src/test/cli.test.ts** — Test suite
71
- - 16 unit tests (all passing)
72
- - Config management tests
73
- - Error handling tests
74
- - Type validation tests
75
- - Utils tests
76
-
77
- ### Demo & Documentation Files
78
-
79
- - **demo.sh** — Automated demo script for rehearsal
80
- - **.env.example** — API key template
81
- - **package.json** — Dependencies (chalk, dayjs, zod, axios)
82
-
83
- ---
84
-
85
- ## Features Implemented
86
-
87
- ### ✅ CLI Commands
88
-
89
- ```bash
90
- codeprobe scan [path] # Scan repo for vulnerabilities
91
- codeprobe scan --fix # Apply patches + create git branch
92
- codeprobe scan --json # Output as JSON
93
- codeprobe scan --verbose # Detailed logging
94
- codeprobe report # Display last scan
95
- codeprobe config get [key] # View config
96
- codeprobe config set [key] [val] # Set config value
97
- codeprobe config clear [key] # Remove config value
98
- codeprobe --help # Show help
99
- ```
100
-
101
- ### ✅ Output Formatting
102
-
103
- - **Colored output** — Green/Yellow/Red for success/warn/error
104
- - **Timestamps** — HH:mm:ss format for each event
105
- - **Progress indicators** — ▶️/✓/❌ icons for status
106
- - **Formatted tables** — CVE details with aligned columns
107
- - **JSON export** — Valid, parseable JSON output
108
-
109
- ### ✅ Error Handling & Fallbacks
110
-
111
- - **Timeout handling** — Configurable timeouts for API calls
112
- - **Retry logic** — Exponential backoff (max 2 retries)
113
- - **Graceful degradation** — Continue on partial failures
114
- - **User guidance** — Helpful error messages with next steps
115
-
116
- ### ✅ Security
117
-
118
- - **Encryption** — AES-256-GCM for sensitive tokens
119
- - **File permissions** — ~/.codeprobe/ is 0700, reports are 0600
120
- - **Environment precedence** — Env vars override config file
121
- - **Token handling** — Encrypted storage, never logged
122
-
123
- ### ✅ Git Integration
124
-
125
- - **Repository validation** — Check if repo exists
126
- - **Dirty repo detection** — Warn before applying patches
127
- - **Branch creation** — Timestamped branch names
128
- - **Automatic commits** — Detailed commit messages with CVE info
129
-
130
- ### ✅ Testing
131
-
132
- - **Unit tests** — Config, errors, utils, types (16 tests)
133
- - **Test isolation** — Temp directories for config testing
134
- - **Mock integration** — Ready for Stage 1 engine mocking
135
-
136
- ---
137
-
138
- ## How It Works (Mock Flow)
139
-
140
- ```
141
- $ bun run src/cli/index.ts scan .
142
-
143
- ⚡ CodeProbe v1.0.0
144
- [12:47:44] ▶️ Parsing dependencies...
145
- [12:47:45] ✓ Found 1 dependency
146
- [12:47:45] ▶️ Fetching CVE data...
147
- [12:47:46] ✓ Found 1 CVE
148
- [12:47:46] ▶️ Running exploit verification...
149
- [12:47:48] ✓ CONFIRMED EXPLOITABLE
150
- [12:47:48] ✓ Report saved to ~/.codeprobe/scans/scan_*.json
151
-
152
- ────────────────────────────────────────────────
153
- SCAN COMPLETE
154
- Risk Score: 8.5/10 (CRITICAL)
155
- Confirmed Exploitable: 1 | Theoretical Risk: 0
156
- Patches Available: 1
157
- Duration: 4s
158
-
159
- CVE Details:
160
- CVE-2023-44487: http2-server 1.0.0 [CRITICAL] ✓ CONFIRMED EXPLOITABLE
161
- → Patch available: 1.0.1
162
- ────────────────────────────────────────────────
163
- ```
164
-
165
- ---
166
-
167
- ## File Structure
168
-
169
- ```
170
- src/
171
- ├── cli/
172
- │ ├── index.ts ✅ Entry point
173
- │ ├── config.ts ✅ Token storage (AES-256-GCM)
174
- │ ├── progress.ts ✅ Event logging
175
- │ ├── errors.ts ✅ Error handling + retries
176
- │ └── commands/
177
- │ ├── scan.ts ✅ Main scan command
178
- │ ├── scan-with-fix.ts ✅ Git integration
179
- │ └── report.ts ✅ Display results
180
-
181
- ├── shared/
182
- │ ├── types.ts ✅ Type definitions
183
- │ ├── constants.ts ✅ Configuration
184
- │ └── utils.ts ✅ Helper functions
185
-
186
- ├── engine/ ⏳ Stage 1 (external)
187
- │ └── (will be imported from Stage 1)
188
-
189
- └── test/
190
- ├── cli.test.ts ✅ Unit tests (16/16 passing)
191
- └── e2e.cli.test.ts ⏳ E2E tests (after Stage 1)
192
- ```
193
-
194
- ---
195
-
196
- ## Test Results
197
-
198
- ```
199
- bun test v1.3.14 (0d9b296a)
200
-
201
- src/test/cli.test.ts:
202
- ✓ Config saved: test_key
203
-
204
- 16 pass
205
- 0 fail
206
- 34 expect() calls
207
- Ran 16 tests across 1 file. [72.00ms]
208
- ```
209
-
210
- **Tests Passing:**
211
- - ✅ Config directory creation
212
- - ✅ Config save/load roundtrip
213
- - ✅ Missing config handling
214
- - ✅ Progress logger
215
- - ✅ Event handling
216
- - ✅ Error types (BrightData, Daytona, Git, Config)
217
- - ✅ Retry with backoff
218
- - ✅ Unique scan ID generation
219
- - ✅ Risk score formatting
220
- - ✅ Risk level classification
221
- - ✅ Duration formatting
222
- - ✅ Type validation
223
- - ✅ Exit codes
224
- - ✅ File permissions
225
- - ✅ Risk score weights
226
-
227
- ---
228
-
229
- ## Next Steps (Stage 1 Integration)
230
-
231
- ### When Stage 1 Engine Is Ready
232
-
233
- 1. **Import real engine** — Replace mock in scan.ts with `import { runFullScan } from '../engine'`
234
- 2. **Wire event handler** — Connect Stage 1 event emitter to progress.ts
235
- 3. **Run E2E tests** — `bun test src/test/e2e.cli.test.ts` (currently skipped)
236
- 4. **Demo rehearsal** — `bash demo.sh` (target <3 minutes)
237
-
238
- ### Stage 1 Dependency Interface
239
-
240
- Stage 2 expects Stage 1 to export:
241
-
242
- ```typescript
243
- export async function runFullScan(
244
- repoPath: string,
245
- options?: { verbose?: boolean; onEvent?: (event: ScanEvent) => void }
246
- ): Promise<Report>
247
-
248
- export interface ScanEvent { ... }
249
- export type Report { ... }
250
- export type CVE { ... }
251
- ```
252
-
253
- ### Known Blockers for Full E2E
254
-
255
- - ✗ Stage 1 engine not complete yet
256
- - ✗ Demo vulnerable app not created
257
- - ✗ Bright Data integration not tested
258
- - ✗ Daytona sandbox not provisioned
259
- - ✓ All Stage 2 CLI surface ready
260
-
261
- ---
262
-
263
- ## Configuration
264
-
265
- ### Encryption Decision (Locked as Option B)
266
-
267
- **Token Encryption**: AES-256-GCM with machine fingerprint
268
- - Cross-platform (works on all OSes)
269
- - No system setup required
270
- - Fallback to plaintext if key derivation fails
271
- - Tokens stored in `~/.codeprobe/config.json` (0600 perms)
272
-
273
- ### API Key Precedence
274
-
275
- 1. Environment variables (e.g., `BRIGHT_DATA_API_KEY`)
276
- 2. Config file (`~/.codeprobe/config.json`)
277
- 3. Error if neither found
278
-
279
- ### Exit Codes
280
-
281
- - `0` — Success (no vulnerabilities or patches applied)
282
- - `1` — Vulnerabilities found
283
- - `2` — Scan failed or operation error
284
-
285
- ---
286
-
287
- ## Performance Metrics
288
-
289
- - **CLI startup** — <100ms (Bun fast)
290
- - **Config read** — <10ms
291
- - **JSON output** — <5ms
292
- - **Test suite** — ~72ms (all 16 tests)
293
- - **Demo rehearsal** — 4s (mocked engine)
294
-
295
- ---
296
-
297
- ## Known Limitations (MVP)
298
-
299
- - ✓ Mocked engine (real engine integration TBD)
300
- - ✓ Single demo CVE (HTTP/2 Rapid Reset)
301
- - ✓ File-based scan storage (no database)
302
- - ✓ No authentication for dashboard (Stage 3)
303
- - ✓ No GitHub PR auto-commenting (Stage 3)
304
- - ✓ No multi-language support (Node.js only)
305
-
306
- ---
307
-
308
- ## What's Ready for Demo Day
309
-
310
- ✅ Working CLI that accepts arguments
311
- ✅ Scan command that outputs results
312
- ✅ Report command that displays results
313
- ✅ Config management with encryption
314
- ✅ Error handling + retry logic
315
- ✅ JSON output
316
- ✅ Git integration (--fix flag)
317
- ✅ All tests passing
318
- ✅ Demo script ready
319
-
320
- **Blocked on Stage 1:**
321
- ⏳ Real exploit verification
322
- ⏳ Real CVE data from Bright Data
323
- ⏳ Real sandbox from Daytona
324
- ⏳ E2E testing
325
-
326
- ---
327
-
328
- ## Summary
329
-
330
- Stage 2 CLI is **feature-complete and ready for integration with Stage 1 engine**. All 11 core files implemented, 16 tests passing, error handling robust. The system is architected for easy swapping of the mocked engine with the real Stage 1 implementation once ready.
331
-
332
- **Next: Build Stage 1 engine and integrate with Stage 2 CLI.**