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.
Files changed (791) hide show
  1. package/README.md +4 -4
  2. package/cli.js +2 -0
  3. package/package.json +13 -13
  4. package/packages/crucible/README.md +93 -0
  5. package/{dist/packages → packages}/scanner/ai-confidence-scorer.js +1 -1
  6. package/{dist/packages → packages}/scanner/code-scanner.js +1 -1
  7. package/packages/scanner/drift-detector.js +1 -0
  8. package/packages/scanner/go-ast-analyzer.js +1 -0
  9. package/packages/scanner/hallucination-detector.js +1 -0
  10. package/packages/scanner/license-manager.js +1 -0
  11. package/packages/scanner/support-knowledge.js +1 -0
  12. package/packages/scanner/taint-tracker.js +1 -0
  13. package/packages/scanner/widget-generator.js +1 -0
  14. package/dist/LICENSE +0 -21
  15. package/dist/README.md +0 -437
  16. package/dist/cli.js +0 -2
  17. package/dist/package.json +0 -65
  18. package/dist/packages/scanner/drift-detector.js +0 -1
  19. package/dist/packages/scanner/go-ast-analyzer.js +0 -1
  20. package/dist/packages/scanner/hallucination-detector.js +0 -1
  21. package/dist/packages/scanner/license-manager.js +0 -1
  22. package/dist/packages/scanner/support-knowledge.js +0 -1
  23. package/dist/packages/scanner/taint-tracker.js +0 -1
  24. package/dist/packages/scanner/widget-generator.js +0 -1
  25. /package/{dist/packages → packages}/crucible/.golden/golden-master.json +0 -0
  26. /package/{dist/packages → packages}/crucible/badge-generator.js +0 -0
  27. /package/{dist/packages → packages}/crucible/banner.js +0 -0
  28. /package/{dist/packages → packages}/crucible/ci-integration.js +0 -0
  29. /package/{dist/packages → packages}/crucible/golden-master.js +0 -0
  30. /package/{dist/packages → packages}/crucible/index.js +0 -0
  31. /package/{dist/packages → packages}/crucible/kenny-mode.js +0 -0
  32. /package/{dist/packages → packages}/crucible/leaderboard.js +0 -0
  33. /package/{dist/packages → packages}/crucible/mutation-engine.js +0 -0
  34. /package/{dist/packages → packages}/crucible/pattern-learner.js +0 -0
  35. /package/{dist/packages → packages}/crucible/report-generator.js +0 -0
  36. /package/{dist/packages → packages}/crucible/rule-loader.js +0 -0
  37. /package/{dist/packages → packages}/crucible/rules/code-scanner-core.json +0 -0
  38. /package/{dist/packages → packages}/crucible/rules/command-injection.json +0 -0
  39. /package/{dist/packages → packages}/crucible/rules/crypto-misuse.json +0 -0
  40. /package/{dist/packages → packages}/crucible/rules/deserialization.json +0 -0
  41. /package/{dist/packages → packages}/crucible/rules/env-injection.json +0 -0
  42. /package/{dist/packages → packages}/crucible/rules/eval-abuse.json +0 -0
  43. /package/{dist/packages → packages}/crucible/rules/file-upload.json +0 -0
  44. /package/{dist/packages → packages}/crucible/rules/hallucination.json +0 -0
  45. /package/{dist/packages → packages}/crucible/rules/hardcoded-secret.json +0 -0
  46. /package/{dist/packages → packages}/crucible/rules/hardcoded-url.json +0 -0
  47. /package/{dist/packages → packages}/crucible/rules/insecure-crypto.json +0 -0
  48. /package/{dist/packages → packages}/crucible/rules/integer-overflow.json +0 -0
  49. /package/{dist/packages → packages}/crucible/rules/log-injection.json +0 -0
  50. /package/{dist/packages → packages}/crucible/rules/mass-assignment.json +0 -0
  51. /package/{dist/packages → packages}/crucible/rules/open-redirect.json +0 -0
  52. /package/{dist/packages → packages}/crucible/rules/path-traversal.json +0 -0
  53. /package/{dist/packages → packages}/crucible/rules/prototype-pollution.json +0 -0
  54. /package/{dist/packages → packages}/crucible/rules/sql-injection.json +0 -0
  55. /package/{dist/packages → packages}/crucible/rules/ssrf.json +0 -0
  56. /package/{dist/packages → packages}/crucible/rules/timing-attack.json +0 -0
  57. /package/{dist/packages → packages}/crucible/rules/unsafe-block.json +0 -0
  58. /package/{dist/packages → packages}/crucible/rules/xss.json +0 -0
  59. /package/{dist/packages → packages}/crucible/rules/xxe.json +0 -0
  60. /package/{dist/packages → packages}/crucible/rules/yaml-deserialization.json +0 -0
  61. /package/{dist/packages → packages}/crucible/rules/yaml-injection.json +0 -0
  62. /package/{dist/packages → packages}/crucible/seeding-engine.js +0 -0
  63. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-001.cs +0 -0
  64. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-002.cs +0 -0
  65. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-003.cs +0 -0
  66. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-004.cs +0 -0
  67. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-005.cs +0 -0
  68. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-006.cs +0 -0
  69. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-007.cs +0 -0
  70. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-008.cs +0 -0
  71. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-009.cs +0 -0
  72. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-010.cs +0 -0
  73. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-011.cs +0 -0
  74. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-012.cs +0 -0
  75. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-013.cs +0 -0
  76. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-014.cs +0 -0
  77. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-015.cs +0 -0
  78. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-016.cs +0 -0
  79. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-017.cs +0 -0
  80. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-018.cs +0 -0
  81. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-019.cs +0 -0
  82. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-020.cs +0 -0
  83. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-021.cs +0 -0
  84. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-022.cs +0 -0
  85. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-023.cs +0 -0
  86. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-024.cs +0 -0
  87. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-025.cs +0 -0
  88. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-026.cs +0 -0
  89. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-027.cs +0 -0
  90. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-028.cs +0 -0
  91. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-029.cs +0 -0
  92. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-030.cs +0 -0
  93. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-031.cs +0 -0
  94. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-032.cs +0 -0
  95. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-033.cs +0 -0
  96. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-034.cs +0 -0
  97. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-035.cs +0 -0
  98. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-036.cs +0 -0
  99. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-037.cs +0 -0
  100. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-038.cs +0 -0
  101. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-039.cs +0 -0
  102. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-040.cs +0 -0
  103. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-041.cs +0 -0
  104. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-042.cs +0 -0
  105. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-043.cs +0 -0
  106. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-044.cs +0 -0
  107. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-045.cs +0 -0
  108. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-046.cs +0 -0
  109. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-047.cs +0 -0
  110. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-048.cs +0 -0
  111. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-049.cs +0 -0
  112. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-050.cs +0 -0
  113. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-051.cs +0 -0
  114. /package/{dist/packages → packages}/crucible/seeds/csharp/seed-052.cs +0 -0
  115. /package/{dist/packages → packages}/crucible/seeds/go/seed-001.go +0 -0
  116. /package/{dist/packages → packages}/crucible/seeds/go/seed-002.go +0 -0
  117. /package/{dist/packages → packages}/crucible/seeds/go/seed-003.go +0 -0
  118. /package/{dist/packages → packages}/crucible/seeds/go/seed-004.go +0 -0
  119. /package/{dist/packages → packages}/crucible/seeds/go/seed-005.go +0 -0
  120. /package/{dist/packages → packages}/crucible/seeds/go/seed-006.go +0 -0
  121. /package/{dist/packages → packages}/crucible/seeds/go/seed-007.go +0 -0
  122. /package/{dist/packages → packages}/crucible/seeds/go/seed-008.go +0 -0
  123. /package/{dist/packages → packages}/crucible/seeds/go/seed-009.go +0 -0
  124. /package/{dist/packages → packages}/crucible/seeds/go/seed-010.go +0 -0
  125. /package/{dist/packages → packages}/crucible/seeds/go/seed-011.go +0 -0
  126. /package/{dist/packages → packages}/crucible/seeds/go/seed-012.go +0 -0
  127. /package/{dist/packages → packages}/crucible/seeds/go/seed-013.go +0 -0
  128. /package/{dist/packages → packages}/crucible/seeds/go/seed-014.go +0 -0
  129. /package/{dist/packages → packages}/crucible/seeds/go/seed-015.go +0 -0
  130. /package/{dist/packages → packages}/crucible/seeds/go/seed-016.go +0 -0
  131. /package/{dist/packages → packages}/crucible/seeds/go/seed-017.go +0 -0
  132. /package/{dist/packages → packages}/crucible/seeds/go/seed-018.go +0 -0
  133. /package/{dist/packages → packages}/crucible/seeds/go/seed-019.go +0 -0
  134. /package/{dist/packages → packages}/crucible/seeds/go/seed-020.go +0 -0
  135. /package/{dist/packages → packages}/crucible/seeds/go/seed-021.go +0 -0
  136. /package/{dist/packages → packages}/crucible/seeds/go/seed-022.go +0 -0
  137. /package/{dist/packages → packages}/crucible/seeds/go/seed-023.go +0 -0
  138. /package/{dist/packages → packages}/crucible/seeds/go/seed-024.go +0 -0
  139. /package/{dist/packages → packages}/crucible/seeds/go/seed-025.go +0 -0
  140. /package/{dist/packages → packages}/crucible/seeds/go/seed-026.go +0 -0
  141. /package/{dist/packages → packages}/crucible/seeds/go/seed-027.go +0 -0
  142. /package/{dist/packages → packages}/crucible/seeds/go/seed-028.go +0 -0
  143. /package/{dist/packages → packages}/crucible/seeds/go/seed-029.go +0 -0
  144. /package/{dist/packages → packages}/crucible/seeds/go/seed-030.go +0 -0
  145. /package/{dist/packages → packages}/crucible/seeds/go/seed-031.go +0 -0
  146. /package/{dist/packages → packages}/crucible/seeds/go/seed-032.go +0 -0
  147. /package/{dist/packages → packages}/crucible/seeds/go/seed-033.go +0 -0
  148. /package/{dist/packages → packages}/crucible/seeds/go/seed-034.go +0 -0
  149. /package/{dist/packages → packages}/crucible/seeds/go/seed-035.go +0 -0
  150. /package/{dist/packages → packages}/crucible/seeds/go/seed-036.go +0 -0
  151. /package/{dist/packages → packages}/crucible/seeds/go/seed-037.go +0 -0
  152. /package/{dist/packages → packages}/crucible/seeds/go/seed-038.go +0 -0
  153. /package/{dist/packages → packages}/crucible/seeds/go/seed-039.go +0 -0
  154. /package/{dist/packages → packages}/crucible/seeds/go/seed-040.go +0 -0
  155. /package/{dist/packages → packages}/crucible/seeds/go/seed-041.go +0 -0
  156. /package/{dist/packages → packages}/crucible/seeds/go/seed-042.go +0 -0
  157. /package/{dist/packages → packages}/crucible/seeds/go/seed-043.go +0 -0
  158. /package/{dist/packages → packages}/crucible/seeds/go/seed-044.go +0 -0
  159. /package/{dist/packages → packages}/crucible/seeds/go/seed-045.go +0 -0
  160. /package/{dist/packages → packages}/crucible/seeds/go/seed-046.go +0 -0
  161. /package/{dist/packages → packages}/crucible/seeds/go/seed-047.go +0 -0
  162. /package/{dist/packages → packages}/crucible/seeds/go/seed-048.go +0 -0
  163. /package/{dist/packages → packages}/crucible/seeds/go/seed-049.go +0 -0
  164. /package/{dist/packages → packages}/crucible/seeds/go/seed-050.go +0 -0
  165. /package/{dist/packages → packages}/crucible/seeds/go/seed-051.go +0 -0
  166. /package/{dist/packages → packages}/crucible/seeds/go/seed-052.go +0 -0
  167. /package/{dist/packages → packages}/crucible/seeds/java/seed-001.java +0 -0
  168. /package/{dist/packages → packages}/crucible/seeds/java/seed-002.java +0 -0
  169. /package/{dist/packages → packages}/crucible/seeds/java/seed-003.java +0 -0
  170. /package/{dist/packages → packages}/crucible/seeds/java/seed-004.java +0 -0
  171. /package/{dist/packages → packages}/crucible/seeds/java/seed-005.java +0 -0
  172. /package/{dist/packages → packages}/crucible/seeds/java/seed-006.java +0 -0
  173. /package/{dist/packages → packages}/crucible/seeds/java/seed-007.java +0 -0
  174. /package/{dist/packages → packages}/crucible/seeds/java/seed-008.java +0 -0
  175. /package/{dist/packages → packages}/crucible/seeds/java/seed-009.java +0 -0
  176. /package/{dist/packages → packages}/crucible/seeds/java/seed-010.java +0 -0
  177. /package/{dist/packages → packages}/crucible/seeds/java/seed-011.java +0 -0
  178. /package/{dist/packages → packages}/crucible/seeds/java/seed-012.java +0 -0
  179. /package/{dist/packages → packages}/crucible/seeds/java/seed-013.java +0 -0
  180. /package/{dist/packages → packages}/crucible/seeds/java/seed-014.java +0 -0
  181. /package/{dist/packages → packages}/crucible/seeds/java/seed-015.java +0 -0
  182. /package/{dist/packages → packages}/crucible/seeds/java/seed-016.java +0 -0
  183. /package/{dist/packages → packages}/crucible/seeds/java/seed-017.java +0 -0
  184. /package/{dist/packages → packages}/crucible/seeds/java/seed-018.java +0 -0
  185. /package/{dist/packages → packages}/crucible/seeds/java/seed-019.java +0 -0
  186. /package/{dist/packages → packages}/crucible/seeds/java/seed-020.java +0 -0
  187. /package/{dist/packages → packages}/crucible/seeds/java/seed-021.java +0 -0
  188. /package/{dist/packages → packages}/crucible/seeds/java/seed-022.java +0 -0
  189. /package/{dist/packages → packages}/crucible/seeds/java/seed-023.java +0 -0
  190. /package/{dist/packages → packages}/crucible/seeds/java/seed-024.java +0 -0
  191. /package/{dist/packages → packages}/crucible/seeds/java/seed-025.java +0 -0
  192. /package/{dist/packages → packages}/crucible/seeds/java/seed-026.java +0 -0
  193. /package/{dist/packages → packages}/crucible/seeds/java/seed-027.java +0 -0
  194. /package/{dist/packages → packages}/crucible/seeds/java/seed-028.java +0 -0
  195. /package/{dist/packages → packages}/crucible/seeds/java/seed-029.java +0 -0
  196. /package/{dist/packages → packages}/crucible/seeds/java/seed-030.java +0 -0
  197. /package/{dist/packages → packages}/crucible/seeds/java/seed-031.java +0 -0
  198. /package/{dist/packages → packages}/crucible/seeds/java/seed-032.java +0 -0
  199. /package/{dist/packages → packages}/crucible/seeds/java/seed-033.java +0 -0
  200. /package/{dist/packages → packages}/crucible/seeds/java/seed-034.java +0 -0
  201. /package/{dist/packages → packages}/crucible/seeds/java/seed-035.java +0 -0
  202. /package/{dist/packages → packages}/crucible/seeds/java/seed-036.java +0 -0
  203. /package/{dist/packages → packages}/crucible/seeds/java/seed-037.java +0 -0
  204. /package/{dist/packages → packages}/crucible/seeds/java/seed-038.java +0 -0
  205. /package/{dist/packages → packages}/crucible/seeds/java/seed-039.java +0 -0
  206. /package/{dist/packages → packages}/crucible/seeds/java/seed-040.java +0 -0
  207. /package/{dist/packages → packages}/crucible/seeds/java/seed-041.java +0 -0
  208. /package/{dist/packages → packages}/crucible/seeds/java/seed-042.java +0 -0
  209. /package/{dist/packages → packages}/crucible/seeds/java/seed-043.java +0 -0
  210. /package/{dist/packages → packages}/crucible/seeds/java/seed-044.java +0 -0
  211. /package/{dist/packages → packages}/crucible/seeds/java/seed-045.java +0 -0
  212. /package/{dist/packages → packages}/crucible/seeds/java/seed-046.java +0 -0
  213. /package/{dist/packages → packages}/crucible/seeds/java/seed-047.java +0 -0
  214. /package/{dist/packages → packages}/crucible/seeds/java/seed-048.java +0 -0
  215. /package/{dist/packages → packages}/crucible/seeds/java/seed-049.java +0 -0
  216. /package/{dist/packages → packages}/crucible/seeds/java/seed-050.java +0 -0
  217. /package/{dist/packages → packages}/crucible/seeds/java/seed-051.java +0 -0
  218. /package/{dist/packages → packages}/crucible/seeds/java/seed-052.java +0 -0
  219. /package/{dist/packages → packages}/crucible/seeds/js/seed-001.js +0 -0
  220. /package/{dist/packages → packages}/crucible/seeds/js/seed-002.js +0 -0
  221. /package/{dist/packages → packages}/crucible/seeds/js/seed-003.js +0 -0
  222. /package/{dist/packages → packages}/crucible/seeds/js/seed-004.js +0 -0
  223. /package/{dist/packages → packages}/crucible/seeds/js/seed-005.js +0 -0
  224. /package/{dist/packages → packages}/crucible/seeds/js/seed-006.js +0 -0
  225. /package/{dist/packages → packages}/crucible/seeds/js/seed-007.js +0 -0
  226. /package/{dist/packages → packages}/crucible/seeds/js/seed-008.js +0 -0
  227. /package/{dist/packages → packages}/crucible/seeds/js/seed-009.js +0 -0
  228. /package/{dist/packages → packages}/crucible/seeds/js/seed-010.js +0 -0
  229. /package/{dist/packages → packages}/crucible/seeds/js/seed-011.js +0 -0
  230. /package/{dist/packages → packages}/crucible/seeds/js/seed-012.js +0 -0
  231. /package/{dist/packages → packages}/crucible/seeds/js/seed-013.js +0 -0
  232. /package/{dist/packages → packages}/crucible/seeds/js/seed-014.js +0 -0
  233. /package/{dist/packages → packages}/crucible/seeds/js/seed-015.js +0 -0
  234. /package/{dist/packages → packages}/crucible/seeds/js/seed-016.js +0 -0
  235. /package/{dist/packages → packages}/crucible/seeds/js/seed-017.js +0 -0
  236. /package/{dist/packages → packages}/crucible/seeds/js/seed-018.js +0 -0
  237. /package/{dist/packages → packages}/crucible/seeds/js/seed-019.js +0 -0
  238. /package/{dist/packages → packages}/crucible/seeds/js/seed-020.js +0 -0
  239. /package/{dist/packages → packages}/crucible/seeds/js/seed-021.js +0 -0
  240. /package/{dist/packages → packages}/crucible/seeds/js/seed-022.js +0 -0
  241. /package/{dist/packages → packages}/crucible/seeds/js/seed-023.js +0 -0
  242. /package/{dist/packages → packages}/crucible/seeds/js/seed-024.js +0 -0
  243. /package/{dist/packages → packages}/crucible/seeds/js/seed-025.js +0 -0
  244. /package/{dist/packages → packages}/crucible/seeds/js/seed-026.js +0 -0
  245. /package/{dist/packages → packages}/crucible/seeds/js/seed-027.js +0 -0
  246. /package/{dist/packages → packages}/crucible/seeds/js/seed-028.js +0 -0
  247. /package/{dist/packages → packages}/crucible/seeds/js/seed-029.js +0 -0
  248. /package/{dist/packages → packages}/crucible/seeds/js/seed-030.js +0 -0
  249. /package/{dist/packages → packages}/crucible/seeds/js/seed-031.js +0 -0
  250. /package/{dist/packages → packages}/crucible/seeds/js/seed-032.js +0 -0
  251. /package/{dist/packages → packages}/crucible/seeds/js/seed-033.js +0 -0
  252. /package/{dist/packages → packages}/crucible/seeds/js/seed-034.js +0 -0
  253. /package/{dist/packages → packages}/crucible/seeds/js/seed-035.js +0 -0
  254. /package/{dist/packages → packages}/crucible/seeds/js/seed-036.js +0 -0
  255. /package/{dist/packages → packages}/crucible/seeds/js/seed-037.js +0 -0
  256. /package/{dist/packages → packages}/crucible/seeds/js/seed-038.js +0 -0
  257. /package/{dist/packages → packages}/crucible/seeds/js/seed-039.js +0 -0
  258. /package/{dist/packages → packages}/crucible/seeds/js/seed-040.js +0 -0
  259. /package/{dist/packages → packages}/crucible/seeds/js/seed-041.js +0 -0
  260. /package/{dist/packages → packages}/crucible/seeds/js/seed-042.js +0 -0
  261. /package/{dist/packages → packages}/crucible/seeds/js/seed-043.js +0 -0
  262. /package/{dist/packages → packages}/crucible/seeds/js/seed-044.js +0 -0
  263. /package/{dist/packages → packages}/crucible/seeds/js/seed-045.js +0 -0
  264. /package/{dist/packages → packages}/crucible/seeds/js/seed-046.js +0 -0
  265. /package/{dist/packages → packages}/crucible/seeds/js/seed-047.js +0 -0
  266. /package/{dist/packages → packages}/crucible/seeds/js/seed-048.js +0 -0
  267. /package/{dist/packages → packages}/crucible/seeds/js/seed-049.js +0 -0
  268. /package/{dist/packages → packages}/crucible/seeds/js/seed-050.js +0 -0
  269. /package/{dist/packages → packages}/crucible/seeds/js/seed-051.js +0 -0
  270. /package/{dist/packages → packages}/crucible/seeds/js/seed-052.js +0 -0
  271. /package/{dist/packages → packages}/crucible/seeds/js/seed-053.js +0 -0
  272. /package/{dist/packages → packages}/crucible/seeds/js/seed-054.js +0 -0
  273. /package/{dist/packages → packages}/crucible/seeds/js/seed-055.js +0 -0
  274. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-001.kt +0 -0
  275. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-002.kt +0 -0
  276. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-003.kt +0 -0
  277. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-004.kt +0 -0
  278. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-005.kt +0 -0
  279. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-006.kt +0 -0
  280. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-007.kt +0 -0
  281. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-008.kt +0 -0
  282. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-009.kt +0 -0
  283. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-010.kt +0 -0
  284. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-011.kt +0 -0
  285. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-012.kt +0 -0
  286. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-013.kt +0 -0
  287. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-014.kt +0 -0
  288. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-015.kt +0 -0
  289. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-016.kt +0 -0
  290. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-017.kt +0 -0
  291. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-018.kt +0 -0
  292. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-019.kt +0 -0
  293. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-020.kt +0 -0
  294. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-021.kt +0 -0
  295. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-022.kt +0 -0
  296. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-023.kt +0 -0
  297. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-024.kt +0 -0
  298. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-025.kt +0 -0
  299. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-026.kt +0 -0
  300. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-027.kt +0 -0
  301. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-028.kt +0 -0
  302. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-029.kt +0 -0
  303. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-030.kt +0 -0
  304. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-031.kt +0 -0
  305. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-032.kt +0 -0
  306. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-033.kt +0 -0
  307. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-034.kt +0 -0
  308. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-035.kt +0 -0
  309. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-036.kt +0 -0
  310. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-037.kt +0 -0
  311. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-038.kt +0 -0
  312. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-039.kt +0 -0
  313. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-040.kt +0 -0
  314. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-041.kt +0 -0
  315. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-042.kt +0 -0
  316. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-043.kt +0 -0
  317. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-044.kt +0 -0
  318. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-045.kt +0 -0
  319. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-046.kt +0 -0
  320. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-047.kt +0 -0
  321. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-048.kt +0 -0
  322. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-049.kt +0 -0
  323. /package/{dist/packages → packages}/crucible/seeds/kotlin/seed-050.kt +0 -0
  324. /package/{dist/packages → packages}/crucible/seeds/php/seed-001.php +0 -0
  325. /package/{dist/packages → packages}/crucible/seeds/php/seed-002.php +0 -0
  326. /package/{dist/packages → packages}/crucible/seeds/php/seed-003.php +0 -0
  327. /package/{dist/packages → packages}/crucible/seeds/php/seed-004.php +0 -0
  328. /package/{dist/packages → packages}/crucible/seeds/php/seed-005.php +0 -0
  329. /package/{dist/packages → packages}/crucible/seeds/php/seed-006.php +0 -0
  330. /package/{dist/packages → packages}/crucible/seeds/php/seed-007.php +0 -0
  331. /package/{dist/packages → packages}/crucible/seeds/php/seed-008.php +0 -0
  332. /package/{dist/packages → packages}/crucible/seeds/php/seed-009.php +0 -0
  333. /package/{dist/packages → packages}/crucible/seeds/php/seed-010.php +0 -0
  334. /package/{dist/packages → packages}/crucible/seeds/php/seed-011.php +0 -0
  335. /package/{dist/packages → packages}/crucible/seeds/php/seed-012.php +0 -0
  336. /package/{dist/packages → packages}/crucible/seeds/php/seed-013.php +0 -0
  337. /package/{dist/packages → packages}/crucible/seeds/php/seed-014.php +0 -0
  338. /package/{dist/packages → packages}/crucible/seeds/php/seed-015.php +0 -0
  339. /package/{dist/packages → packages}/crucible/seeds/php/seed-016.php +0 -0
  340. /package/{dist/packages → packages}/crucible/seeds/php/seed-017.php +0 -0
  341. /package/{dist/packages → packages}/crucible/seeds/php/seed-018.php +0 -0
  342. /package/{dist/packages → packages}/crucible/seeds/php/seed-019.php +0 -0
  343. /package/{dist/packages → packages}/crucible/seeds/php/seed-020.php +0 -0
  344. /package/{dist/packages → packages}/crucible/seeds/php/seed-021.php +0 -0
  345. /package/{dist/packages → packages}/crucible/seeds/php/seed-022.php +0 -0
  346. /package/{dist/packages → packages}/crucible/seeds/php/seed-023.php +0 -0
  347. /package/{dist/packages → packages}/crucible/seeds/php/seed-024.php +0 -0
  348. /package/{dist/packages → packages}/crucible/seeds/php/seed-025.php +0 -0
  349. /package/{dist/packages → packages}/crucible/seeds/php/seed-026.php +0 -0
  350. /package/{dist/packages → packages}/crucible/seeds/php/seed-027.php +0 -0
  351. /package/{dist/packages → packages}/crucible/seeds/php/seed-028.php +0 -0
  352. /package/{dist/packages → packages}/crucible/seeds/php/seed-029.php +0 -0
  353. /package/{dist/packages → packages}/crucible/seeds/php/seed-030.php +0 -0
  354. /package/{dist/packages → packages}/crucible/seeds/php/seed-031.php +0 -0
  355. /package/{dist/packages → packages}/crucible/seeds/php/seed-032.php +0 -0
  356. /package/{dist/packages → packages}/crucible/seeds/php/seed-033.php +0 -0
  357. /package/{dist/packages → packages}/crucible/seeds/php/seed-034.php +0 -0
  358. /package/{dist/packages → packages}/crucible/seeds/php/seed-035.php +0 -0
  359. /package/{dist/packages → packages}/crucible/seeds/php/seed-036.php +0 -0
  360. /package/{dist/packages → packages}/crucible/seeds/php/seed-037.php +0 -0
  361. /package/{dist/packages → packages}/crucible/seeds/php/seed-038.php +0 -0
  362. /package/{dist/packages → packages}/crucible/seeds/php/seed-039.php +0 -0
  363. /package/{dist/packages → packages}/crucible/seeds/php/seed-040.php +0 -0
  364. /package/{dist/packages → packages}/crucible/seeds/php/seed-041.php +0 -0
  365. /package/{dist/packages → packages}/crucible/seeds/php/seed-042.php +0 -0
  366. /package/{dist/packages → packages}/crucible/seeds/php/seed-043.php +0 -0
  367. /package/{dist/packages → packages}/crucible/seeds/php/seed-044.php +0 -0
  368. /package/{dist/packages → packages}/crucible/seeds/php/seed-045.php +0 -0
  369. /package/{dist/packages → packages}/crucible/seeds/php/seed-046.php +0 -0
  370. /package/{dist/packages → packages}/crucible/seeds/php/seed-047.php +0 -0
  371. /package/{dist/packages → packages}/crucible/seeds/php/seed-048.php +0 -0
  372. /package/{dist/packages → packages}/crucible/seeds/php/seed-049.php +0 -0
  373. /package/{dist/packages → packages}/crucible/seeds/php/seed-050.php +0 -0
  374. /package/{dist/packages → packages}/crucible/seeds/python/seed-001.py +0 -0
  375. /package/{dist/packages → packages}/crucible/seeds/python/seed-002.py +0 -0
  376. /package/{dist/packages → packages}/crucible/seeds/python/seed-003.py +0 -0
  377. /package/{dist/packages → packages}/crucible/seeds/python/seed-004.py +0 -0
  378. /package/{dist/packages → packages}/crucible/seeds/python/seed-005.py +0 -0
  379. /package/{dist/packages → packages}/crucible/seeds/python/seed-006.py +0 -0
  380. /package/{dist/packages → packages}/crucible/seeds/python/seed-007.py +0 -0
  381. /package/{dist/packages → packages}/crucible/seeds/python/seed-008.py +0 -0
  382. /package/{dist/packages → packages}/crucible/seeds/python/seed-009.py +0 -0
  383. /package/{dist/packages → packages}/crucible/seeds/python/seed-010.py +0 -0
  384. /package/{dist/packages → packages}/crucible/seeds/python/seed-011.py +0 -0
  385. /package/{dist/packages → packages}/crucible/seeds/python/seed-012.py +0 -0
  386. /package/{dist/packages → packages}/crucible/seeds/python/seed-013.py +0 -0
  387. /package/{dist/packages → packages}/crucible/seeds/python/seed-014.py +0 -0
  388. /package/{dist/packages → packages}/crucible/seeds/python/seed-015.py +0 -0
  389. /package/{dist/packages → packages}/crucible/seeds/python/seed-016.py +0 -0
  390. /package/{dist/packages → packages}/crucible/seeds/python/seed-017.py +0 -0
  391. /package/{dist/packages → packages}/crucible/seeds/python/seed-018.py +0 -0
  392. /package/{dist/packages → packages}/crucible/seeds/python/seed-019.py +0 -0
  393. /package/{dist/packages → packages}/crucible/seeds/python/seed-020.py +0 -0
  394. /package/{dist/packages → packages}/crucible/seeds/python/seed-021 2.py +0 -0
  395. /package/{dist/packages → packages}/crucible/seeds/python/seed-021.py +0 -0
  396. /package/{dist/packages → packages}/crucible/seeds/python/seed-022 2.py +0 -0
  397. /package/{dist/packages → packages}/crucible/seeds/python/seed-022.py +0 -0
  398. /package/{dist/packages → packages}/crucible/seeds/python/seed-023 2.py +0 -0
  399. /package/{dist/packages → packages}/crucible/seeds/python/seed-023.py +0 -0
  400. /package/{dist/packages → packages}/crucible/seeds/python/seed-024 2.py +0 -0
  401. /package/{dist/packages → packages}/crucible/seeds/python/seed-024.py +0 -0
  402. /package/{dist/packages → packages}/crucible/seeds/python/seed-025 2.py +0 -0
  403. /package/{dist/packages → packages}/crucible/seeds/python/seed-025.py +0 -0
  404. /package/{dist/packages → packages}/crucible/seeds/python/seed-026 2.py +0 -0
  405. /package/{dist/packages → packages}/crucible/seeds/python/seed-026.py +0 -0
  406. /package/{dist/packages → packages}/crucible/seeds/python/seed-027 2.py +0 -0
  407. /package/{dist/packages → packages}/crucible/seeds/python/seed-027.py +0 -0
  408. /package/{dist/packages → packages}/crucible/seeds/python/seed-028 2.py +0 -0
  409. /package/{dist/packages → packages}/crucible/seeds/python/seed-028.py +0 -0
  410. /package/{dist/packages → packages}/crucible/seeds/python/seed-029.py +0 -0
  411. /package/{dist/packages → packages}/crucible/seeds/python/seed-030 2.py +0 -0
  412. /package/{dist/packages → packages}/crucible/seeds/python/seed-030.py +0 -0
  413. /package/{dist/packages → packages}/crucible/seeds/python/seed-031 2.py +0 -0
  414. /package/{dist/packages → packages}/crucible/seeds/python/seed-031.py +0 -0
  415. /package/{dist/packages → packages}/crucible/seeds/python/seed-032.py +0 -0
  416. /package/{dist/packages → packages}/crucible/seeds/python/seed-033.py +0 -0
  417. /package/{dist/packages → packages}/crucible/seeds/python/seed-034.py +0 -0
  418. /package/{dist/packages → packages}/crucible/seeds/python/seed-035.py +0 -0
  419. /package/{dist/packages → packages}/crucible/seeds/python/seed-036 2.py +0 -0
  420. /package/{dist/packages → packages}/crucible/seeds/python/seed-036.py +0 -0
  421. /package/{dist/packages → packages}/crucible/seeds/python/seed-037 2.py +0 -0
  422. /package/{dist/packages → packages}/crucible/seeds/python/seed-037.py +0 -0
  423. /package/{dist/packages → packages}/crucible/seeds/python/seed-038 2.py +0 -0
  424. /package/{dist/packages → packages}/crucible/seeds/python/seed-038.py +0 -0
  425. /package/{dist/packages → packages}/crucible/seeds/python/seed-039 2.py +0 -0
  426. /package/{dist/packages → packages}/crucible/seeds/python/seed-039.py +0 -0
  427. /package/{dist/packages → packages}/crucible/seeds/python/seed-040 2.py +0 -0
  428. /package/{dist/packages → packages}/crucible/seeds/python/seed-040.py +0 -0
  429. /package/{dist/packages → packages}/crucible/seeds/python/seed-041 2.py +0 -0
  430. /package/{dist/packages → packages}/crucible/seeds/python/seed-041.py +0 -0
  431. /package/{dist/packages → packages}/crucible/seeds/python/seed-042 2.py +0 -0
  432. /package/{dist/packages → packages}/crucible/seeds/python/seed-042.py +0 -0
  433. /package/{dist/packages → packages}/crucible/seeds/python/seed-043 2.py +0 -0
  434. /package/{dist/packages → packages}/crucible/seeds/python/seed-043.py +0 -0
  435. /package/{dist/packages → packages}/crucible/seeds/python/seed-044 2.py +0 -0
  436. /package/{dist/packages → packages}/crucible/seeds/python/seed-044.py +0 -0
  437. /package/{dist/packages → packages}/crucible/seeds/python/seed-045 2.py +0 -0
  438. /package/{dist/packages → packages}/crucible/seeds/python/seed-045.py +0 -0
  439. /package/{dist/packages → packages}/crucible/seeds/python/seed-046 2.py +0 -0
  440. /package/{dist/packages → packages}/crucible/seeds/python/seed-046.py +0 -0
  441. /package/{dist/packages → packages}/crucible/seeds/python/seed-047 2.py +0 -0
  442. /package/{dist/packages → packages}/crucible/seeds/python/seed-047.py +0 -0
  443. /package/{dist/packages → packages}/crucible/seeds/python/seed-048 2.py +0 -0
  444. /package/{dist/packages → packages}/crucible/seeds/python/seed-048.py +0 -0
  445. /package/{dist/packages → packages}/crucible/seeds/python/seed-049 2.py +0 -0
  446. /package/{dist/packages → packages}/crucible/seeds/python/seed-049.py +0 -0
  447. /package/{dist/packages → packages}/crucible/seeds/python/seed-050 2.py +0 -0
  448. /package/{dist/packages → packages}/crucible/seeds/python/seed-050.py +0 -0
  449. /package/{dist/packages → packages}/crucible/seeds/python/seed-051 2.py +0 -0
  450. /package/{dist/packages → packages}/crucible/seeds/python/seed-051.py +0 -0
  451. /package/{dist/packages → packages}/crucible/seeds/python/seed-052 2.py +0 -0
  452. /package/{dist/packages → packages}/crucible/seeds/python/seed-052.py +0 -0
  453. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-001 2.rb +0 -0
  454. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-001.rb +0 -0
  455. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-002 2.rb +0 -0
  456. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-002.rb +0 -0
  457. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-003 2.rb +0 -0
  458. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-003.rb +0 -0
  459. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-004 2.rb +0 -0
  460. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-004.rb +0 -0
  461. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-005 2.rb +0 -0
  462. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-005.rb +0 -0
  463. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-006 2.rb +0 -0
  464. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-006.rb +0 -0
  465. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-007 2.rb +0 -0
  466. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-007.rb +0 -0
  467. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-008 2.rb +0 -0
  468. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-008.rb +0 -0
  469. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-009 2.rb +0 -0
  470. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-009.rb +0 -0
  471. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-010 2.rb +0 -0
  472. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-010.rb +0 -0
  473. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-011 2.rb +0 -0
  474. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-011.rb +0 -0
  475. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-012 2.rb +0 -0
  476. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-012.rb +0 -0
  477. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-013 2.rb +0 -0
  478. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-013.rb +0 -0
  479. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-014 2.rb +0 -0
  480. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-014.rb +0 -0
  481. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-015 2.rb +0 -0
  482. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-015.rb +0 -0
  483. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-016 2.rb +0 -0
  484. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-016.rb +0 -0
  485. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-017 2.rb +0 -0
  486. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-017.rb +0 -0
  487. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-018 2.rb +0 -0
  488. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-018.rb +0 -0
  489. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-019 2.rb +0 -0
  490. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-019.rb +0 -0
  491. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-020 2.rb +0 -0
  492. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-020.rb +0 -0
  493. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-021 2.rb +0 -0
  494. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-021.rb +0 -0
  495. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-022 2.rb +0 -0
  496. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-022.rb +0 -0
  497. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-023 2.rb +0 -0
  498. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-023.rb +0 -0
  499. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-024 2.rb +0 -0
  500. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-024.rb +0 -0
  501. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-025 2.rb +0 -0
  502. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-025.rb +0 -0
  503. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-026 2.rb +0 -0
  504. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-026.rb +0 -0
  505. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-027 2.rb +0 -0
  506. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-027.rb +0 -0
  507. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-028 2.rb +0 -0
  508. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-028.rb +0 -0
  509. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-029 2.rb +0 -0
  510. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-029.rb +0 -0
  511. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-030 2.rb +0 -0
  512. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-030.rb +0 -0
  513. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-031 2.rb +0 -0
  514. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-031.rb +0 -0
  515. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-032 2.rb +0 -0
  516. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-032.rb +0 -0
  517. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-033 2.rb +0 -0
  518. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-033.rb +0 -0
  519. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-034 2.rb +0 -0
  520. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-034.rb +0 -0
  521. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-035 2.rb +0 -0
  522. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-035.rb +0 -0
  523. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-036 2.rb +0 -0
  524. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-036.rb +0 -0
  525. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-037 2.rb +0 -0
  526. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-037.rb +0 -0
  527. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-038 2.rb +0 -0
  528. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-038.rb +0 -0
  529. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-039 2.rb +0 -0
  530. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-039.rb +0 -0
  531. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-040 2.rb +0 -0
  532. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-040.rb +0 -0
  533. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-041 2.rb +0 -0
  534. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-041.rb +0 -0
  535. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-042 2.rb +0 -0
  536. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-042.rb +0 -0
  537. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-043 2.rb +0 -0
  538. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-043.rb +0 -0
  539. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-044 2.rb +0 -0
  540. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-044.rb +0 -0
  541. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-045 2.rb +0 -0
  542. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-045.rb +0 -0
  543. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-046 2.rb +0 -0
  544. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-046.rb +0 -0
  545. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-047 2.rb +0 -0
  546. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-047.rb +0 -0
  547. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-048 2.rb +0 -0
  548. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-048.rb +0 -0
  549. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-049 2.rb +0 -0
  550. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-049.rb +0 -0
  551. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-050 2.rb +0 -0
  552. /package/{dist/packages → packages}/crucible/seeds/ruby/seed-050.rb +0 -0
  553. /package/{dist/packages → packages}/crucible/seeds/rust/seed-001 2.rs +0 -0
  554. /package/{dist/packages → packages}/crucible/seeds/rust/seed-001.rs +0 -0
  555. /package/{dist/packages → packages}/crucible/seeds/rust/seed-002 2.rs +0 -0
  556. /package/{dist/packages → packages}/crucible/seeds/rust/seed-002.rs +0 -0
  557. /package/{dist/packages → packages}/crucible/seeds/rust/seed-003 2.rs +0 -0
  558. /package/{dist/packages → packages}/crucible/seeds/rust/seed-003.rs +0 -0
  559. /package/{dist/packages → packages}/crucible/seeds/rust/seed-004 2.rs +0 -0
  560. /package/{dist/packages → packages}/crucible/seeds/rust/seed-004.rs +0 -0
  561. /package/{dist/packages → packages}/crucible/seeds/rust/seed-005 2.rs +0 -0
  562. /package/{dist/packages → packages}/crucible/seeds/rust/seed-005.rs +0 -0
  563. /package/{dist/packages → packages}/crucible/seeds/rust/seed-006 2.rs +0 -0
  564. /package/{dist/packages → packages}/crucible/seeds/rust/seed-006.rs +0 -0
  565. /package/{dist/packages → packages}/crucible/seeds/rust/seed-007 2.rs +0 -0
  566. /package/{dist/packages → packages}/crucible/seeds/rust/seed-007.rs +0 -0
  567. /package/{dist/packages → packages}/crucible/seeds/rust/seed-008 2.rs +0 -0
  568. /package/{dist/packages → packages}/crucible/seeds/rust/seed-008.rs +0 -0
  569. /package/{dist/packages → packages}/crucible/seeds/rust/seed-009 2.rs +0 -0
  570. /package/{dist/packages → packages}/crucible/seeds/rust/seed-009.rs +0 -0
  571. /package/{dist/packages → packages}/crucible/seeds/rust/seed-010 2.rs +0 -0
  572. /package/{dist/packages → packages}/crucible/seeds/rust/seed-010.rs +0 -0
  573. /package/{dist/packages → packages}/crucible/seeds/rust/seed-011 2.rs +0 -0
  574. /package/{dist/packages → packages}/crucible/seeds/rust/seed-011.rs +0 -0
  575. /package/{dist/packages → packages}/crucible/seeds/rust/seed-012 2.rs +0 -0
  576. /package/{dist/packages → packages}/crucible/seeds/rust/seed-012.rs +0 -0
  577. /package/{dist/packages → packages}/crucible/seeds/rust/seed-013 2.rs +0 -0
  578. /package/{dist/packages → packages}/crucible/seeds/rust/seed-013.rs +0 -0
  579. /package/{dist/packages → packages}/crucible/seeds/rust/seed-014 2.rs +0 -0
  580. /package/{dist/packages → packages}/crucible/seeds/rust/seed-014.rs +0 -0
  581. /package/{dist/packages → packages}/crucible/seeds/rust/seed-015 2.rs +0 -0
  582. /package/{dist/packages → packages}/crucible/seeds/rust/seed-015.rs +0 -0
  583. /package/{dist/packages → packages}/crucible/seeds/rust/seed-016 2.rs +0 -0
  584. /package/{dist/packages → packages}/crucible/seeds/rust/seed-016.rs +0 -0
  585. /package/{dist/packages → packages}/crucible/seeds/rust/seed-017 2.rs +0 -0
  586. /package/{dist/packages → packages}/crucible/seeds/rust/seed-017.rs +0 -0
  587. /package/{dist/packages → packages}/crucible/seeds/rust/seed-018 2.rs +0 -0
  588. /package/{dist/packages → packages}/crucible/seeds/rust/seed-018.rs +0 -0
  589. /package/{dist/packages → packages}/crucible/seeds/rust/seed-019 2.rs +0 -0
  590. /package/{dist/packages → packages}/crucible/seeds/rust/seed-019.rs +0 -0
  591. /package/{dist/packages → packages}/crucible/seeds/rust/seed-020 2.rs +0 -0
  592. /package/{dist/packages → packages}/crucible/seeds/rust/seed-020.rs +0 -0
  593. /package/{dist/packages → packages}/crucible/seeds/rust/seed-021 2.rs +0 -0
  594. /package/{dist/packages → packages}/crucible/seeds/rust/seed-021.rs +0 -0
  595. /package/{dist/packages → packages}/crucible/seeds/rust/seed-022 2.rs +0 -0
  596. /package/{dist/packages → packages}/crucible/seeds/rust/seed-022.rs +0 -0
  597. /package/{dist/packages → packages}/crucible/seeds/rust/seed-023 2.rs +0 -0
  598. /package/{dist/packages → packages}/crucible/seeds/rust/seed-023.rs +0 -0
  599. /package/{dist/packages → packages}/crucible/seeds/rust/seed-024 2.rs +0 -0
  600. /package/{dist/packages → packages}/crucible/seeds/rust/seed-024.rs +0 -0
  601. /package/{dist/packages → packages}/crucible/seeds/rust/seed-025 2.rs +0 -0
  602. /package/{dist/packages → packages}/crucible/seeds/rust/seed-025.rs +0 -0
  603. /package/{dist/packages → packages}/crucible/seeds/rust/seed-026 2.rs +0 -0
  604. /package/{dist/packages → packages}/crucible/seeds/rust/seed-026.rs +0 -0
  605. /package/{dist/packages → packages}/crucible/seeds/rust/seed-027 2.rs +0 -0
  606. /package/{dist/packages → packages}/crucible/seeds/rust/seed-027.rs +0 -0
  607. /package/{dist/packages → packages}/crucible/seeds/rust/seed-028 2.rs +0 -0
  608. /package/{dist/packages → packages}/crucible/seeds/rust/seed-028.rs +0 -0
  609. /package/{dist/packages → packages}/crucible/seeds/rust/seed-029 2.rs +0 -0
  610. /package/{dist/packages → packages}/crucible/seeds/rust/seed-029.rs +0 -0
  611. /package/{dist/packages → packages}/crucible/seeds/rust/seed-030 2.rs +0 -0
  612. /package/{dist/packages → packages}/crucible/seeds/rust/seed-030.rs +0 -0
  613. /package/{dist/packages → packages}/crucible/seeds/rust/seed-031 2.rs +0 -0
  614. /package/{dist/packages → packages}/crucible/seeds/rust/seed-031.rs +0 -0
  615. /package/{dist/packages → packages}/crucible/seeds/rust/seed-032 2.rs +0 -0
  616. /package/{dist/packages → packages}/crucible/seeds/rust/seed-032.rs +0 -0
  617. /package/{dist/packages → packages}/crucible/seeds/rust/seed-033 2.rs +0 -0
  618. /package/{dist/packages → packages}/crucible/seeds/rust/seed-033.rs +0 -0
  619. /package/{dist/packages → packages}/crucible/seeds/rust/seed-034 2.rs +0 -0
  620. /package/{dist/packages → packages}/crucible/seeds/rust/seed-034.rs +0 -0
  621. /package/{dist/packages → packages}/crucible/seeds/rust/seed-035 2.rs +0 -0
  622. /package/{dist/packages → packages}/crucible/seeds/rust/seed-035.rs +0 -0
  623. /package/{dist/packages → packages}/crucible/seeds/rust/seed-036 2.rs +0 -0
  624. /package/{dist/packages → packages}/crucible/seeds/rust/seed-036.rs +0 -0
  625. /package/{dist/packages → packages}/crucible/seeds/rust/seed-037 2.rs +0 -0
  626. /package/{dist/packages → packages}/crucible/seeds/rust/seed-037.rs +0 -0
  627. /package/{dist/packages → packages}/crucible/seeds/rust/seed-038 2.rs +0 -0
  628. /package/{dist/packages → packages}/crucible/seeds/rust/seed-038.rs +0 -0
  629. /package/{dist/packages → packages}/crucible/seeds/rust/seed-039 2.rs +0 -0
  630. /package/{dist/packages → packages}/crucible/seeds/rust/seed-039.rs +0 -0
  631. /package/{dist/packages → packages}/crucible/seeds/rust/seed-040 2.rs +0 -0
  632. /package/{dist/packages → packages}/crucible/seeds/rust/seed-040.rs +0 -0
  633. /package/{dist/packages → packages}/crucible/seeds/rust/seed-041 2.rs +0 -0
  634. /package/{dist/packages → packages}/crucible/seeds/rust/seed-041.rs +0 -0
  635. /package/{dist/packages → packages}/crucible/seeds/rust/seed-042 2.rs +0 -0
  636. /package/{dist/packages → packages}/crucible/seeds/rust/seed-042.rs +0 -0
  637. /package/{dist/packages → packages}/crucible/seeds/rust/seed-043 2.rs +0 -0
  638. /package/{dist/packages → packages}/crucible/seeds/rust/seed-043.rs +0 -0
  639. /package/{dist/packages → packages}/crucible/seeds/rust/seed-044 2.rs +0 -0
  640. /package/{dist/packages → packages}/crucible/seeds/rust/seed-044.rs +0 -0
  641. /package/{dist/packages → packages}/crucible/seeds/rust/seed-045 2.rs +0 -0
  642. /package/{dist/packages → packages}/crucible/seeds/rust/seed-045.rs +0 -0
  643. /package/{dist/packages → packages}/crucible/seeds/rust/seed-046 2.rs +0 -0
  644. /package/{dist/packages → packages}/crucible/seeds/rust/seed-046.rs +0 -0
  645. /package/{dist/packages → packages}/crucible/seeds/rust/seed-047 2.rs +0 -0
  646. /package/{dist/packages → packages}/crucible/seeds/rust/seed-047.rs +0 -0
  647. /package/{dist/packages → packages}/crucible/seeds/rust/seed-048 2.rs +0 -0
  648. /package/{dist/packages → packages}/crucible/seeds/rust/seed-048.rs +0 -0
  649. /package/{dist/packages → packages}/crucible/seeds/rust/seed-049 2.rs +0 -0
  650. /package/{dist/packages → packages}/crucible/seeds/rust/seed-049.rs +0 -0
  651. /package/{dist/packages → packages}/crucible/seeds/rust/seed-050 2.rs +0 -0
  652. /package/{dist/packages → packages}/crucible/seeds/rust/seed-050.rs +0 -0
  653. /package/{dist/packages → packages}/crucible/seeds/ts/seed-001 2.ts +0 -0
  654. /package/{dist/packages → packages}/crucible/seeds/ts/seed-001.ts +0 -0
  655. /package/{dist/packages → packages}/crucible/seeds/ts/seed-002 2.ts +0 -0
  656. /package/{dist/packages → packages}/crucible/seeds/ts/seed-002.ts +0 -0
  657. /package/{dist/packages → packages}/crucible/seeds/ts/seed-003 2.ts +0 -0
  658. /package/{dist/packages → packages}/crucible/seeds/ts/seed-003.ts +0 -0
  659. /package/{dist/packages → packages}/crucible/seeds/ts/seed-004 2.ts +0 -0
  660. /package/{dist/packages → packages}/crucible/seeds/ts/seed-004.ts +0 -0
  661. /package/{dist/packages → packages}/crucible/seeds/ts/seed-005 2.ts +0 -0
  662. /package/{dist/packages → packages}/crucible/seeds/ts/seed-005.ts +0 -0
  663. /package/{dist/packages → packages}/crucible/seeds/ts/seed-006 2.ts +0 -0
  664. /package/{dist/packages → packages}/crucible/seeds/ts/seed-006.ts +0 -0
  665. /package/{dist/packages → packages}/crucible/seeds/ts/seed-007 2.ts +0 -0
  666. /package/{dist/packages → packages}/crucible/seeds/ts/seed-007.ts +0 -0
  667. /package/{dist/packages → packages}/crucible/seeds/ts/seed-008 2.ts +0 -0
  668. /package/{dist/packages → packages}/crucible/seeds/ts/seed-008.ts +0 -0
  669. /package/{dist/packages → packages}/crucible/seeds/ts/seed-009 2.ts +0 -0
  670. /package/{dist/packages → packages}/crucible/seeds/ts/seed-009.ts +0 -0
  671. /package/{dist/packages → packages}/crucible/seeds/ts/seed-010 2.ts +0 -0
  672. /package/{dist/packages → packages}/crucible/seeds/ts/seed-010.ts +0 -0
  673. /package/{dist/packages → packages}/crucible/seeds/ts/seed-011 2.ts +0 -0
  674. /package/{dist/packages → packages}/crucible/seeds/ts/seed-011.ts +0 -0
  675. /package/{dist/packages → packages}/crucible/seeds/ts/seed-012 2.ts +0 -0
  676. /package/{dist/packages → packages}/crucible/seeds/ts/seed-012.ts +0 -0
  677. /package/{dist/packages → packages}/crucible/seeds/ts/seed-013 2.ts +0 -0
  678. /package/{dist/packages → packages}/crucible/seeds/ts/seed-013.ts +0 -0
  679. /package/{dist/packages → packages}/crucible/seeds/ts/seed-014 2.ts +0 -0
  680. /package/{dist/packages → packages}/crucible/seeds/ts/seed-014.ts +0 -0
  681. /package/{dist/packages → packages}/crucible/seeds/ts/seed-015 2.ts +0 -0
  682. /package/{dist/packages → packages}/crucible/seeds/ts/seed-015.ts +0 -0
  683. /package/{dist/packages → packages}/crucible/seeds/ts/seed-016 2.ts +0 -0
  684. /package/{dist/packages → packages}/crucible/seeds/ts/seed-016.ts +0 -0
  685. /package/{dist/packages → packages}/crucible/seeds/ts/seed-017 2.ts +0 -0
  686. /package/{dist/packages → packages}/crucible/seeds/ts/seed-017.ts +0 -0
  687. /package/{dist/packages → packages}/crucible/seeds/ts/seed-018 2.ts +0 -0
  688. /package/{dist/packages → packages}/crucible/seeds/ts/seed-018.ts +0 -0
  689. /package/{dist/packages → packages}/crucible/seeds/ts/seed-019 2.ts +0 -0
  690. /package/{dist/packages → packages}/crucible/seeds/ts/seed-019.ts +0 -0
  691. /package/{dist/packages → packages}/crucible/seeds/ts/seed-020 2.ts +0 -0
  692. /package/{dist/packages → packages}/crucible/seeds/ts/seed-020.ts +0 -0
  693. /package/{dist/packages → packages}/crucible/seeds/ts/seed-021 2.ts +0 -0
  694. /package/{dist/packages → packages}/crucible/seeds/ts/seed-021.ts +0 -0
  695. /package/{dist/packages → packages}/crucible/seeds/ts/seed-022 2.ts +0 -0
  696. /package/{dist/packages → packages}/crucible/seeds/ts/seed-022.ts +0 -0
  697. /package/{dist/packages → packages}/crucible/seeds/ts/seed-023 2.ts +0 -0
  698. /package/{dist/packages → packages}/crucible/seeds/ts/seed-023.ts +0 -0
  699. /package/{dist/packages → packages}/crucible/seeds/ts/seed-024 2.ts +0 -0
  700. /package/{dist/packages → packages}/crucible/seeds/ts/seed-024.ts +0 -0
  701. /package/{dist/packages → packages}/crucible/seeds/ts/seed-025 2.ts +0 -0
  702. /package/{dist/packages → packages}/crucible/seeds/ts/seed-025.ts +0 -0
  703. /package/{dist/packages → packages}/crucible/seeds/ts/seed-026 2.ts +0 -0
  704. /package/{dist/packages → packages}/crucible/seeds/ts/seed-026.ts +0 -0
  705. /package/{dist/packages → packages}/crucible/seeds/ts/seed-027 2.ts +0 -0
  706. /package/{dist/packages → packages}/crucible/seeds/ts/seed-027.ts +0 -0
  707. /package/{dist/packages → packages}/crucible/seeds/ts/seed-028 2.ts +0 -0
  708. /package/{dist/packages → packages}/crucible/seeds/ts/seed-028.ts +0 -0
  709. /package/{dist/packages → packages}/crucible/seeds/ts/seed-029 2.ts +0 -0
  710. /package/{dist/packages → packages}/crucible/seeds/ts/seed-029.ts +0 -0
  711. /package/{dist/packages → packages}/crucible/seeds/ts/seed-030 2.ts +0 -0
  712. /package/{dist/packages → packages}/crucible/seeds/ts/seed-030.ts +0 -0
  713. /package/{dist/packages → packages}/crucible/seeds/ts/seed-031 2.ts +0 -0
  714. /package/{dist/packages → packages}/crucible/seeds/ts/seed-031.ts +0 -0
  715. /package/{dist/packages → packages}/crucible/seeds/ts/seed-032 2.ts +0 -0
  716. /package/{dist/packages → packages}/crucible/seeds/ts/seed-032.ts +0 -0
  717. /package/{dist/packages → packages}/crucible/seeds/ts/seed-033 2.ts +0 -0
  718. /package/{dist/packages → packages}/crucible/seeds/ts/seed-033.ts +0 -0
  719. /package/{dist/packages → packages}/crucible/seeds/ts/seed-034 2.ts +0 -0
  720. /package/{dist/packages → packages}/crucible/seeds/ts/seed-034.ts +0 -0
  721. /package/{dist/packages → packages}/crucible/seeds/ts/seed-035 2.ts +0 -0
  722. /package/{dist/packages → packages}/crucible/seeds/ts/seed-035.ts +0 -0
  723. /package/{dist/packages → packages}/crucible/seeds/ts/seed-036 2.ts +0 -0
  724. /package/{dist/packages → packages}/crucible/seeds/ts/seed-036.ts +0 -0
  725. /package/{dist/packages → packages}/crucible/seeds/ts/seed-037 2.ts +0 -0
  726. /package/{dist/packages → packages}/crucible/seeds/ts/seed-037.ts +0 -0
  727. /package/{dist/packages → packages}/crucible/seeds/ts/seed-038 2.ts +0 -0
  728. /package/{dist/packages → packages}/crucible/seeds/ts/seed-038.ts +0 -0
  729. /package/{dist/packages → packages}/crucible/seeds/ts/seed-039 2.ts +0 -0
  730. /package/{dist/packages → packages}/crucible/seeds/ts/seed-039.ts +0 -0
  731. /package/{dist/packages → packages}/crucible/seeds/ts/seed-040 2.ts +0 -0
  732. /package/{dist/packages → packages}/crucible/seeds/ts/seed-040.ts +0 -0
  733. /package/{dist/packages → packages}/crucible/seeds/ts/seed-041 2.ts +0 -0
  734. /package/{dist/packages → packages}/crucible/seeds/ts/seed-041.ts +0 -0
  735. /package/{dist/packages → packages}/crucible/seeds/ts/seed-042 2.ts +0 -0
  736. /package/{dist/packages → packages}/crucible/seeds/ts/seed-042.ts +0 -0
  737. /package/{dist/packages → packages}/crucible/seeds/ts/seed-043 2.ts +0 -0
  738. /package/{dist/packages → packages}/crucible/seeds/ts/seed-043.ts +0 -0
  739. /package/{dist/packages → packages}/crucible/seeds/ts/seed-044 2.ts +0 -0
  740. /package/{dist/packages → packages}/crucible/seeds/ts/seed-044.ts +0 -0
  741. /package/{dist/packages → packages}/crucible/seeds/ts/seed-045 2.ts +0 -0
  742. /package/{dist/packages → packages}/crucible/seeds/ts/seed-045.ts +0 -0
  743. /package/{dist/packages → packages}/crucible/seeds/ts/seed-046 2.ts +0 -0
  744. /package/{dist/packages → packages}/crucible/seeds/ts/seed-046.ts +0 -0
  745. /package/{dist/packages → packages}/crucible/seeds/ts/seed-047 2.ts +0 -0
  746. /package/{dist/packages → packages}/crucible/seeds/ts/seed-047.ts +0 -0
  747. /package/{dist/packages → packages}/crucible/seeds/ts/seed-048 2.ts +0 -0
  748. /package/{dist/packages → packages}/crucible/seeds/ts/seed-048.ts +0 -0
  749. /package/{dist/packages → packages}/crucible/seeds/ts/seed-049 2.ts +0 -0
  750. /package/{dist/packages → packages}/crucible/seeds/ts/seed-049.ts +0 -0
  751. /package/{dist/packages → packages}/crucible/seeds/ts/seed-050 2.ts +0 -0
  752. /package/{dist/packages → packages}/crucible/seeds/ts/seed-050.ts +0 -0
  753. /package/{dist/packages → packages}/crucible/seeds/ts/seed-051 2.ts +0 -0
  754. /package/{dist/packages → packages}/crucible/seeds/ts/seed-051.ts +0 -0
  755. /package/{dist/packages → packages}/crucible/seeds/ts/seed-052 2.ts +0 -0
  756. /package/{dist/packages → packages}/crucible/seeds/ts/seed-052.ts +0 -0
  757. /package/{dist/packages → packages}/crucible/self-attack.js +0 -0
  758. /package/{dist/packages → packages}/scanner/alert-manager.js +0 -0
  759. /package/{dist/packages → packages}/scanner/ast-analyzer.js +0 -0
  760. /package/{dist/packages → packages}/scanner/baseline-manager.js +0 -0
  761. /package/{dist/packages → packages}/scanner/cfg-analyzer.js +0 -0
  762. /package/{dist/packages → packages}/scanner/codebase-passport.js +0 -0
  763. /package/{dist/packages → packages}/scanner/copy-paste-detector.js +0 -0
  764. /package/{dist/packages → packages}/scanner/dependency-graph.js +0 -0
  765. /package/{dist/packages → packages}/scanner/executive-report.js +0 -0
  766. /package/{dist/packages → packages}/scanner/export-verifier.js +0 -0
  767. /package/{dist/packages → packages}/scanner/feedback-client.js +0 -0
  768. /package/{dist/packages → packages}/scanner/file-collector.js +0 -0
  769. /package/{dist/packages → packages}/scanner/file-watcher.js +0 -0
  770. /package/{dist/packages → packages}/scanner/ghost-code-detector.js +0 -0
  771. /package/{dist/packages → packages}/scanner/health-checker.js +0 -0
  772. /package/{dist/packages → packages}/scanner/html-report.js +0 -0
  773. /package/{dist/packages → packages}/scanner/index.js +0 -0
  774. /package/{dist/packages → packages}/scanner/investor-report.js +0 -0
  775. /package/{dist/packages → packages}/scanner/master-health-checker.js +0 -0
  776. /package/{dist/packages → packages}/scanner/monitor-notifier.js +0 -0
  777. /package/{dist/packages → packages}/scanner/monitor-service.js +0 -0
  778. /package/{dist/packages → packages}/scanner/monitor-store.js +0 -0
  779. /package/{dist/packages → packages}/scanner/pre-commit-gate.js +0 -0
  780. /package/{dist/packages → packages}/scanner/python-ast-analyzer.js +0 -0
  781. /package/{dist/packages → packages}/scanner/python_ast_helper.py +0 -0
  782. /package/{dist/packages → packages}/scanner/read-file.js +0 -0
  783. /package/{dist/packages → packages}/scanner/scan-diff.js +0 -0
  784. /package/{dist/packages → packages}/scanner/scan-runner.js +0 -0
  785. /package/{dist/packages → packages}/scanner/secret-scanner.js +0 -0
  786. /package/{dist/packages → packages}/scanner/sentinel-core.js +0 -0
  787. /package/{dist/packages → packages}/scanner/sentinel-knowledge.js +0 -0
  788. /package/{dist/packages → packages}/scanner/slack-notifier.js +0 -0
  789. /package/{dist/packages → packages}/scanner/support-bot.js +0 -0
  790. /package/{dist/packages → packages}/scanner/tech-debt-analyzer.js +0 -0
  791. /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
- [![npm version](https://img.shields.io/npm/v/thuban.svg)](https://www.npmjs.com/package/thuban)
4
- [![license](https://img.shields.io/npm/l/thuban.svg)](LICENSE)
5
- [![tests](https://img.shields.io/badge/tests-746%20passing-brightgreen.svg)](#testing)
6
- [![coverage](https://img.shields.io/badge/coverage-91.2%25-brightgreen.svg)](#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)