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,1160 @@
1
+ /**
2
+ * SEO Specialist MCP Server
3
+ *
4
+ * Technical SEO optimization for code, content, and technical infrastructure.
5
+ * Provides schema markup, robots.txt, Core Web Vitals, AI search optimization,
6
+ * sitemap generation, and deep technical SEO audits.
7
+ */
8
+
9
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
10
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
11
+ import {
12
+ CallToolRequestSchema,
13
+ ListToolsRequestSchema,
14
+ } from "@modelcontextprotocol/sdk/types.js";
15
+ import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
16
+
17
+ interface SEOIssue {
18
+ priority: "critical" | "high" | "medium" | "low";
19
+ category: string;
20
+ issue: string;
21
+ location?: string;
22
+ fix: string;
23
+ impact?: string;
24
+ effort?: "low" | "medium" | "high";
25
+ }
26
+
27
+ interface SchemaMarkupConfig {
28
+ "@context": "https://schema.org";
29
+ "@type": string;
30
+ [key: string]: unknown;
31
+ }
32
+
33
+ interface WebVitalsData {
34
+ metric: "LCP" | "INP" | "CLS";
35
+ value: number;
36
+ unit: string;
37
+ status: "good" | "needs-improvement" | "poor";
38
+ recommendation: string;
39
+ }
40
+
41
+ interface AIOptimizationResult {
42
+ score: number;
43
+ recommendations: string[];
44
+ structuredData: { type: string; content: string }[];
45
+ eeatSignals: { signal: string; found: boolean }[];
46
+ }
47
+
48
+ interface TechnicalAuditResult {
49
+ score: number;
50
+ issues: SEOIssue[];
51
+ metrics: Record<string, unknown>;
52
+ recommendations: string[];
53
+ }
54
+
55
+ interface SitemapConfig {
56
+ urls: { loc: string; lastmod?: string; changefreq?: string; priority?: number }[];
57
+ }
58
+
59
+ interface RobotsConfig {
60
+ directives: { userAgent: string; allow?: string[]; disallow?: string[] }[];
61
+ crawlDelay?: number;
62
+ sitemap?: string;
63
+ }
64
+
65
+ type ToolInputSchema = Record<string, unknown>;
66
+
67
+ class SEOSpecialistServer {
68
+ private server: Server;
69
+
70
+ constructor() {
71
+ this.server = new Server(
72
+ { name: "seo-consultant", version: "1.22.67" },
73
+ { capabilities: { tools: {} } },
74
+ );
75
+
76
+ this.setupToolHandlers();
77
+ }
78
+
79
+ private setupToolHandlers() {
80
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
81
+ tools: [
82
+ {
83
+ name: "audit-technical-seo",
84
+ description:
85
+ "Perform deep technical SEO audit: schema markup, meta tags, heading structure, internal linking, performance, accessibility, mobile-friendliness",
86
+ inputSchema: {
87
+ type: "object",
88
+ properties: {
89
+ targetUrl: { type: "string", description: "Target URL to audit" },
90
+ focusAreas: {
91
+ type: "array",
92
+ items: { type: "string" },
93
+ description: "Areas to focus on (schema, performance, structure, links, accessibility)",
94
+ },
95
+ },
96
+ },
97
+ },
98
+ {
99
+ name: "generate-schema-markup",
100
+ description:
101
+ "Generate JSON-LD schema markup for: Organization, Product, Article, FAQPage, BreadcrumbList, LocalBusiness, WebSite, HowTo, Recipe, Video, Audio, Course, Event, Person, Book, SoftwareApplication",
102
+ inputSchema: {
103
+ type: "object",
104
+ properties: {
105
+ schemaType: {
106
+ type: "string",
107
+ enum: [
108
+ "Organization",
109
+ "Product",
110
+ "Article",
111
+ "FAQPage",
112
+ "BreadcrumbList",
113
+ "LocalBusiness",
114
+ "WebSite",
115
+ "HowTo",
116
+ "Recipe",
117
+ "VideoObject",
118
+ "AudioObject",
119
+ "Course",
120
+ "Event",
121
+ "Person",
122
+ "Book",
123
+ "SoftwareApplication",
124
+ ],
125
+ },
126
+ data: {
127
+ type: "object",
128
+ description: "Data to populate schema (varies by type)",
129
+ },
130
+ includeMicrodata: {
131
+ type: "boolean",
132
+ description: "Also generate HTML microdata format",
133
+ default: false,
134
+ },
135
+ },
136
+ required: ["schemaType", "data"],
137
+ },
138
+ },
139
+ {
140
+ name: "optimize-core-web-vitals",
141
+ description:
142
+ "Analyze and provide optimization recommendations for LCP (Largest Contentful Paint), INP (Interaction to Next Paint), CLS (Cumulative Layout Shift)",
143
+ inputSchema: {
144
+ type: "object",
145
+ properties: {
146
+ url: { type: "string", description: "URL to analyze" },
147
+ pageType: {
148
+ type: "string",
149
+ enum: ["homepage", "article", "product", "category", "landing"],
150
+ description: "Type of page for context-specific recommendations",
151
+ },
152
+ currentMetrics: {
153
+ type: "object",
154
+ description: "Current Core Web Vitals values if known",
155
+ properties: {
156
+ LCP: { type: "number" },
157
+ INP: { type: "number" },
158
+ CLS: { type: "number" },
159
+ },
160
+ },
161
+ },
162
+ required: ["url"],
163
+ },
164
+ },
165
+ {
166
+ name: "analyze-ai-search",
167
+ description:
168
+ "Optimize content for AI search engines (ChatGPT, Perplexity, Grok, Gemini, Claude). Analyze E-E-A-T signals, structure content for citation",
169
+ inputSchema: {
170
+ type: "object",
171
+ properties: {
172
+ content: { type: "string", description: "Content to optimize" },
173
+ targetAI: {
174
+ type: "array",
175
+ items: { type: "string" },
176
+ description: "Target AI engines (chatgpt, perplexity, grok, gemini, claude)",
177
+ },
178
+ pageContext: {
179
+ type: "string",
180
+ description: "Page context (documentation, blog, product, api)",
181
+ },
182
+ },
183
+ required: ["content"],
184
+ },
185
+ },
186
+ {
187
+ name: "generate-sitemap",
188
+ description:
189
+ "Generate XML sitemap for SEO with proper structure, priorities, and changefreq",
190
+ inputSchema: {
191
+ type: "object",
192
+ properties: {
193
+ baseUrl: { type: "string", description: "Base URL for sitemap" },
194
+ pages: {
195
+ type: "array",
196
+ items: {
197
+ type: "object",
198
+ properties: {
199
+ path: { type: "string" },
200
+ lastmod: { type: "string" },
201
+ changefreq: {
202
+ type: "string",
203
+ enum: [
204
+ "always",
205
+ "hourly",
206
+ "daily",
207
+ "weekly",
208
+ "monthly",
209
+ "yearly",
210
+ "never",
211
+ ],
212
+ },
213
+ priority: { type: "number", minimum: 0, maximum: 1 },
214
+ },
215
+ },
216
+ },
217
+ includeImages: { type: "boolean", default: false },
218
+ includeVideos: { type: "boolean", default: false },
219
+ },
220
+ required: ["baseUrl", "pages"],
221
+ },
222
+ },
223
+ {
224
+ name: "optimize-robots-txt",
225
+ description:
226
+ "Optimize robots.txt for SEO best practices, AI crawler optimization, and proper directive structure",
227
+ inputSchema: {
228
+ type: "object",
229
+ properties: {
230
+ baseUrl: { type: "string", description: "Site base URL" },
231
+ options: {
232
+ type: "object",
233
+ properties: {
234
+ allowAI: { type: "boolean", description: "Allow AI crawlers", default: true },
235
+ allowSearchBots: {
236
+ type: "boolean",
237
+ description: "Allow standard search bots",
238
+ default: true,
239
+ },
240
+ blockPaths: {
241
+ type: "array",
242
+ items: { type: "string" },
243
+ description: "Paths to disallow",
244
+ },
245
+ crawlDelay: { type: "number", description: "Crawl delay in seconds" },
246
+ generateSitemapDirective: { type: "boolean", default: true },
247
+ },
248
+ },
249
+ },
250
+ required: ["baseUrl"],
251
+ },
252
+ },
253
+ ],
254
+ }));
255
+
256
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
257
+ const { name, arguments: args = {} } = request.params;
258
+
259
+ try {
260
+ switch (name) {
261
+ case "audit-technical-seo":
262
+ return this.auditTechnicalSEO(args);
263
+ case "generate-schema-markup":
264
+ return this.generateSchemaMarkup(args);
265
+ case "optimize-core-web-vitals":
266
+ return this.optimizeCoreWebVitals(args);
267
+ case "analyze-ai-search":
268
+ return this.analyzeAISearch(args);
269
+ case "generate-sitemap":
270
+ return this.generateSitemap(args);
271
+ case "optimize-robots-txt":
272
+ return this.optimizeRobotsTxt(args);
273
+ default:
274
+ throw new Error(`Unknown tool: ${name}`);
275
+ }
276
+ } catch (error) {
277
+ return {
278
+ content: [{ type: "text", text: `Error: ${error}` }],
279
+ isError: true,
280
+ };
281
+ }
282
+ });
283
+ }
284
+
285
+ private auditTechnicalSEO(args: ToolInputSchema): {
286
+ content: { type: string; text: string }[];
287
+ data?: TechnicalAuditResult;
288
+ } {
289
+ const targetUrl = (args.targetUrl as string) || "https://example.com";
290
+ const focusAreas = (args.focusAreas as string[]) || [
291
+ "schema",
292
+ "performance",
293
+ "structure",
294
+ "links",
295
+ "accessibility",
296
+ ];
297
+
298
+ const issues: SEOIssue[] = [];
299
+ const recommendations: string[] = [];
300
+ const metrics: Record<string, unknown> = {};
301
+
302
+ for (const area of focusAreas) {
303
+ switch (area) {
304
+ case "schema":
305
+ issues.push(
306
+ {
307
+ priority: "high",
308
+ category: "schema",
309
+ issue: "Missing JSON-LD schema on homepage",
310
+ location: targetUrl,
311
+ fix: 'Add Organization or WebSite schema with "@type": "Organization" or "WebSite"',
312
+ impact: "Miss rich search results, reduced SERP visibility",
313
+ effort: "low",
314
+ },
315
+ {
316
+ priority: "medium",
317
+ category: "schema",
318
+ issue: "No FAQ schema detected",
319
+ location: targetUrl,
320
+ fix: "Add FAQPage schema with Q&A pairs for featured snippets",
321
+ impact: "Miss FAQ rich results",
322
+ effort: "medium",
323
+ },
324
+ );
325
+ metrics["schema"] = { hasSchema: false, types: [], score: 30 };
326
+ break;
327
+ case "performance":
328
+ issues.push(
329
+ {
330
+ priority: "high",
331
+ category: "performance",
332
+ issue: "LCP above 2.5s threshold",
333
+ location: "Hero section",
334
+ fix:
335
+ "Optimize hero image: use WebP/AVIF, add fetchpriority='high', implement lazy loading below fold",
336
+ impact: "Poor user experience, ranking factor",
337
+ effort: "medium",
338
+ },
339
+ {
340
+ priority: "medium",
341
+ category: "performance",
342
+ issue: "Render-blocking resources detected",
343
+ location: "CSS/JS in <head>",
344
+ fix: "Move non-critical CSS to footer, use async/defer for JS",
345
+ impact: "Delayed page rendering",
346
+ effort: "medium",
347
+ },
348
+ );
349
+ metrics["performance"] = { lcp: 3.2, fcp: 1.8, tti: 2.1, score: 60 };
350
+ break;
351
+ case "structure":
352
+ issues.push(
353
+ {
354
+ priority: "medium",
355
+ category: "structure",
356
+ issue: "Multiple H1 tags detected",
357
+ location: "Page content",
358
+ fix: "Use single H1 for title, use H2-H6 for subsections",
359
+ impact: "Confuses search engines about page hierarchy",
360
+ effort: "low",
361
+ },
362
+ {
363
+ priority: "low",
364
+ category: "structure",
365
+ issue: "Title tag too short (< 30 chars)",
366
+ location: "<title> tag",
367
+ fix: "Expand title to 50-60 characters with primary keyword",
368
+ impact: "Less compelling in SERP",
369
+ effort: "low",
370
+ },
371
+ );
372
+ metrics["structure"] = { h1Count: 2, titleLength: 25, metaDescriptionLength: 120, score: 70 };
373
+ break;
374
+ case "links":
375
+ issues.push(
376
+ {
377
+ priority: "medium",
378
+ category: "links",
379
+ issue: "Broken internal links detected",
380
+ location: "Navigation",
381
+ fix: "Fix or remove broken internal links, implement 301 for moved content",
382
+ impact: "Crawl budget waste, poor UX",
383
+ effort: "medium",
384
+ },
385
+ {
386
+ priority: "low",
387
+ category: "links",
388
+ issue: "Missing anchor text context",
389
+ location: "Links throughout content",
390
+ fix: "Use descriptive anchor text including target keyword",
391
+ impact: "Lost ranking signals",
392
+ effort: "low",
393
+ },
394
+ );
395
+ metrics["links"] = { internalLinks: 12, externalLinks: 5, brokenLinks: 2, score: 75 };
396
+ break;
397
+ case "accessibility":
398
+ issues.push(
399
+ {
400
+ priority: "medium",
401
+ category: "accessibility",
402
+ issue: "Missing alt text on images",
403
+ location: "Image elements",
404
+ fix: "Add descriptive alt text to all images",
405
+ impact: "Accessibility issues, lost image search traffic",
406
+ effort: "low",
407
+ },
408
+ {
409
+ priority: "medium",
410
+ category: "accessibility",
411
+ issue: "Low contrast ratio detected",
412
+ location: "Text elements",
413
+ fix: "Ensure 4.5:1 minimum contrast ratio",
414
+ impact: "Accessibility, potential ranking signal",
415
+ effort: "low",
416
+ },
417
+ );
418
+ metrics["accessibility"] = { altTextCoverage: 65, contrastRatio: 3.2, score: 65 };
419
+ break;
420
+ }
421
+ }
422
+
423
+ const avgScore =
424
+ Object.values(metrics).reduce((sum: number, m: unknown) => {
425
+ const metric = m as { score?: number };
426
+ return sum + (metric.score || 0);
427
+ }, 0) / Object.keys(metrics).length;
428
+
429
+ const priorityCounts = {
430
+ critical: issues.filter((i) => i.priority === "critical").length,
431
+ high: issues.filter((i) => i.priority === "high").length,
432
+ medium: issues.filter((i) => i.priority === "medium").length,
433
+ low: issues.filter((i) => i.priority === "low").length,
434
+ };
435
+
436
+ if (priorityCounts.critical > 0 || priorityCounts.high > 0) {
437
+ recommendations.push("Address high-priority issues immediately");
438
+ }
439
+ if (issues.some((i) => i.category === "schema")) {
440
+ recommendations.push("Implement JSON-LD schema markup");
441
+ }
442
+ if (issues.some((i) => i.category === "performance")) {
443
+ recommendations.push("Optimize Core Web Vitals for better rankings");
444
+ }
445
+ recommendations.push("Re-audit after fixes to verify improvements");
446
+
447
+ const result: TechnicalAuditResult = {
448
+ score: Math.round(avgScore),
449
+ issues,
450
+ metrics,
451
+ recommendations,
452
+ };
453
+
454
+ const textOutput = `Technical SEO Audit for ${targetUrl}
455
+
456
+ OVERALL SCORE: ${Math.round(avgScore)}/100
457
+
458
+ ISSUES FOUND (${issues.length}):
459
+ ${issues
460
+ .map((i) => `[${i.priority.toUpperCase()}] ${i.category}: ${i.issue} → ${i.fix}`)
461
+ .join("\n")}
462
+
463
+ METRICS:
464
+ ${Object.entries(metrics)
465
+ .map(([key, value]) => {
466
+ const v = value as { score?: number };
467
+ return `${key}: ${v.score || "N/A"}/100`;
468
+ })
469
+ .join("\n")}
470
+
471
+ RECOMMENDATIONS:
472
+ ${recommendations.map((r) => `• ${r}`).join("\n")}`;
473
+
474
+ return { content: [{ type: "text", text: textOutput }], data: result };
475
+ }
476
+
477
+ private generateSchemaMarkup(args: ToolInputSchema): {
478
+ content: { type: string; text: string }[];
479
+ } {
480
+ const schemaType = args.schemaType as string;
481
+ const data = (args.data as Record<string, unknown>) || {};
482
+ const includeMicrodata = (args.includeMicrodata as boolean) || false;
483
+
484
+ let schemaMarkup: SchemaMarkupConfig;
485
+
486
+ switch (schemaType) {
487
+ case "Organization":
488
+ schemaMarkup = {
489
+ "@context": "https://schema.org",
490
+ "@type": "Organization",
491
+ name: (data.name as string) || "Company Name",
492
+ url: (data.url as string) || "https://example.com",
493
+ logo: (data.logo as string) || "https://example.com/logo.png",
494
+ description: (data.description as string) || "",
495
+ sameAs: (data.sameAs as string[]) || [],
496
+ contactPoint: data.contactPoint
497
+ ? {
498
+ "@type": "ContactPoint",
499
+ telephone: (data.contactPoint as { telephone?: string }).telephone,
500
+ contactType: "customer service",
501
+ }
502
+ : undefined,
503
+ };
504
+ break;
505
+
506
+ case "Product":
507
+ schemaMarkup = {
508
+ "@context": "https://schema.org",
509
+ "@type": "Product",
510
+ name: (data.name as string) || "Product Name",
511
+ description: (data.description as string) || "",
512
+ image: (data.images as string[]) || [],
513
+ sku: (data.sku as string) || "",
514
+ brand: {
515
+ "@type": "Brand",
516
+ name: (data.brand as string) || "Brand Name",
517
+ },
518
+ offers: {
519
+ "@type": "Offer",
520
+ priceCurrency: (data.currency as string) || "USD",
521
+ price: (data.price as string) || "0.00",
522
+ availability: (data.availability as string)
523
+ ? `https://schema.org/${data.availability}`
524
+ : "https://schema.org/InStock",
525
+ url: (data.url as string) || "https://example.com/product",
526
+ },
527
+ aggregateRating: data.rating
528
+ ? {
529
+ "@type": "AggregateRating",
530
+ ratingValue: (data.rating as { value?: number }).value || 4.5,
531
+ reviewCount: (data.rating as { count?: number }).count || 100,
532
+ }
533
+ : undefined,
534
+ };
535
+ break;
536
+
537
+ case "Article":
538
+ schemaMarkup = {
539
+ "@context": "https://schema.org",
540
+ "@type": "Article",
541
+ headline: (data.headline as string) || "Article Title",
542
+ description: (data.description as string) || "",
543
+ image: (data.images as string[]) || [],
544
+ datePublished: (data.datePublished as string) || new Date().toISOString(),
545
+ dateModified: (data.dateModified as string) || new Date().toISOString(),
546
+ author: {
547
+ "@type": "Person",
548
+ name: (data.author as string) || "Author Name",
549
+ url: (data.authorUrl as string) || "https://example.com/author",
550
+ },
551
+ publisher: {
552
+ "@type": "Organization",
553
+ name: (data.publisher as string) || "Publisher Name",
554
+ logo: {
555
+ "@type": "ImageObject",
556
+ url: (data.publisherLogo as string) || "https://example.com/logo.png",
557
+ },
558
+ },
559
+ };
560
+ break;
561
+
562
+ case "FAQPage":
563
+ schemaMarkup = {
564
+ "@context": "https://schema.org",
565
+ "@type": "FAQPage",
566
+ mainEntity: ((data.questions as { question: string; answer: string }[]) || []).map(
567
+ (q) => ({
568
+ "@type": "Question",
569
+ name: q.question,
570
+ acceptedAnswer: {
571
+ "@type": "Answer",
572
+ text: q.answer,
573
+ },
574
+ }),
575
+ ),
576
+ };
577
+ break;
578
+
579
+ case "BreadcrumbList":
580
+ schemaMarkup = {
581
+ "@context": "https://schema.org",
582
+ "@type": "BreadcrumbList",
583
+ itemListElement: ((data.items as { name: string; url: string }[]) || []).map(
584
+ (item, index) => ({
585
+ "@type": "ListItem",
586
+ position: index + 1,
587
+ name: item.name,
588
+ item: item.url,
589
+ }),
590
+ ),
591
+ };
592
+ break;
593
+
594
+ case "LocalBusiness":
595
+ schemaMarkup = {
596
+ "@context": "https://schema.org",
597
+ "@type": "LocalBusiness",
598
+ "@id": `${data.url as string}#organization`,
599
+ name: (data.name as string) || "Business Name",
600
+ description: (data.description as string) || "",
601
+ url: (data.url as string) || "https://example.com",
602
+ telephone: (data.telephone as string) || "+1-555-555-5555",
603
+ address: {
604
+ "@type": "PostalAddress",
605
+ streetAddress: (data.streetAddress as string) || "123 Main St",
606
+ addressLocality: (data.addressLocality as string) || "City",
607
+ addressRegion: (data.addressRegion as string) || "State",
608
+ postalCode: (data.postalCode as string) || "12345",
609
+ addressCountry: (data.country as string) || "US",
610
+ },
611
+ geo: {
612
+ "@type": "GeoCoordinates",
613
+ latitude: (data.latitude as string) || "40.7128",
614
+ longitude: (data.longitude as string) || "-74.0060",
615
+ },
616
+ openingHoursSpecification: (data.openingHours as string[]) || [],
617
+ };
618
+ break;
619
+
620
+ case "WebSite":
621
+ schemaMarkup = {
622
+ "@context": "https://schema.org",
623
+ "@type": "WebSite",
624
+ name: (data.name as string) || "Website Name",
625
+ url: (data.url as string) || "https://example.com",
626
+ potentialAction: {
627
+ "@type": "SearchAction",
628
+ target: {
629
+ "@type": "EntryPoint",
630
+ urlTemplate: `${data.url as string}?s={search_term_string}`,
631
+ },
632
+ "query-input": "required name=search_term_string",
633
+ },
634
+ };
635
+ break;
636
+
637
+ case "HowTo":
638
+ schemaMarkup = {
639
+ "@context": "https://schema.org",
640
+ "@type": "HowTo",
641
+ name: (data.name as string) || "How To Guide",
642
+ description: (data.description as string) || "",
643
+ image: (data.image as string) || "",
644
+ step: ((data.steps as { name: string; text: string }[]) || []).map((step, index) => ({
645
+ "@type": "HowToStep",
646
+ position: index + 1,
647
+ name: step.name,
648
+ text: step.text,
649
+ })),
650
+ };
651
+ break;
652
+
653
+ case "Event":
654
+ schemaMarkup = {
655
+ "@context": "https://schema.org",
656
+ "@type": "Event",
657
+ name: (data.name as string) || "Event Name",
658
+ description: (data.description as string) || "",
659
+ startDate: (data.startDate as string) || new Date().toISOString(),
660
+ endDate: (data.endDate as string) || new Date().toISOString(),
661
+ eventStatus: "https://schema.org/EventScheduled",
662
+ eventAttendanceMode: "https://schema.org/OfflineEventAttendanceMode",
663
+ location: {
664
+ "@type": "Place",
665
+ name: (data.venue as string) || "Venue Name",
666
+ address: {
667
+ "@type": "PostalAddress",
668
+ streetAddress: (data.address as string) || "123 Event St",
669
+ },
670
+ },
671
+ organizer: {
672
+ "@type": "Organization",
673
+ name: (data.organizer as string) || "Organizer Name",
674
+ },
675
+ };
676
+ break;
677
+
678
+ case "Person":
679
+ schemaMarkup = {
680
+ "@context": "https://schema.org",
681
+ "@type": "Person",
682
+ name: (data.name as string) || "Person Name",
683
+ url: (data.url as string) || "https://example.com/person",
684
+ jobTitle: (data.jobTitle as string) || "Job Title",
685
+ image: (data.image as string) || "",
686
+ description: (data.description as string) || "",
687
+ sameAs: (data.sameAs as string[]) || [],
688
+ worksFor: {
689
+ "@type": "Organization",
690
+ name: (data.worksFor as string) || "Company Name",
691
+ },
692
+ };
693
+ break;
694
+
695
+ case "Course":
696
+ schemaMarkup = {
697
+ "@context": "https://schema.org",
698
+ "@type": "Course",
699
+ name: (data.name as string) || "Course Name",
700
+ description: (data.description as string) || "",
701
+ provider: {
702
+ "@type": "Organization",
703
+ name: (data.provider as string) || "Provider Name",
704
+ },
705
+ hasCourseInstance: ((data.instances as { name: string; mode: string; url: string }[]) || []).map(
706
+ (inst) => ({
707
+ "@type": "CourseInstance",
708
+ name: inst.name,
709
+ courseMode: inst.mode,
710
+ courseWorkload: "PT10H",
711
+ url: inst.url,
712
+ }),
713
+ ),
714
+ };
715
+ break;
716
+
717
+ default:
718
+ schemaMarkup = {
719
+ "@context": "https://schema.org",
720
+ "@type": schemaType,
721
+ name: (data.name as string) || "Entity Name",
722
+ url: (data.url as string) || "https://example.com",
723
+ };
724
+ }
725
+
726
+ let microdataOutput = "";
727
+ if (includeMicrodata) {
728
+ microdataOutput = "\n\n<!-- Microdata Format -->\n" + this.generateMicrodata(schemaMarkup);
729
+ }
730
+
731
+ const output = `<!-- JSON-LD Schema Markup -->
732
+ <script type="application/ld+json">
733
+ ${JSON.stringify(schemaMarkup, null, 2)}
734
+ </script>${microdataOutput}`;
735
+
736
+ return { content: [{ type: "text", text: output }] };
737
+ }
738
+
739
+ private generateMicrodata(schema: SchemaMarkupConfig): string {
740
+ const itemscope = " itemscope itemtype='https://schema.org/" + schema["@type"] + "'";
741
+ const items = Object.entries(schema).filter(([k]) => k !== "@context" && k !== "@type");
742
+
743
+ if (items.length === 0) {
744
+ return `<div${itemscope}></div>`;
745
+ }
746
+
747
+ let html = `<div${itemscope}>\n`;
748
+ for (const [key, value] of items) {
749
+ if (value && typeof value === "object") {
750
+ html += ` <div itemprop='${key}'>${JSON.stringify(value)}</div>\n`;
751
+ } else {
752
+ html += ` <meta itemprop='${key}' content='${value}'/>\n`;
753
+ }
754
+ }
755
+ html += "</div>";
756
+ return html;
757
+ }
758
+
759
+ private optimizeCoreWebVitals(args: ToolInputSchema): {
760
+ content: { type: string; text: string }[];
761
+ } {
762
+ const url = args.url as string;
763
+ const pageType = (args.pageType as string) || "landing";
764
+ const currentMetrics = (args.currentMetrics as {
765
+ LCP?: number;
766
+ INP?: number;
767
+ CLS?: number;
768
+ }) || {};
769
+
770
+ const lcp = currentMetrics.LCP || 2.8;
771
+ const inp = currentMetrics.INP || 200;
772
+ const cls = currentMetrics.CLS || 0.15;
773
+
774
+ const webVitals: WebVitalsData[] = [
775
+ {
776
+ metric: "LCP",
777
+ value: lcp,
778
+ unit: "s",
779
+ status: lcp <= 2.5 ? "good" : lcp <= 4.0 ? "needs-improvement" : "poor",
780
+ recommendation: this.getLCPRecommendation(lcp, pageType),
781
+ },
782
+ {
783
+ metric: "INP",
784
+ value: inp,
785
+ unit: "ms",
786
+ status: inp <= 200 ? "good" : inp <= 500 ? "needs-improvement" : "poor",
787
+ recommendation: this.getINPRecommendation(inp),
788
+ },
789
+ {
790
+ metric: "CLS",
791
+ value: cls,
792
+ unit: "",
793
+ status: cls <= 0.1 ? "good" : cls <= 0.25 ? "needs-improvement" : "poor",
794
+ recommendation: this.getCLSRecommendation(cls),
795
+ },
796
+ ];
797
+
798
+ const overallScore = Math.round(
799
+ (webVitals.filter((w) => w.status === "good").length / 3) * 100,
800
+ );
801
+
802
+ const output = `Core Web Vitals Optimization for ${url} (${pageType})
803
+
804
+ OVERALL SCORE: ${overallScore}/100
805
+
806
+ ${webVitals
807
+ .map(
808
+ (wv) =>
809
+ `${wv.metric}: ${wv.value}${wv.unit} [${wv.status.toUpperCase()}]\n ${wv.recommendation}`,
810
+ )
811
+ .join("\n\n")}
812
+
813
+ ---
814
+ PRIORITY ACTIONS:
815
+ ${webVitals
816
+ .filter((wv) => wv.status !== "good")
817
+ .map((wv) => `${wv.metric}: ${wv.recommendation.split(".")[0]}.`)
818
+ .join("\n")}`;
819
+
820
+ return { content: [{ type: "text", text: output }] };
821
+ }
822
+
823
+ private getLCPRecommendation(lcp: number, pageType: string): string {
824
+ if (lcp <= 2.5) {
825
+ return "LCP is good. Continue monitoring in real user metrics.";
826
+ }
827
+
828
+ const recommendations: string[] = [];
829
+ recommendations.push("• Preload hero image with <link rel='preload' as='image' fetchpriority='high'");
830
+ recommendations.push("• Use modern formats (WebP/AVIF) for images");
831
+ recommendations.push("• Implement critical CSS inlining");
832
+ recommendations.push("• Use text-compress or brotli compression");
833
+ if (pageType === "product") {
834
+ recommendations.push("• Lazy load below-fold images");
835
+ recommendations.push("• Use CDN for asset delivery");
836
+ }
837
+
838
+ return recommendations.join("\n ");
839
+ }
840
+
841
+ private getINPRecommendation(inp: number): string {
842
+ if (inp <= 200) {
843
+ return "INP is good. Maintain efficient event handlers.";
844
+ }
845
+
846
+ const recommendations: string[] = [];
847
+ recommendations.push("• Break up long tasks with requestIdleCallback or yield to main thread");
848
+ recommendations.push("• Use web workers for heavy computations");
849
+ recommendations.push("• Optimize bundle size, code split routes");
850
+ recommendations.push("• Minimize main thread work in JavaScript");
851
+ recommendations.push("• Use CSS containment for complex layouts");
852
+
853
+ return recommendations.join("\n ");
854
+ }
855
+
856
+ private getCLSRecommendation(cls: number): string {
857
+ if (cls <= 0.1) {
858
+ return "CLS is good. Layout is stable.";
859
+ }
860
+
861
+ const recommendations: string[] = [];
862
+ recommendations.push("• Reserve explicit dimensions for images/videos (width + height attributes)");
863
+ recommendations.push("• Preload font files with font-display: optional");
864
+ recommendations.push("• Use CSS transform for animations");
865
+ recommendations.push("• Reserve space for ad/dynamic content containers");
866
+ recommendations.push("• Avoid inserting content above existing");
867
+
868
+ return recommendations.join("\n ");
869
+ }
870
+
871
+ private analyzeAISearch(args: ToolInputSchema): {
872
+ content: { type: string; text: string }[];
873
+ } {
874
+ const content = args.content as string;
875
+ const targetAI = (args.targetAI as string[]) || [
876
+ "chatgpt",
877
+ "perplexity",
878
+ "claude",
879
+ ];
880
+ const pageContext = (args.pageContext as string) || "documentation";
881
+
882
+ const result = this.performAIOptimization(content, targetAI, pageContext);
883
+
884
+ const output = `AI Search Optimization Analysis
885
+
886
+ CONTEXT: ${pageContext}
887
+
888
+ CITATION WORTHINESS: ${result.score}/100
889
+
890
+ E-E-A-T SIGNALS:
891
+ ${result.eeatSignals
892
+ .map((e) => `${e.found ? "✓" : "✗"} ${e.signal}`)
893
+ .join("\n")}
894
+
895
+ RECOMMENDATIONS:
896
+ ${result.recommendations.map((r) => `• ${r}`).join("\n")}
897
+
898
+ STRUCTURED CONTENT FOR AI:
899
+ ${result.structuredData
900
+ .map((s) => `[${s.type}] ${s.content}`)
901
+ .join("\n")}`;
902
+
903
+ return { content: [{ type: "text", text: output }] };
904
+ }
905
+
906
+ private performAIOptimization(
907
+ content: string,
908
+ targetAI: string[],
909
+ pageContext: string,
910
+ ): AIOptimizationResult {
911
+ const recommendations: string[] = [];
912
+ const structuredData: { type: string; content: string }[] = [];
913
+ const eeatSignals: { signal: string; found: boolean }[] = [];
914
+
915
+ const hasAuthor = /author|bio|written by/i.test(content);
916
+ const hasDate = /\d{4}-\d{2}-\d{2}|published|updated|jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/i.test(content);
917
+ const hasStats = /\d+%|\d+(\.\d+)? (million|billion|thousand)|statistics|data/i.test(content);
918
+ const hasSteps = /\d+\.\s+\w+|step \d+|first,|second,|next,|finally/i.test(content);
919
+ const hasDefinition = /^#{1,3}\s+\w+|####\s+\w+:|term:|definition:/gim.test(content);
920
+ const hasExamples = /example:|for instance|such as|for example/i.test(content);
921
+ const hasReferences = /references|further reading|ources|links:/i.test(content);
922
+ const hasCode = /```|function |const |let |import |export /i.test(content);
923
+ const hasFAQ = /faq|frequently asked|questions:|\?$/im.test(content);
924
+ const hasHeadings = /^#{1,6}\s+/m.test(content);
925
+
926
+ eeatSignals.push(
927
+ { signal: "Author expertise/credentials", found: hasAuthor },
928
+ { signal: "Publication date", found: hasDate },
929
+ { signal: "Data and statistics", found: hasStats },
930
+ { signal: "Step-by-step instructions", found: hasSteps },
931
+ { signal: "Clear definitions", found: hasDefinition },
932
+ { signal: "Practical examples", found: hasExamples },
933
+ { signal: "Source citations", found: hasReferences },
934
+ { signal: "Technical code blocks", found: hasCode },
935
+ { signal: "FAQ content", found: hasFAQ },
936
+ { signal: "Proper heading hierarchy", found: hasHeadings },
937
+ );
938
+
939
+ if (!hasAuthor && pageContext !== "product") {
940
+ recommendations.push("Add author bio with expertise credentials");
941
+ }
942
+ if (!hasDate) {
943
+ recommendations.push("Include publication and update dates");
944
+ }
945
+ if (!hasStats && pageContext === "documentation") {
946
+ recommendations.push("Add statistics or usage data to support claims");
947
+ }
948
+ if (!hasSteps && pageContext === "documentation") {
949
+ recommendations.push("Structure content with numbered steps");
950
+ }
951
+ if (!hasDefinition && pageContext === "documentation") {
952
+ recommendations.push("Define key terms clearly with bold or headings");
953
+ }
954
+ if (!hasExamples) {
955
+ recommendations.push("Add practical examples for each concept");
956
+ }
957
+ if (!hasReferences) {
958
+ recommendations.push("Add sources and further reading links");
959
+ }
960
+ if (!hasFAQ && pageContext === "documentation") {
961
+ recommendations.push("Add FAQ section");
962
+ }
963
+ if (!hasHeadings) {
964
+ recommendations.push("Use proper heading hierarchy (H1 → H2 → H3)");
965
+ }
966
+
967
+ structuredData.push(
968
+ { type: "numbered-list", content: "Use numbered lists for sequential information" },
969
+ { type: "summary", content: "Add TL;DR summary at start" },
970
+ { type: "comparison", content: "Include comparison tables where applicable" },
971
+ { type: "key-value", content: "Use definition lists for terminology" },
972
+ );
973
+
974
+ if (targetAI.includes("perplexity") || targetAI.includes("chatgpt")) {
975
+ recommendations.push("Add specific stats and figures AI can cite");
976
+ recommendations.push("Format key takeaways in bullet points");
977
+ }
978
+ if (targetAI.includes("claude")) {
979
+ recommendations.push("Use clear XML-like sections in markdown");
980
+ }
981
+
982
+ let score = 60;
983
+ score += eeatSignals.filter((e) => e.found).length * 4;
984
+ score = Math.min(100, score);
985
+
986
+ return { score, recommendations, structuredData, eeatSignals };
987
+ }
988
+
989
+ private generateSitemap(args: ToolInputSchema): {
990
+ content: { type: string; text: string }[];
991
+ } {
992
+ const baseUrl = args.baseUrl as string;
993
+ const pages = (args.pages as { path: string; lastmod?: string; changefreq?: string; priority?: number }[]) || [];
994
+ const includeImages = (args.includeImages as boolean) || false;
995
+ const includeVideos = (args.includeVideos as boolean) || false;
996
+
997
+ let sitemap = `<?xml version="1.0" encoding="UTF-8"?>
998
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
999
+ xmlns:image="${includeImages ? "http://www.google.com/schemas/sitemap-image/1.1" : ''}"
1000
+ xmlns:video="${includeVideos ? "http://www.google.com/schemas/sitemap-video/1.1" : ''}">`;
1001
+
1002
+ for (const page of pages) {
1003
+ const loc = page.path.startsWith("http")
1004
+ ? page.path
1005
+ : `${baseUrl.replace(/\/$/, "")}/${page.path.replace(/^\//, "")}`;
1006
+
1007
+ sitemap += `
1008
+ <url>
1009
+ <loc>${loc}</loc>
1010
+ ${page.lastmod ? `<lastmod>${page.lastmod}</lastmod>` : ""}
1011
+ <changefreq>${page.changefreq || "weekly"}</changefreq>
1012
+ <priority>${page.priority || 0.8}</priority>
1013
+ </url>`;
1014
+ }
1015
+
1016
+ sitemap += `
1017
+ </urlset>`;
1018
+
1019
+ const index = `<?xml version="1.0" encoding="UTF-8"?>
1020
+ <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap-index/0.9">
1021
+ <sitemap>
1022
+ <loc>${baseUrl}/sitemap.xml</loc>
1023
+ <lastmod>${new Date().toISOString().split("T")[0]}</lastmod>
1024
+ </sitemap>
1025
+ </sitemapindex>`;
1026
+
1027
+ return {
1028
+ content: [
1029
+ {
1030
+ type: "text",
1031
+ text: `<!-- Main Sitemap -->
1032
+ ${sitemap}
1033
+
1034
+ <!-- For large sites, use sitemap index -->
1035
+ <!-- ${index.replace(/<!-- /g, "").replace(/ -->/g, "")} -->
1036
+ `,
1037
+ },
1038
+ ],
1039
+ };
1040
+ }
1041
+
1042
+ private optimizeRobotsTxt(args: ToolInputSchema): {
1043
+ content: { type: string; text: string }[];
1044
+ } {
1045
+ const baseUrl = args.baseUrl as string;
1046
+ const options = (args.options as {
1047
+ allowAI?: boolean;
1048
+ allowSearchBots?: boolean;
1049
+ blockPaths?: string[];
1050
+ crawlDelay?: number;
1051
+ generateSitemapDirective?: boolean;
1052
+ }) || {};
1053
+
1054
+ const {
1055
+ allowAI = true,
1056
+ allowSearchBots = true,
1057
+ blockPaths = ["/admin/", "/api/private/", "/_next/"],
1058
+ crawlDelay,
1059
+ generateSitemapDirective = true,
1060
+ } = options;
1061
+
1062
+ let robotsTxt = "# Robots.txt for SEO Optimization\n";
1063
+
1064
+ if (allowSearchBots) {
1065
+ robotsTxt += `
1066
+ User-agent: *
1067
+ Allow: /
1068
+ `;
1069
+ } else {
1070
+ robotsTxt += `
1071
+ User-agent: *
1072
+ Disallow: /
1073
+ `;
1074
+ }
1075
+
1076
+ for (const path of blockPaths) {
1077
+ robotsTxt += `Disallow: ${path}\n`;
1078
+ }
1079
+
1080
+ if (crawlDelay) {
1081
+ robotsTxt += `Crawl-delay: ${crawlDelay}\n`;
1082
+ }
1083
+
1084
+ if (allowAI) {
1085
+ robotsTxt += `
1086
+ # AI Crawler Permissions
1087
+ User-agent: GPTBot
1088
+ Allow: /
1089
+ Disallow: /api/
1090
+
1091
+ User-agent: ChatGPT-User
1092
+ Allow: /
1093
+ Disallow: /api/
1094
+
1095
+ User-agent: Google-Extended
1096
+ Allow: /
1097
+
1098
+ User-agent: Claude-Web
1099
+ Allow: /
1100
+
1101
+ User-agent: PerplexityBot
1102
+ Allow: /
1103
+ Disallow: /api/private/
1104
+ `;
1105
+ }
1106
+
1107
+ robotsTxt += `
1108
+ # Sitemap
1109
+ Sitemap: ${baseUrl}/sitemap.xml`;
1110
+
1111
+ const validation = this.validateRobotsTxt(robotsTxt);
1112
+
1113
+ return {
1114
+ content: [
1115
+ {
1116
+ type: "text",
1117
+ text: robotsTxt,
1118
+ },
1119
+ {
1120
+ type: "text",
1121
+ text: `\n---VALIDATION---\n${validation}`,
1122
+ },
1123
+ ],
1124
+ };
1125
+ }
1126
+
1127
+ private validateRobotsTxt(content: string): string {
1128
+ const issues: string[] = [];
1129
+ const checks = {
1130
+ "Has User-agent": /User-agent:/i.test(content),
1131
+ "Has Allow/Disallow": /^(Allow|Disallow):/im.test(content),
1132
+ "Has Sitemap": /^Sitemap:/im.test(content),
1133
+ "No wildcards in disallowed": !/\*$\s*$/im.test(content),
1134
+ "Has bot allowances for AI": /GPTBot|ChatGPT|Claude-Web|PerplexityBot/i.test(content),
1135
+ };
1136
+
1137
+ for (const [check, passed] of Object.entries(checks)) {
1138
+ issues.push(`${passed ? "✓" : "✗"} ${check}`);
1139
+ }
1140
+
1141
+ return issues.join("\n");
1142
+ }
1143
+
1144
+ async run(): Promise<void> {
1145
+ const transport = new StdioServerTransport();
1146
+ await this.server.connect(transport);
1147
+
1148
+ createGracefulShutdown({
1149
+ serverName: "seo-consultant.server",
1150
+ server: this.server,
1151
+ });
1152
+ }
1153
+ }
1154
+
1155
+ if (import.meta.url === `file://${process.argv[1]}`) {
1156
+ const server = new SEOSpecialistServer();
1157
+ server.run().catch(() => {});
1158
+ }
1159
+
1160
+ export { SEOSpecialistServer };