blockmine 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/.claude/agents/README.md +469 -0
  2. package/.claude/agents/auth-route-debugger.md +118 -0
  3. package/.claude/agents/auth-route-tester.md +93 -0
  4. package/.claude/agents/auto-error-resolver.md +97 -0
  5. package/.claude/agents/build-optimizer.md +236 -0
  6. package/.claude/agents/code-architecture-reviewer.md +83 -0
  7. package/.claude/agents/code-refactor-master.md +94 -0
  8. package/.claude/agents/cost-optimizer.md +134 -0
  9. package/.claude/agents/deployment-orchestrator.md +113 -0
  10. package/.claude/agents/documentation-architect.md +82 -0
  11. package/.claude/agents/frontend-error-fixer.md +77 -0
  12. package/.claude/agents/iac-code-generator.md +71 -0
  13. package/.claude/agents/incident-responder.md +346 -0
  14. package/.claude/agents/infrastructure-architect.md +31 -0
  15. package/.claude/agents/kubernetes-specialist.md +56 -0
  16. package/.claude/agents/migration-planner.md +181 -0
  17. package/.claude/agents/network-architect.md +196 -0
  18. package/.claude/agents/plan-reviewer.md +52 -0
  19. package/.claude/agents/refactor-planner.md +63 -0
  20. package/.claude/agents/security-scanner.md +102 -0
  21. package/.claude/agents/web-research-specialist.md +78 -0
  22. package/.claude/commands/cost-analysis.md +315 -0
  23. package/.claude/commands/dev-docs-update.md +55 -0
  24. package/.claude/commands/dev-docs.md +51 -0
  25. package/.claude/commands/incident-debug.md +247 -0
  26. package/.claude/commands/infra-plan.md +81 -0
  27. package/.claude/commands/migration-plan.md +478 -0
  28. package/.claude/commands/route-research-for-testing.md +37 -0
  29. package/.claude/commands/security-review.md +66 -0
  30. package/.claude/hooks/CONFIG.md +448 -0
  31. package/.claude/hooks/README.md +163 -0
  32. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
  33. package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
  34. package/.claude/hooks/add-skill-activation-banners.ts +132 -0
  35. package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
  36. package/.claude/hooks/error-handling-reminder.sh +12 -0
  37. package/.claude/hooks/error-handling-reminder.ts +222 -0
  38. package/.claude/hooks/k8s-manifest-validator.sh +56 -0
  39. package/.claude/hooks/package-lock.json +556 -0
  40. package/.claude/hooks/package.json +16 -0
  41. package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
  42. package/.claude/hooks/post-tool-use-tracker.sh +183 -0
  43. package/.claude/hooks/security-policy-check.sh +247 -0
  44. package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
  45. package/.claude/hooks/skill-activation-prompt.sh +10 -0
  46. package/.claude/hooks/skill-activation-prompt.ts +141 -0
  47. package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
  48. package/.claude/hooks/terraform-validator.sh +53 -0
  49. package/.claude/hooks/test-input.json +7 -0
  50. package/.claude/hooks/test-skill-activation.ts +427 -0
  51. package/.claude/hooks/trigger-build-resolver.sh +79 -0
  52. package/.claude/hooks/tsc-check.sh +173 -0
  53. package/.claude/hooks/tsconfig.json +19 -0
  54. package/.claude/settings.json +55 -0
  55. package/.claude/settings.local.json +27 -14
  56. package/.claude/skills/README.md +507 -0
  57. package/.claude/skills/api-engineering/SKILL.md +63 -0
  58. package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
  59. package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
  60. package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
  61. package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
  62. package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
  63. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  64. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  65. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  66. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  67. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  68. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  69. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  70. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  71. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  72. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  73. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  74. package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
  75. package/.claude/skills/build-engineering/SKILL.md +431 -0
  76. package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
  77. package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
  78. package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
  79. package/.claude/skills/build-engineering/resources/build-security.md +95 -0
  80. package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
  81. package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
  82. package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
  83. package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
  84. package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
  85. package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
  86. package/.claude/skills/cloud-engineering/SKILL.md +675 -0
  87. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
  88. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
  89. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
  90. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
  91. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
  92. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
  93. package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
  94. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
  95. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
  96. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
  97. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
  98. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
  99. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
  100. package/.claude/skills/cybersecurity/SKILL.md +409 -0
  101. package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
  102. package/.claude/skills/database-engineering/SKILL.md +61 -0
  103. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
  104. package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
  105. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
  106. package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
  107. package/.claude/skills/devsecops/SKILL.md +374 -0
  108. package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
  109. package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
  110. package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
  111. package/.claude/skills/devsecops/resources/container-security.md +915 -0
  112. package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
  113. package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
  114. package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
  115. package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
  116. package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
  117. package/.claude/skills/devsecops/resources/security-testing.md +203 -0
  118. package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
  119. package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
  120. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
  121. package/.claude/skills/documentation-as-code/SKILL.md +323 -0
  122. package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
  123. package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
  124. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
  125. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
  126. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
  127. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
  128. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
  129. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
  130. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
  131. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
  132. package/.claude/skills/engineering-management/SKILL.md +356 -0
  133. package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
  134. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
  135. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
  136. package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
  137. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
  138. package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
  139. package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
  140. package/.claude/skills/error-tracking/SKILL.md +379 -0
  141. package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
  142. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
  143. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
  144. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
  145. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
  146. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
  147. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
  148. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
  149. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
  150. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
  151. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
  152. package/.claude/skills/general-it-engineering/SKILL.md +393 -0
  153. package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
  154. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
  155. package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
  156. package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
  157. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
  158. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
  159. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
  160. package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
  161. package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
  162. package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
  163. package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
  164. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
  165. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
  166. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
  167. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
  168. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
  169. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
  170. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
  171. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
  172. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
  173. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
  174. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
  175. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
  176. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
  177. package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
  178. package/.claude/skills/network-engineering/SKILL.md +385 -0
  179. package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
  180. package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
  181. package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
  182. package/.claude/skills/network-engineering/resources/network-security.md +921 -0
  183. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
  184. package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
  185. package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
  186. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
  187. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
  188. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
  189. package/.claude/skills/observability-engineering/SKILL.md +101 -0
  190. package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
  191. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
  192. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
  193. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
  194. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
  195. package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
  196. package/.claude/skills/platform-engineering/SKILL.md +555 -0
  197. package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
  198. package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
  199. package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
  200. package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
  201. package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
  202. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
  203. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
  204. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
  205. package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
  206. package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
  207. package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
  208. package/.claude/skills/release-engineering/SKILL.md +393 -0
  209. package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
  210. package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
  211. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
  212. package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
  213. package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
  214. package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
  215. package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
  216. package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
  217. package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
  218. package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
  219. package/.claude/skills/route-tester/SKILL.md +392 -0
  220. package/.claude/skills/skill-developer/ADVANCED.md +197 -0
  221. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
  222. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
  223. package/.claude/skills/skill-developer/SKILL.md +430 -0
  224. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
  225. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
  226. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
  227. package/.claude/skills/skill-rules.json +2940 -0
  228. package/.claude/skills/sre/SKILL.md +464 -0
  229. package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
  230. package/.claude/skills/sre/resources/capacity-planning.md +226 -0
  231. package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
  232. package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
  233. package/.claude/skills/sre/resources/incident-management.md +436 -0
  234. package/.claude/skills/sre/resources/observability-stack.md +240 -0
  235. package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
  236. package/.claude/skills/sre/resources/performance-optimization.md +108 -0
  237. package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
  238. package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
  239. package/.claude/skills/sre/resources/toil-reduction.md +145 -0
  240. package/.claude/skills/systems-engineering/SKILL.md +648 -0
  241. package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
  242. package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
  243. package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
  244. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
  245. package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
  246. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
  247. package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
  248. package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
  249. package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
  250. package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
  251. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
  252. package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
  253. package/.claude/skills/technical-leadership/SKILL.md +728 -0
  254. package/CHANGELOG.md +90 -54
  255. package/README.md +94 -0
  256. package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
  257. package/backend/jest.config.js +59 -0
  258. package/backend/package-lock.json +6129 -0
  259. package/backend/package.json +16 -4
  260. package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
  261. package/backend/prisma/schema.prisma +33 -0
  262. package/backend/src/__tests__/core/DependencyService.test.js +336 -0
  263. package/backend/src/__tests__/core/UserService.test.js +875 -0
  264. package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
  265. package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
  266. package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
  267. package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
  268. package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
  269. package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
  270. package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
  271. package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
  272. package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
  273. package/backend/src/__tests__/secretsFilter.test.js +425 -0
  274. package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
  275. package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
  276. package/backend/src/__tests__/services/CacheManager.test.js +125 -0
  277. package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
  278. package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
  279. package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
  280. package/backend/src/__tests__/setup.js +25 -0
  281. package/backend/src/api/routes/apiKeys.js +181 -0
  282. package/backend/src/api/routes/bots.js +49 -7
  283. package/backend/src/api/routes/plugins.js +2 -1
  284. package/backend/src/api/routes/system.js +174 -0
  285. package/backend/src/container.js +82 -0
  286. package/backend/src/core/BotManager.js +142 -871
  287. package/backend/src/core/BotManager.old.js +1093 -0
  288. package/backend/src/core/BotProcess.js +1092 -858
  289. package/backend/src/core/EventGraphManager.js +280 -198
  290. package/backend/src/core/GraphExecutionEngine.js +321 -325
  291. package/backend/src/core/MessageQueue.js +27 -6
  292. package/backend/src/core/NodeRegistry.js +37 -1134
  293. package/backend/src/core/PluginManager.js +62 -12
  294. package/backend/src/core/PrismaService.js +32 -0
  295. package/backend/src/core/UserService.js +3 -3
  296. package/backend/src/core/__tests__/PrismaService.test.js +24 -0
  297. package/backend/src/core/commands/README.md +305 -0
  298. package/backend/src/core/commands/dev.js +13 -7
  299. package/backend/src/core/commands/ping.js +10 -4
  300. package/backend/src/core/commands/whois.js +63 -0
  301. package/backend/src/core/config/validation.js +27 -0
  302. package/backend/src/core/constants/graphTypes.js +21 -0
  303. package/backend/src/core/node-registries/actions.js +132 -0
  304. package/backend/src/core/node-registries/arrays.js +137 -0
  305. package/backend/src/core/node-registries/bot.js +23 -0
  306. package/backend/src/core/node-registries/data.js +290 -0
  307. package/backend/src/core/node-registries/debug.js +26 -0
  308. package/backend/src/core/node-registries/events.js +187 -0
  309. package/backend/src/core/node-registries/flow.js +139 -0
  310. package/backend/src/core/node-registries/logic.js +45 -0
  311. package/backend/src/core/node-registries/math.js +42 -0
  312. package/backend/src/core/node-registries/objects.js +98 -0
  313. package/backend/src/core/node-registries/strings.js +153 -0
  314. package/backend/src/core/node-registries/time.js +113 -0
  315. package/backend/src/core/node-registries/users.js +79 -0
  316. package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
  317. package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
  318. package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
  319. package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
  320. package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
  321. package/backend/src/core/nodes/arrays/get_next.js +35 -0
  322. package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
  323. package/backend/src/core/nodes/data/datetime_literal.js +27 -0
  324. package/backend/src/core/nodes/data/entity_info.js +69 -0
  325. package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
  326. package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
  327. package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
  328. package/backend/src/core/nodes/data/type_check.js +53 -0
  329. package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
  330. package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
  331. package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
  332. package/backend/src/core/nodes/flow/delay.js +43 -0
  333. package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
  334. package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
  335. package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
  336. package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
  337. package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
  338. package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
  339. package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
  340. package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
  341. package/backend/src/core/nodes/time/add.js +33 -0
  342. package/backend/src/core/nodes/time/compare.js +35 -0
  343. package/backend/src/core/nodes/time/diff.js +29 -0
  344. package/backend/src/core/nodes/time/format.js +32 -0
  345. package/backend/src/core/nodes/time/now.js +18 -0
  346. package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
  347. package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
  348. package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
  349. package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
  350. package/backend/src/core/services/BotLifecycleService.js +596 -0
  351. package/backend/src/core/services/BotProcessManager.js +163 -0
  352. package/backend/src/core/services/CacheManager.js +111 -0
  353. package/backend/src/core/services/CommandExecutionService.js +351 -0
  354. package/backend/src/core/services/ResourceMonitorService.js +90 -0
  355. package/backend/src/core/services/TelemetryService.js +124 -0
  356. package/backend/src/core/services/ValidationService.js +132 -0
  357. package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
  358. package/backend/src/core/services.js +20 -5
  359. package/backend/src/core/system/CommandContext.js +84 -0
  360. package/backend/src/core/system/Transport.js +78 -0
  361. package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
  362. package/backend/src/core/utils/jsonParser.js +18 -0
  363. package/backend/src/core/utils/secretsFilter.js +262 -0
  364. package/backend/src/core/utils/variableParser.js +89 -0
  365. package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
  366. package/backend/src/core/validation/nodeSchemas.js +112 -0
  367. package/backend/src/lib/prisma.js +2 -4
  368. package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
  369. package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
  370. package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
  371. package/backend/src/real-time/botApi/handlers/index.js +43 -0
  372. package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
  373. package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
  374. package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
  375. package/backend/src/real-time/botApi/index.js +40 -0
  376. package/backend/src/real-time/botApi/middleware.js +79 -0
  377. package/backend/src/real-time/botApi/utils.js +54 -0
  378. package/backend/src/real-time/socketHandler.js +6 -2
  379. package/backend/src/repositories/BaseRepository.js +43 -0
  380. package/backend/src/repositories/BotRepository.js +42 -0
  381. package/backend/src/repositories/CommandRepository.js +53 -0
  382. package/backend/src/repositories/EventGraphRepository.js +40 -0
  383. package/backend/src/repositories/GroupRepository.js +69 -0
  384. package/backend/src/repositories/PermissionRepository.js +48 -0
  385. package/backend/src/repositories/PluginRepository.js +42 -0
  386. package/backend/src/repositories/ServerRepository.js +27 -0
  387. package/backend/src/repositories/UserRepository.js +48 -0
  388. package/backend/src/server.js +3 -0
  389. package/backend/src/test-refactor.js +85 -0
  390. package/frontend/dist/assets/index-CfTo92bP.css +1 -0
  391. package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
  392. package/frontend/dist/index.html +2 -2
  393. package/frontend/package.json +0 -5
  394. package/package.json +2 -1
  395. package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
  396. package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
  397. package/nul +0 -0
  398. /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
  399. /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
  400. /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
  401. /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
  402. /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
  403. /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
  404. /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
  405. /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
  406. /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
  407. /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
  408. /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
  409. /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
  410. /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
  411. /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
  412. /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
  413. /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
  414. /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
  415. /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
  416. /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
  417. /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
  418. /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
  419. /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
  420. /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
  421. /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
  422. /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
  423. /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
  424. /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
  425. /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
  426. /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
  427. /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
  428. /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
  429. /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
  430. /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
  431. /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
  432. /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
  433. /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
@@ -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