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
@@ -0,0 +1,207 @@
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
+ import { frameworkLogger } from "../../core/framework-logger.js";
9
+ let asideCounter = 0;
10
+ const activeAsides = new Map();
11
+ export function getActiveAsideCount() {
12
+ return activeAsides.size;
13
+ }
14
+ export function getActiveAsideIds() {
15
+ return Array.from(activeAsides.keys());
16
+ }
17
+ export function getAsideState(asideId) {
18
+ return activeAsides.get(asideId);
19
+ }
20
+ export function addObservations(asideId, observations) {
21
+ const aside = activeAsides.get(asideId);
22
+ if (!aside)
23
+ return false;
24
+ aside.observations.push(...observations);
25
+ return true;
26
+ }
27
+ export function extractGovernanceObservations(result) {
28
+ const obs = [];
29
+ obs.push({
30
+ key: "governanceCycleId",
31
+ value: result.cycleId,
32
+ source: "inference/inference-cycle.ts",
33
+ });
34
+ obs.push({
35
+ key: "governanceVoteCount",
36
+ value: String(result.votes.length),
37
+ source: "inference/inference-cycle.ts",
38
+ });
39
+ const approved = result.votes.filter((v) => v.decision === "approve").length;
40
+ const rejected = result.votes.filter((v) => v.decision === "reject").length;
41
+ obs.push({
42
+ key: "governanceApprovedCount",
43
+ value: String(approved),
44
+ source: "inference/inference-cycle.ts",
45
+ });
46
+ obs.push({
47
+ key: "governanceRejectedCount",
48
+ value: String(rejected),
49
+ source: "inference/inference-cycle.ts",
50
+ });
51
+ if (result.corpusSummary) {
52
+ obs.push({
53
+ key: "corpusSessionCount",
54
+ value: String(result.corpusSummary.sessions),
55
+ source: "inference/inference-cycle.ts",
56
+ });
57
+ obs.push({
58
+ key: "corpusPatternCount",
59
+ value: String(result.corpusSummary.recurringPatterns),
60
+ source: "inference/inference-cycle.ts",
61
+ });
62
+ }
63
+ return obs;
64
+ }
65
+ export function extractOrchestrationObservations(result) {
66
+ const obs = [];
67
+ obs.push({
68
+ key: "orchestrationSuccess",
69
+ value: String(result.success),
70
+ source: "mcps/orchestrator/types.ts",
71
+ });
72
+ obs.push({
73
+ key: "tasksCompleted",
74
+ value: String(result.completedTasks),
75
+ source: "mcps/orchestrator/types.ts",
76
+ });
77
+ obs.push({
78
+ key: "tasksFailed",
79
+ value: String(result.failedTasks),
80
+ source: "mcps/orchestrator/types.ts",
81
+ });
82
+ obs.push({
83
+ key: "orchestrationDuration",
84
+ value: `${result.duration}ms`,
85
+ source: "mcps/orchestrator/types.ts",
86
+ });
87
+ for (const b of result.bottlenecks) {
88
+ obs.push({
89
+ key: "bottleneck",
90
+ value: b.substring(0, 200),
91
+ source: "mcps/orchestrator/types.ts",
92
+ });
93
+ }
94
+ for (const r of result.recommendations) {
95
+ obs.push({
96
+ key: "recommendation",
97
+ value: r.substring(0, 200),
98
+ source: "mcps/orchestrator/types.ts",
99
+ });
100
+ }
101
+ return obs;
102
+ }
103
+ export function extractComplexityObservations(analysis) {
104
+ const obs = [];
105
+ obs.push({
106
+ key: "complexityScore",
107
+ value: String(analysis.overallComplexity),
108
+ source: "mcps/orchestrator/execution/execution-planner.ts",
109
+ });
110
+ obs.push({
111
+ key: "recommendedStrategy",
112
+ value: analysis.recommendedStrategy,
113
+ source: "mcps/orchestrator/execution/execution-planner.ts",
114
+ });
115
+ obs.push({
116
+ key: "parallelPotential",
117
+ value: String(analysis.parallelPotential),
118
+ source: "mcps/orchestrator/execution/execution-planner.ts",
119
+ });
120
+ obs.push({
121
+ key: "estimatedDuration",
122
+ value: `${analysis.estimatedDuration}ms`,
123
+ source: "mcps/orchestrator/execution/execution-planner.ts",
124
+ });
125
+ for (const tc of analysis.taskComplexity) {
126
+ obs.push({
127
+ key: `taskComplexity`,
128
+ value: `${tc.complexity} (${tc.category})`,
129
+ source: "mcps/orchestrator/execution/execution-planner.ts",
130
+ });
131
+ }
132
+ return obs;
133
+ }
134
+ export async function spawnAside(options) {
135
+ const asideId = options.parentAsideId
136
+ ? `${options.parentAsideId}.aside-${++asideCounter}`
137
+ : `aside-${++asideCounter}-${Date.now()}`;
138
+ const startTime = Date.now();
139
+ const aside = {
140
+ asideId,
141
+ description: options.description,
142
+ startedAt: startTime,
143
+ observations: [],
144
+ ...(options.inheritedContext !== undefined ? { inheritedContext: options.inheritedContext } : {}),
145
+ ...(options.parentAsideId !== undefined ? { parentAsideId: options.parentAsideId } : {}),
146
+ ...(options.sessionId !== undefined ? { sessionId: options.sessionId } : {}),
147
+ ...(options.priorVerdictContext !== undefined ? { priorVerdictContext: options.priorVerdictContext } : {}),
148
+ };
149
+ activeAsides.set(asideId, aside);
150
+ frameworkLogger.log("aside-context", "aside-spawn", "info", {
151
+ asideId,
152
+ description: options.description,
153
+ sessionId: options.sessionId,
154
+ parentAsideId: options.parentAsideId,
155
+ activeAsideCount: activeAsides.size,
156
+ });
157
+ if (options.priorVerdictContext) {
158
+ const decision = options.priorVerdictContext["decision"];
159
+ if (decision) {
160
+ aside.observations.push({
161
+ key: "governanceDecision",
162
+ value: String(decision),
163
+ source: "priorVerdictContext",
164
+ });
165
+ }
166
+ }
167
+ const duration = Date.now() - startTime;
168
+ const result = {
169
+ asideId,
170
+ description: options.description,
171
+ success: true,
172
+ duration,
173
+ observations: aside.observations,
174
+ ...(options.priorVerdictContext !== undefined ? { priorVerdictContext: options.priorVerdictContext } : {}),
175
+ };
176
+ frameworkLogger.log("aside-context", "aside-complete", "info", {
177
+ asideId,
178
+ duration,
179
+ observationCount: aside.observations.length,
180
+ activeAsideCount: activeAsides.size,
181
+ });
182
+ return result;
183
+ }
184
+ export function closeAside(asideId) {
185
+ const aside = activeAsides.get(asideId);
186
+ if (!aside)
187
+ return false;
188
+ activeAsides.delete(asideId);
189
+ frameworkLogger.log("aside-context", "aside-closed", "info", {
190
+ asideId,
191
+ duration: Date.now() - aside.startedAt,
192
+ remainingActive: activeAsides.size,
193
+ });
194
+ return true;
195
+ }
196
+ export function closeAllAsides() {
197
+ const count = activeAsides.size;
198
+ activeAsides.clear();
199
+ frameworkLogger.log("aside-context", "aside-close-all", "info", {
200
+ closedCount: count,
201
+ });
202
+ return count;
203
+ }
204
+ export function resetAsideContext() {
205
+ activeAsides.clear();
206
+ asideCounter = 0;
207
+ }
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { frameworkLogger } from '../../../core/framework-logger.js';
7
7
  import { getExecutionPlanner } from '../execution/execution-planner.js';
8
+ import { addObservations, extractComplexityObservations } from '../aside-context.js';
8
9
  /**
9
10
  * Complexity Handler
10
11
  * Processes analyze-complexity requests
@@ -14,12 +15,15 @@ export class ComplexityHandler {
14
15
  /**
15
16
  * Handle analyze-complexity request
16
17
  */
17
- async handleAnalyzeComplexity(args) {
18
+ async handleAnalyzeComplexity(args, asideId) {
18
19
  const { tasks = [] } = args;
19
20
  await frameworkLogger.log('orchestrator.server', 'analyze-complexity-start', 'info', { taskCount: tasks.length });
20
21
  try {
21
22
  const analysis = await this.planner.analyzeTaskComplexity(tasks);
22
23
  const recommendations = this.generateRecommendations(analysis);
24
+ if (asideId) {
25
+ addObservations(asideId, extractComplexityObservations(analysis));
26
+ }
23
27
  return {
24
28
  content: [
25
29
  {
@@ -41,7 +41,14 @@ export class StatusHandler {
41
41
  // Overall status
42
42
  status = this.getOverallStatus(deps);
43
43
  }
44
- const response = this.formatStatusResponse(status, detailed);
44
+ let response = this.formatStatusResponse(status, detailed);
45
+ if (detailed && deps.asideCount !== undefined) {
46
+ response += `\n\n**Active Aside Contexts:**`;
47
+ response += `\n• Count: ${deps.asideCount}`;
48
+ if (deps.asideIds && deps.asideIds.length > 0) {
49
+ response += `\n• IDs: ${deps.asideIds.join(', ')}`;
50
+ }
51
+ }
45
52
  return { content: [{ type: 'text', text: response }] };
46
53
  }
47
54
  catch (error) {
@@ -6,6 +6,7 @@
6
6
  import { frameworkLogger } from '../../../core/framework-logger.js';
7
7
  import { getExecutionPlanner } from '../execution/execution-planner.js';
8
8
  import { mcpClientManager } from '../../../mcps/mcp-client.js';
9
+ import { addObservations, extractOrchestrationObservations } from '../aside-context.js';
9
10
  /**
10
11
  * Task Handler
11
12
  * Processes orchestrate-task requests
@@ -49,6 +50,10 @@ export class TaskHandler {
49
50
  if (results.agentOutputs) {
50
51
  orchestrationResult.agentOutputs = results.agentOutputs;
51
52
  }
53
+ // Push observations into aside context if active
54
+ if (deps.asideId) {
55
+ addObservations(deps.asideId, extractOrchestrationObservations(orchestrationResult));
56
+ }
52
57
  // Store in history
53
58
  deps.taskHistory.push({
54
59
  sessionId,
@@ -0,0 +1,5 @@
1
+ export { OrchestratorServer, createOrchestratorServer } from './server.js';
2
+ export { TaskHandler } from './handlers/task-handler.js';
3
+ export { ComplexityHandler } from './handlers/complexity-handler.js';
4
+ export { StatusHandler } from './handlers/status-handler.js';
5
+ export { spawnAside, closeAside, closeAllAsides, addObservations, getActiveAsideCount, getActiveAsideIds, getAsideState, resetAsideContext, extractGovernanceObservations, extractOrchestrationObservations, extractComplexityObservations, } from './aside-context.js';
@@ -14,6 +14,7 @@ import { MultiAgentOrchestrationCoordinator } from '../../orchestrator/multi-age
14
14
  import { TaskHandler } from './handlers/task-handler.js';
15
15
  import { ComplexityHandler } from './handlers/complexity-handler.js';
16
16
  import { StatusHandler } from './handlers/status-handler.js';
17
+ import { spawnAside, closeAside, closeAllAsides, addObservations, getActiveAsideCount, getActiveAsideIds, getAsideState, extractGovernanceObservations, } from './aside-context.js';
17
18
  /**
18
19
  * Orchestrator MCP Server
19
20
  * Enterprise-grade orchestration with advanced task management and agent coordination
@@ -203,14 +204,55 @@ export class OrchestratorServer {
203
204
  try {
204
205
  const { name, arguments: args } = request.params;
205
206
  switch (name) {
206
- case 'orchestrate-task':
207
- return await this.taskHandler.handleOrchestrateTask(args, { taskHistory: this.taskHistory, activeTasks: this.activeTasks });
208
- case 'analyze-complexity':
209
- return await this.complexityHandler.handleAnalyzeComplexity(args);
207
+ case 'orchestrate-task': {
208
+ const orchArgs = args;
209
+ const aside = await spawnAside({
210
+ description: `Orchestration: ${orchArgs.description}`,
211
+ ...(orchArgs.sessionId ? { sessionId: orchArgs.sessionId } : {}),
212
+ inheritedContext: { taskCount: orchArgs.tasks?.length ?? 0, executionMode: orchArgs.executionMode ?? 'optimized' },
213
+ });
214
+ try {
215
+ const result = await this.taskHandler.handleOrchestrateTask(orchArgs, { taskHistory: this.taskHistory, activeTasks: this.activeTasks, asideId: aside.asideId });
216
+ return result;
217
+ }
218
+ finally {
219
+ closeAside(aside.asideId);
220
+ }
221
+ }
222
+ case 'analyze-complexity': {
223
+ const complexityArgs = args;
224
+ const aside = await spawnAside({
225
+ description: `Complexity analysis: ${complexityArgs.tasks.length} tasks`,
226
+ });
227
+ try {
228
+ return await this.complexityHandler.handleAnalyzeComplexity(complexityArgs, aside.asideId);
229
+ }
230
+ finally {
231
+ closeAside(aside.asideId);
232
+ }
233
+ }
210
234
  case 'get-orchestration-status':
211
- return await this.statusHandler.handleGetOrchestrationStatus(args, { taskHistory: this.taskHistory, activeTasks: this.activeTasks });
212
- case 'cancel-orchestration':
213
- return await this.statusHandler.handleCancelOrchestration(args, { taskHistory: this.taskHistory, activeTasks: this.activeTasks });
235
+ return await this.statusHandler.handleGetOrchestrationStatus(args, {
236
+ taskHistory: this.taskHistory,
237
+ activeTasks: this.activeTasks,
238
+ asideCount: getActiveAsideCount(),
239
+ asideIds: getActiveAsideIds(),
240
+ });
241
+ case 'cancel-orchestration': {
242
+ const cancelArgs = args;
243
+ if (cancelArgs.force || (!cancelArgs.sessionId && !cancelArgs.taskId)) {
244
+ closeAllAsides();
245
+ }
246
+ else if (cancelArgs.sessionId) {
247
+ const asideIds = getActiveAsideIds().filter((id) => getAsideState(id)?.sessionId === cancelArgs.sessionId);
248
+ for (const id of asideIds)
249
+ closeAside(id);
250
+ }
251
+ return await this.statusHandler.handleCancelOrchestration(cancelArgs, {
252
+ taskHistory: this.taskHistory,
253
+ activeTasks: this.activeTasks,
254
+ });
255
+ }
214
256
  case 'optimize-orchestration':
215
257
  return await this.statusHandler.handleOptimizeOrchestration(args);
216
258
  case 'govern-and-apply':
@@ -235,7 +277,18 @@ export class OrchestratorServer {
235
277
  const cycle = InferenceCycle.getInstance(process.cwd(), {
236
278
  skipApply: args.skipApply ?? false,
237
279
  });
238
- const result = await cycle.governExternalProposals(args.proposals);
280
+ const aside = await spawnAside({
281
+ description: `Governance cycle: ${args.proposals.length} proposals`,
282
+ priorVerdictContext: { proposalCount: args.proposals.length },
283
+ });
284
+ let result;
285
+ try {
286
+ result = await cycle.governExternalProposals(args.proposals);
287
+ addObservations(aside.asideId, extractGovernanceObservations(result));
288
+ }
289
+ finally {
290
+ closeAside(aside.asideId);
291
+ }
239
292
  const approved = result.votes.filter((v) => v.decision === 'approve').length;
240
293
  const rejected = result.votes.length - approved;
241
294
  return {
@@ -243,6 +296,7 @@ export class OrchestratorServer {
243
296
  type: 'text',
244
297
  text: JSON.stringify({
245
298
  cycleId: result.cycleId,
299
+ asideId: aside.asideId,
246
300
  approved,
247
301
  rejected,
248
302
  votes: result.votes,
@@ -280,6 +334,7 @@ export class OrchestratorServer {
280
334
  * Stop the server
281
335
  */
282
336
  async stop() {
337
+ closeAllAsides();
283
338
  await frameworkLogger.log('orchestrator.server', 'shutdown', 'info', {
284
339
  message: '0xRay Orchestrator MCP Server shutting down',
285
340
  });
@@ -3,98 +3,74 @@
3
3
  *
4
4
  * Comprehensive metrics analysis for framework integration and optimization
5
5
  */
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
6
  import { frameworkLogger, generateJobId } from "../core/framework-logger.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
7
  import { execSync } from "child_process";
11
8
  import fs from "fs";
12
9
  import os from "os";
13
10
  import path from "path";
14
- class XrayPerformanceAnalysisServer {
15
- server;
11
+ import { XrayKnowledgeSkillBase } from "./shared/knowledge-skill-base.js";
12
+ class XrayPerformanceAnalysisServer extends XrayKnowledgeSkillBase {
16
13
  startTime;
17
14
  constructor() {
18
- this.server = new Server({
19
- name: "performance-analysis", version: "3.1.0",
20
- }, {
21
- capabilities: {
22
- tools: {},
23
- },
24
- });
15
+ super("performance-analysis", "3.1.0");
25
16
  this.startTime = Date.now();
26
- this.setupToolHandlers();
27
- frameworkLogger.log("mcp-performance-analysis", "server-initialized", "info");
28
- }
29
- setupToolHandlers() {
30
- // List available tools
31
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
32
- return {
33
- tools: [
34
- {
35
- name: "performance-analysis",
36
- description: "Comprehensive metrics analysis for framework integration and optimization",
37
- inputSchema: {
38
- type: "object",
39
- properties: {
40
- scope: {
41
- type: "string",
42
- enum: [
43
- "full",
44
- "runtime",
45
- "build",
46
- "resources",
47
- "bottlenecks",
48
- ],
49
- default: "full",
50
- description: "Scope of performance analysis",
51
- },
52
- duration: {
53
- type: "number",
54
- default: 30,
55
- description: "Analysis duration in seconds",
56
- },
57
- detailed: {
58
- type: "boolean",
59
- default: false,
60
- description: "Include detailed metrics and recommendations",
61
- },
62
- },
17
+ this.tools = [
18
+ {
19
+ name: "performance-analysis",
20
+ description: "Comprehensive metrics analysis for framework integration and optimization",
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {
24
+ scope: {
25
+ type: "string",
26
+ enum: [
27
+ "full",
28
+ "runtime",
29
+ "build",
30
+ "resources",
31
+ "bottlenecks",
32
+ ],
33
+ default: "full",
34
+ description: "Scope of performance analysis",
35
+ },
36
+ duration: {
37
+ type: "number",
38
+ default: 30,
39
+ description: "Analysis duration in seconds",
40
+ },
41
+ detailed: {
42
+ type: "boolean",
43
+ default: false,
44
+ description: "Include detailed metrics and recommendations",
63
45
  },
64
46
  },
65
- {
66
- name: "bottleneck-detection",
67
- description: "Identify performance bottlenecks in framework operations",
68
- inputSchema: {
69
- type: "object",
70
- properties: {
71
- operation: {
72
- type: "string",
73
- description: "Specific operation to analyze",
74
- },
75
- threshold: {
76
- type: "number",
77
- default: 1000,
78
- description: "Performance threshold in milliseconds",
79
- },
80
- },
47
+ },
48
+ },
49
+ {
50
+ name: "bottleneck-detection",
51
+ description: "Identify performance bottlenecks in framework operations",
52
+ inputSchema: {
53
+ type: "object",
54
+ properties: {
55
+ operation: {
56
+ type: "string",
57
+ description: "Specific operation to analyze",
58
+ },
59
+ threshold: {
60
+ type: "number",
61
+ default: 1000,
62
+ description: "Performance threshold in milliseconds",
81
63
  },
82
64
  },
83
- ],
84
- };
85
- });
86
- // Handle tool calls
87
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
88
- const { name, arguments: args } = request.params;
89
- switch (name) {
90
- case "performance-analysis":
91
- return await this.handlePerformanceAnalysis(args);
92
- case "bottleneck-detection":
93
- return await this.handleBottleneckDetection(args);
94
- default:
95
- throw new Error(`Unknown tool: ${name}`);
96
- }
97
- });
65
+ },
66
+ },
67
+ ];
68
+ this.handlers = {
69
+ "performance-analysis": async (args) => this.handlePerformanceAnalysis(args),
70
+ "bottleneck-detection": async (args) => this.handleBottleneckDetection(args),
71
+ };
72
+ this.setupToolHandlers();
73
+ frameworkLogger.log("mcp-performance-analysis", "server-initialized", "info");
98
74
  }
99
75
  async handlePerformanceAnalysis(args) {
100
76
  const scope = args?.scope || "full";
@@ -503,13 +479,6 @@ ${results.recommendations.map((r) => `• 💡 ${r}`).join("\n") || "No recommen
503
479
  }
504
480
  return report;
505
481
  }
506
- async run() {
507
- const transport = new StdioServerTransport();
508
- await this.server.connect(transport);
509
- const jobId = generateJobId("mcp-performance-analysis-server");
510
- await frameworkLogger.log("mcp-performance-analysis", "server-started", "success", {}, undefined, // sessionId
511
- jobId);
512
- }
513
482
  }
514
483
  // Start the server if run directly
515
484
  if (import.meta.url === `file://${fs.realpathSync(process.argv[1])}`) {