github-to-mcp-monorepo 1.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 (388) hide show
  1. package/.env.example +8 -0
  2. package/.github/CODEOWNERS +6 -0
  3. package/.husky/pre-commit +1 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierignore +5 -0
  6. package/.prettierrc +7 -0
  7. package/.vscode/settings.json +4 -0
  8. package/ARCHITECTURE.md +1429 -0
  9. package/CHANGELOG.md +167 -0
  10. package/CONTRIBUTING.md +327 -0
  11. package/LICENSE +201 -0
  12. package/README.md +1028 -0
  13. package/SECURITY.md +248 -0
  14. package/VISUAL_GUIDE.md +437 -0
  15. package/apps/vscode/IMPLEMENTATION.md +480 -0
  16. package/apps/vscode/README.md +248 -0
  17. package/apps/vscode/package.json +381 -0
  18. package/apps/vscode/resources/icon.png +0 -0
  19. package/apps/vscode/resources/icon.svg +5 -0
  20. package/apps/vscode/src/commands/browseRegistry.ts +211 -0
  21. package/apps/vscode/src/commands/configureClaudeDesktop.ts +332 -0
  22. package/apps/vscode/src/commands/convert.ts +82 -0
  23. package/apps/vscode/src/commands/convertCurrentRepo.ts +109 -0
  24. package/apps/vscode/src/commands/convertFromUrl.ts +138 -0
  25. package/apps/vscode/src/commands/index.ts +121 -0
  26. package/apps/vscode/src/commands/validate.ts +197 -0
  27. package/apps/vscode/src/extension.ts +464 -0
  28. package/apps/vscode/src/global.d.ts +36 -0
  29. package/apps/vscode/src/test/extension.test.ts +73 -0
  30. package/apps/vscode/src/utils/file-generator.ts +529 -0
  31. package/apps/vscode/src/utils/github-api.ts +335 -0
  32. package/apps/vscode/src/utils/index.ts +29 -0
  33. package/apps/vscode/src/utils/mcp-config.ts +334 -0
  34. package/apps/vscode/src/utils/storage.ts +87 -0
  35. package/apps/vscode/src/views/McpServersTreeView.ts +160 -0
  36. package/apps/vscode/src/views/OutputChannelView.ts +195 -0
  37. package/apps/vscode/src/views/StatusBarItem.ts +251 -0
  38. package/apps/vscode/src/views/ToolsExplorerView.ts +314 -0
  39. package/apps/vscode/src/views/historyProvider.ts +75 -0
  40. package/apps/vscode/src/views/index.ts +12 -0
  41. package/apps/vscode/src/views/resultsPanel.ts +330 -0
  42. package/apps/vscode/src/webviews/ConversionPanel.ts +350 -0
  43. package/apps/vscode/src/webviews/ToolDetailsPanel.ts +448 -0
  44. package/apps/vscode/src/webviews/index.ts +9 -0
  45. package/apps/vscode/src/webviews/webview-ui/styles.ts +492 -0
  46. package/apps/vscode/tsconfig.json +20 -0
  47. package/apps/web/PLAYGROUND_GUIDE.md +499 -0
  48. package/apps/web/README.md +505 -0
  49. package/apps/web/app/api/convert/route.ts +100 -0
  50. package/apps/web/app/api/convert/stream/route.ts +198 -0
  51. package/apps/web/app/api/deploy/route.ts +157 -0
  52. package/apps/web/app/api/edge/route.ts +308 -0
  53. package/apps/web/app/api/export-docker/route.ts +284 -0
  54. package/apps/web/app/api/generate-openapi/route.ts +119 -0
  55. package/apps/web/app/api/mcp/[serverId]/route.ts +263 -0
  56. package/apps/web/app/api/playground/connect/route.ts +143 -0
  57. package/apps/web/app/api/playground/disconnect/route.ts +78 -0
  58. package/apps/web/app/api/playground/execute/route.ts +135 -0
  59. package/apps/web/app/api/playground/sessions/route.ts +103 -0
  60. package/apps/web/app/api/playground/tools/route.ts +117 -0
  61. package/apps/web/app/api/playground/v2/connect/route.ts +96 -0
  62. package/apps/web/app/api/playground/v2/disconnect/route.ts +88 -0
  63. package/apps/web/app/api/playground/v2/health/route.ts +80 -0
  64. package/apps/web/app/api/playground/v2/prompts/route.ts +160 -0
  65. package/apps/web/app/api/playground/v2/resources/route.ts +159 -0
  66. package/apps/web/app/api/playground/v2/sessions/route.ts +184 -0
  67. package/apps/web/app/api/playground/v2/tools/route.ts +167 -0
  68. package/apps/web/app/api/stream/route.ts +232 -0
  69. package/apps/web/app/batch/BatchConvertClient.tsx +190 -0
  70. package/apps/web/app/batch/page.tsx +37 -0
  71. package/apps/web/app/convert/page.tsx +269 -0
  72. package/apps/web/app/dashboard/page.tsx +380 -0
  73. package/apps/web/app/globals.css +622 -0
  74. package/apps/web/app/layout.tsx +120 -0
  75. package/apps/web/app/manifest.ts +31 -0
  76. package/apps/web/app/opengraph-image.tsx +112 -0
  77. package/apps/web/app/page.old.tsx +924 -0
  78. package/apps/web/app/page.tsx +77 -0
  79. package/apps/web/app/playground/page.tsx +306 -0
  80. package/apps/web/app/playground/v2/error.tsx +163 -0
  81. package/apps/web/app/playground/v2/layout.tsx +58 -0
  82. package/apps/web/app/playground/v2/loading.tsx +152 -0
  83. package/apps/web/app/playground/v2/page.tsx +644 -0
  84. package/apps/web/app/playground/v2/providers.tsx +214 -0
  85. package/apps/web/app/playground/v2/use-shortcuts.ts +209 -0
  86. package/apps/web/app/playground/v2/use-url-state.ts +296 -0
  87. package/apps/web/app/providers.tsx +22 -0
  88. package/apps/web/app/sitemap.ts +32 -0
  89. package/apps/web/app/twitter-image.tsx +112 -0
  90. package/apps/web/components/BranchSelector.tsx +401 -0
  91. package/apps/web/components/ClaudeConfigExport.tsx +226 -0
  92. package/apps/web/components/Features.tsx +84 -0
  93. package/apps/web/components/Footer.tsx +119 -0
  94. package/apps/web/components/GenerationProgress.tsx +248 -0
  95. package/apps/web/components/GithubUrlInput.tsx +483 -0
  96. package/apps/web/components/Header.tsx +175 -0
  97. package/apps/web/components/Hero.tsx +117 -0
  98. package/apps/web/components/HowItWorks.tsx +119 -0
  99. package/apps/web/components/InstallBanner.tsx +158 -0
  100. package/apps/web/components/Logo.tsx +116 -0
  101. package/apps/web/components/ParticleBackground.tsx +105 -0
  102. package/apps/web/components/Playground.tsx +472 -0
  103. package/apps/web/components/PlaygroundToolTester.tsx +410 -0
  104. package/apps/web/components/ProductCards.tsx +179 -0
  105. package/apps/web/components/SplitView.tsx +194 -0
  106. package/apps/web/components/ToolFilter.tsx +260 -0
  107. package/apps/web/components/ToolList.tsx +325 -0
  108. package/apps/web/components/batch/BatchConvert.tsx +785 -0
  109. package/apps/web/components/batch/index.ts +7 -0
  110. package/apps/web/components/convert/ConfigTabs.tsx +230 -0
  111. package/apps/web/components/convert/ConversionResult.tsx +482 -0
  112. package/apps/web/components/convert/InlinePlayground.tsx +259 -0
  113. package/apps/web/components/convert/LoadingSteps.tsx +311 -0
  114. package/apps/web/components/convert/OneClickInstall.tsx +224 -0
  115. package/apps/web/components/convert/ToolCard.tsx +189 -0
  116. package/apps/web/components/convert/TryInPlayground.tsx +242 -0
  117. package/apps/web/components/convert/index.ts +12 -0
  118. package/apps/web/components/deploy/DeployButton.tsx +369 -0
  119. package/apps/web/components/deploy/index.ts +7 -0
  120. package/apps/web/components/docker/DockerExport.tsx +690 -0
  121. package/apps/web/components/docker/index.ts +7 -0
  122. package/apps/web/components/install/OneClickInstall.tsx +676 -0
  123. package/apps/web/components/install/index.ts +7 -0
  124. package/apps/web/components/playground/CapabilityTabs.tsx +150 -0
  125. package/apps/web/components/playground/ConnectionStatusV2.tsx +322 -0
  126. package/apps/web/components/playground/EmptyStates.tsx +305 -0
  127. package/apps/web/components/playground/ExecutionLog.tsx +260 -0
  128. package/apps/web/components/playground/ExecutionLogV2.tsx +378 -0
  129. package/apps/web/components/playground/JsonViewer.tsx +388 -0
  130. package/apps/web/components/playground/PlaygroundLayout.tsx +244 -0
  131. package/apps/web/components/playground/PromptsPanel.tsx +385 -0
  132. package/apps/web/components/playground/ResourcesPanel.tsx +378 -0
  133. package/apps/web/components/playground/SchemaForm.tsx +477 -0
  134. package/apps/web/components/playground/ServerStatus.tsx +151 -0
  135. package/apps/web/components/playground/ShareButton.tsx +239 -0
  136. package/apps/web/components/playground/ToolsPanel.tsx +309 -0
  137. package/apps/web/components/playground/TransportConfigurator.tsx +563 -0
  138. package/apps/web/components/playground/index.ts +74 -0
  139. package/apps/web/components/playground/types.ts +202 -0
  140. package/apps/web/components/streaming/StreamingProgress.tsx +441 -0
  141. package/apps/web/components/streaming/index.ts +7 -0
  142. package/apps/web/components/ui/badge.tsx +42 -0
  143. package/apps/web/components/ui/button.tsx +88 -0
  144. package/apps/web/components/ui/card.tsx +75 -0
  145. package/apps/web/components/ui/code-block.tsx +122 -0
  146. package/apps/web/components/ui/index.ts +12 -0
  147. package/apps/web/components/ui/input.tsx +55 -0
  148. package/apps/web/components/ui/tabs.tsx +61 -0
  149. package/apps/web/hooks/index.ts +85 -0
  150. package/apps/web/hooks/types.ts +1173 -0
  151. package/apps/web/hooks/use-conversion.ts +133 -0
  152. package/apps/web/hooks/use-execution-history.ts +376 -0
  153. package/apps/web/hooks/use-generation-progress.ts +147 -0
  154. package/apps/web/hooks/use-local-storage.ts +88 -0
  155. package/apps/web/hooks/use-mcp-client.ts +623 -0
  156. package/apps/web/hooks/use-mcp-connection.ts +500 -0
  157. package/apps/web/hooks/use-mcp-execution.ts +282 -0
  158. package/apps/web/hooks/use-mcp-prompts.ts +441 -0
  159. package/apps/web/hooks/use-mcp-resources.ts +430 -0
  160. package/apps/web/hooks/use-mcp-tools.ts +540 -0
  161. package/apps/web/hooks/use-playground-store.ts +299 -0
  162. package/apps/web/hooks/use-playground.ts +184 -0
  163. package/apps/web/hooks/use-streaming-conversion.ts +227 -0
  164. package/apps/web/hooks/useBatchConversion.ts +271 -0
  165. package/apps/web/hooks/useDockerConfig.ts +161 -0
  166. package/apps/web/hooks/usePlatformDetection.ts +80 -0
  167. package/apps/web/hooks/useStreaming.ts +199 -0
  168. package/apps/web/lib/api/errors.ts +386 -0
  169. package/apps/web/lib/api/index.ts +137 -0
  170. package/apps/web/lib/api/logger.ts +187 -0
  171. package/apps/web/lib/api/middleware.ts +364 -0
  172. package/apps/web/lib/api/openapi.ts +977 -0
  173. package/apps/web/lib/api/session-manager.ts +594 -0
  174. package/apps/web/lib/api/types.ts +433 -0
  175. package/apps/web/lib/api/validation.ts +523 -0
  176. package/apps/web/lib/constants.ts +114 -0
  177. package/apps/web/lib/mcp/client.ts +1137 -0
  178. package/apps/web/lib/mcp/events.ts +651 -0
  179. package/apps/web/lib/mcp/index.ts +347 -0
  180. package/apps/web/lib/mcp/logger.ts +428 -0
  181. package/apps/web/lib/mcp/metrics.ts +703 -0
  182. package/apps/web/lib/mcp/retry.ts +616 -0
  183. package/apps/web/lib/mcp/session-manager.ts +779 -0
  184. package/apps/web/lib/mcp/transports.ts +988 -0
  185. package/apps/web/lib/mcp/types.ts +594 -0
  186. package/apps/web/lib/mcp-client-enhanced.ts +871 -0
  187. package/apps/web/lib/mcp-client.ts +778 -0
  188. package/apps/web/lib/mcp-errors.ts +489 -0
  189. package/apps/web/lib/mcp-sandbox.ts +593 -0
  190. package/apps/web/lib/mcp-testing.ts +428 -0
  191. package/apps/web/lib/mcp-types.ts +448 -0
  192. package/apps/web/lib/playground-store.tsx +1147 -0
  193. package/apps/web/lib/utils.ts +439 -0
  194. package/apps/web/next-env.d.ts +5 -0
  195. package/apps/web/next.config.js +23 -0
  196. package/apps/web/package.json +55 -0
  197. package/apps/web/postcss.config.js +6 -0
  198. package/apps/web/public/.well-known/ai-plugin.json +17 -0
  199. package/apps/web/public/logo.svg +6 -0
  200. package/apps/web/public/robots.txt +22 -0
  201. package/apps/web/public/schema.json +27 -0
  202. package/apps/web/tailwind.config.js +26 -0
  203. package/apps/web/tailwind.config.ts +123 -0
  204. package/apps/web/tsconfig.json +20 -0
  205. package/apps/web/types/deploy.ts +139 -0
  206. package/apps/web/types/index.ts +247 -0
  207. package/apps/web/vercel.json +39 -0
  208. package/eslint.config.mjs +23 -0
  209. package/llms.txt +102 -0
  210. package/mkdocs/docs/api/core.md +318 -0
  211. package/mkdocs/docs/api/index.md +128 -0
  212. package/mkdocs/docs/api/mcp-server.md +301 -0
  213. package/mkdocs/docs/api/openapi-parser.md +254 -0
  214. package/mkdocs/docs/assets/logo.svg +7 -0
  215. package/mkdocs/docs/changelog.md +118 -0
  216. package/mkdocs/docs/cli/generate.md +148 -0
  217. package/mkdocs/docs/cli/index.md +52 -0
  218. package/mkdocs/docs/cli/inspect.md +164 -0
  219. package/mkdocs/docs/cli/serve.md +136 -0
  220. package/mkdocs/docs/concepts/classification.md +254 -0
  221. package/mkdocs/docs/concepts/how-it-works.md +299 -0
  222. package/mkdocs/docs/concepts/index.md +77 -0
  223. package/mkdocs/docs/concepts/mcp-protocol.md +362 -0
  224. package/mkdocs/docs/concepts/tool-types.md +382 -0
  225. package/mkdocs/docs/contributing/architecture.md +262 -0
  226. package/mkdocs/docs/contributing/development.md +245 -0
  227. package/mkdocs/docs/contributing/index.md +73 -0
  228. package/mkdocs/docs/contributing/testing.md +320 -0
  229. package/mkdocs/docs/getting-started/configuration.md +235 -0
  230. package/mkdocs/docs/getting-started/index.md +54 -0
  231. package/mkdocs/docs/getting-started/installation.md +145 -0
  232. package/mkdocs/docs/getting-started/quickstart.md +160 -0
  233. package/mkdocs/docs/guides/batch.md +375 -0
  234. package/mkdocs/docs/guides/claude-desktop.md +227 -0
  235. package/mkdocs/docs/guides/cursor.md +188 -0
  236. package/mkdocs/docs/guides/custom-tools.md +367 -0
  237. package/mkdocs/docs/guides/index.md +78 -0
  238. package/mkdocs/docs/guides/private-repos.md +221 -0
  239. package/mkdocs/docs/guides/vscode.md +247 -0
  240. package/mkdocs/docs/index.md +175 -0
  241. package/mkdocs/docs/reference/config.md +223 -0
  242. package/mkdocs/docs/reference/env.md +192 -0
  243. package/mkdocs/docs/reference/index.md +102 -0
  244. package/mkdocs/docs/reference/tools.md +309 -0
  245. package/mkdocs/docs/stylesheets/extra.css +231 -0
  246. package/mkdocs/mkdocs.yml +204 -0
  247. package/mkdocs/overrides/.gitkeep +1 -0
  248. package/mkdocs/overrides/main.html +7 -0
  249. package/mkdocs/python-deps.txt +7 -0
  250. package/mkdocs/vercel.json +11 -0
  251. package/package.json +63 -0
  252. package/packages/core/package.json +61 -0
  253. package/packages/core/src/__tests__/bitbucket-client.test.ts +366 -0
  254. package/packages/core/src/__tests__/cli.test.ts +235 -0
  255. package/packages/core/src/__tests__/code-extractor.test.ts +378 -0
  256. package/packages/core/src/__tests__/docker-generator.test.ts +255 -0
  257. package/packages/core/src/__tests__/github-client.test.ts +390 -0
  258. package/packages/core/src/__tests__/gitlab-client.test.ts +319 -0
  259. package/packages/core/src/__tests__/go-extractor.test.ts +351 -0
  260. package/packages/core/src/__tests__/graphql-extractor.test.ts +330 -0
  261. package/packages/core/src/__tests__/java-extractor.test.ts +497 -0
  262. package/packages/core/src/__tests__/plugins.test.ts +467 -0
  263. package/packages/core/src/__tests__/readme-extractor.test.ts +258 -0
  264. package/packages/core/src/__tests__/redis-cache.test.ts +307 -0
  265. package/packages/core/src/__tests__/rust-extractor.test.ts +252 -0
  266. package/packages/core/src/__tests__/streaming.test.ts +251 -0
  267. package/packages/core/src/additional-extractors.ts +333 -0
  268. package/packages/core/src/cache/cache-interface.ts +179 -0
  269. package/packages/core/src/cache/index.ts +210 -0
  270. package/packages/core/src/cache/redis-cache.ts +291 -0
  271. package/packages/core/src/cache/upstash-cache.ts +379 -0
  272. package/packages/core/src/cache.ts +251 -0
  273. package/packages/core/src/cli.ts +822 -0
  274. package/packages/core/src/code-extractor.ts +696 -0
  275. package/packages/core/src/docker-generator.ts +470 -0
  276. package/packages/core/src/edge-compatible.ts +491 -0
  277. package/packages/core/src/extractors/go-extractor.ts +791 -0
  278. package/packages/core/src/extractors/index.ts +9 -0
  279. package/packages/core/src/extractors/java-extractor.ts +937 -0
  280. package/packages/core/src/extractors/rust-extractor.ts +744 -0
  281. package/packages/core/src/github-client.ts +319 -0
  282. package/packages/core/src/go-generator.ts +356 -0
  283. package/packages/core/src/graphql-extractor.ts +358 -0
  284. package/packages/core/src/index.ts +797 -0
  285. package/packages/core/src/langchain-exporter.ts +617 -0
  286. package/packages/core/src/language-parsers.ts +1114 -0
  287. package/packages/core/src/mcp-introspector.ts +279 -0
  288. package/packages/core/src/monorepo-detector.ts +378 -0
  289. package/packages/core/src/plugins/index.ts +370 -0
  290. package/packages/core/src/plugins/registry.ts +404 -0
  291. package/packages/core/src/plugins/types.ts +215 -0
  292. package/packages/core/src/providers/base-provider.ts +246 -0
  293. package/packages/core/src/providers/bitbucket-client.ts +464 -0
  294. package/packages/core/src/providers/gitlab-client.ts +388 -0
  295. package/packages/core/src/providers/index.ts +176 -0
  296. package/packages/core/src/python-generator.ts +260 -0
  297. package/packages/core/src/queue/index.ts +100 -0
  298. package/packages/core/src/queue/memory-queue.ts +445 -0
  299. package/packages/core/src/queue/redis-queue.ts +578 -0
  300. package/packages/core/src/queue/types.ts +251 -0
  301. package/packages/core/src/readme-extractor.ts +409 -0
  302. package/packages/core/src/schema-generator.ts +638 -0
  303. package/packages/core/src/streaming.ts +999 -0
  304. package/packages/core/src/types.ts +289 -0
  305. package/packages/core/tsconfig.json +9 -0
  306. package/packages/core/tsup.config.ts +25 -0
  307. package/packages/mcp-server/README.md +297 -0
  308. package/packages/mcp-server/package.json +55 -0
  309. package/packages/mcp-server/src/__tests__/mcp-server.test.ts +177 -0
  310. package/packages/mcp-server/src/__tests__/tools.test.ts +217 -0
  311. package/packages/mcp-server/src/index.ts +1206 -0
  312. package/packages/mcp-server/src/prompts/index.ts +601 -0
  313. package/packages/mcp-server/src/tools/export-docker.ts +362 -0
  314. package/packages/mcp-server/src/tools/generate-openapi.ts +162 -0
  315. package/packages/mcp-server/src/tools/monitor-mcp-server.ts +448 -0
  316. package/packages/mcp-server/src/tools/stream-convert.ts +398 -0
  317. package/packages/mcp-server/src/tools/test-mcp-tool.ts +531 -0
  318. package/packages/mcp-server/tsconfig.json +12 -0
  319. package/packages/mcp-server/tsup.config.ts +14 -0
  320. package/packages/openapi-parser/package-lock.json +3028 -0
  321. package/packages/openapi-parser/package.json +41 -0
  322. package/packages/openapi-parser/src/analyzer.ts +700 -0
  323. package/packages/openapi-parser/src/asyncapi-parser.ts +475 -0
  324. package/packages/openapi-parser/src/cli.ts +302 -0
  325. package/packages/openapi-parser/src/generator.ts +570 -0
  326. package/packages/openapi-parser/src/generators/express-analyzer.ts +649 -0
  327. package/packages/openapi-parser/src/generators/fastapi-analyzer.ts +960 -0
  328. package/packages/openapi-parser/src/generators/index.ts +200 -0
  329. package/packages/openapi-parser/src/generators/nextjs-analyzer.ts +768 -0
  330. package/packages/openapi-parser/src/generators/openapi-builder.ts +527 -0
  331. package/packages/openapi-parser/src/generators/types.ts +298 -0
  332. package/packages/openapi-parser/src/graphql-parser.ts +462 -0
  333. package/packages/openapi-parser/src/grpc-parser.ts +649 -0
  334. package/packages/openapi-parser/src/har-parser.ts +723 -0
  335. package/packages/openapi-parser/src/index.ts +635 -0
  336. package/packages/openapi-parser/src/insomnia-parser.ts +614 -0
  337. package/packages/openapi-parser/src/parser.ts +231 -0
  338. package/packages/openapi-parser/src/postman-parser.ts +611 -0
  339. package/packages/openapi-parser/src/ref-resolver.ts +313 -0
  340. package/packages/openapi-parser/src/transformer.ts +459 -0
  341. package/packages/openapi-parser/tests/generators/express.test.ts +209 -0
  342. package/packages/openapi-parser/tests/generators/fastapi.test.ts +236 -0
  343. package/packages/openapi-parser/tests/generators/nextjs.test.ts +273 -0
  344. package/packages/openapi-parser/tests/parsers.test.ts +847 -0
  345. package/packages/openapi-parser/tsconfig.json +9 -0
  346. package/packages/openapi-parser/tsup.config.ts +11 -0
  347. package/packages/registry/package.json +59 -0
  348. package/packages/registry/src/cli.ts +456 -0
  349. package/packages/registry/src/index.ts +44 -0
  350. package/packages/registry/src/popular/github.json +47 -0
  351. package/packages/registry/src/popular/index.ts +55 -0
  352. package/packages/registry/src/popular/linear.json +42 -0
  353. package/packages/registry/src/popular/notion.json +42 -0
  354. package/packages/registry/src/popular/openai.json +40 -0
  355. package/packages/registry/src/popular/resend.json +38 -0
  356. package/packages/registry/src/popular/slack.json +42 -0
  357. package/packages/registry/src/popular/stripe.json +163 -0
  358. package/packages/registry/src/popular/supabase.json +42 -0
  359. package/packages/registry/src/popular/twilio.json +40 -0
  360. package/packages/registry/src/popular/vercel.json +40 -0
  361. package/packages/registry/src/registry.ts +492 -0
  362. package/packages/registry/src/storage.ts +334 -0
  363. package/packages/registry/src/types.ts +275 -0
  364. package/packages/registry/src/updater.ts +208 -0
  365. package/packages/registry/tsconfig.json +10 -0
  366. package/packages/registry/tsup.config.ts +11 -0
  367. package/pnpm-workspace.yaml +3 -0
  368. package/scripts/build-docs.sh +16 -0
  369. package/server.json +9 -0
  370. package/templates/Dockerfile.python.template +60 -0
  371. package/templates/Dockerfile.typescript.template +60 -0
  372. package/templates/docker-compose.template.yml +68 -0
  373. package/tests/fixtures/express-app/index.js +34 -0
  374. package/tests/fixtures/express-app/routes/posts.js +43 -0
  375. package/tests/fixtures/express-app/routes/users.js +58 -0
  376. package/tests/fixtures/fastapi-app/main.py +125 -0
  377. package/tests/fixtures/fastapi-app/routes/admin.py +42 -0
  378. package/tests/fixtures/graphql/simple-schema.graphql +65 -0
  379. package/tests/fixtures/mocks/github-api-responses.json +63 -0
  380. package/tests/fixtures/nextjs-app/app/api/posts/route.ts +55 -0
  381. package/tests/fixtures/nextjs-app/app/api/users/[id]/route.ts +63 -0
  382. package/tests/fixtures/nextjs-app/app/api/users/route.ts +44 -0
  383. package/tests/fixtures/nextjs-app/pages/api/health.ts +28 -0
  384. package/tests/fixtures/openapi/petstore.yaml +179 -0
  385. package/tests/integration/langchain-export.test.ts +405 -0
  386. package/tests/integration/openapi-conversion.test.ts +221 -0
  387. package/tsconfig.json +18 -0
  388. package/vitest.config.ts +32 -0
@@ -0,0 +1,499 @@
1
+ # Playground Developer Guide
2
+
3
+ Quick reference for working with the github-to-mcp playground components.
4
+
5
+ ## Quick Start
6
+
7
+ ### Running the Playground
8
+
9
+ ```bash
10
+ cd apps/web
11
+ pnpm dev
12
+ ```
13
+
14
+ Navigate to `http://localhost:3000/playground`
15
+
16
+ ## Component API Reference
17
+
18
+ ### Playground Component
19
+
20
+ ```typescript
21
+ import Playground from '@/components/Playground';
22
+
23
+ <Playground
24
+ initialResult={conversionResult} // Optional: Pre-load tools
25
+ className="custom-styles" // Optional: Additional classes
26
+ />
27
+ ```
28
+
29
+ **Props:**
30
+ - `initialResult?: ConversionResult | null` - Pre-loaded conversion result with tools
31
+ - `className?: string` - Additional CSS classes
32
+
33
+ **Features:**
34
+ - Automatically uses localStorage to persist last conversion
35
+ - Falls back to demo tools if no result available
36
+ - Integrates SplitView for resizable layout
37
+
38
+ ### PlaygroundToolTester Component
39
+
40
+ ```typescript
41
+ import PlaygroundToolTester from '@/components/PlaygroundToolTester';
42
+
43
+ <PlaygroundToolTester
44
+ tool={selectedTool}
45
+ onExecute={handleExecute}
46
+ className="h-full"
47
+ />
48
+ ```
49
+
50
+ **Props:**
51
+ - `tool: Tool` - The tool to test (required)
52
+ - `onExecute: (toolName: string, args: Record<string, any>) => Promise<any>` - Execution handler
53
+ - `className?: string` - Additional CSS classes
54
+
55
+ **Schema Support:**
56
+ - ✅ String inputs with textarea for long text
57
+ - ✅ Number inputs with validation
58
+ - ✅ Boolean inputs with checkbox
59
+ - ✅ Array inputs with add/remove items
60
+ - ✅ Object inputs with nested properties
61
+ - ✅ Enum inputs with dropdown select
62
+ - ✅ Required field validation
63
+
64
+ ### SplitView Component
65
+
66
+ ```typescript
67
+ import SplitView from '@/components/SplitView';
68
+
69
+ <SplitView
70
+ left={<LeftPanel />}
71
+ right={<RightPanel />}
72
+ defaultSplit={30} // 30% left, 70% right
73
+ minLeftWidth={250} // Minimum left panel width
74
+ minRightWidth={400} // Minimum right panel width
75
+ orientation="horizontal" // 'horizontal' | 'vertical'
76
+ />
77
+ ```
78
+
79
+ **Props:**
80
+ - `left: React.ReactNode` - Left panel content
81
+ - `right: React.ReactNode` - Right panel content
82
+ - `defaultSplit?: number` - Initial split percentage (default: 50)
83
+ - `minLeftWidth?: number` - Min left panel width in px (default: 200)
84
+ - `minRightWidth?: number` - Min right panel width in px (default: 200)
85
+ - `orientation?: 'horizontal' | 'vertical'` - Split direction (default: horizontal)
86
+
87
+ **Features:**
88
+ - Drag to resize
89
+ - Maximize/minimize buttons
90
+ - Respects minimum widths
91
+ - Smooth transitions
92
+
93
+ ### BranchSelector Component
94
+
95
+ ```typescript
96
+ import BranchSelector from '@/components/BranchSelector';
97
+ import type { GitRef } from '@/components/BranchSelector';
98
+
99
+ <BranchSelector
100
+ repoUrl="https://github.com/owner/repo"
101
+ onSelect={(ref: GitRef) => console.log(ref)}
102
+ defaultRef={{ type: 'branch', ref: 'main' }}
103
+ />
104
+ ```
105
+
106
+ **Props:**
107
+ - `repoUrl: string` - GitHub repository URL (required)
108
+ - `onSelect: (ref: GitRef | null) => void` - Selection callback
109
+ - `defaultRef?: GitRef` - Pre-selected reference
110
+ - `className?: string` - Additional CSS classes
111
+
112
+ **GitRef Interface:**
113
+ ```typescript
114
+ interface GitRef {
115
+ type: 'branch' | 'tag' | 'commit';
116
+ ref: string; // Branch name, tag name, or commit SHA
117
+ isDefault?: boolean; // True for repository default branch
118
+ }
119
+ ```
120
+
121
+ ### GenerationProgress Component
122
+
123
+ ```typescript
124
+ import GenerationProgress from '@/components/GenerationProgress';
125
+ import { useGenerationProgress } from '@/hooks/use-generation-progress';
126
+
127
+ function MyComponent() {
128
+ const progress = useGenerationProgress();
129
+
130
+ // Start step
131
+ progress.startStep('fetching', 'Fetching repository...');
132
+
133
+ // Complete step
134
+ progress.completeStep('fetching', 'Repository fetched');
135
+
136
+ // Error handling
137
+ progress.errorStep('extracting', 'Failed to extract tools');
138
+
139
+ // Add tools found
140
+ progress.addToolsFound(5);
141
+
142
+ return <GenerationProgress progress={progress} />;
143
+ }
144
+ ```
145
+
146
+ **Hook Methods:**
147
+ - `startStep(step, message)` - Mark step as active
148
+ - `completeStep(step, message)` - Mark step as completed
149
+ - `errorStep(step, message)` - Mark step as errored
150
+ - `addToolsFound(count)` - Increment tools counter
151
+ - `reset()` - Reset all progress
152
+
153
+ **Progress Steps:**
154
+ 1. `fetching` - Fetching Repository (10% weight)
155
+ 2. `classifying` - Classifying Sources (20% weight)
156
+ 3. `extracting` - Extracting Tools (40% weight)
157
+ 4. `generating` - Generating Server (30% weight)
158
+
159
+ ### ClaudeConfigExport Component
160
+
161
+ ```typescript
162
+ import ClaudeConfigExport from '@/components/ClaudeConfigExport';
163
+
164
+ <ClaudeConfigExport
165
+ repoUrl="https://github.com/owner/repo"
166
+ repoName="owner/repo"
167
+ configName="my-mcp-server"
168
+ />
169
+ ```
170
+
171
+ **Props:**
172
+ - `repoUrl: string` - GitHub repository URL
173
+ - `repoName: string` - Repository name (owner/repo)
174
+ - `configName?: string` - Custom server name (default: repo name)
175
+
176
+ **Config Types:**
177
+ 1. **NPX** - Zero-install with npx
178
+ 2. **Local** - Clone and build from source
179
+ 3. **Python** - Python-based server
180
+
181
+ ### ToolFilter Component
182
+
183
+ ```typescript
184
+ import ToolFilter from '@/components/ToolFilter';
185
+ import type { ToolFilterState } from '@/components/ToolFilter';
186
+
187
+ <ToolFilter
188
+ filters={filterState}
189
+ onFilterChange={setFilterState}
190
+ totalCount={100}
191
+ filteredCount={42}
192
+ />
193
+ ```
194
+
195
+ **ToolFilterState Interface:**
196
+ ```typescript
197
+ interface ToolFilterState {
198
+ searchQuery: string;
199
+ selectedCategories: string[]; // 'openapi', 'graphql', 'readme'
200
+ sortBy: 'alphabetical' | 'source' | 'confidence';
201
+ }
202
+ ```
203
+
204
+ ### ToolList Component
205
+
206
+ ```typescript
207
+ import ToolList from '@/components/ToolList';
208
+
209
+ <ToolList
210
+ tools={toolsArray}
211
+ showFilter={true}
212
+ defaultExpanded={false}
213
+ />
214
+ ```
215
+
216
+ **Props:**
217
+ - `tools: Tool[]` - Array of tools to display
218
+ - `showFilter?: boolean` - Show filter UI (default: false)
219
+ - `defaultExpanded?: boolean` - Expand all tools by default (default: false)
220
+ - `className?: string` - Additional CSS classes
221
+
222
+ ## Custom Hooks
223
+
224
+ ### useGenerationProgress
225
+
226
+ ```typescript
227
+ import { useGenerationProgress } from '@/hooks/use-generation-progress';
228
+
229
+ const progress = useGenerationProgress();
230
+
231
+ // Access properties
232
+ progress.progress; // 0-100
233
+ progress.isComplete; // boolean
234
+ progress.hasError; // boolean
235
+ progress.toolsFound; // number
236
+ progress.steps; // Array of step objects
237
+ ```
238
+
239
+ ### useLocalStorage
240
+
241
+ ```typescript
242
+ import { useLocalStorage } from '@/hooks/use-local-storage';
243
+
244
+ const [value, setValue] = useLocalStorage<ConversionResult>(
245
+ 'playground-result', // key
246
+ null // default value
247
+ );
248
+ ```
249
+
250
+ ## Types Reference
251
+
252
+ ### Tool
253
+
254
+ ```typescript
255
+ interface Tool {
256
+ name: string;
257
+ description: string;
258
+ inputSchema: {
259
+ type: 'object';
260
+ properties: Record<string, SchemaProperty>;
261
+ required?: string[];
262
+ };
263
+ source?: {
264
+ type: 'openapi' | 'graphql' | 'readme' | 'universal';
265
+ file: string;
266
+ confidence?: number;
267
+ };
268
+ }
269
+ ```
270
+
271
+ ### SchemaProperty
272
+
273
+ ```typescript
274
+ interface SchemaProperty {
275
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
276
+ description?: string;
277
+ default?: any;
278
+ enum?: any[];
279
+ items?: SchemaProperty;
280
+ properties?: Record<string, SchemaProperty>;
281
+ required?: string[];
282
+ }
283
+ ```
284
+
285
+ ### ConversionResult
286
+
287
+ ```typescript
288
+ interface ConversionResult {
289
+ success: boolean;
290
+ tools: Tool[];
291
+ repository: {
292
+ url: string;
293
+ name: string;
294
+ owner: string;
295
+ ref?: string;
296
+ };
297
+ stats: {
298
+ totalTools: number;
299
+ openApiTools: number;
300
+ graphqlTools: number;
301
+ readmeTools: number;
302
+ };
303
+ }
304
+ ```
305
+
306
+ ## Styling Guide
307
+
308
+ ### Color Coding
309
+
310
+ ```typescript
311
+ const SOURCE_COLORS = {
312
+ openapi: 'bg-purple-500/20 text-purple-300 border-purple-500/30',
313
+ graphql: 'bg-pink-500/20 text-pink-300 border-pink-500/30',
314
+ readme: 'bg-cyan-500/20 text-cyan-300 border-cyan-500/30',
315
+ universal: 'bg-blue-500/20 text-blue-300 border-blue-500/30',
316
+ };
317
+ ```
318
+
319
+ ### Common Patterns
320
+
321
+ **Glass Card:**
322
+ ```tsx
323
+ <div className="rounded-xl border border-neutral-800 bg-neutral-900/50 backdrop-blur-sm">
324
+ {/* Content */}
325
+ </div>
326
+ ```
327
+
328
+ **Action Button:**
329
+ ```tsx
330
+ <Button className="bg-white hover:bg-neutral-200 text-black">
331
+ Execute
332
+ </Button>
333
+ ```
334
+
335
+ **Input Field:**
336
+ ```tsx
337
+ <Input
338
+ className="bg-neutral-900 border-neutral-800 text-white"
339
+ placeholder="Enter value..."
340
+ />
341
+ ```
342
+
343
+ ## Best Practices
344
+
345
+ ### 1. Error Handling
346
+
347
+ Always handle errors gracefully:
348
+
349
+ ```typescript
350
+ try {
351
+ const result = await executeTool(toolName, args);
352
+ // Handle success
353
+ } catch (error) {
354
+ console.error('Tool execution failed:', error);
355
+ // Show user-friendly error message
356
+ }
357
+ ```
358
+
359
+ ### 2. Loading States
360
+
361
+ Show loading indicators for async operations:
362
+
363
+ ```typescript
364
+ const [isLoading, setIsLoading] = useState(false);
365
+
366
+ async function handleAction() {
367
+ setIsLoading(true);
368
+ try {
369
+ await performAction();
370
+ } finally {
371
+ setIsLoading(false);
372
+ }
373
+ }
374
+ ```
375
+
376
+ ### 3. Validation
377
+
378
+ Validate required fields before execution:
379
+
380
+ ```typescript
381
+ const isValid = tool.inputSchema.required?.every(
382
+ field => args[field] !== undefined && args[field] !== ''
383
+ );
384
+
385
+ if (!isValid) {
386
+ // Show validation error
387
+ return;
388
+ }
389
+ ```
390
+
391
+ ### 4. Memoization
392
+
393
+ Use `useMemo` for expensive computations:
394
+
395
+ ```typescript
396
+ const filteredTools = useMemo(() => {
397
+ return tools.filter(tool =>
398
+ tool.name.toLowerCase().includes(query.toLowerCase())
399
+ );
400
+ }, [tools, query]);
401
+ ```
402
+
403
+ ### 5. Cleanup
404
+
405
+ Clean up event listeners and timers:
406
+
407
+ ```typescript
408
+ useEffect(() => {
409
+ const handleResize = () => { /* ... */ };
410
+ window.addEventListener('resize', handleResize);
411
+
412
+ return () => {
413
+ window.removeEventListener('resize', handleResize);
414
+ };
415
+ }, []);
416
+ ```
417
+
418
+ ## Testing
419
+
420
+ ### Component Tests
421
+
422
+ ```typescript
423
+ import { render, screen, fireEvent } from '@testing-library/react';
424
+ import Playground from '@/components/Playground';
425
+
426
+ describe('Playground', () => {
427
+ it('renders demo tools by default', () => {
428
+ render(<Playground />);
429
+ expect(screen.getByText(/demo mode/i)).toBeInTheDocument();
430
+ });
431
+
432
+ it('filters tools by search query', () => {
433
+ render(<Playground />);
434
+ const searchInput = screen.getByPlaceholderText(/search tools/i);
435
+ fireEvent.change(searchInput, { target: { value: 'get_repo' } });
436
+ // Assert filtered results
437
+ });
438
+ });
439
+ ```
440
+
441
+ ### Integration Tests
442
+
443
+ ```typescript
444
+ describe('Playground Integration', () => {
445
+ it('executes tool and displays result', async () => {
446
+ render(<Playground />);
447
+
448
+ // Select tool
449
+ fireEvent.click(screen.getByText('get_repository'));
450
+
451
+ // Fill form
452
+ const ownerInput = screen.getByLabelText(/owner/i);
453
+ fireEvent.change(ownerInput, { target: { value: 'github' } });
454
+
455
+ // Execute
456
+ fireEvent.click(screen.getByText(/execute/i));
457
+
458
+ // Wait for result
459
+ await screen.findByText(/result/i);
460
+ });
461
+ });
462
+ ```
463
+
464
+ ## Common Issues
465
+
466
+ ### Issue: Tools not appearing
467
+ **Solution:** Check localStorage for cached result or ensure demo tools are loaded.
468
+
469
+ ### Issue: Split view not resizing
470
+ **Solution:** Ensure parent container has defined height (`h-full` or specific height).
471
+
472
+ ### Issue: Form validation not working
473
+ **Solution:** Verify `required` array in tool's inputSchema is populated.
474
+
475
+ ### Issue: GitHub API rate limit
476
+ **Solution:** Use authenticated requests with GITHUB_TOKEN environment variable.
477
+
478
+ ### Issue: TypeScript errors
479
+ **Solution:** Run `pnpm typecheck` and ensure all types are imported correctly.
480
+
481
+ ## Performance Tips
482
+
483
+ 1. **Lazy Load Monaco Editor**: Only load code editor when needed
484
+ 2. **Virtualize Long Lists**: Use `react-window` for 100+ tools
485
+ 3. **Debounce Search**: Delay filter execution for better UX
486
+ 4. **Memoize Computations**: Use `useMemo` for filtering/sorting
487
+ 5. **Code Split**: Dynamic import heavy components
488
+
489
+ ## Resources
490
+
491
+ - [Next.js Documentation](https://nextjs.org/docs)
492
+ - [Framer Motion API](https://www.framer.com/motion/)
493
+ - [Tailwind CSS](https://tailwindcss.com/)
494
+ - [Radix UI](https://www.radix-ui.com/)
495
+ - [GitHub REST API](https://docs.github.com/en/rest)
496
+
497
+ ---
498
+
499
+ **Need Help?** Check the main [WEB_UI_ENHANCEMENTS.md](/WEB_UI_ENHANCEMENTS.md) for comprehensive documentation.