blockmine 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/.claude/agents/README.md +469 -0
  2. package/.claude/agents/auth-route-debugger.md +118 -0
  3. package/.claude/agents/auth-route-tester.md +93 -0
  4. package/.claude/agents/auto-error-resolver.md +97 -0
  5. package/.claude/agents/build-optimizer.md +236 -0
  6. package/.claude/agents/code-architecture-reviewer.md +83 -0
  7. package/.claude/agents/code-refactor-master.md +94 -0
  8. package/.claude/agents/cost-optimizer.md +134 -0
  9. package/.claude/agents/deployment-orchestrator.md +113 -0
  10. package/.claude/agents/documentation-architect.md +82 -0
  11. package/.claude/agents/frontend-error-fixer.md +77 -0
  12. package/.claude/agents/iac-code-generator.md +71 -0
  13. package/.claude/agents/incident-responder.md +346 -0
  14. package/.claude/agents/infrastructure-architect.md +31 -0
  15. package/.claude/agents/kubernetes-specialist.md +56 -0
  16. package/.claude/agents/migration-planner.md +181 -0
  17. package/.claude/agents/network-architect.md +196 -0
  18. package/.claude/agents/plan-reviewer.md +52 -0
  19. package/.claude/agents/refactor-planner.md +63 -0
  20. package/.claude/agents/security-scanner.md +102 -0
  21. package/.claude/agents/web-research-specialist.md +78 -0
  22. package/.claude/commands/cost-analysis.md +315 -0
  23. package/.claude/commands/dev-docs-update.md +55 -0
  24. package/.claude/commands/dev-docs.md +51 -0
  25. package/.claude/commands/incident-debug.md +247 -0
  26. package/.claude/commands/infra-plan.md +81 -0
  27. package/.claude/commands/migration-plan.md +478 -0
  28. package/.claude/commands/route-research-for-testing.md +37 -0
  29. package/.claude/commands/security-review.md +66 -0
  30. package/.claude/hooks/CONFIG.md +448 -0
  31. package/.claude/hooks/README.md +163 -0
  32. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
  33. package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
  34. package/.claude/hooks/add-skill-activation-banners.ts +132 -0
  35. package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
  36. package/.claude/hooks/error-handling-reminder.sh +12 -0
  37. package/.claude/hooks/error-handling-reminder.ts +222 -0
  38. package/.claude/hooks/k8s-manifest-validator.sh +56 -0
  39. package/.claude/hooks/package-lock.json +556 -0
  40. package/.claude/hooks/package.json +16 -0
  41. package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
  42. package/.claude/hooks/post-tool-use-tracker.sh +183 -0
  43. package/.claude/hooks/security-policy-check.sh +247 -0
  44. package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
  45. package/.claude/hooks/skill-activation-prompt.sh +10 -0
  46. package/.claude/hooks/skill-activation-prompt.ts +141 -0
  47. package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
  48. package/.claude/hooks/terraform-validator.sh +53 -0
  49. package/.claude/hooks/test-input.json +7 -0
  50. package/.claude/hooks/test-skill-activation.ts +427 -0
  51. package/.claude/hooks/trigger-build-resolver.sh +79 -0
  52. package/.claude/hooks/tsc-check.sh +173 -0
  53. package/.claude/hooks/tsconfig.json +19 -0
  54. package/.claude/settings.json +55 -0
  55. package/.claude/settings.local.json +27 -14
  56. package/.claude/skills/README.md +507 -0
  57. package/.claude/skills/api-engineering/SKILL.md +63 -0
  58. package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
  59. package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
  60. package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
  61. package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
  62. package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
  63. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  64. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  65. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  66. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  67. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  68. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  69. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  70. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  71. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  72. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  73. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  74. package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
  75. package/.claude/skills/build-engineering/SKILL.md +431 -0
  76. package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
  77. package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
  78. package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
  79. package/.claude/skills/build-engineering/resources/build-security.md +95 -0
  80. package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
  81. package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
  82. package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
  83. package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
  84. package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
  85. package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
  86. package/.claude/skills/cloud-engineering/SKILL.md +675 -0
  87. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
  88. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
  89. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
  90. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
  91. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
  92. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
  93. package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
  94. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
  95. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
  96. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
  97. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
  98. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
  99. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
  100. package/.claude/skills/cybersecurity/SKILL.md +409 -0
  101. package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
  102. package/.claude/skills/database-engineering/SKILL.md +61 -0
  103. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
  104. package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
  105. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
  106. package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
  107. package/.claude/skills/devsecops/SKILL.md +374 -0
  108. package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
  109. package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
  110. package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
  111. package/.claude/skills/devsecops/resources/container-security.md +915 -0
  112. package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
  113. package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
  114. package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
  115. package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
  116. package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
  117. package/.claude/skills/devsecops/resources/security-testing.md +203 -0
  118. package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
  119. package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
  120. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
  121. package/.claude/skills/documentation-as-code/SKILL.md +323 -0
  122. package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
  123. package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
  124. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
  125. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
  126. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
  127. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
  128. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
  129. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
  130. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
  131. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
  132. package/.claude/skills/engineering-management/SKILL.md +356 -0
  133. package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
  134. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
  135. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
  136. package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
  137. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
  138. package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
  139. package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
  140. package/.claude/skills/error-tracking/SKILL.md +379 -0
  141. package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
  142. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
  143. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
  144. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
  145. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
  146. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
  147. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
  148. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
  149. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
  150. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
  151. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
  152. package/.claude/skills/general-it-engineering/SKILL.md +393 -0
  153. package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
  154. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
  155. package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
  156. package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
  157. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
  158. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
  159. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
  160. package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
  161. package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
  162. package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
  163. package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
  164. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
  165. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
  166. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
  167. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
  168. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
  169. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
  170. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
  171. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
  172. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
  173. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
  174. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
  175. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
  176. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
  177. package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
  178. package/.claude/skills/network-engineering/SKILL.md +385 -0
  179. package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
  180. package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
  181. package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
  182. package/.claude/skills/network-engineering/resources/network-security.md +921 -0
  183. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
  184. package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
  185. package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
  186. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
  187. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
  188. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
  189. package/.claude/skills/observability-engineering/SKILL.md +101 -0
  190. package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
  191. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
  192. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
  193. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
  194. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
  195. package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
  196. package/.claude/skills/platform-engineering/SKILL.md +555 -0
  197. package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
  198. package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
  199. package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
  200. package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
  201. package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
  202. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
  203. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
  204. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
  205. package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
  206. package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
  207. package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
  208. package/.claude/skills/release-engineering/SKILL.md +393 -0
  209. package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
  210. package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
  211. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
  212. package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
  213. package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
  214. package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
  215. package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
  216. package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
  217. package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
  218. package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
  219. package/.claude/skills/route-tester/SKILL.md +392 -0
  220. package/.claude/skills/skill-developer/ADVANCED.md +197 -0
  221. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
  222. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
  223. package/.claude/skills/skill-developer/SKILL.md +430 -0
  224. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
  225. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
  226. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
  227. package/.claude/skills/skill-rules.json +2940 -0
  228. package/.claude/skills/sre/SKILL.md +464 -0
  229. package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
  230. package/.claude/skills/sre/resources/capacity-planning.md +226 -0
  231. package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
  232. package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
  233. package/.claude/skills/sre/resources/incident-management.md +436 -0
  234. package/.claude/skills/sre/resources/observability-stack.md +240 -0
  235. package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
  236. package/.claude/skills/sre/resources/performance-optimization.md +108 -0
  237. package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
  238. package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
  239. package/.claude/skills/sre/resources/toil-reduction.md +145 -0
  240. package/.claude/skills/systems-engineering/SKILL.md +648 -0
  241. package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
  242. package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
  243. package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
  244. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
  245. package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
  246. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
  247. package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
  248. package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
  249. package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
  250. package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
  251. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
  252. package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
  253. package/.claude/skills/technical-leadership/SKILL.md +728 -0
  254. package/CHANGELOG.md +90 -54
  255. package/README.md +94 -0
  256. package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
  257. package/backend/jest.config.js +59 -0
  258. package/backend/package-lock.json +6129 -0
  259. package/backend/package.json +16 -4
  260. package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
  261. package/backend/prisma/schema.prisma +33 -0
  262. package/backend/src/__tests__/core/DependencyService.test.js +336 -0
  263. package/backend/src/__tests__/core/UserService.test.js +875 -0
  264. package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
  265. package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
  266. package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
  267. package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
  268. package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
  269. package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
  270. package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
  271. package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
  272. package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
  273. package/backend/src/__tests__/secretsFilter.test.js +425 -0
  274. package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
  275. package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
  276. package/backend/src/__tests__/services/CacheManager.test.js +125 -0
  277. package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
  278. package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
  279. package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
  280. package/backend/src/__tests__/setup.js +25 -0
  281. package/backend/src/api/routes/apiKeys.js +181 -0
  282. package/backend/src/api/routes/bots.js +49 -7
  283. package/backend/src/api/routes/plugins.js +2 -1
  284. package/backend/src/api/routes/system.js +174 -0
  285. package/backend/src/container.js +82 -0
  286. package/backend/src/core/BotManager.js +142 -871
  287. package/backend/src/core/BotManager.old.js +1093 -0
  288. package/backend/src/core/BotProcess.js +1092 -858
  289. package/backend/src/core/EventGraphManager.js +280 -198
  290. package/backend/src/core/GraphExecutionEngine.js +321 -325
  291. package/backend/src/core/MessageQueue.js +27 -6
  292. package/backend/src/core/NodeRegistry.js +37 -1134
  293. package/backend/src/core/PluginManager.js +62 -12
  294. package/backend/src/core/PrismaService.js +32 -0
  295. package/backend/src/core/UserService.js +3 -3
  296. package/backend/src/core/__tests__/PrismaService.test.js +24 -0
  297. package/backend/src/core/commands/README.md +305 -0
  298. package/backend/src/core/commands/dev.js +13 -7
  299. package/backend/src/core/commands/ping.js +10 -4
  300. package/backend/src/core/commands/whois.js +63 -0
  301. package/backend/src/core/config/validation.js +27 -0
  302. package/backend/src/core/constants/graphTypes.js +21 -0
  303. package/backend/src/core/node-registries/actions.js +132 -0
  304. package/backend/src/core/node-registries/arrays.js +137 -0
  305. package/backend/src/core/node-registries/bot.js +23 -0
  306. package/backend/src/core/node-registries/data.js +290 -0
  307. package/backend/src/core/node-registries/debug.js +26 -0
  308. package/backend/src/core/node-registries/events.js +187 -0
  309. package/backend/src/core/node-registries/flow.js +139 -0
  310. package/backend/src/core/node-registries/logic.js +45 -0
  311. package/backend/src/core/node-registries/math.js +42 -0
  312. package/backend/src/core/node-registries/objects.js +98 -0
  313. package/backend/src/core/node-registries/strings.js +153 -0
  314. package/backend/src/core/node-registries/time.js +113 -0
  315. package/backend/src/core/node-registries/users.js +79 -0
  316. package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
  317. package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
  318. package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
  319. package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
  320. package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
  321. package/backend/src/core/nodes/arrays/get_next.js +35 -0
  322. package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
  323. package/backend/src/core/nodes/data/datetime_literal.js +27 -0
  324. package/backend/src/core/nodes/data/entity_info.js +69 -0
  325. package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
  326. package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
  327. package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
  328. package/backend/src/core/nodes/data/type_check.js +53 -0
  329. package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
  330. package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
  331. package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
  332. package/backend/src/core/nodes/flow/delay.js +43 -0
  333. package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
  334. package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
  335. package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
  336. package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
  337. package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
  338. package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
  339. package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
  340. package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
  341. package/backend/src/core/nodes/time/add.js +33 -0
  342. package/backend/src/core/nodes/time/compare.js +35 -0
  343. package/backend/src/core/nodes/time/diff.js +29 -0
  344. package/backend/src/core/nodes/time/format.js +32 -0
  345. package/backend/src/core/nodes/time/now.js +18 -0
  346. package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
  347. package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
  348. package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
  349. package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
  350. package/backend/src/core/services/BotLifecycleService.js +596 -0
  351. package/backend/src/core/services/BotProcessManager.js +163 -0
  352. package/backend/src/core/services/CacheManager.js +111 -0
  353. package/backend/src/core/services/CommandExecutionService.js +351 -0
  354. package/backend/src/core/services/ResourceMonitorService.js +90 -0
  355. package/backend/src/core/services/TelemetryService.js +124 -0
  356. package/backend/src/core/services/ValidationService.js +132 -0
  357. package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
  358. package/backend/src/core/services.js +20 -5
  359. package/backend/src/core/system/CommandContext.js +84 -0
  360. package/backend/src/core/system/Transport.js +78 -0
  361. package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
  362. package/backend/src/core/utils/jsonParser.js +18 -0
  363. package/backend/src/core/utils/secretsFilter.js +262 -0
  364. package/backend/src/core/utils/variableParser.js +89 -0
  365. package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
  366. package/backend/src/core/validation/nodeSchemas.js +112 -0
  367. package/backend/src/lib/prisma.js +2 -4
  368. package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
  369. package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
  370. package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
  371. package/backend/src/real-time/botApi/handlers/index.js +43 -0
  372. package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
  373. package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
  374. package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
  375. package/backend/src/real-time/botApi/index.js +40 -0
  376. package/backend/src/real-time/botApi/middleware.js +79 -0
  377. package/backend/src/real-time/botApi/utils.js +54 -0
  378. package/backend/src/real-time/socketHandler.js +6 -2
  379. package/backend/src/repositories/BaseRepository.js +43 -0
  380. package/backend/src/repositories/BotRepository.js +42 -0
  381. package/backend/src/repositories/CommandRepository.js +53 -0
  382. package/backend/src/repositories/EventGraphRepository.js +40 -0
  383. package/backend/src/repositories/GroupRepository.js +69 -0
  384. package/backend/src/repositories/PermissionRepository.js +48 -0
  385. package/backend/src/repositories/PluginRepository.js +42 -0
  386. package/backend/src/repositories/ServerRepository.js +27 -0
  387. package/backend/src/repositories/UserRepository.js +48 -0
  388. package/backend/src/server.js +3 -0
  389. package/backend/src/test-refactor.js +85 -0
  390. package/frontend/dist/assets/index-CfTo92bP.css +1 -0
  391. package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
  392. package/frontend/dist/index.html +2 -2
  393. package/frontend/package.json +0 -5
  394. package/package.json +2 -1
  395. package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
  396. package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
  397. package/nul +0 -0
  398. /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
  399. /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
  400. /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
  401. /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
  402. /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
  403. /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
  404. /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
  405. /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
  406. /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
  407. /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
  408. /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
  409. /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
  410. /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
  411. /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
  412. /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
  413. /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
  414. /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
  415. /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
  416. /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
  417. /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
  418. /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
  419. /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
  420. /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
  421. /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
  422. /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
  423. /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
  424. /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
  425. /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
  426. /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
  427. /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
  428. /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
  429. /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
  430. /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
  431. /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
  432. /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
  433. /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
@@ -0,0 +1,887 @@
1
+ # Security Scanning - SAST, DAST, and SCA
2
+
3
+ Comprehensive guide to implementing security scanning throughout the development lifecycle using Static Application Security Testing (SAST), Dynamic Application Security Testing (DAST), and Software Composition Analysis (SCA).
4
+
5
+ ## Table of Contents
6
+
7
+ - [Overview](#overview)
8
+ - [SAST - Static Application Security Testing](#sast---static-application-security-testing)
9
+ - [DAST - Dynamic Application Security Testing](#dast---dynamic-application-security-testing)
10
+ - [SCA - Software Composition Analysis](#sca---software-composition-analysis)
11
+ - [Tool Comparison](#tool-comparison)
12
+ - [CI/CD Integration](#cicd-integration)
13
+ - [Scan Result Management](#scan-result-management)
14
+ - [Best Practices](#best-practices)
15
+ - [Anti-Patterns](#anti-patterns)
16
+
17
+ ## Overview
18
+
19
+ **Security Scanning Types:**
20
+
21
+ ```
22
+ ┌─────────────────────────────────────────────────────┐
23
+ │ Security Scanning │
24
+ ├─────────────────┬──────────────────┬────────────────┤
25
+ │ SAST │ DAST │ SCA │
26
+ │ Source Code │ Running App │ Dependencies │
27
+ │ Analysis │ Testing │ Scanning │
28
+ ├─────────────────┼──────────────────┼────────────────┤
29
+ │ • Semgrep │ • OWASP ZAP │ • Snyk │
30
+ │ • SonarQube │ • Burp Suite │ • Trivy │
31
+ │ • CodeQL │ • Nuclei │ • Dependabot │
32
+ │ • Checkmarx │ • Arachni │ • FOSSA │
33
+ └─────────────────┴──────────────────┴────────────────┘
34
+ ```
35
+
36
+ **When to Use Each:**
37
+ - **SAST**: During development and build phases (pre-commit, CI)
38
+ - **DAST**: After deployment to test environment
39
+ - **SCA**: Continuously (dependencies change frequently)
40
+
41
+ ## SAST - Static Application Security Testing
42
+
43
+ ### What is SAST?
44
+
45
+ Analyzes source code to find security vulnerabilities without executing the program.
46
+
47
+ **Strengths:**
48
+ - Early detection (shift-left)
49
+ - Full code coverage
50
+ - No running application needed
51
+ - Finds coding mistakes
52
+
53
+ **Limitations:**
54
+ - False positives
55
+ - No runtime context
56
+ - Configuration-dependent vulnerabilities missed
57
+
58
+ ### Semgrep Implementation
59
+
60
+ **Installation:**
61
+ ```bash
62
+ # Install via pip
63
+ pip install semgrep
64
+
65
+ # Or via Homebrew
66
+ brew install semgrep
67
+ ```
68
+
69
+ **Basic Usage:**
70
+ ```bash
71
+ # Scan current directory with security rules
72
+ semgrep --config=auto .
73
+
74
+ # Use specific rulesets
75
+ semgrep --config="p/security-audit" \
76
+ --config="p/owasp-top-ten" \
77
+ --config="p/secrets" .
78
+
79
+ # JSON output for automation
80
+ semgrep --config=auto --json -o results.json .
81
+
82
+ # Only show high/critical findings
83
+ semgrep --config=auto --severity=ERROR .
84
+ ```
85
+
86
+ **Custom Rules:**
87
+ ```yaml
88
+ # .semgrep/rules/sql-injection.yaml
89
+ rules:
90
+ - id: sql-injection-risk
91
+ patterns:
92
+ - pattern: |
93
+ db.query($SQL + $INPUT)
94
+ - pattern-not: |
95
+ db.query($SQL, [...])
96
+ message: |
97
+ Potential SQL injection vulnerability.
98
+ Use parameterized queries instead.
99
+ languages: [javascript, typescript]
100
+ severity: ERROR
101
+ metadata:
102
+ cwe: "CWE-89: SQL Injection"
103
+ owasp: "A03:2021 - Injection"
104
+ ```
105
+
106
+ **CI Integration (GitHub Actions):**
107
+ ```yaml
108
+ # .github/workflows/semgrep.yml
109
+ name: Semgrep SAST
110
+
111
+ on:
112
+ pull_request: {}
113
+ push:
114
+ branches: [main, develop]
115
+
116
+ jobs:
117
+ semgrep:
118
+ name: Scan with Semgrep
119
+ runs-on: ubuntu-latest
120
+
121
+ steps:
122
+ - uses: actions/checkout@v3
123
+
124
+ - name: Run Semgrep
125
+ uses: returntocorp/semgrep-action@v1
126
+ with:
127
+ config: >-
128
+ p/security-audit
129
+ p/secrets
130
+ p/owasp-top-ten
131
+ p/nodejs
132
+ env:
133
+ SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
134
+
135
+ - name: Upload SARIF
136
+ if: always()
137
+ uses: github/codeql-action/upload-sarif@v2
138
+ with:
139
+ sarif_file: semgrep.sarif
140
+ ```
141
+
142
+ ### SonarQube Implementation
143
+
144
+ **Docker Setup:**
145
+ ```yaml
146
+ # docker-compose.yml
147
+ version: '3'
148
+ services:
149
+ sonarqube:
150
+ image: sonarqube:community
151
+ ports:
152
+ - "9000:9000"
153
+ environment:
154
+ - SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
155
+ volumes:
156
+ - sonarqube_data:/opt/sonarqube/data
157
+ - sonarqube_extensions:/opt/sonarqube/extensions
158
+ - sonarqube_logs:/opt/sonarqube/logs
159
+
160
+ volumes:
161
+ sonarqube_data:
162
+ sonarqube_extensions:
163
+ sonarqube_logs:
164
+ ```
165
+
166
+ **Project Configuration:**
167
+ ```properties
168
+ # sonar-project.properties
169
+ sonar.projectKey=my-project
170
+ sonar.projectName=My Project
171
+ sonar.projectVersion=1.0
172
+
173
+ sonar.sources=src
174
+ sonar.tests=tests
175
+ sonar.exclusions=**/node_modules/**,**/*.test.ts
176
+
177
+ # Language-specific
178
+ sonar.javascript.lcov.reportPaths=coverage/lcov.info
179
+ sonar.typescript.lcov.reportPaths=coverage/lcov.info
180
+
181
+ # Quality gates
182
+ sonar.qualitygate.wait=true
183
+ ```
184
+
185
+ **Scan Execution:**
186
+ ```bash
187
+ # Install scanner
188
+ npm install -g sonarqube-scanner
189
+
190
+ # Run scan
191
+ sonar-scanner \
192
+ -Dsonar.host.url=http://localhost:9000 \
193
+ -Dsonar.login=$SONAR_TOKEN
194
+
195
+ # Or using Docker
196
+ docker run --rm \
197
+ -e SONAR_HOST_URL=http://sonarqube:9000 \
198
+ -e SONAR_LOGIN=$SONAR_TOKEN \
199
+ -v "$PWD:/usr/src" \
200
+ sonarsource/sonar-scanner-cli
201
+ ```
202
+
203
+ ### GitHub CodeQL
204
+
205
+ ```yaml
206
+ # .github/workflows/codeql.yml
207
+ name: "CodeQL"
208
+
209
+ on:
210
+ push:
211
+ branches: [ main ]
212
+ pull_request:
213
+ branches: [ main ]
214
+ schedule:
215
+ - cron: '0 0 * * 0' # Weekly
216
+
217
+ jobs:
218
+ analyze:
219
+ name: Analyze
220
+ runs-on: ubuntu-latest
221
+ permissions:
222
+ security-events: write
223
+ actions: read
224
+ contents: read
225
+
226
+ strategy:
227
+ matrix:
228
+ language: [ 'javascript', 'typescript', 'python' ]
229
+
230
+ steps:
231
+ - name: Checkout
232
+ uses: actions/checkout@v3
233
+
234
+ - name: Initialize CodeQL
235
+ uses: github/codeql-action/init@v2
236
+ with:
237
+ languages: ${{ matrix.language }}
238
+ queries: security-extended,security-and-quality
239
+
240
+ - name: Autobuild
241
+ uses: github/codeql-action/autobuild@v2
242
+
243
+ - name: Perform CodeQL Analysis
244
+ uses: github/codeql-action/analyze@v2
245
+ with:
246
+ category: "/language:${{ matrix.language }}"
247
+ ```
248
+
249
+ ## DAST - Dynamic Application Security Testing
250
+
251
+ ### OWASP ZAP
252
+
253
+ **Docker Run:**
254
+ ```bash
255
+ # Baseline scan
256
+ docker run -t owasp/zap2docker-stable zap-baseline.py \
257
+ -t https://example.com \
258
+ -r zap-report.html
259
+
260
+ # Full scan
261
+ docker run -t owasp/zap2docker-stable zap-full-scan.py \
262
+ -t https://example.com \
263
+ -r zap-full-report.html
264
+
265
+ # API scan
266
+ docker run -t owasp/zap2docker-stable zap-api-scan.py \
267
+ -t https://api.example.com/openapi.json \
268
+ -f openapi \
269
+ -r zap-api-report.html
270
+ ```
271
+
272
+ **CI Integration:**
273
+ ```yaml
274
+ # .github/workflows/dast.yml
275
+ name: DAST Scan
276
+
277
+ on:
278
+ schedule:
279
+ - cron: '0 2 * * *' # Nightly
280
+ workflow_dispatch:
281
+
282
+ jobs:
283
+ zap-scan:
284
+ runs-on: ubuntu-latest
285
+ steps:
286
+ - name: ZAP Scan
287
+ uses: zaproxy/action-baseline@v0.7.0
288
+ with:
289
+ target: 'https://staging.example.com'
290
+ rules_file_name: '.zap/rules.tsv'
291
+ cmd_options: '-a'
292
+
293
+ - name: Upload Results
294
+ uses: actions/upload-artifact@v3
295
+ with:
296
+ name: zap-report
297
+ path: report_html.html
298
+ ```
299
+
300
+ **ZAP Rules Configuration:**
301
+ ```tsv
302
+ # .zap/rules.tsv
303
+ # Format: rule-id WARN|FAIL|IGNORE description
304
+ 10038 WARN Content-Type header missing
305
+ 10055 FAIL CSP header missing
306
+ 10096 WARN Timestamp disclosure
307
+ 40012 FAIL Cross-Site Scripting
308
+ 40014 FAIL Cross-Site Request Forgery
309
+ 90022 FAIL SQL Injection
310
+ ```
311
+
312
+ ### Nuclei
313
+
314
+ **Installation:**
315
+ ```bash
316
+ go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
317
+ ```
318
+
319
+ **Usage:**
320
+ ```bash
321
+ # Update templates
322
+ nuclei -update-templates
323
+
324
+ # Scan single target
325
+ nuclei -u https://example.com
326
+
327
+ # Scan with specific severity
328
+ nuclei -u https://example.com -severity critical,high
329
+
330
+ # Use specific templates
331
+ nuclei -u https://example.com -t cves/ -t vulnerabilities/
332
+
333
+ # Output to file
334
+ nuclei -u https://example.com -json -o results.json
335
+ ```
336
+
337
+ **Custom Template:**
338
+ ```yaml
339
+ # custom-check.yaml
340
+ id: api-key-exposure
341
+
342
+ info:
343
+ name: API Key Exposure
344
+ severity: high
345
+ description: Checks for exposed API keys
346
+
347
+ http:
348
+ - method: GET
349
+ path:
350
+ - "{{BaseURL}}/config.json"
351
+ - "{{BaseURL}}/.env"
352
+
353
+ matchers-condition: or
354
+ matchers:
355
+ - type: regex
356
+ regex:
357
+ - "api[_-]?key['\"]?\\s*[:=]\\s*['\"]?[a-zA-Z0-9]{32,}"
358
+ - "secret[_-]?key['\"]?\\s*[:=]\\s*['\"]?[a-zA-Z0-9]{32,}"
359
+ part: body
360
+ ```
361
+
362
+ ## SCA - Software Composition Analysis
363
+
364
+ ### Snyk
365
+
366
+ **Installation:**
367
+ ```bash
368
+ npm install -g snyk
369
+
370
+ # Authenticate
371
+ snyk auth
372
+ ```
373
+
374
+ **Scanning:**
375
+ ```bash
376
+ # Scan project dependencies
377
+ snyk test
378
+
379
+ # Test with severity threshold
380
+ snyk test --severity-threshold=high
381
+
382
+ # Monitor project (continuous monitoring)
383
+ snyk monitor
384
+
385
+ # Test container images
386
+ snyk container test nginx:latest
387
+
388
+ # Test IaC
389
+ snyk iac test ./terraform/
390
+ ```
391
+
392
+ **GitHub Integration:**
393
+ ```yaml
394
+ # .github/workflows/snyk.yml
395
+ name: Snyk Security
396
+
397
+ on:
398
+ push:
399
+ branches: [ main ]
400
+ pull_request:
401
+
402
+ jobs:
403
+ security:
404
+ runs-on: ubuntu-latest
405
+ steps:
406
+ - uses: actions/checkout@v3
407
+
408
+ - name: Run Snyk
409
+ uses: snyk/actions/node@master
410
+ env:
411
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
412
+ with:
413
+ args: --severity-threshold=high
414
+
415
+ - name: Upload results to GitHub
416
+ uses: github/codeql-action/upload-sarif@v2
417
+ with:
418
+ sarif_file: snyk.sarif
419
+ ```
420
+
421
+ **Snyk Policy File:**
422
+ ```yaml
423
+ # .snyk
424
+ version: v1.19.0
425
+
426
+ # Ignore specific vulnerabilities
427
+ ignore:
428
+ SNYK-JS-AXIOS-6032459:
429
+ - '*':
430
+ reason: Fix not available, mitigation in place
431
+ expires: 2024-12-31
432
+
433
+ # Patch rules
434
+ patch:
435
+ 'npm:qs:20140806':
436
+ - express > qs:
437
+ patched: '2023-01-15T00:00:00.000Z'
438
+ ```
439
+
440
+ ### Trivy
441
+
442
+ **Installation:**
443
+ ```bash
444
+ # Linux
445
+ wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
446
+ echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
447
+ sudo apt-get update
448
+ sudo apt-get install trivy
449
+
450
+ # macOS
451
+ brew install trivy
452
+ ```
453
+
454
+ **Usage:**
455
+ ```bash
456
+ # Scan filesystem
457
+ trivy fs .
458
+
459
+ # Scan container image
460
+ trivy image nginx:latest
461
+
462
+ # Scan with severity filter
463
+ trivy image --severity HIGH,CRITICAL nginx:latest
464
+
465
+ # Scan IaC
466
+ trivy config ./terraform/
467
+
468
+ # Kubernetes manifest scan
469
+ trivy k8s --report summary cluster
470
+
471
+ # Output formats
472
+ trivy image --format json nginx:latest
473
+ trivy image --format sarif nginx:latest
474
+ ```
475
+
476
+ **CI Integration:**
477
+ ```yaml
478
+ # .github/workflows/trivy.yml
479
+ name: Trivy Security Scan
480
+
481
+ on:
482
+ push:
483
+ branches: [ main ]
484
+ pull_request:
485
+
486
+ jobs:
487
+ trivy-scan:
488
+ runs-on: ubuntu-latest
489
+ steps:
490
+ - uses: actions/checkout@v3
491
+
492
+ - name: Run Trivy vulnerability scanner in fs mode
493
+ uses: aquasecurity/trivy-action@master
494
+ with:
495
+ scan-type: 'fs'
496
+ scan-ref: '.'
497
+ format: 'sarif'
498
+ output: 'trivy-results.sarif'
499
+ severity: 'CRITICAL,HIGH'
500
+
501
+ - name: Upload Trivy results to GitHub
502
+ uses: github/codeql-action/upload-sarif@v2
503
+ with:
504
+ sarif_file: 'trivy-results.sarif'
505
+ ```
506
+
507
+ ## Tool Comparison
508
+
509
+ ### Feature Matrix
510
+
511
+ | Tool | Type | Languages | CI Integration | Cost | Best For |
512
+ |------|------|-----------|----------------|------|----------|
513
+ | Semgrep | SAST | 30+ | Excellent | Free/Paid | Fast, customizable rules |
514
+ | SonarQube | SAST | 25+ | Good | Free/Paid | Code quality + security |
515
+ | CodeQL | SAST | 10+ | GitHub | Free (public) | Deep analysis |
516
+ | ZAP | DAST | All | Good | Free | Web app testing |
517
+ | Nuclei | DAST | All | Excellent | Free | Fast, template-based |
518
+ | Snyk | SCA | All | Excellent | Free/Paid | Developer-friendly |
519
+ | Trivy | SCA | All | Excellent | Free | Containers, IaC |
520
+
521
+ ### Selection Guide
522
+
523
+ **For Small Teams:**
524
+ ```
525
+ SAST: Semgrep (free, fast)
526
+ DAST: ZAP baseline scans
527
+ SCA: Trivy (comprehensive, free)
528
+ ```
529
+
530
+ **For Enterprise:**
531
+ ```
532
+ SAST: SonarQube + CodeQL
533
+ DAST: ZAP full scan + Burp Suite Pro
534
+ SCA: Snyk (with monitoring)
535
+ ```
536
+
537
+ **For Startups:**
538
+ ```
539
+ SAST: GitHub CodeQL (built-in)
540
+ DAST: Nuclei (fast, automated)
541
+ SCA: Dependabot + Trivy
542
+ ```
543
+
544
+ ## CI/CD Integration
545
+
546
+ ### Complete Security Pipeline
547
+
548
+ ```yaml
549
+ # .github/workflows/security-pipeline.yml
550
+ name: Security Pipeline
551
+
552
+ on:
553
+ push:
554
+ branches: [ main, develop ]
555
+ pull_request:
556
+ schedule:
557
+ - cron: '0 0 * * 0' # Weekly
558
+
559
+ jobs:
560
+ secret-scan:
561
+ name: Secret Scanning
562
+ runs-on: ubuntu-latest
563
+ steps:
564
+ - uses: actions/checkout@v3
565
+ with:
566
+ fetch-depth: 0
567
+
568
+ - name: TruffleHog
569
+ uses: trufflesecurity/trufflehog@main
570
+ with:
571
+ path: ./
572
+ base: ${{ github.event.repository.default_branch }}
573
+ head: HEAD
574
+
575
+ sast:
576
+ name: SAST Analysis
577
+ runs-on: ubuntu-latest
578
+ steps:
579
+ - uses: actions/checkout@v3
580
+
581
+ - name: Semgrep
582
+ uses: returntocorp/semgrep-action@v1
583
+ with:
584
+ config: p/security-audit
585
+
586
+ - name: CodeQL
587
+ uses: github/codeql-action/init@v2
588
+ with:
589
+ languages: javascript,typescript
590
+
591
+ - uses: github/codeql-action/autobuild@v2
592
+ - uses: github/codeql-action/analyze@v2
593
+
594
+ sca:
595
+ name: Dependency Scanning
596
+ runs-on: ubuntu-latest
597
+ steps:
598
+ - uses: actions/checkout@v3
599
+
600
+ - name: Snyk
601
+ uses: snyk/actions/node@master
602
+ env:
603
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
604
+ with:
605
+ args: --severity-threshold=high
606
+
607
+ - name: Trivy
608
+ uses: aquasecurity/trivy-action@master
609
+ with:
610
+ scan-type: 'fs'
611
+ severity: 'CRITICAL,HIGH'
612
+
613
+ container-scan:
614
+ name: Container Scanning
615
+ runs-on: ubuntu-latest
616
+ needs: [sast, sca]
617
+ steps:
618
+ - uses: actions/checkout@v3
619
+
620
+ - name: Build image
621
+ run: docker build -t ${{ github.repository }}:${{ github.sha }} .
622
+
623
+ - name: Trivy Image Scan
624
+ uses: aquasecurity/trivy-action@master
625
+ with:
626
+ image-ref: ${{ github.repository }}:${{ github.sha }}
627
+ format: 'sarif'
628
+ output: 'trivy-image.sarif'
629
+ severity: 'CRITICAL,HIGH'
630
+ exit-code: '1'
631
+
632
+ security-gate:
633
+ name: Security Gate
634
+ runs-on: ubuntu-latest
635
+ needs: [secret-scan, sast, sca, container-scan]
636
+ steps:
637
+ - name: All security checks passed
638
+ run: echo "✅ Security gate passed"
639
+ ```
640
+
641
+ ### GitLab CI Pipeline
642
+
643
+ ```yaml
644
+ # .gitlab-ci.yml
645
+ stages:
646
+ - security-scan
647
+ - security-gate
648
+
649
+ include:
650
+ - template: Security/SAST.gitlab-ci.yml
651
+ - template: Security/Dependency-Scanning.gitlab-ci.yml
652
+ - template: Security/Container-Scanning.gitlab-ci.yml
653
+
654
+ semgrep-sast:
655
+ stage: security-scan
656
+ image: returntocorp/semgrep
657
+ script:
658
+ - semgrep --config=auto --json -o semgrep-results.json .
659
+ artifacts:
660
+ reports:
661
+ sast: semgrep-results.json
662
+
663
+ trivy-scan:
664
+ stage: security-scan
665
+ image: aquasec/trivy:latest
666
+ script:
667
+ - trivy fs --format json -o trivy-results.json .
668
+ artifacts:
669
+ reports:
670
+ dependency_scanning: trivy-results.json
671
+
672
+ security-gate:
673
+ stage: security-gate
674
+ script:
675
+ - echo "Checking security scan results..."
676
+ - exit 0
677
+ when: on_success
678
+ ```
679
+
680
+ ## Scan Result Management
681
+
682
+ ### Vulnerability Prioritization
683
+
684
+ **Severity Scoring:**
685
+ ```
686
+ CRITICAL: CVSS 9.0-10.0
687
+ ↓ Fix immediately (< 24 hours)
688
+
689
+ HIGH: CVSS 7.0-8.9
690
+ ↓ Fix within 7 days
691
+
692
+ MEDIUM: CVSS 4.0-6.9
693
+ ↓ Fix within 30 days
694
+
695
+ LOW: CVSS 0.1-3.9
696
+ ↓ Fix when convenient
697
+ ```
698
+
699
+ **Context Factors:**
700
+ ```yaml
701
+ # vulnerability-context.yaml
702
+ vulnerability_assessment:
703
+ - id: CVE-2023-12345
704
+ severity: HIGH
705
+
706
+ # Risk factors
707
+ exploitability: PUBLIC_EXPLOIT_AVAILABLE
708
+ exposure: INTERNET_FACING
709
+ data_sensitivity: PII
710
+
711
+ # Adjusted priority: CRITICAL
712
+ adjusted_severity: CRITICAL
713
+ sla: 24_hours
714
+ ```
715
+
716
+ ### False Positive Management
717
+
718
+ **Suppression File:**
719
+ ```yaml
720
+ # .security-suppressions.yaml
721
+ suppressions:
722
+ - tool: semgrep
723
+ rule_id: javascript.express.security.audit.xss.mustache.var-in-href
724
+ paths:
725
+ - src/components/SafeLink.tsx
726
+ reason: "Using safe URL validation library"
727
+ expires: 2024-12-31
728
+ approved_by: security-team
729
+
730
+ - tool: trivy
731
+ cve: CVE-2023-12345
732
+ package: lodash
733
+ version: "4.17.20"
734
+ reason: "No fix available, not exploitable in our context"
735
+ mitigation: "Input validation in place"
736
+ ```
737
+
738
+ ### Reporting Dashboard
739
+
740
+ **Metrics to Track:**
741
+ ```javascript
742
+ // security-metrics.js
743
+ const securityMetrics = {
744
+ // Scan coverage
745
+ scanCoverage: {
746
+ repositories: { total: 50, scanned: 48 },
747
+ codeLines: { total: 500000, scanned: 475000 }
748
+ },
749
+
750
+ // Vulnerability trends
751
+ vulnerabilities: {
752
+ critical: { open: 2, closed_this_month: 5 },
753
+ high: { open: 8, closed_this_month: 12 },
754
+ medium: { open: 25, closed_this_month: 30 },
755
+ low: { open: 45, closed_this_month: 20 }
756
+ },
757
+
758
+ // SLA compliance
759
+ sla: {
760
+ critical: { sla: '24h', compliance: 0.95 },
761
+ high: { sla: '7d', compliance: 0.88 },
762
+ medium: { sla: '30d', compliance: 0.92 }
763
+ },
764
+
765
+ // Mean time to remediate
766
+ mttr: {
767
+ critical: '18 hours',
768
+ high: '5 days',
769
+ medium: '22 days'
770
+ }
771
+ };
772
+ ```
773
+
774
+ ## Best Practices
775
+
776
+ ### 1. Scan Early and Often
777
+
778
+ ```yaml
779
+ # Multiple scan triggers
780
+ triggers:
781
+ - Pre-commit hook (secrets, basic SAST)
782
+ - Pull request (full SAST, SCA)
783
+ - Merge to main (SAST, SCA, container scan)
784
+ - Nightly (DAST, full analysis)
785
+ - Weekly (comprehensive audit)
786
+ ```
787
+
788
+ ### 2. Fail Fast on Critical Issues
789
+
790
+ ```yaml
791
+ # security-gates.yml
792
+ gates:
793
+ pr_merge:
794
+ block_on:
795
+ - critical_vulnerabilities
796
+ - secrets_detected
797
+ - high_severity_sast
798
+
799
+ production_deploy:
800
+ block_on:
801
+ - any_critical
802
+ - high_without_exception
803
+ - failed_dast_scan
804
+ ```
805
+
806
+ ### 3. Automate Remediation
807
+
808
+ ```yaml
809
+ # auto-remediation.yml
810
+ automation:
811
+ - Dependabot auto-merge (patch versions)
812
+ - Automated security PRs (Snyk, Renovate)
813
+ - Auto-suppress false positives (with approval)
814
+ - Automated ticket creation (Jira/Linear)
815
+ ```
816
+
817
+ ### 4. Developer-Friendly Feedback
818
+
819
+ ```
820
+ ❌ Bad: "CWE-89 violation in line 42"
821
+
822
+ ✅ Good:
823
+ "SQL Injection vulnerability (line 42)
824
+
825
+ Risk: User input directly concatenated into SQL query
826
+
827
+ Fix: Use parameterized queries:
828
+ - db.query('SELECT * FROM users WHERE id = ?', [userId])
829
+
830
+ References:
831
+ - OWASP SQL Injection: https://...
832
+ - Fix example: https://..."
833
+ ```
834
+
835
+ ### 5. Continuous Monitoring
836
+
837
+ ```typescript
838
+ // Integrate with APM
839
+ import * as Sentry from '@sentry/node';
840
+
841
+ // Tag security-relevant events
842
+ Sentry.captureMessage('Security scan completed', {
843
+ level: 'info',
844
+ tags: {
845
+ scan_type: 'sca',
846
+ vulnerabilities_found: results.length,
847
+ severity: 'high'
848
+ }
849
+ });
850
+ ```
851
+
852
+ ## Anti-Patterns
853
+
854
+ ❌ **Scanning only on release** - Too late, expensive to fix
855
+
856
+ ❌ **Ignoring scan results** - Scans without action waste resources
857
+
858
+ ❌ **No severity thresholds** - Alert fatigue, everything is critical
859
+
860
+ ❌ **Blocking all findings** - Slows development, false positives
861
+
862
+ ❌ **Manual scan execution** - Inconsistent, forgettable
863
+
864
+ ❌ **No ownership** - Vulnerabilities never get fixed
865
+
866
+ ❌ **Scan-and-forget** - Continuous monitoring needed
867
+
868
+ ❌ **All tools, no strategy** - Tool sprawl, redundant scanning
869
+
870
+ ❌ **No developer training** - Same issues repeat
871
+
872
+ ❌ **Treating security as QA step** - Should be integrated throughout
873
+
874
+ ---
875
+
876
+ **Next Steps:**
877
+ 1. Choose scanning tools appropriate for your stack
878
+ 2. Integrate into CI/CD pipeline
879
+ 3. Set severity thresholds and SLAs
880
+ 4. Establish vulnerability management process
881
+ 5. Train developers on common vulnerabilities
882
+ 6. Monitor metrics and improve over time
883
+
884
+ **Related Resources:**
885
+ - [container-security.md](container-security.md) - Image and runtime scanning
886
+ - [ci-cd-security.md](ci-cd-security.md) - Secure pipeline implementation
887
+ - [vulnerability-management.md](vulnerability-management.md) - Remediation workflows