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
@@ -43,7 +43,7 @@ Native Hermes plugin providing 0xRay framework integration — quality gates, co
43
43
 
44
44
  **Fallback:** When bridge is unavailable, tools fall back to `npx 0xray` CLI commands.
45
45
 
46
- **Config path resolution:** `XRAY_CONFIG_DIR/` > `.xray/` > `.opencode/xray/` > built-in defaults.
46
+ **Config path resolution:** `XRAY_CONFIG_DIR/` > `.xray/` > built-in defaults.
47
47
 
48
48
  ## 4 Tools
49
49
 
@@ -208,5 +208,5 @@ The plugin's pre_tool_call hook nudges when an MCP alternative exists (e.g., "us
208
208
  - CLI fallback requires `npx 0xray` in PATH. If bridge fails and CLI isn't available, tools return errors.
209
209
  - Quality gate blocks are logged but NOT enforced (advisory). The tool returns violations; the agent decides what to do.
210
210
  - Git hooks use symlinks from `.git/hooks/` → `hooks/`. If the `hooks/` directory doesn't exist in the project, `xray_hooks(action="install")` skips those hooks.
211
- - Project root detection walks up from CWD looking for `node_modules/0xray`, `.opencode/xray/features.json`, or `package.json`. Override with `XRAY_PROJECT_ROOT` env var.
211
+ - Project root detection walks up from CWD looking for `node_modules/0xray`, `.xray/features.json`, or `package.json`. Override with `XRAY_PROJECT_ROOT` env var.
212
212
  - `logs/framework/` is created automatically. Never breaks the agent if permissions fail.
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: inference-improve
4
4
  description: Autonomous inference improvement through collaborative agent analysis
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [inference, improvement, autonomous, learning]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: lint
4
4
  description: Code linting and static analysis
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [quality, lint]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: log-monitor
4
4
  description: Log analysis, pattern detection, and alerting
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [monitoring, logging, alerting, observability]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: model-health-check
4
4
  description: AI model health monitoring and diagnostics
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [monitoring, model, health, check]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: multimodal-looker
4
4
  description: Visual content analysis for diagrams, screenshots, and UI mockups
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [visual, diagrams, screenshots, accessibility, ui-analysis]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: orchestrator
4
4
  description: Multi-agent workflow coordination and task delegation
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [orchestration, orchestrator]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: performance-analysis
4
4
  description: System performance analysis and optimization
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [performance, performance, analysis]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: performance-optimization
4
4
  description: Application performance optimization and tuning
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [performance, performance, optimization]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: processor-pipeline
4
4
  description: Data processing pipeline management
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [processing, processor, pipeline]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: project-analysis
4
4
  description: Analyze project structure, complexity, and health metrics
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [analysis, project, complexity, health]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: refactoring-strategies
4
4
  description: Code refactoring techniques and strategies
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [refactoring, refactoring, strategies]
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.22.67",
2
+ "version": "3.1.0",
3
3
  "description": "0xRay Skills Registry - recommended skill sources for consumers",
4
4
  "sources": [
5
5
  {
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: researcher
4
4
  description: Multi-repo analysis, documentation lookup, and implementation examples
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [research, researcher]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: security-audit
4
4
  description: Security auditing and compliance validation
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [security, security, audit]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: security-scan
4
4
  description: Security vulnerability scanning and assessment
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [security, security, scan]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: session-management
4
4
  description: Manage user sessions and persistent state
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [infrastructure, session, management]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: state-manager
4
4
  description: Application state management and persistence
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [infrastructure, state, manager]
@@ -96,7 +96,7 @@ codex_terms: [5, 7, 32] # Related Codex term numbers
96
96
  ```markdown
97
97
  ## What Next?
98
98
 
99
- - Related Codex terms: [codex.json](../../.opencode/xray/codex.json)
99
+ - Related Codex terms: [codex.json](../../../../.xray/codex.json)
100
100
  - Next story to write: [suggestion]
101
101
  ```
102
102
 
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: testing-best-practices
4
4
  description: Testing best practices and quality assurance
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [testing, testing, best, practices]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: testing-strategy
4
4
  description: Design comprehensive testing strategies and optimize test coverage
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [testing, strategy, coverage, quality]
@@ -2,7 +2,7 @@
2
2
  source: framework
3
3
  name: ui-ux-design
4
4
  description: User interface and user experience design with mobile-first approach, cognitive simplicity, and accessibility-first principles
5
- author: StrRay Framework
5
+ author: Xray Framework
6
6
  version: 2.1.0
7
7
  schema_version: "1.0"
8
8
  tags: [design, ui, ux, accessibility, mobile-first, visual-hierarchy, wcag, contrast, color-theory, dont-make-me-think]
@@ -3,7 +3,6 @@
3
3
  *
4
4
  * OpenClaw skill that provides xray orchestration commands.
5
5
  *
6
- * @version 1.0.0
7
6
  * @since 2026-03-14
8
7
  */
9
8
  const API_BASE = process.env.XRAY_API_URL || 'http://localhost:18431';
@@ -5,4 +5,3 @@ export * from "./context-providers.js";
5
5
  export * from "./state-types.js";
6
6
  // Re-export commonly used state utilities
7
7
  export { XrayStateManager } from "./state-manager.js";
8
- export { XrayStateManager as StringRayStateManager } from "./state-manager.js";
@@ -204,5 +204,4 @@ export class XrayStateManager {
204
204
  return conflict.value2; // Prefer the second value as newer
205
205
  }
206
206
  }
207
- // Export alias for scripts expecting StrRayStateManager (backward compatibility)
208
- export { XrayStateManager as StringRayStateManager };
207
+ // Export alias for scripts expecting XrayStateManager
@@ -4,7 +4,6 @@
4
4
  * Unified parsing utility for codex content in both JSON and Markdown formats.
5
5
  * Provides consistent parsing across all components with format detection and validation.
6
6
  *
7
- * @version 1.0.1
8
7
  * @since 2026-01-07
9
8
  */
10
9
  import { frameworkLogger } from "../core/framework-logger.js";
@@ -77,7 +77,7 @@ export class ImportResolver {
77
77
  detectInstalled() {
78
78
  return (this.currentDir.includes("/node_modules/") ||
79
79
  this.currentDir.includes("\\node_modules\\") ||
80
- (this.currentDir.includes("strray") &&
80
+ (this.currentDir.includes("xray") &&
81
81
  !this.currentDir.includes(this.projectRoot)));
82
82
  }
83
83
  detectTesting() {
@@ -4,7 +4,6 @@
4
4
  * Detects project language and test framework from project files.
5
5
  * Supports: TypeScript, JavaScript, Python, Go, Rust, Java, C++, Ruby, PHP
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-02-25
9
8
  */
10
9
  import * as fs from "fs";
@@ -52,7 +52,7 @@ export class PathResolver {
52
52
  detectBuilt() {
53
53
  return (this.currentDir.includes("/dist/") ||
54
54
  this.currentDir.includes("\\dist\\") ||
55
- (this.currentDir.includes("strray") && !this.detectDevelopment()));
55
+ (this.currentDir.includes("xray") && !this.detectDevelopment()));
56
56
  }
57
57
  /**
58
58
  * Detect if we're running in installed package environment
@@ -60,7 +60,7 @@ export class PathResolver {
60
60
  detectInstalled() {
61
61
  return (this.currentDir.includes("/node_modules/") ||
62
62
  this.currentDir.includes("\\node_modules\\") ||
63
- (this.currentDir.includes("strray") && this.detectBuilt()));
63
+ (this.currentDir.includes("xray") && this.detectBuilt()));
64
64
  }
65
65
  /**
66
66
  * Resolve agent import path for current environment
@@ -4,7 +4,6 @@
4
4
  * Centralized shutdown handling for MCP servers.
5
5
  * Extracts common shutdown patterns to reduce code duplication.
6
6
  *
7
- * @version 1.0.0
8
7
  * @since 2026-03-22
9
8
  */
10
9
  import { frameworkLogger } from "../core/framework-logger.js";
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Agent Configuration Validator
3
+ *
4
+ * Validates agent configuration files for correctness and completeness
5
+ * ensuring all required fields are present and properly formatted.
6
+ *
7
+ * @since 2026-01-23
8
+ */
9
+ import { frameworkLogger } from "../core/framework-logger.js";
10
+ import * as fs from "fs";
11
+ import * as path from "path";
12
+ import * as yaml from "yaml";
13
+ export class AgentConfigValidator {
14
+ requiredFields = [
15
+ "name",
16
+ "description",
17
+ "version",
18
+ "model",
19
+ "mode",
20
+ ];
21
+ validModes = ["primary", "subagent"];
22
+ validLogLevels = ["debug", "info", "warn", "error"];
23
+ validLogFormats = ["json", "text"];
24
+ validPriorities = ["low", "medium", "high", "critical"];
25
+ validProcessorTypes = [
26
+ "validation",
27
+ "orchestration",
28
+ "monitoring",
29
+ ];
30
+ /**
31
+ * Validate agent configuration from file
32
+ */
33
+ async validateConfigFile(filePath) {
34
+ const jobId = `validate-config-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
35
+ try {
36
+ // Check if file exists
37
+ if (!fs.existsSync(filePath)) {
38
+ return {
39
+ valid: false,
40
+ errors: [`Configuration file does not exist: ${filePath}`],
41
+ warnings: [],
42
+ config: null,
43
+ };
44
+ }
45
+ // Read and parse file
46
+ const content = fs.readFileSync(filePath, "utf8");
47
+ let config;
48
+ if (filePath.endsWith(".yml") || filePath.endsWith(".yaml")) {
49
+ config = yaml.parse(content);
50
+ }
51
+ else if (filePath.endsWith(".json")) {
52
+ config = JSON.parse(content);
53
+ }
54
+ else {
55
+ return {
56
+ valid: false,
57
+ errors: [`Unsupported file format: ${path.extname(filePath)}`],
58
+ warnings: [],
59
+ config: null,
60
+ };
61
+ }
62
+ const result = this.validateConfig(config);
63
+ frameworkLogger.log("agent-config-validator", `Configuration validation ${result.valid ? "passed" : "failed"} for ${filePath}`, result.valid ? "success" : "error", {
64
+ jobId,
65
+ filePath,
66
+ errorCount: result.errors.length,
67
+ warningCount: result.warnings.length,
68
+ });
69
+ return {
70
+ ...result,
71
+ config: result.valid ? config : null,
72
+ };
73
+ }
74
+ catch (error) {
75
+ frameworkLogger.log("agent-config-validator", `Configuration validation error for ${filePath}`, "error", {
76
+ jobId,
77
+ error: error instanceof Error ? error.message : String(error),
78
+ });
79
+ return {
80
+ valid: false,
81
+ errors: [
82
+ `Failed to parse configuration: ${error instanceof Error ? error.message : String(error)}`,
83
+ ],
84
+ warnings: [],
85
+ config: null,
86
+ };
87
+ }
88
+ }
89
+ /**
90
+ * Validate agent configuration object
91
+ */
92
+ validateConfig(config) {
93
+ const errors = [];
94
+ const warnings = [];
95
+ // Check required fields
96
+ for (const field of this.requiredFields) {
97
+ if (!config[field]) {
98
+ errors.push(`Missing required field: ${field}`);
99
+ }
100
+ }
101
+ // Validate mode
102
+ if (config.mode && !this.validModes.includes(config.mode)) {
103
+ errors.push(`Invalid mode '${config.mode}'. Must be one of: ${this.validModes.join(", ")}`);
104
+ }
105
+ // Validate logging configuration
106
+ if (config.logging) {
107
+ this.validateLoggingConfig(config.logging, errors, warnings);
108
+ }
109
+ // Validate processor pipeline
110
+ if (config.processor_pipeline) {
111
+ this.validateProcessorPipeline(config.processor_pipeline, errors, warnings);
112
+ }
113
+ // Validate performance configuration
114
+ if (config.performance) {
115
+ this.validatePerformanceConfig(config.performance, errors, warnings);
116
+ }
117
+ // Validate security configuration
118
+ if (config.security) {
119
+ this.validateSecurityConfig(config.security, errors, warnings);
120
+ }
121
+ // Validate error handling configuration
122
+ if (config.error_handling) {
123
+ this.validateErrorHandlingConfig(config.error_handling, errors, warnings);
124
+ }
125
+ return {
126
+ valid: errors.length === 0,
127
+ errors,
128
+ warnings,
129
+ config: null,
130
+ };
131
+ }
132
+ /**
133
+ * Validate logging configuration
134
+ */
135
+ validateLoggingConfig(logging, errors, warnings) {
136
+ if (logging.level && !this.validLogLevels.includes(logging.level)) {
137
+ errors.push(`Invalid log level '${logging.level}'. Must be one of: ${this.validLogLevels.join(", ")}`);
138
+ }
139
+ if (logging.format && !this.validLogFormats.includes(logging.format)) {
140
+ errors.push(`Invalid log format '${logging.format}'. Must be one of: ${this.validLogFormats.join(", ")}`);
141
+ }
142
+ if (logging.destinations && !Array.isArray(logging.destinations)) {
143
+ errors.push("logging.destinations must be an array");
144
+ }
145
+ if (logging.retention_days &&
146
+ (typeof logging.retention_days !== "number" || logging.retention_days < 1)) {
147
+ errors.push("logging.retention_days must be a positive number");
148
+ }
149
+ }
150
+ /**
151
+ * Validate processor pipeline configuration
152
+ */
153
+ validateProcessorPipeline(pipeline, errors, warnings) {
154
+ if (!Array.isArray(pipeline)) {
155
+ errors.push("processor_pipeline must be an array");
156
+ return;
157
+ }
158
+ pipeline.forEach((processor, index) => {
159
+ if (!processor.name) {
160
+ errors.push(`processor_pipeline[${index}]: missing 'name' field`);
161
+ }
162
+ if (!processor.type) {
163
+ errors.push(`processor_pipeline[${index}]: missing 'type' field`);
164
+ }
165
+ else if (!this.validProcessorTypes.includes(processor.type)) {
166
+ errors.push(`processor_pipeline[${index}]: invalid type '${processor.type}'. Must be one of: ${this.validProcessorTypes.join(", ")}`);
167
+ }
168
+ if (!processor.priority) {
169
+ errors.push(`processor_pipeline[${index}]: missing 'priority' field`);
170
+ }
171
+ else if (!this.validPriorities.includes(processor.priority)) {
172
+ errors.push(`processor_pipeline[${index}]: invalid priority '${processor.priority}'. Must be one of: ${this.validPriorities.join(", ")}`);
173
+ }
174
+ if (processor.timeout_ms &&
175
+ (typeof processor.timeout_ms !== "number" || processor.timeout_ms < 0)) {
176
+ errors.push(`processor_pipeline[${index}]: timeout_ms must be a non-negative number`);
177
+ }
178
+ if (processor.retry_attempts &&
179
+ (typeof processor.retry_attempts !== "number" ||
180
+ processor.retry_attempts < 0)) {
181
+ errors.push(`processor_pipeline[${index}]: retry_attempts must be a non-negative number`);
182
+ }
183
+ });
184
+ }
185
+ /**
186
+ * Validate performance configuration
187
+ */
188
+ validatePerformanceConfig(performance, errors, warnings) {
189
+ if (performance.timeout_ms &&
190
+ (typeof performance.timeout_ms !== "number" || performance.timeout_ms < 0)) {
191
+ errors.push("performance.timeout_ms must be a non-negative number");
192
+ }
193
+ if (performance.concurrency_limit &&
194
+ (typeof performance.concurrency_limit !== "number" ||
195
+ performance.concurrency_limit < 1)) {
196
+ errors.push("performance.concurrency_limit must be a positive number");
197
+ }
198
+ if (performance.memory_limit_mb &&
199
+ (typeof performance.memory_limit_mb !== "number" ||
200
+ performance.memory_limit_mb < 1)) {
201
+ errors.push("performance.memory_limit_mb must be a positive number");
202
+ }
203
+ if (performance.cpu_limit_percent &&
204
+ (typeof performance.cpu_limit_percent !== "number" ||
205
+ performance.cpu_limit_percent < 1 ||
206
+ performance.cpu_limit_percent > 100)) {
207
+ errors.push("performance.cpu_limit_percent must be between 1 and 100");
208
+ }
209
+ }
210
+ /**
211
+ * Validate security configuration
212
+ */
213
+ validateSecurityConfig(security, errors, warnings) {
214
+ if (security.permission_level &&
215
+ typeof security.permission_level !== "string") {
216
+ errors.push("security.permission_level must be a string");
217
+ }
218
+ if (security.data_classification &&
219
+ typeof security.data_classification !== "string") {
220
+ errors.push("security.data_classification must be a string");
221
+ }
222
+ }
223
+ /**
224
+ * Validate error handling configuration
225
+ */
226
+ validateErrorHandlingConfig(errorHandling, errors, warnings) {
227
+ if (errorHandling.retry_attempts &&
228
+ (typeof errorHandling.retry_attempts !== "number" ||
229
+ errorHandling.retry_attempts < 0)) {
230
+ errors.push("error_handling.retry_attempts must be a non-negative number");
231
+ }
232
+ if (errorHandling.circuit_breaker) {
233
+ const cb = errorHandling.circuit_breaker;
234
+ if (cb.failure_threshold &&
235
+ (typeof cb.failure_threshold !== "number" || cb.failure_threshold < 1)) {
236
+ errors.push("error_handling.circuit_breaker.failure_threshold must be a positive number");
237
+ }
238
+ if (cb.recovery_timeout_ms &&
239
+ (typeof cb.recovery_timeout_ms !== "number" ||
240
+ cb.recovery_timeout_ms < 0)) {
241
+ errors.push("error_handling.circuit_breaker.recovery_timeout_ms must be a non-negative number");
242
+ }
243
+ }
244
+ }
245
+ /**
246
+ * Validate all agent configurations in a directory
247
+ */
248
+ async validateAllAgentConfigs(agentConfigDir = ".opencode/agents") {
249
+ const results = [];
250
+ // Gracefully handle missing agent config directory (headless/no .opencode/ mode)
251
+ if (!fs.existsSync(agentConfigDir)) {
252
+ frameworkLogger.log("agent-config-validator", `Agent config directory not found, skipping validation: ${agentConfigDir}`, "warning", {});
253
+ return {
254
+ results: [],
255
+ summary: { total: 0, valid: 0, invalid: 0 },
256
+ };
257
+ }
258
+ try {
259
+ const files = fs.readdirSync(agentConfigDir);
260
+ const configFiles = files.filter((f) => f.endsWith(".yml") || f.endsWith(".yaml") || f.endsWith(".json"));
261
+ for (const file of configFiles) {
262
+ const filePath = path.join(agentConfigDir, file);
263
+ const result = await this.validateConfigFile(filePath);
264
+ results.push({ file, result });
265
+ }
266
+ }
267
+ catch (error) {
268
+ frameworkLogger.log("agent-config-validator", "Failed to read agent config directory", "error", { error: error instanceof Error ? error.message : String(error) });
269
+ }
270
+ const summary = {
271
+ total: results.length,
272
+ valid: results.filter((r) => r.result.valid).length,
273
+ invalid: results.length - results.filter((r) => r.result.valid).length,
274
+ };
275
+ frameworkLogger.log("agent-config-validator", `Validated ${summary.total} agent configurations: ${summary.valid} valid, ${summary.invalid} invalid`, summary.invalid > 0 ? "error" : "info");
276
+ return { results, summary };
277
+ }
278
+ }
279
+ // Export singleton instance
280
+ export const agentConfigValidator = new AgentConfigValidator();