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,88 @@
1
+ # API Versioning
2
+
3
+ Guide to API versioning strategies and best practices.
4
+
5
+ ## Versioning Strategies
6
+
7
+ ### URI Versioning
8
+ ```
9
+ GET /v1/users/123
10
+ GET /v2/users/123
11
+
12
+ Pros: Simple, clear
13
+ Cons: Pollutes URI space
14
+ ```
15
+
16
+ ### Header Versioning
17
+ ```
18
+ GET /users/123
19
+ Accept: application/vnd.myapi.v1+json
20
+
21
+ Pros: Clean URIs
22
+ Cons: Less visible, harder to test
23
+ ```
24
+
25
+ ### Query Parameter
26
+ ```
27
+ GET /users/123?version=1
28
+ GET /users/123?version=2
29
+
30
+ Pros: Simple
31
+ Cons: Easy to forget, not RESTful
32
+ ```
33
+
34
+ ## Semantic Versioning
35
+
36
+ ```
37
+ MAJOR.MINOR.PATCH
38
+
39
+ v1.0.0 → v1.1.0: New feature (backward-compatible)
40
+ v1.1.0 → v2.0.0: Breaking change
41
+ v2.0.0 → v2.0.1: Bug fix
42
+ ```
43
+
44
+ ## Breaking vs Non-Breaking Changes
45
+
46
+ ```
47
+ Breaking Changes (require new version):
48
+ - Removing endpoint
49
+ - Removing field
50
+ - Changing field type
51
+ - Changing response structure
52
+ - Renaming field
53
+
54
+ Non-Breaking (can be same version):
55
+ - Adding new endpoint
56
+ - Adding new optional field
57
+ - Adding new query parameter
58
+ - Deprecating (but not removing) field
59
+ ```
60
+
61
+ ## Deprecation Strategy
62
+
63
+ ```typescript
64
+ // Mark deprecated fields
65
+ type User {
66
+ id: ID!
67
+ fullName: String!
68
+ name: String! @deprecated(reason: "Use fullName instead")
69
+ }
70
+
71
+ // Add deprecation headers
72
+ res.setHeader('Deprecation', 'Sun, 01 Jan 2025 00:00:00 GMT');
73
+ res.setHeader('Link', '</v2/users>; rel="successor-version"');
74
+ ```
75
+
76
+ ## Best Practices
77
+
78
+ ✅ Version from day one (v1)
79
+ ✅ Support 2-3 versions simultaneously
80
+ ✅ Give 6-12 months deprecation notice
81
+ ✅ Document breaking changes clearly
82
+ ✅ Use semantic versioning
83
+ ✅ Provide migration guides
84
+
85
+ ---
86
+
87
+ **Related Resources:**
88
+ - rest-api-design.md - API design principles
@@ -0,0 +1,106 @@
1
+ # GraphQL Patterns
2
+
3
+ Guide to GraphQL schema design, resolvers, and common patterns.
4
+
5
+ ## Schema Design
6
+
7
+ ```graphql
8
+ type User {
9
+ id: ID!
10
+ email: String!
11
+ name: String!
12
+ posts: [Post!]!
13
+ }
14
+
15
+ type Post {
16
+ id: ID!
17
+ title: String!
18
+ content: String!
19
+ author: User!
20
+ }
21
+
22
+ type Query {
23
+ user(id: ID!): User
24
+ users(limit: Int, offset: Int): [User!]!
25
+ }
26
+
27
+ type Mutation {
28
+ createUser(email: String!, name: String!): User!
29
+ updateUser(id: ID!, name: String): User!
30
+ }
31
+ ```
32
+
33
+ ## Resolvers
34
+
35
+ ```typescript
36
+ const resolvers = {
37
+ Query: {
38
+ user: async (parent, { id }, context) => {
39
+ return await context.prisma.user.findUnique({ where: { id } });
40
+ },
41
+ users: async (parent, { limit, offset }, context) => {
42
+ return await context.prisma.user.findMany({
43
+ take: limit,
44
+ skip: offset,
45
+ });
46
+ },
47
+ },
48
+
49
+ Mutation: {
50
+ createUser: async (parent, { email, name }, context) => {
51
+ return await context.prisma.user.create({
52
+ data: { email, name },
53
+ });
54
+ },
55
+ },
56
+
57
+ User: {
58
+ posts: async (parent, args, context) => {
59
+ return await context.prisma.post.findMany({
60
+ where: { authorId: parent.id },
61
+ });
62
+ },
63
+ },
64
+ };
65
+ ```
66
+
67
+ ## N+1 Problem & DataLoader
68
+
69
+ ```typescript
70
+ // ❌ N+1 Problem
71
+ // Fetching 100 users causes 100 additional queries for posts
72
+ const users = await prisma.user.findMany(); // 1 query
73
+ for (const user of users) {
74
+ const posts = await prisma.post.findMany({ where: { authorId: user.id } }); // N queries
75
+ }
76
+
77
+ // ✅ Solution: DataLoader
78
+ import DataLoader from 'dataloader';
79
+
80
+ const postLoader = new DataLoader(async (userIds) => {
81
+ const posts = await prisma.post.findMany({
82
+ where: { authorId: { in: userIds } },
83
+ });
84
+
85
+ // Group posts by user ID
86
+ const postsByUser = {};
87
+ posts.forEach(post => {
88
+ if (!postsByUser[post.authorId]) postsByUser[post.authorId] = [];
89
+ postsByUser[post.authorId].push(post);
90
+ });
91
+
92
+ return userIds.map(id => postsByUser[id] || []);
93
+ });
94
+
95
+ // In resolver
96
+ User: {
97
+ posts: (parent, args, context) => {
98
+ return context.postLoader.load(parent.id); // Batched!
99
+ },
100
+ }
101
+ ```
102
+
103
+ ---
104
+
105
+ **Related Resources:**
106
+ - rest-api-design.md - REST comparison
@@ -0,0 +1,118 @@
1
+ # Rate Limiting
2
+
3
+ Guide to implementing rate limiting and throttling for APIs.
4
+
5
+ ## Algorithms
6
+
7
+ ### Token Bucket
8
+ ```typescript
9
+ class TokenBucket {
10
+ constructor(
11
+ private capacity: number, // Max tokens
12
+ private refillRate: number // Tokens per second
13
+ ) {}
14
+
15
+ async consume(tokens: number = 1): Promise<boolean> {
16
+ const key = `rate-limit:${userId}`;
17
+ const current = await redis.get(key) || this.capacity;
18
+
19
+ if (current >= tokens) {
20
+ await redis.decrby(key, tokens);
21
+ return true; // Allowed
22
+ }
23
+ return false; // Rate limited
24
+ }
25
+ }
26
+
27
+ // Usage: 100 requests per minute
28
+ const limiter = new TokenBucket(100, 100/60);
29
+ ```
30
+
31
+ ### Sliding Window
32
+ ```typescript
33
+ async function checkRateLimit(userId: string, limit: number, windowMs: number) {
34
+ const key = `rate-limit:${userId}`;
35
+ const now = Date.now();
36
+ const windowStart = now - windowMs;
37
+
38
+ // Remove old entries
39
+ await redis.zremrangebyscore(key, 0, windowStart);
40
+
41
+ // Count requests in window
42
+ const count = await redis.zcard(key);
43
+
44
+ if (count < limit) {
45
+ await redis.zadd(key, now, `${now}-${Math.random()}`);
46
+ await redis.expire(key, Math.ceil(windowMs / 1000));
47
+ return true; // Allowed
48
+ }
49
+
50
+ return false; // Rate limited
51
+ }
52
+
53
+ // Usage: 1000 requests per hour
54
+ await checkRateLimit(userId, 1000, 3600000);
55
+ ```
56
+
57
+ ## Express Middleware
58
+
59
+ ```typescript
60
+ import rateLimit from 'express-rate-limit';
61
+ import RedisStore from 'rate-limit-redis';
62
+ import Redis from 'ioredis';
63
+
64
+ const redis = new Redis(process.env.REDIS_URL);
65
+
66
+ const limiter = rateLimit({
67
+ store: new RedisStore({ client: redis }),
68
+ windowMs: 15 * 60 * 1000, // 15 minutes
69
+ max: 100, // 100 requests per window
70
+ message: 'Too many requests, please try again later',
71
+ standardHeaders: true,
72
+ legacyHeaders: false,
73
+ });
74
+
75
+ app.use('/api/', limiter);
76
+ ```
77
+
78
+ ## Response Headers
79
+
80
+ ```
81
+ X-RateLimit-Limit: 100
82
+ X-RateLimit-Remaining: 85
83
+ X-RateLimit-Reset: 1642348800
84
+
85
+ HTTP 429 Too Many Requests
86
+ Retry-After: 60
87
+ ```
88
+
89
+ ## Per-User vs Per-IP
90
+
91
+ ```typescript
92
+ // Per-user (authenticated)
93
+ const userLimiter = rateLimit({
94
+ keyGenerator: (req) => req.user?.id || req.ip,
95
+ max: 1000, // Higher limit for authenticated users
96
+ });
97
+
98
+ // Per-IP (unauthenticated)
99
+ const ipLimiter = rateLimit({
100
+ keyGenerator: (req) => req.ip,
101
+ max: 100, // Lower limit for anonymous users
102
+ });
103
+ ```
104
+
105
+ ## Best Practices
106
+
107
+ ✅ Use distributed rate limiting (Redis)
108
+ ✅ Return clear error messages
109
+ ✅ Include rate limit headers
110
+ ✅ Different limits for authenticated vs anonymous
111
+ ✅ Higher limits for premium users
112
+ ✅ Monitor rate limit hits
113
+
114
+ ---
115
+
116
+ **Related Resources:**
117
+ - rest-api-design.md - API design
118
+ - api-versioning.md - API versions
@@ -0,0 +1,105 @@
1
+ # REST API Design
2
+
3
+ Guide to designing RESTful APIs following best practices.
4
+
5
+ ## RESTful Principles
6
+
7
+ ```
8
+ Resources (nouns, not verbs):
9
+ ✅ GET /users/123
10
+ ✅ POST /orders
11
+ ❌ GET /getUser/123
12
+ ❌ POST /createOrder
13
+
14
+ HTTP Methods:
15
+ GET - Retrieve resource
16
+ POST - Create resource
17
+ PUT - Update entire resource
18
+ PATCH - Partial update
19
+ DELETE - Remove resource
20
+ ```
21
+
22
+ ## Resource Modeling
23
+
24
+ ```
25
+ Collection: /users
26
+ Resource: /users/123
27
+ Sub-resource: /users/123/orders
28
+ ```
29
+
30
+ ## HTTP Status Codes
31
+
32
+ ```
33
+ 200 OK - Successful GET, PUT, PATCH
34
+ 201 Created - Successful POST
35
+ 204 No Content - Successful DELETE
36
+ 400 Bad Request - Invalid input
37
+ 401 Unauthorized - Missing/invalid auth
38
+ 403 Forbidden - Authenticated but not authorized
39
+ 404 Not Found - Resource doesn't exist
40
+ 409 Conflict - Resource conflict (e.g., duplicate email)
41
+ 422 Unprocessable Entity - Validation errors
42
+ 429 Too Many Requests - Rate limit exceeded
43
+ 500 Internal Server Error - Server error
44
+ ```
45
+
46
+ ## Request/Response Examples
47
+
48
+ ```typescript
49
+ // POST /users (Create)
50
+ Request:
51
+ {
52
+ "email": "user@example.com",
53
+ "name": "John Doe"
54
+ }
55
+
56
+ Response (201 Created):
57
+ {
58
+ "id": "usr_123",
59
+ "email": "user@example.com",
60
+ "name": "John Doe",
61
+ "created_at": "2024-01-15T10:30:00Z"
62
+ }
63
+
64
+ // GET /users?page=1&limit=20 (List with pagination)
65
+ Response (200 OK):
66
+ {
67
+ "data": [...],
68
+ "pagination": {
69
+ "page": 1,
70
+ "limit": 20,
71
+ "total": 150,
72
+ "pages": 8
73
+ }
74
+ }
75
+
76
+ // PATCH /users/123 (Partial update)
77
+ Request:
78
+ {
79
+ "name": "Jane Doe"
80
+ }
81
+
82
+ Response (200 OK):
83
+ {
84
+ "id": "usr_123",
85
+ "email": "user@example.com",
86
+ "name": "Jane Doe",
87
+ "updated_at": "2024-01-15T11:00:00Z"
88
+ }
89
+ ```
90
+
91
+ ## Best Practices
92
+
93
+ ✅ Use nouns for resources
94
+ ✅ Plural resource names (/users, not /user)
95
+ ✅ Use proper HTTP methods
96
+ ✅ Return appropriate status codes
97
+ ✅ Implement pagination
98
+ ✅ Use filtering (?status=active)
99
+ ✅ Consistent error format
100
+
101
+ ---
102
+
103
+ **Related Resources:**
104
+ - api-versioning.md - API versioning
105
+ - rate-limiting.md - Rate limiting
@@ -0,0 +1,306 @@
1
+ ---
2
+ name: backend-dev-guidelines
3
+ description: Comprehensive backend development guide for Node.js/Express/TypeScript microservices. Use when creating routes, controllers, services, repositories, middleware, or working with Express APIs, Prisma database access, Sentry error tracking, Zod validation, unifiedConfig, dependency injection, or async patterns. Covers layered architecture (routes → controllers → services → repositories), BaseController pattern, error handling, performance monitoring, testing strategies, and migration from legacy patterns.
4
+ ---
5
+
6
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
7
+ 🎯 SKILL ACTIVATED: backend-dev-guidelines
8
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
9
+
10
+ # Backend Development Guidelines
11
+
12
+ ## Purpose
13
+
14
+ Establish consistency and best practices across backend microservices (blog-api, auth-service, notifications-service) using modern Node.js/Express/TypeScript patterns.
15
+
16
+ ## When to Use This Skill
17
+
18
+ Automatically activates when working on:
19
+ - Creating or modifying routes, endpoints, APIs
20
+ - Building controllers, services, repositories
21
+ - Implementing middleware (auth, validation, error handling)
22
+ - Database operations with Prisma
23
+ - Error tracking with Sentry
24
+ - Input validation with Zod
25
+ - Configuration management
26
+ - Backend testing and refactoring
27
+
28
+ ---
29
+
30
+ ## Quick Start
31
+
32
+ ### New Backend Feature Checklist
33
+
34
+ - [ ] **Route**: Clean definition, delegate to controller
35
+ - [ ] **Controller**: Extend BaseController
36
+ - [ ] **Service**: Business logic with DI
37
+ - [ ] **Repository**: Database access (if complex)
38
+ - [ ] **Validation**: Zod schema
39
+ - [ ] **Sentry**: Error tracking
40
+ - [ ] **Tests**: Unit + integration tests
41
+ - [ ] **Config**: Use unifiedConfig
42
+
43
+ ### New Microservice Checklist
44
+
45
+ - [ ] Directory structure (see [architecture-overview.md](architecture-overview.md))
46
+ - [ ] instrument.ts for Sentry
47
+ - [ ] unifiedConfig setup
48
+ - [ ] BaseController class
49
+ - [ ] Middleware stack
50
+ - [ ] Error boundary
51
+ - [ ] Testing framework
52
+
53
+ ---
54
+
55
+ ## Architecture Overview
56
+
57
+ ### Layered Architecture
58
+
59
+ ```
60
+ HTTP Request
61
+
62
+ Routes (routing only)
63
+
64
+ Controllers (request handling)
65
+
66
+ Services (business logic)
67
+
68
+ Repositories (data access)
69
+
70
+ Database (Prisma)
71
+ ```
72
+
73
+ **Key Principle:** Each layer has ONE responsibility.
74
+
75
+ See [architecture-overview.md](architecture-overview.md) for complete details.
76
+
77
+ ---
78
+
79
+ ## Directory Structure
80
+
81
+ ```
82
+ service/src/
83
+ ├── config/ # UnifiedConfig
84
+ ├── controllers/ # Request handlers
85
+ ├── services/ # Business logic
86
+ ├── repositories/ # Data access
87
+ ├── routes/ # Route definitions
88
+ ├── middleware/ # Express middleware
89
+ ├── types/ # TypeScript types
90
+ ├── validators/ # Zod schemas
91
+ ├── utils/ # Utilities
92
+ ├── tests/ # Tests
93
+ ├── instrument.ts # Sentry (FIRST IMPORT)
94
+ ├── app.ts # Express setup
95
+ └── server.ts # HTTP server
96
+ ```
97
+
98
+ **Naming Conventions:**
99
+ - Controllers: `PascalCase` - `UserController.ts`
100
+ - Services: `camelCase` - `userService.ts`
101
+ - Routes: `camelCase + Routes` - `userRoutes.ts`
102
+ - Repositories: `PascalCase + Repository` - `UserRepository.ts`
103
+
104
+ ---
105
+
106
+ ## Core Principles (7 Key Rules)
107
+
108
+ ### 1. Routes Only Route, Controllers Control
109
+
110
+ ```typescript
111
+ // ❌ NEVER: Business logic in routes
112
+ router.post('/submit', async (req, res) => {
113
+ // 200 lines of logic
114
+ });
115
+
116
+ // ✅ ALWAYS: Delegate to controller
117
+ router.post('/submit', (req, res) => controller.submit(req, res));
118
+ ```
119
+
120
+ ### 2. All Controllers Extend BaseController
121
+
122
+ ```typescript
123
+ export class UserController extends BaseController {
124
+ async getUser(req: Request, res: Response): Promise<void> {
125
+ try {
126
+ const user = await this.userService.findById(req.params.id);
127
+ this.handleSuccess(res, user);
128
+ } catch (error) {
129
+ this.handleError(error, res, 'getUser');
130
+ }
131
+ }
132
+ }
133
+ ```
134
+
135
+ ### 3. All Errors to Sentry
136
+
137
+ ```typescript
138
+ try {
139
+ await operation();
140
+ } catch (error) {
141
+ Sentry.captureException(error);
142
+ throw error;
143
+ }
144
+ ```
145
+
146
+ ### 4. Use unifiedConfig, NEVER process.env
147
+
148
+ ```typescript
149
+ // ❌ NEVER
150
+ const timeout = process.env.TIMEOUT_MS;
151
+
152
+ // ✅ ALWAYS
153
+ import { config } from './config/unifiedConfig';
154
+ const timeout = config.timeouts.default;
155
+ ```
156
+
157
+ ### 5. Validate All Input with Zod
158
+
159
+ ```typescript
160
+ const schema = z.object({ email: z.string().email() });
161
+ const validated = schema.parse(req.body);
162
+ ```
163
+
164
+ ### 6. Use Repository Pattern for Data Access
165
+
166
+ ```typescript
167
+ // Service → Repository → Database
168
+ const users = await userRepository.findActive();
169
+ ```
170
+
171
+ ### 7. Comprehensive Testing Required
172
+
173
+ ```typescript
174
+ describe('UserService', () => {
175
+ it('should create user', async () => {
176
+ expect(user).toBeDefined();
177
+ });
178
+ });
179
+ ```
180
+
181
+ ---
182
+
183
+ ## Common Imports
184
+
185
+ ```typescript
186
+ // Express
187
+ import express, { Request, Response, NextFunction, Router } from 'express';
188
+
189
+ // Validation
190
+ import { z } from 'zod';
191
+
192
+ // Database
193
+ import { PrismaClient } from '@prisma/client';
194
+ import type { Prisma } from '@prisma/client';
195
+
196
+ // Sentry
197
+ import * as Sentry from '@sentry/node';
198
+
199
+ // Config
200
+ import { config } from './config/unifiedConfig';
201
+
202
+ // Middleware
203
+ import { SSOMiddlewareClient } from './middleware/SSOMiddleware';
204
+ import { asyncErrorWrapper } from './middleware/errorBoundary';
205
+ ```
206
+
207
+ ---
208
+
209
+ ## Quick Reference
210
+
211
+ ### HTTP Status Codes
212
+
213
+ | Code | Use Case |
214
+ |------|----------|
215
+ | 200 | Success |
216
+ | 201 | Created |
217
+ | 400 | Bad Request |
218
+ | 401 | Unauthorized |
219
+ | 403 | Forbidden |
220
+ | 404 | Not Found |
221
+ | 500 | Server Error |
222
+
223
+ ### Service Templates
224
+
225
+ **Blog API** (✅ Mature) - Use as template for REST APIs
226
+ **Auth Service** (✅ Mature) - Use as template for authentication patterns
227
+
228
+ ---
229
+
230
+ ## Anti-Patterns to Avoid
231
+
232
+ ❌ Business logic in routes
233
+ ❌ Direct process.env usage
234
+ ❌ Missing error handling
235
+ ❌ No input validation
236
+ ❌ Direct Prisma everywhere
237
+ ❌ console.log instead of Sentry
238
+
239
+ ---
240
+
241
+ ## Navigation Guide
242
+
243
+ | Need to... | Read this |
244
+ |------------|-----------|
245
+ | Understand architecture | [architecture-overview.md](architecture-overview.md) |
246
+ | Create routes/controllers | [routing-and-controllers.md](routing-and-controllers.md) |
247
+ | Organize business logic | [services-and-repositories.md](services-and-repositories.md) |
248
+ | Validate input | [validation-patterns.md](validation-patterns.md) |
249
+ | Add error tracking | [sentry-and-monitoring.md](sentry-and-monitoring.md) |
250
+ | Create middleware | [middleware-guide.md](middleware-guide.md) |
251
+ | Database access | [database-patterns.md](database-patterns.md) |
252
+ | Manage config | [configuration.md](configuration.md) |
253
+ | Handle async/errors | [async-and-errors.md](async-and-errors.md) |
254
+ | Write tests | [testing-guide.md](testing-guide.md) |
255
+ | See examples | [complete-examples.md](complete-examples.md) |
256
+
257
+ ---
258
+
259
+ ## Resource Files
260
+
261
+ ### [architecture-overview.md](architecture-overview.md)
262
+ Layered architecture, request lifecycle, separation of concerns
263
+
264
+ ### [routing-and-controllers.md](routing-and-controllers.md)
265
+ Route definitions, BaseController, error handling, examples
266
+
267
+ ### [services-and-repositories.md](services-and-repositories.md)
268
+ Service patterns, DI, repository pattern, caching
269
+
270
+ ### [validation-patterns.md](validation-patterns.md)
271
+ Zod schemas, validation, DTO pattern
272
+
273
+ ### [sentry-and-monitoring.md](sentry-and-monitoring.md)
274
+ Sentry init, error capture, performance monitoring
275
+
276
+ ### [middleware-guide.md](middleware-guide.md)
277
+ Auth, audit, error boundaries, AsyncLocalStorage
278
+
279
+ ### [database-patterns.md](database-patterns.md)
280
+ PrismaService, repositories, transactions, optimization
281
+
282
+ ### [configuration.md](configuration.md)
283
+ UnifiedConfig, environment configs, secrets
284
+
285
+ ### [async-and-errors.md](async-and-errors.md)
286
+ Async patterns, custom errors, asyncErrorWrapper
287
+
288
+ ### [testing-guide.md](testing-guide.md)
289
+ Unit/integration tests, mocking, coverage
290
+
291
+ ### [complete-examples.md](complete-examples.md)
292
+ Full examples, refactoring guide
293
+
294
+ ---
295
+
296
+ ## Related Skills
297
+
298
+ - **database-verification** - Verify column names and schema consistency
299
+ - **error-tracking** - Sentry integration patterns
300
+ - **skill-developer** - Meta-skill for creating and managing skills
301
+
302
+ ---
303
+
304
+ **Skill Status**: COMPLETE ✅
305
+ **Line Count**: < 500 ✅
306
+ **Progressive Disclosure**: 11 resource files ✅