blockmine 1.20.0 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/README.md +469 -0
- package/.claude/agents/auth-route-debugger.md +118 -0
- package/.claude/agents/auth-route-tester.md +93 -0
- package/.claude/agents/auto-error-resolver.md +97 -0
- package/.claude/agents/build-optimizer.md +236 -0
- package/.claude/agents/code-architecture-reviewer.md +83 -0
- package/.claude/agents/code-refactor-master.md +94 -0
- package/.claude/agents/cost-optimizer.md +134 -0
- package/.claude/agents/deployment-orchestrator.md +113 -0
- package/.claude/agents/documentation-architect.md +82 -0
- package/.claude/agents/frontend-error-fixer.md +77 -0
- package/.claude/agents/iac-code-generator.md +71 -0
- package/.claude/agents/incident-responder.md +346 -0
- package/.claude/agents/infrastructure-architect.md +31 -0
- package/.claude/agents/kubernetes-specialist.md +56 -0
- package/.claude/agents/migration-planner.md +181 -0
- package/.claude/agents/network-architect.md +196 -0
- package/.claude/agents/plan-reviewer.md +52 -0
- package/.claude/agents/refactor-planner.md +63 -0
- package/.claude/agents/security-scanner.md +102 -0
- package/.claude/agents/web-research-specialist.md +78 -0
- package/.claude/commands/cost-analysis.md +315 -0
- package/.claude/commands/dev-docs-update.md +55 -0
- package/.claude/commands/dev-docs.md +51 -0
- package/.claude/commands/incident-debug.md +247 -0
- package/.claude/commands/infra-plan.md +81 -0
- package/.claude/commands/migration-plan.md +478 -0
- package/.claude/commands/route-research-for-testing.md +37 -0
- package/.claude/commands/security-review.md +66 -0
- package/.claude/hooks/CONFIG.md +448 -0
- package/.claude/hooks/README.md +163 -0
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
- package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
- package/.claude/hooks/add-skill-activation-banners.ts +132 -0
- package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +222 -0
- package/.claude/hooks/k8s-manifest-validator.sh +56 -0
- package/.claude/hooks/package-lock.json +556 -0
- package/.claude/hooks/package.json +16 -0
- package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
- package/.claude/hooks/post-tool-use-tracker.sh +183 -0
- package/.claude/hooks/security-policy-check.sh +247 -0
- package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
- package/.claude/hooks/skill-activation-prompt.sh +10 -0
- package/.claude/hooks/skill-activation-prompt.ts +141 -0
- package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
- package/.claude/hooks/terraform-validator.sh +53 -0
- package/.claude/hooks/test-input.json +7 -0
- package/.claude/hooks/test-skill-activation.ts +427 -0
- package/.claude/hooks/trigger-build-resolver.sh +79 -0
- package/.claude/hooks/tsc-check.sh +173 -0
- package/.claude/hooks/tsconfig.json +19 -0
- package/.claude/settings.json +55 -0
- package/.claude/settings.local.json +28 -3
- package/.claude/skills/README.md +507 -0
- package/.claude/skills/api-engineering/SKILL.md +63 -0
- package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
- package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
- package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
- package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
- package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
- package/.claude/skills/build-engineering/SKILL.md +431 -0
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
- package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
- package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
- package/.claude/skills/build-engineering/resources/build-security.md +95 -0
- package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
- package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
- package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
- package/.claude/skills/cloud-engineering/SKILL.md +675 -0
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
- package/.claude/skills/cybersecurity/SKILL.md +409 -0
- package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
- package/.claude/skills/database-engineering/SKILL.md +61 -0
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
- package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
- package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
- package/.claude/skills/devsecops/SKILL.md +374 -0
- package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
- package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
- package/.claude/skills/devsecops/resources/container-security.md +915 -0
- package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
- package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
- package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
- package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
- package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
- package/.claude/skills/devsecops/resources/security-testing.md +203 -0
- package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
- package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
- package/.claude/skills/documentation-as-code/SKILL.md +323 -0
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
- package/.claude/skills/engineering-management/SKILL.md +356 -0
- package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
- package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
- package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
- package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
- package/.claude/skills/error-tracking/SKILL.md +379 -0
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/.claude/skills/general-it-engineering/SKILL.md +393 -0
- package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
- package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
- package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
- package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
- package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
- package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
- package/.claude/skills/network-engineering/SKILL.md +385 -0
- package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
- package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
- package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
- package/.claude/skills/network-engineering/resources/network-security.md +921 -0
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
- package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
- package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
- package/.claude/skills/observability-engineering/SKILL.md +101 -0
- package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
- package/.claude/skills/platform-engineering/SKILL.md +555 -0
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
- package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
- package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
- package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
- package/.claude/skills/release-engineering/SKILL.md +393 -0
- package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
- package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
- package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
- package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
- package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
- package/.claude/skills/route-tester/SKILL.md +392 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +430 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +2940 -0
- package/.claude/skills/sre/SKILL.md +464 -0
- package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
- package/.claude/skills/sre/resources/capacity-planning.md +226 -0
- package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
- package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
- package/.claude/skills/sre/resources/incident-management.md +436 -0
- package/.claude/skills/sre/resources/observability-stack.md +240 -0
- package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
- package/.claude/skills/sre/resources/performance-optimization.md +108 -0
- package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
- package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
- package/.claude/skills/sre/resources/toil-reduction.md +145 -0
- package/.claude/skills/systems-engineering/SKILL.md +648 -0
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
- package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
- package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
- package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
- package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
- package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
- package/.claude/skills/technical-leadership/SKILL.md +728 -0
- package/CHANGELOG.md +90 -39
- package/README.md +94 -0
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6129 -0
- package/backend/package.json +16 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/schema.prisma +33 -0
- package/backend/src/__tests__/core/DependencyService.test.js +336 -0
- package/backend/src/__tests__/core/UserService.test.js +875 -0
- package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
- package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
- package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
- package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
- package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
- package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
- package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
- package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
- package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
- package/backend/src/__tests__/secretsFilter.test.js +425 -0
- package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
- package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
- package/backend/src/__tests__/services/CacheManager.test.js +125 -0
- package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
- package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
- package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
- package/backend/src/__tests__/setup.js +25 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/bots.js +49 -7
- package/backend/src/api/routes/plugins.js +2 -1
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotManager.js +142 -871
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +1092 -850
- package/backend/src/core/BreakLoopSignal.js +8 -0
- package/backend/src/core/EventGraphManager.js +280 -193
- package/backend/src/core/GraphExecutionEngine.js +321 -928
- package/backend/src/core/MessageQueue.js +27 -6
- package/backend/src/core/NodeRegistry.js +37 -991
- package/backend/src/core/PluginManager.js +62 -12
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/UserService.js +3 -3
- package/backend/src/core/__tests__/PrismaService.test.js +24 -0
- package/backend/src/core/commands/README.md +305 -0
- package/backend/src/core/commands/dev.js +13 -7
- package/backend/src/core/commands/ping.js +10 -4
- package/backend/src/core/commands/whois.js +63 -0
- package/backend/src/core/config/validation.js +27 -0
- package/backend/src/core/constants/graphTypes.js +21 -0
- package/backend/src/core/node-registries/actions.js +132 -0
- package/backend/src/core/node-registries/arrays.js +137 -0
- package/backend/src/core/node-registries/bot.js +23 -0
- package/backend/src/core/node-registries/data.js +290 -0
- package/backend/src/core/node-registries/debug.js +26 -0
- package/backend/src/core/node-registries/events.js +187 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +45 -0
- package/backend/src/core/node-registries/math.js +42 -0
- package/backend/src/core/node-registries/objects.js +98 -0
- package/backend/src/core/node-registries/strings.js +153 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/users.js +79 -0
- package/backend/src/core/nodes/actions/bot_look_at.js +36 -0
- package/backend/src/core/nodes/actions/bot_set_variable.js +32 -0
- package/backend/src/core/nodes/actions/http_request.js +98 -0
- package/backend/src/core/nodes/actions/send_log.js +28 -0
- package/backend/src/core/nodes/actions/send_message.js +32 -0
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/arrays/add_element.js +23 -0
- package/backend/src/core/nodes/arrays/contains.js +40 -0
- package/backend/src/core/nodes/arrays/find_index.js +23 -0
- package/backend/src/core/nodes/arrays/get_by_index.js +23 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/arrays/get_random_element.js +32 -0
- package/backend/src/core/nodes/arrays/remove_by_index.js +30 -0
- package/backend/src/core/nodes/bot/get_position.js +20 -0
- package/backend/src/core/nodes/data/array_literal.js +31 -0
- package/backend/src/core/nodes/data/boolean_literal.js +21 -0
- package/backend/src/core/nodes/data/cast.js +42 -0
- package/backend/src/core/nodes/data/datetime_literal.js +27 -0
- package/backend/src/core/nodes/data/entity_info.js +69 -0
- package/backend/src/core/nodes/data/get_argument.js +23 -0
- package/backend/src/core/nodes/data/get_bot_look.js +14 -0
- package/backend/src/core/nodes/data/get_entity_field.js +18 -0
- package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
- package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
- package/backend/src/core/nodes/data/get_server_players.js +18 -0
- package/backend/src/core/nodes/data/get_user_field.js +40 -0
- package/backend/src/core/nodes/data/get_variable.js +23 -0
- package/backend/src/core/nodes/data/length.js +25 -0
- package/backend/src/core/nodes/data/make_object.js +31 -0
- package/backend/src/core/nodes/data/number_literal.js +21 -0
- package/backend/src/core/nodes/data/string_literal.js +34 -0
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/debug/log.js +16 -0
- package/backend/src/core/nodes/flow/branch.js +15 -0
- package/backend/src/core/nodes/flow/break.js +14 -0
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/flow/for_each.js +39 -0
- package/backend/src/core/nodes/flow/sequence.js +16 -0
- package/backend/src/core/nodes/flow/switch.js +47 -0
- package/backend/src/core/nodes/flow/while.js +64 -0
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/logic/compare.js +33 -0
- package/backend/src/core/nodes/logic/operation.js +35 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/math/operation.js +31 -0
- package/backend/src/core/nodes/math/random_number.js +43 -0
- package/backend/src/core/nodes/objects/create.js +40 -0
- package/backend/src/core/nodes/objects/delete.js +26 -0
- package/backend/src/core/nodes/objects/get.js +23 -0
- package/backend/src/core/nodes/objects/has_key.js +30 -0
- package/backend/src/core/nodes/objects/set.js +27 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/strings/concat.js +27 -0
- package/backend/src/core/nodes/strings/contains.js +41 -0
- package/backend/src/core/nodes/strings/ends_with.js +43 -0
- package/backend/src/core/nodes/strings/equals.js +36 -0
- package/backend/src/core/nodes/strings/length.js +36 -0
- package/backend/src/core/nodes/strings/matches.js +39 -0
- package/backend/src/core/nodes/strings/split.js +37 -0
- package/backend/src/core/nodes/strings/starts_with.js +43 -0
- package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
- package/backend/src/core/nodes/time/add.js +33 -0
- package/backend/src/core/nodes/time/compare.js +35 -0
- package/backend/src/core/nodes/time/diff.js +29 -0
- package/backend/src/core/nodes/time/format.js +32 -0
- package/backend/src/core/nodes/time/now.js +18 -0
- package/backend/src/core/nodes/users/check_blacklist.js +37 -0
- package/backend/src/core/nodes/users/get_groups.js +36 -0
- package/backend/src/core/nodes/users/get_permissions.js +36 -0
- package/backend/src/core/nodes/users/set_blacklist.js +37 -0
- package/backend/src/core/services/BotLifecycleService.js +596 -0
- package/backend/src/core/services/BotProcessManager.js +163 -0
- package/backend/src/core/services/CacheManager.js +111 -0
- package/backend/src/core/services/CommandExecutionService.js +351 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/ValidationService.js +132 -0
- package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
- package/backend/src/core/services.js +20 -5
- package/backend/src/core/system/CommandContext.js +84 -0
- package/backend/src/core/system/Transport.js +78 -0
- package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
- package/backend/src/core/utils/jsonParser.js +18 -0
- package/backend/src/core/utils/secretsFilter.js +262 -0
- package/backend/src/core/utils/variableParser.js +89 -0
- package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
- package/backend/src/core/validation/nodeSchemas.js +112 -0
- package/backend/src/lib/prisma.js +2 -4
- package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
- package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
- package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
- package/backend/src/real-time/botApi/handlers/index.js +43 -0
- package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
- package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
- package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
- package/backend/src/real-time/botApi/index.js +40 -0
- package/backend/src/real-time/botApi/middleware.js +79 -0
- package/backend/src/real-time/botApi/utils.js +54 -0
- package/backend/src/real-time/socketHandler.js +6 -2
- package/backend/src/repositories/BaseRepository.js +43 -0
- package/backend/src/repositories/BotRepository.js +42 -0
- package/backend/src/repositories/CommandRepository.js +53 -0
- package/backend/src/repositories/EventGraphRepository.js +40 -0
- package/backend/src/repositories/GroupRepository.js +69 -0
- package/backend/src/repositories/PermissionRepository.js +48 -0
- package/backend/src/repositories/PluginRepository.js +42 -0
- package/backend/src/repositories/ServerRepository.js +27 -0
- package/backend/src/repositories/UserRepository.js +48 -0
- package/backend/src/server.js +3 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-CfTo92bP.css +1 -0
- package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package.json +1 -5
- package/package.json +2 -1
- package/frontend/dist/assets/index-BFd7YoAj.css +0 -1
- package/frontend/dist/assets/index-CMMutadc.js +0 -8352
- package/nul +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,42 +1,93 @@
|
|
|
1
|
-
# История версий
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
## [1.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
### ✨ Новые возможности
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
###
|
|
24
|
-
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* зависимости
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
|
|
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
|
+
|
|
40
91
|
### [1.18.5](https://github.com/blockmineJS/blockmine/compare/v1.18.4...v1.18.5) (2025-08-15)
|
|
41
92
|
|
|
42
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
|
+
};
|