blockmine 1.21.0 → 1.23.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 (492) 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 +59 -0
  55. package/.claude/settings.local.json +36 -14
  56. package/.claude/skills/README.md +507 -0
  57. package/.claude/skills/api-engineering/SKILL.md +63 -0
  58. package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
  59. package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
  60. package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
  61. package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
  62. package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
  63. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  64. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  65. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  66. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  67. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  68. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  69. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  70. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  71. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  72. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  73. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  74. package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
  75. package/.claude/skills/build-engineering/SKILL.md +431 -0
  76. package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
  77. package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
  78. package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
  79. package/.claude/skills/build-engineering/resources/build-security.md +95 -0
  80. package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
  81. package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
  82. package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
  83. package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
  84. package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
  85. package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
  86. package/.claude/skills/cloud-engineering/SKILL.md +675 -0
  87. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
  88. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
  89. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
  90. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
  91. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
  92. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
  93. package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
  94. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
  95. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
  96. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
  97. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
  98. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
  99. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
  100. package/.claude/skills/cybersecurity/SKILL.md +409 -0
  101. package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
  102. package/.claude/skills/database-engineering/SKILL.md +61 -0
  103. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
  104. package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
  105. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
  106. package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
  107. package/.claude/skills/devsecops/SKILL.md +374 -0
  108. package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
  109. package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
  110. package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
  111. package/.claude/skills/devsecops/resources/container-security.md +915 -0
  112. package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
  113. package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
  114. package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
  115. package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
  116. package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
  117. package/.claude/skills/devsecops/resources/security-testing.md +203 -0
  118. package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
  119. package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
  120. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
  121. package/.claude/skills/documentation-as-code/SKILL.md +323 -0
  122. package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
  123. package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
  124. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
  125. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
  126. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
  127. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
  128. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
  129. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
  130. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
  131. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
  132. package/.claude/skills/engineering-management/SKILL.md +356 -0
  133. package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
  134. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
  135. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
  136. package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
  137. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
  138. package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
  139. package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
  140. package/.claude/skills/error-tracking/SKILL.md +379 -0
  141. package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
  142. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
  143. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
  144. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
  145. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
  146. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
  147. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
  148. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
  149. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
  150. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
  151. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
  152. package/.claude/skills/general-it-engineering/SKILL.md +393 -0
  153. package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
  154. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
  155. package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
  156. package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
  157. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
  158. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
  159. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
  160. package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
  161. package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
  162. package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
  163. package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
  164. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
  165. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
  166. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
  167. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
  168. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
  169. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
  170. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
  171. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
  172. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
  173. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
  174. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
  175. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
  176. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
  177. package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
  178. package/.claude/skills/network-engineering/SKILL.md +385 -0
  179. package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
  180. package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
  181. package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
  182. package/.claude/skills/network-engineering/resources/network-security.md +921 -0
  183. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
  184. package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
  185. package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
  186. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
  187. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
  188. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
  189. package/.claude/skills/observability-engineering/SKILL.md +101 -0
  190. package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
  191. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
  192. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
  193. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
  194. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
  195. package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
  196. package/.claude/skills/platform-engineering/SKILL.md +555 -0
  197. package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
  198. package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
  199. package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
  200. package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
  201. package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
  202. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
  203. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
  204. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
  205. package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
  206. package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
  207. package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
  208. package/.claude/skills/release-engineering/SKILL.md +393 -0
  209. package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
  210. package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
  211. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
  212. package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
  213. package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
  214. package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
  215. package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
  216. package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
  217. package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
  218. package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
  219. package/.claude/skills/route-tester/SKILL.md +392 -0
  220. package/.claude/skills/skill-developer/ADVANCED.md +197 -0
  221. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
  222. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
  223. package/.claude/skills/skill-developer/SKILL.md +430 -0
  224. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
  225. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
  226. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
  227. package/.claude/skills/skill-rules.json +2940 -0
  228. package/.claude/skills/sre/SKILL.md +464 -0
  229. package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
  230. package/.claude/skills/sre/resources/capacity-planning.md +226 -0
  231. package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
  232. package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
  233. package/.claude/skills/sre/resources/incident-management.md +436 -0
  234. package/.claude/skills/sre/resources/observability-stack.md +240 -0
  235. package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
  236. package/.claude/skills/sre/resources/performance-optimization.md +108 -0
  237. package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
  238. package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
  239. package/.claude/skills/sre/resources/toil-reduction.md +145 -0
  240. package/.claude/skills/systems-engineering/SKILL.md +648 -0
  241. package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
  242. package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
  243. package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
  244. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
  245. package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
  246. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
  247. package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
  248. package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
  249. package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
  250. package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
  251. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
  252. package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
  253. package/.claude/skills/technical-leadership/SKILL.md +728 -0
  254. package/CHANGELOG.md +102 -42
  255. package/CLAUDE.md +284 -0
  256. package/README.md +315 -71
  257. package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
  258. package/backend/jest.config.js +59 -0
  259. package/backend/package-lock.json +6801 -0
  260. package/backend/package.json +24 -4
  261. package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
  262. package/backend/prisma/migrations/20251116111851_add_execution_trace/migration.sql +22 -0
  263. package/backend/prisma/migrations/20251120154914_add_panel_api_keys/migration.sql +21 -0
  264. package/backend/prisma/migrations/20251121110241_add_proxy_table/migration.sql +45 -0
  265. package/backend/prisma/migrations/migration_lock.toml +2 -2
  266. package/backend/prisma/schema.prisma +103 -1
  267. package/backend/src/__tests__/core/DependencyService.test.js +336 -0
  268. package/backend/src/__tests__/core/UserService.test.js +875 -0
  269. package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
  270. package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
  271. package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
  272. package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
  273. package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
  274. package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
  275. package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
  276. package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
  277. package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
  278. package/backend/src/__tests__/secretsFilter.test.js +425 -0
  279. package/backend/src/__tests__/services/BotLifecycleService.test.js +416 -0
  280. package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
  281. package/backend/src/__tests__/services/CacheManager.test.js +125 -0
  282. package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
  283. package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
  284. package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
  285. package/backend/src/__tests__/setup.js +25 -0
  286. package/backend/src/ai/plugin-assistant-system-prompt.md +788 -0
  287. package/backend/src/api/middleware/auth.js +27 -0
  288. package/backend/src/api/middleware/botAccess.js +7 -3
  289. package/backend/src/api/middleware/panelApiAuth.js +135 -0
  290. package/backend/src/api/routes/aiAssistant.js +995 -0
  291. package/backend/src/api/routes/apiKeys.js +181 -0
  292. package/backend/src/api/routes/auth.js +669 -633
  293. package/backend/src/api/routes/botCommands.js +107 -0
  294. package/backend/src/api/routes/botGroups.js +165 -0
  295. package/backend/src/api/routes/botHistory.js +108 -0
  296. package/backend/src/api/routes/botPermissions.js +99 -0
  297. package/backend/src/api/routes/botStatus.js +36 -0
  298. package/backend/src/api/routes/botUsers.js +162 -0
  299. package/backend/src/api/routes/bots.js +2451 -2360
  300. package/backend/src/api/routes/eventGraphs.js +4 -1
  301. package/backend/src/api/routes/logs.js +13 -3
  302. package/backend/src/api/routes/panel.js +66 -66
  303. package/backend/src/api/routes/panelApiKeys.js +179 -0
  304. package/backend/src/api/routes/pluginIde.js +1715 -135
  305. package/backend/src/api/routes/plugins.js +376 -218
  306. package/backend/src/api/routes/proxies.js +130 -0
  307. package/backend/src/api/routes/search.js +4 -0
  308. package/backend/src/api/routes/servers.js +20 -3
  309. package/backend/src/api/routes/settings.js +5 -0
  310. package/backend/src/api/routes/system.js +174 -0
  311. package/backend/src/api/routes/traces.js +131 -0
  312. package/backend/src/config/debug.config.js +36 -0
  313. package/backend/src/container.js +82 -0
  314. package/backend/src/core/BotHistoryStore.js +180 -0
  315. package/backend/src/core/BotManager.js +149 -868
  316. package/backend/src/core/BotManager.old.js +1093 -0
  317. package/backend/src/core/BotProcess.js +850 -191
  318. package/backend/src/core/EventGraphManager.js +194 -198
  319. package/backend/src/core/GraphExecutionEngine.js +709 -57
  320. package/backend/src/core/MessageQueue.js +39 -12
  321. package/backend/src/core/NodeRegistry.js +37 -1134
  322. package/backend/src/core/PluginLoader.js +99 -5
  323. package/backend/src/core/PluginManager.js +126 -15
  324. package/backend/src/core/PrismaService.js +32 -0
  325. package/backend/src/core/TaskScheduler.js +1 -1
  326. package/backend/src/core/UserService.js +3 -3
  327. package/backend/src/core/__tests__/PrismaService.test.js +24 -0
  328. package/backend/src/core/commands/README.md +305 -0
  329. package/backend/src/core/commands/dev.js +13 -7
  330. package/backend/src/core/commands/ping.js +10 -4
  331. package/backend/src/core/commands/whois.js +63 -0
  332. package/backend/src/core/config/validation.js +27 -0
  333. package/backend/src/core/constants/graphTypes.js +21 -0
  334. package/backend/src/core/node-registries/actions.js +202 -0
  335. package/backend/src/core/node-registries/arrays.js +155 -0
  336. package/backend/src/core/node-registries/bot.js +23 -0
  337. package/backend/src/core/node-registries/data.js +290 -0
  338. package/backend/src/core/node-registries/debug.js +26 -0
  339. package/backend/src/core/node-registries/events.js +201 -0
  340. package/backend/src/core/node-registries/flow.js +139 -0
  341. package/backend/src/core/node-registries/logic.js +62 -0
  342. package/backend/src/core/node-registries/math.js +42 -0
  343. package/backend/src/core/node-registries/objects.js +98 -0
  344. package/backend/src/core/node-registries/strings.js +187 -0
  345. package/backend/src/core/node-registries/time.js +113 -0
  346. package/backend/src/core/node-registries/type.js +25 -0
  347. package/backend/src/core/node-registries/users.js +79 -0
  348. package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
  349. package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
  350. package/backend/src/core/nodes/actions/create_command.js +189 -0
  351. package/backend/src/core/nodes/actions/delete_command.js +92 -0
  352. package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
  353. package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
  354. package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
  355. package/backend/src/core/nodes/actions/update_command.js +133 -0
  356. package/backend/src/core/nodes/arrays/get_next.js +35 -0
  357. package/backend/src/core/nodes/arrays/join.js +28 -0
  358. package/backend/src/core/nodes/{data_cast.js → data/cast.js} +10 -1
  359. package/backend/src/core/nodes/data/datetime_literal.js +27 -0
  360. package/backend/src/core/nodes/data/entity_info.js +69 -0
  361. package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
  362. package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
  363. package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
  364. package/backend/src/core/nodes/data/type_check.js +53 -0
  365. package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
  366. package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
  367. package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
  368. package/backend/src/core/nodes/flow/delay.js +43 -0
  369. package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
  370. package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
  371. package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
  372. package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
  373. package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
  374. package/backend/src/core/nodes/logic/not.js +22 -0
  375. package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
  376. package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
  377. package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +1 -1
  378. package/backend/src/core/nodes/strings/to_lower.js +22 -0
  379. package/backend/src/core/nodes/strings/to_upper.js +22 -0
  380. package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
  381. package/backend/src/core/nodes/time/add.js +33 -0
  382. package/backend/src/core/nodes/time/compare.js +35 -0
  383. package/backend/src/core/nodes/time/diff.js +29 -0
  384. package/backend/src/core/nodes/time/format.js +32 -0
  385. package/backend/src/core/nodes/time/now.js +18 -0
  386. package/backend/src/core/nodes/type/to_string.js +32 -0
  387. package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
  388. package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
  389. package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
  390. package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
  391. package/backend/src/core/services/BotLifecycleService.js +835 -0
  392. package/backend/src/core/services/BotProcessManager.js +163 -0
  393. package/backend/src/core/services/CacheManager.js +111 -0
  394. package/backend/src/core/services/CommandExecutionService.js +430 -0
  395. package/backend/src/core/services/DebugSessionManager.js +347 -0
  396. package/backend/src/core/services/GraphCollaborationManager.js +501 -0
  397. package/backend/src/core/services/MinecraftBotManager.js +259 -0
  398. package/backend/src/core/services/MinecraftViewerService.js +216 -0
  399. package/backend/src/core/services/ResourceMonitorService.js +90 -0
  400. package/backend/src/core/services/TelemetryService.js +124 -0
  401. package/backend/src/core/services/TraceCollectorService.js +545 -0
  402. package/backend/src/core/services/ValidationService.js +132 -0
  403. package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
  404. package/backend/src/core/services.js +20 -5
  405. package/backend/src/core/system/CommandContext.js +84 -0
  406. package/backend/src/core/system/RuntimeCommandRegistry.js +116 -0
  407. package/backend/src/core/system/Transport.js +74 -0
  408. package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
  409. package/backend/src/core/utils/jsonParser.js +18 -0
  410. package/backend/src/core/utils/secretsFilter.js +262 -0
  411. package/backend/src/core/utils/variableParser.js +89 -0
  412. package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
  413. package/backend/src/core/validation/nodeSchemas.js +112 -0
  414. package/backend/src/lib/prisma.js +2 -4
  415. package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
  416. package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
  417. package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
  418. package/backend/src/real-time/botApi/handlers/index.js +43 -0
  419. package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
  420. package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
  421. package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
  422. package/backend/src/real-time/botApi/index.js +40 -0
  423. package/backend/src/real-time/botApi/middleware.js +79 -0
  424. package/backend/src/real-time/botApi/utils.js +65 -0
  425. package/backend/src/real-time/panelNamespace.js +387 -0
  426. package/backend/src/real-time/presence.js +7 -2
  427. package/backend/src/real-time/socketHandler.js +400 -5
  428. package/backend/src/repositories/BaseRepository.js +43 -0
  429. package/backend/src/repositories/BotRepository.js +42 -0
  430. package/backend/src/repositories/CommandRepository.js +53 -0
  431. package/backend/src/repositories/EventGraphRepository.js +40 -0
  432. package/backend/src/repositories/GroupRepository.js +69 -0
  433. package/backend/src/repositories/PermissionRepository.js +48 -0
  434. package/backend/src/repositories/PluginRepository.js +42 -0
  435. package/backend/src/repositories/ServerRepository.js +27 -0
  436. package/backend/src/repositories/UserRepository.js +48 -0
  437. package/backend/src/server.js +21 -0
  438. package/backend/src/test-refactor.js +85 -0
  439. package/frontend/dist/assets/index-B1serztM.js +11210 -0
  440. package/frontend/dist/assets/index-t6K1u4OV.css +32 -0
  441. package/frontend/dist/index.html +2 -2
  442. package/frontend/package-lock.json +9437 -0
  443. package/frontend/package.json +8 -5
  444. package/package.json +3 -2
  445. package/screen/console.png +0 -0
  446. package/screen/dashboard.png +0 -0
  447. package/screen/graph_collabe.png +0 -0
  448. package/screen/graph_live_debug.png +0 -0
  449. package/screen/management_command.png +0 -0
  450. package/screen/node_debug_trace.png +0 -0
  451. package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
  452. package/screen/websocket.png +0 -0
  453. package/screen//320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270_/320/276/321/202/320/264/320/265/320/273/321/214/320/275/321/213/321/205_/320/272/320/276/320/274/320/260/320/275/320/264_/320/272/320/260/320/266/320/264/321/203_/320/272/320/276/320/274/320/260/320/275/320/273/320/264/321/203_/320/274/320/276/320/266/320/275/320/276_/320/275/320/260/321/201/321/202/321/200/320/260/320/270/320/262/320/260/321/202/321/214.png +0 -0
  454. package/screen//320/277/320/273/320/260/320/275/320/270/321/200/320/276/320/262/321/211/320/270/320/272_/320/274/320/276/320/266/320/275/320/276_/320/267/320/260/320/264/320/260/320/262/320/260/321/202/321/214_/320/264/320/265/320/271/321/201/321/202/320/262/320/270/321/217_/320/277/320/276_/320/262/321/200/320/265/320/274/320/265/320/275/320/270.png +0 -0
  455. package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
  456. package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
  457. package/nul +0 -0
  458. /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
  459. /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
  460. /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
  461. /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
  462. /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
  463. /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
  464. /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
  465. /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
  466. /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
  467. /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
  468. /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
  469. /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
  470. /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
  471. /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
  472. /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
  473. /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
  474. /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
  475. /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
  476. /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
  477. /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
  478. /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
  479. /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
  480. /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
  481. /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
  482. /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
  483. /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
  484. /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
  485. /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
  486. /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
  487. /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
  488. /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
  489. /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
  490. /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
  491. /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
  492. /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
@@ -0,0 +1,427 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync } from 'fs';
3
+ import { join, dirname } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ import { exec } from 'child_process';
6
+ import { promisify } from 'util';
7
+
8
+ const execAsync = promisify(exec);
9
+
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+
13
+ interface TestCase {
14
+ domain: string;
15
+ prompt: string;
16
+ expectedSkills: string[];
17
+ description: string;
18
+ }
19
+
20
+ const TEST_CASES: TestCase[] = [
21
+ // Development Skills
22
+ {
23
+ domain: "Backend Development",
24
+ prompt: "I need to create a new API endpoint for user authentication",
25
+ expectedSkills: ["backend-dev-guidelines"],
26
+ description: "API endpoint creation"
27
+ },
28
+ {
29
+ domain: "Backend Development",
30
+ prompt: "How do I implement middleware for request validation?",
31
+ expectedSkills: ["backend-dev-guidelines"],
32
+ description: "Middleware implementation"
33
+ },
34
+ {
35
+ domain: "Backend Development",
36
+ prompt: "I want to add a new route to my Express server",
37
+ expectedSkills: ["backend-dev-guidelines"],
38
+ description: "Express routing"
39
+ },
40
+ {
41
+ domain: "Frontend Development",
42
+ prompt: "Create a React component for displaying user profiles",
43
+ expectedSkills: ["frontend-dev-guidelines"],
44
+ description: "React component creation"
45
+ },
46
+ {
47
+ domain: "Frontend Development",
48
+ prompt: "I need to add a modal dialog with MUI",
49
+ expectedSkills: ["frontend-dev-guidelines"],
50
+ description: "MUI component usage"
51
+ },
52
+ {
53
+ domain: "Frontend Development",
54
+ prompt: "How do I use Suspense for data fetching?",
55
+ expectedSkills: ["frontend-dev-guidelines"],
56
+ description: "Suspense pattern"
57
+ },
58
+ {
59
+ domain: "Error Tracking",
60
+ prompt: "I need to add Sentry error tracking to my service",
61
+ expectedSkills: ["error-tracking", "backend-dev-guidelines"],
62
+ description: "Sentry integration"
63
+ },
64
+ {
65
+ domain: "Error Tracking",
66
+ prompt: "How do I capture exceptions in my controllers?",
67
+ expectedSkills: ["error-tracking", "backend-dev-guidelines"],
68
+ description: "Exception capture"
69
+ },
70
+ {
71
+ domain: "Route Testing",
72
+ prompt: "I want to test my API routes with authentication",
73
+ expectedSkills: ["route-tester", "backend-dev-guidelines"],
74
+ description: "Authenticated route testing"
75
+ },
76
+
77
+ // Infrastructure Skills
78
+ {
79
+ domain: "Cloud Engineering",
80
+ prompt: "I need to deploy my application to AWS",
81
+ expectedSkills: ["cloud-engineering"],
82
+ description: "AWS deployment"
83
+ },
84
+ {
85
+ domain: "Cloud Engineering",
86
+ prompt: "How do I set up a serverless architecture with Lambda?",
87
+ expectedSkills: ["cloud-engineering"],
88
+ description: "Serverless with Lambda"
89
+ },
90
+ {
91
+ domain: "Cloud Engineering",
92
+ prompt: "What's the best way to optimize cloud costs?",
93
+ expectedSkills: ["cloud-engineering", "budget-and-cost-management"],
94
+ description: "Cloud cost optimization"
95
+ },
96
+ {
97
+ domain: "Cloud Engineering",
98
+ prompt: "We need to deploy to Azure Government cloud for FedRAMP compliance",
99
+ expectedSkills: ["cloud-engineering", "devsecops"],
100
+ description: "Government cloud with compliance"
101
+ },
102
+ {
103
+ domain: "Kubernetes",
104
+ prompt: "I need to set up a Kubernetes cluster for production",
105
+ expectedSkills: ["platform-engineering"],
106
+ description: "Kubernetes setup"
107
+ },
108
+ {
109
+ domain: "Kubernetes",
110
+ prompt: "How do I configure Helm charts for my application?",
111
+ expectedSkills: ["platform-engineering"],
112
+ description: "Helm configuration"
113
+ },
114
+ {
115
+ domain: "Security",
116
+ prompt: "I need to implement security scanning in my CI/CD pipeline",
117
+ expectedSkills: ["devsecops"],
118
+ description: "Security scanning setup"
119
+ },
120
+ {
121
+ domain: "Security",
122
+ prompt: "How do I secure container images?",
123
+ expectedSkills: ["devsecops"],
124
+ description: "Container security"
125
+ },
126
+ {
127
+ domain: "Security",
128
+ prompt: "We need to pass a CMMC audit",
129
+ expectedSkills: ["devsecops"],
130
+ description: "CMMC compliance"
131
+ },
132
+ {
133
+ domain: "SRE",
134
+ prompt: "I need to define SLOs for our service",
135
+ expectedSkills: ["sre"],
136
+ description: "SLO definition"
137
+ },
138
+ {
139
+ domain: "SRE",
140
+ prompt: "How do I set up monitoring and alerting?",
141
+ expectedSkills: ["sre", "observability-engineering"],
142
+ description: "Monitoring setup"
143
+ },
144
+ {
145
+ domain: "SRE",
146
+ prompt: "We're having an outage, how do I debug?",
147
+ expectedSkills: ["sre"],
148
+ description: "Incident response"
149
+ },
150
+ {
151
+ domain: "Architecture",
152
+ prompt: "I need to design a multi-region architecture",
153
+ expectedSkills: ["infrastructure-architecture"],
154
+ description: "Multi-region design"
155
+ },
156
+ {
157
+ domain: "Architecture",
158
+ prompt: "How do I write an ADR for our system?",
159
+ expectedSkills: ["infrastructure-architecture"],
160
+ description: "ADR creation"
161
+ },
162
+ {
163
+ domain: "Architecture",
164
+ prompt: "We need disaster recovery planning",
165
+ expectedSkills: ["infrastructure-architecture"],
166
+ description: "DR planning"
167
+ },
168
+ {
169
+ domain: "Database",
170
+ prompt: "My PostgreSQL queries are slow",
171
+ expectedSkills: ["database-engineering"],
172
+ description: "Query optimization"
173
+ },
174
+ {
175
+ domain: "Database",
176
+ prompt: "How do I set up database replication?",
177
+ expectedSkills: ["database-engineering"],
178
+ description: "Database replication"
179
+ },
180
+ {
181
+ domain: "Observability",
182
+ prompt: "I need to implement distributed tracing",
183
+ expectedSkills: ["observability-engineering"],
184
+ description: "Distributed tracing"
185
+ },
186
+ {
187
+ domain: "Observability",
188
+ prompt: "How do I set up OpenTelemetry?",
189
+ expectedSkills: ["observability-engineering"],
190
+ description: "OpenTelemetry setup"
191
+ },
192
+ {
193
+ domain: "API Design",
194
+ prompt: "I'm designing a GraphQL API",
195
+ expectedSkills: ["api-engineering"],
196
+ description: "GraphQL design"
197
+ },
198
+ {
199
+ domain: "API Design",
200
+ prompt: "How do I implement rate limiting for my API?",
201
+ expectedSkills: ["api-engineering", "backend-dev-guidelines"],
202
+ description: "Rate limiting"
203
+ },
204
+
205
+ // Management Skills
206
+ {
207
+ domain: "Engineering Management",
208
+ prompt: "I need to hire a senior engineer",
209
+ expectedSkills: ["engineering-management"],
210
+ description: "Hiring process"
211
+ },
212
+ {
213
+ domain: "Engineering Management",
214
+ prompt: "How do I structure my team for better productivity?",
215
+ expectedSkills: ["engineering-management"],
216
+ description: "Team structure"
217
+ },
218
+ {
219
+ domain: "Engineering Management",
220
+ prompt: "I need to prepare for 1-on-1s with my reports",
221
+ expectedSkills: ["engineering-management"],
222
+ description: "1-on-1 preparation"
223
+ },
224
+ {
225
+ domain: "Technical Leadership",
226
+ prompt: "My team wants to rewrite everything in Rust",
227
+ expectedSkills: ["technical-leadership"],
228
+ description: "Technology decision"
229
+ },
230
+ {
231
+ domain: "Technical Leadership",
232
+ prompt: "Should we adopt microservices architecture?",
233
+ expectedSkills: ["technical-leadership", "infrastructure-architecture"],
234
+ description: "Architecture decision"
235
+ },
236
+ {
237
+ domain: "Technical Leadership",
238
+ prompt: "How do I evaluate this technical proposal?",
239
+ expectedSkills: ["technical-leadership"],
240
+ description: "Proposal evaluation"
241
+ },
242
+ {
243
+ domain: "Infrastructure Strategy",
244
+ prompt: "Should we build or buy our authentication system?",
245
+ expectedSkills: ["infrastructure-strategy"],
246
+ description: "Build vs buy decision"
247
+ },
248
+ {
249
+ domain: "Infrastructure Strategy",
250
+ prompt: "I need to create a 3-year infrastructure roadmap",
251
+ expectedSkills: ["infrastructure-strategy"],
252
+ description: "Multi-year roadmap"
253
+ },
254
+ {
255
+ domain: "Budget Management",
256
+ prompt: "Our AWS bill is too high, how do I reduce costs?",
257
+ expectedSkills: ["budget-and-cost-management", "cloud-engineering"],
258
+ description: "Cost reduction"
259
+ },
260
+ {
261
+ domain: "Budget Management",
262
+ prompt: "I need to prepare an infrastructure budget request",
263
+ expectedSkills: ["budget-and-cost-management"],
264
+ description: "Budget planning"
265
+ },
266
+ {
267
+ domain: "Operations Management",
268
+ prompt: "How do I set up an on-call rotation?",
269
+ expectedSkills: ["engineering-operations-management"],
270
+ description: "On-call setup"
271
+ },
272
+ {
273
+ domain: "Operations Management",
274
+ prompt: "We need to write a postmortem for the outage",
275
+ expectedSkills: ["engineering-operations-management", "sre"],
276
+ description: "Postmortem process"
277
+ },
278
+
279
+ // Skill Development
280
+ {
281
+ domain: "Skill Development",
282
+ prompt: "How do I create a new Claude Code skill?",
283
+ expectedSkills: ["skill-developer"],
284
+ description: "Skill creation"
285
+ },
286
+ {
287
+ domain: "Skill Development",
288
+ prompt: "I need to modify skill-rules.json",
289
+ expectedSkills: ["skill-developer"],
290
+ description: "Skill rules modification"
291
+ },
292
+ {
293
+ domain: "Skill Development",
294
+ prompt: "How do skill triggers work?",
295
+ expectedSkills: ["skill-developer"],
296
+ description: "Skill triggers understanding"
297
+ },
298
+
299
+ // Mixed/Complex Scenarios
300
+ {
301
+ domain: "Full Stack Project",
302
+ prompt: "I'm building a web app with React frontend and Express backend",
303
+ expectedSkills: ["frontend-dev-guidelines", "backend-dev-guidelines"],
304
+ description: "Full stack development"
305
+ },
306
+ {
307
+ domain: "Cloud Migration",
308
+ prompt: "We need to migrate our monolith to microservices on AWS",
309
+ expectedSkills: ["cloud-engineering", "infrastructure-architecture"],
310
+ description: "Cloud migration planning"
311
+ },
312
+ {
313
+ domain: "Secure Production",
314
+ prompt: "I need to deploy to production with security scanning and monitoring",
315
+ expectedSkills: ["devsecops", "platform-engineering", "observability-engineering"],
316
+ description: "Secure production deployment"
317
+ },
318
+ {
319
+ domain: "Compliance & Cloud",
320
+ prompt: "Deploy HIPAA-compliant healthcare app to AWS",
321
+ expectedSkills: ["cloud-engineering", "devsecops"],
322
+ description: "Compliance cloud deployment"
323
+ },
324
+ ];
325
+
326
+ async function testHook(prompt: string): Promise<string> {
327
+ const projectDir = join(__dirname, '..', '..');
328
+ const hookScript = join(__dirname, 'skill-activation-prompt.sh');
329
+ const input = JSON.stringify({
330
+ session_id: "test-session",
331
+ prompt: prompt,
332
+ cwd: process.cwd(),
333
+ permission_mode: "acceptEdits",
334
+ transcript_path: "/tmp/test"
335
+ });
336
+
337
+ try {
338
+ const { stdout } = await execAsync(`export CLAUDE_PROJECT_DIR="${projectDir}" && echo '${input.replace(/'/g, "'\\''")}' | ${hookScript}`);
339
+ return stdout;
340
+ } catch (error: any) {
341
+ return error.stdout || '';
342
+ }
343
+ }
344
+
345
+ function extractSkillsFromOutput(output: string): string[] {
346
+ const skills: string[] = [];
347
+ const lines = output.split('\n');
348
+
349
+ for (const line of lines) {
350
+ if (line.trim().startsWith('→')) {
351
+ const match = line.match(/→\s*([a-z-]+)/);
352
+ if (match) {
353
+ skills.push(match[1]);
354
+ }
355
+ }
356
+ }
357
+
358
+ return skills;
359
+ }
360
+
361
+ async function runTests() {
362
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
363
+ console.log('🧪 COMPREHENSIVE SKILL ACTIVATION TESTING');
364
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
365
+
366
+ let passed = 0;
367
+ let failed = 0;
368
+ let warnings = 0;
369
+
370
+ for (const testCase of TEST_CASES) {
371
+ console.log(`\n📝 Testing: ${testCase.domain} - ${testCase.description}`);
372
+ console.log(` Prompt: "${testCase.prompt}"`);
373
+ console.log(` Expected skills: ${testCase.expectedSkills.join(', ')}`);
374
+
375
+ const output = await testHook(testCase.prompt);
376
+ const detectedSkills = extractSkillsFromOutput(output);
377
+
378
+ console.log(` Detected skills: ${detectedSkills.length > 0 ? detectedSkills.join(', ') : 'none'}`);
379
+
380
+ // Check if at least one expected skill was detected
381
+ const hasExpectedSkill = testCase.expectedSkills.some(expected =>
382
+ detectedSkills.includes(expected)
383
+ );
384
+
385
+ if (hasExpectedSkill) {
386
+ console.log(` ✅ PASS - Detected expected skill(s)`);
387
+ passed++;
388
+
389
+ // Warn if extra skills detected
390
+ const extraSkills = detectedSkills.filter(s => !testCase.expectedSkills.includes(s));
391
+ if (extraSkills.length > 0) {
392
+ console.log(` ⚠️ Additional skills detected: ${extraSkills.join(', ')}`);
393
+ warnings++;
394
+ }
395
+ } else if (detectedSkills.length === 0) {
396
+ console.log(` ❌ FAIL - No skills detected`);
397
+ failed++;
398
+ } else {
399
+ console.log(` ⚠️ PARTIAL - Detected different skills: ${detectedSkills.join(', ')}`);
400
+ warnings++;
401
+ }
402
+ }
403
+
404
+ console.log('\n');
405
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
406
+ console.log('📊 TEST RESULTS');
407
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
408
+ console.log(` Total Tests: ${TEST_CASES.length}`);
409
+ console.log(` ✅ Passed: ${passed}`);
410
+ console.log(` ❌ Failed: ${failed}`);
411
+ console.log(` ⚠️ Warnings: ${warnings}`);
412
+ console.log(` Success Rate: ${((passed / TEST_CASES.length) * 100).toFixed(1)}%`);
413
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
414
+
415
+ if (failed > 0) {
416
+ console.log('⚠️ Some tests failed. Review the skill-rules.json patterns.');
417
+ process.exit(1);
418
+ } else {
419
+ console.log('✅ All tests passed! Skill activation system is working correctly.');
420
+ process.exit(0);
421
+ }
422
+ }
423
+
424
+ runTests().catch(err => {
425
+ console.error('Error running tests:', err);
426
+ process.exit(1);
427
+ });
@@ -0,0 +1,79 @@
1
+ #!/bin/bash
2
+ echo "Hook triggered at $(date)" >> /tmp/claude-hook-debug.log
3
+ echo "Args: $@" >> /tmp/claude-hook-debug.log
4
+ echo "Stdin:" >> /tmp/claude-hook-debug.log
5
+ cat >> /tmp/claude-hook-debug.log
6
+
7
+ # Add detailed debugging
8
+ echo "=== DEBUG SECTION ===" >> /tmp/claude-hook-debug.log
9
+ echo "CLAUDE_PROJECT_DIR: $CLAUDE_PROJECT_DIR" >> /tmp/claude-hook-debug.log
10
+ echo "Current working directory: $(pwd)" >> /tmp/claude-hook-debug.log
11
+
12
+ # Define the service directories to check
13
+ services_dirs=("email" "exports" "form" "frontend" "projects" "uploads" "users" "utilities" "events" "database")
14
+ services_with_changes=()
15
+
16
+ # Check each service directory for git changes
17
+ for service in "${services_dirs[@]}"; do
18
+ service_path="$CLAUDE_PROJECT_DIR/$service"
19
+ echo "Checking service: $service at $service_path" >> /tmp/claude-hook-debug.log
20
+
21
+ # Check if directory exists and is a git repo
22
+ if [ -d "$service_path" ] && [ -d "$service_path/.git" ]; then
23
+ echo " -> Is a git repository" >> /tmp/claude-hook-debug.log
24
+
25
+ # Check for changes in this specific repo
26
+ cd "$service_path"
27
+ git_status=$(git status --porcelain 2>/dev/null)
28
+
29
+ if [ -n "$git_status" ]; then
30
+ echo " -> Has changes:" >> /tmp/claude-hook-debug.log
31
+ echo "$git_status" | sed 's/^/ /' >> /tmp/claude-hook-debug.log
32
+ services_with_changes+=("$service")
33
+ else
34
+ echo " -> No changes" >> /tmp/claude-hook-debug.log
35
+ fi
36
+ else
37
+ echo " -> Not a git repository or doesn't exist" >> /tmp/claude-hook-debug.log
38
+ fi
39
+ done
40
+
41
+ # Return to original directory
42
+ cd "$CLAUDE_PROJECT_DIR"
43
+
44
+ echo "Services with changes: ${services_with_changes[@]}" >> /tmp/claude-hook-debug.log
45
+
46
+ if [[ ${#services_with_changes[@]} -gt 0 ]]; then
47
+ services_list=$(IFS=', '; echo "${services_with_changes[*]}")
48
+ echo "Changes detected in: $services_list — triggering build-error-resolver..." >> /tmp/claude-hook-debug.log
49
+ echo "Changes detected in: $services_list — triggering build-error-resolver..." >&2
50
+
51
+ # Use the correct Claude CLI syntax - try different options
52
+ echo "Attempting to run claude with sub-agent..." >> /tmp/claude-hook-debug.log
53
+
54
+ # Try different possible syntaxes for sub-agents
55
+ if command -v claude >/dev/null 2>&1; then
56
+ # Option 1: Try direct agent invocation
57
+ claude --agent build-error-resolver <<EOF 2>> /tmp/claude-hook-debug.log
58
+ Build and fix errors in these specific services only: ${services_list}
59
+
60
+ Focus on these services in the monorepo structure. Each service has its own build process.
61
+ EOF
62
+
63
+ # If that fails, try alternative syntax
64
+ if [ $? -ne 0 ]; then
65
+ echo "First attempt failed, trying alternative syntax..." >> /tmp/claude-hook-debug.log
66
+ claude chat "Use the build-error-resolver agent to build and fix errors in: ${services_list}" 2>> /tmp/claude-hook-debug.log
67
+ fi
68
+ else
69
+ echo "Claude CLI not found in PATH" >> /tmp/claude-hook-debug.log
70
+ fi
71
+
72
+ echo "Claude command completed with exit code: $?" >> /tmp/claude-hook-debug.log
73
+ else
74
+ echo "No services with changes detected — skipping build-error-resolver." >> /tmp/claude-hook-debug.log
75
+ echo "No services with changes detected — skipping build-error-resolver." >&2
76
+ fi
77
+
78
+ echo "=== END DEBUG SECTION ===" >> /tmp/claude-hook-debug.log
79
+ exit 0
@@ -0,0 +1,173 @@
1
+ #!/bin/bash
2
+
3
+ # TSC Hook with Visible Output
4
+ # Uses stderr for visibility in Claude Code main interface
5
+
6
+ export CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$HOME/project}"
7
+ HOOK_INPUT=$(cat)
8
+ SESSION_ID="${session_id:-default}"
9
+ CACHE_DIR="$HOME/.claude/tsc-cache/$SESSION_ID"
10
+
11
+ # Create cache directory
12
+ mkdir -p "$CACHE_DIR"
13
+
14
+ # Extract tool name and input
15
+ TOOL_NAME=$(echo "$HOOK_INPUT" | jq -r '.tool_name // ""')
16
+ TOOL_INPUT=$(echo "$HOOK_INPUT" | jq -r '.tool_input // {}')
17
+
18
+ # Function to get repo for a file
19
+ get_repo_for_file() {
20
+ local file_path="$1"
21
+ local relative_path="${file_path#$CLAUDE_PROJECT_DIR/}"
22
+
23
+ if [[ "$relative_path" =~ ^([^/]+)/ ]]; then
24
+ local repo="${BASH_REMATCH[1]}"
25
+ case "$repo" in
26
+ email|exports|form|frontend|projects|uploads|users|utilities|events|database)
27
+ echo "$repo"
28
+ return 0
29
+ ;;
30
+ esac
31
+ fi
32
+ echo ""
33
+ return 1
34
+ }
35
+
36
+ # Function to detect the correct TSC command for a repo
37
+ get_tsc_command() {
38
+ local repo_path="$1"
39
+ cd "$repo_path" 2>/dev/null || return 1
40
+
41
+ if [ -f "tsconfig.app.json" ]; then
42
+ echo "npx tsc --project tsconfig.app.json --noEmit"
43
+ elif [ -f "tsconfig.build.json" ]; then
44
+ echo "npx tsc --project tsconfig.build.json --noEmit"
45
+ elif [ -f "tsconfig.json" ]; then
46
+ if grep -q '"references"' tsconfig.json 2>/dev/null; then
47
+ if [ -f "tsconfig.app.json" ]; then
48
+ echo "npx tsc --project tsconfig.app.json --noEmit"
49
+ elif [ -f "tsconfig.src.json" ]; then
50
+ echo "npx tsc --project tsconfig.src.json --noEmit"
51
+ else
52
+ echo "npx tsc --build --noEmit"
53
+ fi
54
+ else
55
+ echo "npx tsc --noEmit"
56
+ fi
57
+ else
58
+ echo "npx tsc --noEmit"
59
+ fi
60
+ }
61
+
62
+ # Function to run TSC check
63
+ run_tsc_check() {
64
+ local repo="$1"
65
+ local repo_path="$CLAUDE_PROJECT_DIR/$repo"
66
+ local cache_file="$CACHE_DIR/$repo-tsc-cmd.cache"
67
+
68
+ cd "$repo_path" 2>/dev/null || return 1
69
+
70
+ # Get or cache the TSC command for this repo
71
+ local tsc_cmd
72
+ if [ -f "$cache_file" ] && [ -z "$FORCE_DETECT" ]; then
73
+ tsc_cmd=$(cat "$cache_file")
74
+ else
75
+ tsc_cmd=$(get_tsc_command "$repo_path")
76
+ echo "$tsc_cmd" > "$cache_file"
77
+ fi
78
+
79
+ eval "$tsc_cmd" 2>&1
80
+ }
81
+
82
+ # Only process file modification tools
83
+ case "$TOOL_NAME" in
84
+ Write|Edit|MultiEdit)
85
+ # Extract file paths
86
+ if [ "$TOOL_NAME" = "MultiEdit" ]; then
87
+ FILE_PATHS=$(echo "$TOOL_INPUT" | jq -r '.edits[].file_path // empty')
88
+ else
89
+ FILE_PATHS=$(echo "$TOOL_INPUT" | jq -r '.file_path // empty')
90
+ fi
91
+
92
+ # Collect repos that need checking (only for TS/JS files)
93
+ REPOS_TO_CHECK=$(echo "$FILE_PATHS" | grep -E '\.(ts|tsx|js|jsx)$' | while read -r file_path; do
94
+ if [ -n "$file_path" ]; then
95
+ repo=$(get_repo_for_file "$file_path")
96
+ [ -n "$repo" ] && echo "$repo"
97
+ fi
98
+ done | sort -u | tr '\n' ' ')
99
+
100
+ # Trim whitespace
101
+ REPOS_TO_CHECK=$(echo "$REPOS_TO_CHECK" | xargs)
102
+
103
+ if [ -n "$REPOS_TO_CHECK" ]; then
104
+ ERROR_COUNT=0
105
+ ERROR_OUTPUT=""
106
+ FAILED_REPOS=""
107
+
108
+ # Output to stderr for visibility
109
+ echo "⚡ TypeScript check on: $REPOS_TO_CHECK" >&2
110
+
111
+ for repo in $REPOS_TO_CHECK; do
112
+ echo -n " Checking $repo... " >&2
113
+
114
+ # Run the check and capture output
115
+ CHECK_OUTPUT=$(run_tsc_check "$repo" 2>&1)
116
+ CHECK_EXIT_CODE=$?
117
+
118
+ # Check for TypeScript errors in output
119
+ if [ $CHECK_EXIT_CODE -ne 0 ] || echo "$CHECK_OUTPUT" | grep -q "error TS"; then
120
+ echo "❌ Errors found" >&2
121
+ ERROR_COUNT=$((ERROR_COUNT + 1))
122
+ FAILED_REPOS="$FAILED_REPOS $repo"
123
+ ERROR_OUTPUT="${ERROR_OUTPUT}
124
+
125
+ === Errors in $repo ===
126
+ $CHECK_OUTPUT"
127
+ else
128
+ echo "✅ OK" >&2
129
+ fi
130
+ done
131
+
132
+ # If errors were found, show them and save for agent
133
+ if [ $ERROR_COUNT -gt 0 ]; then
134
+ # Save error information for the agent
135
+ echo "$ERROR_OUTPUT" > "$CACHE_DIR/last-errors.txt"
136
+ echo "$FAILED_REPOS" > "$CACHE_DIR/affected-repos.txt"
137
+
138
+ # Save the TSC commands used for each repo
139
+ echo "# TSC Commands by Repo" > "$CACHE_DIR/tsc-commands.txt"
140
+ for repo in $FAILED_REPOS; do
141
+ cmd=$(cat "$CACHE_DIR/$repo-tsc-cmd.cache" 2>/dev/null || echo "npx tsc --noEmit")
142
+ echo "$repo: $cmd" >> "$CACHE_DIR/tsc-commands.txt"
143
+ done
144
+
145
+ # Output to stderr for visibility
146
+ {
147
+ echo ""
148
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
149
+ echo "🚨 TypeScript errors found in $ERROR_COUNT repo(s): $FAILED_REPOS"
150
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
151
+ echo ""
152
+ echo "👉 IMPORTANT: Use the auto-error-resolver agent to fix the errors"
153
+ echo ""
154
+ echo "WE DO NOT LEAVE A MESS BEHIND"
155
+ echo "Error Preview:"
156
+ echo "$ERROR_OUTPUT" | grep "error TS" | head -10
157
+ echo ""
158
+ if [ $(echo "$ERROR_OUTPUT" | grep -c "error TS") -gt 10 ]; then
159
+ echo "... and $(($(echo "$ERROR_OUTPUT" | grep -c "error TS") - 10)) more errors"
160
+ fi
161
+ } >&2
162
+
163
+ # Exit with code 1 to make stderr visible
164
+ exit 1
165
+ fi
166
+ fi
167
+ ;;
168
+ esac
169
+
170
+ # Cleanup old cache directories (older than 7 days)
171
+ find "$HOME/.claude/tsc-cache" -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null || true
172
+
173
+ exit 0