thuban 0.4.9 → 0.4.11
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/LICENSE +21 -21
- package/README.md +437 -437
- package/dist/LICENSE +21 -0
- package/dist/README.md +437 -0
- package/dist/cli.js +2 -0
- package/dist/package.json +63 -0
- package/dist/packages/crucible/.golden/golden-master.json +414 -0
- package/dist/packages/crucible/report-generator.js +1 -0
- package/dist/packages/crucible/rules/code-scanner-core.json +303 -0
- package/dist/packages/crucible/rules/command-injection.json +411 -0
- package/dist/packages/crucible/rules/crypto-misuse.json +35 -0
- package/dist/packages/crucible/rules/deserialization.json +152 -0
- package/dist/packages/crucible/rules/env-injection.json +46 -0
- package/dist/packages/crucible/rules/eval-abuse.json +104 -0
- package/dist/packages/crucible/rules/file-upload.json +46 -0
- package/dist/packages/crucible/rules/hallucination.json +22 -0
- package/dist/packages/crucible/rules/hardcoded-secret.json +397 -0
- package/dist/packages/crucible/rules/hardcoded-url.json +13 -0
- package/dist/packages/crucible/rules/insecure-crypto.json +302 -0
- package/dist/packages/crucible/rules/integer-overflow.json +35 -0
- package/dist/packages/crucible/rules/log-injection.json +33 -0
- package/dist/packages/crucible/rules/mass-assignment.json +112 -0
- package/dist/packages/crucible/rules/open-redirect.json +196 -0
- package/dist/packages/crucible/rules/path-traversal.json +422 -0
- package/dist/packages/crucible/rules/prototype-pollution.json +22 -0
- package/dist/packages/crucible/rules/sql-injection.json +619 -0
- package/dist/packages/crucible/rules/ssrf.json +557 -0
- package/dist/packages/crucible/rules/timing-attack.json +55 -0
- package/dist/packages/crucible/rules/unsafe-block.json +24 -0
- package/dist/packages/crucible/rules/xss.json +663 -0
- package/dist/packages/crucible/rules/xxe.json +66 -0
- package/dist/packages/crucible/rules/yaml-deserialization.json +22 -0
- package/dist/packages/crucible/rules/yaml-injection.json +22 -0
- package/dist/packages/crucible/seeds/csharp/seed-001.cs +28 -0
- package/dist/packages/crucible/seeds/csharp/seed-002.cs +24 -0
- package/dist/packages/crucible/seeds/csharp/seed-003.cs +30 -0
- package/dist/packages/crucible/seeds/csharp/seed-004.cs +31 -0
- package/dist/packages/crucible/seeds/csharp/seed-005.cs +28 -0
- package/dist/packages/crucible/seeds/csharp/seed-006.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-007.cs +34 -0
- package/dist/packages/crucible/seeds/csharp/seed-008.cs +23 -0
- package/dist/packages/crucible/seeds/csharp/seed-009.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-010.cs +29 -0
- package/dist/packages/crucible/seeds/csharp/seed-011.cs +32 -0
- package/dist/packages/crucible/seeds/csharp/seed-012.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-013.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-014.cs +26 -0
- package/dist/packages/crucible/seeds/csharp/seed-015.cs +33 -0
- package/dist/packages/crucible/seeds/csharp/seed-016.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-017.cs +22 -0
- package/dist/packages/crucible/seeds/csharp/seed-018.cs +26 -0
- package/dist/packages/crucible/seeds/csharp/seed-019.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-020.cs +22 -0
- package/dist/packages/crucible/seeds/csharp/seed-021.cs +28 -0
- package/dist/packages/crucible/seeds/csharp/seed-022.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-023.cs +33 -0
- package/dist/packages/crucible/seeds/csharp/seed-024.cs +31 -0
- package/dist/packages/crucible/seeds/csharp/seed-025.cs +31 -0
- package/dist/packages/crucible/seeds/csharp/seed-026.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-027.cs +29 -0
- package/dist/packages/crucible/seeds/csharp/seed-028.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-029.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-030.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-031.cs +28 -0
- package/dist/packages/crucible/seeds/csharp/seed-032.cs +30 -0
- package/dist/packages/crucible/seeds/csharp/seed-033.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-034.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-035.cs +32 -0
- package/dist/packages/crucible/seeds/csharp/seed-036.cs +28 -0
- package/dist/packages/crucible/seeds/csharp/seed-037.cs +29 -0
- package/dist/packages/crucible/seeds/csharp/seed-038.cs +28 -0
- package/dist/packages/crucible/seeds/csharp/seed-039.cs +29 -0
- package/dist/packages/crucible/seeds/csharp/seed-040.cs +28 -0
- package/dist/packages/crucible/seeds/csharp/seed-041.cs +33 -0
- package/dist/packages/crucible/seeds/csharp/seed-042.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-043.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-044.cs +25 -0
- package/dist/packages/crucible/seeds/csharp/seed-045.cs +30 -0
- package/dist/packages/crucible/seeds/csharp/seed-046.cs +29 -0
- package/dist/packages/crucible/seeds/csharp/seed-047.cs +26 -0
- package/dist/packages/crucible/seeds/csharp/seed-048.cs +31 -0
- package/dist/packages/crucible/seeds/csharp/seed-049.cs +27 -0
- package/dist/packages/crucible/seeds/csharp/seed-050.cs +30 -0
- package/dist/packages/crucible/seeds/csharp/seed-051.cs +34 -0
- package/dist/packages/crucible/seeds/csharp/seed-052.cs +36 -0
- package/dist/packages/crucible/seeds/go/seed-001.go +29 -0
- package/dist/packages/crucible/seeds/go/seed-002.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-003.go +31 -0
- package/dist/packages/crucible/seeds/go/seed-004.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-005.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-006.go +29 -0
- package/dist/packages/crucible/seeds/go/seed-007.go +24 -0
- package/dist/packages/crucible/seeds/go/seed-008.go +25 -0
- package/dist/packages/crucible/seeds/go/seed-009.go +30 -0
- package/dist/packages/crucible/seeds/go/seed-010.go +35 -0
- package/dist/packages/crucible/seeds/go/seed-011.go +24 -0
- package/dist/packages/crucible/seeds/go/seed-012.go +24 -0
- package/dist/packages/crucible/seeds/go/seed-013.go +31 -0
- package/dist/packages/crucible/seeds/go/seed-014.go +35 -0
- package/dist/packages/crucible/seeds/go/seed-015.go +25 -0
- package/dist/packages/crucible/seeds/go/seed-016.go +19 -0
- package/dist/packages/crucible/seeds/go/seed-017.go +23 -0
- package/dist/packages/crucible/seeds/go/seed-018.go +23 -0
- package/dist/packages/crucible/seeds/go/seed-019.go +22 -0
- package/dist/packages/crucible/seeds/go/seed-020.go +31 -0
- package/dist/packages/crucible/seeds/go/seed-021.go +22 -0
- package/dist/packages/crucible/seeds/go/seed-022.go +29 -0
- package/dist/packages/crucible/seeds/go/seed-023.go +26 -0
- package/dist/packages/crucible/seeds/go/seed-024.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-025.go +23 -0
- package/dist/packages/crucible/seeds/go/seed-026.go +29 -0
- package/dist/packages/crucible/seeds/go/seed-027.go +26 -0
- package/dist/packages/crucible/seeds/go/seed-028.go +23 -0
- package/dist/packages/crucible/seeds/go/seed-029.go +28 -0
- package/dist/packages/crucible/seeds/go/seed-030.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-031.go +28 -0
- package/dist/packages/crucible/seeds/go/seed-032.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-033.go +29 -0
- package/dist/packages/crucible/seeds/go/seed-034.go +22 -0
- package/dist/packages/crucible/seeds/go/seed-035.go +32 -0
- package/dist/packages/crucible/seeds/go/seed-036.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-037.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-038.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-039.go +26 -0
- package/dist/packages/crucible/seeds/go/seed-040.go +37 -0
- package/dist/packages/crucible/seeds/go/seed-041.go +23 -0
- package/dist/packages/crucible/seeds/go/seed-042.go +32 -0
- package/dist/packages/crucible/seeds/go/seed-043.go +35 -0
- package/dist/packages/crucible/seeds/go/seed-044.go +25 -0
- package/dist/packages/crucible/seeds/go/seed-045.go +26 -0
- package/dist/packages/crucible/seeds/go/seed-046.go +34 -0
- package/dist/packages/crucible/seeds/go/seed-047.go +26 -0
- package/dist/packages/crucible/seeds/go/seed-048.go +29 -0
- package/dist/packages/crucible/seeds/go/seed-049.go +24 -0
- package/dist/packages/crucible/seeds/go/seed-050.go +27 -0
- package/dist/packages/crucible/seeds/go/seed-051.go +38 -0
- package/dist/packages/crucible/seeds/go/seed-052.go +27 -0
- package/dist/packages/crucible/seeds/java/seed-001.java +23 -0
- package/dist/packages/crucible/seeds/java/seed-002.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-003.java +28 -0
- package/dist/packages/crucible/seeds/java/seed-004.java +26 -0
- package/dist/packages/crucible/seeds/java/seed-005.java +33 -0
- package/dist/packages/crucible/seeds/java/seed-006.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-007.java +21 -0
- package/dist/packages/crucible/seeds/java/seed-008.java +29 -0
- package/dist/packages/crucible/seeds/java/seed-009.java +24 -0
- package/dist/packages/crucible/seeds/java/seed-010.java +30 -0
- package/dist/packages/crucible/seeds/java/seed-011.java +25 -0
- package/dist/packages/crucible/seeds/java/seed-012.java +20 -0
- package/dist/packages/crucible/seeds/java/seed-013.java +26 -0
- package/dist/packages/crucible/seeds/java/seed-014.java +23 -0
- package/dist/packages/crucible/seeds/java/seed-015.java +25 -0
- package/dist/packages/crucible/seeds/java/seed-016.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-017.java +24 -0
- package/dist/packages/crucible/seeds/java/seed-018.java +24 -0
- package/dist/packages/crucible/seeds/java/seed-019.java +38 -0
- package/dist/packages/crucible/seeds/java/seed-020.java +24 -0
- package/dist/packages/crucible/seeds/java/seed-021.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-022.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-023.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-024.java +25 -0
- package/dist/packages/crucible/seeds/java/seed-025.java +27 -0
- package/dist/packages/crucible/seeds/java/seed-026.java +25 -0
- package/dist/packages/crucible/seeds/java/seed-027.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-028.java +21 -0
- package/dist/packages/crucible/seeds/java/seed-029.java +28 -0
- package/dist/packages/crucible/seeds/java/seed-030.java +27 -0
- package/dist/packages/crucible/seeds/java/seed-031.java +23 -0
- package/dist/packages/crucible/seeds/java/seed-032.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-033.java +24 -0
- package/dist/packages/crucible/seeds/java/seed-034.java +24 -0
- package/dist/packages/crucible/seeds/java/seed-035.java +29 -0
- package/dist/packages/crucible/seeds/java/seed-036.java +25 -0
- package/dist/packages/crucible/seeds/java/seed-037.java +30 -0
- package/dist/packages/crucible/seeds/java/seed-038.java +29 -0
- package/dist/packages/crucible/seeds/java/seed-039.java +26 -0
- package/dist/packages/crucible/seeds/java/seed-040.java +31 -0
- package/dist/packages/crucible/seeds/java/seed-041.java +20 -0
- package/dist/packages/crucible/seeds/java/seed-042.java +26 -0
- package/dist/packages/crucible/seeds/java/seed-043.java +31 -0
- package/dist/packages/crucible/seeds/java/seed-044.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-045.java +25 -0
- package/dist/packages/crucible/seeds/java/seed-046.java +22 -0
- package/dist/packages/crucible/seeds/java/seed-047.java +26 -0
- package/dist/packages/crucible/seeds/java/seed-048.java +24 -0
- package/dist/packages/crucible/seeds/java/seed-049.java +28 -0
- package/dist/packages/crucible/seeds/java/seed-050.java +29 -0
- package/dist/packages/crucible/seeds/java/seed-051.java +25 -0
- package/dist/packages/crucible/seeds/java/seed-052.java +32 -0
- package/dist/packages/crucible/seeds/js/seed-001.js +27 -0
- package/dist/packages/crucible/seeds/js/seed-002.js +28 -0
- package/dist/packages/crucible/seeds/js/seed-003.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-004.js +28 -0
- package/dist/packages/crucible/seeds/js/seed-005.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-006.js +28 -0
- package/dist/packages/crucible/seeds/js/seed-007.js +26 -0
- package/dist/packages/crucible/seeds/js/seed-008.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-009.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-010.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-011.js +34 -0
- package/dist/packages/crucible/seeds/js/seed-012.js +32 -0
- package/dist/packages/crucible/seeds/js/seed-013.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-014.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-015.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-016.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-017.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-018.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-019.js +32 -0
- package/dist/packages/crucible/seeds/js/seed-020.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-021.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-022.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-023.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-024.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-025.js +34 -0
- package/dist/packages/crucible/seeds/js/seed-026.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-027.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-028.js +33 -0
- package/dist/packages/crucible/seeds/js/seed-029.js +33 -0
- package/dist/packages/crucible/seeds/js/seed-030.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-031.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-032.js +34 -0
- package/dist/packages/crucible/seeds/js/seed-033.js +33 -0
- package/dist/packages/crucible/seeds/js/seed-034.js +33 -0
- package/dist/packages/crucible/seeds/js/seed-035.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-036.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-037.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-038.js +31 -0
- package/dist/packages/crucible/seeds/js/seed-039.js +34 -0
- package/dist/packages/crucible/seeds/js/seed-040.js +35 -0
- package/dist/packages/crucible/seeds/js/seed-041.js +32 -0
- package/dist/packages/crucible/seeds/js/seed-042.js +32 -0
- package/dist/packages/crucible/seeds/js/seed-043.js +27 -0
- package/dist/packages/crucible/seeds/js/seed-044.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-045.js +33 -0
- package/dist/packages/crucible/seeds/js/seed-046.js +33 -0
- package/dist/packages/crucible/seeds/js/seed-047.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-048.js +29 -0
- package/dist/packages/crucible/seeds/js/seed-049.js +34 -0
- package/dist/packages/crucible/seeds/js/seed-050.js +34 -0
- package/dist/packages/crucible/seeds/js/seed-051.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-052.js +30 -0
- package/dist/packages/crucible/seeds/js/seed-053.js +26 -0
- package/dist/packages/crucible/seeds/js/seed-054.js +35 -0
- package/dist/packages/crucible/seeds/js/seed-055.js +33 -0
- package/dist/packages/crucible/seeds/kotlin/seed-001.kt +24 -0
- package/dist/packages/crucible/seeds/kotlin/seed-002.kt +27 -0
- package/dist/packages/crucible/seeds/kotlin/seed-003.kt +29 -0
- package/dist/packages/crucible/seeds/kotlin/seed-004.kt +24 -0
- package/dist/packages/crucible/seeds/kotlin/seed-005.kt +29 -0
- package/dist/packages/crucible/seeds/kotlin/seed-006.kt +21 -0
- package/dist/packages/crucible/seeds/kotlin/seed-007.kt +23 -0
- package/dist/packages/crucible/seeds/kotlin/seed-008.kt +25 -0
- package/dist/packages/crucible/seeds/kotlin/seed-009.kt +21 -0
- package/dist/packages/crucible/seeds/kotlin/seed-010.kt +28 -0
- package/dist/packages/crucible/seeds/kotlin/seed-011.kt +22 -0
- package/dist/packages/crucible/seeds/kotlin/seed-012.kt +25 -0
- package/dist/packages/crucible/seeds/kotlin/seed-013.kt +30 -0
- package/dist/packages/crucible/seeds/kotlin/seed-014.kt +27 -0
- package/dist/packages/crucible/seeds/kotlin/seed-015.kt +24 -0
- package/dist/packages/crucible/seeds/kotlin/seed-016.kt +28 -0
- package/dist/packages/crucible/seeds/kotlin/seed-017.kt +33 -0
- package/dist/packages/crucible/seeds/kotlin/seed-018.kt +31 -0
- package/dist/packages/crucible/seeds/kotlin/seed-019.kt +28 -0
- package/dist/packages/crucible/seeds/kotlin/seed-020.kt +31 -0
- package/dist/packages/crucible/seeds/kotlin/seed-021.kt +34 -0
- package/dist/packages/crucible/seeds/kotlin/seed-022.kt +29 -0
- package/dist/packages/crucible/seeds/kotlin/seed-023.kt +20 -0
- package/dist/packages/crucible/seeds/kotlin/seed-024.kt +23 -0
- package/dist/packages/crucible/seeds/kotlin/seed-025.kt +23 -0
- package/dist/packages/crucible/seeds/kotlin/seed-026.kt +26 -0
- package/dist/packages/crucible/seeds/kotlin/seed-027.kt +29 -0
- package/dist/packages/crucible/seeds/kotlin/seed-028.kt +24 -0
- package/dist/packages/crucible/seeds/kotlin/seed-029.kt +27 -0
- package/dist/packages/crucible/seeds/kotlin/seed-030.kt +26 -0
- package/dist/packages/crucible/seeds/kotlin/seed-031.kt +28 -0
- package/dist/packages/crucible/seeds/kotlin/seed-032.kt +29 -0
- package/dist/packages/crucible/seeds/kotlin/seed-033.kt +30 -0
- package/dist/packages/crucible/seeds/kotlin/seed-034.kt +26 -0
- package/dist/packages/crucible/seeds/kotlin/seed-035.kt +33 -0
- package/dist/packages/crucible/seeds/kotlin/seed-036.kt +25 -0
- package/dist/packages/crucible/seeds/kotlin/seed-037.kt +26 -0
- package/dist/packages/crucible/seeds/kotlin/seed-038.kt +25 -0
- package/dist/packages/crucible/seeds/kotlin/seed-039.kt +29 -0
- package/dist/packages/crucible/seeds/kotlin/seed-040.kt +28 -0
- package/dist/packages/crucible/seeds/kotlin/seed-041.kt +31 -0
- package/dist/packages/crucible/seeds/kotlin/seed-042.kt +27 -0
- package/dist/packages/crucible/seeds/kotlin/seed-043.kt +26 -0
- package/dist/packages/crucible/seeds/kotlin/seed-044.kt +27 -0
- package/dist/packages/crucible/seeds/kotlin/seed-045.kt +27 -0
- package/dist/packages/crucible/seeds/kotlin/seed-046.kt +33 -0
- package/dist/packages/crucible/seeds/kotlin/seed-047.kt +32 -0
- package/dist/packages/crucible/seeds/kotlin/seed-048.kt +20 -0
- package/dist/packages/crucible/seeds/kotlin/seed-049.kt +23 -0
- package/dist/packages/crucible/seeds/kotlin/seed-050.kt +19 -0
- package/dist/packages/crucible/seeds/php/seed-001.php +23 -0
- package/dist/packages/crucible/seeds/php/seed-002.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-003.php +25 -0
- package/dist/packages/crucible/seeds/php/seed-004.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-005.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-006.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-007.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-008.php +19 -0
- package/dist/packages/crucible/seeds/php/seed-009.php +24 -0
- package/dist/packages/crucible/seeds/php/seed-010.php +24 -0
- package/dist/packages/crucible/seeds/php/seed-011.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-012.php +24 -0
- package/dist/packages/crucible/seeds/php/seed-013.php +23 -0
- package/dist/packages/crucible/seeds/php/seed-014.php +20 -0
- package/dist/packages/crucible/seeds/php/seed-015.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-016.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-017.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-018.php +17 -0
- package/dist/packages/crucible/seeds/php/seed-019.php +24 -0
- package/dist/packages/crucible/seeds/php/seed-020.php +19 -0
- package/dist/packages/crucible/seeds/php/seed-021.php +22 -0
- package/dist/packages/crucible/seeds/php/seed-022.php +15 -0
- package/dist/packages/crucible/seeds/php/seed-023.php +24 -0
- package/dist/packages/crucible/seeds/php/seed-024.php +22 -0
- package/dist/packages/crucible/seeds/php/seed-025.php +20 -0
- package/dist/packages/crucible/seeds/php/seed-026.php +22 -0
- package/dist/packages/crucible/seeds/php/seed-027.php +15 -0
- package/dist/packages/crucible/seeds/php/seed-028.php +15 -0
- package/dist/packages/crucible/seeds/php/seed-029.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-030.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-031.php +23 -0
- package/dist/packages/crucible/seeds/php/seed-032.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-033.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-034.php +24 -0
- package/dist/packages/crucible/seeds/php/seed-035.php +22 -0
- package/dist/packages/crucible/seeds/php/seed-036.php +17 -0
- package/dist/packages/crucible/seeds/php/seed-037.php +19 -0
- package/dist/packages/crucible/seeds/php/seed-038.php +20 -0
- package/dist/packages/crucible/seeds/php/seed-039.php +15 -0
- package/dist/packages/crucible/seeds/php/seed-040.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-041.php +20 -0
- package/dist/packages/crucible/seeds/php/seed-042.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-043.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-044.php +25 -0
- package/dist/packages/crucible/seeds/php/seed-045.php +25 -0
- package/dist/packages/crucible/seeds/php/seed-046.php +20 -0
- package/dist/packages/crucible/seeds/php/seed-047.php +21 -0
- package/dist/packages/crucible/seeds/php/seed-048.php +19 -0
- package/dist/packages/crucible/seeds/php/seed-049.php +18 -0
- package/dist/packages/crucible/seeds/php/seed-050.php +20 -0
- package/dist/packages/crucible/seeds/python/seed-001.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-002.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-003.py +31 -0
- package/dist/packages/crucible/seeds/python/seed-004.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-005.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-006.py +34 -0
- package/dist/packages/crucible/seeds/python/seed-007.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-008.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-009.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-010.py +42 -0
- package/dist/packages/crucible/seeds/python/seed-011.py +30 -0
- package/dist/packages/crucible/seeds/python/seed-012.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-013.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-014.py +40 -0
- package/dist/packages/crucible/seeds/python/seed-015.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-016.py +34 -0
- package/dist/packages/crucible/seeds/python/seed-017.py +34 -0
- package/dist/packages/crucible/seeds/python/seed-018.py +30 -0
- package/dist/packages/crucible/seeds/python/seed-019.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-020.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-021 2.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-021.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-022 2.py +34 -0
- package/dist/packages/crucible/seeds/python/seed-022.py +34 -0
- package/dist/packages/crucible/seeds/python/seed-023 2.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-023.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-024 2.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-024.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-025 2.py +40 -0
- package/dist/packages/crucible/seeds/python/seed-025.py +40 -0
- package/dist/packages/crucible/seeds/python/seed-026 2.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-026.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-027 2.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-027.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-028 2.py +42 -0
- package/dist/packages/crucible/seeds/python/seed-028.py +42 -0
- package/dist/packages/crucible/seeds/python/seed-029.py +42 -0
- package/dist/packages/crucible/seeds/python/seed-030 2.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-030.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-031 2.py +34 -0
- package/dist/packages/crucible/seeds/python/seed-031.py +34 -0
- package/dist/packages/crucible/seeds/python/seed-032.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-033.py +32 -0
- package/dist/packages/crucible/seeds/python/seed-034.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-035.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-036 2.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-036.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-037 2.py +41 -0
- package/dist/packages/crucible/seeds/python/seed-037.py +41 -0
- package/dist/packages/crucible/seeds/python/seed-038 2.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-038.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-039 2.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-039.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-040 2.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-040.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-041 2.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-041.py +37 -0
- package/dist/packages/crucible/seeds/python/seed-042 2.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-042.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-043 2.py +32 -0
- package/dist/packages/crucible/seeds/python/seed-043.py +32 -0
- package/dist/packages/crucible/seeds/python/seed-044 2.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-044.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-045 2.py +36 -0
- package/dist/packages/crucible/seeds/python/seed-045.py +36 -0
- package/dist/packages/crucible/seeds/python/seed-046 2.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-046.py +33 -0
- package/dist/packages/crucible/seeds/python/seed-047 2.py +44 -0
- package/dist/packages/crucible/seeds/python/seed-047.py +44 -0
- package/dist/packages/crucible/seeds/python/seed-048 2.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-048.py +35 -0
- package/dist/packages/crucible/seeds/python/seed-049 2.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-049.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-050 2.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-050.py +39 -0
- package/dist/packages/crucible/seeds/python/seed-051 2.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-051.py +38 -0
- package/dist/packages/crucible/seeds/python/seed-052 2.py +41 -0
- package/dist/packages/crucible/seeds/python/seed-052.py +41 -0
- package/dist/packages/crucible/seeds/ruby/seed-001 2.rb +15 -0
- package/dist/packages/crucible/seeds/ruby/seed-001.rb +15 -0
- package/dist/packages/crucible/seeds/ruby/seed-002 2.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-002.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-003 2.rb +25 -0
- package/dist/packages/crucible/seeds/ruby/seed-003.rb +25 -0
- package/dist/packages/crucible/seeds/ruby/seed-004 2.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-004.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-005 2.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-005.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-006 2.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-006.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-007 2.rb +16 -0
- package/dist/packages/crucible/seeds/ruby/seed-007.rb +16 -0
- package/dist/packages/crucible/seeds/ruby/seed-008 2.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-008.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-009 2.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-009.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-010 2.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-010.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-011 2.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-011.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-012 2.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-012.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-013 2.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-013.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-014 2.rb +16 -0
- package/dist/packages/crucible/seeds/ruby/seed-014.rb +16 -0
- package/dist/packages/crucible/seeds/ruby/seed-015 2.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-015.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-016 2.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-016.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-017 2.rb +25 -0
- package/dist/packages/crucible/seeds/ruby/seed-017.rb +25 -0
- package/dist/packages/crucible/seeds/ruby/seed-018 2.rb +23 -0
- package/dist/packages/crucible/seeds/ruby/seed-018.rb +23 -0
- package/dist/packages/crucible/seeds/ruby/seed-019 2.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-019.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-020 2.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-020.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-021 2.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-021.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-022 2.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-022.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-023 2.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-023.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-024 2.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-024.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-025 2.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-025.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-026 2.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-026.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-027 2.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-027.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-028 2.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-028.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-029 2.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-029.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-030 2.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-030.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-031 2.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-031.rb +17 -0
- package/dist/packages/crucible/seeds/ruby/seed-032 2.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-032.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-033 2.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-033.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-034 2.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-034.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-035 2.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-035.rb +19 -0
- package/dist/packages/crucible/seeds/ruby/seed-036 2.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-036.rb +18 -0
- package/dist/packages/crucible/seeds/ruby/seed-037 2.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-037.rb +21 -0
- package/dist/packages/crucible/seeds/ruby/seed-038 2.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-038.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-039 2.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-039.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-040 2.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-040.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-041 2.rb +23 -0
- package/dist/packages/crucible/seeds/ruby/seed-041.rb +23 -0
- package/dist/packages/crucible/seeds/ruby/seed-042 2.rb +25 -0
- package/dist/packages/crucible/seeds/ruby/seed-042.rb +25 -0
- package/dist/packages/crucible/seeds/ruby/seed-043 2.rb +23 -0
- package/dist/packages/crucible/seeds/ruby/seed-043.rb +23 -0
- package/dist/packages/crucible/seeds/ruby/seed-044 2.rb +16 -0
- package/dist/packages/crucible/seeds/ruby/seed-044.rb +16 -0
- package/dist/packages/crucible/seeds/ruby/seed-045 2.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-045.rb +22 -0
- package/dist/packages/crucible/seeds/ruby/seed-046 2.rb +27 -0
- package/dist/packages/crucible/seeds/ruby/seed-046.rb +27 -0
- package/dist/packages/crucible/seeds/ruby/seed-047 2.rb +26 -0
- package/dist/packages/crucible/seeds/ruby/seed-047.rb +26 -0
- package/dist/packages/crucible/seeds/ruby/seed-048 2.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-048.rb +24 -0
- package/dist/packages/crucible/seeds/ruby/seed-049 2.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-049.rb +20 -0
- package/dist/packages/crucible/seeds/ruby/seed-050 2.rb +27 -0
- package/dist/packages/crucible/seeds/ruby/seed-050.rb +27 -0
- package/dist/packages/crucible/seeds/rust/seed-001 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-001.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-002 2.rs +20 -0
- package/dist/packages/crucible/seeds/rust/seed-002.rs +20 -0
- package/dist/packages/crucible/seeds/rust/seed-003 2.rs +23 -0
- package/dist/packages/crucible/seeds/rust/seed-003.rs +23 -0
- package/dist/packages/crucible/seeds/rust/seed-004 2.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-004.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-005 2.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-005.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-006 2.rs +24 -0
- package/dist/packages/crucible/seeds/rust/seed-006.rs +24 -0
- package/dist/packages/crucible/seeds/rust/seed-007 2.rs +20 -0
- package/dist/packages/crucible/seeds/rust/seed-007.rs +20 -0
- package/dist/packages/crucible/seeds/rust/seed-008 2.rs +19 -0
- package/dist/packages/crucible/seeds/rust/seed-008.rs +19 -0
- package/dist/packages/crucible/seeds/rust/seed-009 2.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-009.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-010 2.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-010.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-011 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-011.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-012 2.rs +31 -0
- package/dist/packages/crucible/seeds/rust/seed-012.rs +31 -0
- package/dist/packages/crucible/seeds/rust/seed-013 2.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-013.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-014 2.rs +30 -0
- package/dist/packages/crucible/seeds/rust/seed-014.rs +30 -0
- package/dist/packages/crucible/seeds/rust/seed-015 2.rs +33 -0
- package/dist/packages/crucible/seeds/rust/seed-015.rs +33 -0
- package/dist/packages/crucible/seeds/rust/seed-016 2.rs +22 -0
- package/dist/packages/crucible/seeds/rust/seed-016.rs +22 -0
- package/dist/packages/crucible/seeds/rust/seed-017 2.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-017.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-018 2.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-018.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-019 2.rs +36 -0
- package/dist/packages/crucible/seeds/rust/seed-019.rs +36 -0
- package/dist/packages/crucible/seeds/rust/seed-020 2.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-020.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-021 2.rs +26 -0
- package/dist/packages/crucible/seeds/rust/seed-021.rs +26 -0
- package/dist/packages/crucible/seeds/rust/seed-022 2.rs +23 -0
- package/dist/packages/crucible/seeds/rust/seed-022.rs +23 -0
- package/dist/packages/crucible/seeds/rust/seed-023 2.rs +22 -0
- package/dist/packages/crucible/seeds/rust/seed-023.rs +22 -0
- package/dist/packages/crucible/seeds/rust/seed-024 2.rs +24 -0
- package/dist/packages/crucible/seeds/rust/seed-024.rs +24 -0
- package/dist/packages/crucible/seeds/rust/seed-025 2.rs +29 -0
- package/dist/packages/crucible/seeds/rust/seed-025.rs +29 -0
- package/dist/packages/crucible/seeds/rust/seed-026 2.rs +23 -0
- package/dist/packages/crucible/seeds/rust/seed-026.rs +23 -0
- package/dist/packages/crucible/seeds/rust/seed-027 2.rs +24 -0
- package/dist/packages/crucible/seeds/rust/seed-027.rs +24 -0
- package/dist/packages/crucible/seeds/rust/seed-028 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-028.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-029 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-029.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-030 2.rs +30 -0
- package/dist/packages/crucible/seeds/rust/seed-030.rs +30 -0
- package/dist/packages/crucible/seeds/rust/seed-031 2.rs +22 -0
- package/dist/packages/crucible/seeds/rust/seed-031.rs +22 -0
- package/dist/packages/crucible/seeds/rust/seed-032 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-032.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-033 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-033.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-034 2.rs +20 -0
- package/dist/packages/crucible/seeds/rust/seed-034.rs +20 -0
- package/dist/packages/crucible/seeds/rust/seed-035 2.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-035.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-036 2.rs +26 -0
- package/dist/packages/crucible/seeds/rust/seed-036.rs +26 -0
- package/dist/packages/crucible/seeds/rust/seed-037 2.rs +31 -0
- package/dist/packages/crucible/seeds/rust/seed-037.rs +31 -0
- package/dist/packages/crucible/seeds/rust/seed-038 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-038.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-039 2.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-039.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-040 2.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-040.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-041 2.rs +32 -0
- package/dist/packages/crucible/seeds/rust/seed-041.rs +32 -0
- package/dist/packages/crucible/seeds/rust/seed-042 2.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-042.rs +27 -0
- package/dist/packages/crucible/seeds/rust/seed-043 2.rs +29 -0
- package/dist/packages/crucible/seeds/rust/seed-043.rs +29 -0
- package/dist/packages/crucible/seeds/rust/seed-044 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-044.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-045 2.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-045.rs +28 -0
- package/dist/packages/crucible/seeds/rust/seed-046 2.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-046.rs +25 -0
- package/dist/packages/crucible/seeds/rust/seed-047 2.rs +34 -0
- package/dist/packages/crucible/seeds/rust/seed-047.rs +34 -0
- package/dist/packages/crucible/seeds/rust/seed-048 2.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-048.rs +21 -0
- package/dist/packages/crucible/seeds/rust/seed-049 2.rs +26 -0
- package/dist/packages/crucible/seeds/rust/seed-049.rs +26 -0
- package/dist/packages/crucible/seeds/rust/seed-050 2.rs +23 -0
- package/dist/packages/crucible/seeds/rust/seed-050.rs +23 -0
- package/dist/packages/crucible/seeds/ts/seed-001 2.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-001.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-002 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-002.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-003 2.ts +28 -0
- package/dist/packages/crucible/seeds/ts/seed-003.ts +28 -0
- package/dist/packages/crucible/seeds/ts/seed-004 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-004.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-005 2.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-005.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-006 2.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-006.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-007 2.ts +28 -0
- package/dist/packages/crucible/seeds/ts/seed-007.ts +28 -0
- package/dist/packages/crucible/seeds/ts/seed-008 2.ts +40 -0
- package/dist/packages/crucible/seeds/ts/seed-008.ts +40 -0
- package/dist/packages/crucible/seeds/ts/seed-009 2.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-009.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-010 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-010.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-011 2.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-011.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-012 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-012.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-013 2.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-013.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-014 2.ts +36 -0
- package/dist/packages/crucible/seeds/ts/seed-014.ts +36 -0
- package/dist/packages/crucible/seeds/ts/seed-015 2.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-015.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-016 2.ts +37 -0
- package/dist/packages/crucible/seeds/ts/seed-016.ts +37 -0
- package/dist/packages/crucible/seeds/ts/seed-017 2.ts +44 -0
- package/dist/packages/crucible/seeds/ts/seed-017.ts +44 -0
- package/dist/packages/crucible/seeds/ts/seed-018 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-018.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-019 2.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-019.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-020 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-020.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-021 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-021.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-022 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-022.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-023 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-023.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-024 2.ts +35 -0
- package/dist/packages/crucible/seeds/ts/seed-024.ts +35 -0
- package/dist/packages/crucible/seeds/ts/seed-025 2.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-025.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-026 2.ts +36 -0
- package/dist/packages/crucible/seeds/ts/seed-026.ts +36 -0
- package/dist/packages/crucible/seeds/ts/seed-027 2.ts +30 -0
- package/dist/packages/crucible/seeds/ts/seed-027.ts +30 -0
- package/dist/packages/crucible/seeds/ts/seed-028 2.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-028.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-029 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-029.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-030 2.ts +37 -0
- package/dist/packages/crucible/seeds/ts/seed-030.ts +37 -0
- package/dist/packages/crucible/seeds/ts/seed-031 2.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-031.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-032 2.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-032.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-033 2.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-033.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-034 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-034.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-035 2.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-035.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-036 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-036.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-037 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-037.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-038 2.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-038.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-039 2.ts +35 -0
- package/dist/packages/crucible/seeds/ts/seed-039.ts +35 -0
- package/dist/packages/crucible/seeds/ts/seed-040 2.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-040.ts +31 -0
- package/dist/packages/crucible/seeds/ts/seed-041 2.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-041.ts +29 -0
- package/dist/packages/crucible/seeds/ts/seed-042 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-042.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-043 2.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-043.ts +32 -0
- package/dist/packages/crucible/seeds/ts/seed-044 2.ts +36 -0
- package/dist/packages/crucible/seeds/ts/seed-044.ts +36 -0
- package/dist/packages/crucible/seeds/ts/seed-045 2.ts +39 -0
- package/dist/packages/crucible/seeds/ts/seed-045.ts +39 -0
- package/dist/packages/crucible/seeds/ts/seed-046 2.ts +41 -0
- package/dist/packages/crucible/seeds/ts/seed-046.ts +41 -0
- package/dist/packages/crucible/seeds/ts/seed-047 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-047.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-048 2.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-048.ts +33 -0
- package/dist/packages/crucible/seeds/ts/seed-049 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-049.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-050 2.ts +41 -0
- package/dist/packages/crucible/seeds/ts/seed-050.ts +41 -0
- package/dist/packages/crucible/seeds/ts/seed-051 2.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-051.ts +34 -0
- package/dist/packages/crucible/seeds/ts/seed-052 2.ts +36 -0
- package/dist/packages/crucible/seeds/ts/seed-052.ts +36 -0
- package/dist/packages/scanner/alert-manager.js +1 -0
- package/dist/packages/scanner/architecture-map.js +1 -0
- package/dist/packages/scanner/ast-analyzer.js +1 -0
- package/dist/packages/scanner/benchmarks.js +1 -0
- package/dist/packages/scanner/cfg-analyzer.js +1 -0
- package/dist/packages/scanner/code-scanner.js +1 -0
- package/dist/packages/scanner/compliance-mapper.js +1 -0
- package/dist/packages/scanner/file-collector.js +1 -0
- package/dist/packages/scanner/file-watcher.js +1 -0
- package/dist/packages/scanner/ghost-code-detector.js +1 -0
- package/dist/packages/scanner/git-velocity.js +1 -0
- package/dist/packages/scanner/hallucination-detector.js +1 -0
- package/dist/packages/scanner/health-checker.js +1 -0
- package/dist/packages/scanner/investor-report.js +1 -0
- package/dist/packages/scanner/json-file-util.js +1 -0
- package/dist/packages/scanner/monitor-store.js +1 -0
- package/dist/packages/scanner/python_ast_helper.py +426 -0
- package/dist/packages/scanner/risk-valuation.js +1 -0
- package/dist/packages/scanner/scan-history.js +1 -0
- package/dist/packages/scanner/secret-scanner.js +1 -0
- package/dist/packages/scanner/sentinel-core.js +1 -0
- package/dist/packages/scanner/supply-chain.js +1 -0
- package/dist/packages/scanner/support-bot.js +1 -0
- package/dist/packages/scanner/support-knowledge.js +1 -0
- package/dist/packages/scanner/taint-tracker.js +1 -0
- package/package.json +65 -65
- package/cli.js +0 -2
- package/packages/crucible/.golden/golden-master.json +0 -414
- package/packages/crucible/README.md +0 -93
- package/packages/crucible/report-generator.js +0 -1
- package/packages/crucible/rules/code-scanner-core.json +0 -281
- package/packages/crucible/rules/command-injection.json +0 -411
- package/packages/crucible/rules/crypto-misuse.json +0 -35
- package/packages/crucible/rules/deserialization.json +0 -152
- package/packages/crucible/rules/env-injection.json +0 -46
- package/packages/crucible/rules/eval-abuse.json +0 -104
- package/packages/crucible/rules/file-upload.json +0 -46
- package/packages/crucible/rules/hallucination.json +0 -22
- package/packages/crucible/rules/hardcoded-secret.json +0 -397
- package/packages/crucible/rules/hardcoded-url.json +0 -13
- package/packages/crucible/rules/insecure-crypto.json +0 -302
- package/packages/crucible/rules/integer-overflow.json +0 -35
- package/packages/crucible/rules/log-injection.json +0 -33
- package/packages/crucible/rules/mass-assignment.json +0 -112
- package/packages/crucible/rules/open-redirect.json +0 -196
- package/packages/crucible/rules/path-traversal.json +0 -422
- package/packages/crucible/rules/prototype-pollution.json +0 -22
- package/packages/crucible/rules/sql-injection.json +0 -619
- package/packages/crucible/rules/ssrf.json +0 -557
- package/packages/crucible/rules/timing-attack.json +0 -55
- package/packages/crucible/rules/unsafe-block.json +0 -24
- package/packages/crucible/rules/xss.json +0 -663
- package/packages/crucible/rules/xxe.json +0 -66
- package/packages/crucible/rules/yaml-deserialization.json +0 -22
- package/packages/crucible/rules/yaml-injection.json +0 -22
- package/packages/crucible/seeds/csharp/seed-001.cs +0 -28
- package/packages/crucible/seeds/csharp/seed-002.cs +0 -24
- package/packages/crucible/seeds/csharp/seed-003.cs +0 -30
- package/packages/crucible/seeds/csharp/seed-004.cs +0 -31
- package/packages/crucible/seeds/csharp/seed-005.cs +0 -28
- package/packages/crucible/seeds/csharp/seed-006.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-007.cs +0 -34
- package/packages/crucible/seeds/csharp/seed-008.cs +0 -23
- package/packages/crucible/seeds/csharp/seed-009.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-010.cs +0 -29
- package/packages/crucible/seeds/csharp/seed-011.cs +0 -32
- package/packages/crucible/seeds/csharp/seed-012.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-013.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-014.cs +0 -26
- package/packages/crucible/seeds/csharp/seed-015.cs +0 -33
- package/packages/crucible/seeds/csharp/seed-016.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-017.cs +0 -22
- package/packages/crucible/seeds/csharp/seed-018.cs +0 -26
- package/packages/crucible/seeds/csharp/seed-019.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-020.cs +0 -22
- package/packages/crucible/seeds/csharp/seed-021.cs +0 -28
- package/packages/crucible/seeds/csharp/seed-022.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-023.cs +0 -33
- package/packages/crucible/seeds/csharp/seed-024.cs +0 -31
- package/packages/crucible/seeds/csharp/seed-025.cs +0 -31
- package/packages/crucible/seeds/csharp/seed-026.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-027.cs +0 -29
- package/packages/crucible/seeds/csharp/seed-028.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-029.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-030.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-031.cs +0 -28
- package/packages/crucible/seeds/csharp/seed-032.cs +0 -30
- package/packages/crucible/seeds/csharp/seed-033.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-034.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-035.cs +0 -32
- package/packages/crucible/seeds/csharp/seed-036.cs +0 -28
- package/packages/crucible/seeds/csharp/seed-037.cs +0 -29
- package/packages/crucible/seeds/csharp/seed-038.cs +0 -28
- package/packages/crucible/seeds/csharp/seed-039.cs +0 -29
- package/packages/crucible/seeds/csharp/seed-040.cs +0 -28
- package/packages/crucible/seeds/csharp/seed-041.cs +0 -33
- package/packages/crucible/seeds/csharp/seed-042.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-043.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-044.cs +0 -25
- package/packages/crucible/seeds/csharp/seed-045.cs +0 -30
- package/packages/crucible/seeds/csharp/seed-046.cs +0 -29
- package/packages/crucible/seeds/csharp/seed-047.cs +0 -26
- package/packages/crucible/seeds/csharp/seed-048.cs +0 -31
- package/packages/crucible/seeds/csharp/seed-049.cs +0 -27
- package/packages/crucible/seeds/csharp/seed-050.cs +0 -30
- package/packages/crucible/seeds/csharp/seed-051.cs +0 -34
- package/packages/crucible/seeds/csharp/seed-052.cs +0 -36
- package/packages/crucible/seeds/go/seed-001.go +0 -29
- package/packages/crucible/seeds/go/seed-002.go +0 -27
- package/packages/crucible/seeds/go/seed-003.go +0 -31
- package/packages/crucible/seeds/go/seed-004.go +0 -27
- package/packages/crucible/seeds/go/seed-005.go +0 -27
- package/packages/crucible/seeds/go/seed-006.go +0 -29
- package/packages/crucible/seeds/go/seed-007.go +0 -24
- package/packages/crucible/seeds/go/seed-008.go +0 -25
- package/packages/crucible/seeds/go/seed-009.go +0 -30
- package/packages/crucible/seeds/go/seed-010.go +0 -35
- package/packages/crucible/seeds/go/seed-011.go +0 -24
- package/packages/crucible/seeds/go/seed-012.go +0 -24
- package/packages/crucible/seeds/go/seed-013.go +0 -31
- package/packages/crucible/seeds/go/seed-014.go +0 -35
- package/packages/crucible/seeds/go/seed-015.go +0 -25
- package/packages/crucible/seeds/go/seed-016.go +0 -19
- package/packages/crucible/seeds/go/seed-017.go +0 -23
- package/packages/crucible/seeds/go/seed-018.go +0 -23
- package/packages/crucible/seeds/go/seed-019.go +0 -22
- package/packages/crucible/seeds/go/seed-020.go +0 -31
- package/packages/crucible/seeds/go/seed-021.go +0 -22
- package/packages/crucible/seeds/go/seed-022.go +0 -29
- package/packages/crucible/seeds/go/seed-023.go +0 -26
- package/packages/crucible/seeds/go/seed-024.go +0 -27
- package/packages/crucible/seeds/go/seed-025.go +0 -23
- package/packages/crucible/seeds/go/seed-026.go +0 -29
- package/packages/crucible/seeds/go/seed-027.go +0 -26
- package/packages/crucible/seeds/go/seed-028.go +0 -23
- package/packages/crucible/seeds/go/seed-029.go +0 -28
- package/packages/crucible/seeds/go/seed-030.go +0 -27
- package/packages/crucible/seeds/go/seed-031.go +0 -28
- package/packages/crucible/seeds/go/seed-032.go +0 -27
- package/packages/crucible/seeds/go/seed-033.go +0 -29
- package/packages/crucible/seeds/go/seed-034.go +0 -22
- package/packages/crucible/seeds/go/seed-035.go +0 -32
- package/packages/crucible/seeds/go/seed-036.go +0 -27
- package/packages/crucible/seeds/go/seed-037.go +0 -27
- package/packages/crucible/seeds/go/seed-038.go +0 -27
- package/packages/crucible/seeds/go/seed-039.go +0 -26
- package/packages/crucible/seeds/go/seed-040.go +0 -37
- package/packages/crucible/seeds/go/seed-041.go +0 -23
- package/packages/crucible/seeds/go/seed-042.go +0 -32
- package/packages/crucible/seeds/go/seed-043.go +0 -35
- package/packages/crucible/seeds/go/seed-044.go +0 -25
- package/packages/crucible/seeds/go/seed-045.go +0 -26
- package/packages/crucible/seeds/go/seed-046.go +0 -34
- package/packages/crucible/seeds/go/seed-047.go +0 -26
- package/packages/crucible/seeds/go/seed-048.go +0 -29
- package/packages/crucible/seeds/go/seed-049.go +0 -24
- package/packages/crucible/seeds/go/seed-050.go +0 -27
- package/packages/crucible/seeds/go/seed-051.go +0 -38
- package/packages/crucible/seeds/go/seed-052.go +0 -27
- package/packages/crucible/seeds/java/seed-001.java +0 -23
- package/packages/crucible/seeds/java/seed-002.java +0 -22
- package/packages/crucible/seeds/java/seed-003.java +0 -28
- package/packages/crucible/seeds/java/seed-004.java +0 -26
- package/packages/crucible/seeds/java/seed-005.java +0 -33
- package/packages/crucible/seeds/java/seed-006.java +0 -22
- package/packages/crucible/seeds/java/seed-007.java +0 -21
- package/packages/crucible/seeds/java/seed-008.java +0 -29
- package/packages/crucible/seeds/java/seed-009.java +0 -24
- package/packages/crucible/seeds/java/seed-010.java +0 -30
- package/packages/crucible/seeds/java/seed-011.java +0 -25
- package/packages/crucible/seeds/java/seed-012.java +0 -20
- package/packages/crucible/seeds/java/seed-013.java +0 -26
- package/packages/crucible/seeds/java/seed-014.java +0 -23
- package/packages/crucible/seeds/java/seed-015.java +0 -25
- package/packages/crucible/seeds/java/seed-016.java +0 -22
- package/packages/crucible/seeds/java/seed-017.java +0 -24
- package/packages/crucible/seeds/java/seed-018.java +0 -24
- package/packages/crucible/seeds/java/seed-019.java +0 -38
- package/packages/crucible/seeds/java/seed-020.java +0 -24
- package/packages/crucible/seeds/java/seed-021.java +0 -22
- package/packages/crucible/seeds/java/seed-022.java +0 -22
- package/packages/crucible/seeds/java/seed-023.java +0 -22
- package/packages/crucible/seeds/java/seed-024.java +0 -25
- package/packages/crucible/seeds/java/seed-025.java +0 -27
- package/packages/crucible/seeds/java/seed-026.java +0 -25
- package/packages/crucible/seeds/java/seed-027.java +0 -22
- package/packages/crucible/seeds/java/seed-028.java +0 -21
- package/packages/crucible/seeds/java/seed-029.java +0 -28
- package/packages/crucible/seeds/java/seed-030.java +0 -27
- package/packages/crucible/seeds/java/seed-031.java +0 -23
- package/packages/crucible/seeds/java/seed-032.java +0 -22
- package/packages/crucible/seeds/java/seed-033.java +0 -24
- package/packages/crucible/seeds/java/seed-034.java +0 -24
- package/packages/crucible/seeds/java/seed-035.java +0 -29
- package/packages/crucible/seeds/java/seed-036.java +0 -25
- package/packages/crucible/seeds/java/seed-037.java +0 -30
- package/packages/crucible/seeds/java/seed-038.java +0 -29
- package/packages/crucible/seeds/java/seed-039.java +0 -26
- package/packages/crucible/seeds/java/seed-040.java +0 -31
- package/packages/crucible/seeds/java/seed-041.java +0 -20
- package/packages/crucible/seeds/java/seed-042.java +0 -26
- package/packages/crucible/seeds/java/seed-043.java +0 -31
- package/packages/crucible/seeds/java/seed-044.java +0 -22
- package/packages/crucible/seeds/java/seed-045.java +0 -25
- package/packages/crucible/seeds/java/seed-046.java +0 -22
- package/packages/crucible/seeds/java/seed-047.java +0 -26
- package/packages/crucible/seeds/java/seed-048.java +0 -24
- package/packages/crucible/seeds/java/seed-049.java +0 -28
- package/packages/crucible/seeds/java/seed-050.java +0 -29
- package/packages/crucible/seeds/java/seed-051.java +0 -25
- package/packages/crucible/seeds/java/seed-052.java +0 -32
- package/packages/crucible/seeds/js/seed-001.js +0 -27
- package/packages/crucible/seeds/js/seed-002.js +0 -28
- package/packages/crucible/seeds/js/seed-003.js +0 -30
- package/packages/crucible/seeds/js/seed-004.js +0 -28
- package/packages/crucible/seeds/js/seed-005.js +0 -31
- package/packages/crucible/seeds/js/seed-006.js +0 -28
- package/packages/crucible/seeds/js/seed-007.js +0 -26
- package/packages/crucible/seeds/js/seed-008.js +0 -30
- package/packages/crucible/seeds/js/seed-009.js +0 -30
- package/packages/crucible/seeds/js/seed-010.js +0 -29
- package/packages/crucible/seeds/js/seed-011.js +0 -34
- package/packages/crucible/seeds/js/seed-012.js +0 -32
- package/packages/crucible/seeds/js/seed-013.js +0 -29
- package/packages/crucible/seeds/js/seed-014.js +0 -29
- package/packages/crucible/seeds/js/seed-015.js +0 -31
- package/packages/crucible/seeds/js/seed-016.js +0 -31
- package/packages/crucible/seeds/js/seed-017.js +0 -30
- package/packages/crucible/seeds/js/seed-018.js +0 -29
- package/packages/crucible/seeds/js/seed-019.js +0 -32
- package/packages/crucible/seeds/js/seed-020.js +0 -29
- package/packages/crucible/seeds/js/seed-021.js +0 -31
- package/packages/crucible/seeds/js/seed-022.js +0 -31
- package/packages/crucible/seeds/js/seed-023.js +0 -29
- package/packages/crucible/seeds/js/seed-024.js +0 -29
- package/packages/crucible/seeds/js/seed-025.js +0 -34
- package/packages/crucible/seeds/js/seed-026.js +0 -31
- package/packages/crucible/seeds/js/seed-027.js +0 -31
- package/packages/crucible/seeds/js/seed-028.js +0 -33
- package/packages/crucible/seeds/js/seed-029.js +0 -33
- package/packages/crucible/seeds/js/seed-030.js +0 -30
- package/packages/crucible/seeds/js/seed-031.js +0 -31
- package/packages/crucible/seeds/js/seed-032.js +0 -34
- package/packages/crucible/seeds/js/seed-033.js +0 -33
- package/packages/crucible/seeds/js/seed-034.js +0 -33
- package/packages/crucible/seeds/js/seed-035.js +0 -30
- package/packages/crucible/seeds/js/seed-036.js +0 -30
- package/packages/crucible/seeds/js/seed-037.js +0 -29
- package/packages/crucible/seeds/js/seed-038.js +0 -31
- package/packages/crucible/seeds/js/seed-039.js +0 -34
- package/packages/crucible/seeds/js/seed-040.js +0 -35
- package/packages/crucible/seeds/js/seed-041.js +0 -32
- package/packages/crucible/seeds/js/seed-042.js +0 -32
- package/packages/crucible/seeds/js/seed-043.js +0 -27
- package/packages/crucible/seeds/js/seed-044.js +0 -29
- package/packages/crucible/seeds/js/seed-045.js +0 -33
- package/packages/crucible/seeds/js/seed-046.js +0 -33
- package/packages/crucible/seeds/js/seed-047.js +0 -29
- package/packages/crucible/seeds/js/seed-048.js +0 -29
- package/packages/crucible/seeds/js/seed-049.js +0 -34
- package/packages/crucible/seeds/js/seed-050.js +0 -34
- package/packages/crucible/seeds/js/seed-051.js +0 -30
- package/packages/crucible/seeds/js/seed-052.js +0 -30
- package/packages/crucible/seeds/js/seed-053.js +0 -26
- package/packages/crucible/seeds/js/seed-054.js +0 -35
- package/packages/crucible/seeds/js/seed-055.js +0 -33
- package/packages/crucible/seeds/kotlin/seed-001.kt +0 -24
- package/packages/crucible/seeds/kotlin/seed-002.kt +0 -27
- package/packages/crucible/seeds/kotlin/seed-003.kt +0 -29
- package/packages/crucible/seeds/kotlin/seed-004.kt +0 -24
- package/packages/crucible/seeds/kotlin/seed-005.kt +0 -29
- package/packages/crucible/seeds/kotlin/seed-006.kt +0 -21
- package/packages/crucible/seeds/kotlin/seed-007.kt +0 -23
- package/packages/crucible/seeds/kotlin/seed-008.kt +0 -25
- package/packages/crucible/seeds/kotlin/seed-009.kt +0 -21
- package/packages/crucible/seeds/kotlin/seed-010.kt +0 -28
- package/packages/crucible/seeds/kotlin/seed-011.kt +0 -22
- package/packages/crucible/seeds/kotlin/seed-012.kt +0 -25
- package/packages/crucible/seeds/kotlin/seed-013.kt +0 -30
- package/packages/crucible/seeds/kotlin/seed-014.kt +0 -27
- package/packages/crucible/seeds/kotlin/seed-015.kt +0 -24
- package/packages/crucible/seeds/kotlin/seed-016.kt +0 -28
- package/packages/crucible/seeds/kotlin/seed-017.kt +0 -33
- package/packages/crucible/seeds/kotlin/seed-018.kt +0 -31
- package/packages/crucible/seeds/kotlin/seed-019.kt +0 -28
- package/packages/crucible/seeds/kotlin/seed-020.kt +0 -31
- package/packages/crucible/seeds/kotlin/seed-021.kt +0 -34
- package/packages/crucible/seeds/kotlin/seed-022.kt +0 -29
- package/packages/crucible/seeds/kotlin/seed-023.kt +0 -20
- package/packages/crucible/seeds/kotlin/seed-024.kt +0 -23
- package/packages/crucible/seeds/kotlin/seed-025.kt +0 -23
- package/packages/crucible/seeds/kotlin/seed-026.kt +0 -26
- package/packages/crucible/seeds/kotlin/seed-027.kt +0 -29
- package/packages/crucible/seeds/kotlin/seed-028.kt +0 -24
- package/packages/crucible/seeds/kotlin/seed-029.kt +0 -27
- package/packages/crucible/seeds/kotlin/seed-030.kt +0 -26
- package/packages/crucible/seeds/kotlin/seed-031.kt +0 -28
- package/packages/crucible/seeds/kotlin/seed-032.kt +0 -29
- package/packages/crucible/seeds/kotlin/seed-033.kt +0 -30
- package/packages/crucible/seeds/kotlin/seed-034.kt +0 -26
- package/packages/crucible/seeds/kotlin/seed-035.kt +0 -33
- package/packages/crucible/seeds/kotlin/seed-036.kt +0 -25
- package/packages/crucible/seeds/kotlin/seed-037.kt +0 -26
- package/packages/crucible/seeds/kotlin/seed-038.kt +0 -25
- package/packages/crucible/seeds/kotlin/seed-039.kt +0 -29
- package/packages/crucible/seeds/kotlin/seed-040.kt +0 -28
- package/packages/crucible/seeds/kotlin/seed-041.kt +0 -31
- package/packages/crucible/seeds/kotlin/seed-042.kt +0 -27
- package/packages/crucible/seeds/kotlin/seed-043.kt +0 -26
- package/packages/crucible/seeds/kotlin/seed-044.kt +0 -27
- package/packages/crucible/seeds/kotlin/seed-045.kt +0 -27
- package/packages/crucible/seeds/kotlin/seed-046.kt +0 -33
- package/packages/crucible/seeds/kotlin/seed-047.kt +0 -32
- package/packages/crucible/seeds/kotlin/seed-048.kt +0 -20
- package/packages/crucible/seeds/kotlin/seed-049.kt +0 -23
- package/packages/crucible/seeds/kotlin/seed-050.kt +0 -19
- package/packages/crucible/seeds/php/seed-001.php +0 -23
- package/packages/crucible/seeds/php/seed-002.php +0 -18
- package/packages/crucible/seeds/php/seed-003.php +0 -25
- package/packages/crucible/seeds/php/seed-004.php +0 -21
- package/packages/crucible/seeds/php/seed-005.php +0 -21
- package/packages/crucible/seeds/php/seed-006.php +0 -21
- package/packages/crucible/seeds/php/seed-007.php +0 -18
- package/packages/crucible/seeds/php/seed-008.php +0 -19
- package/packages/crucible/seeds/php/seed-009.php +0 -24
- package/packages/crucible/seeds/php/seed-010.php +0 -24
- package/packages/crucible/seeds/php/seed-011.php +0 -18
- package/packages/crucible/seeds/php/seed-012.php +0 -24
- package/packages/crucible/seeds/php/seed-013.php +0 -23
- package/packages/crucible/seeds/php/seed-014.php +0 -20
- package/packages/crucible/seeds/php/seed-015.php +0 -18
- package/packages/crucible/seeds/php/seed-016.php +0 -18
- package/packages/crucible/seeds/php/seed-017.php +0 -18
- package/packages/crucible/seeds/php/seed-018.php +0 -17
- package/packages/crucible/seeds/php/seed-019.php +0 -24
- package/packages/crucible/seeds/php/seed-020.php +0 -19
- package/packages/crucible/seeds/php/seed-021.php +0 -22
- package/packages/crucible/seeds/php/seed-022.php +0 -15
- package/packages/crucible/seeds/php/seed-023.php +0 -24
- package/packages/crucible/seeds/php/seed-024.php +0 -22
- package/packages/crucible/seeds/php/seed-025.php +0 -20
- package/packages/crucible/seeds/php/seed-026.php +0 -22
- package/packages/crucible/seeds/php/seed-027.php +0 -15
- package/packages/crucible/seeds/php/seed-028.php +0 -15
- package/packages/crucible/seeds/php/seed-029.php +0 -21
- package/packages/crucible/seeds/php/seed-030.php +0 -21
- package/packages/crucible/seeds/php/seed-031.php +0 -23
- package/packages/crucible/seeds/php/seed-032.php +0 -18
- package/packages/crucible/seeds/php/seed-033.php +0 -18
- package/packages/crucible/seeds/php/seed-034.php +0 -24
- package/packages/crucible/seeds/php/seed-035.php +0 -22
- package/packages/crucible/seeds/php/seed-036.php +0 -17
- package/packages/crucible/seeds/php/seed-037.php +0 -19
- package/packages/crucible/seeds/php/seed-038.php +0 -20
- package/packages/crucible/seeds/php/seed-039.php +0 -15
- package/packages/crucible/seeds/php/seed-040.php +0 -21
- package/packages/crucible/seeds/php/seed-041.php +0 -20
- package/packages/crucible/seeds/php/seed-042.php +0 -21
- package/packages/crucible/seeds/php/seed-043.php +0 -21
- package/packages/crucible/seeds/php/seed-044.php +0 -25
- package/packages/crucible/seeds/php/seed-045.php +0 -25
- package/packages/crucible/seeds/php/seed-046.php +0 -20
- package/packages/crucible/seeds/php/seed-047.php +0 -21
- package/packages/crucible/seeds/php/seed-048.php +0 -19
- package/packages/crucible/seeds/php/seed-049.php +0 -18
- package/packages/crucible/seeds/php/seed-050.php +0 -20
- package/packages/crucible/seeds/python/seed-001.py +0 -33
- package/packages/crucible/seeds/python/seed-002.py +0 -39
- package/packages/crucible/seeds/python/seed-003.py +0 -31
- package/packages/crucible/seeds/python/seed-004.py +0 -33
- package/packages/crucible/seeds/python/seed-005.py +0 -33
- package/packages/crucible/seeds/python/seed-006.py +0 -34
- package/packages/crucible/seeds/python/seed-007.py +0 -33
- package/packages/crucible/seeds/python/seed-008.py +0 -38
- package/packages/crucible/seeds/python/seed-009.py +0 -38
- package/packages/crucible/seeds/python/seed-010.py +0 -42
- package/packages/crucible/seeds/python/seed-011.py +0 -30
- package/packages/crucible/seeds/python/seed-012.py +0 -35
- package/packages/crucible/seeds/python/seed-013.py +0 -33
- package/packages/crucible/seeds/python/seed-014.py +0 -40
- package/packages/crucible/seeds/python/seed-015.py +0 -33
- package/packages/crucible/seeds/python/seed-016.py +0 -34
- package/packages/crucible/seeds/python/seed-017.py +0 -34
- package/packages/crucible/seeds/python/seed-018.py +0 -30
- package/packages/crucible/seeds/python/seed-019.py +0 -33
- package/packages/crucible/seeds/python/seed-020.py +0 -37
- package/packages/crucible/seeds/python/seed-021 2.py +0 -37
- package/packages/crucible/seeds/python/seed-021.py +0 -37
- package/packages/crucible/seeds/python/seed-022 2.py +0 -34
- package/packages/crucible/seeds/python/seed-022.py +0 -34
- package/packages/crucible/seeds/python/seed-023 2.py +0 -37
- package/packages/crucible/seeds/python/seed-023.py +0 -37
- package/packages/crucible/seeds/python/seed-024 2.py +0 -38
- package/packages/crucible/seeds/python/seed-024.py +0 -38
- package/packages/crucible/seeds/python/seed-025 2.py +0 -40
- package/packages/crucible/seeds/python/seed-025.py +0 -40
- package/packages/crucible/seeds/python/seed-026 2.py +0 -35
- package/packages/crucible/seeds/python/seed-026.py +0 -35
- package/packages/crucible/seeds/python/seed-027 2.py +0 -35
- package/packages/crucible/seeds/python/seed-027.py +0 -35
- package/packages/crucible/seeds/python/seed-028 2.py +0 -42
- package/packages/crucible/seeds/python/seed-028.py +0 -42
- package/packages/crucible/seeds/python/seed-029.py +0 -42
- package/packages/crucible/seeds/python/seed-030 2.py +0 -37
- package/packages/crucible/seeds/python/seed-030.py +0 -37
- package/packages/crucible/seeds/python/seed-031 2.py +0 -34
- package/packages/crucible/seeds/python/seed-031.py +0 -34
- package/packages/crucible/seeds/python/seed-032.py +0 -33
- package/packages/crucible/seeds/python/seed-033.py +0 -32
- package/packages/crucible/seeds/python/seed-034.py +0 -38
- package/packages/crucible/seeds/python/seed-035.py +0 -35
- package/packages/crucible/seeds/python/seed-036 2.py +0 -33
- package/packages/crucible/seeds/python/seed-036.py +0 -33
- package/packages/crucible/seeds/python/seed-037 2.py +0 -41
- package/packages/crucible/seeds/python/seed-037.py +0 -41
- package/packages/crucible/seeds/python/seed-038 2.py +0 -33
- package/packages/crucible/seeds/python/seed-038.py +0 -33
- package/packages/crucible/seeds/python/seed-039 2.py +0 -39
- package/packages/crucible/seeds/python/seed-039.py +0 -39
- package/packages/crucible/seeds/python/seed-040 2.py +0 -39
- package/packages/crucible/seeds/python/seed-040.py +0 -39
- package/packages/crucible/seeds/python/seed-041 2.py +0 -37
- package/packages/crucible/seeds/python/seed-041.py +0 -37
- package/packages/crucible/seeds/python/seed-042 2.py +0 -38
- package/packages/crucible/seeds/python/seed-042.py +0 -38
- package/packages/crucible/seeds/python/seed-043 2.py +0 -32
- package/packages/crucible/seeds/python/seed-043.py +0 -32
- package/packages/crucible/seeds/python/seed-044 2.py +0 -38
- package/packages/crucible/seeds/python/seed-044.py +0 -38
- package/packages/crucible/seeds/python/seed-045 2.py +0 -36
- package/packages/crucible/seeds/python/seed-045.py +0 -36
- package/packages/crucible/seeds/python/seed-046 2.py +0 -33
- package/packages/crucible/seeds/python/seed-046.py +0 -33
- package/packages/crucible/seeds/python/seed-047 2.py +0 -44
- package/packages/crucible/seeds/python/seed-047.py +0 -44
- package/packages/crucible/seeds/python/seed-048 2.py +0 -35
- package/packages/crucible/seeds/python/seed-048.py +0 -35
- package/packages/crucible/seeds/python/seed-049 2.py +0 -39
- package/packages/crucible/seeds/python/seed-049.py +0 -39
- package/packages/crucible/seeds/python/seed-050 2.py +0 -39
- package/packages/crucible/seeds/python/seed-050.py +0 -39
- package/packages/crucible/seeds/python/seed-051 2.py +0 -38
- package/packages/crucible/seeds/python/seed-051.py +0 -38
- package/packages/crucible/seeds/python/seed-052 2.py +0 -41
- package/packages/crucible/seeds/python/seed-052.py +0 -41
- package/packages/crucible/seeds/ruby/seed-001 2.rb +0 -15
- package/packages/crucible/seeds/ruby/seed-001.rb +0 -15
- package/packages/crucible/seeds/ruby/seed-002 2.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-002.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-003 2.rb +0 -25
- package/packages/crucible/seeds/ruby/seed-003.rb +0 -25
- package/packages/crucible/seeds/ruby/seed-004 2.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-004.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-005 2.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-005.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-006 2.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-006.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-007 2.rb +0 -16
- package/packages/crucible/seeds/ruby/seed-007.rb +0 -16
- package/packages/crucible/seeds/ruby/seed-008 2.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-008.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-009 2.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-009.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-010 2.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-010.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-011 2.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-011.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-012 2.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-012.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-013 2.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-013.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-014 2.rb +0 -16
- package/packages/crucible/seeds/ruby/seed-014.rb +0 -16
- package/packages/crucible/seeds/ruby/seed-015 2.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-015.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-016 2.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-016.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-017 2.rb +0 -25
- package/packages/crucible/seeds/ruby/seed-017.rb +0 -25
- package/packages/crucible/seeds/ruby/seed-018 2.rb +0 -23
- package/packages/crucible/seeds/ruby/seed-018.rb +0 -23
- package/packages/crucible/seeds/ruby/seed-019 2.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-019.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-020 2.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-020.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-021 2.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-021.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-022 2.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-022.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-023 2.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-023.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-024 2.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-024.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-025 2.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-025.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-026 2.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-026.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-027 2.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-027.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-028 2.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-028.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-029 2.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-029.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-030 2.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-030.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-031 2.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-031.rb +0 -17
- package/packages/crucible/seeds/ruby/seed-032 2.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-032.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-033 2.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-033.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-034 2.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-034.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-035 2.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-035.rb +0 -19
- package/packages/crucible/seeds/ruby/seed-036 2.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-036.rb +0 -18
- package/packages/crucible/seeds/ruby/seed-037 2.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-037.rb +0 -21
- package/packages/crucible/seeds/ruby/seed-038 2.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-038.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-039 2.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-039.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-040 2.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-040.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-041 2.rb +0 -23
- package/packages/crucible/seeds/ruby/seed-041.rb +0 -23
- package/packages/crucible/seeds/ruby/seed-042 2.rb +0 -25
- package/packages/crucible/seeds/ruby/seed-042.rb +0 -25
- package/packages/crucible/seeds/ruby/seed-043 2.rb +0 -23
- package/packages/crucible/seeds/ruby/seed-043.rb +0 -23
- package/packages/crucible/seeds/ruby/seed-044 2.rb +0 -16
- package/packages/crucible/seeds/ruby/seed-044.rb +0 -16
- package/packages/crucible/seeds/ruby/seed-045 2.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-045.rb +0 -22
- package/packages/crucible/seeds/ruby/seed-046 2.rb +0 -27
- package/packages/crucible/seeds/ruby/seed-046.rb +0 -27
- package/packages/crucible/seeds/ruby/seed-047 2.rb +0 -26
- package/packages/crucible/seeds/ruby/seed-047.rb +0 -26
- package/packages/crucible/seeds/ruby/seed-048 2.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-048.rb +0 -24
- package/packages/crucible/seeds/ruby/seed-049 2.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-049.rb +0 -20
- package/packages/crucible/seeds/ruby/seed-050 2.rb +0 -27
- package/packages/crucible/seeds/ruby/seed-050.rb +0 -27
- package/packages/crucible/seeds/rust/seed-001 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-001.rs +0 -25
- package/packages/crucible/seeds/rust/seed-002 2.rs +0 -20
- package/packages/crucible/seeds/rust/seed-002.rs +0 -20
- package/packages/crucible/seeds/rust/seed-003 2.rs +0 -23
- package/packages/crucible/seeds/rust/seed-003.rs +0 -23
- package/packages/crucible/seeds/rust/seed-004 2.rs +0 -21
- package/packages/crucible/seeds/rust/seed-004.rs +0 -21
- package/packages/crucible/seeds/rust/seed-005 2.rs +0 -21
- package/packages/crucible/seeds/rust/seed-005.rs +0 -21
- package/packages/crucible/seeds/rust/seed-006 2.rs +0 -24
- package/packages/crucible/seeds/rust/seed-006.rs +0 -24
- package/packages/crucible/seeds/rust/seed-007 2.rs +0 -20
- package/packages/crucible/seeds/rust/seed-007.rs +0 -20
- package/packages/crucible/seeds/rust/seed-008 2.rs +0 -19
- package/packages/crucible/seeds/rust/seed-008.rs +0 -19
- package/packages/crucible/seeds/rust/seed-009 2.rs +0 -28
- package/packages/crucible/seeds/rust/seed-009.rs +0 -28
- package/packages/crucible/seeds/rust/seed-010 2.rs +0 -28
- package/packages/crucible/seeds/rust/seed-010.rs +0 -28
- package/packages/crucible/seeds/rust/seed-011 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-011.rs +0 -25
- package/packages/crucible/seeds/rust/seed-012 2.rs +0 -31
- package/packages/crucible/seeds/rust/seed-012.rs +0 -31
- package/packages/crucible/seeds/rust/seed-013 2.rs +0 -27
- package/packages/crucible/seeds/rust/seed-013.rs +0 -27
- package/packages/crucible/seeds/rust/seed-014 2.rs +0 -30
- package/packages/crucible/seeds/rust/seed-014.rs +0 -30
- package/packages/crucible/seeds/rust/seed-015 2.rs +0 -33
- package/packages/crucible/seeds/rust/seed-015.rs +0 -33
- package/packages/crucible/seeds/rust/seed-016 2.rs +0 -22
- package/packages/crucible/seeds/rust/seed-016.rs +0 -22
- package/packages/crucible/seeds/rust/seed-017 2.rs +0 -28
- package/packages/crucible/seeds/rust/seed-017.rs +0 -28
- package/packages/crucible/seeds/rust/seed-018 2.rs +0 -21
- package/packages/crucible/seeds/rust/seed-018.rs +0 -21
- package/packages/crucible/seeds/rust/seed-019 2.rs +0 -36
- package/packages/crucible/seeds/rust/seed-019.rs +0 -36
- package/packages/crucible/seeds/rust/seed-020 2.rs +0 -27
- package/packages/crucible/seeds/rust/seed-020.rs +0 -27
- package/packages/crucible/seeds/rust/seed-021 2.rs +0 -26
- package/packages/crucible/seeds/rust/seed-021.rs +0 -26
- package/packages/crucible/seeds/rust/seed-022 2.rs +0 -23
- package/packages/crucible/seeds/rust/seed-022.rs +0 -23
- package/packages/crucible/seeds/rust/seed-023 2.rs +0 -22
- package/packages/crucible/seeds/rust/seed-023.rs +0 -22
- package/packages/crucible/seeds/rust/seed-024 2.rs +0 -24
- package/packages/crucible/seeds/rust/seed-024.rs +0 -24
- package/packages/crucible/seeds/rust/seed-025 2.rs +0 -29
- package/packages/crucible/seeds/rust/seed-025.rs +0 -29
- package/packages/crucible/seeds/rust/seed-026 2.rs +0 -23
- package/packages/crucible/seeds/rust/seed-026.rs +0 -23
- package/packages/crucible/seeds/rust/seed-027 2.rs +0 -24
- package/packages/crucible/seeds/rust/seed-027.rs +0 -24
- package/packages/crucible/seeds/rust/seed-028 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-028.rs +0 -25
- package/packages/crucible/seeds/rust/seed-029 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-029.rs +0 -25
- package/packages/crucible/seeds/rust/seed-030 2.rs +0 -30
- package/packages/crucible/seeds/rust/seed-030.rs +0 -30
- package/packages/crucible/seeds/rust/seed-031 2.rs +0 -22
- package/packages/crucible/seeds/rust/seed-031.rs +0 -22
- package/packages/crucible/seeds/rust/seed-032 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-032.rs +0 -25
- package/packages/crucible/seeds/rust/seed-033 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-033.rs +0 -25
- package/packages/crucible/seeds/rust/seed-034 2.rs +0 -20
- package/packages/crucible/seeds/rust/seed-034.rs +0 -20
- package/packages/crucible/seeds/rust/seed-035 2.rs +0 -28
- package/packages/crucible/seeds/rust/seed-035.rs +0 -28
- package/packages/crucible/seeds/rust/seed-036 2.rs +0 -26
- package/packages/crucible/seeds/rust/seed-036.rs +0 -26
- package/packages/crucible/seeds/rust/seed-037 2.rs +0 -31
- package/packages/crucible/seeds/rust/seed-037.rs +0 -31
- package/packages/crucible/seeds/rust/seed-038 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-038.rs +0 -25
- package/packages/crucible/seeds/rust/seed-039 2.rs +0 -28
- package/packages/crucible/seeds/rust/seed-039.rs +0 -28
- package/packages/crucible/seeds/rust/seed-040 2.rs +0 -27
- package/packages/crucible/seeds/rust/seed-040.rs +0 -27
- package/packages/crucible/seeds/rust/seed-041 2.rs +0 -32
- package/packages/crucible/seeds/rust/seed-041.rs +0 -32
- package/packages/crucible/seeds/rust/seed-042 2.rs +0 -27
- package/packages/crucible/seeds/rust/seed-042.rs +0 -27
- package/packages/crucible/seeds/rust/seed-043 2.rs +0 -29
- package/packages/crucible/seeds/rust/seed-043.rs +0 -29
- package/packages/crucible/seeds/rust/seed-044 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-044.rs +0 -25
- package/packages/crucible/seeds/rust/seed-045 2.rs +0 -28
- package/packages/crucible/seeds/rust/seed-045.rs +0 -28
- package/packages/crucible/seeds/rust/seed-046 2.rs +0 -25
- package/packages/crucible/seeds/rust/seed-046.rs +0 -25
- package/packages/crucible/seeds/rust/seed-047 2.rs +0 -34
- package/packages/crucible/seeds/rust/seed-047.rs +0 -34
- package/packages/crucible/seeds/rust/seed-048 2.rs +0 -21
- package/packages/crucible/seeds/rust/seed-048.rs +0 -21
- package/packages/crucible/seeds/rust/seed-049 2.rs +0 -26
- package/packages/crucible/seeds/rust/seed-049.rs +0 -26
- package/packages/crucible/seeds/rust/seed-050 2.rs +0 -23
- package/packages/crucible/seeds/rust/seed-050.rs +0 -23
- package/packages/crucible/seeds/ts/seed-001 2.ts +0 -32
- package/packages/crucible/seeds/ts/seed-001.ts +0 -32
- package/packages/crucible/seeds/ts/seed-002 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-002.ts +0 -34
- package/packages/crucible/seeds/ts/seed-003 2.ts +0 -28
- package/packages/crucible/seeds/ts/seed-003.ts +0 -28
- package/packages/crucible/seeds/ts/seed-004 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-004.ts +0 -34
- package/packages/crucible/seeds/ts/seed-005 2.ts +0 -32
- package/packages/crucible/seeds/ts/seed-005.ts +0 -32
- package/packages/crucible/seeds/ts/seed-006 2.ts +0 -31
- package/packages/crucible/seeds/ts/seed-006.ts +0 -31
- package/packages/crucible/seeds/ts/seed-007 2.ts +0 -28
- package/packages/crucible/seeds/ts/seed-007.ts +0 -28
- package/packages/crucible/seeds/ts/seed-008 2.ts +0 -40
- package/packages/crucible/seeds/ts/seed-008.ts +0 -40
- package/packages/crucible/seeds/ts/seed-009 2.ts +0 -31
- package/packages/crucible/seeds/ts/seed-009.ts +0 -31
- package/packages/crucible/seeds/ts/seed-010 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-010.ts +0 -33
- package/packages/crucible/seeds/ts/seed-011 2.ts +0 -29
- package/packages/crucible/seeds/ts/seed-011.ts +0 -29
- package/packages/crucible/seeds/ts/seed-012 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-012.ts +0 -34
- package/packages/crucible/seeds/ts/seed-013 2.ts +0 -31
- package/packages/crucible/seeds/ts/seed-013.ts +0 -31
- package/packages/crucible/seeds/ts/seed-014 2.ts +0 -36
- package/packages/crucible/seeds/ts/seed-014.ts +0 -36
- package/packages/crucible/seeds/ts/seed-015 2.ts +0 -31
- package/packages/crucible/seeds/ts/seed-015.ts +0 -31
- package/packages/crucible/seeds/ts/seed-016 2.ts +0 -37
- package/packages/crucible/seeds/ts/seed-016.ts +0 -37
- package/packages/crucible/seeds/ts/seed-017 2.ts +0 -44
- package/packages/crucible/seeds/ts/seed-017.ts +0 -44
- package/packages/crucible/seeds/ts/seed-018 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-018.ts +0 -33
- package/packages/crucible/seeds/ts/seed-019 2.ts +0 -32
- package/packages/crucible/seeds/ts/seed-019.ts +0 -32
- package/packages/crucible/seeds/ts/seed-020 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-020.ts +0 -33
- package/packages/crucible/seeds/ts/seed-021 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-021.ts +0 -33
- package/packages/crucible/seeds/ts/seed-022 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-022.ts +0 -34
- package/packages/crucible/seeds/ts/seed-023 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-023.ts +0 -33
- package/packages/crucible/seeds/ts/seed-024 2.ts +0 -35
- package/packages/crucible/seeds/ts/seed-024.ts +0 -35
- package/packages/crucible/seeds/ts/seed-025 2.ts +0 -29
- package/packages/crucible/seeds/ts/seed-025.ts +0 -29
- package/packages/crucible/seeds/ts/seed-026 2.ts +0 -36
- package/packages/crucible/seeds/ts/seed-026.ts +0 -36
- package/packages/crucible/seeds/ts/seed-027 2.ts +0 -30
- package/packages/crucible/seeds/ts/seed-027.ts +0 -30
- package/packages/crucible/seeds/ts/seed-028 2.ts +0 -32
- package/packages/crucible/seeds/ts/seed-028.ts +0 -32
- package/packages/crucible/seeds/ts/seed-029 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-029.ts +0 -34
- package/packages/crucible/seeds/ts/seed-030 2.ts +0 -37
- package/packages/crucible/seeds/ts/seed-030.ts +0 -37
- package/packages/crucible/seeds/ts/seed-031 2.ts +0 -31
- package/packages/crucible/seeds/ts/seed-031.ts +0 -31
- package/packages/crucible/seeds/ts/seed-032 2.ts +0 -32
- package/packages/crucible/seeds/ts/seed-032.ts +0 -32
- package/packages/crucible/seeds/ts/seed-033 2.ts +0 -32
- package/packages/crucible/seeds/ts/seed-033.ts +0 -32
- package/packages/crucible/seeds/ts/seed-034 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-034.ts +0 -34
- package/packages/crucible/seeds/ts/seed-035 2.ts +0 -29
- package/packages/crucible/seeds/ts/seed-035.ts +0 -29
- package/packages/crucible/seeds/ts/seed-036 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-036.ts +0 -34
- package/packages/crucible/seeds/ts/seed-037 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-037.ts +0 -33
- package/packages/crucible/seeds/ts/seed-038 2.ts +0 -29
- package/packages/crucible/seeds/ts/seed-038.ts +0 -29
- package/packages/crucible/seeds/ts/seed-039 2.ts +0 -35
- package/packages/crucible/seeds/ts/seed-039.ts +0 -35
- package/packages/crucible/seeds/ts/seed-040 2.ts +0 -31
- package/packages/crucible/seeds/ts/seed-040.ts +0 -31
- package/packages/crucible/seeds/ts/seed-041 2.ts +0 -29
- package/packages/crucible/seeds/ts/seed-041.ts +0 -29
- package/packages/crucible/seeds/ts/seed-042 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-042.ts +0 -33
- package/packages/crucible/seeds/ts/seed-043 2.ts +0 -32
- package/packages/crucible/seeds/ts/seed-043.ts +0 -32
- package/packages/crucible/seeds/ts/seed-044 2.ts +0 -36
- package/packages/crucible/seeds/ts/seed-044.ts +0 -36
- package/packages/crucible/seeds/ts/seed-045 2.ts +0 -39
- package/packages/crucible/seeds/ts/seed-045.ts +0 -39
- package/packages/crucible/seeds/ts/seed-046 2.ts +0 -41
- package/packages/crucible/seeds/ts/seed-046.ts +0 -41
- package/packages/crucible/seeds/ts/seed-047 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-047.ts +0 -33
- package/packages/crucible/seeds/ts/seed-048 2.ts +0 -33
- package/packages/crucible/seeds/ts/seed-048.ts +0 -33
- package/packages/crucible/seeds/ts/seed-049 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-049.ts +0 -34
- package/packages/crucible/seeds/ts/seed-050 2.ts +0 -41
- package/packages/crucible/seeds/ts/seed-050.ts +0 -41
- package/packages/crucible/seeds/ts/seed-051 2.ts +0 -34
- package/packages/crucible/seeds/ts/seed-051.ts +0 -34
- package/packages/crucible/seeds/ts/seed-052 2.ts +0 -36
- package/packages/crucible/seeds/ts/seed-052.ts +0 -36
- package/packages/scanner/alert-manager.js +0 -1
- package/packages/scanner/ast-analyzer.js +0 -1
- package/packages/scanner/cfg-analyzer.js +0 -1
- package/packages/scanner/code-scanner.js +0 -1
- package/packages/scanner/file-collector.js +0 -1
- package/packages/scanner/file-watcher.js +0 -1
- package/packages/scanner/ghost-code-detector.js +0 -1
- package/packages/scanner/hallucination-detector.js +0 -1
- package/packages/scanner/health-checker.js +0 -1
- package/packages/scanner/investor-report.js +0 -1
- package/packages/scanner/master-health-checker.js +0 -1
- package/packages/scanner/monitor-store.js +0 -1
- package/packages/scanner/python_ast_helper.py +0 -426
- package/packages/scanner/secret-scanner.js +0 -1
- package/packages/scanner/sentinel-core.js +0 -1
- package/packages/scanner/support-bot.js +0 -1
- package/packages/scanner/support-knowledge.js +0 -1
- package/packages/scanner/taint-tracker.js +0 -1
- /package/{packages → dist/packages}/crucible/badge-generator.js +0 -0
- /package/{packages → dist/packages}/crucible/banner.js +0 -0
- /package/{packages → dist/packages}/crucible/ci-integration.js +0 -0
- /package/{packages → dist/packages}/crucible/golden-master.js +0 -0
- /package/{packages → dist/packages}/crucible/index.js +0 -0
- /package/{packages → dist/packages}/crucible/kenny-mode.js +0 -0
- /package/{packages → dist/packages}/crucible/leaderboard.js +0 -0
- /package/{packages → dist/packages}/crucible/mutation-engine.js +0 -0
- /package/{packages → dist/packages}/crucible/pattern-learner.js +0 -0
- /package/{packages → dist/packages}/crucible/rule-loader.js +0 -0
- /package/{packages → dist/packages}/crucible/seeding-engine.js +0 -0
- /package/{packages → dist/packages}/crucible/self-attack.js +0 -0
- /package/{packages → dist/packages}/scanner/ai-confidence-scorer.js +0 -0
- /package/{packages → dist/packages}/scanner/baseline-manager.js +0 -0
- /package/{packages → dist/packages}/scanner/codebase-passport.js +0 -0
- /package/{packages → dist/packages}/scanner/copy-paste-detector.js +0 -0
- /package/{packages → dist/packages}/scanner/dependency-graph.js +0 -0
- /package/{packages → dist/packages}/scanner/drift-detector.js +0 -0
- /package/{packages → dist/packages}/scanner/executive-report.js +0 -0
- /package/{packages → dist/packages}/scanner/export-verifier.js +0 -0
- /package/{packages → dist/packages}/scanner/feedback-client.js +0 -0
- /package/{packages → dist/packages}/scanner/go-ast-analyzer.js +0 -0
- /package/{packages → dist/packages}/scanner/html-report.js +0 -0
- /package/{packages → dist/packages}/scanner/index.js +0 -0
- /package/{packages → dist/packages}/scanner/license-manager.js +0 -0
- /package/{packages → dist/packages}/scanner/monitor-notifier.js +0 -0
- /package/{packages → dist/packages}/scanner/monitor-service.js +0 -0
- /package/{packages → dist/packages}/scanner/pre-commit-gate.js +0 -0
- /package/{packages → dist/packages}/scanner/python-ast-analyzer.js +0 -0
- /package/{packages → dist/packages}/scanner/read-file.js +0 -0
- /package/{packages → dist/packages}/scanner/scan-diff.js +0 -0
- /package/{packages → dist/packages}/scanner/scan-runner.js +0 -0
- /package/{packages → dist/packages}/scanner/sentinel-knowledge.js +0 -0
- /package/{packages → dist/packages}/scanner/slack-notifier.js +0 -0
- /package/{packages → dist/packages}/scanner/tech-debt-analyzer.js +0 -0
- /package/{packages → dist/packages}/scanner/tech-debt-cost.js +0 -0
- /package/{packages → dist/packages}/scanner/widget-generator.js +0 -0
|
@@ -1,414 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"timestamp": "2026-07-01T11:20:04.329Z",
|
|
4
|
-
"hash": "8752892137ff7720",
|
|
5
|
-
"count": 50,
|
|
6
|
-
"meta": {
|
|
7
|
-
"score": 100,
|
|
8
|
-
"level": "gentle",
|
|
9
|
-
"seeds": 50,
|
|
10
|
-
"duration": 281
|
|
11
|
-
},
|
|
12
|
-
"findings": [
|
|
13
|
-
{
|
|
14
|
-
"seedId": "csharp/seed-009.cs",
|
|
15
|
-
"category": "sql_injection",
|
|
16
|
-
"severity": "critical",
|
|
17
|
-
"language": "csharp",
|
|
18
|
-
"detected": true,
|
|
19
|
-
"label": "SQL injection via string concatenation in SqlCommand"
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"seedId": "csharp/seed-033.cs",
|
|
23
|
-
"category": "path_traversal",
|
|
24
|
-
"severity": "high",
|
|
25
|
-
"language": "csharp",
|
|
26
|
-
"detected": true,
|
|
27
|
-
"label": "Path traversal in file write with user-supplied report name enabling overwrite of arbitrary files"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"seedId": "csharp/seed-034.cs",
|
|
31
|
-
"category": "insecure_crypto",
|
|
32
|
-
"severity": "high",
|
|
33
|
-
"language": "csharp",
|
|
34
|
-
"detected": true,
|
|
35
|
-
"label": "MD5 used for password hashing via MD5.Create()"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"seedId": "csharp/seed-037.cs",
|
|
39
|
-
"category": "insecure_crypto",
|
|
40
|
-
"severity": "high",
|
|
41
|
-
"language": "csharp",
|
|
42
|
-
"detected": true,
|
|
43
|
-
"label": "SHA1 used for HMAC signing instead of SHA256 or higher"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"seedId": "csharp/seed-042.cs",
|
|
47
|
-
"category": "deserialization",
|
|
48
|
-
"severity": "critical",
|
|
49
|
-
"language": "csharp",
|
|
50
|
-
"detected": true,
|
|
51
|
-
"label": "Unsafe deserialization via DataContractSerializer reading from request body"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"seedId": "csharp/seed-045.cs",
|
|
55
|
-
"category": "ssrf",
|
|
56
|
-
"severity": "high",
|
|
57
|
-
"language": "csharp",
|
|
58
|
-
"detected": true,
|
|
59
|
-
"label": "SSRF via HttpClient.GetAsync with user-controlled endpoint URL"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"seedId": "csharp/seed-048.cs",
|
|
63
|
-
"category": "xxe",
|
|
64
|
-
"severity": "critical",
|
|
65
|
-
"language": "csharp",
|
|
66
|
-
"detected": true,
|
|
67
|
-
"label": "XXE via XmlReader without secure settings (DtdProcessing.Parse enabled)"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"seedId": "go/seed-019.go",
|
|
71
|
-
"category": "xss",
|
|
72
|
-
"severity": "high",
|
|
73
|
-
"language": "go",
|
|
74
|
-
"detected": true,
|
|
75
|
-
"label": "XSS via w.Write injecting user input into inline JavaScript variable"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"seedId": "go/seed-029.go",
|
|
79
|
-
"category": "path_traversal",
|
|
80
|
-
"severity": "high",
|
|
81
|
-
"language": "go",
|
|
82
|
-
"detected": true,
|
|
83
|
-
"label": "Path traversal via os.Open with user-supplied filename concatenated to base path"
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"seedId": "go/seed-034.go",
|
|
87
|
-
"category": "insecure_crypto",
|
|
88
|
-
"severity": "high",
|
|
89
|
-
"language": "go",
|
|
90
|
-
"detected": true,
|
|
91
|
-
"label": "MD5 used for password hashing via crypto/md5"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"seedId": "go/seed-036.go",
|
|
95
|
-
"category": "insecure_crypto",
|
|
96
|
-
"severity": "high",
|
|
97
|
-
"language": "go",
|
|
98
|
-
"detected": true,
|
|
99
|
-
"label": "SHA1 used for HMAC signing and MD5 for file integrity verification"
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"seedId": "go/seed-042.go",
|
|
103
|
-
"category": "open_redirect",
|
|
104
|
-
"severity": "medium",
|
|
105
|
-
"language": "go",
|
|
106
|
-
"detected": true,
|
|
107
|
-
"label": "Open redirect via http.Redirect using user-supplied return URL after password reset"
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"seedId": "go/seed-050.go",
|
|
111
|
-
"category": "open_redirect",
|
|
112
|
-
"severity": "medium",
|
|
113
|
-
"language": "go",
|
|
114
|
-
"detected": true,
|
|
115
|
-
"label": "Open redirect via http.Redirect with Referer header used as redirect destination"
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"seedId": "java/seed-009.java",
|
|
119
|
-
"category": "sql_injection",
|
|
120
|
-
"severity": "critical",
|
|
121
|
-
"language": "java",
|
|
122
|
-
"detected": true,
|
|
123
|
-
"label": "SQL injection via string concatenation in executeQuery"
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
"seedId": "java/seed-034.java",
|
|
127
|
-
"category": "insecure_crypto",
|
|
128
|
-
"severity": "high",
|
|
129
|
-
"language": "java",
|
|
130
|
-
"detected": true,
|
|
131
|
-
"label": "MD5 used for password hashing via MessageDigest"
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
"seedId": "java/seed-042.java",
|
|
135
|
-
"category": "deserialization",
|
|
136
|
-
"severity": "critical",
|
|
137
|
-
"language": "java",
|
|
138
|
-
"detected": true,
|
|
139
|
-
"label": "Unsafe deserialization in JMS message listener via ObjectMessage"
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
"seedId": "java/seed-044.java",
|
|
143
|
-
"category": "xxe",
|
|
144
|
-
"severity": "critical",
|
|
145
|
-
"language": "java",
|
|
146
|
-
"detected": true,
|
|
147
|
-
"label": "XXE via XMLReader without disabling external entities or DOCTYPE processing"
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
"seedId": "java/seed-048.java",
|
|
151
|
-
"category": "ssrf",
|
|
152
|
-
"severity": "high",
|
|
153
|
-
"language": "java",
|
|
154
|
-
"detected": true,
|
|
155
|
-
"label": "SSRF via URL.openConnection with user-supplied URL parameter"
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"seedId": "java/seed-049.java",
|
|
159
|
-
"category": "ssrf",
|
|
160
|
-
"severity": "high",
|
|
161
|
-
"language": "java",
|
|
162
|
-
"detected": true,
|
|
163
|
-
"label": "SSRF via URL.openStream with user-controlled webhook URL"
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"seedId": "js/seed-014.js",
|
|
167
|
-
"category": "sql_injection",
|
|
168
|
-
"severity": "critical",
|
|
169
|
-
"language": "javascript",
|
|
170
|
-
"detected": true,
|
|
171
|
-
"label": "SQL injection via Sequelize literal() with user input"
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
"seedId": "js/seed-015.js",
|
|
175
|
-
"category": "sql_injection",
|
|
176
|
-
"severity": "critical",
|
|
177
|
-
"language": "javascript",
|
|
178
|
-
"detected": true,
|
|
179
|
-
"label": "SQL injection via bulk IN clause construction with user-supplied IDs"
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"seedId": "js/seed-026.js",
|
|
183
|
-
"category": "command_injection",
|
|
184
|
-
"severity": "high",
|
|
185
|
-
"language": "javascript",
|
|
186
|
-
"detected": true,
|
|
187
|
-
"label": "command injection via child_process.exec in scheduled job"
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"seedId": "js/seed-030.js",
|
|
191
|
-
"category": "path_traversal",
|
|
192
|
-
"severity": "high",
|
|
193
|
-
"language": "javascript",
|
|
194
|
-
"detected": true,
|
|
195
|
-
"label": "path traversal via user-controlled directory in readdir and readFileSync"
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
"seedId": "js/seed-044.js",
|
|
199
|
-
"category": "eval_abuse",
|
|
200
|
-
"severity": "critical",
|
|
201
|
-
"language": "javascript",
|
|
202
|
-
"detected": true,
|
|
203
|
-
"label": "eval() called with user-controlled expression string"
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
"seedId": "js/seed-046.js",
|
|
207
|
-
"category": "eval_abuse",
|
|
208
|
-
"severity": "high",
|
|
209
|
-
"language": "javascript",
|
|
210
|
-
"detected": true,
|
|
211
|
-
"label": "eval() used in JSON reviver to execute serialized function strings"
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
"seedId": "js/seed-047.js",
|
|
215
|
-
"category": "eval_abuse",
|
|
216
|
-
"severity": "high",
|
|
217
|
-
"language": "javascript",
|
|
218
|
-
"detected": true,
|
|
219
|
-
"label": "eval() inside setTimeout and setInterval with user-controlled string"
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
"seedId": "js/seed-052.js",
|
|
223
|
-
"category": "ssrf",
|
|
224
|
-
"severity": "high",
|
|
225
|
-
"language": "javascript",
|
|
226
|
-
"detected": true,
|
|
227
|
-
"label": "SSRF via got/superagent with redirect following and user-controlled URL"
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
"seedId": "kotlin/seed-019.kt",
|
|
231
|
-
"category": "xss",
|
|
232
|
-
"severity": "medium",
|
|
233
|
-
"language": "kotlin",
|
|
234
|
-
"detected": true,
|
|
235
|
-
"label": "WebView evaluateJavascript with unsanitized user string"
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"seedId": "kotlin/seed-032.kt",
|
|
239
|
-
"category": "path_traversal",
|
|
240
|
-
"severity": "high",
|
|
241
|
-
"language": "kotlin",
|
|
242
|
-
"detected": true,
|
|
243
|
-
"label": "Download path constructed from user-controlled filename without sanitization"
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
"seedId": "kotlin/seed-038.kt",
|
|
247
|
-
"category": "insecure_crypto",
|
|
248
|
-
"severity": "medium",
|
|
249
|
-
"language": "kotlin",
|
|
250
|
-
"detected": true,
|
|
251
|
-
"label": "SHA-1 used for certificate pinning and signature verification"
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
"seedId": "php/seed-003.php",
|
|
255
|
-
"category": "hardcoded_secret",
|
|
256
|
-
"severity": "critical",
|
|
257
|
-
"language": "php",
|
|
258
|
-
"detected": true,
|
|
259
|
-
"label": "Hardcoded AWS credentials and S3 configuration"
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
"seedId": "php/seed-017.php",
|
|
263
|
-
"category": "xss",
|
|
264
|
-
"severity": "high",
|
|
265
|
-
"language": "php",
|
|
266
|
-
"detected": true,
|
|
267
|
-
"label": "$_POST values echoed directly into HTML form — stored XSS vector"
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
"seedId": "php/seed-018.php",
|
|
271
|
-
"category": "xss",
|
|
272
|
-
"severity": "high",
|
|
273
|
-
"language": "php",
|
|
274
|
-
"detected": true,
|
|
275
|
-
"label": "print_r or var_dump of user input rendered in HTML context"
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
"seedId": "php/seed-029.php",
|
|
279
|
-
"category": "path_traversal",
|
|
280
|
-
"severity": "critical",
|
|
281
|
-
"language": "php",
|
|
282
|
-
"detected": true,
|
|
283
|
-
"label": "include() with user-supplied path — local file inclusion / RFI"
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
"seedId": "python/seed-001.py",
|
|
287
|
-
"category": "hardcoded_secret",
|
|
288
|
-
"severity": "critical",
|
|
289
|
-
"language": "python",
|
|
290
|
-
"detected": true,
|
|
291
|
-
"label": "hardcoded AWS access key and secret key"
|
|
292
|
-
},
|
|
293
|
-
{
|
|
294
|
-
"seedId": "python/seed-029.py",
|
|
295
|
-
"category": "path_traversal",
|
|
296
|
-
"severity": "high",
|
|
297
|
-
"language": "python",
|
|
298
|
-
"detected": true,
|
|
299
|
-
"label": "path traversal via open() with unvalidated user-supplied file path"
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
"seedId": "python/seed-036.py",
|
|
303
|
-
"category": "insecure_crypto",
|
|
304
|
-
"severity": "high",
|
|
305
|
-
"language": "python",
|
|
306
|
-
"detected": true,
|
|
307
|
-
"label": "DES cipher usage and AES-ECB mode with static key"
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
"seedId": "python/seed-049.py",
|
|
311
|
-
"category": "deserialization",
|
|
312
|
-
"severity": "critical",
|
|
313
|
-
"language": "python",
|
|
314
|
-
"detected": true,
|
|
315
|
-
"label": "pickle.load used with untrusted file upload and shelve with user-controlled key"
|
|
316
|
-
},
|
|
317
|
-
{
|
|
318
|
-
"seedId": "python/seed-052.py",
|
|
319
|
-
"category": "yaml_injection",
|
|
320
|
-
"severity": "critical",
|
|
321
|
-
"language": "python",
|
|
322
|
-
"detected": true,
|
|
323
|
-
"label": "yaml.load() without safe_load — RCE via !!python/object tags in YAML"
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
"seedId": "ruby/seed-002.rb",
|
|
327
|
-
"category": "hardcoded_secret",
|
|
328
|
-
"severity": "critical",
|
|
329
|
-
"language": "ruby",
|
|
330
|
-
"detected": true,
|
|
331
|
-
"label": "Hardcoded database password in database.yml equivalent or initializer"
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
"seedId": "ruby/seed-005.rb",
|
|
335
|
-
"category": "hardcoded_secret",
|
|
336
|
-
"severity": "high",
|
|
337
|
-
"language": "ruby",
|
|
338
|
-
"detected": true,
|
|
339
|
-
"label": "Hardcoded JWT secret and admin API token"
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
"seedId": "ruby/seed-021.rb",
|
|
343
|
-
"category": "xss",
|
|
344
|
-
"severity": "high",
|
|
345
|
-
"language": "ruby",
|
|
346
|
-
"detected": true,
|
|
347
|
-
"label": "ActionMailer HTML email built with unescaped user content"
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
"seedId": "ruby/seed-028.rb",
|
|
351
|
-
"category": "command_injection",
|
|
352
|
-
"severity": "high",
|
|
353
|
-
"language": "ruby",
|
|
354
|
-
"detected": true,
|
|
355
|
-
"label": "Kernel.system called with interpolated hostname for network diagnostics"
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
"seedId": "ruby/seed-044.rb",
|
|
359
|
-
"category": "open_redirect",
|
|
360
|
-
"severity": "high",
|
|
361
|
-
"language": "ruby",
|
|
362
|
-
"detected": true,
|
|
363
|
-
"label": "redirect_to params[:url] without validation — open redirect"
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
"seedId": "rust/seed-011.rs",
|
|
367
|
-
"category": "unsafe_block",
|
|
368
|
-
"severity": "critical",
|
|
369
|
-
"language": "rust",
|
|
370
|
-
"detected": true,
|
|
371
|
-
"label": "Unsafe foreign function interface call without input validation"
|
|
372
|
-
},
|
|
373
|
-
{
|
|
374
|
-
"seedId": "rust/seed-044.rs",
|
|
375
|
-
"category": "crypto_misuse",
|
|
376
|
-
"severity": "high",
|
|
377
|
-
"language": "rust",
|
|
378
|
-
"detected": true,
|
|
379
|
-
"label": "MD5 crate used for password or data integrity hashing"
|
|
380
|
-
},
|
|
381
|
-
{
|
|
382
|
-
"seedId": "ts/seed-004.ts",
|
|
383
|
-
"category": "hardcoded_secret",
|
|
384
|
-
"severity": "critical",
|
|
385
|
-
"language": "typescript",
|
|
386
|
-
"detected": true,
|
|
387
|
-
"label": "hardcoded Stripe secret key and webhook secret in typed service"
|
|
388
|
-
},
|
|
389
|
-
{
|
|
390
|
-
"seedId": "ts/seed-032.ts",
|
|
391
|
-
"category": "path_traversal",
|
|
392
|
-
"severity": "high",
|
|
393
|
-
"language": "typescript",
|
|
394
|
-
"detected": true,
|
|
395
|
-
"label": "zip-slip path traversal via user-uploaded archive with unvalidated entry names"
|
|
396
|
-
},
|
|
397
|
-
{
|
|
398
|
-
"seedId": "ts/seed-034.ts",
|
|
399
|
-
"category": "insecure_crypto",
|
|
400
|
-
"severity": "high",
|
|
401
|
-
"language": "typescript",
|
|
402
|
-
"detected": true,
|
|
403
|
-
"label": "MD5 used for password hashing in typed auth service"
|
|
404
|
-
},
|
|
405
|
-
{
|
|
406
|
-
"seedId": "ts/seed-048.ts",
|
|
407
|
-
"category": "ssrf",
|
|
408
|
-
"severity": "high",
|
|
409
|
-
"language": "typescript",
|
|
410
|
-
"detected": true,
|
|
411
|
-
"label": "SSRF via fetch with unvalidated user-supplied URL"
|
|
412
|
-
}
|
|
413
|
-
]
|
|
414
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# The Crucible
|
|
2
|
-
|
|
3
|
-
**Thuban's adversarial testing engine.** It doesn't just scan code — it ATTACKS it.
|
|
4
|
-
|
|
5
|
-
The Crucible stress-tests both your codebase and Thuban itself, planting known-bad patterns, mutating real code, running golden master regression checks, and launching adversarial inputs at the scanner to find blind spots, regressions, and crashes.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Commands
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
thuban crucible run [path] [--level gentle|medium|hell] Full adversarial run
|
|
13
|
-
thuban crucible run [path] [--language js|py|java|...] Targeted language run
|
|
14
|
-
thuban crucible seed [path] Generate seed files only
|
|
15
|
-
thuban crucible mutate [path] Run mutation testing only
|
|
16
|
-
thuban crucible golden [path] Run golden master comparison
|
|
17
|
-
thuban crucible self-test Attack Thuban itself
|
|
18
|
-
thuban crucible kenny Run Kenny test battery
|
|
19
|
-
thuban crucible approve Bless current output as golden master
|
|
20
|
-
thuban crucible report View last Crucible HTML report
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Levels
|
|
26
|
-
|
|
27
|
-
| Level | What runs | Typical time |
|
|
28
|
-
|--------|------------------------------------------------|--------------|
|
|
29
|
-
| gentle | Basic JS/TS seeds + golden master | < 30 seconds |
|
|
30
|
-
| medium | Full seeding (all 9 languages) + mutation engine + golden master | 1–5 minutes |
|
|
31
|
-
| hell | Everything: seeding, mutation, golden master, self-attack, Kenny mode, full HTML report | As long as it takes |
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## How It Works
|
|
36
|
-
|
|
37
|
-
### 1. Seeding Engine
|
|
38
|
-
Generates 486+ syntactically-valid seed files across 9 languages — each containing a known-bad pattern (secrets, injection, deprecated APIs, memory leaks, SSRF, path traversal, etc.). Thuban is then run against these and detection rates recorded.
|
|
39
|
-
|
|
40
|
-
### 2. Mutation Engine
|
|
41
|
-
Takes real code from your project, copies it to a temp directory, and applies systematic mutations (operator flips, string corruption, comment injection, import swaps). Then checks whether Thuban still catches the issues. **Never modifies original files.**
|
|
42
|
-
|
|
43
|
-
### 3. Golden Master
|
|
44
|
-
After a run, results are saved as a golden master JSON. Subsequent runs diff against the master and report:
|
|
45
|
-
- **New detections** — Thuban found something it didn't before (good)
|
|
46
|
-
- **Lost detections** — Thuban stopped finding something (BAD regression)
|
|
47
|
-
- **Changed severity/category** — drift in how issues are classified
|
|
48
|
-
|
|
49
|
-
Run `thuban crucible approve` to bless the current output as the new baseline.
|
|
50
|
-
|
|
51
|
-
### 4. Self-Attack Mode
|
|
52
|
-
Generates adversarial inputs — 100KB single-line files, binary disguised as JS, deeply nested code, null-byte injections, BOM markers, circular symlinks — and fires them at Thuban with a 30-second timeout. Reports any crashes, hangs, or silent failures.
|
|
53
|
-
|
|
54
|
-
### 5. Kenny Mode
|
|
55
|
-
Recreates the exact test battery from the 7 CTO reports that validated Thuban v0.3.2, plus 20+ new cases. Named as an easter egg tribute. Generates an HTML report showing what was planted, found, missed, and the overall detection rate.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Golden Master Workflow
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
# First run — save as golden master
|
|
63
|
-
thuban crucible golden . && thuban crucible approve
|
|
64
|
-
|
|
65
|
-
# Later runs — compare to saved master
|
|
66
|
-
thuban crucible golden .
|
|
67
|
-
# Shows regressions if detection rate dropped
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Golden master files are stored in `packages/crucible/.golden/` and can be committed to git to share baselines with your team.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Reading the HTML Report
|
|
75
|
-
|
|
76
|
-
The Crucible generates an interactive HTML report (`thuban-crucible-report-<date>.html`) with:
|
|
77
|
-
|
|
78
|
-
- **Crucible Score (0–100)** — weighted composite of detection rate, mutation coverage, self-attack pass rate, regression penalty
|
|
79
|
-
- **Detection rate by category** — how well Thuban catches each issue type
|
|
80
|
-
- **Detection rate by language** — heatmap showing coverage gaps across all 9 languages
|
|
81
|
-
- **Mutations survived vs caught** — which mutation types evade detection
|
|
82
|
-
- **Golden master regressions** — red callouts for anything lost since last approval
|
|
83
|
-
- **Self-attack results** — pass/fail table for adversarial inputs
|
|
84
|
-
- **Kenny mode results** — planted vs found vs missed per test case
|
|
85
|
-
- **Recommendations** — auto-generated based on worst-performing areas
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Kenny Mode
|
|
90
|
-
|
|
91
|
-
Kenny Mode is named in tribute to the CTO whose 7 detailed test reports across 5 languages exposed real-world gaps in Thuban v0.3.2. It recreates every confirmed finding from those reports and runs them automatically.
|
|
92
|
-
|
|
93
|
-
New cases beyond Kenny's original battery test patterns he hadn't covered: Kotlin phantom APIs, Rust unsafe blocks, PHP base64-encoded eval, Ruby dynamic dispatch, TypeScript type erasure, SSRF in Java, Go goroutine race conditions, Python pickle deserialization, C# Process.Start injection, JS prototype pollution.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const fs=require("fs"),path=require("path"),crypto=require("crypto");function getScannerVersion(){try{return JSON.parse(fs.readFileSync(path.join(__dirname,"..","..","package.json"),"utf-8")).version||"unknown"}catch{return"unknown"}}function calculateCrucibleScore(e={}){let t=0,n=0;if(e.seedResults&&e.seedResults.total>0&&(t+=e.seedResults.detected/e.seedResults.total*100*.4,n+=.4),e.mutationResults&&e.mutationResults.total>0&&(t+=e.mutationResults.killed/e.mutationResults.total*100*.25,n+=.25),e.kennyResults&&(t+=.25*(e.kennyResults.score||0),n+=.25),e.selfAttackResults&&(t+=.1*(e.selfAttackResults.score||0),n+=.1),0===n)return 0;const s=t/n;return Math.round(Math.min(100,Math.max(0,s)))}function scoreColor(e){return e>=90?"#22c55e":e>=70?"#f59e0b":e>=50?"#f97316":"#ef4444"}function scoreLabel(e){return e>=90?"Excellent":e>=70?"Good":e>=50?"Fair":e>=30?"Poor":"Critical"}function esc(e){return String(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function generateHTML(e){const t=e.title||"Crucible Report",n=e.timestamp||(new Date).toISOString(),s=e.level||"medium",a="number"==typeof e.score?e.score:calculateCrucibleScore(e),r=scoreColor(a),o=scoreLabel(a),d=buildSeedSection(e.seedResults),i=buildMutationSection(e.mutationResults),l=buildKennySection(e.kennyResults),c=buildSelfAttackSection(e.selfAttackResults),p=buildGoldenSection(e.goldenComparison),u=buildDivergenceSection(e.divergenceStats);return`<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>${esc(t)}</title>\n <style>\n :root {\n --bg: #0f0f0f;\n --surface: #1a1a1a;\n --surface2: #242424;\n --border: #2e2e2e;\n --text: #e5e5e5;\n --text-muted: #888;\n --accent: #f97316;\n --green: #22c55e;\n --red: #ef4444;\n --amber: #f59e0b;\n --blue: #3b82f6;\n --purple: #a855f7;\n }\n * { box-sizing: border-box; margin: 0; padding: 0; }\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\n background: var(--bg);\n color: var(--text);\n line-height: 1.6;\n min-height: 100vh;\n }\n a { color: var(--accent); text-decoration: none; }\n h1, h2, h3 { font-weight: 700; }\n\n /* ── Header ── */\n .header {\n background: linear-gradient(135deg, #1a0a00 0%, #0f0f0f 60%);\n border-bottom: 1px solid var(--border);\n padding: 2rem;\n display: flex;\n align-items: center;\n gap: 2rem;\n }\n .header-logo {\n font-size: 2.5rem;\n font-weight: 900;\n background: linear-gradient(135deg, #f97316, #ef4444);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n letter-spacing: -1px;\n }\n .header-info { flex: 1; }\n .header-info h1 { font-size: 1.5rem; color: var(--text); }\n .header-meta { color: var(--text-muted); font-size: 0.85rem; margin-top: 0.25rem; }\n\n /* ── Score gauge ── */\n .score-gauge {\n text-align: center;\n min-width: 120px;\n }\n .score-circle {\n width: 100px; height: 100px;\n border-radius: 50%;\n border: 4px solid ${r};\n display: flex; flex-direction: column;\n align-items: center; justify-content: center;\n margin: 0 auto 0.5rem;\n box-shadow: 0 0 20px ${r}40;\n }\n .score-number { font-size: 2rem; font-weight: 900; color: ${r}; }\n .score-label-small { font-size: 0.7rem; color: var(--text-muted); }\n .score-grade { font-size: 0.9rem; font-weight: 700; color: ${r}; }\n\n /* ── Container ── */\n .container { max-width: 1200px; margin: 0 auto; padding: 2rem; }\n\n /* ── Summary cards ── */\n .cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 1rem;\n margin-bottom: 2rem;\n }\n .card {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 1.25rem;\n }\n .card-value { font-size: 2rem; font-weight: 900; }\n .card-label { font-size: 0.8rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; margin-top: 0.25rem; }\n .card.green .card-value { color: var(--green); }\n .card.red .card-value { color: var(--red); }\n .card.amber .card-value { color: var(--amber); }\n .card.blue .card-value { color: var(--blue); }\n .card.purple .card-value{ color: var(--purple); }\n\n /* ── Sections ── */\n .section {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 8px;\n margin-bottom: 1.5rem;\n overflow: hidden;\n }\n .section-header {\n display: flex; align-items: center; justify-content: space-between;\n padding: 1rem 1.25rem;\n border-bottom: 1px solid var(--border);\n cursor: pointer;\n user-select: none;\n }\n .section-header:hover { background: var(--surface2); }\n .section-title { font-size: 1rem; font-weight: 700; display: flex; align-items: center; gap: 0.5rem; }\n .section-badge {\n font-size: 0.75rem; font-weight: 600;\n padding: 0.2rem 0.6rem; border-radius: 999px;\n background: var(--surface2); border: 1px solid var(--border);\n }\n .section-badge.pass { background: #052e16; border-color: #16a34a; color: var(--green); }\n .section-badge.fail { background: #450a0a; border-color: #dc2626; color: var(--red); }\n .section-body { padding: 1.25rem; }\n\n /* ── Bar charts ── */\n .bar-chart { display: flex; flex-direction: column; gap: 0.5rem; }\n .bar-row { display: flex; align-items: center; gap: 0.75rem; }\n .bar-label { width: 160px; font-size: 0.85rem; text-align: right; color: var(--text-muted); flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .bar-track { flex: 1; height: 20px; background: var(--surface2); border-radius: 4px; overflow: hidden; position: relative; }\n .bar-fill { height: 100%; border-radius: 4px; transition: width 0.4s ease; display: flex; align-items: center; padding-left: 8px; font-size: 0.75rem; font-weight: 600; color: white; }\n .bar-count { font-size: 0.8rem; color: var(--text-muted); min-width: 60px; }\n\n /* ── Test table ── */\n .test-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }\n .test-table th {\n text-align: left; padding: 0.5rem 0.75rem;\n border-bottom: 1px solid var(--border);\n color: var(--text-muted); font-weight: 600;\n text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.75rem;\n }\n .test-table td { padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--border); vertical-align: top; }\n .test-table tr:last-child td { border-bottom: none; }\n .test-table tr:hover td { background: var(--surface2); }\n .pass-icon { color: var(--green); font-weight: 700; }\n .fail-icon { color: var(--red); font-weight: 700; }\n .warn-icon { color: var(--amber); font-weight: 700; }\n .badge {\n display: inline-block; font-size: 0.7rem; font-weight: 600;\n padding: 0.1rem 0.4rem; border-radius: 4px; margin: 0 0.1rem;\n }\n .badge-critical { background: #450a0a; color: #fca5a5; border: 1px solid #ef4444; }\n .badge-high { background: #431407; color: #fdba74; border: 1px solid #f97316; }\n .badge-medium { background: #422006; color: #fcd34d; border: 1px solid #f59e0b; }\n .badge-category { background: #1e1b4b; color: #a5b4fc; border: 1px solid #6366f1; }\n .badge-lang { background: #052e16; color: #86efac; border: 1px solid #22c55e; }\n\n /* ── Golden comparison ── */\n .regression { background: #450a0a; border: 1px solid var(--red); border-radius: 6px; padding: 1rem; margin-top: 1rem; }\n .improvement { background: #052e16; border: 1px solid var(--green); border-radius: 6px; padding: 1rem; margin-top: 1rem; }\n .neutral { background: var(--surface2); border: 1px solid var(--border); border-radius: 6px; padding: 1rem; margin-top: 1rem; }\n\n /* ── Collapse toggle ── */\n .chevron { transition: transform 0.2s; }\n .collapsed .chevron { transform: rotate(-90deg); }\n .collapsible-body { display: block; }\n .collapsed .collapsible-body { display: none; }\n\n /* ── Responsive ── */\n @media (max-width: 768px) {\n .header { flex-direction: column; text-align: center; }\n .bar-label { width: 100px; }\n }\n\n /* ── Footer ── */\n .footer {\n text-align: center;\n padding: 2rem;\n color: var(--text-muted);\n font-size: 0.8rem;\n border-top: 1px solid var(--border);\n }\n </style>\n</head>\n<body>\n\n<div class="header">\n <div class="header-logo">🔥 CRUCIBLE</div>\n <div class="header-info">\n <h1>${esc(t)}</h1>\n <div class="header-meta">\n Level: <strong>${esc(s)}</strong> | \n Generated: <strong>${esc(new Date(n).toLocaleString())}</strong> | \n Branch: <strong>kenny-mode</strong> | \n Scanner: <strong>v${esc(getScannerVersion())}</strong>\n </div>\n </div>\n <div class="score-gauge">\n <div class="score-circle">\n <div class="score-number">${a}</div>\n <div class="score-label-small">/ 100</div>\n </div>\n <div class="score-grade">${esc(o)}</div>\n <div class="score-label-small">Crucible Score</div>\n </div>\n</div>\n\n<div class="container">\n ${buildSummaryCards(e,a)}\n ${p}\n ${u}\n ${d}\n ${i}\n ${l}\n ${c}\n</div>\n\n<div class="footer">\n Generated by <strong>Thuban Crucible</strong> — The Fire Test for Security Scanners\n</div>\n\n<script>\n // Collapsible sections\n document.querySelectorAll('.section-header').forEach(h => {\n h.addEventListener('click', () => {\n h.closest('.section').classList.toggle('collapsed');\n });\n });\n<\/script>\n</body>\n</html>`}function buildSummaryCards(e,t){const n=e.seedResults||{},s=e.mutationResults||{},a=e.kennyResults||{},r=n.total>0?Math.round(n.detected/n.total*100):null,o=s.total>0?Math.round(s.killed/s.total*100):null,d=[];return n.total&&(d.push(`<div class="card ${r>=70?"green":"red"}">\n <div class="card-value">${r}%</div>\n <div class="card-label">Seed Detection Rate</div>\n </div>`),d.push(`<div class="card blue">\n <div class="card-value">${n.total}</div>\n <div class="card-label">Seeds Tested</div>\n </div>`)),s.total&&d.push(`<div class="card ${o>=70?"green":"amber"}">\n <div class="card-value">${o}%</div>\n <div class="card-label">Mutation Kill Rate</div>\n </div>`),void 0!==a.score&&d.push(`<div class="card ${a.score>=70?"green":"amber"}">\n <div class="card-value">${a.score}</div>\n <div class="card-label">Kenny Score</div>\n </div>`),d.push(`<div class="card purple">\n <div class="card-value">${t}</div>\n <div class="card-label">Crucible Score</div>\n </div>`),`<div class="cards">${d.join("")}</div>`}function buildSeedSection(e){if(!e)return"";const t=e.total||0,n=e.detected||0,s=e.missed||0,a=e.byLanguage||{},r=e.byCategory||{},o=Object.entries(a).sort(([,e],[,t])=>t.detected/t.total-e.detected/e.total).map(([e,t])=>{const n=t.total>0?Math.round(t.detected/t.total*100):0,s=n>=70?"#22c55e":n>=50?"#f59e0b":"#ef4444";return`<div class="bar-row">\n <div class="bar-label">${esc(e)}</div>\n <div class="bar-track">\n <div class="bar-fill" style="width:${n}%; background:${s}">${n}%</div>\n </div>\n <div class="bar-count">${t.detected}/${t.total}</div>\n </div>`}).join(""),d=Object.entries(r).sort(([,e],[,t])=>t.detected/t.total-e.detected/e.total).map(([e,t])=>{const n=t.total>0?Math.round(t.detected/t.total*100):0,s=n>=70?"#22c55e":n>=50?"#f59e0b":"#ef4444";return`<div class="bar-row">\n <div class="bar-label">${esc(e)}</div>\n <div class="bar-track">\n <div class="bar-fill" style="width:${n}%; background:${s}">${n}%</div>\n </div>\n <div class="bar-count">${t.detected}/${t.total}</div>\n </div>`}).join(""),i=0===s?'<span class="section-badge pass">All seeds detected</span>':`<span class="section-badge fail">${s} missed</span>`,l=(e.tests||[]).slice(0,200).map(e=>`<tr>\n <td><span class="${e.detected?"pass-icon":"fail-icon"}">${e.detected?"✓":"✗"}</span></td>\n <td><code>${esc(e.id)}</code></td>\n <td><span class="badge badge-lang">${esc(e.language)}</span></td>\n <td><span class="badge badge-category">${esc(e.category)}</span></td>\n <td><span class="badge badge-${esc((e.severity||"medium").toLowerCase())}">${esc(e.severity)}</span></td>\n <td style="color:var(--text-muted);font-size:0.8rem">${esc(e.expected)}</td>\n </tr>`).join("");return`\n<div class="section" id="seed-section">\n <div class="section-header">\n <div class="section-title">🌿 Seed Results <span style="color:var(--text-muted);font-weight:400;font-size:0.9rem">${n}/${t} detected</span></div>\n ${i}\n <span class="chevron">⌄</span>\n </div>\n <div class="collapsible-body section-body">\n <div style="display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:1.5rem">\n <div>\n <h3 style="margin-bottom:0.75rem;font-size:0.9rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em">By Language</h3>\n <div class="bar-chart">${o||'<div style="color:var(--text-muted)">No data</div>'}</div>\n </div>\n <div>\n <h3 style="margin-bottom:0.75rem;font-size:0.9rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em">By Category</h3>\n <div class="bar-chart">${d||'<div style="color:var(--text-muted)">No data</div>'}</div>\n </div>\n </div>\n ${l?`\n <table class="test-table">\n <thead><tr>\n <th></th><th>Seed</th><th>Lang</th><th>Category</th><th>Severity</th><th>Expected</th>\n </tr></thead>\n <tbody>${l}</tbody>\n </table>`:""}\n </div>\n</div>`}function buildMutationSection(e){if(!e)return"";const t=e.total||0,n=e.killed||0,s=e.survived||0,a=t>0?Math.round(n/t*100):0,r=a>=70?"#22c55e":a>=50?"#f59e0b":"#ef4444",o=(e.tests||[]).slice(0,100).map(e=>`<tr>\n <td><span class="${e.killed?"pass-icon":"fail-icon"}">${e.killed?"✓":"✗"}</span></td>\n <td><code>${esc(e.seedId)}</code></td>\n <td>${(e.applied||[]).map(e=>`<span class="badge badge-category">${esc(e)}</span>`).join(" ")}</td>\n <td><span class="${e.killed?"pass-icon":"fail-icon"}" style="font-size:0.85rem">${e.killed?"Killed":"Survived"}</span></td>\n </tr>`).join("");return`\n<div class="section" id="mutation-section">\n <div class="section-header">\n <div class="section-title">🧬 Mutation Kill Rate <span style="color:${r};margin-left:0.5rem">${a}%</span></div>\n <span class="section-badge ${a>=70?"pass":"fail"}">${n}/${t} killed</span>\n <span class="chevron">⌄</span>\n </div>\n <div class="collapsible-body section-body">\n <div class="bar-chart" style="margin-bottom:1rem">\n <div class="bar-row">\n <div class="bar-label">Kill Rate</div>\n <div class="bar-track">\n <div class="bar-fill" style="width:${a}%; background:${r}">${a}%</div>\n </div>\n <div class="bar-count">${n}/${t}</div>\n </div>\n <div class="bar-row">\n <div class="bar-label">Survival Rate</div>\n <div class="bar-track">\n <div class="bar-fill" style="width:${t>0?Math.round(s/t*100):0}%; background:#ef4444">${t>0?Math.round(s/t*100):0}%</div>\n </div>\n <div class="bar-count">${s}/${t}</div>\n </div>\n </div>\n ${o?`\n <table class="test-table">\n <thead><tr><th></th><th>Seed</th><th>Mutations Applied</th><th>Result</th></tr></thead>\n <tbody>${o}</tbody>\n </table>`:""}\n </div>\n</div>`}function buildKennySection(e){if(!e)return"";const t=e.score||0,n=e.total||0,s=e.passed||0,a=(e.failed,scoreColor(t)),r=Object.entries(e.batteries||{}).map(([e,t])=>{const n=t.total>0?Math.round(t.passed/t.total*100):0,s=n>=70?"#22c55e":n>=50?"#f59e0b":"#ef4444";return`<div class="bar-row">\n <div class="bar-label">${esc(e)}</div>\n <div class="bar-track">\n <div class="bar-fill" style="width:${n}%; background:${s}">${n}%</div>\n </div>\n <div class="bar-count">${t.passed}/${t.total}</div>\n </div>`}).join(""),o=(e.tests||[]).map(e=>{const t=(e.missingDetections||[]).map(e=>`<span class="badge badge-category">${esc(e)}</span>`).join(" "),n=(e.falsePositives||[]).map(e=>`<span class="badge badge-high">${esc(e)}</span>`).join(" ");return`<tr>\n <td><span class="${e.passed?"pass-icon":e.crashed||e.timedOut?"warn-icon":"fail-icon"}">${e.passed?"✓":e.crashed?"⚡":e.timedOut?"⏱":"✗"}</span></td>\n <td style="font-size:0.8rem;color:var(--text-muted)">${esc(e.id)}</td>\n <td>${esc(e.name)}</td>\n <td><span class="badge badge-lang">${esc(e.battery)}</span></td>\n <td>${t||n||'<span style="color:var(--text-muted)">—</span>'}</td>\n </tr>`}).join("");return`\n<div class="section" id="kenny-section">\n <div class="section-header">\n <div class="section-title">🔥 Kenny Mode <span style="color:${a};margin-left:0.5rem">${t}/100</span></div>\n <span class="section-badge ${t>=70?"pass":"fail"}">${s}/${n} passed</span>\n <span class="chevron">⌄</span>\n </div>\n <div class="collapsible-body section-body">\n <div class="bar-chart" style="margin-bottom:1.5rem">\n ${r||'<div style="color:var(--text-muted)">No battery data</div>'}\n </div>\n ${o?`\n <table class="test-table">\n <thead><tr><th></th><th>ID</th><th>Test</th><th>Battery</th><th>Issues</th></tr></thead>\n <tbody>${o}</tbody>\n </table>`:""}\n </div>\n</div>`}function buildSelfAttackSection(e){if(!e)return"";const t=e.score||0,n=(e.crashes||[]).length,s=(e.hangs||[]).length,a=(e.missedDetections||[]).length,r=(e.passed||[]).length,o=scoreColor(t),d=(e.crashes||[]).map(e=>`<tr>\n <td><span class="fail-icon">⚡</span></td>\n <td><code>${esc(e.payload)}</code></td>\n <td>${esc(e.description)}</td>\n <td style="color:var(--red)">${esc(e.error||"")}</td>\n </tr>`).join(""),i=(e.hangs||[]).map(e=>`<tr>\n <td><span class="warn-icon">⏱</span></td>\n <td><code>${esc(e.payload)}</code></td>\n <td>${esc(e.description)}</td>\n <td style="color:var(--amber)">Timed out after ${e.timeout}ms</td>\n </tr>`).join(""),l=(e.passed||[]).map(e=>`<tr>\n <td><span class="pass-icon">✓</span></td>\n <td><code>${esc(e.payload)}</code></td>\n <td colspan="2">${esc(e.description)}</td>\n </tr>`).join("");return`\n<div class="section" id="self-attack-section">\n <div class="section-header">\n <div class="section-title">🗡 Self-Attack <span style="color:${o};margin-left:0.5rem">${t}/100</span></div>\n <span class="section-badge ${n+s===0?"pass":"fail"}">${n} crash, ${s} hang, ${a} missed</span>\n <span class="chevron">⌄</span>\n </div>\n <div class="collapsible-body section-body">\n ${n+s+a+r>0?`\n <table class="test-table">\n <thead><tr><th></th><th>Payload</th><th>Description</th><th>Details</th></tr></thead>\n <tbody>\n ${d}\n ${i}\n ${l}\n </tbody>\n </table>`:'<div style="color:var(--text-muted)">No self-attack results</div>'}\n </div>\n</div>`}function buildGoldenSection(e){if(!e||!e.hasMaster)return"";const t=e.passed?"improvement":"regression",n=e.passed?"✓":"✗",s=(e.lostDetections||[]).map(e=>`<div style="color:var(--red);font-size:0.85rem">− ${esc(e)}</div>`).join(""),a=(e.newDetections||[]).map(e=>`<div style="color:var(--green);font-size:0.85rem">+ ${esc(e)}</div>`).join("");return`\n<div class="section" id="golden-section">\n <div class="section-header">\n <div class="section-title">🌟 Golden Master Comparison</div>\n <span class="section-badge ${e.passed?"pass":"fail"}">${e.passed?"No regressions":`${e.regressions} regression(s)`}</span>\n <span class="chevron">⌄</span>\n </div>\n <div class="collapsible-body section-body">\n <div class="${t}">\n <strong>${n} ${esc(e.summary)}</strong>\n <div style="margin-top:0.5rem;color:var(--text-muted);font-size:0.85rem">\n Golden from: ${esc(e.goldenTimestamp||"unknown")} | \n Previous score: ${null!=e.goldenScore?e.goldenScore:"N/A"}\n </div>\n </div>\n ${s?`<div style="margin-top:1rem"><strong style="color:var(--red)">Regressions (lost detections):</strong>${s}</div>`:""}\n ${a?`<div style="margin-top:1rem"><strong style="color:var(--green)">Improvements (new detections):</strong>${a}</div>`:""}\n </div>\n</div>`}function buildDivergenceSection(e){if(!e||!e.sampled)return"";const t=null!=e.agreementRate?e.agreementRate:0,n=t>=95?"#22c55e":t>=80?"#f59e0b":"#ef4444",s=(e.divergences||[]).length,a=(e.divergences||[]).map(e=>`<tr>\n <td><span class="warn-icon">⚠</span></td>\n <td><code>${esc(e.seedId)}</code></td>\n <td><span class="badge badge-lang">${esc(e.language)}</span></td>\n <td><span class="badge badge-category">${esc(e.category)}</span></td>\n <td style="font-size:0.8rem;color:var(--text-muted)">${esc(e.phase)}</td>\n <td style="font-size:0.8rem">${esc(JSON.stringify(e.heuristicCategories))}</td>\n <td style="font-size:0.8rem">${esc(JSON.stringify(e.productionCategories))}</td>\n </tr>`).join("");return`\n<div class="section" id="divergence-section">\n <div class="section-header">\n <div class="section-title">🔍 Heuristic-CLI Agreement <span style="color:${n};margin-left:0.5rem">${t}%</span></div>\n <span class="section-badge ${0===s?"pass":"fail"}">${0===s?"No divergences":`${s} divergence(s)`}</span>\n <span class="chevron">⌄</span>\n </div>\n <div class="collapsible-body section-body">\n <div style="color:var(--text-muted);font-size:0.85rem;margin-bottom:1rem">\n Randomly sampled ${Math.round(100*e.sampleRate)}% of seeds where the fast heuristic\n (<code>_simulateScan()</code>) reported "detected", then cross-checked against the real\n production scanner (CodeScanner + HallucinationDetector). Agreement: <strong>${t}%</strong>\n on ${e.sampled} sampled seed(s). This never affects the headline Crucible score.\n </div>\n ${a?`\n <table class="test-table">\n <thead><tr><th></th><th>Seed</th><th>Lang</th><th>Category</th><th>Phase</th><th>Heuristic</th><th>Production</th></tr></thead>\n <tbody>${a}</tbody>\n </table>`:""}\n </div>\n</div>`}class ReportGenerator{constructor(e={}){this.outputDir=path.resolve(e.outputDir||process.cwd())}generate(e,t={}){const n=(e.timestamp||(new Date).toISOString()).replace(/[:.]/g,"-").slice(0,19),s=t.filename||`crucible-report-${n}.html`,a=path.basename(s),r=path.join(this.outputDir,a),o=generateHTML(e);return fs.writeFileSync(r,o,"utf-8"),r}generateJSON(e,t={}){const n=e.timestamp||(new Date).toISOString(),s=n.replace(/[:.]/g,"-").slice(0,19),a=t.filename||`crucible-report-${s}.json`,r=path.basename(a),o=path.join(this.outputDir,r),d="number"==typeof e.score?e.score:calculateCrucibleScore(e),i={timestamp:n,score:d,scoreLabel:scoreLabel(d),scannerVersion:getScannerVersion(),level:e.level||"medium",seeds:e.seedResults?{total:e.seedResults.total,detected:e.seedResults.detected,missed:e.seedResults.missed,rate:e.seedResults.total>0?Math.round(e.seedResults.detected/e.seedResults.total*100):null}:null,mutations:e.mutationResults?{total:e.mutationResults.total,killed:e.mutationResults.killed,survived:e.mutationResults.survived,killRate:e.mutationResults.total>0?Math.round(e.mutationResults.killed/e.mutationResults.total*100):null}:null,kenny:e.kennyResults?{score:e.kennyResults.score,passed:e.kennyResults.passed,total:e.kennyResults.total}:null,selfAttack:e.selfAttackResults?{score:e.selfAttackResults.score}:null,golden:e.goldenComparison?{passed:e.goldenComparison.passed,regressions:e.goldenComparison.regressions}:null,divergence:e.divergenceStats&&e.divergenceStats.sampled?{sampleRate:e.divergenceStats.sampleRate,sampled:e.divergenceStats.sampled,agreements:e.divergenceStats.agreements,agreementRate:e.divergenceStats.agreementRate,divergences:e.divergenceStats.divergences}:null};return fs.writeFileSync(o,JSON.stringify(i,null,2),"utf-8"),o}}module.exports={ReportGenerator:ReportGenerator,generateHTML:generateHTML,calculateCrucibleScore:calculateCrucibleScore,scoreColor:scoreColor,scoreLabel:scoreLabel,getScannerVersion:getScannerVersion};
|