blockmine 1.20.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) 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 +28 -3
  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 -39
  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 -850
  289. package/backend/src/core/BreakLoopSignal.js +8 -0
  290. package/backend/src/core/EventGraphManager.js +280 -193
  291. package/backend/src/core/GraphExecutionEngine.js +321 -928
  292. package/backend/src/core/MessageQueue.js +27 -6
  293. package/backend/src/core/NodeRegistry.js +37 -991
  294. package/backend/src/core/PluginManager.js +62 -12
  295. package/backend/src/core/PrismaService.js +32 -0
  296. package/backend/src/core/UserService.js +3 -3
  297. package/backend/src/core/__tests__/PrismaService.test.js +24 -0
  298. package/backend/src/core/commands/README.md +305 -0
  299. package/backend/src/core/commands/dev.js +13 -7
  300. package/backend/src/core/commands/ping.js +10 -4
  301. package/backend/src/core/commands/whois.js +63 -0
  302. package/backend/src/core/config/validation.js +27 -0
  303. package/backend/src/core/constants/graphTypes.js +21 -0
  304. package/backend/src/core/node-registries/actions.js +132 -0
  305. package/backend/src/core/node-registries/arrays.js +137 -0
  306. package/backend/src/core/node-registries/bot.js +23 -0
  307. package/backend/src/core/node-registries/data.js +290 -0
  308. package/backend/src/core/node-registries/debug.js +26 -0
  309. package/backend/src/core/node-registries/events.js +187 -0
  310. package/backend/src/core/node-registries/flow.js +139 -0
  311. package/backend/src/core/node-registries/logic.js +45 -0
  312. package/backend/src/core/node-registries/math.js +42 -0
  313. package/backend/src/core/node-registries/objects.js +98 -0
  314. package/backend/src/core/node-registries/strings.js +153 -0
  315. package/backend/src/core/node-registries/time.js +113 -0
  316. package/backend/src/core/node-registries/users.js +79 -0
  317. package/backend/src/core/nodes/actions/bot_look_at.js +36 -0
  318. package/backend/src/core/nodes/actions/bot_set_variable.js +32 -0
  319. package/backend/src/core/nodes/actions/http_request.js +98 -0
  320. package/backend/src/core/nodes/actions/send_log.js +28 -0
  321. package/backend/src/core/nodes/actions/send_message.js +32 -0
  322. package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
  323. package/backend/src/core/nodes/arrays/add_element.js +23 -0
  324. package/backend/src/core/nodes/arrays/contains.js +40 -0
  325. package/backend/src/core/nodes/arrays/find_index.js +23 -0
  326. package/backend/src/core/nodes/arrays/get_by_index.js +23 -0
  327. package/backend/src/core/nodes/arrays/get_next.js +35 -0
  328. package/backend/src/core/nodes/arrays/get_random_element.js +32 -0
  329. package/backend/src/core/nodes/arrays/remove_by_index.js +30 -0
  330. package/backend/src/core/nodes/bot/get_position.js +20 -0
  331. package/backend/src/core/nodes/data/array_literal.js +31 -0
  332. package/backend/src/core/nodes/data/boolean_literal.js +21 -0
  333. package/backend/src/core/nodes/data/cast.js +42 -0
  334. package/backend/src/core/nodes/data/datetime_literal.js +27 -0
  335. package/backend/src/core/nodes/data/entity_info.js +69 -0
  336. package/backend/src/core/nodes/data/get_argument.js +23 -0
  337. package/backend/src/core/nodes/data/get_bot_look.js +14 -0
  338. package/backend/src/core/nodes/data/get_entity_field.js +18 -0
  339. package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
  340. package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
  341. package/backend/src/core/nodes/data/get_server_players.js +18 -0
  342. package/backend/src/core/nodes/data/get_user_field.js +40 -0
  343. package/backend/src/core/nodes/data/get_variable.js +23 -0
  344. package/backend/src/core/nodes/data/length.js +25 -0
  345. package/backend/src/core/nodes/data/make_object.js +31 -0
  346. package/backend/src/core/nodes/data/number_literal.js +21 -0
  347. package/backend/src/core/nodes/data/string_literal.js +34 -0
  348. package/backend/src/core/nodes/data/type_check.js +53 -0
  349. package/backend/src/core/nodes/debug/log.js +16 -0
  350. package/backend/src/core/nodes/flow/branch.js +15 -0
  351. package/backend/src/core/nodes/flow/break.js +14 -0
  352. package/backend/src/core/nodes/flow/delay.js +43 -0
  353. package/backend/src/core/nodes/flow/for_each.js +39 -0
  354. package/backend/src/core/nodes/flow/sequence.js +16 -0
  355. package/backend/src/core/nodes/flow/switch.js +47 -0
  356. package/backend/src/core/nodes/flow/while.js +64 -0
  357. package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
  358. package/backend/src/core/nodes/logic/compare.js +33 -0
  359. package/backend/src/core/nodes/logic/operation.js +35 -0
  360. package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
  361. package/backend/src/core/nodes/math/operation.js +31 -0
  362. package/backend/src/core/nodes/math/random_number.js +43 -0
  363. package/backend/src/core/nodes/objects/create.js +40 -0
  364. package/backend/src/core/nodes/objects/delete.js +26 -0
  365. package/backend/src/core/nodes/objects/get.js +23 -0
  366. package/backend/src/core/nodes/objects/has_key.js +30 -0
  367. package/backend/src/core/nodes/objects/set.js +27 -0
  368. package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
  369. package/backend/src/core/nodes/strings/concat.js +27 -0
  370. package/backend/src/core/nodes/strings/contains.js +41 -0
  371. package/backend/src/core/nodes/strings/ends_with.js +43 -0
  372. package/backend/src/core/nodes/strings/equals.js +36 -0
  373. package/backend/src/core/nodes/strings/length.js +36 -0
  374. package/backend/src/core/nodes/strings/matches.js +39 -0
  375. package/backend/src/core/nodes/strings/split.js +37 -0
  376. package/backend/src/core/nodes/strings/starts_with.js +43 -0
  377. package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
  378. package/backend/src/core/nodes/time/add.js +33 -0
  379. package/backend/src/core/nodes/time/compare.js +35 -0
  380. package/backend/src/core/nodes/time/diff.js +29 -0
  381. package/backend/src/core/nodes/time/format.js +32 -0
  382. package/backend/src/core/nodes/time/now.js +18 -0
  383. package/backend/src/core/nodes/users/check_blacklist.js +37 -0
  384. package/backend/src/core/nodes/users/get_groups.js +36 -0
  385. package/backend/src/core/nodes/users/get_permissions.js +36 -0
  386. package/backend/src/core/nodes/users/set_blacklist.js +37 -0
  387. package/backend/src/core/services/BotLifecycleService.js +596 -0
  388. package/backend/src/core/services/BotProcessManager.js +163 -0
  389. package/backend/src/core/services/CacheManager.js +111 -0
  390. package/backend/src/core/services/CommandExecutionService.js +351 -0
  391. package/backend/src/core/services/ResourceMonitorService.js +90 -0
  392. package/backend/src/core/services/TelemetryService.js +124 -0
  393. package/backend/src/core/services/ValidationService.js +132 -0
  394. package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
  395. package/backend/src/core/services.js +20 -5
  396. package/backend/src/core/system/CommandContext.js +84 -0
  397. package/backend/src/core/system/Transport.js +78 -0
  398. package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
  399. package/backend/src/core/utils/jsonParser.js +18 -0
  400. package/backend/src/core/utils/secretsFilter.js +262 -0
  401. package/backend/src/core/utils/variableParser.js +89 -0
  402. package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
  403. package/backend/src/core/validation/nodeSchemas.js +112 -0
  404. package/backend/src/lib/prisma.js +2 -4
  405. package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
  406. package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
  407. package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
  408. package/backend/src/real-time/botApi/handlers/index.js +43 -0
  409. package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
  410. package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
  411. package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
  412. package/backend/src/real-time/botApi/index.js +40 -0
  413. package/backend/src/real-time/botApi/middleware.js +79 -0
  414. package/backend/src/real-time/botApi/utils.js +54 -0
  415. package/backend/src/real-time/socketHandler.js +6 -2
  416. package/backend/src/repositories/BaseRepository.js +43 -0
  417. package/backend/src/repositories/BotRepository.js +42 -0
  418. package/backend/src/repositories/CommandRepository.js +53 -0
  419. package/backend/src/repositories/EventGraphRepository.js +40 -0
  420. package/backend/src/repositories/GroupRepository.js +69 -0
  421. package/backend/src/repositories/PermissionRepository.js +48 -0
  422. package/backend/src/repositories/PluginRepository.js +42 -0
  423. package/backend/src/repositories/ServerRepository.js +27 -0
  424. package/backend/src/repositories/UserRepository.js +48 -0
  425. package/backend/src/server.js +3 -0
  426. package/backend/src/test-refactor.js +85 -0
  427. package/frontend/dist/assets/index-CfTo92bP.css +1 -0
  428. package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
  429. package/frontend/dist/index.html +2 -2
  430. package/frontend/package.json +1 -5
  431. package/package.json +2 -1
  432. package/frontend/dist/assets/index-BFd7YoAj.css +0 -1
  433. package/frontend/dist/assets/index-CMMutadc.js +0 -8352
  434. package/nul +0 -0
@@ -0,0 +1,758 @@
1
+ # GCP Patterns
2
+
3
+ Comprehensive guide to Google Cloud Platform (GCP) covering core services, architectural patterns, best practices for building scalable, data-driven cloud infrastructure leveraging Google's innovation.
4
+
5
+ ## Table of Contents
6
+
7
+ - [GCP Service Overview](#gcp-service-overview)
8
+ - [Compute Services](#compute-services)
9
+ - [Storage Services](#storage-services)
10
+ - [Database Services](#database-services)
11
+ - [Container Services](#container-services)
12
+ - [Serverless Services](#serverless-services)
13
+ - [Networking Services](#networking-services)
14
+ - [Data Analytics](#data-analytics)
15
+ - [Common Patterns](#common-patterns)
16
+ - [Best Practices](#best-practices)
17
+
18
+ ## GCP Service Overview
19
+
20
+ ### Service Categories
21
+
22
+ ```
23
+ Compute: Compute Engine, Cloud Run, Cloud Functions, App Engine
24
+ Storage: Cloud Storage, Persistent Disk, Filestore
25
+ Database: Cloud SQL, Firestore, Bigtable, Spanner
26
+ Networking: VPC, Cloud Load Balancing, Cloud CDN, Cloud DNS
27
+ Containers: GKE (Kubernetes Engine), Cloud Run, Artifact Registry
28
+ Security: IAM, Cloud KMS, Secret Manager, Security Command Center
29
+ Monitoring: Cloud Monitoring, Cloud Logging, Cloud Trace
30
+ Data: BigQuery, Dataflow, Pub/Sub, Dataproc
31
+ AI/ML: Vertex AI, AutoML, AI Platform
32
+ ```
33
+
34
+ ## Compute Services
35
+
36
+ ### Compute Engine (VMs)
37
+
38
+ **Example: Instance Template and Managed Instance Group:**
39
+ ```hcl
40
+ # Instance template for consistent VM configuration
41
+ resource "google_compute_instance_template" "app" {
42
+ name_prefix = "app-template-"
43
+ machine_type = "e2-standard-2"
44
+ region = var.region
45
+
46
+ disk {
47
+ source_image = "debian-cloud/debian-11"
48
+ auto_delete = true
49
+ boot = true
50
+ disk_size_gb = 50
51
+ disk_type = "pd-ssd"
52
+ }
53
+
54
+ network_interface {
55
+ network = google_compute_network.vpc.id
56
+ subnetwork = google_compute_subnetwork.private.id
57
+
58
+ # No external IP (NAT gateway for egress)
59
+ access_config {
60
+ # Ephemeral external IP
61
+ }
62
+ }
63
+
64
+ # Startup script
65
+ metadata_startup_script = templatefile("${path.module}/startup.sh", {
66
+ region = var.region
67
+ environment = var.environment
68
+ })
69
+
70
+ # Service account with minimal permissions
71
+ service_account {
72
+ email = google_service_account.app.email
73
+ scopes = ["cloud-platform"]
74
+ }
75
+
76
+ # Shielded VM for security
77
+ shielded_instance_config {
78
+ enable_secure_boot = true
79
+ enable_vtpm = true
80
+ enable_integrity_monitoring = true
81
+ }
82
+
83
+ labels = {
84
+ environment = var.environment
85
+ managed_by = "terraform"
86
+ }
87
+
88
+ lifecycle {
89
+ create_before_destroy = true
90
+ }
91
+ }
92
+
93
+ # Managed Instance Group with auto-scaling
94
+ resource "google_compute_region_instance_group_manager" "app" {
95
+ name = "app-mig"
96
+ region = var.region
97
+
98
+ base_instance_name = "app"
99
+ target_size = 3
100
+
101
+ version {
102
+ instance_template = google_compute_instance_template.app.id
103
+ }
104
+
105
+ # Auto-healing
106
+ auto_healing_policies {
107
+ health_check = google_compute_health_check.app.id
108
+ initial_delay_sec = 300
109
+ }
110
+
111
+ # Update policy
112
+ update_policy {
113
+ type = "PROACTIVE"
114
+ minimal_action = "REPLACE"
115
+ max_surge_fixed = 3
116
+ max_unavailable_fixed = 0
117
+ instance_redistribution_type = "PROACTIVE"
118
+ }
119
+
120
+ named_port {
121
+ name = "http"
122
+ port = 8080
123
+ }
124
+ }
125
+
126
+ # Auto-scaler
127
+ resource "google_compute_region_autoscaler" "app" {
128
+ name = "app-autoscaler"
129
+ region = var.region
130
+ target = google_compute_region_instance_group_manager.app.id
131
+
132
+ autoscaling_policy {
133
+ max_replicas = 10
134
+ min_replicas = 2
135
+ cooldown_period = 60
136
+
137
+ cpu_utilization {
138
+ target = 0.7
139
+ }
140
+
141
+ metric {
142
+ name = "pubsub.googleapis.com/subscription/num_undelivered_messages"
143
+ target = 100
144
+ type = "GAUGE"
145
+ }
146
+ }
147
+ }
148
+
149
+ # Health check
150
+ resource "google_compute_health_check" "app" {
151
+ name = "app-health-check"
152
+ check_interval_sec = 10
153
+ timeout_sec = 5
154
+ healthy_threshold = 2
155
+ unhealthy_threshold = 3
156
+
157
+ http_health_check {
158
+ port = 8080
159
+ request_path = "/health"
160
+ }
161
+ }
162
+ ```
163
+
164
+ ## Storage Services
165
+
166
+ ### Cloud Storage (Object Storage)
167
+
168
+ **Example: Cloud Storage Bucket with Lifecycle:**
169
+ ```hcl
170
+ resource "google_storage_bucket" "data" {
171
+ name = "${var.project_id}-data-${var.environment}"
172
+ location = var.region
173
+ storage_class = "STANDARD"
174
+
175
+ # Versioning for data protection
176
+ versioning {
177
+ enabled = true
178
+ }
179
+
180
+ # Encryption
181
+ encryption {
182
+ default_kms_key_name = google_kms_crypto_key.storage.id
183
+ }
184
+
185
+ # Uniform bucket-level access (recommended)
186
+ uniform_bucket_level_access = true
187
+
188
+ # Lifecycle rules
189
+ lifecycle_rule {
190
+ condition {
191
+ age = 30
192
+ }
193
+ action {
194
+ type = "SetStorageClass"
195
+ storage_class = "NEARLINE"
196
+ }
197
+ }
198
+
199
+ lifecycle_rule {
200
+ condition {
201
+ age = 90
202
+ }
203
+ action {
204
+ type = "SetStorageClass"
205
+ storage_class = "COLDLINE"
206
+ }
207
+ }
208
+
209
+ lifecycle_rule {
210
+ condition {
211
+ age = 365
212
+ with_state = "ANY"
213
+ }
214
+ action {
215
+ type = "Delete"
216
+ }
217
+ }
218
+
219
+ lifecycle_rule {
220
+ condition {
221
+ num_newer_versions = 3
222
+ }
223
+ action {
224
+ type = "Delete"
225
+ }
226
+ }
227
+
228
+ # CORS for web applications
229
+ cors {
230
+ origin = ["https://example.com"]
231
+ method = ["GET", "HEAD", "PUT", "POST"]
232
+ response_header = ["*"]
233
+ max_age_seconds = 3600
234
+ }
235
+
236
+ labels = {
237
+ environment = var.environment
238
+ managed_by = "terraform"
239
+ }
240
+ }
241
+
242
+ # IAM binding for service account
243
+ resource "google_storage_bucket_iam_member" "app_reader" {
244
+ bucket = google_storage_bucket.data.name
245
+ role = "roles/storage.objectViewer"
246
+ member = "serviceAccount:${google_service_account.app.email}"
247
+ }
248
+ ```
249
+
250
+ ## Database Services
251
+
252
+ ### Cloud SQL (Managed PostgreSQL)
253
+
254
+ **Example: Cloud SQL with High Availability:**
255
+ ```hcl
256
+ resource "google_sql_database_instance" "postgres" {
257
+ name = "postgres-${var.environment}"
258
+ database_version = "POSTGRES_15"
259
+ region = var.region
260
+
261
+ settings {
262
+ tier = "db-custom-2-7680"
263
+ availability_type = "REGIONAL" # High availability
264
+ disk_type = "PD_SSD"
265
+ disk_size = 100
266
+ disk_autoresize = true
267
+
268
+ # Backup configuration
269
+ backup_configuration {
270
+ enabled = true
271
+ start_time = "03:00"
272
+ point_in_time_recovery_enabled = true
273
+ transaction_log_retention_days = 7
274
+
275
+ backup_retention_settings {
276
+ retained_backups = 30
277
+ retention_unit = "COUNT"
278
+ }
279
+ }
280
+
281
+ # Maintenance window
282
+ maintenance_window {
283
+ day = 7 # Sunday
284
+ hour = 4
285
+ update_track = "stable"
286
+ }
287
+
288
+ # IP configuration
289
+ ip_configuration {
290
+ ipv4_enabled = false
291
+ private_network = google_compute_network.vpc.id
292
+ require_ssl = true
293
+
294
+ # No public IP
295
+ authorized_networks {
296
+ name = "office"
297
+ value = var.office_cidr
298
+ }
299
+ }
300
+
301
+ # Insights
302
+ insights_config {
303
+ query_insights_enabled = true
304
+ query_string_length = 1024
305
+ record_application_tags = true
306
+ record_client_address = true
307
+ }
308
+
309
+ database_flags {
310
+ name = "max_connections"
311
+ value = "100"
312
+ }
313
+
314
+ database_flags {
315
+ name = "log_checkpoints"
316
+ value = "on"
317
+ }
318
+ }
319
+
320
+ # Deletion protection for production
321
+ deletion_protection = var.environment == "production" ? true : false
322
+ }
323
+
324
+ # Read replica for scaling
325
+ resource "google_sql_database_instance" "postgres_replica" {
326
+ count = var.environment == "production" ? 1 : 0
327
+
328
+ name = "postgres-${var.environment}-replica"
329
+ master_instance_name = google_sql_database_instance.postgres.name
330
+ region = var.replica_region
331
+ database_version = "POSTGRES_15"
332
+
333
+ replica_configuration {
334
+ failover_target = false
335
+ }
336
+
337
+ settings {
338
+ tier = "db-custom-2-7680"
339
+ availability_type = "ZONAL"
340
+ disk_type = "PD_SSD"
341
+
342
+ ip_configuration {
343
+ ipv4_enabled = false
344
+ private_network = google_compute_network.vpc.id
345
+ }
346
+ }
347
+ }
348
+
349
+ # Database
350
+ resource "google_sql_database" "app" {
351
+ name = "appdb"
352
+ instance = google_sql_database_instance.postgres.name
353
+ }
354
+
355
+ # Database user
356
+ resource "google_sql_user" "app" {
357
+ name = "appuser"
358
+ instance = google_sql_database_instance.postgres.name
359
+ password = random_password.db_password.result
360
+ }
361
+ ```
362
+
363
+ ### Cloud Spanner (Globally Distributed Database)
364
+
365
+ **Example: Cloud Spanner for Global Applications:**
366
+ ```hcl
367
+ resource "google_spanner_instance" "main" {
368
+ name = "spanner-${var.environment}"
369
+ config = "regional-${var.region}"
370
+ display_name = "Main Spanner Instance"
371
+ processing_units = 100 # Or num_nodes = 1
372
+
373
+ labels = {
374
+ environment = var.environment
375
+ }
376
+ }
377
+
378
+ resource "google_spanner_database" "app" {
379
+ instance = google_spanner_instance.main.name
380
+ name = "appdb"
381
+
382
+ deletion_protection = var.environment == "production" ? true : false
383
+
384
+ ddl = [
385
+ "CREATE TABLE Users (UserId STRING(36) NOT NULL, Email STRING(255), CreatedAt TIMESTAMP, ) PRIMARY KEY (UserId)",
386
+ "CREATE INDEX UsersByEmail ON Users(Email)",
387
+ ]
388
+ }
389
+ ```
390
+
391
+ ## Container Services
392
+
393
+ ### GKE (Google Kubernetes Engine)
394
+
395
+ **Example: GKE Autopilot Cluster:**
396
+ ```hcl
397
+ # GKE Autopilot - Google-managed Kubernetes
398
+ resource "google_container_cluster" "autopilot" {
399
+ name = "gke-${var.environment}-autopilot"
400
+ location = var.region
401
+
402
+ # Autopilot mode
403
+ enable_autopilot = true
404
+
405
+ # Network configuration
406
+ network = google_compute_network.vpc.name
407
+ subnetwork = google_compute_subnetwork.gke.name
408
+
409
+ # IP allocation policy
410
+ ip_allocation_policy {
411
+ cluster_secondary_range_name = "pods"
412
+ services_secondary_range_name = "services"
413
+ }
414
+
415
+ # Security
416
+ master_auth {
417
+ client_certificate_config {
418
+ issue_client_certificate = false
419
+ }
420
+ }
421
+
422
+ # Private cluster
423
+ private_cluster_config {
424
+ enable_private_nodes = true
425
+ enable_private_endpoint = false
426
+ master_ipv4_cidr_block = "172.16.0.0/28"
427
+ }
428
+
429
+ # Workload Identity
430
+ workload_identity_config {
431
+ workload_pool = "${var.project_id}.svc.id.goog"
432
+ }
433
+
434
+ # Logging and monitoring
435
+ logging_config {
436
+ enable_components = ["SYSTEM_COMPONENTS", "WORKLOADS"]
437
+ }
438
+
439
+ monitoring_config {
440
+ enable_components = ["SYSTEM_COMPONENTS"]
441
+
442
+ managed_prometheus {
443
+ enabled = true
444
+ }
445
+ }
446
+
447
+ # Release channel
448
+ release_channel {
449
+ channel = "REGULAR"
450
+ }
451
+
452
+ # Addons
453
+ addons_config {
454
+ http_load_balancing {
455
+ disabled = false
456
+ }
457
+
458
+ horizontal_pod_autoscaling {
459
+ disabled = false
460
+ }
461
+
462
+ gce_persistent_disk_csi_driver_config {
463
+ enabled = true
464
+ }
465
+ }
466
+ }
467
+
468
+ # Standard GKE cluster with node pools
469
+ resource "google_container_cluster" "standard" {
470
+ name = "gke-${var.environment}"
471
+ location = var.region
472
+
473
+ # Remove default node pool
474
+ remove_default_node_pool = true
475
+ initial_node_count = 1
476
+
477
+ network = google_compute_network.vpc.name
478
+ subnetwork = google_compute_subnetwork.gke.name
479
+
480
+ workload_identity_config {
481
+ workload_pool = "${var.project_id}.svc.id.goog"
482
+ }
483
+
484
+ # Similar configuration as autopilot...
485
+ }
486
+
487
+ # Node pool
488
+ resource "google_container_node_pool" "primary" {
489
+ name = "primary-pool"
490
+ location = var.region
491
+ cluster = google_container_cluster.standard.name
492
+ node_count = 1
493
+
494
+ autoscaling {
495
+ min_node_count = 1
496
+ max_node_count = 10
497
+ }
498
+
499
+ management {
500
+ auto_repair = true
501
+ auto_upgrade = true
502
+ }
503
+
504
+ node_config {
505
+ preemptible = false
506
+ machine_type = "e2-medium"
507
+
508
+ service_account = google_service_account.gke_nodes.email
509
+ oauth_scopes = [
510
+ "https://www.googleapis.com/auth/cloud-platform"
511
+ ]
512
+
513
+ labels = {
514
+ environment = var.environment
515
+ }
516
+
517
+ # Shielded nodes
518
+ shielded_instance_config {
519
+ enable_secure_boot = true
520
+ enable_integrity_monitoring = true
521
+ }
522
+
523
+ workload_metadata_config {
524
+ mode = "GKE_METADATA"
525
+ }
526
+ }
527
+ }
528
+ ```
529
+
530
+ ## Serverless Services
531
+
532
+ ### Cloud Run
533
+
534
+ **Example: Cloud Run Service:**
535
+ ```hcl
536
+ resource "google_cloud_run_service" "api" {
537
+ name = "api-service"
538
+ location = var.region
539
+
540
+ template {
541
+ spec {
542
+ containers {
543
+ image = "gcr.io/${var.project_id}/api:latest"
544
+
545
+ resources {
546
+ limits = {
547
+ cpu = "1000m"
548
+ memory = "512Mi"
549
+ }
550
+ }
551
+
552
+ env {
553
+ name = "DATABASE_URL"
554
+ value_from {
555
+ secret_key_ref {
556
+ name = google_secret_manager_secret.db_url.secret_id
557
+ key = "latest"
558
+ }
559
+ }
560
+ }
561
+
562
+ ports {
563
+ container_port = 8080
564
+ }
565
+ }
566
+
567
+ service_account_name = google_service_account.cloud_run.email
568
+
569
+ # Autoscaling
570
+ container_concurrency = 80
571
+ timeout_seconds = 300
572
+ }
573
+
574
+ metadata {
575
+ annotations = {
576
+ "autoscaling.knative.dev/minScale" = "1"
577
+ "autoscaling.knative.dev/maxScale" = "100"
578
+ "run.googleapis.com/vpc-access-connector" = google_vpc_access_connector.connector.name
579
+ }
580
+ }
581
+ }
582
+
583
+ traffic {
584
+ percent = 100
585
+ latest_revision = true
586
+ }
587
+ }
588
+
589
+ # IAM for public access
590
+ resource "google_cloud_run_service_iam_member" "public" {
591
+ service = google_cloud_run_service.api.name
592
+ location = google_cloud_run_service.api.location
593
+ role = "roles/run.invoker"
594
+ member = "allUsers"
595
+ }
596
+ ```
597
+
598
+ ### Cloud Functions
599
+
600
+ **Example: Cloud Function with Pub/Sub Trigger:**
601
+ ```hcl
602
+ # Storage bucket for function code
603
+ resource "google_storage_bucket" "functions" {
604
+ name = "${var.project_id}-functions"
605
+ location = var.region
606
+ }
607
+
608
+ resource "google_storage_bucket_object" "function_code" {
609
+ name = "function-${data.archive_file.function.output_md5}.zip"
610
+ bucket = google_storage_bucket.functions.name
611
+ source = data.archive_file.function.output_path
612
+ }
613
+
614
+ # Cloud Function
615
+ resource "google_cloudfunctions_function" "processor" {
616
+ name = "event-processor"
617
+ runtime = "nodejs18"
618
+ region = var.region
619
+
620
+ available_memory_mb = 256
621
+ source_archive_bucket = google_storage_bucket.functions.name
622
+ source_archive_object = google_storage_bucket_object.function_code.name
623
+ entry_point = "processEvent"
624
+
625
+ event_trigger {
626
+ event_type = "google.pubsub.topic.publish"
627
+ resource = google_pubsub_topic.events.name
628
+ }
629
+
630
+ environment_variables = {
631
+ PROJECT_ID = var.project_id
632
+ }
633
+
634
+ service_account_email = google_service_account.functions.email
635
+
636
+ # VPC connector for private resources
637
+ vpc_connector = google_vpc_access_connector.connector.name
638
+
639
+ max_instances = 100
640
+ timeout = 60
641
+ }
642
+ ```
643
+
644
+ ## Data Analytics
645
+
646
+ ### BigQuery
647
+
648
+ **Example: BigQuery Dataset and Table:**
649
+ ```hcl
650
+ resource "google_bigquery_dataset" "analytics" {
651
+ dataset_id = "analytics_${var.environment}"
652
+ location = var.region
653
+ description = "Analytics data warehouse"
654
+
655
+ default_table_expiration_ms = 3600000 # 1 hour default
656
+
657
+ access {
658
+ role = "OWNER"
659
+ user_by_email = google_service_account.bigquery.email
660
+ }
661
+
662
+ access {
663
+ role = "READER"
664
+ special_group = "projectReaders"
665
+ }
666
+
667
+ labels = {
668
+ environment = var.environment
669
+ }
670
+ }
671
+
672
+ resource "google_bigquery_table" "events" {
673
+ dataset_id = google_bigquery_dataset.analytics.dataset_id
674
+ table_id = "events"
675
+
676
+ # Partitioning by date
677
+ time_partitioning {
678
+ type = "DAY"
679
+ field = "event_timestamp"
680
+ }
681
+
682
+ # Clustering for query optimization
683
+ clustering = ["user_id", "event_type"]
684
+
685
+ schema = jsonencode([
686
+ {
687
+ name = "event_id"
688
+ type = "STRING"
689
+ mode = "REQUIRED"
690
+ },
691
+ {
692
+ name = "user_id"
693
+ type = "STRING"
694
+ mode = "REQUIRED"
695
+ },
696
+ {
697
+ name = "event_type"
698
+ type = "STRING"
699
+ mode = "REQUIRED"
700
+ },
701
+ {
702
+ name = "event_timestamp"
703
+ type = "TIMESTAMP"
704
+ mode = "REQUIRED"
705
+ },
706
+ {
707
+ name = "properties"
708
+ type = "JSON"
709
+ mode = "NULLABLE"
710
+ }
711
+ ])
712
+ }
713
+ ```
714
+
715
+ ## Common Patterns
716
+
717
+ ### Multi-Region Architecture
718
+
719
+ ```
720
+ Global Load Balancer (Cloud Load Balancing)
721
+
722
+ ┌──────┼──────┐
723
+ │ │
724
+ Region 1 Region 2
725
+ │ │
726
+ GKE + CloudSQL GKE + CloudSQL
727
+ │ │
728
+ └───────┬───────┘
729
+
730
+ Cloud Spanner
731
+ (Global Database)
732
+ ```
733
+
734
+ ## Best Practices
735
+
736
+ 1. **Use Service Accounts** instead of user credentials
737
+ 2. **Enable VPC Service Controls** for data protection
738
+ 3. **Implement Organization Policies** for governance
739
+ 4. **Use Cloud KMS** for encryption key management
740
+ 5. **Enable Cloud Audit Logs** for compliance
741
+ 6. **Tag resources** with labels for cost tracking
742
+ 7. **Use GKE Autopilot** for managed Kubernetes
743
+ 8. **Leverage Cloud Run** for serverless containers
744
+ 9. **Use BigQuery** for analytics workloads
745
+ 10. **Implement least privilege** IAM policies
746
+
747
+ ## Anti-Patterns
748
+
749
+ ❌ Using user credentials instead of service accounts
750
+ ❌ Not using VPC for network isolation
751
+ ❌ Ignoring Cloud Security Command Center recommendations
752
+ ❌ No resource labeling
753
+ ❌ Over-provisioning Compute Engine instances
754
+ ❌ Not using managed services
755
+ ❌ Public IP addresses on instances
756
+ ❌ No monitoring or logging
757
+ ❌ Manual deployments
758
+ ❌ Ignoring cost optimization