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
@@ -7,7 +7,6 @@
7
7
  * Phase 4 refactoring: Extracted from RuleEnforcer.loadProcessorRules()
8
8
  *
9
9
  * @module loaders/processor-loader
10
- * @version 1.0.0
11
10
  */
12
11
  import { frameworkLogger } from "../../core/framework-logger.js";
13
12
  import { BaseLoader } from "./base-loader.js";
@@ -5,7 +5,6 @@
5
5
  * Extracted from rule-enforcer.ts as part of Phase 1 refactoring.
6
6
  *
7
7
  * @module types
8
- * @version 1.0.0
9
8
  */
10
9
  /**
11
10
  * Type guard to check if an object is a valid RuleValidationResult.
@@ -5,7 +5,6 @@
5
5
  * Each validator encapsulates the validation logic for a specific architectural rule.
6
6
  *
7
7
  * @module validators/architecture-validators
8
- * @version 1.0.0
9
8
  */
10
9
  import { BaseValidator } from "./base-validator.js";
11
10
  /**
@@ -5,7 +5,6 @@
5
5
  * and enforces the IValidator interface contract.
6
6
  *
7
7
  * @module validators/base-validator
8
- * @version 1.0.0
9
8
  */
10
9
  /**
11
10
  * Abstract base class for all validators.
@@ -5,7 +5,6 @@
5
5
  * Each validator encapsulates the validation logic for a specific rule.
6
6
  *
7
7
  * @module validators/code-quality-validators
8
- * @version 1.0.0
9
8
  */
10
9
  import { BaseValidator } from "./base-validator.js";
11
10
  /**
@@ -5,7 +5,6 @@
5
5
  * Part of Phase 3 refactoring to extract validators from rule-enforcer.ts.
6
6
  *
7
7
  * @module validators
8
- * @version 1.0.0
9
8
  */
10
9
  // Base validator class
11
10
  export { BaseValidator } from "./base-validator.js";
@@ -5,7 +5,6 @@
5
5
  * These validators enforce security best practices and input validation requirements.
6
6
  *
7
7
  * @module validators/security-validators
8
- * @version 1.0.0
9
8
  */
10
9
  import { BaseValidator } from "./base-validator.js";
11
10
  /**
@@ -5,7 +5,6 @@
5
5
  * Each validator encapsulates the validation logic for a specific testing rule.
6
6
  *
7
7
  * @module validators/testing-validators
8
- * @version 1.0.0
9
8
  */
10
9
  import { BaseValidator } from "./base-validator.js";
11
10
  /**
@@ -5,7 +5,6 @@
5
5
  * and category filtering capabilities.
6
6
  *
7
7
  * @module validators/validator-registry
8
- * @version 1.0.0
9
8
  */
10
9
  import { NoDuplicateCodeValidator, ContextAnalysisIntegrationValidator, MemoryOptimizationValidator, DocumentationRequiredValidator, NoOverEngineeringValidator, CleanDebugLogsValidator, ConsoleLogUsageValidator, } from "./code-quality-validators.js";
11
10
  import { InputValidationValidator, SecurityByDesignValidator, } from "./security-validators.js";
@@ -26,7 +26,6 @@
26
26
  * - Make CodexLoader delegate its raw data load here, then re-export from governance.
27
27
  *
28
28
  * @module governance/codex-policy.service
29
- * @version 2.0.0-s02-real
30
29
  */
31
30
  import { frameworkLogger } from '../core/framework-logger.js';
32
31
  import { resolveCodexPath } from '../core/config-paths.js';
@@ -0,0 +1,67 @@
1
+ import { frameworkLogger } from "../core/framework-logger.js";
2
+ import { invokeViaOpencode as invokeOpencodeFromEngine } from "../execution/opencode-cli-invoker.js";
3
+ const MCP_TIMEOUT_MS = 8000;
4
+ export async function invokeAgent(agentName, prompt, projectRoot, agentInvoker) {
5
+ frameworkLogger.log("inference-cycle", "invoke-agent-internal", "info", {
6
+ agentName,
7
+ promptLength: prompt.length,
8
+ });
9
+ try {
10
+ const { mcpClientManager } = await import("../mcps/mcp-client.js");
11
+ const result = await Promise.race([
12
+ mcpClientManager.callServerTool("orchestrator", "orchestrate-task", {
13
+ description: prompt,
14
+ tasks: [{
15
+ id: `task-${Date.now()}`,
16
+ description: prompt,
17
+ type: agentName,
18
+ priority: "high",
19
+ }],
20
+ executionMode: "sequential",
21
+ }),
22
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Orchestrator MCP timed out after ${MCP_TIMEOUT_MS}ms`)), MCP_TIMEOUT_MS)),
23
+ ]);
24
+ const content = result.content;
25
+ let responseText = "";
26
+ if (content && Array.isArray(content)) {
27
+ responseText = content.map((c) => c.text ?? "").join("");
28
+ }
29
+ else {
30
+ responseText = JSON.stringify(result);
31
+ }
32
+ const isPureMcp = process.env.XRAY_FORCE_MCP_GOVERNANCE === 'true';
33
+ const hasRealContent = /PROPOSAL:\s*\d+/i.test(responseText) ||
34
+ /DECISION:\s*(approve|reject|abstain)/i.test(responseText) ||
35
+ /Agent Outputs \(real MCP responses\):/i.test(responseText);
36
+ if (hasRealContent || isPureMcp) {
37
+ if (isPureMcp && !hasRealContent) {
38
+ frameworkLogger.log("inference-cycle", "pure-mcp-orchestrator-response", "info", {
39
+ agentName,
40
+ responsePreview: responseText.substring(0, 300),
41
+ });
42
+ }
43
+ return responseText;
44
+ }
45
+ frameworkLogger.log("inference-cycle", "mcp-no-useful-content", "info", {
46
+ agentName,
47
+ responsePreview: responseText.substring(0, 200),
48
+ });
49
+ }
50
+ catch (mcpError) {
51
+ frameworkLogger.log("inference-cycle", "mcp-invocation-failed", "info", {
52
+ agentName,
53
+ error: String(mcpError),
54
+ });
55
+ }
56
+ if (agentInvoker) {
57
+ frameworkLogger.log("inference-cycle", "invoke-via-callback", "info", { agentName });
58
+ return agentInvoker(agentName, prompt);
59
+ }
60
+ if (process.env.XRAY_FORCE_MCP_GOVERNANCE === 'true') {
61
+ throw new Error(`[PURE MCP] Orchestrator returned no usable response for agent "${agentName}" and OpenCode fallback is disabled`);
62
+ }
63
+ return invokeViaOpencode(agentName, prompt, projectRoot);
64
+ }
65
+ export async function invokeViaOpencode(agentName, prompt, projectRoot) {
66
+ return invokeOpencodeFromEngine(agentName, prompt, projectRoot);
67
+ }
@@ -0,0 +1,178 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import { ProposalApplier } from "../execution/proposal-applier.js";
4
+ import { invokeAgent } from "./inference-agent-invoker.js";
5
+ import { frameworkLogger } from "../core/framework-logger.js";
6
+ function extractTargetFiles(evidence) {
7
+ const filePattern = /[a-zA-Z0-9/_-]+\.(ts|js|mjs|json|yml|yaml)/g;
8
+ const files = new Set();
9
+ for (const item of evidence) {
10
+ const matches = item.matchAll(filePattern);
11
+ for (const match of matches) {
12
+ const f = match[0];
13
+ if (f.startsWith("src/") || f.startsWith("dist/") || f.startsWith(".opencode/")) {
14
+ files.add(f);
15
+ }
16
+ }
17
+ }
18
+ return [...files];
19
+ }
20
+ async function researcherReview(p, prUrl, projectRoot, agentInvoker) {
21
+ const prompt = `You are a researcher agent reviewing a PR for proposal: "${p.title}".
22
+
23
+ PR URL: ${prUrl}
24
+
25
+ Proposal Type: ${p.type}
26
+ Description: ${p.description}
27
+ Evidence: ${p.evidence.slice(0, 5).join("; ")}
28
+
29
+ Your job: Review the actual codebase to verify this proposal makes sense. Search the code to confirm:
30
+ 1. Does the problem described actually exist in the codebase?
31
+ 2. Is the proposed solution appropriate?
32
+ 3. Are there any missed edge cases?
33
+
34
+ Respond with EXACTLY one of:
35
+ - GO (proposal is valid, approve)
36
+ - NO-GO (proposal is invalid, reject)
37
+ - MODIFY: <specific changes needed>`;
38
+ try {
39
+ const result = await invokeAgent("researcher", prompt, projectRoot, agentInvoker);
40
+ const output = result.toLowerCase();
41
+ if (output.includes("no-go"))
42
+ return "no-go";
43
+ if (output.includes("modify"))
44
+ return "modify";
45
+ return "go";
46
+ }
47
+ catch (err) {
48
+ frameworkLogger.log("inference-cycle", "researcher-review-failed", "warning", { error: String(err) });
49
+ return "go";
50
+ }
51
+ }
52
+ async function applyCodeChange(p, projectRoot, agentInvoker) {
53
+ const targetFiles = extractTargetFiles(p.evidence);
54
+ const prompt = [
55
+ `Apply approved inference proposal`,
56
+ ``,
57
+ `Type: ${p.type}`,
58
+ `Title: ${p.title}`,
59
+ `Description: ${p.description}`,
60
+ targetFiles.length > 0 ? `Target files: ${targetFiles.join(", ")}` : "No specific target files identified",
61
+ `Evidence: ${p.evidence.slice(0, 5).join("; ")}`,
62
+ `Confidence: ${(p.confidence * 100).toFixed(0)}%`,
63
+ ``,
64
+ `1. Read the relevant source files`,
65
+ `2. Apply the ${p.type} described above`,
66
+ `3. Make minimal, surgical changes`,
67
+ `4. If the change is unsafe or unclear, skip and explain`,
68
+ ].join("\n");
69
+ frameworkLogger.log("inference-cycle", "apply-invoking-agent", "info", {
70
+ proposalId: p.id,
71
+ proposalType: p.type,
72
+ targetFiles,
73
+ });
74
+ try {
75
+ let agentName = p.type === "refactor" ? "refactorer" : "code-reviewer";
76
+ if (process.env.XRAY_FORCE_MCP_GOVERNANCE === 'true') {
77
+ agentName = p.type === "refactor" ? "refactoring-strategies" : "code-review";
78
+ }
79
+ await invokeAgent(agentName, prompt, projectRoot, agentInvoker);
80
+ return true;
81
+ }
82
+ catch (err) {
83
+ frameworkLogger.log("inference-cycle", "apply-agent-failed", "warning", {
84
+ proposalId: p.id,
85
+ error: String(err),
86
+ });
87
+ return false;
88
+ }
89
+ }
90
+ async function applyGuard(p, projectRoot, agentInvoker) {
91
+ const prompt = [
92
+ `Add guard/validation for the following issue:`,
93
+ ``,
94
+ `Title: ${p.title}`,
95
+ `Description: ${p.description}`,
96
+ `Evidence: ${p.evidence.join("; ")}`,
97
+ `Confidence: ${(p.confidence * 100).toFixed(0)}%`,
98
+ ``,
99
+ `1. Read the relevant source files`,
100
+ `2. Add the missing guard, validation, or edge case handling`,
101
+ `3. If this is a codex rule, add the term to .xray/codex.json`,
102
+ `4. Make minimal, surgical changes`,
103
+ ].join("\n");
104
+ try {
105
+ const agentName = process.env.XRAY_FORCE_MCP_GOVERNANCE === 'true'
106
+ ? "code-review"
107
+ : "code-reviewer";
108
+ await invokeAgent(agentName, prompt, projectRoot, agentInvoker);
109
+ return true;
110
+ }
111
+ catch (err) {
112
+ frameworkLogger.log("inference-cycle", "apply-guard-failed", "warning", {
113
+ proposalId: p.id,
114
+ error: String(err),
115
+ });
116
+ const guardPath = path.join(projectRoot, "docs", "guards", `${p.title.replace(/[^a-z0-9]/gi, "-")}.md`);
117
+ fs.mkdirSync(path.dirname(guardPath), { recursive: true });
118
+ fs.writeFileSync(guardPath, `# Guard: ${p.title}\n\n${p.description}\n\n## Evidence\n${p.evidence.join("\n")}`);
119
+ return true;
120
+ }
121
+ }
122
+ async function applyAutomation(p, projectRoot, agentInvoker) {
123
+ const prompt = [
124
+ `Design automation for the following manual process:`,
125
+ ``,
126
+ `Title: ${p.title}`,
127
+ `Description: ${p.description}`,
128
+ `Evidence: ${p.evidence.join("; ")}`,
129
+ `Confidence: ${(p.confidence * 100).toFixed(0)}%`,
130
+ ``,
131
+ `1. Read the relevant source files`,
132
+ `2. Design the automation (script, processor, or config change)`,
133
+ `3. Implement it if straightforward, otherwise describe the design`,
134
+ ].join("\n");
135
+ try {
136
+ const agentName = process.env.XRAY_FORCE_MCP_GOVERNANCE === 'true'
137
+ ? "architecture-patterns"
138
+ : "architect";
139
+ await invokeAgent(agentName, prompt, projectRoot, agentInvoker);
140
+ return true;
141
+ }
142
+ catch (err) {
143
+ frameworkLogger.log("inference-cycle", "apply-automation-failed", "warning", {
144
+ proposalId: p.id,
145
+ error: String(err),
146
+ });
147
+ const automationPath = path.join(projectRoot, "docs", "automation-proposals.md");
148
+ const entry = `\n## ${p.title}\n\n${p.description}\n\n**Evidence:** ${p.evidence.join(", ")}\n`;
149
+ fs.mkdirSync(path.dirname(automationPath), { recursive: true });
150
+ fs.appendFileSync(automationPath, entry);
151
+ return true;
152
+ }
153
+ }
154
+ async function applyProposalWork(p, projectRoot, agentInvoker) {
155
+ if (p.type === "fix" || p.type === "refactor") {
156
+ return applyCodeChange(p, projectRoot, agentInvoker);
157
+ }
158
+ if (p.type === "guard") {
159
+ return applyGuard(p, projectRoot, agentInvoker);
160
+ }
161
+ if (p.type === "automate") {
162
+ return applyAutomation(p, projectRoot, agentInvoker);
163
+ }
164
+ return false;
165
+ }
166
+ export async function applyProposals(proposals, projectRoot, agentInvoker, options) {
167
+ const applier = new ProposalApplier(projectRoot, async (p) => applyProposalWork(p, projectRoot, agentInvoker), async (p, prUrl) => {
168
+ if (options.skipResearcherReview)
169
+ return "go";
170
+ return researcherReview(p, prUrl, projectRoot, agentInvoker);
171
+ });
172
+ const results = await applier.applyProposals(proposals);
173
+ for (const r of results) {
174
+ const p = proposals.find(pr => pr.id === r.proposalId);
175
+ if (p)
176
+ p.status = r.success ? "applied" : "failed";
177
+ }
178
+ }