blockmine 1.24.0 → 1.27.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 (476) hide show
  1. package/CHANGELOG.md +76 -1
  2. package/README.en.md +427 -0
  3. package/README.md +40 -0
  4. package/backend/package.json +2 -2
  5. package/backend/prisma/migrations/20260328173000_add_plugin_source_ref/migration.sql +2 -0
  6. package/backend/prisma/migrations/migration_lock.toml +2 -2
  7. package/backend/prisma/schema.prisma +2 -0
  8. package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
  9. package/backend/src/api/routes/apiKeys.js +8 -0
  10. package/backend/src/api/routes/bots.js +271 -9
  11. package/backend/src/api/routes/eventGraphs.js +151 -1
  12. package/backend/src/api/routes/health.js +38 -0
  13. package/backend/src/api/routes/nodeRegistry.js +63 -0
  14. package/backend/src/api/routes/plugins.js +254 -29
  15. package/backend/src/api/routes/servers.js +14 -2
  16. package/backend/src/container.js +11 -8
  17. package/backend/src/core/BotCommandLoader.js +161 -0
  18. package/backend/src/core/BotConnection.js +125 -0
  19. package/backend/src/core/BotEventHandlers.js +234 -0
  20. package/backend/src/core/BotIPCHandler.js +445 -0
  21. package/backend/src/core/BotManager.js +15 -7
  22. package/backend/src/core/BotProcess.js +169 -140
  23. package/backend/src/core/EventGraphManager.js +7 -3
  24. package/backend/src/core/GraphDebugHandler.js +229 -0
  25. package/backend/src/core/GraphDebugIPC.js +117 -0
  26. package/backend/src/core/GraphExecutionEngine.js +545 -978
  27. package/backend/src/core/GraphTraversal.js +80 -0
  28. package/backend/src/core/GraphValidation.js +73 -0
  29. package/backend/src/core/NodeDefinition.js +138 -0
  30. package/backend/src/core/NodeRegistry.js +153 -141
  31. package/backend/src/core/PluginLoader.js +83 -3
  32. package/backend/src/core/PluginManager.js +346 -35
  33. package/backend/src/core/RewindSignal.js +9 -0
  34. package/backend/src/core/config/ConfigValidator.js +72 -0
  35. package/backend/src/core/config/FeatureFlags.js +52 -0
  36. package/backend/src/core/config/__tests__/ConfigValidator.test.js +232 -0
  37. package/backend/src/core/domain/entities/Bot.js +39 -0
  38. package/backend/src/core/domain/entities/Command.js +41 -0
  39. package/backend/src/core/domain/entities/EventGraph.js +39 -0
  40. package/backend/src/core/domain/entities/Plugin.js +45 -0
  41. package/backend/src/core/domain/entities/User.js +40 -0
  42. package/backend/src/core/domain/services/DependencyResolver.js +168 -0
  43. package/backend/src/core/domain/services/GraphValidator.js +117 -0
  44. package/backend/src/core/domain/services/PermissionChecker.js +34 -0
  45. package/backend/src/core/domain/services/__tests__/DependencyResolver.test.js +126 -0
  46. package/backend/src/core/domain/valueObjects/BotConfig.js +27 -0
  47. package/backend/src/core/domain/valueObjects/DependencyGraph.js +86 -0
  48. package/backend/src/core/domain/valueObjects/PluginManifest.js +36 -0
  49. package/backend/src/core/errors/BaseError.js +29 -0
  50. package/backend/src/core/errors/ErrorHandler.js +81 -0
  51. package/backend/src/core/errors/__tests__/ErrorHandler.test.js +188 -0
  52. package/backend/src/core/errors/index.js +68 -0
  53. package/backend/src/core/infrastructure/BatchingUtility.js +66 -0
  54. package/backend/src/core/infrastructure/CircuitBreaker.js +103 -0
  55. package/backend/src/core/infrastructure/ConnectionPool.js +81 -0
  56. package/backend/src/core/infrastructure/RateLimiter.js +64 -0
  57. package/backend/src/core/infrastructure/__tests__/BatchingUtility.test.js +86 -0
  58. package/backend/src/core/infrastructure/__tests__/CircuitBreaker.test.js +156 -0
  59. package/backend/src/core/infrastructure/__tests__/ConnectionPool.test.js +146 -0
  60. package/backend/src/core/infrastructure/__tests__/RateLimiter.test.js +171 -0
  61. package/backend/src/core/ipc/botApiFactory.js +72 -0
  62. package/backend/src/core/ipc/ipcMessageTypes.js +115 -0
  63. package/backend/src/core/logging/AuditLogger.js +61 -0
  64. package/backend/src/core/logging/StructuredLogger.js +80 -0
  65. package/backend/src/core/logging/__tests__/StructuredLogger.test.js +213 -0
  66. package/backend/src/core/logging/index.js +7 -0
  67. package/backend/src/core/metrics/MetricsCollector.js +104 -0
  68. package/backend/src/core/metrics/__tests__/MetricsCollector.test.js +131 -0
  69. package/backend/src/core/node-registries/actionsNodes.js +191 -0
  70. package/backend/src/core/node-registries/arraysNodes.js +152 -0
  71. package/backend/src/core/node-registries/botNodes.js +48 -0
  72. package/backend/src/core/node-registries/containerNodes.js +141 -0
  73. package/backend/src/core/node-registries/dataNodes.js +284 -0
  74. package/backend/src/core/node-registries/debugNodes.js +23 -0
  75. package/backend/src/core/node-registries/eventsNodes.js +223 -0
  76. package/backend/src/core/node-registries/flowNodes.js +151 -0
  77. package/backend/src/core/node-registries/furnaceNodes.js +123 -0
  78. package/backend/src/core/node-registries/index.js +108 -0
  79. package/backend/src/core/node-registries/inventory.js +102 -106
  80. package/backend/src/core/node-registries/logicNodes.js +54 -0
  81. package/backend/src/core/node-registries/mathNodes.js +38 -0
  82. package/backend/src/core/node-registries/navigationNodes.js +109 -0
  83. package/backend/src/core/node-registries/objectsNodes.js +90 -0
  84. package/backend/src/core/node-registries/stringsNodes.js +165 -0
  85. package/backend/src/core/node-registries/timeNodes.js +105 -0
  86. package/backend/src/core/node-registries/typeNodes.js +22 -0
  87. package/backend/src/core/node-registries/usersNodes.js +126 -0
  88. package/backend/src/core/nodes/arrays/shuffle.js +14 -0
  89. package/backend/src/core/nodes/bot/get_name.js +8 -0
  90. package/backend/src/core/nodes/bot/stop_bot.js +5 -0
  91. package/backend/src/core/nodes/container/open.js +101 -111
  92. package/backend/src/core/nodes/data/store_read.js +26 -0
  93. package/backend/src/core/nodes/data/store_write.js +23 -0
  94. package/backend/src/core/nodes/event/call_event.js +31 -0
  95. package/backend/src/core/nodes/event/custom_event.js +8 -0
  96. package/backend/src/core/nodes/flow/timer.js +35 -0
  97. package/backend/src/core/nodes/inventory/drop.js +73 -65
  98. package/backend/src/core/nodes/inventory/equip.js +54 -45
  99. package/backend/src/core/nodes/inventory/select_slot.js +48 -46
  100. package/backend/src/core/nodes/navigation/follow.js +54 -51
  101. package/backend/src/core/nodes/navigation/go_to.js +41 -53
  102. package/backend/src/core/nodes/navigation/go_to_entity.js +65 -69
  103. package/backend/src/core/nodes/navigation/go_to_player.js +65 -70
  104. package/backend/src/core/nodes/navigation/stop.js +17 -26
  105. package/backend/src/core/nodes/users/add_to_group.js +24 -0
  106. package/backend/src/core/nodes/users/check_permission.js +26 -0
  107. package/backend/src/core/nodes/users/remove_from_group.js +24 -0
  108. package/backend/src/core/services/BotIPCMessageRouter.js +337 -0
  109. package/backend/src/core/services/BotLifecycleService.js +43 -450
  110. package/backend/src/core/services/CacheManager.js +83 -23
  111. package/backend/src/core/services/CrashRestartManager.js +42 -0
  112. package/backend/src/core/services/DebugSessionManager.js +114 -12
  113. package/backend/src/core/services/EventGraphService.js +69 -0
  114. package/backend/src/core/services/MinecraftBotManager.js +9 -1
  115. package/backend/src/core/services/PluginManagementService.js +84 -0
  116. package/backend/src/core/services/TestModeContext.js +65 -0
  117. package/backend/src/core/services/__tests__/CacheManager.test.js +168 -0
  118. package/backend/src/core/services.js +1 -11
  119. package/backend/src/core/validation/InputValidator.js +167 -0
  120. package/backend/src/core/validation/__tests__/InputValidator.test.js +296 -0
  121. package/backend/src/real-time/botApi/index.js +1 -1
  122. package/backend/src/real-time/socketHandler.js +26 -0
  123. package/backend/src/server.js +21 -6
  124. package/frontend/dist/assets/browser-ponyfill-D8y0Ty7C.js +2 -0
  125. package/frontend/dist/assets/index-CFJLS0dk.css +32 -0
  126. package/frontend/dist/assets/index-D91UGNMG.js +11260 -0
  127. package/frontend/dist/flags/en.svg +32 -0
  128. package/frontend/dist/flags/ru.svg +5 -0
  129. package/frontend/dist/index.html +2 -2
  130. package/frontend/dist/locales/en/admin.json +100 -0
  131. package/frontend/dist/locales/en/api-keys.json +58 -0
  132. package/frontend/dist/locales/en/bots.json +113 -0
  133. package/frontend/dist/locales/en/common.json +53 -0
  134. package/frontend/dist/locales/en/configuration.json +22 -0
  135. package/frontend/dist/locales/en/console.json +10 -0
  136. package/frontend/dist/locales/en/dashboard.json +85 -0
  137. package/frontend/dist/locales/en/dialogs.json +70 -0
  138. package/frontend/dist/locales/en/event-graphs.json +50 -0
  139. package/frontend/dist/locales/en/graph-store.json +70 -0
  140. package/frontend/dist/locales/en/login.json +36 -0
  141. package/frontend/dist/locales/en/management.json +192 -0
  142. package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
  143. package/frontend/dist/locales/en/nodes.json +1132 -0
  144. package/frontend/dist/locales/en/permissions.json +50 -0
  145. package/frontend/dist/locales/en/plugin-detail.json +69 -0
  146. package/frontend/dist/locales/en/plugins.json +329 -0
  147. package/frontend/dist/locales/en/proxies.json +81 -0
  148. package/frontend/dist/locales/en/servers.json +39 -0
  149. package/frontend/dist/locales/en/setup.json +19 -0
  150. package/frontend/dist/locales/en/sidebar.json +195 -0
  151. package/frontend/dist/locales/en/tasks.json +62 -0
  152. package/frontend/dist/locales/en/visual-editor.json +418 -0
  153. package/frontend/dist/locales/en/websocket.json +86 -0
  154. package/frontend/dist/locales/ru/admin.json +100 -0
  155. package/frontend/dist/locales/ru/api-keys.json +58 -0
  156. package/frontend/dist/locales/ru/bots.json +113 -0
  157. package/frontend/dist/locales/ru/common.json +49 -0
  158. package/frontend/dist/locales/ru/configuration.json +22 -0
  159. package/frontend/dist/locales/ru/console.json +10 -0
  160. package/frontend/dist/locales/ru/dashboard.json +85 -0
  161. package/frontend/dist/locales/ru/dialogs.json +70 -0
  162. package/frontend/dist/locales/ru/event-graphs.json +50 -0
  163. package/frontend/dist/locales/ru/graph-store.json +70 -0
  164. package/frontend/dist/locales/ru/login.json +36 -0
  165. package/frontend/dist/locales/ru/management.json +192 -0
  166. package/frontend/dist/locales/ru/minecraft-viewer.json +30 -0
  167. package/frontend/dist/locales/ru/nodes.json +1131 -0
  168. package/frontend/dist/locales/ru/permissions.json +50 -0
  169. package/frontend/dist/locales/ru/plugin-detail.json +49 -0
  170. package/frontend/dist/locales/ru/plugins.json +209 -0
  171. package/frontend/dist/locales/ru/proxies.json +81 -0
  172. package/frontend/dist/locales/ru/servers.json +39 -0
  173. package/frontend/dist/locales/ru/setup.json +19 -0
  174. package/frontend/dist/locales/ru/sidebar.json +195 -0
  175. package/frontend/dist/locales/ru/tasks.json +62 -0
  176. package/frontend/dist/locales/ru/visual-editor.json +420 -0
  177. package/frontend/dist/locales/ru/websocket.json +86 -0
  178. package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
  179. package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
  180. package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
  181. package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
  182. package/frontend/package.json +6 -0
  183. package/nul +12 -0
  184. package/package.json +3 -3
  185. package/screen/3dviewer.png +0 -0
  186. package/screen/console.png +0 -0
  187. package/screen/dashboard.png +0 -0
  188. package/screen/graph_collabe.png +0 -0
  189. package/screen/graph_live_debug.png +0 -0
  190. package/screen/language_selector.png +0 -0
  191. package/screen/management_command.png +0 -0
  192. package/screen/node_debug_trace.png +0 -0
  193. package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
  194. package/screen/websocket.png +0 -0
  195. package/screen//320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270_/320/276/321/202/320/264/320/265/320/273/321/214/320/275/321/213/321/205_/320/272/320/276/320/274/320/260/320/275/320/264_/320/272/320/260/320/266/320/264/321/203_/320/272/320/276/320/274/320/260/320/275/320/273/320/264/321/203_/320/274/320/276/320/266/320/275/320/276_/320/275/320/260/321/201/321/202/321/200/320/260/320/270/320/262/320/260/321/202/321/214.png +0 -0
  196. package/screen//320/277/320/273/320/260/320/275/320/270/321/200/320/276/320/262/321/211/320/270/320/272_/320/274/320/276/320/266/320/275/320/276_/320/267/320/260/320/264/320/260/320/262/320/260/321/202/321/214_/320/264/320/265/320/271/321/201/321/202/320/262/320/270/321/217_/320/277/320/276_/320/262/321/200/320/265/320/274/320/265/320/275/320/270.png +0 -0
  197. package/.claude/agents/README.md +0 -469
  198. package/.claude/agents/auth-route-debugger.md +0 -118
  199. package/.claude/agents/auth-route-tester.md +0 -93
  200. package/.claude/agents/auto-error-resolver.md +0 -97
  201. package/.claude/agents/build-optimizer.md +0 -236
  202. package/.claude/agents/code-architect.md +0 -34
  203. package/.claude/agents/code-architecture-reviewer.md +0 -83
  204. package/.claude/agents/code-explorer.md +0 -51
  205. package/.claude/agents/code-refactor-master.md +0 -94
  206. package/.claude/agents/code-reviewer.md +0 -46
  207. package/.claude/agents/cost-optimizer.md +0 -134
  208. package/.claude/agents/deployment-orchestrator.md +0 -113
  209. package/.claude/agents/documentation-architect.md +0 -82
  210. package/.claude/agents/frontend-error-fixer.md +0 -77
  211. package/.claude/agents/iac-code-generator.md +0 -71
  212. package/.claude/agents/incident-responder.md +0 -346
  213. package/.claude/agents/infrastructure-architect.md +0 -31
  214. package/.claude/agents/kubernetes-specialist.md +0 -56
  215. package/.claude/agents/migration-planner.md +0 -181
  216. package/.claude/agents/network-architect.md +0 -196
  217. package/.claude/agents/plan-reviewer.md +0 -52
  218. package/.claude/agents/refactor-planner.md +0 -63
  219. package/.claude/agents/security-scanner.md +0 -102
  220. package/.claude/agents/web-research-specialist.md +0 -78
  221. package/.claude/commands/cost-analysis.md +0 -315
  222. package/.claude/commands/dev-docs-update.md +0 -55
  223. package/.claude/commands/dev-docs.md +0 -51
  224. package/.claude/commands/feature-dev.md +0 -125
  225. package/.claude/commands/incident-debug.md +0 -247
  226. package/.claude/commands/infra-plan.md +0 -81
  227. package/.claude/commands/migration-plan.md +0 -478
  228. package/.claude/commands/route-research-for-testing.md +0 -37
  229. package/.claude/commands/security-review.md +0 -66
  230. package/.claude/hooks/CONFIG.md +0 -448
  231. package/.claude/hooks/README.md +0 -163
  232. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
  233. package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
  234. package/.claude/hooks/add-skill-activation-banners.ts +0 -132
  235. package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
  236. package/.claude/hooks/error-handling-reminder.sh +0 -12
  237. package/.claude/hooks/error-handling-reminder.ts +0 -222
  238. package/.claude/hooks/k8s-manifest-validator.sh +0 -56
  239. package/.claude/hooks/package-lock.json +0 -556
  240. package/.claude/hooks/package.json +0 -16
  241. package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
  242. package/.claude/hooks/post-tool-use-tracker.sh +0 -183
  243. package/.claude/hooks/security-policy-check.sh +0 -247
  244. package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
  245. package/.claude/hooks/skill-activation-prompt.sh +0 -10
  246. package/.claude/hooks/skill-activation-prompt.ts +0 -141
  247. package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
  248. package/.claude/hooks/terraform-validator.sh +0 -53
  249. package/.claude/hooks/test-input.json +0 -7
  250. package/.claude/hooks/test-skill-activation.ts +0 -427
  251. package/.claude/hooks/trigger-build-resolver.sh +0 -79
  252. package/.claude/hooks/tsc-check.sh +0 -173
  253. package/.claude/hooks/tsconfig.json +0 -19
  254. package/.claude/settings.json +0 -59
  255. package/.claude/settings.local.json +0 -67
  256. package/.claude/skills/README.md +0 -507
  257. package/.claude/skills/api-engineering/SKILL.md +0 -63
  258. package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
  259. package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
  260. package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
  261. package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
  262. package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
  263. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
  264. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
  265. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
  266. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
  267. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
  268. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
  269. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
  270. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
  271. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
  272. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
  273. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
  274. package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
  275. package/.claude/skills/build-engineering/SKILL.md +0 -431
  276. package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
  277. package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
  278. package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
  279. package/.claude/skills/build-engineering/resources/build-security.md +0 -95
  280. package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
  281. package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
  282. package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
  283. package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
  284. package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
  285. package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
  286. package/.claude/skills/cloud-engineering/SKILL.md +0 -675
  287. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
  288. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
  289. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
  290. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
  291. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
  292. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
  293. package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
  294. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
  295. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
  296. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
  297. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
  298. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
  299. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
  300. package/.claude/skills/cybersecurity/SKILL.md +0 -409
  301. package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
  302. package/.claude/skills/database-engineering/SKILL.md +0 -61
  303. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
  304. package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
  305. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
  306. package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
  307. package/.claude/skills/devsecops/SKILL.md +0 -374
  308. package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
  309. package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
  310. package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
  311. package/.claude/skills/devsecops/resources/container-security.md +0 -915
  312. package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
  313. package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
  314. package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
  315. package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
  316. package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
  317. package/.claude/skills/devsecops/resources/security-testing.md +0 -203
  318. package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
  319. package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
  320. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
  321. package/.claude/skills/documentation-as-code/SKILL.md +0 -323
  322. package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
  323. package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
  324. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
  325. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
  326. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
  327. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
  328. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
  329. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
  330. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
  331. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
  332. package/.claude/skills/engineering-management/SKILL.md +0 -356
  333. package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
  334. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
  335. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
  336. package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
  337. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
  338. package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
  339. package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
  340. package/.claude/skills/error-tracking/SKILL.md +0 -379
  341. package/.claude/skills/frontend-design/SKILL.md +0 -42
  342. package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
  343. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
  344. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
  345. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
  346. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
  347. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
  348. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
  349. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
  350. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
  351. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
  352. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
  353. package/.claude/skills/general-it-engineering/SKILL.md +0 -393
  354. package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
  355. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
  356. package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
  357. package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
  358. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
  359. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
  360. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
  361. package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
  362. package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
  363. package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
  364. package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
  365. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
  366. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
  367. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
  368. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
  369. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
  370. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
  371. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
  372. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
  373. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
  374. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
  375. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
  376. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
  377. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
  378. package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
  379. package/.claude/skills/network-engineering/SKILL.md +0 -385
  380. package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
  381. package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
  382. package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
  383. package/.claude/skills/network-engineering/resources/network-security.md +0 -921
  384. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
  385. package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
  386. package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
  387. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
  388. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
  389. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
  390. package/.claude/skills/node-development/SKILL.md +0 -317
  391. package/.claude/skills/observability-engineering/SKILL.md +0 -101
  392. package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
  393. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
  394. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
  395. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
  396. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
  397. package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
  398. package/.claude/skills/platform-engineering/SKILL.md +0 -555
  399. package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
  400. package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
  401. package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
  402. package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
  403. package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
  404. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
  405. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
  406. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
  407. package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
  408. package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
  409. package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
  410. package/.claude/skills/release-engineering/SKILL.md +0 -393
  411. package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
  412. package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
  413. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
  414. package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
  415. package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
  416. package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
  417. package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
  418. package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
  419. package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
  420. package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
  421. package/.claude/skills/route-tester/SKILL.md +0 -392
  422. package/.claude/skills/skill-developer/ADVANCED.md +0 -197
  423. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
  424. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
  425. package/.claude/skills/skill-developer/SKILL.md +0 -430
  426. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
  427. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
  428. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
  429. package/.claude/skills/skill-rules.json +0 -2989
  430. package/.claude/skills/sre/SKILL.md +0 -464
  431. package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
  432. package/.claude/skills/sre/resources/capacity-planning.md +0 -226
  433. package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
  434. package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
  435. package/.claude/skills/sre/resources/incident-management.md +0 -436
  436. package/.claude/skills/sre/resources/observability-stack.md +0 -240
  437. package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
  438. package/.claude/skills/sre/resources/performance-optimization.md +0 -108
  439. package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
  440. package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
  441. package/.claude/skills/sre/resources/toil-reduction.md +0 -145
  442. package/.claude/skills/systems-engineering/SKILL.md +0 -648
  443. package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
  444. package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
  445. package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
  446. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
  447. package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
  448. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
  449. package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
  450. package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
  451. package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
  452. package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
  453. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
  454. package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
  455. package/.claude/skills/technical-leadership/SKILL.md +0 -728
  456. package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
  457. package/backend/package-lock.json +0 -6801
  458. package/backend/src/core/node-registries/actions.js +0 -202
  459. package/backend/src/core/node-registries/arrays.js +0 -155
  460. package/backend/src/core/node-registries/bot.js +0 -23
  461. package/backend/src/core/node-registries/container.js +0 -162
  462. package/backend/src/core/node-registries/data.js +0 -290
  463. package/backend/src/core/node-registries/debug.js +0 -26
  464. package/backend/src/core/node-registries/events.js +0 -201
  465. package/backend/src/core/node-registries/flow.js +0 -139
  466. package/backend/src/core/node-registries/furnace.js +0 -143
  467. package/backend/src/core/node-registries/logic.js +0 -62
  468. package/backend/src/core/node-registries/math.js +0 -42
  469. package/backend/src/core/node-registries/navigation.js +0 -111
  470. package/backend/src/core/node-registries/objects.js +0 -98
  471. package/backend/src/core/node-registries/strings.js +0 -187
  472. package/backend/src/core/node-registries/time.js +0 -113
  473. package/backend/src/core/node-registries/type.js +0 -25
  474. package/backend/src/core/node-registries/users.js +0 -79
  475. package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
  476. package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
@@ -0,0 +1,1131 @@
1
+ {
2
+ "common": {
3
+ "pins": {
4
+ "exec": "Выполнить",
5
+ "execDone": "Выполнено",
6
+ "value": "Значение",
7
+ "result": "Результат",
8
+ "condition": "Условие",
9
+ "array": "Массив",
10
+ "element": "Элемент",
11
+ "index": "Индекс",
12
+ "success": "Успех?",
13
+ "error": "Ошибка",
14
+ "true": "True",
15
+ "false": "False"
16
+ },
17
+ "placeholders": {
18
+ "select": "Выбрать...",
19
+ "enterText": "Введите текст...",
20
+ "variableName": "имя_переменной"
21
+ }
22
+ },
23
+
24
+ "flow:branch": {
25
+ "label": "Ветвление",
26
+ "description": "Условное ветвление на основе boolean значения",
27
+ "pins": {
28
+ "exec": "Выполнить",
29
+ "condition": "Условие",
30
+ "exec_true": "True",
31
+ "exec_true_desc": "Выполняется если условие true",
32
+ "exec_false": "False",
33
+ "exec_false_desc": "Выполняется если условие false"
34
+ }
35
+ },
36
+
37
+ "flow:sequence": {
38
+ "label": "Последовательность",
39
+ "description": "Последовательно выполняет несколько веток"
40
+ },
41
+
42
+ "flow:switch": {
43
+ "label": "Переключатель",
44
+ "description": "Выбирает ветку выполнения на основе значения",
45
+ "pins": {
46
+ "value_desc": "Значение для сравнения"
47
+ }
48
+ },
49
+
50
+ "flow:for_each": {
51
+ "label": "Перебор массива (цикл)",
52
+ "description": "Выполняет \"Тело цикла\" для каждого элемента в \"Массиве\"",
53
+ "pins": {
54
+ "loop_body": "Тело цикла",
55
+ "element": "Элемент",
56
+ "index": "Индекс",
57
+ "completed": "Завершено"
58
+ }
59
+ },
60
+
61
+ "flow:while": {
62
+ "label": "Цикл While",
63
+ "description": "Выполняет \"Тело цикла\" пока условие истинно",
64
+ "pins": {
65
+ "condition": "Условие",
66
+ "loop_body": "Тело цикла",
67
+ "iteration": "Итерация",
68
+ "completed": "Завершено"
69
+ }
70
+ },
71
+
72
+ "flow:break": {
73
+ "label": "Выйти из цикла",
74
+ "description": "Немедленно прерывает выполнение цикла (For Each Loop) и передает управление на его выход Completed"
75
+ },
76
+
77
+ "flow:delay": {
78
+ "label": "Задержка",
79
+ "description": "Ожидает указанное количество миллисекунд, затем продолжает выполнение",
80
+ "pins": {
81
+ "delay": "Задержка (мс)",
82
+ "next": "Далее"
83
+ }
84
+ },
85
+
86
+ "data:cast": {
87
+ "label": "Преобразовать тип",
88
+ "description": "Преобразует значение в выбранный тип",
89
+ "pins": {
90
+ "value": "Значение",
91
+ "result": "Результат"
92
+ }
93
+ },
94
+
95
+ "data:type_check": {
96
+ "label": "Проверить тип",
97
+ "description": "Проверяет соответствие значения типу",
98
+ "pins": {
99
+ "value_desc": "Значение для проверки",
100
+ "result_desc": "True если тип совпадает"
101
+ }
102
+ },
103
+
104
+ "data:get_variable": {
105
+ "label": "Получить переменную",
106
+ "description": "Получить значение переменной",
107
+ "pins": {
108
+ "variableName": "Имя переменной",
109
+ "value": "Значение",
110
+ "value_desc": "Значение переменной"
111
+ }
112
+ },
113
+
114
+ "data:get_argument": {
115
+ "label": "Получить аргумент",
116
+ "description": "Получает значение аргумента команды",
117
+ "pins": {
118
+ "argumentName": "Имя аргумента",
119
+ "value": "Значение",
120
+ "value_desc": "Значение аргумента"
121
+ }
122
+ },
123
+
124
+ "data:make_object": {
125
+ "label": "Создать объект",
126
+ "description": "Создаёт объект из JSON"
127
+ },
128
+
129
+ "data:number_literal": {
130
+ "label": "Число",
131
+ "description": "Простое числовое значение."
132
+ },
133
+
134
+ "data:boolean_literal": {
135
+ "label": "Boolean",
136
+ "description": "Булево значение (true/false)",
137
+ "pins": {
138
+ "value": "Значение",
139
+ "value_desc": "Булево значение"
140
+ }
141
+ },
142
+
143
+ "data:get_entity_field": {
144
+ "label": "Поле сущности",
145
+ "description": "Получает поля из объекта сущности",
146
+ "pins": {
147
+ "entity": "Сущность",
148
+ "entity_desc": "Объект сущности"
149
+ }
150
+ },
151
+
152
+ "data:get_server_players": {
153
+ "label": "Игроки сервера",
154
+ "description": "Список всех игроков на сервере",
155
+ "pins": {
156
+ "players": "Игроки",
157
+ "players_desc": "Массив имен игроков"
158
+ }
159
+ },
160
+
161
+ "data:get_nearby_entities": {
162
+ "label": "Ближайшие сущности",
163
+ "description": "Существа в радиусе от бота",
164
+ "pins": {
165
+ "radius": "Радиус",
166
+ "radius_desc": "Радиус поиска",
167
+ "entities": "Существа",
168
+ "entities_desc": "Массив существ"
169
+ }
170
+ },
171
+
172
+ "data:get_nearby_players": {
173
+ "label": "Ближайшие игроки",
174
+ "description": "Игроки рядом с ботом",
175
+ "pins": {
176
+ "radius": "Радиус",
177
+ "radius_desc": "Радиус поиска",
178
+ "players": "Игроки",
179
+ "players_desc": "Массив игроков с расстоянием"
180
+ }
181
+ },
182
+
183
+ "data:entity_info": {
184
+ "label": "Инфо о сущности",
185
+ "description": "Информация о существе",
186
+ "pins": {
187
+ "entity": "Существо",
188
+ "entity_desc": "Объект существа"
189
+ }
190
+ },
191
+
192
+ "data:get_user_field": {
193
+ "label": "Поле пользователя",
194
+ "description": "Получает поле пользователя бота"
195
+ },
196
+
197
+ "data:length": {
198
+ "label": "Длина",
199
+ "description": "Возвращает длину массива или строки",
200
+ "pins": {
201
+ "data": "Массив или Строка",
202
+ "data_desc": "Данные для измерения",
203
+ "length": "Длина",
204
+ "length_desc": "Количество элементов/символов"
205
+ }
206
+ },
207
+
208
+ "logic:compare": {
209
+ "label": "Сравнение",
210
+ "description": "Сравнение двух значений"
211
+ },
212
+
213
+ "logic:operation": {
214
+ "label": "Логическая операция",
215
+ "description": "Логические операции",
216
+ "pins": {
217
+ "result": "Результат",
218
+ "result_desc": "Результат логической операции"
219
+ }
220
+ },
221
+
222
+ "logic:not": {
223
+ "label": "! НЕ",
224
+ "description": "Инвертирует boolean значение (NOT)",
225
+ "pins": {
226
+ "value": "Значение",
227
+ "result": "Результат",
228
+ "result_desc": "Инвертированное значение"
229
+ }
230
+ },
231
+
232
+ "math:operation": {
233
+ "label": "Математическая операция",
234
+ "description": "Математические операции и сравнения",
235
+ "pins": {
236
+ "a_desc": "Первое число",
237
+ "b_desc": "Второе число",
238
+ "result_desc": "Результат операции"
239
+ }
240
+ },
241
+
242
+ "math:random_number": {
243
+ "label": "Случайное число",
244
+ "description": "Генерирует случайное число в заданном диапазоне",
245
+ "pins": {
246
+ "min": "Мин",
247
+ "max": "Макс",
248
+ "result": "Результат"
249
+ }
250
+ },
251
+
252
+ "string:concat": {
253
+ "label": "Объединить строки",
254
+ "description": "Объединяет несколько строк в одну",
255
+ "pins": {
256
+ "string_n": "Строка {{n}}"
257
+ }
258
+ },
259
+
260
+ "data:string_literal": {
261
+ "label": "Строка",
262
+ "description": "Строка с поддержкой переменных {name}",
263
+ "pins": {
264
+ "text": "Текст",
265
+ "value_desc": "Итоговая строка"
266
+ },
267
+ "placeholder": "Введите текст с {переменными}..."
268
+ },
269
+
270
+ "string:contains": {
271
+ "label": "Содержит",
272
+ "description": "Проверяет содержит ли строка подстроку"
273
+ },
274
+
275
+ "string:matches": {
276
+ "label": "Соответствует",
277
+ "description": "Проверяет соответствие строки регулярному выражению"
278
+ },
279
+
280
+ "string:starts_with": {
281
+ "label": "Начинается с",
282
+ "description": "Проверяет начинается ли строка с подстроки"
283
+ },
284
+
285
+ "string:ends_with": {
286
+ "label": "Заканчивается на",
287
+ "description": "Проверяет заканчивается ли строка подстрокой"
288
+ },
289
+
290
+ "string:length": {
291
+ "label": "Длина строки",
292
+ "description": "Возвращает длину строки"
293
+ },
294
+
295
+ "string:equals": {
296
+ "label": "Равны",
297
+ "description": "Проверяет равенство двух строк"
298
+ },
299
+
300
+ "string:split": {
301
+ "label": "Разделить",
302
+ "description": "Разделяет строку по разделителю"
303
+ },
304
+
305
+ "string:to_upper": {
306
+ "label": "В верхний регистр",
307
+ "description": "Преобразует строку в верхний регистр"
308
+ },
309
+
310
+ "string:to_lower": {
311
+ "label": "В нижний регистр",
312
+ "description": "Преобразует строку в нижний регистр"
313
+ },
314
+
315
+ "data:array_literal": {
316
+ "label": "Массив",
317
+ "description": "Создает массив из элементов",
318
+ "pins": {
319
+ "array_desc": "Созданный массив"
320
+ }
321
+ },
322
+
323
+ "array:get_random_element": {
324
+ "label": "Случайный элемент",
325
+ "description": "Возвращает случайный элемент из массива и его индекс",
326
+ "pins": {
327
+ "array": "Массив",
328
+ "array_desc": "Входной массив",
329
+ "element": "Элемент",
330
+ "element_desc": "Случайный элемент",
331
+ "index": "Индекс",
332
+ "index_desc": "Индекс элемента"
333
+ }
334
+ },
335
+
336
+ "array:contains": {
337
+ "label": "Содержит элемент",
338
+ "description": "Проверяет, содержит ли массив указанный элемент",
339
+ "pins": {
340
+ "array": "Массив",
341
+ "array_desc": "Входной массив",
342
+ "element": "Элемент",
343
+ "element_desc": "Элемент для поиска",
344
+ "result": "Найден",
345
+ "result_desc": "True если элемент найден",
346
+ "index": "Индекс",
347
+ "index_desc": "Индекс элемента (-1 если не найден)"
348
+ }
349
+ },
350
+
351
+ "array:get_by_index": {
352
+ "label": "Получить по индексу",
353
+ "description": "Получает элемент массива по его индексу",
354
+ "pins": {
355
+ "array": "Массив",
356
+ "array_desc": "Входной массив",
357
+ "index": "Индекс",
358
+ "index_desc": "Индекс элемента",
359
+ "element": "Элемент",
360
+ "element_desc": "Элемент по индексу"
361
+ }
362
+ },
363
+
364
+ "array:get_next": {
365
+ "label": "Следующий элемент",
366
+ "description": "Получает следующий элемент массива",
367
+ "pins": {
368
+ "array": "Массив",
369
+ "array_desc": "Входной массив",
370
+ "current_index": "Текущий индекс",
371
+ "current_index_desc": "Текущий индекс",
372
+ "next_element": "Следующий элемент",
373
+ "next_element_desc": "Следующий элемент",
374
+ "next_index": "Следующий индекс",
375
+ "next_index_desc": "Следующий индекс",
376
+ "has_next": "Есть следующий?",
377
+ "has_next_desc": "True если следующий элемент существует"
378
+ }
379
+ },
380
+
381
+ "array:add_element": {
382
+ "label": "Добавить элемент",
383
+ "description": "Добавляет элемент в конец массива",
384
+ "pins": {
385
+ "array": "Массив",
386
+ "array_desc": "Входной массив",
387
+ "element": "Элемент",
388
+ "element_desc": "Элемент для добавления",
389
+ "result": "Новый массив",
390
+ "result_desc": "Массив с добавленным элементом"
391
+ }
392
+ },
393
+
394
+ "array:remove_by_index": {
395
+ "label": "Удалить по индексу",
396
+ "description": "Удаляет элемент из массива по его индексу",
397
+ "pins": {
398
+ "array": "Массив",
399
+ "array_desc": "Входной массив",
400
+ "index": "Индекс",
401
+ "index_desc": "Индекс элемента для удаления",
402
+ "result": "Новый массив",
403
+ "result_desc": "Массив без элемента"
404
+ }
405
+ },
406
+
407
+ "array:find_index": {
408
+ "label": "Найти индекс",
409
+ "description": "Находит индекс элемента в массиве",
410
+ "pins": {
411
+ "array": "Массив",
412
+ "array_desc": "Входной массив",
413
+ "element": "Элемент",
414
+ "element_desc": "Элемент для поиска",
415
+ "index": "Индекс",
416
+ "index_desc": "Индекс элемента (-1 если не найден)"
417
+ }
418
+ },
419
+
420
+ "array:join": {
421
+ "label": "Объединить в строку",
422
+ "description": "Объединяет массив в строку с разделителем",
423
+ "pins": {
424
+ "array": "Массив",
425
+ "array_desc": "Массив для объединения",
426
+ "separator": "Разделитель",
427
+ "separator_desc": "Разделитель между элементами",
428
+ "result": "Результат",
429
+ "result_desc": "Строка из элементов массива"
430
+ }
431
+ },
432
+
433
+ "object:create": {
434
+ "label": "Создать объект",
435
+ "description": "Создает объект из пар ключ-значение",
436
+ "pins": {
437
+ "key_n": "Ключ {{n}}",
438
+ "value_n": "Значение {{n}}",
439
+ "object_desc": "Созданный объект"
440
+ }
441
+ },
442
+
443
+ "object:get": {
444
+ "label": "Получить свойство",
445
+ "description": "Получает значение свойства объекта"
446
+ },
447
+
448
+ "object:set": {
449
+ "label": "Установить свойство",
450
+ "description": "Устанавливает значение свойства объекта"
451
+ },
452
+
453
+ "object:delete": {
454
+ "label": "Удалить свойство",
455
+ "description": "Удаляет свойство из объекта"
456
+ },
457
+
458
+ "object:has_key": {
459
+ "label": "Содержит ключ",
460
+ "description": "Проверяет наличие ключа в объекте"
461
+ },
462
+
463
+ "action:send_message": {
464
+ "label": "Отправить сообщение",
465
+ "description": "Отправляет сообщение в чат. Поддерживает переменные в формате {varName}",
466
+ "pins": {
467
+ "chat_type": "Тип чата",
468
+ "message": "Сообщение",
469
+ "recipient": "Адресат",
470
+ "done": "Выполнено"
471
+ },
472
+ "placeholders": {
473
+ "message": "Текст сообщения с {переменными}",
474
+ "recipient": "Имя игрока"
475
+ }
476
+ },
477
+
478
+ "action:http_request": {
479
+ "label": "HTTP Запрос",
480
+ "description": "Выполняет HTTP запрос. Поддерживает переменные: {varName}",
481
+ "pins": {
482
+ "url_desc": "URL для запроса",
483
+ "method_desc": "HTTP метод",
484
+ "queryParams_desc": "Параметры URL (?key=value)",
485
+ "headers_desc": "HTTP заголовки",
486
+ "body_desc": "Тело запроса",
487
+ "exec_desc": "Выполняется после запроса",
488
+ "response_desc": "Ответ сервера",
489
+ "error_desc": "Ошибка если есть"
490
+ }
491
+ },
492
+
493
+ "action:send_log": {
494
+ "label": "Лог",
495
+ "description": "Отправляет сообщение в логи бота"
496
+ },
497
+
498
+ "action:send_websocket_response": {
499
+ "label": "WebSocket ответ",
500
+ "description": "Отправляет ответ клиенту через WebSocket API",
501
+ "pins": {
502
+ "data": "Данные",
503
+ "data_desc": "Данные для отправки"
504
+ }
505
+ },
506
+
507
+ "action:bot_look_at": {
508
+ "label": "Смотреть на",
509
+ "description": "Поворачивает голову бота на цель",
510
+ "pins": {
511
+ "target": "Цель",
512
+ "target_desc": "Позиция или сущность",
513
+ "offsetY": "Смещение Y",
514
+ "offsetY_desc": "Корректировка по Y"
515
+ }
516
+ },
517
+
518
+ "action:bot_set_variable": {
519
+ "label": "Установить переменную",
520
+ "description": "Записывает значение в переменную",
521
+ "pins": {
522
+ "name": "Имя",
523
+ "name_desc": "Имя переменной",
524
+ "value": "Значение",
525
+ "persist": "Хранить в БД?",
526
+ "execDone": "Выполнено"
527
+ }
528
+ },
529
+
530
+ "action:create_command": {
531
+ "label": "Создать команду",
532
+ "description": "Создаёт новую команду",
533
+ "pins": {
534
+ "exec": "Выполнить",
535
+ "name": "Имя команды",
536
+ "description": "Описание",
537
+ "aliases": "Алиасы",
538
+ "cooldown": "Кулдаун (сек)",
539
+ "allowedChatTypes": "Типы чата",
540
+ "permissionName": "Название права",
541
+ "temporary": "Временная?",
542
+ "commandId": "ID команды",
543
+ "success": "Успешно?"
544
+ },
545
+ "placeholders": {
546
+ "name": "моя-команда",
547
+ "description": "Описание команды",
548
+ "aliases": "[\"алиас1\", \"алиас2\"]",
549
+ "cooldown": "0",
550
+ "allowedChatTypes": "[\"chat\", \"private\"]",
551
+ "permissionName": "модератор"
552
+ },
553
+ "options": {
554
+ "temporary": {
555
+ "false": "Постоянная",
556
+ "true": "Временная"
557
+ }
558
+ }
559
+ },
560
+
561
+ "action:update_command": {
562
+ "label": "Обновить команду",
563
+ "description": "Обновляет существующую команду",
564
+ "pins": {
565
+ "exec": "Выполнить",
566
+ "commandName": "Имя команды",
567
+ "newName": "Новое имя",
568
+ "description": "Описание",
569
+ "aliases": "Алиасы",
570
+ "cooldown": "Кулдаун (сек)",
571
+ "allowedChatTypes": "Типы чата",
572
+ "permissionName": "Название права",
573
+ "success": "Успешно?"
574
+ },
575
+ "placeholders": {
576
+ "commandName": "моя-команда",
577
+ "newName": "новая-команда",
578
+ "description": "Новое описание команды",
579
+ "aliases": "[\"алиас1\", \"алиас2\"]",
580
+ "cooldown": "0",
581
+ "allowedChatTypes": "[\"chat\", \"private\"]",
582
+ "permissionName": "модератор"
583
+ }
584
+ },
585
+
586
+ "action:delete_command": {
587
+ "label": "Удалить команду",
588
+ "description": "Удаляет команду",
589
+ "pins": {
590
+ "exec": "Выполнить",
591
+ "commandName": "Имя команды",
592
+ "success": "Успешно?"
593
+ },
594
+ "placeholders": {
595
+ "commandName": "моя-команда"
596
+ }
597
+ },
598
+
599
+ "time:datetime_literal": {
600
+ "label": "Дата/Время",
601
+ "description": "Создаёт значение даты/времени"
602
+ },
603
+
604
+ "time:now": {
605
+ "label": "Сейчас",
606
+ "description": "Возвращает текущую дату и время",
607
+ "pins": {
608
+ "now": "Сейчас"
609
+ }
610
+ },
611
+
612
+ "time:format": {
613
+ "label": "Форматировать время",
614
+ "description": "Форматирует дату/время в строку"
615
+ },
616
+
617
+ "time:add": {
618
+ "label": "Добавить время",
619
+ "description": "Добавляет интервал к дате/времени"
620
+ },
621
+
622
+ "time:diff": {
623
+ "label": "Разница времени",
624
+ "description": "Вычисляет разницу между датами"
625
+ },
626
+
627
+ "time:compare": {
628
+ "label": "Сравнить время",
629
+ "description": "Сравнивает две даты/времени"
630
+ },
631
+
632
+ "user:check_blacklist": {
633
+ "label": "В чёрном списке?",
634
+ "description": "Проверяет, находится ли пользователь в чёрном списке",
635
+ "pins": {
636
+ "user": "Пользователь",
637
+ "user_desc": "Пользователь для проверки",
638
+ "is_blacklisted": "В ЧС",
639
+ "is_blacklisted_desc": "True если в чёрном списке"
640
+ }
641
+ },
642
+
643
+ "user:set_blacklist": {
644
+ "label": "Чёрный список",
645
+ "description": "Управляет чёрным списком пользователя",
646
+ "pins": {
647
+ "user": "Пользователь",
648
+ "user_desc": "Пользователь",
649
+ "add": "Добавить",
650
+ "add_desc": "True = добавить в ЧС"
651
+ }
652
+ },
653
+
654
+ "user:get_groups": {
655
+ "label": "Группы пользователя",
656
+ "description": "Возвращает группы пользователя",
657
+ "pins": {
658
+ "user": "Пользователь",
659
+ "user_desc": "Пользователь",
660
+ "groups": "Группы",
661
+ "groups_desc": "Массив групп"
662
+ }
663
+ },
664
+
665
+ "user:get_permissions": {
666
+ "label": "Права пользователя",
667
+ "description": "Возвращает права пользователя",
668
+ "pins": {
669
+ "user": "Пользователь",
670
+ "user_desc": "Пользователь",
671
+ "permissions": "Права",
672
+ "permissions_desc": "Массив прав"
673
+ }
674
+ },
675
+
676
+ "type:to_string": {
677
+ "label": "В строку",
678
+ "description": "Преобразует значение в строку"
679
+ },
680
+
681
+ "bot:get_position": {
682
+ "label": "Позиция бота",
683
+ "description": "Возвращает текущую позицию бота в мире",
684
+ "pins": {
685
+ "position": "Позиция",
686
+ "position_desc": "Объект с координатами {x, y, z}"
687
+ }
688
+ },
689
+
690
+ "debug:log": {
691
+ "label": "Отладка",
692
+ "description": "Выводит значение в консоль сервера",
693
+ "pins": {
694
+ "exec": "Выполнить",
695
+ "value": "Значение",
696
+ "value_desc": "Значение для вывода",
697
+ "execDone": "Выполнено"
698
+ }
699
+ },
700
+
701
+ "event:command": {
702
+ "label": "При выполнении команды",
703
+ "description": "Стартовая точка для графа команды",
704
+ "pins": {
705
+ "command_name": "Имя команды",
706
+ "user": "Пользователь",
707
+ "args": "Аргументы",
708
+ "chat_type": "Тип чата",
709
+ "success": "Успешно",
710
+ "success_desc": "Возвращает true, если команда не попала на ошибку"
711
+ }
712
+ },
713
+
714
+ "event:chat": {
715
+ "label": "Сообщение в чате",
716
+ "description": "Срабатывает, когда в чат приходит сообщение",
717
+ "pins": {
718
+ "username": "Игрок",
719
+ "message": "Сообщение",
720
+ "chatType": "Тип чата"
721
+ }
722
+ },
723
+
724
+ "event:raw_message": {
725
+ "label": "Сырое сообщение",
726
+ "description": "Срабатывает при получении любого сообщения"
727
+ },
728
+
729
+ "event:player_joined": {
730
+ "label": "Игрок зашёл",
731
+ "description": "Срабатывает когда игрок заходит на сервер"
732
+ },
733
+
734
+ "event:player_left": {
735
+ "label": "Игрок вышел",
736
+ "description": "Срабатывает когда игрок выходит с сервера"
737
+ },
738
+
739
+ "event:entity_spawn": {
740
+ "label": "Сущность появилась",
741
+ "description": "Срабатывает при появлении сущности"
742
+ },
743
+
744
+ "event:entity_moved": {
745
+ "label": "Сущность двигается",
746
+ "description": "Срабатывает при движении сущности"
747
+ },
748
+
749
+ "event:entity_gone": {
750
+ "label": "Сущность исчезла",
751
+ "description": "Срабатывает когда сущность пропадает"
752
+ },
753
+
754
+ "event:bot_died": {
755
+ "label": "Бот умер",
756
+ "description": "Срабатывает когда бот умирает"
757
+ },
758
+
759
+ "event:bot_startup": {
760
+ "label": "Запуск бота",
761
+ "description": "Срабатывает при запуске бота"
762
+ },
763
+
764
+ "event:health": {
765
+ "label": "Здоровье",
766
+ "description": "Срабатывает при изменении здоровья"
767
+ },
768
+
769
+ "event:websocket_call": {
770
+ "label": "WebSocket вызов",
771
+ "description": "Срабатывает при WebSocket вызове"
772
+ },
773
+
774
+ "inventory:get_all": {
775
+ "label": "Весь инвентарь",
776
+ "description": "Возвращает весь инвентарь бота как массив предметов",
777
+ "pins": {
778
+ "items": "Предметы",
779
+ "items_desc": "Массив предметов в инвентаре",
780
+ "count": "Кол-во слотов",
781
+ "count_desc": "Количество занятых слотов"
782
+ }
783
+ },
784
+
785
+ "inventory:find_item": {
786
+ "label": "Найти предмет",
787
+ "description": "Находит предмет в инвентаре",
788
+ "pins": {
789
+ "itemName": "Имя предмета",
790
+ "itemName_desc": "Имя предмета (minecraft id без префикса)",
791
+ "item": "Предмет",
792
+ "item_desc": "Объект предмета {name, count, slot, metadata}",
793
+ "found": "Найден?",
794
+ "found_desc": "true если предмет найден",
795
+ "slot": "Слот",
796
+ "slot_desc": "Номер слота где найден предмет"
797
+ }
798
+ },
799
+
800
+ "inventory:count_item": {
801
+ "label": "Подсчитать предметы",
802
+ "description": "Подсчитывает количество предметов",
803
+ "pins": {
804
+ "itemName": "Имя предмета",
805
+ "itemName_desc": "Имя предмета для подсчёта",
806
+ "count": "Количество",
807
+ "count_desc": "Общее количество предмета в инвентаре"
808
+ }
809
+ },
810
+
811
+ "inventory:has_item": {
812
+ "label": "Есть предмет?",
813
+ "description": "Проверяет наличие предмета",
814
+ "pins": {
815
+ "itemName": "Имя предмета",
816
+ "itemName_desc": "Имя предмета для проверки",
817
+ "minCount": "Мин. кол-во",
818
+ "minCount_desc": "Минимальное требуемое количество (по умолчанию 1)",
819
+ "hasItem": "Есть?",
820
+ "hasItem_desc": "true если предмет есть в нужном количестве",
821
+ "actualCount": "Фактически",
822
+ "actualCount_desc": "Фактическое количество предмета"
823
+ }
824
+ },
825
+
826
+ "inventory:get_slot": {
827
+ "label": "Получить слот",
828
+ "description": "Получает предмет из слота",
829
+ "pins": {
830
+ "slotNumber": "Номер слота",
831
+ "slotNumber_desc": "Номер слота (0-8 хотбар, 9-35 инвентарь, 36-39 броня, 40 офхенд)",
832
+ "item": "Предмет",
833
+ "item_desc": "Объект предмета или null если слот пуст",
834
+ "isEmpty": "Пусто?",
835
+ "isEmpty_desc": "true если слот пустой"
836
+ }
837
+ },
838
+
839
+ "inventory:get_held_item": {
840
+ "label": "Предмет в руке",
841
+ "description": "Возвращает предмет в руке",
842
+ "pins": {
843
+ "hand": "Рука",
844
+ "hand_desc": "Какую руку проверить",
845
+ "item": "Предмет",
846
+ "item_desc": "Объект предмета или null",
847
+ "name": "Имя",
848
+ "name_desc": "Имя предмета",
849
+ "count": "Количество",
850
+ "count_desc": "Количество в стаке",
851
+ "hasItem": "Есть предмет?",
852
+ "hasItem_desc": "true если в руке есть предмет"
853
+ }
854
+ },
855
+
856
+ "inventory:equip": {
857
+ "label": "Экипировать",
858
+ "description": "Экипирует предмет",
859
+ "pins": {
860
+ "itemName": "Предмет",
861
+ "itemName_desc": "Имя предмета для экипировки",
862
+ "destination": "Куда",
863
+ "destination_desc": "Куда экипировать предмет",
864
+ "success": "Успех?",
865
+ "success_desc": "true если предмет успешно экипирован"
866
+ }
867
+ },
868
+
869
+ "inventory:drop": {
870
+ "label": "Выбросить",
871
+ "description": "Выбрасывает предмет",
872
+ "pins": {
873
+ "itemName": "Предмет",
874
+ "itemName_desc": "Имя предмета для выброса",
875
+ "count": "Количество",
876
+ "count_desc": "Сколько выбросить (пусто = весь стак)",
877
+ "dropAll": "Выбросить все?",
878
+ "dropAll_desc": "Выбросить все такие предметы из инвентаря",
879
+ "dropped": "Выброшено",
880
+ "dropped_desc": "Сколько предметов выброшено"
881
+ }
882
+ },
883
+
884
+ "inventory:select_slot": {
885
+ "label": "Выбрать слот",
886
+ "description": "Выбирает слот в хотбаре",
887
+ "pins": {
888
+ "slot": "Слот",
889
+ "slot_desc": "Номер слота хотбара (0-8)",
890
+ "item": "Предмет",
891
+ "item_desc": "Предмет в выбранном слоте (или null)"
892
+ }
893
+ },
894
+
895
+ "navigation:go_to": {
896
+ "label": "Идти к",
897
+ "description": "Перемещает бота к указанным координатам используя pathfinding",
898
+ "pins": {
899
+ "range": "Радиус",
900
+ "range_desc": "На каком расстоянии остановиться (по умолчанию 1 блок)",
901
+ "arrived": "Дошёл",
902
+ "failed": "Не удалось",
903
+ "success_desc": "true если бот дошёл до точки"
904
+ }
905
+ },
906
+
907
+ "navigation:go_to_player": {
908
+ "label": "Идти к игроку",
909
+ "description": "Перемещает бота к игроку",
910
+ "pins": {
911
+ "playerName": "Имя игрока",
912
+ "playerName_desc": "Никнейм игрока",
913
+ "range": "Радиус",
914
+ "range_desc": "На каком расстоянии остановиться",
915
+ "success": "Успех?",
916
+ "success_desc": "true если бот дошёл до игрока",
917
+ "playerPosition": "Позиция игрока",
918
+ "playerPosition_desc": "Координаты игрока {x, y, z}"
919
+ }
920
+ },
921
+
922
+ "navigation:go_to_entity": {
923
+ "label": "Идти к сущности",
924
+ "description": "Перемещает бота к сущности",
925
+ "pins": {
926
+ "entity": "Сущность",
927
+ "entity_desc": "Объект сущности (из 'Существа рядом')",
928
+ "range": "Радиус",
929
+ "range_desc": "На каком расстоянии остановиться",
930
+ "success": "Успех?",
931
+ "success_desc": "true если бот дошёл до сущности"
932
+ }
933
+ },
934
+
935
+ "navigation:follow": {
936
+ "label": "Следовать",
937
+ "description": "Бот следует за целью",
938
+ "pins": {
939
+ "target": "Цель",
940
+ "target_desc": "Никнейм игрока за которым следовать",
941
+ "range": "Дистанция",
942
+ "range_desc": "На каком расстоянии держаться",
943
+ "following": "Следует?",
944
+ "following_desc": "true если начал следовать"
945
+ }
946
+ },
947
+
948
+ "navigation:stop": {
949
+ "label": "Остановить движение",
950
+ "description": "Останавливает движение бота"
951
+ },
952
+
953
+ "container:open": {
954
+ "label": "Контейнер: открыть",
955
+ "description": "Открывает контейнер (сундук, бочку) по координатам",
956
+ "pins": {
957
+ "x": "X",
958
+ "x_desc": "Координата X контейнера",
959
+ "y": "Y",
960
+ "y_desc": "Координата Y контейнера",
961
+ "z": "Z",
962
+ "z_desc": "Координата Z контейнера",
963
+ "opened": "Открыт",
964
+ "error": "Ошибка",
965
+ "container": "Контейнер",
966
+ "container_desc": "Объект открытого контейнера",
967
+ "success": "Успех?",
968
+ "success_desc": "true если контейнер открыт"
969
+ }
970
+ },
971
+
972
+ "container:close": {
973
+ "label": "Контейнер: закрыть",
974
+ "description": "Закрывает открытый контейнер"
975
+ },
976
+
977
+ "container:get_items": {
978
+ "label": "Предметы контейнера",
979
+ "description": "Получает список предметов из открытого контейнера",
980
+ "pins": {
981
+ "container": "Контейнер",
982
+ "container_desc": "Объект контейнера (если не указан - текущий открытый)",
983
+ "items": "Предметы",
984
+ "items_desc": "Массив предметов в контейнере",
985
+ "count": "Кол-во",
986
+ "count_desc": "Количество занятых слотов"
987
+ }
988
+ },
989
+
990
+ "container:deposit": {
991
+ "label": "Положить в контейнер",
992
+ "description": "Кладёт предмет из инвентаря в открытый контейнер",
993
+ "pins": {
994
+ "itemName": "Предмет",
995
+ "itemName_desc": "Имя предмета для перемещения",
996
+ "count": "Кол-во",
997
+ "count_desc": "Количество (пусто = все)",
998
+ "deposited": "Положено",
999
+ "deposited_desc": "Сколько предметов положено",
1000
+ "success": "Успех?",
1001
+ "success_desc": "true если хоть что-то положено"
1002
+ }
1003
+ },
1004
+
1005
+ "container:withdraw": {
1006
+ "label": "Взять из контейнера",
1007
+ "description": "Забирает предмет из контейнера в инвентарь",
1008
+ "pins": {
1009
+ "itemName": "Предмет",
1010
+ "itemName_desc": "Имя предмета для забора",
1011
+ "count": "Кол-во",
1012
+ "count_desc": "Количество (пусто = все)",
1013
+ "withdrawn": "Забрано",
1014
+ "withdrawn_desc": "Сколько предметов забрано",
1015
+ "success": "Успех?",
1016
+ "success_desc": "true если хоть что-то забрано"
1017
+ }
1018
+ },
1019
+
1020
+ "container:deposit_all": {
1021
+ "label": "Положить всё",
1022
+ "description": "Кладёт все предметы (или определённого типа) в контейнер",
1023
+ "pins": {
1024
+ "itemName": "Предмет",
1025
+ "itemName_desc": "Имя предмета (пусто = все предметы)",
1026
+ "keepOne": "Оставить 1?",
1027
+ "keepOne_desc": "Оставить хотя бы 1 предмет в инвентаре",
1028
+ "deposited": "Положено",
1029
+ "deposited_desc": "Сколько предметов положено"
1030
+ }
1031
+ },
1032
+
1033
+ "container:find_item": {
1034
+ "label": "Найти в контейнере",
1035
+ "description": "Ищет предмет в открытом контейнере",
1036
+ "pins": {
1037
+ "itemName": "Предмет",
1038
+ "itemName_desc": "Имя искомого предмета",
1039
+ "item": "Найден",
1040
+ "item_desc": "Найденный предмет или null",
1041
+ "slot": "Слот",
1042
+ "slot_desc": "Номер слота (-1 если не найден)",
1043
+ "totalCount": "Всего",
1044
+ "totalCount_desc": "Общее количество в контейнере",
1045
+ "found": "Найден?",
1046
+ "found_desc": "true если предмет найден"
1047
+ }
1048
+ },
1049
+
1050
+ "furnace:open": {
1051
+ "label": "Печка: открыть",
1052
+ "description": "Открывает печку (обычную, плавильную, коптильню) по координатам",
1053
+ "pins": {
1054
+ "x": "X",
1055
+ "x_desc": "Координата X печки",
1056
+ "y": "Y",
1057
+ "y_desc": "Координата Y печки",
1058
+ "z": "Z",
1059
+ "z_desc": "Координата Z печки",
1060
+ "opened": "Открыта",
1061
+ "error": "Ошибка",
1062
+ "furnace": "Печка",
1063
+ "furnace_desc": "Объект открытой печки",
1064
+ "success": "Успех?",
1065
+ "success_desc": "true если печка открыта"
1066
+ }
1067
+ },
1068
+
1069
+ "furnace:close": {
1070
+ "label": "Печка: закрыть",
1071
+ "description": "Закрывает печку"
1072
+ },
1073
+
1074
+ "furnace:put_input": {
1075
+ "label": "Печка: положить ресурс",
1076
+ "description": "Кладёт предмет в слот плавки печки",
1077
+ "pins": {
1078
+ "itemName": "Предмет",
1079
+ "itemName_desc": "Название предмета для плавки",
1080
+ "count": "Кол-во",
1081
+ "count_desc": "Количество (пусто = все)",
1082
+ "success": "Успех?",
1083
+ "success_desc": "true если предмет положен"
1084
+ }
1085
+ },
1086
+
1087
+ "furnace:put_fuel": {
1088
+ "label": "Печка: положить топливо",
1089
+ "description": "Кладёт топливо в слот топлива печки",
1090
+ "pins": {
1091
+ "itemName": "Топливо",
1092
+ "itemName_desc": "Название топлива (coal, charcoal, etc.)",
1093
+ "count": "Кол-во",
1094
+ "count_desc": "Количество (пусто = все)",
1095
+ "success": "Успех?",
1096
+ "success_desc": "true если топливо положено"
1097
+ }
1098
+ },
1099
+
1100
+ "furnace:take_output": {
1101
+ "label": "Печка: забрать",
1102
+ "description": "Забирает готовый предмет из слота результата печки",
1103
+ "pins": {
1104
+ "item": "Предмет",
1105
+ "item_desc": "Забранный предмет",
1106
+ "count": "Кол-во",
1107
+ "count_desc": "Количество забранных предметов",
1108
+ "success": "Успех?",
1109
+ "success_desc": "true если предмет забран"
1110
+ }
1111
+ },
1112
+
1113
+ "furnace:get_status": {
1114
+ "label": "Печка: статус",
1115
+ "description": "Получает текущий статус печки (топливо, прогресс, предметы в слотах)",
1116
+ "pins": {
1117
+ "inputItem": "Ресурс",
1118
+ "inputItem_desc": "Предмет в слоте плавки",
1119
+ "fuelItem": "Топливо",
1120
+ "fuelItem_desc": "Предмет в слоте топлива",
1121
+ "outputItem": "Результат",
1122
+ "outputItem_desc": "Готовый предмет",
1123
+ "fuel": "Топливо%",
1124
+ "fuel_desc": "Оставшееся топливо (0-1)",
1125
+ "progress": "Прогресс",
1126
+ "progress_desc": "Прогресс плавки (0-1)",
1127
+ "isBurning": "Горит?",
1128
+ "isBurning_desc": "true если печка работает"
1129
+ }
1130
+ }
1131
+ }