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
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
# Architecture Decision Records (ADRs)
|
|
2
|
+
|
|
3
|
+
Guide to documenting architecture decisions using ADRs for transparency, knowledge sharing, and future reference.
|
|
4
|
+
|
|
5
|
+
## What Are ADRs?
|
|
6
|
+
|
|
7
|
+
**Architecture Decision Records** are lightweight documents that capture important architectural decisions, their context, and consequences.
|
|
8
|
+
|
|
9
|
+
**Purpose:**
|
|
10
|
+
- Document **why** decisions were made (not just **what**)
|
|
11
|
+
- Preserve decision context for future team members
|
|
12
|
+
- Enable informed reversal of decisions
|
|
13
|
+
- Create audit trail of architectural evolution
|
|
14
|
+
|
|
15
|
+
## ADR Template
|
|
16
|
+
|
|
17
|
+
### Standard Format
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
# ADR-NNN: [Short title of solved problem and solution]
|
|
21
|
+
|
|
22
|
+
## Status
|
|
23
|
+
[Proposed | Accepted | Deprecated | Superseded by ADR-XXX]
|
|
24
|
+
|
|
25
|
+
## Context
|
|
26
|
+
What is the issue we're seeing that is motivating this decision or change?
|
|
27
|
+
- Current state
|
|
28
|
+
- Problems/challenges
|
|
29
|
+
- Constraints
|
|
30
|
+
- Requirements
|
|
31
|
+
|
|
32
|
+
## Decision
|
|
33
|
+
What is the change we're proposing and/or doing?
|
|
34
|
+
- Chosen solution
|
|
35
|
+
- Key implementation details
|
|
36
|
+
- Why this approach?
|
|
37
|
+
|
|
38
|
+
## Consequences
|
|
39
|
+
What becomes easier or more difficult because of this change?
|
|
40
|
+
|
|
41
|
+
Positive:
|
|
42
|
+
- Benefit 1
|
|
43
|
+
- Benefit 2
|
|
44
|
+
|
|
45
|
+
Negative:
|
|
46
|
+
- Trade-off 1
|
|
47
|
+
- Trade-off 2
|
|
48
|
+
|
|
49
|
+
Neutral:
|
|
50
|
+
- Other implication 1
|
|
51
|
+
|
|
52
|
+
## Alternatives Considered
|
|
53
|
+
What other options did we evaluate?
|
|
54
|
+
- Alternative 1: Why rejected
|
|
55
|
+
- Alternative 2: Why rejected
|
|
56
|
+
- Alternative 3: Why rejected
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Real-World Examples
|
|
60
|
+
|
|
61
|
+
### Example 1: Database Choice
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
# ADR-001: Use PostgreSQL as Primary Database
|
|
65
|
+
|
|
66
|
+
## Status
|
|
67
|
+
Accepted (2024-01-15)
|
|
68
|
+
|
|
69
|
+
## Context
|
|
70
|
+
We need to choose a database for our new microservices platform.
|
|
71
|
+
|
|
72
|
+
Current state:
|
|
73
|
+
- Starting fresh, no legacy database
|
|
74
|
+
- Team has SQL experience (MySQL, PostgreSQL)
|
|
75
|
+
- Data is relational (users, orders, products)
|
|
76
|
+
- Need ACID transactions for payments
|
|
77
|
+
- Budget: ~$500/month
|
|
78
|
+
|
|
79
|
+
Requirements:
|
|
80
|
+
- Strong consistency for financial data
|
|
81
|
+
- JSON support for flexible schemas
|
|
82
|
+
- Full-text search capability
|
|
83
|
+
- Good cloud-managed options (RDS)
|
|
84
|
+
- Open-source (no licensing costs)
|
|
85
|
+
|
|
86
|
+
## Decision
|
|
87
|
+
Use PostgreSQL (Amazon RDS Multi-AZ) as our primary database.
|
|
88
|
+
|
|
89
|
+
Implementation:
|
|
90
|
+
- RDS PostgreSQL 15
|
|
91
|
+
- Multi-AZ for high availability
|
|
92
|
+
- Read replicas for analytics workloads
|
|
93
|
+
- Connection pooling via PgBouncer
|
|
94
|
+
- Prisma ORM for type-safe access
|
|
95
|
+
|
|
96
|
+
## Consequences
|
|
97
|
+
|
|
98
|
+
Positive:
|
|
99
|
+
- ✅ Strong ACID guarantees (critical for payments)
|
|
100
|
+
- ✅ Excellent JSON support (JSONB)
|
|
101
|
+
- ✅ Built-in full-text search
|
|
102
|
+
- ✅ Team already familiar
|
|
103
|
+
- ✅ RDS handles backups, patches, scaling
|
|
104
|
+
- ✅ No licensing costs
|
|
105
|
+
|
|
106
|
+
Negative:
|
|
107
|
+
- ❌ Vertical scaling limits (max instance size)
|
|
108
|
+
- ❌ More expensive than NoSQL for large scale
|
|
109
|
+
- ❌ Schema migrations require planning
|
|
110
|
+
|
|
111
|
+
Neutral:
|
|
112
|
+
- SQL-based (requires schema design upfront)
|
|
113
|
+
- Relational model (good fit for our domain)
|
|
114
|
+
|
|
115
|
+
## Alternatives Considered
|
|
116
|
+
|
|
117
|
+
### MongoDB
|
|
118
|
+
❌ Rejected
|
|
119
|
+
- Eventual consistency risky for payments
|
|
120
|
+
- Team less familiar with document model
|
|
121
|
+
- Weaker transaction support
|
|
122
|
+
|
|
123
|
+
### DynamoDB
|
|
124
|
+
❌ Rejected
|
|
125
|
+
- Single-table design too complex for team
|
|
126
|
+
- Difficult to query ad-hoc (analytics)
|
|
127
|
+
- Vendor lock-in to AWS
|
|
128
|
+
|
|
129
|
+
### MySQL
|
|
130
|
+
✅ Close second
|
|
131
|
+
- Similar features to PostgreSQL
|
|
132
|
+
- Slightly better replication performance
|
|
133
|
+
- ❌ Weaker JSON support
|
|
134
|
+
- ❌ Less advanced features
|
|
135
|
+
|
|
136
|
+
## References
|
|
137
|
+
- [PostgreSQL vs MySQL Comparison](https://...)
|
|
138
|
+
- [Team Database Survey Results](https://...)
|
|
139
|
+
- [Cost Analysis Spreadsheet](https://...)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
### Example 2: API Gateway Selection
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
# ADR-002: Use Kong as API Gateway
|
|
148
|
+
|
|
149
|
+
## Status
|
|
150
|
+
Accepted (2024-02-01)
|
|
151
|
+
|
|
152
|
+
## Context
|
|
153
|
+
We have 15 microservices and need a unified API gateway.
|
|
154
|
+
|
|
155
|
+
Current state:
|
|
156
|
+
- Each service exposed directly to internet
|
|
157
|
+
- No centralized authentication
|
|
158
|
+
- Inconsistent rate limiting
|
|
159
|
+
- CORS configuration duplicated
|
|
160
|
+
|
|
161
|
+
Requirements:
|
|
162
|
+
- Authentication/authorization
|
|
163
|
+
- Rate limiting and throttling
|
|
164
|
+
- Request/response transformation
|
|
165
|
+
- Observability (metrics, tracing)
|
|
166
|
+
- Plugin ecosystem
|
|
167
|
+
- Kubernetes-native
|
|
168
|
+
|
|
169
|
+
## Decision
|
|
170
|
+
Deploy Kong as our API gateway in Kubernetes.
|
|
171
|
+
|
|
172
|
+
Implementation:
|
|
173
|
+
- Kong Ingress Controller for Kubernetes
|
|
174
|
+
- OAuth2/JWT authentication plugin
|
|
175
|
+
- Rate limiting plugin (Redis-backed)
|
|
176
|
+
- Prometheus metrics plugin
|
|
177
|
+
- Deploy in gateway namespace
|
|
178
|
+
- 3 replicas for high availability
|
|
179
|
+
|
|
180
|
+
## Consequences
|
|
181
|
+
|
|
182
|
+
Positive:
|
|
183
|
+
- ✅ Centralized authentication (no more per-service)
|
|
184
|
+
- ✅ Consistent rate limiting
|
|
185
|
+
- ✅ Kubernetes-native (Ingress resource)
|
|
186
|
+
- ✅ Rich plugin ecosystem (200+ plugins)
|
|
187
|
+
- ✅ Open-source (no licensing for core)
|
|
188
|
+
- ✅ Good documentation and community
|
|
189
|
+
|
|
190
|
+
Negative:
|
|
191
|
+
- ❌ Single point of failure (need HA setup)
|
|
192
|
+
- ❌ Additional latency (~10ms per request)
|
|
193
|
+
- ❌ Learning curve for team
|
|
194
|
+
- ❌ PostgreSQL/DB dependency for config
|
|
195
|
+
|
|
196
|
+
Neutral:
|
|
197
|
+
- Lua-based plugins (new language for team)
|
|
198
|
+
- Requires Redis for rate limiting
|
|
199
|
+
|
|
200
|
+
## Alternatives Considered
|
|
201
|
+
|
|
202
|
+
### AWS API Gateway
|
|
203
|
+
❌ Rejected
|
|
204
|
+
- Too expensive at scale ($3.50 per million requests)
|
|
205
|
+
- Vendor lock-in
|
|
206
|
+
- ✅ Fully managed (lower ops overhead)
|
|
207
|
+
|
|
208
|
+
### Envoy + Ambassador
|
|
209
|
+
❌ Rejected
|
|
210
|
+
- More complex to configure
|
|
211
|
+
- Smaller community
|
|
212
|
+
- ✅ More flexible/powerful
|
|
213
|
+
- ✅ CNCF project
|
|
214
|
+
|
|
215
|
+
### Nginx + Custom Lua
|
|
216
|
+
❌ Rejected
|
|
217
|
+
- Have to build everything ourselves
|
|
218
|
+
- High maintenance burden
|
|
219
|
+
- ✅ Maximum flexibility
|
|
220
|
+
|
|
221
|
+
### Traefik
|
|
222
|
+
✅ Close second
|
|
223
|
+
- Simpler configuration
|
|
224
|
+
- Kubernetes-native
|
|
225
|
+
- ❌ Fewer plugins
|
|
226
|
+
- ❌ Weaker authentication options
|
|
227
|
+
|
|
228
|
+
## Migration Plan
|
|
229
|
+
1. Deploy Kong in parallel with direct service access
|
|
230
|
+
2. Migrate authentication to Kong (2 weeks)
|
|
231
|
+
3. Implement rate limiting (1 week)
|
|
232
|
+
4. Switch DNS to Kong (phased rollout)
|
|
233
|
+
5. Remove direct service access (after 2 weeks validation)
|
|
234
|
+
|
|
235
|
+
## Success Metrics
|
|
236
|
+
- < 15ms P95 latency added by gateway
|
|
237
|
+
- Zero authentication-related incidents
|
|
238
|
+
- 99.9% gateway uptime
|
|
239
|
+
- 50% reduction in rate limiting config across services
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
### Example 3: Monorepo Decision
|
|
245
|
+
|
|
246
|
+
```markdown
|
|
247
|
+
# ADR-003: Adopt Monorepo for All Services
|
|
248
|
+
|
|
249
|
+
## Status
|
|
250
|
+
Accepted (2024-03-15)
|
|
251
|
+
|
|
252
|
+
## Context
|
|
253
|
+
We currently have 15 separate Git repositories, one per microservice.
|
|
254
|
+
|
|
255
|
+
Problems:
|
|
256
|
+
- Hard to coordinate changes across services
|
|
257
|
+
- Dependency version drift
|
|
258
|
+
- Code duplication (shared utilities copied)
|
|
259
|
+
- Complex CI/CD (15 different pipelines)
|
|
260
|
+
- Difficult refactoring across service boundaries
|
|
261
|
+
|
|
262
|
+
Team size: 12 engineers
|
|
263
|
+
Services: 15 (expected to grow to 30)
|
|
264
|
+
|
|
265
|
+
## Decision
|
|
266
|
+
Consolidate all services into a single monorepo using Turborepo.
|
|
267
|
+
|
|
268
|
+
Structure:
|
|
269
|
+
```
|
|
270
|
+
monorepo/
|
|
271
|
+
├── services/
|
|
272
|
+
│ ├── user-service/
|
|
273
|
+
│ ├── order-service/
|
|
274
|
+
│ └── ...
|
|
275
|
+
├── packages/
|
|
276
|
+
│ ├── shared-types/
|
|
277
|
+
│ ├── auth-lib/
|
|
278
|
+
│ └── ...
|
|
279
|
+
├── infrastructure/
|
|
280
|
+
│ └── terraform/
|
|
281
|
+
└── package.json
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Tooling:
|
|
285
|
+
- Turborepo for build orchestration
|
|
286
|
+
- Yarn workspaces for dependency management
|
|
287
|
+
- CODEOWNERS for code ownership
|
|
288
|
+
- GitHub Actions for CI/CD
|
|
289
|
+
|
|
290
|
+
## Consequences
|
|
291
|
+
|
|
292
|
+
Positive:
|
|
293
|
+
- ✅ Atomic cross-service changes
|
|
294
|
+
- ✅ Shared code reuse (no duplication)
|
|
295
|
+
- ✅ Consistent dependency versions
|
|
296
|
+
- ✅ Single CI/CD pipeline (with affected detection)
|
|
297
|
+
- ✅ Easier refactoring across services
|
|
298
|
+
- ✅ Single source of truth
|
|
299
|
+
|
|
300
|
+
Negative:
|
|
301
|
+
- ❌ Larger repository size (slower clones)
|
|
302
|
+
- ❌ Requires build orchestration tooling
|
|
303
|
+
- ❌ Git history from separate repos lost
|
|
304
|
+
- ❌ Need clear ownership rules (CODEOWNERS)
|
|
305
|
+
- ❌ Risk of coupling if not disciplined
|
|
306
|
+
|
|
307
|
+
Neutral:
|
|
308
|
+
- Services still deployed independently
|
|
309
|
+
- Team needs to learn monorepo workflows
|
|
310
|
+
|
|
311
|
+
## Alternatives Considered
|
|
312
|
+
|
|
313
|
+
### Polyrepo (Current State)
|
|
314
|
+
❌ Rejected
|
|
315
|
+
- Current pain points unresolved
|
|
316
|
+
- Coordination overhead too high
|
|
317
|
+
|
|
318
|
+
### Git Submodules
|
|
319
|
+
❌ Rejected
|
|
320
|
+
- Complex and error-prone
|
|
321
|
+
- Poor developer experience
|
|
322
|
+
- Doesn't solve dependency drift
|
|
323
|
+
|
|
324
|
+
### Meta/Lerna (without Turborepo)
|
|
325
|
+
❌ Rejected
|
|
326
|
+
- Slower builds (no caching)
|
|
327
|
+
- Turborepo better performance
|
|
328
|
+
|
|
329
|
+
## Migration Plan
|
|
330
|
+
1. Create new monorepo repository
|
|
331
|
+
2. Move shared libraries first (week 1)
|
|
332
|
+
3. Migrate services one-by-one (weeks 2-6)
|
|
333
|
+
4. Update CI/CD pipelines (week 7)
|
|
334
|
+
5. Decommission old repos (week 8)
|
|
335
|
+
|
|
336
|
+
## Rollback Plan
|
|
337
|
+
If monorepo doesn't work after 3 months:
|
|
338
|
+
- Extract services back to separate repos
|
|
339
|
+
- Use Git subtree split to preserve history
|
|
340
|
+
- Estimated effort: 2 weeks
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## When to Write an ADR
|
|
346
|
+
|
|
347
|
+
### Write ADRs for:
|
|
348
|
+
✅ **Significant technical decisions**
|
|
349
|
+
- Technology selection (database, framework, language)
|
|
350
|
+
- Architecture patterns (microservices, event-driven)
|
|
351
|
+
- Infrastructure choices (cloud provider, Kubernetes)
|
|
352
|
+
|
|
353
|
+
✅ **Decisions with long-term impact**
|
|
354
|
+
- Hard to reverse later
|
|
355
|
+
- Affects multiple teams
|
|
356
|
+
- Large cost implications
|
|
357
|
+
|
|
358
|
+
✅ **Decisions with trade-offs**
|
|
359
|
+
- No obviously "right" answer
|
|
360
|
+
- Multiple stakeholders with different priorities
|
|
361
|
+
|
|
362
|
+
✅ **Changes to existing architecture**
|
|
363
|
+
- Deprecating a service
|
|
364
|
+
- Migrating to new technology
|
|
365
|
+
- Changing fundamental patterns
|
|
366
|
+
|
|
367
|
+
### Don't write ADRs for:
|
|
368
|
+
❌ **Trivial decisions**
|
|
369
|
+
- Library versions (use dependency management)
|
|
370
|
+
- Code style (use linters)
|
|
371
|
+
- Individual feature implementations
|
|
372
|
+
|
|
373
|
+
❌ **Obvious choices**
|
|
374
|
+
- No alternatives
|
|
375
|
+
- No trade-offs
|
|
376
|
+
- Standard industry practices
|
|
377
|
+
|
|
378
|
+
## ADR Workflow
|
|
379
|
+
|
|
380
|
+
### 1. Proposal Phase
|
|
381
|
+
```
|
|
382
|
+
Status: Proposed
|
|
383
|
+
```
|
|
384
|
+
- Draft ADR
|
|
385
|
+
- Share with team for feedback
|
|
386
|
+
- Iterate on alternatives and consequences
|
|
387
|
+
- Update based on discussion
|
|
388
|
+
|
|
389
|
+
### 2. Decision Phase
|
|
390
|
+
```
|
|
391
|
+
Status: Accepted
|
|
392
|
+
```
|
|
393
|
+
- Team/architect approves
|
|
394
|
+
- Commit ADR to version control
|
|
395
|
+
- Announce decision to team
|
|
396
|
+
- Begin implementation
|
|
397
|
+
|
|
398
|
+
### 3. Evolution Phase
|
|
399
|
+
```
|
|
400
|
+
Status: Deprecated
|
|
401
|
+
Status: Superseded by ADR-025
|
|
402
|
+
```
|
|
403
|
+
- Mark deprecated if no longer relevant
|
|
404
|
+
- Link to superseding ADR if replaced
|
|
405
|
+
- Keep historical record (don't delete)
|
|
406
|
+
|
|
407
|
+
## Tools and Organization
|
|
408
|
+
|
|
409
|
+
### File Structure
|
|
410
|
+
```
|
|
411
|
+
docs/
|
|
412
|
+
└── architecture/
|
|
413
|
+
└── decisions/
|
|
414
|
+
├── 0001-record-architecture-decisions.md
|
|
415
|
+
├── 0002-use-postgresql-database.md
|
|
416
|
+
├── 0003-adopt-microservices.md
|
|
417
|
+
├── 0004-select-kong-api-gateway.md
|
|
418
|
+
└── README.md
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Naming Convention
|
|
422
|
+
- Zero-padded numbers: `0001`, `0002`, `0003`
|
|
423
|
+
- Descriptive titles: `use-postgresql-database`
|
|
424
|
+
- Format: `NNNN-short-descriptive-title.md`
|
|
425
|
+
|
|
426
|
+
### Tools
|
|
427
|
+
- **adr-tools** - CLI for creating/managing ADRs
|
|
428
|
+
- **log4brains** - Web UI for browsing ADRs
|
|
429
|
+
- **ADR Manager** - VS Code extension
|
|
430
|
+
- **Markdown** - Keep it simple
|
|
431
|
+
|
|
432
|
+
### Installation
|
|
433
|
+
```bash
|
|
434
|
+
# adr-tools (bash)
|
|
435
|
+
brew install adr-tools
|
|
436
|
+
|
|
437
|
+
# Initialize ADRs in project
|
|
438
|
+
adr init docs/architecture/decisions
|
|
439
|
+
|
|
440
|
+
# Create new ADR
|
|
441
|
+
adr new "Use PostgreSQL as primary database"
|
|
442
|
+
|
|
443
|
+
# Supersede old ADR
|
|
444
|
+
adr new -s 5 "Use MongoDB for analytics data"
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
## ADR Best Practices
|
|
448
|
+
|
|
449
|
+
### 1. Write Early
|
|
450
|
+
Document decisions when they're fresh. Don't wait until implementation is done.
|
|
451
|
+
|
|
452
|
+
### 2. Be Concise
|
|
453
|
+
ADRs should be readable in 5-10 minutes. Link to detailed docs if needed.
|
|
454
|
+
|
|
455
|
+
### 3. Include Alternatives
|
|
456
|
+
Show you considered multiple options. Explain why alternatives were rejected.
|
|
457
|
+
|
|
458
|
+
### 4. Quantify Trade-offs
|
|
459
|
+
Use numbers when possible:
|
|
460
|
+
- "Reduces latency by ~50ms"
|
|
461
|
+
- "Costs $500/month more"
|
|
462
|
+
- "Requires 2 additional engineers"
|
|
463
|
+
|
|
464
|
+
### 5. Link to Context
|
|
465
|
+
Reference:
|
|
466
|
+
- Slack discussions
|
|
467
|
+
- Design docs
|
|
468
|
+
- Proof-of-concept code
|
|
469
|
+
- Cost analyses
|
|
470
|
+
|
|
471
|
+
### 6. Review Regularly
|
|
472
|
+
Revisit ADRs every 6-12 months. Update status if deprecated.
|
|
473
|
+
|
|
474
|
+
### 7. Involve Stakeholders
|
|
475
|
+
Get input from:
|
|
476
|
+
- Architects
|
|
477
|
+
- Team leads
|
|
478
|
+
- Operations
|
|
479
|
+
- Product (for user-facing impact)
|
|
480
|
+
|
|
481
|
+
### 8. Version Control
|
|
482
|
+
Commit ADRs to Git. Use pull requests for review.
|
|
483
|
+
|
|
484
|
+
## Common Mistakes
|
|
485
|
+
|
|
486
|
+
❌ **Too detailed** - ADRs aren't design docs. Keep focused.
|
|
487
|
+
❌ **No alternatives** - Shows lack of evaluation.
|
|
488
|
+
❌ **Missing consequences** - Trade-offs are key.
|
|
489
|
+
❌ **Deleting old ADRs** - Keep as historical record.
|
|
490
|
+
❌ **Not updating status** - Mark as deprecated when superseded.
|
|
491
|
+
❌ **Technology-focused only** - Include business context.
|
|
492
|
+
|
|
493
|
+
## Integration with Other Practices
|
|
494
|
+
|
|
495
|
+
### Relationship to:
|
|
496
|
+
- **RFCs** - ADRs are lighter weight, RFCs for complex proposals
|
|
497
|
+
- **Design docs** - ADRs capture decision, design docs capture implementation
|
|
498
|
+
- **Runbooks** - ADRs explain "why", runbooks explain "how to operate"
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
**Related Resources:**
|
|
503
|
+
- system-design-principles.md - Principles to guide decisions
|
|
504
|
+
- reference-architectures.md - Example architectures with implicit ADRs
|
|
505
|
+
- migration-architecture.md - Migration decisions to document
|