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,220 @@
1
+ /**
2
+ * Codex Formatter — Standalone Codex-to-Prompt Converter
3
+ *
4
+ * Converts 0xRay's Universal Development Codex terms into
5
+ * formatted system prompt text. No OpenCode dependency, no plugin
6
+ * API, no framework imports. Pure input/output.
7
+ *
8
+ * This is the decoupled replacement for the codex injection that
9
+ * previously lived inside the OpenCode plugin (xray-codex-injection.ts).
10
+ *
11
+ * Usage from any host (Node.js, Python via bridge, HTTP, etc.):
12
+ * import { formatCodexPrompt } from './codex-formatter.js';
13
+ * const prompt = formatCodexPrompt({ projectRoot: '/path' });
14
+ * // Append to system prompt
15
+ *
16
+ * @version 1.0.0
17
+ * @since 2026-03-28
18
+ */
19
+ import { readFileSync, existsSync } from "fs";
20
+ import { join, resolve } from "path";
21
+ // ============================================================================
22
+ // Built-in Fallback Codex (when no codex.json is found)
23
+ // ============================================================================
24
+ export const BUILTIN_CODEX = {
25
+ version: "fallback-1.0.0",
26
+ terms: [
27
+ {
28
+ id: "resolve-all-errors",
29
+ title: "Resolve All Errors",
30
+ description: "Never leave unhandled errors, rejected promises, or uncaught exceptions in production code. Every error path must have explicit handling or propagation.",
31
+ severity: "blocking",
32
+ examples: ["catch (err) { logger.error('Operation failed', err); throw err; }"],
33
+ },
34
+ {
35
+ id: "tests-required",
36
+ title: "Tests Required",
37
+ description: "Every new function, method, or module must have corresponding test coverage. Tests should validate both happy path and error cases.",
38
+ severity: "blocking",
39
+ },
40
+ {
41
+ id: "no-console-in-production",
42
+ title: "No Console in Production",
43
+ description: "Use structured logging instead of console.log, console.warn, or console.error. Console statements leak through to agent consoles and create noise.",
44
+ severity: "blocking",
45
+ },
46
+ {
47
+ id: "type-safety",
48
+ title: "Type Safety",
49
+ description: "Prefer explicit types over 'any'. Use TypeScript strict mode features. Validate external data at boundaries.",
50
+ severity: "high",
51
+ },
52
+ {
53
+ id: "input-validation",
54
+ title: "Input Validation",
55
+ description: "Validate all external inputs at the system boundary. Never trust client-side data, environment variables, or API responses without validation.",
56
+ severity: "high",
57
+ },
58
+ {
59
+ id: "immutable-state",
60
+ title: "Immutable State Updates",
61
+ description: "Prefer immutable patterns for state updates. Avoid mutating function parameters or shared state directly.",
62
+ severity: "high",
63
+ },
64
+ {
65
+ id: "error-boundaries",
66
+ title: "Error Boundaries",
67
+ description: "Wrap operations in try/catch with meaningful error messages. Include context about what failed and why.",
68
+ severity: "medium",
69
+ },
70
+ {
71
+ id: "dead-code-elimination",
72
+ title: "Dead Code Elimination",
73
+ description: "Remove unused imports, variables, functions, and commented-out code before committing.",
74
+ severity: "medium",
75
+ },
76
+ ],
77
+ };
78
+ // ============================================================================
79
+ // Config Resolution
80
+ // ============================================================================
81
+ /**
82
+ * Find codex.json using the standard priority chain.
83
+ * Mirrors config-paths.ts resolveCodexPath() but returns first match.
84
+ */
85
+ export function findCodexPath(projectRoot) {
86
+ const root = projectRoot || process.cwd();
87
+ const envDir = process.env.STRRAY_CONFIG_DIR;
88
+ const candidates = [];
89
+ if (envDir) {
90
+ candidates.push(resolve(root, envDir, "codex.json"));
91
+ }
92
+ candidates.push(join(root, ".strray", "codex.json"));
93
+ candidates.push(join(root, ".opencode", "strray", "codex.json"));
94
+ // Additional fallback locations (for standalone usage)
95
+ candidates.push(join(root, "codex.json"));
96
+ candidates.push(join(root, "src", "codex.json"));
97
+ candidates.push(join(root, "docs", "agents", "codex.json"));
98
+ for (const candidate of candidates) {
99
+ if (existsSync(candidate)) {
100
+ return candidate;
101
+ }
102
+ }
103
+ return null;
104
+ }
105
+ /**
106
+ * Load and parse codex.json. Falls back to built-in codex if not found.
107
+ */
108
+ export function loadCodex(projectRoot) {
109
+ const codexPath = findCodexPath(projectRoot);
110
+ if (codexPath) {
111
+ try {
112
+ const raw = readFileSync(codexPath, "utf-8");
113
+ const config = JSON.parse(raw);
114
+ return { config, source: codexPath };
115
+ }
116
+ catch {
117
+ // Fall through to built-in
118
+ }
119
+ }
120
+ return { config: BUILTIN_CODEX, source: null };
121
+ }
122
+ // ============================================================================
123
+ // Formatting
124
+ // ============================================================================
125
+ const SEVERITY_LABELS = {
126
+ blocking: "BLOCKING",
127
+ high: "HIGH PRIORITY",
128
+ medium: "MEDIUM",
129
+ };
130
+ const SEVERITY_EMOJI = {
131
+ blocking: "🔴",
132
+ high: "🟡",
133
+ medium: "🟢",
134
+ };
135
+ /**
136
+ * Format codex terms into a system-prompt-ready string.
137
+ *
138
+ * This is the primary export. Any host (OpenCode, Hermes, Claude Desktop,
139
+ * custom agent) can call this to get enforcement text for their system prompt.
140
+ */
141
+ export function formatCodexPrompt(options = {}) {
142
+ const { projectRoot, severityFilter, includeExamples = false, maxTerms, header, includeConfigPath = true, compressed = false, } = options;
143
+ const { config, source } = loadCodex(projectRoot);
144
+ // Filter terms by severity
145
+ let terms = config.terms;
146
+ if (severityFilter && severityFilter.length > 0) {
147
+ terms = terms.filter((t) => severityFilter.includes(t.severity));
148
+ }
149
+ // Sort by severity (blocking first, then high, then medium)
150
+ const severityOrder = { blocking: 0, high: 1, medium: 2 };
151
+ terms = [...terms].sort((a, b) => (severityOrder[a.severity] ?? 3) - (severityOrder[b.severity] ?? 3));
152
+ // Limit term count
153
+ if (maxTerms && terms.length > maxTerms) {
154
+ terms = terms.slice(0, maxTerms);
155
+ }
156
+ // Build prompt sections
157
+ const parts = [];
158
+ // Header
159
+ if (header) {
160
+ parts.push(header);
161
+ }
162
+ else {
163
+ parts.push(`## 0xRay Universal Development Codex v${config.version}`);
164
+ parts.push("The following rules are enforced on all code operations. Violations will be caught by quality gates.");
165
+ }
166
+ // Terms
167
+ for (const term of terms) {
168
+ const emoji = SEVERITY_EMOJI[term.severity] || "⚪";
169
+ const label = SEVERITY_LABELS[term.severity] || term.severity.toUpperCase();
170
+ const line = `\n**${emoji} ${term.id}** [${label}]`;
171
+ parts.push(line);
172
+ // Always include description for blocking/high, skip for medium when compressed
173
+ if (term.description && !(compressed && term.severity === "medium")) {
174
+ parts.push(` ${term.description}`);
175
+ }
176
+ if (includeExamples && term.examples && term.examples.length > 0) {
177
+ parts.push(" Examples:");
178
+ for (const example of term.examples) {
179
+ parts.push(` \`${example}\``);
180
+ }
181
+ }
182
+ }
183
+ // Footer
184
+ if (includeConfigPath && source) {
185
+ parts.push(`\n_Config source: ${source}_`);
186
+ }
187
+ const prompt = parts.join("\n");
188
+ return {
189
+ prompt,
190
+ termCount: terms.length,
191
+ totalTerms: config.terms.length,
192
+ version: config.version,
193
+ configPath: source,
194
+ charCount: prompt.length,
195
+ };
196
+ }
197
+ /**
198
+ * Get codex as a structured JSON object (for programmatic consumers).
199
+ */
200
+ export function getCodexConfig(options = {}) {
201
+ const { config, source } = loadCodex(options.projectRoot);
202
+ return {
203
+ version: config.version,
204
+ terms: config.terms,
205
+ termCount: config.terms.length,
206
+ source,
207
+ };
208
+ }
209
+ /**
210
+ * Get a minimal codex prompt for token-constrained environments.
211
+ * Only includes blocking terms, no descriptions.
212
+ */
213
+ export function formatMinimalCodexPrompt(options = {}) {
214
+ return formatCodexPrompt({
215
+ ...options,
216
+ severityFilter: ["blocking"],
217
+ compressed: true,
218
+ includeConfigPath: false,
219
+ });
220
+ }
@@ -0,0 +1,424 @@
1
+ /**
2
+ * 0xRay Codex Context Injector Hook
3
+ *
4
+ * Injects Universal Development Codex v1.2.0 context into agent operations.
5
+ * Follows production-tested pattern from rules-injector.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-01-06
9
+ */
10
+ import * as fs from "fs";
11
+ import * as path from "path";
12
+ import { frameworkLogger } from "../core/framework-logger.js";
13
+ import { resolveCodexPath } from "./config-paths.js";
14
+ // Dynamic imports for cross-environment compatibility
15
+ let extractCodexMetadata;
16
+ let StringRayContextLoader;
17
+ let importsInitialized = false;
18
+ async function initializeImports() {
19
+ if (importsInitialized)
20
+ return;
21
+ try {
22
+ const codexParser = await import("../utils/codex-parser.js");
23
+ const contextLoaderModule = await import("./context-loader.js");
24
+ extractCodexMetadata = codexParser.extractCodexMetadata;
25
+ StringRayContextLoader = contextLoaderModule.StringRayContextLoader;
26
+ }
27
+ catch {
28
+ const codexParser = await import("../utils/codex-parser");
29
+ const contextLoaderModule = await import("./context-loader");
30
+ extractCodexMetadata = codexParser.extractCodexMetadata;
31
+ StringRayContextLoader = contextLoaderModule.StringRayContextLoader;
32
+ }
33
+ importsInitialized = true;
34
+ }
35
+ /**
36
+ * Session cache for codex context
37
+ */
38
+ const codexCache = new Map();
39
+ /**
40
+ * Codex file locations resolved through the standard priority chain.
41
+ * Uses config-paths.ts resolver so STRRAY_CONFIG_DIR and .strray/ work.
42
+ */
43
+ function getCodexFileLocations(projectRoot) {
44
+ const root = projectRoot || process.cwd();
45
+ return resolveCodexPath(root);
46
+ }
47
+ /**
48
+ * Read file content safely
49
+ */
50
+ function readFileContent(filePath) {
51
+ try {
52
+ if (fs.existsSync(filePath)) {
53
+ return fs.readFileSync(filePath, "utf-8");
54
+ }
55
+ }
56
+ catch (error) {
57
+ frameworkLogger.log("codex-injector", "read-file-error", "error", { error, message: "0xRay Codex Hook Error" });
58
+ }
59
+ return null;
60
+ }
61
+ /**
62
+ * Create codex context entry
63
+ */
64
+ async function createCodexContextEntry(filePath, content) {
65
+ await initializeImports();
66
+ if (!extractCodexMetadata) {
67
+ throw new Error("Codex metadata extractor not available");
68
+ }
69
+ const metadata = extractCodexMetadata(content);
70
+ return {
71
+ id: `strray-codex-${path.basename(filePath)}`,
72
+ source: filePath,
73
+ content,
74
+ priority: "critical",
75
+ metadata: {
76
+ version: metadata.version,
77
+ termCount: metadata.termCount,
78
+ loadedAt: new Date().toISOString(),
79
+ },
80
+ };
81
+ }
82
+ /**
83
+ * Load codex context for current session
84
+ */
85
+ async function loadCodexContext(sessionId) {
86
+ if (codexCache.has(sessionId)) {
87
+ return codexCache.get(sessionId);
88
+ }
89
+ const codexContexts = [];
90
+ const locations = getCodexFileLocations();
91
+ for (const relativePath of locations) {
92
+ try {
93
+ const fullPath = path.isAbsolute(relativePath) ? relativePath : path.join(process.cwd(), relativePath);
94
+ const content = readFileContent(fullPath);
95
+ if (content) {
96
+ const entry = await createCodexContextEntry(fullPath, content);
97
+ codexContexts.push(entry);
98
+ }
99
+ }
100
+ catch (error) {
101
+ frameworkLogger.log("codex-injector", "load-codex-context-error", "error", { error, message: "0xRay Codex Hook Error" });
102
+ }
103
+ }
104
+ codexCache.set(sessionId, codexContexts);
105
+ return codexContexts;
106
+ }
107
+ /**
108
+ * Format codex context for display
109
+ */
110
+ function formatCodexContext(contexts, sessionId) {
111
+ if (contexts.length === 0) {
112
+ return "⚠️ No codex context available";
113
+ }
114
+ const parts = ["0xRay Codex Context"];
115
+ for (const context of contexts) {
116
+ parts.push(`✅ ${context.source} (${context.metadata.termCount} terms)`);
117
+ }
118
+ const stats = getCodexStats(sessionId);
119
+ parts.push(`📁 ${stats.fileCount} source(s)`);
120
+ parts.push(`🎯 90% runtime error prevention target`);
121
+ return parts.join("\n");
122
+ }
123
+ /**
124
+ * Create strray-codex-injector hook
125
+ *
126
+ * This hook injects codex context into tool outputs and displays
127
+ * a welcome message on agent startup, following the production-tested
128
+ * pattern from OpenCode's rules-injector.
129
+ */
130
+ export function createStringRayCodexInjectorHook() {
131
+ return {
132
+ name: "strray-codex-injector",
133
+ hooks: {
134
+ "agent.start": async (sessionId) => {
135
+ const jobId = `agent-start-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
136
+ try {
137
+ await frameworkLogger.log("codex-injector", "agent.start hook triggered", "info", { jobId, sessionId });
138
+ // Load codex context to ensure it's available for the session
139
+ await loadCodexContext(sessionId);
140
+ const stats = getCodexStats(sessionId);
141
+ if (stats.loaded) {
142
+ await frameworkLogger.log("codex-injector", "-stringray-codex-loaded-stats-totalterms-terms-sta", "success", {
143
+ message: `✅ 0xRay Codex loaded: ${stats.totalTerms} terms, ${stats.fileCount} sources`,
144
+ });
145
+ await frameworkLogger.log("codex-injector", "codex context loaded successfully", "success", { jobId, ...stats });
146
+ }
147
+ else {
148
+ await frameworkLogger.log("codex-injector", "-no-codex-files-found-checked-strray-codex-json-co", "info", {
149
+ message: `⚠️ No codex files found. Checked: ${getCodexFileLocations().join(", ")}`,
150
+ });
151
+ await frameworkLogger.log("codex-injector", "no codex files found", "error", { jobId });
152
+ }
153
+ }
154
+ catch (error) {
155
+ await frameworkLogger.log("codex-injector", "agent.start hook failed", "error", { jobId, error });
156
+ frameworkLogger.log("codex-injector", "agent-start-hook-error", "error", { error, jobId, message: "Error in agent.start hook" });
157
+ throw error;
158
+ }
159
+ },
160
+ "tool.execute.before": async (input, sessionId) => {
161
+ const jobId = `tool-before-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
162
+ try {
163
+ await frameworkLogger.log("codex-injector", "tool.execute.before hook triggered", "info", { jobId, tool: input.tool, sessionId });
164
+ // Log ALL tool usage for framework transparency
165
+ await frameworkLogger.log("framework-activity", `tool called: ${input.tool}`, "info", {
166
+ jobId,
167
+ tool: input.tool,
168
+ args: input.args,
169
+ sessionId,
170
+ });
171
+ // Skip codex enforcement during testing
172
+ if (process.env.NODE_ENV === "test" ||
173
+ process.env.STRRAY_TEST_MODE === "true") {
174
+ await frameworkLogger.log("codex-injector", "skipping enforcement in test mode", "info", { jobId });
175
+ return;
176
+ }
177
+ // Only enforce on critical tools that could violate codex terms
178
+ const criticalTools = ["write", "edit", "multiedit", "batch"];
179
+ if (!criticalTools.includes(input.tool)) {
180
+ await frameworkLogger.log("codex-injector", "non-critical tool allowed", "info", { jobId, tool: input.tool });
181
+ return; // Allow non-critical tools
182
+ }
183
+ await frameworkLogger.log("codex-injector", "enforcing codex on critical tool", "info", { jobId, tool: input.tool });
184
+ // Load codex context for validation
185
+ const codexContexts = await loadCodexContext(sessionId);
186
+ if (codexContexts.length === 0) {
187
+ await frameworkLogger.log("codex-injector", "-no-codex-loaded-allowing-action-but-enforcement-d", "info", {
188
+ message: "⚠️ No codex loaded - allowing action but enforcement disabled",
189
+ });
190
+ await frameworkLogger.log("codex-injector", "no codex context available", "error", { jobId, sessionId });
191
+ return;
192
+ }
193
+ await frameworkLogger.log("codex-injector", "codex context loaded for validation", "success", { jobId, contextCount: codexContexts.length });
194
+ // Use the initialized context loader
195
+ await initializeImports();
196
+ const ContextLoaderClass = StringRayContextLoader;
197
+ const contextLoader = new ContextLoaderClass();
198
+ const loadResult = await contextLoader.loadCodexContext(sessionId);
199
+ if (!loadResult.success || !loadResult.context) {
200
+ // Codex context warning - operational, keep
201
+ return;
202
+ }
203
+ // Validate action against codex
204
+ const actionDescription = `${input.tool} ${JSON.stringify(input.args || {})}`;
205
+ const validation = contextLoader.validateAgainstCodex(loadResult.context, actionDescription, {
206
+ strictMode: true,
207
+ blockOnViolations: true,
208
+ });
209
+ if (!validation.compliant) {
210
+ // Check for blocking violations
211
+ const blockingViolations = validation.violations.filter((v) => v.severity === "blocking");
212
+ if (blockingViolations.length > 0) {
213
+ const errorMsg = `🚫 BLOCKED: Codex violation detected\n${blockingViolations.map((v) => `• ${v.reason}`).join("\n")}`;
214
+ frameworkLogger.log("codex-injector", "blocking-violation", "error", { message: errorMsg, jobId });
215
+ frameworkLogger.log("codex-injector", "blocking codex violation detected", "error", {
216
+ jobId,
217
+ violationCount: blockingViolations.length,
218
+ tool: input.tool,
219
+ });
220
+ throw new Error(`Codex enforcement blocked action: ${blockingViolations[0]?.reason || "Unknown violation"}`);
221
+ }
222
+ // Log non-blocking violations but allow action
223
+ await frameworkLogger.log("codex-injector", "-codex-warnings-detected-", "info", { message: `⚠️ Codex warnings detected:` });
224
+ for (const v of validation.violations) {
225
+ await frameworkLogger.log("codex-injector", "-v-reason-", "info", { message: ` • ${v.reason}` });
226
+ }
227
+ await frameworkLogger.log("codex-injector", "-recommendations-validation-recommendations-join-", "info", {
228
+ message: `💡 Recommendations: ${validation.recommendations.join(", ")}`,
229
+ });
230
+ frameworkLogger.log("codex-injector", "non-blocking codex warnings", "info", {
231
+ jobId,
232
+ warningCount: validation.violations.length,
233
+ tool: input.tool,
234
+ });
235
+ }
236
+ else {
237
+ frameworkLogger.log("codex-injector", "codex validation passed", "success", { jobId, tool: input.tool });
238
+ }
239
+ }
240
+ catch (error) {
241
+ frameworkLogger.log("codex-injector", "tool.execute.before hook error", "error", {
242
+ jobId,
243
+ error: error instanceof Error ? error.message : String(error),
244
+ tool: input.tool,
245
+ });
246
+ frameworkLogger.log("codex-injector", "tool-execute-before-hook-error", "error", {
247
+ error,
248
+ message: "Error in tool.execute.before hook",
249
+ jobId,
250
+ tool: input.tool,
251
+ });
252
+ // For blocking violations, re-throw to prevent action
253
+ if (error instanceof Error &&
254
+ error.message.includes("Codex enforcement blocked action")) {
255
+ throw error;
256
+ }
257
+ // For other errors, log but allow action to prevent breaking workflow
258
+ }
259
+ },
260
+ "tool.execute.after": async (input, output, sessionId) => {
261
+ const jobId = `tool-after-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
262
+ try {
263
+ frameworkLogger.log("codex-injector", "tool.execute.after hook triggered", "info", { jobId, tool: input.tool, sessionId });
264
+ // Skip codex enforcement during testing
265
+ if (process.env.NODE_ENV === "test" ||
266
+ process.env.STRRAY_TEST_MODE === "true") {
267
+ frameworkLogger.log("codex-injector", "skipping injection in test mode", "info", { jobId });
268
+ return output;
269
+ }
270
+ if (!["read", "write", "edit", "multiedit", "batch"].includes(input.tool)) {
271
+ frameworkLogger.log("codex-injector", "non-critical tool - no injection", "info", { jobId, tool: input.tool });
272
+ return output;
273
+ }
274
+ await frameworkLogger.log("codex-injector", "-stringray-tool-execution-hook-triggered-for-input", "info", {
275
+ message: `🔧 0xRay: Tool execution hook triggered for ${input.tool}`,
276
+ });
277
+ const codexContexts = await loadCodexContext(sessionId);
278
+ await frameworkLogger.log("codex-injector", "-stringray-loaded-codexcontexts-length-codex-conte", "info", {
279
+ message: `📚 0xRay: Loaded ${codexContexts.length} codex contexts`,
280
+ });
281
+ frameworkLogger.log("codex-injector", "codex contexts loaded for injection", "success", {
282
+ jobId,
283
+ contextCount: codexContexts.length,
284
+ tool: input.tool,
285
+ });
286
+ if (codexContexts.length === 0) {
287
+ return output;
288
+ }
289
+ const formattedCodex = formatCodexContext(codexContexts, sessionId);
290
+ const injectedOutput = {
291
+ ...output,
292
+ output: `${formattedCodex}\n${output.output || ""}`,
293
+ };
294
+ frameworkLogger.log("codex-injector", "codex context injected into output", "success", {
295
+ jobId,
296
+ tool: input.tool,
297
+ outputLength: injectedOutput.output?.length,
298
+ });
299
+ return injectedOutput;
300
+ }
301
+ catch (error) {
302
+ frameworkLogger.log("codex-injector", "tool.execute.after hook error", "error", {
303
+ jobId,
304
+ error: error instanceof Error ? error.message : String(error),
305
+ tool: input.tool,
306
+ });
307
+ frameworkLogger.log("codex-injector", "tool-execute-after-hook-error", "error", {
308
+ error,
309
+ message: "Error in tool.execute.after hook",
310
+ jobId,
311
+ tool: input.tool,
312
+ });
313
+ // Return original output on error to not break the session
314
+ return output;
315
+ }
316
+ },
317
+ },
318
+ };
319
+ }
320
+ /**
321
+ * Get codex statistics for debugging
322
+ */
323
+ export function getCodexStats(sessionId) {
324
+ const contexts = codexCache.get(sessionId);
325
+ if (!contexts || contexts.length === 0) {
326
+ return {
327
+ loaded: false,
328
+ fileCount: 0,
329
+ totalTerms: 0,
330
+ version: "unknown",
331
+ };
332
+ }
333
+ const totalTerms = contexts.reduce((sum, ctx) => sum + ctx.metadata.termCount, 0);
334
+ return {
335
+ loaded: true,
336
+ fileCount: contexts.length,
337
+ totalTerms,
338
+ version: contexts[0].metadata.version,
339
+ };
340
+ }
341
+ /**
342
+ * Clear codex cache (useful for testing or forced reload)
343
+ */
344
+ export function clearCodexCache(sessionId) {
345
+ if (sessionId) {
346
+ codexCache.delete(sessionId);
347
+ }
348
+ else {
349
+ codexCache.clear();
350
+ }
351
+ }
352
+ /**
353
+ * CodexInjector class for plugin compatibility
354
+ */
355
+ export class CodexInjector {
356
+ injectCodexRules(context, options) {
357
+ // Implementation for plugin compatibility
358
+ return context;
359
+ }
360
+ getCodexStats() {
361
+ // Return aggregated stats for plugin
362
+ const allContexts = [];
363
+ for (const contexts of Array.from(codexCache.values())) {
364
+ allContexts.push(...contexts);
365
+ }
366
+ const totalTerms = allContexts.reduce((sum, ctx) => sum + ctx.metadata.termCount, 0);
367
+ return {
368
+ loaded: allContexts.length > 0,
369
+ fileCount: allContexts.length,
370
+ totalTerms,
371
+ version: allContexts.length > 0 ? allContexts[0].metadata.version : "unknown",
372
+ };
373
+ }
374
+ /**
375
+ * Permissive comment validation - recognizes that comments are beneficial
376
+ * Only flags truly problematic patterns, provides guidance not requirements
377
+ */
378
+ validateCommentsPermissively(content) {
379
+ const guidance = [];
380
+ const concerns = [];
381
+ const lines = content.split("\n");
382
+ let commentLines = 0;
383
+ let codeLines = 0;
384
+ let todoCount = 0;
385
+ for (const line of lines) {
386
+ const trimmed = line.trim();
387
+ // Skip empty lines
388
+ if (!trimmed)
389
+ continue;
390
+ // Count code vs comments
391
+ if (trimmed.startsWith("//") ||
392
+ trimmed.startsWith("/*") ||
393
+ trimmed.startsWith("*") ||
394
+ trimmed.startsWith("*/")) {
395
+ commentLines++;
396
+ }
397
+ else {
398
+ codeLines++;
399
+ }
400
+ // Check for problematic patterns
401
+ if (trimmed.includes("TODO") ||
402
+ trimmed.includes("FIXME") ||
403
+ trimmed.includes("XXX")) {
404
+ todoCount++;
405
+ }
406
+ }
407
+ // Provide helpful guidance (not requirements)
408
+ const commentRatio = commentLines / (commentLines + codeLines);
409
+ if (commentLines === 0 && codeLines > 30) {
410
+ guidance.push("💡 Consider adding comments for complex logic - they improve maintainability");
411
+ }
412
+ if (commentRatio > 0.4) {
413
+ guidance.push("💡 High comment ratio detected - consider if code can be made more self-explanatory");
414
+ }
415
+ if (todoCount > 3) {
416
+ concerns.push("⚠️ Multiple unresolved tasks detected - consider addressing or documenting timelines");
417
+ }
418
+ // Recognize good commenting practices
419
+ if (commentRatio > 0.1 && commentRatio < 0.3) {
420
+ guidance.push("✅ Good balance of code and comments detected");
421
+ }
422
+ return { guidance, concerns };
423
+ }
424
+ }