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
@@ -20,6 +20,16 @@ import { TaskHandler } from './handlers/task-handler.js';
20
20
  import { ComplexityHandler } from './handlers/complexity-handler.js';
21
21
  import { StatusHandler } from './handlers/status-handler.js';
22
22
  import type { OrchestrationTask, OrchestrationResult } from './types.js';
23
+ import {
24
+ spawnAside,
25
+ closeAside,
26
+ closeAllAsides,
27
+ addObservations,
28
+ getActiveAsideCount,
29
+ getActiveAsideIds,
30
+ getAsideState,
31
+ extractGovernanceObservations,
32
+ } from './aside-context.js';
23
33
 
24
34
  /**
25
35
  * Orchestrator MCP Server
@@ -234,33 +244,65 @@ export class OrchestratorServer {
234
244
  const { name, arguments: args } = request.params;
235
245
 
236
246
  switch (name) {
237
- case 'orchestrate-task':
238
- return await this.taskHandler.handleOrchestrateTask(args as {
247
+ case 'orchestrate-task': {
248
+ const orchArgs = args as {
239
249
  description: string;
240
250
  tasks?: OrchestrationTask[];
241
251
  sessionId?: string;
242
252
  executionMode?: string;
243
253
  timeout?: number;
244
- }, { taskHistory: this.taskHistory, activeTasks: this.activeTasks });
245
-
246
- case 'analyze-complexity':
247
- return await this.complexityHandler.handleAnalyzeComplexity(args as {
248
- tasks: OrchestrationTask[];
254
+ };
255
+ const aside = await spawnAside({
256
+ description: `Orchestration: ${orchArgs.description}`,
257
+ ...(orchArgs.sessionId ? { sessionId: orchArgs.sessionId } : {}),
258
+ inheritedContext: { taskCount: orchArgs.tasks?.length ?? 0, executionMode: orchArgs.executionMode ?? 'optimized' },
249
259
  });
250
-
260
+ try {
261
+ const result = await this.taskHandler.handleOrchestrateTask(
262
+ orchArgs,
263
+ { taskHistory: this.taskHistory, activeTasks: this.activeTasks, asideId: aside.asideId },
264
+ );
265
+ return result;
266
+ } finally {
267
+ closeAside(aside.asideId);
268
+ }
269
+ }
270
+ case 'analyze-complexity': {
271
+ const complexityArgs = args as { tasks: OrchestrationTask[] };
272
+ const aside = await spawnAside({
273
+ description: `Complexity analysis: ${complexityArgs.tasks.length} tasks`,
274
+ });
275
+ try {
276
+ return await this.complexityHandler.handleAnalyzeComplexity(complexityArgs, aside.asideId);
277
+ } finally {
278
+ closeAside(aside.asideId);
279
+ }
280
+ }
251
281
  case 'get-orchestration-status':
252
282
  return await this.statusHandler.handleGetOrchestrationStatus(args as {
253
283
  sessionId?: string;
254
284
  detailed?: boolean;
255
- }, { taskHistory: this.taskHistory, activeTasks: this.activeTasks });
256
-
257
- case 'cancel-orchestration':
258
- return await this.statusHandler.handleCancelOrchestration(args as {
259
- sessionId?: string;
260
- taskId?: string;
261
- force?: boolean;
262
- }, { taskHistory: this.taskHistory, activeTasks: this.activeTasks });
263
-
285
+ }, {
286
+ taskHistory: this.taskHistory,
287
+ activeTasks: this.activeTasks,
288
+ asideCount: getActiveAsideCount(),
289
+ asideIds: getActiveAsideIds(),
290
+ });
291
+ case 'cancel-orchestration': {
292
+ const cancelArgs = args as { sessionId?: string; taskId?: string; force?: boolean };
293
+ if (cancelArgs.force || (!cancelArgs.sessionId && !cancelArgs.taskId)) {
294
+ closeAllAsides();
295
+ } else if (cancelArgs.sessionId) {
296
+ const asideIds = getActiveAsideIds().filter(
297
+ (id) => getAsideState(id)?.sessionId === cancelArgs.sessionId,
298
+ );
299
+ for (const id of asideIds) closeAside(id);
300
+ }
301
+ return await this.statusHandler.handleCancelOrchestration(cancelArgs, {
302
+ taskHistory: this.taskHistory,
303
+ activeTasks: this.activeTasks,
304
+ });
305
+ }
264
306
  case 'optimize-orchestration':
265
307
  return await this.statusHandler.handleOptimizeOrchestration(args as {
266
308
  history?: boolean;
@@ -311,26 +353,38 @@ export class OrchestratorServer {
311
353
  skipApply: args.skipApply ?? false,
312
354
  });
313
355
 
314
- const result = await cycle.governExternalProposals(args.proposals as any);
356
+ const aside = await spawnAside({
357
+ description: `Governance cycle: ${args.proposals.length} proposals`,
358
+ priorVerdictContext: { proposalCount: args.proposals.length },
359
+ });
360
+
361
+ let result: import('../../inference/inference-cycle.js').InferenceCycleResult;
362
+ try {
363
+ result = await cycle.governExternalProposals(args.proposals as any);
364
+ addObservations(aside.asideId, extractGovernanceObservations(result));
365
+ } finally {
366
+ closeAside(aside.asideId);
367
+ }
315
368
 
316
- const approved = result.votes.filter((v) => v.decision === 'approve').length;
317
- const rejected = result.votes.length - approved;
369
+ const approved = result!.votes.filter((v) => v.decision === 'approve').length;
370
+ const rejected = result!.votes.length - approved;
318
371
 
319
372
  return {
320
373
  content: [{
321
374
  type: 'text' as const,
322
375
  text: JSON.stringify({
323
- cycleId: result.cycleId,
376
+ cycleId: result!.cycleId,
377
+ asideId: aside.asideId,
324
378
  approved,
325
379
  rejected,
326
- votes: result.votes,
327
- proposals: result.proposals.map((p) => ({
380
+ votes: result!.votes,
381
+ proposals: result!.proposals.map((p) => ({
328
382
  id: p.id,
329
383
  title: p.title,
330
384
  type: p.type,
331
385
  status: p.status,
332
386
  })),
333
- duration: result.duration,
387
+ duration: result!.duration,
334
388
  }, null, 2),
335
389
  }],
336
390
  };
@@ -360,6 +414,7 @@ export class OrchestratorServer {
360
414
  * Stop the server
361
415
  */
362
416
  async stop(): Promise<void> {
417
+ closeAllAsides();
363
418
  await frameworkLogger.log('orchestrator.server', 'shutdown', 'info', {
364
419
  message: '0xRay Orchestrator MCP Server shutting down',
365
420
  });
@@ -52,6 +52,41 @@ export interface TaskValidation {
52
52
  errors: string[];
53
53
  }
54
54
 
55
+ export interface ActiveAside {
56
+ asideId: string;
57
+ description: string;
58
+ sessionId?: string;
59
+ parentAsideId?: string;
60
+ startedAt: number;
61
+ inheritedContext?: Record<string, unknown>;
62
+ priorVerdictContext?: Record<string, unknown>;
63
+ observations: AsideObservation[];
64
+ }
65
+
66
+ export interface AsideObservation {
67
+ key: string;
68
+ value: string;
69
+ source: string;
70
+ }
71
+
72
+ export interface AsideContextOptions {
73
+ description: string;
74
+ inheritedContext?: Record<string, unknown>;
75
+ priorVerdictContext?: Record<string, unknown>;
76
+ sessionId?: string;
77
+ parentAsideId?: string;
78
+ }
79
+
80
+ export interface AsideResult {
81
+ asideId: string;
82
+ description: string;
83
+ success: boolean;
84
+ duration: number;
85
+ observations: AsideObservation[];
86
+ priorVerdictContext?: Record<string, unknown>;
87
+ error?: string;
88
+ }
89
+
55
90
  export interface OrchestrationStatus {
56
91
  activeSessions: number;
57
92
  totalTasks: number;
@@ -62,6 +97,8 @@ export interface OrchestrationStatus {
62
97
  tasks: number;
63
98
  duration: number;
64
99
  }>;
100
+ activeAsideCount?: number;
101
+ activeAsideIds?: string[];
65
102
  }
66
103
 
67
104
  export interface TaskExecutionContext {
@@ -4,17 +4,12 @@
4
4
  * Comprehensive metrics analysis for framework integration and optimization
5
5
  */
6
6
 
7
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
7
  import { frameworkLogger, generateJobId } from "../core/framework-logger.js";
9
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.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 os from "os";
17
11
  import path from "path";
12
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
18
13
 
19
14
  interface AnalysisMetrics {
20
15
  runtime?: RuntimeMetrics;
@@ -57,23 +52,73 @@ interface ResourceMetrics {
57
52
  recommendations: string[];
58
53
  }
59
54
 
60
- class XrayPerformanceAnalysisServer {
61
- private server: Server;
55
+ class XrayPerformanceAnalysisServer extends XrayKnowledgeSkillBase {
62
56
  private startTime: number;
63
57
 
64
58
  constructor() {
65
- this.server = new Server(
59
+ super("performance-analysis", "3.1.0");
60
+
61
+ this.startTime = Date.now();
62
+
63
+ this.tools = [
66
64
  {
67
- name: "performance-analysis", version: "3.1.0",
65
+ name: "performance-analysis",
66
+ description:
67
+ "Comprehensive metrics analysis for framework integration and optimization",
68
+ inputSchema: {
69
+ type: "object",
70
+ properties: {
71
+ scope: {
72
+ type: "string",
73
+ enum: [
74
+ "full",
75
+ "runtime",
76
+ "build",
77
+ "resources",
78
+ "bottlenecks",
79
+ ],
80
+ default: "full",
81
+ description: "Scope of performance analysis",
82
+ },
83
+ duration: {
84
+ type: "number",
85
+ default: 30,
86
+ description: "Analysis duration in seconds",
87
+ },
88
+ detailed: {
89
+ type: "boolean",
90
+ default: false,
91
+ description: "Include detailed metrics and recommendations",
92
+ },
93
+ },
94
+ },
68
95
  },
69
96
  {
70
- capabilities: {
71
- tools: {},
97
+ name: "bottleneck-detection",
98
+ description:
99
+ "Identify performance bottlenecks in framework operations",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {
103
+ operation: {
104
+ type: "string",
105
+ description: "Specific operation to analyze",
106
+ },
107
+ threshold: {
108
+ type: "number",
109
+ default: 1000,
110
+ description: "Performance threshold in milliseconds",
111
+ },
112
+ },
72
113
  },
73
114
  },
74
- );
115
+ ];
116
+
117
+ this.handlers = {
118
+ "performance-analysis": async (args) => this.handlePerformanceAnalysis(args as Record<string, unknown> | undefined),
119
+ "bottleneck-detection": async (args) => this.handleBottleneckDetection(args as Record<string, unknown> | undefined),
120
+ };
75
121
 
76
- this.startTime = Date.now();
77
122
  this.setupToolHandlers();
78
123
  frameworkLogger.log(
79
124
  "mcp-performance-analysis",
@@ -82,81 +127,6 @@ class XrayPerformanceAnalysisServer {
82
127
  );
83
128
  }
84
129
 
85
- private setupToolHandlers() {
86
- // List available tools
87
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
88
- return {
89
- tools: [
90
- {
91
- name: "performance-analysis",
92
- description:
93
- "Comprehensive metrics analysis for framework integration and optimization",
94
- inputSchema: {
95
- type: "object",
96
- properties: {
97
- scope: {
98
- type: "string",
99
- enum: [
100
- "full",
101
- "runtime",
102
- "build",
103
- "resources",
104
- "bottlenecks",
105
- ],
106
- default: "full",
107
- description: "Scope of performance analysis",
108
- },
109
- duration: {
110
- type: "number",
111
- default: 30,
112
- description: "Analysis duration in seconds",
113
- },
114
- detailed: {
115
- type: "boolean",
116
- default: false,
117
- description: "Include detailed metrics and recommendations",
118
- },
119
- },
120
- },
121
- },
122
- {
123
- name: "bottleneck-detection",
124
- description:
125
- "Identify performance bottlenecks in framework operations",
126
- inputSchema: {
127
- type: "object",
128
- properties: {
129
- operation: {
130
- type: "string",
131
- description: "Specific operation to analyze",
132
- },
133
- threshold: {
134
- type: "number",
135
- default: 1000,
136
- description: "Performance threshold in milliseconds",
137
- },
138
- },
139
- },
140
- },
141
- ],
142
- };
143
- });
144
-
145
- // Handle tool calls
146
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
147
- const { name, arguments: args } = request.params;
148
-
149
- switch (name) {
150
- case "performance-analysis":
151
- return await this.handlePerformanceAnalysis(args);
152
- case "bottleneck-detection":
153
- return await this.handleBottleneckDetection(args);
154
- default:
155
- throw new Error(`Unknown tool: ${name}`);
156
- }
157
- });
158
- }
159
-
160
130
  private async handlePerformanceAnalysis(args: Record<string, unknown> | undefined) {
161
131
  const scope = (args?.scope as string) || "full";
162
132
  const duration = (args?.duration as number) || 30;
@@ -691,19 +661,6 @@ ${results.recommendations.map((r) => `• 💡 ${r}`).join("\n") || "No recommen
691
661
  return report;
692
662
  }
693
663
 
694
- async run() {
695
- const transport = new StdioServerTransport();
696
- await this.server.connect(transport);
697
- const jobId = generateJobId("mcp-performance-analysis-server");
698
- await frameworkLogger.log(
699
- "mcp-performance-analysis",
700
- "server-started",
701
- "success",
702
- {},
703
- undefined, // sessionId
704
- jobId,
705
- );
706
- }
707
664
  }
708
665
 
709
666
  // Start the server if run directly
@@ -4,16 +4,11 @@
4
4
  * Advanced processor pipeline with codex validation, compliance monitoring, and framework enforcement
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 * as fs from "fs";
14
8
  import { frameworkLogger } from "../core/framework-logger.js";
15
9
  import { CodexLoader } from "../enforcement/loaders/codex-loader.js";
16
10
  import type { RuleDefinition, RuleValidationContext } from "../enforcement/types.js";
11
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
17
12
 
18
13
  interface PreProcessorArgs {
19
14
  content: string;
@@ -88,8 +83,7 @@ interface FrameworkComplianceResult {
88
83
  approved: boolean;
89
84
  }
90
85
 
91
- class XrayProcessorPipelineServer {
92
- private server: Server;
86
+ class XrayProcessorPipelineServer extends XrayKnowledgeSkillBase {
93
87
  private codexLoader: CodexLoader;
94
88
  private codexRules: RuleDefinition[] = [];
95
89
  private codexTerms: string[] = [
@@ -105,17 +99,80 @@ class XrayProcessorPipelineServer {
105
99
  ];
106
100
 
107
101
  constructor() {
102
+ super("processor-pipeline", "3.1.0");
108
103
  this.codexLoader = new CodexLoader();
109
- this.server = new Server(
104
+
105
+ this.tools = [
106
+ {
107
+ name: "execute-pre-processors",
108
+ description:
109
+ "Run pre-execution processors on content with codex validation",
110
+ inputSchema: {
111
+ type: "object",
112
+ properties: {
113
+ content: { type: "string" },
114
+ context: { type: "object" },
115
+ validateCodex: { type: "boolean", default: true },
116
+ strictMode: { type: "boolean", default: false },
117
+ },
118
+ required: ["content"],
119
+ },
120
+ },
121
+ {
122
+ name: "execute-post-processors",
123
+ description:
124
+ "Run post-execution processors on results with compliance monitoring",
125
+ inputSchema: {
126
+ type: "object",
127
+ properties: {
128
+ content: { type: "string" },
129
+ results: { type: "object" },
130
+ enforceCompliance: { type: "boolean", default: true },
131
+ auditTrail: { type: "boolean", default: true },
132
+ },
133
+ required: ["content"],
134
+ },
135
+ },
110
136
  {
111
- name: "processor-pipeline", version: "3.1.0",
137
+ name: "codex-validation",
138
+ description:
139
+ "Validate content against Universal Development Codex terms",
140
+ inputSchema: {
141
+ type: "object",
142
+ properties: {
143
+ content: { type: "string" },
144
+ terms: {
145
+ type: "array",
146
+ items: { type: "string" },
147
+ default: ["all"],
148
+ },
149
+ strict: { type: "boolean", default: false },
150
+ },
151
+ required: ["content"],
152
+ },
112
153
  },
113
154
  {
114
- capabilities: {
115
- tools: {},
155
+ name: "framework-compliance-check",
156
+ description:
157
+ "Check framework compliance and generate enforcement actions",
158
+ inputSchema: {
159
+ type: "object",
160
+ properties: {
161
+ content: { type: "string" },
162
+ operation: { type: "string" },
163
+ context: { type: "object" },
164
+ },
165
+ required: ["content", "operation"],
116
166
  },
117
167
  },
118
- );
168
+ ];
169
+
170
+ this.handlers = {
171
+ "execute-pre-processors": async (args) => this.handlePreProcessors(args as PreProcessorArgs),
172
+ "execute-post-processors": async (args) => this.handlePostProcessors(args as PostProcessorArgs),
173
+ "codex-validation": async (args) => this.handleCodexValidation(args as CodexValidationArgs),
174
+ "framework-compliance-check": async (args) => this.handleComplianceCheck(args as ComplianceCheckArgs),
175
+ };
119
176
 
120
177
  this.setupToolHandlers();
121
178
  this.loadCodexRules();
@@ -143,96 +200,6 @@ class XrayProcessorPipelineServer {
143
200
  }
144
201
  }
145
202
 
146
- private setupToolHandlers() {
147
- // List available tools
148
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
149
- return {
150
- tools: [
151
- {
152
- name: "execute-pre-processors",
153
- description:
154
- "Run pre-execution processors on content with codex validation",
155
- inputSchema: {
156
- type: "object",
157
- properties: {
158
- content: { type: "string" },
159
- context: { type: "object" },
160
- validateCodex: { type: "boolean", default: true },
161
- strictMode: { type: "boolean", default: false },
162
- },
163
- required: ["content"],
164
- },
165
- },
166
- {
167
- name: "execute-post-processors",
168
- description:
169
- "Run post-execution processors on results with compliance monitoring",
170
- inputSchema: {
171
- type: "object",
172
- properties: {
173
- content: { type: "string" },
174
- results: { type: "object" },
175
- enforceCompliance: { type: "boolean", default: true },
176
- auditTrail: { type: "boolean", default: true },
177
- },
178
- required: ["content"],
179
- },
180
- },
181
- {
182
- name: "codex-validation",
183
- description:
184
- "Validate content against Universal Development Codex terms",
185
- inputSchema: {
186
- type: "object",
187
- properties: {
188
- content: { type: "string" },
189
- terms: {
190
- type: "array",
191
- items: { type: "string" },
192
- default: ["all"],
193
- },
194
- strict: { type: "boolean", default: false },
195
- },
196
- required: ["content"],
197
- },
198
- },
199
- {
200
- name: "framework-compliance-check",
201
- description:
202
- "Check framework compliance and generate enforcement actions",
203
- inputSchema: {
204
- type: "object",
205
- properties: {
206
- content: { type: "string" },
207
- operation: { type: "string" },
208
- context: { type: "object" },
209
- },
210
- required: ["content", "operation"],
211
- },
212
- },
213
- ],
214
- };
215
- });
216
-
217
- // Handle tool calls
218
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
219
- const { name, arguments: args } = request.params;
220
-
221
- switch (name) {
222
- case "execute-pre-processors":
223
- return await this.handlePreProcessors(args as unknown as PreProcessorArgs);
224
- case "execute-post-processors":
225
- return await this.handlePostProcessors(args as unknown as PostProcessorArgs);
226
- case "codex-validation":
227
- return await this.handleCodexValidation(args as unknown as CodexValidationArgs);
228
- case "framework-compliance-check":
229
- return await this.handleComplianceCheck(args as unknown as ComplianceCheckArgs);
230
- default:
231
- throw new Error(`Unknown tool: ${name}`);
232
- }
233
- });
234
- }
235
-
236
203
  private async handlePreProcessors(args: PreProcessorArgs) {
237
204
  const content = args.content;
238
205
  const context = args.context || {};
@@ -763,11 +730,6 @@ ${complianceResults.actions.map((a: string) => `• 🔧 ${a}`).join("\n") || "N
763
730
  return results;
764
731
  }
765
732
 
766
- async run() {
767
- const transport = new StdioServerTransport();
768
- await this.server.connect(transport);
769
- // Silent start - no console output
770
- }
771
733
  }
772
734
 
773
735
  // Start the server if run directly