@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,266 +0,0 @@
1
- 'use client'
2
-
3
- import { useState, useEffect, useCallback } from 'react'
4
- import { dbOperations } from './db'
5
- import type { Workspace, NoteFile, EditorState } from './types'
6
-
7
- /**
8
- * Hook for managing the workspace (auto-created per API)
9
- */
10
- export function useWorkspace(apiSpecUrl: string | null, apiName: string = 'API Notes') {
11
- const [workspace, setWorkspace] = useState<Workspace | null>(null)
12
- const [loading, setLoading] = useState(true)
13
- const [error, setError] = useState<Error | null>(null)
14
-
15
- useEffect(() => {
16
- if (!apiSpecUrl) {
17
- setWorkspace(null)
18
- setLoading(false)
19
- return
20
- }
21
-
22
- const loadWorkspace = async () => {
23
- try {
24
- setLoading(true)
25
- const ws = await dbOperations.getOrCreateWorkspace(apiSpecUrl, `${apiName} Notes`)
26
- setWorkspace(ws)
27
- setError(null)
28
- } catch (err) {
29
- setError(err instanceof Error ? err : new Error('Failed to load workspace'))
30
- } finally {
31
- setLoading(false)
32
- }
33
- }
34
-
35
- loadWorkspace()
36
- }, [apiSpecUrl, apiName])
37
-
38
- const clearWorkspace = useCallback(async () => {
39
- if (!workspace) return
40
- await dbOperations.clearWorkspace(workspace.id)
41
- }, [workspace])
42
-
43
- return {
44
- workspace,
45
- loading,
46
- error,
47
- clearWorkspace,
48
- workspaceId: workspace?.id || null,
49
- }
50
- }
51
-
52
- /**
53
- * Hook for managing notes/files in the workspace
54
- */
55
- export function useNotes(workspaceId: string | null) {
56
- const [notes, setNotes] = useState<NoteFile[]>([])
57
- const [loading, setLoading] = useState(true)
58
- const [error, setError] = useState<Error | null>(null)
59
-
60
- const loadNotes = useCallback(async () => {
61
- if (!workspaceId) {
62
- setNotes([])
63
- setLoading(false)
64
- return
65
- }
66
-
67
- try {
68
- setLoading(true)
69
- const list = await dbOperations.listNotes(workspaceId)
70
- setNotes(list)
71
- setError(null)
72
- } catch (err) {
73
- setError(err instanceof Error ? err : new Error('Failed to load notes'))
74
- } finally {
75
- setLoading(false)
76
- }
77
- }, [workspaceId])
78
-
79
- useEffect(() => {
80
- loadNotes()
81
- }, [loadNotes])
82
-
83
- const createNote = useCallback(async (path: string, content: string = ''): Promise<NoteFile | null> => {
84
- if (!workspaceId) return null
85
-
86
- const note = await dbOperations.createNote(workspaceId, path, content)
87
- setNotes(prev => [...prev, note])
88
- return note
89
- }, [workspaceId])
90
-
91
- const readNote = useCallback(async (path: string): Promise<string> => {
92
- if (!workspaceId) return ''
93
-
94
- const note = await dbOperations.getNote(workspaceId, path)
95
- return note?.content || ''
96
- }, [workspaceId])
97
-
98
- const updateNote = useCallback(async (path: string, content: string): Promise<void> => {
99
- if (!workspaceId) return
100
-
101
- await dbOperations.updateNote(workspaceId, path, content)
102
- setNotes(prev => prev.map(n =>
103
- n.path === path
104
- ? { ...n, content, updatedAt: new Date() }
105
- : n
106
- ))
107
- }, [workspaceId])
108
-
109
- const deleteNote = useCallback(async (path: string): Promise<void> => {
110
- if (!workspaceId) return
111
-
112
- await dbOperations.deleteNote(workspaceId, path)
113
- setNotes(prev => prev.filter(n => n.path !== path))
114
- }, [workspaceId])
115
-
116
- const renameNote = useCallback(async (oldPath: string, newPath: string): Promise<void> => {
117
- if (!workspaceId) return
118
-
119
- await dbOperations.renameNote(workspaceId, oldPath, newPath)
120
- setNotes(prev => prev.map(n =>
121
- n.path === oldPath
122
- ? { ...n, path: newPath, updatedAt: new Date() }
123
- : n
124
- ))
125
- }, [workspaceId])
126
-
127
- const deleteAllNotes = useCallback(async (): Promise<void> => {
128
- if (!workspaceId) return
129
-
130
- await dbOperations.clearWorkspace(workspaceId)
131
- setNotes([])
132
- }, [workspaceId])
133
-
134
- return {
135
- notes,
136
- loading,
137
- error,
138
- createNote,
139
- readNote,
140
- updateNote,
141
- deleteNote,
142
- deleteAllNotes,
143
- renameNote,
144
- refresh: loadNotes,
145
- }
146
- }
147
-
148
- /**
149
- * Hook for managing editor state (tabs, active file, etc.)
150
- */
151
- export function useEditorState(workspaceId: string | null) {
152
- const [state, setState] = useState<EditorState | null>(null)
153
-
154
- // Load saved state
155
- useEffect(() => {
156
- if (!workspaceId) {
157
- setState(null)
158
- return
159
- }
160
-
161
- const loadState = async () => {
162
- const saved = await dbOperations.getEditorState(workspaceId)
163
- if (saved) {
164
- setState(saved)
165
- } else {
166
- // Initialize new state
167
- setState({
168
- workspaceId,
169
- openTabs: [],
170
- activeTab: null,
171
- cursorPositions: {},
172
- scrollPositions: {},
173
- })
174
- }
175
- }
176
-
177
- loadState()
178
- }, [workspaceId])
179
-
180
- // Save state when it changes
181
- useEffect(() => {
182
- if (state && workspaceId) {
183
- dbOperations.saveEditorState(state)
184
- }
185
- }, [state, workspaceId])
186
-
187
- const openTab = useCallback(async (path: string) => {
188
- setState(prev => {
189
- if (!prev) return prev
190
-
191
- const newTabs = prev.openTabs.includes(path)
192
- ? prev.openTabs
193
- : [...prev.openTabs, path]
194
-
195
- return {
196
- ...prev,
197
- openTabs: newTabs,
198
- activeTab: path,
199
- }
200
- })
201
- }, [])
202
-
203
- const closeTab = useCallback((path: string) => {
204
- setState(prev => {
205
- if (!prev) return prev
206
-
207
- const newTabs = prev.openTabs.filter(t => t !== path)
208
- const newActive = prev.activeTab === path
209
- ? newTabs[newTabs.length - 1] || null
210
- : prev.activeTab
211
-
212
- return {
213
- ...prev,
214
- openTabs: newTabs,
215
- activeTab: newActive,
216
- }
217
- })
218
- }, [])
219
-
220
- const setActiveTab = useCallback((path: string) => {
221
- setState(prev => {
222
- if (!prev) return prev
223
- return { ...prev, activeTab: path }
224
- })
225
- }, [])
226
-
227
- const saveCursorPosition = useCallback((path: string, line: number, column: number) => {
228
- setState(prev => {
229
- if (!prev) return prev
230
- return {
231
- ...prev,
232
- cursorPositions: {
233
- ...prev.cursorPositions,
234
- [path]: { line, column },
235
- },
236
- }
237
- })
238
- }, [])
239
-
240
- const clearAllTabs = useCallback(() => {
241
- setState(prev => {
242
- if (!prev) return prev
243
- return {
244
- ...prev,
245
- openTabs: [],
246
- activeTab: null,
247
- cursorPositions: {},
248
- scrollPositions: {},
249
- }
250
- })
251
- }, [])
252
-
253
- return {
254
- state,
255
- openTab,
256
- closeTab,
257
- setActiveTab,
258
- saveCursorPosition,
259
- clearAllTabs,
260
- }
261
- }
262
-
263
- // Re-export types and helpers
264
- export type { Workspace, NoteFile, EditorState } from './types'
265
- export { getFileType, getMonacoLanguage, supportsPreview } from './types'
266
- export { getWorkspaceId } from './db'
@@ -1,207 +0,0 @@
1
- 'use client'
2
-
3
- import React, { createContext, useContext, useState, useCallback, useEffect, useRef, type ReactNode } from 'react'
4
- import type { PlaygroundMode } from './types'
5
-
6
- /**
7
- * Streaming content for real-time code display
8
- */
9
- interface StreamingContent {
10
- path: string
11
- content: string
12
- isStreaming: boolean
13
- }
14
-
15
- /**
16
- * Simplified mode context - toggles between Docs, API Client, and Notes
17
- * Uses URL hash for persistence: #notes or #notes/path/to/file.py
18
- */
19
- interface ModeContextValue {
20
- // Current mode
21
- mode: PlaygroundMode
22
-
23
- // Active file in notes mode (for navigation from agent)
24
- activeFilePath: string | null
25
- setActiveFilePath: (path: string | null) => void
26
-
27
- // Streaming content for real-time display
28
- streamingContent: StreamingContent | null
29
- setStreamingContent: (content: StreamingContent | null) => void
30
- appendStreamingContent: (delta: string) => void
31
-
32
- // Mode switching
33
- switchToDocs: () => void
34
- switchToNotes: (openFile?: string) => void
35
- switchToApiClient: () => void
36
-
37
- // Notes refresh trigger - increment to signal notes-mode to refresh
38
- notesRefreshTrigger: number
39
- triggerNotesRefresh: () => void
40
- }
41
-
42
- const ModeContext = createContext<ModeContextValue | null>(null)
43
-
44
- interface ModeProviderProps {
45
- children: ReactNode
46
- defaultMode?: PlaygroundMode
47
- }
48
-
49
- // Helper to parse notes path from URL hash
50
- function parseNotesHash(): { isNotes: boolean; filePath: string | null } {
51
- if (typeof window === 'undefined') return { isNotes: false, filePath: null }
52
-
53
- const hash = window.location.hash.slice(1) // Remove #
54
- if (hash === 'notes') {
55
- return { isNotes: true, filePath: null }
56
- }
57
- if (hash.startsWith('notes/')) {
58
- // Decode any encoded characters but path should mostly be plain text
59
- const filePath = decodeURIComponent(hash.slice(6)) // Remove 'notes/'
60
- return { isNotes: true, filePath: filePath || null }
61
- }
62
- return { isNotes: false, filePath: null }
63
- }
64
-
65
- // Helper to update URL hash for notes
66
- // Only encode special chars that would break the URL, keep slashes readable
67
- function updateNotesHash(filePath: string | null): void {
68
- if (typeof window === 'undefined') return
69
-
70
- const newHash = filePath
71
- ? `#notes/${filePath.replace(/#/g, '%23').replace(/\?/g, '%3F')}`
72
- : '#notes'
73
-
74
- window.history.pushState(null, '', newHash)
75
- }
76
-
77
- export function ModeProvider({ children, defaultMode = 'docs' }: ModeProviderProps) {
78
- const [mode, setMode] = useState<PlaygroundMode>(defaultMode)
79
- const [activeFilePath, setActiveFilePathState] = useState<string | null>(null)
80
- const [streamingContent, setStreamingContent] = useState<StreamingContent | null>(null)
81
- const [notesRefreshTrigger, setNotesRefreshTrigger] = useState(0)
82
-
83
- // Use ref to track mode for callbacks (avoids stale closure issues)
84
- const modeRef = useRef<PlaygroundMode>(defaultMode)
85
-
86
- // Keep ref in sync with state
87
- useEffect(() => {
88
- modeRef.current = mode
89
- }, [mode])
90
-
91
- // Initialize from URL hash on mount
92
- useEffect(() => {
93
- const { isNotes, filePath } = parseNotesHash()
94
-
95
- if (isNotes) {
96
- setMode('notes')
97
- modeRef.current = 'notes'
98
- setActiveFilePathState(filePath)
99
- }
100
- }, [])
101
-
102
- // Handle browser back/forward navigation
103
- useEffect(() => {
104
- const handlePopState = () => {
105
- const { isNotes, filePath } = parseNotesHash()
106
-
107
- if (isNotes) {
108
- setMode('notes')
109
- modeRef.current = 'notes'
110
- setActiveFilePathState(filePath)
111
- } else {
112
- // Default to docs mode when no notes hash
113
- setMode('docs')
114
- modeRef.current = 'docs'
115
- }
116
- }
117
-
118
- window.addEventListener('popstate', handlePopState)
119
- return () => window.removeEventListener('popstate', handlePopState)
120
- }, [])
121
-
122
- // Wrapper for setActiveFilePath that also updates URL
123
- const setActiveFilePath = useCallback((path: string | null) => {
124
- // Handle the ?t= timestamp suffix for forcing reloads
125
- const cleanPath = path?.split('?')[0] || null
126
- setActiveFilePathState(cleanPath)
127
-
128
- // Update URL if we're in notes mode (use ref to avoid stale closure)
129
- if (modeRef.current === 'notes') {
130
- updateNotesHash(cleanPath)
131
- }
132
- }, []) // No dependencies - uses ref
133
-
134
- const switchToNotes = useCallback((openFile?: string) => {
135
- const filePath = openFile || null
136
- setActiveFilePathState(filePath)
137
- setMode('notes')
138
- modeRef.current = 'notes'
139
- updateNotesHash(filePath)
140
- }, [])
141
-
142
- const switchToApiClient = useCallback(() => {
143
- setMode('api_client')
144
- modeRef.current = 'api_client'
145
- // Don't update URL here - let the main API docs component handle it
146
- }, [])
147
-
148
- const switchToDocs = useCallback(() => {
149
- setMode('docs')
150
- modeRef.current = 'docs'
151
- // Only clear the hash if it's a notes hash, preserve doc/endpoint hashes
152
- if (typeof window !== 'undefined') {
153
- const hash = window.location.hash.slice(1)
154
- if (hash === 'notes' || hash.startsWith('notes/')) {
155
- window.history.pushState(null, '', window.location.pathname + window.location.search)
156
- }
157
- }
158
- }, [])
159
-
160
- const appendStreamingContent = useCallback((delta: string) => {
161
- setStreamingContent(prev => {
162
- if (!prev) return prev
163
- return {
164
- ...prev,
165
- content: prev.content + delta,
166
- }
167
- })
168
- }, [])
169
-
170
- const triggerNotesRefresh = useCallback(() => {
171
- setNotesRefreshTrigger(prev => prev + 1)
172
- }, [])
173
-
174
- const value: ModeContextValue = {
175
- mode,
176
- activeFilePath,
177
- setActiveFilePath,
178
- streamingContent,
179
- setStreamingContent,
180
- appendStreamingContent,
181
- switchToDocs,
182
- switchToNotes,
183
- switchToApiClient,
184
- notesRefreshTrigger,
185
- triggerNotesRefresh,
186
- }
187
-
188
- return (
189
- <ModeContext.Provider value={value}>
190
- {children}
191
- </ModeContext.Provider>
192
- )
193
- }
194
-
195
- export function useModeContext() {
196
- const context = useContext(ModeContext)
197
- if (!context) {
198
- throw new Error('useModeContext must be used within a ModeProvider')
199
- }
200
- return context
201
- }
202
-
203
- // Hook for checking if we're in notes mode
204
- export function useIsNotesMode() {
205
- const { mode } = useModeContext()
206
- return mode === 'notes'
207
- }
@@ -1,105 +0,0 @@
1
- // Types for the Notes/Scratchpad feature
2
- // Simplified from full project management to a brainstorming workspace
3
-
4
- export type PlaygroundMode = 'docs' | 'api_client' | 'notes'
5
-
6
- // File types supported in the notes workspace
7
- export type NoteFileType =
8
- | 'javascript'
9
- | 'typescript'
10
- | 'python'
11
- | 'go'
12
- | 'ruby'
13
- | 'php'
14
- | 'shell' // curl, bash
15
- | 'markdown'
16
- | 'mermaid' // Diagrams
17
- | 'json'
18
- | 'yaml'
19
- | 'text'
20
-
21
- // Single workspace per API (not multiple projects)
22
- export interface Workspace {
23
- id: string // Hash of API spec URL
24
- name: string // e.g., "Vrio API Notes"
25
- apiSpecUrl?: string
26
- createdAt: Date
27
- updatedAt: Date
28
- }
29
-
30
- // A note/file in the workspace
31
- export interface NoteFile {
32
- id: string
33
- workspaceId: string
34
- path: string // e.g., "auth/oauth-example.py"
35
- content: string
36
- createdAt: Date
37
- updatedAt: Date
38
- }
39
-
40
- // Editor state for the workspace
41
- export interface EditorState {
42
- workspaceId: string
43
- openTabs: string[] // File paths
44
- activeTab: string | null
45
- cursorPositions: Record<string, { line: number; column: number }>
46
- scrollPositions: Record<string, number>
47
- }
48
-
49
- // Helper to detect file type from path
50
- export function getFileType(path: string): NoteFileType {
51
- const ext = path.split('.').pop()?.toLowerCase() || ''
52
-
53
- const typeMap: Record<string, NoteFileType> = {
54
- 'js': 'javascript',
55
- 'mjs': 'javascript',
56
- 'jsx': 'javascript',
57
- 'ts': 'typescript',
58
- 'tsx': 'typescript',
59
- 'py': 'python',
60
- 'go': 'go',
61
- 'rb': 'ruby',
62
- 'php': 'php',
63
- 'sh': 'shell',
64
- 'bash': 'shell',
65
- 'curl': 'shell',
66
- 'md': 'markdown',
67
- 'mdx': 'markdown',
68
- 'mmd': 'mermaid',
69
- 'mermaid': 'mermaid',
70
- 'json': 'json',
71
- 'yaml': 'yaml',
72
- 'yml': 'yaml',
73
- 'txt': 'text',
74
- }
75
-
76
- return typeMap[ext] || 'text'
77
- }
78
-
79
- // Helper to get Monaco language from file type
80
- export function getMonacoLanguage(path: string): string {
81
- const type = getFileType(path)
82
-
83
- const languageMap: Record<NoteFileType, string> = {
84
- 'javascript': 'javascript',
85
- 'typescript': 'typescript',
86
- 'python': 'python',
87
- 'go': 'go',
88
- 'ruby': 'ruby',
89
- 'php': 'php',
90
- 'shell': 'shell',
91
- 'markdown': 'markdown',
92
- 'mermaid': 'markdown', // Use markdown for mermaid editing
93
- 'json': 'json',
94
- 'yaml': 'yaml',
95
- 'text': 'plaintext',
96
- }
97
-
98
- return languageMap[type]
99
- }
100
-
101
- // Check if file type supports preview
102
- export function supportsPreview(path: string): boolean {
103
- const type = getFileType(path)
104
- return type === 'markdown' || type === 'mermaid'
105
- }