blockmine 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/.claude/agents/README.md +469 -0
  2. package/.claude/agents/auth-route-debugger.md +118 -0
  3. package/.claude/agents/auth-route-tester.md +93 -0
  4. package/.claude/agents/auto-error-resolver.md +97 -0
  5. package/.claude/agents/build-optimizer.md +236 -0
  6. package/.claude/agents/code-architecture-reviewer.md +83 -0
  7. package/.claude/agents/code-refactor-master.md +94 -0
  8. package/.claude/agents/cost-optimizer.md +134 -0
  9. package/.claude/agents/deployment-orchestrator.md +113 -0
  10. package/.claude/agents/documentation-architect.md +82 -0
  11. package/.claude/agents/frontend-error-fixer.md +77 -0
  12. package/.claude/agents/iac-code-generator.md +71 -0
  13. package/.claude/agents/incident-responder.md +346 -0
  14. package/.claude/agents/infrastructure-architect.md +31 -0
  15. package/.claude/agents/kubernetes-specialist.md +56 -0
  16. package/.claude/agents/migration-planner.md +181 -0
  17. package/.claude/agents/network-architect.md +196 -0
  18. package/.claude/agents/plan-reviewer.md +52 -0
  19. package/.claude/agents/refactor-planner.md +63 -0
  20. package/.claude/agents/security-scanner.md +102 -0
  21. package/.claude/agents/web-research-specialist.md +78 -0
  22. package/.claude/commands/cost-analysis.md +315 -0
  23. package/.claude/commands/dev-docs-update.md +55 -0
  24. package/.claude/commands/dev-docs.md +51 -0
  25. package/.claude/commands/incident-debug.md +247 -0
  26. package/.claude/commands/infra-plan.md +81 -0
  27. package/.claude/commands/migration-plan.md +478 -0
  28. package/.claude/commands/route-research-for-testing.md +37 -0
  29. package/.claude/commands/security-review.md +66 -0
  30. package/.claude/hooks/CONFIG.md +448 -0
  31. package/.claude/hooks/README.md +163 -0
  32. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
  33. package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
  34. package/.claude/hooks/add-skill-activation-banners.ts +132 -0
  35. package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
  36. package/.claude/hooks/error-handling-reminder.sh +12 -0
  37. package/.claude/hooks/error-handling-reminder.ts +222 -0
  38. package/.claude/hooks/k8s-manifest-validator.sh +56 -0
  39. package/.claude/hooks/package-lock.json +556 -0
  40. package/.claude/hooks/package.json +16 -0
  41. package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
  42. package/.claude/hooks/post-tool-use-tracker.sh +183 -0
  43. package/.claude/hooks/security-policy-check.sh +247 -0
  44. package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
  45. package/.claude/hooks/skill-activation-prompt.sh +10 -0
  46. package/.claude/hooks/skill-activation-prompt.ts +141 -0
  47. package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
  48. package/.claude/hooks/terraform-validator.sh +53 -0
  49. package/.claude/hooks/test-input.json +7 -0
  50. package/.claude/hooks/test-skill-activation.ts +427 -0
  51. package/.claude/hooks/trigger-build-resolver.sh +79 -0
  52. package/.claude/hooks/tsc-check.sh +173 -0
  53. package/.claude/hooks/tsconfig.json +19 -0
  54. package/.claude/settings.json +55 -0
  55. package/.claude/settings.local.json +27 -14
  56. package/.claude/skills/README.md +507 -0
  57. package/.claude/skills/api-engineering/SKILL.md +63 -0
  58. package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
  59. package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
  60. package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
  61. package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
  62. package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
  63. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  64. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  65. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  66. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  67. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  68. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  69. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  70. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  71. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  72. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  73. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  74. package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
  75. package/.claude/skills/build-engineering/SKILL.md +431 -0
  76. package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
  77. package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
  78. package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
  79. package/.claude/skills/build-engineering/resources/build-security.md +95 -0
  80. package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
  81. package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
  82. package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
  83. package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
  84. package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
  85. package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
  86. package/.claude/skills/cloud-engineering/SKILL.md +675 -0
  87. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
  88. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
  89. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
  90. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
  91. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
  92. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
  93. package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
  94. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
  95. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
  96. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
  97. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
  98. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
  99. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
  100. package/.claude/skills/cybersecurity/SKILL.md +409 -0
  101. package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
  102. package/.claude/skills/database-engineering/SKILL.md +61 -0
  103. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
  104. package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
  105. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
  106. package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
  107. package/.claude/skills/devsecops/SKILL.md +374 -0
  108. package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
  109. package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
  110. package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
  111. package/.claude/skills/devsecops/resources/container-security.md +915 -0
  112. package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
  113. package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
  114. package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
  115. package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
  116. package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
  117. package/.claude/skills/devsecops/resources/security-testing.md +203 -0
  118. package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
  119. package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
  120. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
  121. package/.claude/skills/documentation-as-code/SKILL.md +323 -0
  122. package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
  123. package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
  124. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
  125. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
  126. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
  127. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
  128. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
  129. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
  130. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
  131. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
  132. package/.claude/skills/engineering-management/SKILL.md +356 -0
  133. package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
  134. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
  135. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
  136. package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
  137. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
  138. package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
  139. package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
  140. package/.claude/skills/error-tracking/SKILL.md +379 -0
  141. package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
  142. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
  143. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
  144. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
  145. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
  146. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
  147. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
  148. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
  149. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
  150. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
  151. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
  152. package/.claude/skills/general-it-engineering/SKILL.md +393 -0
  153. package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
  154. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
  155. package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
  156. package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
  157. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
  158. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
  159. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
  160. package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
  161. package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
  162. package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
  163. package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
  164. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
  165. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
  166. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
  167. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
  168. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
  169. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
  170. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
  171. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
  172. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
  173. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
  174. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
  175. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
  176. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
  177. package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
  178. package/.claude/skills/network-engineering/SKILL.md +385 -0
  179. package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
  180. package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
  181. package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
  182. package/.claude/skills/network-engineering/resources/network-security.md +921 -0
  183. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
  184. package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
  185. package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
  186. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
  187. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
  188. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
  189. package/.claude/skills/observability-engineering/SKILL.md +101 -0
  190. package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
  191. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
  192. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
  193. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
  194. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
  195. package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
  196. package/.claude/skills/platform-engineering/SKILL.md +555 -0
  197. package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
  198. package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
  199. package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
  200. package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
  201. package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
  202. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
  203. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
  204. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
  205. package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
  206. package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
  207. package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
  208. package/.claude/skills/release-engineering/SKILL.md +393 -0
  209. package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
  210. package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
  211. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
  212. package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
  213. package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
  214. package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
  215. package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
  216. package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
  217. package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
  218. package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
  219. package/.claude/skills/route-tester/SKILL.md +392 -0
  220. package/.claude/skills/skill-developer/ADVANCED.md +197 -0
  221. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
  222. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
  223. package/.claude/skills/skill-developer/SKILL.md +430 -0
  224. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
  225. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
  226. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
  227. package/.claude/skills/skill-rules.json +2940 -0
  228. package/.claude/skills/sre/SKILL.md +464 -0
  229. package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
  230. package/.claude/skills/sre/resources/capacity-planning.md +226 -0
  231. package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
  232. package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
  233. package/.claude/skills/sre/resources/incident-management.md +436 -0
  234. package/.claude/skills/sre/resources/observability-stack.md +240 -0
  235. package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
  236. package/.claude/skills/sre/resources/performance-optimization.md +108 -0
  237. package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
  238. package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
  239. package/.claude/skills/sre/resources/toil-reduction.md +145 -0
  240. package/.claude/skills/systems-engineering/SKILL.md +648 -0
  241. package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
  242. package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
  243. package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
  244. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
  245. package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
  246. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
  247. package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
  248. package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
  249. package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
  250. package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
  251. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
  252. package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
  253. package/.claude/skills/technical-leadership/SKILL.md +728 -0
  254. package/CHANGELOG.md +90 -54
  255. package/README.md +94 -0
  256. package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
  257. package/backend/jest.config.js +59 -0
  258. package/backend/package-lock.json +6129 -0
  259. package/backend/package.json +16 -4
  260. package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
  261. package/backend/prisma/schema.prisma +33 -0
  262. package/backend/src/__tests__/core/DependencyService.test.js +336 -0
  263. package/backend/src/__tests__/core/UserService.test.js +875 -0
  264. package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
  265. package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
  266. package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
  267. package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
  268. package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
  269. package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
  270. package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
  271. package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
  272. package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
  273. package/backend/src/__tests__/secretsFilter.test.js +425 -0
  274. package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
  275. package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
  276. package/backend/src/__tests__/services/CacheManager.test.js +125 -0
  277. package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
  278. package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
  279. package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
  280. package/backend/src/__tests__/setup.js +25 -0
  281. package/backend/src/api/routes/apiKeys.js +181 -0
  282. package/backend/src/api/routes/bots.js +49 -7
  283. package/backend/src/api/routes/plugins.js +2 -1
  284. package/backend/src/api/routes/system.js +174 -0
  285. package/backend/src/container.js +82 -0
  286. package/backend/src/core/BotManager.js +142 -871
  287. package/backend/src/core/BotManager.old.js +1093 -0
  288. package/backend/src/core/BotProcess.js +1092 -858
  289. package/backend/src/core/EventGraphManager.js +280 -198
  290. package/backend/src/core/GraphExecutionEngine.js +321 -325
  291. package/backend/src/core/MessageQueue.js +27 -6
  292. package/backend/src/core/NodeRegistry.js +37 -1134
  293. package/backend/src/core/PluginManager.js +62 -12
  294. package/backend/src/core/PrismaService.js +32 -0
  295. package/backend/src/core/UserService.js +3 -3
  296. package/backend/src/core/__tests__/PrismaService.test.js +24 -0
  297. package/backend/src/core/commands/README.md +305 -0
  298. package/backend/src/core/commands/dev.js +13 -7
  299. package/backend/src/core/commands/ping.js +10 -4
  300. package/backend/src/core/commands/whois.js +63 -0
  301. package/backend/src/core/config/validation.js +27 -0
  302. package/backend/src/core/constants/graphTypes.js +21 -0
  303. package/backend/src/core/node-registries/actions.js +132 -0
  304. package/backend/src/core/node-registries/arrays.js +137 -0
  305. package/backend/src/core/node-registries/bot.js +23 -0
  306. package/backend/src/core/node-registries/data.js +290 -0
  307. package/backend/src/core/node-registries/debug.js +26 -0
  308. package/backend/src/core/node-registries/events.js +187 -0
  309. package/backend/src/core/node-registries/flow.js +139 -0
  310. package/backend/src/core/node-registries/logic.js +45 -0
  311. package/backend/src/core/node-registries/math.js +42 -0
  312. package/backend/src/core/node-registries/objects.js +98 -0
  313. package/backend/src/core/node-registries/strings.js +153 -0
  314. package/backend/src/core/node-registries/time.js +113 -0
  315. package/backend/src/core/node-registries/users.js +79 -0
  316. package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
  317. package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
  318. package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
  319. package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
  320. package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
  321. package/backend/src/core/nodes/arrays/get_next.js +35 -0
  322. package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
  323. package/backend/src/core/nodes/data/datetime_literal.js +27 -0
  324. package/backend/src/core/nodes/data/entity_info.js +69 -0
  325. package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
  326. package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
  327. package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
  328. package/backend/src/core/nodes/data/type_check.js +53 -0
  329. package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
  330. package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
  331. package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
  332. package/backend/src/core/nodes/flow/delay.js +43 -0
  333. package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
  334. package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
  335. package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
  336. package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
  337. package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
  338. package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
  339. package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
  340. package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
  341. package/backend/src/core/nodes/time/add.js +33 -0
  342. package/backend/src/core/nodes/time/compare.js +35 -0
  343. package/backend/src/core/nodes/time/diff.js +29 -0
  344. package/backend/src/core/nodes/time/format.js +32 -0
  345. package/backend/src/core/nodes/time/now.js +18 -0
  346. package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
  347. package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
  348. package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
  349. package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
  350. package/backend/src/core/services/BotLifecycleService.js +596 -0
  351. package/backend/src/core/services/BotProcessManager.js +163 -0
  352. package/backend/src/core/services/CacheManager.js +111 -0
  353. package/backend/src/core/services/CommandExecutionService.js +351 -0
  354. package/backend/src/core/services/ResourceMonitorService.js +90 -0
  355. package/backend/src/core/services/TelemetryService.js +124 -0
  356. package/backend/src/core/services/ValidationService.js +132 -0
  357. package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
  358. package/backend/src/core/services.js +20 -5
  359. package/backend/src/core/system/CommandContext.js +84 -0
  360. package/backend/src/core/system/Transport.js +78 -0
  361. package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
  362. package/backend/src/core/utils/jsonParser.js +18 -0
  363. package/backend/src/core/utils/secretsFilter.js +262 -0
  364. package/backend/src/core/utils/variableParser.js +89 -0
  365. package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
  366. package/backend/src/core/validation/nodeSchemas.js +112 -0
  367. package/backend/src/lib/prisma.js +2 -4
  368. package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
  369. package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
  370. package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
  371. package/backend/src/real-time/botApi/handlers/index.js +43 -0
  372. package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
  373. package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
  374. package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
  375. package/backend/src/real-time/botApi/index.js +40 -0
  376. package/backend/src/real-time/botApi/middleware.js +79 -0
  377. package/backend/src/real-time/botApi/utils.js +54 -0
  378. package/backend/src/real-time/socketHandler.js +6 -2
  379. package/backend/src/repositories/BaseRepository.js +43 -0
  380. package/backend/src/repositories/BotRepository.js +42 -0
  381. package/backend/src/repositories/CommandRepository.js +53 -0
  382. package/backend/src/repositories/EventGraphRepository.js +40 -0
  383. package/backend/src/repositories/GroupRepository.js +69 -0
  384. package/backend/src/repositories/PermissionRepository.js +48 -0
  385. package/backend/src/repositories/PluginRepository.js +42 -0
  386. package/backend/src/repositories/ServerRepository.js +27 -0
  387. package/backend/src/repositories/UserRepository.js +48 -0
  388. package/backend/src/server.js +3 -0
  389. package/backend/src/test-refactor.js +85 -0
  390. package/frontend/dist/assets/index-CfTo92bP.css +1 -0
  391. package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
  392. package/frontend/dist/index.html +2 -2
  393. package/frontend/package.json +0 -5
  394. package/package.json +2 -1
  395. package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
  396. package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
  397. package/nul +0 -0
  398. /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
  399. /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
  400. /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
  401. /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
  402. /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
  403. /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
  404. /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
  405. /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
  406. /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
  407. /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
  408. /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
  409. /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
  410. /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
  411. /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
  412. /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
  413. /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
  414. /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
  415. /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
  416. /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
  417. /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
  418. /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
  419. /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
  420. /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
  421. /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
  422. /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
  423. /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
  424. /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
  425. /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
  426. /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
  427. /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
  428. /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
  429. /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
  430. /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
  431. /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
  432. /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
  433. /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
@@ -0,0 +1,670 @@
1
+ # Developer Platforms & Self-Service
2
+
3
+ Internal developer portals, self-service platforms, service catalogs, and developer experience optimization for platform engineering.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Overview](#overview)
8
+ - [Backstage Platform](#backstage-platform)
9
+ - [Service Catalogs](#service-catalogs)
10
+ - [Self-Service Workflows](#self-service-workflows)
11
+ - [Golden Paths](#golden-paths)
12
+ - [Developer Experience](#developer-experience)
13
+ - [Platform APIs](#platform-apis)
14
+ - [Best Practices](#best-practices)
15
+
16
+ ## Overview
17
+
18
+ ### Platform Engineering Goals
19
+
20
+ ```
21
+ Traditional Ops Platform Engineering
22
+ ────────────── ────────────────────
23
+ Ticket System → Self-Service Portal
24
+ Manual Processes → Automated Workflows
25
+ Tribal Knowledge → Documentation & Templates
26
+ Waiting Days → Minutes to Deploy
27
+ ```
28
+
29
+ ### Platform Layers
30
+
31
+ ```
32
+ ┌─────────────────────────────────────┐
33
+ │ Developer Portal (UI/CLI) │ ← Self-service interface
34
+ ├─────────────────────────────────────┤
35
+ │ Service Catalog │ ← Templates & Standards
36
+ ├─────────────────────────────────────┤
37
+ │ Platform APIs │ ← Automation layer
38
+ ├─────────────────────────────────────┤
39
+ │ Infrastructure & Services │ ← Kubernetes, Cloud, etc.
40
+ └─────────────────────────────────────┘
41
+ ```
42
+
43
+ ## Backstage Platform
44
+
45
+ ### Installation
46
+
47
+ ```yaml
48
+ # kubernetes/backstage-deployment.yaml
49
+ apiVersion: apps/v1
50
+ kind: Deployment
51
+ metadata:
52
+ name: backstage
53
+ namespace: platform
54
+ spec:
55
+ replicas: 2
56
+ selector:
57
+ matchLabels:
58
+ app: backstage
59
+ template:
60
+ metadata:
61
+ labels:
62
+ app: backstage
63
+ spec:
64
+ containers:
65
+ - name: backstage
66
+ image: backstage:latest
67
+ ports:
68
+ - containerPort: 7007
69
+ env:
70
+ - name: POSTGRES_HOST
71
+ value: postgres.platform.svc.cluster.local
72
+ - name: POSTGRES_PORT
73
+ value: "5432"
74
+ - name: POSTGRES_USER
75
+ valueFrom:
76
+ secretKeyRef:
77
+ name: backstage-db
78
+ key: username
79
+ - name: POSTGRES_PASSWORD
80
+ valueFrom:
81
+ secretKeyRef:
82
+ name: backstage-db
83
+ key: password
84
+ ```
85
+
86
+ ### App Configuration
87
+
88
+ ```yaml
89
+ # app-config.yaml
90
+ app:
91
+ title: Platform Portal
92
+ baseUrl: https://platform.company.com
93
+
94
+ organization:
95
+ name: ACME Corp
96
+
97
+ backend:
98
+ baseUrl: https://platform.company.com
99
+ listen:
100
+ port: 7007
101
+ database:
102
+ client: pg
103
+ connection:
104
+ host: ${POSTGRES_HOST}
105
+ port: ${POSTGRES_PORT}
106
+ user: ${POSTGRES_USER}
107
+ password: ${POSTGRES_PASSWORD}
108
+
109
+ integrations:
110
+ github:
111
+ - host: github.com
112
+ token: ${GITHUB_TOKEN}
113
+
114
+ catalog:
115
+ import:
116
+ entityFilename: catalog-info.yaml
117
+ rules:
118
+ - allow: [Component, System, API, Resource, Location]
119
+ locations:
120
+ # Register all catalog files
121
+ - type: url
122
+ target: https://github.com/company/platform/blob/main/catalog/*.yaml
123
+ rules:
124
+ - allow: [Location]
125
+
126
+ # Auto-discover services
127
+ - type: url
128
+ target: https://github.com/company/services/blob/main/*/catalog-info.yaml
129
+ rules:
130
+ - allow: [Component, API]
131
+
132
+ techdocs:
133
+ builder: 'local'
134
+ generator:
135
+ runIn: 'docker'
136
+ publisher:
137
+ type: 'awsS3'
138
+ awsS3:
139
+ bucketName: 'company-techdocs'
140
+ region: 'us-east-1'
141
+ ```
142
+
143
+ ## Service Catalogs
144
+
145
+ ### Component Definition
146
+
147
+ ```yaml
148
+ # catalog-info.yaml
149
+ apiVersion: backstage.io/v1alpha1
150
+ kind: Component
151
+ metadata:
152
+ name: api-service
153
+ description: Customer API microservice
154
+ annotations:
155
+ github.com/project-slug: company/api-service
156
+ backstage.io/techdocs-ref: dir:.
157
+ pagerduty.com/integration-key: ${PAGERDUTY_KEY}
158
+ tags:
159
+ - api
160
+ - nodejs
161
+ - typescript
162
+ - production
163
+ links:
164
+ - url: https://api.company.com
165
+ title: Production API
166
+ icon: web
167
+ - url: https://grafana.company.com/d/api-service
168
+ title: Metrics Dashboard
169
+ icon: dashboard
170
+ spec:
171
+ type: service
172
+ lifecycle: production
173
+ owner: team-platform
174
+ system: customer-platform
175
+
176
+ providesApis:
177
+ - customer-api
178
+
179
+ consumesApis:
180
+ - auth-api
181
+ - notification-api
182
+
183
+ dependsOn:
184
+ - resource:postgres-db
185
+ - resource:redis-cache
186
+ - component:auth-service
187
+ ```
188
+
189
+ ### API Definition
190
+
191
+ ```yaml
192
+ apiVersion: backstage.io/v1alpha1
193
+ kind: API
194
+ metadata:
195
+ name: customer-api
196
+ description: Customer management REST API
197
+ spec:
198
+ type: openapi
199
+ lifecycle: production
200
+ owner: team-platform
201
+ system: customer-platform
202
+ definition: |
203
+ openapi: 3.0.0
204
+ info:
205
+ title: Customer API
206
+ version: 1.0.0
207
+ paths:
208
+ /customers:
209
+ get:
210
+ summary: List customers
211
+ responses:
212
+ '200':
213
+ description: Success
214
+ ```
215
+
216
+ ### Resource Definition
217
+
218
+ ```yaml
219
+ apiVersion: backstage.io/v1alpha1
220
+ kind: Resource
221
+ metadata:
222
+ name: postgres-db
223
+ description: PostgreSQL database for customer data
224
+ spec:
225
+ type: database
226
+ owner: team-platform
227
+ system: customer-platform
228
+ dependsOn:
229
+ - component:postgres-operator
230
+ ```
231
+
232
+ ### System Definition
233
+
234
+ ```yaml
235
+ apiVersion: backstage.io/v1alpha1
236
+ kind: System
237
+ metadata:
238
+ name: customer-platform
239
+ description: Customer management platform
240
+ spec:
241
+ owner: team-platform
242
+ ```
243
+
244
+ ## Self-Service Workflows
245
+
246
+ ### Software Templates
247
+
248
+ ```yaml
249
+ # templates/nodejs-service/template.yaml
250
+ apiVersion: scaffolder.backstage.io/v1beta3
251
+ kind: Template
252
+ metadata:
253
+ name: nodejs-service
254
+ title: Node.js Service
255
+ description: Create a new Node.js microservice
256
+ tags:
257
+ - nodejs
258
+ - typescript
259
+ - recommended
260
+ spec:
261
+ owner: team-platform
262
+ type: service
263
+
264
+ parameters:
265
+ - title: Service Information
266
+ required:
267
+ - name
268
+ - description
269
+ properties:
270
+ name:
271
+ title: Name
272
+ type: string
273
+ description: Unique name for your service
274
+ pattern: '^[a-z0-9-]+$'
275
+ description:
276
+ title: Description
277
+ type: string
278
+ description: What does this service do?
279
+ owner:
280
+ title: Owner
281
+ type: string
282
+ description: Team that owns this service
283
+ ui:field: OwnerPicker
284
+ ui:options:
285
+ allowedKinds:
286
+ - Group
287
+
288
+ - title: Repository
289
+ required:
290
+ - repoUrl
291
+ properties:
292
+ repoUrl:
293
+ title: Repository Location
294
+ type: string
295
+ ui:field: RepoUrlPicker
296
+ ui:options:
297
+ allowedHosts:
298
+ - github.com
299
+
300
+ - title: Infrastructure
301
+ properties:
302
+ database:
303
+ title: Needs Database?
304
+ type: boolean
305
+ default: false
306
+ cache:
307
+ title: Needs Redis Cache?
308
+ type: boolean
309
+ default: false
310
+
311
+ steps:
312
+ - id: fetch-base
313
+ name: Fetch Base Template
314
+ action: fetch:template
315
+ input:
316
+ url: ./skeleton
317
+ values:
318
+ name: ${{ parameters.name }}
319
+ description: ${{ parameters.description }}
320
+ owner: ${{ parameters.owner }}
321
+ destination: ${{ parameters.repoUrl | parseRepoUrl }}
322
+
323
+ - id: create-repo
324
+ name: Create GitHub Repository
325
+ action: publish:github
326
+ input:
327
+ allowedHosts: ['github.com']
328
+ description: ${{ parameters.description }}
329
+ repoUrl: ${{ parameters.repoUrl }}
330
+ defaultBranch: main
331
+
332
+ - id: create-kubernetes-resources
333
+ name: Create Kubernetes Resources
334
+ action: kubernetes:create
335
+ input:
336
+ namespace: ${{ parameters.owner }}
337
+ manifest: |
338
+ apiVersion: v1
339
+ kind: Namespace
340
+ metadata:
341
+ name: ${{ parameters.name }}
342
+ labels:
343
+ team: ${{ parameters.owner }}
344
+
345
+ - id: create-database
346
+ name: Provision Database
347
+ if: ${{ parameters.database }}
348
+ action: database:provision
349
+ input:
350
+ type: postgresql
351
+ name: ${{ parameters.name }}-db
352
+ team: ${{ parameters.owner }}
353
+
354
+ - id: register-catalog
355
+ name: Register in Service Catalog
356
+ action: catalog:register
357
+ input:
358
+ repoContentsUrl: ${{ steps['create-repo'].output.repoContentsUrl }}
359
+ catalogInfoPath: '/catalog-info.yaml'
360
+
361
+ output:
362
+ links:
363
+ - title: Repository
364
+ url: ${{ steps['create-repo'].output.remoteUrl }}
365
+ - title: Open in Catalog
366
+ icon: catalog
367
+ entityRef: ${{ steps['register-catalog'].output.entityRef }}
368
+ ```
369
+
370
+ ### Template Skeleton
371
+
372
+ ```
373
+ templates/nodejs-service/skeleton/
374
+ ├── catalog-info.yaml
375
+ ├── package.json
376
+ ├── tsconfig.json
377
+ ├── src/
378
+ │ ├── index.ts
379
+ │ ├── app.ts
380
+ │ └── routes/
381
+ ├── tests/
382
+ ├── Dockerfile
383
+ ├── k8s/
384
+ │ ├── deployment.yaml
385
+ │ ├── service.yaml
386
+ │ └── ingress.yaml
387
+ └── .github/
388
+ └── workflows/
389
+ └── ci.yaml
390
+ ```
391
+
392
+ ## Golden Paths
393
+
394
+ ### Golden Path Example: New Service
395
+
396
+ ```
397
+ Step 1: Developer Portal
398
+
399
+ Step 2: Choose Template (nodejs-service)
400
+
401
+ Step 3: Fill Parameters
402
+ - Service name
403
+ - Description
404
+ - Team owner
405
+ - Infrastructure needs
406
+
407
+ Step 4: Automated Actions
408
+ ✓ Create Git repo
409
+ ✓ Generate code from template
410
+ ✓ Create namespace
411
+ ✓ Provision database
412
+ ✓ Setup CI/CD pipeline
413
+ ✓ Create monitoring
414
+ ✓ Register in catalog
415
+
416
+ Step 5: Ready to Code!
417
+ - Repo with best practices
418
+ - Tests configured
419
+ - CI/CD working
420
+ - Infrastructure ready
421
+ ```
422
+
423
+ ### Score Card
424
+
425
+ ```yaml
426
+ # .backstage/scorecard.yaml
427
+ apiVersion: backstage.io/v1alpha1
428
+ kind: Scorecard
429
+ metadata:
430
+ name: production-readiness
431
+ spec:
432
+ checks:
433
+ - name: Has Documentation
434
+ description: Service must have README and docs
435
+ weight: 10
436
+ check:
437
+ type: file-exists
438
+ files:
439
+ - README.md
440
+ - docs/
441
+
442
+ - name: Has Tests
443
+ description: Service must have automated tests
444
+ weight: 20
445
+ check:
446
+ type: coverage
447
+ minimum: 80
448
+
449
+ - name: Has Monitoring
450
+ description: Service exports metrics
451
+ weight: 15
452
+ check:
453
+ type: annotation-exists
454
+ annotation: prometheus.io/scrape
455
+
456
+ - name: Has Health Checks
457
+ description: Service has health endpoints
458
+ weight: 15
459
+ check:
460
+ type: file-contains
461
+ file: k8s/deployment.yaml
462
+ pattern: livenessProbe
463
+
464
+ - name: Has Owner
465
+ description: Service has defined owner team
466
+ weight: 10
467
+ check:
468
+ type: field-exists
469
+ field: spec.owner
470
+
471
+ - name: Security Scan
472
+ description: No critical vulnerabilities
473
+ weight: 30
474
+ check:
475
+ type: workflow-status
476
+ workflow: security-scan
477
+ ```
478
+
479
+ ## Platform APIs
480
+
481
+ ### Self-Service API
482
+
483
+ ```typescript
484
+ // platform-api/src/routes/provision.ts
485
+ import express from 'express';
486
+
487
+ const router = express.Router();
488
+
489
+ /**
490
+ * POST /api/provision/database
491
+ * Provision a new database instance
492
+ */
493
+ router.post('/database', async (req, res) => {
494
+ const { name, type, team, environment } = req.body;
495
+
496
+ // Validate request
497
+ const schema = z.object({
498
+ name: z.string().regex(/^[a-z0-9-]+$/),
499
+ type: z.enum(['postgresql', 'mysql', 'mongodb']),
500
+ team: z.string(),
501
+ environment: z.enum(['dev', 'staging', 'prod'])
502
+ });
503
+
504
+ const validated = schema.parse(req.body);
505
+
506
+ // Create Terraform workspace
507
+ const workspace = `${validated.team}-${validated.name}-${validated.environment}`;
508
+
509
+ // Apply infrastructure
510
+ await terraformService.apply({
511
+ workspace,
512
+ module: `databases/${validated.type}`,
513
+ variables: {
514
+ name: validated.name,
515
+ team: validated.team,
516
+ environment: validated.environment
517
+ }
518
+ });
519
+
520
+ // Get connection details
521
+ const outputs = await terraformService.outputs(workspace);
522
+
523
+ // Store credentials in Vault
524
+ await vaultService.write(
525
+ `${validated.team}/${validated.environment}/${validated.name}`,
526
+ outputs.credentials
527
+ );
528
+
529
+ // Create Kubernetes secret
530
+ await k8sService.createSecret({
531
+ namespace: validated.team,
532
+ name: `${validated.name}-db`,
533
+ data: outputs.credentials
534
+ });
535
+
536
+ res.json({
537
+ success: true,
538
+ database: {
539
+ name: validated.name,
540
+ endpoint: outputs.endpoint,
541
+ secretName: `${validated.name}-db`
542
+ }
543
+ });
544
+ });
545
+
546
+ /**
547
+ * POST /api/provision/namespace
548
+ * Create new namespace with quotas
549
+ */
550
+ router.post('/namespace', async (req, res) => {
551
+ const { name, team, quotas } = req.body;
552
+
553
+ await k8sService.applyManifests([
554
+ {
555
+ apiVersion: 'v1',
556
+ kind: 'Namespace',
557
+ metadata: {
558
+ name,
559
+ labels: {
560
+ team,
561
+ 'managed-by': 'platform'
562
+ }
563
+ }
564
+ },
565
+ {
566
+ apiVersion: 'v1',
567
+ kind: 'ResourceQuota',
568
+ metadata: {
569
+ name: `${name}-quota`,
570
+ namespace: name
571
+ },
572
+ spec: {
573
+ hard: quotas || {
574
+ 'requests.cpu': '10',
575
+ 'requests.memory': '10Gi',
576
+ 'limits.cpu': '20',
577
+ 'limits.memory': '20Gi',
578
+ 'persistentvolumeclaims': '10'
579
+ }
580
+ }
581
+ }
582
+ ]);
583
+
584
+ res.json({ success: true, namespace: name });
585
+ });
586
+
587
+ export default router;
588
+ ```
589
+
590
+ ## Developer Experience
591
+
592
+ ### CLI Tool
593
+
594
+ ```typescript
595
+ // platform-cli/src/commands/create.ts
596
+ import { Command } from 'commander';
597
+
598
+ const createCommand = new Command('create');
599
+
600
+ createCommand
601
+ .command('service <name>')
602
+ .description('Create a new service')
603
+ .option('-t, --template <template>', 'Service template', 'nodejs-service')
604
+ .option('-o, --owner <team>', 'Owning team')
605
+ .option('--database', 'Include database')
606
+ .action(async (name, options) => {
607
+ console.log(`Creating service: ${name}`);
608
+
609
+ // Call Backstage API
610
+ const response = await fetch('https://platform.company.com/api/scaffolder/v2/tasks', {
611
+ method: 'POST',
612
+ headers: {
613
+ 'Content-Type': 'application/json',
614
+ 'Authorization': `Bearer ${getToken()}`
615
+ },
616
+ body: JSON.stringify({
617
+ templateRef: `template:default/${options.template}`,
618
+ values: {
619
+ name,
620
+ owner: options.owner,
621
+ database: options.database
622
+ }
623
+ })
624
+ });
625
+
626
+ const task = await response.json();
627
+ console.log(`Task created: ${task.id}`);
628
+ console.log(`View progress: https://platform.company.com/create/tasks/${task.id}`);
629
+ });
630
+
631
+ export default createCommand;
632
+ ```
633
+
634
+ ## Best Practices
635
+
636
+ ### 1. Golden Paths Over Freedom
637
+
638
+ Provide opinionated, well-tested templates rather than infinite customization.
639
+
640
+ ### 2. Documentation as Code
641
+
642
+ Keep docs alongside code, auto-generate from templates.
643
+
644
+ ### 3. Measure Developer Productivity
645
+
646
+ ```yaml
647
+ # Metrics to track
648
+ metrics:
649
+ - time_to_first_commit
650
+ - time_to_production
651
+ - lead_time_for_changes
652
+ - deployment_frequency
653
+ - change_failure_rate
654
+ - mean_time_to_recovery
655
+ ```
656
+
657
+ ### 4. Progressive Disclosure
658
+
659
+ Start simple, reveal complexity as needed. Don't overwhelm with options.
660
+
661
+ ### 5. Self-Service with Guardrails
662
+
663
+ Automate everything, but enforce standards and security.
664
+
665
+ ---
666
+
667
+ **Related Resources:**
668
+ - [gitops-automation.md](gitops-automation.md) - Automated deployments
669
+ - [infrastructure-standards.md](infrastructure-standards.md) - Platform standards
670
+ - [service-mesh.md](service-mesh.md) - Service connectivity