0xray 3.1.1 → 3.3.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 (309) hide show
  1. package/.opencode/codex.codex +1 -1
  2. package/.opencode/commands/auto-format.md +3 -3
  3. package/.opencode/commands/auto-summary-capture.md +2 -2
  4. package/.opencode/commands/enforcer-daily-scan.md +3 -3
  5. package/.opencode/commands/framework-compliance-audit.md +4 -4
  6. package/.opencode/commands/interactive-validator.md +2 -2
  7. package/.opencode/commands/job-summary-logger.md +2 -2
  8. package/.opencode/commands/mode-switch.md +1 -1
  9. package/.opencode/commands/model-health-check.md +2 -2
  10. package/.opencode/commands/performance-analysis.md +2 -2
  11. package/.opencode/commands/pre-commit-introspection.md +3 -3
  12. package/.opencode/commands/security-scan.md +3 -3
  13. package/.opencode/commands/sisyphus-validation.md +3 -3
  14. package/.opencode/commands/summary-logger.md +2 -2
  15. package/AGENTS.md +3 -13
  16. package/README.md +3 -3
  17. package/dist/AGENTS.md +3 -13
  18. package/dist/CHANGELOG.md +55 -0
  19. package/dist/README.md +3 -3
  20. package/dist/analytics/consent-manager.js +0 -1
  21. package/dist/analytics/emerging-pattern-detector.js +0 -1
  22. package/dist/analytics/pattern-learning-engine.js +0 -1
  23. package/dist/analytics/pattern-performance-tracker.js +0 -1
  24. package/dist/analytics/predictive-analytics.js +0 -1
  25. package/dist/analytics/prompt-pattern-analyzer.js +0 -1
  26. package/dist/analytics/routing-performance-analyzer.js +0 -1
  27. package/dist/analytics/routing-refiner.js +0 -1
  28. package/dist/analytics/simple-pattern-analyzer.js +0 -1
  29. package/dist/cli/commands/archive-logs.js +0 -1
  30. package/dist/cli/commands/opencode-install.js +13 -0
  31. package/dist/cli/commands/plugin-commands.js +0 -1
  32. package/dist/cli/commands/status.js +11 -13
  33. package/dist/cli/index.js +2 -7
  34. package/dist/core/activity-logger.js +0 -1
  35. package/dist/core/adaptive-kernel.js +0 -1
  36. package/dist/core/boot-orchestrator.js +2 -12
  37. package/dist/core/bridge.mjs +0 -1
  38. package/dist/core/codex-formatter.js +0 -1
  39. package/dist/core/codex-injector.js +0 -1
  40. package/dist/core/config-loader.js +36 -28
  41. package/dist/core/context-loader.js +0 -1
  42. package/dist/core/context-validator.js +0 -1
  43. package/dist/core/features-config.js +40 -1
  44. package/dist/core/kernel-patterns.js +0 -1
  45. package/dist/core/model-router.js +23 -64
  46. package/dist/core/system-prompt-generator.js +0 -1
  47. package/dist/delegation/agent-delegator.js +0 -1
  48. package/dist/delegation/agent-expertise.js +0 -1
  49. package/dist/delegation/analytics/index.js +0 -1
  50. package/dist/delegation/analytics/learning-engine.js +0 -1
  51. package/dist/delegation/analytics/outcome-tracker.js +0 -1
  52. package/dist/delegation/analytics/routing-analytics.js +0 -1
  53. package/dist/delegation/ast-code-parser.js +0 -1
  54. package/dist/delegation/complexity-analyzer.js +0 -1
  55. package/dist/delegation/dependency-graph-builder.js +0 -1
  56. package/dist/delegation/index.js +0 -1
  57. package/dist/delegation/metrics-aggregator.js +0 -1
  58. package/dist/delegation/session-coordinator.js +0 -1
  59. package/dist/delegation/strategy-selector.js +0 -1
  60. package/dist/delegation/voting-coordinator.js +0 -1
  61. package/dist/delegation/voting-types.js +0 -1
  62. package/dist/delegation/weighted-voting-aggregator.js +0 -1
  63. package/dist/enforcement/core/index.js +0 -1
  64. package/dist/enforcement/core/rule-executor.js +0 -1
  65. package/dist/enforcement/core/rule-hierarchy.js +0 -1
  66. package/dist/enforcement/core/rule-registry.js +0 -1
  67. package/dist/enforcement/core/violation-fixer.js +0 -1
  68. package/dist/enforcement/index.js +0 -1
  69. package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
  70. package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
  71. package/dist/enforcement/loaders/base-loader.js +0 -1
  72. package/dist/enforcement/loaders/codex-loader.js +0 -1
  73. package/dist/enforcement/loaders/index.js +0 -1
  74. package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
  75. package/dist/enforcement/loaders/processor-loader.js +0 -1
  76. package/dist/enforcement/types.js +0 -1
  77. package/dist/enforcement/validators/architecture-validators.js +0 -1
  78. package/dist/enforcement/validators/base-validator.js +0 -1
  79. package/dist/enforcement/validators/code-quality-validators.js +0 -1
  80. package/dist/enforcement/validators/index.js +0 -1
  81. package/dist/enforcement/validators/security-validators.js +0 -1
  82. package/dist/enforcement/validators/testing-validators.js +0 -1
  83. package/dist/enforcement/validators/validator-registry.js +0 -1
  84. package/dist/governance/codex-policy.service.js +0 -1
  85. package/dist/inference/inference-agent-invoker.js +67 -0
  86. package/dist/inference/inference-applier.js +178 -0
  87. package/dist/inference/inference-cycle.js +51 -827
  88. package/dist/inference/inference-proposal-generator.js +149 -0
  89. package/dist/infrastructure/iac-validator.js +465 -0
  90. package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
  91. package/dist/integrations/base/ExampleIntegration.js +0 -1
  92. package/dist/integrations/base/Integration.js +0 -1
  93. package/dist/integrations/base/index.js +0 -1
  94. package/dist/integrations/base/registry.js +0 -1
  95. package/dist/integrations/base/types.js +0 -1
  96. package/dist/integrations/enforcement-gate.js +3 -3
  97. package/dist/integrations/governance/governance-client.js +0 -1
  98. package/dist/integrations/governance/index.js +11 -19
  99. package/dist/integrations/governance/types.js +0 -1
  100. package/dist/integrations/hermes-agent/__init__.py +4 -0
  101. package/dist/integrations/hermes-agent/bridge.mjs +37 -0
  102. package/dist/integrations/openclaw/api-server.js +0 -1
  103. package/dist/integrations/openclaw/client.js +0 -1
  104. package/dist/integrations/openclaw/config.js +0 -1
  105. package/dist/integrations/openclaw/hooks/xray-hooks.js +0 -1
  106. package/dist/integrations/openclaw/index.js +0 -1
  107. package/dist/integrations/openclaw/types.js +0 -1
  108. package/dist/integrations/plugins/index.js +0 -1
  109. package/dist/integrations/plugins/plugin-integration.js +0 -1
  110. package/dist/integrations/plugins/plugin-registry.js +0 -1
  111. package/dist/mcps/agent-resolver.js +0 -1
  112. package/dist/mcps/architect-tools.server.js +119 -185
  113. package/dist/mcps/auto-format.server.js +56 -74
  114. package/dist/mcps/boot-orchestrator.server.js +67 -85
  115. package/dist/mcps/config/config-loader.js +6 -0
  116. package/dist/mcps/config/plugin-server-registry.js +0 -1
  117. package/dist/mcps/enforcer-tools.server.js +207 -273
  118. package/dist/mcps/estimation.server.js +63 -107
  119. package/dist/mcps/framework-compliance-audit.server.js +52 -81
  120. package/dist/mcps/framework-help.server.js +71 -89
  121. package/dist/mcps/governance.server.js +97 -149
  122. package/dist/mcps/knowledge-skills/api-design.server.js +33 -65
  123. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +33 -65
  124. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +123 -163
  125. package/dist/mcps/knowledge-skills/code-analyzer.server.js +210 -237
  126. package/dist/mcps/knowledge-skills/code-review.server.js +108 -142
  127. package/dist/mcps/knowledge-skills/content-creator.server.js +203 -225
  128. package/dist/mcps/knowledge-skills/database-design.server.js +116 -150
  129. package/dist/mcps/knowledge-skills/devops-deployment.server.js +123 -157
  130. package/dist/mcps/knowledge-skills/git-workflow.server.js +34 -67
  131. package/dist/mcps/knowledge-skills/growth-strategist.server.js +301 -323
  132. package/dist/mcps/knowledge-skills/log-monitor.server.js +139 -159
  133. package/dist/mcps/knowledge-skills/mobile-development.server.js +170 -200
  134. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +122 -158
  135. package/dist/mcps/knowledge-skills/performance-optimization.server.js +88 -138
  136. package/dist/mcps/knowledge-skills/project-analysis.server.js +131 -218
  137. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +115 -150
  138. package/dist/mcps/knowledge-skills/security-audit.server.js +16 -143
  139. package/dist/mcps/knowledge-skills/seo-consultant.server.js +20 -213
  140. package/dist/mcps/knowledge-skills/session-management.server.js +13 -90
  141. package/dist/mcps/knowledge-skills/skill-invocation.server.js +43 -421
  142. package/dist/mcps/knowledge-skills/strategist.server.js +10 -55
  143. package/dist/mcps/knowledge-skills/tech-writer.server.js +16 -191
  144. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +18 -191
  145. package/dist/mcps/knowledge-skills/testing-strategy.server.js +18 -156
  146. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +22 -296
  147. package/dist/mcps/lint.server.js +50 -91
  148. package/dist/mcps/model-health-check.server.js +32 -60
  149. package/dist/mcps/orchestrator/aside-context.js +207 -0
  150. package/dist/mcps/orchestrator/config/agent-capabilities.js +30 -11
  151. package/dist/mcps/orchestrator/config/memory-routing-bridge.js +70 -0
  152. package/dist/mcps/orchestrator/execution/execution-planner.js +25 -7
  153. package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
  154. package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
  155. package/dist/mcps/orchestrator/handlers/task-handler.js +59 -1
  156. package/dist/mcps/orchestrator/index.js +5 -0
  157. package/dist/mcps/orchestrator/server.js +63 -8
  158. package/dist/mcps/performance-analysis.server.js +56 -87
  159. package/dist/mcps/processor-pipeline.server.js +68 -99
  160. package/dist/mcps/researcher.server.js +80 -153
  161. package/dist/mcps/security-scan.server.js +56 -70
  162. package/dist/mcps/shared/knowledge-skill-base.js +11 -4
  163. package/dist/mcps/state-manager.server.js +124 -152
  164. package/dist/memory-routing/index.js +4 -0
  165. package/dist/memory-routing/null-provider.js +51 -0
  166. package/dist/memory-routing/provider-loader.js +91 -0
  167. package/dist/memory-routing/provider-registry.js +40 -0
  168. package/dist/memory-routing/types.js +7 -0
  169. package/dist/memory-routing/validate-config.js +32 -0
  170. package/dist/monitoring/nudge-watchdog.js +0 -1
  171. package/dist/nucleus/default-plugins.js +13 -19
  172. package/dist/nucleus/index.js +0 -1
  173. package/dist/nucleus/thin-dispatch.js +29 -1
  174. package/dist/orchestrator/agent-spawn-governor.js +0 -1
  175. package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
  176. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
  177. package/dist/orchestrator/orchestrator.js +8 -18
  178. package/dist/orchestrator/self-direction-activation.js +0 -1
  179. package/dist/orchestrator/universal-registry-bridge.js +0 -1
  180. package/dist/performance/performance-budget-enforcer.js +0 -1
  181. package/dist/performance/performance-regression-tester.js +0 -1
  182. package/dist/plugin/plugin-codex-context.js +87 -0
  183. package/dist/plugin/plugin-helpers.js +155 -0
  184. package/dist/plugin/plugin-logger.js +46 -0
  185. package/dist/plugin/plugin-modules.js +144 -0
  186. package/dist/plugin/plugin-quality-gate.js +88 -0
  187. package/dist/plugin/plugin-types.js +1 -0
  188. package/dist/plugin/xray-codex-injection.js +338 -0
  189. package/dist/postprocessor/PostProcessor.js +3 -9
  190. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  191. package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
  192. package/dist/postprocessor/integration.js +194 -0
  193. package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
  194. package/dist/postprocessor/metamorphosis/index.js +1 -0
  195. package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
  196. package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
  197. package/dist/postprocessor/triggers/APITrigger.js +0 -1
  198. package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
  199. package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
  200. package/dist/processors/implementations/async-pattern-processor.js +0 -1
  201. package/dist/processors/implementations/console-log-guard-processor.js +0 -1
  202. package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
  203. package/dist/processors/implementations/inference-improvement-processor.js +2 -9
  204. package/dist/processors/implementations/log-protection-processor.js +0 -1
  205. package/dist/processors/implementations/nudge-processor.js +0 -1
  206. package/dist/processors/implementations/performance-budget-processor.js +0 -1
  207. package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
  208. package/dist/processors/implementations/publish-preflight-processor.js +4 -12
  209. package/dist/processors/implementations/session-summary-processor.js +8 -16
  210. package/dist/processors/implementations/spawn-governance-processor.js +0 -1
  211. package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
  212. package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
  213. package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
  214. package/dist/processors/implementations/version-compliance-processor.js +0 -1
  215. package/dist/processors/processor-interfaces.js +0 -1
  216. package/dist/processors/processor-types.js +0 -1
  217. package/dist/scripts/integration.js +0 -1
  218. package/dist/security/comprehensive-security-audit.js +0 -1
  219. package/dist/security/security-agent-coordinator.js +0 -1
  220. package/dist/security/security-auditor.js +0 -1
  221. package/dist/security/security-hardener.js +0 -1
  222. package/dist/security/security-hardening-system.js +0 -1
  223. package/dist/security/security-headers.js +0 -1
  224. package/dist/security/security-orchestration-layer.js +0 -1
  225. package/dist/services/inference-tuner.js +0 -1
  226. package/dist/session/session-cleanup-manager.js +0 -1
  227. package/dist/session/session-monitor.js +0 -1
  228. package/dist/session/session-state-manager.js +0 -1
  229. package/dist/skills/xray-orchestrator/index.js +0 -1
  230. package/dist/utils/codex-parser.js +0 -1
  231. package/dist/utils/language-detector.js +0 -1
  232. package/dist/utils/shutdown-handler.js +0 -1
  233. package/dist/validation/agent-config-validator.js +280 -0
  234. package/dist/validation/orchestration-flow-validator.js +606 -0
  235. package/package.json +1 -1
  236. package/scripts/node/release.mjs +2 -2
  237. package/scripts/node/setup.cjs +28 -0
  238. package/scripts/node/universal-version-manager.js +1 -1
  239. package/src/mcps/agent-resolver.ts +0 -1
  240. package/src/mcps/architect-tools.server.ts +129 -211
  241. package/src/mcps/auto-format.server.ts +74 -103
  242. package/src/mcps/boot-orchestrator.server.ts +71 -96
  243. package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
  244. package/src/mcps/config/config-loader.ts +7 -0
  245. package/src/mcps/config/plugin-server-registry.ts +0 -1
  246. package/src/mcps/enforcer-tools.server.ts +217 -294
  247. package/src/mcps/estimation.server.ts +62 -122
  248. package/src/mcps/framework-compliance-audit.server.ts +53 -95
  249. package/src/mcps/framework-help.server.ts +74 -96
  250. package/src/mcps/governance.server.ts +97 -162
  251. package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
  252. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
  253. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
  254. package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
  255. package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
  256. package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
  257. package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
  258. package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
  259. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  260. package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
  261. package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
  262. package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
  263. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
  264. package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
  265. package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
  266. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
  267. package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
  268. package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
  269. package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
  270. package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
  271. package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
  272. package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
  273. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
  274. package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
  275. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
  276. package/src/mcps/lint.server.ts +52 -105
  277. package/src/mcps/model-health-check.server.ts +34 -70
  278. package/src/mcps/orchestrator/aside-context.ts +245 -0
  279. package/src/mcps/orchestrator/config/agent-capabilities.ts +49 -14
  280. package/src/mcps/orchestrator/config/memory-routing-bridge.ts +80 -0
  281. package/src/mcps/orchestrator/execution/execution-planner.ts +36 -9
  282. package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
  283. package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
  284. package/src/mcps/orchestrator/handlers/task-handler.ts +78 -2
  285. package/src/mcps/orchestrator/index.ts +29 -0
  286. package/src/mcps/orchestrator/server.ts +79 -24
  287. package/src/mcps/orchestrator/types.ts +50 -0
  288. package/src/mcps/performance-analysis.server.ts +59 -102
  289. package/src/mcps/processor-pipeline.server.ts +70 -108
  290. package/src/mcps/researcher.server.ts +87 -175
  291. package/src/mcps/security-scan.server.ts +57 -76
  292. package/src/mcps/shared/knowledge-skill-base.ts +12 -4
  293. package/src/mcps/state-manager.server.ts +129 -169
  294. package/src/opencode/codex.codex +1 -1
  295. package/src/opencode/commands/auto-format.md +3 -3
  296. package/src/opencode/commands/auto-summary-capture.md +2 -2
  297. package/src/opencode/commands/enforcer-daily-scan.md +3 -3
  298. package/src/opencode/commands/framework-compliance-audit.md +4 -4
  299. package/src/opencode/commands/interactive-validator.md +2 -2
  300. package/src/opencode/commands/job-summary-logger.md +2 -2
  301. package/src/opencode/commands/mode-switch.md +1 -1
  302. package/src/opencode/commands/model-health-check.md +2 -2
  303. package/src/opencode/commands/performance-analysis.md +2 -2
  304. package/src/opencode/commands/pre-commit-introspection.md +3 -3
  305. package/src/opencode/commands/security-scan.md +3 -3
  306. package/src/opencode/commands/sisyphus-validation.md +3 -3
  307. package/src/opencode/commands/summary-logger.md +2 -2
  308. package/src/skills/xray-orchestrator/index.ts +0 -1
  309. package/dist/nucleus/orchestrator.js +0 -479
@@ -5,16 +5,10 @@
5
5
  * and pattern recognition - provides deep project intelligence
6
6
  */
7
7
 
8
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
- import {
11
- CallToolRequestSchema,
12
- ListToolsRequestSchema,
13
- type CallToolResult,
14
- } from "@modelcontextprotocol/sdk/types.js";
15
8
  import * as fs from "fs";
16
9
  import * as path from "path";
17
10
  import { frameworkLogger } from "../../core/framework-logger.js";
11
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
18
12
 
19
13
  interface ProjectMetrics {
20
14
  totalFiles: number;
@@ -136,30 +130,10 @@ interface McpToolResponse {
136
130
  content: Array<{ type: "text"; text: string }>;
137
131
  }
138
132
 
139
- class ProjectAnalysisServer {
140
- private server: Server;
141
-
133
+ class ProjectAnalysisServer extends XrayKnowledgeSkillBase {
142
134
  constructor() {
143
- this.server = new Server(
144
- {
145
- name: "project-analysis", version: "3.1.0",
146
- },
147
- {
148
- capabilities: {
149
- tools: {},
150
- },
151
- },
152
- );
153
-
154
- this.setupToolHandlers();
155
- // Server initialization - removed unnecessary startup logging
156
- }
157
-
158
- private setupToolHandlers() {
159
- // List available tools
160
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
161
- return {
162
- tools: [
135
+ super("project-analysis", "3.1.0");
136
+ this.tools = [
163
137
  {
164
138
  name: "analyze-project-structure",
165
139
  description:
@@ -295,34 +269,15 @@ class ProjectAnalysisServer {
295
269
  required: ["proposalTitle", "proposalDescription"],
296
270
  },
297
271
  },
298
- ],
299
- };
300
- });
301
-
302
- // Handle tool calls
303
- this.server.setRequestHandler(CallToolRequestSchema, async (request): Promise<CallToolResult> => {
304
- const { name, arguments: args } = request.params;
305
-
306
- try {
307
- switch (name) {
308
- case "analyze-project-structure":
309
- return await this.analyzeProjectStructure(args as unknown as AnalyzeProjectStructureArgs) as CallToolResult;
310
- case "assess-project-complexity":
311
- return await this.assessProjectComplexity(args as unknown as AssessProjectComplexityArgs) as CallToolResult;
312
- case "identify-project-patterns":
313
- return await this.identifyProjectPatterns(args as unknown as IdentifyProjectPatternsArgs) as CallToolResult;
314
- case "analyze-project-health":
315
- return await this.analyzeProjectHealth(args as unknown as AnalyzeProjectHealthArgs) as CallToolResult;
316
- case "analyze_proposal":
317
- return await this.analyzeProposal(args as any) as CallToolResult;
318
- default:
319
- throw new Error(`Unknown tool: ${name}`);
320
- }
321
- } catch (error) {
322
- frameworkLogger.log("mcps/project-analysis", "tool", "error", { tool: name, error: String(error) });
323
- throw error;
324
- }
325
- });
272
+ ];
273
+ this.handlers = {
274
+ "analyze-project-structure": async (args) => this.analyzeProjectStructure(args as unknown as AnalyzeProjectStructureArgs),
275
+ "assess-project-complexity": async (args) => this.assessProjectComplexity(args as unknown as AssessProjectComplexityArgs),
276
+ "identify-project-patterns": async (args) => this.identifyProjectPatterns(args as unknown as IdentifyProjectPatternsArgs),
277
+ "analyze-project-health": async (args) => this.analyzeProjectHealth(args as unknown as AnalyzeProjectHealthArgs),
278
+ "analyze_proposal": async (args) => this.analyzeProposal(args as any),
279
+ };
280
+ this.setupToolHandlers();
326
281
  }
327
282
 
328
283
  private async analyzeProjectStructure(args: AnalyzeProjectStructureArgs): Promise<McpToolResponse> {
@@ -1037,69 +992,7 @@ class ProjectAnalysisServer {
1037
992
  };
1038
993
  }
1039
994
 
1040
- async run(): Promise<void> {
1041
- const transport = new StdioServerTransport();
1042
- await this.server.connect(transport);
1043
- await frameworkLogger.log(
1044
- "mcp-project-analysis",
1045
- "server-started",
1046
- "success",
1047
- );
1048
-
1049
- const cleanup = async (signal: string) => {
1050
- frameworkLogger.log("mcps/project-analysis", "shutdown", "info", { signal });
1051
-
1052
- // Set a timeout to force exit if graceful shutdown fails
1053
- const timeout = setTimeout(() => {
1054
- frameworkLogger.log("mcps/project-analysis", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
1055
- process.exit(1);
1056
- }, 5000); // 5 second timeout
1057
-
1058
- try {
1059
- if (this.server && typeof this.server.close === "function") {
1060
- await this.server.close();
1061
- }
1062
- clearTimeout(timeout);
1063
- frameworkLogger.log("mcps/project-analysis", "shutdown", "success");
1064
- process.exit(0);
1065
- } catch (error) {
1066
- clearTimeout(timeout);
1067
- frameworkLogger.log("mcps/project-analysis", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
1068
- process.exit(1);
1069
- }
1070
- };
1071
-
1072
- // Handle multiple shutdown signals
1073
- process.on("SIGINT", () => cleanup("SIGINT"));
1074
- process.on("SIGTERM", () => cleanup("SIGTERM"));
1075
- process.on("SIGHUP", () => cleanup("SIGHUP"));
1076
995
 
1077
- // Monitor parent process (opencode) and shutdown if it dies
1078
- const checkParent = () => {
1079
- try {
1080
- process.kill(process.ppid, 0); // Check if parent is alive
1081
- setTimeout(checkParent, 1000); // Check again in 1 second
1082
- } catch (error) {
1083
- // Parent process died, shut down gracefully
1084
- frameworkLogger.log("mcps/project-analysis", "parent-death", "info");
1085
- cleanup("parent-process-death");
1086
- }
1087
- };
1088
-
1089
- // Start monitoring parent process
1090
- setTimeout(checkParent, 2000); // Start checking after 2 seconds
1091
-
1092
- // Handle uncaught exceptions and unhandled rejections
1093
- process.on("uncaughtException", (error) => {
1094
- frameworkLogger.log("mcps/project-analysis", "uncaughtException", "error", { error: String(error) });
1095
- cleanup("uncaughtException");
1096
- });
1097
-
1098
- process.on("unhandledRejection", (reason, promise) => {
1099
- frameworkLogger.log("mcps/project-analysis", "unhandledRejection", "error", { error: String(reason) });
1100
- cleanup("unhandledRejection");
1101
- });
1102
- }
1103
996
  }
1104
997
 
1105
998
  // Start the server if run directly
@@ -5,16 +5,9 @@
5
5
  * modernization, and code improvement patterns
6
6
  */
7
7
 
8
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
8
  import * as fs from "fs";
11
9
  import { frameworkLogger } from "../../core/framework-logger.js";
12
- import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
13
- import {
14
- CallToolRequestSchema,
15
- ListToolsRequestSchema,
16
- type CallToolResult,
17
- } from "@modelcontextprotocol/sdk/types.js";
10
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
18
11
 
19
12
  interface RefactoringOpportunity {
20
13
  type:
@@ -155,29 +148,10 @@ interface RollbackPlan {
155
148
  emergencyProcedures: string[];
156
149
  }
157
150
 
158
- class XrayRefactoringStrategiesServer {
159
- private server: Server;
160
-
151
+ class XrayRefactoringStrategiesServer extends XrayKnowledgeSkillBase {
161
152
  constructor() {
162
- this.server = new Server(
163
- {
164
- name: "refactoring-strategies", version: "3.1.0",
165
- },
166
- {
167
- capabilities: {
168
- tools: {},
169
- },
170
- },
171
- );
172
-
173
- this.setupToolHandlers();
174
- // Server initialization - removed unnecessary startup logging
175
- }
176
-
177
- private setupToolHandlers() {
178
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
179
- return {
180
- tools: [
153
+ super("refactoring-strategies", "3.1.0");
154
+ this.tools = [
181
155
  {
182
156
  name: "analyze_technical_debt",
183
157
  description:
@@ -296,26 +270,14 @@ class XrayRefactoringStrategiesServer {
296
270
  required: ["codePath"],
297
271
  },
298
272
  },
299
- ],
300
- };
301
- });
302
-
303
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
304
- const { name, arguments: args } = request.params;
305
-
306
- switch (name) {
307
- case "analyze_technical_debt":
308
- return await this.analyzeTechnicalDebt(args as unknown as AnalyzeTechnicalDebtArgs) as CallToolResult;
309
- case "suggest_refactoring":
310
- return await this.suggestRefactoring(args as unknown as SuggestRefactoringArgs) as CallToolResult;
311
- case "generate_refactoring_plan":
312
- return await this.generateRefactoringPlan(args as unknown as GenerateRefactoringPlanArgs) as CallToolResult;
313
- case "modernize_codebase":
314
- return await this.modernizeCodebase(args as unknown as ModernizeCodebaseArgs) as CallToolResult;
315
- default:
316
- throw new Error(`Unknown tool: ${name}`);
317
- }
318
- });
273
+ ];
274
+ this.handlers = {
275
+ "analyze_technical_debt": async (args) => this.analyzeTechnicalDebt(args as unknown as AnalyzeTechnicalDebtArgs),
276
+ "suggest_refactoring": async (args) => this.suggestRefactoring(args as unknown as SuggestRefactoringArgs),
277
+ "generate_refactoring_plan": async (args) => this.generateRefactoringPlan(args as unknown as GenerateRefactoringPlanArgs),
278
+ "modernize_codebase": async (args) => this.modernizeCodebase(args as unknown as ModernizeCodebaseArgs),
279
+ };
280
+ this.setupToolHandlers();
319
281
  }
320
282
 
321
283
  private async analyzeTechnicalDebt(args: AnalyzeTechnicalDebtArgs) {
@@ -1072,16 +1034,7 @@ class XrayRefactoringStrategiesServer {
1072
1034
  return icons[effort as keyof typeof icons] || "❓";
1073
1035
  }
1074
1036
 
1075
- async run(): Promise<void> {
1076
- const transport = new StdioServerTransport();
1077
- await this.server.connect(transport);
1078
-
1079
- // Use centralized shutdown handler
1080
- createGracefulShutdown({
1081
- serverName: "refactoring-strategies.server",
1082
- server: this.server,
1083
- });
1084
- }
1037
+
1085
1038
  }
1086
1039
 
1087
1040
  // Run the server if this file is executed directly
@@ -5,16 +5,9 @@
5
5
  * and compliance validation - ensures production-ready security posture
6
6
  */
7
7
 
8
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
- import {
11
- CallToolRequestSchema,
12
- ListToolsRequestSchema,
13
- type CallToolResult,
14
- } from "@modelcontextprotocol/sdk/types.js";
15
8
  import * as fs from "fs";
16
9
  import * as path from "path";
17
- import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
10
+ import { XrayKnowledgeSkillBase } from "../shared/knowledge-skill-base.js";
18
11
  import { tryLLMGovernance } from "../../governance/llm-governance-provider.js";
19
12
 
20
13
  interface SecurityVulnerability {
@@ -85,151 +78,29 @@ interface AnalyzeProposalArgs {
85
78
  proposalType?: string;
86
79
  }
87
80
 
88
- class XraySecurityAuditServer {
89
- private server: Server;
81
+ class XraySecurityAuditServer extends XrayKnowledgeSkillBase {
90
82
 
91
83
  constructor() {
92
- this.server = new Server(
93
- {
94
- name: "security-audit", version: "3.1.0",
95
- },
96
- {
97
- capabilities: {
98
- tools: {},
99
- },
100
- },
101
- );
84
+ super("security-audit", "3.1.0");
85
+
86
+ this.tools = [
87
+ { name: "audit_security", description: "Perform comprehensive security audit on codebase files", inputSchema: { type: "object", properties: { files: { type: "array", items: { type: "string" }, description: "List of file paths to audit" }, includeDependencies: { type: "boolean", description: "Include dependency vulnerability analysis", default: true }, complianceFrameworks: { type: "array", items: { type: "string", enum: ["owasp-top-10", "nist", "iso-27001", "pci-dss"] }, description: "Compliance frameworks to check against" } }, required: ["files"] } },
88
+ { name: "check_vulnerability", description: "Check specific security vulnerability patterns in a file", inputSchema: { type: "object", properties: { filePath: { type: "string", description: "Path to the file to check" }, vulnerabilityType: { type: "string", enum: ["injection", "authentication", "authorization", "cryptography", "xss", "csrf", "secrets", "configuration"] }, severity: { type: "string", enum: ["critical", "high", "medium", "low", "info"], description: "Minimum severity level to report" } }, required: ["filePath", "vulnerabilityType"] } },
89
+ { name: "generate_security_report", description: "Generate comprehensive security report with remediation steps", inputSchema: { type: "object", properties: { auditResults: { type: "object", description: "Results from audit_security tool" }, format: { type: "string", enum: ["markdown", "json", "html"], default: "markdown" }, includeRemediation: { type: "boolean", default: true } }, required: ["auditResults"] } },
90
+ { name: "analyze_proposal", description: "Analyze an inference proposal (pattern/bug/refactor) from a security perspective and return a structured governance decision", inputSchema: { type: "object", properties: { proposalTitle: { type: "string" }, proposalDescription: { type: "string" }, evidence: { type: "array", items: { type: "string" } }, proposalType: { type: "string" } }, required: ["proposalTitle", "proposalDescription"] } },
91
+ ];
92
+
93
+ this.handlers = {
94
+ audit_security: async (args) => this.auditSecurity(args as AuditSecurityArgs),
95
+ check_vulnerability: async (args) => this.checkVulnerability(args as CheckVulnerabilityArgs),
96
+ generate_security_report: async (args) => this.generateSecurityReport(args as GenerateSecurityReportArgs),
97
+ analyze_proposal: async (args) => this.analyzeProposal(args as AnalyzeProposalArgs),
98
+ };
102
99
 
103
100
  this.setupToolHandlers();
104
- // Server initialization - removed unnecessary startup logging
105
101
  }
106
102
 
107
- private setupToolHandlers() {
108
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
109
- return {
110
- tools: [
111
- {
112
- name: "audit_security",
113
- description:
114
- "Perform comprehensive security audit on codebase files",
115
- inputSchema: {
116
- type: "object",
117
- properties: {
118
- files: {
119
- type: "array",
120
- items: { type: "string" },
121
- description: "List of file paths to audit",
122
- },
123
- includeDependencies: {
124
- type: "boolean",
125
- description: "Include dependency vulnerability analysis",
126
- default: true,
127
- },
128
- complianceFrameworks: {
129
- type: "array",
130
- items: {
131
- type: "string",
132
- enum: ["owasp-top-10", "nist", "iso-27001", "pci-dss"],
133
- },
134
- description: "Compliance frameworks to check against",
135
- },
136
- },
137
- required: ["files"],
138
- },
139
- },
140
- {
141
- name: "check_vulnerability",
142
- description:
143
- "Check specific security vulnerability patterns in a file",
144
- inputSchema: {
145
- type: "object",
146
- properties: {
147
- filePath: {
148
- type: "string",
149
- description: "Path to the file to check",
150
- },
151
- vulnerabilityType: {
152
- type: "string",
153
- enum: [
154
- "injection",
155
- "authentication",
156
- "authorization",
157
- "cryptography",
158
- "xss",
159
- "csrf",
160
- "secrets",
161
- "configuration",
162
- ],
163
- },
164
- severity: {
165
- type: "string",
166
- enum: ["critical", "high", "medium", "low", "info"],
167
- description: "Minimum severity level to report",
168
- },
169
- },
170
- required: ["filePath", "vulnerabilityType"],
171
- },
172
- },
173
- {
174
- name: "generate_security_report",
175
- description:
176
- "Generate comprehensive security report with remediation steps",
177
- inputSchema: {
178
- type: "object",
179
- properties: {
180
- auditResults: {
181
- type: "object",
182
- description: "Results from audit_security tool",
183
- },
184
- format: {
185
- type: "string",
186
- enum: ["markdown", "json", "html"],
187
- default: "markdown",
188
- },
189
- includeRemediation: {
190
- type: "boolean",
191
- default: true,
192
- },
193
- },
194
- required: ["auditResults"],
195
- },
196
- },
197
- {
198
- name: "analyze_proposal",
199
- description:
200
- "Analyze an inference proposal (pattern/bug/refactor) from a security perspective and return a structured governance decision",
201
- inputSchema: {
202
- type: "object",
203
- properties: {
204
- proposalTitle: { type: "string" },
205
- proposalDescription: { type: "string" },
206
- evidence: { type: "array", items: { type: "string" } },
207
- proposalType: { type: "string" },
208
- },
209
- required: ["proposalTitle", "proposalDescription"],
210
- },
211
- },
212
- ],
213
- };
214
- });
215
-
216
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
217
- const { name, arguments: args } = request.params;
218
-
219
- switch (name) {
220
- case "audit_security":
221
- return await this.auditSecurity(args as unknown as AuditSecurityArgs);
222
- case "check_vulnerability":
223
- return await this.checkVulnerability(args as unknown as CheckVulnerabilityArgs);
224
- case "generate_security_report":
225
- return await this.generateSecurityReport(args as unknown as GenerateSecurityReportArgs);
226
- case "analyze_proposal":
227
- return await this.analyzeProposal(args as AnalyzeProposalArgs) as CallToolResult;
228
- default:
229
- throw new Error(`Unknown tool: ${name}`);
230
- }
231
- });
232
- }
103
+ // setupToolHandlers removed — handled by XrayKnowledgeSkillBase via this.tools + this.handlers
233
104
 
234
105
  private async auditSecurity(args: AuditSecurityArgs) {
235
106
  const {
@@ -1153,16 +1024,7 @@ class XraySecurityAuditServer {
1153
1024
  };
1154
1025
  }
1155
1026
 
1156
- async run(): Promise<void> {
1157
- const transport = new StdioServerTransport();
1158
- await this.server.connect(transport);
1159
-
1160
- // Use centralized shutdown handler
1161
- createGracefulShutdown({
1162
- serverName: "security-audit.server",
1163
- server: this.server,
1164
- });
1165
- }
1027
+ // run() removed — handled by XrayKnowledgeSkillBase
1166
1028
  }
1167
1029
 
1168
1030
  // Run the server if this file is executed directly