torusguard 1.3.3 → 1.3.5

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 (322) hide show
  1. package/.torusguard/.manifest.json +66 -63
  2. package/.torusguard/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
  3. package/.torusguard/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
  4. package/.torusguard/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
  5. package/.torusguard/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
  6. package/.torusguard/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
  7. package/.torusguard/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
  8. package/.torusguard/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
  9. package/.torusguard/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
  10. package/.torusguard/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
  11. package/.torusguard/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
  12. package/.torusguard/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
  13. package/.torusguard/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
  14. package/.torusguard/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
  15. package/.torusguard/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
  16. package/.torusguard/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
  17. package/.torusguard/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
  18. package/.torusguard/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
  19. package/.torusguard/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
  20. package/.torusguard/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
  21. package/.torusguard/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
  22. package/.torusguard/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
  23. package/.torusguard/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
  24. package/.torusguard/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
  25. package/.torusguard/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
  26. package/.torusguard/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
  27. package/.torusguard/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
  28. package/.torusguard/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
  29. package/.torusguard/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
  30. package/.torusguard/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
  31. package/.torusguard/rules_catalog.json +520 -0
  32. package/.torusguard/runs/report-latest.html +93 -7
  33. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
  34. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
  35. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
  36. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
  37. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
  38. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
  39. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
  40. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
  41. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
  42. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
  43. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
  44. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
  45. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
  46. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
  47. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
  48. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
  49. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
  50. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
  51. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
  52. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
  53. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
  54. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/metadata.json +15 -0
  55. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/minimal_patch_plan.md +21 -0
  56. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/patch.diff +9 -0
  57. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
  58. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  59. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  60. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/metadata.json +15 -0
  61. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/minimal_patch_plan.md +21 -0
  62. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/patch.diff +9 -0
  63. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
  64. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
  65. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
  66. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
  67. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
  68. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
  69. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
  70. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
  71. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
  72. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
  73. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
  74. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
  75. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
  76. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
  77. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
  78. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
  79. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
  80. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
  81. package/.torusguard/runs/run-20260910-120238-audit/findings.json +1520 -0
  82. package/.torusguard/runs/run-20260910-120238-audit/findings.md +560 -0
  83. package/.torusguard/runs/run-20260910-120238-audit/manifest.json +13 -0
  84. package/.torusguard/runs/run-20260910-120238-audit/recheck.md +86 -0
  85. package/.torusguard/runs/run-20260910-120238-audit/remediation.md +262 -0
  86. package/.torusguard/runs/run-20260910-120238-audit/summary.md +5 -0
  87. package/.torusguard/runs/run-20260910-121238-audit/findings.json +794 -0
  88. package/.torusguard/runs/run-20260910-121238-audit/findings.md +344 -0
  89. package/.torusguard/runs/run-20260910-121238-audit/manifest.json +12 -0
  90. package/.torusguard/runs/run-20260910-121238-audit/summary.md +5 -0
  91. package/.torusguard/runs/run-20260910-130454-audit/findings.json +893 -0
  92. package/.torusguard/runs/run-20260910-130454-audit/findings.md +386 -0
  93. package/.torusguard/runs/run-20260910-130454-audit/manifest.json +12 -0
  94. package/.torusguard/runs/run-20260910-130454-audit/summary.md +5 -0
  95. package/.torusguard/runs/run-20260910-130519-audit/findings.json +563 -0
  96. package/.torusguard/runs/run-20260910-130519-audit/findings.md +246 -0
  97. package/.torusguard/runs/run-20260910-130519-audit/manifest.json +12 -0
  98. package/.torusguard/runs/run-20260910-130519-audit/summary.md +5 -0
  99. package/.torusguard/runs/run-20260912-214110-audit/findings.json +1256 -0
  100. package/.torusguard/runs/run-20260912-214110-audit/findings.md +534 -0
  101. package/.torusguard/runs/run-20260912-214110-audit/manifest.json +12 -0
  102. package/.torusguard/runs/run-20260912-214110-audit/summary.md +5 -0
  103. package/.torusguard/runs/run-20260912-214813-audit/findings.json +992 -0
  104. package/.torusguard/runs/run-20260912-214813-audit/findings.md +422 -0
  105. package/.torusguard/runs/run-20260912-214813-audit/manifest.json +12 -0
  106. package/.torusguard/runs/run-20260912-214813-audit/summary.md +5 -0
  107. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/metadata.json +17 -0
  108. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/minimal_patch_plan.md +21 -0
  109. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/patch.diff +9 -0
  110. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
  111. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  112. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  113. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
  114. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
  115. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
  116. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
  117. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
  118. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
  119. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
  120. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
  121. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
  122. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
  123. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
  124. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
  125. package/.torusguard/runs/run-20260912-215555-audit/findings.json +530 -0
  126. package/.torusguard/runs/run-20260912-215555-audit/findings.md +232 -0
  127. package/.torusguard/runs/run-20260912-215555-audit/manifest.json +13 -0
  128. package/.torusguard/runs/run-20260912-215555-audit/remediation.md +102 -0
  129. package/.torusguard/runs/run-20260912-215555-audit/summary.md +5 -0
  130. package/.torusguard/runs/run-20260912-215731-audit/apply_plan.md +6 -0
  131. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/metadata.json +17 -0
  132. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/minimal_patch_plan.md +21 -0
  133. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/patch.diff +9 -0
  134. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/metadata.json +17 -0
  135. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/minimal_patch_plan.md +21 -0
  136. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/patch.diff +9 -0
  137. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/metadata.json +17 -0
  138. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/minimal_patch_plan.md +22 -0
  139. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/patch.diff +10 -0
  140. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
  141. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  142. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  143. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
  144. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
  145. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
  146. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/metadata.json +17 -0
  147. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/minimal_patch_plan.md +23 -0
  148. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/patch.diff +11 -0
  149. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/metadata.json +17 -0
  150. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/minimal_patch_plan.md +23 -0
  151. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/patch.diff +11 -0
  152. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
  153. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
  154. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
  155. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/metadata.json +17 -0
  156. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/minimal_patch_plan.md +21 -0
  157. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/patch.diff +9 -0
  158. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/metadata.json +17 -0
  159. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/minimal_patch_plan.md +21 -0
  160. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/patch.diff +9 -0
  161. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
  162. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
  163. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
  164. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/metadata.json +17 -0
  165. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/minimal_patch_plan.md +21 -0
  166. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/patch.diff +9 -0
  167. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/metadata.json +17 -0
  168. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/minimal_patch_plan.md +21 -0
  169. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/patch.diff +9 -0
  170. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
  171. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
  172. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
  173. package/.torusguard/runs/run-20260912-215731-audit/diff_summary.md +186 -0
  174. package/.torusguard/runs/run-20260912-215731-audit/findings.json +497 -0
  175. package/.torusguard/runs/run-20260912-215731-audit/findings.md +218 -0
  176. package/.torusguard/runs/run-20260912-215731-audit/manifest.json +14 -0
  177. package/.torusguard/runs/run-20260912-215731-audit/recheck.md +76 -0
  178. package/.torusguard/runs/run-20260912-215731-audit/remediation.md +234 -0
  179. package/.torusguard/runs/run-20260912-215731-audit/summary.md +5 -0
  180. package/.torusguard/runs/run-20260912-220134-audit/findings.json +68 -0
  181. package/.torusguard/runs/run-20260912-220134-audit/findings.md +36 -0
  182. package/.torusguard/runs/run-20260912-220134-audit/manifest.json +12 -0
  183. package/.torusguard/runs/run-20260912-220134-audit/summary.md +5 -0
  184. package/.torusguard/runs/run-20260912-220200-audit/findings.json +1 -0
  185. package/.torusguard/runs/run-20260912-220200-audit/findings.md +8 -0
  186. package/.torusguard/runs/run-20260912-220200-audit/manifest.json +12 -0
  187. package/.torusguard/runs/run-20260912-220200-audit/recheck.md +6 -0
  188. package/.torusguard/runs/run-20260912-220200-audit/summary.md +5 -0
  189. package/.torusguard/runs/run-20260912-220227-audit/findings.json +1 -0
  190. package/.torusguard/runs/run-20260912-220227-audit/findings.md +8 -0
  191. package/.torusguard/runs/run-20260912-220227-audit/manifest.json +12 -0
  192. package/.torusguard/runs/run-20260912-220227-audit/recheck.md +6 -0
  193. package/.torusguard/runs/run-20260912-220227-audit/summary.md +5 -0
  194. package/.torusguard/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
  195. package/.torusguard/scripts/__pycache__/diff_guard.cpython-311.pyc +0 -0
  196. package/.torusguard/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
  197. package/.torusguard/scripts/__pycache__/html_reporter.cpython-311.pyc +0 -0
  198. package/.torusguard/scripts/__pycache__/report_sync.cpython-311.pyc +0 -0
  199. package/.torusguard/scripts/__pycache__/rules_sync.cpython-311.pyc +0 -0
  200. package/.torusguard/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
  201. package/.torusguard/scripts/__pycache__/term_ui.cpython-311.pyc +0 -0
  202. package/.torusguard/scripts/apply_runner.py +383 -339
  203. package/.torusguard/scripts/audit_runner.py +1306 -550
  204. package/.torusguard/scripts/finding_scorer.py +14 -2
  205. package/.torusguard/scripts/harden_runner.py +628 -375
  206. package/.torusguard/scripts/recheck_runner.py +248 -221
  207. package/.torusguard/scripts/recipes_runner.py +137 -130
  208. package/.torusguard/scripts/report_sync.py +423 -0
  209. package/.torusguard/scripts/sarif_exporter.py +116 -116
  210. package/.torusguard/scripts/term_ui.py +162 -0
  211. package/.torusguard/skills/torusguard/SKILL.md +61 -31
  212. package/.torusguard/skills/torusguard-apply/SKILL.md +80 -46
  213. package/.torusguard/skills/torusguard-audit/SKILL.md +83 -70
  214. package/.torusguard/skills/torusguard-authorize/SKILL.md +5 -4
  215. package/.torusguard/skills/torusguard-exploit-check/SKILL.md +6 -5
  216. package/.torusguard/skills/torusguard-full/SKILL.md +1 -1
  217. package/.torusguard/skills/torusguard-harden/SKILL.md +94 -63
  218. package/.torusguard/skills/torusguard-init/SKILL.md +64 -52
  219. package/.torusguard/skills/torusguard-recheck/SKILL.md +77 -53
  220. package/.torusguard/skills/torusguard-report/SKILL.md +72 -54
  221. package/.torusguard/skills/torusguard-status/SKILL.md +58 -42
  222. package/.torusguard/skills/torusguard-verify/SKILL.md +8 -7
  223. package/.torusguard/skills/torusguard-web-validate/SKILL.md +8 -7
  224. package/.torusguard/snapshots/run-20260912-215731-audit/demo/playground/vulnerable_nextjs/actions.ts.bak +24 -0
  225. package/.torusguard/snapshots/run-20260912-215731-audit/examples/hardened-react-express/server/index.js.bak +121 -0
  226. package/.torusguard/snapshots/run-20260912-215731-audit/examples/python/fastapi-vuln/main.py.bak +20 -0
  227. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/src/App.jsx.bak +63 -0
  228. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/vite.config.js.bak +12 -0
  229. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/server/index.js.bak +82 -0
  230. package/.torusguard/workflows/apply.md +11 -4
  231. package/.torusguard/workflows/audit.md +7 -1
  232. package/.torusguard/workflows/authorize.md +2 -1
  233. package/.torusguard/workflows/exploit-check.md +2 -1
  234. package/.torusguard/workflows/harden.md +7 -1
  235. package/.torusguard/workflows/init.md +6 -1
  236. package/.torusguard/workflows/memory.md +2 -1
  237. package/.torusguard/workflows/recheck.md +7 -1
  238. package/.torusguard/workflows/report.md +7 -1
  239. package/.torusguard/workflows/status.md +6 -1
  240. package/.torusguard/workflows/verify.md +6 -1
  241. package/.torusguard/workflows/web-validate.md +2 -1
  242. package/README.md +470 -344
  243. package/bin/torusguard.js +209 -97
  244. package/package.json +1 -1
  245. package/skills/torusguard/SKILL.md +73 -42
  246. package/skills/torusguard/payload/.manifest.json +66 -63
  247. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
  248. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
  249. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
  250. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
  251. package/skills/torusguard/payload/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
  252. package/skills/torusguard/payload/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
  253. package/skills/torusguard/payload/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
  254. package/skills/torusguard/payload/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
  255. package/skills/torusguard/payload/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
  256. package/skills/torusguard/payload/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
  257. package/skills/torusguard/payload/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
  258. package/skills/torusguard/payload/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
  259. package/skills/torusguard/payload/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
  260. package/skills/torusguard/payload/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
  261. package/skills/torusguard/payload/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
  262. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
  263. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
  264. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
  265. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
  266. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
  267. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
  268. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
  269. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
  270. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
  271. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
  272. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
  273. package/skills/torusguard/payload/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
  274. package/skills/torusguard/payload/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
  275. package/skills/torusguard/payload/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
  276. package/skills/torusguard/payload/rules_catalog.json +520 -0
  277. package/skills/torusguard/payload/scripts/apply_runner.py +383 -339
  278. package/skills/torusguard/payload/scripts/audit_runner.py +1306 -550
  279. package/skills/torusguard/payload/scripts/finding_scorer.py +14 -2
  280. package/skills/torusguard/payload/scripts/harden_runner.py +628 -375
  281. package/skills/torusguard/payload/scripts/recheck_runner.py +248 -221
  282. package/skills/torusguard/payload/scripts/recipes_runner.py +137 -130
  283. package/skills/torusguard/payload/scripts/report_sync.py +423 -0
  284. package/skills/torusguard/payload/scripts/sarif_exporter.py +116 -116
  285. package/skills/torusguard/payload/scripts/term_ui.py +162 -0
  286. package/skills/torusguard/payload/skills/torusguard/SKILL.md +75 -42
  287. package/skills/torusguard/payload/skills/torusguard-apply/SKILL.md +63 -25
  288. package/skills/torusguard/payload/skills/torusguard-audit/SKILL.md +62 -45
  289. package/skills/torusguard/payload/skills/torusguard-authorize/SKILL.md +11 -5
  290. package/skills/torusguard/payload/skills/torusguard-exploit-check/SKILL.md +12 -6
  291. package/skills/torusguard/payload/skills/torusguard-full/SKILL.md +7 -2
  292. package/skills/torusguard/payload/skills/torusguard-harden/SKILL.md +71 -36
  293. package/skills/torusguard/payload/skills/torusguard-init/SKILL.md +45 -29
  294. package/skills/torusguard/payload/skills/torusguard-recheck/SKILL.md +59 -31
  295. package/skills/torusguard/payload/skills/torusguard-report/SKILL.md +52 -30
  296. package/skills/torusguard/payload/skills/torusguard-status/SKILL.md +40 -20
  297. package/skills/torusguard/payload/skills/torusguard-verify/SKILL.md +14 -8
  298. package/skills/torusguard/payload/skills/torusguard-web-validate/SKILL.md +14 -8
  299. package/skills/torusguard/payload/workflows/apply.md +11 -4
  300. package/skills/torusguard/payload/workflows/audit.md +7 -1
  301. package/skills/torusguard/payload/workflows/authorize.md +2 -1
  302. package/skills/torusguard/payload/workflows/exploit-check.md +2 -1
  303. package/skills/torusguard/payload/workflows/harden.md +7 -1
  304. package/skills/torusguard/payload/workflows/init.md +6 -1
  305. package/skills/torusguard/payload/workflows/memory.md +2 -1
  306. package/skills/torusguard/payload/workflows/recheck.md +7 -1
  307. package/skills/torusguard/payload/workflows/report.md +7 -1
  308. package/skills/torusguard/payload/workflows/status.md +6 -1
  309. package/skills/torusguard/payload/workflows/verify.md +6 -1
  310. package/skills/torusguard/payload/workflows/web-validate.md +2 -1
  311. package/skills/torusguard-apply/SKILL.md +63 -27
  312. package/skills/torusguard-audit/SKILL.md +62 -50
  313. package/skills/torusguard-authorize/SKILL.md +7 -2
  314. package/skills/torusguard-exploit-check/SKILL.md +7 -2
  315. package/skills/torusguard-full/SKILL.md +7 -2
  316. package/skills/torusguard-harden/SKILL.md +71 -40
  317. package/skills/torusguard-init/SKILL.md +45 -30
  318. package/skills/torusguard-recheck/SKILL.md +59 -32
  319. package/skills/torusguard-report/SKILL.md +52 -31
  320. package/skills/torusguard-status/SKILL.md +40 -21
  321. package/skills/torusguard-verify/SKILL.md +7 -2
  322. package/skills/torusguard-web-validate/SKILL.md +7 -2
@@ -1,63 +1,94 @@
1
- ---
2
- name: torusguard-harden
3
- description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions).
4
- version: 1.0.0
5
- workflow: .torusguard/workflows/harden.md
6
- tools: Read, Grep, Glob, Write
7
- scripts-binding:
8
- - .torusguard/scripts/run_manager.py
9
- - .torusguard/scripts/diff_guard.py
10
- ---
11
-
12
- # TorusGuard Harden — Governed Remediation & Bundle Packaging
13
-
14
- ## Objective
15
- Formulate minimal, surgical code fixes bound by the Ponytail Protocol ($\le 35$ additions, $\le 25$ deletions), packaging unified diffs into auditable 4-artifact remediation bundles ready for review.
16
-
17
- ---
18
-
19
- ## The Ponytail Protocol
20
- - **Limits:** Additions $\le 35$, Deletions $\le 25$ lines per bundle.
21
- - **Invariants:** Zero full-file rewrites; preserve public APIs and tests.
22
- - **Overflow:** Partition into sequential sub-bundles.
23
-
24
- ---
25
-
26
- ## Bundle Directory Structure
27
- ```
28
- .torusguard/runs/<run_id>/remediation/<finding_id>/
29
- ├── patch.diff # Standard unified diff with line numbers
30
- ├── plan.md # Rationale and root-cause breakdown
31
- ├── verification.md # Test instructions proving fix works
32
- └── rollback.md # Command or steps to revert patch
33
- ```
34
-
35
- ---
36
-
37
- ## Execution Steps
38
-
39
- 1. **Select Finding:** Choose prioritized verified flaw from active run's `findings.md`.
40
- 2. **Read AST Context:** View target file surrounding lines (±15) using `view_file`.
41
- 3. **Formulate Minimal Fix:** Consult `.torusguard/memory/context.json` for verified idioms; parameterize SQL, add tenant filters.
42
- 4. **Validate Line Churn:** Assert additions $\le 35$ and deletions $\le 25$ via `diff_guard.py`.
43
- 5. **Package Bundle:** Write 4 artifacts (`patch.diff`, `plan.md`, `verification.md`, `rollback.md`).
44
- 6. **Flag Sensitive Paths:** Mark changes touching auth or billing with `Requires Sensitive-Path Sign-Off`.
45
-
46
- ---
47
-
48
- ## Safety Constraints
49
- - Dry-run only; do NOT apply modifications to source code during harden.
50
- - Keep surrounding formatting and comments intact.
51
- - Never touch files outside the targeted vulnerable sink.
52
-
53
- ---
54
-
55
- ## Output Format
56
- ```markdown
57
- 🛠️ [TorusGuard] Remediation Bundle Packaged
58
- - Finding Target: <Finding ID> | File: <Path>
59
- - Line Churn: +<Additions> / -<Deletions> (Ponytail: PASS)
60
- - Sensitive Path: <Yes/No>
61
- - Bundle Path: `.torusguard/runs/<run_id>/remediation/<finding_id>/`
62
- Next: Run `/torusguard apply` to review diff and apply with rollback backup.
63
- ```
1
+ ---
2
+ name: torusguard-harden
3
+ description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions) via CLI or AI Agent.
4
+ version: 1.3.4
5
+ workflow: .torusguard/workflows/harden.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/harden_runner.py
9
+ - .torusguard/scripts/diff_guard.py
10
+ - .torusguard/scripts/term_ui.py
11
+ ---
12
+
13
+ # TorusGuard Harden — Governed Remediation & Bundle Packaging
14
+
15
+ ## Objective
16
+ Formulate minimal, surgical code fixes bound by the Ponytail Protocol ($\le 35$ additions, $\le 25$ deletions), packaging unified diffs into auditable remediation bundles ready for review.
17
+
18
+ ---
19
+
20
+ ## Two Execution Modes
21
+
22
+ ### Mode A: Automated CLI Execution (Recommended First Step)
23
+ Run the autonomous remediation engine via the terminal:
24
+ ```bash
25
+ # Harden latest audit run
26
+ npx torusguard harden
27
+
28
+ # Harden specific project directory
29
+ npx torusguard harden ./my-project
30
+
31
+ # Harden specific run ID
32
+ npx torusguard harden --run run-20260910-121618-audit
33
+
34
+ # Machine-readable JSON output
35
+ npx torusguard harden --json
36
+ ```
37
+ **Under the Hood:** Executes `python .torusguard/scripts/harden_runner.py`.
38
+ - Discovers findings in `.torusguard/runs/<run_id>/findings.json`.
39
+ - Matches findings against canonical AST patch templates (`TG-SEC-*`, `TG-INPUT-*`, `TG-DB-*`, `TG-PLATFORM-*`, `TG-AUTH-*`, `TG-DIFF-*`).
40
+ - Validates that every candidate patch strictly satisfies Ponytail bounds ($\le 35$ additions, $\le 25$ deletions).
41
+ - Packages candidate bundles into `.torusguard/runs/<run_id>/bundles/<bundle_id>/` containing `patch.diff`, `minimal_patch_plan.md`, and `metadata.json`.
42
+ - Emits run-level summary `remediation.md`.
43
+ - Renders pixel-perfect 75-column terminal cards.
44
+
45
+ ### Mode B: In-Session AI Chat Agent Remediation
46
+ When findings require complex architectural changes, or when the automated CLI cannot formulate a template match:
47
+ 1. **Locate Target Finding:** Inspect `.torusguard/runs/<run_id>/findings.md` or `findings.json`.
48
+ 2. **Inspect AST Context:** Read surrounding lines ($\pm 15$) of the vulnerable sink using `view_file`.
49
+ 3. **Formulate Minimal Fix:** Craft a surgical code modification:
50
+ - Parameterize SQL queries (replace concatenation with `?` or `$1` or `%s`).
51
+ - Add tenant isolation (`where: { tenantId }`, `organization_id=...`).
52
+ - Replace unsafe HTML injection (`dangerouslySetInnerHTML`, `.innerHTML = ...`) with safe text rendering (`textContent`, React elements).
53
+ - Sanitize path traversal using `path.basename()` or `os.path.basename()`.
54
+ - Constrain wildcard CORS headers to verified origin environment variables.
55
+ - Restore TLS verification flags (`verify=True`, `rejectUnauthorized: true`).
56
+ 4. **Validate Ponytail Bounds:** Count additions ($\le 35$) and deletions ($\le 25$). Never perform full-file rewrites.
57
+ 5. **Package Bundle Artifacts:** Write bundle under `.torusguard/runs/<run_id>/bundles/<bundle_id>/`:
58
+ - `patch.diff`: Standard unified diff.
59
+ - `minimal_patch_plan.md`: Context, rationale, and diff preview.
60
+ - `metadata.json`: Bundle metadata.
61
+ 6. **Report to Operator:** Present proposed diff card and recommend running `/torusguard apply` or `npx torusguard apply`.
62
+
63
+ ---
64
+
65
+ ## Remediation Bundle Structure
66
+ ```
67
+ .torusguard/runs/<run_id>/
68
+ ├── remediation.md # Run-level catalog of formulated candidate patches
69
+ └── bundles/
70
+ └── bnd-<rule_id>-<line>-<hash>/
71
+ ├── patch.diff # Unified diff preview
72
+ ├── minimal_patch_plan.md # Detailed explanation, rationale, and churn stats
73
+ └── metadata.json # Machine-readable bundle metadata
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Non-Negotiable Invariants
79
+ - **Ponytail Limit:** Strict upper bound of $\le 35$ additions and $\le 25$ deletions per bundle.
80
+ - **Dry-Run Rule:** Never modify target source code during `harden`. All edits must be reviewed before application in Phase 5 (`apply`).
81
+ - **No Unrelated Churn:** Do not reformat unrelated code, reorder imports, or change styles.
82
+ - **Zero Security Bypasses:** Never insert `# nosec`, `verify=False`, `[AllowAnonymous]`, or `csrf().disable()`.
83
+
84
+ ---
85
+
86
+ ## Output Card Format
87
+ ```markdown
88
+ ### 🛠️ TorusGuard Remediation Bundle Formulated
89
+ - **Target Finding:** `[TG-SEC-001]` at `server/index.js:9`
90
+ - **Ponytail Churn:** +1 / -1 (Compliant <= 35 add, <= 25 del)
91
+ - **Strategy:** Migrated hardcoded JWT secret to environment variable process.env.JWT_SECRET
92
+ - **Bundle Directory:** `.torusguard/runs/<run_id>/bundles/bnd-tg-sec-001-9-a8310c/`
93
+ - **Next Step:** Run `npx torusguard apply` or `/torusguard apply` to review and apply
94
+ ```
@@ -1,52 +1,64 @@
1
- ---
2
- name: torusguard-init
3
- description: Initialize TorusGuard workspace — detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline.
4
- version: 0.9.2
5
- workflow: .torusguard/workflows/init.md
6
- tools: Read, Grep, Glob, Write
7
- scripts-binding:
8
- - .torusguard/scripts/stack_detect.py
9
- ---
10
-
11
- # TorusGuard Init — Project Stack Discovery & Rule Activation
12
-
13
- ## Objective
14
- Auto-detect repository technology stack via indicators or `stack_detect.py`, activate framework-tailored `TG-*` security rules into `.torusguard/rules/active/`, and provision `torusguard.json` and `SECURITY.md`.
15
-
16
- ---
17
-
18
- ## Pre-Flight Check
19
- 1. Verify `.torusguard/` layout (`config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`).
20
- 2. If missing, unpack via `python skills/torusguard/bootstrap.py --target .`.
21
- 3. Check existing `.torusguard/config/torusguard.json` before overwriting.
22
-
23
- ---
24
-
25
- ## Execution Steps
26
-
27
- 1. **Stack Detection:** Run `python .torusguard/scripts/stack_detect.py .` to detect:
28
- - Python: Django (`manage.py`), FastAPI (`fastapi`), Flask (`flask`), SQLAlchemy.
29
- - Node: Next.js (`"next"`), Express (`"express"`), React/Vite (`"vite"`).
30
- - BaaS: Supabase (`@supabase/supabase-js`), Firebase (`firebase-admin`).
31
- 2. **Emit Stack Record:** Log detected language, framework, ORM, and client SDKs.
32
- 3. **Activate Tailored Rules:** Copy matching `TG-*` rules from `.torusguard/rules/` into `.torusguard/rules/active/`.
33
- 4. **Provision Policy:** Create `SECURITY.md` if absent, configuring responsible disclosure contacts.
34
- 5. **Write Configuration:** Persist detected stack and active rules count to `.torusguard/config/torusguard.json`.
35
-
36
- ---
37
-
38
- ## Safety Constraints
39
- - Never overwrite custom rules in `.torusguard/rules/active/` without prompt.
40
- - Retain existing `SECURITY.md` if already established by repository owners.
41
- - Strictly read-only detection against source files.
42
-
43
- ---
44
-
45
- ## Output Format
46
- ```markdown
47
- 🛡️ [TorusGuard] Workspace Initialized
48
- - Primary Stack: <Detected Stack> | Components: <Backend/Frontend/DB>
49
- - Active Rules: <Count> rules enabled in `.torusguard/rules/active/`
50
- - Configuration: `.torusguard/config/torusguard.json` written
51
- Next: Run `/torusguard audit` to execute static security scan.
52
- ```
1
+ ---
2
+ name: torusguard-init
3
+ description: Initialize TorusGuard workspace — detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline via CLI or AI Agent.
4
+ version: 1.3.4
5
+ workflow: .torusguard/workflows/init.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/stack_detect.py
9
+ - .torusguard/scripts/term_ui.py
10
+ ---
11
+
12
+ # TorusGuard Init — Project Stack Discovery & Rule Activation
13
+
14
+ ## Objective
15
+ Auto-detect repository technology stack across 16+ languages and frameworks, provision the `.torusguard/` workspace structure, activate tailored `TG-*` security rules into `.torusguard/rules/active/`, and generate `SECURITY.md` baseline policies.
16
+
17
+ ---
18
+
19
+ ## Two Execution Modes
20
+
21
+ ### Mode A: Automated CLI Execution
22
+ Run the workspace initializer from your terminal:
23
+ ```bash
24
+ # Initialize current repository
25
+ npx torusguard init
26
+
27
+ # Initialize specific directory
28
+ npx torusguard init ./my-app
29
+
30
+ # Force re-initialization (overwriting existing configuration)
31
+ npx torusguard init --force
32
+
33
+ # Explicitly specify stack (e.g. react, nextjs, django, fastapi, express)
34
+ npx torusguard init --stack express
35
+ ```
36
+ **Under the Hood:**
37
+ - Runs `stack_detect.py` to inspect package files (`package.json`, `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `Gemfile`, `composer.json`, `*.csproj`).
38
+ - Detects backend frameworks, frontend libraries, ORMs (Prisma, Mongoose, SQLAlchemy, Django ORM), and authentication systems.
39
+ - Scaffolds `.torusguard/` directory tree: `config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`, `memory/`, `snapshots/`.
40
+ - Copies tailored rule definitions into `.torusguard/rules/active/`.
41
+ - Provisions `SECURITY.md` with standard responsible disclosure contacts.
42
+ - Writes `.torusguard/config/torusguard.json`.
43
+ - Displays 75-column terminal cards.
44
+
45
+ ### Mode B: In-Session AI Chat Agent Initialization
46
+ When initializing a workspace directly in AI chat:
47
+ 1. **Detect Stack:** Inspect root files (`package.json`, `requirements.txt`, etc.) to determine languages and frameworks.
48
+ 2. **Bootstrap Structure:** Ensure `.torusguard/` structure exists. If missing, run `python skills/torusguard/bootstrap.py --target .`.
49
+ 3. **Activate Rules:** Populate `.torusguard/rules/active/` with applicable rule files from `rules/`.
50
+ 4. **Provision Policy:** Create `SECURITY.md` if not already present.
51
+ 5. **Write Configuration:** Persist settings into `.torusguard/config/torusguard.json`.
52
+ 6. **Prompt Audit:** Advise the user to run `npx torusguard audit` or `/torusguard audit`.
53
+
54
+ ---
55
+
56
+ ## Output Card Format
57
+ ```markdown
58
+ ### 🛡️ TorusGuard Workspace Initialized Successfully
59
+ - **Primary Stack:** Node.js / React / Express
60
+ - **Active Rules:** 71 canonical security rules enabled in `.torusguard/rules/active/`
61
+ - **Configuration:** Written to `.torusguard/config/torusguard.json`
62
+ - **Security Policy:** Baseline `SECURITY.md` generated
63
+ - **Next Step:** Run `npx torusguard audit` or `/torusguard audit` to scan for flaws
64
+ ```
@@ -1,53 +1,77 @@
1
- ---
2
- name: torusguard-recheck
3
- description: Execute targeted differential AST re-scan against modified files, verify fix closure, and assert zero regressions.
4
- version: 1.0.0
5
- workflow: .torusguard/workflows/recheck.md
6
- tools: Read, Grep, Glob, Write
7
- scripts-binding:
8
- - .torusguard/scripts/run_manager.py
9
- - .torusguard/scripts/finding_scorer.py
10
- ---
11
-
12
- # TorusGuard Recheck — Targeted Differential Audit & Regression Verification
13
-
14
- ## Objective
15
- Re-scan only files modified by remediation patches, confirming that targeted vulnerability sinks have been neutralized and verifying that no new security regressions were introduced.
16
-
17
- ---
18
-
19
- ## Execution Steps
20
-
21
- 1. **Identify Modified Files:** Read `apply-log.json` from active run directory.
22
- 2. **Execute Differential Scan:** Re-run active `TG-*` rules exclusively against modified files.
23
- 3. **Evaluate Finding Status:** Transition finding state according to transition rules below.
24
- 4. **Assert Regression-Free:** Ensure no new security warnings triggered on altered lines.
25
- 5. **Update State & Memory:** Record status in `findings.json` and sync verified results to memory engine.
26
- 6. **Emit Recheck Report:** Save summary in `.torusguard/runs/<run_id>/recheck-report.md`.
27
-
28
- ---
29
-
30
- ## State Transition Rules
31
- - **`Fixed`:** Targeted vulnerable AST pattern is absent and no new issues appear on modified lines.
32
- - **`Partially Fixed`:** Vulnerability surface was reduced but sanitization remains incomplete.
33
- - **`Not Fixed`:** Vulnerable AST sink remains present in patched file.
34
- - **`Regression`:** Patch introduced a new security rule violation on modified lines.
35
-
36
- ---
37
-
38
- ## Safety Constraints
39
- - Restrict AST scan strictly to modified files and direct callers.
40
- - If regression is detected, halt and recommend immediate rollback via `.bak` snapshot.
41
- - Read-only differential analysis.
42
-
43
- ---
44
-
45
- ## Output Format
46
- ```markdown
47
- ✅ [TorusGuard] Differential Recheck Completed
48
- - Modified Files Scanned: <Count>
49
- - Target Finding: <Finding ID> ──► FIXED
50
- - Regressions Detected: 0
51
- - Report: `.torusguard/runs/<run_id>/recheck-report.md`
52
- Next: Run `/torusguard report` to export final SARIF and release summary.
53
- ```
1
+ ---
2
+ name: torusguard-recheck
3
+ description: Execute targeted differential AST re-scan against modified files, verify fix closure, and assert zero regressions via CLI or AI Agent.
4
+ version: 1.3.4
5
+ workflow: .torusguard/workflows/recheck.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/recheck_runner.py
9
+ - .torusguard/scripts/audit_runner.py
10
+ - .torusguard/scripts/memory_engine.py
11
+ - .torusguard/scripts/term_ui.py
12
+ ---
13
+
14
+ # TorusGuard Recheck — Targeted Differential Audit & Fix Closure
15
+
16
+ ## Objective
17
+ Execute differential security re-scans strictly scoped to modified files and adjacent boundaries, verifying that targeted vulnerability patterns have been eliminated and asserting zero security regressions.
18
+
19
+ ---
20
+
21
+ ## Two Execution Modes
22
+
23
+ ### Mode A: Automated CLI Execution
24
+ Run the differential recheck engine from the terminal:
25
+ ```bash
26
+ # Recheck the latest applied run
27
+ npx torusguard recheck
28
+
29
+ # Recheck a specific project directory
30
+ npx torusguard recheck ./my-project
31
+
32
+ # Recheck a specific run ID
33
+ npx torusguard recheck --run run-20260910-121618-audit
34
+
35
+ # Machine-readable JSON output
36
+ npx torusguard recheck --json
37
+ ```
38
+ **Under the Hood:** Executes `python .torusguard/scripts/recheck_runner.py`.
39
+ - Evaluates applied candidate bundles from `.torusguard/runs/<run_id>/bundles/`.
40
+ - Executes single-file targeted differential AST scans via `audit_runner.scan_file()`.
41
+ - Calculates formal status transitions:
42
+ - `✔ [Confirmed Fixed]`: Vulnerable pattern absent, zero regressions.
43
+ - `✖ [Regressed]`: New security finding introduced by patch.
44
+ - `⚠ [Unresolved]`: Vulnerable sink still present.
45
+ - Emits run-level transition artifact: `.torusguard/runs/<run_id>/recheck.md`.
46
+ - Synchronizes verification telemetry to `.torusguard/memory/events.json`.
47
+ - Displays 75-column terminal cards.
48
+
49
+ ### Mode B: In-Session AI Chat Agent Differential Scan
50
+ When evaluating patches directly in AI chat:
51
+ 1. **Identify Modified Files:** Read `diff_summary.md` or git status for files modified in the active run.
52
+ 2. **Re-Scan Sinks:** View the target file and verify that the specific rule violation (e.g. `TG-INPUT-003`, `TG-PLATFORM-001`) is no longer triggered.
53
+ 3. **Assert Zero Regressions:** Verify that no new vulnerabilities (like raw concatenation or unvalidated input) were introduced by the fix.
54
+ 4. **Update Status:** Log outcome in `.torusguard/runs/<run_id>/recheck.md`.
55
+ 5. **Memory Telemetry:** Record verification event with `memory_engine.record_event("fix_verified", ...)`.
56
+
57
+ ---
58
+
59
+ ## Recheck Status Transitions
60
+ | Outcome | Visual Indicator | Meaning | Required Action |
61
+ | :--- | :--- | :--- | :--- |
62
+ | **Confirmed Fixed** | `✔ [Confirmed Fixed]` | Sink eliminated, zero regressions | Proceed to Posture Report |
63
+ | **Unresolved** | `⚠ [Unresolved]` | Flaw still present in file | Re-harden with alternative pattern |
64
+ | **Regressed** | `✖ [Regressed]` | New security flaw introduced | Instant `npx torusguard rollback` |
65
+
66
+ ---
67
+
68
+ ## Output Card Format
69
+ ```markdown
70
+ ### ✅ TorusGuard Differential Recheck Completed
71
+ - **Run ID:** `run-20260910-121618-audit`
72
+ - **Confirmed Fixed:** 2 vulnerabilities verified closed
73
+ - **Regressions:** 0 detected
74
+ - **Unresolved:** 0
75
+ - **Artifact:** `.torusguard/runs/<run_id>/recheck.md`
76
+ - **Next Step:** Run `npx torusguard report --html` for visual dashboard
77
+ ```
@@ -1,54 +1,72 @@
1
- ---
2
- name: torusguard-report
3
- description: Generate unified security posture reports and export OASIS SARIF v2.1.0 logs for CI/CD integration.
4
- version: 0.9.2
5
- workflow: .torusguard/workflows/report.md
6
- tools: Read, Grep, Glob, Write
7
- scripts-binding:
8
- - .torusguard/scripts/sarif_exporter.py
9
- - .torusguard/scripts/run_manager.py
10
- ---
11
-
12
- # TorusGuard Report — Unified Security Posture Report & SARIF Export
13
-
14
- ## Objective
15
- Aggregate findings, verification traces, and recheck results into a signed executive security summary and export schema-compliant OASIS SARIF v2.1.0 logs for CI/CD pipelines.
16
-
17
- ---
18
-
19
- ## Execution Steps
20
-
21
- 1. **Aggregate Run Data:** Read findings, verified evidence, and recheck records from active run.
22
- 2. **Export OASIS SARIF v2.1.0:**
23
- ```bash
24
- python .torusguard/scripts/sarif_exporter.py --run <run_dir> --output <run_dir>/results.sarif
25
- ```
26
- 3. **Compile Executive Markdown Report:** Generate `report.md` with posture score, open/closed finding tables, and risk breakdown.
27
- 4. **Update Run Manifest:** Finalize `manifest.json` status counts.
28
- 5. **Archive Release Artifacts:** Ensure `report.md` and `results.sarif` are serialized to disk.
29
-
30
- ---
31
-
32
- ## SARIF v2.1.0 Output Specification
33
- - **Version:** `$schema: https://docs.oasis-open.org/sarif/sarif/v2.1.0/cos02/schemas/sarif-schema-2.1.0.json`, `version: 2.1.0`.
34
- - **Tool Driver:** `name: TorusGuard`, `semanticVersion: 0.9.2`, full rules catalog in `driver.rules`.
35
- - **Category Hygiene:** Set `automationDetails.id: "torusguard/static"` to avoid collisions in multi-analysis CI.
36
- - **Fingerprinting:** Populate `partialFingerprints.primaryLocationLineHash` with SHA-256 context hash.
37
-
38
- ---
39
-
40
- ## Safety Constraints
41
- - Redact all tokens, passwords, and API keys before saving report.
42
- - Strictly read-only reporting; no source code modifications.
43
- - Ensure SARIF passes JSON schema validation.
44
-
45
- ---
46
-
47
- ## Output Format
48
- ```markdown
49
- 📊 [TorusGuard] Security Posture Report Emitted
50
- - Run ID: <Run ID> | Posture Score: <Score>/100
51
- - Findings: <Total> (<Fixed> Fixed · <Open> Open)
52
- - SARIF Export: `.torusguard/runs/<run_id>/results.sarif`
53
- - Executive Report: `.torusguard/runs/<run_id>/report.md`
54
- ```
1
+ ---
2
+ name: torusguard-report
3
+ description: Generate executive posture reports, export OASIS SARIF v2.1.0 logs, and render dark-mode HTML dashboards via CLI or AI Agent.
4
+ version: 1.3.4
5
+ workflow: .torusguard/workflows/report.md
6
+ tools: Read, Grep, Glob, Write, run_command
7
+ scripts-binding:
8
+ - .torusguard/scripts/html_reporter.py
9
+ - .torusguard/scripts/sarif_exporter.py
10
+ - .torusguard/scripts/run_manager.py
11
+ - .torusguard/scripts/term_ui.py
12
+ ---
13
+
14
+ # TorusGuard Report — Posture Reporting & SARIF / HTML Export
15
+
16
+ ## Objective
17
+ Aggregate findings, verification traces, and recheck results into an auditable executive security report, export schema-compliant OASIS SARIF v2.1.0 logs for CI/CD pipelines, and render zero-dependency single-file visual HTML posture reports.
18
+
19
+ ---
20
+
21
+ ## Two Execution Modes
22
+
23
+ ### Mode A: Automated CLI Execution
24
+ Run the report engine from your terminal:
25
+ ```bash
26
+ # Generate visual dark-mode HTML dashboard
27
+ npx torusguard report --html
28
+
29
+ # Export OASIS SARIF v2.1.0 for GitHub Code Scanning / CI
30
+ npx torusguard report --sarif
31
+
32
+ # Generate both HTML and SARIF for latest run
33
+ npx torusguard report --html --sarif
34
+
35
+ # Generate report for a specific project directory
36
+ npx torusguard report ./examples/vulnerable-react-express --html
37
+
38
+ # Target a specific run ID
39
+ npx torusguard report --run run-20260910-121618-audit --html
40
+ ```
41
+ **Under the Hood:**
42
+ - Invokes `python .torusguard/scripts/html_reporter.py` to compile self-contained, offline-ready HTML reports with dynamic filtering, posture gauge, and cluster summaries at `.torusguard/runs/<run_id>/report.html`.
43
+ - Invokes `python .torusguard/scripts/sarif_exporter.py` to produce OASIS SARIF v2.1.0 logs at `.torusguard/runs/<run_id>/results.sarif`.
44
+ - Finalizes `manifest.json` metrics and updates historical posture scoring.
45
+ - Displays 75-column terminal cards.
46
+
47
+ ### Mode B: In-Session AI Chat Agent Reporting
48
+ When generating security posture summaries in AI chat:
49
+ 1. **Aggregate Run Data:** Inspect `findings.json`, `remediation.md`, and `recheck.md` from the active run.
50
+ 2. **Calculate Posture Score:** Compute posture score ($0$–$100$) based on severity weighting (Critical: 25, High: 15, Medium: 5, Low: 2).
51
+ 3. **Format Executive Card:** Present finding counts, closed vulnerabilities, remaining risks, and compliance posture.
52
+ 4. **Export Artifacts:** Verify that `report.html` and `results.sarif` are serialized to disk.
53
+
54
+ ---
55
+
56
+ ## SARIF v2.1.0 Specification
57
+ - **Schema:** `https://docs.oasis-open.org/sarif/sarif/v2.1.0/cos02/schemas/sarif-schema-2.1.0.json`
58
+ - **Tool Driver:** `name: TorusGuard`, `semanticVersion: 1.3.3`, full rules catalog in `driver.rules`.
59
+ - **Automation Details:** `automationDetails.id: "torusguard/static"` to avoid collisions in multi-scanner CI/CD pipelines.
60
+ - **Fingerprints:** `partialFingerprints.primaryLocationLineHash` with SHA-256 context hash.
61
+
62
+ ---
63
+
64
+ ## Output Card Format
65
+ ```markdown
66
+ ### 📊 TorusGuard Security Posture Report Emitted
67
+ - **Run ID:** `run-20260910-121618-audit`
68
+ - **Posture Score:** 85 / 100 (HIGH SECURITY)
69
+ - **Findings Summary:** 3 Evaluated · 2 Confirmed Fixed · 1 Unresolved
70
+ - **HTML Dashboard:** `.torusguard/runs/<run_id>/report.html` (View in browser)
71
+ - **SARIF v2.1.0 Export:** `.torusguard/runs/<run_id>/results.sarif` (Ready for CI)
72
+ ```