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,634 @@
1
+ # Cost Optimization & FinOps
2
+
3
+ FinOps practices, cloud cost optimization, right-sizing resources, spot instances, reserved capacity, and cost allocation for platform engineering.
4
+
5
+ ## Table of Contents
6
+
7
+ - [FinOps Principles](#finops-principles)
8
+ - [Cost Visibility](#cost-visibility)
9
+ - [Right-Sizing](#right-sizing)
10
+ - [Spot Instances](#spot-instances)
11
+ - [Reserved Capacity](#reserved-capacity)
12
+ - [Storage Optimization](#storage-optimization)
13
+ - [Network Cost Optimization](#network-cost-optimization)
14
+ - [Best Practices](#best-practices)
15
+
16
+ ## FinOps Principles
17
+
18
+ ### Three Phases
19
+
20
+ ```
21
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
22
+ │ Inform │ → │ Optimize │ → │ Operate │
23
+ │ │ │ │ │ │
24
+ │ Visibility │ │ Right-size │ │ Continuous │
25
+ │ Allocation │ │ Commit │ │ Improvement │
26
+ │ Reporting │ │ Efficiency │ │ Governance │
27
+ └──────────────┘ └──────────────┘ └──────────────┘
28
+ ```
29
+
30
+ ### Cost Categories
31
+
32
+ ```
33
+ Infrastructure Costs:
34
+ ├── Compute (40-50%)
35
+ ├── Storage (20-30%)
36
+ ├── Network (10-20%)
37
+ ├── Databases (10-15%)
38
+ └── Other Services (5-10%)
39
+ ```
40
+
41
+ ## Cost Visibility
42
+
43
+ ### Tagging Strategy
44
+
45
+ **Required Tags:**
46
+ ```yaml
47
+ apiVersion: v1
48
+ kind: Namespace
49
+ metadata:
50
+ name: production
51
+ labels:
52
+ # Cost allocation
53
+ cost-center: "12345"
54
+ department: "engineering"
55
+ team: "platform"
56
+ environment: "production"
57
+
58
+ # Business context
59
+ project: "customer-api"
60
+ owner: "team-platform@company.com"
61
+
62
+ # Technical context
63
+ managed-by: "terraform"
64
+ service-tier: "critical"
65
+ ```
66
+
67
+ **Apply to All Resources:**
68
+ ```hcl
69
+ # Terraform default tags
70
+ provider "aws" {
71
+ region = "us-east-1"
72
+
73
+ default_tags {
74
+ tags = {
75
+ CostCenter = "12345"
76
+ Department = "engineering"
77
+ Team = "platform"
78
+ Environment = "production"
79
+ ManagedBy = "terraform"
80
+ }
81
+ }
82
+ }
83
+
84
+ resource "aws_instance" "web" {
85
+ # ... instance config
86
+
87
+ tags = {
88
+ Name = "web-server"
89
+ Application = "customer-api"
90
+ ServiceTier = "critical"
91
+ }
92
+ }
93
+ ```
94
+
95
+ ### Cost Dashboards
96
+
97
+ **Grafana Dashboard (Kubecost Integration):**
98
+ ```yaml
99
+ # prometheus-queries.yaml
100
+
101
+ # Total cluster cost
102
+ sum(
103
+ avg_over_time(node_cpu_hourly_cost[1h])
104
+ * on(node) group_left()
105
+ avg_over_time(node_total_hourly_cost[1h])
106
+ )
107
+
108
+ # Cost by namespace
109
+ sum(
110
+ container_memory_allocation_bytes
111
+ * on(namespace) group_left(label_cost_center)
112
+ kube_namespace_labels
113
+ ) by (label_cost_center, namespace)
114
+
115
+ # Cost by team
116
+ sum(
117
+ avg_over_time(kubecost_cluster_costs[1d])
118
+ ) by (team)
119
+
120
+ # Idle resource cost
121
+ sum(
122
+ (
123
+ kube_pod_container_resource_limits{resource="cpu"}
124
+ -
125
+ rate(container_cpu_usage_seconds_total[5m])
126
+ )
127
+ * on(node) group_left()
128
+ avg_over_time(node_cpu_hourly_cost[1h])
129
+ )
130
+ ```
131
+
132
+ ### AWS Cost Explorer Tags
133
+
134
+ ```bash
135
+ # AWS CLI cost query
136
+ aws ce get-cost-and-usage \
137
+ --time-period Start=2024-01-01,End=2024-01-31 \
138
+ --granularity MONTHLY \
139
+ --metrics UnblendedCost \
140
+ --group-by Type=TAG,Key=Team \
141
+ --group-by Type=TAG,Key=Environment
142
+ ```
143
+
144
+ ## Right-Sizing
145
+
146
+ ### Analysis Tools
147
+
148
+ **Vertical Pod Autoscaler Recommendations:**
149
+ ```bash
150
+ # Get VPA recommendations
151
+ kubectl get vpa api-service-vpa -o jsonpath='{.status.recommendation}'
152
+
153
+ # Example output:
154
+ {
155
+ "containerRecommendations": [{
156
+ "containerName": "api",
157
+ "lowerBound": {
158
+ "cpu": "100m",
159
+ "memory": "128Mi"
160
+ },
161
+ "target": {
162
+ "cpu": "250m",
163
+ "memory": "256Mi"
164
+ },
165
+ "uncappedTarget": {
166
+ "cpu": "300m",
167
+ "memory": "300Mi"
168
+ },
169
+ "upperBound": {
170
+ "cpu": "500m",
171
+ "memory": "512Mi"
172
+ }
173
+ }]
174
+ }
175
+ ```
176
+
177
+ **Resource Waste Detection:**
178
+ ```promql
179
+ # Over-provisioned CPU (using < 50% of request)
180
+ (
181
+ sum by (pod, namespace) (
182
+ rate(container_cpu_usage_seconds_total[5m])
183
+ )
184
+ /
185
+ sum by (pod, namespace) (
186
+ kube_pod_container_resource_requests{resource="cpu"}
187
+ )
188
+ ) < 0.5
189
+
190
+ # Over-provisioned memory (using < 50% of request)
191
+ (
192
+ sum by (pod, namespace) (
193
+ container_memory_working_set_bytes
194
+ )
195
+ /
196
+ sum by (pod, namespace) (
197
+ kube_pod_container_resource_requests{resource="memory"}
198
+ )
199
+ ) < 0.5
200
+ ```
201
+
202
+ ### Right-Sizing Actions
203
+
204
+ ```yaml
205
+ # Before (over-provisioned)
206
+ resources:
207
+ requests:
208
+ memory: "2Gi"
209
+ cpu: "2000m"
210
+ limits:
211
+ memory: "4Gi"
212
+ cpu: "4000m"
213
+
214
+ # After (right-sized based on actual usage)
215
+ resources:
216
+ requests:
217
+ memory: "512Mi"
218
+ cpu: "500m"
219
+ limits:
220
+ memory: "1Gi"
221
+ cpu: "1000m"
222
+
223
+ # Potential savings: ~75% reduction
224
+ ```
225
+
226
+ ## Spot Instances
227
+
228
+ ### Kubernetes with Spot Nodes
229
+
230
+ **AWS EKS Node Group:**
231
+ ```hcl
232
+ resource "aws_eks_node_group" "spot" {
233
+ cluster_name = aws_eks_cluster.main.name
234
+ node_group_name = "spot-workers"
235
+ node_role_arn = aws_iam_role.node.arn
236
+ subnet_ids = var.private_subnet_ids
237
+
238
+ capacity_type = "SPOT"
239
+
240
+ scaling_config {
241
+ desired_size = 5
242
+ min_size = 3
243
+ max_size = 20
244
+ }
245
+
246
+ instance_types = [
247
+ "t3.large",
248
+ "t3a.large",
249
+ "t2.large"
250
+ ]
251
+
252
+ labels = {
253
+ workload-type = "spot"
254
+ }
255
+
256
+ taint {
257
+ key = "workload-type"
258
+ value = "spot"
259
+ effect = "NO_SCHEDULE"
260
+ }
261
+ }
262
+ ```
263
+
264
+ **Workload on Spot:**
265
+ ```yaml
266
+ apiVersion: apps/v1
267
+ kind: Deployment
268
+ metadata:
269
+ name: batch-processor
270
+ spec:
271
+ replicas: 10
272
+ template:
273
+ spec:
274
+ nodeSelector:
275
+ workload-type: spot
276
+
277
+ tolerations:
278
+ - key: workload-type
279
+ operator: Equal
280
+ value: spot
281
+ effect: NoSchedule
282
+
283
+ # Graceful shutdown for spot interruptions
284
+ terminationGracePeriodSeconds: 120
285
+
286
+ containers:
287
+ - name: processor
288
+ image: batch-processor:1.0
289
+ # ... config
290
+ ```
291
+
292
+ **AWS Node Termination Handler:**
293
+ ```yaml
294
+ # Handles spot interruption notices
295
+ apiVersion: apps/v1
296
+ kind: DaemonSet
297
+ metadata:
298
+ name: aws-node-termination-handler
299
+ namespace: kube-system
300
+ spec:
301
+ selector:
302
+ matchLabels:
303
+ app: aws-node-termination-handler
304
+ template:
305
+ metadata:
306
+ labels:
307
+ app: aws-node-termination-handler
308
+ spec:
309
+ serviceAccountName: aws-node-termination-handler
310
+ containers:
311
+ - name: aws-node-termination-handler
312
+ image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.19.0
313
+ env:
314
+ - name: NODE_NAME
315
+ valueFrom:
316
+ fieldRef:
317
+ fieldPath: spec.nodeName
318
+ - name: POD_NAME
319
+ valueFrom:
320
+ fieldRef:
321
+ fieldPath: metadata.name
322
+ - name: NAMESPACE
323
+ valueFrom:
324
+ fieldRef:
325
+ fieldPath: metadata.namespace
326
+ - name: ENABLE_SPOT_INTERRUPTION_DRAINING
327
+ value: "true"
328
+ - name: ENABLE_SCHEDULED_EVENT_DRAINING
329
+ value: "true"
330
+ ```
331
+
332
+ ### Spot Savings
333
+
334
+ ```
335
+ On-Demand Cost: $0.096/hour (t3.large)
336
+ Spot Cost: $0.029/hour (70% savings)
337
+ Monthly Savings: $48 per instance
338
+ 100 instances: $4,800/month savings
339
+ ```
340
+
341
+ ## Reserved Capacity
342
+
343
+ ### AWS Savings Plans
344
+
345
+ **Compute Savings Plan (Most Flexible):**
346
+ ```
347
+ Commitment: $500/month for 1 year
348
+ Discount: up to 66% vs on-demand
349
+ Applies to: EC2, Fargate, Lambda
350
+ Instance flex: Any instance type/size/region
351
+ ```
352
+
353
+ **EC2 Instance Savings Plan:**
354
+ ```
355
+ Commitment: $1,000/month for 3 years
356
+ Discount: up to 72% vs on-demand
357
+ Applies to: EC2 only
358
+ Instance flex: Same family, any size
359
+ ```
360
+
361
+ **Reserved Instances (Legacy):**
362
+ ```
363
+ Less flexible than Savings Plans
364
+ Consider Savings Plans instead
365
+ ```
366
+
367
+ ### Right Commitment Level
368
+
369
+ **Analysis Script:**
370
+ ```python
371
+ import boto3
372
+ from datetime import datetime, timedelta
373
+
374
+ ce = boto3.client('ce')
375
+
376
+ # Get last 30 days usage
377
+ end = datetime.now()
378
+ start = end - timedelta(days=30)
379
+
380
+ response = ce.get_cost_and_usage(
381
+ TimePeriod={
382
+ 'Start': start.strftime('%Y-%m-%d'),
383
+ 'End': end.strftime('%Y-%m-%d')
384
+ },
385
+ Granularity='DAILY',
386
+ Metrics=['UnblendedCost'],
387
+ Filter={
388
+ 'Dimensions': {
389
+ 'Key': 'SERVICE',
390
+ 'Values': ['Amazon Elastic Compute Cloud - Compute']
391
+ }
392
+ }
393
+ )
394
+
395
+ # Calculate baseline usage (minimum daily cost)
396
+ daily_costs = [float(day['Total']['UnblendedCost']['Amount'])
397
+ for day in response['ResultsByTime']]
398
+ baseline = min(daily_costs)
399
+ monthly_commitment = baseline * 30
400
+
401
+ print(f"Recommended monthly commitment: ${monthly_commitment:.2f}")
402
+ print(f"Estimated annual savings: ${monthly_commitment * 12 * 0.3:.2f}")
403
+ ```
404
+
405
+ ## Storage Optimization
406
+
407
+ ### S3 Lifecycle Policies
408
+
409
+ ```hcl
410
+ resource "aws_s3_bucket_lifecycle_configuration" "data" {
411
+ bucket = aws_s3_bucket.data.id
412
+
413
+ rule {
414
+ id = "archive-old-data"
415
+ status = "Enabled"
416
+
417
+ # Transition to cheaper storage classes
418
+ transition {
419
+ days = 30
420
+ storage_class = "STANDARD_IA" # Infrequent Access
421
+ }
422
+
423
+ transition {
424
+ days = 90
425
+ storage_class = "GLACIER_IR" # Instant Retrieval
426
+ }
427
+
428
+ transition {
429
+ days = 180
430
+ storage_class = "DEEP_ARCHIVE" # Cheapest
431
+ }
432
+
433
+ # Delete after retention period
434
+ expiration {
435
+ days = 365
436
+ }
437
+ }
438
+
439
+ rule {
440
+ id = "delete-incomplete-uploads"
441
+ status = "Enabled"
442
+
443
+ abort_incomplete_multipart_upload {
444
+ days_after_initiation = 7
445
+ }
446
+ }
447
+ }
448
+ ```
449
+
450
+ **Savings:**
451
+ ```
452
+ Standard: $0.023/GB/month
453
+ Standard-IA: $0.0125/GB/month (46% cheaper)
454
+ Glacier IR: $0.004/GB/month (83% cheaper)
455
+ Deep Archive: $0.00099/GB/month (96% cheaper)
456
+ ```
457
+
458
+ ### EBS Optimization
459
+
460
+ **Delete Unattached Volumes:**
461
+ ```bash
462
+ #!/bin/bash
463
+ # find-unused-ebs.sh
464
+
465
+ aws ec2 describe-volumes \
466
+ --filters Name=status,Values=available \
467
+ --query 'Volumes[*].[VolumeId,Size,VolumeType,CreateTime]' \
468
+ --output table
469
+
470
+ # Delete after verification
471
+ aws ec2 delete-volume --volume-id vol-xxxxx
472
+ ```
473
+
474
+ **Snapshot Cleanup:**
475
+ ```bash
476
+ # Delete snapshots older than 30 days
477
+ aws ec2 describe-snapshots --owner-ids self \
478
+ --query 'Snapshots[?StartTime<=`'$(date -d '30 days ago' -Iseconds)'`].[SnapshotId]' \
479
+ --output text | \
480
+ xargs -I {} aws ec2 delete-snapshot --snapshot-id {}
481
+ ```
482
+
483
+ ### Persistent Volume Cleanup
484
+
485
+ ```bash
486
+ # Find PVs not bound to PVC
487
+ kubectl get pv | grep Released
488
+
489
+ # Delete released PVs
490
+ kubectl delete pv <pv-name>
491
+ ```
492
+
493
+ ## Network Cost Optimization
494
+
495
+ ### Data Transfer Costs
496
+
497
+ **AWS Inter-Region Costs:**
498
+ ```
499
+ Same AZ: Free
500
+ Same Region, diff AZ: $0.01/GB
501
+ Cross-Region: $0.02/GB
502
+ Internet Egress: $0.09/GB (first 10TB)
503
+ ```
504
+
505
+ **Optimization Strategies:**
506
+ ```yaml
507
+ # 1. Use VPC endpoints (avoid internet gateway)
508
+ resource "aws_vpc_endpoint" "s3" {
509
+ vpc_id = aws_vpc.main.id
510
+ service_name = "com.amazonaws.us-east-1.s3"
511
+ }
512
+
513
+ # 2. Use CloudFront for static assets
514
+ resource "aws_cloudfront_distribution" "cdn" {
515
+ # CloudFront egress: $0.085/GB (cheaper than direct S3)
516
+ }
517
+
518
+ # 3. Enable S3 Transfer Acceleration (for uploads)
519
+ resource "aws_s3_bucket_accelerate_configuration" "data" {
520
+ bucket = aws_s3_bucket.data.id
521
+ status = "Enabled"
522
+ }
523
+ ```
524
+
525
+ ### NAT Gateway Costs
526
+
527
+ ```
528
+ NAT Gateway: $0.045/hour + $0.045/GB processed
529
+ NAT Instance: EC2 cost + $0.00/GB processed
530
+ VPC Endpoints: $0.01/hour + $0.01/GB (S3/DynamoDB free)
531
+ ```
532
+
533
+ **Cost Comparison (100GB/month):**
534
+ ```
535
+ NAT Gateway: $32.40 + $4.50 = $36.90/month
536
+ NAT Instance: ~$8 + $0 = $8/month (75% cheaper)
537
+ VPC Endpoint: $7.20 + $1.00 = $8.20/month (77% cheaper)
538
+ ```
539
+
540
+ ## Best Practices
541
+
542
+ ### 1. Implement Cost Awareness
543
+
544
+ Make cost data visible to teams during development.
545
+
546
+ ### 2. Set Budgets and Alerts
547
+
548
+ ```yaml
549
+ # AWS Budget
550
+ resource "aws_budgets_budget" "team_platform" {
551
+ name = "team-platform-monthly"
552
+ budget_type = "COST"
553
+ limit_amount = "10000"
554
+ limit_unit = "USD"
555
+ time_period_start = "2024-01-01_00:00"
556
+ time_unit = "MONTHLY"
557
+
558
+ notification {
559
+ comparison_operator = "GREATER_THAN"
560
+ threshold = 80
561
+ threshold_type = "PERCENTAGE"
562
+ notification_type = "ACTUAL"
563
+ subscriber_email_addresses = ["platform-team@company.com"]
564
+ }
565
+
566
+ cost_filters = {
567
+ TagKeyValue = "user:Team$platform"
568
+ }
569
+ }
570
+ ```
571
+
572
+ ### 3. Regular Right-Sizing Reviews
573
+
574
+ Schedule monthly reviews of resource utilization.
575
+
576
+ ### 4. Automate Cleanup
577
+
578
+ ```yaml
579
+ # CronJob to delete old resources
580
+ apiVersion: batch/v1
581
+ kind: CronJob
582
+ metadata:
583
+ name: cleanup-old-pvcs
584
+ spec:
585
+ schedule: "0 2 * * 0" # Weekly Sunday 2 AM
586
+ jobTemplate:
587
+ spec:
588
+ template:
589
+ spec:
590
+ containers:
591
+ - name: cleanup
592
+ image: bitnami/kubectl:latest
593
+ command:
594
+ - /bin/bash
595
+ - -c
596
+ - |
597
+ # Delete PVCs older than 30 days with label cleanup=enabled
598
+ kubectl get pvc -A \
599
+ -l cleanup=enabled \
600
+ -o json | \
601
+ jq -r '.items[] |
602
+ select(
603
+ (.metadata.creationTimestamp | fromdateiso8601) <
604
+ (now - 30*24*60*60)
605
+ ) |
606
+ "\(.metadata.namespace) \(.metadata.name)"' | \
607
+ while read ns name; do
608
+ kubectl delete pvc -n "$ns" "$name"
609
+ done
610
+ restartPolicy: OnFailure
611
+ ```
612
+
613
+ ### 5. Use Cost Allocation Tags
614
+
615
+ Mandatory tags for all resources.
616
+
617
+ ### 6. Optimize Development Environments
618
+
619
+ ```bash
620
+ # Stop dev/staging clusters overnight
621
+ 0 19 * * * kubectl scale deployment --all --replicas=0 -n development
622
+ 0 7 * * * kubectl scale deployment --all --replicas=1 -n development
623
+ ```
624
+
625
+ ### 7. Monitor Idle Resources
626
+
627
+ Alert on resources with <10% utilization for 7+ days.
628
+
629
+ ---
630
+
631
+ **Related Resources:**
632
+ - [resource-management.md](resource-management.md) - Resource optimization
633
+ - [multi-tenancy.md](multi-tenancy.md) - Cost allocation
634
+ - [infrastructure-standards.md](infrastructure-standards.md) - Tagging standards