thuban 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/cli.js +2 -0
- package/package.json +13 -13
- package/packages/crucible/README.md +93 -0
- package/{dist/packages → packages}/scanner/ai-confidence-scorer.js +1 -1
- package/{dist/packages → packages}/scanner/code-scanner.js +1 -1
- package/packages/scanner/drift-detector.js +1 -0
- package/packages/scanner/go-ast-analyzer.js +1 -0
- package/packages/scanner/hallucination-detector.js +1 -0
- package/packages/scanner/license-manager.js +1 -0
- package/packages/scanner/support-knowledge.js +1 -0
- package/packages/scanner/taint-tracker.js +1 -0
- package/packages/scanner/widget-generator.js +1 -0
- package/dist/LICENSE +0 -21
- package/dist/README.md +0 -437
- package/dist/cli.js +0 -2
- package/dist/package.json +0 -65
- package/dist/packages/scanner/drift-detector.js +0 -1
- package/dist/packages/scanner/go-ast-analyzer.js +0 -1
- package/dist/packages/scanner/hallucination-detector.js +0 -1
- package/dist/packages/scanner/license-manager.js +0 -1
- package/dist/packages/scanner/support-knowledge.js +0 -1
- package/dist/packages/scanner/taint-tracker.js +0 -1
- package/dist/packages/scanner/widget-generator.js +0 -1
- /package/{dist/packages → packages}/crucible/.golden/golden-master.json +0 -0
- /package/{dist/packages → packages}/crucible/badge-generator.js +0 -0
- /package/{dist/packages → packages}/crucible/banner.js +0 -0
- /package/{dist/packages → packages}/crucible/ci-integration.js +0 -0
- /package/{dist/packages → packages}/crucible/golden-master.js +0 -0
- /package/{dist/packages → packages}/crucible/index.js +0 -0
- /package/{dist/packages → packages}/crucible/kenny-mode.js +0 -0
- /package/{dist/packages → packages}/crucible/leaderboard.js +0 -0
- /package/{dist/packages → packages}/crucible/mutation-engine.js +0 -0
- /package/{dist/packages → packages}/crucible/pattern-learner.js +0 -0
- /package/{dist/packages → packages}/crucible/report-generator.js +0 -0
- /package/{dist/packages → packages}/crucible/rule-loader.js +0 -0
- /package/{dist/packages → packages}/crucible/rules/code-scanner-core.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/command-injection.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/crypto-misuse.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/deserialization.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/env-injection.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/eval-abuse.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/file-upload.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/hallucination.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/hardcoded-secret.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/hardcoded-url.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/insecure-crypto.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/integer-overflow.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/log-injection.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/mass-assignment.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/open-redirect.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/path-traversal.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/prototype-pollution.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/sql-injection.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/ssrf.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/timing-attack.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/unsafe-block.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/xss.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/xxe.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/yaml-deserialization.json +0 -0
- /package/{dist/packages → packages}/crucible/rules/yaml-injection.json +0 -0
- /package/{dist/packages → packages}/crucible/seeding-engine.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-001.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-002.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-003.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-004.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-005.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-006.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-007.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-008.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-009.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-010.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-011.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-012.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-013.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-014.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-015.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-016.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-017.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-018.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-019.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-020.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-021.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-022.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-023.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-024.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-025.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-026.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-027.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-028.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-029.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-030.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-031.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-032.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-033.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-034.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-035.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-036.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-037.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-038.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-039.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-040.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-041.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-042.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-043.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-044.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-045.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-046.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-047.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-048.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-049.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-050.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-051.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/csharp/seed-052.cs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-001.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-002.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-003.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-004.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-005.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-006.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-007.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-008.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-009.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-010.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-011.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-012.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-013.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-014.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-015.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-016.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-017.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-018.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-019.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-020.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-021.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-022.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-023.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-024.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-025.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-026.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-027.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-028.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-029.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-030.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-031.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-032.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-033.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-034.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-035.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-036.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-037.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-038.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-039.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-040.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-041.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-042.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-043.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-044.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-045.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-046.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-047.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-048.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-049.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-050.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-051.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/go/seed-052.go +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-001.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-002.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-003.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-004.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-005.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-006.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-007.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-008.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-009.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-010.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-011.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-012.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-013.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-014.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-015.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-016.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-017.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-018.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-019.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-020.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-021.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-022.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-023.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-024.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-025.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-026.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-027.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-028.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-029.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-030.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-031.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-032.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-033.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-034.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-035.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-036.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-037.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-038.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-039.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-040.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-041.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-042.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-043.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-044.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-045.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-046.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-047.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-048.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-049.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-050.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-051.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/java/seed-052.java +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-001.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-002.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-003.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-004.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-005.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-006.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-007.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-008.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-009.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-010.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-011.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-012.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-013.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-014.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-015.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-016.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-017.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-018.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-019.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-020.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-021.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-022.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-023.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-024.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-025.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-026.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-027.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-028.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-029.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-030.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-031.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-032.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-033.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-034.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-035.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-036.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-037.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-038.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-039.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-040.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-041.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-042.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-043.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-044.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-045.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-046.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-047.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-048.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-049.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-050.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-051.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-052.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-053.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-054.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/js/seed-055.js +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-001.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-002.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-003.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-004.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-005.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-006.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-007.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-008.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-009.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-010.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-011.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-012.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-013.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-014.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-015.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-016.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-017.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-018.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-019.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-020.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-021.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-022.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-023.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-024.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-025.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-026.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-027.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-028.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-029.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-030.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-031.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-032.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-033.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-034.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-035.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-036.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-037.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-038.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-039.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-040.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-041.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-042.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-043.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-044.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-045.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-046.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-047.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-048.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-049.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-050.kt +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-001.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-002.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-003.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-004.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-005.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-006.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-007.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-008.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-009.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-010.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-011.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-012.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-013.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-014.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-015.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-016.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-017.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-018.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-019.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-020.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-021.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-022.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-023.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-024.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-025.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-026.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-027.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-028.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-029.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-030.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-031.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-032.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-033.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-034.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-035.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-036.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-037.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-038.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-039.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-040.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-041.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-042.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-043.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-044.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-045.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-046.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-047.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-048.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-049.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/php/seed-050.php +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-001.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-002.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-003.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-004.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-005.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-006.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-007.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-008.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-009.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-010.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-011.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-012.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-013.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-014.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-015.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-016.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-017.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-018.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-019.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-020.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-021 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-021.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-022 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-022.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-023 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-023.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-024 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-024.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-025 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-025.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-026 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-026.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-027 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-027.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-028 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-028.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-029.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-030 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-030.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-031 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-031.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-032.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-033.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-034.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-035.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-036 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-036.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-037 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-037.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-038 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-038.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-039 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-039.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-040 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-040.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-041 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-041.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-042 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-042.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-043 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-043.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-044 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-044.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-045 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-045.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-046 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-046.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-047 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-047.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-048 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-048.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-049 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-049.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-050 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-050.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-051 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-051.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-052 2.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/python/seed-052.py +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-001 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-001.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-002 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-002.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-003 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-003.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-004 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-004.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-005 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-005.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-006 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-006.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-007 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-007.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-008 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-008.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-009 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-009.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-010 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-010.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-011 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-011.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-012 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-012.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-013 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-013.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-014 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-014.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-015 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-015.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-016 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-016.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-017 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-017.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-018 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-018.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-019 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-019.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-020 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-020.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-021 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-021.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-022 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-022.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-023 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-023.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-024 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-024.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-025 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-025.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-026 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-026.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-027 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-027.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-028 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-028.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-029 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-029.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-030 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-030.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-031 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-031.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-032 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-032.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-033 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-033.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-034 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-034.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-035 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-035.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-036 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-036.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-037 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-037.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-038 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-038.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-039 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-039.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-040 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-040.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-041 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-041.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-042 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-042.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-043 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-043.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-044 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-044.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-045 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-045.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-046 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-046.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-047 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-047.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-048 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-048.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-049 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-049.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-050 2.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ruby/seed-050.rb +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-001 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-001.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-002 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-002.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-003 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-003.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-004 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-004.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-005 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-005.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-006 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-006.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-007 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-007.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-008 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-008.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-009 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-009.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-010 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-010.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-011 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-011.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-012 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-012.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-013 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-013.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-014 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-014.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-015 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-015.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-016 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-016.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-017 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-017.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-018 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-018.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-019 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-019.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-020 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-020.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-021 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-021.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-022 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-022.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-023 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-023.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-024 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-024.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-025 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-025.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-026 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-026.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-027 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-027.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-028 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-028.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-029 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-029.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-030 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-030.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-031 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-031.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-032 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-032.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-033 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-033.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-034 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-034.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-035 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-035.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-036 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-036.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-037 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-037.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-038 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-038.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-039 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-039.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-040 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-040.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-041 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-041.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-042 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-042.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-043 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-043.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-044 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-044.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-045 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-045.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-046 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-046.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-047 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-047.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-048 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-048.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-049 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-049.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-050 2.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/rust/seed-050.rs +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-001 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-001.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-002 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-002.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-003 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-003.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-004 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-004.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-005 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-005.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-006 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-006.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-007 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-007.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-008 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-008.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-009 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-009.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-010 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-010.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-011 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-011.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-012 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-012.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-013 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-013.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-014 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-014.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-015 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-015.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-016 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-016.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-017 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-017.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-018 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-018.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-019 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-019.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-020 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-020.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-021 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-021.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-022 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-022.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-023 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-023.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-024 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-024.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-025 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-025.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-026 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-026.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-027 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-027.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-028 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-028.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-029 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-029.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-030 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-030.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-031 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-031.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-032 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-032.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-033 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-033.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-034 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-034.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-035 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-035.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-036 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-036.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-037 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-037.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-038 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-038.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-039 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-039.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-040 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-040.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-041 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-041.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-042 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-042.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-043 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-043.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-044 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-044.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-045 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-045.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-046 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-046.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-047 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-047.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-048 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-048.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-049 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-049.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-050 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-050.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-051 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-051.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-052 2.ts +0 -0
- /package/{dist/packages → packages}/crucible/seeds/ts/seed-052.ts +0 -0
- /package/{dist/packages → packages}/crucible/self-attack.js +0 -0
- /package/{dist/packages → packages}/scanner/alert-manager.js +0 -0
- /package/{dist/packages → packages}/scanner/ast-analyzer.js +0 -0
- /package/{dist/packages → packages}/scanner/baseline-manager.js +0 -0
- /package/{dist/packages → packages}/scanner/cfg-analyzer.js +0 -0
- /package/{dist/packages → packages}/scanner/codebase-passport.js +0 -0
- /package/{dist/packages → packages}/scanner/copy-paste-detector.js +0 -0
- /package/{dist/packages → packages}/scanner/dependency-graph.js +0 -0
- /package/{dist/packages → packages}/scanner/executive-report.js +0 -0
- /package/{dist/packages → packages}/scanner/export-verifier.js +0 -0
- /package/{dist/packages → packages}/scanner/feedback-client.js +0 -0
- /package/{dist/packages → packages}/scanner/file-collector.js +0 -0
- /package/{dist/packages → packages}/scanner/file-watcher.js +0 -0
- /package/{dist/packages → packages}/scanner/ghost-code-detector.js +0 -0
- /package/{dist/packages → packages}/scanner/health-checker.js +0 -0
- /package/{dist/packages → packages}/scanner/html-report.js +0 -0
- /package/{dist/packages → packages}/scanner/index.js +0 -0
- /package/{dist/packages → packages}/scanner/investor-report.js +0 -0
- /package/{dist/packages → packages}/scanner/master-health-checker.js +0 -0
- /package/{dist/packages → packages}/scanner/monitor-notifier.js +0 -0
- /package/{dist/packages → packages}/scanner/monitor-service.js +0 -0
- /package/{dist/packages → packages}/scanner/monitor-store.js +0 -0
- /package/{dist/packages → packages}/scanner/pre-commit-gate.js +0 -0
- /package/{dist/packages → packages}/scanner/python-ast-analyzer.js +0 -0
- /package/{dist/packages → packages}/scanner/python_ast_helper.py +0 -0
- /package/{dist/packages → packages}/scanner/read-file.js +0 -0
- /package/{dist/packages → packages}/scanner/scan-diff.js +0 -0
- /package/{dist/packages → packages}/scanner/scan-runner.js +0 -0
- /package/{dist/packages → packages}/scanner/secret-scanner.js +0 -0
- /package/{dist/packages → packages}/scanner/sentinel-core.js +0 -0
- /package/{dist/packages → packages}/scanner/sentinel-knowledge.js +0 -0
- /package/{dist/packages → packages}/scanner/slack-notifier.js +0 -0
- /package/{dist/packages → packages}/scanner/support-bot.js +0 -0
- /package/{dist/packages → packages}/scanner/tech-debt-analyzer.js +0 -0
- /package/{dist/packages → packages}/scanner/tech-debt-cost.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const fs=require("fs"),path=require("path"),crypto=require("crypto"),DependencyGraph=require("./dependency-graph");function computeDna(e){const t=e.replace(/\r\n/g,"\n").split("\n").map(e=>e.replace(/\s+$/,"")).filter(e=>e.length>0).join("\n");return crypto.createHash("sha256").update(t).digest("hex").slice(0,16)}class WidgetGenerator{constructor(e={}){this.config={rootPath:e.rootPath||process.cwd(),dryRun:!1!==e.dryRun,...e},this.dependencyGraph=e.dependencyGraph||null,this.modulePatterns={sentinel:/^sentinel[\\\/]/,citadel:/^citadel[\\\/]/,forge:/^forge[\\\/]/,server:/^server[\\\/]/,"build-engine":/^build-engine[\\\/]/,autopilot:/^autopilot[\\\/]/,silverwings:/^silverwings[\\\/]/,output:/^output[\\\/]/},this.layerPatterns={presentation:/routes|api|handlers|controllers|views/i,application:/service|manager|orchestrat|core|engine/i,domain:/model|entity|domain|types/i,infrastructure:/utils|helpers|lib|data|store|memory/i},this.sideEffectPatterns=[{pattern:/fs\.(write|append|unlink|mkdir|rmdir|rename)/i,effect:"File system writes"},{pattern:/fs\.read/i,effect:"File system reads"},{pattern:/fetch\(|axios\.|http\.|https\./i,effect:"HTTP requests"},{pattern:/process\.exit/i,effect:"Process termination"},{pattern:/child_process|spawn|exec\(/i,effect:"Spawns child processes"},{pattern:/console\.(log|error|warn)/i,effect:"Console output"},{pattern:/\.emit\(|EventEmitter/i,effect:"Event emission"},{pattern:/supabase|createClient/i,effect:"Database operations"},{pattern:/twilio|sendgrid|resend/i,effect:"External API calls"}],this.purposePatterns=[{pattern:/class\s+(\w+).*extends.*Router/i,purpose:e=>`Express router for ${e[1]}`},{pattern:/class\s+(\w+).*extends.*EventEmitter/i,purpose:e=>`Event-driven ${e[1]} component`},{pattern:/class\s+(\w+)/i,purpose:e=>`${e[1]} class implementation`},{pattern:/module\.exports\s*=\s*\{([^}]+)\}/i,purpose:e=>`Exports: ${e[1].match(/\w+/g)?.slice(0,5).join(", ")}`},{pattern:/router\.(get|post|put|delete)/i,purpose:()=>"API route handlers"},{pattern:/async function\s+(\w+)/i,purpose:e=>`Provides ${e[1]} functionality`},{pattern:/function\s+(\w+)/i,purpose:e=>`Provides ${e[1]} functionality`}]}async generateAll(){console.log("[WIDGET-GENERATOR] Starting widget generation..."),this.dependencyGraph||(this.dependencyGraph=new DependencyGraph({rootPath:this.config.rootPath}),await this.dependencyGraph.build());const e=await this._discoverFiles(this.config.rootPath),t={total:e.length,generated:0,skipped:0,alreadyHasWidget:0,widgets:[]};for(const s of e){const e=fs.readFileSync(s,"utf8");if(this._hasWidget(e)){t.alreadyHasWidget++;continue}const r=await this.generateWidget(s,e);t.generated++,t.widgets.push({file:s,relativePath:path.relative(this.config.rootPath,s),widget:r}),this.config.dryRun||await this._applyWidget(s,e,r)}return console.log(`[WIDGET-GENERATOR] Generated ${t.generated} widgets (${t.alreadyHasWidget} already had widgets)`),t}async generateWidget(e,t=null){t||(t=fs.readFileSync(e,"utf8"));const s=path.relative(this.config.rootPath,e),r=path.basename(e,path.extname(e)),i={purpose:this._detectPurpose(t,r,s),module:this._detectModule(s),layer:this._detectLayer(s,t),importsFrom:this._getImportsFrom(e),exportsTo:this._getExportsTo(e),sideEffects:this._detectSideEffects(t),criticalFor:this._detectCriticalFor(e),dna:computeDna(t)};return{analysis:i,widgetString:this._buildWidgetString(i,r),fileName:r,relativePath:s}}async preview(e=20){const t=await this.generateAll();console.log("\n"+"=".repeat(70)),console.log("WIDGET GENERATION PREVIEW"),console.log("=".repeat(70)),console.log(`Total files: ${t.total}`),console.log(`Already have widgets: ${t.alreadyHasWidget}`),console.log(`Will generate: ${t.generated}`),console.log("");for(const s of t.widgets.slice(0,e))console.log("-".repeat(70)),console.log(`FILE: ${s.relativePath}`),console.log("-".repeat(70)),console.log(s.widget.widgetString),console.log("");return t.widgets.length>e&&console.log(`... and ${t.widgets.length-e} more files`),t}async apply(){this.config.dryRun=!1;const e=await this.generateAll();return console.log(`[WIDGET-GENERATOR] Applied ${e.generated} widgets to files`),e}_hasWidget(e){return/\/\*\*[\s\S]*?@(purpose|module|layer)[\s\S]*?\*\//.test(e)}_detectPurpose(e,t,s){for(const{pattern:t,purpose:s}of this.purposePatterns){const r=e.match(t);if(r)return"function"==typeof s?s(r):s}const r=t.replace(/[-_]/g," ").replace(/([A-Z])/g," $1").trim();return t.includes("route")?`Route handlers for ${r}`:t.includes("api")?`API endpoints for ${r}`:t.includes("service")?`Service layer for ${r}`:t.includes("manager")?`Manager for ${r}`:t.includes("store")?`State store for ${r}`:t.includes("util")?`Utility functions for ${r}`:t.includes("helper")?`Helper functions for ${r}`:t.includes("test")?`Tests for ${r}`:t.includes("config")?`Configuration for ${r}`:t.includes("index")?`Entry point for ${path.dirname(s).split(path.sep).pop()}`:`Provides ${r} functionality`}_detectModule(e){const t=e.replace(/\\/g,"/");for(const[e,s]of Object.entries(this.modulePatterns))if(s.test(t))return e;return t.split("/")[0]||"root"}_detectLayer(e,t){for(const[t,s]of Object.entries(this.layerPatterns))if(s.test(e))return t;return/router\.(get|post|put|delete)|app\.(get|post)/i.test(t)?"presentation":/class.*Service|class.*Manager/i.test(t)?"application":/class.*Model|schema|entity/i.test(t)?"domain":"application"}_getImportsFrom(e){if(!this.dependencyGraph)return[];const t=this.dependencyGraph.getDependencies(e),s=[];for(const e of t.slice(0,10))if(e.resolved){const t=path.relative(this.config.rootPath,e.resolved).split(path.sep),r=t[0],i=t[t.length-1];s.push(`${r}/${i}`)}else e.module.startsWith(".")||s.push(e.module);return s}_getExportsTo(e){if(!this.dependencyGraph)return[];const t=this.dependencyGraph.getDependents(e),s=[];for(const e of t.slice(0,10)){const t=path.relative(this.config.rootPath,e).split(path.sep)[0];s.push(t)}return[...new Set(s)]}_detectSideEffects(e){const t=[];for(const{pattern:s,effect:r}of this.sideEffectPatterns)s.test(e)&&t.push(r);return t.length>0?t:["None detected"]}_detectCriticalFor(e){if(!this.dependencyGraph)return[];const t=this.dependencyGraph.getImpactAnalysis(e);return"critical"===t.riskLevel?[`CRITICAL: ${t.totalImpact} files depend on this`]:"high"===t.riskLevel?[`High impact: ${t.totalImpact} files depend on this`]:t.affectedModules.length>0?t.affectedModules.slice(0,5):[]}_buildWidgetString(e,t){const s=["/**",` * ${this._toTitleCase(t)}`," *",` * @purpose ${e.purpose}`,` * @module ${e.module}`,` * @layer ${e.layer}`];return e.importsFrom.length>0&&s.push(` * @imports-from ${e.importsFrom.join(", ")}`),e.exportsTo.length>0&&s.push(` * @exports-to ${e.exportsTo.join(", ")}`),s.push(` * @side-effects ${e.sideEffects.join(", ")}`),e.criticalFor.length>0&&s.push(` * @critical-for ${e.criticalFor.join(", ")}`),e.dna&&s.push(` * @dna ${e.dna}`),s.push(" */"),s.join("\n")}_toTitleCase(e){return e.replace(/[-_]/g," ").replace(/([A-Z])/g," $1").trim().split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ")}async _applyWidget(e,t,s){const r=s.widgetString+"\n\n"+t;try{return fs.writeFileSync(e,r,"utf8"),!0}catch(e){return console.error("[WIDGET-GENERATOR] Failed to write widget"),!1}}async _discoverFiles(e,t=[]){const s=["node_modules",".git","dist",".vite",".orion"];try{const r=fs.readdirSync(e,{withFileTypes:!0});for(const i of r){if(s.some(e=>i.name===e||i.name.startsWith(e)))continue;const r=path.join(e,i.name);i.isDirectory()?await this._discoverFiles(r,t):i.isFile()&&i.name.endsWith(".js")&&t.push(r)}}catch(e){}return t}}module.exports=WidgetGenerator,module.exports.computeDna=computeDna;
|
package/dist/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Silverwings Benefits Ltd
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/dist/README.md
DELETED
|
@@ -1,437 +0,0 @@
|
|
|
1
|
-
# Thuban -- Code Intelligence Scanner
|
|
2
|
-
|
|
3
|
-
[](https://www.npmjs.com/package/thuban)
|
|
4
|
-
[](LICENSE)
|
|
5
|
-
[](#testing)
|
|
6
|
-
[](#testing)
|
|
7
|
-
|
|
8
|
-
AI Code Verification — Catch what AI gets wrong.
|
|
9
|
-
|
|
10
|
-
Static analysis, security scanning, dead code detection, clone detection, AI-generated code scoring, dependency analysis, and mutation testing for 12 languages. One command. Zero runtime dependencies beyond `@babel/parser`.
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Quick Start
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
npm install -g thuban
|
|
18
|
-
thuban scan .
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Or run without installing:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npx thuban scan .
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
JSON output for CI pipelines:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
thuban scan . --json
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Feature Highlights
|
|
36
|
-
|
|
37
|
-
### Security Analysis
|
|
38
|
-
|
|
39
|
-
84 detection rules across multiple categories. Cross-file taint tracking follows user input from sources (`req.query`, `req.body`, `req.params`, `process.argv`, `process.env`) through assignment, concatenation, and template interpolation to dangerous SQL and XSS sinks -- across file boundaries via `require()`, `import`, destructured imports, and re-exports.
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
thuban scan src/ --json
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### OWASP Top 10 & CWE Compliance
|
|
46
|
-
|
|
47
|
-
All security rules (SEC001--SEC019, RUST001--RUST002) map to [OWASP Top 10 2021](https://owasp.org/Top10/) categories and [CWE](https://cwe.mitre.org/) identifiers. Every finding includes machine-readable `owasp` and `cwe` fields in JSON output, enabling direct integration with compliance dashboards and vulnerability management systems.
|
|
48
|
-
|
|
49
|
-
| OWASP 2021 Category | Rules | CWEs |
|
|
50
|
-
|-----------------------------------------|----------------------------------------|-----------------------------------|
|
|
51
|
-
| A01 Broken Access Control | SEC005, SEC013, SEC014 | CWE-22, CWE-942, CWE-601 |
|
|
52
|
-
| A02 Cryptographic Failures | SEC006, SEC007, SEC008, SEC016 | CWE-798, CWE-327, CWE-330, CWE-208 |
|
|
53
|
-
| A03 Injection | SEC001, SEC002, SEC003, SEC004, SEC009, SEC011, SEC018, SEC019 | CWE-95, CWE-79, CWE-89, CWE-78, CWE-1321 |
|
|
54
|
-
| A04 Insecure Design | SEC015 | CWE-209 |
|
|
55
|
-
| A05 Security Misconfiguration | SEC017 | CWE-611 |
|
|
56
|
-
| A06 Vulnerable Components | RUST001, RUST002 | CWE-908, CWE-477 |
|
|
57
|
-
| A08 Software and Data Integrity | SEC012 | CWE-502 |
|
|
58
|
-
| A10 SSRF | SEC010 | CWE-918 |
|
|
59
|
-
|
|
60
|
-
### Control Flow Graph Analysis
|
|
61
|
-
|
|
62
|
-
Detects unreachable code, infinite loops, and dead branches through AST-based control flow graph construction.
|
|
63
|
-
|
|
64
|
-
### Clone Detection
|
|
65
|
-
|
|
66
|
-
Multi-language code clone detection with AST normalization. Finds duplicated logic across your codebase.
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
thuban clones src/
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### AI-Generated Code Scoring
|
|
73
|
-
|
|
74
|
-
Scores files for likelihood of AI generation based on structural patterns, naming conventions, and code smells common in LLM output.
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
thuban aiscore src/
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Dependency Analysis
|
|
81
|
-
|
|
82
|
-
Maps dependency graphs, detects circular imports, and identifies unused or phantom dependencies.
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
thuban deps .
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Mutation Testing (Crucible)
|
|
89
|
-
|
|
90
|
-
Built-in mutation testing engine. 515 seed files generate 1,030 mutations. Validates that your test suite catches real bugs.
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
thuban crucible --mode kenny # standard mode
|
|
94
|
-
thuban crucible --mode hell # maximum mutation density
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Ghost Code Detection
|
|
98
|
-
|
|
99
|
-
Finds dead exports, unused functions, and unreachable modules.
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
thuban ghosts src/
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Auto-Fix
|
|
106
|
-
|
|
107
|
-
Automatically applies safe fixes for supported rule violations.
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
thuban fix src/
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### HTML Dashboard
|
|
114
|
-
|
|
115
|
-
Generates a visual HTML report with charts, trends, and drill-down by category.
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
thuban dashboard .
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Executive Reports
|
|
122
|
-
|
|
123
|
-
PDF-ready executive summary with risk scores, trend data, and remediation priorities.
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
thuban executive .
|
|
127
|
-
thuban pdf .
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Baseline Scanning
|
|
131
|
-
|
|
132
|
-
Establish a baseline and track only new issues introduced after that point.
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
thuban baseline . # save current state
|
|
136
|
-
thuban scan . --baseline # report only new issues
|
|
137
|
-
thuban compare . # compare current scan to baseline
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Pre-Commit Gate
|
|
141
|
-
|
|
142
|
-
Block commits that introduce issues above a configurable threshold.
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
thuban gate .
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Inline Suppression
|
|
149
|
-
|
|
150
|
-
Suppress specific rules on a per-line basis:
|
|
151
|
-
|
|
152
|
-
```javascript
|
|
153
|
-
const query = "SELECT * FROM " + input; // thuban-ignore SEC001
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
```python
|
|
157
|
-
password = "admin123" # thuban-ignore SEC005
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
Suppress all rules on a line:
|
|
161
|
-
|
|
162
|
-
```javascript
|
|
163
|
-
eval(code); // thuban-ignore
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## Supported Languages
|
|
169
|
-
|
|
170
|
-
| Language | Extension(s) | AST Engine |
|
|
171
|
-
|------------|----------------------|----------------|
|
|
172
|
-
| JavaScript | `.js`, `.mjs`, `.cjs`| Babel |
|
|
173
|
-
| TypeScript | `.ts` | Babel |
|
|
174
|
-
| JSX | `.jsx` | Babel |
|
|
175
|
-
| TSX | `.tsx` | Babel |
|
|
176
|
-
| Python | `.py` | Python `ast` |
|
|
177
|
-
| Go | `.go` | `go/parser` |
|
|
178
|
-
| Rust | `.rs` | Pattern-based |
|
|
179
|
-
| Ruby | `.rb` | Pattern-based |
|
|
180
|
-
| Java | `.java` | Pattern-based |
|
|
181
|
-
| C# | `.cs` | Pattern-based |
|
|
182
|
-
| Kotlin | `.kt` | Pattern-based |
|
|
183
|
-
| PHP | `.php` | Pattern-based |
|
|
184
|
-
|
|
185
|
-
Three AST engines provide deep analysis: Babel for JavaScript/TypeScript/JSX/TSX, Python `ast` for Python, and Go `go/parser` for Go. Remaining languages use pattern-based detection.
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
## Detection Rules
|
|
190
|
-
|
|
191
|
-
84 rules organized by category:
|
|
192
|
-
|
|
193
|
-
| Category | Rule IDs | Description |
|
|
194
|
-
|-------------|-----------------------|--------------------------------------------------|
|
|
195
|
-
| Security | SEC001--SEC019 | SQL injection, XSS, hardcoded secrets, eval, command injection, path traversal, insecure crypto, SSRF, prototype pollution, and more |
|
|
196
|
-
| Security | RUST001--RUST002 | Rust-specific unsafe patterns |
|
|
197
|
-
| Quality | QUAL001--QUAL004 | Code quality, naming, structure |
|
|
198
|
-
| Performance | PERF001 | Performance anti-patterns |
|
|
199
|
-
| AST | AST001--AST005 | Phantom imports, deprecated APIs, unused variables, hallucinated APIs, empty catch blocks |
|
|
200
|
-
| AST | AST011--AST014 | Advanced AST patterns |
|
|
201
|
-
| Taint | TAINT001--TAINT002 | Cross-file taint tracking for SQLi and XSS |
|
|
202
|
-
| CFG | CFG001--CFG005 | Unreachable code, infinite loops, dead branches |
|
|
203
|
-
| Nesting | NEST001 | Excessive nesting depth |
|
|
204
|
-
| Complexity | CMPLX001--CMPLX002 | Cyclomatic and cognitive complexity |
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## CLI Commands
|
|
209
|
-
|
|
210
|
-
28 commands grouped by function:
|
|
211
|
-
|
|
212
|
-
### Core Scanning
|
|
213
|
-
|
|
214
|
-
| Command | Description |
|
|
215
|
-
|---------------|--------------------------------------------------|
|
|
216
|
-
| `scan [path]` | Scan a codebase for issues |
|
|
217
|
-
| `diff [path]` | Scan only git-changed files |
|
|
218
|
-
| `deps [path]` | Map dependencies and detect circular imports |
|
|
219
|
-
| `health [path]`| Run health check on codebase |
|
|
220
|
-
| `report [path]`| Full scan + deps + drift combined report |
|
|
221
|
-
|
|
222
|
-
### Detection
|
|
223
|
-
|
|
224
|
-
| Command | Description |
|
|
225
|
-
|----------------------|--------------------------------------------|
|
|
226
|
-
| `hallucinate [path]` | Detect AI hallucinations and phantom imports|
|
|
227
|
-
| `ghosts [path]` | Detect dead code and unused exports |
|
|
228
|
-
| `aiscore [path]` | Score files for AI-generated code patterns |
|
|
229
|
-
| `clones [path]` | Detect code clones across the codebase |
|
|
230
|
-
| `drift [path]` | Detect drift from Mother Code annotations |
|
|
231
|
-
| `debt [path]` | Analyze technical debt |
|
|
232
|
-
| `cost [path]` | Calculate technical debt cost |
|
|
233
|
-
|
|
234
|
-
### Remediation
|
|
235
|
-
|
|
236
|
-
| Command | Description |
|
|
237
|
-
|---------------|--------------------------------------------------|
|
|
238
|
-
| `fix [path]` | Auto-fix supported rule violations |
|
|
239
|
-
| `inject [path]`| Inject Mother Code DNA widget into files |
|
|
240
|
-
| `gate [path]` | Pre-commit quality gate |
|
|
241
|
-
|
|
242
|
-
### Reporting
|
|
243
|
-
|
|
244
|
-
| Command | Description |
|
|
245
|
-
|--------------------|-----------------------------------------------|
|
|
246
|
-
| `dashboard [path]` | Generate visual HTML dashboard |
|
|
247
|
-
| `executive [path]` | Generate executive summary report |
|
|
248
|
-
| `pdf [path]` | Generate PDF-ready report |
|
|
249
|
-
| `passport [path]` | Generate codebase passport |
|
|
250
|
-
|
|
251
|
-
### Monitoring
|
|
252
|
-
|
|
253
|
-
| Command | Description |
|
|
254
|
-
|------------------|-------------------------------------------------|
|
|
255
|
-
| `watch [path]` | Live sentinel -- continuous file monitoring |
|
|
256
|
-
| `monitor [path]` | Recurring scans with history and alerts |
|
|
257
|
-
| `history [path]` | View recurring scan history |
|
|
258
|
-
| `trend [path]` | Show issue trends across scans |
|
|
259
|
-
|
|
260
|
-
### Baseline and Comparison
|
|
261
|
-
|
|
262
|
-
| Command | Description |
|
|
263
|
-
|------------------|-------------------------------------------------|
|
|
264
|
-
| `baseline [path]`| Save current scan state as baseline |
|
|
265
|
-
| `compare [path]` | Compare current scan against baseline |
|
|
266
|
-
|
|
267
|
-
### Licensing
|
|
268
|
-
|
|
269
|
-
| Command | Description |
|
|
270
|
-
|------------|------------------------------------------------------|
|
|
271
|
-
| `activate` | Activate a license key |
|
|
272
|
-
| `status` | Show current license status |
|
|
273
|
-
| `upgrade` | Upgrade license tier |
|
|
274
|
-
|
|
275
|
-
### Mutation Testing
|
|
276
|
-
|
|
277
|
-
| Command | Description |
|
|
278
|
-
|------------|------------------------------------------------------|
|
|
279
|
-
| `crucible` | Run the Crucible mutation testing engine |
|
|
280
|
-
|
|
281
|
-
---
|
|
282
|
-
|
|
283
|
-
## Configuration
|
|
284
|
-
|
|
285
|
-
### `.thubanrc.json`
|
|
286
|
-
|
|
287
|
-
Place a `.thubanrc.json` in your project root to configure scan behavior:
|
|
288
|
-
|
|
289
|
-
```json
|
|
290
|
-
{
|
|
291
|
-
"$schema": "https://thuban.dev/schema/thubanrc.json",
|
|
292
|
-
"minScore": 0,
|
|
293
|
-
"ignore": [
|
|
294
|
-
"node_modules",
|
|
295
|
-
"dist",
|
|
296
|
-
".git",
|
|
297
|
-
"coverage"
|
|
298
|
-
],
|
|
299
|
-
"hallucination": {
|
|
300
|
-
"enabled": true,
|
|
301
|
-
"ignore": []
|
|
302
|
-
},
|
|
303
|
-
"motherCode": {
|
|
304
|
-
"enabled": true,
|
|
305
|
-
"autoInject": false
|
|
306
|
-
},
|
|
307
|
-
"report": {
|
|
308
|
-
"format": "html",
|
|
309
|
-
"outputDir": "."
|
|
310
|
-
},
|
|
311
|
-
"ci": {
|
|
312
|
-
"failOnGrade": "F",
|
|
313
|
-
"postComment": true
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
### `.thubanignore`
|
|
319
|
-
|
|
320
|
-
Exclude files and directories from scanning, one glob pattern per line:
|
|
321
|
-
|
|
322
|
-
```
|
|
323
|
-
packages/crucible/seeds/**
|
|
324
|
-
tests/regression/fixtures/**
|
|
325
|
-
vendor/**
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## JSON Output
|
|
331
|
-
|
|
332
|
-
All scan commands support `--json` for machine-readable output:
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
thuban scan src/ --json
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
```json
|
|
339
|
-
{
|
|
340
|
-
"version": "0.4.5",
|
|
341
|
-
"timestamp": "2026-07-04T12:00:00.000Z",
|
|
342
|
-
"files": 42,
|
|
343
|
-
"issues": [
|
|
344
|
-
{
|
|
345
|
-
"file": "src/api/handler.js",
|
|
346
|
-
"line": 17,
|
|
347
|
-
"rule": "SEC001",
|
|
348
|
-
"severity": "critical",
|
|
349
|
-
"category": "security",
|
|
350
|
-
"message": "Potential SQL injection: unsanitized input in query string",
|
|
351
|
-
"fix": "Use parameterized queries instead of string concatenation"
|
|
352
|
-
}
|
|
353
|
-
],
|
|
354
|
-
"summary": {
|
|
355
|
-
"critical": 1,
|
|
356
|
-
"warning": 3,
|
|
357
|
-
"info": 5,
|
|
358
|
-
"score": 72,
|
|
359
|
-
"grade": "C"
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
---
|
|
365
|
-
|
|
366
|
-
## Performance
|
|
367
|
-
|
|
368
|
-
| Metric | Value |
|
|
369
|
-
|----------------|--------------------|
|
|
370
|
-
| Throughput | ~23,000 lines/sec |
|
|
371
|
-
| Test suite | 746 tests |
|
|
372
|
-
| Code coverage | 91.2% |
|
|
373
|
-
| Dependencies | 1 (`@babel/parser`) |
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
## Tiers
|
|
378
|
-
|
|
379
|
-
| Tier | Limit | Features |
|
|
380
|
-
|------------|-----------|---------------------------------------------------|
|
|
381
|
-
| Free | 100 files | Core scanning, all 84 rules, JSON output |
|
|
382
|
-
| Pro | Unlimited | Recurring scans, history, trends, notifications |
|
|
383
|
-
| Team | Unlimited | Dashboard, executive reports, baseline management |
|
|
384
|
-
| Enterprise | Unlimited | Custom rules, priority support, SSO |
|
|
385
|
-
|
|
386
|
-
Activate a license:
|
|
387
|
-
|
|
388
|
-
```bash
|
|
389
|
-
thuban activate <license-key>
|
|
390
|
-
thuban status
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
---
|
|
394
|
-
|
|
395
|
-
## CI Integration
|
|
396
|
-
|
|
397
|
-
### GitHub Actions
|
|
398
|
-
|
|
399
|
-
```yaml
|
|
400
|
-
- name: Thuban Scan
|
|
401
|
-
run: npx thuban scan . --json --baseline
|
|
402
|
-
env:
|
|
403
|
-
THUBAN_LICENSE: ${{ secrets.THUBAN_LICENSE }}
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
### Pre-Commit Hook
|
|
407
|
-
|
|
408
|
-
```bash
|
|
409
|
-
thuban gate . --fail-on critical
|
|
410
|
-
```
|
|
411
|
-
|
|
412
|
-
---
|
|
413
|
-
|
|
414
|
-
## Requirements
|
|
415
|
-
|
|
416
|
-
- Node.js >= 16.0.0
|
|
417
|
-
|
|
418
|
-
---
|
|
419
|
-
|
|
420
|
-
## Contributing
|
|
421
|
-
|
|
422
|
-
1. Fork the repository
|
|
423
|
-
2. Create a feature branch (`git checkout -b feature/my-feature`)
|
|
424
|
-
3. Run the test suite (`npm test`)
|
|
425
|
-
4. Submit a pull request
|
|
426
|
-
|
|
427
|
-
Issues and feature requests: [github.com/SilverwingsBenefitsGit/thuban/issues](https://github.com/SilverwingsBenefitsGit/thuban/issues)
|
|
428
|
-
|
|
429
|
-
---
|
|
430
|
-
|
|
431
|
-
## License
|
|
432
|
-
|
|
433
|
-
[MIT](LICENSE)
|
|
434
|
-
|
|
435
|
-
---
|
|
436
|
-
|
|
437
|
-
[thuban.dev](https://thuban.dev)
|