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,562 @@
1
+ # Reference Architectures
2
+
3
+ Real-world architecture examples for common application types with proven patterns and best practices.
4
+
5
+ ## 1. E-Commerce Platform
6
+
7
+ ### Architecture Overview
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────────────────────┐
11
+ │ CloudFront CDN │
12
+ │ (Static Assets, API Caching) │
13
+ └──────────────────────┬──────────────────────────────────────┘
14
+
15
+ ┌────────────┴────────────┐
16
+ │ │
17
+ ┌─────▼──────┐ ┌──────▼─────┐
18
+ │ Web │ │ API │
19
+ │ (S3/CF) │ │ Gateway │
20
+ └────────────┘ └──────┬─────┘
21
+
22
+ ┌──────────────────────────┼──────────────────────────┐
23
+ │ │ │
24
+ ┌──────▼──────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐
25
+ │ Product │ │ Order │ │ Payment │
26
+ │ Service │ │ Service │ │ Service │
27
+ │ (ECS) │ │ (ECS) │ │ (ECS + PCI DSS) │
28
+ └──────┬──────┘ └────────┬──────────┘ └─────────┬─────────┘
29
+ │ │ │
30
+ ┌──────▼──────┐ ┌────────▼──────────┐ ┌─────────▼─────────┐
31
+ │ Product DB │ │ Order DB │ │ Payment DB │
32
+ │ (PostgreSQL)│ │ (PostgreSQL) │ │ (PostgreSQL) │
33
+ │ Read Rep. │ │ Multi-AZ │ │ Encrypted │
34
+ └─────────────┘ └───────────────────┘ └───────────────────┘
35
+
36
+ ┌────────────────────────────────┐
37
+ │ Event Bus (EventBridge) │
38
+ │ order.created, inventory.low │
39
+ └────────┬───────────────────────┘
40
+
41
+ ┌────────────┼────────────┐
42
+ │ │ │
43
+ ┌───▼─────┐ ┌───▼──────┐ ┌──▼──────┐
44
+ │Inventory│ │Email │ │Analytics│
45
+ │Service │ │Service │ │Service │
46
+ └─────────┘ └──────────┘ └─────────┘
47
+ ```
48
+
49
+ ### Key Components
50
+
51
+ **Frontend:**
52
+ - React SPA hosted on S3
53
+ - CloudFront for global CDN
54
+ - Server-side rendering for SEO
55
+
56
+ **API Gateway:**
57
+ - Kong for centralized auth, rate limiting
58
+ - JWT authentication
59
+ - API versioning (/v1/, /v2/)
60
+
61
+ **Services:**
62
+ - Product Service: Read-heavy, uses Redis cache
63
+ - Order Service: Write-heavy, ACID transactions
64
+ - Payment Service: PCI-DSS compliant, isolated VPC
65
+
66
+ **Data:**
67
+ - PostgreSQL for transactional data
68
+ - Read replicas for product catalog
69
+ - DynamoDB for session storage
70
+ - S3 for product images
71
+
72
+ **Event-Driven:**
73
+ - EventBridge for async communication
74
+ - Email notifications (order confirmation)
75
+ - Inventory updates
76
+ - Analytics tracking
77
+
78
+ ### Traffic Patterns
79
+
80
+ ```
81
+ Black Friday Load:
82
+ - Normal: 1,000 RPS
83
+ - Peak: 20,000 RPS (20x spike)
84
+ - Duration: 8 hours
85
+
86
+ Auto-Scaling:
87
+ - Product Service: 10 → 50 containers
88
+ - Order Service: 20 → 100 containers
89
+ - Database: Vertical scale before event
90
+ ```
91
+
92
+ ### Cost Breakdown (Monthly)
93
+
94
+ ```
95
+ Compute (ECS Fargate): $3,000
96
+ Database (RDS): $1,500
97
+ CloudFront: $800
98
+ API Gateway: $400
99
+ S3 Storage: $100
100
+ Other: $200
101
+ Total: $6,000/month (avg)
102
+ Black Friday: $15,000 (spike month)
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 2. SaaS Multi-Tenant Platform
108
+
109
+ ### Architecture Overview
110
+
111
+ ```
112
+ ┌───────────────────────────────────────────────────────┐
113
+ │ Route 53 (DNS) │
114
+ │ app.customer1.com → Load Balancer │
115
+ │ app.customer2.com → Load Balancer │
116
+ └─────────────────────┬─────────────────────────────────┘
117
+
118
+ ┌───────▼────────┐
119
+ │ Application │
120
+ │ Load Balancer │
121
+ └───────┬────────┘
122
+
123
+ ┌──────────────┼──────────────┐
124
+ │ │ │
125
+ ┌──────▼──────┐ ┌────▼──────┐ ┌────▼──────┐
126
+ │ API │ │ Worker │ │ Scheduler│
127
+ │ (Kubernetes)│ │ (Celery) │ │ (Cron) │
128
+ └──────┬──────┘ └────┬──────┘ └────┬──────┘
129
+ │ │ │
130
+ └─────────────┼──────────────┘
131
+
132
+ ┌────────────▼────────────┐
133
+ │ PostgreSQL │
134
+ │ (Schema-per-tenant) │
135
+ │ or │
136
+ │ (Shared schema + │
137
+ │ tenant_id column) │
138
+ └─────────────────────────┘
139
+
140
+ ┌─────────────────────────────────────┐
141
+ │ Redis Cluster │
142
+ │ - Session storage │
143
+ │ - Cache │
144
+ │ - Rate limiting (per tenant) │
145
+ └─────────────────────────────────────┘
146
+ ```
147
+
148
+ ### Multi-Tenancy Patterns
149
+
150
+ **Option A: Shared Database, Shared Schema**
151
+ ```sql
152
+ CREATE TABLE users (
153
+ id SERIAL PRIMARY KEY,
154
+ tenant_id INT NOT NULL, -- Partition key
155
+ email VARCHAR NOT NULL,
156
+ UNIQUE(tenant_id, email)
157
+ );
158
+
159
+ -- Row-Level Security
160
+ CREATE POLICY tenant_isolation ON users
161
+ USING (tenant_id = current_setting('app.tenant_id')::INT);
162
+ ```
163
+
164
+ **Option B: Shared Database, Schema Per Tenant**
165
+ ```sql
166
+ -- Separate schema for each tenant
167
+ CREATE SCHEMA tenant_123;
168
+ CREATE SCHEMA tenant_456;
169
+
170
+ -- Route queries to correct schema
171
+ SET search_path TO tenant_123;
172
+ SELECT * FROM users;
173
+ ```
174
+
175
+ **Option C: Database Per Tenant**
176
+ ```
177
+ Tenant 1 → Database 1
178
+ Tenant 2 → Database 2
179
+ Tenant 3 → Database 3
180
+
181
+ Pros: Maximum isolation, easy migration
182
+ Cons: Higher cost, complex management
183
+ ```
184
+
185
+ ### Rate Limiting Per Tenant
186
+
187
+ ```typescript
188
+ // Redis-based rate limiting
189
+ async function checkRateLimit(tenantId: string, endpoint: string) {
190
+ const key = `rate-limit:${tenantId}:${endpoint}`;
191
+ const limit = getTenantLimit(tenantId); // e.g., 1000 req/hour
192
+
193
+ const count = await redis.incr(key);
194
+ if (count === 1) {
195
+ await redis.expire(key, 3600); // 1 hour window
196
+ }
197
+
198
+ if (count > limit) {
199
+ throw new RateLimitError(`Tenant ${tenantId} exceeded limit`);
200
+ }
201
+ }
202
+ ```
203
+
204
+ ### Cost Model
205
+
206
+ ```
207
+ Pricing Tiers:
208
+ - Starter: $29/month (10K requests, 1 GB storage)
209
+ - Professional: $99/month (100K requests, 10 GB storage)
210
+ - Enterprise: $499/month (unlimited requests, 100 GB storage)
211
+
212
+ Cost Allocation:
213
+ - Track usage per tenant (requests, storage, compute time)
214
+ - Bill based on tier + overages
215
+ ```
216
+
217
+ ---
218
+
219
+ ## 3. Data Platform / Analytics
220
+
221
+ ### Architecture Overview
222
+
223
+ ```
224
+ ┌─────────────────────────────────────────────────────────────┐
225
+ │ Data Sources │
226
+ │ App DB, APIs, Third-party, Event Streams │
227
+ └─────────────────────┬───────────────────────────────────────┘
228
+
229
+ ┌──────────┴──────────┐
230
+ │ │
231
+ ┌──────▼──────┐ ┌──────▼──────┐
232
+ │ Ingestion │ │ Kafka │
233
+ │ (Airbyte) │ │ (Streams) │
234
+ └──────┬──────┘ └──────┬──────┘
235
+ │ │
236
+ └──────────┬──────────┘
237
+
238
+ ┌───────▼────────┐
239
+ │ Data Lake │
240
+ │ (S3 Parquet) │
241
+ └───────┬────────┘
242
+
243
+ ┌──────────────┼──────────────┐
244
+ │ │ │
245
+ ┌──────▼──────┐ ┌────▼──────┐ ┌────▼──────┐
246
+ │ Spark │ │ DBT │ │ Airflow │
247
+ │ (Transform) │ │(Transform)│ │(Orchestr.)│
248
+ └──────┬──────┘ └────┬──────┘ └────┬──────┘
249
+ │ │ │
250
+ └─────────────┼──────────────┘
251
+
252
+ ┌────────────▼────────────┐
253
+ │ Data Warehouse │
254
+ │ (Snowflake/BigQuery) │
255
+ └────────┬────────────────┘
256
+
257
+ ┌────────────┼────────────┐
258
+ │ │ │
259
+ ┌───▼──────┐ ┌──▼────────┐ ┌▼────────┐
260
+ │ Tableau │ │ Superset │ │ML Models│
261
+ │(BI Tool) │ │ (BI Tool) │ │(Sagemaker)
262
+ └──────────┘ └───────────┘ └─────────┘
263
+ ```
264
+
265
+ ### Data Pipeline
266
+
267
+ **Ingestion:**
268
+ ```yaml
269
+ # Airbyte connector: PostgreSQL → S3
270
+ {
271
+ "source": {
272
+ "type": "postgres",
273
+ "host": "prod-db.example.com",
274
+ "database": "myapp",
275
+ "tables": ["users", "orders", "products"]
276
+ },
277
+ "destination": {
278
+ "type": "s3",
279
+ "bucket": "data-lake",
280
+ "format": "parquet",
281
+ "partition_by": ["date"]
282
+ },
283
+ "schedule": "0 2 * * *" # Daily at 2 AM
284
+ }
285
+ ```
286
+
287
+ **Transformation (DBT):**
288
+ ```sql
289
+ -- models/staging/stg_orders.sql
290
+ SELECT
291
+ id,
292
+ user_id,
293
+ total,
294
+ created_at::DATE as order_date,
295
+ EXTRACT(YEAR FROM created_at) as order_year,
296
+ EXTRACT(MONTH FROM created_at) as order_month
297
+ FROM {{ source('raw', 'orders') }}
298
+ WHERE created_at > '2020-01-01'
299
+
300
+ -- models/marts/fct_daily_revenue.sql
301
+ SELECT
302
+ order_date,
303
+ COUNT(*) as order_count,
304
+ SUM(total) as revenue
305
+ FROM {{ ref('stg_orders') }}
306
+ GROUP BY order_date
307
+ ```
308
+
309
+ **Orchestration (Airflow):**
310
+ ```python
311
+ from airflow import DAG
312
+ from airflow.operators.bash import BashOperator
313
+
314
+ dag = DAG('daily_etl', schedule_interval='0 2 * * *')
315
+
316
+ ingest = BashOperator(
317
+ task_id='ingest',
318
+ bash_command='airbyte sync',
319
+ dag=dag
320
+ )
321
+
322
+ transform = BashOperator(
323
+ task_id='transform',
324
+ bash_command='dbt run',
325
+ dag=dag
326
+ )
327
+
328
+ ingest >> transform # ingest then transform
329
+ ```
330
+
331
+ ---
332
+
333
+ ## 4. ML Platform / AI Application
334
+
335
+ ### Architecture Overview
336
+
337
+ ```
338
+ ┌────────────────────────────────────────────────────┐
339
+ │ Client Application │
340
+ └──────────────────────┬─────────────────────────────┘
341
+
342
+ ┌────────▼────────┐
343
+ │ API Gateway │
344
+ └────────┬────────┘
345
+
346
+ ┌────────────┼────────────┐
347
+ │ │ │
348
+ ┌──────▼─────┐ ┌───▼──────┐ ┌──▼────────┐
349
+ │ Prediction │ │ Training │ │Monitoring │
350
+ │ API │ │ Service │ │ Service │
351
+ └──────┬─────┘ └───┬──────┘ └──┬────────┘
352
+ │ │ │
353
+ ┌──────▼─────┐ ┌───▼──────┐ ┌──▼────────┐
354
+ │Model Store │ │ Feature │ │ Metrics │
355
+ │ (S3/MLflow)│ │ Store │ │ (Prom.) │
356
+ └────────────┘ └──────────┘ └───────────┘
357
+
358
+ Training Pipeline:
359
+ ┌──────┐ → ┌────────┐ → ┌───────┐ → ┌───────┐ → ┌──────┐
360
+ │ Data │ │Feature │ │ Train │ │Evaluat│ │Deploy│
361
+ │ Prep │ │ Eng. │ │ Model │ │ Model │ │Model │
362
+ └──────┘ └────────┘ └───────┘ └───────┘ └──────┘
363
+ ```
364
+
365
+ ### Model Serving
366
+
367
+ ```python
368
+ # FastAPI for model serving
369
+ from fastapi import FastAPI
370
+ import mlflow.pyfunc
371
+
372
+ app = FastAPI()
373
+
374
+ # Load model at startup
375
+ model = mlflow.pyfunc.load_model('models:/sentiment-analysis/production')
376
+
377
+ @app.post("/predict")
378
+ async def predict(text: str):
379
+ prediction = model.predict([text])
380
+ return {
381
+ "text": text,
382
+ "sentiment": prediction[0],
383
+ "confidence": prediction[1]
384
+ }
385
+
386
+ # Auto-scaling based on RPS
387
+ # Scale 1 → 10 pods during high traffic
388
+ ```
389
+
390
+ ### Feature Store
391
+
392
+ ```python
393
+ # Feast feature store
394
+ from feast import FeatureStore
395
+
396
+ store = FeatureStore(repo_path="feature_repo")
397
+
398
+ # Online serving (low latency)
399
+ features = store.get_online_features(
400
+ entity_rows=[{"user_id": "123"}],
401
+ features=["user_features:age", "user_features:location"]
402
+ ).to_dict()
403
+
404
+ # Offline training (batch)
405
+ training_data = store.get_historical_features(
406
+ entity_df=user_df,
407
+ features=["user_features:*", "purchase_features:*"]
408
+ ).to_df()
409
+ ```
410
+
411
+ ### MLOps Pipeline
412
+
413
+ ```yaml
414
+ # CI/CD for ML models
415
+ name: Model Training Pipeline
416
+
417
+ on:
418
+ schedule:
419
+ - cron: '0 2 * * 0' # Weekly
420
+
421
+ jobs:
422
+ train:
423
+ runs-on: ubuntu-latest
424
+ steps:
425
+ - name: Fetch training data
426
+ run: python fetch_data.py
427
+
428
+ - name: Train model
429
+ run: python train.py
430
+
431
+ - name: Evaluate model
432
+ run: python evaluate.py
433
+
434
+ - name: Compare with production
435
+ run: python compare_models.py
436
+
437
+ - name: Deploy if improved
438
+ if: steps.compare.outputs.better == 'true'
439
+ run: |
440
+ mlflow models serve \
441
+ -m models:/sentiment/production \
442
+ -p 5000
443
+ ```
444
+
445
+ ---
446
+
447
+ ## 5. Real-Time Chat Application
448
+
449
+ ### Architecture Overview
450
+
451
+ ```
452
+ ┌────────────────────────────────────────────────┐
453
+ │ Clients (Web, Mobile) │
454
+ └───────────────────┬────────────────────────────┘
455
+ │ WebSocket
456
+ ┌────────▼────────┐
457
+ │ Load Balancer │
458
+ │ (sticky sessions)│
459
+ └────────┬────────┘
460
+
461
+ ┌───────────┼───────────┐
462
+ │ │ │
463
+ ┌─────▼──┐ ┌────▼───┐ ┌───▼────┐
464
+ │WebSocket│ │WebSocket│ │WebSocket│
465
+ │Server 1│ │Server 2│ │Server 3│
466
+ └─────┬──┘ └────┬───┘ └───┬────┘
467
+ │ │ │
468
+ └──────────┼──────────┘
469
+
470
+ ┌──────────▼──────────┐
471
+ │ Redis Pub/Sub │
472
+ │ (Message Broker) │
473
+ └──────────┬──────────┘
474
+
475
+ ┌──────────▼──────────┐
476
+ │ Cassandra │
477
+ │ (Message History) │
478
+ └─────────────────────┘
479
+ ```
480
+
481
+ ### Real-Time Communication
482
+
483
+ ```typescript
484
+ // WebSocket server
485
+ import { Server } from 'socket.io';
486
+ import { createAdapter } from '@socket.io/redis-adapter';
487
+ import Redis from 'ioredis';
488
+
489
+ const io = new Server(3000);
490
+
491
+ // Redis adapter for scaling across servers
492
+ const pubClient = new Redis(process.env.REDIS_URL);
493
+ const subClient = pubClient.duplicate();
494
+ io.adapter(createAdapter(pubClient, subClient));
495
+
496
+ io.on('connection', (socket) => {
497
+ const userId = socket.handshake.auth.userId;
498
+
499
+ // Join user-specific room
500
+ socket.join(`user:${userId}`);
501
+
502
+ socket.on('message', async (data) => {
503
+ const message = {
504
+ id: generateId(),
505
+ from: userId,
506
+ to: data.to,
507
+ text: data.text,
508
+ timestamp: new Date()
509
+ };
510
+
511
+ // Persist to database
512
+ await cassandra.execute(
513
+ 'INSERT INTO messages (id, from_user, to_user, text, timestamp) VALUES (?, ?, ?, ?, ?)',
514
+ [message.id, message.from, message.to, message.text, message.timestamp]
515
+ );
516
+
517
+ // Send to recipient (real-time)
518
+ io.to(`user:${data.to}`).emit('message', message);
519
+ });
520
+ });
521
+ ```
522
+
523
+ ### Scaling WebSockets
524
+
525
+ ```
526
+ Problem: WebSocket connections are stateful
527
+
528
+ Solution 1: Sticky sessions
529
+ - Load balancer pins client to same server
530
+ - Works but limits scaling
531
+
532
+ Solution 2: Redis Pub/Sub
533
+ - Servers subscribe to channels
534
+ - Messages broadcast across all servers
535
+ - Recipient receives regardless of server connection
536
+
537
+ Example:
538
+ User A on Server 1 sends message to User B on Server 2
539
+ Server 1 → Redis → Server 2 → User B
540
+ ```
541
+
542
+ ---
543
+
544
+ ## Best Practices Across All Architectures
545
+
546
+ ✅ **Multi-region** - Critical for DR and global performance
547
+ ✅ **Auto-scaling** - Handle variable load
548
+ ✅ **Monitoring** - Metrics, logs, traces
549
+ ✅ **Caching** - Redis for hot data
550
+ ✅ **CDN** - CloudFront for static assets
551
+ ✅ **Database read replicas** - Scale reads
552
+ ✅ **Event-driven** - Decouple services
553
+ ✅ **Security** - mTLS, encryption, zero trust
554
+ ✅ **Cost optimization** - Reserved instances, spot, auto-scale down
555
+
556
+ ---
557
+
558
+ **Related Resources:**
559
+ - architecture-patterns.md - Patterns used in these examples
560
+ - multi-region-design.md - Global deployment
561
+ - capacity-planning.md - Sizing these architectures
562
+ - cost-architecture.md - Cost optimization