0xray 3.1.0 → 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 (437) hide show
  1. package/.gitignore.default +59 -0
  2. package/.mcp.json +35 -0
  3. package/.opencode/codex.codex +1 -1
  4. package/.opencode/commands/auto-format.md +3 -3
  5. package/.opencode/commands/auto-summary-capture.md +2 -2
  6. package/.opencode/commands/dependency-audit.md +3 -3
  7. package/.opencode/commands/enforcer-daily-scan.md +3 -3
  8. package/.opencode/commands/framework-compliance-audit.md +4 -4
  9. package/.opencode/commands/interactive-validator.md +2 -2
  10. package/.opencode/commands/job-summary-logger.md +2 -2
  11. package/.opencode/commands/mode-switch.md +1 -1
  12. package/.opencode/commands/model-health-check.md +2 -2
  13. package/.opencode/commands/performance-analysis.md +2 -2
  14. package/.opencode/commands/pre-commit-introspection.md +3 -3
  15. package/.opencode/commands/security-scan.md +3 -3
  16. package/.opencode/commands/sisyphus-validation.md +3 -3
  17. package/.opencode/commands/summary-logger.md +6 -6
  18. package/.opencode/enforcer-config.json +2 -2
  19. package/.opencode/hooks/post-commit +1 -1
  20. package/.opencode/init.sh +6 -0
  21. package/.plugin/plugin.json +11 -0
  22. package/AGENTS-consumer.md +46 -0
  23. package/AGENTS.md +2 -12
  24. package/LICENSE +1 -1
  25. package/README.md +6 -6
  26. package/SKILLS.md +140 -0
  27. package/dist/.gitignore.default +59 -0
  28. package/dist/AGENTS.md +2 -12
  29. package/dist/CHANGELOG.md +54 -0
  30. package/dist/LICENSE +1 -1
  31. package/dist/README.md +6 -6
  32. package/dist/SKILLS.md +140 -0
  33. package/dist/agents/index.js +3 -1
  34. package/dist/agents/registry.js +13 -0
  35. package/dist/analytics/consent-manager.js +0 -1
  36. package/dist/analytics/emerging-pattern-detector.js +0 -1
  37. package/dist/analytics/pattern-learning-engine.js +0 -1
  38. package/dist/analytics/pattern-performance-tracker.js +0 -1
  39. package/dist/analytics/predictive-analytics.js +0 -1
  40. package/dist/analytics/prompt-pattern-analyzer.js +0 -1
  41. package/dist/analytics/routing-performance-analyzer.js +0 -1
  42. package/dist/analytics/routing-refiner.js +1 -2
  43. package/dist/analytics/simple-pattern-analyzer.js +0 -1
  44. package/dist/architect/architectural-integrity.js +3 -3
  45. package/dist/benchmark/performance-benchmark.js +1 -2
  46. package/dist/cli/commands/antigravity-status.js +23 -23
  47. package/dist/cli/commands/archive-logs.js +0 -1
  48. package/dist/cli/commands/credible-init.js +1 -1
  49. package/dist/cli/commands/hermes-install.js +8 -0
  50. package/dist/cli/commands/mcp-install.js +1 -1
  51. package/dist/cli/commands/openclaw-install.js +9 -0
  52. package/dist/cli/commands/opencode-install.js +35 -0
  53. package/dist/cli/commands/plugin-commands.js +0 -1
  54. package/dist/cli/commands/skill-install.js +39 -2
  55. package/dist/cli/commands/status.js +16 -13
  56. package/dist/cli/commands/storyteller.js +1 -1
  57. package/dist/cli/index.js +14 -13
  58. package/dist/core/activity-logger.js +4 -5
  59. package/dist/core/adaptive-kernel.js +0 -1
  60. package/dist/core/agent-spawn-gate.js +1 -1
  61. package/dist/core/boot-orchestrator.js +14 -25
  62. package/dist/core/bridge.mjs +4 -5
  63. package/dist/core/codex-formatter.js +1 -3
  64. package/dist/core/codex-injector.js +3 -4
  65. package/dist/core/config-loader.js +36 -29
  66. package/dist/core/config-paths.js +30 -23
  67. package/dist/core/context-loader.js +0 -4
  68. package/dist/core/context-validator.js +0 -1
  69. package/dist/core/features-config.js +38 -2
  70. package/dist/core/index.js +2 -2
  71. package/dist/core/kernel-patterns.js +0 -1
  72. package/dist/core/logging-config.js +7 -7
  73. package/dist/core/model-router.js +23 -64
  74. package/dist/core/orchestrator.js +1 -1
  75. package/dist/core/system-prompt-generator.js +0 -1
  76. package/dist/core/xray-activation.js +3 -4
  77. package/dist/delegation/agent-delegator.js +2 -3
  78. package/dist/delegation/agent-expertise.js +0 -1
  79. package/dist/delegation/analytics/index.js +0 -1
  80. package/dist/delegation/analytics/learning-engine.js +0 -1
  81. package/dist/delegation/analytics/outcome-tracker.js +0 -1
  82. package/dist/delegation/analytics/routing-analytics.js +0 -1
  83. package/dist/delegation/ast-code-parser.js +0 -1
  84. package/dist/delegation/complexity-analyzer.js +0 -1
  85. package/dist/delegation/dependency-graph-builder.js +0 -1
  86. package/dist/delegation/index.js +0 -1
  87. package/dist/delegation/metrics-aggregator.js +0 -1
  88. package/dist/delegation/session-coordinator.js +0 -1
  89. package/dist/delegation/strategy-selector.js +0 -1
  90. package/dist/delegation/voting-coordinator.js +0 -1
  91. package/dist/delegation/voting-types.js +0 -1
  92. package/dist/delegation/weighted-voting-aggregator.js +0 -1
  93. package/dist/enforcement/core/index.js +0 -1
  94. package/dist/enforcement/core/rule-executor.js +0 -1
  95. package/dist/enforcement/core/rule-hierarchy.js +0 -1
  96. package/dist/enforcement/core/rule-registry.js +0 -1
  97. package/dist/enforcement/core/violation-fixer.js +0 -1
  98. package/dist/enforcement/enforcer-tools.js +2 -2
  99. package/dist/enforcement/index.js +0 -1
  100. package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
  101. package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
  102. package/dist/enforcement/loaders/base-loader.js +0 -1
  103. package/dist/enforcement/loaders/codex-loader.js +2 -3
  104. package/dist/enforcement/loaders/index.js +0 -1
  105. package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
  106. package/dist/enforcement/loaders/processor-loader.js +0 -1
  107. package/dist/enforcement/types.js +0 -1
  108. package/dist/enforcement/validators/architecture-validators.js +0 -1
  109. package/dist/enforcement/validators/base-validator.js +0 -1
  110. package/dist/enforcement/validators/code-quality-validators.js +0 -1
  111. package/dist/enforcement/validators/index.js +0 -1
  112. package/dist/enforcement/validators/security-validators.js +0 -1
  113. package/dist/enforcement/validators/testing-validators.js +0 -1
  114. package/dist/enforcement/validators/validator-registry.js +0 -1
  115. package/dist/execution/opencode-cli-invoker.js +1 -1
  116. package/dist/governance/codex-policy.service.js +0 -1
  117. package/dist/governance/governance-service.js +1 -1
  118. package/dist/governance/llm-governance-provider.js +14 -1
  119. package/dist/index.js +3 -5
  120. package/dist/inference/inference-agent-invoker.js +67 -0
  121. package/dist/inference/inference-applier.js +178 -0
  122. package/dist/inference/inference-cycle.js +52 -828
  123. package/dist/inference/inference-proposal-generator.js +149 -0
  124. package/dist/infrastructure/iac-validator.js +465 -0
  125. package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
  126. package/dist/integrations/base/ExampleIntegration.js +0 -1
  127. package/dist/integrations/base/Integration.js +0 -1
  128. package/dist/integrations/base/README.md +1 -1
  129. package/dist/integrations/base/index.js +0 -1
  130. package/dist/integrations/base/registry.js +0 -1
  131. package/dist/integrations/base/types.js +0 -1
  132. package/dist/integrations/enforcement-gate.js +5 -5
  133. package/dist/integrations/governance/governance-client.js +0 -1
  134. package/dist/integrations/governance/index.js +11 -19
  135. package/dist/integrations/governance/types.js +0 -1
  136. package/dist/integrations/grok/grok-cli.js +20 -6
  137. package/dist/integrations/grok/hooks/pre-tool-use.js +3 -3
  138. package/dist/integrations/grok/plugin/0xray/.mcp.json +16 -4
  139. package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  140. package/dist/integrations/hermes-agent/__init__.py +29 -14
  141. package/dist/integrations/hermes-agent/bridge.mjs +76 -4
  142. package/dist/integrations/hermes-agent/schemas.py +49 -0
  143. package/dist/integrations/hermes-agent/test_plugin.py +7 -7
  144. package/dist/integrations/hermes-agent/tools.py +107 -3
  145. package/dist/integrations/openclaw/README.md +6 -6
  146. package/dist/integrations/openclaw/api-server.js +0 -1
  147. package/dist/integrations/openclaw/client.js +0 -1
  148. package/dist/integrations/openclaw/config.js +1 -2
  149. package/dist/integrations/openclaw/hooks/{strray-hooks.js → xray-hooks.js} +0 -1
  150. package/dist/integrations/openclaw/index.js +2 -3
  151. package/dist/integrations/openclaw/types.js +3 -4
  152. package/dist/integrations/plugins/index.js +0 -1
  153. package/dist/integrations/plugins/plugin-integration.js +1 -2
  154. package/dist/integrations/plugins/plugin-registry.js +1 -2
  155. package/dist/mcps/agent-resolver.js +0 -1
  156. package/dist/mcps/architect-tools.server.js +121 -186
  157. package/dist/mcps/auto-format.server.js +57 -75
  158. package/dist/mcps/boot-orchestrator.server.js +68 -86
  159. package/dist/mcps/config/config-loader.js +46 -9
  160. package/dist/mcps/config/plugin-server-registry.js +0 -1
  161. package/dist/mcps/enforcer-tools.server.js +208 -274
  162. package/dist/mcps/estimation.server.js +65 -108
  163. package/dist/mcps/framework-compliance-audit.server.js +53 -82
  164. package/dist/mcps/framework-help.server.js +73 -90
  165. package/dist/mcps/governance.server.js +104 -152
  166. package/dist/mcps/knowledge-skills/api-design.server.js +35 -66
  167. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +35 -66
  168. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +125 -165
  169. package/dist/mcps/knowledge-skills/code-analyzer.server.js +211 -238
  170. package/dist/mcps/knowledge-skills/code-review.server.js +109 -143
  171. package/dist/mcps/knowledge-skills/content-creator.server.js +205 -227
  172. package/dist/mcps/knowledge-skills/database-design.server.js +117 -151
  173. package/dist/mcps/knowledge-skills/devops-deployment.server.js +125 -158
  174. package/dist/mcps/knowledge-skills/git-workflow.server.js +36 -68
  175. package/dist/mcps/knowledge-skills/growth-strategist.server.js +303 -325
  176. package/dist/mcps/knowledge-skills/log-monitor.server.js +141 -161
  177. package/dist/mcps/knowledge-skills/mobile-development.server.js +172 -202
  178. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +124 -160
  179. package/dist/mcps/knowledge-skills/performance-optimization.server.js +89 -139
  180. package/dist/mcps/knowledge-skills/project-analysis.server.js +132 -219
  181. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +117 -151
  182. package/dist/mcps/knowledge-skills/security-audit.server.js +17 -144
  183. package/dist/mcps/knowledge-skills/seo-consultant.server.js +22 -214
  184. package/dist/mcps/knowledge-skills/session-management.server.js +15 -91
  185. package/dist/mcps/knowledge-skills/skill-invocation.server.js +83 -359
  186. package/dist/mcps/knowledge-skills/strategist.server.js +12 -57
  187. package/dist/mcps/knowledge-skills/tech-writer.server.js +18 -193
  188. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +20 -192
  189. package/dist/mcps/knowledge-skills/testing-strategy.server.js +19 -157
  190. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +24 -297
  191. package/dist/mcps/lint.server.js +51 -92
  192. package/dist/mcps/model-health-check.server.js +34 -61
  193. package/dist/mcps/orchestrator/aside-context.js +207 -0
  194. package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
  195. package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
  196. package/dist/mcps/orchestrator/handlers/task-handler.js +5 -0
  197. package/dist/mcps/orchestrator/index.js +5 -0
  198. package/dist/mcps/orchestrator/server.js +65 -9
  199. package/dist/mcps/orchestrator.server.js +2 -1
  200. package/dist/mcps/performance-analysis.server.js +57 -88
  201. package/dist/mcps/processor-pipeline.server.js +70 -100
  202. package/dist/mcps/registry.json +1 -1
  203. package/dist/mcps/researcher.server.js +81 -154
  204. package/dist/mcps/security-scan.server.js +57 -71
  205. package/dist/mcps/shared/knowledge-skill-base.js +11 -4
  206. package/dist/mcps/state-manager.server.js +127 -155
  207. package/dist/metrics/agent-metrics.js +1 -1
  208. package/dist/monitoring/nudge-watchdog.js +0 -1
  209. package/dist/nucleus/default-plugins.js +13 -19
  210. package/dist/nucleus/index.js +0 -1
  211. package/dist/orchestrator/agent-spawn-governor.js +0 -1
  212. package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +2 -2
  213. package/dist/orchestrator/intelligent-commit-batcher.js +2 -11
  214. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +1 -2
  215. package/dist/orchestrator/orchestrator.js +8 -19
  216. package/dist/orchestrator/self-direction-activation.js +0 -1
  217. package/dist/orchestrator/universal-registry-bridge.js +1 -2
  218. package/dist/performance/performance-budget-enforcer.js +0 -1
  219. package/dist/performance/performance-regression-tester.js +0 -1
  220. package/dist/plugin/plugin-codex-context.js +87 -0
  221. package/dist/plugin/plugin-helpers.js +155 -0
  222. package/dist/plugin/plugin-logger.js +46 -0
  223. package/dist/plugin/plugin-modules.js +144 -0
  224. package/dist/plugin/plugin-quality-gate.js +88 -0
  225. package/dist/plugin/plugin-types.js +1 -0
  226. package/dist/plugin/xray-codex-injection.js +39 -558
  227. package/dist/postprocessor/PostProcessor.js +7 -13
  228. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  229. package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
  230. package/dist/postprocessor/integration.js +194 -0
  231. package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
  232. package/dist/postprocessor/metamorphosis/index.js +1 -0
  233. package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
  234. package/dist/postprocessor/services/RegressionAnalysisService.js +2 -3
  235. package/dist/postprocessor/triggers/APITrigger.js +0 -1
  236. package/dist/postprocessor/triggers/GitHookTrigger.js +4 -4
  237. package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
  238. package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
  239. package/dist/processors/implementations/async-pattern-processor.js +0 -1
  240. package/dist/processors/implementations/console-log-guard-processor.js +0 -1
  241. package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
  242. package/dist/processors/implementations/inference-improvement-processor.js +2 -10
  243. package/dist/processors/implementations/log-protection-processor.js +0 -1
  244. package/dist/processors/implementations/nudge-processor.js +0 -1
  245. package/dist/processors/implementations/performance-budget-processor.js +0 -1
  246. package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
  247. package/dist/processors/implementations/publish-preflight-processor.js +4 -13
  248. package/dist/processors/implementations/session-summary-processor.js +8 -16
  249. package/dist/processors/implementations/spawn-governance-processor.js +0 -1
  250. package/dist/processors/implementations/storytelling-trigger-processor.js +3 -29
  251. package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
  252. package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
  253. package/dist/processors/implementations/version-compliance-processor.js +0 -1
  254. package/dist/processors/processor-interfaces.js +0 -1
  255. package/dist/processors/processor-types.js +0 -1
  256. package/dist/public/about.html +6 -6
  257. package/dist/public/enterprise.html +1 -1
  258. package/dist/public/features.html +2 -2
  259. package/dist/public/index.html +4 -4
  260. package/dist/reporting/report-formatter.js +1 -1
  261. package/dist/scripts/activate-kernel-pipeline.js +2 -2
  262. package/dist/scripts/integration.js +0 -1
  263. package/dist/scripts/pre-command +1 -1
  264. package/dist/security/comprehensive-security-audit.js +0 -1
  265. package/dist/security/security-agent-coordinator.js +0 -1
  266. package/dist/security/security-auditor.js +0 -1
  267. package/dist/security/security-hardener.js +0 -1
  268. package/dist/security/security-hardening-system.js +0 -1
  269. package/dist/security/security-headers.js +0 -1
  270. package/dist/security/security-orchestration-layer.js +0 -1
  271. package/dist/services/inference-tuner.js +1 -2
  272. package/dist/session/session-cleanup-manager.js +0 -1
  273. package/dist/session/session-monitor.js +0 -1
  274. package/dist/session/session-state-manager.js +0 -1
  275. package/dist/skills/api-design/SKILL.md +1 -1
  276. package/dist/skills/architect-tools/SKILL.md +1 -1
  277. package/dist/skills/architecture-patterns/SKILL.md +1 -1
  278. package/dist/skills/auto-format/SKILL.md +1 -1
  279. package/dist/skills/boot-orchestrator/SKILL.md +1 -1
  280. package/dist/skills/bug-triage/SKILL.md +1 -1
  281. package/dist/skills/code-analyzer/SKILL.md +1 -1
  282. package/dist/skills/code-review/SKILL.md +1 -1
  283. package/dist/skills/enforcer/SKILL.md +1 -1
  284. package/dist/skills/framework-compliance-audit/SKILL.md +1 -1
  285. package/dist/skills/git-workflow/SKILL.md +1 -1
  286. package/dist/skills/hermes-agent/SKILL.md +2 -2
  287. package/dist/skills/inference-improve/SKILL.md +1 -1
  288. package/dist/skills/lint/SKILL.md +1 -1
  289. package/dist/skills/log-monitor/SKILL.md +1 -1
  290. package/dist/skills/model-health-check/SKILL.md +1 -1
  291. package/dist/skills/multimodal-looker/SKILL.md +1 -1
  292. package/dist/skills/orchestrator/SKILL.md +1 -1
  293. package/dist/skills/performance-analysis/SKILL.md +1 -1
  294. package/dist/skills/performance-optimization/SKILL.md +1 -1
  295. package/dist/skills/processor-pipeline/SKILL.md +1 -1
  296. package/dist/skills/project-analysis/SKILL.md +1 -1
  297. package/dist/skills/refactoring-strategies/SKILL.md +1 -1
  298. package/dist/skills/registry.json +1 -1
  299. package/dist/skills/researcher/SKILL.md +1 -1
  300. package/dist/skills/security-audit/SKILL.md +1 -1
  301. package/dist/skills/security-scan/SKILL.md +1 -1
  302. package/dist/skills/session-management/SKILL.md +1 -1
  303. package/dist/skills/state-manager/SKILL.md +1 -1
  304. package/dist/skills/storyteller/SKILL.md +1 -1
  305. package/dist/skills/testing-best-practices/SKILL.md +1 -1
  306. package/dist/skills/testing-strategy/SKILL.md +1 -1
  307. package/dist/skills/ui-ux-design/SKILL.md +1 -1
  308. package/dist/skills/xray-orchestrator/index.js +0 -1
  309. package/dist/state/index.js +0 -1
  310. package/dist/state/state-manager.js +1 -2
  311. package/dist/utils/codex-parser.js +0 -1
  312. package/dist/utils/import-resolver.js +1 -1
  313. package/dist/utils/language-detector.js +0 -1
  314. package/dist/utils/path-resolver.js +2 -2
  315. package/dist/utils/shutdown-handler.js +0 -1
  316. package/dist/validation/agent-config-validator.js +280 -0
  317. package/dist/validation/orchestration-flow-validator.js +606 -0
  318. package/package.json +10 -3
  319. package/scripts/hooks/pre-command +1 -1
  320. package/scripts/hooks/run-hook.js +2 -2
  321. package/scripts/node/auto-reflection-generator.mjs +30 -36
  322. package/scripts/node/govern-reflection.mjs +1 -1
  323. package/scripts/node/postinstall.cjs +37 -2
  324. package/scripts/node/release.mjs +2 -2
  325. package/scripts/node/setup-xai-oauth.mjs +244 -0
  326. package/scripts/node/setup.cjs +28 -0
  327. package/scripts/node/universal-version-manager.js +8 -8
  328. package/scripts/node/version-manager.mjs +1 -1
  329. package/src/integrations/grok/plugin/0xray/.mcp.json +16 -4
  330. package/src/integrations/grok/plugin/0xray/hooks/hooks.json +2 -2
  331. package/src/mcps/agent-resolver.ts +0 -1
  332. package/src/mcps/architect-tools.server.ts +130 -212
  333. package/src/mcps/auto-format.server.ts +75 -104
  334. package/src/mcps/boot-orchestrator.server.ts +72 -97
  335. package/src/mcps/config/__tests__/config-loader.test.ts +33 -37
  336. package/src/mcps/config/config-loader.ts +57 -11
  337. package/src/mcps/config/plugin-server-registry.ts +0 -1
  338. package/src/mcps/enforcer-tools.server.ts +218 -295
  339. package/src/mcps/estimation.server.ts +64 -123
  340. package/src/mcps/framework-compliance-audit.server.ts +54 -96
  341. package/src/mcps/framework-help.server.ts +76 -97
  342. package/src/mcps/governance.server.ts +104 -164
  343. package/src/mcps/knowledge-skills/api-design.server.ts +35 -73
  344. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +34 -73
  345. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +149 -194
  346. package/src/mcps/knowledge-skills/code-analyzer.server.ts +223 -255
  347. package/src/mcps/knowledge-skills/code-review.server.ts +116 -158
  348. package/src/mcps/knowledge-skills/content-creator.server.ts +221 -248
  349. package/src/mcps/knowledge-skills/database-design.server.ts +120 -161
  350. package/src/mcps/knowledge-skills/devops-deployment.server.ts +128 -168
  351. package/src/mcps/knowledge-skills/git-workflow.server.ts +34 -78
  352. package/src/mcps/knowledge-skills/growth-strategist.server.ts +324 -362
  353. package/src/mcps/knowledge-skills/log-monitor.server.ts +70 -97
  354. package/src/mcps/knowledge-skills/mobile-development.server.ts +18 -58
  355. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +15 -61
  356. package/src/mcps/knowledge-skills/performance-optimization.server.ts +14 -75
  357. package/src/mcps/knowledge-skills/project-analysis.server.ts +14 -121
  358. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +15 -61
  359. package/src/mcps/knowledge-skills/security-audit.server.ts +20 -158
  360. package/src/mcps/knowledge-skills/seo-consultant.server.ts +25 -228
  361. package/src/mcps/knowledge-skills/session-management.server.ts +19 -107
  362. package/src/mcps/knowledge-skills/skill-invocation.server.ts +89 -380
  363. package/src/mcps/knowledge-skills/strategist.server.ts +15 -65
  364. package/src/mcps/knowledge-skills/tech-writer.server.ts +21 -206
  365. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +23 -205
  366. package/src/mcps/knowledge-skills/testing-strategy.server.ts +22 -166
  367. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +27 -343
  368. package/src/mcps/lint.server.ts +53 -106
  369. package/src/mcps/model-health-check.server.ts +35 -71
  370. package/src/mcps/orchestrator/aside-context.ts +245 -0
  371. package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
  372. package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
  373. package/src/mcps/orchestrator/handlers/task-handler.ts +8 -1
  374. package/src/mcps/orchestrator/index.ts +29 -0
  375. package/src/mcps/orchestrator/server.ts +81 -25
  376. package/src/mcps/orchestrator/types.ts +37 -0
  377. package/src/mcps/orchestrator.server.ts +2 -1
  378. package/src/mcps/performance-analysis.server.ts +60 -103
  379. package/src/mcps/processor-pipeline.server.ts +72 -109
  380. package/src/mcps/registry.json +1 -1
  381. package/src/mcps/researcher.server.ts +88 -176
  382. package/src/mcps/security-scan.server.ts +58 -77
  383. package/src/mcps/shared/knowledge-skill-base.ts +12 -4
  384. package/src/mcps/state-manager.server.ts +132 -172
  385. package/src/opencode/codex.codex +1 -1
  386. package/src/opencode/commands/auto-format.md +3 -3
  387. package/src/opencode/commands/auto-summary-capture.md +2 -2
  388. package/src/opencode/commands/dependency-audit.md +3 -3
  389. package/src/opencode/commands/enforcer-daily-scan.md +3 -3
  390. package/src/opencode/commands/framework-compliance-audit.md +4 -4
  391. package/src/opencode/commands/interactive-validator.md +2 -2
  392. package/src/opencode/commands/job-summary-logger.md +2 -2
  393. package/src/opencode/commands/mode-switch.md +1 -1
  394. package/src/opencode/commands/model-health-check.md +2 -2
  395. package/src/opencode/commands/performance-analysis.md +2 -2
  396. package/src/opencode/commands/pre-commit-introspection.md +3 -3
  397. package/src/opencode/commands/security-scan.md +3 -3
  398. package/src/opencode/commands/sisyphus-validation.md +3 -3
  399. package/src/opencode/commands/summary-logger.md +6 -6
  400. package/src/opencode/enforcer-config.json +2 -2
  401. package/src/skills/api-design/SKILL.md +1 -1
  402. package/src/skills/architect-tools/SKILL.md +1 -1
  403. package/src/skills/architecture-patterns/SKILL.md +1 -1
  404. package/src/skills/auto-format/SKILL.md +1 -1
  405. package/src/skills/boot-orchestrator/SKILL.md +1 -1
  406. package/src/skills/bug-triage/SKILL.md +1 -1
  407. package/src/skills/code-analyzer/SKILL.md +1 -1
  408. package/src/skills/code-review/SKILL.md +1 -1
  409. package/src/skills/enforcer/SKILL.md +1 -1
  410. package/src/skills/framework-compliance-audit/SKILL.md +1 -1
  411. package/src/skills/git-workflow/SKILL.md +1 -1
  412. package/src/skills/hermes-agent/SKILL.md +2 -2
  413. package/src/skills/inference-improve/SKILL.md +1 -1
  414. package/src/skills/lint/SKILL.md +1 -1
  415. package/src/skills/log-monitor/SKILL.md +1 -1
  416. package/src/skills/model-health-check/SKILL.md +1 -1
  417. package/src/skills/multimodal-looker/SKILL.md +1 -1
  418. package/src/skills/orchestrator/SKILL.md +1 -1
  419. package/src/skills/performance-analysis/SKILL.md +1 -1
  420. package/src/skills/performance-optimization/SKILL.md +1 -1
  421. package/src/skills/processor-pipeline/SKILL.md +1 -1
  422. package/src/skills/project-analysis/SKILL.md +1 -1
  423. package/src/skills/refactoring-strategies/SKILL.md +1 -1
  424. package/src/skills/registry.json +1 -1
  425. package/src/skills/researcher/SKILL.md +1 -1
  426. package/src/skills/security-audit/SKILL.md +1 -1
  427. package/src/skills/security-scan/SKILL.md +1 -1
  428. package/src/skills/session-management/SKILL.md +1 -1
  429. package/src/skills/state-manager/SKILL.md +1 -1
  430. package/src/skills/storyteller/SKILL.md +1 -1
  431. package/src/skills/testing-best-practices/SKILL.md +1 -1
  432. package/src/skills/testing-strategy/SKILL.md +1 -1
  433. package/src/skills/ui-ux-design/SKILL.md +1 -1
  434. package/src/skills/xray-orchestrator/index.ts +0 -1
  435. package/xray/agents_template.md +46 -0
  436. package/xray/codex.json +598 -0
  437. 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: "1.22.67",
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,20 +419,10 @@ ${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
478
- if (import.meta.url === `file://${process.argv[1]}`) {
425
+ if (import.meta.url === `file://${fs.realpathSync(process.argv[1]!)}`) {
479
426
  const server = new XrayLintServer();
480
427
  server.run().catch((error) => frameworkLogger.log("mcps/lint", "run", "error", { error: String(error) }));
481
428
  }
@@ -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: "1.22.67",
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
- if (import.meta.url === `file://${process.argv[1]}`) {
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
+ }
@@ -6,6 +6,7 @@
6
6
 
7
7
  import { frameworkLogger } from '../../../core/framework-logger.js';
8
8
  import { getExecutionPlanner } from '../execution/execution-planner.js';
9
+ import { addObservations, extractComplexityObservations } from '../aside-context.js';
9
10
  import type { OrchestrationTask, ComplexityAnalysis } from '../types.js';
10
11
 
11
12
  /**
@@ -18,9 +19,10 @@ export class ComplexityHandler {
18
19
  /**
19
20
  * Handle analyze-complexity request
20
21
  */
21
- async handleAnalyzeComplexity(args: {
22
- tasks: OrchestrationTask[];
23
- }): Promise<{ content: Array<{ type: string; text: string }> }> {
22
+ async handleAnalyzeComplexity(
23
+ args: { tasks: OrchestrationTask[] },
24
+ asideId?: string,
25
+ ): Promise<{ content: Array<{ type: string; text: string }> }> {
24
26
  const { tasks = [] } = args;
25
27
 
26
28
  await frameworkLogger.log(
@@ -34,6 +36,10 @@ export class ComplexityHandler {
34
36
  const analysis = await this.planner.analyzeTaskComplexity(tasks);
35
37
  const recommendations = this.generateRecommendations(analysis);
36
38
 
39
+ if (asideId) {
40
+ addObservations(asideId, extractComplexityObservations(analysis));
41
+ }
42
+
37
43
  return {
38
44
  content: [
39
45
  {
@@ -18,6 +18,8 @@ interface HistoryItem {
18
18
  interface StatusHandlerDeps {
19
19
  activeTasks: Map<string, unknown>;
20
20
  taskHistory: HistoryItem[];
21
+ asideCount?: number;
22
+ asideIds?: string[];
21
23
  }
22
24
 
23
25
  /**
@@ -68,7 +70,15 @@ export class StatusHandler {
68
70
  status = this.getOverallStatus(deps);
69
71
  }
70
72
 
71
- const response = this.formatStatusResponse(status, detailed);
73
+ let response = this.formatStatusResponse(status, detailed);
74
+
75
+ if (detailed && deps.asideCount !== undefined) {
76
+ response += `\n\n**Active Aside Contexts:**`;
77
+ response += `\n• Count: ${deps.asideCount}`;
78
+ if (deps.asideIds && deps.asideIds.length > 0) {
79
+ response += `\n• IDs: ${deps.asideIds.join(', ')}`;
80
+ }
81
+ }
72
82
 
73
83
  return { content: [{ type: 'text', text: response }] };
74
84
  } catch (error) {
@@ -7,11 +7,13 @@
7
7
  import { frameworkLogger } from '../../../core/framework-logger.js';
8
8
  import { getExecutionPlanner } from '../execution/execution-planner.js';
9
9
  import { mcpClientManager } from '../../../mcps/mcp-client.js';
10
- import type { OrchestrationResult, OrchestrationTask, TaskExecutionResult } from '../types.js';
10
+ import { addObservations, extractOrchestrationObservations } from '../aside-context.js';
11
+ import type { OrchestrationResult, OrchestrationTask } from '../types.js';
11
12
 
12
13
  export interface TaskHandlerDeps {
13
14
  taskHistory: OrchestrationHistoryItem[];
14
15
  activeTasks: Map<string, unknown>;
16
+ asideId?: string;
15
17
  }
16
18
 
17
19
  interface OrchestrationHistoryItem {
@@ -88,6 +90,11 @@ export class TaskHandler {
88
90
  orchestrationResult.agentOutputs = results.agentOutputs;
89
91
  }
90
92
 
93
+ // Push observations into aside context if active
94
+ if (deps.asideId) {
95
+ addObservations(deps.asideId, extractOrchestrationObservations(orchestrationResult));
96
+ }
97
+
91
98
  // Store in history
92
99
  deps.taskHistory.push({
93
100
  sessionId,
@@ -0,0 +1,29 @@
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 {
6
+ spawnAside,
7
+ closeAside,
8
+ closeAllAsides,
9
+ addObservations,
10
+ getActiveAsideCount,
11
+ getActiveAsideIds,
12
+ getAsideState,
13
+ resetAsideContext,
14
+ extractGovernanceObservations,
15
+ extractOrchestrationObservations,
16
+ extractComplexityObservations,
17
+ } from './aside-context.js';
18
+ export type {
19
+ AsideContextOptions,
20
+ AsideObservation,
21
+ AsideResult,
22
+ ActiveAside,
23
+ OrchestrationTask,
24
+ OrchestrationResult,
25
+ OrchestrationStatus,
26
+ ComplexityAnalysis,
27
+ TaskExecutionResult,
28
+ ExecutionPlan,
29
+ } from './types.js';