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
package/CHANGELOG.md CHANGED
@@ -1,57 +1,93 @@
1
- # История версий
2
-
3
-
4
- ## [1.21.0](https://github.com/blockmineJS/blockmine/compare/v1.20.0...v1.21.0) (2025-10-26)
5
-
6
-
7
- ### 🛠 Рефакторинг
8
-
9
- * [graph-system] все ноды отрефакторены и перенесены. [@claude](https://github.com/claude) author ([55db1b8](https://github.com/blockmineJS/blockmine/commit/55db1b89dbe470691db129a72c7efe55030acfa6))
10
-
11
-
12
- ### Новые возможности
13
-
14
- * [graph-system] пкм. по названию переменной можно найти - Получить/Установить переменную ([83b822f](https://github.com/blockmineJS/blockmine/commit/83b822ff1d278dfb9e280909c81ab32fd0e58bc3))
15
- * [graph-system] конвертация нод при подключения не к тем типам ([03deac8](https://github.com/blockmineJS/blockmine/commit/03deac83c9468199a8f6ae2b2480248c52a39e57))
16
- * добавление виртуализации для списков плагинов и ботов ([ea7746f](https://github.com/blockmineJS/blockmine/commit/ea7746f5c7f05ed74e6893bb27774d8541e0c57f))
17
- * новая нода для http запросов ([3565d06](https://github.com/blockmineJS/blockmine/commit/3565d06bff419c2d2665eba719a4c94696db00ae))
18
-
19
- ## [1.20.0](https://github.com/blockmineJS/blockmine/compare/v1.19.1...v1.20.0) (2025-10-23)
20
-
21
-
22
- ### ✨ Новые возможности
23
-
24
- * если бот падает 5 раз с критической ошибкой, то перезапуск отменяется ([2ba022f](https://github.com/blockmineJS/blockmine/commit/2ba022fff038cc83bb1edfa04d3edf97fc76c255))
25
- * action:send_message to support dynamic variables. example. Сообщение: привет, {username} ([457639d](https://github.com/blockmineJS/blockmine/commit/457639d70e7a8933f0508d93196a2be6951f1a0a))
26
-
27
- ### [1.19.1](https://github.com/blockmineJS/blockmine/compare/v1.19.0...v1.19.1) (2025-10-01)
28
-
29
-
30
- ### 🐛 Исправления
31
-
32
- * изменение порядка ботов теперь корректное ([9663737](https://github.com/blockmineJS/blockmine/commit/9663737505201468dd2233bf5658be5b2442f583))
33
- * фиксим новой вкладки прокси ([7ebdb7d](https://github.com/blockmineJS/blockmine/commit/7ebdb7d0df6c4e5cd6a9b15576cc1907ab7fcd74))
34
-
35
- ## [1.19.0](https://github.com/blockmineJS/blockmine/compare/v1.18.5...v1.19.0) (2025-08-23)
36
-
37
-
38
- ### 🐛 Исправления
39
-
40
- * баз команда dev исправлена. теперь не считает алиасы как отдельные кмд ([782c01e](https://github.com/blockmineJS/blockmine/commit/782c01e12f273a04cf78a5772b7be628d22f5791))
41
- * добавлена автоматическая установка недостающих модулей для плагинов при их загрузке ([27154f1](https://github.com/blockmineJS/blockmine/commit/27154f1d2c588f8d8371493f1d28646ff9d764f7))
42
- * зависимости плагин устанавливаются ([a7314c4](https://github.com/blockmineJS/blockmine/commit/a7314c4d1c66ef7021d6c265ebbb270c50a3ab62))
43
- * изменять версия у созданного сервера теперь можно ([a55e3c9](https://github.com/blockmineJS/blockmine/commit/a55e3c9d6a06b9ebd95722aa6487e2b79bda07ff))
44
- * исправление проблем с импортом ([ef9fde2](https://github.com/blockmineJS/blockmine/commit/ef9fde2aa8b1390910600bfd930c444cbff2d01e))
45
- * починили установку локальную ([1b28e07](https://github.com/blockmineJS/blockmine/commit/1b28e071d4846b62dd6360f4709a0e263841960b))
46
- * права юзеров теперь может менять только владелец панели (первый юзер) ([94312d7](https://github.com/blockmineJS/blockmine/commit/94312d7b9c09aabb704f163f8e3205abf7c2acdc))
47
-
48
-
49
- ### ✨ Новые возможности
50
-
51
- * когда другой юзер заходит в панель, другие клиенты увидят уведомление что он зашел ([a689b4e](https://github.com/blockmineJS/blockmine/commit/a689b4ee91e0dc187b3eeddc75600e880730b885))
52
- * новая кнопочка - прокси. позволяет установить прокси сразу множеству ботов ([ac75d65](https://github.com/blockmineJS/blockmine/commit/ac75d655289a4b4b4560555ac1fecbcdb199b822))
53
- * теперь можно для других юзеров назначать определенных ботов которыми они могут управлять ([484685b](https://github.com/blockmineJS/blockmine/commit/484685b1821fa3ad8907f4ab320762cf1c6a3959))
54
-
1
+ # История версий
2
+
3
+
4
+ ## [1.22.0](https://github.com/blockmineJS/blockmine/compare/v1.21.0...v1.22.0) (2025-11-16)
5
+
6
+
7
+ ### Новые возможности
8
+
9
+ * апи для дашборд страницы для отображения ресурсов системы ([c903d64](https://github.com/blockmineJS/blockmine/commit/c903d64c2576d22943971226caec1bd610f0f41e))
10
+ * для дашборда добавлен функционал для просмотров ресурсов системы ([b7fa209](https://github.com/blockmineJS/blockmine/commit/b7fa2097274882ea13c01068eac78824560cc22b))
11
+ * добавлены ноды для получения существ и игроков рядом с ботом ([17fad59](https://github.com/blockmineJS/blockmine/commit/17fad592c64833e25a2bd9e259379d4d649e3cb4))
12
+ * много новых нод и обнов для граф системы ([8881aa5](https://github.com/blockmineJS/blockmine/commit/8881aa554b1b8c6cca4d87cb5900bb8cfe535d33))
13
+ * новая большая механика. Вебсокеты ([acda500](https://github.com/blockmineJS/blockmine/commit/acda5005d01cfcb8ee7c85474af966c646c63fcd))
14
+ * новая нода - задержка ([cde63db](https://github.com/blockmineJS/blockmine/commit/cde63db612062f3eb7782e8c1f6af35a22dc03e2))
15
+ * отключение градиента в консоли. Автор - @artemscine ([ba11548](https://github.com/blockmineJS/blockmine/commit/ba1154827c2e5016c668b79f7b80386819cc7ab9))
16
+ * разработчики плагинов теперь могут указать secret: true для маскировки чувствительных значений ([f6c67fb](https://github.com/blockmineJS/blockmine/commit/f6c67fbb0a9cc24eea2175e275593a1b0421d199))
17
+ * сообщение в чате text\ntext разделяется на два. \n разделитель ([560ae7b](https://github.com/blockmineJS/blockmine/commit/560ae7b6c8ddbe0412d7f27d145c447bb5d750d2))
18
+ * теперь при обновлении плагинов настройки тоже мигрируются ([48434e8](https://github.com/blockmineJS/blockmine/commit/48434e853c9f926168873f61ecd49cbb6c10971c))
19
+ * Add date and time manipulation nodes ([80c8dbd](https://github.com/blockmineJS/blockmine/commit/80c8dbd9103a38a03b4ae4ea297322ae699d9c21))
20
+ * websocket. Большая фича ([a321023](https://github.com/blockmineJS/blockmine/commit/a3210230d6e78d46928924d244a6b24acee45443))
21
+
22
+
23
+ ### 🛠 Рефакторинг
24
+
25
+ * большой рефакторинг бэкенд части x2 ([49a543a](https://github.com/blockmineJS/blockmine/commit/49a543a122aced41b3725564c66a01269608dd2d))
26
+ * большой рефакторинг нод системы ([85ac50f](https://github.com/blockmineJS/blockmine/commit/85ac50f1f0ea79832bd398f7345029f52f6910e1))
27
+ * обновление компонентов UI и удаление зависимости от MUI ([86a4a5e](https://github.com/blockmineJS/blockmine/commit/86a4a5edfc91f024cd085cbe4282a5c9efb48b84))
28
+ * полный рефакторинг бэкенда ([5e68fd8](https://github.com/blockmineJS/blockmine/commit/5e68fd8fa00a162ae68772bb24ef984d433e9ca5))
29
+
30
+
31
+ ### 🐛 Исправления
32
+
33
+ * важный фикс команд ([16f7da2](https://github.com/blockmineJS/blockmine/commit/16f7da23167ece0877cb196c6ba01bbd6fbcc3a3))
34
+ * корректная очистка ANSI ([a9ba9c7](https://github.com/blockmineJS/blockmine/commit/a9ba9c74ab31dbce7ce881a098c204f48aa4e82e))
35
+ * рестарт после падения socks. Автор - @artemscine ([bf98505](https://github.com/blockmineJS/blockmine/commit/bf985052c40d30add6a717748efe37eeb15d5d74))
36
+ * уменьшение отступов в дашборде Автор - @artemscine ([af52a07](https://github.com/blockmineJS/blockmine/commit/af52a07a0615d29c97c6848ea758c83544236cad))
37
+ * remove problematic lcov-reporter-action and update to Node.js 22.x ([ac83208](https://github.com/blockmineJS/blockmine/commit/ac83208eefff2e71075d02fb46c603e8e22a6b9b))
38
+ * resolve CodeRabbit review issues ([a45ee47](https://github.com/blockmineJS/blockmine/commit/a45ee47a02409c67284e165248ac19e6adbd369f))
39
+
40
+ ## [1.21.0](https://github.com/blockmineJS/blockmine/compare/v1.20.0...v1.21.0) (2025-10-26)
41
+
42
+
43
+ ### 🛠 Рефакторинг
44
+
45
+ * [graph-system] все ноды отрефакторены и перенесены. [@claude](https://github.com/claude) author ([55db1b8](https://github.com/blockmineJS/blockmine/commit/55db1b89dbe470691db129a72c7efe55030acfa6))
46
+
47
+
48
+ ### ✨ Новые возможности
49
+
50
+ * [graph-system] пкм. по названию переменной можно найти - Получить/Установить переменную ([83b822f](https://github.com/blockmineJS/blockmine/commit/83b822ff1d278dfb9e280909c81ab32fd0e58bc3))
51
+ * [graph-system] конвертация нод при подключения не к тем типам ([03deac8](https://github.com/blockmineJS/blockmine/commit/03deac83c9468199a8f6ae2b2480248c52a39e57))
52
+ * добавление виртуализации для списков плагинов и ботов ([ea7746f](https://github.com/blockmineJS/blockmine/commit/ea7746f5c7f05ed74e6893bb27774d8541e0c57f))
53
+ * новая нода для http запросов ([3565d06](https://github.com/blockmineJS/blockmine/commit/3565d06bff419c2d2665eba719a4c94696db00ae))
54
+
55
+ ## [1.20.0](https://github.com/blockmineJS/blockmine/compare/v1.19.1...v1.20.0) (2025-10-23)
56
+
57
+
58
+ ### ✨ Новые возможности
59
+
60
+ * если бот падает 5 раз с критической ошибкой, то перезапуск отменяется ([2ba022f](https://github.com/blockmineJS/blockmine/commit/2ba022fff038cc83bb1edfa04d3edf97fc76c255))
61
+ * action:send_message to support dynamic variables. example. Сообщение: привет, {username} ([457639d](https://github.com/blockmineJS/blockmine/commit/457639d70e7a8933f0508d93196a2be6951f1a0a))
62
+
63
+ ### [1.19.1](https://github.com/blockmineJS/blockmine/compare/v1.19.0...v1.19.1) (2025-10-01)
64
+
65
+
66
+ ### 🐛 Исправления
67
+
68
+ * изменение порядка ботов теперь корректное ([9663737](https://github.com/blockmineJS/blockmine/commit/9663737505201468dd2233bf5658be5b2442f583))
69
+ * фиксим новой вкладки прокси ([7ebdb7d](https://github.com/blockmineJS/blockmine/commit/7ebdb7d0df6c4e5cd6a9b15576cc1907ab7fcd74))
70
+
71
+ ## [1.19.0](https://github.com/blockmineJS/blockmine/compare/v1.18.5...v1.19.0) (2025-08-23)
72
+
73
+
74
+ ### 🐛 Исправления
75
+
76
+ * баз команда dev исправлена. теперь не считает алиасы как отдельные кмд ([782c01e](https://github.com/blockmineJS/blockmine/commit/782c01e12f273a04cf78a5772b7be628d22f5791))
77
+ * добавлена автоматическая установка недостающих модулей для плагинов при их загрузке ([27154f1](https://github.com/blockmineJS/blockmine/commit/27154f1d2c588f8d8371493f1d28646ff9d764f7))
78
+ * зависимости плагин устанавливаются ([a7314c4](https://github.com/blockmineJS/blockmine/commit/a7314c4d1c66ef7021d6c265ebbb270c50a3ab62))
79
+ * изменять версия у созданного сервера теперь можно ([a55e3c9](https://github.com/blockmineJS/blockmine/commit/a55e3c9d6a06b9ebd95722aa6487e2b79bda07ff))
80
+ * исправление проблем с импортом ([ef9fde2](https://github.com/blockmineJS/blockmine/commit/ef9fde2aa8b1390910600bfd930c444cbff2d01e))
81
+ * починили установку локальную ([1b28e07](https://github.com/blockmineJS/blockmine/commit/1b28e071d4846b62dd6360f4709a0e263841960b))
82
+ * права юзеров теперь может менять только владелец панели (первый юзер) ([94312d7](https://github.com/blockmineJS/blockmine/commit/94312d7b9c09aabb704f163f8e3205abf7c2acdc))
83
+
84
+
85
+ ### ✨ Новые возможности
86
+
87
+ * когда другой юзер заходит в панель, другие клиенты увидят уведомление что он зашел ([a689b4e](https://github.com/blockmineJS/blockmine/commit/a689b4ee91e0dc187b3eeddc75600e880730b885))
88
+ * новая кнопочка - прокси. позволяет установить прокси сразу множеству ботов ([ac75d65](https://github.com/blockmineJS/blockmine/commit/ac75d655289a4b4b4560555ac1fecbcdb199b822))
89
+ * теперь можно для других юзеров назначать определенных ботов которыми они могут управлять ([484685b](https://github.com/blockmineJS/blockmine/commit/484685b1821fa3ad8907f4ab320762cf1c6a3959))
90
+
55
91
  ### [1.18.5](https://github.com/blockmineJS/blockmine/compare/v1.18.4...v1.18.5) (2025-08-15)
56
92
 
57
93
 
package/README.md CHANGED
@@ -62,6 +62,12 @@
62
62
  * Создавайте **полные резервные копии** ботов в один ZIP-архив, включая все плагины и их настройки.
63
63
  * Делитесь отдельными командами и графами событий через экспорт в JSON.
64
64
  * Легко переносите ботов и их логику между разными установками BlockMine.
65
+ * **🔌 WebSocket API для интеграций**:
66
+ * Управляйте ботами из внешних приложений через WebSocket API.
67
+ * Выполняйте команды бота от имени любого пользователя с полной проверкой прав.
68
+ * Вызывайте визуальные графы и получайте результаты их выполнения.
69
+ * Подписывайтесь на события бота (сообщения в чате, вход/выход игроков, здоровье и др.).
70
+ * Официальный SDK `blockmine-api` для Node.js с полной документацией.
65
71
  * **📦 Простая установка**: Запуск всей системы одной командой благодаря `npx`.
66
72
 
67
73
  ## ✨ Быстрый старт с `npx`
@@ -144,3 +150,91 @@ npm run dev
144
150
 
145
151
  * **Бэкенд** будет доступен на `http://localhost:3001`.
146
152
  * **Фронтенд** с горячей перезагрузкой будет доступен на `http://localhost:5173`. Открывайте этот адрес для разработки.
153
+
154
+ ### 3. WebSocket API для интеграций
155
+
156
+ BlockMine предоставляет мощный WebSocket API для интеграции с внешними приложениями. Вы можете управлять ботами, вызывать графы и подписываться на события из любого языка программирования.
157
+
158
+ #### Установка SDK
159
+
160
+ ```bash
161
+ npm install blockmine-api
162
+ ```
163
+
164
+ #### Быстрый пример
165
+
166
+ ```javascript
167
+ const BlockMineBot = require('blockmine-api');
168
+
169
+ const bot = new BlockMineBot({
170
+ url: 'http://localhost:3001',
171
+ botId: 1,
172
+ apiKey: 'bk_your_api_key_here'
173
+ });
174
+
175
+ async function main() {
176
+ await bot.connect();
177
+
178
+ // Слушать сообщения в чате
179
+ bot.onChatMessage((data) => {
180
+ console.log(`${data.username}: ${data.message}`);
181
+ });
182
+
183
+ // Выполнить команду бота от имени пользователя
184
+ const result = await bot.executeCommand('Steve', 'ping');
185
+ console.log('Результат команды:', result); // "Понг, Steve!"
186
+
187
+ // Вызвать визуальный граф и получить результат
188
+ const graphResult = await bot.callGraph('calculate', {
189
+ operation: 'add',
190
+ a: 10,
191
+ b: 20
192
+ });
193
+ console.log('Результат графа:', graphResult);
194
+ }
195
+
196
+ main();
197
+ ```
198
+
199
+ #### Документация
200
+
201
+ Полная документация по WebSocket API доступна в пакете `blockmine-api`:
202
+ - [README.md](./packages/blockmine-api/README.md) - Полное руководство по API
203
+ - [examples/](./packages/blockmine-api/examples/) - Примеры использования
204
+
205
+ #### Возможности API
206
+
207
+ **Выполнение команд:**
208
+ ```javascript
209
+ // Команды выполняются с полной проверкой прав пользователя
210
+ const result = await bot.executeCommand('Steve', 'ping');
211
+ // Результат: "Понг, Steve!"
212
+
213
+ // С аргументами
214
+ const result2 = await bot.executeCommand('Steve', 'ping', { target: 'Alex' });
215
+ // Результат: "Понг, Steve! Пингую игрока Alex."
216
+ ```
217
+
218
+ **Вызов графов:**
219
+ ```javascript
220
+ // Графы с триггером "Вызов из WebSocket API" возвращают данные
221
+ const data = await bot.callGraph('server_info', {});
222
+ console.log(data); // { players: [...], position: {...} }
223
+ ```
224
+
225
+ **События:**
226
+ ```javascript
227
+ // Подписка на события бота
228
+ bot.onChatMessage((data) => {
229
+ console.log(`${data.username}: ${data.message}`);
230
+ });
231
+
232
+ bot.onPlayerJoin((username) => {
233
+ console.log(`${username} присоединился`);
234
+ });
235
+ ```
236
+
237
+ **Универсальная система выполнения:**
238
+ - Команды через WebSocket API используют ту же валидацию, что и команды из Minecraft
239
+ - Все проверки прав, кулдаунов и черного списка работают одинаково
240
+ - Это позволяет создавать единую систему команд для разных источников (игра, API, будущий Telegram бот)
@@ -0,0 +1,327 @@
1
+ # Документация по скрытым (секретным) значениям в настройках плагинов
2
+
3
+ ## Обзор
4
+
5
+ Механика скрытых значений позволяет безопасно хранить чувствительные данные (API ключи, пароли, токены) в настройках плагинов. После сохранения такие значения маскируются при отправке на фронтенд, предотвращая утечку конфиденциальной информации.
6
+
7
+ ## Как использовать
8
+
9
+ ### 1. Объявление секретных настроек в package.json
10
+
11
+ Чтобы пометить настройку как секретную, добавьте атрибут `"secret": true` в описание настройки:
12
+
13
+ ```json
14
+ {
15
+ "botpanel": {
16
+ "settings": {
17
+ "apiKey": {
18
+ "type": "string",
19
+ "label": "API ключ",
20
+ "description": "Ваш секретный API ключ",
21
+ "default": "",
22
+ "secret": true
23
+ },
24
+ "apiKeys": {
25
+ "type": "string[]",
26
+ "label": "API ключи",
27
+ "description": "Список API ключей",
28
+ "default": [],
29
+ "secret": true
30
+ },
31
+ "password": {
32
+ "type": "string",
33
+ "label": "Пароль",
34
+ "description": "Пароль для доступа",
35
+ "default": "",
36
+ "secret": true
37
+ }
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ ### 2. Поддерживаемые типы настроек
44
+
45
+ Атрибут `secret` работает со всеми типами настроек:
46
+ - `string` - будет заменено на `********`
47
+ - `string[]` - каждый элемент массива будет заменен на `********`
48
+ - `object` - каждое значение в объекте будет заменено на `********`
49
+ - `number` - будет заменено на `********`
50
+ - `boolean` - будет заменено на `********`
51
+
52
+ ### 3. Работа с группированными настройками
53
+
54
+ Механизм также поддерживает группированные настройки:
55
+
56
+ ```json
57
+ {
58
+ "botpanel": {
59
+ "settings": {
60
+ "Аутентификация": {
61
+ "label": "Настройки аутентификации",
62
+ "token": {
63
+ "type": "string",
64
+ "label": "Токен",
65
+ "description": "Токен для API",
66
+ "default": "",
67
+ "secret": true
68
+ },
69
+ "apiKey": {
70
+ "type": "string",
71
+ "label": "API ключ",
72
+ "default": "",
73
+ "secret": true
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ ```
80
+
81
+ ## Поведение системы
82
+
83
+ ### При чтении настроек (GET запросы)
84
+
85
+ Когда фронтенд запрашивает настройки плагина, все секретные значения автоматически маскируются:
86
+
87
+ ```javascript
88
+ // Реальные значения в БД:
89
+ {
90
+ "apiKey": "sk-abc123xyz789",
91
+ "username": "john_doe"
92
+ }
93
+
94
+ // Что получает фронтенд:
95
+ {
96
+ "apiKey": "********", // секретное значение замаскировано
97
+ "username": "john_doe" // обычное значение без изменений
98
+ }
99
+ ```
100
+
101
+ ### При сохранении настроек (PUT запросы)
102
+
103
+ Система автоматически определяет, были ли изменены секретные значения:
104
+
105
+ #### Сценарий 1: Секретное значение не изменилось
106
+ ```javascript
107
+ // Пользователь отправляет:
108
+ {
109
+ "apiKey": "********", // маска (не изменено)
110
+ "username": "new_username"
111
+ }
112
+
113
+ // Система сохраняет:
114
+ {
115
+ "apiKey": "sk-abc123xyz789", // оригинальное значение сохранено
116
+ "username": "new_username"
117
+ }
118
+ ```
119
+
120
+ #### Сценарий 2: Секретное значение изменилось
121
+ ```javascript
122
+ // Пользователь отправляет:
123
+ {
124
+ "apiKey": "sk-new-key-456", // новое значение
125
+ "username": "new_username"
126
+ }
127
+
128
+ // Система сохраняет:
129
+ {
130
+ "apiKey": "sk-new-key-456", // новое значение сохранено
131
+ "username": "new_username"
132
+ }
133
+ ```
134
+
135
+ ## Примеры использования
136
+
137
+ ### Пример 1: API ключи
138
+
139
+ ```json
140
+ {
141
+ "botpanel": {
142
+ "settings": {
143
+ "apiKeys": {
144
+ "type": "string[]",
145
+ "label": "API ключи Google AI",
146
+ "description": "Список API ключей от Google AI Studio",
147
+ "default": [],
148
+ "secret": true
149
+ }
150
+ }
151
+ }
152
+ }
153
+ ```
154
+
155
+ ### Пример 2: Пароль прокси-сервера
156
+
157
+ ```json
158
+ {
159
+ "botpanel": {
160
+ "settings": {
161
+ "proxyPassword": {
162
+ "type": "string",
163
+ "label": "Пароль прокси",
164
+ "description": "Пароль для авторизации на прокси-сервере",
165
+ "default": "",
166
+ "secret": true
167
+ }
168
+ }
169
+ }
170
+ }
171
+ ```
172
+
173
+ ### Пример 3: Токен доступа
174
+
175
+ ```json
176
+ {
177
+ "botpanel": {
178
+ "settings": {
179
+ "accessToken": {
180
+ "type": "string",
181
+ "label": "Токен доступа",
182
+ "description": "Bearer токен для API",
183
+ "default": "",
184
+ "secret": true
185
+ }
186
+ }
187
+ }
188
+ }
189
+ ```
190
+
191
+ ## Технические детали
192
+
193
+ ### Константы
194
+ - `SECRET_MASK = '********'` - маска для замены секретных значений
195
+
196
+ ### Функции утилиты
197
+
198
+ #### `isSecretSetting(settingConfig)`
199
+ Проверяет, является ли настройка секретной.
200
+
201
+ #### `maskSecretValue(value, settingConfig)`
202
+ Маскирует значение, если настройка секретная.
203
+
204
+ #### `filterSecretSettings(settings, manifestSettings, isGrouped)`
205
+ Фильтрует настройки плагина, маскируя секретные значения перед отправкой на фронтенд.
206
+
207
+ #### `prepareSettingsForSave(newSettings, existingSettings, manifestSettings, isGrouped)`
208
+ Подготавливает настройки для сохранения, сохраняя оригинальные значения для замаскированных секретов.
209
+
210
+ #### `isMaskedValue(value)`
211
+ Проверяет, является ли значение замаскированным.
212
+
213
+ ## Безопасность
214
+
215
+ ### Что защищает эта механика:
216
+ ✅ Секретные значения не отправляются на фронтенд
217
+ ✅ API ключи и пароли не отображаются в UI
218
+ ✅ Случайное копирование настроек не раскрывает секреты
219
+ ✅ Логи браузера не содержат чувствительных данных
220
+
221
+ ### Что НЕ защищает эта механика:
222
+ ❌ Прямой доступ к базе данных
223
+ ❌ Доступ к файловой системе сервера
224
+ ❌ Server-side логи (секреты могут попасть в логи при загрузке плагинов)
225
+ ❌ Network traffic sniffing (используйте HTTPS)
226
+
227
+ ## Рекомендации
228
+
229
+ 1. **Всегда помечайте чувствительные данные как секретные:**
230
+ - API ключи
231
+ - Пароли
232
+ - Токены доступа
233
+ - OAuth секреты
234
+ - Приватные ключи
235
+
236
+ 2. **НЕ помечайте как секретные:**
237
+ - Публичные идентификаторы
238
+ - Имена пользователей (если не конфиденциальные)
239
+ - URL адреса
240
+ - Настройки UI
241
+
242
+ 3. **Дополнительная безопасность:**
243
+ - Используйте HTTPS для всех API запросов
244
+ - Ограничьте права доступа к настройкам плагинов
245
+ - Регулярно ротируйте API ключи
246
+ - Используйте переменные окружения для критически важных секретов
247
+
248
+ ## Миграция существующих плагинов
249
+
250
+ Для добавления поддержки секретных значений в существующий плагин:
251
+
252
+ 1. Откройте `package.json` вашего плагина
253
+ 2. Найдите секретные настройки в секции `botpanel.settings`
254
+ 3. Добавьте `"secret": true` к каждой секретной настройке
255
+ 4. Сохраните файл
256
+ 5. Переустановите плагин или перезапустите бота
257
+
258
+ ```diff
259
+ "apiKey": {
260
+ "type": "string",
261
+ "label": "API ключ",
262
+ "description": "Ваш секретный API ключ",
263
+ - "default": ""
264
+ + "default": "",
265
+ + "secret": true
266
+ }
267
+ ```
268
+
269
+ ## Отладка
270
+
271
+ Если секретные значения не маскируются:
272
+
273
+ 1. Проверьте, что атрибут `"secret": true` добавлен корректно
274
+ 2. Убедитесь, что JSON валиден (нет лишних запятых)
275
+ 3. Проверьте логи сервера на наличие ошибок парсинга manifest
276
+ 4. Попробуйте переустановить плагин
277
+
278
+ ## API Endpoints
279
+
280
+ Механика скрытых значений автоматически применяется к следующим endpoints:
281
+
282
+ - `GET /api/bots/:botId/plugins/:pluginId/settings` - получение настроек плагина
283
+ - `PUT /api/bots/:botId/plugins/:pluginId` - сохранение настроек плагина
284
+ - `GET /api/bots/:id/settings/all` - получение всех настроек бота
285
+
286
+ ## Пример полного package.json
287
+
288
+ ```json
289
+ {
290
+ "name": "my-secure-plugin",
291
+ "version": "1.0.0",
292
+ "description": "Плагин с секретными настройками",
293
+ "main": "index.js",
294
+ "botpanel": {
295
+ "icon": "Shield",
296
+ "categories": ["Утилиты"],
297
+ "settings": {
298
+ "apiKey": {
299
+ "type": "string",
300
+ "label": "API ключ",
301
+ "description": "Ваш секретный API ключ",
302
+ "default": "",
303
+ "secret": true
304
+ },
305
+ "serverUrl": {
306
+ "type": "string",
307
+ "label": "URL сервера",
308
+ "description": "Адрес API сервера",
309
+ "default": "https://api.example.com"
310
+ },
311
+ "tokens": {
312
+ "type": "string[]",
313
+ "label": "Токены",
314
+ "description": "Список токенов доступа",
315
+ "default": [],
316
+ "secret": true
317
+ },
318
+ "enableLogging": {
319
+ "type": "boolean",
320
+ "label": "Включить логирование",
321
+ "default": false
322
+ }
323
+ }
324
+ }
325
+ }
326
+ ```
327
+
@@ -0,0 +1,59 @@
1
+ module.exports = {
2
+ testEnvironment: 'node',
3
+
4
+ testMatch: [
5
+ '**/__tests__/**/*.test.js',
6
+ '**/?(*.)+(spec|test).js'
7
+ ],
8
+
9
+ testPathIgnorePatterns: [
10
+ '/node_modules/',
11
+ '/dist/',
12
+ '/build/',
13
+ '/storage/',
14
+ '/plugins/'
15
+ ],
16
+
17
+ modulePathIgnorePatterns: [
18
+ '/storage/',
19
+ '/plugins/'
20
+ ],
21
+
22
+ collectCoverageFrom: [
23
+ 'src/repositories/**/*.js',
24
+ 'src/core/services/**/*.js',
25
+ 'src/container.js',
26
+ 'src/core/BotManager.js',
27
+ 'src/core/EventGraphManager.js',
28
+ 'src/core/PluginManager.js',
29
+ 'src/core/UserService.js',
30
+ 'src/core/DependencyService.js',
31
+ 'src/core/TaskScheduler.js',
32
+ 'src/core/PluginLoader.js',
33
+ 'src/core/PluginService.js',
34
+ 'src/core/PermissionManager.js',
35
+ 'src/core/MessageQueue.js',
36
+ 'src/core/GraphExecutionEngine.js',
37
+ 'src/core/NodeRegistry.js',
38
+ 'src/core/PrismaService.js',
39
+ 'src/api/routes/**/*.js',
40
+ 'src/core/utils/**/*.js',
41
+ 'src/core/nodes/**/*.js',
42
+ '!src/**/*.test.js',
43
+ '!src/**/__tests__/**',
44
+ '!src/core/BotProcess.js',
45
+ '!src/core/BotManager.old.js',
46
+ '!src/test-refactor.js',
47
+ ],
48
+
49
+
50
+ testTimeout: 10000,
51
+
52
+ clearMocks: true,
53
+ resetMocks: true,
54
+ restoreMocks: true,
55
+
56
+ verbose: true,
57
+
58
+ setupFilesAfterEnv: ['<rootDir>/src/__tests__/setup.js'],
59
+ };