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,602 @@
1
+ # Multi-Tenancy in Kubernetes
2
+
3
+ Namespace isolation, resource quotas, RBAC patterns, network policies, and cost allocation strategies for multi-tenant Kubernetes clusters.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Tenancy Models](#tenancy-models)
8
+ - [Namespace Isolation](#namespace-isolation)
9
+ - [Resource Quotas](#resource-quotas)
10
+ - [RBAC Patterns](#rbac-patterns)
11
+ - [Network Policies](#network-policies)
12
+ - [Cost Allocation](#cost-allocation)
13
+ - [Best Practices](#best-practices)
14
+
15
+ ## Tenancy Models
16
+
17
+ ### Namespace-per-Tenant
18
+
19
+ ```
20
+ Cluster
21
+ ├── tenant-acme/
22
+ │ ├── ResourceQuota
23
+ │ ├── NetworkPolicy
24
+ │ └── Workloads
25
+ ├── tenant-globex/
26
+ │ ├── ResourceQuota
27
+ │ ├── NetworkPolicy
28
+ │ └── Workloads
29
+ └── tenant-initech/
30
+ └── ...
31
+ ```
32
+
33
+ **Pros:** Cost-effective, shared resources, easier management
34
+ **Cons:** Less isolation, noisy neighbors possible
35
+
36
+ ### Cluster-per-Tenant
37
+
38
+ ```
39
+ Tenant A → Dedicated Cluster
40
+ Tenant B → Dedicated Cluster
41
+ Tenant C → Dedicated Cluster
42
+ ```
43
+
44
+ **Pros:** Strong isolation, dedicated resources
45
+ **Cons:** Higher cost, more operational overhead
46
+
47
+ ### Virtual Clusters
48
+
49
+ ```
50
+ Physical Cluster
51
+ ├── vcluster-tenant-a (virtual cluster)
52
+ ├── vcluster-tenant-b (virtual cluster)
53
+ └── vcluster-tenant-c (virtual cluster)
54
+ ```
55
+
56
+ **Pros:** Balance of isolation and cost
57
+ **Cons:** Additional complexity
58
+
59
+ ## Namespace Isolation
60
+
61
+ ### Namespace Template
62
+
63
+ ```yaml
64
+ apiVersion: v1
65
+ kind: Namespace
66
+ metadata:
67
+ name: tenant-acme
68
+ labels:
69
+ tenant: acme
70
+ environment: production
71
+ cost-center: "12345"
72
+ annotations:
73
+ owner: "team-acme@company.com"
74
+ description: "ACME Corp production namespace"
75
+ ```
76
+
77
+ ### LimitRange (Per-Pod Defaults)
78
+
79
+ ```yaml
80
+ apiVersion: v1
81
+ kind: LimitRange
82
+ metadata:
83
+ name: tenant-limits
84
+ namespace: tenant-acme
85
+ spec:
86
+ limits:
87
+ # Container defaults
88
+ - type: Container
89
+ default:
90
+ cpu: 500m
91
+ memory: 512Mi
92
+ defaultRequest:
93
+ cpu: 100m
94
+ memory: 128Mi
95
+ max:
96
+ cpu: 2000m
97
+ memory: 4Gi
98
+ min:
99
+ cpu: 50m
100
+ memory: 64Mi
101
+
102
+ # Pod limits
103
+ - type: Pod
104
+ max:
105
+ cpu: 4000m
106
+ memory: 8Gi
107
+
108
+ # PVC limits
109
+ - type: PersistentVolumeClaim
110
+ max:
111
+ storage: 100Gi
112
+ min:
113
+ storage: 1Gi
114
+ ```
115
+
116
+ ## Resource Quotas
117
+
118
+ ### Comprehensive Quota
119
+
120
+ ```yaml
121
+ apiVersion: v1
122
+ kind: ResourceQuota
123
+ metadata:
124
+ name: tenant-acme-quota
125
+ namespace: tenant-acme
126
+ spec:
127
+ hard:
128
+ # Compute
129
+ requests.cpu: "100"
130
+ requests.memory: 100Gi
131
+ limits.cpu: "200"
132
+ limits.memory: 200Gi
133
+
134
+ # Storage
135
+ requests.storage: 1Ti
136
+ persistentvolumeclaims: "50"
137
+
138
+ # Objects
139
+ pods: "100"
140
+ services: "50"
141
+ configmaps: "100"
142
+ secrets: "100"
143
+ replicationcontrollers: "20"
144
+ resourcequotas: "1"
145
+ services.loadbalancers: "5"
146
+ services.nodeports: "10"
147
+
148
+ # Specific storage classes
149
+ requests.storage: 500Gi
150
+ gold.storageclass.storage.k8s.io/requests.storage: 100Gi
151
+ silver.storageclass.storage.k8s.io/requests.storage: 400Gi
152
+ ```
153
+
154
+ ### Priority Class Quotas
155
+
156
+ ```yaml
157
+ # Define priority classes
158
+ apiVersion: scheduling.k8s.io/v1
159
+ kind: PriorityClass
160
+ metadata:
161
+ name: tenant-high-priority
162
+ value: 1000
163
+ globalDefault: false
164
+ description: "High priority for critical tenant workloads"
165
+
166
+ ---
167
+ apiVersion: scheduling.k8s.io/v1
168
+ kind: PriorityClass
169
+ metadata:
170
+ name: tenant-low-priority
171
+ value: 100
172
+ globalDefault: true
173
+ description: "Low priority for batch workloads"
174
+
175
+ ---
176
+ # Quota per priority
177
+ apiVersion: v1
178
+ kind: ResourceQuota
179
+ metadata:
180
+ name: high-priority-quota
181
+ namespace: tenant-acme
182
+ spec:
183
+ hard:
184
+ pods: "20"
185
+ requests.cpu: "50"
186
+ requests.memory: 50Gi
187
+ scopeSelector:
188
+ matchExpressions:
189
+ - operator: In
190
+ scopeName: PriorityClass
191
+ values: ["tenant-high-priority"]
192
+ ```
193
+
194
+ ## RBAC Patterns
195
+
196
+ ### Tenant Admin Role
197
+
198
+ ```yaml
199
+ apiVersion: rbac.authorization.k8s.io/v1
200
+ kind: Role
201
+ metadata:
202
+ name: tenant-admin
203
+ namespace: tenant-acme
204
+ rules:
205
+ # Full access to most resources
206
+ - apiGroups: ["", "apps", "batch"]
207
+ resources:
208
+ - pods
209
+ - pods/log
210
+ - pods/exec
211
+ - services
212
+ - configmaps
213
+ - secrets
214
+ - deployments
215
+ - statefulsets
216
+ - daemonsets
217
+ - jobs
218
+ - cronjobs
219
+ verbs: ["*"]
220
+
221
+ # Read-only access to resource quotas
222
+ - apiGroups: [""]
223
+ resources:
224
+ - resourcequotas
225
+ - limitranges
226
+ verbs: ["get", "list"]
227
+
228
+ # No access to namespace itself
229
+ # No access to RBAC resources
230
+ ```
231
+
232
+ ### Tenant Developer Role
233
+
234
+ ```yaml
235
+ apiVersion: rbac.authorization.k8s.io/v1
236
+ kind: Role
237
+ metadata:
238
+ name: tenant-developer
239
+ namespace: tenant-acme
240
+ rules:
241
+ # Read-write pods
242
+ - apiGroups: [""]
243
+ resources: ["pods", "pods/log"]
244
+ verbs: ["get", "list", "watch", "create", "delete"]
245
+
246
+ # Read-only deployments, services
247
+ - apiGroups: ["apps"]
248
+ resources: ["deployments", "statefulsets"]
249
+ verbs: ["get", "list", "watch"]
250
+
251
+ - apiGroups: [""]
252
+ resources: ["services", "configmaps"]
253
+ verbs: ["get", "list", "watch"]
254
+
255
+ # No secrets access
256
+ ```
257
+
258
+ ### Tenant Viewer Role
259
+
260
+ ```yaml
261
+ apiVersion: rbac.authorization.k8s.io/v1
262
+ kind: Role
263
+ metadata:
264
+ name: tenant-viewer
265
+ namespace: tenant-acme
266
+ rules:
267
+ - apiGroups: ["", "apps", "batch"]
268
+ resources:
269
+ - pods
270
+ - pods/log
271
+ - services
272
+ - deployments
273
+ - statefulsets
274
+ - jobs
275
+ verbs: ["get", "list", "watch"]
276
+ ```
277
+
278
+ ### RoleBindings
279
+
280
+ ```yaml
281
+ # Bind tenant admin to team leads
282
+ apiVersion: rbac.authorization.k8s.io/v1
283
+ kind: RoleBinding
284
+ metadata:
285
+ name: tenant-admin-binding
286
+ namespace: tenant-acme
287
+ subjects:
288
+ - kind: Group
289
+ name: team-acme-leads
290
+ apiGroup: rbac.authorization.k8s.io
291
+ roleRef:
292
+ kind: Role
293
+ name: tenant-admin
294
+ apiGroup: rbac.authorization.k8s.io
295
+
296
+ ---
297
+ # Bind developer role to team members
298
+ apiVersion: rbac.authorization.k8s.io/v1
299
+ kind: RoleBinding
300
+ metadata:
301
+ name: tenant-developer-binding
302
+ namespace: tenant-acme
303
+ subjects:
304
+ - kind: Group
305
+ name: team-acme-developers
306
+ apiGroup: rbac.authorization.k8s.io
307
+ roleRef:
308
+ kind: Role
309
+ name: tenant-developer
310
+ apiGroup: rbac.authorization.k8s.io
311
+ ```
312
+
313
+ ### Service Account for CI/CD
314
+
315
+ ```yaml
316
+ apiVersion: v1
317
+ kind: ServiceAccount
318
+ metadata:
319
+ name: ci-deployer
320
+ namespace: tenant-acme
321
+
322
+ ---
323
+ apiVersion: rbac.authorization.k8s.io/v1
324
+ kind: Role
325
+ metadata:
326
+ name: ci-deployer
327
+ namespace: tenant-acme
328
+ rules:
329
+ - apiGroups: ["apps"]
330
+ resources: ["deployments"]
331
+ verbs: ["get", "list", "patch", "update"]
332
+
333
+ - apiGroups: [""]
334
+ resources: ["pods"]
335
+ verbs: ["get", "list"]
336
+
337
+ ---
338
+ apiVersion: rbac.authorization.k8s.io/v1
339
+ kind: RoleBinding
340
+ metadata:
341
+ name: ci-deployer-binding
342
+ namespace: tenant-acme
343
+ subjects:
344
+ - kind: ServiceAccount
345
+ name: ci-deployer
346
+ namespace: tenant-acme
347
+ roleRef:
348
+ kind: Role
349
+ name: ci-deployer
350
+ apiGroup: rbac.authorization.k8s.io
351
+ ```
352
+
353
+ ## Network Policies
354
+
355
+ ### Default Deny All
356
+
357
+ ```yaml
358
+ apiVersion: networking.k8s.io/v1
359
+ kind: NetworkPolicy
360
+ metadata:
361
+ name: default-deny-all
362
+ namespace: tenant-acme
363
+ spec:
364
+ podSelector: {}
365
+ policyTypes:
366
+ - Ingress
367
+ - Egress
368
+ ```
369
+
370
+ ### Allow DNS
371
+
372
+ ```yaml
373
+ apiVersion: networking.k8s.io/v1
374
+ kind: NetworkPolicy
375
+ metadata:
376
+ name: allow-dns
377
+ namespace: tenant-acme
378
+ spec:
379
+ podSelector: {}
380
+ policyTypes:
381
+ - Egress
382
+ egress:
383
+ # Allow DNS
384
+ - to:
385
+ - namespaceSelector:
386
+ matchLabels:
387
+ name: kube-system
388
+ ports:
389
+ - protocol: UDP
390
+ port: 53
391
+ ```
392
+
393
+ ### Allow Within Namespace
394
+
395
+ ```yaml
396
+ apiVersion: networking.k8s.io/v1
397
+ kind: NetworkPolicy
398
+ metadata:
399
+ name: allow-same-namespace
400
+ namespace: tenant-acme
401
+ spec:
402
+ podSelector: {}
403
+ policyTypes:
404
+ - Ingress
405
+ ingress:
406
+ - from:
407
+ - podSelector: {}
408
+ ```
409
+
410
+ ### Allow From Ingress
411
+
412
+ ```yaml
413
+ apiVersion: networking.k8s.io/v1
414
+ kind: NetworkPolicy
415
+ metadata:
416
+ name: allow-from-ingress
417
+ namespace: tenant-acme
418
+ spec:
419
+ podSelector:
420
+ matchLabels:
421
+ expose: "true"
422
+ policyTypes:
423
+ - Ingress
424
+ ingress:
425
+ - from:
426
+ - namespaceSelector:
427
+ matchLabels:
428
+ name: ingress-nginx
429
+ ports:
430
+ - protocol: TCP
431
+ port: 8080
432
+ ```
433
+
434
+ ### Cross-Tenant Communication
435
+
436
+ ```yaml
437
+ apiVersion: networking.k8s.io/v1
438
+ kind: NetworkPolicy
439
+ metadata:
440
+ name: allow-from-tenant-globex
441
+ namespace: tenant-acme
442
+ spec:
443
+ podSelector:
444
+ matchLabels:
445
+ app: shared-api
446
+ policyTypes:
447
+ - Ingress
448
+ ingress:
449
+ - from:
450
+ - namespaceSelector:
451
+ matchLabels:
452
+ tenant: globex
453
+ - podSelector:
454
+ matchLabels:
455
+ app: client-service
456
+ ports:
457
+ - protocol: TCP
458
+ port: 8080
459
+ ```
460
+
461
+ ## Cost Allocation
462
+
463
+ ### Labeling Strategy
464
+
465
+ ```yaml
466
+ apiVersion: v1
467
+ kind: Namespace
468
+ metadata:
469
+ name: tenant-acme
470
+ labels:
471
+ tenant: acme
472
+ cost-center: "12345"
473
+ department: "engineering"
474
+ environment: "production"
475
+ region: "us-east-1"
476
+ ```
477
+
478
+ **Apply to all resources:**
479
+ ```yaml
480
+ apiVersion: apps/v1
481
+ kind: Deployment
482
+ metadata:
483
+ name: api-service
484
+ namespace: tenant-acme
485
+ labels:
486
+ tenant: acme
487
+ cost-center: "12345"
488
+ department: "engineering"
489
+ environment: "production"
490
+ application: "api-service"
491
+ spec:
492
+ template:
493
+ metadata:
494
+ labels:
495
+ tenant: acme
496
+ cost-center: "12345"
497
+ department: "engineering"
498
+ ```
499
+
500
+ ### Cost Monitoring
501
+
502
+ **Prometheus Query:**
503
+ ```promql
504
+ # CPU cost per tenant
505
+ sum(
506
+ rate(container_cpu_usage_seconds_total[5m])
507
+ * on(namespace) group_left(tenant)
508
+ kube_namespace_labels
509
+ ) by (tenant)
510
+
511
+ # Memory cost per tenant
512
+ sum(
513
+ container_memory_working_set_bytes
514
+ * on(namespace) group_left(tenant)
515
+ kube_namespace_labels
516
+ ) by (tenant)
517
+
518
+ # Storage cost per tenant
519
+ sum(
520
+ kube_persistentvolumeclaim_resource_requests_storage_bytes
521
+ * on(namespace) group_left(tenant)
522
+ kube_namespace_labels
523
+ ) by (tenant)
524
+ ```
525
+
526
+ ### Kubecost Integration
527
+
528
+ ```yaml
529
+ # Install Kubecost
530
+ helm repo add kubecost https://kubecost.github.io/cost-analyzer/
531
+ helm install kubecost kubecost/cost-analyzer \
532
+ --namespace kubecost \
533
+ --create-namespace \
534
+ --set kubecostToken="YOUR_TOKEN"
535
+
536
+ # Query costs by tenant
537
+ # http://localhost:9090/model/allocation
538
+ # ?window=7d
539
+ # &aggregate=namespace
540
+ # &filterNamespaces=tenant-*
541
+ ```
542
+
543
+ ### Chargeback Report
544
+
545
+ ```bash
546
+ #!/bin/bash
547
+ # generate-tenant-report.sh
548
+
549
+ TENANT=$1
550
+ MONTH=$(date +%Y-%m)
551
+
552
+ kubectl cost \
553
+ --namespace "tenant-${TENANT}" \
554
+ --window "month" \
555
+ --show-cpu \
556
+ --show-memory \
557
+ --show-storage \
558
+ --show-network \
559
+ > "reports/${TENANT}-${MONTH}.csv"
560
+ ```
561
+
562
+ ## Best Practices
563
+
564
+ ### 1. Always Set Resource Quotas
565
+
566
+ Prevent resource exhaustion and enable cost allocation.
567
+
568
+ ### 2. Use LimitRanges
569
+
570
+ Ensure all pods have resource requests/limits.
571
+
572
+ ### 3. Default Deny Network Policies
573
+
574
+ Start with deny-all, explicitly allow what's needed.
575
+
576
+ ### 4. Consistent Labeling
577
+
578
+ Use labels for cost allocation and organization.
579
+
580
+ ### 5. Separate Environments
581
+
582
+ Consider different clusters or strict namespace isolation for prod vs dev.
583
+
584
+ ### 6. Regular Audits
585
+
586
+ Review RBAC, quotas, and network policies regularly.
587
+
588
+ ### 7. Document Tenant Onboarding
589
+
590
+ Standardize tenant provisioning with automation.
591
+
592
+ ### 8. Monitor Quota Usage
593
+
594
+ Alert when tenants approach quota limits.
595
+
596
+ ---
597
+
598
+ **Related Resources:**
599
+ - [resource-management.md](resource-management.md) - Resource optimization
600
+ - [cost-optimization.md](cost-optimization.md) - FinOps practices
601
+ - [platform-security.md](platform-security.md) - Security best practices
602
+ - [infrastructure-standards.md](infrastructure-standards.md) - Naming and tagging