coverme-scanner 1.0.21 → 1.0.23
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/.claude/commands/coverme.md +10 -2
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +81 -8
- package/dist/cli/init.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/init.ts +85 -8
|
@@ -11,6 +11,8 @@ $ARGUMENTS
|
|
|
11
11
|
3. **DO NOT ASK ABOUT FILE CHANGES** - Automatically update/overwrite scan.json
|
|
12
12
|
4. **DO NOT ASK TO OPEN REPORT** - Just open it automatically at the end
|
|
13
13
|
5. **COMPLETE EVERYTHING IN ONE GO** - All 5 phases without interruption
|
|
14
|
+
6. **RUN AGENTS IN BACKGROUND** - Use `run_in_background: true` for all Task tool calls
|
|
15
|
+
7. **RUN BASH IN BACKGROUND** - Use `run_in_background: true` for long Bash commands
|
|
14
16
|
|
|
15
17
|
Execute ALL phases automatically. Do NOT stop until the HTML report is open.
|
|
16
18
|
|
|
@@ -18,7 +20,9 @@ Execute ALL phases automatically. Do NOT stop until the HTML report is open.
|
|
|
18
20
|
|
|
19
21
|
## Phase 1: Discovery (10 parallel agents)
|
|
20
22
|
|
|
21
|
-
Launch ALL 10 agents IN PARALLEL using the Task tool with
|
|
23
|
+
Launch ALL 10 agents IN PARALLEL using the Task tool with `run_in_background: true`:
|
|
24
|
+
|
|
25
|
+
**IMPORTANT**: Set `run_in_background: true` on ALL Task tool calls to run agents in parallel without blocking.
|
|
22
26
|
|
|
23
27
|
### Agent 1: Security Scanner (Core)
|
|
24
28
|
```
|
|
@@ -425,7 +429,9 @@ Output JSON: [{id: "TEST-XXX", title, severity, category: "testing", file, line,
|
|
|
425
429
|
|
|
426
430
|
## Phase 2: Cross-Validation (3 parallel validators)
|
|
427
431
|
|
|
428
|
-
|
|
432
|
+
Wait for all Phase 1 background agents to complete using `AgentOutputTool`.
|
|
433
|
+
|
|
434
|
+
Then launch 3 validators IN PARALLEL with `run_in_background: true`:
|
|
429
435
|
|
|
430
436
|
### Validator A: False Positive Hunter
|
|
431
437
|
```
|
|
@@ -469,6 +475,8 @@ Output: { missedIssues: [{id, title, severity, file, line, description, recommen
|
|
|
469
475
|
|
|
470
476
|
## Phase 3: Build Consensus
|
|
471
477
|
|
|
478
|
+
Wait for all Phase 2 background validators to complete using `AgentOutputTool`.
|
|
479
|
+
|
|
472
480
|
Combine all results:
|
|
473
481
|
1. Calculate confidence: (confirmations / validators) * 100
|
|
474
482
|
2. Remove findings with confidence < 50%
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAihBD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+H9D"}
|
package/dist/cli/init.js
CHANGED
|
@@ -43,13 +43,25 @@ The most comprehensive AI-powered code scanner. 10 specialized agents + 3 valida
|
|
|
43
43
|
|
|
44
44
|
$ARGUMENTS
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## CRITICAL INSTRUCTIONS - READ FIRST!
|
|
47
|
+
|
|
48
|
+
1. **DO NOT ASK ANY QUESTIONS** - Run the entire scan autonomously from start to finish
|
|
49
|
+
2. **DO NOT STOP FOR CONFIRMATION** - Just keep going through all phases
|
|
50
|
+
3. **DO NOT ASK ABOUT FILE CHANGES** - Automatically update/overwrite scan.json
|
|
51
|
+
4. **DO NOT ASK TO OPEN REPORT** - Just open it automatically at the end
|
|
52
|
+
5. **COMPLETE EVERYTHING IN ONE GO** - All 5 phases without interruption
|
|
53
|
+
6. **RUN AGENTS IN BACKGROUND** - Use \`run_in_background: true\` for all Task tool calls
|
|
54
|
+
7. **RUN BASH IN BACKGROUND** - Use \`run_in_background: true\` for long Bash commands
|
|
55
|
+
|
|
56
|
+
Execute ALL phases automatically. Do NOT stop until the HTML report is open.
|
|
47
57
|
|
|
48
58
|
---
|
|
49
59
|
|
|
50
60
|
## Phase 1: Discovery (10 parallel agents)
|
|
51
61
|
|
|
52
|
-
Launch ALL 10 agents IN PARALLEL using the Task tool with
|
|
62
|
+
Launch ALL 10 agents IN PARALLEL using the Task tool with \`run_in_background: true\`:
|
|
63
|
+
|
|
64
|
+
**IMPORTANT**: Set \`run_in_background: true\` on ALL Task tool calls to run agents in parallel without blocking.
|
|
53
65
|
|
|
54
66
|
### Agent 1: Security Scanner (Core)
|
|
55
67
|
\`\`\`
|
|
@@ -456,7 +468,9 @@ Output JSON: [{id: "TEST-XXX", title, severity, category: "testing", file, line,
|
|
|
456
468
|
|
|
457
469
|
## Phase 2: Cross-Validation (3 parallel validators)
|
|
458
470
|
|
|
459
|
-
|
|
471
|
+
Wait for all Phase 1 background agents to complete using \`AgentOutputTool\`.
|
|
472
|
+
|
|
473
|
+
Then launch 3 validators IN PARALLEL with \`run_in_background: true\`:
|
|
460
474
|
|
|
461
475
|
### Validator A: False Positive Hunter
|
|
462
476
|
\`\`\`
|
|
@@ -500,6 +514,8 @@ Output: { missedIssues: [{id, title, severity, file, line, description, recommen
|
|
|
500
514
|
|
|
501
515
|
## Phase 3: Build Consensus
|
|
502
516
|
|
|
517
|
+
Wait for all Phase 2 background validators to complete using \`AgentOutputTool\`.
|
|
518
|
+
|
|
503
519
|
Combine all results:
|
|
504
520
|
1. Calculate confidence: (confirmations / validators) * 100
|
|
505
521
|
2. Remove findings with confidence < 50%
|
|
@@ -510,7 +526,9 @@ Combine all results:
|
|
|
510
526
|
|
|
511
527
|
## Phase 4: Generate Report
|
|
512
528
|
|
|
513
|
-
|
|
529
|
+
**DO NOT ASK - JUST OVERWRITE THE FILE!**
|
|
530
|
+
|
|
531
|
+
Update \`.coverme/scan.json\` with the scan results. Overwrite any existing content without asking:
|
|
514
532
|
|
|
515
533
|
- **projectName**: from package.json or folder name
|
|
516
534
|
- **scanDate**: today's date
|
|
@@ -519,25 +537,31 @@ Update the existing \`.coverme/scan.json\` file with the scan results. The file
|
|
|
519
537
|
- **scanDuration**: time taken in ms
|
|
520
538
|
- **agentCount**: 7
|
|
521
539
|
|
|
522
|
-
Use the
|
|
540
|
+
Use the Write tool to overwrite \`.coverme/scan.json\` with the results. Do not ask for confirmation.
|
|
523
541
|
|
|
524
542
|
---
|
|
525
543
|
|
|
526
544
|
## Phase 5: Generate HTML Report
|
|
527
545
|
|
|
528
|
-
|
|
546
|
+
**DO NOT ASK - JUST RUN THE COMMANDS!**
|
|
547
|
+
|
|
548
|
+
Generate the HTML report and open it automatically:
|
|
529
549
|
\`\`\`bash
|
|
530
550
|
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
|
|
531
|
-
npx
|
|
551
|
+
npx coverme-scanner report .coverme/scan.json -f html -o ".coverme/report_$TIMESTAMP.html"
|
|
532
552
|
cp .coverme/scan.json ".coverme/scan_$TIMESTAMP.json"
|
|
533
553
|
open ".coverme/report_$TIMESTAMP.html"
|
|
534
554
|
\`\`\`
|
|
535
555
|
|
|
556
|
+
Run these commands without asking for permission.
|
|
557
|
+
|
|
536
558
|
---
|
|
537
559
|
|
|
538
560
|
## DONE
|
|
539
561
|
|
|
540
|
-
Tell the user: "Scan complete! Report saved to .coverme/ and opened in browser.
|
|
562
|
+
Tell the user: "Scan complete! Report saved to .coverme/ and opened in browser."
|
|
563
|
+
|
|
564
|
+
**REMINDER: You should have completed all 5 phases without asking ANY questions or stopping for confirmation.**
|
|
541
565
|
`;
|
|
542
566
|
async function init(options) {
|
|
543
567
|
const targetDir = options.global
|
|
@@ -587,6 +611,55 @@ async function init(options) {
|
|
|
587
611
|
fs.writeFileSync(gitignorePath, covermeIgnore.trim() + '\n');
|
|
588
612
|
console.log(`Created .gitignore with .coverme/`);
|
|
589
613
|
}
|
|
614
|
+
// Create .claude/settings.local.json with permissions for coverme
|
|
615
|
+
const settingsDir = path.join(process.cwd(), '.claude');
|
|
616
|
+
if (!fs.existsSync(settingsDir)) {
|
|
617
|
+
fs.mkdirSync(settingsDir, { recursive: true });
|
|
618
|
+
}
|
|
619
|
+
const settingsPath = path.join(settingsDir, 'settings.local.json');
|
|
620
|
+
const covermePermissions = {
|
|
621
|
+
permissions: {
|
|
622
|
+
allow: [
|
|
623
|
+
"Bash(mkdir:*)",
|
|
624
|
+
"Bash(ls:*)",
|
|
625
|
+
"Bash(cat:*)",
|
|
626
|
+
"Bash(cp:*)",
|
|
627
|
+
"Bash(date:*)",
|
|
628
|
+
"Bash(npx coverme*:*)",
|
|
629
|
+
"Bash(npx coverme-scanner*:*)",
|
|
630
|
+
"Bash(open:*)",
|
|
631
|
+
"Bash(git ls-files:*)",
|
|
632
|
+
"Bash(git log:*)",
|
|
633
|
+
"Bash(grep:*)",
|
|
634
|
+
"Read(.coverme/*)",
|
|
635
|
+
"Write(.coverme/*)",
|
|
636
|
+
"Edit(.coverme/*)"
|
|
637
|
+
]
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
// Merge with existing settings if present
|
|
641
|
+
let existingSettings = {};
|
|
642
|
+
if (fs.existsSync(settingsPath)) {
|
|
643
|
+
try {
|
|
644
|
+
existingSettings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
|
|
645
|
+
}
|
|
646
|
+
catch (e) {
|
|
647
|
+
// Ignore parse errors, will overwrite
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
// Merge permissions
|
|
651
|
+
const mergedSettings = {
|
|
652
|
+
...existingSettings,
|
|
653
|
+
permissions: {
|
|
654
|
+
...existingSettings.permissions,
|
|
655
|
+
allow: [
|
|
656
|
+
...(existingSettings.permissions?.allow || []),
|
|
657
|
+
...covermePermissions.permissions.allow
|
|
658
|
+
].filter((v, i, a) => a.indexOf(v) === i) // dedupe
|
|
659
|
+
}
|
|
660
|
+
};
|
|
661
|
+
fs.writeFileSync(settingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
662
|
+
console.log(`Created/updated: ${settingsPath} with coverme permissions`);
|
|
590
663
|
console.log(`
|
|
591
664
|
================================================================================
|
|
592
665
|
COVERME INSTALLED
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/init.ts
CHANGED
|
@@ -12,13 +12,25 @@ The most comprehensive AI-powered code scanner. 10 specialized agents + 3 valida
|
|
|
12
12
|
|
|
13
13
|
$ARGUMENTS
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## CRITICAL INSTRUCTIONS - READ FIRST!
|
|
16
|
+
|
|
17
|
+
1. **DO NOT ASK ANY QUESTIONS** - Run the entire scan autonomously from start to finish
|
|
18
|
+
2. **DO NOT STOP FOR CONFIRMATION** - Just keep going through all phases
|
|
19
|
+
3. **DO NOT ASK ABOUT FILE CHANGES** - Automatically update/overwrite scan.json
|
|
20
|
+
4. **DO NOT ASK TO OPEN REPORT** - Just open it automatically at the end
|
|
21
|
+
5. **COMPLETE EVERYTHING IN ONE GO** - All 5 phases without interruption
|
|
22
|
+
6. **RUN AGENTS IN BACKGROUND** - Use \`run_in_background: true\` for all Task tool calls
|
|
23
|
+
7. **RUN BASH IN BACKGROUND** - Use \`run_in_background: true\` for long Bash commands
|
|
24
|
+
|
|
25
|
+
Execute ALL phases automatically. Do NOT stop until the HTML report is open.
|
|
16
26
|
|
|
17
27
|
---
|
|
18
28
|
|
|
19
29
|
## Phase 1: Discovery (10 parallel agents)
|
|
20
30
|
|
|
21
|
-
Launch ALL 10 agents IN PARALLEL using the Task tool with
|
|
31
|
+
Launch ALL 10 agents IN PARALLEL using the Task tool with \`run_in_background: true\`:
|
|
32
|
+
|
|
33
|
+
**IMPORTANT**: Set \`run_in_background: true\` on ALL Task tool calls to run agents in parallel without blocking.
|
|
22
34
|
|
|
23
35
|
### Agent 1: Security Scanner (Core)
|
|
24
36
|
\`\`\`
|
|
@@ -425,7 +437,9 @@ Output JSON: [{id: "TEST-XXX", title, severity, category: "testing", file, line,
|
|
|
425
437
|
|
|
426
438
|
## Phase 2: Cross-Validation (3 parallel validators)
|
|
427
439
|
|
|
428
|
-
|
|
440
|
+
Wait for all Phase 1 background agents to complete using \`AgentOutputTool\`.
|
|
441
|
+
|
|
442
|
+
Then launch 3 validators IN PARALLEL with \`run_in_background: true\`:
|
|
429
443
|
|
|
430
444
|
### Validator A: False Positive Hunter
|
|
431
445
|
\`\`\`
|
|
@@ -469,6 +483,8 @@ Output: { missedIssues: [{id, title, severity, file, line, description, recommen
|
|
|
469
483
|
|
|
470
484
|
## Phase 3: Build Consensus
|
|
471
485
|
|
|
486
|
+
Wait for all Phase 2 background validators to complete using \`AgentOutputTool\`.
|
|
487
|
+
|
|
472
488
|
Combine all results:
|
|
473
489
|
1. Calculate confidence: (confirmations / validators) * 100
|
|
474
490
|
2. Remove findings with confidence < 50%
|
|
@@ -479,7 +495,9 @@ Combine all results:
|
|
|
479
495
|
|
|
480
496
|
## Phase 4: Generate Report
|
|
481
497
|
|
|
482
|
-
|
|
498
|
+
**DO NOT ASK - JUST OVERWRITE THE FILE!**
|
|
499
|
+
|
|
500
|
+
Update \`.coverme/scan.json\` with the scan results. Overwrite any existing content without asking:
|
|
483
501
|
|
|
484
502
|
- **projectName**: from package.json or folder name
|
|
485
503
|
- **scanDate**: today's date
|
|
@@ -488,25 +506,31 @@ Update the existing \`.coverme/scan.json\` file with the scan results. The file
|
|
|
488
506
|
- **scanDuration**: time taken in ms
|
|
489
507
|
- **agentCount**: 7
|
|
490
508
|
|
|
491
|
-
Use the
|
|
509
|
+
Use the Write tool to overwrite \`.coverme/scan.json\` with the results. Do not ask for confirmation.
|
|
492
510
|
|
|
493
511
|
---
|
|
494
512
|
|
|
495
513
|
## Phase 5: Generate HTML Report
|
|
496
514
|
|
|
497
|
-
|
|
515
|
+
**DO NOT ASK - JUST RUN THE COMMANDS!**
|
|
516
|
+
|
|
517
|
+
Generate the HTML report and open it automatically:
|
|
498
518
|
\`\`\`bash
|
|
499
519
|
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
|
|
500
|
-
npx
|
|
520
|
+
npx coverme-scanner report .coverme/scan.json -f html -o ".coverme/report_$TIMESTAMP.html"
|
|
501
521
|
cp .coverme/scan.json ".coverme/scan_$TIMESTAMP.json"
|
|
502
522
|
open ".coverme/report_$TIMESTAMP.html"
|
|
503
523
|
\`\`\`
|
|
504
524
|
|
|
525
|
+
Run these commands without asking for permission.
|
|
526
|
+
|
|
505
527
|
---
|
|
506
528
|
|
|
507
529
|
## DONE
|
|
508
530
|
|
|
509
|
-
Tell the user: "Scan complete! Report saved to .coverme/ and opened in browser.
|
|
531
|
+
Tell the user: "Scan complete! Report saved to .coverme/ and opened in browser."
|
|
532
|
+
|
|
533
|
+
**REMINDER: You should have completed all 5 phases without asking ANY questions or stopping for confirmation.**
|
|
510
534
|
`;
|
|
511
535
|
|
|
512
536
|
export async function init(options: InitOptions): Promise<void> {
|
|
@@ -564,6 +588,59 @@ export async function init(options: InitOptions): Promise<void> {
|
|
|
564
588
|
console.log(`Created .gitignore with .coverme/`);
|
|
565
589
|
}
|
|
566
590
|
|
|
591
|
+
// Create .claude/settings.local.json with permissions for coverme
|
|
592
|
+
const settingsDir = path.join(process.cwd(), '.claude');
|
|
593
|
+
if (!fs.existsSync(settingsDir)) {
|
|
594
|
+
fs.mkdirSync(settingsDir, { recursive: true });
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
const settingsPath = path.join(settingsDir, 'settings.local.json');
|
|
598
|
+
const covermePermissions = {
|
|
599
|
+
permissions: {
|
|
600
|
+
allow: [
|
|
601
|
+
"Bash(mkdir:*)",
|
|
602
|
+
"Bash(ls:*)",
|
|
603
|
+
"Bash(cat:*)",
|
|
604
|
+
"Bash(cp:*)",
|
|
605
|
+
"Bash(date:*)",
|
|
606
|
+
"Bash(npx coverme*:*)",
|
|
607
|
+
"Bash(npx coverme-scanner*:*)",
|
|
608
|
+
"Bash(open:*)",
|
|
609
|
+
"Bash(git ls-files:*)",
|
|
610
|
+
"Bash(git log:*)",
|
|
611
|
+
"Bash(grep:*)",
|
|
612
|
+
"Read(.coverme/*)",
|
|
613
|
+
"Write(.coverme/*)",
|
|
614
|
+
"Edit(.coverme/*)"
|
|
615
|
+
]
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
|
|
619
|
+
// Merge with existing settings if present
|
|
620
|
+
let existingSettings: any = {};
|
|
621
|
+
if (fs.existsSync(settingsPath)) {
|
|
622
|
+
try {
|
|
623
|
+
existingSettings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
|
|
624
|
+
} catch (e) {
|
|
625
|
+
// Ignore parse errors, will overwrite
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
// Merge permissions
|
|
630
|
+
const mergedSettings = {
|
|
631
|
+
...existingSettings,
|
|
632
|
+
permissions: {
|
|
633
|
+
...existingSettings.permissions,
|
|
634
|
+
allow: [
|
|
635
|
+
...(existingSettings.permissions?.allow || []),
|
|
636
|
+
...covermePermissions.permissions.allow
|
|
637
|
+
].filter((v, i, a) => a.indexOf(v) === i) // dedupe
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
|
|
641
|
+
fs.writeFileSync(settingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
642
|
+
console.log(`Created/updated: ${settingsPath} with coverme permissions`);
|
|
643
|
+
|
|
567
644
|
console.log(`
|
|
568
645
|
================================================================================
|
|
569
646
|
COVERME INSTALLED
|