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,396 @@
1
+ /**
2
+ * Codex Rule Loader
3
+ *
4
+ * Loads codex terms from the resolved codex path and converts them
5
+ * to RuleDefinition objects for the rule enforcement system.
6
+ *
7
+ * Phase 4 refactoring: Extracted from RuleEnforcer.loadCodexRules()
8
+ *
9
+ * @module loaders/codex-loader
10
+ * @version 1.0.0
11
+ */
12
+ import { frameworkLogger } from "../../core/framework-logger.js";
13
+ import { resolveCodexPath } from "../../core/config-paths.js";
14
+ import { existsSync } from "fs";
15
+ import { BaseLoader, } from "./base-loader.js";
16
+ /**
17
+ * Loader for codex terms from codex.json.
18
+ * Converts codex terms to RuleDefinition objects.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const loader = new CodexLoader();
23
+ * if (await loader.isAvailable()) {
24
+ * const rules = await loader.load();
25
+ * console.log(`Loaded ${rules.length} codex rules`);
26
+ * }
27
+ * ```
28
+ */
29
+ export class CodexLoader extends BaseLoader {
30
+ name = "codex";
31
+ /**
32
+ * Path to the codex.json file.
33
+ * Uses the standard config-paths resolver which checks .strray/, .opencode/strray/, etc.
34
+ */
35
+ get codexPath() {
36
+ const candidates = resolveCodexPath();
37
+ const found = candidates.find((p) => existsSync(p));
38
+ // Fallback to primary path even if not found yet
39
+ return found ?? candidates[0] ?? this.resolvePath(".opencode/strray/codex.json");
40
+ }
41
+ /**
42
+ * Check if codex.json exists.
43
+ * @returns Promise resolving to true if codex.json is available
44
+ */
45
+ async isAvailable() {
46
+ return this.fileExists(this.codexPath);
47
+ }
48
+ /**
49
+ * Load codex terms and convert to RuleDefinition objects.
50
+ * @returns Promise resolving to array of rule definitions
51
+ */
52
+ async load() {
53
+ const rules = [];
54
+ try {
55
+ const codexData = await this.loadJsonFile(this.codexPath);
56
+ // Convert codex terms to rules
57
+ for (const [key, term] of Object.entries(codexData.terms)) {
58
+ if (this.isValidCodexTerm(term)) {
59
+ const rule = this.convertTermToRule(key, term);
60
+ rules.push(rule);
61
+ }
62
+ }
63
+ await frameworkLogger.log("codex-loader", "loaded-codex-rules", "success", {
64
+ message: `Loaded ${rules.length} codex rules`,
65
+ ruleCount: rules.length,
66
+ version: codexData.version,
67
+ });
68
+ }
69
+ catch (error) {
70
+ await frameworkLogger.log("codex-loader", "failed-to-load-codex", "error", {
71
+ message: `Failed to load codex rules: ${error instanceof Error ? error.message : String(error)}`,
72
+ error: error instanceof Error ? error.message : String(error),
73
+ });
74
+ // Return empty array on failure - other loaders can continue
75
+ }
76
+ return rules;
77
+ }
78
+ /**
79
+ * Type guard to check if an object is a valid CodexTerm.
80
+ * @param term - Object to validate
81
+ * @returns True if the object is a valid CodexTerm
82
+ */
83
+ isValidCodexTerm(term) {
84
+ return (typeof term === "object" &&
85
+ term !== null &&
86
+ "title" in term &&
87
+ typeof term.title === "string");
88
+ }
89
+ /**
90
+ * Convert a codex term to a RuleDefinition.
91
+ * @param key - Term key (number as string)
92
+ * @param term - Codex term data
93
+ * @returns RuleDefinition object
94
+ */
95
+ convertTermToRule(key, term) {
96
+ return {
97
+ id: `codex-${key}`,
98
+ name: term.title,
99
+ description: term.description || term.title,
100
+ category: this.mapCodexCategory(term.category),
101
+ severity: this.mapCodexSeverity(term.enforcementLevel, term.zeroTolerance),
102
+ enabled: true,
103
+ validator: this.createCodexValidator(term),
104
+ };
105
+ }
106
+ /**
107
+ * Map codex category to RuleCategory.
108
+ * @param category - Codex category string
109
+ * @returns Mapped RuleCategory
110
+ */
111
+ mapCodexCategory(category) {
112
+ const categoryMap = {
113
+ core: "code-quality",
114
+ architecture: "architecture",
115
+ performance: "performance",
116
+ security: "security",
117
+ testing: "testing",
118
+ operations: "architecture",
119
+ documentation: "reporting",
120
+ process: "architecture",
121
+ "ci-cd": "testing",
122
+ infrastructure: "architecture",
123
+ quality: "code-quality",
124
+ validation: "code-quality",
125
+ resilience: "architecture",
126
+ governance: "architecture",
127
+ accessibility: "code-quality",
128
+ };
129
+ return categoryMap[category || ""] || "codex";
130
+ }
131
+ /**
132
+ * Map codex severity to RuleSeverity.
133
+ * @param enforcementLevel - Codex enforcement level
134
+ * @param zeroTolerance - Whether term has zero tolerance
135
+ * @returns Mapped RuleSeverity
136
+ */
137
+ mapCodexSeverity(enforcementLevel, zeroTolerance) {
138
+ // Zero tolerance terms are always blocking
139
+ if (zeroTolerance) {
140
+ return "blocking";
141
+ }
142
+ switch (enforcementLevel?.toLowerCase()) {
143
+ case "blocking":
144
+ return "blocking";
145
+ case "high":
146
+ return "error";
147
+ case "medium":
148
+ return "warning";
149
+ case "low":
150
+ return "info";
151
+ default:
152
+ return "info";
153
+ }
154
+ }
155
+ /**
156
+ * Create a validator function for a codex term.
157
+ * Now actually validates code against the term requirements.
158
+ * @param term - Codex term data
159
+ * @returns Validator function that performs real validation
160
+ */
161
+ createCodexValidator(term) {
162
+ return async (context) => {
163
+ const { newCode, operation } = context;
164
+ // Only validate write operations with code content
165
+ if (!newCode || operation !== "write") {
166
+ return {
167
+ passed: true,
168
+ message: `${term.title}: No code to validate`,
169
+ };
170
+ }
171
+ const violations = [];
172
+ const termNum = typeof term.number === "string" ? parseInt(term.number, 10) : term.number;
173
+ // Term 1: Progressive Prod-Ready Code - no stubs/TODOs/FIXMEs
174
+ if (termNum === 1) {
175
+ if (/TODO\s*:/i.test(newCode)) {
176
+ violations.push("Code contains TODO - not production-ready");
177
+ }
178
+ if (/FIXME\s*:/i.test(newCode)) {
179
+ violations.push("Code contains FIXME - not production-ready");
180
+ }
181
+ if (/STUB|PLACEHOLDER|TEMP\.{3}/i.test(newCode)) {
182
+ violations.push("Code contains stub/placeholder - not production-ready");
183
+ }
184
+ }
185
+ // Term 2: No Patches/Boiler/Stubs
186
+ if (termNum === 2) {
187
+ if (/console\.log\s*\(/g.test(newCode) && !newCode.includes("debug")) {
188
+ // console.log is a form of temporary debugging
189
+ }
190
+ }
191
+ // Term 7: Resolve All Errors - no console.log debugging
192
+ if (termNum === 7) {
193
+ // Strip comments before checking for console.log
194
+ const codeWithoutComments = newCode
195
+ .replace(/\/\/.*$/gm, '')
196
+ .replace(/\/\*[\s\S]*?\*\//g, '');
197
+ const consoleMatches = codeWithoutComments.match(/console\.(log|debug|info)\s*\(/g);
198
+ if (consoleMatches) {
199
+ violations.push(`Found ${consoleMatches.length} console.log/debug/info statements - use frameworkLogger`);
200
+ }
201
+ // Check for empty catch blocks
202
+ if (/catch\s*\([^)]*\)\s*\{\s*\}/.test(codeWithoutComments)) {
203
+ violations.push("Empty catch block - errors must be handled");
204
+ }
205
+ }
206
+ // Term 8: Prevent Infinite Loops
207
+ if (termNum === 8) {
208
+ if (/while\s*\(\s*true\s*\)/.test(newCode) || /while\s*\(\s*1\s*\)/.test(newCode)) {
209
+ violations.push("Infinite while loop detected");
210
+ }
211
+ // Check for while loops without clear termination
212
+ if (/while\s*\([^)]*[^<>!=\?]/.test(newCode)) {
213
+ // Potential infinite loop - let it pass with a note
214
+ }
215
+ }
216
+ // Term 11: Type Safety First - no @ts-ignore/@ts-expect-error
217
+ if (termNum === 11) {
218
+ if (/@ts-ignore/.test(newCode)) {
219
+ violations.push("@ts-ignore found - type safety bypass detected");
220
+ }
221
+ if (/@ts-expect-error/.test(newCode)) {
222
+ violations.push("@ts-expect-error found - type safety bypass detected");
223
+ }
224
+ if (/\: any\b/.test(newCode) && !newCode.includes("// Allow any")) {
225
+ violations.push("Type 'any' found - use proper typing instead");
226
+ }
227
+ }
228
+ // Term 26: Test Coverage >85% - check if new code has tests
229
+ if (termNum === 26) {
230
+ const exportedItems = newCode.match(/export\s+(function|class|const|let|var)/g);
231
+ if (exportedItems && exportedItems.length > 3) {
232
+ // Large module without obvious test references
233
+ if (!newCode.includes(".test.") && !newCode.includes(".spec.") && !newCode.includes("describe(")) {
234
+ violations.push(`${exportedItems.length} exported items without test references - ensure 85%+ coverage`);
235
+ }
236
+ }
237
+ }
238
+ // Term 46: Import Consistency - no src/ imports in source
239
+ if (termNum === 46) {
240
+ if (/from\s+['"]\.\.\/src\//.test(newCode) || /from\s+['"]\.\/src\//.test(newCode)) {
241
+ violations.push("Import from src/ directory - use relative imports for source files");
242
+ }
243
+ }
244
+ // Term 47: Module System Consistency - no CommonJS in ESM
245
+ if (termNum === 47) {
246
+ if (/require\s*\(/.test(newCode) && !newCode.includes("// Allow require")) {
247
+ violations.push("CommonJS require() in ES module - use import statements");
248
+ }
249
+ if (/module\.exports/.test(newCode)) {
250
+ violations.push("module.exports in ES module - use export statements");
251
+ }
252
+ }
253
+ // Term 32: Proper Error Handling - no empty catch
254
+ if (termNum === 32) {
255
+ if (/catch\s*\([^)]*\)\s*\{\s*\}/.test(newCode)) {
256
+ violations.push("Empty catch block - errors must be handled");
257
+ }
258
+ // Check for throws without messages
259
+ if (/throw\s+new\s+Error\s*\(\s*\)/.test(newCode)) {
260
+ violations.push("Empty Error throw - provide meaningful error message");
261
+ }
262
+ }
263
+ // Term 38: Functionality Retention - no accidental deletions
264
+ if (termNum === 38) {
265
+ // This is harder to check statically, but can warn about destructive patterns
266
+ }
267
+ // Term 29: Security by Design - check for hardcoded secrets
268
+ if (termNum === 29) {
269
+ if (/password\s*=\s*['"][^'"]{8,}['"]/i.test(newCode)) {
270
+ violations.push("Potential hardcoded password detected");
271
+ }
272
+ if (/api[_-]?key\s*=\s*['"][^'"]{20,}['"]/i.test(newCode)) {
273
+ violations.push("Potential hardcoded API key detected");
274
+ }
275
+ if (/secret\s*=\s*['"][^'"]{8,}['"]/i.test(newCode)) {
276
+ violations.push("Potential hardcoded secret detected");
277
+ }
278
+ }
279
+ // Term 12: Early Returns and Guard Clauses - deeply nested code
280
+ if (termNum === 12) {
281
+ let maxNesting = 0;
282
+ let currentNesting = 0;
283
+ let inString = false;
284
+ let inBlockComment = false;
285
+ for (let i = 0; i < newCode.length; i++) {
286
+ const char = newCode[i];
287
+ const nextChar = newCode[i + 1];
288
+ // Handle comments
289
+ if (inBlockComment) {
290
+ if (char === '*' && nextChar === '/') {
291
+ inBlockComment = false;
292
+ i++;
293
+ }
294
+ continue;
295
+ }
296
+ if (char === '/' && nextChar === '*') {
297
+ inBlockComment = true;
298
+ i++;
299
+ continue;
300
+ }
301
+ if (char === '/' && nextChar === '/') {
302
+ i = newCode.indexOf('\n', i);
303
+ continue;
304
+ }
305
+ // Handle strings
306
+ if (char === '"' || char === "'" || char === '`') {
307
+ inString = !inString;
308
+ continue;
309
+ }
310
+ if (inString)
311
+ continue;
312
+ // Count nesting
313
+ if (char === '{') {
314
+ currentNesting++;
315
+ maxNesting = Math.max(maxNesting, currentNesting);
316
+ }
317
+ else if (char === '}') {
318
+ currentNesting = Math.max(0, currentNesting - 1);
319
+ }
320
+ }
321
+ if (maxNesting > 5) {
322
+ violations.push(`Excessive nesting depth (${maxNesting} levels) - use early returns/guard clauses`);
323
+ }
324
+ }
325
+ // Term 19: Small, Focused Functions - check function size
326
+ if (termNum === 19) {
327
+ // Match actual function declarations and arrow functions (not variable declarations)
328
+ const functionRegex = /(?:^|\n)(?:function\s+\w+|async\s+function\s+\w+|(?:\([^)]*\)|[^=])=>\s*\{)/g;
329
+ const matches = newCode.match(functionRegex);
330
+ if (matches) {
331
+ for (const match of matches) {
332
+ const startIdx = newCode.indexOf(match);
333
+ const afterMatch = newCode.substring(startIdx + match.length);
334
+ const closingIdx = afterMatch.indexOf('}');
335
+ if (closingIdx > 0) {
336
+ const functionBody = afterMatch.substring(0, closingIdx);
337
+ const lines = functionBody.split('\n').filter(l => l.trim().length > 0);
338
+ if (lines.length > 30) {
339
+ violations.push(`Function with ${lines.length} lines - consider splitting into smaller functions (max 30)`);
340
+ break;
341
+ }
342
+ }
343
+ }
344
+ }
345
+ }
346
+ // Term 16: DRY - Don't Repeat Yourself - detect code duplication
347
+ if (termNum === 16) {
348
+ const lines = newCode.split('\n').filter(l => l.trim().length > 0 && !l.trim().startsWith('//') && !l.trim().startsWith('/*') && !l.trim().startsWith('*'));
349
+ const seenPatterns = new Map();
350
+ for (const line of lines) {
351
+ // Normalize: remove extra spaces, take first 40 chars
352
+ const normalized = line.replace(/\s+/g, ' ').trim().substring(0, 40);
353
+ if (normalized.length > 10) {
354
+ const count = (seenPatterns.get(normalized) || 0) + 1;
355
+ seenPatterns.set(normalized, count);
356
+ if (count >= 2) {
357
+ violations.push(`Repeated code pattern detected (${count}x) - extract to reusable function`);
358
+ break;
359
+ }
360
+ }
361
+ }
362
+ }
363
+ // Term 3: Do Not Over-Engineer - complexity check
364
+ if (termNum === 3) {
365
+ const classMatches = newCode.match(/class\s+\w+/g) || [];
366
+ const interfaceMatches = newCode.match(/interface\s+\w+/g) || [];
367
+ const typeMatches = newCode.match(/type\s+\w+\s*=/g) || [];
368
+ const abstractionCount = classMatches.length + interfaceMatches.length + typeMatches.length;
369
+ const exportedFunctions = (newCode.match(/export\s+(?:function|const|class|interface|type)/g) || []).length;
370
+ if (abstractionCount > 5 && exportedFunctions < abstractionCount) {
371
+ violations.push(`Over-abstraction: ${abstractionCount} types/interfaces/classes with few exports - keep it simpler`);
372
+ }
373
+ }
374
+ // Term 13: Error Boundaries and Graceful Degradation
375
+ if (termNum === 13) {
376
+ const hasTryCatch = /try\s*\{/.test(newCode);
377
+ const hasAsyncAwait = /async\s+(?:function|\()/i.test(newCode);
378
+ const hasPromiseCatch = /\.catch\s*\(/g.test(newCode);
379
+ if (hasAsyncAwait && !hasTryCatch && !hasPromiseCatch) {
380
+ violations.push("Async function without try-catch or .catch() - add error boundaries");
381
+ }
382
+ }
383
+ if (violations.length > 0) {
384
+ return {
385
+ passed: false,
386
+ message: `${term.title} violated: ${violations.join("; ")}`,
387
+ suggestions: violations.map(v => `Fix: ${v}`),
388
+ };
389
+ }
390
+ return {
391
+ passed: true,
392
+ message: `${term.title} validated`,
393
+ };
394
+ };
395
+ }
396
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Rule Loaders Module
3
+ *
4
+ * This module provides rule loading capabilities for the 0xRay framework.
5
+ * Loaders encapsulate the logic for loading rules from various sources.
6
+ *
7
+ * Phase 4 refactoring: Extracted async rule loading from RuleEnforcer
8
+ *
9
+ * @module loaders
10
+ * @version 1.0.0
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import {
15
+ * LoaderOrchestrator,
16
+ * CodexLoader,
17
+ * AgentTriageLoader,
18
+ * IRuleLoader
19
+ * } from './enforcement/loaders/index.js';
20
+ *
21
+ * // Use the orchestrator to load all rules
22
+ * const orchestrator = new LoaderOrchestrator();
23
+ * const result = await orchestrator.loadAllRules();
24
+ *
25
+ * // Or use individual loaders
26
+ * const codexLoader = new CodexLoader();
27
+ * if (await codexLoader.isAvailable()) {
28
+ * const codexRules = await codexLoader.load();
29
+ * }
30
+ * ```
31
+ */
32
+ // Base loader
33
+ export { BaseLoader } from "./base-loader.js";
34
+ // Concrete loaders
35
+ export { CodexLoader } from "./codex-loader.js";
36
+ export { AgentTriageLoader } from "./agent-triage-loader.js";
37
+ export { ProcessorLoader } from "./processor-loader.js";
38
+ export { AgentsMdValidationLoader } from "./agents-md-validation-loader.js";
39
+ // Orchestrator
40
+ export { LoaderOrchestrator, } from "./loader-orchestrator.js";
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Loader Orchestrator
3
+ *
4
+ * Coordinates multiple rule loaders to load rules from various sources.
5
+ * Manages loader execution, error handling, and rule aggregation.
6
+ *
7
+ * Phase 4 refactoring: Extracted loader orchestration from RuleEnforcer
8
+ *
9
+ * @module loaders/loader-orchestrator
10
+ * @version 1.0.0
11
+ */
12
+ import { frameworkLogger } from "../../core/framework-logger.js";
13
+ import { CodexLoader } from "./codex-loader.js";
14
+ import { AgentTriageLoader } from "./agent-triage-loader.js";
15
+ import { ProcessorLoader } from "./processor-loader.js";
16
+ import { AgentsMdValidationLoader } from "./agents-md-validation-loader.js";
17
+ /**
18
+ * Orchestrates multiple rule loaders to load rules from various sources.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const orchestrator = new LoaderOrchestrator();
23
+ * const result = await orchestrator.loadAllRules();
24
+ * console.log(`Loaded ${result.rules.length} rules from ${result.successfulLoaders} loaders`);
25
+ * ```
26
+ */
27
+ export class LoaderOrchestrator {
28
+ loaders = [];
29
+ options;
30
+ /**
31
+ * Create a new LoaderOrchestrator.
32
+ * @param options - Configuration options
33
+ */
34
+ constructor(options = {}) {
35
+ this.options = {
36
+ continueOnError: true,
37
+ enableLogging: true,
38
+ ...options,
39
+ };
40
+ // Register default loaders
41
+ this.registerDefaultLoaders();
42
+ }
43
+ /**
44
+ * Register the default set of loaders.
45
+ */
46
+ registerDefaultLoaders() {
47
+ this.loaders = [
48
+ new CodexLoader(),
49
+ new AgentTriageLoader(),
50
+ new ProcessorLoader(),
51
+ new AgentsMdValidationLoader(),
52
+ ];
53
+ }
54
+ /**
55
+ * Load all rules from all available loaders.
56
+ * @returns Promise resolving to orchestrator result
57
+ */
58
+ async loadAllRules() {
59
+ const allRules = [];
60
+ const loaderResults = new Map();
61
+ let successfulLoaders = 0;
62
+ let failedLoaders = 0;
63
+ for (const loader of this.loaders) {
64
+ try {
65
+ const isAvailable = await loader.isAvailable();
66
+ if (!isAvailable) {
67
+ if (this.options.enableLogging) {
68
+ await frameworkLogger.log("loader-orchestrator", "loader-not-available", "info", {
69
+ message: `Loader ${loader.name} not available, skipping`,
70
+ loader: loader.name,
71
+ });
72
+ }
73
+ loaderResults.set(loader.name, { success: true, ruleCount: 0 });
74
+ continue;
75
+ }
76
+ const rules = await loader.load();
77
+ allRules.push(...rules);
78
+ successfulLoaders++;
79
+ loaderResults.set(loader.name, { success: true, ruleCount: rules.length });
80
+ if (this.options.enableLogging) {
81
+ await frameworkLogger.log("loader-orchestrator", "loader-success", "success", {
82
+ message: `Loader ${loader.name} loaded ${rules.length} rules`,
83
+ loader: loader.name,
84
+ ruleCount: rules.length,
85
+ });
86
+ }
87
+ }
88
+ catch (error) {
89
+ failedLoaders++;
90
+ const errorMessage = error instanceof Error ? error.message : String(error);
91
+ loaderResults.set(loader.name, { success: false, ruleCount: 0, error: errorMessage });
92
+ if (this.options.enableLogging) {
93
+ await frameworkLogger.log("loader-orchestrator", "loader-failed", "error", {
94
+ message: `Loader ${loader.name} failed: ${errorMessage}`,
95
+ loader: loader.name,
96
+ error: errorMessage,
97
+ });
98
+ }
99
+ if (!this.options.continueOnError) {
100
+ throw error;
101
+ }
102
+ }
103
+ }
104
+ const result = {
105
+ rules: allRules,
106
+ successfulLoaders,
107
+ failedLoaders,
108
+ loaderResults,
109
+ };
110
+ if (this.options.enableLogging) {
111
+ await frameworkLogger.log("loader-orchestrator", "load-complete", "success", {
112
+ message: `Loaded ${allRules.length} rules from ${successfulLoaders} loaders (${failedLoaders} failed)`,
113
+ totalRules: allRules.length,
114
+ successfulLoaders,
115
+ failedLoaders,
116
+ });
117
+ }
118
+ return result;
119
+ }
120
+ /**
121
+ * Register a custom loader.
122
+ * @param loader - Loader to register
123
+ */
124
+ registerLoader(loader) {
125
+ this.loaders.push(loader);
126
+ }
127
+ /**
128
+ * Get all registered loaders.
129
+ * @returns Array of registered loaders
130
+ */
131
+ getLoaders() {
132
+ return [...this.loaders];
133
+ }
134
+ /**
135
+ * Get loader by name.
136
+ * @param name - Loader name
137
+ * @returns Loader instance or undefined
138
+ */
139
+ getLoader(name) {
140
+ return this.loaders.find((loader) => loader.name === name);
141
+ }
142
+ /**
143
+ * Remove a loader by name.
144
+ * @param name - Loader name
145
+ * @returns True if loader was removed
146
+ */
147
+ removeLoader(name) {
148
+ const index = this.loaders.findIndex((loader) => loader.name === name);
149
+ if (index >= 0) {
150
+ this.loaders.splice(index, 1);
151
+ return true;
152
+ }
153
+ return false;
154
+ }
155
+ /**
156
+ * Clear all registered loaders.
157
+ */
158
+ clearLoaders() {
159
+ this.loaders = [];
160
+ }
161
+ /**
162
+ * Get count of registered loaders.
163
+ * @returns Number of loaders
164
+ */
165
+ getLoaderCount() {
166
+ return this.loaders.length;
167
+ }
168
+ }