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
@@ -1,53 +1,57 @@
1
1
  /**
2
- * Configuration Loader
2
+ * Configuration Loader (backward-compat shim)
3
3
  *
4
- * Loads and validates 0xRay-specific configuration from opencode.json
4
+ * Delegates to FeaturesConfigLoader as the single source of truth.
5
+ * Retained for backward compatibility -- all consumers of xrayConfigLoader
6
+ * continue to work without changes.
5
7
  *
6
- * @version 1.0.0
7
- * @since 2026-01-09
8
+ * @deprecated Use featuresConfigLoader from "./features-config.js" instead.
9
+ * Will be removed in v4.0.0.
8
10
  */
11
+ import { featuresConfigLoader } from "./features-config.js";
12
+ import { frameworkLogger } from "./framework-logger.js";
13
+ import { resolveConfigPath } from "./config-paths.js";
9
14
  import * as fs from "fs";
10
15
  import * as path from "path";
11
- import { frameworkLogger } from "./framework-logger.js";
12
- import { getConfigDir, resolveConfigPath } from "./config-paths.js";
13
16
  export class XrayConfigLoader {
14
17
  configPath;
15
18
  cachedConfig = null;
16
- cacheExpiry = 30000; // 30 seconds
19
+ cacheExpiry = 30000;
17
20
  lastLoadTime = 0;
18
21
  constructor(configPath) {
19
- this.configPath = configPath || resolveConfigPath("config.json") || path.join(getConfigDir(), "config.json");
22
+ this.configPath = configPath || resolveConfigPath("config.json") || path.join(process.cwd(), ".xray", "config.json");
20
23
  }
21
24
  /**
22
- * Load 0xRay configuration from the resolved config directory
25
+ * Load configuration -- delegates to FeaturesConfigLoader
26
+ * @deprecated Use featuresConfigLoader.getXrayConfig() instead.
23
27
  */
24
28
  loadConfig() {
25
29
  const now = Date.now();
26
- // Return cached config if still valid
27
30
  if (this.cachedConfig && now - this.lastLoadTime < this.cacheExpiry) {
28
31
  return this.cachedConfig;
29
32
  }
33
+ const primary = featuresConfigLoader.getXrayConfig();
30
34
  try {
31
35
  const configPath = path.resolve(process.cwd(), this.configPath);
32
- if (!fs.existsSync(configPath)) {
33
- return this.getDefaultConfig();
36
+ if (fs.existsSync(configPath)) {
37
+ const configData = JSON.parse(fs.readFileSync(configPath, "utf-8"));
38
+ if (configData.multi_agent_orchestration || configData.autonomous_reporting || configData.disabled_agents) {
39
+ frameworkLogger.log("config-loader", "deprecated-config-json", "warning", { message: "config.json contains overlapping keys. Migrate to features.json. See: https://0xray.ai/docs/config-migration" });
40
+ }
34
41
  }
35
- const configData = JSON.parse(fs.readFileSync(configPath, "utf-8"));
36
- const config = this.parseConfig(configData);
37
- this.cachedConfig = config;
38
- this.lastLoadTime = now;
39
- return config;
40
42
  }
41
- catch (error) {
42
- frameworkLogger.log("config-loader", "load-failed", "error", { error, message: "Failed to load 0xRay config" });
43
- return this.getDefaultConfig();
43
+ catch {
44
+ // config.json may not exist -- that's fine, features.json is SSOT
44
45
  }
46
+ this.cachedConfig = primary;
47
+ this.lastLoadTime = now;
48
+ return primary;
45
49
  }
46
50
  /**
47
51
  * Parse configuration data with validation
52
+ * @deprecated Use featuresConfigLoader.loadConfig() instead.
48
53
  */
49
54
  parseConfig(configData) {
50
- // Handle null/undefined config data
51
55
  if (!configData || typeof configData !== 'object') {
52
56
  return this.getDefaultConfig();
53
57
  }
@@ -62,6 +66,7 @@ export class XrayConfigLoader {
62
66
  }
63
67
  /**
64
68
  * Parse multi-agent orchestration configuration
69
+ * @deprecated Use featuresConfigLoader.loadConfig().multi_agent_orchestration instead.
65
70
  */
66
71
  parseMultiAgentConfig(config) {
67
72
  if (!config || typeof config !== 'object') {
@@ -80,6 +85,7 @@ export class XrayConfigLoader {
80
85
  }
81
86
  /**
82
87
  * Parse autonomous reporting configuration
88
+ * @deprecated Use featuresConfigLoader.loadConfig().autonomous_reporting instead.
83
89
  */
84
90
  parseAutonomousReportingConfig(config) {
85
91
  if (!config || typeof config !== 'object') {
@@ -87,9 +93,9 @@ export class XrayConfigLoader {
87
93
  }
88
94
  const cfg = config;
89
95
  return {
90
- enabled: typeof cfg.enabled === 'boolean' ? cfg.enabled : false,
91
- interval_minutes: Math.max(5, Math.min(1440, typeof cfg.interval_minutes === 'number' ? cfg.interval_minutes : 60)), // 5min to 24hrs
92
- auto_schedule: typeof cfg.auto_schedule === 'boolean' ? cfg.auto_schedule : false,
96
+ enabled: typeof cfg.enabled === 'boolean' ? cfg.enabled : true,
97
+ interval_minutes: Math.max(5, Math.min(1440, typeof cfg.interval_minutes === 'number' ? cfg.interval_minutes : 60)),
98
+ auto_schedule: typeof cfg.auto_schedule === 'boolean' ? cfg.auto_schedule : true,
93
99
  include_health_assessment: typeof cfg.include_health_assessment === 'boolean' ? cfg.include_health_assessment : true,
94
100
  include_agent_activities: typeof cfg.include_agent_activities === 'boolean' ? cfg.include_agent_activities : true,
95
101
  include_pipeline_operations: typeof cfg.include_pipeline_operations === 'boolean' ? cfg.include_pipeline_operations : true,
@@ -103,6 +109,7 @@ export class XrayConfigLoader {
103
109
  }
104
110
  /**
105
111
  * Get default configuration
112
+ * @deprecated Use featuresConfigLoader.getDefaultConfig() instead.
106
113
  */
107
114
  getDefaultConfig() {
108
115
  return {
@@ -116,9 +123,9 @@ export class XrayConfigLoader {
116
123
  session_persistence: true,
117
124
  },
118
125
  autonomous_reporting: {
119
- enabled: false, // Disabled by default for performance
126
+ enabled: true,
120
127
  interval_minutes: 60,
121
- auto_schedule: false,
128
+ auto_schedule: true,
122
129
  include_health_assessment: true,
123
130
  include_agent_activities: true,
124
131
  include_pipeline_operations: true,
@@ -132,19 +139,19 @@ export class XrayConfigLoader {
132
139
  }
133
140
  /**
134
141
  * Validate enum values
142
+ * @deprecated Internal implementation detail.
135
143
  */
136
144
  validateEnum(value, allowedValues, defaultValue) {
137
145
  return allowedValues.includes(value) ? value : defaultValue;
138
146
  }
139
147
  /**
140
148
  * Clear configuration cache
149
+ * @deprecated Use featuresConfigLoader.clearCache() instead.
141
150
  */
142
151
  clearCache() {
143
152
  this.cachedConfig = null;
144
153
  this.lastLoadTime = 0;
154
+ featuresConfigLoader.clearCache();
145
155
  }
146
156
  }
147
- // Export singleton instance
148
157
  export const xrayConfigLoader = new XrayConfigLoader();
149
- export { XrayConfigLoader as StringRayConfigLoader };
150
- export { xrayConfigLoader as strRayConfigLoader };
@@ -2,17 +2,15 @@
2
2
  * Config Path Resolver
3
3
  *
4
4
  * Centralizes all 0xRay config file path resolution.
5
- * Supports STRRAY_CONFIG_DIR env var for custom config roots,
6
- * making .opencode/ completely optional for environments like Hermes Agent.
5
+ * Supports XRAY_CONFIG_DIR env var for custom config roots.
7
6
  *
8
7
  * Resolution order (per file type):
9
- * 1. STRRAY_CONFIG_DIR/<relative_path> (if env var set)
8
+ * 1. XRAY_CONFIG_DIR/<relative_path> (if env var set)
10
9
  * 2. .xray/<relative_path> (preferred lightweight root)
11
- * 3. .opencode/xray/<relative_path> (legacy OpenCode root)
12
- * 4. null (callers fall back to built-in defaults)
10
+ * 3. null (callers fall back to built-in defaults)
13
11
  *
14
12
  * For state/data directories, uses:
15
- * 1. STRRAY_CONFIG_DIR/state (if env var set)
13
+ * 1. XRAY_CONFIG_DIR/state (if env var set)
16
14
  * 2. .xray/state
17
15
  * 3. .opencode/state (legacy)
18
16
  * 4. .xray/state (default — always writable)
@@ -20,7 +18,7 @@
20
18
  import { existsSync } from "fs";
21
19
  import { join, resolve } from "path";
22
20
  /** Environment variable name for custom config root */
23
- export const STRRAY_CONFIG_DIR_ENV = "STRRAY_CONFIG_DIR";
21
+ export const XRAY_CONFIG_DIR_ENV = "XRAY_CONFIG_DIR";
24
22
  /** Resolved config directories, cached per projectRoot */
25
23
  const _resolvedConfigDirs = new Map();
26
24
  /**
@@ -28,11 +26,11 @@ const _resolvedConfigDirs = new Map();
28
26
  * Scans in priority order and caches the first one that exists (or the first default).
29
27
  */
30
28
  export function getConfigDir(projectRoot) {
31
- const root = projectRoot || process.cwd();
29
+ const root = resolveRoot(projectRoot);
32
30
  const cached = _resolvedConfigDirs.get(root);
33
31
  if (cached)
34
32
  return cached;
35
- const envDir = process.env[STRRAY_CONFIG_DIR_ENV];
33
+ const envDir = process.env[XRAY_CONFIG_DIR_ENV];
36
34
  // Priority candidates
37
35
  const candidates = [];
38
36
  if (envDir) {
@@ -41,7 +39,6 @@ export function getConfigDir(projectRoot) {
41
39
  candidates.push({ dir: resolved, source: "env" });
42
40
  }
43
41
  candidates.push({ dir: join(root, ".xray"), source: "dot-xray" });
44
- candidates.push({ dir: join(root, ".opencode", "xray"), source: "dot-opencode" });
45
42
  // Return the first that exists, or the highest-priority default
46
43
  for (const c of candidates) {
47
44
  if (existsSync(c.dir)) {
@@ -49,7 +46,7 @@ export function getConfigDir(projectRoot) {
49
46
  return c.dir;
50
47
  }
51
48
  }
52
- // Nothing exists — use highest priority default (env > .xray > .opencode)
49
+ // Nothing exists — use highest priority default (env > .xray)
53
50
  const defaultDir = candidates[0];
54
51
  _resolvedConfigDirs.set(root, defaultDir.dir);
55
52
  return defaultDir.dir;
@@ -62,14 +59,13 @@ export function getConfigDir(projectRoot) {
62
59
  * @param projectRoot - Optional project root override
63
60
  */
64
61
  export function resolveConfigPath(relativePath, projectRoot) {
65
- const root = projectRoot || process.cwd();
66
- const envDir = process.env[STRRAY_CONFIG_DIR_ENV];
62
+ const root = resolveRoot(projectRoot);
63
+ const envDir = process.env[XRAY_CONFIG_DIR_ENV];
67
64
  const candidates = [];
68
65
  if (envDir) {
69
66
  candidates.push(resolve(root, envDir, relativePath));
70
67
  }
71
68
  candidates.push(join(root, ".xray", relativePath));
72
- candidates.push(join(root, ".opencode", "xray", relativePath));
73
69
  for (const candidate of candidates) {
74
70
  if (existsSync(candidate)) {
75
71
  return candidate;
@@ -84,8 +80,8 @@ export function resolveConfigPath(relativePath, projectRoot) {
84
80
  * Similar logic to resolveConfigPath but for the state/ subdirectory.
85
81
  */
86
82
  export function resolveStateDir(projectRoot) {
87
- const root = projectRoot || process.cwd();
88
- const envDir = process.env[STRRAY_CONFIG_DIR_ENV];
83
+ const root = resolveRoot(projectRoot);
84
+ const envDir = process.env[XRAY_CONFIG_DIR_ENV];
89
85
  const candidates = [];
90
86
  if (envDir) {
91
87
  candidates.push(join(root, envDir, "state"));
@@ -111,14 +107,13 @@ export function resolveStateFilePath(projectRoot) {
111
107
  * Get the profiles storage directory.
112
108
  */
113
109
  export function resolveProfilesDir(projectRoot) {
114
- const root = projectRoot || process.cwd();
115
- const envDir = process.env[STRRAY_CONFIG_DIR_ENV];
110
+ const root = resolveRoot(projectRoot);
111
+ const envDir = process.env[XRAY_CONFIG_DIR_ENV];
116
112
  const candidates = [];
117
113
  if (envDir) {
118
114
  candidates.push(join(root, envDir, "profiles"));
119
115
  }
120
116
  candidates.push(join(root, ".xray", "profiles"));
121
- candidates.push(join(root, ".opencode", "xray", "profiles"));
122
117
  for (const candidate of candidates) {
123
118
  if (existsSync(candidate)) {
124
119
  return candidate;
@@ -130,16 +125,28 @@ export function resolveProfilesDir(projectRoot) {
130
125
  * Resolve codex.json path.
131
126
  * Has additional fallback locations beyond the standard config dir.
132
127
  */
128
+ /** Environment variable for explicit project root override */
129
+ export const XRAY_ROOT_ENV = "XRAY_ROOT";
130
+ /**
131
+ * Resolve project root using XRAY_ROOT env var if set,
132
+ * otherwise fall back to projectRoot param or cwd.
133
+ */
134
+ export function resolveProjectRoot(projectRoot) {
135
+ return process.env[XRAY_ROOT_ENV] || projectRoot || process.cwd();
136
+ }
137
+ /** @deprecated Use resolveProjectRoot — kept for internal consistency */
138
+ function resolveRoot(projectRoot) {
139
+ return resolveProjectRoot(projectRoot);
140
+ }
133
141
  export function resolveCodexPath(projectRoot) {
134
- const root = projectRoot || process.cwd();
135
- const envDir = process.env[STRRAY_CONFIG_DIR_ENV];
142
+ const root = resolveRoot(projectRoot);
143
+ const envDir = process.env[XRAY_CONFIG_DIR_ENV];
136
144
  const candidates = [];
137
145
  if (envDir) {
138
146
  candidates.push(join(root, envDir, "codex.json"));
139
147
  }
140
148
  candidates.push(join(root, ".xray", "codex.json"));
141
149
  candidates.push(join(root, "xray", "codex.json"));
142
- candidates.push(join(root, ".opencode", "xray", "codex.json"));
143
150
  // Additional fallback locations (for standalone usage)
144
151
  candidates.push(join(root, "codex.json"));
145
152
  candidates.push(join(root, "src", "codex.json"));
@@ -150,7 +157,7 @@ export function resolveCodexPath(projectRoot) {
150
157
  * Get the logs directory for framework logging.
151
158
  */
152
159
  export function resolveLogDir(projectRoot) {
153
- const root = projectRoot || process.cwd();
160
+ const root = resolveRoot(projectRoot);
154
161
  // Logs always go to logs/framework/ regardless of config dir
155
162
  return join(root, "logs", "framework");
156
163
  }
@@ -4,7 +4,6 @@
4
4
  * Loads Universal Development Codex v1.2.0 context for agent initialization.
5
5
  * Provides structured access to 30+ codex terms, interweaves, lenses, and anti-patterns.
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-01-06
9
8
  */
10
9
  import * as fs from "fs";
@@ -267,6 +266,3 @@ export class XrayContextLoader {
267
266
  * Export singleton instance
268
267
  */
269
268
  export const xrayContextLoader = XrayContextLoader.getInstance();
270
- // Backward compat aliases
271
- export { XrayContextLoader as StringRayContextLoader };
272
- export { xrayContextLoader as strRayContextLoader };
@@ -4,7 +4,6 @@
4
4
  * Prevents system prompt bloat by validating and rejecting context-injection attempts
5
5
  * that would exceed token budgets.
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-03-03
9
8
  */
10
9
  /**
@@ -4,7 +4,6 @@
4
4
  * Loads and validates the unified features configuration from features.json
5
5
  * Supports token optimization, model routing, batch operations, and more.
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-01-25
9
8
  */
10
9
  import * as fs from "fs";
@@ -286,7 +285,7 @@ export class FeaturesConfigLoader {
286
285
  */
287
286
  getDefaultConfig() {
288
287
  return {
289
- version: "1.22.67",
288
+ version: "3.1.0",
290
289
  description: "0xRay Framework - Unified Feature Configuration",
291
290
  token_optimization: {
292
291
  enabled: true,
@@ -446,6 +445,43 @@ export class FeaturesConfigLoader {
446
445
  });
447
446
  }
448
447
  }
448
+ /**
449
+ * Get XrayConfig-shaped slice for backward compatibility
450
+ * @deprecated Use individual getters or loadConfig() directly instead.
451
+ */
452
+ getXrayConfig() {
453
+ const config = this.loadConfig();
454
+ return {
455
+ multi_agent_orchestration: config.multi_agent_orchestration,
456
+ autonomous_reporting: config.autonomous_reporting,
457
+ disabled_agents: config.agent_management?.disabled_agents ?? [],
458
+ };
459
+ }
460
+ getTokenManagement() {
461
+ return this.loadConfig().token_optimization;
462
+ }
463
+ getProcessors() {
464
+ return this.loadConfig().processors;
465
+ }
466
+ getCommitCycle() {
467
+ return this.loadConfig().commit_cycle;
468
+ }
469
+ getStorytelling() {
470
+ return this.loadConfig().storytelling;
471
+ }
472
+ getInference() {
473
+ return this.loadConfig().inference;
474
+ }
475
+ getPublish() {
476
+ return this.loadConfig().publish;
477
+ }
478
+ getAutoReporting() {
479
+ return this.loadConfig().autonomous_reporting;
480
+ }
481
+ getGovernance() {
482
+ const config = this.loadConfig();
483
+ return config.inference;
484
+ }
449
485
  }
450
486
  // Export singleton instance
451
487
  export const featuresConfigLoader = new FeaturesConfigLoader();
@@ -1,6 +1,6 @@
1
1
  export { KernelOrchestrator } from "./orchestrator.js";
2
- export { defaultXrayConfig, defaultXrayConfig as defaultStringRayConfig } from "./xray-activation.js"; // consumer runtime compat
2
+ export { defaultXrayConfig } from "./xray-activation.js";
3
3
  // Decoupled config path resolution (Layer 1)
4
- export { getConfigDir, resolveConfigPath, resolveStateDir, resolveProfilesDir, resolveCodexPath, resolveLogDir, resetConfigDirCache, STRRAY_CONFIG_DIR_ENV, } from "./config-paths.js";
4
+ export { getConfigDir, resolveConfigPath, resolveStateDir, resolveProfilesDir, resolveCodexPath, resolveLogDir, resetConfigDirCache, XRAY_CONFIG_DIR_ENV, } from "./config-paths.js";
5
5
  // Standalone codex formatter (Layer 2)
6
6
  export { formatCodexPrompt, formatMinimalCodexPrompt, getCodexConfig, findCodexPath, loadCodex, BUILTIN_CODEX, } from "./codex-formatter.js";
@@ -4,7 +4,6 @@
4
4
  * Pattern definitions from v1.1.0 → v2.0 kernel update
5
5
  * Includes 35+ patterns from 80+ reflections
6
6
  *
7
- * @version 2.0.0-SECURITY-ENHANCED
8
7
  */
9
8
  export class KernelAnalyzer {
10
9
  config;
@@ -1,9 +1,9 @@
1
1
  // Default logging configuration
2
2
  const defaultLoggingConfig = {
3
- enabled: process.env.STRRAY_LOGGING_ENABLED !== "false", // Default true, can be disabled
4
- level: process.env.STRRAY_LOG_LEVEL || "info",
3
+ enabled: process.env.XRAY_LOGGING_ENABLED !== "false", // Default true, can be disabled
4
+ level: process.env.XRAY_LOG_LEVEL || "info",
5
5
  destinations: ["console", "file"],
6
- performanceMode: process.env.STRRAY_PERFORMANCE_MODE === "true",
6
+ performanceMode: process.env.XRAY_PERFORMANCE_MODE === "true",
7
7
  };
8
8
  // Available log levels in priority order (higher index = more verbose)
9
9
  const LOG_LEVELS = ["debug", "info", "warn", "error"];
@@ -32,12 +32,12 @@ export function shouldLog(level) {
32
32
  return messageLevelIndex >= currentLevelIndex;
33
33
  }
34
34
  // Environment variable configuration
35
- if (process.env.STRRAY_LOGGING_ENABLED === "false") {
35
+ if (process.env.XRAY_LOGGING_ENABLED === "false") {
36
36
  setLoggingConfig({ enabled: false });
37
37
  }
38
- if (process.env.STRRAY_LOG_LEVEL) {
39
- setLoggingConfig({ level: process.env.STRRAY_LOG_LEVEL });
38
+ if (process.env.XRAY_LOG_LEVEL) {
39
+ setLoggingConfig({ level: process.env.XRAY_LOG_LEVEL });
40
40
  }
41
- if (process.env.STRRAY_PERFORMANCE_MODE === "true") {
41
+ if (process.env.XRAY_PERFORMANCE_MODE === "true") {
42
42
  setLoggingConfig({ performanceMode: true });
43
43
  }
@@ -2,48 +2,24 @@
2
2
  * Model Router
3
3
  *
4
4
  * Intelligent model routing based on task complexity and type.
5
- * Integrates with features-config for task-based model selection.
5
+ * Uses featuresConfigLoader as the single source of truth for all model config.
6
6
  *
7
- * @version 2.0.0
8
7
  * @since 2026-01-25
9
8
  */
10
- import * as fs from "fs";
11
- import * as path from "path";
12
9
  import { featuresConfigLoader, detectTaskType, } from "./features-config.js";
13
10
  // ============================================================================
14
11
  // Model Router Class
15
12
  // ============================================================================
16
13
  class ModelRouter {
17
- configPath;
18
- config;
19
14
  availableModels;
20
- constructor(configPath) {
21
- this.configPath =
22
- configPath || path.resolve(process.cwd(), "opencode.json");
23
- this.config = this.loadConfig();
15
+ constructor() {
24
16
  this.availableModels = this.discoverModels();
25
17
  }
26
- loadConfig() {
27
- try {
28
- const configData = fs.readFileSync(this.configPath, "utf8");
29
- return JSON.parse(configData);
30
- }
31
- catch (error) {
32
- // Provide defaults if config not found
33
- return {
34
- model_routing: {},
35
- model_default: "claude-sonnet-4",
36
- model_fallback: "claude-haiku-4",
37
- };
38
- }
39
- }
40
18
  discoverModels() {
41
19
  const defaultModels = [
42
- // Anthropic Claude models (preferred for 0xRay)
43
20
  "claude-opus-4",
44
21
  "claude-sonnet-4",
45
22
  "claude-haiku-4",
46
- // Other supported models
47
23
  "openai/gpt-4o",
48
24
  "openai/gpt-4o-mini",
49
25
  "google/gemini-pro-1.5",
@@ -51,7 +27,15 @@ class ModelRouter {
51
27
  "meta/llama-3.1-70b-instruct",
52
28
  "mistral/mistral-7b-instruct",
53
29
  ];
54
- const configModels = this.config.available_models || [];
30
+ const featuresConfig = featuresConfigLoader.loadConfig();
31
+ const configModels = [];
32
+ if (featuresConfig.model_routing?.task_routing) {
33
+ for (const route of Object.values(featuresConfig.model_routing.task_routing)) {
34
+ if (route?.model && !configModels.includes(route.model)) {
35
+ configModels.push(route.model);
36
+ }
37
+ }
38
+ }
55
39
  const uniqueModels = new Set([...defaultModels, ...configModels]);
56
40
  return Array.from(uniqueModels);
57
41
  }
@@ -82,44 +66,28 @@ class ModelRouter {
82
66
  return this.getValidatedModel();
83
67
  }
84
68
  /**
85
- * Get validated model for agent type (legacy method)
69
+ * Get validated model for agent type
86
70
  */
87
71
  getValidatedModel(agentType) {
88
- // 1. User preference (future enhancement)
89
- const userModel = this.getUserPreference();
90
- if (userModel && this.isModelAvailable(userModel)) {
91
- return userModel;
92
- }
93
- // 2. Check features config for agent-specific model
72
+ const featuresConfig = featuresConfigLoader.loadConfig();
73
+ // 1. Check features config for agent-specific model
94
74
  if (agentType) {
95
- const featuresConfig = featuresConfigLoader.loadConfig();
96
- const agentModel = featuresConfig.agent_management.agent_models[agentType];
75
+ const agentModel = featuresConfig.agent_management?.agent_models?.[agentType];
97
76
  if (agentModel && this.isModelAvailable(agentModel)) {
98
77
  return agentModel;
99
78
  }
100
- // Fall back to opencode.json model routing
101
- if (this.config.model_routing?.[agentType]) {
102
- const configModel = this.config.model_routing[agentType];
103
- if (this.isModelAvailable(configModel)) {
104
- return configModel;
105
- }
106
- }
107
79
  }
108
- // 3. Framework default from features config
109
- const featuresConfig = featuresConfigLoader.loadConfig();
80
+ // 2. Framework default from features config
110
81
  const defaultModel = featuresConfig.model_routing?.default_model;
111
82
  if (defaultModel && this.isModelAvailable(defaultModel)) {
112
83
  return defaultModel;
113
84
  }
114
- // 4. Legacy default
115
- const legacyDefault = this.config.model_default || "claude-sonnet-4";
116
- if (this.isModelAvailable(legacyDefault)) {
117
- return legacyDefault;
85
+ // 3. Hardcoded default
86
+ if (this.isModelAvailable("claude-sonnet-4")) {
87
+ return "claude-sonnet-4";
118
88
  }
119
- // 5. Ultimate fallback
120
- const fallbackModel = featuresConfig.model_routing?.fallback_model ||
121
- this.config.model_fallback ||
122
- "claude-haiku-4";
89
+ // 4. Ultimate fallback
90
+ const fallbackModel = featuresConfig.model_routing?.fallback_model || "claude-haiku-4";
123
91
  return fallbackModel;
124
92
  }
125
93
  /**
@@ -134,24 +102,15 @@ class ModelRouter {
134
102
  getMaxTokensForTaskType(taskType) {
135
103
  return featuresConfigLoader.getMaxTokensForTask(taskType);
136
104
  }
137
- getUserPreference() {
138
- // Check for user-specific config (future enhancement)
139
- return null;
140
- }
141
- isModelAvailable(model) {
142
- if (this.config.deprecated_models?.includes(model)) {
143
- return false;
144
- }
145
- // For now, accept all models - the API will validate
105
+ isModelAvailable(_model) {
146
106
  return true;
147
107
  }
148
108
  /**
149
109
  * Reload configuration from disk
150
110
  */
151
111
  reloadConfig() {
152
- this.config = this.loadConfig();
153
- this.availableModels = this.discoverModels();
154
112
  featuresConfigLoader.clearCache();
113
+ this.availableModels = this.discoverModels();
155
114
  }
156
115
  /**
157
116
  * Get current configuration summary
@@ -405,4 +405,4 @@ export class KernelOrchestrator {
405
405
  };
406
406
  }
407
407
  }
408
- export const strRayOrchestrator = new KernelOrchestrator();
408
+ export const xrayOrchestrator = new KernelOrchestrator();
@@ -4,7 +4,6 @@
4
4
  * Generates optimized, token-efficient system prompts by implementing
5
5
  * selective injection and smart compression strategies.
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-03-03
9
8
  */
10
9
  import { XrayContextLoader } from "./context-loader.js";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Consumer runtime compat shim from prior 0xRay releases (1-line min per Scope Rule; primary xray paths + XRAY_||STRRAY_ env + .xray fallbacks).
2
+ * Consumer runtime compat shim from prior 0xRay releases (1-line min per Scope Rule; primary xray paths + .xray fallbacks).
3
3
  */
4
4
  import { frameworkLogger } from "../core/framework-logger.js";
5
5
  import { ensureCriticalComponents } from "../architect/architectural-integrity.js";
@@ -98,7 +98,7 @@ async function activateStateManagement(jobId) {
98
98
  }
99
99
  async function activateOrchestrator(jobId) {
100
100
  frameworkLogger.log("xray-activation", "activating xray orchestrator", "info", { jobId });
101
- const { strRayOrchestrator } = await import("./orchestrator");
101
+ const { xrayOrchestrator } = await import("./orchestrator");
102
102
  // Also activate the multi-agent orchestration coordinator
103
103
  const { multiAgentOrchestrationCoordinator } = await import("../orchestrator/multi-agent-orchestration-coordinator");
104
104
  frameworkLogger.log("xray-activation", "xray orchestrator and multi-agent coordination activated", "success", { jobId });
@@ -132,5 +132,4 @@ async function activatePostProcessor(jobId) {
132
132
  globalThis.xrayCodexInjector = codexInjector;
133
133
  frameworkLogger.log("xray-activation", "codex injector activated", "success", { jobId });
134
134
  }
135
- export { defaultXrayConfig as defaultStringRayConfig };
136
- export { activateXrayFramework as activateStringRayFramework };
135
+ // Backward compat aliases
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * Integrates with TaskSkillRouter for keyword-based preprocessing.
8
8
  *
9
- * @version 1.1.0
10
9
  * @since 2026-01-07
11
10
  */
12
11
  import * as fs from "fs";
@@ -47,7 +46,7 @@ export class AgentDelegator {
47
46
  const candidates = [
48
47
  path.resolve(process.cwd(), ".xray/routing-mappings.json"),
49
48
  path.resolve(process.cwd(), "xray/routing-mappings.json"),
50
- path.resolve(process.cwd(), ".opencode/xray/routing-mappings.json"),
49
+ path.resolve(process.cwd(), ".xray/routing-mappings.json"),
51
50
  path.resolve(process.cwd(), "routing-mappings.json"),
52
51
  ];
53
52
  for (const p of candidates) {
@@ -451,7 +450,7 @@ export class AgentDelegator {
451
450
  */
452
451
  resolveProjectDirectory() {
453
452
  const root = process.cwd();
454
- if (fs.existsSync(`${root}/package.json`) || fs.existsSync(`${root}/strray.config.json`)) {
453
+ if (fs.existsSync(`${root}/package.json`) || fs.existsSync(`${root}/xray.config.json`)) {
455
454
  return root;
456
455
  }
457
456
  let current = root;
@@ -4,7 +4,6 @@
4
4
  * Defines expertise levels for weighted voting across all 0xRay agents.
5
5
  * Higher expertise = higher weight in voting decisions.
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-04-16
9
8
  */
10
9
  export const AGENT_EXPERTISE_LEVELS = {
@@ -4,7 +4,6 @@
4
4
  * Barrel export for all analytics components.
5
5
  * Extracted from task-skill-router.ts as part of Phase 2 refactoring.
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-03-12
9
8
  */
10
9
  export { RoutingOutcomeTracker, routingOutcomeTracker } from './outcome-tracker.js';