coverme-scanner 2.0.2 โ†’ 4.0.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.
Files changed (38) hide show
  1. package/README.md +27 -4
  2. package/dist/analyzers/ast-analyzer.d.ts +29 -0
  3. package/dist/analyzers/ast-analyzer.d.ts.map +1 -0
  4. package/dist/analyzers/ast-analyzer.js +194 -0
  5. package/dist/analyzers/ast-analyzer.js.map +1 -0
  6. package/dist/analyzers/duplication-detector.d.ts +27 -0
  7. package/dist/analyzers/duplication-detector.d.ts.map +1 -0
  8. package/dist/analyzers/duplication-detector.js +169 -0
  9. package/dist/analyzers/duplication-detector.js.map +1 -0
  10. package/dist/analyzers/index.d.ts +5 -0
  11. package/dist/analyzers/index.d.ts.map +1 -0
  12. package/dist/analyzers/index.js +10 -0
  13. package/dist/analyzers/index.js.map +1 -0
  14. package/dist/analyzers/stride-analyzer.d.ts +20 -0
  15. package/dist/analyzers/stride-analyzer.d.ts.map +1 -0
  16. package/dist/analyzers/stride-analyzer.js +166 -0
  17. package/dist/analyzers/stride-analyzer.js.map +1 -0
  18. package/dist/cli/index.js +4 -2
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/index.d.ts +7 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +16 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/prompts/advanced-analysis.md +199 -0
  25. package/dist/prompts/orchestration.md +102 -3
  26. package/dist/report/generator.js +1 -1
  27. package/dist/report/generator.js.map +1 -1
  28. package/dist/report/index.d.ts +3 -2
  29. package/dist/report/index.d.ts.map +1 -1
  30. package/dist/report/index.js +16 -4
  31. package/dist/report/index.js.map +1 -1
  32. package/dist/report/pdf-generator.d.ts +23 -0
  33. package/dist/report/pdf-generator.d.ts.map +1 -0
  34. package/dist/report/pdf-generator.js +405 -0
  35. package/dist/report/pdf-generator.js.map +1 -0
  36. package/dist/templates/report-minimal.html +429 -0
  37. package/dist/templates/report.html +147 -147
  38. package/package.json +30 -3
@@ -2589,44 +2589,44 @@
2589
2589
  {{/if}}
2590
2590
 
2591
2591
  {{#if businessImpact}}
2592
- <div class="info-box" style="background: linear-gradient(135deg, #fff5f5 0%, #ffe5e5 100%); border-left: 4px solid #e53e3e;">
2593
- <div class="info-label" style="color: #c53030; font-weight: 600;">๐Ÿ’ฐ Business Impact</div>
2594
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px;">
2592
+ <div class="info-box">
2593
+ <div class="info-label">Business Impact</div>
2594
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 8px;">
2595
2595
  {{#if businessImpact.financial}}
2596
- <div><strong style="color: #c53030;">Financial:</strong> {{businessImpact.financial}}</div>
2596
+ <div><strong>Financial:</strong> {{businessImpact.financial}}</div>
2597
2597
  {{/if}}
2598
2598
  {{#if businessImpact.reputation}}
2599
- <div><strong style="color: #c53030;">Reputation:</strong> {{businessImpact.reputation}}</div>
2599
+ <div><strong>Reputation:</strong> {{businessImpact.reputation}}</div>
2600
2600
  {{/if}}
2601
2601
  {{#if businessImpact.legal}}
2602
- <div><strong style="color: #c53030;">Legal:</strong> {{businessImpact.legal}}</div>
2602
+ <div><strong>Legal:</strong> {{businessImpact.legal}}</div>
2603
2603
  {{/if}}
2604
2604
  {{#if businessImpact.operational}}
2605
- <div><strong style="color: #c53030;">Operational:</strong> {{businessImpact.operational}}</div>
2605
+ <div><strong>Operational:</strong> {{businessImpact.operational}}</div>
2606
2606
  {{/if}}
2607
2607
  </div>
2608
2608
  </div>
2609
2609
  {{/if}}
2610
2610
 
2611
2611
  {{#if realWorldExamples}}
2612
- <div class="info-box" style="background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%); border-left: 4px solid #ea580c;">
2613
- <div class="info-label" style="color: #c2410c; font-weight: 600;">๐ŸŒ Real-World Examples</div>
2612
+ <div class="info-box">
2613
+ <div class="info-label">Real-World Examples</div>
2614
2614
  <ul style="margin: 8px 0 0 0; padding-left: 20px;">
2615
2615
  {{#each realWorldExamples}}
2616
- <li style="margin: 4px 0; color: #7c2d12;">{{this}}</li>
2616
+ <li style="margin: 4px 0;">{{this}}</li>
2617
2617
  {{/each}}
2618
2618
  </ul>
2619
2619
  </div>
2620
2620
  {{/if}}
2621
2621
 
2622
2622
  {{#if attackChain}}
2623
- <div class="info-box" style="background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); border-left: 4px solid #d97706;">
2624
- <div class="info-label" style="color: #92400e; font-weight: 600;">โš”๏ธ Attack Chain</div>
2625
- <div style="margin-top: 8px;">
2623
+ <div class="info-box">
2624
+ <div class="info-label">Attack Chain</div>
2625
+ <div style="margin-top: 12px;">
2626
2626
  {{#each attackChain}}
2627
- <div style="margin: 8px 0; padding: 8px; background: white; border-radius: 6px; border-left: 3px solid #f59e0b;">
2628
- <strong style="color: #92400e;">Step {{step}}:</strong> {{action}}
2629
- <div style="margin-top: 4px; color: #78350f; font-size: 13px;">โ†’ <em>{{result}}</em></div>
2627
+ <div style="margin: 12px 0; padding: 12px; background: #f8f9fa; border-left: 3px solid #6c757d; border-radius: 4px;">
2628
+ <div><strong>Step {{step}}:</strong> {{action}}</div>
2629
+ <div style="margin-top: 6px; color: #6c757d; font-size: 14px;">โ†’ {{result}}</div>
2630
2630
  </div>
2631
2631
  {{/each}}
2632
2632
  </div>
@@ -2638,8 +2638,8 @@
2638
2638
  {{/if}}
2639
2639
 
2640
2640
  {{#if proofOfConcept}}
2641
- <details style="margin: 16px 0; border: 2px solid #dc2626; border-radius: 8px; padding: 12px; background: #fef2f2;">
2642
- <summary style="cursor: pointer; font-weight: 600; color: #991b1b;">๐ŸŽฏ Proof of Concept (Click to expand exploit code)</summary>
2641
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
2642
+ <summary style="cursor: pointer; font-weight: 600;">Proof of Concept (Click to expand)</summary>
2643
2643
  <div class="code-block" style="margin-top: 12px;"><code>{{proofOfConcept}}</code></div>
2644
2644
  </details>
2645
2645
  {{/if}}
@@ -2650,27 +2650,27 @@
2650
2650
  </div>
2651
2651
 
2652
2652
  {{#if quickFix}}
2653
- <div class="info-box" style="background: linear-gradient(135deg, #fef9c3 0%, #fef08a 100%); border-left: 4px solid #ca8a04;">
2654
- <div class="info-label" style="color: #854d0e; font-weight: 600;">โšก Quick Fix ({{quickFix.description}})</div>
2653
+ <div class="info-box">
2654
+ <div class="info-label">Quick Fix ยท {{quickFix.description}}</div>
2655
2655
  <div class="code-block" style="margin-top: 8px;"><code>{{quickFix.code}}</code></div>
2656
2656
  {{#if quickFix.limitations}}
2657
- <p style="margin-top: 8px; padding: 8px; background: white; border-radius: 4px; color: #a16207; font-size: 13px;">
2658
- <strong>โš ๏ธ Limitations:</strong> {{quickFix.limitations}}
2657
+ <p style="margin-top: 8px; padding: 8px; background: #f8f9fa; border-radius: 4px; font-size: 13px;">
2658
+ <strong>Limitations:</strong> {{quickFix.limitations}}
2659
2659
  </p>
2660
2660
  {{/if}}
2661
2661
  </div>
2662
2662
  {{/if}}
2663
2663
 
2664
2664
  {{#if properFix}}
2665
- <div class="info-box" style="background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%); border-left: 4px solid #16a34a;">
2666
- <div class="info-label" style="color: #166534; font-weight: 600;">โœ… Proper Fix ({{properFix.description}})</div>
2665
+ <div class="info-box">
2666
+ <div class="info-label">Proper Fix ยท {{properFix.description}}</div>
2667
2667
  <div class="code-block" style="margin-top: 8px;"><code>{{properFix.code}}</code></div>
2668
2668
  {{#if properFix.additionalSteps}}
2669
2669
  <div style="margin-top: 12px;">
2670
- <strong style="color: #166534;">Additional Steps:</strong>
2670
+ <strong>Additional Steps:</strong>
2671
2671
  <ul style="margin: 8px 0 0 0; padding-left: 20px;">
2672
2672
  {{#each properFix.additionalSteps}}
2673
- <li style="margin: 4px 0; color: #14532d;">{{this}}</li>
2673
+ <li style="margin: 4px 0;">{{this}}</li>
2674
2674
  {{/each}}
2675
2675
  </ul>
2676
2676
  </div>
@@ -2679,25 +2679,25 @@
2679
2679
  {{/if}}
2680
2680
 
2681
2681
  {{#if testing}}
2682
- <details style="margin: 16px 0; border: 1px solid #3b82f6; border-radius: 8px; padding: 12px; background: #eff6ff;">
2683
- <summary style="cursor: pointer; font-weight: 600; color: #1e40af;">๐Ÿงช Testing Instructions</summary>
2682
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
2683
+ <summary style="cursor: pointer; font-weight: 600;">Testing Instructions</summary>
2684
2684
  <div style="margin-top: 12px;">
2685
2685
  {{#if testing.description}}
2686
- <p style="color: #1e3a8a; margin-bottom: 8px;">{{testing.description}}</p>
2686
+ <p style="margin-bottom: 8px;">{{testing.description}}</p>
2687
2687
  {{/if}}
2688
2688
  {{#if testing.manual}}
2689
2689
  <div style="margin: 8px 0;">
2690
- <strong style="color: #1e40af;">Manual Tests:</strong>
2690
+ <strong>Manual Tests:</strong>
2691
2691
  <ul style="margin: 4px 0 0 0; padding-left: 20px;">
2692
2692
  {{#each testing.manual}}
2693
- <li style="margin: 4px 0; color: #1e3a8a;">{{this}}</li>
2693
+ <li style="margin: 4px 0;">{{this}}</li>
2694
2694
  {{/each}}
2695
2695
  </ul>
2696
2696
  </div>
2697
2697
  {{/if}}
2698
2698
  {{#if testing.automated}}
2699
2699
  <div style="margin: 12px 0;">
2700
- <strong style="color: #1e40af;">Automated Test:</strong>
2700
+ <strong>Automated Test:</strong>
2701
2701
  <div class="code-block" style="margin-top: 4px;"><code>{{testing.automated}}</code></div>
2702
2702
  </div>
2703
2703
  {{/if}}
@@ -2706,11 +2706,11 @@
2706
2706
  {{/if}}
2707
2707
 
2708
2708
  {{#if detection}}
2709
- <details style="margin: 16px 0; border: 1px solid #8b5cf6; border-radius: 8px; padding: 12px; background: #faf5ff;">
2710
- <summary style="cursor: pointer; font-weight: 600; color: #6b21a8;">๐Ÿ” Detection Method (Check if already exploited)</summary>
2709
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
2710
+ <summary style="cursor: pointer; font-weight: 600;">Detection Method</summary>
2711
2711
  <div style="margin-top: 12px;">
2712
2712
  {{#if detection.description}}
2713
- <p style="color: #581c87; margin-bottom: 8px;">{{detection.description}}</p>
2713
+ <p style="margin-bottom: 8px;">{{detection.description}}</p>
2714
2714
  {{/if}}
2715
2715
  {{#if detection.commands}}
2716
2716
  <div class="code-block"><code>{{#each detection.commands}}{{this}}
@@ -2718,10 +2718,10 @@
2718
2718
  {{/if}}
2719
2719
  {{#if detection.indicators}}
2720
2720
  <div style="margin: 12px 0;">
2721
- <strong style="color: #6b21a8;">Indicators of Compromise:</strong>
2721
+ <strong>Indicators of Compromise:</strong>
2722
2722
  <ul style="margin: 4px 0 0 0; padding-left: 20px;">
2723
2723
  {{#each detection.indicators}}
2724
- <li style="margin: 4px 0; color: #581c87;">{{this}}</li>
2724
+ <li style="margin: 4px 0;">{{this}}</li>
2725
2725
  {{/each}}
2726
2726
  </ul>
2727
2727
  </div>
@@ -2731,20 +2731,20 @@
2731
2731
  {{/if}}
2732
2732
 
2733
2733
  {{#if estimatedEffort}}
2734
- <div class="info-box" style="background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%); border-left: 4px solid #0284c7;">
2735
- <div class="info-label" style="color: #075985; font-weight: 600;">โฑ๏ธ Fix Time Estimate (Human vs Claude Code)</div>
2736
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 12px;">
2737
- <div style="padding: 12px; background: white; border-radius: 6px; border: 1px solid #7dd3fc;">
2738
- <div style="font-size: 11px; color: #0c4a6e; font-weight: 600; margin-bottom: 4px;">๐Ÿ‘จโ€๐Ÿ’ป HUMAN DEVELOPER</div>
2739
- <div style="font-size: 18px; color: #0369a1; font-weight: 700;">{{estimatedEffort.human}}</div>
2734
+ <div class="info-box">
2735
+ <div class="info-label">Fix Time Estimate</div>
2736
+ <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-top: 12px;">
2737
+ <div style="padding: 12px; background: #f8f9fa; border-radius: 4px;">
2738
+ <div style="font-size: 11px; font-weight: 600; margin-bottom: 6px; color: #6c757d;">HUMAN</div>
2739
+ <div style="font-size: 16px; font-weight: 600;">{{estimatedEffort.human}}</div>
2740
2740
  </div>
2741
- <div style="padding: 12px; background: white; border-radius: 6px; border: 1px solid #0ea5e9;">
2742
- <div style="font-size: 11px; color: #0c4a6e; font-weight: 600; margin-bottom: 4px;">๐Ÿค– CLAUDE CODE</div>
2743
- <div style="font-size: 18px; color: #0284c7; font-weight: 700;">{{estimatedEffort.claudeCode}}</div>
2741
+ <div style="padding: 12px; background: #f8f9fa; border-radius: 4px;">
2742
+ <div style="font-size: 11px; font-weight: 600; margin-bottom: 6px; color: #6c757d;">CLAUDE CODE</div>
2743
+ <div style="font-size: 16px; font-weight: 600;">{{estimatedEffort.claudeCode}}</div>
2744
+ </div>
2745
+ <div style="padding: 12px; background: #212529; border-radius: 4px; text-align: center; display: flex; align-items: center; justify-content: center;">
2746
+ <div style="color: white; font-weight: 700; font-size: 15px;">{{estimatedEffort.roi}}</div>
2744
2747
  </div>
2745
- </div>
2746
- <div style="margin-top: 12px; padding: 10px; background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); border-radius: 6px; text-align: center; color: white; font-weight: 700; font-size: 16px;">
2747
- ๐Ÿš€ ROI: {{estimatedEffort.roi}}
2748
2748
  </div>
2749
2749
  </div>
2750
2750
  {{/if}}
@@ -3163,44 +3163,44 @@ Solution: {{recommendation}}</div>
3163
3163
  {{/if}}
3164
3164
 
3165
3165
  {{#if businessImpact}}
3166
- <div class="info-box" style="background: linear-gradient(135deg, #fff5f5 0%, #ffe5e5 100%); border-left: 4px solid #e53e3e;">
3167
- <div class="info-label" style="color: #c53030; font-weight: 600;">๐Ÿ’ฐ Business Impact</div>
3168
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px;">
3166
+ <div class="info-box">
3167
+ <div class="info-label">Business Impact</div>
3168
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 8px;">
3169
3169
  {{#if businessImpact.financial}}
3170
- <div><strong style="color: #c53030;">Financial:</strong> {{businessImpact.financial}}</div>
3170
+ <div><strong>Financial:</strong> {{businessImpact.financial}}</div>
3171
3171
  {{/if}}
3172
3172
  {{#if businessImpact.reputation}}
3173
- <div><strong style="color: #c53030;">Reputation:</strong> {{businessImpact.reputation}}</div>
3173
+ <div><strong>Reputation:</strong> {{businessImpact.reputation}}</div>
3174
3174
  {{/if}}
3175
3175
  {{#if businessImpact.legal}}
3176
- <div><strong style="color: #c53030;">Legal:</strong> {{businessImpact.legal}}</div>
3176
+ <div><strong>Legal:</strong> {{businessImpact.legal}}</div>
3177
3177
  {{/if}}
3178
3178
  {{#if businessImpact.operational}}
3179
- <div><strong style="color: #c53030;">Operational:</strong> {{businessImpact.operational}}</div>
3179
+ <div><strong>Operational:</strong> {{businessImpact.operational}}</div>
3180
3180
  {{/if}}
3181
3181
  </div>
3182
3182
  </div>
3183
3183
  {{/if}}
3184
3184
 
3185
3185
  {{#if realWorldExamples}}
3186
- <div class="info-box" style="background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%); border-left: 4px solid #ea580c;">
3187
- <div class="info-label" style="color: #c2410c; font-weight: 600;">๐ŸŒ Real-World Examples</div>
3186
+ <div class="info-box">
3187
+ <div class="info-label">Real-World Examples</div>
3188
3188
  <ul style="margin: 8px 0 0 0; padding-left: 20px;">
3189
3189
  {{#each realWorldExamples}}
3190
- <li style="margin: 4px 0; color: #7c2d12;">{{this}}</li>
3190
+ <li style="margin: 4px 0;">{{this}}</li>
3191
3191
  {{/each}}
3192
3192
  </ul>
3193
3193
  </div>
3194
3194
  {{/if}}
3195
3195
 
3196
3196
  {{#if attackChain}}
3197
- <div class="info-box" style="background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); border-left: 4px solid #d97706;">
3198
- <div class="info-label" style="color: #92400e; font-weight: 600;">โš”๏ธ Attack Chain</div>
3199
- <div style="margin-top: 8px;">
3197
+ <div class="info-box">
3198
+ <div class="info-label">Attack Chain</div>
3199
+ <div style="margin-top: 12px;">
3200
3200
  {{#each attackChain}}
3201
- <div style="margin: 8px 0; padding: 8px; background: white; border-radius: 6px; border-left: 3px solid #f59e0b;">
3202
- <strong style="color: #92400e;">Step {{step}}:</strong> {{action}}
3203
- <div style="margin-top: 4px; color: #78350f; font-size: 13px;">โ†’ <em>{{result}}</em></div>
3201
+ <div style="margin: 12px 0; padding: 12px; background: #f8f9fa; border-left: 3px solid #6c757d; border-radius: 4px;">
3202
+ <div><strong>Step {{step}}:</strong> {{action}}</div>
3203
+ <div style="margin-top: 6px; color: #6c757d; font-size: 14px;">โ†’ {{result}}</div>
3204
3204
  </div>
3205
3205
  {{/each}}
3206
3206
  </div>
@@ -3212,8 +3212,8 @@ Solution: {{recommendation}}</div>
3212
3212
  {{/if}}
3213
3213
 
3214
3214
  {{#if proofOfConcept}}
3215
- <details style="margin: 16px 0; border: 2px solid #dc2626; border-radius: 8px; padding: 12px; background: #fef2f2;">
3216
- <summary style="cursor: pointer; font-weight: 600; color: #991b1b;">๐ŸŽฏ Proof of Concept (Click to expand exploit code)</summary>
3215
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
3216
+ <summary style="cursor: pointer; font-weight: 600;">Proof of Concept (Click to expand)</summary>
3217
3217
  <div class="code-block" style="margin-top: 12px;"><code>{{proofOfConcept}}</code></div>
3218
3218
  </details>
3219
3219
  {{/if}}
@@ -3224,27 +3224,27 @@ Solution: {{recommendation}}</div>
3224
3224
  </div>
3225
3225
 
3226
3226
  {{#if quickFix}}
3227
- <div class="info-box" style="background: linear-gradient(135deg, #fef9c3 0%, #fef08a 100%); border-left: 4px solid #ca8a04;">
3228
- <div class="info-label" style="color: #854d0e; font-weight: 600;">โšก Quick Fix ({{quickFix.description}})</div>
3227
+ <div class="info-box">
3228
+ <div class="info-label">Quick Fix ยท {{quickFix.description}}</div>
3229
3229
  <div class="code-block" style="margin-top: 8px;"><code>{{quickFix.code}}</code></div>
3230
3230
  {{#if quickFix.limitations}}
3231
- <p style="margin-top: 8px; padding: 8px; background: white; border-radius: 4px; color: #a16207; font-size: 13px;">
3232
- <strong>โš ๏ธ Limitations:</strong> {{quickFix.limitations}}
3231
+ <p style="margin-top: 8px; padding: 8px; background: #f8f9fa; border-radius: 4px; font-size: 13px;">
3232
+ <strong>Limitations:</strong> {{quickFix.limitations}}
3233
3233
  </p>
3234
3234
  {{/if}}
3235
3235
  </div>
3236
3236
  {{/if}}
3237
3237
 
3238
3238
  {{#if properFix}}
3239
- <div class="info-box" style="background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%); border-left: 4px solid #16a34a;">
3240
- <div class="info-label" style="color: #166534; font-weight: 600;">โœ… Proper Fix ({{properFix.description}})</div>
3239
+ <div class="info-box">
3240
+ <div class="info-label">Proper Fix ยท {{properFix.description}}</div>
3241
3241
  <div class="code-block" style="margin-top: 8px;"><code>{{properFix.code}}</code></div>
3242
3242
  {{#if properFix.additionalSteps}}
3243
3243
  <div style="margin-top: 12px;">
3244
- <strong style="color: #166534;">Additional Steps:</strong>
3244
+ <strong>Additional Steps:</strong>
3245
3245
  <ul style="margin: 8px 0 0 0; padding-left: 20px;">
3246
3246
  {{#each properFix.additionalSteps}}
3247
- <li style="margin: 4px 0; color: #14532d;">{{this}}</li>
3247
+ <li style="margin: 4px 0;">{{this}}</li>
3248
3248
  {{/each}}
3249
3249
  </ul>
3250
3250
  </div>
@@ -3253,25 +3253,25 @@ Solution: {{recommendation}}</div>
3253
3253
  {{/if}}
3254
3254
 
3255
3255
  {{#if testing}}
3256
- <details style="margin: 16px 0; border: 1px solid #3b82f6; border-radius: 8px; padding: 12px; background: #eff6ff;">
3257
- <summary style="cursor: pointer; font-weight: 600; color: #1e40af;">๐Ÿงช Testing Instructions</summary>
3256
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
3257
+ <summary style="cursor: pointer; font-weight: 600;">Testing Instructions</summary>
3258
3258
  <div style="margin-top: 12px;">
3259
3259
  {{#if testing.description}}
3260
- <p style="color: #1e3a8a; margin-bottom: 8px;">{{testing.description}}</p>
3260
+ <p style="margin-bottom: 8px;">{{testing.description}}</p>
3261
3261
  {{/if}}
3262
3262
  {{#if testing.manual}}
3263
3263
  <div style="margin: 8px 0;">
3264
- <strong style="color: #1e40af;">Manual Tests:</strong>
3264
+ <strong>Manual Tests:</strong>
3265
3265
  <ul style="margin: 4px 0 0 0; padding-left: 20px;">
3266
3266
  {{#each testing.manual}}
3267
- <li style="margin: 4px 0; color: #1e3a8a;">{{this}}</li>
3267
+ <li style="margin: 4px 0;">{{this}}</li>
3268
3268
  {{/each}}
3269
3269
  </ul>
3270
3270
  </div>
3271
3271
  {{/if}}
3272
3272
  {{#if testing.automated}}
3273
3273
  <div style="margin: 12px 0;">
3274
- <strong style="color: #1e40af;">Automated Test:</strong>
3274
+ <strong>Automated Test:</strong>
3275
3275
  <div class="code-block" style="margin-top: 4px;"><code>{{testing.automated}}</code></div>
3276
3276
  </div>
3277
3277
  {{/if}}
@@ -3280,11 +3280,11 @@ Solution: {{recommendation}}</div>
3280
3280
  {{/if}}
3281
3281
 
3282
3282
  {{#if detection}}
3283
- <details style="margin: 16px 0; border: 1px solid #8b5cf6; border-radius: 8px; padding: 12px; background: #faf5ff;">
3284
- <summary style="cursor: pointer; font-weight: 600; color: #6b21a8;">๐Ÿ” Detection Method (Check if already exploited)</summary>
3283
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
3284
+ <summary style="cursor: pointer; font-weight: 600;">Detection Method</summary>
3285
3285
  <div style="margin-top: 12px;">
3286
3286
  {{#if detection.description}}
3287
- <p style="color: #581c87; margin-bottom: 8px;">{{detection.description}}</p>
3287
+ <p style="margin-bottom: 8px;">{{detection.description}}</p>
3288
3288
  {{/if}}
3289
3289
  {{#if detection.commands}}
3290
3290
  <div class="code-block"><code>{{#each detection.commands}}{{this}}
@@ -3292,10 +3292,10 @@ Solution: {{recommendation}}</div>
3292
3292
  {{/if}}
3293
3293
  {{#if detection.indicators}}
3294
3294
  <div style="margin: 12px 0;">
3295
- <strong style="color: #6b21a8;">Indicators of Compromise:</strong>
3295
+ <strong>Indicators of Compromise:</strong>
3296
3296
  <ul style="margin: 4px 0 0 0; padding-left: 20px;">
3297
3297
  {{#each detection.indicators}}
3298
- <li style="margin: 4px 0; color: #581c87;">{{this}}</li>
3298
+ <li style="margin: 4px 0;">{{this}}</li>
3299
3299
  {{/each}}
3300
3300
  </ul>
3301
3301
  </div>
@@ -3305,20 +3305,20 @@ Solution: {{recommendation}}</div>
3305
3305
  {{/if}}
3306
3306
 
3307
3307
  {{#if estimatedEffort}}
3308
- <div class="info-box" style="background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%); border-left: 4px solid #0284c7;">
3309
- <div class="info-label" style="color: #075985; font-weight: 600;">โฑ๏ธ Fix Time Estimate (Human vs Claude Code)</div>
3310
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 12px;">
3311
- <div style="padding: 12px; background: white; border-radius: 6px; border: 1px solid #7dd3fc;">
3312
- <div style="font-size: 11px; color: #0c4a6e; font-weight: 600; margin-bottom: 4px;">๐Ÿ‘จโ€๐Ÿ’ป HUMAN DEVELOPER</div>
3313
- <div style="font-size: 18px; color: #0369a1; font-weight: 700;">{{estimatedEffort.human}}</div>
3308
+ <div class="info-box">
3309
+ <div class="info-label">Fix Time Estimate</div>
3310
+ <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-top: 12px;">
3311
+ <div style="padding: 12px; background: #f8f9fa; border-radius: 4px;">
3312
+ <div style="font-size: 11px; font-weight: 600; margin-bottom: 6px; color: #6c757d;">HUMAN</div>
3313
+ <div style="font-size: 16px; font-weight: 600;">{{estimatedEffort.human}}</div>
3314
3314
  </div>
3315
- <div style="padding: 12px; background: white; border-radius: 6px; border: 1px solid #0ea5e9;">
3316
- <div style="font-size: 11px; color: #0c4a6e; font-weight: 600; margin-bottom: 4px;">๐Ÿค– CLAUDE CODE</div>
3317
- <div style="font-size: 18px; color: #0284c7; font-weight: 700;">{{estimatedEffort.claudeCode}}</div>
3315
+ <div style="padding: 12px; background: #f8f9fa; border-radius: 4px;">
3316
+ <div style="font-size: 11px; font-weight: 600; margin-bottom: 6px; color: #6c757d;">CLAUDE CODE</div>
3317
+ <div style="font-size: 16px; font-weight: 600;">{{estimatedEffort.claudeCode}}</div>
3318
+ </div>
3319
+ <div style="padding: 12px; background: #212529; border-radius: 4px; text-align: center; display: flex; align-items: center; justify-content: center;">
3320
+ <div style="color: white; font-weight: 700; font-size: 15px;">{{estimatedEffort.roi}}</div>
3318
3321
  </div>
3319
- </div>
3320
- <div style="margin-top: 12px; padding: 10px; background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); border-radius: 6px; text-align: center; color: white; font-weight: 700; font-size: 16px;">
3321
- ๐Ÿš€ ROI: {{estimatedEffort.roi}}
3322
3322
  </div>
3323
3323
  </div>
3324
3324
  {{/if}}
@@ -3375,44 +3375,44 @@ Solution: {{recommendation}}</div>
3375
3375
  {{/if}}
3376
3376
 
3377
3377
  {{#if businessImpact}}
3378
- <div class="info-box" style="background: linear-gradient(135deg, #fff5f5 0%, #ffe5e5 100%); border-left: 4px solid #e53e3e;">
3379
- <div class="info-label" style="color: #c53030; font-weight: 600;">๐Ÿ’ฐ Business Impact</div>
3380
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px;">
3378
+ <div class="info-box">
3379
+ <div class="info-label">Business Impact</div>
3380
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 8px;">
3381
3381
  {{#if businessImpact.financial}}
3382
- <div><strong style="color: #c53030;">Financial:</strong> {{businessImpact.financial}}</div>
3382
+ <div><strong>Financial:</strong> {{businessImpact.financial}}</div>
3383
3383
  {{/if}}
3384
3384
  {{#if businessImpact.reputation}}
3385
- <div><strong style="color: #c53030;">Reputation:</strong> {{businessImpact.reputation}}</div>
3385
+ <div><strong>Reputation:</strong> {{businessImpact.reputation}}</div>
3386
3386
  {{/if}}
3387
3387
  {{#if businessImpact.legal}}
3388
- <div><strong style="color: #c53030;">Legal:</strong> {{businessImpact.legal}}</div>
3388
+ <div><strong>Legal:</strong> {{businessImpact.legal}}</div>
3389
3389
  {{/if}}
3390
3390
  {{#if businessImpact.operational}}
3391
- <div><strong style="color: #c53030;">Operational:</strong> {{businessImpact.operational}}</div>
3391
+ <div><strong>Operational:</strong> {{businessImpact.operational}}</div>
3392
3392
  {{/if}}
3393
3393
  </div>
3394
3394
  </div>
3395
3395
  {{/if}}
3396
3396
 
3397
3397
  {{#if realWorldExamples}}
3398
- <div class="info-box" style="background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%); border-left: 4px solid #ea580c;">
3399
- <div class="info-label" style="color: #c2410c; font-weight: 600;">๐ŸŒ Real-World Examples</div>
3398
+ <div class="info-box">
3399
+ <div class="info-label">Real-World Examples</div>
3400
3400
  <ul style="margin: 8px 0 0 0; padding-left: 20px;">
3401
3401
  {{#each realWorldExamples}}
3402
- <li style="margin: 4px 0; color: #7c2d12;">{{this}}</li>
3402
+ <li style="margin: 4px 0;">{{this}}</li>
3403
3403
  {{/each}}
3404
3404
  </ul>
3405
3405
  </div>
3406
3406
  {{/if}}
3407
3407
 
3408
3408
  {{#if attackChain}}
3409
- <div class="info-box" style="background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); border-left: 4px solid #d97706;">
3410
- <div class="info-label" style="color: #92400e; font-weight: 600;">โš”๏ธ Attack Chain</div>
3411
- <div style="margin-top: 8px;">
3409
+ <div class="info-box">
3410
+ <div class="info-label">Attack Chain</div>
3411
+ <div style="margin-top: 12px;">
3412
3412
  {{#each attackChain}}
3413
- <div style="margin: 8px 0; padding: 8px; background: white; border-radius: 6px; border-left: 3px solid #f59e0b;">
3414
- <strong style="color: #92400e;">Step {{step}}:</strong> {{action}}
3415
- <div style="margin-top: 4px; color: #78350f; font-size: 13px;">โ†’ <em>{{result}}</em></div>
3413
+ <div style="margin: 12px 0; padding: 12px; background: #f8f9fa; border-left: 3px solid #6c757d; border-radius: 4px;">
3414
+ <div><strong>Step {{step}}:</strong> {{action}}</div>
3415
+ <div style="margin-top: 6px; color: #6c757d; font-size: 14px;">โ†’ {{result}}</div>
3416
3416
  </div>
3417
3417
  {{/each}}
3418
3418
  </div>
@@ -3424,8 +3424,8 @@ Solution: {{recommendation}}</div>
3424
3424
  {{/if}}
3425
3425
 
3426
3426
  {{#if proofOfConcept}}
3427
- <details style="margin: 16px 0; border: 2px solid #dc2626; border-radius: 8px; padding: 12px; background: #fef2f2;">
3428
- <summary style="cursor: pointer; font-weight: 600; color: #991b1b;">๐ŸŽฏ Proof of Concept (Click to expand exploit code)</summary>
3427
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
3428
+ <summary style="cursor: pointer; font-weight: 600;">Proof of Concept (Click to expand)</summary>
3429
3429
  <div class="code-block" style="margin-top: 12px;"><code>{{proofOfConcept}}</code></div>
3430
3430
  </details>
3431
3431
  {{/if}}
@@ -3436,27 +3436,27 @@ Solution: {{recommendation}}</div>
3436
3436
  </div>
3437
3437
 
3438
3438
  {{#if quickFix}}
3439
- <div class="info-box" style="background: linear-gradient(135deg, #fef9c3 0%, #fef08a 100%); border-left: 4px solid #ca8a04;">
3440
- <div class="info-label" style="color: #854d0e; font-weight: 600;">โšก Quick Fix ({{quickFix.description}})</div>
3439
+ <div class="info-box">
3440
+ <div class="info-label">Quick Fix ยท {{quickFix.description}}</div>
3441
3441
  <div class="code-block" style="margin-top: 8px;"><code>{{quickFix.code}}</code></div>
3442
3442
  {{#if quickFix.limitations}}
3443
- <p style="margin-top: 8px; padding: 8px; background: white; border-radius: 4px; color: #a16207; font-size: 13px;">
3444
- <strong>โš ๏ธ Limitations:</strong> {{quickFix.limitations}}
3443
+ <p style="margin-top: 8px; padding: 8px; background: #f8f9fa; border-radius: 4px; font-size: 13px;">
3444
+ <strong>Limitations:</strong> {{quickFix.limitations}}
3445
3445
  </p>
3446
3446
  {{/if}}
3447
3447
  </div>
3448
3448
  {{/if}}
3449
3449
 
3450
3450
  {{#if properFix}}
3451
- <div class="info-box" style="background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%); border-left: 4px solid #16a34a;">
3452
- <div class="info-label" style="color: #166534; font-weight: 600;">โœ… Proper Fix ({{properFix.description}})</div>
3451
+ <div class="info-box">
3452
+ <div class="info-label">Proper Fix ยท {{properFix.description}}</div>
3453
3453
  <div class="code-block" style="margin-top: 8px;"><code>{{properFix.code}}</code></div>
3454
3454
  {{#if properFix.additionalSteps}}
3455
3455
  <div style="margin-top: 12px;">
3456
- <strong style="color: #166534;">Additional Steps:</strong>
3456
+ <strong>Additional Steps:</strong>
3457
3457
  <ul style="margin: 8px 0 0 0; padding-left: 20px;">
3458
3458
  {{#each properFix.additionalSteps}}
3459
- <li style="margin: 4px 0; color: #14532d;">{{this}}</li>
3459
+ <li style="margin: 4px 0;">{{this}}</li>
3460
3460
  {{/each}}
3461
3461
  </ul>
3462
3462
  </div>
@@ -3465,25 +3465,25 @@ Solution: {{recommendation}}</div>
3465
3465
  {{/if}}
3466
3466
 
3467
3467
  {{#if testing}}
3468
- <details style="margin: 16px 0; border: 1px solid #3b82f6; border-radius: 8px; padding: 12px; background: #eff6ff;">
3469
- <summary style="cursor: pointer; font-weight: 600; color: #1e40af;">๐Ÿงช Testing Instructions</summary>
3468
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
3469
+ <summary style="cursor: pointer; font-weight: 600;">Testing Instructions</summary>
3470
3470
  <div style="margin-top: 12px;">
3471
3471
  {{#if testing.description}}
3472
- <p style="color: #1e3a8a; margin-bottom: 8px;">{{testing.description}}</p>
3472
+ <p style="margin-bottom: 8px;">{{testing.description}}</p>
3473
3473
  {{/if}}
3474
3474
  {{#if testing.manual}}
3475
3475
  <div style="margin: 8px 0;">
3476
- <strong style="color: #1e40af;">Manual Tests:</strong>
3476
+ <strong>Manual Tests:</strong>
3477
3477
  <ul style="margin: 4px 0 0 0; padding-left: 20px;">
3478
3478
  {{#each testing.manual}}
3479
- <li style="margin: 4px 0; color: #1e3a8a;">{{this}}</li>
3479
+ <li style="margin: 4px 0;">{{this}}</li>
3480
3480
  {{/each}}
3481
3481
  </ul>
3482
3482
  </div>
3483
3483
  {{/if}}
3484
3484
  {{#if testing.automated}}
3485
3485
  <div style="margin: 12px 0;">
3486
- <strong style="color: #1e40af;">Automated Test:</strong>
3486
+ <strong>Automated Test:</strong>
3487
3487
  <div class="code-block" style="margin-top: 4px;"><code>{{testing.automated}}</code></div>
3488
3488
  </div>
3489
3489
  {{/if}}
@@ -3492,11 +3492,11 @@ Solution: {{recommendation}}</div>
3492
3492
  {{/if}}
3493
3493
 
3494
3494
  {{#if detection}}
3495
- <details style="margin: 16px 0; border: 1px solid #8b5cf6; border-radius: 8px; padding: 12px; background: #faf5ff;">
3496
- <summary style="cursor: pointer; font-weight: 600; color: #6b21a8;">๐Ÿ” Detection Method (Check if already exploited)</summary>
3495
+ <details style="margin: 16px 0; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; background: #f8f9fa;">
3496
+ <summary style="cursor: pointer; font-weight: 600;">Detection Method</summary>
3497
3497
  <div style="margin-top: 12px;">
3498
3498
  {{#if detection.description}}
3499
- <p style="color: #581c87; margin-bottom: 8px;">{{detection.description}}</p>
3499
+ <p style="margin-bottom: 8px;">{{detection.description}}</p>
3500
3500
  {{/if}}
3501
3501
  {{#if detection.commands}}
3502
3502
  <div class="code-block"><code>{{#each detection.commands}}{{this}}
@@ -3504,10 +3504,10 @@ Solution: {{recommendation}}</div>
3504
3504
  {{/if}}
3505
3505
  {{#if detection.indicators}}
3506
3506
  <div style="margin: 12px 0;">
3507
- <strong style="color: #6b21a8;">Indicators of Compromise:</strong>
3507
+ <strong>Indicators of Compromise:</strong>
3508
3508
  <ul style="margin: 4px 0 0 0; padding-left: 20px;">
3509
3509
  {{#each detection.indicators}}
3510
- <li style="margin: 4px 0; color: #581c87;">{{this}}</li>
3510
+ <li style="margin: 4px 0;">{{this}}</li>
3511
3511
  {{/each}}
3512
3512
  </ul>
3513
3513
  </div>
@@ -3517,20 +3517,20 @@ Solution: {{recommendation}}</div>
3517
3517
  {{/if}}
3518
3518
 
3519
3519
  {{#if estimatedEffort}}
3520
- <div class="info-box" style="background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%); border-left: 4px solid #0284c7;">
3521
- <div class="info-label" style="color: #075985; font-weight: 600;">โฑ๏ธ Fix Time Estimate (Human vs Claude Code)</div>
3522
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 12px;">
3523
- <div style="padding: 12px; background: white; border-radius: 6px; border: 1px solid #7dd3fc;">
3524
- <div style="font-size: 11px; color: #0c4a6e; font-weight: 600; margin-bottom: 4px;">๐Ÿ‘จโ€๐Ÿ’ป HUMAN DEVELOPER</div>
3525
- <div style="font-size: 18px; color: #0369a1; font-weight: 700;">{{estimatedEffort.human}}</div>
3520
+ <div class="info-box">
3521
+ <div class="info-label">Fix Time Estimate</div>
3522
+ <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-top: 12px;">
3523
+ <div style="padding: 12px; background: #f8f9fa; border-radius: 4px;">
3524
+ <div style="font-size: 11px; font-weight: 600; margin-bottom: 6px; color: #6c757d;">HUMAN</div>
3525
+ <div style="font-size: 16px; font-weight: 600;">{{estimatedEffort.human}}</div>
3526
3526
  </div>
3527
- <div style="padding: 12px; background: white; border-radius: 6px; border: 1px solid #0ea5e9;">
3528
- <div style="font-size: 11px; color: #0c4a6e; font-weight: 600; margin-bottom: 4px;">๐Ÿค– CLAUDE CODE</div>
3529
- <div style="font-size: 18px; color: #0284c7; font-weight: 700;">{{estimatedEffort.claudeCode}}</div>
3527
+ <div style="padding: 12px; background: #f8f9fa; border-radius: 4px;">
3528
+ <div style="font-size: 11px; font-weight: 600; margin-bottom: 6px; color: #6c757d;">CLAUDE CODE</div>
3529
+ <div style="font-size: 16px; font-weight: 600;">{{estimatedEffort.claudeCode}}</div>
3530
+ </div>
3531
+ <div style="padding: 12px; background: #212529; border-radius: 4px; text-align: center; display: flex; align-items: center; justify-content: center;">
3532
+ <div style="color: white; font-weight: 700; font-size: 15px;">{{estimatedEffort.roi}}</div>
3530
3533
  </div>
3531
- </div>
3532
- <div style="margin-top: 12px; padding: 10px; background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); border-radius: 6px; text-align: center; color: white; font-weight: 700; font-size: 16px;">
3533
- ๐Ÿš€ ROI: {{estimatedEffort.roi}}
3534
3534
  </div>
3535
3535
  </div>
3536
3536
  {{/if}}