0xray 3.1.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/.opencode/codex.codex +1 -1
  2. package/.opencode/commands/auto-format.md +3 -3
  3. package/.opencode/commands/auto-summary-capture.md +2 -2
  4. package/.opencode/commands/enforcer-daily-scan.md +3 -3
  5. package/.opencode/commands/framework-compliance-audit.md +4 -4
  6. package/.opencode/commands/interactive-validator.md +2 -2
  7. package/.opencode/commands/job-summary-logger.md +2 -2
  8. package/.opencode/commands/mode-switch.md +1 -1
  9. package/.opencode/commands/model-health-check.md +2 -2
  10. package/.opencode/commands/performance-analysis.md +2 -2
  11. package/.opencode/commands/pre-commit-introspection.md +3 -3
  12. package/.opencode/commands/security-scan.md +3 -3
  13. package/.opencode/commands/sisyphus-validation.md +3 -3
  14. package/.opencode/commands/summary-logger.md +2 -2
  15. package/AGENTS.md +3 -13
  16. package/README.md +3 -3
  17. package/dist/AGENTS.md +3 -13
  18. package/dist/CHANGELOG.md +55 -0
  19. package/dist/README.md +3 -3
  20. package/dist/analytics/consent-manager.js +0 -1
  21. package/dist/analytics/emerging-pattern-detector.js +0 -1
  22. package/dist/analytics/pattern-learning-engine.js +0 -1
  23. package/dist/analytics/pattern-performance-tracker.js +0 -1
  24. package/dist/analytics/predictive-analytics.js +0 -1
  25. package/dist/analytics/prompt-pattern-analyzer.js +0 -1
  26. package/dist/analytics/routing-performance-analyzer.js +0 -1
  27. package/dist/analytics/routing-refiner.js +0 -1
  28. package/dist/analytics/simple-pattern-analyzer.js +0 -1
  29. package/dist/cli/commands/archive-logs.js +0 -1
  30. package/dist/cli/commands/opencode-install.js +13 -0
  31. package/dist/cli/commands/plugin-commands.js +0 -1
  32. package/dist/cli/commands/status.js +11 -13
  33. package/dist/cli/index.js +2 -7
  34. package/dist/core/activity-logger.js +0 -1
  35. package/dist/core/adaptive-kernel.js +0 -1
  36. package/dist/core/boot-orchestrator.js +2 -12
  37. package/dist/core/bridge.mjs +0 -1
  38. package/dist/core/codex-formatter.js +0 -1
  39. package/dist/core/codex-injector.js +0 -1
  40. package/dist/core/config-loader.js +36 -28
  41. package/dist/core/context-loader.js +0 -1
  42. package/dist/core/context-validator.js +0 -1
  43. package/dist/core/features-config.js +40 -1
  44. package/dist/core/kernel-patterns.js +0 -1
  45. package/dist/core/model-router.js +23 -64
  46. package/dist/core/system-prompt-generator.js +0 -1
  47. package/dist/delegation/agent-delegator.js +0 -1
  48. package/dist/delegation/agent-expertise.js +0 -1
  49. package/dist/delegation/analytics/index.js +0 -1
  50. package/dist/delegation/analytics/learning-engine.js +0 -1
  51. package/dist/delegation/analytics/outcome-tracker.js +0 -1
  52. package/dist/delegation/analytics/routing-analytics.js +0 -1
  53. package/dist/delegation/ast-code-parser.js +0 -1
  54. package/dist/delegation/complexity-analyzer.js +0 -1
  55. package/dist/delegation/dependency-graph-builder.js +0 -1
  56. package/dist/delegation/index.js +0 -1
  57. package/dist/delegation/metrics-aggregator.js +0 -1
  58. package/dist/delegation/session-coordinator.js +0 -1
  59. package/dist/delegation/strategy-selector.js +0 -1
  60. package/dist/delegation/voting-coordinator.js +0 -1
  61. package/dist/delegation/voting-types.js +0 -1
  62. package/dist/delegation/weighted-voting-aggregator.js +0 -1
  63. package/dist/enforcement/core/index.js +0 -1
  64. package/dist/enforcement/core/rule-executor.js +0 -1
  65. package/dist/enforcement/core/rule-hierarchy.js +0 -1
  66. package/dist/enforcement/core/rule-registry.js +0 -1
  67. package/dist/enforcement/core/violation-fixer.js +0 -1
  68. package/dist/enforcement/index.js +0 -1
  69. package/dist/enforcement/loaders/agent-triage-loader.js +0 -1
  70. package/dist/enforcement/loaders/agents-md-validation-loader.js +0 -1
  71. package/dist/enforcement/loaders/base-loader.js +0 -1
  72. package/dist/enforcement/loaders/codex-loader.js +0 -1
  73. package/dist/enforcement/loaders/index.js +0 -1
  74. package/dist/enforcement/loaders/loader-orchestrator.js +0 -1
  75. package/dist/enforcement/loaders/processor-loader.js +0 -1
  76. package/dist/enforcement/types.js +0 -1
  77. package/dist/enforcement/validators/architecture-validators.js +0 -1
  78. package/dist/enforcement/validators/base-validator.js +0 -1
  79. package/dist/enforcement/validators/code-quality-validators.js +0 -1
  80. package/dist/enforcement/validators/index.js +0 -1
  81. package/dist/enforcement/validators/security-validators.js +0 -1
  82. package/dist/enforcement/validators/testing-validators.js +0 -1
  83. package/dist/enforcement/validators/validator-registry.js +0 -1
  84. package/dist/governance/codex-policy.service.js +0 -1
  85. package/dist/inference/inference-agent-invoker.js +67 -0
  86. package/dist/inference/inference-applier.js +178 -0
  87. package/dist/inference/inference-cycle.js +51 -827
  88. package/dist/inference/inference-proposal-generator.js +149 -0
  89. package/dist/infrastructure/iac-validator.js +465 -0
  90. package/dist/infrastructure/schemas/cloud-schemas.js +488 -0
  91. package/dist/integrations/base/ExampleIntegration.js +0 -1
  92. package/dist/integrations/base/Integration.js +0 -1
  93. package/dist/integrations/base/index.js +0 -1
  94. package/dist/integrations/base/registry.js +0 -1
  95. package/dist/integrations/base/types.js +0 -1
  96. package/dist/integrations/enforcement-gate.js +3 -3
  97. package/dist/integrations/governance/governance-client.js +0 -1
  98. package/dist/integrations/governance/index.js +11 -19
  99. package/dist/integrations/governance/types.js +0 -1
  100. package/dist/integrations/hermes-agent/__init__.py +4 -0
  101. package/dist/integrations/hermes-agent/bridge.mjs +37 -0
  102. package/dist/integrations/openclaw/api-server.js +0 -1
  103. package/dist/integrations/openclaw/client.js +0 -1
  104. package/dist/integrations/openclaw/config.js +0 -1
  105. package/dist/integrations/openclaw/hooks/xray-hooks.js +0 -1
  106. package/dist/integrations/openclaw/index.js +0 -1
  107. package/dist/integrations/openclaw/types.js +0 -1
  108. package/dist/integrations/plugins/index.js +0 -1
  109. package/dist/integrations/plugins/plugin-integration.js +0 -1
  110. package/dist/integrations/plugins/plugin-registry.js +0 -1
  111. package/dist/mcps/agent-resolver.js +0 -1
  112. package/dist/mcps/architect-tools.server.js +119 -185
  113. package/dist/mcps/auto-format.server.js +56 -74
  114. package/dist/mcps/boot-orchestrator.server.js +67 -85
  115. package/dist/mcps/config/config-loader.js +6 -0
  116. package/dist/mcps/config/plugin-server-registry.js +0 -1
  117. package/dist/mcps/enforcer-tools.server.js +207 -273
  118. package/dist/mcps/estimation.server.js +63 -107
  119. package/dist/mcps/framework-compliance-audit.server.js +52 -81
  120. package/dist/mcps/framework-help.server.js +71 -89
  121. package/dist/mcps/governance.server.js +97 -149
  122. package/dist/mcps/knowledge-skills/api-design.server.js +33 -65
  123. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +33 -65
  124. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +123 -163
  125. package/dist/mcps/knowledge-skills/code-analyzer.server.js +210 -237
  126. package/dist/mcps/knowledge-skills/code-review.server.js +108 -142
  127. package/dist/mcps/knowledge-skills/content-creator.server.js +203 -225
  128. package/dist/mcps/knowledge-skills/database-design.server.js +116 -150
  129. package/dist/mcps/knowledge-skills/devops-deployment.server.js +123 -157
  130. package/dist/mcps/knowledge-skills/git-workflow.server.js +34 -67
  131. package/dist/mcps/knowledge-skills/growth-strategist.server.js +301 -323
  132. package/dist/mcps/knowledge-skills/log-monitor.server.js +139 -159
  133. package/dist/mcps/knowledge-skills/mobile-development.server.js +170 -200
  134. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +122 -158
  135. package/dist/mcps/knowledge-skills/performance-optimization.server.js +88 -138
  136. package/dist/mcps/knowledge-skills/project-analysis.server.js +131 -218
  137. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +115 -150
  138. package/dist/mcps/knowledge-skills/security-audit.server.js +16 -143
  139. package/dist/mcps/knowledge-skills/seo-consultant.server.js +20 -213
  140. package/dist/mcps/knowledge-skills/session-management.server.js +13 -90
  141. package/dist/mcps/knowledge-skills/skill-invocation.server.js +43 -421
  142. package/dist/mcps/knowledge-skills/strategist.server.js +10 -55
  143. package/dist/mcps/knowledge-skills/tech-writer.server.js +16 -191
  144. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +18 -191
  145. package/dist/mcps/knowledge-skills/testing-strategy.server.js +18 -156
  146. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +22 -296
  147. package/dist/mcps/lint.server.js +50 -91
  148. package/dist/mcps/model-health-check.server.js +32 -60
  149. package/dist/mcps/orchestrator/aside-context.js +207 -0
  150. package/dist/mcps/orchestrator/config/agent-capabilities.js +30 -11
  151. package/dist/mcps/orchestrator/config/memory-routing-bridge.js +70 -0
  152. package/dist/mcps/orchestrator/execution/execution-planner.js +25 -7
  153. package/dist/mcps/orchestrator/handlers/complexity-handler.js +5 -1
  154. package/dist/mcps/orchestrator/handlers/status-handler.js +8 -1
  155. package/dist/mcps/orchestrator/handlers/task-handler.js +59 -1
  156. package/dist/mcps/orchestrator/index.js +5 -0
  157. package/dist/mcps/orchestrator/server.js +63 -8
  158. package/dist/mcps/performance-analysis.server.js +56 -87
  159. package/dist/mcps/processor-pipeline.server.js +68 -99
  160. package/dist/mcps/researcher.server.js +80 -153
  161. package/dist/mcps/security-scan.server.js +56 -70
  162. package/dist/mcps/shared/knowledge-skill-base.js +11 -4
  163. package/dist/mcps/state-manager.server.js +124 -152
  164. package/dist/memory-routing/index.js +4 -0
  165. package/dist/memory-routing/null-provider.js +51 -0
  166. package/dist/memory-routing/provider-loader.js +91 -0
  167. package/dist/memory-routing/provider-registry.js +40 -0
  168. package/dist/memory-routing/types.js +7 -0
  169. package/dist/memory-routing/validate-config.js +32 -0
  170. package/dist/monitoring/nudge-watchdog.js +0 -1
  171. package/dist/nucleus/default-plugins.js +13 -19
  172. package/dist/nucleus/index.js +0 -1
  173. package/dist/nucleus/thin-dispatch.js +29 -1
  174. package/dist/orchestrator/agent-spawn-governor.js +0 -1
  175. package/dist/orchestrator/intelligent-commit-batcher.js +2 -10
  176. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +0 -1
  177. package/dist/orchestrator/orchestrator.js +8 -18
  178. package/dist/orchestrator/self-direction-activation.js +0 -1
  179. package/dist/orchestrator/universal-registry-bridge.js +0 -1
  180. package/dist/performance/performance-budget-enforcer.js +0 -1
  181. package/dist/performance/performance-regression-tester.js +0 -1
  182. package/dist/plugin/plugin-codex-context.js +87 -0
  183. package/dist/plugin/plugin-helpers.js +155 -0
  184. package/dist/plugin/plugin-logger.js +46 -0
  185. package/dist/plugin/plugin-modules.js +144 -0
  186. package/dist/plugin/plugin-quality-gate.js +88 -0
  187. package/dist/plugin/plugin-types.js +1 -0
  188. package/dist/plugin/xray-codex-injection.js +338 -0
  189. package/dist/postprocessor/PostProcessor.js +3 -9
  190. package/dist/postprocessor/analysis/CodeChangeAnalyzer.js +50 -0
  191. package/dist/postprocessor/config/ProcessorConfigLoader.js +16 -0
  192. package/dist/postprocessor/integration.js +194 -0
  193. package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +472 -0
  194. package/dist/postprocessor/metamorphosis/index.js +1 -0
  195. package/dist/postprocessor/redeploy/RetryHandler.js +118 -0
  196. package/dist/postprocessor/services/RegressionAnalysisService.js +0 -1
  197. package/dist/postprocessor/triggers/APITrigger.js +0 -1
  198. package/dist/postprocessor/triggers/WebhookTrigger.js +0 -1
  199. package/dist/processors/implementations/agents-md-validation-processor.js +0 -1
  200. package/dist/processors/implementations/async-pattern-processor.js +0 -1
  201. package/dist/processors/implementations/console-log-guard-processor.js +0 -1
  202. package/dist/processors/implementations/coverage-analysis-processor.js +0 -1
  203. package/dist/processors/implementations/inference-improvement-processor.js +2 -9
  204. package/dist/processors/implementations/log-protection-processor.js +0 -1
  205. package/dist/processors/implementations/nudge-processor.js +0 -1
  206. package/dist/processors/implementations/performance-budget-processor.js +0 -1
  207. package/dist/processors/implementations/postprocessor-chain-validator.js +0 -1
  208. package/dist/processors/implementations/publish-preflight-processor.js +4 -12
  209. package/dist/processors/implementations/session-summary-processor.js +8 -16
  210. package/dist/processors/implementations/spawn-governance-processor.js +0 -1
  211. package/dist/processors/implementations/storytelling-trigger-processor.js +3 -28
  212. package/dist/processors/implementations/test-auto-creation-processor.js +0 -1
  213. package/dist/processors/implementations/typescript-compilation-processor.js +0 -1
  214. package/dist/processors/implementations/version-compliance-processor.js +0 -1
  215. package/dist/processors/processor-interfaces.js +0 -1
  216. package/dist/processors/processor-types.js +0 -1
  217. package/dist/scripts/integration.js +0 -1
  218. package/dist/security/comprehensive-security-audit.js +0 -1
  219. package/dist/security/security-agent-coordinator.js +0 -1
  220. package/dist/security/security-auditor.js +0 -1
  221. package/dist/security/security-hardener.js +0 -1
  222. package/dist/security/security-hardening-system.js +0 -1
  223. package/dist/security/security-headers.js +0 -1
  224. package/dist/security/security-orchestration-layer.js +0 -1
  225. package/dist/services/inference-tuner.js +0 -1
  226. package/dist/session/session-cleanup-manager.js +0 -1
  227. package/dist/session/session-monitor.js +0 -1
  228. package/dist/session/session-state-manager.js +0 -1
  229. package/dist/skills/xray-orchestrator/index.js +0 -1
  230. package/dist/utils/codex-parser.js +0 -1
  231. package/dist/utils/language-detector.js +0 -1
  232. package/dist/utils/shutdown-handler.js +0 -1
  233. package/dist/validation/agent-config-validator.js +280 -0
  234. package/dist/validation/orchestration-flow-validator.js +606 -0
  235. package/package.json +1 -1
  236. package/scripts/node/release.mjs +2 -2
  237. package/scripts/node/setup.cjs +28 -0
  238. package/scripts/node/universal-version-manager.js +1 -1
  239. package/src/mcps/agent-resolver.ts +0 -1
  240. package/src/mcps/architect-tools.server.ts +129 -211
  241. package/src/mcps/auto-format.server.ts +74 -103
  242. package/src/mcps/boot-orchestrator.server.ts +71 -96
  243. package/src/mcps/config/__tests__/config-loader.test.ts +6 -6
  244. package/src/mcps/config/config-loader.ts +7 -0
  245. package/src/mcps/config/plugin-server-registry.ts +0 -1
  246. package/src/mcps/enforcer-tools.server.ts +217 -294
  247. package/src/mcps/estimation.server.ts +62 -122
  248. package/src/mcps/framework-compliance-audit.server.ts +53 -95
  249. package/src/mcps/framework-help.server.ts +74 -96
  250. package/src/mcps/governance.server.ts +97 -162
  251. package/src/mcps/knowledge-skills/api-design.server.ts +33 -72
  252. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +33 -72
  253. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +148 -193
  254. package/src/mcps/knowledge-skills/code-analyzer.server.ts +222 -254
  255. package/src/mcps/knowledge-skills/code-review.server.ts +115 -157
  256. package/src/mcps/knowledge-skills/content-creator.server.ts +219 -246
  257. package/src/mcps/knowledge-skills/database-design.server.ts +119 -160
  258. package/src/mcps/knowledge-skills/devops-deployment.server.ts +126 -167
  259. package/src/mcps/knowledge-skills/git-workflow.server.ts +32 -77
  260. package/src/mcps/knowledge-skills/growth-strategist.server.ts +322 -360
  261. package/src/mcps/knowledge-skills/log-monitor.server.ts +68 -95
  262. package/src/mcps/knowledge-skills/mobile-development.server.ts +16 -56
  263. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +13 -59
  264. package/src/mcps/knowledge-skills/performance-optimization.server.ts +13 -74
  265. package/src/mcps/knowledge-skills/project-analysis.server.ts +13 -120
  266. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +13 -60
  267. package/src/mcps/knowledge-skills/security-audit.server.ts +19 -157
  268. package/src/mcps/knowledge-skills/seo-consultant.server.ts +23 -227
  269. package/src/mcps/knowledge-skills/session-management.server.ts +17 -106
  270. package/src/mcps/knowledge-skills/skill-invocation.server.ts +45 -446
  271. package/src/mcps/knowledge-skills/strategist.server.ts +13 -63
  272. package/src/mcps/knowledge-skills/tech-writer.server.ts +19 -204
  273. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +21 -204
  274. package/src/mcps/knowledge-skills/testing-strategy.server.ts +21 -165
  275. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +25 -342
  276. package/src/mcps/lint.server.ts +52 -105
  277. package/src/mcps/model-health-check.server.ts +34 -70
  278. package/src/mcps/orchestrator/aside-context.ts +245 -0
  279. package/src/mcps/orchestrator/config/agent-capabilities.ts +49 -14
  280. package/src/mcps/orchestrator/config/memory-routing-bridge.ts +80 -0
  281. package/src/mcps/orchestrator/execution/execution-planner.ts +36 -9
  282. package/src/mcps/orchestrator/handlers/complexity-handler.ts +9 -3
  283. package/src/mcps/orchestrator/handlers/status-handler.ts +11 -1
  284. package/src/mcps/orchestrator/handlers/task-handler.ts +78 -2
  285. package/src/mcps/orchestrator/index.ts +29 -0
  286. package/src/mcps/orchestrator/server.ts +79 -24
  287. package/src/mcps/orchestrator/types.ts +50 -0
  288. package/src/mcps/performance-analysis.server.ts +59 -102
  289. package/src/mcps/processor-pipeline.server.ts +70 -108
  290. package/src/mcps/researcher.server.ts +87 -175
  291. package/src/mcps/security-scan.server.ts +57 -76
  292. package/src/mcps/shared/knowledge-skill-base.ts +12 -4
  293. package/src/mcps/state-manager.server.ts +129 -169
  294. package/src/opencode/codex.codex +1 -1
  295. package/src/opencode/commands/auto-format.md +3 -3
  296. package/src/opencode/commands/auto-summary-capture.md +2 -2
  297. package/src/opencode/commands/enforcer-daily-scan.md +3 -3
  298. package/src/opencode/commands/framework-compliance-audit.md +4 -4
  299. package/src/opencode/commands/interactive-validator.md +2 -2
  300. package/src/opencode/commands/job-summary-logger.md +2 -2
  301. package/src/opencode/commands/mode-switch.md +1 -1
  302. package/src/opencode/commands/model-health-check.md +2 -2
  303. package/src/opencode/commands/performance-analysis.md +2 -2
  304. package/src/opencode/commands/pre-commit-introspection.md +3 -3
  305. package/src/opencode/commands/security-scan.md +3 -3
  306. package/src/opencode/commands/sisyphus-validation.md +3 -3
  307. package/src/opencode/commands/summary-logger.md +2 -2
  308. package/src/skills/xray-orchestrator/index.ts +0 -1
  309. package/dist/nucleus/orchestrator.js +0 -479
@@ -7,7 +7,6 @@
7
7
  * Phase 4 refactoring: Extracted from RuleEnforcer.loadAgentsMdValidationRule()
8
8
  *
9
9
  * @module loaders/agents-md-validation-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";
@@ -8,7 +8,6 @@
8
8
  * from rule execution.
9
9
  *
10
10
  * @module loaders/base-loader
11
- * @version 1.0.0
12
11
  */
13
12
  import * as fs from "fs";
14
13
  import * as path from "path";
@@ -7,7 +7,6 @@
7
7
  * Phase 4 refactoring: Extracted from RuleEnforcer.loadCodexRules()
8
8
  *
9
9
  * @module loaders/codex-loader
10
- * @version 1.0.0
11
10
  */
12
11
  import { frameworkLogger } from "../../core/framework-logger.js";
13
12
  import { resolveCodexPath } from "../../core/config-paths.js";
@@ -7,7 +7,6 @@
7
7
  * Phase 4 refactoring: Extracted async rule loading from RuleEnforcer
8
8
  *
9
9
  * @module loaders
10
- * @version 1.0.0
11
10
  *
12
11
  * @example
13
12
  * ```typescript
@@ -7,7 +7,6 @@
7
7
  * Phase 4 refactoring: Extracted loader orchestration from RuleEnforcer
8
8
  *
9
9
  * @module loaders/loader-orchestrator
10
- * @version 1.0.0
11
10
  */
12
11
  import { frameworkLogger } from "../../core/framework-logger.js";
13
12
  import { CodexLoader } from "./codex-loader.js";
@@ -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
+ }