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,755 @@
1
+ # Secrets Management
2
+
3
+ Comprehensive guide to managing secrets, credentials, and sensitive data using HashiCorp Vault, Sealed Secrets, External Secrets Operator, AWS Secrets Manager, and secret rotation strategies.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Overview](#overview)
8
+ - [HashiCorp Vault](#hashicorp-vault)
9
+ - [Sealed Secrets](#sealed-secrets)
10
+ - [External Secrets Operator](#external-secrets-operator)
11
+ - [Cloud Provider Solutions](#cloud-provider-solutions)
12
+ - [Secret Rotation](#secret-rotation)
13
+ - [Best Practices](#best-practices)
14
+ - [Anti-Patterns](#anti-patterns)
15
+
16
+ ## Overview
17
+
18
+ **Secrets Management Lifecycle:**
19
+
20
+ ```
21
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
22
+ │ Generate │────▶│ Store │────▶│ Rotate │
23
+ │ (Create) │ │ (Encrypt) │ │ (Update) │
24
+ └──────────────┘ └──────────────┘ └──────────────┘
25
+ │ │
26
+ ▼ ▼
27
+ ┌──────────────┐ ┌──────────────┐
28
+ │ Access │────▶│ Audit │
29
+ │ (Control) │ │ (Log) │
30
+ └──────────────┘ └──────────────┘
31
+ ```
32
+
33
+ **Never:**
34
+ - ❌ Commit secrets to Git
35
+ - ❌ Hardcode in source code
36
+ - ❌ Store in ConfigMaps
37
+ - ❌ Pass in environment variables (visible in process list)
38
+ - ❌ Store unencrypted
39
+
40
+ **Always:**
41
+ - ✅ Use dedicated secrets management
42
+ - ✅ Encrypt at rest and in transit
43
+ - ✅ Implement access controls
44
+ - ✅ Rotate regularly
45
+ - ✅ Audit access
46
+
47
+ ## HashiCorp Vault
48
+
49
+ ### Installation
50
+
51
+ **Docker:**
52
+ ```bash
53
+ docker run -d --name=vault \
54
+ --cap-add=IPC_LOCK \
55
+ -p 8200:8200 \
56
+ vault server -dev
57
+ ```
58
+
59
+ **Kubernetes (Helm):**
60
+ ```bash
61
+ helm repo add hashicorp https://helm.releases.hashicorp.com
62
+ helm repo update
63
+
64
+ helm install vault hashicorp/vault \
65
+ --namespace vault --create-namespace \
66
+ --set server.ha.enabled=true \
67
+ --set server.ha.replicas=3
68
+ ```
69
+
70
+ ### Basic Operations
71
+
72
+ **Initialize and Unseal:**
73
+ ```bash
74
+ # Initialize Vault
75
+ vault operator init -key-shares=5 -key-threshold=3
76
+
77
+ # Save unseal keys and root token securely!
78
+
79
+ # Unseal (requires 3 keys)
80
+ vault operator unseal <key1>
81
+ vault operator unseal <key2>
82
+ vault operator unseal <key3>
83
+
84
+ # Login
85
+ vault login <root_token>
86
+ ```
87
+
88
+ **Storing Secrets:**
89
+ ```bash
90
+ # Enable KV secrets engine
91
+ vault secrets enable -path=secret kv-v2
92
+
93
+ # Write secret
94
+ vault kv put secret/myapp/config \
95
+ api_key=abc123 \
96
+ db_password=secret123
97
+
98
+ # Read secret
99
+ vault kv get secret/myapp/config
100
+
101
+ # Get specific field
102
+ vault kv get -field=api_key secret/myapp/config
103
+
104
+ # List secrets
105
+ vault kv list secret/myapp
106
+ ```
107
+
108
+ ### Access Control (Policies)
109
+
110
+ ```hcl
111
+ # policies/app-policy.hcl
112
+ path "secret/data/myapp/*" {
113
+ capabilities = ["read", "list"]
114
+ }
115
+
116
+ path "secret/metadata/myapp/*" {
117
+ capabilities = ["list"]
118
+ }
119
+
120
+ path "database/creds/myapp-role" {
121
+ capabilities = ["read"]
122
+ }
123
+ ```
124
+
125
+ ```bash
126
+ # Create policy
127
+ vault policy write app-policy policies/app-policy.hcl
128
+
129
+ # Create token with policy
130
+ vault token create -policy=app-policy
131
+ ```
132
+
133
+ ### Kubernetes Integration
134
+
135
+ **Enable Kubernetes Auth:**
136
+ ```bash
137
+ vault auth enable kubernetes
138
+
139
+ vault write auth/kubernetes/config \
140
+ kubernetes_host="https://$KUBERNETES_HOST:443" \
141
+ token_reviewer_jwt="$SA_JWT_TOKEN" \
142
+ kubernetes_ca_cert=@ca.crt
143
+ ```
144
+
145
+ **Create Role:**
146
+ ```bash
147
+ vault write auth/kubernetes/role/myapp \
148
+ bound_service_account_names=myapp \
149
+ bound_service_account_namespaces=production \
150
+ policies=app-policy \
151
+ ttl=24h
152
+ ```
153
+
154
+ **Injector Pattern:**
155
+ ```yaml
156
+ apiVersion: v1
157
+ kind: Pod
158
+ metadata:
159
+ name: myapp
160
+ annotations:
161
+ vault.hashicorp.com/agent-inject: "true"
162
+ vault.hashicorp.com/role: "myapp"
163
+ vault.hashicorp.com/agent-inject-secret-config: "secret/data/myapp/config"
164
+ vault.hashicorp.com/agent-inject-template-config: |
165
+ {{- with secret "secret/data/myapp/config" -}}
166
+ export API_KEY="{{ .Data.data.api_key }}"
167
+ export DB_PASSWORD="{{ .Data.data.db_password }}"
168
+ {{- end }}
169
+ spec:
170
+ serviceAccountName: myapp
171
+ containers:
172
+ - name: app
173
+ image: myapp:latest
174
+ command:
175
+ - sh
176
+ - -c
177
+ - source /vault/secrets/config && ./start.sh
178
+ ```
179
+
180
+ ### Dynamic Secrets
181
+
182
+ **Database Credentials:**
183
+ ```bash
184
+ # Enable database engine
185
+ vault secrets enable database
186
+
187
+ # Configure PostgreSQL
188
+ vault write database/config/postgresql \
189
+ plugin_name=postgresql-database-plugin \
190
+ allowed_roles="myapp-role" \
191
+ connection_url="postgresql://{{username}}:{{password}}@postgres:5432/mydb" \
192
+ username="vault" \
193
+ password="vaultpass"
194
+
195
+ # Create role
196
+ vault write database/roles/myapp-role \
197
+ db_name=postgresql \
198
+ creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; \
199
+ GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
200
+ default_ttl="1h" \
201
+ max_ttl="24h"
202
+
203
+ # Generate credentials
204
+ vault read database/creds/myapp-role
205
+ # Returns: username, password (temporary, auto-rotated)
206
+ ```
207
+
208
+ **AWS Credentials:**
209
+ ```bash
210
+ vault secrets enable aws
211
+
212
+ vault write aws/config/root \
213
+ access_key=$AWS_ACCESS_KEY \
214
+ secret_key=$AWS_SECRET_KEY \
215
+ region=us-east-1
216
+
217
+ vault write aws/roles/myapp-role \
218
+ credential_type=iam_user \
219
+ policy_document=-<<EOF
220
+ {
221
+ "Version": "2012-10-17",
222
+ "Statement": [
223
+ {
224
+ "Effect": "Allow",
225
+ "Action": "s3:*",
226
+ "Resource": ["arn:aws:s3:::mybucket/*"]
227
+ }
228
+ ]
229
+ }
230
+ EOF
231
+
232
+ # Generate temporary AWS credentials
233
+ vault read aws/creds/myapp-role
234
+ ```
235
+
236
+ ## Sealed Secrets
237
+
238
+ ### Installation
239
+
240
+ ```bash
241
+ # Install controller
242
+ kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.24.0/controller.yaml
243
+
244
+ # Install kubeseal CLI
245
+ wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.24.0/kubeseal-linux-amd64
246
+ chmod +x kubeseal-linux-amd64
247
+ sudo mv kubeseal-linux-amd64 /usr/local/bin/kubeseal
248
+ ```
249
+
250
+ ### Usage
251
+
252
+ **Create Secret:**
253
+ ```bash
254
+ # Create regular secret (don't apply!)
255
+ kubectl create secret generic mysecret \
256
+ --from-literal=api-key=abc123 \
257
+ --from-literal=db-password=secret123 \
258
+ --dry-run=client -o yaml > secret.yaml
259
+
260
+ # Seal it
261
+ kubeseal -f secret.yaml -w sealed-secret.yaml
262
+
263
+ # Now safe to commit sealed-secret.yaml
264
+ git add sealed-secret.yaml
265
+ git commit -m "Add sealed secret"
266
+ ```
267
+
268
+ **Sealed Secret Manifest:**
269
+ ```yaml
270
+ apiVersion: bitnami.com/v1alpha1
271
+ kind: SealedSecret
272
+ metadata:
273
+ name: mysecret
274
+ namespace: production
275
+ spec:
276
+ encryptedData:
277
+ api-key: AgBP8F3F5...encrypted...
278
+ db-password: AgCY9j2K...encrypted...
279
+ template:
280
+ metadata:
281
+ name: mysecret
282
+ namespace: production
283
+ ```
284
+
285
+ **Use in Pod:**
286
+ ```yaml
287
+ apiVersion: v1
288
+ kind: Pod
289
+ metadata:
290
+ name: myapp
291
+ spec:
292
+ containers:
293
+ - name: app
294
+ image: myapp:latest
295
+ env:
296
+ - name: API_KEY
297
+ valueFrom:
298
+ secretKeyRef:
299
+ name: mysecret # Created from SealedSecret
300
+ key: api-key
301
+ ```
302
+
303
+ **Scope Options:**
304
+ ```bash
305
+ # Cluster-wide (any namespace)
306
+ kubeseal --scope cluster-wide -f secret.yaml
307
+
308
+ # Namespace-wide (any name in namespace)
309
+ kubeseal --scope namespace-wide -f secret.yaml
310
+
311
+ # Strict (specific name and namespace)
312
+ kubeseal --scope strict -f secret.yaml
313
+ ```
314
+
315
+ ## External Secrets Operator
316
+
317
+ ### Installation
318
+
319
+ ```bash
320
+ helm repo add external-secrets https://charts.external-secrets.io
321
+ helm install external-secrets \
322
+ external-secrets/external-secrets \
323
+ --namespace external-secrets-system \
324
+ --create-namespace
325
+ ```
326
+
327
+ ### AWS Secrets Manager Backend
328
+
329
+ **SecretStore:**
330
+ ```yaml
331
+ apiVersion: external-secrets.io/v1beta1
332
+ kind: SecretStore
333
+ metadata:
334
+ name: aws-secrets-manager
335
+ namespace: production
336
+ spec:
337
+ provider:
338
+ aws:
339
+ service: SecretsManager
340
+ region: us-east-1
341
+ auth:
342
+ jwt:
343
+ serviceAccountRef:
344
+ name: external-secrets-sa
345
+ ```
346
+
347
+ **ExternalSecret:**
348
+ ```yaml
349
+ apiVersion: external-secrets.io/v1beta1
350
+ kind: ExternalSecret
351
+ metadata:
352
+ name: app-secrets
353
+ namespace: production
354
+ spec:
355
+ refreshInterval: 1h
356
+ secretStoreRef:
357
+ name: aws-secrets-manager
358
+ kind: SecretStore
359
+
360
+ target:
361
+ name: app-secrets
362
+ creationPolicy: Owner
363
+
364
+ data:
365
+ - secretKey: api-key
366
+ remoteRef:
367
+ key: prod/myapp/api-key
368
+
369
+ - secretKey: db-password
370
+ remoteRef:
371
+ key: prod/myapp/database
372
+ property: password
373
+ ```
374
+
375
+ ### Vault Backend
376
+
377
+ **SecretStore:**
378
+ ```yaml
379
+ apiVersion: external-secrets.io/v1beta1
380
+ kind: SecretStore
381
+ metadata:
382
+ name: vault-backend
383
+ namespace: production
384
+ spec:
385
+ provider:
386
+ vault:
387
+ server: "http://vault.vault:8200"
388
+ path: "secret"
389
+ version: "v2"
390
+ auth:
391
+ kubernetes:
392
+ mountPath: "kubernetes"
393
+ role: "myapp"
394
+ serviceAccountRef:
395
+ name: myapp
396
+ ```
397
+
398
+ **ExternalSecret:**
399
+ ```yaml
400
+ apiVersion: external-secrets.io/v1beta1
401
+ kind: ExternalSecret
402
+ metadata:
403
+ name: vault-secrets
404
+ namespace: production
405
+ spec:
406
+ refreshInterval: 15m
407
+ secretStoreRef:
408
+ name: vault-backend
409
+ kind: SecretStore
410
+
411
+ target:
412
+ name: vault-secrets
413
+
414
+ dataFrom:
415
+ - extract:
416
+ key: myapp/config
417
+ ```
418
+
419
+ ### GCP Secret Manager
420
+
421
+ **SecretStore:**
422
+ ```yaml
423
+ apiVersion: external-secrets.io/v1beta1
424
+ kind: SecretStore
425
+ metadata:
426
+ name: gcp-secret-manager
427
+ spec:
428
+ provider:
429
+ gcpsm:
430
+ projectID: "my-project"
431
+ auth:
432
+ workloadIdentity:
433
+ clusterLocation: us-central1
434
+ clusterName: my-cluster
435
+ serviceAccountRef:
436
+ name: external-secrets-sa
437
+ ```
438
+
439
+ ## Cloud Provider Solutions
440
+
441
+ ### AWS Secrets Manager
442
+
443
+ **Create Secret:**
444
+ ```bash
445
+ aws secretsmanager create-secret \
446
+ --name prod/myapp/api-key \
447
+ --description "API key for myapp" \
448
+ --secret-string "abc123xyz"
449
+
450
+ # Store JSON
451
+ aws secretsmanager create-secret \
452
+ --name prod/myapp/database \
453
+ --secret-string '{"username":"dbuser","password":"dbpass123"}'
454
+ ```
455
+
456
+ **Retrieve Secret:**
457
+ ```bash
458
+ # Get full secret
459
+ aws secretsmanager get-secret-value \
460
+ --secret-id prod/myapp/api-key \
461
+ --query SecretString --output text
462
+
463
+ # Parse JSON secret
464
+ aws secretsmanager get-secret-value \
465
+ --secret-id prod/myapp/database \
466
+ --query SecretString --output text | jq -r .password
467
+ ```
468
+
469
+ **Application Code:**
470
+ ```typescript
471
+ import { SecretsManagerClient, GetSecretValueCommand } from '@aws-sdk/client-secrets-manager';
472
+
473
+ const client = new SecretsManagerClient({ region: 'us-east-1' });
474
+
475
+ async function getSecret(secretName: string): Promise<any> {
476
+ const command = new GetSecretValueCommand({ SecretId: secretName });
477
+ const response = await client.send(command);
478
+ return JSON.parse(response.SecretString!);
479
+ }
480
+
481
+ // Usage
482
+ const dbConfig = await getSecret('prod/myapp/database');
483
+ console.log(dbConfig.password);
484
+ ```
485
+
486
+ ### Google Cloud Secret Manager
487
+
488
+ **Create Secret:**
489
+ ```bash
490
+ echo -n "abc123xyz" | gcloud secrets create myapp-api-key \
491
+ --data-file=- \
492
+ --replication-policy="automatic"
493
+
494
+ # Add version
495
+ echo -n "new-secret-value" | gcloud secrets versions add myapp-api-key \
496
+ --data-file=-
497
+ ```
498
+
499
+ **Access Secret:**
500
+ ```bash
501
+ gcloud secrets versions access latest \
502
+ --secret="myapp-api-key"
503
+ ```
504
+
505
+ **Application Code:**
506
+ ```python
507
+ from google.cloud import secretmanager
508
+
509
+ client = secretmanager.SecretManagerServiceClient()
510
+ name = f"projects/{project_id}/secrets/{secret_id}/versions/latest"
511
+ response = client.access_secret_version(request={"name": name})
512
+ secret_value = response.payload.data.decode("UTF-8")
513
+ ```
514
+
515
+ ### Azure Key Vault
516
+
517
+ **Create Secret:**
518
+ ```bash
519
+ az keyvault secret set \
520
+ --vault-name mykeyvault \
521
+ --name myapp-api-key \
522
+ --value "abc123xyz"
523
+ ```
524
+
525
+ **Retrieve Secret:**
526
+ ```bash
527
+ az keyvault secret show \
528
+ --vault-name mykeyvault \
529
+ --name myapp-api-key \
530
+ --query value -o tsv
531
+ ```
532
+
533
+ **Application Code:**
534
+ ```csharp
535
+ using Azure.Identity;
536
+ using Azure.Security.KeyVault.Secrets;
537
+
538
+ var client = new SecretClient(
539
+ new Uri("https://mykeyvault.vault.azure.net/"),
540
+ new DefaultAzureCredential()
541
+ );
542
+
543
+ KeyVaultSecret secret = await client.GetSecretAsync("myapp-api-key");
544
+ string value = secret.Value;
545
+ ```
546
+
547
+ ## Secret Rotation
548
+
549
+ ### Automated Rotation Strategy
550
+
551
+ **Vault Automatic Rotation:**
552
+ ```hcl
553
+ # Database credentials rotate automatically
554
+ vault write database/config/postgresql \
555
+ plugin_name=postgresql-database-plugin \
556
+ connection_url="postgresql://{{username}}:{{password}}@postgres:5432/" \
557
+ rotation_period="24h"
558
+ ```
559
+
560
+ **AWS Secrets Manager Rotation:**
561
+ ```bash
562
+ aws secretsmanager rotate-secret \
563
+ --secret-id prod/myapp/database \
564
+ --rotation-lambda-arn arn:aws:lambda:us-east-1:123456789:function:SecretsManagerRotation \
565
+ --rotation-rules AutomaticallyAfterDays=30
566
+ ```
567
+
568
+ **Lambda Rotation Function:**
569
+ ```python
570
+ import boto3
571
+ import json
572
+
573
+ def lambda_handler(event, context):
574
+ secret_id = event['SecretId']
575
+ token = event['ClientRequestToken']
576
+ step = event['Step']
577
+
578
+ client = boto3.client('secretsmanager')
579
+
580
+ if step == "createSecret":
581
+ # Generate new password
582
+ new_password = generate_password()
583
+ client.put_secret_value(
584
+ SecretId=secret_id,
585
+ ClientRequestToken=token,
586
+ SecretString=json.dumps({"password": new_password}),
587
+ VersionStages=['AWSPENDING']
588
+ )
589
+
590
+ elif step == "setSecret":
591
+ # Update database with new password
592
+ update_database_password(new_password)
593
+
594
+ elif step == "testSecret":
595
+ # Test new credentials
596
+ test_database_connection(new_password)
597
+
598
+ elif step == "finishSecret":
599
+ # Mark new version as current
600
+ client.update_secret_version_stage(
601
+ SecretId=secret_id,
602
+ VersionStage='AWSCURRENT',
603
+ MoveToVersionId=token
604
+ )
605
+ ```
606
+
607
+ ### Manual Rotation Process
608
+
609
+ ```bash
610
+ # 1. Generate new secret
611
+ NEW_API_KEY=$(openssl rand -hex 32)
612
+
613
+ # 2. Update secret
614
+ vault kv put secret/myapp/config api_key=$NEW_API_KEY
615
+
616
+ # 3. Restart applications to pick up new secret
617
+ kubectl rollout restart deployment/myapp
618
+
619
+ # 4. Verify new secret is working
620
+ kubectl logs -l app=myapp | grep "API connection successful"
621
+
622
+ # 5. Update external systems if needed
623
+ curl -X POST https://api.provider.com/keys \
624
+ -H "Authorization: Bearer $OLD_KEY" \
625
+ -d "new_key=$NEW_API_KEY"
626
+ ```
627
+
628
+ ### Zero-Downtime Rotation
629
+
630
+ ```yaml
631
+ # Support both old and new secrets during rotation
632
+ apiVersion: v1
633
+ kind: Pod
634
+ spec:
635
+ containers:
636
+ - name: app
637
+ env:
638
+ - name: API_KEY_PRIMARY
639
+ valueFrom:
640
+ secretKeyRef:
641
+ name: app-secrets-new
642
+ key: api-key
643
+ - name: API_KEY_FALLBACK
644
+ valueFrom:
645
+ secretKeyRef:
646
+ name: app-secrets-old
647
+ key: api-key
648
+ ```
649
+
650
+ ```typescript
651
+ // Application tries primary, falls back to old
652
+ const apiKey = process.env.API_KEY_PRIMARY || process.env.API_KEY_FALLBACK;
653
+ ```
654
+
655
+ ## Best Practices
656
+
657
+ ### 1. Never Commit Secrets
658
+
659
+ ```bash
660
+ # Pre-commit hook
661
+ cat > .git/hooks/pre-commit << 'EOF'
662
+ #!/bin/bash
663
+ if git diff --cached | grep -iE '(password|api_key|secret|token).*=.*[a-zA-Z0-9]{16,}'; then
664
+ echo "ERROR: Possible secret detected!"
665
+ exit 1
666
+ fi
667
+ EOF
668
+ chmod +x .git/hooks/pre-commit
669
+ ```
670
+
671
+ ### 2. Encrypt at Rest
672
+
673
+ All secret backends should encrypt data.
674
+
675
+ ### 3. Rotate Regularly
676
+
677
+ ```
678
+ Critical: Every 30 days
679
+ High: Every 90 days
680
+ Medium: Every 180 days
681
+ ```
682
+
683
+ ### 4. Least Privilege Access
684
+
685
+ ```hcl
686
+ # Minimal permissions
687
+ path "secret/data/myapp/readonly/*" {
688
+ capabilities = ["read"]
689
+ }
690
+ ```
691
+
692
+ ### 5. Audit Access
693
+
694
+ ```bash
695
+ # Enable audit logging
696
+ vault audit enable file file_path=/var/log/vault-audit.log
697
+ ```
698
+
699
+ ### 6. Use Short-Lived Credentials
700
+
701
+ ```bash
702
+ # TTL example
703
+ vault write database/creds/myapp-role ttl=1h
704
+ ```
705
+
706
+ ### 7. Separate Secrets by Environment
707
+
708
+ ```
709
+ secret/
710
+ dev/
711
+ myapp/
712
+ staging/
713
+ myapp/
714
+ prod/
715
+ myapp/
716
+ ```
717
+
718
+ ### 8. Emergency Break-Glass Process
719
+
720
+ ```
721
+ 1. Document emergency access procedure
722
+ 2. Store root credentials securely (offline)
723
+ 3. Require multiple approvers for access
724
+ 4. Audit all emergency access
725
+ 5. Rotate secrets after emergency access
726
+ ```
727
+
728
+ ## Anti-Patterns
729
+
730
+ ❌ **Secrets in Git** - Exposed in history forever
731
+
732
+ ❌ **Secrets in ConfigMaps** - Not encrypted
733
+
734
+ ❌ **Hardcoded secrets** - Can't rotate
735
+
736
+ ❌ **Secrets in environment variables** - Visible in process list
737
+
738
+ ❌ **Shared secrets** - Can't track who accessed
739
+
740
+ ❌ **No rotation** - Compromised secrets stay valid
741
+
742
+ ❌ **Overly permissive access** - Least privilege violation
743
+
744
+ ❌ **No audit trail** - Can't detect breaches
745
+
746
+ ❌ **Secrets in logs** - Exposed to log aggregation
747
+
748
+ ❌ **Long-lived credentials** - Higher risk if compromised
749
+
750
+ ---
751
+
752
+ **Related Resources:**
753
+ - [encryption.md](encryption.md) - Encryption patterns
754
+ - [policy-enforcement.md](policy-enforcement.md) - Access control policies
755
+ - [compliance-automation.md](compliance-automation.md) - Compliance requirements