0xray 2.0.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 (739) hide show
  1. package/.opencode/agents/api-design.yml +31 -0
  2. package/.opencode/agents/architect.yml +15 -0
  3. package/.opencode/agents/architecture-patterns.yml +14 -0
  4. package/.opencode/agents/auto-format.yml +14 -0
  5. package/.opencode/agents/backend-engineer.yml +12 -0
  6. package/.opencode/agents/boot-orchestrator.yml +14 -0
  7. package/.opencode/agents/bug-triage-specialist.yml +15 -0
  8. package/.opencode/agents/code-analyzer.yml +12 -0
  9. package/.opencode/agents/code-reviewer.yml +14 -0
  10. package/.opencode/agents/content-creator.yml +12 -0
  11. package/.opencode/agents/database-engineer.yml +12 -0
  12. package/.opencode/agents/devops-engineer.yml +12 -0
  13. package/.opencode/agents/framework-compliance-audit.yml +14 -0
  14. package/.opencode/agents/frontend-engineer.yml +12 -0
  15. package/.opencode/agents/frontend-ui-ux-engineer.yml +12 -0
  16. package/.opencode/agents/git-workflow.yml +15 -0
  17. package/.opencode/agents/growth-strategist.yml +12 -0
  18. package/.opencode/agents/hermes-agent.yml +12 -0
  19. package/.opencode/agents/inference-improve.yml +12 -0
  20. package/.opencode/agents/lint.yml +14 -0
  21. package/.opencode/agents/log-monitor.yml +12 -0
  22. package/.opencode/agents/mobile-developer.yml +12 -0
  23. package/.opencode/agents/model-health-check.yml +12 -0
  24. package/.opencode/agents/multimodal-looker.yml +12 -0
  25. package/.opencode/agents/performance-analysis.yml +12 -0
  26. package/.opencode/agents/performance-engineer.yml +12 -0
  27. package/.opencode/agents/performance-optimization.yml +12 -0
  28. package/.opencode/agents/processor-pipeline.yml +14 -0
  29. package/.opencode/agents/project-analysis.yml +12 -0
  30. package/.opencode/agents/refactorer.yml +12 -0
  31. package/.opencode/agents/researcher.yml +12 -0
  32. package/.opencode/agents/security-auditor.yml +12 -0
  33. package/.opencode/agents/security-scan.yml +12 -0
  34. package/.opencode/agents/seo-consultant.yml +12 -0
  35. package/.opencode/agents/session-management.yml +12 -0
  36. package/.opencode/agents/state-manager.yml +12 -0
  37. package/.opencode/agents/storyteller.yml +12 -0
  38. package/.opencode/agents/strategist.yml +12 -0
  39. package/.opencode/agents/tech-writer.yml +12 -0
  40. package/.opencode/agents/testing-best-practices.yml +12 -0
  41. package/.opencode/agents/testing-lead.yml +12 -0
  42. package/.opencode/agents/ui-ux-design.yml +12 -0
  43. package/.opencode/codex.codex +8 -0
  44. package/.opencode/commands/auto-format.md +99 -0
  45. package/.opencode/commands/auto-summary-capture.md +90 -0
  46. package/.opencode/commands/dependency-audit.md +184 -0
  47. package/.opencode/commands/enforcer-daily-scan.md +137 -0
  48. package/.opencode/commands/framework-compliance-audit.md +205 -0
  49. package/.opencode/commands/interactive-validator.md +75 -0
  50. package/.opencode/commands/job-summary-logger.md +68 -0
  51. package/.opencode/commands/lint.md +11 -0
  52. package/.opencode/commands/mode-switch.md +95 -0
  53. package/.opencode/commands/model-health-check.md +186 -0
  54. package/.opencode/commands/performance-analysis.md +144 -0
  55. package/.opencode/commands/pre-commit-introspection.md +185 -0
  56. package/.opencode/commands/pre-commit-introspection.sh +133 -0
  57. package/.opencode/commands/security-scan.md +157 -0
  58. package/.opencode/commands/sisyphus-validation.md +128 -0
  59. package/.opencode/commands/summary-logger.md +83 -0
  60. package/.opencode/enforcer-config.json +285 -0
  61. package/.opencode/hooks/hook-metrics.json +380 -0
  62. package/.opencode/hooks/post-commit +114 -0
  63. package/.opencode/hooks/post-push +34 -0
  64. package/.opencode/init.sh +151 -0
  65. package/.opencode/skills/api-design/SKILL.md +37 -0
  66. package/.opencode/skills/architect-tools/SKILL.md +37 -0
  67. package/.opencode/skills/architecture-patterns/SKILL.md +37 -0
  68. package/.opencode/skills/auto-format/SKILL.md +37 -0
  69. package/.opencode/skills/backend-engineer/SKILL.md +49 -0
  70. package/.opencode/skills/boot-orchestrator/SKILL.md +37 -0
  71. package/.opencode/skills/bug-triage/SKILL.md +43 -0
  72. package/.opencode/skills/code-analyzer/SKILL.md +45 -0
  73. package/.opencode/skills/code-review/SKILL.md +52 -0
  74. package/.opencode/skills/content-creator/SKILL.md +38 -0
  75. package/.opencode/skills/database-engineer/SKILL.md +46 -0
  76. package/.opencode/skills/devops-engineer/SKILL.md +49 -0
  77. package/.opencode/skills/enforcer/SKILL.md +37 -0
  78. package/.opencode/skills/framework-compliance-audit/SKILL.md +37 -0
  79. package/.opencode/skills/frontend-engineer/SKILL.md +49 -0
  80. package/.opencode/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
  81. package/.opencode/skills/git-workflow/SKILL.md +37 -0
  82. package/.opencode/skills/growth-strategist/SKILL.md +48 -0
  83. package/.opencode/skills/hermes-agent/SKILL.md +212 -0
  84. package/.opencode/skills/inference-improve/SKILL.md +97 -0
  85. package/.opencode/skills/lint/SKILL.md +37 -0
  86. package/.opencode/skills/log-monitor/SKILL.md +44 -0
  87. package/.opencode/skills/mobile-developer/SKILL.md +42 -0
  88. package/.opencode/skills/model-health-check/SKILL.md +37 -0
  89. package/.opencode/skills/multimodal-looker/SKILL.md +45 -0
  90. package/.opencode/skills/orchestrator/SKILL.md +37 -0
  91. package/.opencode/skills/performance-analysis/SKILL.md +37 -0
  92. package/.opencode/skills/performance-engineer/SKILL.md +41 -0
  93. package/.opencode/skills/performance-optimization/SKILL.md +37 -0
  94. package/.opencode/skills/processor-pipeline/SKILL.md +37 -0
  95. package/.opencode/skills/project-analysis/SKILL.md +42 -0
  96. package/.opencode/skills/refactoring-strategies/SKILL.md +37 -0
  97. package/.opencode/skills/registry.json +66 -0
  98. package/.opencode/skills/researcher/SKILL.md +37 -0
  99. package/.opencode/skills/security-audit/SKILL.md +47 -0
  100. package/.opencode/skills/security-scan/SKILL.md +37 -0
  101. package/.opencode/skills/seo-consultant/SKILL.md +43 -0
  102. package/.opencode/skills/session-management/SKILL.md +36 -0
  103. package/.opencode/skills/state-manager/SKILL.md +37 -0
  104. package/.opencode/skills/storyteller/SKILL.md +130 -0
  105. package/.opencode/skills/strategist/SKILL.md +32 -0
  106. package/.opencode/skills/tech-writer/SKILL.md +37 -0
  107. package/.opencode/skills/testing-best-practices/SKILL.md +37 -0
  108. package/.opencode/skills/testing-strategy/SKILL.md +43 -0
  109. package/.opencode/skills/ui-ux-design/SKILL.md +603 -0
  110. package/.opencode/workflows/post-deployment-audit.yml +123 -0
  111. package/AGENTS.md +110 -0
  112. package/LICENSE +21 -0
  113. package/README.md +131 -0
  114. package/dist/AGENTS.md +110 -0
  115. package/dist/CHANGELOG.md +2182 -0
  116. package/dist/LICENSE +21 -0
  117. package/dist/README.md +131 -0
  118. package/dist/agents/architect.js +56 -0
  119. package/dist/agents/backend-engineer.js +81 -0
  120. package/dist/agents/bug-triage-specialist.js +74 -0
  121. package/dist/agents/code-analyzer.js +150 -0
  122. package/dist/agents/code-reviewer.js +69 -0
  123. package/dist/agents/content-creator.js +72 -0
  124. package/dist/agents/database-engineer.js +76 -0
  125. package/dist/agents/devops-engineer.js +84 -0
  126. package/dist/agents/frontend-engineer.js +78 -0
  127. package/dist/agents/frontend-ui-ux-engineer.js +64 -0
  128. package/dist/agents/growth-strategist.js +111 -0
  129. package/dist/agents/index.js +45 -0
  130. package/dist/agents/librarian-agents-updater.js +333 -0
  131. package/dist/agents/log-monitor.js +109 -0
  132. package/dist/agents/mobile-developer.js +102 -0
  133. package/dist/agents/multimodal-looker.js +93 -0
  134. package/dist/agents/performance-engineer.js +86 -0
  135. package/dist/agents/refactorer.js +80 -0
  136. package/dist/agents/registry.js +340 -0
  137. package/dist/agents/researcher.js +83 -0
  138. package/dist/agents/security-auditor.js +158 -0
  139. package/dist/agents/seo-consultant.js +53 -0
  140. package/dist/agents/strategist.js +47 -0
  141. package/dist/agents/tech-writer.js +84 -0
  142. package/dist/agents/testing-lead.js +95 -0
  143. package/dist/agents/types.js +1 -0
  144. package/dist/analytics/consent-manager.js +258 -0
  145. package/dist/analytics/emerging-pattern-detector.js +260 -0
  146. package/dist/analytics/pattern-learning-engine.js +278 -0
  147. package/dist/analytics/pattern-performance-tracker.js +336 -0
  148. package/dist/analytics/predictive-analytics.js +248 -0
  149. package/dist/analytics/prompt-pattern-analyzer.js +371 -0
  150. package/dist/analytics/routing-performance-analyzer.js +356 -0
  151. package/dist/analytics/routing-refiner.js +380 -0
  152. package/dist/analytics/simple-pattern-analyzer.js +297 -0
  153. package/dist/architect/architect-tools.js +437 -0
  154. package/dist/architect/architectural-integrity.js +78 -0
  155. package/dist/benchmark/performance-benchmark.js +372 -0
  156. package/dist/cli/commands/analytics-disable.js +72 -0
  157. package/dist/cli/commands/analytics-enable-action.js +82 -0
  158. package/dist/cli/commands/analytics-preview.js +106 -0
  159. package/dist/cli/commands/analytics-status.js +68 -0
  160. package/dist/cli/commands/antigravity-status.js +106 -0
  161. package/dist/cli/commands/archive-logs.js +161 -0
  162. package/dist/cli/commands/credible-init.js +82 -0
  163. package/dist/cli/commands/grok-install.js +16 -0
  164. package/dist/cli/commands/hermes-install.js +66 -0
  165. package/dist/cli/commands/mcp-install.js +253 -0
  166. package/dist/cli/commands/openclaw-install.js +44 -0
  167. package/dist/cli/commands/opencode-install.js +99 -0
  168. package/dist/cli/commands/plugin-commands.js +246 -0
  169. package/dist/cli/commands/publish-agent.js +184 -0
  170. package/dist/cli/commands/security-audit.js +219 -0
  171. package/dist/cli/commands/skill-install.js +481 -0
  172. package/dist/cli/commands/status.js +196 -0
  173. package/dist/cli/commands/storyteller.js +230 -0
  174. package/dist/cli/index.js +986 -0
  175. package/dist/cli/server.js +147 -0
  176. package/dist/config/default-agents.js +16 -0
  177. package/dist/core/activity-logger.js +260 -0
  178. package/dist/core/adaptive-kernel.js +192 -0
  179. package/dist/core/agent-spawn-gate.js +120 -0
  180. package/dist/core/boot-orchestrator.js +812 -0
  181. package/dist/core/bridge.mjs +945 -0
  182. package/dist/core/codex-formatter.js +220 -0
  183. package/dist/core/codex-injector.js +424 -0
  184. package/dist/core/config-loader.js +148 -0
  185. package/dist/core/config-paths.js +162 -0
  186. package/dist/core/context-loader.js +269 -0
  187. package/dist/core/context-validator.js +212 -0
  188. package/dist/core/features-config.js +457 -0
  189. package/dist/core/framework-logger.js +275 -0
  190. package/dist/core/index.js +6 -0
  191. package/dist/core/kernel-patterns.js +302 -0
  192. package/dist/core/logging-config.js +43 -0
  193. package/dist/core/model-router.js +175 -0
  194. package/dist/core/orchestrator.js +408 -0
  195. package/dist/core/system-prompt-generator.js +265 -0
  196. package/dist/core/trace-context.js +33 -0
  197. package/dist/core/xray-activation.js +134 -0
  198. package/dist/delegation/agent-delegator.js +769 -0
  199. package/dist/delegation/agent-expertise.js +156 -0
  200. package/dist/delegation/analytics/index.js +12 -0
  201. package/dist/delegation/analytics/learning-engine.js +277 -0
  202. package/dist/delegation/analytics/outcome-tracker.js +279 -0
  203. package/dist/delegation/analytics/routing-analytics.js +193 -0
  204. package/dist/delegation/ast-code-parser.js +878 -0
  205. package/dist/delegation/codebase-context-analyzer.js +1040 -0
  206. package/dist/delegation/complexity-analyzer.js +282 -0
  207. package/dist/delegation/complexity-core.js +219 -0
  208. package/dist/delegation/config/types.js +6 -0
  209. package/dist/delegation/dependency-graph-builder.js +409 -0
  210. package/dist/delegation/index.js +20 -0
  211. package/dist/delegation/metrics-aggregator.js +335 -0
  212. package/dist/delegation/session-coordinator.js +352 -0
  213. package/dist/delegation/strategy-selector.js +108 -0
  214. package/dist/delegation/voting-coordinator.js +375 -0
  215. package/dist/delegation/voting-types.js +10 -0
  216. package/dist/delegation/weighted-voting-aggregator.js +194 -0
  217. package/dist/enforcement/core/index.js +19 -0
  218. package/dist/enforcement/core/rule-executor.js +365 -0
  219. package/dist/enforcement/core/rule-hierarchy.js +259 -0
  220. package/dist/enforcement/core/rule-registry.js +240 -0
  221. package/dist/enforcement/core/violation-fixer.js +651 -0
  222. package/dist/enforcement/enforcer-tools.js +909 -0
  223. package/dist/enforcement/index.js +41 -0
  224. package/dist/enforcement/loaders/agent-triage-loader.js +222 -0
  225. package/dist/enforcement/loaders/agents-md-validation-loader.js +252 -0
  226. package/dist/enforcement/loaders/base-loader.js +86 -0
  227. package/dist/enforcement/loaders/codex-loader.js +396 -0
  228. package/dist/enforcement/loaders/index.js +40 -0
  229. package/dist/enforcement/loaders/loader-orchestrator.js +168 -0
  230. package/dist/enforcement/loaders/processor-loader.js +113 -0
  231. package/dist/enforcement/rule-enforcer.js +298 -0
  232. package/dist/enforcement/test-auto-healing.js +325 -0
  233. package/dist/enforcement/types.js +30 -0
  234. package/dist/enforcement/validators/architecture-validators.js +600 -0
  235. package/dist/enforcement/validators/base-validator.js +108 -0
  236. package/dist/enforcement/validators/code-quality-validators.js +336 -0
  237. package/dist/enforcement/validators/index.js +21 -0
  238. package/dist/enforcement/validators/security-validators.js +220 -0
  239. package/dist/enforcement/validators/testing-validators.js +253 -0
  240. package/dist/enforcement/validators/validator-registry.js +150 -0
  241. package/dist/execution/opencode-cli-invoker.js +173 -0
  242. package/dist/execution/proposal-applier.js +254 -0
  243. package/dist/governance/codex-policy.service.js +167 -0
  244. package/dist/governance/governance-core.js +152 -0
  245. package/dist/governance/governance-service.js +274 -0
  246. package/dist/governance/governance-types.js +6 -0
  247. package/dist/index.js +24 -0
  248. package/dist/inference/deploy-verifier.js +161 -0
  249. package/dist/inference/index.js +5 -0
  250. package/dist/inference/inference-accumulator.js +126 -0
  251. package/dist/inference/inference-cycle.js +1168 -0
  252. package/dist/inference/semantic-patterns.js +310 -0
  253. package/dist/inference/session-capture.js +308 -0
  254. package/dist/integrations/base/ExampleIntegration.js +181 -0
  255. package/dist/integrations/base/Integration.js +395 -0
  256. package/dist/integrations/base/README.md +446 -0
  257. package/dist/integrations/base/index.js +16 -0
  258. package/dist/integrations/base/registry.js +606 -0
  259. package/dist/integrations/base/types.js +118 -0
  260. package/dist/integrations/governance/governance-client.js +316 -0
  261. package/dist/integrations/governance/index.js +373 -0
  262. package/dist/integrations/governance/types.js +97 -0
  263. package/dist/integrations/grok/grok-cli.js +83 -0
  264. package/dist/integrations/grok/hooks/pre-tool-use.js +134 -0
  265. package/dist/integrations/grok/plugin/0xray/.mcp.json +15 -0
  266. package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
  267. package/dist/integrations/hermes-agent/__init__.py +718 -0
  268. package/dist/integrations/hermes-agent/after-install.md +71 -0
  269. package/dist/integrations/hermes-agent/bridge.mjs +861 -0
  270. package/dist/integrations/hermes-agent/conftest.py +14 -0
  271. package/dist/integrations/hermes-agent/plugin.yaml +12 -0
  272. package/dist/integrations/hermes-agent/schemas.py +100 -0
  273. package/dist/integrations/hermes-agent/test_plugin.py +1100 -0
  274. package/dist/integrations/hermes-agent/tools.py +253 -0
  275. package/dist/integrations/openclaw/README.md +134 -0
  276. package/dist/integrations/openclaw/api-server.js +389 -0
  277. package/dist/integrations/openclaw/client.js +492 -0
  278. package/dist/integrations/openclaw/config.js +374 -0
  279. package/dist/integrations/openclaw/hooks/strray-hooks.js +280 -0
  280. package/dist/integrations/openclaw/index.js +351 -0
  281. package/dist/integrations/openclaw/types.js +153 -0
  282. package/dist/integrations/plugins/index.js +10 -0
  283. package/dist/integrations/plugins/plugin-integration.js +606 -0
  284. package/dist/integrations/plugins/plugin-registry.js +580 -0
  285. package/dist/mcps/agent-resolver.js +106 -0
  286. package/dist/mcps/architect-tools.server.js +277 -0
  287. package/dist/mcps/auto-format.server.js +413 -0
  288. package/dist/mcps/boot-orchestrator.server.js +853 -0
  289. package/dist/mcps/config/config-loader.js +103 -0
  290. package/dist/mcps/config/config-validator.js +101 -0
  291. package/dist/mcps/config/index.js +30 -0
  292. package/dist/mcps/config/plugin-server-registry.js +223 -0
  293. package/dist/mcps/config/server-config-registry.js +348 -0
  294. package/dist/mcps/connection/connection-manager.js +79 -0
  295. package/dist/mcps/connection/connection-pool.js +164 -0
  296. package/dist/mcps/connection/mcp-connection.js +233 -0
  297. package/dist/mcps/connection/process-spawner.js +34 -0
  298. package/dist/mcps/enforcer-tools.server.js +778 -0
  299. package/dist/mcps/estimation.server.js +192 -0
  300. package/dist/mcps/framework-compliance-audit.server.js +500 -0
  301. package/dist/mcps/framework-help.server.js +400 -0
  302. package/dist/mcps/governance.server.js +464 -0
  303. package/dist/mcps/in-process-skill-registry.js +48 -0
  304. package/dist/mcps/knowledge-skills/api-design.server.js +123 -0
  305. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +113 -0
  306. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +474 -0
  307. package/dist/mcps/knowledge-skills/code-analyzer.server.js +605 -0
  308. package/dist/mcps/knowledge-skills/code-review.server.js +847 -0
  309. package/dist/mcps/knowledge-skills/content-creator.server.js +256 -0
  310. package/dist/mcps/knowledge-skills/database-design.server.js +822 -0
  311. package/dist/mcps/knowledge-skills/devops-deployment.server.js +1180 -0
  312. package/dist/mcps/knowledge-skills/git-workflow.server.js +115 -0
  313. package/dist/mcps/knowledge-skills/growth-strategist.server.js +361 -0
  314. package/dist/mcps/knowledge-skills/log-monitor.server.js +451 -0
  315. package/dist/mcps/knowledge-skills/mobile-development.server.js +525 -0
  316. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1063 -0
  317. package/dist/mcps/knowledge-skills/performance-optimization.server.js +1587 -0
  318. package/dist/mcps/knowledge-skills/project-analysis.server.js +811 -0
  319. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +796 -0
  320. package/dist/mcps/knowledge-skills/security-audit.server.js +846 -0
  321. package/dist/mcps/knowledge-skills/seo-consultant.server.js +937 -0
  322. package/dist/mcps/knowledge-skills/session-management.server.js +470 -0
  323. package/dist/mcps/knowledge-skills/skill-invocation.server.js +729 -0
  324. package/dist/mcps/knowledge-skills/strategist.server.js +217 -0
  325. package/dist/mcps/knowledge-skills/tech-writer.server.js +1191 -0
  326. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +866 -0
  327. package/dist/mcps/knowledge-skills/testing-strategy.server.js +827 -0
  328. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1538 -0
  329. package/dist/mcps/lint.server.js +381 -0
  330. package/dist/mcps/mcp-client.js +574 -0
  331. package/dist/mcps/model-health-check.server.js +228 -0
  332. package/dist/mcps/orchestrator/config/agent-capabilities.js +87 -0
  333. package/dist/mcps/orchestrator/execution/execution-planner.js +279 -0
  334. package/dist/mcps/orchestrator/handlers/complexity-handler.js +94 -0
  335. package/dist/mcps/orchestrator/handlers/status-handler.js +232 -0
  336. package/dist/mcps/orchestrator/handlers/task-handler.js +197 -0
  337. package/dist/mcps/orchestrator/server.js +305 -0
  338. package/dist/mcps/orchestrator/types.js +6 -0
  339. package/dist/mcps/orchestrator.server.js +19 -0
  340. package/dist/mcps/performance-analysis.server.js +519 -0
  341. package/dist/mcps/processor-pipeline.server.js +561 -0
  342. package/dist/mcps/protocol/protocol-constants.js +46 -0
  343. package/dist/mcps/registry.json +110 -0
  344. package/dist/mcps/researcher.server.js +504 -0
  345. package/dist/mcps/security-scan.server.js +531 -0
  346. package/dist/mcps/simulation/index.js +12 -0
  347. package/dist/mcps/simulation/server-simulations.js +219 -0
  348. package/dist/mcps/simulation/simulation-engine.js +96 -0
  349. package/dist/mcps/state-manager.server.js +637 -0
  350. package/dist/mcps/tools/index.js +14 -0
  351. package/dist/mcps/tools/tool-cache.js +112 -0
  352. package/dist/mcps/tools/tool-discovery.js +65 -0
  353. package/dist/mcps/tools/tool-executor.js +75 -0
  354. package/dist/mcps/tools/tool-registry.js +67 -0
  355. package/dist/mcps/types/index.js +15 -0
  356. package/dist/mcps/types/json-rpc.types.js +7 -0
  357. package/dist/mcps/types/mcp.types.js +7 -0
  358. package/dist/metrics/agent-metrics.js +574 -0
  359. package/dist/metrics/index.js +6 -0
  360. package/dist/monitoring/advanced-profiler.js +232 -0
  361. package/dist/monitoring/memory-monitor.js +315 -0
  362. package/dist/monitoring/nudge-watchdog.js +356 -0
  363. package/dist/monitoring/test-auto-generation-monitor.js +157 -0
  364. package/dist/orchestrator/agent-spawn-governor.js +559 -0
  365. package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +399 -0
  366. package/dist/orchestrator/intelligent-commit-batcher.js +353 -0
  367. package/dist/orchestrator/multi-agent-orchestration-coordinator.js +456 -0
  368. package/dist/orchestrator/orchestrator.js +657 -0
  369. package/dist/orchestrator/self-direction-activation.js +245 -0
  370. package/dist/orchestrator/universal-librarian-consultation.js +216 -0
  371. package/dist/orchestrator/universal-registry-bridge.js +247 -0
  372. package/dist/performance/performance-budget-enforcer.js +434 -0
  373. package/dist/performance/performance-regression-tester.js +342 -0
  374. package/dist/plugin/xray-codex-injection.js +857 -0
  375. package/dist/postprocessor/PostProcessor.js +1048 -0
  376. package/dist/postprocessor/analysis/FailureAnalysisEngine.js +245 -0
  377. package/dist/postprocessor/autofix/AutoFixEngine.js +254 -0
  378. package/dist/postprocessor/autofix/FixValidator.js +56 -0
  379. package/dist/postprocessor/config.js +65 -0
  380. package/dist/postprocessor/escalation/EscalationEngine.js +492 -0
  381. package/dist/postprocessor/monitoring/MonitoringEngine.js +125 -0
  382. package/dist/postprocessor/redeploy/RedeployCoordinator.js +342 -0
  383. package/dist/postprocessor/services/RegressionAnalysisService.js +131 -0
  384. package/dist/postprocessor/success/SuccessHandler.js +134 -0
  385. package/dist/postprocessor/triggers/APITrigger.js +115 -0
  386. package/dist/postprocessor/triggers/GitHookTrigger.js +551 -0
  387. package/dist/postprocessor/triggers/WebhookTrigger.js +211 -0
  388. package/dist/postprocessor/types.js +4 -0
  389. package/dist/processors/doc-write-guard.js +46 -0
  390. package/dist/processors/implementations/agents-md-validation-processor.js +286 -0
  391. package/dist/processors/implementations/async-pattern-processor.js +158 -0
  392. package/dist/processors/implementations/codex-compliance-processor.js +57 -0
  393. package/dist/processors/implementations/commit-batcher-processor.js +71 -0
  394. package/dist/processors/implementations/console-log-guard-processor.js +163 -0
  395. package/dist/processors/implementations/coverage-analysis-processor.js +138 -0
  396. package/dist/processors/implementations/error-boundary-processor.js +44 -0
  397. package/dist/processors/implementations/inference-improvement-processor.js +270 -0
  398. package/dist/processors/implementations/log-protection-processor.js +118 -0
  399. package/dist/processors/implementations/nudge-processor.js +130 -0
  400. package/dist/processors/implementations/performance-budget-processor.js +217 -0
  401. package/dist/processors/implementations/postprocessor-chain-validator.js +149 -0
  402. package/dist/processors/implementations/pre-validate-processor.js +18 -0
  403. package/dist/processors/implementations/publish-preflight-processor.js +249 -0
  404. package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +33 -0
  405. package/dist/processors/implementations/refactoring-logging-processor.js +96 -0
  406. package/dist/processors/implementations/regression-testing-processor.js +59 -0
  407. package/dist/processors/implementations/session-capture-processor.js +37 -0
  408. package/dist/processors/implementations/session-summary-processor.js +130 -0
  409. package/dist/processors/implementations/spawn-governance-processor.js +219 -0
  410. package/dist/processors/implementations/state-validation-processor.js +15 -0
  411. package/dist/processors/implementations/storytelling-trigger-processor.js +589 -0
  412. package/dist/processors/implementations/test-auto-creation-processor.js +484 -0
  413. package/dist/processors/implementations/test-execution-processor.js +132 -0
  414. package/dist/processors/implementations/typescript-compilation-processor.js +87 -0
  415. package/dist/processors/implementations/version-compliance-processor.js +350 -0
  416. package/dist/processors/processor-interfaces.js +126 -0
  417. package/dist/processors/processor-manager.js +826 -0
  418. package/dist/processors/processor-types.js +12 -0
  419. package/dist/public/about.html +228 -0
  420. package/dist/public/enterprise.html +27 -0
  421. package/dist/public/features.html +102 -0
  422. package/dist/public/index.html +145 -0
  423. package/dist/reporting/framework-reporting-system.js +187 -0
  424. package/dist/reporting/log-parser.js +281 -0
  425. package/dist/reporting/metrics.js +202 -0
  426. package/dist/reporting/report-formatter.js +146 -0
  427. package/dist/reporting/types.js +1 -0
  428. package/dist/scripts/activate-kernel-pipeline.js +101 -0
  429. package/dist/scripts/integration.js +234 -0
  430. package/dist/scripts/pre-command +26 -0
  431. package/dist/scripts/pre-command.mjs +358 -0
  432. package/dist/security/comprehensive-security-audit.js +1005 -0
  433. package/dist/security/index.js +13 -0
  434. package/dist/security/prompt-security-validator.js +148 -0
  435. package/dist/security/security-agent-coordinator.js +204 -0
  436. package/dist/security/security-auditor.js +584 -0
  437. package/dist/security/security-hardener.js +170 -0
  438. package/dist/security/security-hardening-system.js +727 -0
  439. package/dist/security/security-headers.js +118 -0
  440. package/dist/security/security-orchestration-layer.js +496 -0
  441. package/dist/security/security-scanner.js +429 -0
  442. package/dist/services/inference-tuner.js +301 -0
  443. package/dist/session/index.js +3 -0
  444. package/dist/session/session-cleanup-manager.js +366 -0
  445. package/dist/session/session-monitor.js +503 -0
  446. package/dist/session/session-state-manager.js +522 -0
  447. package/dist/skills/api-design/SKILL.md +37 -0
  448. package/dist/skills/architect-tools/SKILL.md +37 -0
  449. package/dist/skills/architecture-patterns/SKILL.md +37 -0
  450. package/dist/skills/auto-format/SKILL.md +37 -0
  451. package/dist/skills/backend-engineer/SKILL.md +49 -0
  452. package/dist/skills/boot-orchestrator/SKILL.md +37 -0
  453. package/dist/skills/bug-triage/SKILL.md +43 -0
  454. package/dist/skills/code-analyzer/SKILL.md +45 -0
  455. package/dist/skills/code-review/SKILL.md +52 -0
  456. package/dist/skills/content-creator/SKILL.md +38 -0
  457. package/dist/skills/database-engineer/SKILL.md +46 -0
  458. package/dist/skills/devops-engineer/SKILL.md +49 -0
  459. package/dist/skills/enforcer/SKILL.md +37 -0
  460. package/dist/skills/framework-compliance-audit/SKILL.md +37 -0
  461. package/dist/skills/frontend-engineer/SKILL.md +49 -0
  462. package/dist/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
  463. package/dist/skills/git-workflow/SKILL.md +37 -0
  464. package/dist/skills/growth-strategist/SKILL.md +48 -0
  465. package/dist/skills/hermes-agent/SKILL.md +212 -0
  466. package/dist/skills/inference-improve/SKILL.md +97 -0
  467. package/dist/skills/lint/SKILL.md +37 -0
  468. package/dist/skills/log-monitor/SKILL.md +44 -0
  469. package/dist/skills/mobile-developer/SKILL.md +42 -0
  470. package/dist/skills/model-health-check/SKILL.md +37 -0
  471. package/dist/skills/multimodal-looker/SKILL.md +45 -0
  472. package/dist/skills/orchestrator/SKILL.md +37 -0
  473. package/dist/skills/performance-analysis/SKILL.md +37 -0
  474. package/dist/skills/performance-engineer/SKILL.md +41 -0
  475. package/dist/skills/performance-optimization/SKILL.md +37 -0
  476. package/dist/skills/processor-pipeline/SKILL.md +37 -0
  477. package/dist/skills/project-analysis/SKILL.md +42 -0
  478. package/dist/skills/refactoring-strategies/SKILL.md +37 -0
  479. package/dist/skills/registry.json +66 -0
  480. package/dist/skills/researcher/SKILL.md +37 -0
  481. package/dist/skills/security-audit/SKILL.md +48 -0
  482. package/dist/skills/security-scan/SKILL.md +37 -0
  483. package/dist/skills/seo-consultant/SKILL.md +43 -0
  484. package/dist/skills/session-management/SKILL.md +36 -0
  485. package/dist/skills/state-manager/SKILL.md +37 -0
  486. package/dist/skills/storyteller/SKILL.md +130 -0
  487. package/dist/skills/strategist/SKILL.md +32 -0
  488. package/dist/skills/tech-writer/SKILL.md +37 -0
  489. package/dist/skills/testing-best-practices/SKILL.md +37 -0
  490. package/dist/skills/testing-strategy/SKILL.md +43 -0
  491. package/dist/skills/ui-ux-design/SKILL.md +603 -0
  492. package/dist/state/context-providers.js +1 -0
  493. package/dist/state/index.js +7 -0
  494. package/dist/state/state-manager.js +208 -0
  495. package/dist/state/state-types.js +1 -0
  496. package/dist/testing/memory-regression-suite.js +258 -0
  497. package/dist/utils/batch-operations.js +292 -0
  498. package/dist/utils/codex-parser.js +445 -0
  499. package/dist/utils/command-runner.js +96 -0
  500. package/dist/utils/import-resolver.js +189 -0
  501. package/dist/utils/language-detector.js +383 -0
  502. package/dist/utils/path-resolver.js +112 -0
  503. package/dist/utils/shutdown-handler.js +75 -0
  504. package/dist/utils/test-template-generator.js +178 -0
  505. package/dist/utils/token-manager.js +163 -0
  506. package/dist/validation/estimation-validator.js +241 -0
  507. package/dist/validation/report-content-validator.js +218 -0
  508. package/opencode.json +153 -0
  509. package/package.json +170 -0
  510. package/scripts/helpers/resolve-config-path.cjs +57 -0
  511. package/scripts/helpers/resolve-config-path.mjs +73 -0
  512. package/scripts/hooks/pre-command +26 -0
  513. package/scripts/hooks/pre-command.mjs +358 -0
  514. package/scripts/hooks/run-hook.js +570 -0
  515. package/scripts/mjs/test-consumer-readiness.mjs +273 -0
  516. package/scripts/mjs/test-mcp-functionality.mjs +507 -0
  517. package/scripts/mjs/validate-mcp-connectivity.cjs +75 -0
  518. package/scripts/mjs/validate-postinstall-config.mjs +308 -0
  519. package/scripts/node/auto-reflection-generator.mjs +496 -0
  520. package/scripts/node/basic-security-audit.cjs +338 -0
  521. package/scripts/node/ci-cd-auto-fix.cjs +263 -0
  522. package/scripts/node/ci-report-generator.mjs +227 -0
  523. package/scripts/node/enforce-agents-md.mjs +420 -0
  524. package/scripts/node/enforce-version-compliance.sh +22 -0
  525. package/scripts/node/enforce-version-compliance.ts +126 -0
  526. package/scripts/node/github-actions-monitor.cjs +23 -0
  527. package/scripts/node/govern-reflection.mjs +160 -0
  528. package/scripts/node/postinstall.cjs +78 -0
  529. package/scripts/node/pre-publish-guard.js +267 -0
  530. package/scripts/node/prepare-consumer.cjs +143 -0
  531. package/scripts/node/reflection-processor.cjs +213 -0
  532. package/scripts/node/reflection-validate.sh +194 -0
  533. package/scripts/node/release-tweet.mjs +39 -0
  534. package/scripts/node/release.js +159 -0
  535. package/scripts/node/release.mjs +213 -0
  536. package/scripts/node/setup-dev.cjs +83 -0
  537. package/scripts/node/setup.cjs +214 -0
  538. package/scripts/node/sync-versions.mjs +140 -0
  539. package/scripts/node/universal-version-manager.js +1025 -0
  540. package/scripts/node/validate-external-processes.js +265 -0
  541. package/scripts/node/validate-mcp-connectivity.js +258 -0
  542. package/scripts/node/version-manager.mjs +524 -0
  543. package/scripts/validate-stringray-comprehensive.js +636 -0
  544. package/src/integrations/grok/plugin/0xray/.mcp.json +15 -0
  545. package/src/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
  546. package/src/mcps/agent-resolver.ts +168 -0
  547. package/src/mcps/architect-tools.server.ts +343 -0
  548. package/src/mcps/auto-format.server.ts +529 -0
  549. package/src/mcps/boot-orchestrator.server.ts +1082 -0
  550. package/src/mcps/config/__tests__/config-loader.test.ts +338 -0
  551. package/src/mcps/config/__tests__/config-validator.test.ts +646 -0
  552. package/src/mcps/config/__tests__/server-config-registry.test.ts +257 -0
  553. package/src/mcps/config/config-loader.ts +127 -0
  554. package/src/mcps/config/config-validator.ts +127 -0
  555. package/src/mcps/config/index.ts +32 -0
  556. package/src/mcps/config/plugin-server-registry.ts +335 -0
  557. package/src/mcps/config/server-config-registry.ts +395 -0
  558. package/src/mcps/connection/connection-manager.ts +91 -0
  559. package/src/mcps/connection/connection-pool.ts +216 -0
  560. package/src/mcps/connection/mcp-connection.ts +327 -0
  561. package/src/mcps/connection/process-spawner.ts +47 -0
  562. package/src/mcps/enforcer-tools.server.ts +1106 -0
  563. package/src/mcps/estimation.server.ts +229 -0
  564. package/src/mcps/framework-compliance-audit.server.ts +635 -0
  565. package/src/mcps/framework-help.server.ts +467 -0
  566. package/src/mcps/governance.server.ts +551 -0
  567. package/src/mcps/in-process-skill-registry.ts +79 -0
  568. package/src/mcps/knowledge-skills/api-design.server.test.ts +41 -0
  569. package/src/mcps/knowledge-skills/api-design.server.ts +160 -0
  570. package/src/mcps/knowledge-skills/architecture-patterns.server.ts +152 -0
  571. package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +624 -0
  572. package/src/mcps/knowledge-skills/code-analyzer.server.test.ts +129 -0
  573. package/src/mcps/knowledge-skills/code-analyzer.server.ts +591 -0
  574. package/src/mcps/knowledge-skills/code-review.server.ts +1132 -0
  575. package/src/mcps/knowledge-skills/content-creator.server.ts +300 -0
  576. package/src/mcps/knowledge-skills/database-design.server.ts +1200 -0
  577. package/src/mcps/knowledge-skills/devops-deployment.server.ts +1622 -0
  578. package/src/mcps/knowledge-skills/git-workflow.server.ts +152 -0
  579. package/src/mcps/knowledge-skills/growth-strategist.server.ts +413 -0
  580. package/src/mcps/knowledge-skills/log-monitor.server.ts +619 -0
  581. package/src/mcps/knowledge-skills/mobile-development.server.ts +672 -0
  582. package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1500 -0
  583. package/src/mcps/knowledge-skills/performance-optimization.server.ts +2065 -0
  584. package/src/mcps/knowledge-skills/project-analysis.server.ts +1111 -0
  585. package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +1092 -0
  586. package/src/mcps/knowledge-skills/security-audit.server.test.ts +112 -0
  587. package/src/mcps/knowledge-skills/security-audit.server.ts +1193 -0
  588. package/src/mcps/knowledge-skills/seo-consultant.server.ts +1160 -0
  589. package/src/mcps/knowledge-skills/session-management.server.ts +576 -0
  590. package/src/mcps/knowledge-skills/skill-invocation.server.ts +941 -0
  591. package/src/mcps/knowledge-skills/strategist.server.ts +267 -0
  592. package/src/mcps/knowledge-skills/tech-writer.server.ts +1638 -0
  593. package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +136 -0
  594. package/src/mcps/knowledge-skills/testing-best-practices.server.ts +1232 -0
  595. package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +100 -0
  596. package/src/mcps/knowledge-skills/testing-strategy.server.ts +1172 -0
  597. package/src/mcps/knowledge-skills/ui-ux-design.server.ts +2076 -0
  598. package/src/mcps/lint.server.ts +483 -0
  599. package/src/mcps/mcp-client.ts +706 -0
  600. package/src/mcps/model-health-check.server.ts +292 -0
  601. package/src/mcps/orchestrator/config/agent-capabilities.ts +108 -0
  602. package/src/mcps/orchestrator/execution/execution-planner.ts +353 -0
  603. package/src/mcps/orchestrator/handlers/complexity-handler.ts +125 -0
  604. package/src/mcps/orchestrator/handlers/status-handler.ts +295 -0
  605. package/src/mcps/orchestrator/handlers/task-handler.ts +268 -0
  606. package/src/mcps/orchestrator/server.ts +388 -0
  607. package/src/mcps/orchestrator/types.ts +81 -0
  608. package/src/mcps/orchestrator.server.ts +34 -0
  609. package/src/mcps/performance-analysis.server.ts +715 -0
  610. package/src/mcps/processor-pipeline.server.ts +778 -0
  611. package/src/mcps/protocol/protocol-constants.ts +51 -0
  612. package/src/mcps/registry.json +110 -0
  613. package/src/mcps/researcher.server.ts +595 -0
  614. package/src/mcps/security-scan.server.ts +651 -0
  615. package/src/mcps/simulation/__tests__/simulation-engine.test.ts +275 -0
  616. package/src/mcps/simulation/index.ts +23 -0
  617. package/src/mcps/simulation/server-simulations.ts +241 -0
  618. package/src/mcps/simulation/simulation-engine.ts +126 -0
  619. package/src/mcps/state-manager.server.ts +777 -0
  620. package/src/mcps/tools/__tests__/tool-cache.test.ts +205 -0
  621. package/src/mcps/tools/__tests__/tool-discovery.test.ts +189 -0
  622. package/src/mcps/tools/__tests__/tool-executor.test.ts +215 -0
  623. package/src/mcps/tools/__tests__/tool-registry.test.ts +230 -0
  624. package/src/mcps/tools/index.ts +15 -0
  625. package/src/mcps/tools/tool-cache.ts +145 -0
  626. package/src/mcps/tools/tool-discovery.ts +83 -0
  627. package/src/mcps/tools/tool-executor.ts +106 -0
  628. package/src/mcps/tools/tool-registry.ts +78 -0
  629. package/src/mcps/types/__tests__/types.test.ts +341 -0
  630. package/src/mcps/types/index.ts +17 -0
  631. package/src/mcps/types/json-rpc.types.ts +38 -0
  632. package/src/mcps/types/mcp.types.ts +115 -0
  633. package/src/opencode/agents/api-design.yml +31 -0
  634. package/src/opencode/agents/architect.yml +15 -0
  635. package/src/opencode/agents/architecture-patterns.yml +14 -0
  636. package/src/opencode/agents/auto-format.yml +14 -0
  637. package/src/opencode/agents/backend-engineer.yml +12 -0
  638. package/src/opencode/agents/boot-orchestrator.yml +14 -0
  639. package/src/opencode/agents/bug-triage-specialist.yml +15 -0
  640. package/src/opencode/agents/code-analyzer.yml +12 -0
  641. package/src/opencode/agents/code-reviewer.yml +14 -0
  642. package/src/opencode/agents/content-creator.yml +12 -0
  643. package/src/opencode/agents/database-engineer.yml +12 -0
  644. package/src/opencode/agents/devops-engineer.yml +12 -0
  645. package/src/opencode/agents/framework-compliance-audit.yml +14 -0
  646. package/src/opencode/agents/frontend-engineer.yml +12 -0
  647. package/src/opencode/agents/frontend-ui-ux-engineer.yml +12 -0
  648. package/src/opencode/agents/git-workflow.yml +15 -0
  649. package/src/opencode/agents/growth-strategist.yml +12 -0
  650. package/src/opencode/agents/hermes-agent.yml +12 -0
  651. package/src/opencode/agents/inference-improve.yml +12 -0
  652. package/src/opencode/agents/lint.yml +14 -0
  653. package/src/opencode/agents/log-monitor.yml +12 -0
  654. package/src/opencode/agents/mobile-developer.yml +12 -0
  655. package/src/opencode/agents/model-health-check.yml +12 -0
  656. package/src/opencode/agents/multimodal-looker.yml +12 -0
  657. package/src/opencode/agents/performance-analysis.yml +12 -0
  658. package/src/opencode/agents/performance-engineer.yml +12 -0
  659. package/src/opencode/agents/performance-optimization.yml +12 -0
  660. package/src/opencode/agents/processor-pipeline.yml +14 -0
  661. package/src/opencode/agents/project-analysis.yml +12 -0
  662. package/src/opencode/agents/refactorer.yml +12 -0
  663. package/src/opencode/agents/researcher.yml +12 -0
  664. package/src/opencode/agents/security-auditor.yml +12 -0
  665. package/src/opencode/agents/security-scan.yml +12 -0
  666. package/src/opencode/agents/seo-consultant.yml +12 -0
  667. package/src/opencode/agents/session-management.yml +12 -0
  668. package/src/opencode/agents/state-manager.yml +12 -0
  669. package/src/opencode/agents/storyteller.yml +12 -0
  670. package/src/opencode/agents/strategist.yml +12 -0
  671. package/src/opencode/agents/tech-writer.yml +12 -0
  672. package/src/opencode/agents/testing-best-practices.yml +12 -0
  673. package/src/opencode/agents/testing-lead.yml +12 -0
  674. package/src/opencode/agents/ui-ux-design.yml +12 -0
  675. package/src/opencode/codex.codex +8 -0
  676. package/src/opencode/commands/auto-format.md +99 -0
  677. package/src/opencode/commands/auto-summary-capture.md +90 -0
  678. package/src/opencode/commands/dependency-audit.md +184 -0
  679. package/src/opencode/commands/enforcer-daily-scan.md +137 -0
  680. package/src/opencode/commands/framework-compliance-audit.md +205 -0
  681. package/src/opencode/commands/interactive-validator.md +75 -0
  682. package/src/opencode/commands/job-summary-logger.md +68 -0
  683. package/src/opencode/commands/lint.md +11 -0
  684. package/src/opencode/commands/mode-switch.md +95 -0
  685. package/src/opencode/commands/model-health-check.md +186 -0
  686. package/src/opencode/commands/performance-analysis.md +144 -0
  687. package/src/opencode/commands/pre-commit-introspection.md +185 -0
  688. package/src/opencode/commands/pre-commit-introspection.sh +133 -0
  689. package/src/opencode/commands/security-scan.md +157 -0
  690. package/src/opencode/commands/sisyphus-validation.md +128 -0
  691. package/src/opencode/commands/summary-logger.md +83 -0
  692. package/src/opencode/enforcer-config.json +285 -0
  693. package/src/opencode/openclaw/config.json +25 -0
  694. package/src/opencode/workflows/post-deployment-audit.yml +123 -0
  695. package/src/skills/api-design/SKILL.md +37 -0
  696. package/src/skills/architect-tools/SKILL.md +37 -0
  697. package/src/skills/architecture-patterns/SKILL.md +37 -0
  698. package/src/skills/auto-format/SKILL.md +37 -0
  699. package/src/skills/backend-engineer/SKILL.md +49 -0
  700. package/src/skills/boot-orchestrator/SKILL.md +37 -0
  701. package/src/skills/bug-triage/SKILL.md +43 -0
  702. package/src/skills/code-analyzer/SKILL.md +45 -0
  703. package/src/skills/code-review/SKILL.md +52 -0
  704. package/src/skills/content-creator/SKILL.md +38 -0
  705. package/src/skills/database-engineer/SKILL.md +46 -0
  706. package/src/skills/devops-engineer/SKILL.md +49 -0
  707. package/src/skills/enforcer/SKILL.md +37 -0
  708. package/src/skills/framework-compliance-audit/SKILL.md +37 -0
  709. package/src/skills/frontend-engineer/SKILL.md +49 -0
  710. package/src/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
  711. package/src/skills/git-workflow/SKILL.md +37 -0
  712. package/src/skills/growth-strategist/SKILL.md +48 -0
  713. package/src/skills/hermes-agent/SKILL.md +212 -0
  714. package/src/skills/inference-improve/SKILL.md +97 -0
  715. package/src/skills/lint/SKILL.md +37 -0
  716. package/src/skills/log-monitor/SKILL.md +44 -0
  717. package/src/skills/mobile-developer/SKILL.md +42 -0
  718. package/src/skills/model-health-check/SKILL.md +37 -0
  719. package/src/skills/multimodal-looker/SKILL.md +45 -0
  720. package/src/skills/orchestrator/SKILL.md +37 -0
  721. package/src/skills/performance-analysis/SKILL.md +37 -0
  722. package/src/skills/performance-engineer/SKILL.md +41 -0
  723. package/src/skills/performance-optimization/SKILL.md +37 -0
  724. package/src/skills/processor-pipeline/SKILL.md +37 -0
  725. package/src/skills/project-analysis/SKILL.md +42 -0
  726. package/src/skills/refactoring-strategies/SKILL.md +37 -0
  727. package/src/skills/registry.json +66 -0
  728. package/src/skills/researcher/SKILL.md +37 -0
  729. package/src/skills/security-audit/SKILL.md +48 -0
  730. package/src/skills/security-scan/SKILL.md +37 -0
  731. package/src/skills/seo-consultant/SKILL.md +43 -0
  732. package/src/skills/session-management/SKILL.md +36 -0
  733. package/src/skills/state-manager/SKILL.md +37 -0
  734. package/src/skills/storyteller/SKILL.md +130 -0
  735. package/src/skills/strategist/SKILL.md +32 -0
  736. package/src/skills/tech-writer/SKILL.md +37 -0
  737. package/src/skills/testing-best-practices/SKILL.md +37 -0
  738. package/src/skills/testing-strategy/SKILL.md +43 -0
  739. package/src/skills/ui-ux-design/SKILL.md +603 -0
@@ -0,0 +1,1025 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Universal Version Management Script
5
+ *
6
+ * Automatically updates all version references across the xray v2 Framework
7
+ * including framework versions, codex versions, and documentation consistency.
8
+ * Ensures single source of truth for all version information.
9
+ *
10
+ * WHAT IT UPDATES:
11
+ * - Framework version (1.14.1)
12
+ * - Codex version and terms count
13
+ * - Framework counts (agents, skills, MCP servers)
14
+ * - Test counts in README
15
+ *
16
+ * WHAT IT DOESN'T UPDATE:
17
+ * - Historical docs (docs/reflections, docs/archive)
18
+ * - Test files with assertions
19
+ *
20
+ * @version 2.0.0
21
+ * @since 2026-01-15
22
+ * @updated 2026-03-09 - Enhanced with documentation management, validation, and backup
23
+ */
24
+
25
+ import { createRequire } from 'module';
26
+ const require = createRequire(import.meta.url);
27
+
28
+ import fs from "fs";
29
+ import path from "path";
30
+ import { execSync } from "child_process";
31
+
32
+ /**
33
+ * Auto-calculate framework counts from filesystem
34
+ * This ensures counts are always accurate
35
+ */
36
+ /**
37
+ * Count test files in a directory recursively
38
+ */
39
+ function findTestFiles(dir) {
40
+ let count = 0;
41
+ try {
42
+ for (const entry of fs.readdirSync(dir)) {
43
+ const full = path.join(dir, entry);
44
+ const stat = fs.statSync(full);
45
+ if (stat.isDirectory()) {
46
+ count += findTestFiles(full);
47
+ } else if (entry.endsWith(".test.ts") || entry.endsWith(".spec.ts")) {
48
+ count++;
49
+ }
50
+ }
51
+ } catch {}
52
+ return count;
53
+ }
54
+
55
+ function calculateCounts() {
56
+ const counts = {
57
+ agents: 0,
58
+ skills: 0,
59
+ mcpServers: 0,
60
+ tests: 0,
61
+ };
62
+
63
+ try {
64
+ // Count agents from src/opencode/agents/ (source of truth for agent YAMLs)
65
+ const srcAgentsDir = "src/opencode/agents";
66
+ if (fs.existsSync(srcAgentsDir)) {
67
+ counts.agents = fs.readdirSync(srcAgentsDir).filter(f =>
68
+ f.endsWith(".yml")
69
+ ).length;
70
+ }
71
+
72
+ // Count skills from src/skills (source of truth for framework skills)
73
+ const srcSkillsDir = "src/skills";
74
+ if (fs.existsSync(srcSkillsDir)) {
75
+ counts.skills = fs.readdirSync(srcSkillsDir).filter(f => {
76
+ const fullPath = path.join(srcSkillsDir, f);
77
+ return fs.statSync(fullPath).isDirectory();
78
+ }).length;
79
+ }
80
+
81
+ // Count MCP servers (root level + knowledge-skills)
82
+ const mcpsDir = "src/mcps";
83
+ if (fs.existsSync(mcpsDir)) {
84
+ // Count root level servers
85
+ const rootServers = fs.readdirSync(mcpsDir).filter(f =>
86
+ f.endsWith(".server.ts") && !f.includes(".test.")
87
+ ).length;
88
+
89
+ // Count knowledge-skills servers
90
+ const ksDir = path.join(mcpsDir, "knowledge-skills");
91
+ let ksServers = 0;
92
+ if (fs.existsSync(ksDir)) {
93
+ ksServers = fs.readdirSync(ksDir).filter(f =>
94
+ f.endsWith(".server.ts") && !f.includes(".test.")
95
+ ).length;
96
+ }
97
+
98
+ counts.mcpServers = rootServers + ksServers;
99
+ }
100
+
101
+ // Count tests: prefer stored vitest count, then grep as fallback
102
+ try {
103
+ const vitestStatePath = ".opencode/test-count.json";
104
+ if (fs.existsSync(vitestStatePath)) {
105
+ const state = JSON.parse(fs.readFileSync(vitestStatePath, "utf8"));
106
+ if (state.totalTests && state.totalTests > 100) {
107
+ counts.tests = state.totalTests;
108
+ }
109
+ }
110
+ } catch {}
111
+
112
+ if (counts.tests === 0) {
113
+ try {
114
+ const out = execSync(
115
+ "grep -rnE '\\b(it|test)\\s*\\(' src/__tests__/ src/mcps/ src/integrations/ --include='*.test.ts' --include='*.spec.ts' 2>/dev/null | wc -l",
116
+ { encoding: "utf8", timeout: 15000 }
117
+ );
118
+ const count = parseInt(out.trim(), 10);
119
+ if (count > 100) counts.tests = count;
120
+ } catch {}
121
+ }
122
+ } catch (e) {
123
+ console.warn("⚠️ Could not calculate counts:", e.message);
124
+ }
125
+
126
+ return counts;
127
+ }
128
+
129
+ // Auto-calculate counts
130
+ const CALCULATED_COUNTS = calculateCounts();
131
+
132
+ /**
133
+ * Framework version information - SINGLE SOURCE OF TRUTH
134
+ * Version manager updates this, then propagates to all files
135
+ */
136
+ const OFFICIAL_VERSIONS = {
137
+ // Framework version
138
+ framework: {
139
+ version: "1.22.67",
140
+ displayName: "xray: Self-Healing AI Governance OS",
141
+ lastUpdated: "2026-05-19",
142
+ // Counts (auto-calculated, but can be overridden)
143
+ ...CALCULATED_COUNTS,
144
+ },
145
+
146
+ // Codex version
147
+ codex: {
148
+ version: "v1.7.5",
149
+ termsCount: 60, // Total terms defined (including new governance terms 46-60)
150
+ termsDefined: 60, // All terms in codex.json
151
+ termsTarget: 60, // Future goal (now achieved)
152
+ lastUpdated: "2026-03-23",
153
+ },
154
+
155
+ // External dependencies
156
+ dependencies: {
157
+ opencode: "2.14.0",
158
+ },
159
+ };
160
+
161
+ console.log("📊 Auto-calculated counts:");
162
+ console.log(` Agents: ${OFFICIAL_VERSIONS.framework.agents}`);
163
+ console.log(` Skills: ${OFFICIAL_VERSIONS.framework.skills}`);
164
+ console.log(` MCP Servers: ${OFFICIAL_VERSIONS.framework.mcpServers}`);
165
+ console.log(` Tests: ${OFFICIAL_VERSIONS.framework.tests}`);
166
+ console.log(` Codex Terms: ${OFFICIAL_VERSIONS.codex.termsCount}`);
167
+ console.log("");
168
+
169
+ // Simple recursive file finder - necessary for explaining complex directory traversal logic
170
+ function findFiles(
171
+ dir,
172
+ extensions,
173
+ ignoreDirs = [
174
+ "node_modules", ".git", "dist", "build", "temp", "test-install",
175
+ "ci-deploy", "test-config",
176
+ "docs/reflections", "docs/archive", "docs/user-guide", "docs/pipeline-trees",
177
+ "docs/superseded", "docs/commands", "docs/advanced", "docs/session-summary",
178
+ "docs-site", "scripts/mjs", "scripts/test", "scripts/integrations",
179
+ ".opencode/state", // Runtime state data
180
+ "logs", "reports", // Generated logs/reports
181
+
182
+ ],
183
+ ignoreFiles = [
184
+ // npm/package files
185
+ "package-lock.json", ".opencode.json",
186
+ // Test records - keep original
187
+ "SIMULATION_TEST_RESULTS.md",
188
+ "TEST_INVENTORY.md",
189
+ // Version history - don't update
190
+ "CHANGELOG.md", "CHANGELOG-v1.2.0.md",
191
+ // Historical docs
192
+ "DEEP_REFLECTION_*.md",
193
+ "KERNEL_*.md",
194
+ "REFACTORING_LOG.md",
195
+ "stringray-reflection.md",
196
+ "SYSTEM_BUG_INVESTIGATION.md",
197
+ "TEST_*.md",
198
+ "tweet-*.md",
199
+ // Files with old agent names in filename (rename manually if needed)
200
+ "universal-librarian-consultation.ts",
201
+ "librarian-agents-updater.ts",
202
+ ],
203
+ ) {
204
+ const files = [];
205
+
206
+ function walk(currentDir) {
207
+ const items = fs.readdirSync(currentDir);
208
+
209
+ for (const item of items) {
210
+ const fullPath = path.join(currentDir, item);
211
+ const stat = fs.statSync(fullPath);
212
+
213
+ if (stat.isDirectory()) {
214
+ // Check both exact name and partial path match
215
+ const shouldIgnore = ignoreDirs.some(ignored =>
216
+ item === ignored || fullPath.includes(ignored)
217
+ );
218
+ if (!shouldIgnore) {
219
+ walk(fullPath);
220
+ }
221
+ } else {
222
+ const ext = path.extname(item);
223
+ const basename = path.basename(item);
224
+ // Skip ignored files and check extension
225
+ if (!ignoreFiles.includes(basename) && extensions.includes(ext)) {
226
+ files.push(fullPath);
227
+ }
228
+ }
229
+ }
230
+ }
231
+
232
+ walk(dir);
233
+ return files;
234
+ }
235
+
236
+ // Comprehensive update patterns for all version types
237
+ const UPDATE_PATTERNS = [
238
+ // === FRAMEWORK VERSION UPDATES ===
239
+ {
240
+ pattern: /"version": "[0-9]+\.[0-9]+\.[0-9]+"/g,
241
+ replacement: `"version": "${OFFICIAL_VERSIONS.framework.version}"`,
242
+ },
243
+ // MCP server version in server definition objects
244
+ {
245
+ pattern: /version: "[0-9]+\.[0-9]+\.[0-9]+"/g,
246
+ replacement: `version: "${OFFICIAL_VERSIONS.framework.version}"`,
247
+ },
248
+ // MCP server version in name+version objects (e.g., { name: "xxx", version: "x.x.x" })
249
+ {
250
+ pattern: /name: "[^"]+",\s*version: "[0-9]+\.[0-9]+\.[0-9]+"/g,
251
+ replacement: (match) => {
252
+ const nameMatch = match.match(/name: "([^"]+)"/);
253
+ const name = nameMatch ? nameMatch[1] : 'unknown';
254
+ return `name: "${name}", version: "${OFFICIAL_VERSIONS.framework.version}"`;
255
+ },
256
+ },
257
+ // features-config default version
258
+ {
259
+ pattern: /version: "[0-9]+\.[0-9]+\.[0-9]+",\s*$/gm,
260
+ replacement: `version: "${OFFICIAL_VERSIONS.framework.version}",`,
261
+ },
262
+ {
263
+ pattern: /xray Framework v[0-9]+\.[0-9]+\.[0-9]+/g,
264
+ replacement: OFFICIAL_VERSIONS.framework.displayName,
265
+ },
266
+ {
267
+ pattern: /!\[Version\]\(https:\/\/img\.shields\.io\/badge\/version-[0-9]+\.[0-9]+\.[0-9]+/g,
268
+ replacement: `![Version](https://img.shields.io/badge/version-${OFFICIAL_VERSIONS.framework.version}`,
269
+ },
270
+ {
271
+ pattern: /- Framework Version: [0-9]+\.[0-9]+\.[0-9]+/g,
272
+ replacement: `- Framework Version: ${OFFICIAL_VERSIONS.framework.version}`,
273
+ },
274
+ // CLI Version pattern
275
+ {
276
+ pattern: /\.version\("[0-9]+\.[0-9]+\.[0-9]+"\)/g,
277
+ replacement: `.version("${OFFICIAL_VERSIONS.framework.version}")`,
278
+ },
279
+ {
280
+ pattern: /Framework Version: xray v[0-9]+\.[0-9]+\.[0-9]+/g,
281
+ replacement: `Framework Version: ${OFFICIAL_VERSIONS.framework.displayName}`,
282
+ },
283
+
284
+ // Simple version patterns
285
+ {
286
+ pattern: /xray v[0-9]+\.[0-9]+\.[0-9]+/g,
287
+ replacement: OFFICIAL_VERSIONS.framework.displayName,
288
+ },
289
+ // Standalone version in docs (v1.15.6, v1.15.6 patterns)
290
+ {
291
+ pattern: /v1\.14\.[0-9]+/g,
292
+ replacement: `v${OFFICIAL_VERSIONS.framework.version}`,
293
+ },
294
+ {
295
+ pattern: /v1\.9\.[0-9]+/g,
296
+ replacement: `v${OFFICIAL_VERSIONS.framework.version}`,
297
+ },
298
+
299
+ // Pre-commit introspection patterns
300
+ {
301
+ pattern: /xray [0-9]+\.[0-9]+\.[0-9]+ - Pre-commit Introspection/g,
302
+ replacement: `${OFFICIAL_VERSIONS.framework.displayName} - Pre-commit Introspection`,
303
+ },
304
+ {
305
+ pattern: /🔬 xray [0-9]+\.[0-9]+\.[0-9]+ - Pre-commit Introspection/g,
306
+ replacement: `🔬 ${OFFICIAL_VERSIONS.framework.displayName} - Pre-commit Introspection`,
307
+ },
308
+
309
+ // Codex version patterns
310
+ {
311
+ pattern: /"version":"[0-9]+\.[0-9]+\.[0-9]+"/g,
312
+ replacement: `"version":"${OFFICIAL_VERSIONS.framework.version}"`,
313
+ },
314
+ // Codex-specific version (v1.x.x format)
315
+ {
316
+ pattern: /"version":\s*"v[0-9]+\.[0-9]+\.[0-9]+"/g,
317
+ replacement: `"version": "${OFFICIAL_VERSIONS.codex.version}"`,
318
+ },
319
+ {
320
+ pattern: /version:\s*"v[0-9]+\.[0-9]+\.[0-9]+"/g,
321
+ replacement: `version: "${OFFICIAL_VERSIONS.codex.version}"`,
322
+ },
323
+ // codex_version field
324
+ {
325
+ pattern: /"codex_version":\s*"v[0-9]+\.[0-9]+\.[0-9]+"/g,
326
+ replacement: `"codex_version": "${OFFICIAL_VERSIONS.codex.version}"`,
327
+ },
328
+
329
+ // === BADGE AND COUNT PATTERNS ===
330
+ // Test count in docs badge (e.g., tests-2229-brightgreen)
331
+ {
332
+ pattern: /tests-[0-9]+(?=-brightgreen)/g,
333
+ replacement: `tests-${OFFICIAL_VERSIONS.framework.tests}`,
334
+ },
335
+ // Test count in npm badge (e.g., tests-2229%20passed-brightgreen)
336
+ {
337
+ pattern: /tests-[0-9,]+%20passed/g,
338
+ replacement: `tests-${OFFICIAL_VERSIONS.framework.tests}%20passed`,
339
+ },
340
+ // Test count in prose (e.g., "2,2229 Tests" or "2229 Tests" but NOT in badge URLs)
341
+ {
342
+ pattern: /(\*\s*✅\s*)([0-9]{1,3},?[0-9]{3})(\s*Tests)/g,
343
+ replacement: (match, p1, p2, p3) => {
344
+ return `${p1}${OFFICIAL_VERSIONS.framework.tests}${p3}`;
345
+ },
346
+ },
347
+ // Test count in feature bullets (e.g., "✅ 2229 Tests")
348
+ {
349
+ pattern: /[0-9]+ Tests/g,
350
+ replacement: `${OFFICIAL_VERSIONS.framework.tests} Tests`,
351
+ },
352
+ // Test count in config tree (e.g., "2229 tests")
353
+ {
354
+ pattern: /[0-9]+ tests/g,
355
+ replacement: `${OFFICIAL_VERSIONS.framework.tests} tests`,
356
+ },
357
+ // MCP server count (e.g., "38 MCP" or "40 MCP")
358
+ {
359
+ pattern: /[0-9]+ MCP servers/gi,
360
+ replacement: `${OFFICIAL_VERSIONS.framework.mcpServers} MCP servers`,
361
+ },
362
+ {
363
+ pattern: /[0-9]+ MCP Servers/g,
364
+ replacement: `${OFFICIAL_VERSIONS.framework.mcpServers} MCP Servers`,
365
+ },
366
+ // Agent count
367
+ {
368
+ pattern: /[0-9]+ autonomous agents/gi,
369
+ replacement: `${OFFICIAL_VERSIONS.framework.agents} autonomous agents`,
370
+ },
371
+ {
372
+ pattern: /[0-9]+ autonomous Agents/g,
373
+ replacement: `${OFFICIAL_VERSIONS.framework.agents} autonomous Agents`,
374
+ },
375
+ {
376
+ pattern: /[0-9]+ Specialized Agents/g,
377
+ replacement: `${OFFICIAL_VERSIONS.framework.agents} Specialized Agents`,
378
+ },
379
+ {
380
+ pattern: /[0-9]+ agent configurations/g,
381
+ replacement: `${OFFICIAL_VERSIONS.framework.agents} agent configurations`,
382
+ },
383
+ {
384
+ pattern: /xray AI v[0-9]+\.[0-9]+\.[0-9]+/g,
385
+ replacement: `xray AI v${OFFICIAL_VERSIONS.framework.version}`,
386
+ },
387
+ // Footer bare version (e.g., "**Version**: 1.22.67")
388
+ {
389
+ pattern: /\*\*Version\*\*:\s*[0-9]+\.[0-9]+\.[0-9]+/g,
390
+ replacement: `**Version**: ${OFFICIAL_VERSIONS.framework.version}`,
391
+ },
392
+ // "v1.22.28" and other specific old version references in docs
393
+ {
394
+ pattern: /v1\.15\.0/g,
395
+ replacement: `v${OFFICIAL_VERSIONS.framework.version}`,
396
+ },
397
+ {
398
+ pattern: /v1\.22\.13/g,
399
+ replacement: `v${OFFICIAL_VERSIONS.framework.version}`,
400
+ },
401
+ // Codex terms count
402
+ {
403
+ pattern: /[0-9]+ codex terms/gi,
404
+ replacement: `${OFFICIAL_VERSIONS.codex.termsCount} codex terms`,
405
+ },
406
+ {
407
+ pattern: /[0-9]+ codex rules/gi,
408
+ replacement: `${OFFICIAL_VERSIONS.codex.termsCount} codex rules`,
409
+ },
410
+
411
+ ];
412
+
413
+ const BASH_VERSION_PATTERNS = [];
414
+
415
+ // Backup management
416
+ let backupCreated = false;
417
+ let backupDir = null;
418
+
419
+ async function createBackup() {
420
+ try {
421
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
422
+ backupDir = `backups/version-manager-backup-${timestamp}`;
423
+
424
+ // Create backup directory
425
+ fs.mkdirSync(backupDir, { recursive: true });
426
+
427
+ // Create a changelog file
428
+ const changelog = createChangelog();
429
+ fs.writeFileSync(`${backupDir}/CHANGELOG.md`, changelog);
430
+
431
+ console.log(`✅ Backup created: ${backupDir}`);
432
+ backupCreated = true;
433
+
434
+ return backupDir;
435
+ } catch (error) {
436
+ console.error(`❌ Error creating backup:`, error.message);
437
+ return null;
438
+ }
439
+ }
440
+
441
+ // Changelog management
442
+ const versionChanges = [];
443
+
444
+ function addToChangelog(type, file) {
445
+ const timestamp = new Date().toISOString();
446
+ versionChanges.push({
447
+ timestamp,
448
+ type,
449
+ file,
450
+ });
451
+ }
452
+
453
+ function createChangelog() {
454
+ const header = `# Version Management Changelog\n\n`;
455
+ const date = new Date().toISOString().split('T')[0];
456
+ const info = `Generated: ${date}\n`;
457
+ const divider = "=".repeat(60) + "\n\n";
458
+ const summary = `## Summary\n\n`;
459
+ const summaryItems = [];
460
+
461
+ // Count changes by type
462
+ const typeCounts = {};
463
+ versionChanges.forEach(change => {
464
+ typeCounts[change.type] = (typeCounts[change.type] || 0) + 1;
465
+ });
466
+
467
+ Object.entries(typeCounts).forEach(([type, count]) => {
468
+ summaryItems.push(`- ${count} files updated (${type})`);
469
+ });
470
+
471
+ const summaryText = summaryItems.join('\n');
472
+
473
+ // Detailed changes
474
+ const details = `## Detailed Changes\n\n`;
475
+ const changeEntries = versionChanges.map(change => {
476
+ const time = new Date(change.timestamp).toLocaleTimeString();
477
+ return `- **[${time}]** (${change.type}): ${change.file}`;
478
+ }).join('\n');
479
+
480
+ return `${header}${info}${divider}${summary}${summaryText}\n${details}${changeEntries}\n`;
481
+ }
482
+
483
+ // Validation function
484
+ async function validateConsistency() {
485
+ console.log("\n🔍 Phase 6: Validating version consistency...");
486
+
487
+ let validationErrors = [];
488
+ let warnings = [];
489
+
490
+ // 1. Check codex.json has exactly 60 terms
491
+ const { resolveConfigPath } = require("../helpers/resolve-config-path.cjs");
492
+ const codexJsonPath = resolveConfigPath("codex.json") || "src/opencode/codex.codex";
493
+ if (fs.existsSync(codexJsonPath)) {
494
+ try {
495
+ const codexContent = JSON.parse(fs.readFileSync(codexJsonPath, "utf8"));
496
+ // Check if codexContent.terms is an object (dictionary) with entries
497
+ const termCount = Object.keys(codexContent.terms || {}).length;
498
+ if (termCount !== 60) {
499
+ validationErrors.push(
500
+ `codex.json should have 60 terms, but has ${termCount}`
501
+ );
502
+ }
503
+ } catch (e) {
504
+ validationErrors.push(`Error parsing codex.json: ${e.message}`);
505
+ }
506
+ }
507
+
508
+ // 2. Check codex.codex has correct terms count
509
+ const codexCodexPath = "src/opencode/codex.codex";
510
+ if (fs.existsSync(codexCodexPath)) {
511
+ try {
512
+ const codexContent = JSON.parse(fs.readFileSync(codexCodexPath, "utf8"));
513
+ // Check if terms is an array with 60 elements
514
+ if (!Array.isArray(codexContent.terms)) {
515
+ warnings.push(
516
+ `codex.codex terms should be an array, but is ${typeof codexContent.terms}`
517
+ );
518
+ } else if (codexContent.terms.length !== 60) {
519
+ warnings.push(
520
+ `codex.codex terms should have 60 elements, but has ${codexContent.terms.length}`
521
+ );
522
+ }
523
+ // Version can be framework version or codex version - both are acceptable
524
+ if (codexContent.version) {
525
+ warnings.push(
526
+ `codex.codex version is ${codexContent.version} (framework version)`
527
+ );
528
+ }
529
+ } catch (e) {
530
+ validationErrors.push(`Error parsing codex.codex: ${e.message}`);
531
+ }
532
+ }
533
+
534
+ // 3. Check README.md has correct counts
535
+ const readmePath = "README.md";
536
+ if (fs.existsSync(readmePath)) {
537
+ const readmeContent = fs.readFileSync(readmePath, "utf8");
538
+ if (!readmeContent.includes("60 terms")) {
539
+ validationErrors.push(
540
+ "README.md should reference '60 terms' but doesn't"
541
+ );
542
+ }
543
+ if (!readmeContent.includes("1.7.5")) {
544
+ warnings.push("README.md should reference framework version 1.7.5");
545
+ }
546
+ }
547
+
548
+ // 4. Check AGENTS.md has correct information
549
+ const agentsPath = "AGENTS.md";
550
+ if (fs.existsSync(agentsPath)) {
551
+ const agentsContent = fs.readFileSync(agentsPath, "utf8");
552
+ if (!agentsContent.includes("60 terms")) {
553
+ validationErrors.push(
554
+ "AGENTS.md should reference '60 terms' but doesn't"
555
+ );
556
+ }
557
+ if (!agentsContent.includes("1.7.5")) {
558
+ warnings.push("AGENTS.md should reference framework version 1.7.5");
559
+ }
560
+ }
561
+
562
+ // 5. Check agent counts in MCP servers match actual count (from CALCULATED_COUNTS)
563
+ const mcpServerFiles = ["src/mcps/framework-help.server.ts"];
564
+ for (const mcpFile of mcpServerFiles) {
565
+ if (fs.existsSync(mcpFile)) {
566
+ const content = fs.readFileSync(mcpFile, "utf8");
567
+ const match = content.match(/\*\*(\d+)\s+Agents?:\*\*/);
568
+ if (match) {
569
+ const reportedCount = parseInt(match[1]);
570
+ if (reportedCount !== CALCULATED_COUNTS.agents) {
571
+ validationErrors.push(
572
+ `${mcpFile} reports ${reportedCount} agents but src/opencode/agents/ has ${CALCULATED_COUNTS.agents}`
573
+ );
574
+ }
575
+ }
576
+ }
577
+ }
578
+
579
+ // 7. Check that no files reference old versions
580
+ const extensions = [".ts", ".js", ".md", ".json", ".txt", ".sh"];
581
+ const files = findFiles(".", extensions);
582
+ let oldVersionCount = 0;
583
+
584
+ for (const file of files) {
585
+ try {
586
+ const content = fs.readFileSync(file, "utf8");
587
+
588
+ // Check for old codex version (v1.2.25 or earlier)
589
+ if (/version:\s*"v1\.[01]\./.test(content)) {
590
+ oldVersionCount++;
591
+ warnings.push(`${file} references old codex version`);
592
+ }
593
+
594
+ // Check for old term counts (less than 60)
595
+ if (/\((\d{1,2})\)\s*terms/.test(content) && parseInt(RegExp.$1) < 60) {
596
+ warnings.push(`${file} references term count < 60`);
597
+ }
598
+
599
+ // Check for old framework version (< 1.7.5)
600
+ if (/version:\s*"1\.[0-6]\./.test(content)) {
601
+ warnings.push(`${file} references old framework version`);
602
+ }
603
+ } catch (e) {
604
+ // Skip files that can't be read
605
+ }
606
+ }
607
+
608
+ if (oldVersionCount > 0) {
609
+ warnings.push(`Found ${oldVersionCount} files with old version references`);
610
+ }
611
+
612
+ // 6. Summary
613
+ console.log("\n" + "=".repeat(60));
614
+ console.log("Validation Summary:");
615
+ console.log("=".repeat(60));
616
+
617
+ if (validationErrors.length > 0) {
618
+ console.log("\n❌ Errors found:");
619
+ validationErrors.forEach(error => console.log(` - ${error}`));
620
+ } else {
621
+ console.log("\n✅ No errors found");
622
+ }
623
+
624
+ if (warnings.length > 0) {
625
+ console.log("\n⚠️ Warnings:");
626
+ warnings.forEach(warning => console.log(` - ${warning}`));
627
+ }
628
+
629
+ console.log("\n" + "=".repeat(60));
630
+
631
+ // Return validation result
632
+ return {
633
+ valid: validationErrors.length === 0,
634
+ errors: validationErrors,
635
+ warnings: warnings,
636
+ };
637
+ }
638
+
639
+ async function standardizeVersions() {
640
+ console.log("🔧 Starting Universal Version Standardization");
641
+ console.log(`📋 Framework: ${OFFICIAL_VERSIONS.framework.displayName}`);
642
+ console.log(
643
+ `📋 Codex: ${OFFICIAL_VERSIONS.codex.version} (${OFFICIAL_VERSIONS.codex.termsCount} terms)`,
644
+ );
645
+ console.log(
646
+ `📋 OpenCode: v${OFFICIAL_VERSIONS.dependencies.opencode}`,
647
+ );
648
+ console.log("=".repeat(60));
649
+
650
+ // Phase 0: Create backup before making changes
651
+ console.log("\n💾 Phase 0: Creating backup of all modified files...");
652
+ await createBackup();
653
+
654
+ // Phase 1: Update critical config files (source in src/opencode/)
655
+ console.log("\n📁 Phase 1: Updating configuration files...");
656
+ const { resolveConfigPath: rcp } = require("../helpers/resolve-config-path.cjs");
657
+ const codexPath = rcp("codex.json") || "src/opencode/codex.codex";
658
+ const featuresPath = rcp("features.json") || "src/opencode/features.json";
659
+ const criticalConfigFiles = [
660
+ codexPath, // Codex config (source)
661
+ "src/opencode/codex.codex", // Main codex (source)
662
+ "src/opencode/config.json", // Framework config (source)
663
+ featuresPath, // Feature flags (source)
664
+ ];
665
+
666
+ let configFilesUpdated = 0;
667
+ for (const configFile of criticalConfigFiles) {
668
+ if (fs.existsSync(configFile)) {
669
+ try {
670
+ const content = fs.readFileSync(configFile, "utf8");
671
+ let updatedContent = content;
672
+ let fileChanged = false;
673
+
674
+ // Apply all patterns to config files
675
+ for (const { pattern, replacement } of UPDATE_PATTERNS) {
676
+ const matches = content.match(pattern);
677
+ if (matches) {
678
+ updatedContent = updatedContent.replace(pattern, replacement);
679
+ fileChanged = true;
680
+ }
681
+ }
682
+
683
+ if (fileChanged) {
684
+ fs.writeFileSync(configFile, updatedContent, "utf8");
685
+ console.log(`✅ Updated: ${configFile}`);
686
+ configFilesUpdated++;
687
+ addToChangelog("config", configFile);
688
+ }
689
+ } catch (error) {
690
+ console.error(`❌ Error processing ${configFile}:`, error.message);
691
+ }
692
+ } else {
693
+ console.log(`⚠️ Not found: ${configFile}`);
694
+ }
695
+ }
696
+
697
+ if (configFilesUpdated > 0) {
698
+ console.log(`✅ Updated ${configFilesUpdated} critical config files`);
699
+ }
700
+
701
+ // Phase 2: Update documentation files (AGENTS.md, etc.)
702
+ console.log("\n📁 Phase 2: Updating documentation files...");
703
+ const documentationFiles = [
704
+ "README.md",
705
+ "AGENTS.md",
706
+ "src/opencode/AGENTS-consumer.md",
707
+ rcp("agents_template.md") || "src/opencode/agents_template.md",
708
+ "docs/reference/templates/agents_template.md",
709
+ "docs/reference/templates/master-agent-template.md",
710
+ "docs/reference/templates/agent-template-dev.md",
711
+ "docs/README.md",
712
+ ];
713
+
714
+ let docsUpdated = 0;
715
+ let userGuideFilesUpdated = 0;
716
+ let historicalUpdated = 0;
717
+ for (const docFile of documentationFiles) {
718
+ if (fs.existsSync(docFile)) {
719
+ try {
720
+ const content = fs.readFileSync(docFile, "utf8");
721
+ let updatedContent = content;
722
+ let fileChanged = false;
723
+
724
+ // Apply all version patterns
725
+ for (const { pattern, replacement } of UPDATE_PATTERNS) {
726
+ const matches = content.match(pattern);
727
+ if (matches) {
728
+ updatedContent = updatedContent.replace(pattern, replacement);
729
+ fileChanged = true;
730
+ }
731
+ }
732
+
733
+ if (fileChanged) {
734
+ fs.writeFileSync(docFile, updatedContent, "utf8");
735
+ console.log(`✅ Updated: ${docFile}`);
736
+ docsUpdated++;
737
+ addToChangelog("documentation", docFile);
738
+ } else {
739
+ console.log(`⏭️ No changes needed in: ${docFile}`);
740
+ }
741
+ } catch (error) {
742
+ console.error(`❌ Error processing ${docFile}:`, error.message);
743
+ }
744
+ } else {
745
+ console.log(`⚠️ Not found: ${docFile}`);
746
+ }
747
+ }
748
+
749
+ if (docsUpdated > 0) {
750
+ console.log(`✅ Updated ${docsUpdated} documentation files`);
751
+ }
752
+
753
+ // Phase 3: Update user guide files (optional - skip if dir doesn't exist)
754
+ if (fs.existsSync("docs/user-guide")) {
755
+ console.log("\n📁 Phase 3: Updating user guide files...");
756
+ const userGuideFiles = findFiles("docs/user-guide", [".md"]);
757
+
758
+ for (const file of userGuideFiles) {
759
+ try {
760
+ const content = fs.readFileSync(file, "utf8");
761
+ let updatedContent = content;
762
+ let fileChanged = false;
763
+
764
+ // Apply all version patterns
765
+ for (const { pattern, replacement } of UPDATE_PATTERNS) {
766
+ const matches = content.match(pattern);
767
+ if (matches) {
768
+ updatedContent = updatedContent.replace(pattern, replacement);
769
+ fileChanged = true;
770
+ }
771
+ }
772
+
773
+ if (fileChanged) {
774
+ fs.writeFileSync(file, updatedContent, "utf8");
775
+ console.log(`✅ Updated: ${file}`);
776
+ userGuideFilesUpdated++;
777
+ addToChangelog("docs", file);
778
+ }
779
+ } catch (e) {
780
+ console.log(`⚠️ Error updating ${file}: ${e.message}`);
781
+ }
782
+ }
783
+
784
+ if (userGuideFilesUpdated > 0) {
785
+ console.log(`✅ Updated ${userGuideFilesUpdated} user guide files`);
786
+ }
787
+ }
788
+
789
+ // Phase 4: Update historical docs (selective updates for consistency)
790
+ console.log("\n📁 Phase 4: Updating historical documentation...");
791
+ const historicalFiles = findFiles("docs", [".md"], [], [
792
+ "reflections",
793
+ "archive",
794
+ "user-guide",
795
+ "pipeline-trees",
796
+ "superseded",
797
+ "commands",
798
+ "advanced",
799
+ "session-summary",
800
+ ]);
801
+
802
+ for (const file of historicalFiles) {
803
+ try {
804
+ const content = fs.readFileSync(file, "utf8");
805
+ let updatedContent = content;
806
+ let fileChanged = false;
807
+
808
+ // Apply all version patterns (skip framework counts for historical docs)
809
+ const countPatterns = UPDATE_PATTERNS.filter(p =>
810
+ p.pattern.toString().includes("termsCount") ||
811
+ p.pattern.toString().includes("framework.agents")
812
+ );
813
+ const versionPatterns = UPDATE_PATTERNS.filter(p =>
814
+ !p.pattern.toString().includes("termsCount") &&
815
+ !p.pattern.toString().includes("framework.agents")
816
+ );
817
+
818
+ for (const { pattern, replacement } of versionPatterns) {
819
+ const matches = content.match(pattern);
820
+ if (matches) {
821
+ updatedContent = updatedContent.replace(pattern, replacement);
822
+ fileChanged = true;
823
+ }
824
+ }
825
+
826
+ if (fileChanged) {
827
+ fs.writeFileSync(file, updatedContent, "utf8");
828
+ console.log(`✅ Updated (historical): ${file}`);
829
+ historicalUpdated++;
830
+ addToChangelog("historical", file);
831
+ }
832
+ } catch (error) {
833
+ console.error(`❌ Error processing ${file}:`, error.message);
834
+ }
835
+ }
836
+
837
+ if (historicalUpdated > 0) {
838
+ console.log(`✅ Updated ${historicalUpdated} historical documentation files`);
839
+ }
840
+
841
+ // Phase 5: Find all other files that might contain version references
842
+ console.log("\n📁 Phase 5: Scanning all other files...");
843
+ const extensions = [".ts", ".js", ".md", ".json", ".txt", ".sh"];
844
+ const files = findFiles(".", extensions);
845
+
846
+ let totalFilesUpdated = 0;
847
+ let totalChanges = 0;
848
+
849
+ // Additional safety: protected files that should never be modified
850
+ // Note: Only protect root package.json (npm version manages this)
851
+ // .opencode/package.json should be updated by this script
852
+ const PROTECTED_FILES = [
853
+ "package-lock.json",
854
+ "package.json", // Only root package.json (matched by exact path, not subdirs)
855
+ ];
856
+
857
+ const PROTECTED_PATHS = [
858
+ ".opencode/test-count.json",
859
+ ];
860
+
861
+ // Test files with version assertions - these contain expected version values for testing
862
+ // and should NOT have their assertions updated by this script
863
+ const TEST_ASSERTION_FILES = [
864
+ "context-loader.test.ts",
865
+ "codex-parser.test.ts",
866
+ "json-codex-integration.test.ts",
867
+ "boot-orchestrator.integration.test.ts",
868
+ ];
869
+
870
+ for (const file of files) {
871
+ // Skip protected files as an additional safety measure
872
+ // Use path.basename to match filename only, not full path
873
+ const basename = path.basename(file);
874
+ const normalizedPath = path.normalize(file);
875
+
876
+ const isProtected = PROTECTED_FILES.some(protectedFile => {
877
+ if (protectedFile === "package.json") {
878
+ return normalizedPath === "package.json";
879
+ }
880
+ return basename === protectedFile;
881
+ }) || PROTECTED_PATHS.some(p => normalizedPath === path.normalize(p));
882
+
883
+ if (isProtected) {
884
+ console.log(`⏭️ Skipping protected file: ${file}`);
885
+ continue;
886
+ }
887
+
888
+ // Skip test assertion files - these contain expected version values for testing
889
+ // and should NOT have their assertions updated by this script
890
+ const isTestAssertionFile = TEST_ASSERTION_FILES.includes(basename);
891
+ if (isTestAssertionFile) {
892
+ console.log(`⏭️ Skipping test assertion file: ${file}`);
893
+ continue;
894
+ }
895
+
896
+ try {
897
+ const content = fs.readFileSync(file, "utf8");
898
+ let updatedContent = content;
899
+ let fileChanged = false;
900
+
901
+ // Apply all version update patterns
902
+ for (const { pattern, replacement } of UPDATE_PATTERNS) {
903
+ const matches = content.match(pattern);
904
+ if (matches) {
905
+ updatedContent = updatedContent.replace(pattern, replacement);
906
+ totalChanges += matches.length;
907
+ fileChanged = true;
908
+ }
909
+ }
910
+
911
+ // Apply bash script version patterns
912
+ for (const { pattern, replacement } of BASH_VERSION_PATTERNS) {
913
+ const matches = content.match(pattern);
914
+ if (matches) {
915
+ updatedContent = updatedContent.replace(pattern, replacement);
916
+ totalChanges += matches.length;
917
+ fileChanged = true;
918
+ }
919
+ }
920
+
921
+ // Write back if changed
922
+ if (fileChanged) {
923
+ fs.writeFileSync(file, updatedContent, "utf8");
924
+ console.log(`✅ Updated: ${file}`);
925
+ totalFilesUpdated++;
926
+ }
927
+ } catch (error) {
928
+ console.error(`❌ Error processing ${file}:`, error.message);
929
+ }
930
+ }
931
+
932
+ console.log("\n" + "=".repeat(60));
933
+ console.log("🎉 Universal Version Standardization Complete!");
934
+ console.log(`📊 Summary:`);
935
+ console.log(` Config Files Updated: ${configFilesUpdated}`);
936
+ console.log(` Documentation Files Updated: ${docsUpdated}`);
937
+ console.log(` User Guide Files Updated: ${userGuideFilesUpdated}`);
938
+ console.log(` Historical Files Updated: ${historicalUpdated}`);
939
+ console.log(` Other Files Updated: ${totalFilesUpdated}`);
940
+ console.log(` Total Changes: ${totalChanges + configFilesUpdated + docsUpdated + userGuideFilesUpdated + historicalUpdated}`);
941
+ console.log(` Framework Version: ${OFFICIAL_VERSIONS.framework.version}`);
942
+ console.log(
943
+ ` Codex Version: ${OFFICIAL_VERSIONS.codex.version} (${OFFICIAL_VERSIONS.codex.termsCount} terms)`,
944
+ );
945
+ console.log(` Dependencies Updated: ✅`);
946
+ console.log(` Last Updated: ${OFFICIAL_VERSIONS.framework.lastUpdated}`);
947
+ console.log(` Backup Created: ${backupCreated ? '✅' : '❌'}`);
948
+
949
+ // Show rollback information
950
+ if (backupCreated && backupDir) {
951
+ console.log(`\n💾 Backup location: ${backupDir}`);
952
+ console.log("To rollback changes, run: node scripts/rollback.js");
953
+ }
954
+
955
+ // Run validation
956
+ const validation = await validateConsistency();
957
+
958
+ console.log("\n" + "=".repeat(60));
959
+
960
+ // Exit with appropriate code
961
+ if (!validation.valid) {
962
+ console.log("\n⚠️ Validation failed. Please review errors above.");
963
+ process.exit(1);
964
+ } else if (validation.warnings.length > 0) {
965
+ console.log("\n✅ Validation passed with warnings.");
966
+ console.log("⚠️ Please review warnings above.");
967
+ process.exit(0);
968
+ } else {
969
+ console.log("\n✅ All validations passed!");
970
+ console.log("\n💡 To update versions in the future:");
971
+ console.log(" 1. Edit OFFICIAL_VERSIONS object in this script");
972
+ console.log(" 2. Run: node scripts/standardize-codex-versions.js");
973
+ console.log(" 3. Commit the changes");
974
+ process.exit(0);
975
+ }
976
+ }
977
+
978
+ // Run the standardization
979
+ standardizeVersions().catch(console.error);
980
+
981
+ /**
982
+ * Version Manager Enhancements (v2.0.0)
983
+ * =====================================
984
+ *
985
+ * ✅ COMPLETED FEATURES:
986
+ * - Comprehensive documentation management (AGENTS.md, AGENTS-consumer.md, etc.)
987
+ * - File categorization (critical, documentation, historical, test assertions)
988
+ * - Validation step for consistency checking
989
+ * - Changelog generation
990
+ * - Backup creation before changes
991
+ * - Rollback capability
992
+ *
993
+ * 🔄 NEXT STEPS:
994
+ * - Create rollback.js script for restoring from backup
995
+ * - Add automated tests for version consistency
996
+ * - Implement incremental updates (only changed files)
997
+ * - Add caching for unchanged files
998
+ * - Parallel processing for large file sets
999
+ *
1000
+ * 📋 FILE CATEGORIES:
1001
+ * - Critical: src/opencode/codex.codex, etc.
1002
+ * - Documentation: AGENTS.md, AGENTS-consumer.md, docs/*.md
1003
+ * - Historical: docs/reflections/, docs/archive/
1004
+ * - Test Assertions: context-loader.test.ts, codex-parser.test.ts
1005
+ *
1006
+ * 🛡️ PROTECTED FILES:
1007
+ * - package-lock.json (npm manages this)
1008
+ * - package.json (root only)
1009
+ *
1010
+ * 📊 VALIDATION CHECKS:
1011
+ * - codex.json has exactly 60 terms
1012
+ * - codex.codex has version v1.3.0 and 60 terms
1013
+ * - README.md has correct counts
1014
+ * - AGENTS.md has correct information
1015
+ * - No files reference old versions
1016
+ *
1017
+ * 💾 BACKUP LOCATION:
1018
+ * - Created in 'backups/version-manager-backup-[timestamp]/'
1019
+ * - Includes changelog.md with all changes
1020
+ *
1021
+ * 📝 TO ROLLBACK:
1022
+ * - node scripts/rollback.js [backup-id]
1023
+ * - Requires backup to exist
1024
+ */
1025
+