0xray 3.1.1 → 3.2.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 (296) 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 +29 -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 +37 -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/handlers/complexity-handler.js +5 -1
  151. package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
  152. package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
  153. package/dist/mcps/orchestrator/index.js +5 -0
  154. package/dist/mcps/orchestrator/server.js +63 -8
  155. package/dist/mcps/performance-analysis.server.js +56 -87
  156. package/dist/mcps/processor-pipeline.server.js +68 -99
  157. package/dist/mcps/researcher.server.js +80 -153
  158. package/dist/mcps/security-scan.server.js +56 -70
  159. package/dist/mcps/shared/knowledge-skill-base.js +11 -4
  160. package/dist/mcps/state-manager.server.js +124 -152
  161. package/dist/monitoring/nudge-watchdog.js +0 -1
  162. package/dist/nucleus/default-plugins.js +13 -19
  163. package/dist/nucleus/index.js +0 -1
  164. package/dist/orchestrator/agent-spawn-governor.js +0 -1
  165. package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
  166. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
  167. package/dist/orchestrator/orchestrator.js +8 -18
  168. package/dist/orchestrator/self-direction-activation.js +0 -1
  169. package/dist/orchestrator/universal-registry-bridge.js +0 -1
  170. package/dist/performance/performance-budget-enforcer.js +0 -1
  171. package/dist/performance/performance-regression-tester.js +0 -1
  172. package/dist/plugin/plugin-codex-context.js +87 -0
  173. package/dist/plugin/plugin-helpers.js +155 -0
  174. package/dist/plugin/plugin-logger.js +46 -0
  175. package/dist/plugin/plugin-modules.js +144 -0
  176. package/dist/plugin/plugin-quality-gate.js +88 -0
  177. package/dist/plugin/plugin-types.js +1 -0
  178. package/dist/plugin/xray-codex-injection.js +338 -0
  179. package/dist/postprocessor/PostProcessor.js +3 -9
  180. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  181. package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
  182. package/dist/postprocessor/integration.js +194 -0
  183. package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
  184. package/dist/postprocessor/metamorphosis/index.js +1 -0
  185. package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
  186. package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
  187. package/dist/postprocessor/triggers/APITrigger.js +0 -1
  188. package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
  189. package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
  190. package/dist/processors/implementations/async-pattern-processor.js +0 -1
  191. package/dist/processors/implementations/console-log-guard-processor.js +0 -1
  192. package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
  193. package/dist/processors/implementations/inference-improvement-processor.js +2 -9
  194. package/dist/processors/implementations/log-protection-processor.js +0 -1
  195. package/dist/processors/implementations/nudge-processor.js +0 -1
  196. package/dist/processors/implementations/performance-budget-processor.js +0 -1
  197. package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
  198. package/dist/processors/implementations/publish-preflight-processor.js +4 -12
  199. package/dist/processors/implementations/session-summary-processor.js +8 -16
  200. package/dist/processors/implementations/spawn-governance-processor.js +0 -1
  201. package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
  202. package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
  203. package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
  204. package/dist/processors/implementations/version-compliance-processor.js +0 -1
  205. package/dist/processors/processor-interfaces.js +0 -1
  206. package/dist/processors/processor-types.js +0 -1
  207. package/dist/scripts/integration.js +0 -1
  208. package/dist/security/comprehensive-security-audit.js +0 -1
  209. package/dist/security/security-agent-coordinator.js +0 -1
  210. package/dist/security/security-auditor.js +0 -1
  211. package/dist/security/security-hardener.js +0 -1
  212. package/dist/security/security-hardening-system.js +0 -1
  213. package/dist/security/security-headers.js +0 -1
  214. package/dist/security/security-orchestration-layer.js +0 -1
  215. package/dist/services/inference-tuner.js +0 -1
  216. package/dist/session/session-cleanup-manager.js +0 -1
  217. package/dist/session/session-monitor.js +0 -1
  218. package/dist/session/session-state-manager.js +0 -1
  219. package/dist/skills/xray-orchestrator/index.js +0 -1
  220. package/dist/utils/codex-parser.js +0 -1
  221. package/dist/utils/language-detector.js +0 -1
  222. package/dist/utils/shutdown-handler.js +0 -1
  223. package/dist/validation/agent-config-validator.js +280 -0
  224. package/dist/validation/orchestration-flow-validator.js +606 -0
  225. package/package.json +1 -1
  226. package/scripts/node/release.mjs +2 -2
  227. package/scripts/node/setup.cjs +28 -0
  228. package/scripts/node/universal-version-manager.js +1 -1
  229. package/src/mcps/agent-resolver.ts +0 -1
  230. package/src/mcps/architect-tools.server.ts +129 -211
  231. package/src/mcps/auto-format.server.ts +74 -103
  232. package/src/mcps/boot-orchestrator.server.ts +71 -96
  233. package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
  234. package/src/mcps/config/config-loader.ts +7 -0
  235. package/src/mcps/config/plugin-server-registry.ts +0 -1
  236. package/src/mcps/enforcer-tools.server.ts +217 -294
  237. package/src/mcps/estimation.server.ts +62 -122
  238. package/src/mcps/framework-compliance-audit.server.ts +53 -95
  239. package/src/mcps/framework-help.server.ts +74 -96
  240. package/src/mcps/governance.server.ts +97 -162
  241. package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
  242. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
  243. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
  244. package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
  245. package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
  246. package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
  247. package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
  248. package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
  249. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  250. package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
  251. package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
  252. package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
  253. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
  254. package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
  255. package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
  256. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
  257. package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
  258. package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
  259. package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
  260. package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
  261. package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
  262. package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
  263. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
  264. package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
  265. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
  266. package/src/mcps/lint.server.ts +52 -105
  267. package/src/mcps/model-health-check.server.ts +34 -70
  268. package/src/mcps/orchestrator/aside-context.ts +245 -0
  269. package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
  270. package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
  271. package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
  272. package/src/mcps/orchestrator/index.ts +29 -0
  273. package/src/mcps/orchestrator/server.ts +79 -24
  274. package/src/mcps/orchestrator/types.ts +37 -0
  275. package/src/mcps/performance-analysis.server.ts +59 -102
  276. package/src/mcps/processor-pipeline.server.ts +70 -108
  277. package/src/mcps/researcher.server.ts +87 -175
  278. package/src/mcps/security-scan.server.ts +57 -76
  279. package/src/mcps/shared/knowledge-skill-base.ts +12 -4
  280. package/src/mcps/state-manager.server.ts +129 -169
  281. package/src/opencode/codex.codex +1 -1
  282. package/src/opencode/commands/auto-format.md +3 -3
  283. package/src/opencode/commands/auto-summary-capture.md +2 -2
  284. package/src/opencode/commands/enforcer-daily-scan.md +3 -3
  285. package/src/opencode/commands/framework-compliance-audit.md +4 -4
  286. package/src/opencode/commands/interactive-validator.md +2 -2
  287. package/src/opencode/commands/job-summary-logger.md +2 -2
  288. package/src/opencode/commands/mode-switch.md +1 -1
  289. package/src/opencode/commands/model-health-check.md +2 -2
  290. package/src/opencode/commands/performance-analysis.md +2 -2
  291. package/src/opencode/commands/pre-commit-introspection.md +3 -3
  292. package/src/opencode/commands/security-scan.md +3 -3
  293. package/src/opencode/commands/sisyphus-validation.md +3 -3
  294. package/src/opencode/commands/summary-logger.md +2 -2
  295. package/src/skills/xray-orchestrator/index.ts +0 -1
  296. package/dist/nucleus/orchestrator.js +0 -479
@@ -3,14 +3,11 @@
3
3
  *
4
4
  * Advanced processor pipeline with codex validation, compliance monitoring, and framework enforcement
5
5
  */
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
9
6
  import * as fs from "fs";
10
7
  import { frameworkLogger } from "../core/framework-logger.js";
11
8
  import { CodexLoader } from "../enforcement/loaders/codex-loader.js";
12
- class XrayProcessorPipelineServer {
13
- server;
9
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
10
+ class XrayProcessorPipelineServer extends XrayKnowledgeSkillBase {
14
11
  codexLoader;
15
12
  codexRules = [];
16
13
  codexTerms = [
@@ -25,14 +22,74 @@ class XrayProcessorPipelineServer {
25
22
  "Test Coverage >85%",
26
23
  ];
27
24
  constructor() {
25
+ super("processor-pipeline", "3.1.0");
28
26
  this.codexLoader = new CodexLoader();
29
- this.server = new Server({
30
- name: "processor-pipeline", version: "3.1.0",
31
- }, {
32
- capabilities: {
33
- tools: {},
27
+ this.tools = [
28
+ {
29
+ name: "execute-pre-processors",
30
+ description: "Run pre-execution processors on content with codex validation",
31
+ inputSchema: {
32
+ type: "object",
33
+ properties: {
34
+ content: { type: "string" },
35
+ context: { type: "object" },
36
+ validateCodex: { type: "boolean", default: true },
37
+ strictMode: { type: "boolean", default: false },
38
+ },
39
+ required: ["content"],
40
+ },
41
+ },
42
+ {
43
+ name: "execute-post-processors",
44
+ description: "Run post-execution processors on results with compliance monitoring",
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ content: { type: "string" },
49
+ results: { type: "object" },
50
+ enforceCompliance: { type: "boolean", default: true },
51
+ auditTrail: { type: "boolean", default: true },
52
+ },
53
+ required: ["content"],
54
+ },
55
+ },
56
+ {
57
+ name: "codex-validation",
58
+ description: "Validate content against Universal Development Codex terms",
59
+ inputSchema: {
60
+ type: "object",
61
+ properties: {
62
+ content: { type: "string" },
63
+ terms: {
64
+ type: "array",
65
+ items: { type: "string" },
66
+ default: ["all"],
67
+ },
68
+ strict: { type: "boolean", default: false },
69
+ },
70
+ required: ["content"],
71
+ },
72
+ },
73
+ {
74
+ name: "framework-compliance-check",
75
+ description: "Check framework compliance and generate enforcement actions",
76
+ inputSchema: {
77
+ type: "object",
78
+ properties: {
79
+ content: { type: "string" },
80
+ operation: { type: "string" },
81
+ context: { type: "object" },
82
+ },
83
+ required: ["content", "operation"],
84
+ },
34
85
  },
35
- });
86
+ ];
87
+ this.handlers = {
88
+ "execute-pre-processors": async (args) => this.handlePreProcessors(args),
89
+ "execute-post-processors": async (args) => this.handlePostProcessors(args),
90
+ "codex-validation": async (args) => this.handleCodexValidation(args),
91
+ "framework-compliance-check": async (args) => this.handleComplianceCheck(args),
92
+ };
36
93
  this.setupToolHandlers();
37
94
  this.loadCodexRules();
38
95
  // Server initialized silently - use frameworkLogger for important events
@@ -48,89 +105,6 @@ class XrayProcessorPipelineServer {
48
105
  await frameworkLogger.log("mcps/processor-pipeline", "codex-rules-load-failed", "warning", { message: `Failed to load codex rules: ${error instanceof Error ? error.message : String(error)}` });
49
106
  }
50
107
  }
51
- setupToolHandlers() {
52
- // List available tools
53
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
54
- return {
55
- tools: [
56
- {
57
- name: "execute-pre-processors",
58
- description: "Run pre-execution processors on content with codex validation",
59
- inputSchema: {
60
- type: "object",
61
- properties: {
62
- content: { type: "string" },
63
- context: { type: "object" },
64
- validateCodex: { type: "boolean", default: true },
65
- strictMode: { type: "boolean", default: false },
66
- },
67
- required: ["content"],
68
- },
69
- },
70
- {
71
- name: "execute-post-processors",
72
- description: "Run post-execution processors on results with compliance monitoring",
73
- inputSchema: {
74
- type: "object",
75
- properties: {
76
- content: { type: "string" },
77
- results: { type: "object" },
78
- enforceCompliance: { type: "boolean", default: true },
79
- auditTrail: { type: "boolean", default: true },
80
- },
81
- required: ["content"],
82
- },
83
- },
84
- {
85
- name: "codex-validation",
86
- description: "Validate content against Universal Development Codex terms",
87
- inputSchema: {
88
- type: "object",
89
- properties: {
90
- content: { type: "string" },
91
- terms: {
92
- type: "array",
93
- items: { type: "string" },
94
- default: ["all"],
95
- },
96
- strict: { type: "boolean", default: false },
97
- },
98
- required: ["content"],
99
- },
100
- },
101
- {
102
- name: "framework-compliance-check",
103
- description: "Check framework compliance and generate enforcement actions",
104
- inputSchema: {
105
- type: "object",
106
- properties: {
107
- content: { type: "string" },
108
- operation: { type: "string" },
109
- context: { type: "object" },
110
- },
111
- required: ["content", "operation"],
112
- },
113
- },
114
- ],
115
- };
116
- });
117
- // Handle tool calls
118
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
119
- const { name, arguments: args } = request.params;
120
- switch (name) {
121
- case "execute-pre-processors":
122
- return await this.handlePreProcessors(args);
123
- case "execute-post-processors":
124
- return await this.handlePostProcessors(args);
125
- case "codex-validation":
126
- return await this.handleCodexValidation(args);
127
- case "framework-compliance-check":
128
- return await this.handleComplianceCheck(args);
129
- default:
130
- throw new Error(`Unknown tool: ${name}`);
131
- }
132
- });
133
- }
134
108
  async handlePreProcessors(args) {
135
109
  const content = args.content;
136
110
  const context = args.context || {};
@@ -548,11 +522,6 @@ ${complianceResults.actions.map((a) => `• 🔧 ${a}`).join("\n") || "None requ
548
522
  }
549
523
  return results;
550
524
  }
551
- async run() {
552
- const transport = new StdioServerTransport();
553
- await this.server.connect(transport);
554
- // Silent start - no console output
555
- }
556
525
  }
557
526
  // Start the server if run directly
558
527
  if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
@@ -7,122 +7,98 @@
7
7
  * NOTE: Class is named XrayLibrarianServer but the MCP server name is
8
8
  * "researcher" for backwards compatibility with existing tool references.
9
9
  */
10
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
11
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
12
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
13
10
  import * as fs from "fs";
14
11
  import * as path from "path";
15
12
  import { frameworkLogger } from "../core/framework-logger.js";
16
13
  import { tryLLMGovernance } from "../governance/llm-governance-provider.js";
17
- class XrayLibrarianServer {
18
- server;
14
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
15
+ class XrayLibrarianServer extends XrayKnowledgeSkillBase {
19
16
  constructor() {
20
- this.server = new Server({
21
- name: "researcher", version: "3.1.0",
22
- }, {
23
- capabilities: {
24
- tools: {},
25
- },
26
- });
27
- this.setupToolHandlers();
28
- }
29
- setupToolHandlers() {
30
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
31
- return {
32
- tools: [
33
- {
34
- name: "search_codebase",
35
- description: "Search the codebase for specific patterns, functions, or implementations",
36
- inputSchema: {
37
- type: "object",
38
- properties: {
39
- query: {
40
- type: "string",
41
- description: "Search query (function name, pattern, keyword)",
42
- },
43
- fileExtension: {
44
- type: "string",
45
- description: "File extension to search (e.g., '.ts', '.js')",
46
- default: ".ts",
47
- },
48
- maxResults: {
49
- type: "number",
50
- description: "Maximum number of results to return",
51
- default: 10,
52
- },
53
- },
54
- required: ["query"],
17
+ super("researcher", "3.1.0");
18
+ this.tools = [
19
+ {
20
+ name: "search_codebase",
21
+ description: "Search the codebase for specific patterns, functions, or implementations",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: {
25
+ query: {
26
+ type: "string",
27
+ description: "Search query (function name, pattern, keyword)",
55
28
  },
56
- },
57
- {
58
- name: "find_implementation",
59
- description: "Find implementation examples for a specific pattern or feature",
60
- inputSchema: {
61
- type: "object",
62
- properties: {
63
- feature: {
64
- type: "string",
65
- description: "Feature name to find implementations for",
66
- },
67
- context: {
68
- type: "string",
69
- description: "Additional context (e.g., 'MCP', 'testing', 'agent')",
70
- },
71
- },
72
- required: ["feature"],
29
+ fileExtension: {
30
+ type: "string",
31
+ description: "File extension to search (e.g., '.ts', '.js')",
32
+ default: ".ts",
33
+ },
34
+ maxResults: {
35
+ type: "number",
36
+ description: "Maximum number of results to return",
37
+ default: 10,
73
38
  },
74
39
  },
75
- {
76
- name: "get_documentation",
77
- description: "Get documentation for a specific module, class, or function",
78
- inputSchema: {
79
- type: "object",
80
- properties: {
81
- target: {
82
- type: "string",
83
- description: "Module, class, or function name",
84
- },
85
- includeExamples: {
86
- type: "boolean",
87
- description: "Include usage examples",
88
- default: true,
89
- },
90
- },
91
- required: ["target"],
40
+ required: ["query"],
41
+ },
42
+ },
43
+ {
44
+ name: "find_implementation",
45
+ description: "Find implementation examples for a specific pattern or feature",
46
+ inputSchema: {
47
+ type: "object",
48
+ properties: {
49
+ feature: {
50
+ type: "string",
51
+ description: "Feature name to find implementations for",
52
+ },
53
+ context: {
54
+ type: "string",
55
+ description: "Additional context (e.g., 'MCP', 'testing', 'agent')",
92
56
  },
93
57
  },
94
- {
95
- name: "analyze_proposal",
96
- description: "Analyze an inference proposal from a researcher / project-librarian perspective using corpus patterns, historical evidence, and architecture knowledge",
97
- inputSchema: {
98
- type: "object",
99
- properties: {
100
- proposalTitle: { type: "string" },
101
- proposalDescription: { type: "string" },
102
- evidence: { type: "array", items: { type: "string" } },
103
- proposalType: { type: "string" },
104
- },
105
- required: ["proposalTitle", "proposalDescription"],
58
+ required: ["feature"],
59
+ },
60
+ },
61
+ {
62
+ name: "get_documentation",
63
+ description: "Get documentation for a specific module, class, or function",
64
+ inputSchema: {
65
+ type: "object",
66
+ properties: {
67
+ target: {
68
+ type: "string",
69
+ description: "Module, class, or function name",
70
+ },
71
+ includeExamples: {
72
+ type: "boolean",
73
+ description: "Include usage examples",
74
+ default: true,
106
75
  },
107
76
  },
108
- ],
109
- };
110
- });
111
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
112
- const { name, arguments: args } = request.params;
113
- switch (name) {
114
- case "search_codebase":
115
- return await this.searchCodebase(args);
116
- case "find_implementation":
117
- return await this.findImplementation(args);
118
- case "get_documentation":
119
- return await this.getDocumentation(args);
120
- case "analyze_proposal":
121
- return await this.analyzeProposal(args);
122
- default:
123
- throw new Error(`Unknown tool: ${name}`);
124
- }
125
- });
77
+ required: ["target"],
78
+ },
79
+ },
80
+ {
81
+ name: "analyze_proposal",
82
+ description: "Analyze an inference proposal from a researcher / project-librarian perspective using corpus patterns, historical evidence, and architecture knowledge",
83
+ inputSchema: {
84
+ type: "object",
85
+ properties: {
86
+ proposalTitle: { type: "string" },
87
+ proposalDescription: { type: "string" },
88
+ evidence: { type: "array", items: { type: "string" } },
89
+ proposalType: { type: "string" },
90
+ },
91
+ required: ["proposalTitle", "proposalDescription"],
92
+ },
93
+ },
94
+ ];
95
+ this.handlers = {
96
+ "search_codebase": async (args) => this.searchCodebase(args),
97
+ "find_implementation": async (args) => this.findImplementation(args),
98
+ "get_documentation": async (args) => this.getDocumentation(args),
99
+ "analyze_proposal": async (args) => this.analyzeProposal(args),
100
+ };
101
+ this.setupToolHandlers();
126
102
  }
127
103
  async searchCodebase(args) {
128
104
  const { query, fileExtension = ".ts", maxResults = 10 } = args;
@@ -421,55 +397,6 @@ class XrayLibrarianServer {
421
397
  ],
422
398
  };
423
399
  }
424
- async run() {
425
- const transport = new StdioServerTransport();
426
- await this.server.connect(transport);
427
- let parentCheckTimer = null;
428
- const cleanup = async (signal) => {
429
- if (parentCheckTimer !== null) {
430
- clearTimeout(parentCheckTimer);
431
- parentCheckTimer = null;
432
- }
433
- const timeout = setTimeout(() => {
434
- frameworkLogger.log("mcps/researcher", "shutdown", "error", { message: "Graceful shutdown timeout, forcing exit..." });
435
- process.exit(1);
436
- }, 5000);
437
- try {
438
- if (this.server && typeof this.server.close === "function") {
439
- await this.server.close();
440
- }
441
- clearTimeout(timeout);
442
- process.exit(0);
443
- }
444
- catch (error) {
445
- clearTimeout(timeout);
446
- frameworkLogger.log("mcps/researcher", "shutdown", "error", { message: `Error during server shutdown: ${String(error)}` });
447
- process.exit(1);
448
- }
449
- };
450
- process.on("SIGINT", () => cleanup("SIGINT"));
451
- process.on("SIGTERM", () => cleanup("SIGTERM"));
452
- process.on("SIGHUP", () => cleanup("SIGHUP"));
453
- const checkParent = () => {
454
- try {
455
- process.kill(process.ppid, 0);
456
- parentCheckTimer = setTimeout(checkParent, 1000);
457
- }
458
- catch (error) {
459
- parentCheckTimer = null;
460
- cleanup("parent-process-death");
461
- }
462
- };
463
- parentCheckTimer = setTimeout(checkParent, 2000);
464
- process.on("uncaughtException", (error) => {
465
- frameworkLogger.log("mcps/researcher", "uncaughtException", "error", { message: `Uncaught Exception: ${String(error)}` });
466
- cleanup("uncaughtException");
467
- });
468
- process.on("unhandledRejection", (reason, promise) => {
469
- frameworkLogger.log("mcps/researcher", "unhandledRejection", "error", { message: `Unhandled Rejection: ${String(reason)}` });
470
- cleanup("unhandledRejection");
471
- });
472
- }
473
400
  }
474
401
  // Run the server if this file is executed directly
475
402
  if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
@@ -3,82 +3,73 @@
3
3
  *
4
4
  * Automated security vulnerability scanning with dependency and code analysis
5
5
  */
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
6
+ import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
9
7
  import { execFileSync } from "child_process";
10
8
  import fs from "fs";
11
9
  import path from "path";
12
10
  import { detectProjectLanguage, LANGUAGE_CONFIGS, } from "../utils/language-detector.js";
13
11
  import { frameworkLogger } from "../core/framework-logger.js";
14
- class XraySecurityScanServer {
15
- server;
12
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
13
+ class XraySecurityScanServer extends XrayKnowledgeSkillBase {
16
14
  constructor() {
17
- this.server = new Server({
18
- name: "security-scan", version: "3.1.0",
19
- }, {
20
- capabilities: {
21
- tools: {},
15
+ super("security-scan", "3.1.0");
16
+ this.tools = [
17
+ {
18
+ name: "security-scan",
19
+ description: "Comprehensive security vulnerability scanning with dependency and code analysis",
20
+ inputSchema: {
21
+ type: "object",
22
+ properties: {
23
+ scope: {
24
+ type: "string",
25
+ enum: ["dependencies", "code", "full"],
26
+ default: "full",
27
+ description: "Scope of security scan",
28
+ },
29
+ auditLevel: {
30
+ type: "string",
31
+ enum: ["info", "low", "moderate", "high", "critical"],
32
+ default: "moderate",
33
+ description: "Audit level for vulnerability detection",
34
+ },
35
+ includeOutdated: {
36
+ type: "boolean",
37
+ default: true,
38
+ description: "Include outdated package analysis",
39
+ },
40
+ },
41
+ },
22
42
  },
23
- });
43
+ {
44
+ name: "dependency-audit",
45
+ description: "Audit third-party dependencies for security vulnerabilities",
46
+ inputSchema: {
47
+ type: "object",
48
+ properties: {
49
+ packageManager: {
50
+ type: "string",
51
+ enum: ["npm", "yarn", "pnpm", "auto"],
52
+ default: "auto",
53
+ description: "Package manager to use",
54
+ },
55
+ auditLevel: {
56
+ type: "string",
57
+ enum: ["info", "low", "moderate", "high", "critical"],
58
+ default: "moderate",
59
+ },
60
+ },
61
+ },
62
+ },
63
+ ];
64
+ this.handlers = {
65
+ "security-scan": async (args) => this.handleSecurityScan(args),
66
+ "dependency-audit": async (args) => this.handleDependencyAudit(args),
67
+ };
24
68
  this.setupToolHandlers();
25
69
  frameworkLogger.log("mcps/security-scan", "initialize", "info");
26
70
  }
27
71
  setupToolHandlers() {
28
- // List available tools
29
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
30
- return {
31
- tools: [
32
- {
33
- name: "security-scan",
34
- description: "Comprehensive security vulnerability scanning with dependency and code analysis",
35
- inputSchema: {
36
- type: "object",
37
- properties: {
38
- scope: {
39
- type: "string",
40
- enum: ["dependencies", "code", "full"],
41
- default: "full",
42
- description: "Scope of security scan",
43
- },
44
- auditLevel: {
45
- type: "string",
46
- enum: ["info", "low", "moderate", "high", "critical"],
47
- default: "moderate",
48
- description: "Audit level for vulnerability detection",
49
- },
50
- includeOutdated: {
51
- type: "boolean",
52
- default: true,
53
- description: "Include outdated package analysis",
54
- },
55
- },
56
- },
57
- },
58
- {
59
- name: "dependency-audit",
60
- description: "Audit third-party dependencies for security vulnerabilities",
61
- inputSchema: {
62
- type: "object",
63
- properties: {
64
- packageManager: {
65
- type: "string",
66
- enum: ["npm", "yarn", "pnpm", "auto"],
67
- default: "auto",
68
- description: "Package manager to use",
69
- },
70
- auditLevel: {
71
- type: "string",
72
- enum: ["info", "low", "moderate", "high", "critical"],
73
- default: "moderate",
74
- },
75
- },
76
- },
77
- },
78
- ],
79
- };
80
- });
81
- // Handle tool calls
72
+ this.setupListToolsHandler();
82
73
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
83
74
  const { name, arguments: args } = request.params;
84
75
  try {
@@ -517,11 +508,6 @@ ${results.recommendations.map((r) => `• ${r}`).join("\n") || "No recommendatio
517
508
  - Threats: ${threatCount}
518
509
  - Recommendations: ${recCount}`;
519
510
  }
520
- async run() {
521
- const transport = new StdioServerTransport();
522
- await this.server.connect(transport);
523
- frameworkLogger.log("mcps/security-scan", "start", "info");
524
- }
525
511
  }
526
512
  // Start the server if run directly
527
513
  if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {
@@ -5,13 +5,18 @@ import { frameworkLogger } from "../../core/framework-logger.js";
5
5
  import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
6
6
  export class XrayKnowledgeSkillBase {
7
7
  tools = [];
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
8
  handlers = {};
10
9
  server;
10
+ serverName;
11
11
  constructor(serverName, version = "2.0.1") {
12
+ this.serverName = serverName;
12
13
  this.server = new Server({ name: serverName, version }, { capabilities: { tools: {} } });
13
14
  }
14
15
  setupToolHandlers() {
16
+ this.setupListToolsHandler();
17
+ this.setupCallToolHandler();
18
+ }
19
+ setupListToolsHandler() {
15
20
  this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
16
21
  tools: this.tools.map((t) => ({
17
22
  name: t.name,
@@ -19,6 +24,8 @@ export class XrayKnowledgeSkillBase {
19
24
  inputSchema: t.inputSchema,
20
25
  })),
21
26
  }));
27
+ }
28
+ setupCallToolHandler() {
22
29
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
23
30
  const { name, arguments: args } = request.params;
24
31
  const handler = this.handlers[name];
@@ -36,10 +43,10 @@ export class XrayKnowledgeSkillBase {
36
43
  }
37
44
  });
38
45
  }
39
- async run(serverName) {
46
+ async run() {
40
47
  const transport = new StdioServerTransport();
41
48
  await this.server.connect(transport);
42
- createGracefulShutdown({ serverName, server: this.server });
43
- await frameworkLogger.log(serverName, "server-started", "success");
49
+ createGracefulShutdown({ serverName: this.serverName, server: this.server });
50
+ await frameworkLogger.log(this.serverName, "server-started", "success");
44
51
  }
45
52
  }