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
@@ -4,15 +4,10 @@
4
4
  * Comprehensive ESLint validation and automated code quality checking
5
5
  */
6
6
 
7
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
- import {
10
- CallToolRequestSchema,
11
- ListToolsRequestSchema,
12
- } from "@modelcontextprotocol/sdk/types.js";
13
7
  import { execFileSync } from "child_process";
14
8
  import fs from "fs";
15
9
  import { frameworkLogger } from "../core/framework-logger.js";
10
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
16
11
 
17
12
  interface LintArgs {
18
13
  files?: string[];
@@ -33,20 +28,63 @@ interface LintResults {
33
28
  details: string[];
34
29
  }
35
30
 
36
- class XrayLintServer {
37
- private server: Server;
38
-
31
+ class XrayLintServer extends XrayKnowledgeSkillBase {
39
32
  constructor() {
40
- this.server = new Server(
33
+ super("lint", "3.1.0");
34
+
35
+ this.tools = [
41
36
  {
42
- name: "lint", version: "3.1.0",
37
+ name: "lint",
38
+ description:
39
+ "Comprehensive ESLint validation and automated code quality checking",
40
+ inputSchema: {
41
+ type: "object",
42
+ properties: {
43
+ files: {
44
+ type: "array",
45
+ items: { type: "string" },
46
+ description:
47
+ "Specific files to lint (optional - lints all if empty)",
48
+ },
49
+ fix: {
50
+ type: "boolean",
51
+ default: false,
52
+ description:
53
+ "Automatically fix linting issues where possible",
54
+ },
55
+ strict: {
56
+ type: "boolean",
57
+ default: false,
58
+ description: "Use strict linting rules",
59
+ },
60
+ },
61
+ },
43
62
  },
44
63
  {
45
- capabilities: {
46
- tools: {},
64
+ name: "lint-check",
65
+ description: "Check code quality without making changes",
66
+ inputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ files: {
70
+ type: "array",
71
+ items: { type: "string" },
72
+ description: "Files to check",
73
+ },
74
+ rules: {
75
+ type: "array",
76
+ items: { type: "string" },
77
+ description: "Specific ESLint rules to check",
78
+ },
79
+ },
47
80
  },
48
81
  },
49
- );
82
+ ];
83
+
84
+ this.handlers = {
85
+ "lint": async (args) => this.handleLint(args as LintArgs),
86
+ "lint-check": async (args) => this.handleLintCheck(args as LintCheckArgs),
87
+ };
50
88
 
51
89
  this.setupToolHandlers();
52
90
  void frameworkLogger.log(
@@ -57,87 +95,6 @@ class XrayLintServer {
57
95
  );
58
96
  }
59
97
 
60
- private setupToolHandlers() {
61
- // List available tools
62
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
63
- return {
64
- tools: [
65
- {
66
- name: "lint",
67
- description:
68
- "Comprehensive ESLint validation and automated code quality checking",
69
- inputSchema: {
70
- type: "object",
71
- properties: {
72
- files: {
73
- type: "array",
74
- items: { type: "string" },
75
- description:
76
- "Specific files to lint (optional - lints all if empty)",
77
- },
78
- fix: {
79
- type: "boolean",
80
- default: false,
81
- description:
82
- "Automatically fix linting issues where possible",
83
- },
84
- strict: {
85
- type: "boolean",
86
- default: false,
87
- description: "Use strict linting rules",
88
- },
89
- },
90
- },
91
- },
92
- {
93
- name: "lint-check",
94
- description: "Check code quality without making changes",
95
- inputSchema: {
96
- type: "object",
97
- properties: {
98
- files: {
99
- type: "array",
100
- items: { type: "string" },
101
- description: "Files to check",
102
- },
103
- rules: {
104
- type: "array",
105
- items: { type: "string" },
106
- description: "Specific ESLint rules to check",
107
- },
108
- },
109
- },
110
- },
111
- ],
112
- };
113
- });
114
-
115
- // Handle tool calls
116
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
117
- const { name, arguments: args } = request.params;
118
-
119
- try {
120
- switch (name) {
121
- case "lint":
122
- return await this.handleLint(args as unknown as LintArgs);
123
- case "lint-check":
124
- return await this.handleLintCheck(args as unknown as LintCheckArgs);
125
- default:
126
- throw new Error(`Unknown tool: ${name}`);
127
- }
128
- } catch (error) {
129
- return {
130
- content: [
131
- {
132
- type: "text",
133
- text: `❌ Tool execution failed: ${error instanceof Error ? error.message : String(error)}`,
134
- },
135
- ],
136
- };
137
- }
138
- });
139
- }
140
-
141
98
  private async handleLint(args: LintArgs) {
142
99
  const files = args.files || [];
143
100
  const fix = args.fix || false;
@@ -462,16 +419,6 @@ ${checkResults.details.map((d) => `• ${d}`).join("\n")}
462
419
  - Fixed: ${results.issues.fixed}`;
463
420
  }
464
421
 
465
- async run() {
466
- const transport = new StdioServerTransport();
467
- await this.server.connect(transport);
468
- await frameworkLogger.log(
469
- "lint.server",
470
- "-xray-lint-mcp-server-started-",
471
- "info",
472
- { message: "0xRay Lint MCP Server started" },
473
- );
474
- }
475
422
  }
476
423
 
477
424
  // Start the server if run directly
@@ -4,16 +4,11 @@
4
4
  * Advanced model compatibility validation and dynamic health assessment
5
5
  */
6
6
 
7
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
7
  import { modelRouter } from "../core/model-router.js";
10
- import {
11
- CallToolRequestSchema,
12
- ListToolsRequestSchema,
13
- } from "@modelcontextprotocol/sdk/types.js";
14
8
  import { execSync } from "child_process";
15
9
  import fs from "fs";
16
10
  import { frameworkLogger } from "../core/framework-logger.js";
11
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
17
12
 
18
13
  interface ModelHealthCheckArgs {
19
14
  models?: string[];
@@ -36,73 +31,47 @@ interface ModelHealthReportData {
36
31
  summary: { total: number; healthy: number; issues: number };
37
32
  }
38
33
 
39
- class XrayModelHealthCheckServer {
40
- private server: Server;
41
-
34
+ class XrayModelHealthCheckServer extends XrayKnowledgeSkillBase {
42
35
  constructor() {
43
- this.server = new Server(
44
- {
45
- name: "model-health-check", version: "3.1.0",
46
- },
36
+ super("model-health-check", "3.1.0");
37
+
38
+ this.tools = [
47
39
  {
48
- capabilities: {
49
- tools: {},
40
+ name: "model-health-check",
41
+ description:
42
+ "Advanced model compatibility validation and dynamic health assessment",
43
+ inputSchema: {
44
+ type: "object",
45
+ properties: {
46
+ models: {
47
+ type: "array",
48
+ items: { type: "string" },
49
+ description:
50
+ "Specific models to check (optional - checks all configured if empty)",
51
+ },
52
+ compatibility: {
53
+ type: "boolean",
54
+ default: true,
55
+ description: "Include compatibility matrix in results",
56
+ },
57
+ performance: {
58
+ type: "boolean",
59
+ default: true,
60
+ description: "Include performance metrics in results",
61
+ },
62
+ },
50
63
  },
51
64
  },
52
- );
65
+ ];
66
+
67
+ this.handlers = {
68
+ "model-health-check": async (args) => this.handleModelHealthCheck((args || {}) as ModelHealthCheckArgs),
69
+ };
53
70
 
54
71
  this.setupToolHandlers();
55
72
  frameworkLogger.log("mcps/model-health-check", "initialize", "info");
56
73
  }
57
74
 
58
- private setupToolHandlers() {
59
- // List available tools
60
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
61
- return {
62
- tools: [
63
- {
64
- name: "model-health-check",
65
- description:
66
- "Advanced model compatibility validation and dynamic health assessment",
67
- inputSchema: {
68
- type: "object",
69
- properties: {
70
- models: {
71
- type: "array",
72
- items: { type: "string" },
73
- description:
74
- "Specific models to check (optional - checks all configured if empty)",
75
- },
76
- compatibility: {
77
- type: "boolean",
78
- default: true,
79
- description: "Include compatibility matrix in results",
80
- },
81
- performance: {
82
- type: "boolean",
83
- default: true,
84
- description: "Include performance metrics in results",
85
- },
86
- },
87
- },
88
- },
89
- ],
90
- };
91
- });
92
-
93
- // Handle tool calls
94
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
95
- const { name, arguments: args } = request.params;
96
-
97
- switch (name) {
98
- case "model-health-check":
99
- return await this.handleModelHealthCheck((args || {}) as unknown as ModelHealthCheckArgs);
100
- default:
101
- throw new Error(`Unknown tool: ${name}`);
102
- }
103
- });
104
- }
105
-
106
75
  private async handleModelHealthCheck(args: ModelHealthCheckArgs) {
107
76
  const models = args.models || [modelRouter.getValidatedModel()];
108
77
  const includeCompatibility = args.compatibility !== false;
@@ -276,17 +245,12 @@ class XrayModelHealthCheckServer {
276
245
  return report;
277
246
  }
278
247
 
279
- public async start() {
280
- const transport = new StdioServerTransport();
281
- await this.server.connect(transport);
282
- frameworkLogger.log("mcps/model-health-check", "start", "info");
283
- }
284
248
  }
285
249
 
286
250
  // Start the server if this file is run directly
287
251
  if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
288
252
  const server = new XrayModelHealthCheckServer();
289
- server.start().catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
253
+ server.run().catch((error) => frameworkLogger.log("mcps/model-health-check", "run", "error", { error: String(error) }));
290
254
  }
291
255
 
292
256
  export default XrayModelHealthCheckServer;
@@ -0,0 +1,245 @@
1
+ /**
2
+ * AsideContext — bounded subcontext for depth, continuity, and layered exploration
3
+ *
4
+ * Enables the orchestrator to spawn sub-investigations that inherit session context,
5
+ * accumulate structured observations from v3 subsystems (governance, orchestration,
6
+ * complexity analysis), and feed results back into the governance loop.
7
+ */
8
+
9
+ import { frameworkLogger } from "../../core/framework-logger.js";
10
+ import type {
11
+ AsideContextOptions,
12
+ AsideObservation,
13
+ AsideResult,
14
+ ActiveAside,
15
+ } from "./types.js";
16
+ import type { InferenceCycleResult } from "../../inference/inference-cycle.js";
17
+ import type { OrchestrationResult, ComplexityAnalysis } from "./types.js";
18
+
19
+ let asideCounter = 0;
20
+ const activeAsides = new Map<string, ActiveAside>();
21
+
22
+ export function getActiveAsideCount(): number {
23
+ return activeAsides.size;
24
+ }
25
+
26
+ export function getActiveAsideIds(): string[] {
27
+ return Array.from(activeAsides.keys());
28
+ }
29
+
30
+ export function getAsideState(asideId: string): ActiveAside | undefined {
31
+ return activeAsides.get(asideId);
32
+ }
33
+
34
+ export function addObservations(
35
+ asideId: string,
36
+ observations: AsideObservation[],
37
+ ): boolean {
38
+ const aside = activeAsides.get(asideId);
39
+ if (!aside) return false;
40
+ aside.observations.push(...observations);
41
+ return true;
42
+ }
43
+
44
+ export function extractGovernanceObservations(
45
+ result: InferenceCycleResult,
46
+ ): AsideObservation[] {
47
+ const obs: AsideObservation[] = [];
48
+ obs.push({
49
+ key: "governanceCycleId",
50
+ value: result.cycleId,
51
+ source: "inference/inference-cycle.ts",
52
+ });
53
+ obs.push({
54
+ key: "governanceVoteCount",
55
+ value: String(result.votes.length),
56
+ source: "inference/inference-cycle.ts",
57
+ });
58
+ const approved = result.votes.filter((v) => v.decision === "approve").length;
59
+ const rejected = result.votes.filter((v) => v.decision === "reject").length;
60
+ obs.push({
61
+ key: "governanceApprovedCount",
62
+ value: String(approved),
63
+ source: "inference/inference-cycle.ts",
64
+ });
65
+ obs.push({
66
+ key: "governanceRejectedCount",
67
+ value: String(rejected),
68
+ source: "inference/inference-cycle.ts",
69
+ });
70
+ if (result.corpusSummary) {
71
+ obs.push({
72
+ key: "corpusSessionCount",
73
+ value: String(result.corpusSummary.sessions),
74
+ source: "inference/inference-cycle.ts",
75
+ });
76
+ obs.push({
77
+ key: "corpusPatternCount",
78
+ value: String(result.corpusSummary.recurringPatterns),
79
+ source: "inference/inference-cycle.ts",
80
+ });
81
+ }
82
+ return obs;
83
+ }
84
+
85
+ export function extractOrchestrationObservations(
86
+ result: OrchestrationResult,
87
+ ): AsideObservation[] {
88
+ const obs: AsideObservation[] = [];
89
+ obs.push({
90
+ key: "orchestrationSuccess",
91
+ value: String(result.success),
92
+ source: "mcps/orchestrator/types.ts",
93
+ });
94
+ obs.push({
95
+ key: "tasksCompleted",
96
+ value: String(result.completedTasks),
97
+ source: "mcps/orchestrator/types.ts",
98
+ });
99
+ obs.push({
100
+ key: "tasksFailed",
101
+ value: String(result.failedTasks),
102
+ source: "mcps/orchestrator/types.ts",
103
+ });
104
+ obs.push({
105
+ key: "orchestrationDuration",
106
+ value: `${result.duration}ms`,
107
+ source: "mcps/orchestrator/types.ts",
108
+ });
109
+ for (const b of result.bottlenecks) {
110
+ obs.push({
111
+ key: "bottleneck",
112
+ value: b.substring(0, 200),
113
+ source: "mcps/orchestrator/types.ts",
114
+ });
115
+ }
116
+ for (const r of result.recommendations) {
117
+ obs.push({
118
+ key: "recommendation",
119
+ value: r.substring(0, 200),
120
+ source: "mcps/orchestrator/types.ts",
121
+ });
122
+ }
123
+ return obs;
124
+ }
125
+
126
+ export function extractComplexityObservations(
127
+ analysis: ComplexityAnalysis,
128
+ ): AsideObservation[] {
129
+ const obs: AsideObservation[] = [];
130
+ obs.push({
131
+ key: "complexityScore",
132
+ value: String(analysis.overallComplexity),
133
+ source: "mcps/orchestrator/execution/execution-planner.ts",
134
+ });
135
+ obs.push({
136
+ key: "recommendedStrategy",
137
+ value: analysis.recommendedStrategy,
138
+ source: "mcps/orchestrator/execution/execution-planner.ts",
139
+ });
140
+ obs.push({
141
+ key: "parallelPotential",
142
+ value: String(analysis.parallelPotential),
143
+ source: "mcps/orchestrator/execution/execution-planner.ts",
144
+ });
145
+ obs.push({
146
+ key: "estimatedDuration",
147
+ value: `${analysis.estimatedDuration}ms`,
148
+ source: "mcps/orchestrator/execution/execution-planner.ts",
149
+ });
150
+ for (const tc of analysis.taskComplexity) {
151
+ obs.push({
152
+ key: `taskComplexity`,
153
+ value: `${tc.complexity} (${tc.category})`,
154
+ source: "mcps/orchestrator/execution/execution-planner.ts",
155
+ });
156
+ }
157
+ return obs;
158
+ }
159
+
160
+ export async function spawnAside(
161
+ options: AsideContextOptions,
162
+ ): Promise<AsideResult> {
163
+ const asideId = options.parentAsideId
164
+ ? `${options.parentAsideId}.aside-${++asideCounter}`
165
+ : `aside-${++asideCounter}-${Date.now()}`;
166
+ const startTime = Date.now();
167
+
168
+ const aside: ActiveAside = {
169
+ asideId,
170
+ description: options.description,
171
+ startedAt: startTime,
172
+ observations: [],
173
+ ...(options.inheritedContext !== undefined ? { inheritedContext: options.inheritedContext } : {}),
174
+ ...(options.parentAsideId !== undefined ? { parentAsideId: options.parentAsideId } : {}),
175
+ ...(options.sessionId !== undefined ? { sessionId: options.sessionId } : {}),
176
+ ...(options.priorVerdictContext !== undefined ? { priorVerdictContext: options.priorVerdictContext } : {}),
177
+ };
178
+
179
+ activeAsides.set(asideId, aside);
180
+
181
+ frameworkLogger.log("aside-context", "aside-spawn", "info", {
182
+ asideId,
183
+ description: options.description,
184
+ sessionId: options.sessionId,
185
+ parentAsideId: options.parentAsideId,
186
+ activeAsideCount: activeAsides.size,
187
+ });
188
+
189
+ if (options.priorVerdictContext) {
190
+ const decision = options.priorVerdictContext["decision"];
191
+ if (decision) {
192
+ aside.observations.push({
193
+ key: "governanceDecision",
194
+ value: String(decision),
195
+ source: "priorVerdictContext",
196
+ });
197
+ }
198
+ }
199
+
200
+ const duration = Date.now() - startTime;
201
+
202
+ const result: AsideResult = {
203
+ asideId,
204
+ description: options.description,
205
+ success: true,
206
+ duration,
207
+ observations: aside.observations,
208
+ ...(options.priorVerdictContext !== undefined ? { priorVerdictContext: options.priorVerdictContext } : {}),
209
+ };
210
+
211
+ frameworkLogger.log("aside-context", "aside-complete", "info", {
212
+ asideId,
213
+ duration,
214
+ observationCount: aside.observations.length,
215
+ activeAsideCount: activeAsides.size,
216
+ });
217
+
218
+ return result;
219
+ }
220
+
221
+ export function closeAside(asideId: string): boolean {
222
+ const aside = activeAsides.get(asideId);
223
+ if (!aside) return false;
224
+ activeAsides.delete(asideId);
225
+ frameworkLogger.log("aside-context", "aside-closed", "info", {
226
+ asideId,
227
+ duration: Date.now() - aside.startedAt,
228
+ remainingActive: activeAsides.size,
229
+ });
230
+ return true;
231
+ }
232
+
233
+ export function closeAllAsides(): number {
234
+ const count = activeAsides.size;
235
+ activeAsides.clear();
236
+ frameworkLogger.log("aside-context", "aside-close-all", "info", {
237
+ closedCount: count,
238
+ });
239
+ return count;
240
+ }
241
+
242
+ export function resetAsideContext(): void {
243
+ activeAsides.clear();
244
+ asideCounter = 0;
245
+ }
@@ -1,11 +1,18 @@
1
1
  /**
2
2
  * Agent Capabilities Configuration
3
- *
4
- * Centralized agent capability definitions for orchestration decisions
3
+ *
4
+ * Centralized agent capability definitions for orchestration decisions.
5
+ * Enriched at runtime by the active MemoryRoutingProvider (Repertoire, etc.).
5
6
  */
6
7
 
7
8
  import type { AgentCapability } from '../types.js';
8
9
  import { AGENT_REGISTRY } from "../../../agents/registry.js";
10
+ import { initializeMemoryRouting } from '../../../memory-routing/index.js';
11
+ import {
12
+ getProvider,
13
+ toMemoryCapabilityMap,
14
+ fromMemoryCapabilityMap,
15
+ } from './memory-routing-bridge.js';
9
16
 
10
17
  const DEFAULT_AGENT_CAPABILITIES: Record<string, AgentCapability> = Object.fromEntries(
11
18
  Object.entries(AGENT_REGISTRY).map(([name, entry]) => [
@@ -18,18 +25,31 @@ const DEFAULT_AGENT_CAPABILITIES: Record<string, AgentCapability> = Object.fromE
18
25
  ]),
19
26
  );
20
27
 
28
+ initializeMemoryRouting();
29
+
21
30
  /**
22
31
  * Agent Capabilities Manager
23
32
  * Manages agent capabilities for orchestration decisions
24
33
  */
25
34
  export class AgentCapabilitiesManager {
26
35
  private capabilities: Map<string, AgentCapability> = new Map();
36
+ private enriched = false;
27
37
 
28
38
  constructor() {
29
- // Initialize with default capabilities
30
39
  Object.entries(DEFAULT_AGENT_CAPABILITIES).forEach(([agent, config]) => {
31
40
  this.capabilities.set(agent, config);
32
41
  });
42
+ this.applyMemoryRoutingEnrichment();
43
+ }
44
+
45
+ private applyMemoryRoutingEnrichment(): void {
46
+ const provider = getProvider();
47
+ if (provider.id === 'null') return;
48
+
49
+ const memoryCaps = toMemoryCapabilityMap(this.capabilities);
50
+ const enriched = provider.enhanceAgentCapabilities(memoryCaps);
51
+ this.capabilities = fromMemoryCapabilityMap(enriched);
52
+ this.enriched = true;
33
53
  }
34
54
 
35
55
  /**
@@ -43,6 +63,7 @@ export class AgentCapabilitiesManager {
43
63
  * Get all registered agent capabilities
44
64
  */
45
65
  getAllCapabilities(): Map<string, AgentCapability> {
66
+ if (!this.enriched) this.applyMemoryRoutingEnrichment();
46
67
  return new Map(this.capabilities);
47
68
  }
48
69
 
@@ -54,24 +75,35 @@ export class AgentCapabilitiesManager {
54
75
  }
55
76
 
56
77
  /**
57
- * Select the best agent for a task based on complexity and capabilities
78
+ * Select the best agent for a task based on complexity, capabilities, and memory routing.
58
79
  */
59
- selectAgentForTask(requiredCapabilities: string[], complexity: number): string | null {
80
+ selectAgentForTask(
81
+ requiredCapabilities: string[],
82
+ complexity: number,
83
+ operationDescription = '',
84
+ ): string | null {
85
+ const provider = getProvider();
86
+
87
+ if (provider.id !== 'null' && operationDescription) {
88
+ const memoryCaps = toMemoryCapabilityMap(this.getAllCapabilities());
89
+ return provider.selectAgent(
90
+ memoryCaps,
91
+ requiredCapabilities,
92
+ complexity,
93
+ operationDescription,
94
+ );
95
+ }
96
+
60
97
  let bestAgent: string | null = null;
61
98
  let bestScore = -1;
62
99
 
63
100
  for (const [agent, caps] of this.capabilities) {
64
- // Check if agent can handle the complexity
65
- if (complexity > caps.complexityThreshold) {
66
- continue;
67
- }
101
+ if (complexity > caps.complexityThreshold) continue;
68
102
 
69
- // Calculate capability match score
70
- const matchCount = requiredCapabilities.filter(cap =>
71
- caps.capabilities.includes(cap)
103
+ const matchCount = requiredCapabilities.filter((cap) =>
104
+ caps.capabilities.includes(cap),
72
105
  ).length;
73
106
 
74
- // Prefer agents with more concurrent tasks available
75
107
  const score = matchCount * 10 + caps.concurrentTasks;
76
108
 
77
109
  if (score > bestScore) {
@@ -97,7 +129,6 @@ export class AgentCapabilitiesManager {
97
129
  }
98
130
  }
99
131
 
100
- // Singleton instance
101
132
  let capabilitiesManagerInstance: AgentCapabilitiesManager | null = null;
102
133
 
103
134
  export function getAgentCapabilitiesManager(): AgentCapabilitiesManager {
@@ -106,3 +137,7 @@ export function getAgentCapabilitiesManager(): AgentCapabilitiesManager {
106
137
  }
107
138
  return capabilitiesManagerInstance;
108
139
  }
140
+
141
+ export function resetAgentCapabilitiesManager(): void {
142
+ capabilitiesManagerInstance = null;
143
+ }