blockmine 1.20.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 (434) 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 +28 -3
  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 -39
  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 -850
  289. package/backend/src/core/BreakLoopSignal.js +8 -0
  290. package/backend/src/core/EventGraphManager.js +280 -193
  291. package/backend/src/core/GraphExecutionEngine.js +321 -928
  292. package/backend/src/core/MessageQueue.js +27 -6
  293. package/backend/src/core/NodeRegistry.js +37 -991
  294. package/backend/src/core/PluginManager.js +62 -12
  295. package/backend/src/core/PrismaService.js +32 -0
  296. package/backend/src/core/UserService.js +3 -3
  297. package/backend/src/core/__tests__/PrismaService.test.js +24 -0
  298. package/backend/src/core/commands/README.md +305 -0
  299. package/backend/src/core/commands/dev.js +13 -7
  300. package/backend/src/core/commands/ping.js +10 -4
  301. package/backend/src/core/commands/whois.js +63 -0
  302. package/backend/src/core/config/validation.js +27 -0
  303. package/backend/src/core/constants/graphTypes.js +21 -0
  304. package/backend/src/core/node-registries/actions.js +132 -0
  305. package/backend/src/core/node-registries/arrays.js +137 -0
  306. package/backend/src/core/node-registries/bot.js +23 -0
  307. package/backend/src/core/node-registries/data.js +290 -0
  308. package/backend/src/core/node-registries/debug.js +26 -0
  309. package/backend/src/core/node-registries/events.js +187 -0
  310. package/backend/src/core/node-registries/flow.js +139 -0
  311. package/backend/src/core/node-registries/logic.js +45 -0
  312. package/backend/src/core/node-registries/math.js +42 -0
  313. package/backend/src/core/node-registries/objects.js +98 -0
  314. package/backend/src/core/node-registries/strings.js +153 -0
  315. package/backend/src/core/node-registries/time.js +113 -0
  316. package/backend/src/core/node-registries/users.js +79 -0
  317. package/backend/src/core/nodes/actions/bot_look_at.js +36 -0
  318. package/backend/src/core/nodes/actions/bot_set_variable.js +32 -0
  319. package/backend/src/core/nodes/actions/http_request.js +98 -0
  320. package/backend/src/core/nodes/actions/send_log.js +28 -0
  321. package/backend/src/core/nodes/actions/send_message.js +32 -0
  322. package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
  323. package/backend/src/core/nodes/arrays/add_element.js +23 -0
  324. package/backend/src/core/nodes/arrays/contains.js +40 -0
  325. package/backend/src/core/nodes/arrays/find_index.js +23 -0
  326. package/backend/src/core/nodes/arrays/get_by_index.js +23 -0
  327. package/backend/src/core/nodes/arrays/get_next.js +35 -0
  328. package/backend/src/core/nodes/arrays/get_random_element.js +32 -0
  329. package/backend/src/core/nodes/arrays/remove_by_index.js +30 -0
  330. package/backend/src/core/nodes/bot/get_position.js +20 -0
  331. package/backend/src/core/nodes/data/array_literal.js +31 -0
  332. package/backend/src/core/nodes/data/boolean_literal.js +21 -0
  333. package/backend/src/core/nodes/data/cast.js +42 -0
  334. package/backend/src/core/nodes/data/datetime_literal.js +27 -0
  335. package/backend/src/core/nodes/data/entity_info.js +69 -0
  336. package/backend/src/core/nodes/data/get_argument.js +23 -0
  337. package/backend/src/core/nodes/data/get_bot_look.js +14 -0
  338. package/backend/src/core/nodes/data/get_entity_field.js +18 -0
  339. package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
  340. package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
  341. package/backend/src/core/nodes/data/get_server_players.js +18 -0
  342. package/backend/src/core/nodes/data/get_user_field.js +40 -0
  343. package/backend/src/core/nodes/data/get_variable.js +23 -0
  344. package/backend/src/core/nodes/data/length.js +25 -0
  345. package/backend/src/core/nodes/data/make_object.js +31 -0
  346. package/backend/src/core/nodes/data/number_literal.js +21 -0
  347. package/backend/src/core/nodes/data/string_literal.js +34 -0
  348. package/backend/src/core/nodes/data/type_check.js +53 -0
  349. package/backend/src/core/nodes/debug/log.js +16 -0
  350. package/backend/src/core/nodes/flow/branch.js +15 -0
  351. package/backend/src/core/nodes/flow/break.js +14 -0
  352. package/backend/src/core/nodes/flow/delay.js +43 -0
  353. package/backend/src/core/nodes/flow/for_each.js +39 -0
  354. package/backend/src/core/nodes/flow/sequence.js +16 -0
  355. package/backend/src/core/nodes/flow/switch.js +47 -0
  356. package/backend/src/core/nodes/flow/while.js +64 -0
  357. package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
  358. package/backend/src/core/nodes/logic/compare.js +33 -0
  359. package/backend/src/core/nodes/logic/operation.js +35 -0
  360. package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
  361. package/backend/src/core/nodes/math/operation.js +31 -0
  362. package/backend/src/core/nodes/math/random_number.js +43 -0
  363. package/backend/src/core/nodes/objects/create.js +40 -0
  364. package/backend/src/core/nodes/objects/delete.js +26 -0
  365. package/backend/src/core/nodes/objects/get.js +23 -0
  366. package/backend/src/core/nodes/objects/has_key.js +30 -0
  367. package/backend/src/core/nodes/objects/set.js +27 -0
  368. package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
  369. package/backend/src/core/nodes/strings/concat.js +27 -0
  370. package/backend/src/core/nodes/strings/contains.js +41 -0
  371. package/backend/src/core/nodes/strings/ends_with.js +43 -0
  372. package/backend/src/core/nodes/strings/equals.js +36 -0
  373. package/backend/src/core/nodes/strings/length.js +36 -0
  374. package/backend/src/core/nodes/strings/matches.js +39 -0
  375. package/backend/src/core/nodes/strings/split.js +37 -0
  376. package/backend/src/core/nodes/strings/starts_with.js +43 -0
  377. package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
  378. package/backend/src/core/nodes/time/add.js +33 -0
  379. package/backend/src/core/nodes/time/compare.js +35 -0
  380. package/backend/src/core/nodes/time/diff.js +29 -0
  381. package/backend/src/core/nodes/time/format.js +32 -0
  382. package/backend/src/core/nodes/time/now.js +18 -0
  383. package/backend/src/core/nodes/users/check_blacklist.js +37 -0
  384. package/backend/src/core/nodes/users/get_groups.js +36 -0
  385. package/backend/src/core/nodes/users/get_permissions.js +36 -0
  386. package/backend/src/core/nodes/users/set_blacklist.js +37 -0
  387. package/backend/src/core/services/BotLifecycleService.js +596 -0
  388. package/backend/src/core/services/BotProcessManager.js +163 -0
  389. package/backend/src/core/services/CacheManager.js +111 -0
  390. package/backend/src/core/services/CommandExecutionService.js +351 -0
  391. package/backend/src/core/services/ResourceMonitorService.js +90 -0
  392. package/backend/src/core/services/TelemetryService.js +124 -0
  393. package/backend/src/core/services/ValidationService.js +132 -0
  394. package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
  395. package/backend/src/core/services.js +20 -5
  396. package/backend/src/core/system/CommandContext.js +84 -0
  397. package/backend/src/core/system/Transport.js +78 -0
  398. package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
  399. package/backend/src/core/utils/jsonParser.js +18 -0
  400. package/backend/src/core/utils/secretsFilter.js +262 -0
  401. package/backend/src/core/utils/variableParser.js +89 -0
  402. package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
  403. package/backend/src/core/validation/nodeSchemas.js +112 -0
  404. package/backend/src/lib/prisma.js +2 -4
  405. package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
  406. package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
  407. package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
  408. package/backend/src/real-time/botApi/handlers/index.js +43 -0
  409. package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
  410. package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
  411. package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
  412. package/backend/src/real-time/botApi/index.js +40 -0
  413. package/backend/src/real-time/botApi/middleware.js +79 -0
  414. package/backend/src/real-time/botApi/utils.js +54 -0
  415. package/backend/src/real-time/socketHandler.js +6 -2
  416. package/backend/src/repositories/BaseRepository.js +43 -0
  417. package/backend/src/repositories/BotRepository.js +42 -0
  418. package/backend/src/repositories/CommandRepository.js +53 -0
  419. package/backend/src/repositories/EventGraphRepository.js +40 -0
  420. package/backend/src/repositories/GroupRepository.js +69 -0
  421. package/backend/src/repositories/PermissionRepository.js +48 -0
  422. package/backend/src/repositories/PluginRepository.js +42 -0
  423. package/backend/src/repositories/ServerRepository.js +27 -0
  424. package/backend/src/repositories/UserRepository.js +48 -0
  425. package/backend/src/server.js +3 -0
  426. package/backend/src/test-refactor.js +85 -0
  427. package/frontend/dist/assets/index-CfTo92bP.css +1 -0
  428. package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
  429. package/frontend/dist/index.html +2 -2
  430. package/frontend/package.json +1 -5
  431. package/package.json +2 -1
  432. package/frontend/dist/assets/index-BFd7YoAj.css +0 -1
  433. package/frontend/dist/assets/index-CMMutadc.js +0 -8352
  434. package/nul +0 -0
@@ -0,0 +1,174 @@
1
+ # PowerShell Post-tool-use hook that tracks edited files and their repos
2
+ # Windows users: Use this instead of post-tool-use-tracker.sh
3
+
4
+ $ErrorActionPreference = "Stop"
5
+
6
+ # Read tool information from stdin
7
+ $toolInfo = $input | ConvertFrom-Json
8
+
9
+ # Extract relevant data
10
+ $toolName = $toolInfo.tool_name
11
+ $filePath = $toolInfo.tool_input.file_path
12
+ $sessionId = if ($toolInfo.session_id) { $toolInfo.session_id } else { "default" }
13
+
14
+ # Skip if not an edit tool or no file path
15
+ if ($toolName -notmatch '^(Edit|MultiEdit|Write)$' -or [string]::IsNullOrEmpty($filePath)) {
16
+ exit 0
17
+ }
18
+
19
+ # Skip markdown files
20
+ if ($filePath -match '\.(md|markdown)$') {
21
+ exit 0
22
+ }
23
+
24
+ # Create cache directory in project
25
+ $cacheDir = Join-Path $env:CLAUDE_PROJECT_DIR ".claude\tsc-cache\$sessionId"
26
+ New-Item -ItemType Directory -Force -Path $cacheDir | Out-Null
27
+
28
+ # Function to detect repo from file path
29
+ function Detect-Repo {
30
+ param([string]$file)
31
+
32
+ $projectRoot = $env:CLAUDE_PROJECT_DIR
33
+ $relativePath = $file.Replace("$projectRoot\", "").Replace("$projectRoot/", "")
34
+
35
+ # Extract first directory component
36
+ $firstDir = $relativePath.Split('\')[0].Split('/')[0]
37
+
38
+ switch -Regex ($firstDir) {
39
+ # Frontend variations
40
+ '^(frontend|client|web|app|ui)$' { return $firstDir }
41
+
42
+ # Backend variations
43
+ '^(backend|server|api|src|services)$' { return $firstDir }
44
+
45
+ # Database
46
+ '^(database|prisma|migrations)$' { return $firstDir }
47
+
48
+ # Package/monorepo structure
49
+ '^packages$' {
50
+ $parts = $relativePath.Split('\')[0..1]
51
+ if ($parts.Length -ge 2) {
52
+ return "packages\$($parts[1])"
53
+ }
54
+ return $firstDir
55
+ }
56
+
57
+ # Examples directory
58
+ '^examples$' {
59
+ $parts = $relativePath.Split('\')[0..1]
60
+ if ($parts.Length -ge 2) {
61
+ return "examples\$($parts[1])"
62
+ }
63
+ return $firstDir
64
+ }
65
+
66
+ default {
67
+ # Check if it's a source file in root
68
+ if ($relativePath -notmatch '[\\/]') {
69
+ return "root"
70
+ }
71
+ return "unknown"
72
+ }
73
+ }
74
+ }
75
+
76
+ # Function to get build command for repo
77
+ function Get-BuildCommand {
78
+ param([string]$repo)
79
+
80
+ $projectRoot = $env:CLAUDE_PROJECT_DIR
81
+ $repoPath = Join-Path $projectRoot $repo
82
+ $packageJson = Join-Path $repoPath "package.json"
83
+
84
+ # Check if package.json exists and has a build script
85
+ if (Test-Path $packageJson) {
86
+ $packageContent = Get-Content $packageJson -Raw
87
+ if ($packageContent -match '"build"') {
88
+ # Detect package manager (prefer pnpm, then npm, then yarn)
89
+ if (Test-Path (Join-Path $repoPath "pnpm-lock.yaml")) {
90
+ return "cd $repoPath && pnpm build"
91
+ } elseif (Test-Path (Join-Path $repoPath "package-lock.json")) {
92
+ return "cd $repoPath && npm run build"
93
+ } elseif (Test-Path (Join-Path $repoPath "yarn.lock")) {
94
+ return "cd $repoPath && yarn build"
95
+ } else {
96
+ return "cd $repoPath && npm run build"
97
+ }
98
+ }
99
+ }
100
+
101
+ # Special case for database with Prisma
102
+ if ($repo -match '^(database|.*prisma.*)$') {
103
+ if ((Test-Path (Join-Path $repoPath "schema.prisma")) -or
104
+ (Test-Path (Join-Path $repoPath "prisma\schema.prisma"))) {
105
+ return "cd $repoPath && npx prisma generate"
106
+ }
107
+ }
108
+
109
+ return ""
110
+ }
111
+
112
+ # Function to get TSC command for repo
113
+ function Get-TscCommand {
114
+ param([string]$repo)
115
+
116
+ $projectRoot = $env:CLAUDE_PROJECT_DIR
117
+ $repoPath = Join-Path $projectRoot $repo
118
+ $tsconfig = Join-Path $repoPath "tsconfig.json"
119
+
120
+ # Check if tsconfig.json exists
121
+ if (Test-Path $tsconfig) {
122
+ # Check for Vite/React-specific tsconfig
123
+ $tsconfigApp = Join-Path $repoPath "tsconfig.app.json"
124
+ if (Test-Path $tsconfigApp) {
125
+ return "cd $repoPath && npx tsc --project tsconfig.app.json --noEmit"
126
+ } else {
127
+ return "cd $repoPath && npx tsc --noEmit"
128
+ }
129
+ }
130
+
131
+ return ""
132
+ }
133
+
134
+ # Detect repo
135
+ $repo = Detect-Repo $filePath
136
+
137
+ # Skip if unknown repo
138
+ if ($repo -eq "unknown" -or [string]::IsNullOrEmpty($repo)) {
139
+ exit 0
140
+ }
141
+
142
+ # Log edited file
143
+ $timestamp = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds()
144
+ Add-Content -Path (Join-Path $cacheDir "edited-files.log") -Value "${timestamp}:${filePath}:${repo}"
145
+
146
+ # Update affected repos list
147
+ $affectedReposFile = Join-Path $cacheDir "affected-repos.txt"
148
+ $existingRepos = if (Test-Path $affectedReposFile) { Get-Content $affectedReposFile } else { @() }
149
+ if ($existingRepos -notcontains $repo) {
150
+ Add-Content -Path $affectedReposFile -Value $repo
151
+ }
152
+
153
+ # Store build commands
154
+ $commandsTmp = Join-Path $cacheDir "commands.txt.tmp"
155
+ $buildCmd = Get-BuildCommand $repo
156
+ $tscCmd = Get-TscCommand $repo
157
+
158
+ if (![string]::IsNullOrEmpty($buildCmd)) {
159
+ Add-Content -Path $commandsTmp -Value "${repo}:build:${buildCmd}"
160
+ }
161
+
162
+ if (![string]::IsNullOrEmpty($tscCmd)) {
163
+ Add-Content -Path $commandsTmp -Value "${repo}:tsc:${tscCmd}"
164
+ }
165
+
166
+ # Remove duplicates from commands
167
+ $commandsFile = Join-Path $cacheDir "commands.txt"
168
+ if (Test-Path $commandsTmp) {
169
+ Get-Content $commandsTmp | Sort-Object -Unique | Set-Content $commandsFile
170
+ Remove-Item $commandsTmp -Force
171
+ }
172
+
173
+ # Exit cleanly
174
+ exit 0
@@ -0,0 +1,183 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Set default CLAUDE_PROJECT_DIR if not set
5
+ if [ -z "$CLAUDE_PROJECT_DIR" ]; then
6
+ export CLAUDE_PROJECT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
7
+ fi
8
+
9
+ # Post-tool-use hook that tracks edited files and their repos
10
+ # This runs after Edit, MultiEdit, or Write tools complete successfully
11
+
12
+
13
+ # Read tool information from stdin
14
+ tool_info=$(cat)
15
+
16
+
17
+ # Extract relevant data
18
+ tool_name=$(echo "$tool_info" | jq -r '.tool_name // empty')
19
+ file_path=$(echo "$tool_info" | jq -r '.tool_input.file_path // empty')
20
+ session_id=$(echo "$tool_info" | jq -r '.session_id // empty')
21
+
22
+
23
+ # Skip if not an edit tool or no file path
24
+ if [[ ! "$tool_name" =~ ^(Edit|MultiEdit|Write)$ ]] || [[ -z "$file_path" ]]; then
25
+ exit 0 # Exit 0 for skip conditions
26
+ fi
27
+
28
+ # Skip markdown files
29
+ if [[ "$file_path" =~ \.(md|markdown)$ ]]; then
30
+ exit 0 # Exit 0 for skip conditions
31
+ fi
32
+
33
+ # Create cache directory in project
34
+ cache_dir="$CLAUDE_PROJECT_DIR/.claude/tsc-cache/${session_id:-default}"
35
+ mkdir -p "$cache_dir"
36
+
37
+ # Function to detect repo from file path
38
+ detect_repo() {
39
+ local file="$1"
40
+ local project_root="$CLAUDE_PROJECT_DIR"
41
+
42
+ # Remove project root from path
43
+ local relative_path="${file#$project_root/}"
44
+
45
+ # Extract first directory component
46
+ local repo=$(echo "$relative_path" | cut -d'/' -f1)
47
+
48
+ # Common project directory patterns
49
+ case "$repo" in
50
+ # Frontend variations
51
+ frontend|client|web|app|ui)
52
+ echo "$repo"
53
+ ;;
54
+ # Backend variations
55
+ backend|server|api|src|services)
56
+ echo "$repo"
57
+ ;;
58
+ # Database
59
+ database|prisma|migrations)
60
+ echo "$repo"
61
+ ;;
62
+ # Package/monorepo structure
63
+ packages)
64
+ # For monorepos, get the package name
65
+ local package=$(echo "$relative_path" | cut -d'/' -f2)
66
+ if [[ -n "$package" ]]; then
67
+ echo "packages/$package"
68
+ else
69
+ echo "$repo"
70
+ fi
71
+ ;;
72
+ # Examples directory
73
+ examples)
74
+ local example=$(echo "$relative_path" | cut -d'/' -f2)
75
+ if [[ -n "$example" ]]; then
76
+ echo "examples/$example"
77
+ else
78
+ echo "$repo"
79
+ fi
80
+ ;;
81
+ *)
82
+ # Check if it's a source file in root
83
+ if [[ ! "$relative_path" =~ / ]]; then
84
+ echo "root"
85
+ else
86
+ echo "unknown"
87
+ fi
88
+ ;;
89
+ esac
90
+ }
91
+
92
+ # Function to get build command for repo
93
+ get_build_command() {
94
+ local repo="$1"
95
+ local project_root="$CLAUDE_PROJECT_DIR"
96
+ local repo_path="$project_root/$repo"
97
+
98
+ # Check if package.json exists and has a build script
99
+ if [[ -f "$repo_path/package.json" ]]; then
100
+ if grep -q '"build"' "$repo_path/package.json" 2>/dev/null; then
101
+ # Detect package manager (prefer pnpm, then npm, then yarn)
102
+ if [[ -f "$repo_path/pnpm-lock.yaml" ]]; then
103
+ echo "cd $repo_path && pnpm build"
104
+ elif [[ -f "$repo_path/package-lock.json" ]]; then
105
+ echo "cd $repo_path && npm run build"
106
+ elif [[ -f "$repo_path/yarn.lock" ]]; then
107
+ echo "cd $repo_path && yarn build"
108
+ else
109
+ echo "cd $repo_path && npm run build"
110
+ fi
111
+ return
112
+ fi
113
+ fi
114
+
115
+ # Special case for database with Prisma
116
+ if [[ "$repo" == "database" ]] || [[ "$repo" =~ prisma ]]; then
117
+ if [[ -f "$repo_path/schema.prisma" ]] || [[ -f "$repo_path/prisma/schema.prisma" ]]; then
118
+ echo "cd $repo_path && npx prisma generate"
119
+ return
120
+ fi
121
+ fi
122
+
123
+ # No build command found
124
+ echo ""
125
+ }
126
+
127
+ # Function to get TSC command for repo
128
+ get_tsc_command() {
129
+ local repo="$1"
130
+ local project_root="$CLAUDE_PROJECT_DIR"
131
+ local repo_path="$project_root/$repo"
132
+
133
+ # Check if tsconfig.json exists
134
+ if [[ -f "$repo_path/tsconfig.json" ]]; then
135
+ # Check for Vite/React-specific tsconfig
136
+ if [[ -f "$repo_path/tsconfig.app.json" ]]; then
137
+ echo "cd $repo_path && npx tsc --project tsconfig.app.json --noEmit"
138
+ else
139
+ echo "cd $repo_path && npx tsc --noEmit"
140
+ fi
141
+ return
142
+ fi
143
+
144
+ # No TypeScript config found
145
+ echo ""
146
+ }
147
+
148
+ # Detect repo
149
+ repo=$(detect_repo "$file_path")
150
+
151
+ # Skip if unknown repo
152
+ if [[ "$repo" == "unknown" ]] || [[ -z "$repo" ]]; then
153
+ exit 0 # Exit 0 for skip conditions
154
+ fi
155
+
156
+ # Log edited file
157
+ echo "$(date +%s):$file_path:$repo" >> "$cache_dir/edited-files.log"
158
+
159
+ # Update affected repos list
160
+ if ! grep -q "^$repo$" "$cache_dir/affected-repos.txt" 2>/dev/null; then
161
+ echo "$repo" >> "$cache_dir/affected-repos.txt"
162
+ fi
163
+
164
+ # Store build commands
165
+ build_cmd=$(get_build_command "$repo")
166
+ tsc_cmd=$(get_tsc_command "$repo")
167
+
168
+ if [[ -n "$build_cmd" ]]; then
169
+ echo "$repo:build:$build_cmd" >> "$cache_dir/commands.txt.tmp"
170
+ fi
171
+
172
+ if [[ -n "$tsc_cmd" ]]; then
173
+ echo "$repo:tsc:$tsc_cmd" >> "$cache_dir/commands.txt.tmp"
174
+ fi
175
+
176
+ # Remove duplicates from commands
177
+ if [[ -f "$cache_dir/commands.txt.tmp" ]]; then
178
+ sort -u "$cache_dir/commands.txt.tmp" > "$cache_dir/commands.txt"
179
+ rm -f "$cache_dir/commands.txt.tmp"
180
+ fi
181
+
182
+ # Exit cleanly
183
+ exit 0
@@ -0,0 +1,247 @@
1
+ #!/bin/bash
2
+ #
3
+ # Security Policy Check Hook
4
+ # Checks for hardcoded secrets, insecure configurations, and security violations
5
+ # Hook: Stop (runs before tool execution)
6
+ #
7
+
8
+ set -e
9
+
10
+ # Get the directory of this script
11
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
13
+
14
+ # Colors for output
15
+ RED='\033[0;31m'
16
+ YELLOW='\033[1;33m'
17
+ GREEN='\033[0;32m'
18
+ NC='\033[0m' # No Color
19
+
20
+ # Exit codes
21
+ EXIT_SUCCESS=0
22
+ EXIT_WARNING=1
23
+ EXIT_ERROR=2
24
+
25
+ # Counters
26
+ CRITICAL_ISSUES=0
27
+ WARNING_ISSUES=0
28
+
29
+ echo "🔒 Running security policy checks..."
30
+
31
+ # Function to check for secrets in files
32
+ check_secrets() {
33
+ local file="$1"
34
+ local issues=0
35
+
36
+ # Skip binary files and known safe files
37
+ if file "$file" | grep -q "text"; then
38
+ # Check for AWS keys
39
+ if grep -qE "AKIA[0-9A-Z]{16}" "$file"; then
40
+ echo -e "${RED}❌ CRITICAL: AWS Access Key found in $file${NC}"
41
+ ((CRITICAL_ISSUES++))
42
+ ((issues++))
43
+ fi
44
+
45
+ # Check for private keys
46
+ if grep -qE "BEGIN.*PRIVATE KEY" "$file"; then
47
+ echo -e "${RED}❌ CRITICAL: Private key found in $file${NC}"
48
+ ((CRITICAL_ISSUES++))
49
+ ((issues++))
50
+ fi
51
+
52
+ # Check for password patterns
53
+ if grep -qiE "(password|passwd|pwd)\s*=\s*['\"][^'\"]{3,}" "$file"; then
54
+ echo -e "${RED}❌ CRITICAL: Hardcoded password found in $file${NC}"
55
+ ((CRITICAL_ISSUES++))
56
+ ((issues++))
57
+ fi
58
+
59
+ # Check for API keys/tokens
60
+ if grep -qiE "(api[_-]?key|api[_-]?token|auth[_-]?token)\s*=\s*['\"][^'\"]{10,}" "$file"; then
61
+ echo -e "${YELLOW}⚠️ WARNING: Possible API key/token in $file${NC}"
62
+ ((WARNING_ISSUES++))
63
+ ((issues++))
64
+ fi
65
+
66
+ # Check for database connection strings
67
+ if grep -qiE "(mysql|postgresql|mongodb)://[^@]+:[^@]+@" "$file"; then
68
+ echo -e "${RED}❌ CRITICAL: Database connection string with credentials in $file${NC}"
69
+ ((CRITICAL_ISSUES++))
70
+ ((issues++))
71
+ fi
72
+
73
+ # Check for JWT tokens
74
+ if grep -qE "eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9._-]{10,}" "$file"; then
75
+ echo -e "${YELLOW}⚠️ WARNING: Possible JWT token in $file${NC}"
76
+ ((WARNING_ISSUES++))
77
+ ((issues++))
78
+ fi
79
+ fi
80
+
81
+ return $issues
82
+ }
83
+
84
+ # Function to check infrastructure files for insecure configurations
85
+ check_infrastructure() {
86
+ local file="$1"
87
+ local issues=0
88
+
89
+ # Terraform files
90
+ if [[ "$file" == *.tf ]]; then
91
+ # Check for public S3 buckets
92
+ if grep -q "acl.*=.*\"public" "$file"; then
93
+ echo -e "${YELLOW}⚠️ WARNING: Public S3 bucket ACL in $file${NC}"
94
+ ((WARNING_ISSUES++))
95
+ ((issues++))
96
+ fi
97
+
98
+ # Check for open security groups (0.0.0.0/0)
99
+ if grep -q "0.0.0.0/0" "$file" && grep -q "ingress" "$file"; then
100
+ echo -e "${YELLOW}⚠️ WARNING: Security group allows ingress from 0.0.0.0/0 in $file${NC}"
101
+ ((WARNING_ISSUES++))
102
+ ((issues++))
103
+ fi
104
+
105
+ # Check for disabled encryption
106
+ if grep -qiE "encrypt.*=.*false" "$file"; then
107
+ echo -e "${YELLOW}⚠️ WARNING: Encryption disabled in $file${NC}"
108
+ ((WARNING_ISSUES++))
109
+ ((issues++))
110
+ fi
111
+ fi
112
+
113
+ # Kubernetes manifests
114
+ if [[ "$file" == *.yaml ]] || [[ "$file" == *.yml ]]; then
115
+ # Check for privileged containers
116
+ if grep -q "privileged: true" "$file"; then
117
+ echo -e "${RED}❌ CRITICAL: Privileged container in $file${NC}"
118
+ ((CRITICAL_ISSUES++))
119
+ ((issues++))
120
+ fi
121
+
122
+ # Check for hostPath volumes
123
+ if grep -q "hostPath:" "$file"; then
124
+ echo -e "${YELLOW}⚠️ WARNING: hostPath volume in $file${NC}"
125
+ ((WARNING_ISSUES++))
126
+ ((issues++))
127
+ fi
128
+
129
+ # Check for containers running as root
130
+ if grep -q "runAsUser: 0" "$file"; then
131
+ echo -e "${YELLOW}⚠️ WARNING: Container running as root (UID 0) in $file${NC}"
132
+ ((WARNING_ISSUES++))
133
+ ((issues++))
134
+ fi
135
+
136
+ # Check for missing resource limits
137
+ if grep -q "kind: Deployment" "$file" && ! grep -q "resources:" "$file"; then
138
+ echo -e "${YELLOW}⚠️ WARNING: Missing resource limits in $file${NC}"
139
+ ((WARNING_ISSUES++))
140
+ ((issues++))
141
+ fi
142
+ fi
143
+
144
+ # Docker files
145
+ if [[ "$file" == *Dockerfile* ]]; then
146
+ # Check for running as root
147
+ if ! grep -q "USER" "$file"; then
148
+ echo -e "${YELLOW}⚠️ WARNING: Dockerfile doesn't specify USER (will run as root) in $file${NC}"
149
+ ((WARNING_ISSUES++))
150
+ ((issues++))
151
+ fi
152
+
153
+ # Check for latest tag
154
+ if grep -qE "FROM.*:latest" "$file"; then
155
+ echo -e "${YELLOW}⚠️ WARNING: Using :latest tag in $file${NC}"
156
+ ((WARNING_ISSUES++))
157
+ ((issues++))
158
+ fi
159
+ fi
160
+
161
+ return $issues
162
+ }
163
+
164
+ # Function to check environment files
165
+ check_env_files() {
166
+ local file="$1"
167
+
168
+ if [[ "$file" == *.env* ]] || [[ "$file" == *credentials* ]]; then
169
+ echo -e "${RED}❌ CRITICAL: Environment/credentials file should not be committed: $file${NC}"
170
+ ((CRITICAL_ISSUES++))
171
+ return 1
172
+ fi
173
+
174
+ return 0
175
+ }
176
+
177
+ # Get list of changed files (if in git repo)
178
+ if git rev-parse --git-dir > /dev/null 2>&1; then
179
+ # Check staged files
180
+ CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM 2>/dev/null || echo "")
181
+
182
+ if [ -z "$CHANGED_FILES" ]; then
183
+ # If no staged files, check modified files
184
+ CHANGED_FILES=$(git diff --name-only --diff-filter=ACM 2>/dev/null || echo "")
185
+ fi
186
+
187
+ # Check files
188
+ while IFS= read -r file; do
189
+ if [ -f "$file" ]; then
190
+ # Skip certain directories
191
+ if [[ "$file" == *node_modules* ]] || [[ "$file" == *vendor* ]] || [[ "$file" == *.git* ]]; then
192
+ continue
193
+ fi
194
+
195
+ # Run checks
196
+ check_env_files "$file" || true
197
+ check_secrets "$file" || true
198
+ check_infrastructure "$file" || true
199
+ fi
200
+ done <<< "$CHANGED_FILES"
201
+ else
202
+ echo "⚠️ Not a git repository, skipping file checks"
203
+ fi
204
+
205
+ # Report results
206
+ echo ""
207
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
208
+ echo "Security Policy Check Results:"
209
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
210
+ echo -e "Critical Issues: ${RED}$CRITICAL_ISSUES${NC}"
211
+ echo -e "Warnings: ${YELLOW}$WARNING_ISSUES${NC}"
212
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
213
+
214
+ # Exit with appropriate code
215
+ if [ $CRITICAL_ISSUES -gt 0 ]; then
216
+ echo ""
217
+ echo -e "${RED}❌ BLOCKED: Critical security issues found!${NC}"
218
+ echo ""
219
+ echo "Please fix the critical issues before proceeding:"
220
+ echo " • Remove hardcoded secrets (use environment variables or secret managers)"
221
+ echo " • Do not commit .env or credentials files"
222
+ echo " • Do not commit private keys or certificates"
223
+ echo " • Use secure configurations for infrastructure"
224
+ echo ""
225
+ echo "If you believe this is a false positive, you can:"
226
+ echo " 1. Add '# security: ignore' comment on the line"
227
+ echo " 2. Add file to .securityignore"
228
+ echo " 3. Disable this hook temporarily (not recommended)"
229
+ echo ""
230
+ exit $EXIT_ERROR
231
+ elif [ $WARNING_ISSUES -gt 0 ]; then
232
+ echo ""
233
+ echo -e "${YELLOW}⚠️ Security warnings found. Please review.${NC}"
234
+ echo ""
235
+ echo "Consider fixing warnings:"
236
+ echo " • Avoid overly permissive security groups"
237
+ echo " • Enable encryption where applicable"
238
+ echo " • Avoid privileged containers"
239
+ echo " • Run containers as non-root user"
240
+ echo " • Specify resource limits"
241
+ echo ""
242
+ # Allow to proceed with warnings
243
+ exit $EXIT_SUCCESS
244
+ else
245
+ echo -e "${GREEN}✅ No security issues found!${NC}"
246
+ exit $EXIT_SUCCESS
247
+ fi
@@ -0,0 +1,10 @@
1
+ # PowerShell wrapper for skill-activation-prompt hook
2
+ # Windows users: Use this instead of skill-activation-prompt.sh
3
+
4
+ $ErrorActionPreference = "Stop"
5
+
6
+ # Change to hooks directory
7
+ Set-Location "$env:CLAUDE_PROJECT_DIR\.claude\hooks"
8
+
9
+ # Pipe stdin to npx tsx
10
+ $input | npx tsx skill-activation-prompt.ts
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Set default CLAUDE_PROJECT_DIR if not set
5
+ if [ -z "$CLAUDE_PROJECT_DIR" ]; then
6
+ export CLAUDE_PROJECT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
7
+ fi
8
+
9
+ cd "$CLAUDE_PROJECT_DIR/.claude/hooks"
10
+ cat | npx tsx skill-activation-prompt.ts