@brainfish-ai/devdoc 0.1.41 → 0.1.43

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 (400) hide show
  1. package/ai-agents/.claude/skills/bootstrap-docs/SKILL.md +710 -79
  2. package/ai-agents/.claude/skills/check-docs/SKILL.md +83 -8
  3. package/ai-agents/.claude/skills/create-doc/SKILL.md +267 -55
  4. package/ai-agents/.claude/skills/update-doc/SKILL.md +162 -63
  5. package/ai-agents/.cursor/rules/devdoc-bootstrap.mdc +145 -15
  6. package/ai-agents/.cursor/rules/devdoc-create.mdc +108 -57
  7. package/ai-agents/.cursor/rules/devdoc-update.mdc +93 -70
  8. package/ai-agents/.cursor/rules/devdoc.mdc +21 -0
  9. package/ai-agents/schemas/docs.schema.json +332 -0
  10. package/ai-agents/schemas/theme.schema.json +243 -0
  11. package/dist/cli/commands/create.js +4 -9
  12. package/dist/cli/commands/deploy.js +50 -25
  13. package/dist/cli/commands/dev.js +19 -10
  14. package/package.json +3 -2
  15. package/renderer/app/api/assets/[...path]/route.js +108 -0
  16. package/renderer/app/api/assets/route.js +114 -0
  17. package/renderer/app/api/assets/upload/route.js +163 -0
  18. package/renderer/app/api/auth-schemes/route.js +58 -0
  19. package/renderer/app/api/chat/route.js +759 -0
  20. package/renderer/app/api/codegen/route.js +52 -0
  21. package/renderer/app/api/collections/route.js +675 -0
  22. package/renderer/app/api/debug/route.js +47 -0
  23. package/renderer/app/api/deploy/route.js +199 -0
  24. package/renderer/app/api/device/route.js +36 -0
  25. package/renderer/app/api/docs/route.js +205 -0
  26. package/renderer/app/api/domains/add/route.js +121 -0
  27. package/renderer/app/api/domains/lookup/route.js +43 -0
  28. package/renderer/app/api/domains/remove/route.js +89 -0
  29. package/renderer/app/api/domains/status/route.js +140 -0
  30. package/renderer/app/api/domains/verify/route.js +168 -0
  31. package/renderer/app/api/keys/regenerate/route.js +71 -0
  32. package/renderer/app/api/local-assets/[...path]/route.js +108 -0
  33. package/renderer/app/api/openapi-spec/route.js +73 -0
  34. package/renderer/app/api/projects/[slug]/route.js +129 -0
  35. package/renderer/app/api/projects/[slug]/stats/route.js +80 -0
  36. package/renderer/app/api/projects/register/route.js +176 -0
  37. package/renderer/app/api/proxy/route.js +139 -0
  38. package/renderer/app/api/proxy-stream/route.js +156 -0
  39. package/renderer/app/api/redirects/route.js +35 -0
  40. package/renderer/app/api/schema/route.js +85 -0
  41. package/renderer/app/api/subdomains/check/route.js +158 -0
  42. package/renderer/app/api/suggestions/route.js +175 -0
  43. package/renderer/app/layout.js +47 -0
  44. package/renderer/app/llms-full.txt/route.js +257 -0
  45. package/renderer/app/llms.txt/route.js +219 -0
  46. package/renderer/app/page.js +12 -0
  47. package/renderer/app/robots.txt/route.js +66 -0
  48. package/renderer/app/sitemap.xml/route.js +145 -0
  49. package/renderer/components/docs/index.js +8 -0
  50. package/renderer/components/docs/mdx/accordion.js +113 -0
  51. package/renderer/components/docs/mdx/badge.js +72 -0
  52. package/renderer/components/docs/mdx/callouts.js +137 -0
  53. package/renderer/components/docs/mdx/cards.js +175 -0
  54. package/renderer/components/docs/mdx/changelog.js +100 -0
  55. package/renderer/components/docs/mdx/code-block.js +147 -0
  56. package/renderer/components/docs/mdx/code-group.js +287 -0
  57. package/renderer/components/docs/mdx/file-embeds.js +82 -0
  58. package/renderer/components/docs/mdx/frame.js +59 -0
  59. package/renderer/components/docs/mdx/highlight.js +90 -0
  60. package/renderer/components/docs/mdx/iframe.js +69 -0
  61. package/renderer/components/docs/mdx/image.js +135 -0
  62. package/renderer/components/docs/mdx/index.js +134 -0
  63. package/renderer/components/docs/mdx/landing.js +315 -0
  64. package/renderer/components/docs/mdx/mermaid.js +212 -0
  65. package/renderer/components/docs/mdx/param-field.js +112 -0
  66. package/renderer/components/docs/mdx/steps.js +74 -0
  67. package/renderer/components/docs/mdx/tabs.js +50 -0
  68. package/renderer/components/docs/mdx-renderer.js +77 -0
  69. package/renderer/components/docs/navigation/breadcrumbs.js +64 -0
  70. package/renderer/components/docs/navigation/index.js +6 -0
  71. package/renderer/components/docs/navigation/page-nav.js +57 -0
  72. package/renderer/components/docs/navigation/sidebar.js +375 -0
  73. package/renderer/components/docs/navigation/toc.js +89 -0
  74. package/renderer/components/docs/notice.js +77 -0
  75. package/renderer/components/docs-header.js +202 -0
  76. package/renderer/components/docs-viewer/agent/agent-chat.js +1930 -0
  77. package/renderer/components/docs-viewer/agent/cards/debug-context-card.js +107 -0
  78. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.js +57 -0
  79. package/renderer/components/docs-viewer/agent/cards/index.js +45 -0
  80. package/renderer/components/docs-viewer/agent/cards/response-options-card.js +154 -0
  81. package/renderer/components/docs-viewer/agent/cards/types.js +22 -0
  82. package/renderer/components/docs-viewer/agent/chat-message.js +2 -0
  83. package/renderer/components/docs-viewer/agent/index.js +4 -0
  84. package/renderer/components/docs-viewer/agent/messages/assistant-message.js +108 -0
  85. package/renderer/components/docs-viewer/agent/messages/chat-message.js +34 -0
  86. package/renderer/components/docs-viewer/agent/messages/index.js +6 -0
  87. package/renderer/components/docs-viewer/agent/messages/tool-call-display.js +1065 -0
  88. package/renderer/components/docs-viewer/agent/messages/types.js +2 -0
  89. package/renderer/components/docs-viewer/agent/messages/typing-indicator.js +26 -0
  90. package/renderer/components/docs-viewer/agent/messages/user-message.js +37 -0
  91. package/renderer/components/docs-viewer/code-editor/{index.tsx → index.js} +1 -1
  92. package/renderer/components/docs-viewer/code-editor/notes-mode.js +1338 -0
  93. package/renderer/components/docs-viewer/content/changelog-page.js +297 -0
  94. package/renderer/components/docs-viewer/content/doc-page.js +264 -0
  95. package/renderer/components/docs-viewer/content/documentation-viewer.js +14 -0
  96. package/renderer/components/docs-viewer/content/index.js +29 -0
  97. package/renderer/components/docs-viewer/content/not-found-page.js +300 -0
  98. package/renderer/components/docs-viewer/content/request-details.js +528 -0
  99. package/renderer/components/docs-viewer/content/sections/auth.js +108 -0
  100. package/renderer/components/docs-viewer/content/sections/body.js +80 -0
  101. package/renderer/components/docs-viewer/content/sections/headers.js +64 -0
  102. package/renderer/components/docs-viewer/content/sections/overview.js +56 -0
  103. package/renderer/components/docs-viewer/content/sections/parameters.js +64 -0
  104. package/renderer/components/docs-viewer/content/sections/responses.js +91 -0
  105. package/renderer/components/docs-viewer/global-auth-modal.js +427 -0
  106. package/renderer/components/docs-viewer/index.js +1552 -0
  107. package/renderer/components/docs-viewer/playground/auth-editor.js +418 -0
  108. package/renderer/components/docs-viewer/playground/body-editor.js +240 -0
  109. package/renderer/components/docs-viewer/playground/code-editor.js +135 -0
  110. package/renderer/components/docs-viewer/playground/code-snippet.js +393 -0
  111. package/renderer/components/docs-viewer/playground/graphql-playground.js +734 -0
  112. package/renderer/components/docs-viewer/playground/index.js +682 -0
  113. package/renderer/components/docs-viewer/playground/key-value-editor.js +317 -0
  114. package/renderer/components/docs-viewer/playground/method-selector.js +65 -0
  115. package/renderer/components/docs-viewer/playground/request-builder.js +181 -0
  116. package/renderer/components/docs-viewer/playground/request-tabs.js +240 -0
  117. package/renderer/components/docs-viewer/playground/response-cards/idle-card.js +42 -0
  118. package/renderer/components/docs-viewer/playground/response-cards/index.js +72 -0
  119. package/renderer/components/docs-viewer/playground/response-cards/loading-card.js +24 -0
  120. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.js +28 -0
  121. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.js +308 -0
  122. package/renderer/components/docs-viewer/playground/response-cards/types.js +9 -0
  123. package/renderer/components/docs-viewer/playground/response-viewer.js +18 -0
  124. package/renderer/components/docs-viewer/search/index.js +2 -0
  125. package/renderer/components/docs-viewer/search/search-dialog.js +367 -0
  126. package/renderer/components/docs-viewer/search/use-search.js +89 -0
  127. package/renderer/components/docs-viewer/shared/markdown-renderer.js +423 -0
  128. package/renderer/components/docs-viewer/shared/method-badge.js +23 -0
  129. package/renderer/components/docs-viewer/shared/schema-viewer.js +321 -0
  130. package/renderer/components/docs-viewer/sidebar/collection-tree.js +222 -0
  131. package/renderer/components/docs-viewer/sidebar/endpoint-options.js +512 -0
  132. package/renderer/components/docs-viewer/sidebar/index.js +196 -0
  133. package/renderer/components/docs-viewer/sidebar/right-sidebar.js +163 -0
  134. package/renderer/components/docs-viewer/sidebar/sidebar-group.js +87 -0
  135. package/renderer/components/docs-viewer/sidebar/sidebar-item.js +172 -0
  136. package/renderer/components/docs-viewer/sidebar/sidebar-section.js +31 -0
  137. package/renderer/components/theme-provider.js +10 -0
  138. package/renderer/components/theme-toggle.js +106 -0
  139. package/renderer/components/ui/badge.js +29 -0
  140. package/renderer/components/ui/button.js +40 -0
  141. package/renderer/components/ui/dialog.js +50 -0
  142. package/renderer/components/ui/dropdown-menu.js +143 -0
  143. package/renderer/components/ui/input.js +12 -0
  144. package/renderer/components/ui/label.js +13 -0
  145. package/renderer/components/ui/navigation-menu.js +83 -0
  146. package/renderer/components/ui/select.js +116 -0
  147. package/renderer/components/ui/spinner.js +92 -0
  148. package/renderer/components/ui/tabs.js +34 -0
  149. package/renderer/components/ui/tooltip.js +43 -0
  150. package/renderer/hooks/use-code-copy.js +76 -0
  151. package/renderer/hooks/use-openapi-title.js +33 -0
  152. package/renderer/lib/api-docs/agent/index.js +4 -0
  153. package/renderer/lib/api-docs/agent/indexer.js +254 -0
  154. package/renderer/lib/api-docs/agent/spec-summary.js +227 -0
  155. package/renderer/lib/api-docs/agent/types.js +5 -0
  156. package/renderer/lib/api-docs/auth/auth-context.js +157 -0
  157. package/renderer/lib/api-docs/auth/auth-storage.js +66 -0
  158. package/renderer/lib/api-docs/auth/crypto.js +64 -0
  159. package/renderer/lib/api-docs/auth/index.js +3 -0
  160. package/renderer/lib/api-docs/code-editor/db.js +145 -0
  161. package/renderer/lib/api-docs/code-editor/hooks.js +254 -0
  162. package/renderer/lib/api-docs/code-editor/{index.ts → index.js} +3 -4
  163. package/renderer/lib/api-docs/code-editor/mode-context.js +154 -0
  164. package/renderer/lib/api-docs/code-editor/types.js +53 -0
  165. package/renderer/lib/api-docs/codegen/definitions.js +258 -0
  166. package/renderer/lib/api-docs/codegen/har.js +171 -0
  167. package/renderer/lib/api-docs/codegen/index.js +118 -0
  168. package/renderer/lib/api-docs/factories.js +136 -0
  169. package/renderer/lib/api-docs/{index.ts → index.js} +5 -10
  170. package/renderer/lib/api-docs/mobile-context.js +79 -0
  171. package/renderer/lib/api-docs/navigation-context.js +62 -0
  172. package/renderer/lib/api-docs/parsers/graphql/index.js +50 -0
  173. package/renderer/lib/api-docs/parsers/graphql/parser.js +350 -0
  174. package/renderer/lib/api-docs/parsers/graphql/transformer.js +215 -0
  175. package/renderer/lib/api-docs/parsers/graphql/types.js +46 -0
  176. package/renderer/lib/api-docs/parsers/openapi/dereferencer.js +43 -0
  177. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.js +486 -0
  178. package/renderer/lib/api-docs/parsers/openapi/extractors/body.js +295 -0
  179. package/renderer/lib/api-docs/parsers/openapi/extractors/index.js +132 -0
  180. package/renderer/lib/api-docs/parsers/openapi/index.js +127 -0
  181. package/renderer/lib/api-docs/parsers/openapi/transformer.js +192 -0
  182. package/renderer/lib/api-docs/parsers/openapi/validator.js +24 -0
  183. package/renderer/lib/api-docs/playground/context.js +65 -0
  184. package/renderer/lib/api-docs/playground/navigation-context.js +74 -0
  185. package/renderer/lib/api-docs/playground/request-builder.js +163 -0
  186. package/renderer/lib/api-docs/playground/request-runner.js +224 -0
  187. package/renderer/lib/api-docs/playground/types.js +5 -0
  188. package/renderer/lib/api-docs/types.js +23 -0
  189. package/renderer/lib/api-docs/utils.js +212 -0
  190. package/renderer/lib/cache.js +157 -0
  191. package/renderer/lib/docs/config/domain-schema.js +161 -0
  192. package/renderer/lib/docs/config/index.js +5 -0
  193. package/renderer/lib/docs/config/loader.js +113 -0
  194. package/renderer/lib/docs/config/schema.js +269 -0
  195. package/renderer/lib/docs/index.js +8 -0
  196. package/renderer/lib/docs/mdx/compiler.js +128 -0
  197. package/renderer/lib/docs/mdx/frontmatter.js +73 -0
  198. package/renderer/lib/docs/mdx/index.js +8 -0
  199. package/renderer/lib/docs/navigation/generator.js +269 -0
  200. package/renderer/lib/docs/navigation/index.js +4 -0
  201. package/renderer/lib/docs/navigation/types.js +9 -0
  202. package/renderer/lib/docs-navigation-context.js +40 -0
  203. package/renderer/lib/multi-tenant/context.js +80 -0
  204. package/renderer/lib/storage/blob.js +767 -0
  205. package/renderer/lib/utils/icons.js +30 -0
  206. package/renderer/lib/utils.js +5 -0
  207. package/renderer/next.config.js +62 -0
  208. package/renderer/tsconfig.json +23 -5
  209. package/renderer/app/api/assets/[...path]/route.ts +0 -123
  210. package/renderer/app/api/assets/route.ts +0 -124
  211. package/renderer/app/api/assets/upload/route.ts +0 -177
  212. package/renderer/app/api/auth-schemes/route.ts +0 -77
  213. package/renderer/app/api/chat/route.ts +0 -858
  214. package/renderer/app/api/codegen/route.ts +0 -72
  215. package/renderer/app/api/collections/route.ts +0 -1002
  216. package/renderer/app/api/debug/route.ts +0 -53
  217. package/renderer/app/api/deploy/route.ts +0 -234
  218. package/renderer/app/api/device/route.ts +0 -42
  219. package/renderer/app/api/docs/route.ts +0 -201
  220. package/renderer/app/api/domains/add/route.ts +0 -132
  221. package/renderer/app/api/domains/lookup/route.ts +0 -43
  222. package/renderer/app/api/domains/remove/route.ts +0 -100
  223. package/renderer/app/api/domains/status/route.ts +0 -158
  224. package/renderer/app/api/domains/verify/route.ts +0 -181
  225. package/renderer/app/api/keys/regenerate/route.ts +0 -80
  226. package/renderer/app/api/local-assets/[...path]/route.ts +0 -122
  227. package/renderer/app/api/openapi-spec/route.ts +0 -151
  228. package/renderer/app/api/projects/[slug]/route.ts +0 -153
  229. package/renderer/app/api/projects/[slug]/stats/route.ts +0 -96
  230. package/renderer/app/api/projects/register/route.ts +0 -152
  231. package/renderer/app/api/proxy/route.ts +0 -149
  232. package/renderer/app/api/proxy-stream/route.ts +0 -168
  233. package/renderer/app/api/redirects/route.ts +0 -47
  234. package/renderer/app/api/schema/route.ts +0 -73
  235. package/renderer/app/api/subdomains/check/route.ts +0 -172
  236. package/renderer/app/api/suggestions/route.ts +0 -144
  237. package/renderer/app/layout.tsx +0 -54
  238. package/renderer/app/llms-full.txt/route.ts +0 -346
  239. package/renderer/app/llms.txt/route.ts +0 -279
  240. package/renderer/app/page.tsx +0 -14
  241. package/renderer/app/robots.txt/route.ts +0 -84
  242. package/renderer/app/sitemap.xml/route.ts +0 -199
  243. package/renderer/components/docs/index.ts +0 -12
  244. package/renderer/components/docs/mdx/accordion.tsx +0 -169
  245. package/renderer/components/docs/mdx/badge.tsx +0 -132
  246. package/renderer/components/docs/mdx/callouts.tsx +0 -154
  247. package/renderer/components/docs/mdx/cards.tsx +0 -241
  248. package/renderer/components/docs/mdx/changelog.tsx +0 -120
  249. package/renderer/components/docs/mdx/code-block.tsx +0 -186
  250. package/renderer/components/docs/mdx/code-group.tsx +0 -421
  251. package/renderer/components/docs/mdx/file-embeds.tsx +0 -105
  252. package/renderer/components/docs/mdx/frame.tsx +0 -112
  253. package/renderer/components/docs/mdx/highlight.tsx +0 -151
  254. package/renderer/components/docs/mdx/iframe.tsx +0 -134
  255. package/renderer/components/docs/mdx/image.tsx +0 -235
  256. package/renderer/components/docs/mdx/index.ts +0 -237
  257. package/renderer/components/docs/mdx/landing.tsx +0 -684
  258. package/renderer/components/docs/mdx/mermaid.tsx +0 -240
  259. package/renderer/components/docs/mdx/param-field.tsx +0 -200
  260. package/renderer/components/docs/mdx/steps.tsx +0 -113
  261. package/renderer/components/docs/mdx/tabs.tsx +0 -86
  262. package/renderer/components/docs/mdx-renderer.tsx +0 -100
  263. package/renderer/components/docs/navigation/breadcrumbs.tsx +0 -76
  264. package/renderer/components/docs/navigation/index.ts +0 -8
  265. package/renderer/components/docs/navigation/page-nav.tsx +0 -64
  266. package/renderer/components/docs/navigation/sidebar.tsx +0 -515
  267. package/renderer/components/docs/navigation/toc.tsx +0 -113
  268. package/renderer/components/docs/notice.tsx +0 -105
  269. package/renderer/components/docs-header.tsx +0 -278
  270. package/renderer/components/docs-viewer/agent/agent-chat.tsx +0 -2076
  271. package/renderer/components/docs-viewer/agent/cards/debug-context-card.tsx +0 -90
  272. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.tsx +0 -49
  273. package/renderer/components/docs-viewer/agent/cards/index.tsx +0 -50
  274. package/renderer/components/docs-viewer/agent/cards/response-options-card.tsx +0 -212
  275. package/renderer/components/docs-viewer/agent/cards/types.ts +0 -84
  276. package/renderer/components/docs-viewer/agent/chat-message.tsx +0 -17
  277. package/renderer/components/docs-viewer/agent/index.tsx +0 -6
  278. package/renderer/components/docs-viewer/agent/messages/assistant-message.tsx +0 -119
  279. package/renderer/components/docs-viewer/agent/messages/chat-message.tsx +0 -46
  280. package/renderer/components/docs-viewer/agent/messages/index.ts +0 -17
  281. package/renderer/components/docs-viewer/agent/messages/tool-call-display.tsx +0 -721
  282. package/renderer/components/docs-viewer/agent/messages/types.ts +0 -61
  283. package/renderer/components/docs-viewer/agent/messages/typing-indicator.tsx +0 -24
  284. package/renderer/components/docs-viewer/agent/messages/user-message.tsx +0 -51
  285. package/renderer/components/docs-viewer/code-editor/notes-mode.tsx +0 -1283
  286. package/renderer/components/docs-viewer/content/changelog-page.tsx +0 -331
  287. package/renderer/components/docs-viewer/content/doc-page.tsx +0 -367
  288. package/renderer/components/docs-viewer/content/documentation-viewer.tsx +0 -17
  289. package/renderer/components/docs-viewer/content/index.tsx +0 -29
  290. package/renderer/components/docs-viewer/content/not-found-page.tsx +0 -330
  291. package/renderer/components/docs-viewer/content/request-details.tsx +0 -330
  292. package/renderer/components/docs-viewer/content/sections/auth.tsx +0 -69
  293. package/renderer/components/docs-viewer/content/sections/body.tsx +0 -66
  294. package/renderer/components/docs-viewer/content/sections/headers.tsx +0 -43
  295. package/renderer/components/docs-viewer/content/sections/overview.tsx +0 -40
  296. package/renderer/components/docs-viewer/content/sections/parameters.tsx +0 -43
  297. package/renderer/components/docs-viewer/content/sections/responses.tsx +0 -87
  298. package/renderer/components/docs-viewer/global-auth-modal.tsx +0 -352
  299. package/renderer/components/docs-viewer/index.tsx +0 -1662
  300. package/renderer/components/docs-viewer/playground/auth-editor.tsx +0 -280
  301. package/renderer/components/docs-viewer/playground/body-editor.tsx +0 -221
  302. package/renderer/components/docs-viewer/playground/code-editor.tsx +0 -224
  303. package/renderer/components/docs-viewer/playground/code-snippet.tsx +0 -387
  304. package/renderer/components/docs-viewer/playground/graphql-playground.tsx +0 -745
  305. package/renderer/components/docs-viewer/playground/index.tsx +0 -671
  306. package/renderer/components/docs-viewer/playground/key-value-editor.tsx +0 -261
  307. package/renderer/components/docs-viewer/playground/method-selector.tsx +0 -60
  308. package/renderer/components/docs-viewer/playground/request-builder.tsx +0 -179
  309. package/renderer/components/docs-viewer/playground/request-tabs.tsx +0 -237
  310. package/renderer/components/docs-viewer/playground/response-cards/idle-card.tsx +0 -21
  311. package/renderer/components/docs-viewer/playground/response-cards/index.tsx +0 -93
  312. package/renderer/components/docs-viewer/playground/response-cards/loading-card.tsx +0 -16
  313. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.tsx +0 -23
  314. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.tsx +0 -268
  315. package/renderer/components/docs-viewer/playground/response-cards/types.ts +0 -82
  316. package/renderer/components/docs-viewer/playground/response-viewer.tsx +0 -43
  317. package/renderer/components/docs-viewer/search/index.ts +0 -2
  318. package/renderer/components/docs-viewer/search/search-dialog.tsx +0 -331
  319. package/renderer/components/docs-viewer/search/use-search.ts +0 -117
  320. package/renderer/components/docs-viewer/shared/markdown-renderer.tsx +0 -431
  321. package/renderer/components/docs-viewer/shared/method-badge.tsx +0 -41
  322. package/renderer/components/docs-viewer/shared/schema-viewer.tsx +0 -349
  323. package/renderer/components/docs-viewer/sidebar/collection-tree.tsx +0 -259
  324. package/renderer/components/docs-viewer/sidebar/endpoint-options.tsx +0 -316
  325. package/renderer/components/docs-viewer/sidebar/index.tsx +0 -282
  326. package/renderer/components/docs-viewer/sidebar/right-sidebar.tsx +0 -202
  327. package/renderer/components/docs-viewer/sidebar/sidebar-group.tsx +0 -118
  328. package/renderer/components/docs-viewer/sidebar/sidebar-item.tsx +0 -212
  329. package/renderer/components/docs-viewer/sidebar/sidebar-section.tsx +0 -38
  330. package/renderer/components/theme-provider.tsx +0 -11
  331. package/renderer/components/theme-toggle.tsx +0 -76
  332. package/renderer/components/ui/badge.tsx +0 -46
  333. package/renderer/components/ui/button.tsx +0 -59
  334. package/renderer/components/ui/dialog.tsx +0 -118
  335. package/renderer/components/ui/dropdown-menu.tsx +0 -257
  336. package/renderer/components/ui/input.tsx +0 -21
  337. package/renderer/components/ui/label.tsx +0 -24
  338. package/renderer/components/ui/navigation-menu.tsx +0 -168
  339. package/renderer/components/ui/select.tsx +0 -190
  340. package/renderer/components/ui/spinner.tsx +0 -114
  341. package/renderer/components/ui/tabs.tsx +0 -66
  342. package/renderer/components/ui/tooltip.tsx +0 -61
  343. package/renderer/hooks/use-code-copy.ts +0 -88
  344. package/renderer/hooks/use-openapi-title.ts +0 -44
  345. package/renderer/lib/api-docs/agent/index.ts +0 -6
  346. package/renderer/lib/api-docs/agent/indexer.ts +0 -323
  347. package/renderer/lib/api-docs/agent/spec-summary.ts +0 -335
  348. package/renderer/lib/api-docs/agent/types.ts +0 -116
  349. package/renderer/lib/api-docs/auth/auth-context.tsx +0 -225
  350. package/renderer/lib/api-docs/auth/auth-storage.ts +0 -87
  351. package/renderer/lib/api-docs/auth/crypto.ts +0 -89
  352. package/renderer/lib/api-docs/auth/index.ts +0 -4
  353. package/renderer/lib/api-docs/code-editor/db.ts +0 -164
  354. package/renderer/lib/api-docs/code-editor/hooks.ts +0 -266
  355. package/renderer/lib/api-docs/code-editor/mode-context.tsx +0 -207
  356. package/renderer/lib/api-docs/code-editor/types.ts +0 -105
  357. package/renderer/lib/api-docs/codegen/definitions.ts +0 -297
  358. package/renderer/lib/api-docs/codegen/har.ts +0 -251
  359. package/renderer/lib/api-docs/codegen/index.ts +0 -159
  360. package/renderer/lib/api-docs/factories.ts +0 -170
  361. package/renderer/lib/api-docs/mobile-context.tsx +0 -112
  362. package/renderer/lib/api-docs/navigation-context.tsx +0 -88
  363. package/renderer/lib/api-docs/parsers/graphql/README.md +0 -129
  364. package/renderer/lib/api-docs/parsers/graphql/index.ts +0 -91
  365. package/renderer/lib/api-docs/parsers/graphql/parser.ts +0 -491
  366. package/renderer/lib/api-docs/parsers/graphql/transformer.ts +0 -246
  367. package/renderer/lib/api-docs/parsers/graphql/types.ts +0 -283
  368. package/renderer/lib/api-docs/parsers/openapi/README.md +0 -32
  369. package/renderer/lib/api-docs/parsers/openapi/dereferencer.ts +0 -60
  370. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.ts +0 -574
  371. package/renderer/lib/api-docs/parsers/openapi/extractors/body.ts +0 -403
  372. package/renderer/lib/api-docs/parsers/openapi/extractors/index.ts +0 -232
  373. package/renderer/lib/api-docs/parsers/openapi/index.ts +0 -171
  374. package/renderer/lib/api-docs/parsers/openapi/transformer.ts +0 -278
  375. package/renderer/lib/api-docs/parsers/openapi/validator.ts +0 -31
  376. package/renderer/lib/api-docs/playground/context.tsx +0 -107
  377. package/renderer/lib/api-docs/playground/navigation-context.tsx +0 -124
  378. package/renderer/lib/api-docs/playground/request-builder.ts +0 -223
  379. package/renderer/lib/api-docs/playground/request-runner.ts +0 -282
  380. package/renderer/lib/api-docs/playground/types.ts +0 -35
  381. package/renderer/lib/api-docs/types.ts +0 -269
  382. package/renderer/lib/api-docs/utils.ts +0 -311
  383. package/renderer/lib/cache.ts +0 -193
  384. package/renderer/lib/docs/config/domain-schema.ts +0 -260
  385. package/renderer/lib/docs/config/index.ts +0 -43
  386. package/renderer/lib/docs/config/loader.ts +0 -142
  387. package/renderer/lib/docs/config/schema.ts +0 -308
  388. package/renderer/lib/docs/index.ts +0 -12
  389. package/renderer/lib/docs/mdx/compiler.ts +0 -176
  390. package/renderer/lib/docs/mdx/frontmatter.ts +0 -91
  391. package/renderer/lib/docs/mdx/index.ts +0 -26
  392. package/renderer/lib/docs/navigation/generator.ts +0 -348
  393. package/renderer/lib/docs/navigation/index.ts +0 -12
  394. package/renderer/lib/docs/navigation/types.ts +0 -123
  395. package/renderer/lib/docs-navigation-context.tsx +0 -80
  396. package/renderer/lib/multi-tenant/context.ts +0 -105
  397. package/renderer/lib/storage/blob.ts +0 -1083
  398. package/renderer/lib/utils/icons.ts +0 -48
  399. package/renderer/lib/utils.ts +0 -6
  400. package/renderer/next.config.ts +0 -76
@@ -1,223 +0,0 @@
1
- /**
2
- * Request Builder
3
- *
4
- * Builds HTTP requests from BrainfishRESTRequest
5
- * Ported and simplified from Hoppscotch's EffectiveURL and request building logic
6
- */
7
-
8
- import type {
9
- BrainfishRESTRequest,
10
- BrainfishRESTAuth,
11
- BrainfishRESTReqBody,
12
- } from '../types'
13
-
14
- export interface BuiltRequest {
15
- url: string
16
- method: string
17
- headers: Record<string, string>
18
- body?: BodyInit
19
- }
20
-
21
- /**
22
- * Builds auth headers from auth configuration
23
- */
24
- function buildAuthHeaders(
25
- auth: BrainfishRESTAuth
26
- ): Record<string, string> {
27
- const headers: Record<string, string> = {}
28
-
29
- if (auth.authType === 'basic' && auth.authActive) {
30
- const credentials = btoa(`${auth.username}:${auth.password}`)
31
- headers['Authorization'] = `Basic ${credentials}`
32
- } else if (auth.authType === 'bearer' && auth.authActive) {
33
- headers['Authorization'] = `Bearer ${auth.token}`
34
- } else if (auth.authType === 'api-key' && auth.authActive) {
35
- if (auth.addTo === 'HEADERS') {
36
- headers[auth.key] = auth.value
37
- }
38
- } else if (auth.authType === 'oauth-2' && auth.authActive) {
39
- // For OAuth2, we'll use the token if available
40
- if (auth.grantTypeInfo.token) {
41
- headers['Authorization'] = `Bearer ${auth.grantTypeInfo.token}`
42
- }
43
- }
44
-
45
- return headers
46
- }
47
-
48
- /**
49
- * Builds auth query parameters
50
- */
51
- function buildAuthParams(auth: BrainfishRESTAuth): Record<string, string> {
52
- const params: Record<string, string> = {}
53
-
54
- if (auth.authType === 'api-key' && auth.authActive) {
55
- if (auth.addTo === 'QUERY_PARAMS') {
56
- params[auth.key] = auth.value
57
- }
58
- }
59
-
60
- return params
61
- }
62
-
63
- /**
64
- * Builds request body from body configuration
65
- */
66
- function buildRequestBody(
67
- body: BrainfishRESTReqBody,
68
- bodyValue?: string
69
- ): BodyInit | undefined {
70
- if (!body.body || body.contentType === null) {
71
- return undefined
72
- }
73
-
74
- // Use provided bodyValue if available (from playground editor)
75
- if (bodyValue !== undefined && bodyValue !== null) {
76
- if (body.contentType === 'application/json') {
77
- // Return as-is - user might be editing
78
- return bodyValue
79
- } else if (body.contentType === 'application/x-www-form-urlencoded') {
80
- // Parse as form data
81
- const params = new URLSearchParams()
82
- bodyValue.split('\n').forEach((line) => {
83
- const [key, ...valueParts] = line.split(':')
84
- if (key && valueParts.length > 0) {
85
- params.append(key.trim(), valueParts.join(':').trim())
86
- }
87
- })
88
- return params.toString()
89
- }
90
- return bodyValue
91
- }
92
-
93
- // Use body from request
94
- if (Array.isArray(body.body)) {
95
- // Form data
96
- if (body.contentType === 'multipart/form-data') {
97
- const formData = new FormData()
98
- body.body.forEach((item) => {
99
- // Note: In a real implementation, isFile would indicate a file upload
100
- // For now, we just append the string value
101
- if (typeof item.value === 'string') {
102
- formData.append(item.key, item.value)
103
- } else {
104
- // File or Blob value
105
- formData.append(item.key, item.value as Blob)
106
- }
107
- })
108
- return formData
109
- } else if (body.contentType === 'application/x-www-form-urlencoded') {
110
- // URL encoded form
111
- const params = new URLSearchParams()
112
- body.body.forEach((item) => {
113
- if (typeof item.value === 'string') {
114
- params.append(item.key, item.value)
115
- }
116
- })
117
- return params
118
- }
119
- } else if (typeof body.body === 'string') {
120
- return body.body
121
- }
122
-
123
- return undefined
124
- }
125
-
126
- /**
127
- * Builds the final URL with path variables and query parameters
128
- */
129
- function buildURL(
130
- endpoint: string,
131
- params: Array<{ key: string; value: string; active: boolean }>,
132
- variables: Array<{ key: string; value: string; active?: boolean }>,
133
- authParams: Record<string, string>
134
- ): string {
135
- // Replace path variables (<<variable>> or {variable})
136
- let url = endpoint
137
- variables.forEach((variable) => {
138
- // Replace <<variable>> pattern
139
- url = url.replace(new RegExp(`<<${variable.key}>>`, 'g'), variable.value || '')
140
- // Replace {variable} pattern
141
- url = url.replace(new RegExp(`\\{${variable.key}\\}`, 'g'), variable.value || '')
142
- })
143
-
144
- // Build query string
145
- const queryParams = new URLSearchParams()
146
-
147
- // Add request params
148
- params
149
- .filter((p) => p.active && p.key)
150
- .forEach((param) => {
151
- queryParams.append(param.key, param.value)
152
- })
153
-
154
- // Add auth params
155
- Object.entries(authParams).forEach(([key, value]) => {
156
- queryParams.append(key, value)
157
- })
158
-
159
- // Append query string to URL
160
- const queryString = queryParams.toString()
161
- if (queryString) {
162
- const separator = url.includes('?') ? '&' : '?'
163
- url = `${url}${separator}${queryString}`
164
- }
165
-
166
- return url
167
- }
168
-
169
- /**
170
- * Builds a complete HTTP request from BrainfishRESTRequest
171
- */
172
- export function buildRequest(
173
- request: BrainfishRESTRequest,
174
- options?: {
175
- params?: Array<{ key: string; value: string; active: boolean }>
176
- headers?: Array<{ key: string; value: string; active: boolean }>
177
- body?: string | null
178
- variables?: Array<{ key: string; value: string; active: boolean }>
179
- }
180
- ): BuiltRequest {
181
- // Use provided values or fall back to request defaults
182
- const params = options?.params || request.params
183
- const headers = options?.headers || request.headers
184
- const variables = options?.variables || request.requestVariables
185
- const bodyValue = options?.body
186
-
187
- // Build auth headers and params
188
- const authHeaders = buildAuthHeaders(request.auth)
189
- const authParams = buildAuthParams(request.auth)
190
-
191
- // Build URL
192
- const url = buildURL(request.endpoint, params, variables, authParams)
193
-
194
- // Build body
195
- const body = buildRequestBody(request.body, bodyValue ?? undefined)
196
-
197
- // Build headers
198
- const finalHeaders: Record<string, string> = { ...authHeaders }
199
-
200
- headers
201
- .filter((h) => h.active && h.key)
202
- .forEach((header) => {
203
- finalHeaders[header.key] = header.value
204
- })
205
-
206
- // Add content-type if body exists (but don't override if already set)
207
- if (body && request.body.contentType && !finalHeaders['Content-Type']) {
208
- finalHeaders['Content-Type'] = request.body.contentType
209
- }
210
-
211
- // For POST/PUT/PATCH requests without body, add default Content-Type
212
- // Some APIs require this header even for empty requests
213
- if (!finalHeaders['Content-Type'] && ['POST', 'PUT', 'PATCH'].includes(request.method)) {
214
- finalHeaders['Content-Type'] = 'application/json'
215
- }
216
-
217
- return {
218
- url,
219
- method: request.method,
220
- headers: finalHeaders,
221
- body,
222
- }
223
- }
@@ -1,282 +0,0 @@
1
- /**
2
- * Request Runner
3
- *
4
- * Executes HTTP requests via backend proxy to bypass CORS
5
- * and ensure auth headers are sent properly.
6
- * Supports streaming responses for SSE endpoints.
7
- */
8
-
9
- import type { BrainfishRESTRequest } from '../types'
10
- import type { PlaygroundResponse } from './types'
11
- import { buildRequest } from './request-builder'
12
-
13
- export interface RequestRunnerOptions {
14
- params?: Array<{ key: string; value: string; active: boolean }>
15
- headers?: Array<{ key: string; value: string; active: boolean }>
16
- body?: string | null
17
- variables?: Array<{ key: string; value: string; active: boolean }>
18
- signal?: AbortSignal
19
- /** Callback for streaming responses - called for each chunk */
20
- onChunk?: (chunk: string, accumulated: string) => void
21
- /** Callback when streaming starts with metadata */
22
- onStreamStart?: (metadata: { status: number; statusText: string; headers: Record<string, string> }) => void
23
- }
24
-
25
- /**
26
- * Executes a REST request via the backend proxy
27
- */
28
- export async function executeRequest(
29
- request: BrainfishRESTRequest,
30
- options: RequestRunnerOptions = {}
31
- ): Promise<PlaygroundResponse> {
32
- try {
33
- // Build the request
34
- const builtRequest = buildRequest(request, options)
35
-
36
- // Send request through our backend proxy
37
- const proxyResponse = await fetch('/api/proxy', {
38
- method: 'POST',
39
- headers: {
40
- 'Content-Type': 'application/json',
41
- },
42
- body: JSON.stringify({
43
- url: builtRequest.url,
44
- method: builtRequest.method,
45
- headers: builtRequest.headers,
46
- requestBody: builtRequest.body instanceof FormData
47
- ? undefined // FormData not supported through JSON proxy
48
- : builtRequest.body,
49
- }),
50
- signal: options.signal,
51
- })
52
-
53
- if (!proxyResponse.ok) {
54
- const errorData = await proxyResponse.json().catch(() => ({}))
55
- return {
56
- status: proxyResponse.status,
57
- statusText: proxyResponse.statusText,
58
- headers: {},
59
- body: JSON.stringify(errorData),
60
- responseTime: 0,
61
- size: 0,
62
- error: errorData.error || 'Proxy request failed',
63
- }
64
- }
65
-
66
- const result = await proxyResponse.json()
67
-
68
- return {
69
- status: result.status,
70
- statusText: result.statusText,
71
- headers: result.headers || {},
72
- body: result.body,
73
- responseTime: result.responseTime || 0,
74
- size: result.size || 0,
75
- error: result.error,
76
- }
77
- } catch (error) {
78
- if (error instanceof Error && error.name === 'AbortError') {
79
- throw new Error('Request cancelled')
80
- }
81
-
82
- return {
83
- status: 0,
84
- statusText: 'Error',
85
- headers: {},
86
- body: null,
87
- responseTime: 0,
88
- size: 0,
89
- error: error instanceof Error ? error.message : 'Unknown error',
90
- }
91
- }
92
- }
93
-
94
- /**
95
- * Executes a streaming request (for SSE endpoints)
96
- * Falls back to regular request if the endpoint isn't actually SSE
97
- */
98
- export async function executeStreamingRequest(
99
- request: BrainfishRESTRequest,
100
- options: RequestRunnerOptions = {}
101
- ): Promise<PlaygroundResponse> {
102
- const startTime = Date.now()
103
-
104
- try {
105
- const builtRequest = buildRequest(request, options)
106
-
107
- // Use streaming proxy
108
- const response = await fetch('/api/proxy-stream', {
109
- method: 'POST',
110
- headers: {
111
- 'Content-Type': 'application/json',
112
- },
113
- body: JSON.stringify({
114
- url: builtRequest.url,
115
- method: builtRequest.method,
116
- headers: builtRequest.headers,
117
- requestBody: builtRequest.body instanceof FormData
118
- ? undefined
119
- : builtRequest.body,
120
- }),
121
- signal: options.signal,
122
- })
123
-
124
- if (!response.ok) {
125
- const errorData = await response.json().catch(() => ({}))
126
- return {
127
- status: response.status,
128
- statusText: response.statusText,
129
- headers: {},
130
- body: JSON.stringify(errorData),
131
- responseTime: Date.now() - startTime,
132
- size: 0,
133
- error: errorData.error || 'Proxy request failed',
134
- }
135
- }
136
-
137
- const contentType = response.headers.get('content-type') || ''
138
-
139
- // Check if streaming response (our proxy wraps SSE responses as SSE)
140
- const isProxyStreaming = contentType.includes('text/event-stream')
141
-
142
- if (isProxyStreaming && response.body) {
143
- const reader = response.body.getReader()
144
- const decoder = new TextDecoder()
145
- let accumulated = ''
146
- let metadata: { status: number; statusText: string; headers: Record<string, string> } | null = null
147
- let totalSize = 0
148
- let buffer = ''
149
-
150
- try {
151
- while (true) {
152
- const { done, value } = await reader.read()
153
- if (done) break
154
-
155
- buffer += decoder.decode(value, { stream: true })
156
-
157
- // Process complete SSE events (ending with \n\n)
158
- const events = buffer.split('\n\n')
159
- buffer = events.pop() || '' // Keep incomplete event in buffer
160
-
161
- for (const eventStr of events) {
162
- const lines = eventStr.split('\n')
163
- for (const line of lines) {
164
- if (line.startsWith('data: ')) {
165
- try {
166
- const event = JSON.parse(line.slice(6))
167
-
168
- if (event.type === 'metadata') {
169
- metadata = {
170
- status: event.status,
171
- statusText: event.statusText,
172
- headers: event.headers,
173
- }
174
- options.onStreamStart?.(metadata)
175
- } else if (event.type === 'chunk') {
176
- // Accumulate raw SSE data - formatting happens in response viewer
177
- accumulated += event.data
178
- totalSize += event.size || 0
179
- options.onChunk?.(event.data, accumulated)
180
- } else if (event.type === 'done') {
181
- totalSize = event.totalSize || totalSize
182
- } else if (event.type === 'error') {
183
- return {
184
- status: metadata?.status || 0,
185
- statusText: metadata?.statusText || 'Error',
186
- headers: metadata?.headers || {},
187
- body: accumulated,
188
- responseTime: Date.now() - startTime,
189
- size: totalSize,
190
- error: event.error,
191
- isStreaming: true,
192
- }
193
- }
194
- } catch {
195
- // Ignore parse errors for partial data
196
- }
197
- }
198
- }
199
- }
200
- }
201
- } catch (readError) {
202
- // Handle read errors gracefully
203
- if (readError instanceof Error && readError.name === 'AbortError') {
204
- throw readError
205
- }
206
- }
207
-
208
- return {
209
- status: metadata?.status || 200,
210
- statusText: metadata?.statusText || 'OK',
211
- headers: metadata?.headers || {},
212
- body: accumulated,
213
- responseTime: Date.now() - startTime,
214
- size: totalSize,
215
- isStreaming: true,
216
- }
217
- }
218
-
219
- // Non-streaming response from streaming proxy (endpoint wasn't SSE)
220
- const result = await response.json()
221
- return {
222
- status: result.status,
223
- statusText: result.statusText,
224
- headers: result.headers || {},
225
- body: result.body,
226
- responseTime: Date.now() - startTime,
227
- size: result.size || 0,
228
- error: result.error,
229
- isStreaming: false,
230
- }
231
- } catch (error) {
232
- if (error instanceof Error && error.name === 'AbortError') {
233
- throw new Error('Request cancelled')
234
- }
235
-
236
- return {
237
- status: 0,
238
- statusText: 'Error',
239
- headers: {},
240
- body: null,
241
- responseTime: Date.now() - startTime,
242
- size: 0,
243
- error: error instanceof Error ? error.message : 'Unknown error',
244
- }
245
- }
246
- }
247
-
248
- /**
249
- * Creates a cancelable request execution
250
- */
251
- export function createCancelableRequest(
252
- request: BrainfishRESTRequest,
253
- options: RequestRunnerOptions = {}
254
- ): {
255
- execute: () => Promise<PlaygroundResponse>
256
- cancel: () => void
257
- } {
258
- const abortController = new AbortController()
259
-
260
- return {
261
- execute: () => executeRequest(request, { ...options, signal: abortController.signal }),
262
- cancel: () => abortController.abort(),
263
- }
264
- }
265
-
266
- /**
267
- * Creates a cancelable streaming request execution
268
- */
269
- export function createCancelableStreamingRequest(
270
- request: BrainfishRESTRequest,
271
- options: RequestRunnerOptions = {}
272
- ): {
273
- execute: () => Promise<PlaygroundResponse>
274
- cancel: () => void
275
- } {
276
- const abortController = new AbortController()
277
-
278
- return {
279
- execute: () => executeStreamingRequest(request, { ...options, signal: abortController.signal }),
280
- cancel: () => abortController.abort(),
281
- }
282
- }
@@ -1,35 +0,0 @@
1
- /**
2
- * Playground Types
3
- *
4
- * Types for the API playground (Try It Out functionality)
5
- */
6
-
7
- import type { BrainfishRESTRequest } from '../types'
8
-
9
- export interface PlaygroundRequest {
10
- request: BrainfishRESTRequest
11
- // Editable values (user can modify before sending)
12
- params: Array<{ key: string; value: string; active: boolean }>
13
- headers: Array<{ key: string; value: string; active: boolean }>
14
- body: string | null
15
- variables: Array<{ key: string; value: string; active: boolean }>
16
- }
17
-
18
- export interface PlaygroundResponse {
19
- status: number
20
- statusText: string
21
- headers: Record<string, string>
22
- body: string | Blob | null
23
- responseTime: number
24
- size: number
25
- error?: string
26
- /** Whether this was a streaming response (SSE) */
27
- isStreaming?: boolean
28
- }
29
-
30
- export type PlaygroundResponseState =
31
- | { type: 'idle' }
32
- | { type: 'loading' }
33
- | { type: 'streaming'; response: PlaygroundResponse }
34
- | { type: 'success'; response: PlaygroundResponse }
35
- | { type: 'error'; error: string; response?: PlaygroundResponse }