0xray 2.0.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 (739) hide show
  1. package/.opencode/agents/api-design.yml +31 -0
  2. package/.opencode/agents/architect.yml +15 -0
  3. package/.opencode/agents/architecture-patterns.yml +14 -0
  4. package/.opencode/agents/auto-format.yml +14 -0
  5. package/.opencode/agents/backend-engineer.yml +12 -0
  6. package/.opencode/agents/boot-orchestrator.yml +14 -0
  7. package/.opencode/agents/bug-triage-specialist.yml +15 -0
  8. package/.opencode/agents/code-analyzer.yml +12 -0
  9. package/.opencode/agents/code-reviewer.yml +14 -0
  10. package/.opencode/agents/content-creator.yml +12 -0
  11. package/.opencode/agents/database-engineer.yml +12 -0
  12. package/.opencode/agents/devops-engineer.yml +12 -0
  13. package/.opencode/agents/framework-compliance-audit.yml +14 -0
  14. package/.opencode/agents/frontend-engineer.yml +12 -0
  15. package/.opencode/agents/frontend-ui-ux-engineer.yml +12 -0
  16. package/.opencode/agents/git-workflow.yml +15 -0
  17. package/.opencode/agents/growth-strategist.yml +12 -0
  18. package/.opencode/agents/hermes-agent.yml +12 -0
  19. package/.opencode/agents/inference-improve.yml +12 -0
  20. package/.opencode/agents/lint.yml +14 -0
  21. package/.opencode/agents/log-monitor.yml +12 -0
  22. package/.opencode/agents/mobile-developer.yml +12 -0
  23. package/.opencode/agents/model-health-check.yml +12 -0
  24. package/.opencode/agents/multimodal-looker.yml +12 -0
  25. package/.opencode/agents/performance-analysis.yml +12 -0
  26. package/.opencode/agents/performance-engineer.yml +12 -0
  27. package/.opencode/agents/performance-optimization.yml +12 -0
  28. package/.opencode/agents/processor-pipeline.yml +14 -0
  29. package/.opencode/agents/project-analysis.yml +12 -0
  30. package/.opencode/agents/refactorer.yml +12 -0
  31. package/.opencode/agents/researcher.yml +12 -0
  32. package/.opencode/agents/security-auditor.yml +12 -0
  33. package/.opencode/agents/security-scan.yml +12 -0
  34. package/.opencode/agents/seo-consultant.yml +12 -0
  35. package/.opencode/agents/session-management.yml +12 -0
  36. package/.opencode/agents/state-manager.yml +12 -0
  37. package/.opencode/agents/storyteller.yml +12 -0
  38. package/.opencode/agents/strategist.yml +12 -0
  39. package/.opencode/agents/tech-writer.yml +12 -0
  40. package/.opencode/agents/testing-best-practices.yml +12 -0
  41. package/.opencode/agents/testing-lead.yml +12 -0
  42. package/.opencode/agents/ui-ux-design.yml +12 -0
  43. package/.opencode/codex.codex +8 -0
  44. package/.opencode/commands/auto-format.md +99 -0
  45. package/.opencode/commands/auto-summary-capture.md +90 -0
  46. package/.opencode/commands/dependency-audit.md +184 -0
  47. package/.opencode/commands/enforcer-daily-scan.md +137 -0
  48. package/.opencode/commands/framework-compliance-audit.md +205 -0
  49. package/.opencode/commands/interactive-validator.md +75 -0
  50. package/.opencode/commands/job-summary-logger.md +68 -0
  51. package/.opencode/commands/lint.md +11 -0
  52. package/.opencode/commands/mode-switch.md +95 -0
  53. package/.opencode/commands/model-health-check.md +186 -0
  54. package/.opencode/commands/performance-analysis.md +144 -0
  55. package/.opencode/commands/pre-commit-introspection.md +185 -0
  56. package/.opencode/commands/pre-commit-introspection.sh +133 -0
  57. package/.opencode/commands/security-scan.md +157 -0
  58. package/.opencode/commands/sisyphus-validation.md +128 -0
  59. package/.opencode/commands/summary-logger.md +83 -0
  60. package/.opencode/enforcer-config.json +285 -0
  61. package/.opencode/hooks/hook-metrics.json +380 -0
  62. package/.opencode/hooks/post-commit +114 -0
  63. package/.opencode/hooks/post-push +34 -0
  64. package/.opencode/init.sh +151 -0
  65. package/.opencode/skills/api-design/SKILL.md +37 -0
  66. package/.opencode/skills/architect-tools/SKILL.md +37 -0
  67. package/.opencode/skills/architecture-patterns/SKILL.md +37 -0
  68. package/.opencode/skills/auto-format/SKILL.md +37 -0
  69. package/.opencode/skills/backend-engineer/SKILL.md +49 -0
  70. package/.opencode/skills/boot-orchestrator/SKILL.md +37 -0
  71. package/.opencode/skills/bug-triage/SKILL.md +43 -0
  72. package/.opencode/skills/code-analyzer/SKILL.md +45 -0
  73. package/.opencode/skills/code-review/SKILL.md +52 -0
  74. package/.opencode/skills/content-creator/SKILL.md +38 -0
  75. package/.opencode/skills/database-engineer/SKILL.md +46 -0
  76. package/.opencode/skills/devops-engineer/SKILL.md +49 -0
  77. package/.opencode/skills/enforcer/SKILL.md +37 -0
  78. package/.opencode/skills/framework-compliance-audit/SKILL.md +37 -0
  79. package/.opencode/skills/frontend-engineer/SKILL.md +49 -0
  80. package/.opencode/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
  81. package/.opencode/skills/git-workflow/SKILL.md +37 -0
  82. package/.opencode/skills/growth-strategist/SKILL.md +48 -0
  83. package/.opencode/skills/hermes-agent/SKILL.md +212 -0
  84. package/.opencode/skills/inference-improve/SKILL.md +97 -0
  85. package/.opencode/skills/lint/SKILL.md +37 -0
  86. package/.opencode/skills/log-monitor/SKILL.md +44 -0
  87. package/.opencode/skills/mobile-developer/SKILL.md +42 -0
  88. package/.opencode/skills/model-health-check/SKILL.md +37 -0
  89. package/.opencode/skills/multimodal-looker/SKILL.md +45 -0
  90. package/.opencode/skills/orchestrator/SKILL.md +37 -0
  91. package/.opencode/skills/performance-analysis/SKILL.md +37 -0
  92. package/.opencode/skills/performance-engineer/SKILL.md +41 -0
  93. package/.opencode/skills/performance-optimization/SKILL.md +37 -0
  94. package/.opencode/skills/processor-pipeline/SKILL.md +37 -0
  95. package/.opencode/skills/project-analysis/SKILL.md +42 -0
  96. package/.opencode/skills/refactoring-strategies/SKILL.md +37 -0
  97. package/.opencode/skills/registry.json +66 -0
  98. package/.opencode/skills/researcher/SKILL.md +37 -0
  99. package/.opencode/skills/security-audit/SKILL.md +47 -0
  100. package/.opencode/skills/security-scan/SKILL.md +37 -0
  101. package/.opencode/skills/seo-consultant/SKILL.md +43 -0
  102. package/.opencode/skills/session-management/SKILL.md +36 -0
  103. package/.opencode/skills/state-manager/SKILL.md +37 -0
  104. package/.opencode/skills/storyteller/SKILL.md +130 -0
  105. package/.opencode/skills/strategist/SKILL.md +32 -0
  106. package/.opencode/skills/tech-writer/SKILL.md +37 -0
  107. package/.opencode/skills/testing-best-practices/SKILL.md +37 -0
  108. package/.opencode/skills/testing-strategy/SKILL.md +43 -0
  109. package/.opencode/skills/ui-ux-design/SKILL.md +603 -0
  110. package/.opencode/workflows/post-deployment-audit.yml +123 -0
  111. package/AGENTS.md +110 -0
  112. package/LICENSE +21 -0
  113. package/README.md +131 -0
  114. package/dist/AGENTS.md +110 -0
  115. package/dist/CHANGELOG.md +2182 -0
  116. package/dist/LICENSE +21 -0
  117. package/dist/README.md +131 -0
  118. package/dist/agents/architect.js +56 -0
  119. package/dist/agents/backend-engineer.js +81 -0
  120. package/dist/agents/bug-triage-specialist.js +74 -0
  121. package/dist/agents/code-analyzer.js +150 -0
  122. package/dist/agents/code-reviewer.js +69 -0
  123. package/dist/agents/content-creator.js +72 -0
  124. package/dist/agents/database-engineer.js +76 -0
  125. package/dist/agents/devops-engineer.js +84 -0
  126. package/dist/agents/frontend-engineer.js +78 -0
  127. package/dist/agents/frontend-ui-ux-engineer.js +64 -0
  128. package/dist/agents/growth-strategist.js +111 -0
  129. package/dist/agents/index.js +45 -0
  130. package/dist/agents/librarian-agents-updater.js +333 -0
  131. package/dist/agents/log-monitor.js +109 -0
  132. package/dist/agents/mobile-developer.js +102 -0
  133. package/dist/agents/multimodal-looker.js +93 -0
  134. package/dist/agents/performance-engineer.js +86 -0
  135. package/dist/agents/refactorer.js +80 -0
  136. package/dist/agents/registry.js +340 -0
  137. package/dist/agents/researcher.js +83 -0
  138. package/dist/agents/security-auditor.js +158 -0
  139. package/dist/agents/seo-consultant.js +53 -0
  140. package/dist/agents/strategist.js +47 -0
  141. package/dist/agents/tech-writer.js +84 -0
  142. package/dist/agents/testing-lead.js +95 -0
  143. package/dist/agents/types.js +1 -0
  144. package/dist/analytics/consent-manager.js +258 -0
  145. package/dist/analytics/emerging-pattern-detector.js +260 -0
  146. package/dist/analytics/pattern-learning-engine.js +278 -0
  147. package/dist/analytics/pattern-performance-tracker.js +336 -0
  148. package/dist/analytics/predictive-analytics.js +248 -0
  149. package/dist/analytics/prompt-pattern-analyzer.js +371 -0
  150. package/dist/analytics/routing-performance-analyzer.js +356 -0
  151. package/dist/analytics/routing-refiner.js +380 -0
  152. package/dist/analytics/simple-pattern-analyzer.js +297 -0
  153. package/dist/architect/architect-tools.js +437 -0
  154. package/dist/architect/architectural-integrity.js +78 -0
  155. package/dist/benchmark/performance-benchmark.js +372 -0
  156. package/dist/cli/commands/analytics-disable.js +72 -0
  157. package/dist/cli/commands/analytics-enable-action.js +82 -0
  158. package/dist/cli/commands/analytics-preview.js +106 -0
  159. package/dist/cli/commands/analytics-status.js +68 -0
  160. package/dist/cli/commands/antigravity-status.js +106 -0
  161. package/dist/cli/commands/archive-logs.js +161 -0
  162. package/dist/cli/commands/credible-init.js +82 -0
  163. package/dist/cli/commands/grok-install.js +16 -0
  164. package/dist/cli/commands/hermes-install.js +66 -0
  165. package/dist/cli/commands/mcp-install.js +253 -0
  166. package/dist/cli/commands/openclaw-install.js +44 -0
  167. package/dist/cli/commands/opencode-install.js +99 -0
  168. package/dist/cli/commands/plugin-commands.js +246 -0
  169. package/dist/cli/commands/publish-agent.js +184 -0
  170. package/dist/cli/commands/security-audit.js +219 -0
  171. package/dist/cli/commands/skill-install.js +481 -0
  172. package/dist/cli/commands/status.js +196 -0
  173. package/dist/cli/commands/storyteller.js +230 -0
  174. package/dist/cli/index.js +986 -0
  175. package/dist/cli/server.js +147 -0
  176. package/dist/config/default-agents.js +16 -0
  177. package/dist/core/activity-logger.js +260 -0
  178. package/dist/core/adaptive-kernel.js +192 -0
  179. package/dist/core/agent-spawn-gate.js +120 -0
  180. package/dist/core/boot-orchestrator.js +812 -0
  181. package/dist/core/bridge.mjs +945 -0
  182. package/dist/core/codex-formatter.js +220 -0
  183. package/dist/core/codex-injector.js +424 -0
  184. package/dist/core/config-loader.js +148 -0
  185. package/dist/core/config-paths.js +162 -0
  186. package/dist/core/context-loader.js +269 -0
  187. package/dist/core/context-validator.js +212 -0
  188. package/dist/core/features-config.js +457 -0
  189. package/dist/core/framework-logger.js +275 -0
  190. package/dist/core/index.js +6 -0
  191. package/dist/core/kernel-patterns.js +302 -0
  192. package/dist/core/logging-config.js +43 -0
  193. package/dist/core/model-router.js +175 -0
  194. package/dist/core/orchestrator.js +408 -0
  195. package/dist/core/system-prompt-generator.js +265 -0
  196. package/dist/core/trace-context.js +33 -0
  197. package/dist/core/xray-activation.js +134 -0
  198. package/dist/delegation/agent-delegator.js +769 -0
  199. package/dist/delegation/agent-expertise.js +156 -0
  200. package/dist/delegation/analytics/index.js +12 -0
  201. package/dist/delegation/analytics/learning-engine.js +277 -0
  202. package/dist/delegation/analytics/outcome-tracker.js +279 -0
  203. package/dist/delegation/analytics/routing-analytics.js +193 -0
  204. package/dist/delegation/ast-code-parser.js +878 -0
  205. package/dist/delegation/codebase-context-analyzer.js +1040 -0
  206. package/dist/delegation/complexity-analyzer.js +282 -0
  207. package/dist/delegation/complexity-core.js +219 -0
  208. package/dist/delegation/config/types.js +6 -0
  209. package/dist/delegation/dependency-graph-builder.js +409 -0
  210. package/dist/delegation/index.js +20 -0
  211. package/dist/delegation/metrics-aggregator.js +335 -0
  212. package/dist/delegation/session-coordinator.js +352 -0
  213. package/dist/delegation/strategy-selector.js +108 -0
  214. package/dist/delegation/voting-coordinator.js +375 -0
  215. package/dist/delegation/voting-types.js +10 -0
  216. package/dist/delegation/weighted-voting-aggregator.js +194 -0
  217. package/dist/enforcement/core/index.js +19 -0
  218. package/dist/enforcement/core/rule-executor.js +365 -0
  219. package/dist/enforcement/core/rule-hierarchy.js +259 -0
  220. package/dist/enforcement/core/rule-registry.js +240 -0
  221. package/dist/enforcement/core/violation-fixer.js +651 -0
  222. package/dist/enforcement/enforcer-tools.js +909 -0
  223. package/dist/enforcement/index.js +41 -0
  224. package/dist/enforcement/loaders/agent-triage-loader.js +222 -0
  225. package/dist/enforcement/loaders/agents-md-validation-loader.js +252 -0
  226. package/dist/enforcement/loaders/base-loader.js +86 -0
  227. package/dist/enforcement/loaders/codex-loader.js +396 -0
  228. package/dist/enforcement/loaders/index.js +40 -0
  229. package/dist/enforcement/loaders/loader-orchestrator.js +168 -0
  230. package/dist/enforcement/loaders/processor-loader.js +113 -0
  231. package/dist/enforcement/rule-enforcer.js +298 -0
  232. package/dist/enforcement/test-auto-healing.js +325 -0
  233. package/dist/enforcement/types.js +30 -0
  234. package/dist/enforcement/validators/architecture-validators.js +600 -0
  235. package/dist/enforcement/validators/base-validator.js +108 -0
  236. package/dist/enforcement/validators/code-quality-validators.js +336 -0
  237. package/dist/enforcement/validators/index.js +21 -0
  238. package/dist/enforcement/validators/security-validators.js +220 -0
  239. package/dist/enforcement/validators/testing-validators.js +253 -0
  240. package/dist/enforcement/validators/validator-registry.js +150 -0
  241. package/dist/execution/opencode-cli-invoker.js +173 -0
  242. package/dist/execution/proposal-applier.js +254 -0
  243. package/dist/governance/codex-policy.service.js +167 -0
  244. package/dist/governance/governance-core.js +152 -0
  245. package/dist/governance/governance-service.js +274 -0
  246. package/dist/governance/governance-types.js +6 -0
  247. package/dist/index.js +24 -0
  248. package/dist/inference/deploy-verifier.js +161 -0
  249. package/dist/inference/index.js +5 -0
  250. package/dist/inference/inference-accumulator.js +126 -0
  251. package/dist/inference/inference-cycle.js +1168 -0
  252. package/dist/inference/semantic-patterns.js +310 -0
  253. package/dist/inference/session-capture.js +308 -0
  254. package/dist/integrations/base/ExampleIntegration.js +181 -0
  255. package/dist/integrations/base/Integration.js +395 -0
  256. package/dist/integrations/base/README.md +446 -0
  257. package/dist/integrations/base/index.js +16 -0
  258. package/dist/integrations/base/registry.js +606 -0
  259. package/dist/integrations/base/types.js +118 -0
  260. package/dist/integrations/governance/governance-client.js +316 -0
  261. package/dist/integrations/governance/index.js +373 -0
  262. package/dist/integrations/governance/types.js +97 -0
  263. package/dist/integrations/grok/grok-cli.js +83 -0
  264. package/dist/integrations/grok/hooks/pre-tool-use.js +134 -0
  265. package/dist/integrations/grok/plugin/0xray/.mcp.json +15 -0
  266. package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
  267. package/dist/integrations/hermes-agent/__init__.py +718 -0
  268. package/dist/integrations/hermes-agent/after-install.md +71 -0
  269. package/dist/integrations/hermes-agent/bridge.mjs +861 -0
  270. package/dist/integrations/hermes-agent/conftest.py +14 -0
  271. package/dist/integrations/hermes-agent/plugin.yaml +12 -0
  272. package/dist/integrations/hermes-agent/schemas.py +100 -0
  273. package/dist/integrations/hermes-agent/test_plugin.py +1100 -0
  274. package/dist/integrations/hermes-agent/tools.py +253 -0
  275. package/dist/integrations/openclaw/README.md +134 -0
  276. package/dist/integrations/openclaw/api-server.js +389 -0
  277. package/dist/integrations/openclaw/client.js +492 -0
  278. package/dist/integrations/openclaw/config.js +374 -0
  279. package/dist/integrations/openclaw/hooks/strray-hooks.js +280 -0
  280. package/dist/integrations/openclaw/index.js +351 -0
  281. package/dist/integrations/openclaw/types.js +153 -0
  282. package/dist/integrations/plugins/index.js +10 -0
  283. package/dist/integrations/plugins/plugin-integration.js +606 -0
  284. package/dist/integrations/plugins/plugin-registry.js +580 -0
  285. package/dist/mcps/agent-resolver.js +106 -0
  286. package/dist/mcps/architect-tools.server.js +277 -0
  287. package/dist/mcps/auto-format.server.js +413 -0
  288. package/dist/mcps/boot-orchestrator.server.js +853 -0
  289. package/dist/mcps/config/config-loader.js +103 -0
  290. package/dist/mcps/config/config-validator.js +101 -0
  291. package/dist/mcps/config/index.js +30 -0
  292. package/dist/mcps/config/plugin-server-registry.js +223 -0
  293. package/dist/mcps/config/server-config-registry.js +348 -0
  294. package/dist/mcps/connection/connection-manager.js +79 -0
  295. package/dist/mcps/connection/connection-pool.js +164 -0
  296. package/dist/mcps/connection/mcp-connection.js +233 -0
  297. package/dist/mcps/connection/process-spawner.js +34 -0
  298. package/dist/mcps/enforcer-tools.server.js +778 -0
  299. package/dist/mcps/estimation.server.js +192 -0
  300. package/dist/mcps/framework-compliance-audit.server.js +500 -0
  301. package/dist/mcps/framework-help.server.js +400 -0
  302. package/dist/mcps/governance.server.js +464 -0
  303. package/dist/mcps/in-process-skill-registry.js +48 -0
  304. package/dist/mcps/knowledge-skills/api-design.server.js +123 -0
  305. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +113 -0
  306. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +474 -0
  307. package/dist/mcps/knowledge-skills/code-analyzer.server.js +605 -0
  308. package/dist/mcps/knowledge-skills/code-review.server.js +847 -0
  309. package/dist/mcps/knowledge-skills/content-creator.server.js +256 -0
  310. package/dist/mcps/knowledge-skills/database-design.server.js +822 -0
  311. package/dist/mcps/knowledge-skills/devops-deployment.server.js +1180 -0
  312. package/dist/mcps/knowledge-skills/git-workflow.server.js +115 -0
  313. package/dist/mcps/knowledge-skills/growth-strategist.server.js +361 -0
  314. package/dist/mcps/knowledge-skills/log-monitor.server.js +451 -0
  315. package/dist/mcps/knowledge-skills/mobile-development.server.js +525 -0
  316. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1063 -0
  317. package/dist/mcps/knowledge-skills/performance-optimization.server.js +1587 -0
  318. package/dist/mcps/knowledge-skills/project-analysis.server.js +811 -0
  319. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +796 -0
  320. package/dist/mcps/knowledge-skills/security-audit.server.js +846 -0
  321. package/dist/mcps/knowledge-skills/seo-consultant.server.js +937 -0
  322. package/dist/mcps/knowledge-skills/session-management.server.js +470 -0
  323. package/dist/mcps/knowledge-skills/skill-invocation.server.js +729 -0
  324. package/dist/mcps/knowledge-skills/strategist.server.js +217 -0
  325. package/dist/mcps/knowledge-skills/tech-writer.server.js +1191 -0
  326. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +866 -0
  327. package/dist/mcps/knowledge-skills/testing-strategy.server.js +827 -0
  328. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1538 -0
  329. package/dist/mcps/lint.server.js +381 -0
  330. package/dist/mcps/mcp-client.js +574 -0
  331. package/dist/mcps/model-health-check.server.js +228 -0
  332. package/dist/mcps/orchestrator/config/agent-capabilities.js +87 -0
  333. package/dist/mcps/orchestrator/execution/execution-planner.js +279 -0
  334. package/dist/mcps/orchestrator/handlers/complexity-handler.js +94 -0
  335. package/dist/mcps/orchestrator/handlers/status-handler.js +232 -0
  336. package/dist/mcps/orchestrator/handlers/task-handler.js +197 -0
  337. package/dist/mcps/orchestrator/server.js +305 -0
  338. package/dist/mcps/orchestrator/types.js +6 -0
  339. package/dist/mcps/orchestrator.server.js +19 -0
  340. package/dist/mcps/performance-analysis.server.js +519 -0
  341. package/dist/mcps/processor-pipeline.server.js +561 -0
  342. package/dist/mcps/protocol/protocol-constants.js +46 -0
  343. package/dist/mcps/registry.json +110 -0
  344. package/dist/mcps/researcher.server.js +504 -0
  345. package/dist/mcps/security-scan.server.js +531 -0
  346. package/dist/mcps/simulation/index.js +12 -0
  347. package/dist/mcps/simulation/server-simulations.js +219 -0
  348. package/dist/mcps/simulation/simulation-engine.js +96 -0
  349. package/dist/mcps/state-manager.server.js +637 -0
  350. package/dist/mcps/tools/index.js +14 -0
  351. package/dist/mcps/tools/tool-cache.js +112 -0
  352. package/dist/mcps/tools/tool-discovery.js +65 -0
  353. package/dist/mcps/tools/tool-executor.js +75 -0
  354. package/dist/mcps/tools/tool-registry.js +67 -0
  355. package/dist/mcps/types/index.js +15 -0
  356. package/dist/mcps/types/json-rpc.types.js +7 -0
  357. package/dist/mcps/types/mcp.types.js +7 -0
  358. package/dist/metrics/agent-metrics.js +574 -0
  359. package/dist/metrics/index.js +6 -0
  360. package/dist/monitoring/advanced-profiler.js +232 -0
  361. package/dist/monitoring/memory-monitor.js +315 -0
  362. package/dist/monitoring/nudge-watchdog.js +356 -0
  363. package/dist/monitoring/test-auto-generation-monitor.js +157 -0
  364. package/dist/orchestrator/agent-spawn-governor.js +559 -0
  365. package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +399 -0
  366. package/dist/orchestrator/intelligent-commit-batcher.js +353 -0
  367. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +456 -0
  368. package/dist/orchestrator/orchestrator.js +657 -0
  369. package/dist/orchestrator/self-direction-activation.js +245 -0
  370. package/dist/orchestrator/universal-librarian-consultation.js +216 -0
  371. package/dist/orchestrator/universal-registry-bridge.js +247 -0
  372. package/dist/performance/performance-budget-enforcer.js +434 -0
  373. package/dist/performance/performance-regression-tester.js +342 -0
  374. package/dist/plugin/xray-codex-injection.js +857 -0
  375. package/dist/postprocessor/PostProcessor.js +1048 -0
  376. package/dist/postprocessor/analysis/FailureAnalysisEngine.js +245 -0
  377. package/dist/postprocessor/autofix/AutoFixEngine.js +254 -0
  378. package/dist/postprocessor/autofix/FixValidator.js +56 -0
  379. package/dist/postprocessor/config.js +65 -0
  380. package/dist/postprocessor/escalation/EscalationEngine.js +492 -0
  381. package/dist/postprocessor/monitoring/MonitoringEngine.js +125 -0
  382. package/dist/postprocessor/redeploy/RedeployCoordinator.js +342 -0
  383. package/dist/postprocessor/services/RegressionAnalysisService.js +131 -0
  384. package/dist/postprocessor/success/SuccessHandler.js +134 -0
  385. package/dist/postprocessor/triggers/APITrigger.js +115 -0
  386. package/dist/postprocessor/triggers/GitHookTrigger.js +551 -0
  387. package/dist/postprocessor/triggers/WebhookTrigger.js +211 -0
  388. package/dist/postprocessor/types.js +4 -0
  389. package/dist/processors/doc-write-guard.js +46 -0
  390. package/dist/processors/implementations/agents-md-validation-processor.js +286 -0
  391. package/dist/processors/implementations/async-pattern-processor.js +158 -0
  392. package/dist/processors/implementations/codex-compliance-processor.js +57 -0
  393. package/dist/processors/implementations/commit-batcher-processor.js +71 -0
  394. package/dist/processors/implementations/console-log-guard-processor.js +163 -0
  395. package/dist/processors/implementations/coverage-analysis-processor.js +138 -0
  396. package/dist/processors/implementations/error-boundary-processor.js +44 -0
  397. package/dist/processors/implementations/inference-improvement-processor.js +270 -0
  398. package/dist/processors/implementations/log-protection-processor.js +118 -0
  399. package/dist/processors/implementations/nudge-processor.js +130 -0
  400. package/dist/processors/implementations/performance-budget-processor.js +217 -0
  401. package/dist/processors/implementations/postprocessor-chain-validator.js +149 -0
  402. package/dist/processors/implementations/pre-validate-processor.js +18 -0
  403. package/dist/processors/implementations/publish-preflight-processor.js +249 -0
  404. package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +33 -0
  405. package/dist/processors/implementations/refactoring-logging-processor.js +96 -0
  406. package/dist/processors/implementations/regression-testing-processor.js +59 -0
  407. package/dist/processors/implementations/session-capture-processor.js +37 -0
  408. package/dist/processors/implementations/session-summary-processor.js +130 -0
  409. package/dist/processors/implementations/spawn-governance-processor.js +219 -0
  410. package/dist/processors/implementations/state-validation-processor.js +15 -0
  411. package/dist/processors/implementations/storytelling-trigger-processor.js +589 -0
  412. package/dist/processors/implementations/test-auto-creation-processor.js +484 -0
  413. package/dist/processors/implementations/test-execution-processor.js +132 -0
  414. package/dist/processors/implementations/typescript-compilation-processor.js +87 -0
  415. package/dist/processors/implementations/version-compliance-processor.js +350 -0
  416. package/dist/processors/processor-interfaces.js +126 -0
  417. package/dist/processors/processor-manager.js +826 -0
  418. package/dist/processors/processor-types.js +12 -0
  419. package/dist/public/about.html +228 -0
  420. package/dist/public/enterprise.html +27 -0
  421. package/dist/public/features.html +102 -0
  422. package/dist/public/index.html +145 -0
  423. package/dist/reporting/framework-reporting-system.js +187 -0
  424. package/dist/reporting/log-parser.js +281 -0
  425. package/dist/reporting/metrics.js +202 -0
  426. package/dist/reporting/report-formatter.js +146 -0
  427. package/dist/reporting/types.js +1 -0
  428. package/dist/scripts/activate-kernel-pipeline.js +101 -0
  429. package/dist/scripts/integration.js +234 -0
  430. package/dist/scripts/pre-command +26 -0
  431. package/dist/scripts/pre-command.mjs +358 -0
  432. package/dist/security/comprehensive-security-audit.js +1005 -0
  433. package/dist/security/index.js +13 -0
  434. package/dist/security/prompt-security-validator.js +148 -0
  435. package/dist/security/security-agent-coordinator.js +204 -0
  436. package/dist/security/security-auditor.js +584 -0
  437. package/dist/security/security-hardener.js +170 -0
  438. package/dist/security/security-hardening-system.js +727 -0
  439. package/dist/security/security-headers.js +118 -0
  440. package/dist/security/security-orchestration-layer.js +496 -0
  441. package/dist/security/security-scanner.js +429 -0
  442. package/dist/services/inference-tuner.js +301 -0
  443. package/dist/session/index.js +3 -0
  444. package/dist/session/session-cleanup-manager.js +366 -0
  445. package/dist/session/session-monitor.js +503 -0
  446. package/dist/session/session-state-manager.js +522 -0
  447. package/dist/skills/api-design/SKILL.md +37 -0
  448. package/dist/skills/architect-tools/SKILL.md +37 -0
  449. package/dist/skills/architecture-patterns/SKILL.md +37 -0
  450. package/dist/skills/auto-format/SKILL.md +37 -0
  451. package/dist/skills/backend-engineer/SKILL.md +49 -0
  452. package/dist/skills/boot-orchestrator/SKILL.md +37 -0
  453. package/dist/skills/bug-triage/SKILL.md +43 -0
  454. package/dist/skills/code-analyzer/SKILL.md +45 -0
  455. package/dist/skills/code-review/SKILL.md +52 -0
  456. package/dist/skills/content-creator/SKILL.md +38 -0
  457. package/dist/skills/database-engineer/SKILL.md +46 -0
  458. package/dist/skills/devops-engineer/SKILL.md +49 -0
  459. package/dist/skills/enforcer/SKILL.md +37 -0
  460. package/dist/skills/framework-compliance-audit/SKILL.md +37 -0
  461. package/dist/skills/frontend-engineer/SKILL.md +49 -0
  462. package/dist/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
  463. package/dist/skills/git-workflow/SKILL.md +37 -0
  464. package/dist/skills/growth-strategist/SKILL.md +48 -0
  465. package/dist/skills/hermes-agent/SKILL.md +212 -0
  466. package/dist/skills/inference-improve/SKILL.md +97 -0
  467. package/dist/skills/lint/SKILL.md +37 -0
  468. package/dist/skills/log-monitor/SKILL.md +44 -0
  469. package/dist/skills/mobile-developer/SKILL.md +42 -0
  470. package/dist/skills/model-health-check/SKILL.md +37 -0
  471. package/dist/skills/multimodal-looker/SKILL.md +45 -0
  472. package/dist/skills/orchestrator/SKILL.md +37 -0
  473. package/dist/skills/performance-analysis/SKILL.md +37 -0
  474. package/dist/skills/performance-engineer/SKILL.md +41 -0
  475. package/dist/skills/performance-optimization/SKILL.md +37 -0
  476. package/dist/skills/processor-pipeline/SKILL.md +37 -0
  477. package/dist/skills/project-analysis/SKILL.md +42 -0
  478. package/dist/skills/refactoring-strategies/SKILL.md +37 -0
  479. package/dist/skills/registry.json +66 -0
  480. package/dist/skills/researcher/SKILL.md +37 -0
  481. package/dist/skills/security-audit/SKILL.md +48 -0
  482. package/dist/skills/security-scan/SKILL.md +37 -0
  483. package/dist/skills/seo-consultant/SKILL.md +43 -0
  484. package/dist/skills/session-management/SKILL.md +36 -0
  485. package/dist/skills/state-manager/SKILL.md +37 -0
  486. package/dist/skills/storyteller/SKILL.md +130 -0
  487. package/dist/skills/strategist/SKILL.md +32 -0
  488. package/dist/skills/tech-writer/SKILL.md +37 -0
  489. package/dist/skills/testing-best-practices/SKILL.md +37 -0
  490. package/dist/skills/testing-strategy/SKILL.md +43 -0
  491. package/dist/skills/ui-ux-design/SKILL.md +603 -0
  492. package/dist/state/context-providers.js +1 -0
  493. package/dist/state/index.js +7 -0
  494. package/dist/state/state-manager.js +208 -0
  495. package/dist/state/state-types.js +1 -0
  496. package/dist/testing/memory-regression-suite.js +258 -0
  497. package/dist/utils/batch-operations.js +292 -0
  498. package/dist/utils/codex-parser.js +445 -0
  499. package/dist/utils/command-runner.js +96 -0
  500. package/dist/utils/import-resolver.js +189 -0
  501. package/dist/utils/language-detector.js +383 -0
  502. package/dist/utils/path-resolver.js +112 -0
  503. package/dist/utils/shutdown-handler.js +75 -0
  504. package/dist/utils/test-template-generator.js +178 -0
  505. package/dist/utils/token-manager.js +163 -0
  506. package/dist/validation/estimation-validator.js +241 -0
  507. package/dist/validation/report-content-validator.js +218 -0
  508. package/opencode.json +153 -0
  509. package/package.json +170 -0
  510. package/scripts/helpers/resolve-config-path.cjs +57 -0
  511. package/scripts/helpers/resolve-config-path.mjs +73 -0
  512. package/scripts/hooks/pre-command +26 -0
  513. package/scripts/hooks/pre-command.mjs +358 -0
  514. package/scripts/hooks/run-hook.js +570 -0
  515. package/scripts/mjs/test-consumer-readiness.mjs +273 -0
  516. package/scripts/mjs/test-mcp-functionality.mjs +507 -0
  517. package/scripts/mjs/validate-mcp-connectivity.cjs +75 -0
  518. package/scripts/mjs/validate-postinstall-config.mjs +308 -0
  519. package/scripts/node/auto-reflection-generator.mjs +496 -0
  520. package/scripts/node/basic-security-audit.cjs +338 -0
  521. package/scripts/node/ci-cd-auto-fix.cjs +263 -0
  522. package/scripts/node/ci-report-generator.mjs +227 -0
  523. package/scripts/node/enforce-agents-md.mjs +420 -0
  524. package/scripts/node/enforce-version-compliance.sh +22 -0
  525. package/scripts/node/enforce-version-compliance.ts +126 -0
  526. package/scripts/node/github-actions-monitor.cjs +23 -0
  527. package/scripts/node/govern-reflection.mjs +160 -0
  528. package/scripts/node/postinstall.cjs +78 -0
  529. package/scripts/node/pre-publish-guard.js +267 -0
  530. package/scripts/node/prepare-consumer.cjs +143 -0
  531. package/scripts/node/reflection-processor.cjs +213 -0
  532. package/scripts/node/reflection-validate.sh +194 -0
  533. package/scripts/node/release-tweet.mjs +39 -0
  534. package/scripts/node/release.js +159 -0
  535. package/scripts/node/release.mjs +213 -0
  536. package/scripts/node/setup-dev.cjs +83 -0
  537. package/scripts/node/setup.cjs +214 -0
  538. package/scripts/node/sync-versions.mjs +140 -0
  539. package/scripts/node/universal-version-manager.js +1025 -0
  540. package/scripts/node/validate-external-processes.js +265 -0
  541. package/scripts/node/validate-mcp-connectivity.js +258 -0
  542. package/scripts/node/version-manager.mjs +524 -0
  543. package/scripts/validate-stringray-comprehensive.js +636 -0
  544. package/src/integrations/grok/plugin/0xray/.mcp.json +15 -0
  545. package/src/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
  546. package/src/mcps/agent-resolver.ts +168 -0
  547. package/src/mcps/architect-tools.server.ts +343 -0
  548. package/src/mcps/auto-format.server.ts +529 -0
  549. package/src/mcps/boot-orchestrator.server.ts +1082 -0
  550. package/src/mcps/config/__tests__/config-loader.test.ts +338 -0
  551. package/src/mcps/config/__tests__/config-validator.test.ts +646 -0
  552. package/src/mcps/config/__tests__/server-config-registry.test.ts +257 -0
  553. package/src/mcps/config/config-loader.ts +127 -0
  554. package/src/mcps/config/config-validator.ts +127 -0
  555. package/src/mcps/config/index.ts +32 -0
  556. package/src/mcps/config/plugin-server-registry.ts +335 -0
  557. package/src/mcps/config/server-config-registry.ts +395 -0
  558. package/src/mcps/connection/connection-manager.ts +91 -0
  559. package/src/mcps/connection/connection-pool.ts +216 -0
  560. package/src/mcps/connection/mcp-connection.ts +327 -0
  561. package/src/mcps/connection/process-spawner.ts +47 -0
  562. package/src/mcps/enforcer-tools.server.ts +1106 -0
  563. package/src/mcps/estimation.server.ts +229 -0
  564. package/src/mcps/framework-compliance-audit.server.ts +635 -0
  565. package/src/mcps/framework-help.server.ts +467 -0
  566. package/src/mcps/governance.server.ts +551 -0
  567. package/src/mcps/in-process-skill-registry.ts +79 -0
  568. package/src/mcps/knowledge-skills/api-design.server.test.ts +41 -0
  569. package/src/mcps/knowledge-skills/api-design.server.ts +160 -0
  570. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +152 -0
  571. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +624 -0
  572. package/src/mcps/knowledge-skills/code-analyzer.server.test.ts +129 -0
  573. package/src/mcps/knowledge-skills/code-analyzer.server.ts +591 -0
  574. package/src/mcps/knowledge-skills/code-review.server.ts +1132 -0
  575. package/src/mcps/knowledge-skills/content-creator.server.ts +300 -0
  576. package/src/mcps/knowledge-skills/database-design.server.ts +1200 -0
  577. package/src/mcps/knowledge-skills/devops-deployment.server.ts +1622 -0
  578. package/src/mcps/knowledge-skills/git-workflow.server.ts +152 -0
  579. package/src/mcps/knowledge-skills/growth-strategist.server.ts +413 -0
  580. package/src/mcps/knowledge-skills/log-monitor.server.ts +619 -0
  581. package/src/mcps/knowledge-skills/mobile-development.server.ts +672 -0
  582. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1500 -0
  583. package/src/mcps/knowledge-skills/performance-optimization.server.ts +2065 -0
  584. package/src/mcps/knowledge-skills/project-analysis.server.ts +1111 -0
  585. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +1092 -0
  586. package/src/mcps/knowledge-skills/security-audit.server.test.ts +112 -0
  587. package/src/mcps/knowledge-skills/security-audit.server.ts +1193 -0
  588. package/src/mcps/knowledge-skills/seo-consultant.server.ts +1160 -0
  589. package/src/mcps/knowledge-skills/session-management.server.ts +576 -0
  590. package/src/mcps/knowledge-skills/skill-invocation.server.ts +941 -0
  591. package/src/mcps/knowledge-skills/strategist.server.ts +267 -0
  592. package/src/mcps/knowledge-skills/tech-writer.server.ts +1638 -0
  593. package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +136 -0
  594. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +1232 -0
  595. package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +100 -0
  596. package/src/mcps/knowledge-skills/testing-strategy.server.ts +1172 -0
  597. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +2076 -0
  598. package/src/mcps/lint.server.ts +483 -0
  599. package/src/mcps/mcp-client.ts +706 -0
  600. package/src/mcps/model-health-check.server.ts +292 -0
  601. package/src/mcps/orchestrator/config/agent-capabilities.ts +108 -0
  602. package/src/mcps/orchestrator/execution/execution-planner.ts +353 -0
  603. package/src/mcps/orchestrator/handlers/complexity-handler.ts +125 -0
  604. package/src/mcps/orchestrator/handlers/status-handler.ts +295 -0
  605. package/src/mcps/orchestrator/handlers/task-handler.ts +268 -0
  606. package/src/mcps/orchestrator/server.ts +388 -0
  607. package/src/mcps/orchestrator/types.ts +81 -0
  608. package/src/mcps/orchestrator.server.ts +34 -0
  609. package/src/mcps/performance-analysis.server.ts +715 -0
  610. package/src/mcps/processor-pipeline.server.ts +778 -0
  611. package/src/mcps/protocol/protocol-constants.ts +51 -0
  612. package/src/mcps/registry.json +110 -0
  613. package/src/mcps/researcher.server.ts +595 -0
  614. package/src/mcps/security-scan.server.ts +651 -0
  615. package/src/mcps/simulation/__tests__/simulation-engine.test.ts +275 -0
  616. package/src/mcps/simulation/index.ts +23 -0
  617. package/src/mcps/simulation/server-simulations.ts +241 -0
  618. package/src/mcps/simulation/simulation-engine.ts +126 -0
  619. package/src/mcps/state-manager.server.ts +777 -0
  620. package/src/mcps/tools/__tests__/tool-cache.test.ts +205 -0
  621. package/src/mcps/tools/__tests__/tool-discovery.test.ts +189 -0
  622. package/src/mcps/tools/__tests__/tool-executor.test.ts +215 -0
  623. package/src/mcps/tools/__tests__/tool-registry.test.ts +230 -0
  624. package/src/mcps/tools/index.ts +15 -0
  625. package/src/mcps/tools/tool-cache.ts +145 -0
  626. package/src/mcps/tools/tool-discovery.ts +83 -0
  627. package/src/mcps/tools/tool-executor.ts +106 -0
  628. package/src/mcps/tools/tool-registry.ts +78 -0
  629. package/src/mcps/types/__tests__/types.test.ts +341 -0
  630. package/src/mcps/types/index.ts +17 -0
  631. package/src/mcps/types/json-rpc.types.ts +38 -0
  632. package/src/mcps/types/mcp.types.ts +115 -0
  633. package/src/opencode/agents/api-design.yml +31 -0
  634. package/src/opencode/agents/architect.yml +15 -0
  635. package/src/opencode/agents/architecture-patterns.yml +14 -0
  636. package/src/opencode/agents/auto-format.yml +14 -0
  637. package/src/opencode/agents/backend-engineer.yml +12 -0
  638. package/src/opencode/agents/boot-orchestrator.yml +14 -0
  639. package/src/opencode/agents/bug-triage-specialist.yml +15 -0
  640. package/src/opencode/agents/code-analyzer.yml +12 -0
  641. package/src/opencode/agents/code-reviewer.yml +14 -0
  642. package/src/opencode/agents/content-creator.yml +12 -0
  643. package/src/opencode/agents/database-engineer.yml +12 -0
  644. package/src/opencode/agents/devops-engineer.yml +12 -0
  645. package/src/opencode/agents/framework-compliance-audit.yml +14 -0
  646. package/src/opencode/agents/frontend-engineer.yml +12 -0
  647. package/src/opencode/agents/frontend-ui-ux-engineer.yml +12 -0
  648. package/src/opencode/agents/git-workflow.yml +15 -0
  649. package/src/opencode/agents/growth-strategist.yml +12 -0
  650. package/src/opencode/agents/hermes-agent.yml +12 -0
  651. package/src/opencode/agents/inference-improve.yml +12 -0
  652. package/src/opencode/agents/lint.yml +14 -0
  653. package/src/opencode/agents/log-monitor.yml +12 -0
  654. package/src/opencode/agents/mobile-developer.yml +12 -0
  655. package/src/opencode/agents/model-health-check.yml +12 -0
  656. package/src/opencode/agents/multimodal-looker.yml +12 -0
  657. package/src/opencode/agents/performance-analysis.yml +12 -0
  658. package/src/opencode/agents/performance-engineer.yml +12 -0
  659. package/src/opencode/agents/performance-optimization.yml +12 -0
  660. package/src/opencode/agents/processor-pipeline.yml +14 -0
  661. package/src/opencode/agents/project-analysis.yml +12 -0
  662. package/src/opencode/agents/refactorer.yml +12 -0
  663. package/src/opencode/agents/researcher.yml +12 -0
  664. package/src/opencode/agents/security-auditor.yml +12 -0
  665. package/src/opencode/agents/security-scan.yml +12 -0
  666. package/src/opencode/agents/seo-consultant.yml +12 -0
  667. package/src/opencode/agents/session-management.yml +12 -0
  668. package/src/opencode/agents/state-manager.yml +12 -0
  669. package/src/opencode/agents/storyteller.yml +12 -0
  670. package/src/opencode/agents/strategist.yml +12 -0
  671. package/src/opencode/agents/tech-writer.yml +12 -0
  672. package/src/opencode/agents/testing-best-practices.yml +12 -0
  673. package/src/opencode/agents/testing-lead.yml +12 -0
  674. package/src/opencode/agents/ui-ux-design.yml +12 -0
  675. package/src/opencode/codex.codex +8 -0
  676. package/src/opencode/commands/auto-format.md +99 -0
  677. package/src/opencode/commands/auto-summary-capture.md +90 -0
  678. package/src/opencode/commands/dependency-audit.md +184 -0
  679. package/src/opencode/commands/enforcer-daily-scan.md +137 -0
  680. package/src/opencode/commands/framework-compliance-audit.md +205 -0
  681. package/src/opencode/commands/interactive-validator.md +75 -0
  682. package/src/opencode/commands/job-summary-logger.md +68 -0
  683. package/src/opencode/commands/lint.md +11 -0
  684. package/src/opencode/commands/mode-switch.md +95 -0
  685. package/src/opencode/commands/model-health-check.md +186 -0
  686. package/src/opencode/commands/performance-analysis.md +144 -0
  687. package/src/opencode/commands/pre-commit-introspection.md +185 -0
  688. package/src/opencode/commands/pre-commit-introspection.sh +133 -0
  689. package/src/opencode/commands/security-scan.md +157 -0
  690. package/src/opencode/commands/sisyphus-validation.md +128 -0
  691. package/src/opencode/commands/summary-logger.md +83 -0
  692. package/src/opencode/enforcer-config.json +285 -0
  693. package/src/opencode/openclaw/config.json +25 -0
  694. package/src/opencode/workflows/post-deployment-audit.yml +123 -0
  695. package/src/skills/api-design/SKILL.md +37 -0
  696. package/src/skills/architect-tools/SKILL.md +37 -0
  697. package/src/skills/architecture-patterns/SKILL.md +37 -0
  698. package/src/skills/auto-format/SKILL.md +37 -0
  699. package/src/skills/backend-engineer/SKILL.md +49 -0
  700. package/src/skills/boot-orchestrator/SKILL.md +37 -0
  701. package/src/skills/bug-triage/SKILL.md +43 -0
  702. package/src/skills/code-analyzer/SKILL.md +45 -0
  703. package/src/skills/code-review/SKILL.md +52 -0
  704. package/src/skills/content-creator/SKILL.md +38 -0
  705. package/src/skills/database-engineer/SKILL.md +46 -0
  706. package/src/skills/devops-engineer/SKILL.md +49 -0
  707. package/src/skills/enforcer/SKILL.md +37 -0
  708. package/src/skills/framework-compliance-audit/SKILL.md +37 -0
  709. package/src/skills/frontend-engineer/SKILL.md +49 -0
  710. package/src/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
  711. package/src/skills/git-workflow/SKILL.md +37 -0
  712. package/src/skills/growth-strategist/SKILL.md +48 -0
  713. package/src/skills/hermes-agent/SKILL.md +212 -0
  714. package/src/skills/inference-improve/SKILL.md +97 -0
  715. package/src/skills/lint/SKILL.md +37 -0
  716. package/src/skills/log-monitor/SKILL.md +44 -0
  717. package/src/skills/mobile-developer/SKILL.md +42 -0
  718. package/src/skills/model-health-check/SKILL.md +37 -0
  719. package/src/skills/multimodal-looker/SKILL.md +45 -0
  720. package/src/skills/orchestrator/SKILL.md +37 -0
  721. package/src/skills/performance-analysis/SKILL.md +37 -0
  722. package/src/skills/performance-engineer/SKILL.md +41 -0
  723. package/src/skills/performance-optimization/SKILL.md +37 -0
  724. package/src/skills/processor-pipeline/SKILL.md +37 -0
  725. package/src/skills/project-analysis/SKILL.md +42 -0
  726. package/src/skills/refactoring-strategies/SKILL.md +37 -0
  727. package/src/skills/registry.json +66 -0
  728. package/src/skills/researcher/SKILL.md +37 -0
  729. package/src/skills/security-audit/SKILL.md +48 -0
  730. package/src/skills/security-scan/SKILL.md +37 -0
  731. package/src/skills/seo-consultant/SKILL.md +43 -0
  732. package/src/skills/session-management/SKILL.md +36 -0
  733. package/src/skills/state-manager/SKILL.md +37 -0
  734. package/src/skills/storyteller/SKILL.md +130 -0
  735. package/src/skills/strategist/SKILL.md +32 -0
  736. package/src/skills/tech-writer/SKILL.md +37 -0
  737. package/src/skills/testing-best-practices/SKILL.md +37 -0
  738. package/src/skills/testing-strategy/SKILL.md +43 -0
  739. package/src/skills/ui-ux-design/SKILL.md +603 -0
@@ -0,0 +1,847 @@
1
+ /**
2
+ * xray Code Review MCP Server
3
+ *
4
+ * Knowledge skill for automated code review, quality assessment,
5
+ * and best practices validation - provides comprehensive code quality analysis
6
+ */
7
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
+ import * as fs from "fs";
11
+ import * as path from "path";
12
+ import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
13
+ class StringRayCodeReviewServer {
14
+ server;
15
+ constructor() {
16
+ this.server = new Server({
17
+ name: "code-review", version: "1.22.67",
18
+ }, {
19
+ capabilities: {
20
+ tools: {},
21
+ },
22
+ });
23
+ this.setupToolHandlers();
24
+ // Server initialization - removed unnecessary startup logging
25
+ }
26
+ setupToolHandlers() {
27
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
28
+ return {
29
+ tools: [
30
+ {
31
+ name: "analyze_code_quality",
32
+ description: "Analyze code quality metrics, identify issues, and provide improvement suggestions",
33
+ inputSchema: {
34
+ type: "object",
35
+ properties: {
36
+ filePath: {
37
+ type: "string",
38
+ description: "Path to the file to analyze",
39
+ },
40
+ includeMetrics: {
41
+ type: "boolean",
42
+ description: "Include detailed code metrics in the analysis",
43
+ default: true,
44
+ },
45
+ focusAreas: {
46
+ type: "array",
47
+ items: {
48
+ type: "string",
49
+ enum: [
50
+ "security",
51
+ "performance",
52
+ "maintainability",
53
+ "style",
54
+ "logic",
55
+ ],
56
+ },
57
+ description: "Specific areas to focus the review on",
58
+ },
59
+ },
60
+ required: ["filePath"],
61
+ },
62
+ },
63
+ {
64
+ name: "review_pull_request",
65
+ description: "Review a pull request by analyzing changed files and providing comprehensive feedback",
66
+ inputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ files: {
70
+ type: "array",
71
+ items: { type: "string" },
72
+ description: "List of file paths to review",
73
+ },
74
+ baseBranch: {
75
+ type: "string",
76
+ description: "Base branch for comparison",
77
+ default: "main",
78
+ },
79
+ focusAreas: {
80
+ type: "array",
81
+ items: {
82
+ type: "string",
83
+ enum: [
84
+ "security",
85
+ "performance",
86
+ "maintainability",
87
+ "style",
88
+ "logic",
89
+ ],
90
+ },
91
+ description: "Specific areas to focus the review on",
92
+ },
93
+ },
94
+ required: ["files"],
95
+ },
96
+ },
97
+ {
98
+ name: "check_best_practices",
99
+ description: "Check adherence to coding best practices and standards",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {
103
+ filePath: {
104
+ type: "string",
105
+ description: "Path to the file to check",
106
+ },
107
+ language: {
108
+ type: "string",
109
+ description: "Programming language (typescript, javascript, python, etc.)",
110
+ },
111
+ standards: {
112
+ type: "array",
113
+ items: { type: "string" },
114
+ description: "Specific standards to check (airbnb, google, microsoft, etc.)",
115
+ },
116
+ },
117
+ required: ["filePath"],
118
+ },
119
+ },
120
+ {
121
+ name: "analyze_proposal",
122
+ description: "Analyze an inference proposal (pattern/bug/refactor) from a code-review perspective and return a structured governance decision",
123
+ inputSchema: {
124
+ type: "object",
125
+ properties: {
126
+ proposalTitle: { type: "string" },
127
+ proposalDescription: { type: "string" },
128
+ evidence: { type: "array", items: { type: "string" } },
129
+ proposalType: { type: "string" },
130
+ },
131
+ required: ["proposalTitle", "proposalDescription"],
132
+ },
133
+ },
134
+ ],
135
+ };
136
+ });
137
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
138
+ const { name, arguments: args } = request.params;
139
+ switch (name) {
140
+ case "analyze_code_quality":
141
+ return await this.analyzeCodeQuality(args);
142
+ case "review_pull_request":
143
+ return await this.reviewPullRequest(args);
144
+ case "check_best_practices":
145
+ return await this.checkBestPractices(args);
146
+ case "analyze_proposal":
147
+ return await this.analyzeProposal(args);
148
+ default:
149
+ throw new Error(`Unknown tool: ${name}`);
150
+ }
151
+ });
152
+ }
153
+ async analyzeCodeQuality(args) {
154
+ const { filePath, includeMetrics = true, focusAreas } = args;
155
+ try {
156
+ if (!fs.existsSync(filePath)) {
157
+ throw new Error(`File not found: ${filePath}`);
158
+ }
159
+ const content = fs.readFileSync(filePath, "utf-8");
160
+ const extension = path.extname(filePath).toLowerCase();
161
+ const language = this.detectLanguage(extension);
162
+ const issues = this.analyzeCode(content, language, focusAreas);
163
+ const metrics = includeMetrics
164
+ ? this.calculateMetrics(content, language)
165
+ : null;
166
+ const suggestions = this.generateSuggestions(issues, metrics, language);
167
+ const overallScore = this.calculateOverallScore(issues, metrics);
168
+ const result = {
169
+ file: filePath,
170
+ issues,
171
+ metrics: metrics,
172
+ suggestions,
173
+ overallScore,
174
+ };
175
+ return {
176
+ content: [
177
+ {
178
+ type: "text",
179
+ text: `Code Review Results for ${filePath}:\n\n` +
180
+ `Overall Score: ${overallScore}/100\n\n` +
181
+ `Issues Found: ${issues.length}\n` +
182
+ (metrics
183
+ ? `Lines of Code: ${metrics.linesOfCode}\n` +
184
+ `Cyclomatic Complexity: ${metrics.cyclomaticComplexity}\n` +
185
+ `Comment Ratio: ${(metrics.commentRatio * 100).toFixed(1)}%\n\n`
186
+ : "") +
187
+ `Key Issues:\n${issues
188
+ .slice(0, 10)
189
+ .map((issue) => `• ${issue.severity.toUpperCase()}: ${issue.message} (${issue.category})`)
190
+ .join("\n")}\n\n` +
191
+ `Suggestions:\n${suggestions
192
+ .slice(0, 5)
193
+ .map((s) => `• ${s}`)
194
+ .join("\n")}`,
195
+ },
196
+ ],
197
+ };
198
+ }
199
+ catch (error) {
200
+ return {
201
+ content: [
202
+ {
203
+ type: "text",
204
+ text: `Error analyzing code quality: ${error instanceof Error ? error.message : String(error)}`,
205
+ },
206
+ ],
207
+ };
208
+ }
209
+ }
210
+ async reviewPullRequest(args) {
211
+ const { files, baseBranch = "main", focusAreas } = args;
212
+ try {
213
+ const results = [];
214
+ for (const filePath of files) {
215
+ if (!fs.existsSync(filePath)) {
216
+ continue; // Skip files that don't exist
217
+ }
218
+ const content = fs.readFileSync(filePath, "utf-8");
219
+ const extension = path.extname(filePath).toLowerCase();
220
+ const language = this.detectLanguage(extension);
221
+ const issues = this.analyzeCode(content, language, focusAreas);
222
+ const metrics = this.calculateMetrics(content, language);
223
+ const suggestions = this.generateSuggestions(issues, metrics, language);
224
+ const overallScore = this.calculateOverallScore(issues, metrics);
225
+ results.push({
226
+ file: filePath,
227
+ issues,
228
+ metrics,
229
+ suggestions,
230
+ overallScore,
231
+ });
232
+ }
233
+ const totalIssues = results.reduce((sum, r) => sum + r.issues.length, 0);
234
+ const avgScore = results.length > 0
235
+ ? Math.round(results.reduce((sum, r) => sum + r.overallScore, 0) /
236
+ results.length)
237
+ : 0;
238
+ const criticalIssues = results.flatMap((r) => r.issues.filter((i) => i.severity === "critical"));
239
+ return {
240
+ content: [
241
+ {
242
+ type: "text",
243
+ text: `Pull Request Review Summary:\n\n` +
244
+ `Files Reviewed: ${results.length}\n` +
245
+ `Total Issues: ${totalIssues}\n` +
246
+ `Average Quality Score: ${avgScore}/100\n` +
247
+ `Critical Issues: ${criticalIssues.length}\n\n` +
248
+ `Quality Scores by File:\n${results
249
+ .map((r) => `${r.file}: ${r.overallScore}/100 (${r.issues.length} issues)`)
250
+ .join("\n")}\n\n` +
251
+ (criticalIssues.length > 0
252
+ ? `🚨 Critical Issues:\n${criticalIssues
253
+ .map((issue) => `• ${issue.file}:${issue.line} - ${issue.message}`)
254
+ .join("\n")}\n\n`
255
+ : "") +
256
+ `Overall Assessment: ${this.assessOverallQuality(avgScore, totalIssues, criticalIssues.length)}`,
257
+ },
258
+ ],
259
+ };
260
+ }
261
+ catch (error) {
262
+ return {
263
+ content: [
264
+ {
265
+ type: "text",
266
+ text: `Error reviewing pull request: ${error instanceof Error ? error.message : String(error)}`,
267
+ },
268
+ ],
269
+ };
270
+ }
271
+ }
272
+ async checkBestPractices(args) {
273
+ const { filePath, language: specifiedLanguage, standards = [] } = args;
274
+ try {
275
+ if (!fs.existsSync(filePath)) {
276
+ throw new Error(`File not found: ${filePath}`);
277
+ }
278
+ const content = fs.readFileSync(filePath, "utf-8");
279
+ const extension = path.extname(filePath).toLowerCase();
280
+ const detectedLanguage = this.detectLanguage(extension);
281
+ const language = specifiedLanguage || detectedLanguage;
282
+ const violations = this.checkStandardsCompliance(content, language, standards);
283
+ const recommendations = this.generateStandardsRecommendations(violations, language, standards);
284
+ return {
285
+ content: [
286
+ {
287
+ type: "text",
288
+ text: `Best Practices Check for ${filePath}:\n\n` +
289
+ `Language: ${language}\n` +
290
+ `Standards Checked: ${standards.length > 0 ? standards.join(", ") : "General best practices"}\n\n` +
291
+ `Violations Found: ${violations.length}\n\n` +
292
+ `Key Violations:\n${violations
293
+ .slice(0, 10)
294
+ .map((v) => `• ${v.severity.toUpperCase()}: ${v.rule} - ${v.description}`)
295
+ .join("\n")}\n\n` +
296
+ `Recommendations:\n${recommendations
297
+ .slice(0, 5)
298
+ .map((r) => `• ${r}`)
299
+ .join("\n")}\n\n` +
300
+ `Compliance Score: ${this.calculateComplianceScore(violations)}/100`,
301
+ },
302
+ ],
303
+ };
304
+ }
305
+ catch (error) {
306
+ return {
307
+ content: [
308
+ {
309
+ type: "text",
310
+ text: `Error checking best practices: ${error instanceof Error ? error.message : String(error)}`,
311
+ },
312
+ ],
313
+ };
314
+ }
315
+ }
316
+ detectLanguage(extension) {
317
+ const languageMap = {
318
+ ".ts": "typescript",
319
+ ".tsx": "typescript",
320
+ ".js": "javascript",
321
+ ".jsx": "javascript",
322
+ ".py": "python",
323
+ ".java": "java",
324
+ ".cpp": "cpp",
325
+ ".c": "c",
326
+ ".cs": "csharp",
327
+ ".php": "php",
328
+ ".rb": "ruby",
329
+ ".go": "go",
330
+ ".rs": "rust",
331
+ ".swift": "swift",
332
+ ".kt": "kotlin",
333
+ ".scala": "scala",
334
+ };
335
+ return languageMap[extension] || "unknown";
336
+ }
337
+ /**
338
+ * Governance-oriented proposal analysis from a code quality perspective.
339
+ */
340
+ async analyzeProposal(args) {
341
+ const { proposalTitle = "", proposalDescription = "", evidence = [], proposalType = "" } = args;
342
+ const text = `${proposalTitle} ${proposalDescription} ${evidence.join(" ")}`.toLowerCase();
343
+ let decision = "approve";
344
+ let confidence = 0.82;
345
+ let reasoning = "The proposal appears reasonable from a code quality and maintainability perspective.";
346
+ if (text.includes("aml") || text.includes("kyc") || text.includes("anti-money")) {
347
+ decision = "approve";
348
+ confidence = 0.88;
349
+ reasoning = "AML/KYC compliance code requires rigorous review: transaction monitoring must handle edge cases, avoid false positives from legitimate patterns, and maintain audit trails for regulatory inspection.";
350
+ }
351
+ else if (text.includes("psd2") || text.includes("strong customer authentication") || text.includes("payment initiation")) {
352
+ decision = "approve";
353
+ confidence = 0.90;
354
+ reasoning = "PSD2 SCA implementation must balance security with user experience. Code should use well-audited MFA libraries, avoid rolling custom authentication, and include comprehensive test coverage for all authentication flows.";
355
+ }
356
+ else if (text.includes("gdpr") || text.includes("right to erasure") || text.includes("data protection")) {
357
+ decision = "approve";
358
+ confidence = 0.92;
359
+ reasoning = "GDPR erasure pipelines require careful code review: cascading deletes must be transactional, audit logs must be preserved, and the 30-day SLA demands observability and monitoring integration.";
360
+ }
361
+ else if (text.includes("extract method")) {
362
+ decision = "approve";
363
+ confidence = 0.93;
364
+ reasoning = "Extract Method is a well-established refactoring pattern that improves readability and reduces cognitive load when applied consistently.";
365
+ }
366
+ else if (text.includes("test coverage")) {
367
+ decision = "approve";
368
+ confidence = 0.90;
369
+ reasoning = "Expanding automated test coverage generally improves long-term code health and reduces regression risk.";
370
+ }
371
+ else if (text.includes("increase timeout") && text.includes("flaky")) {
372
+ decision = "reject";
373
+ confidence = 0.72;
374
+ reasoning = "Repeatedly increasing timeouts to mask flaky tests is an anti-pattern that hides underlying race conditions or timing issues.";
375
+ }
376
+ if (proposalType === "fix" && text.includes("timeout")) {
377
+ confidence = Math.max(0.68, confidence - 0.08);
378
+ }
379
+ return {
380
+ content: [
381
+ {
382
+ type: "text",
383
+ text: `DECISION: ${decision}\nCONFIDENCE: ${confidence.toFixed(2)}\nREASONING: ${reasoning}`,
384
+ },
385
+ ],
386
+ };
387
+ }
388
+ analyzeCode(content, language, focusAreas) {
389
+ const issues = [];
390
+ const lines = content.split("\n");
391
+ // Security analysis
392
+ if (!focusAreas || focusAreas.includes("security")) {
393
+ issues.push(...this.analyzeSecurity(content, lines, language));
394
+ }
395
+ // Performance analysis
396
+ if (!focusAreas || focusAreas.includes("performance")) {
397
+ issues.push(...this.analyzePerformance(content, lines, language));
398
+ }
399
+ // Maintainability analysis
400
+ if (!focusAreas || focusAreas.includes("maintainability")) {
401
+ issues.push(...this.analyzeMaintainability(content, lines, language));
402
+ }
403
+ // Style analysis
404
+ if (!focusAreas || focusAreas.includes("style")) {
405
+ issues.push(...this.analyzeStyle(content, lines, language));
406
+ }
407
+ // Logic analysis
408
+ if (!focusAreas || focusAreas.includes("logic")) {
409
+ issues.push(...this.analyzeLogic(content, lines, language));
410
+ }
411
+ return issues;
412
+ }
413
+ analyzeSecurity(content, lines, language) {
414
+ const issues = [];
415
+ lines.forEach((line, index) => {
416
+ const lineNum = index + 1;
417
+ // SQL injection patterns
418
+ if (line.includes("query(") &&
419
+ (line.includes("${") || line.includes("+"))) {
420
+ issues.push({
421
+ type: "error",
422
+ category: "security",
423
+ line: lineNum,
424
+ message: "Potential SQL injection vulnerability",
425
+ suggestion: "Use parameterized queries or prepared statements",
426
+ severity: "critical",
427
+ });
428
+ }
429
+ // XSS patterns
430
+ if (line.includes("innerHTML") || line.includes("outerHTML")) {
431
+ issues.push({
432
+ type: "error",
433
+ category: "security",
434
+ line: lineNum,
435
+ message: "Direct HTML manipulation detected",
436
+ suggestion: "Use textContent or sanitize HTML input",
437
+ severity: "high",
438
+ });
439
+ }
440
+ // Hardcoded secrets
441
+ if (/(password|secret|key|token)\s*=\s*['"][^'"]*['"]/i.test(line)) {
442
+ issues.push({
443
+ type: "error",
444
+ category: "security",
445
+ line: lineNum,
446
+ message: "Hardcoded secret detected",
447
+ suggestion: "Move secrets to environment variables or secure vault",
448
+ severity: "critical",
449
+ });
450
+ }
451
+ // eval() usage
452
+ if (line.includes("eval(")) {
453
+ issues.push({
454
+ type: "error",
455
+ category: "security",
456
+ line: lineNum,
457
+ message: "Use of eval() detected",
458
+ suggestion: "Avoid eval() for security reasons",
459
+ severity: "high",
460
+ });
461
+ }
462
+ });
463
+ return issues;
464
+ }
465
+ analyzePerformance(content, lines, language) {
466
+ const issues = [];
467
+ lines.forEach((line, index) => {
468
+ const lineNum = index + 1;
469
+ // Inefficient loops
470
+ if (line.includes("for") &&
471
+ line.includes(".length") &&
472
+ !line.includes("let ")) {
473
+ issues.push({
474
+ type: "warning",
475
+ category: "performance",
476
+ line: lineNum,
477
+ message: "Array length accessed in loop condition",
478
+ suggestion: "Cache array length outside the loop",
479
+ severity: "medium",
480
+ });
481
+ }
482
+ // Memory leaks (event listeners)
483
+ if (line.includes("addEventListener") &&
484
+ !content.includes("removeEventListener")) {
485
+ issues.push({
486
+ type: "warning",
487
+ category: "performance",
488
+ line: lineNum,
489
+ message: "Event listener added without cleanup",
490
+ suggestion: "Ensure event listeners are removed when no longer needed",
491
+ severity: "medium",
492
+ });
493
+ }
494
+ // Inefficient string concatenation
495
+ if (language === "javascript" &&
496
+ line.includes("+") &&
497
+ line.includes("=")) {
498
+ issues.push({
499
+ type: "warning",
500
+ category: "performance",
501
+ line: lineNum,
502
+ message: "String concatenation in loop may be inefficient",
503
+ suggestion: "Consider using array.join() or template literals",
504
+ severity: "low",
505
+ });
506
+ }
507
+ });
508
+ return issues;
509
+ }
510
+ analyzeMaintainability(content, lines, language) {
511
+ const issues = [];
512
+ // Function length check
513
+ const functions = content.match(/(?:function|const|let)\s+\w+\s*[=(]\s*(?:\([^)]*\)\s*=>|function\s*\([^)]*\))/g);
514
+ if (functions) {
515
+ functions.forEach((func) => {
516
+ const funcStart = content.indexOf(func);
517
+ const funcBody = content.substring(funcStart, content.indexOf("}", funcStart) + 1);
518
+ const funcLines = funcBody.split("\n").length;
519
+ if (funcLines > 50) {
520
+ issues.push({
521
+ type: "warning",
522
+ category: "maintainability",
523
+ line: lines.findIndex((l) => l.includes(func.split(" ")[1] || func)) +
524
+ 1,
525
+ message: `Function too long (${funcLines} lines)`,
526
+ suggestion: "Break down into smaller, focused functions",
527
+ severity: "medium",
528
+ });
529
+ }
530
+ });
531
+ }
532
+ // Deep nesting check
533
+ let maxNesting = 0;
534
+ let currentNesting = 0;
535
+ lines.forEach((line, index) => {
536
+ const openBraces = (line.match(/{/g) || []).length;
537
+ const closeBraces = (line.match(/}/g) || []).length;
538
+ currentNesting += openBraces - closeBraces;
539
+ maxNesting = Math.max(maxNesting, currentNesting);
540
+ if (currentNesting > 4) {
541
+ issues.push({
542
+ type: "warning",
543
+ category: "maintainability",
544
+ line: index + 1,
545
+ message: "Excessive nesting depth",
546
+ suggestion: "Extract nested logic into separate functions",
547
+ severity: "medium",
548
+ });
549
+ }
550
+ });
551
+ return issues;
552
+ }
553
+ analyzeStyle(content, lines, language) {
554
+ const issues = [];
555
+ lines.forEach((line, index) => {
556
+ const lineNum = index + 1;
557
+ // Line length check
558
+ if (line.length > 120) {
559
+ issues.push({
560
+ type: "info",
561
+ category: "style",
562
+ line: lineNum,
563
+ message: "Line too long (>120 characters)",
564
+ suggestion: "Break long lines for better readability",
565
+ severity: "low",
566
+ });
567
+ }
568
+ // Magic numbers
569
+ if (/\b\d{2,}\b/.test(line) &&
570
+ !line.includes("//") &&
571
+ !line.includes("/*")) {
572
+ const numbers = line.match(/\b\d{2,}\b/g);
573
+ if (numbers && numbers.some((n) => parseInt(n) > 1)) {
574
+ issues.push({
575
+ type: "info",
576
+ category: "style",
577
+ line: lineNum,
578
+ message: "Magic number detected",
579
+ suggestion: "Replace magic numbers with named constants",
580
+ severity: "low",
581
+ });
582
+ }
583
+ }
584
+ });
585
+ return issues;
586
+ }
587
+ analyzeLogic(content, lines, language) {
588
+ const issues = [];
589
+ // Check for console.log in production code
590
+ lines.forEach((line, index) => {
591
+ if (line.includes("console.log") && !line.includes("//")) {
592
+ issues.push({
593
+ type: "warning",
594
+ category: "logic",
595
+ line: index + 1,
596
+ message: "console.log statement found",
597
+ suggestion: "Remove console.log statements or replace with proper logging",
598
+ severity: "low",
599
+ });
600
+ }
601
+ });
602
+ // Check for TODO comments
603
+ lines.forEach((line, index) => {
604
+ if (line.includes("TODO") || line.includes("FIXME")) {
605
+ issues.push({
606
+ type: "info",
607
+ category: "logic",
608
+ line: index + 1,
609
+ message: "TODO/FIXME comment found",
610
+ suggestion: "Address TODO items or create proper issues",
611
+ severity: "low",
612
+ });
613
+ }
614
+ });
615
+ return issues;
616
+ }
617
+ calculateMetrics(content, language) {
618
+ const lines = content.split("\n");
619
+ const codeLines = lines.filter((line) => {
620
+ const trimmed = line.trim();
621
+ return (trimmed &&
622
+ !trimmed.startsWith("//") &&
623
+ !trimmed.startsWith("/*") &&
624
+ !trimmed.startsWith("*"));
625
+ });
626
+ const commentLines = lines.filter((line) => line.trim().startsWith("//") ||
627
+ line.trim().startsWith("/*") ||
628
+ line.trim().startsWith("*"));
629
+ // Simple cyclomatic complexity calculation
630
+ const complexityKeywords = [
631
+ "if",
632
+ "else",
633
+ "for",
634
+ "while",
635
+ "case",
636
+ "catch",
637
+ "&&",
638
+ "||",
639
+ ];
640
+ let complexity = 1; // Base complexity
641
+ complexityKeywords.forEach((keyword) => {
642
+ const matches = (content.match(new RegExp(`\\b${keyword}\\b`, "g")) || [])
643
+ .length;
644
+ complexity += matches;
645
+ });
646
+ return {
647
+ cyclomaticComplexity: complexity,
648
+ linesOfCode: codeLines.length,
649
+ commentRatio: commentLines.length / lines.length,
650
+ duplicateLines: this.calculateDuplicateLines(lines),
651
+ };
652
+ }
653
+ calculateDuplicateLines(lines) {
654
+ const lineCount = new Map();
655
+ lines.forEach((line) => {
656
+ const trimmed = line.trim();
657
+ if (trimmed) {
658
+ lineCount.set(trimmed, (lineCount.get(trimmed) || 0) + 1);
659
+ }
660
+ });
661
+ let duplicates = 0;
662
+ lineCount.forEach((count) => {
663
+ if (count > 1) {
664
+ duplicates += count;
665
+ }
666
+ });
667
+ return duplicates;
668
+ }
669
+ generateSuggestions(issues, metrics, language) {
670
+ const suggestions = [];
671
+ if (issues.length === 0) {
672
+ suggestions.push("Code quality is excellent! Consider adding more comprehensive tests.");
673
+ }
674
+ // Group issues by category and severity
675
+ const criticalIssues = issues.filter((i) => i.severity === "critical");
676
+ const highIssues = issues.filter((i) => i.severity === "high");
677
+ if (criticalIssues.length > 0) {
678
+ suggestions.push("Address all critical security and error issues before committing.");
679
+ }
680
+ if (highIssues.length > 0) {
681
+ suggestions.push("Review and fix high-priority issues to improve code reliability.");
682
+ }
683
+ if (metrics) {
684
+ if (metrics.cyclomaticComplexity > 20) {
685
+ suggestions.push("Consider breaking down complex functions to reduce cyclomatic complexity.");
686
+ }
687
+ if (metrics.commentRatio < 0.1) {
688
+ suggestions.push("Add more comments to improve code documentation and maintainability.");
689
+ }
690
+ if (metrics.linesOfCode > 500) {
691
+ suggestions.push("Large files detected. Consider splitting into smaller, focused modules.");
692
+ }
693
+ }
694
+ // Language-specific suggestions
695
+ switch (language) {
696
+ case "typescript":
697
+ suggestions.push("Ensure proper TypeScript type annotations and avoid 'any' types.");
698
+ break;
699
+ case "javascript":
700
+ suggestions.push("Consider migrating to TypeScript for better type safety.");
701
+ break;
702
+ case "python":
703
+ suggestions.push("Follow PEP 8 style guidelines and add type hints.");
704
+ break;
705
+ }
706
+ return suggestions;
707
+ }
708
+ calculateOverallScore(issues, metrics) {
709
+ let score = 100;
710
+ // Deduct points for issues
711
+ issues.forEach((issue) => {
712
+ switch (issue.severity) {
713
+ case "critical":
714
+ score -= 10;
715
+ break;
716
+ case "high":
717
+ score -= 5;
718
+ break;
719
+ case "medium":
720
+ score -= 2;
721
+ break;
722
+ case "low":
723
+ score -= 1;
724
+ break;
725
+ }
726
+ });
727
+ // Deduct points for poor metrics
728
+ if (metrics) {
729
+ if (metrics.cyclomaticComplexity > 20)
730
+ score -= 10;
731
+ if (metrics.commentRatio < 0.05)
732
+ score -= 5;
733
+ if (metrics.duplicateLines > 50)
734
+ score -= 5;
735
+ }
736
+ return Math.max(0, Math.min(100, score));
737
+ }
738
+ assessOverallQuality(avgScore, totalIssues, criticalIssues) {
739
+ if (avgScore >= 90 && criticalIssues === 0) {
740
+ return "✅ EXCELLENT: Code quality is outstanding. Ready for production.";
741
+ }
742
+ else if (avgScore >= 75 && criticalIssues === 0) {
743
+ return "👍 GOOD: Code quality is acceptable. Minor improvements recommended.";
744
+ }
745
+ else if (avgScore >= 60) {
746
+ return "⚠️ NEEDS ATTENTION: Address critical issues and major improvements needed.";
747
+ }
748
+ else {
749
+ return "🚨 CRITICAL: Major quality issues detected. Do not merge without fixes.";
750
+ }
751
+ }
752
+ checkStandardsCompliance(content, language, standards) {
753
+ const violations = [];
754
+ // TypeScript specific checks
755
+ if (language === "typescript") {
756
+ if (content.includes(": any")) {
757
+ violations.push({
758
+ rule: "no-any",
759
+ description: "Avoid using 'any' type",
760
+ severity: "medium",
761
+ });
762
+ }
763
+ if (!content.includes("interface") && !content.includes("type")) {
764
+ violations.push({
765
+ rule: "use-types",
766
+ description: "Consider using interfaces or types for better type safety",
767
+ severity: "low",
768
+ });
769
+ }
770
+ }
771
+ // JavaScript specific checks
772
+ if (language === "javascript") {
773
+ if (content.includes("var ")) {
774
+ violations.push({
775
+ rule: "no-var",
776
+ description: "Use 'const' or 'let' instead of 'var'",
777
+ severity: "medium",
778
+ });
779
+ }
780
+ }
781
+ // Python specific checks
782
+ if (language === "python") {
783
+ if (content.includes("print(") && !content.includes("#")) {
784
+ violations.push({
785
+ rule: "no-print",
786
+ description: "Avoid using print() in production code",
787
+ severity: "low",
788
+ });
789
+ }
790
+ }
791
+ return violations;
792
+ }
793
+ generateStandardsRecommendations(violations, language, standards) {
794
+ const recommendations = [];
795
+ if (violations.length === 0) {
796
+ recommendations.push(`Code follows ${language} best practices.`);
797
+ return recommendations;
798
+ }
799
+ violations.forEach((violation) => {
800
+ recommendations.push(`Fix ${violation.rule}: ${violation.description}`);
801
+ });
802
+ // Language-specific recommendations
803
+ switch (language) {
804
+ case "typescript":
805
+ recommendations.push("Enable strict TypeScript settings for better type checking.");
806
+ break;
807
+ case "javascript":
808
+ recommendations.push("Consider using ESLint with a comprehensive ruleset.");
809
+ break;
810
+ case "python":
811
+ recommendations.push("Use black for code formatting and flake8 for linting.");
812
+ break;
813
+ }
814
+ return recommendations;
815
+ }
816
+ calculateComplianceScore(violations) {
817
+ const baseScore = 100;
818
+ const deductions = violations.reduce((total, violation) => {
819
+ switch (violation.severity) {
820
+ case "high":
821
+ return total + 10;
822
+ case "medium":
823
+ return total + 5;
824
+ case "low":
825
+ return total + 2;
826
+ default:
827
+ return total + 1;
828
+ }
829
+ }, 0);
830
+ return Math.max(0, baseScore - deductions);
831
+ }
832
+ async run() {
833
+ const transport = new StdioServerTransport();
834
+ await this.server.connect(transport);
835
+ // Use centralized shutdown handler
836
+ createGracefulShutdown({
837
+ serverName: "code-review.server",
838
+ server: this.server,
839
+ });
840
+ }
841
+ }
842
+ // Run the server if this file is executed directly
843
+ if (import.meta.url === `file://${process.argv[1]}`) {
844
+ const server = new StringRayCodeReviewServer();
845
+ server.run().catch(() => { });
846
+ }
847
+ export { StringRayCodeReviewServer };