larkup 0.1.34 → 0.1.35

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 (268) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +8 -8
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +16 -16
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/analytics.html +1 -1
  25. package/.next/server/app/analytics.rsc +17 -17
  26. package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
  27. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  28. package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
  29. package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  30. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  31. package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  32. package/.next/server/app/api/analytics/route.js.nft.json +1 -1
  33. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  34. package/.next/server/app/api/chat/status/route.js.nft.json +1 -1
  35. package/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
  36. package/.next/server/app/api/config/route.js.nft.json +1 -1
  37. package/.next/server/app/api/config/test/route.js.nft.json +1 -1
  38. package/.next/server/app/api/connections/route.js.nft.json +1 -1
  39. package/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
  40. package/.next/server/app/api/demo/route.js.nft.json +1 -1
  41. package/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
  42. package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  43. package/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
  44. package/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
  45. package/.next/server/app/api/describe-image/route.js.nft.json +1 -1
  46. package/.next/server/app/api/documents/route.js.nft.json +1 -1
  47. package/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
  48. package/.next/server/app/api/index/route.js.nft.json +1 -1
  49. package/.next/server/app/api/jobs/[id]/route.js +2 -1
  50. package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
  51. package/.next/server/app/api/jobs/route.js +2 -1
  52. package/.next/server/app/api/jobs/route.js.nft.json +1 -1
  53. package/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
  54. package/.next/server/app/api/media/process/route.js.nft.json +1 -1
  55. package/.next/server/app/api/media/route.js.nft.json +1 -1
  56. package/.next/server/app/api/media/stream/route.js.nft.json +1 -1
  57. package/.next/server/app/api/search/bing/route.js.nft.json +1 -1
  58. package/.next/server/app/api/search/brave/route.js.nft.json +1 -1
  59. package/.next/server/app/api/search/exa/route.js.nft.json +1 -1
  60. package/.next/server/app/api/search/google/route.js.nft.json +1 -1
  61. package/.next/server/app/api/search/route.js +3 -2
  62. package/.next/server/app/api/search/route.js.nft.json +1 -1
  63. package/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
  64. package/.next/server/app/api/server/agent/route.js.nft.json +1 -1
  65. package/.next/server/app/api/server/download/route.js.nft.json +1 -1
  66. package/.next/server/app/api/server/generate/route.js.nft.json +1 -1
  67. package/.next/server/app/api/server/local/route.js.nft.json +1 -1
  68. package/.next/server/app/api/servers/route.js.nft.json +1 -1
  69. package/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
  70. package/.next/server/app/api/tabular/route.js.nft.json +1 -1
  71. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  72. package/.next/server/app/chat.html +1 -1
  73. package/.next/server/app/chat.rsc +17 -17
  74. package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  75. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  76. package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
  77. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  78. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  79. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  80. package/.next/server/app/data/page_client-reference-manifest.js +1 -1
  81. package/.next/server/app/data.html +1 -1
  82. package/.next/server/app/data.rsc +17 -17
  83. package/.next/server/app/data.segments/_full.segment.rsc +17 -17
  84. package/.next/server/app/data.segments/_head.segment.rsc +4 -4
  85. package/.next/server/app/data.segments/_index.segment.rsc +11 -11
  86. package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  87. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  88. package/.next/server/app/data.segments/data.segment.rsc +3 -3
  89. package/.next/server/app/index.html +1 -1
  90. package/.next/server/app/index.rsc +16 -16
  91. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  92. package/.next/server/app/index.segments/_full.segment.rsc +16 -16
  93. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  94. package/.next/server/app/index.segments/_index.segment.rsc +11 -11
  95. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  96. package/.next/server/app/page_client-reference-manifest.js +1 -1
  97. package/.next/server/app/settings/page.js.nft.json +1 -1
  98. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  99. package/.next/server/app/settings.html +1 -1
  100. package/.next/server/app/settings.rsc +18 -18
  101. package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  102. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  103. package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  104. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  105. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  106. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  107. package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +4 -4
  108. package/.next/server/chunks/[root-of-the-server]__08es4vu._.js +3 -0
  109. package/.next/server/chunks/[root-of-the-server]__0j034yj._.js +3 -0
  110. package/.next/server/chunks/[root-of-the-server]__0j2l54r._.js +3 -0
  111. package/.next/server/chunks/[root-of-the-server]__1ahdfq9._.js +3 -3
  112. package/.next/server/chunks/[root-of-the-server]__1idgvjh._.js +1 -1
  113. package/.next/server/chunks/[root-of-the-server]__1pumzqp._.js +3 -0
  114. package/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
  115. package/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +61 -0
  116. package/.next/server/chunks/ssr/_169pdlf._.js +1 -1
  117. package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  118. package/.next/server/middleware-build-manifest.js +3 -3
  119. package/.next/server/pages/404.html +1 -1
  120. package/.next/server/pages/500.html +1 -1
  121. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  122. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  123. package/.next/standalone/apps/web/.next/required-server-files.json +1 -1
  124. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  125. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  126. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  127. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  128. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  129. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  130. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  131. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  132. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  133. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +16 -16
  134. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  135. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  136. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  137. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  138. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  139. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  140. package/.next/standalone/apps/web/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  141. package/.next/standalone/apps/web/.next/server/app/analytics.html +1 -1
  142. package/.next/standalone/apps/web/.next/server/app/analytics.rsc +17 -17
  143. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
  144. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  145. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
  146. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  147. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  148. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  149. package/.next/standalone/apps/web/.next/server/app/api/analytics/route.js.nft.json +1 -1
  150. package/.next/standalone/apps/web/.next/server/app/api/chat/route.js.nft.json +1 -1
  151. package/.next/standalone/apps/web/.next/server/app/api/chat/status/route.js.nft.json +1 -1
  152. package/.next/standalone/apps/web/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
  153. package/.next/standalone/apps/web/.next/server/app/api/config/route.js.nft.json +1 -1
  154. package/.next/standalone/apps/web/.next/server/app/api/config/test/route.js.nft.json +1 -1
  155. package/.next/standalone/apps/web/.next/server/app/api/connections/route.js.nft.json +1 -1
  156. package/.next/standalone/apps/web/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
  157. package/.next/standalone/apps/web/.next/server/app/api/demo/route.js.nft.json +1 -1
  158. package/.next/standalone/apps/web/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
  159. package/.next/standalone/apps/web/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  160. package/.next/standalone/apps/web/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
  161. package/.next/standalone/apps/web/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
  162. package/.next/standalone/apps/web/.next/server/app/api/describe-image/route.js.nft.json +1 -1
  163. package/.next/standalone/apps/web/.next/server/app/api/documents/route.js.nft.json +1 -1
  164. package/.next/standalone/apps/web/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
  165. package/.next/standalone/apps/web/.next/server/app/api/index/route.js.nft.json +1 -1
  166. package/.next/standalone/apps/web/.next/server/app/api/jobs/[id]/route.js +2 -1
  167. package/.next/standalone/apps/web/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
  168. package/.next/standalone/apps/web/.next/server/app/api/jobs/route.js +2 -1
  169. package/.next/standalone/apps/web/.next/server/app/api/jobs/route.js.nft.json +1 -1
  170. package/.next/standalone/apps/web/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
  171. package/.next/standalone/apps/web/.next/server/app/api/media/process/route.js.nft.json +1 -1
  172. package/.next/standalone/apps/web/.next/server/app/api/media/route.js.nft.json +1 -1
  173. package/.next/standalone/apps/web/.next/server/app/api/media/stream/route.js.nft.json +1 -1
  174. package/.next/standalone/apps/web/.next/server/app/api/search/bing/route.js.nft.json +1 -1
  175. package/.next/standalone/apps/web/.next/server/app/api/search/brave/route.js.nft.json +1 -1
  176. package/.next/standalone/apps/web/.next/server/app/api/search/exa/route.js.nft.json +1 -1
  177. package/.next/standalone/apps/web/.next/server/app/api/search/google/route.js.nft.json +1 -1
  178. package/.next/standalone/apps/web/.next/server/app/api/search/route.js +3 -2
  179. package/.next/standalone/apps/web/.next/server/app/api/search/route.js.nft.json +1 -1
  180. package/.next/standalone/apps/web/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
  181. package/.next/standalone/apps/web/.next/server/app/api/server/agent/route.js.nft.json +1 -1
  182. package/.next/standalone/apps/web/.next/server/app/api/server/download/route.js.nft.json +1 -1
  183. package/.next/standalone/apps/web/.next/server/app/api/server/generate/route.js.nft.json +1 -1
  184. package/.next/standalone/apps/web/.next/server/app/api/server/local/route.js.nft.json +1 -1
  185. package/.next/standalone/apps/web/.next/server/app/api/servers/route.js.nft.json +1 -1
  186. package/.next/standalone/apps/web/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
  187. package/.next/standalone/apps/web/.next/server/app/api/tabular/route.js.nft.json +1 -1
  188. package/.next/standalone/apps/web/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  189. package/.next/standalone/apps/web/.next/server/app/chat.html +1 -1
  190. package/.next/standalone/apps/web/.next/server/app/chat.rsc +17 -17
  191. package/.next/standalone/apps/web/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  192. package/.next/standalone/apps/web/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  193. package/.next/standalone/apps/web/.next/server/app/chat.segments/_index.segment.rsc +11 -11
  194. package/.next/standalone/apps/web/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  195. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  196. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  197. package/.next/standalone/apps/web/.next/server/app/data/page_client-reference-manifest.js +1 -1
  198. package/.next/standalone/apps/web/.next/server/app/data.html +1 -1
  199. package/.next/standalone/apps/web/.next/server/app/data.rsc +17 -17
  200. package/.next/standalone/apps/web/.next/server/app/data.segments/_full.segment.rsc +17 -17
  201. package/.next/standalone/apps/web/.next/server/app/data.segments/_head.segment.rsc +4 -4
  202. package/.next/standalone/apps/web/.next/server/app/data.segments/_index.segment.rsc +11 -11
  203. package/.next/standalone/apps/web/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  204. package/.next/standalone/apps/web/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  205. package/.next/standalone/apps/web/.next/server/app/data.segments/data.segment.rsc +3 -3
  206. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  207. package/.next/standalone/apps/web/.next/server/app/index.rsc +16 -16
  208. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  209. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +16 -16
  210. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
  211. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +11 -11
  212. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  213. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  214. package/.next/standalone/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  215. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  216. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  217. package/.next/standalone/apps/web/.next/server/app/settings.rsc +18 -18
  218. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  219. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  220. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  221. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  222. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  223. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  224. package/.next/standalone/apps/web/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +4 -4
  225. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__08es4vu._.js +3 -0
  226. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0j034yj._.js +3 -0
  227. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0j2l54r._.js +3 -0
  228. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1ahdfq9._.js +3 -3
  229. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1idgvjh._.js +1 -1
  230. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1pumzqp._.js +3 -0
  231. package/.next/standalone/apps/web/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
  232. package/.next/standalone/apps/web/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +61 -0
  233. package/.next/standalone/apps/web/.next/server/chunks/ssr/_169pdlf._.js +1 -1
  234. package/.next/standalone/apps/web/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  235. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  236. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  237. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  238. package/.next/standalone/apps/web/.next/static/chunks/{2oscz5_mk5ikl.js → 2997cwisllvit.js} +1 -1
  239. package/.next/standalone/apps/web/.next/static/chunks/{068nxrakm96je.js → 3q4k1i384p4oi.js} +3 -3
  240. package/.next/standalone/apps/web/CHANGELOG.md +11 -0
  241. package/.next/standalone/apps/web/app/api/chat/route.ts +38 -6
  242. package/.next/standalone/apps/web/components/data/firecrawl-notice.tsx +5 -5
  243. package/.next/standalone/apps/web/components/data/media-panel.tsx +2 -2
  244. package/.next/standalone/apps/web/components/ui/skeleton.tsx +6 -5
  245. package/.next/standalone/apps/web/package.json +1 -1
  246. package/.next/standalone/apps/web/server.js +1 -1
  247. package/.next/static/chunks/{2oscz5_mk5ikl.js → 2997cwisllvit.js} +1 -1
  248. package/.next/static/chunks/{068nxrakm96je.js → 3q4k1i384p4oi.js} +3 -3
  249. package/CHANGELOG.md +11 -0
  250. package/app/api/chat/route.ts +38 -6
  251. package/components/data/firecrawl-notice.tsx +5 -5
  252. package/components/data/media-panel.tsx +2 -2
  253. package/components/ui/skeleton.tsx +6 -5
  254. package/package.json +6 -6
  255. package/.next/server/chunks/[root-of-the-server]__067hiof._.js +0 -61
  256. package/.next/server/chunks/[root-of-the-server]__0a_0ywc._.js +0 -61
  257. package/.next/server/chunks/[root-of-the-server]__0u17zp8._.js +0 -61
  258. package/.next/server/chunks/[root-of-the-server]__1vsvck0._.js +0 -61
  259. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__067hiof._.js +0 -61
  260. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0a_0ywc._.js +0 -61
  261. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0u17zp8._.js +0 -61
  262. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1vsvck0._.js +0 -61
  263. /package/.next/standalone/apps/web/.next/static/{Z7m9nJOto4bGgVOcfPX_4 → hstz-5a1zIL7sCMiAn-KB}/_buildManifest.js +0 -0
  264. /package/.next/standalone/apps/web/.next/static/{Z7m9nJOto4bGgVOcfPX_4 → hstz-5a1zIL7sCMiAn-KB}/_clientMiddlewareManifest.js +0 -0
  265. /package/.next/standalone/apps/web/.next/static/{Z7m9nJOto4bGgVOcfPX_4 → hstz-5a1zIL7sCMiAn-KB}/_ssgManifest.js +0 -0
  266. /package/.next/static/{Z7m9nJOto4bGgVOcfPX_4 → hstz-5a1zIL7sCMiAn-KB}/_buildManifest.js +0 -0
  267. /package/.next/static/{Z7m9nJOto4bGgVOcfPX_4 → hstz-5a1zIL7sCMiAn-KB}/_clientMiddlewareManifest.js +0 -0
  268. /package/.next/static/{Z7m9nJOto4bGgVOcfPX_4 → hstz-5a1zIL7sCMiAn-KB}/_ssgManifest.js +0 -0
@@ -1,61 +0,0 @@
1
- module.exports=[367165,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return a.DEFAULT_CONFIG;try{let n=await t.promises.readFile(r.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),o=i.customEmbeddings,s=i.embeddingModelId;if(i.customEmbedding&&!o?.length){let e=i.customEmbedding;o=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...i,embeddingModelId:s??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:o,chunking:{...a.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return a.DEFAULT_CONFIG}}async function o(e){let a=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,o])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},700259,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(761095),n=e.i(666680),i=e.i(874533),o=e.i(812057),s=e.i(367165);let l=(0,o.promisify)(i.exec);async function c(e,t){return l(e,{timeout:t,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let d=r.default.join(process.cwd(),".larkup"),u=r.default.join(d,"firecrawl-local.json"),p=r.default.join(d,"firecrawl","docker-compose.yml"),h="ragtoolkit-firecrawl";async function w(e){return new Promise((t,r)=>{let n=a.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>t(e))}),n.on("error",a=>{"EADDRINUSE"===a.code?w(0===e?0:e+1).then(t,r):r(a)})})}async function m(){try{let e=r.default.join(process.cwd(),"proxies.txt"),a=(await t.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(a.length>0){let e=a[Math.floor(Math.random()*a.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,s.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let f={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:h};async function g(){try{let e=await t.promises.readFile(u,"utf8");return{...f,...JSON.parse(e)}}catch{return f}}async function y(e){return await t.promises.mkdir(d,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function E(){try{await c("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await c("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await c("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function R(){let{docker:e,compose:t}=await E();return e?t?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function v(e,t,r){let a=r?[`PROXY_SERVER: "${r.server}"`,...r.username&&r.password?[`PROXY_USERNAME: "${r.username}"`,`PROXY_PASSWORD: "${r.password}"`]:[]]:[],n=['PORT: "3000"',...a].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...a,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
2
- services:
3
- db:
4
- image: ghcr.io/firecrawl/nuq-postgres:latest
5
- environment:
6
- POSTGRES_USER: user
7
- POSTGRES_PASSWORD: password
8
- POSTGRES_DB: postgres
9
- healthcheck:
10
- test: ["CMD-SHELL", "pg_isready -U user -d postgres"]
11
- interval: 5s
12
- timeout: 5s
13
- retries: 12
14
- restart: unless-stopped
15
-
16
- rabbitmq:
17
- image: rabbitmq:3-management-alpine
18
- environment:
19
- RABBITMQ_DEFAULT_USER: user
20
- RABBITMQ_DEFAULT_PASS: password
21
- healthcheck:
22
- test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
23
- interval: 5s
24
- timeout: 5s
25
- retries: 3
26
- start_period: 5s
27
- restart: unless-stopped
28
-
29
- redis:
30
- image: redis:alpine
31
- command: redis-server --save "" --appendonly no
32
- healthcheck:
33
- test: ["CMD", "redis-cli", "ping"]
34
- interval: 5s
35
- timeout: 3s
36
- retries: 12
37
- restart: unless-stopped
38
-
39
- playwright-service:
40
- image: ghcr.io/firecrawl/playwright-service:latest
41
- environment:
42
- ${n}
43
- restart: unless-stopped
44
-
45
- api:
46
- image: ghcr.io/firecrawl/firecrawl:latest
47
- depends_on:
48
- db:
49
- condition: service_healthy
50
- rabbitmq:
51
- condition: service_healthy
52
- redis:
53
- condition: service_healthy
54
- ports:
55
- - "${t}:3002"
56
- environment:
57
- ${i}
58
- restart: unless-stopped
59
- `}async function S(){let e=await R();if(!e.compose)return y({...await g(),running:!1,lastError:e.message});let{compose:a}=await E(),i=await g(),o=i.apiKey||`fc-local-${(0,n.randomUUID)()}`,s=i.port||3002,l=await m();await t.promises.mkdir(r.default.dirname(p),{recursive:!0}),await t.promises.writeFile(p,v(o,s,l),"utf8");try{await c(`${a} -p ${h} -f "${p}" up -d`,18e4)}catch(r){let e=r instanceof Error?r.message:"docker compose failed";if(!(e.includes("address already in use")||e.includes("Ports are not available")))return y({...i,apiKey:o,port:s,running:!1,lastError:e});try{s=await w(s+1),await t.promises.writeFile(p,v(o,s,l),"utf8"),await c(`${a} -p ${h} -f "${p}" up -d`,18e4)}catch(e){return y({...i,apiKey:o,port:s,running:!1,lastError:e instanceof Error?e.message:"docker compose retry failed"})}}let d=(0,t.existsSync)("/.dockerenv"),u=`http://${d?"host.docker.internal":"localhost"}:${s}`,f=await k(u,9e4);return y({running:f,endpoint:u,apiKey:o,port:s,project:h,startedAt:new Date().toISOString(),lastError:f?void 0:"Containers started but the API did not become healthy in time. It may still be warming up — try refreshing in a moment."})}async function A(){let{compose:e}=await E(),t=await g();if(e)try{await c(`${e} -p ${h} -f "${p}" down`,6e4)}catch{}return y({...t,running:!1,startedAt:void 0})}async function C(){let e=await g();if(!e.startedAt)return e;let t=await b(e.endpoint);return t!==e.running?y({...e,running:t}):e}async function b(e){try{return(await fetch(e,{method:"GET",signal:AbortSignal.timeout(4e3)})).status>0}catch{return!1}}async function k(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(await b(e))return!0;await new Promise(e=>setTimeout(e,3e3))}return!1}let T="http://firecrawl-api:3002";async function _(){return"true"===process.env.DOCKER_ENV||"1"===process.env.DOCKER_BUILD||(0,t.existsSync)("/.dockerenv")?{available:await b(T),endpoint:T}:{available:!1,endpoint:""}}async function D(){let{available:e}=await _();return e?y({running:!0,endpoint:T,apiKey:`fc-docker-${(0,n.randomUUID)()}`,port:3002,project:"docker-sibling",startedAt:new Date().toISOString()}):y({...f,running:!1,lastError:"The web crawler service is not available in this Docker deployment."})}e.s(["checkDocker",0,R,"checkDockerSibling",0,_,"connectDockerSibling",0,D,"readLocalState",0,g,"refreshLocalStatus",0,C,"startLocal",0,S,"stopLocal",0,A])},304368,e=>{"use strict";var t=e.i(367165),r=e.i(700259);class a extends Error{status;constructor(e,t){super(e),this.status=t,this.name="FirecrawlError"}}async function n(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();if(e.running&&e.apiKey)return{base:`${e.endpoint}/v1`,key:e.apiKey,mode:"local"};throw new a("The selected web crawler is not running. Choose a crawler provider in Settings.",401)}let n=e.firecrawlApiKey;if(n)return{base:"https://api.firecrawl.dev/v1",key:n,mode:"cloud"};throw new a("The cloud web crawler needs an API key. Add it in Settings.",401)}async function i(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();return!!(e.running&&e.apiKey)}return!!e.firecrawlApiKey}async function o(e,t){let{base:r,key:i}=await n(),o=await fetch(`${r}${e}`,{...t,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json",...t?.headers??{}},cache:"no-store"}),s=await o.text(),c=s?l(s):{};if(!o.ok)throw new a(c?.error||`Firecrawl request failed (${o.status})`,o.status);return c}async function s(e){let{key:t}=await n(),r=await fetch(e,{headers:{Authorization:`Bearer ${t}`},cache:"no-store"}),i=await r.text(),o=i?l(i):{};if(!r.ok)throw new a(o?.error||`Firecrawl request failed (${r.status})`,r.status);return o}function l(e){try{return JSON.parse(e)}catch{return{}}}async function c(e,t=10){return((await o("/search",{method:"POST",body:JSON.stringify({query:e,limit:t})})).data??[]).map(e=>({url:e.url,title:e.title||e.url,description:e.description}))}let d={waitFor:1e4,onlyMainContent:!1,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","Accept-Language":"en-US,en;q=0.9","Sec-Ch-Ua":'"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"'}};async function u(e){let t=(await o("/scrape",{method:"POST",body:JSON.stringify({url:e,formats:["markdown"],...d})})).data??{};return{url:t.metadata?.sourceURL||e,title:t.metadata?.title||t.metadata?.ogTitle||e,markdown:t.markdown??""}}async function p(e,t){let r=await o("/crawl",{method:"POST",body:JSON.stringify({url:e,limit:t,allowExternalLinks:!1,scrapeOptions:{...d,formats:["markdown"],onlyMainContent:!0}})});if(!r.id)throw new a("Firecrawl did not return a crawl id");return r.id}async function h(e,t=!1){let r=t?await s(e):await o(`/crawl/${e}`,{method:"GET"});return{state:r.status??"scraping",total:r.total??0,completed:r.completed??0,next:r.next,pages:(r.data??[]).map(e=>({url:e.metadata?.sourceURL||e.metadata?.url||"",title:e.metadata?.title||e.metadata?.sourceURL||"Untitled",markdown:e.markdown??""}))}}async function w(e){try{await o(`/crawl/${e}`,{method:"DELETE"})}catch{}}e.s(["FirecrawlError",0,a,"cancelCrawl",0,w,"getCrawlStatus",0,h,"isFirecrawlConfigured",0,i,"scrapePage",0,u,"searchWeb",0,c,"startCrawl",0,p])},426237,e=>{"use strict";var t=e.i(766576),r=e.i(304368);async function a(){return t.NextResponse.json({configured:await (0,r.isFirecrawlConfigured)()})}async function n(e){try{let{query:a,limit:n}=await e.json();if(!a||!a.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let i=await (0,r.searchWeb)(a.trim(),Math.min(n??10,25));return t.NextResponse.json({results:i})}catch(n){let e=n instanceof r.FirecrawlError?n.status??500:500,a=n instanceof Error?n.message:"Search failed.";return t.NextResponse.json({error:a},{status:e})}}e.s(["GET",0,a,"POST",0,n,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},695936,e=>{"use strict";var t=e.i(239441),r=e.i(449055),a=e.i(391328),n=e.i(6352),i=e.i(746789),o=e.i(423437),s=e.i(178820),l=e.i(569191),c=e.i(576251),d=e.i(199962),u=e.i(547545),p=e.i(664046),h=e.i(235691),w=e.i(298907),m=e.i(110763),f=e.i(193695);e.i(673243);var g=e.i(236167),y=e.i(426237);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/search/route",pathname:"/api/search",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:R,workUnitAsyncStorage:v,serverHooks:S}=E;async function A(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/search/route";y=y.replace(/\/index$/,"")||"/";let R=await E.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,deploymentId:S,params:A,nextConfig:C,parsedUrl:b,isDraftMode:k,prerenderManifest:T,routerServerContext:_,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:x,serverActionsManifest:U}=R,N=(0,s.normalizeAppPath)(y),I=!!(T.dynamicRoutes[N]||T.routes[P]),$=async()=>((null==_?void 0:_.render404)?await _.render404(e,t,b,!1):t.end("This page could not be found"),null);if(I&&!k){let e=!!T.routes[P],t=T.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await $();throw new f.NoFallbackError}}let F=null;!I||E.isDev||k||(F="/index"===(F=P)?"/":F);let L=!0===E.isDev||!I,q=I&&!L;U&&x&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:x,serverActionsManifest:U});let M=e.method||"GET",j=(0,i.getTracer)(),H=j.getActiveScopeSpan(),K=!!(null==_?void 0:_.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,C,T,B);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let W={params:A,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:L,incrementalCache:G,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>E.onRequestError(e,t,a,n,_)},sharedContext:{buildId:v,deploymentId:S}},J=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=c.NextRequestAdapter.fromNodeNextRequest(J,(0,c.signalFromNodeResponse)(t));try{let n,o=async e=>E.handle(X,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=j.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${M} ${y}`)}),s=async n=>{var i,s;let l=async({previousCacheEntry:r})=>{try{if(!B&&D&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(n);e.fetchMetrics=W.renderOpts.fetchMetrics;let s=W.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=W.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(J,V,i,W.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,a=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,_),t}},c=await E.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:B});if(!I)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(s=c.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",D?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return B&&I||d.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,w.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(J,V,new Response(c.value.body,{headers:d,status:c.value.status||200})),null};K&&H?await s(H):(n=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},s),void 0,!K))}catch(t){if(t instanceof f.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,_),I)throw t;return await (0,p.sendResponse)(J,V,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:v})},"routeModule",0,E,"serverHooks",0,S,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,v])}];
60
-
61
- //# sourceMappingURL=%5Broot-of-the-server%5D__067hiof._.js.map
@@ -1,61 +0,0 @@
1
- module.exports=[367165,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return a.DEFAULT_CONFIG;try{let n=await t.promises.readFile(r.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),o=i.customEmbeddings,s=i.embeddingModelId;if(i.customEmbedding&&!o?.length){let e=i.customEmbedding;o=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...i,embeddingModelId:s??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:o,chunking:{...a.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return a.DEFAULT_CONFIG}}async function o(e){let a=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,o])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},705252,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(666680),n=e.i(192441);let i=Promise.resolve();function o(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function s(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?r.default.join(t,"documents.json"):null}async function l(){let e=await s(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8"),a=JSON.parse(r);if(!Array.isArray(a))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return a}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function c(e){let n=await s(!0);if(!n)return;let i=r.default.join(r.default.dirname(n),`.${r.default.basename(n)}.${process.pid}.${(0,a.randomUUID)()}.tmp`);try{await t.promises.writeFile(i,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(i,n)}catch(e){throw await t.promises.unlink(i).catch(()=>{}),e}}function u(e){let t=e.content.trim();return{id:e.id??(0,a.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function d(){let e=await l(),t=e.reduce((e,t)=>e+t.charCount,0);return{docCount:e.length,charCount:t,bySource:e.reduce((e,t)=>(e[t.source]=(e[t.source]??0)+1,e),{})}}e.s(["addCrawledDocuments",0,function(e,t){return o(async()=>{let r=await l(),a=new Set(r.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&a.has(i.url))&&i.content.trim()&&(r.push(u({...i,jobId:e})),i.url&&a.add(i.url),n++);return n>0&&await c(r),n})},"addDocument",0,function(e){return o(async()=>{let t=await l(),r=u(e);return t.push(r),await c(t),r})},"addDocuments",0,function(e){return o(async()=>{if(0===e.length)return[];let t=await l(),r=e.map(u);return t.push(...r),await c(t),r})},"clearDocuments",0,function(){return o(async()=>{await c([])})},"corpusStats",0,d,"deleteDocument",0,function(e){return o(async()=>{let t=await l();await c(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return o(async()=>{let t=await l(),r=new Set(e);await c(t.filter(e=>!r.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return o(async()=>{let t=new Date().toISOString();await c(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return o(async()=>{let r=await l(),a=r.findIndex(t=>t.id===e);if(a<0)return;let n=r[a],i=void 0!==t.content?t.content.trim():n.content,o={...n,title:void 0!==t.title?t.title.trim()||"Untitled":n.title,content:i,charCount:i.length,url:void 0!==t.url?t.url||void 0:n.url,metadata:void 0!==t.metadata?t.metadata:n.metadata,status:"unindexed"};return r[a]=o,await c(r),o})},"updateDocumentsStatus",0,function(e,t){return o(async()=>{let r=await l(),a=new Set(e),n=!1;for(let e of r)a.has(e.id)&&(e.status=t,n=!0);n&&await c(r)})}])},700259,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(761095),n=e.i(666680),i=e.i(874533),o=e.i(812057),s=e.i(367165);let l=(0,o.promisify)(i.exec);async function c(e,t){return l(e,{timeout:t,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let u=r.default.join(process.cwd(),".larkup"),d=r.default.join(u,"firecrawl-local.json"),p=r.default.join(u,"firecrawl","docker-compose.yml"),w="ragtoolkit-firecrawl";async function f(e){return new Promise((t,r)=>{let n=a.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>t(e))}),n.on("error",a=>{"EADDRINUSE"===a.code?f(0===e?0:e+1).then(t,r):r(a)})})}async function m(){try{let e=r.default.join(process.cwd(),"proxies.txt"),a=(await t.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(a.length>0){let e=a[Math.floor(Math.random()*a.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,s.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let h={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:w};async function g(){try{let e=await t.promises.readFile(d,"utf8");return{...h,...JSON.parse(e)}}catch{return h}}async function y(e){return await t.promises.mkdir(u,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function v(){try{await c("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await c("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await c("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function E(){let{docker:e,compose:t}=await v();return e?t?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function S(e,t,r){let a=r?[`PROXY_SERVER: "${r.server}"`,...r.username&&r.password?[`PROXY_USERNAME: "${r.username}"`,`PROXY_PASSWORD: "${r.password}"`]:[]]:[],n=['PORT: "3000"',...a].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...a,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
2
- services:
3
- db:
4
- image: ghcr.io/firecrawl/nuq-postgres:latest
5
- environment:
6
- POSTGRES_USER: user
7
- POSTGRES_PASSWORD: password
8
- POSTGRES_DB: postgres
9
- healthcheck:
10
- test: ["CMD-SHELL", "pg_isready -U user -d postgres"]
11
- interval: 5s
12
- timeout: 5s
13
- retries: 12
14
- restart: unless-stopped
15
-
16
- rabbitmq:
17
- image: rabbitmq:3-management-alpine
18
- environment:
19
- RABBITMQ_DEFAULT_USER: user
20
- RABBITMQ_DEFAULT_PASS: password
21
- healthcheck:
22
- test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
23
- interval: 5s
24
- timeout: 5s
25
- retries: 3
26
- start_period: 5s
27
- restart: unless-stopped
28
-
29
- redis:
30
- image: redis:alpine
31
- command: redis-server --save "" --appendonly no
32
- healthcheck:
33
- test: ["CMD", "redis-cli", "ping"]
34
- interval: 5s
35
- timeout: 3s
36
- retries: 12
37
- restart: unless-stopped
38
-
39
- playwright-service:
40
- image: ghcr.io/firecrawl/playwright-service:latest
41
- environment:
42
- ${n}
43
- restart: unless-stopped
44
-
45
- api:
46
- image: ghcr.io/firecrawl/firecrawl:latest
47
- depends_on:
48
- db:
49
- condition: service_healthy
50
- rabbitmq:
51
- condition: service_healthy
52
- redis:
53
- condition: service_healthy
54
- ports:
55
- - "${t}:3002"
56
- environment:
57
- ${i}
58
- restart: unless-stopped
59
- `}async function R(){let e=await E();if(!e.compose)return y({...await g(),running:!1,lastError:e.message});let{compose:a}=await v(),i=await g(),o=i.apiKey||`fc-local-${(0,n.randomUUID)()}`,s=i.port||3002,l=await m();await t.promises.mkdir(r.default.dirname(p),{recursive:!0}),await t.promises.writeFile(p,S(o,s,l),"utf8");try{await c(`${a} -p ${w} -f "${p}" up -d`,18e4)}catch(r){let e=r instanceof Error?r.message:"docker compose failed";if(!(e.includes("address already in use")||e.includes("Ports are not available")))return y({...i,apiKey:o,port:s,running:!1,lastError:e});try{s=await f(s+1),await t.promises.writeFile(p,S(o,s,l),"utf8"),await c(`${a} -p ${w} -f "${p}" up -d`,18e4)}catch(e){return y({...i,apiKey:o,port:s,running:!1,lastError:e instanceof Error?e.message:"docker compose retry failed"})}}let u=(0,t.existsSync)("/.dockerenv"),d=`http://${u?"host.docker.internal":"localhost"}:${s}`,h=await A(d,9e4);return y({running:h,endpoint:d,apiKey:o,port:s,project:w,startedAt:new Date().toISOString(),lastError:h?void 0:"Containers started but the API did not become healthy in time. It may still be warming up — try refreshing in a moment."})}async function b(){let{compose:e}=await v(),t=await g();if(e)try{await c(`${e} -p ${w} -f "${p}" down`,6e4)}catch{}return y({...t,running:!1,startedAt:void 0})}async function C(){let e=await g();if(!e.startedAt)return e;let t=await D(e.endpoint);return t!==e.running?y({...e,running:t}):e}async function D(e){try{return(await fetch(e,{method:"GET",signal:AbortSignal.timeout(4e3)})).status>0}catch{return!1}}async function A(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(await D(e))return!0;await new Promise(e=>setTimeout(e,3e3))}return!1}let k="http://firecrawl-api:3002";async function T(){return"true"===process.env.DOCKER_ENV||"1"===process.env.DOCKER_BUILD||(0,t.existsSync)("/.dockerenv")?{available:await D(k),endpoint:k}:{available:!1,endpoint:""}}async function O(){let{available:e}=await T();return e?y({running:!0,endpoint:k,apiKey:`fc-docker-${(0,n.randomUUID)()}`,port:3002,project:"docker-sibling",startedAt:new Date().toISOString()}):y({...h,running:!1,lastError:"The web crawler service is not available in this Docker deployment."})}e.s(["checkDocker",0,E,"checkDockerSibling",0,T,"connectDockerSibling",0,O,"readLocalState",0,g,"refreshLocalStatus",0,C,"startLocal",0,R,"stopLocal",0,b])},304368,e=>{"use strict";var t=e.i(367165),r=e.i(700259);class a extends Error{status;constructor(e,t){super(e),this.status=t,this.name="FirecrawlError"}}async function n(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();if(e.running&&e.apiKey)return{base:`${e.endpoint}/v1`,key:e.apiKey,mode:"local"};throw new a("The selected web crawler is not running. Choose a crawler provider in Settings.",401)}let n=e.firecrawlApiKey;if(n)return{base:"https://api.firecrawl.dev/v1",key:n,mode:"cloud"};throw new a("The cloud web crawler needs an API key. Add it in Settings.",401)}async function i(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();return!!(e.running&&e.apiKey)}return!!e.firecrawlApiKey}async function o(e,t){let{base:r,key:i}=await n(),o=await fetch(`${r}${e}`,{...t,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json",...t?.headers??{}},cache:"no-store"}),s=await o.text(),c=s?l(s):{};if(!o.ok)throw new a(c?.error||`Firecrawl request failed (${o.status})`,o.status);return c}async function s(e){let{key:t}=await n(),r=await fetch(e,{headers:{Authorization:`Bearer ${t}`},cache:"no-store"}),i=await r.text(),o=i?l(i):{};if(!r.ok)throw new a(o?.error||`Firecrawl request failed (${r.status})`,r.status);return o}function l(e){try{return JSON.parse(e)}catch{return{}}}async function c(e,t=10){return((await o("/search",{method:"POST",body:JSON.stringify({query:e,limit:t})})).data??[]).map(e=>({url:e.url,title:e.title||e.url,description:e.description}))}let u={waitFor:1e4,onlyMainContent:!1,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","Accept-Language":"en-US,en;q=0.9","Sec-Ch-Ua":'"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"'}};async function d(e){let t=(await o("/scrape",{method:"POST",body:JSON.stringify({url:e,formats:["markdown"],...u})})).data??{};return{url:t.metadata?.sourceURL||e,title:t.metadata?.title||t.metadata?.ogTitle||e,markdown:t.markdown??""}}async function p(e,t){let r=await o("/crawl",{method:"POST",body:JSON.stringify({url:e,limit:t,allowExternalLinks:!1,scrapeOptions:{...u,formats:["markdown"],onlyMainContent:!0}})});if(!r.id)throw new a("Firecrawl did not return a crawl id");return r.id}async function w(e,t=!1){let r=t?await s(e):await o(`/crawl/${e}`,{method:"GET"});return{state:r.status??"scraping",total:r.total??0,completed:r.completed??0,next:r.next,pages:(r.data??[]).map(e=>({url:e.metadata?.sourceURL||e.metadata?.url||"",title:e.metadata?.title||e.metadata?.sourceURL||"Untitled",markdown:e.markdown??""}))}}async function f(e){try{await o(`/crawl/${e}`,{method:"DELETE"})}catch{}}e.s(["FirecrawlError",0,a,"cancelCrawl",0,f,"getCrawlStatus",0,w,"isFirecrawlConfigured",0,i,"scrapePage",0,d,"searchWeb",0,c,"startCrawl",0,p])},798898,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(192441);let n=Promise.resolve();function i(e){let t=n.then(e,e);return n=t.catch(()=>{}),t}async function o(e){let t=e?await (0,a.requireDataDir)():await (0,a.getDataDir)();return t?r.default.join(t,"jobs.json"):null}async function s(){let e=await o(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8");return JSON.parse(r)}catch{return[]}}async function l(e){let r=await o(!0);r&&await t.promises.writeFile(r,JSON.stringify(e,null,2),"utf8")}async function c(e){return(await s()).find(t=>t.id===e)}e.s(["deleteJob",0,function(e){return i(async()=>{let t=await s();await l(t.filter(t=>t.id!==e))})},"getJob",0,c,"readJobs",0,s,"saveJob",0,function(e){return i(async()=>{let t=await s(),r=t.findIndex(t=>t.id===e.id),a={...e,updatedAt:new Date().toISOString()};return r>=0?t[r]=a:t.unshift(a),await l(t),a})},"updateJob",0,function(e,t){return i(async()=>{let r=await s(),a=r.findIndex(t=>t.id===e);if(a<0)return;let n={...t(r[a]),updatedAt:new Date().toISOString()};return r[a]=n,await l(r),n})}])},962044,e=>{"use strict";var t=e.i(239441),r=e.i(449055),a=e.i(391328),n=e.i(6352),i=e.i(746789),o=e.i(423437),s=e.i(178820),l=e.i(569191),c=e.i(576251),u=e.i(199962),d=e.i(547545),p=e.i(664046),w=e.i(235691),f=e.i(298907),m=e.i(110763),h=e.i(193695);e.i(673243);var g=e.i(236167),y=e.i(766576),v=e.i(798898),E=e.i(705252),S=e.i(304368);let R=new Set;function b(e){if(!e)return!1;let t=e.toLowerCase();return t.includes("verification successful. waiting for")||t.includes("please verify you are a human")||t.includes("checking if the site connection is secure")||t.includes("just a moment...")||t.includes("enable javascript and cookies to continue")}async function C(e,t){try{let r=await (0,S.scrapePage)(t.url);if(b(r.markdown))throw Error("Scraping blocked by anti-bot protection (e.g. Cloudflare)");return{added:await (0,E.addCrawledDocuments)(e,[{title:r.title,url:r.url,content:r.markdown,source:"scrape"}]),target:{...t,status:"completed",pagesCrawled:+!!r.markdown}}}catch(e){return{added:0,target:{...t,status:"failed",error:e instanceof Error?e.message:"scrape failed"}}}}async function D(e,t,r){try{if(!t.firecrawlId){let e=await (0,S.startCrawl)(t.url,r);return{added:0,target:{...t,firecrawlId:e,status:"running"}}}let a=t.firecrawlId,n=!1,i=0,o=0,s=t.pagesCrawled,l="running",c=[];for(;i<5;){let e=await (0,S.getCrawlStatus)(a,n);for(let t of(s=e.completed||s,e.pages))b(t.markdown)||c.push({title:t.title,url:t.url,content:t.markdown,source:"scrape"});if(i++,"completed"===e.state?l="completed":"failed"===e.state?l="failed":"cancelled"===e.state&&(l="cancelled"),e.next)a=e.next,n=!0;else break}return c.length&&(o=await (0,E.addCrawledDocuments)(e,c)),{added:o,target:{...t,status:l,pagesCrawled:s}}}catch(e){return{added:0,target:{...t,status:"failed",error:e instanceof Error?e.message:"crawl failed"}}}}async function A(e){let t=await (0,v.getJob)(e);if(t){if(["completed","failed","cancelled"].includes(t.status)||R.has(e))return t;R.add(e);try{let r=await Promise.all(t.targets.map(r=>"completed"===r.status||"failed"===r.status?Promise.resolve({target:r,added:0}):"page"===r.scope?C(e,r):D(e,r,t.pageLimit))),a=r.map(e=>e.target),n=a.reduce((e,t)=>e+t.pagesCrawled,0);return await (0,v.updateJob)(e,e=>({...e,targets:a,pagesCrawled:n,docCount:e.docCount+r.reduce((e,t)=>e+t.added,0),status:a.every(e=>"completed"===e.status)?"completed":a.every(e=>"failed"===e.status)?"failed":a.every(e=>"completed"===e.status||"failed"===e.status)&&a.some(e=>"completed"===e.status)?"completed":"running"}))}finally{R.delete(e)}}}async function k(e){let t=await (0,v.getJob)(e);if(t)return await Promise.all(t.targets.filter(e=>e.firecrawlId&&"running"===e.status).map(e=>(0,S.cancelCrawl)(e.firecrawlId))),(0,v.updateJob)(e,e=>({...e,status:"cancelled",targets:e.targets.map(e=>"running"===e.status||"queued"===e.status?{...e,status:"cancelled"}:e)}))}async function T(e,{params:t}){let{id:r}=await t,a=await A(r);return a?y.NextResponse.json({job:a}):y.NextResponse.json({error:"Job not found."},{status:404})}async function O(e,{params:t}){let{id:r}=await t;if(new URL(e.url).searchParams.get("remove"))return await (0,v.deleteJob)(r),y.NextResponse.json({ok:!0});if(!await (0,v.getJob)(r))return y.NextResponse.json({error:"Job not found."},{status:404});let a=await k(r);return y.NextResponse.json({job:a})}e.s(["DELETE",0,O,"GET",0,T,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],934385);var I=e.i(934385);let x=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/jobs/[id]/route",pathname:"/api/jobs/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/jobs/[id]/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:P,serverHooks:U}=x;async function N(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),x.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/jobs/[id]/route";y=y.replace(/\/index$/,"")||"/";let v=await x.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,deploymentId:S,params:R,nextConfig:b,parsedUrl:C,isDraftMode:D,prerenderManifest:A,routerServerContext:k,isOnDemandRevalidate:T,revalidateOnlyGenerated:O,resolvedPathname:I,clientReferenceManifest:_,serverActionsManifest:P}=v,U=(0,s.normalizeAppPath)(y),N=!!(A.dynamicRoutes[U]||A.routes[I]),$=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,C,!1):t.end("This page could not be found"),null);if(N&&!D){let e=!!A.routes[I],t=A.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await $();throw new h.NoFallbackError}}let L=null;!N||x.isDev||D||(L="/index"===(L=I)?"/":L);let j=!0===x.isDev||!N,F=N&&!j;P&&_&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:_,serverActionsManifest:P});let q=e.method||"GET",M=(0,i.getTracer)(),J=M.getActiveScopeSpan(),H=!!(null==k?void 0:k.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,b,A,K);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:R,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:j,incrementalCache:B,cacheLifeProfiles:b.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>x.onRequestError(e,t,a,n,k)},sharedContext:{buildId:E,deploymentId:S}},W=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let n,o=async e=>x.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${q} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${q} ${y}`)}),s=async n=>{var i,s;let l=async({previousCacheEntry:r})=>{try{if(!K&&T&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!N)return await (0,p.sendResponse)(W,V,i,G.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:T})},!1,k),t}},c=await x.handleResponse({req:e,nextConfig:b,cacheKey:L,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!N)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(s=c.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),D&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return K&&N||u.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(W,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};H&&J?await s(J):(n=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${q} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},s),void 0,!H))}catch(t){if(t instanceof h.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:T})},!1,k),N)throw t;return await (0,p.sendResponse)(W,V,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:P})},"routeModule",0,x,"serverHooks",0,U,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,P],962044)}];
60
-
61
- //# sourceMappingURL=%5Broot-of-the-server%5D__0a_0ywc._.js.map
@@ -1,61 +0,0 @@
1
- module.exports=[367165,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return a.DEFAULT_CONFIG;try{let n=await t.promises.readFile(r.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),o=i.customEmbeddings,s=i.embeddingModelId;if(i.customEmbedding&&!o?.length){let e=i.customEmbedding;o=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...i,embeddingModelId:s??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:o,chunking:{...a.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return a.DEFAULT_CONFIG}}async function o(e){let a=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,o])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},705252,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(666680),n=e.i(192441);let i=Promise.resolve();function o(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function s(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?r.default.join(t,"documents.json"):null}async function l(){let e=await s(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8"),a=JSON.parse(r);if(!Array.isArray(a))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return a}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function c(e){let n=await s(!0);if(!n)return;let i=r.default.join(r.default.dirname(n),`.${r.default.basename(n)}.${process.pid}.${(0,a.randomUUID)()}.tmp`);try{await t.promises.writeFile(i,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(i,n)}catch(e){throw await t.promises.unlink(i).catch(()=>{}),e}}function u(e){let t=e.content.trim();return{id:e.id??(0,a.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function d(){let e=await l(),t=e.reduce((e,t)=>e+t.charCount,0);return{docCount:e.length,charCount:t,bySource:e.reduce((e,t)=>(e[t.source]=(e[t.source]??0)+1,e),{})}}e.s(["addCrawledDocuments",0,function(e,t){return o(async()=>{let r=await l(),a=new Set(r.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&a.has(i.url))&&i.content.trim()&&(r.push(u({...i,jobId:e})),i.url&&a.add(i.url),n++);return n>0&&await c(r),n})},"addDocument",0,function(e){return o(async()=>{let t=await l(),r=u(e);return t.push(r),await c(t),r})},"addDocuments",0,function(e){return o(async()=>{if(0===e.length)return[];let t=await l(),r=e.map(u);return t.push(...r),await c(t),r})},"clearDocuments",0,function(){return o(async()=>{await c([])})},"corpusStats",0,d,"deleteDocument",0,function(e){return o(async()=>{let t=await l();await c(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return o(async()=>{let t=await l(),r=new Set(e);await c(t.filter(e=>!r.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return o(async()=>{let t=new Date().toISOString();await c(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return o(async()=>{let r=await l(),a=r.findIndex(t=>t.id===e);if(a<0)return;let n=r[a],i=void 0!==t.content?t.content.trim():n.content,o={...n,title:void 0!==t.title?t.title.trim()||"Untitled":n.title,content:i,charCount:i.length,url:void 0!==t.url?t.url||void 0:n.url,metadata:void 0!==t.metadata?t.metadata:n.metadata,status:"unindexed"};return r[a]=o,await c(r),o})},"updateDocumentsStatus",0,function(e,t){return o(async()=>{let r=await l(),a=new Set(e),n=!1;for(let e of r)a.has(e.id)&&(e.status=t,n=!0);n&&await c(r)})}])},700259,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(761095),n=e.i(666680),i=e.i(874533),o=e.i(812057),s=e.i(367165);let l=(0,o.promisify)(i.exec);async function c(e,t){return l(e,{timeout:t,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let u=r.default.join(process.cwd(),".larkup"),d=r.default.join(u,"firecrawl-local.json"),p=r.default.join(u,"firecrawl","docker-compose.yml"),w="ragtoolkit-firecrawl";async function m(e){return new Promise((t,r)=>{let n=a.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>t(e))}),n.on("error",a=>{"EADDRINUSE"===a.code?m(0===e?0:e+1).then(t,r):r(a)})})}async function f(){try{let e=r.default.join(process.cwd(),"proxies.txt"),a=(await t.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(a.length>0){let e=a[Math.floor(Math.random()*a.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,s.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let h={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:w};async function g(){try{let e=await t.promises.readFile(d,"utf8");return{...h,...JSON.parse(e)}}catch{return h}}async function y(e){return await t.promises.mkdir(u,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function v(){try{await c("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await c("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await c("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function S(){let{docker:e,compose:t}=await v();return e?t?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function R(e,t,r){let a=r?[`PROXY_SERVER: "${r.server}"`,...r.username&&r.password?[`PROXY_USERNAME: "${r.username}"`,`PROXY_PASSWORD: "${r.password}"`]:[]]:[],n=['PORT: "3000"',...a].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...a,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
2
- services:
3
- db:
4
- image: ghcr.io/firecrawl/nuq-postgres:latest
5
- environment:
6
- POSTGRES_USER: user
7
- POSTGRES_PASSWORD: password
8
- POSTGRES_DB: postgres
9
- healthcheck:
10
- test: ["CMD-SHELL", "pg_isready -U user -d postgres"]
11
- interval: 5s
12
- timeout: 5s
13
- retries: 12
14
- restart: unless-stopped
15
-
16
- rabbitmq:
17
- image: rabbitmq:3-management-alpine
18
- environment:
19
- RABBITMQ_DEFAULT_USER: user
20
- RABBITMQ_DEFAULT_PASS: password
21
- healthcheck:
22
- test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
23
- interval: 5s
24
- timeout: 5s
25
- retries: 3
26
- start_period: 5s
27
- restart: unless-stopped
28
-
29
- redis:
30
- image: redis:alpine
31
- command: redis-server --save "" --appendonly no
32
- healthcheck:
33
- test: ["CMD", "redis-cli", "ping"]
34
- interval: 5s
35
- timeout: 3s
36
- retries: 12
37
- restart: unless-stopped
38
-
39
- playwright-service:
40
- image: ghcr.io/firecrawl/playwright-service:latest
41
- environment:
42
- ${n}
43
- restart: unless-stopped
44
-
45
- api:
46
- image: ghcr.io/firecrawl/firecrawl:latest
47
- depends_on:
48
- db:
49
- condition: service_healthy
50
- rabbitmq:
51
- condition: service_healthy
52
- redis:
53
- condition: service_healthy
54
- ports:
55
- - "${t}:3002"
56
- environment:
57
- ${i}
58
- restart: unless-stopped
59
- `}async function E(){let e=await S();if(!e.compose)return y({...await g(),running:!1,lastError:e.message});let{compose:a}=await v(),i=await g(),o=i.apiKey||`fc-local-${(0,n.randomUUID)()}`,s=i.port||3002,l=await f();await t.promises.mkdir(r.default.dirname(p),{recursive:!0}),await t.promises.writeFile(p,R(o,s,l),"utf8");try{await c(`${a} -p ${w} -f "${p}" up -d`,18e4)}catch(r){let e=r instanceof Error?r.message:"docker compose failed";if(!(e.includes("address already in use")||e.includes("Ports are not available")))return y({...i,apiKey:o,port:s,running:!1,lastError:e});try{s=await m(s+1),await t.promises.writeFile(p,R(o,s,l),"utf8"),await c(`${a} -p ${w} -f "${p}" up -d`,18e4)}catch(e){return y({...i,apiKey:o,port:s,running:!1,lastError:e instanceof Error?e.message:"docker compose retry failed"})}}let u=(0,t.existsSync)("/.dockerenv"),d=`http://${u?"host.docker.internal":"localhost"}:${s}`,h=await D(d,9e4);return y({running:h,endpoint:d,apiKey:o,port:s,project:w,startedAt:new Date().toISOString(),lastError:h?void 0:"Containers started but the API did not become healthy in time. It may still be warming up — try refreshing in a moment."})}async function b(){let{compose:e}=await v(),t=await g();if(e)try{await c(`${e} -p ${w} -f "${p}" down`,6e4)}catch{}return y({...t,running:!1,startedAt:void 0})}async function C(){let e=await g();if(!e.startedAt)return e;let t=await A(e.endpoint);return t!==e.running?y({...e,running:t}):e}async function A(e){try{return(await fetch(e,{method:"GET",signal:AbortSignal.timeout(4e3)})).status>0}catch{return!1}}async function D(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(await A(e))return!0;await new Promise(e=>setTimeout(e,3e3))}return!1}let k="http://firecrawl-api:3002";async function O(){return"true"===process.env.DOCKER_ENV||"1"===process.env.DOCKER_BUILD||(0,t.existsSync)("/.dockerenv")?{available:await A(k),endpoint:k}:{available:!1,endpoint:""}}async function T(){let{available:e}=await O();return e?y({running:!0,endpoint:k,apiKey:`fc-docker-${(0,n.randomUUID)()}`,port:3002,project:"docker-sibling",startedAt:new Date().toISOString()}):y({...h,running:!1,lastError:"The web crawler service is not available in this Docker deployment."})}e.s(["checkDocker",0,S,"checkDockerSibling",0,O,"connectDockerSibling",0,T,"readLocalState",0,g,"refreshLocalStatus",0,C,"startLocal",0,E,"stopLocal",0,b])},304368,e=>{"use strict";var t=e.i(367165),r=e.i(700259);class a extends Error{status;constructor(e,t){super(e),this.status=t,this.name="FirecrawlError"}}async function n(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();if(e.running&&e.apiKey)return{base:`${e.endpoint}/v1`,key:e.apiKey,mode:"local"};throw new a("The selected web crawler is not running. Choose a crawler provider in Settings.",401)}let n=e.firecrawlApiKey;if(n)return{base:"https://api.firecrawl.dev/v1",key:n,mode:"cloud"};throw new a("The cloud web crawler needs an API key. Add it in Settings.",401)}async function i(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();return!!(e.running&&e.apiKey)}return!!e.firecrawlApiKey}async function o(e,t){let{base:r,key:i}=await n(),o=await fetch(`${r}${e}`,{...t,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json",...t?.headers??{}},cache:"no-store"}),s=await o.text(),c=s?l(s):{};if(!o.ok)throw new a(c?.error||`Firecrawl request failed (${o.status})`,o.status);return c}async function s(e){let{key:t}=await n(),r=await fetch(e,{headers:{Authorization:`Bearer ${t}`},cache:"no-store"}),i=await r.text(),o=i?l(i):{};if(!r.ok)throw new a(o?.error||`Firecrawl request failed (${r.status})`,r.status);return o}function l(e){try{return JSON.parse(e)}catch{return{}}}async function c(e,t=10){return((await o("/search",{method:"POST",body:JSON.stringify({query:e,limit:t})})).data??[]).map(e=>({url:e.url,title:e.title||e.url,description:e.description}))}let u={waitFor:1e4,onlyMainContent:!1,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","Accept-Language":"en-US,en;q=0.9","Sec-Ch-Ua":'"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"'}};async function d(e){let t=(await o("/scrape",{method:"POST",body:JSON.stringify({url:e,formats:["markdown"],...u})})).data??{};return{url:t.metadata?.sourceURL||e,title:t.metadata?.title||t.metadata?.ogTitle||e,markdown:t.markdown??""}}async function p(e,t){let r=await o("/crawl",{method:"POST",body:JSON.stringify({url:e,limit:t,allowExternalLinks:!1,scrapeOptions:{...u,formats:["markdown"],onlyMainContent:!0}})});if(!r.id)throw new a("Firecrawl did not return a crawl id");return r.id}async function w(e,t=!1){let r=t?await s(e):await o(`/crawl/${e}`,{method:"GET"});return{state:r.status??"scraping",total:r.total??0,completed:r.completed??0,next:r.next,pages:(r.data??[]).map(e=>({url:e.metadata?.sourceURL||e.metadata?.url||"",title:e.metadata?.title||e.metadata?.sourceURL||"Untitled",markdown:e.markdown??""}))}}async function m(e){try{await o(`/crawl/${e}`,{method:"DELETE"})}catch{}}e.s(["FirecrawlError",0,a,"cancelCrawl",0,m,"getCrawlStatus",0,w,"isFirecrawlConfigured",0,i,"scrapePage",0,d,"searchWeb",0,c,"startCrawl",0,p])},798898,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(192441);let n=Promise.resolve();function i(e){let t=n.then(e,e);return n=t.catch(()=>{}),t}async function o(e){let t=e?await (0,a.requireDataDir)():await (0,a.getDataDir)();return t?r.default.join(t,"jobs.json"):null}async function s(){let e=await o(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8");return JSON.parse(r)}catch{return[]}}async function l(e){let r=await o(!0);r&&await t.promises.writeFile(r,JSON.stringify(e,null,2),"utf8")}async function c(e){return(await s()).find(t=>t.id===e)}e.s(["deleteJob",0,function(e){return i(async()=>{let t=await s();await l(t.filter(t=>t.id!==e))})},"getJob",0,c,"readJobs",0,s,"saveJob",0,function(e){return i(async()=>{let t=await s(),r=t.findIndex(t=>t.id===e.id),a={...e,updatedAt:new Date().toISOString()};return r>=0?t[r]=a:t.unshift(a),await l(t),a})},"updateJob",0,function(e,t){return i(async()=>{let r=await s(),a=r.findIndex(t=>t.id===e);if(a<0)return;let n={...t(r[a]),updatedAt:new Date().toISOString()};return r[a]=n,await l(r),n})}])},491382,e=>{"use strict";var t=e.i(239441),r=e.i(449055),a=e.i(391328),n=e.i(6352),i=e.i(746789),o=e.i(423437),s=e.i(178820),l=e.i(569191),c=e.i(576251),u=e.i(199962),d=e.i(547545),p=e.i(664046),w=e.i(235691),m=e.i(298907),f=e.i(110763),h=e.i(193695);e.i(673243);var g=e.i(236167),y=e.i(766576),v=e.i(666680),S=e.i(798898),R=e.i(304368),E=e.i(705252);async function b(){let e=await (0,S.readJobs)();return y.NextResponse.json({jobs:e,configured:await (0,R.isFirecrawlConfigured)()})}async function C(e){let t;if(!await (0,R.isFirecrawlConfigured)())return y.NextResponse.json({error:"No web crawler is available. Choose and configure a crawler provider in Settings."},{status:401});try{t=await e.json()}catch{return y.NextResponse.json({error:"Invalid request body."},{status:400})}let r=new Set((await (0,E.readDocuments)()).filter(e=>e.url).map(e=>e.url)),a=new Map,n=new Map;(t.targets??[]).forEach(e=>{if(e.url&&/^https?:\/\//i.test(e.url))try{let t=new URL(e.url).origin;r.has(t)||r.has(t+"/")||a.set(t,{url:t,scope:"domain"===e.scope?"domain":"page",status:"queued",pagesCrawled:0}),e.url===t||e.url===t+"/"||r.has(e.url)||n.set(e.url,{url:e.url,scope:"domain"===e.scope?"domain":"page",status:"queued",pagesCrawled:0})}catch{r.has(e.url)||n.set(e.url,{url:e.url,scope:"domain"===e.scope?"domain":"page",status:"queued",pagesCrawled:0})}});let i=[...Array.from(a.values()),...Array.from(n.values())];if(0===i.length)return y.NextResponse.json({error:"Select at least one valid new URL to scrape."},{status:400});let o={id:(0,v.randomUUID)(),keywords:t.keywords?.trim()||i[0].url,targets:i,status:"queued",pageLimit:Math.min(Math.max(t.pageLimit??2e3,1),2e3),pagesCrawled:0,docCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return await (0,S.saveJob)(o),y.NextResponse.json({job:o},{status:201})}e.s(["GET",0,b,"POST",0,C,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],889376);var A=e.i(889376);let D=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/jobs/route",pathname:"/api/jobs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/jobs/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:O,serverHooks:T}=D;async function I(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),D.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/jobs/route";y=y.replace(/\/index$/,"")||"/";let v=await D.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:S,deploymentId:R,params:E,nextConfig:b,parsedUrl:C,isDraftMode:A,prerenderManifest:k,routerServerContext:O,isOnDemandRevalidate:T,revalidateOnlyGenerated:I,resolvedPathname:U,clientReferenceManifest:_,serverActionsManifest:x}=v,N=(0,s.normalizeAppPath)(y),P=!!(k.dynamicRoutes[N]||k.routes[U]),$=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,C,!1):t.end("This page could not be found"),null);if(P&&!A){let e=!!k.routes[U],t=k.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await $();throw new h.NoFallbackError}}let F=null;!P||D.isDev||A||(F="/index"===(F=U)?"/":F);let L=!0===D.isDev||!P,j=P&&!L;x&&_&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:_,serverActionsManifest:x});let q=e.method||"GET",M=(0,i.getTracer)(),H=M.getActiveScopeSpan(),K=!!(null==O?void 0:O.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),J=(0,n.getRequestMeta)(e,"incrementalCache")||await D.getIncrementalCache(e,b,k,B);null==J||J.resetRequestCache(),globalThis.__incrementalCache=J;let G={params:E,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:L,incrementalCache:J,cacheLifeProfiles:b.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>D.onRequestError(e,t,a,n,O)},sharedContext:{buildId:S,deploymentId:R}},W=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let n,o=async e=>D.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${q} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${q} ${y}`)}),s=async n=>{var i,s;let l=async({previousCacheEntry:r})=>{try{if(!B&&T&&I&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(W,V,i,G.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await D.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:T})},!1,O),t}},c=await D.handleResponse({req:e,nextConfig:b,cacheKey:F,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:I,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:B});if(!P)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(s=c.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,w.fromNodeOutgoingHttpHeaders)(c.value.headers);return B&&P||u.delete(f.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(W,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};K&&H?await s(H):(n=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${q} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},s),void 0,!K))}catch(t){if(t instanceof h.NoFallbackError||await D.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:T})},!1,O),P)throw t;return await (0,p.sendResponse)(W,V,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:O})},"routeModule",0,D,"serverHooks",0,T,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,O],491382)}];
60
-
61
- //# sourceMappingURL=%5Broot-of-the-server%5D__0u17zp8._.js.map
@@ -1,61 +0,0 @@
1
- module.exports=[324725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},700259,e=>{"use strict";var r=e.i(902157),t=e.i(750227),a=e.i(761095),n=e.i(666680),i=e.i(874533),s=e.i(812057),o=e.i(367165);let c=(0,s.promisify)(i.exec);async function l(e,r){return c(e,{timeout:r,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let d=t.default.join(process.cwd(),".larkup"),u=t.default.join(d,"firecrawl-local.json"),p=t.default.join(d,"firecrawl","docker-compose.yml"),w="ragtoolkit-firecrawl";async function m(e){return new Promise((r,t)=>{let n=a.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>r(e))}),n.on("error",a=>{"EADDRINUSE"===a.code?m(0===e?0:e+1).then(r,t):t(a)})})}async function f(){try{let e=t.default.join(process.cwd(),"proxies.txt"),a=(await r.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(a.length>0){let e=a[Math.floor(Math.random()*a.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,o.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let h={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:w};async function y(){try{let e=await r.promises.readFile(u,"utf8");return{...h,...JSON.parse(e)}}catch{return h}}async function g(e){return await r.promises.mkdir(d,{recursive:!0}),await r.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function S(){try{await l("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await l("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await l("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function k(){let{docker:e,compose:r}=await S();return e?r?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function v(e,r,t){let a=t?[`PROXY_SERVER: "${t.server}"`,...t.username&&t.password?[`PROXY_USERNAME: "${t.username}"`,`PROXY_PASSWORD: "${t.password}"`]:[]]:[],n=['PORT: "3000"',...a].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...a,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
2
- services:
3
- db:
4
- image: ghcr.io/firecrawl/nuq-postgres:latest
5
- environment:
6
- POSTGRES_USER: user
7
- POSTGRES_PASSWORD: password
8
- POSTGRES_DB: postgres
9
- healthcheck:
10
- test: ["CMD-SHELL", "pg_isready -U user -d postgres"]
11
- interval: 5s
12
- timeout: 5s
13
- retries: 12
14
- restart: unless-stopped
15
-
16
- rabbitmq:
17
- image: rabbitmq:3-management-alpine
18
- environment:
19
- RABBITMQ_DEFAULT_USER: user
20
- RABBITMQ_DEFAULT_PASS: password
21
- healthcheck:
22
- test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
23
- interval: 5s
24
- timeout: 5s
25
- retries: 3
26
- start_period: 5s
27
- restart: unless-stopped
28
-
29
- redis:
30
- image: redis:alpine
31
- command: redis-server --save "" --appendonly no
32
- healthcheck:
33
- test: ["CMD", "redis-cli", "ping"]
34
- interval: 5s
35
- timeout: 3s
36
- retries: 12
37
- restart: unless-stopped
38
-
39
- playwright-service:
40
- image: ghcr.io/firecrawl/playwright-service:latest
41
- environment:
42
- ${n}
43
- restart: unless-stopped
44
-
45
- api:
46
- image: ghcr.io/firecrawl/firecrawl:latest
47
- depends_on:
48
- db:
49
- condition: service_healthy
50
- rabbitmq:
51
- condition: service_healthy
52
- redis:
53
- condition: service_healthy
54
- ports:
55
- - "${r}:3002"
56
- environment:
57
- ${i}
58
- restart: unless-stopped
59
- `}async function E(){let e=await k();if(!e.compose)return g({...await y(),running:!1,lastError:e.message});let{compose:a}=await S(),i=await y(),s=i.apiKey||`fc-local-${(0,n.randomUUID)()}`,o=i.port||3002,c=await f();await r.promises.mkdir(t.default.dirname(p),{recursive:!0}),await r.promises.writeFile(p,v(s,o,c),"utf8");try{await l(`${a} -p ${w} -f "${p}" up -d`,18e4)}catch(t){let e=t instanceof Error?t.message:"docker compose failed";if(!(e.includes("address already in use")||e.includes("Ports are not available")))return g({...i,apiKey:s,port:o,running:!1,lastError:e});try{o=await m(o+1),await r.promises.writeFile(p,v(s,o,c),"utf8"),await l(`${a} -p ${w} -f "${p}" up -d`,18e4)}catch(e){return g({...i,apiKey:s,port:o,running:!1,lastError:e instanceof Error?e.message:"docker compose retry failed"})}}let d=(0,r.existsSync)("/.dockerenv"),u=`http://${d?"host.docker.internal":"localhost"}:${o}`,h=await T(u,9e4);return g({running:h,endpoint:u,apiKey:s,port:o,project:w,startedAt:new Date().toISOString(),lastError:h?void 0:"Containers started but the API did not become healthy in time. It may still be warming up — try refreshing in a moment."})}async function b(){let{compose:e}=await S(),r=await y();if(e)try{await l(`${e} -p ${w} -f "${p}" down`,6e4)}catch{}return g({...r,running:!1,startedAt:void 0})}async function R(){let e=await y();if(!e.startedAt)return e;let r=await A(e.endpoint);return r!==e.running?g({...e,running:r}):e}async function A(e){try{return(await fetch(e,{method:"GET",signal:AbortSignal.timeout(4e3)})).status>0}catch{return!1}}async function T(e,r){let t=Date.now()+r;for(;Date.now()<t;){if(await A(e))return!0;await new Promise(e=>setTimeout(e,3e3))}return!1}let D="http://firecrawl-api:3002";async function _(){return"true"===process.env.DOCKER_ENV||"1"===process.env.DOCKER_BUILD||(0,r.existsSync)("/.dockerenv")?{available:await A(D),endpoint:D}:{available:!1,endpoint:""}}async function P(){let{available:e}=await _();return e?g({running:!0,endpoint:D,apiKey:`fc-docker-${(0,n.randomUUID)()}`,port:3002,project:"docker-sibling",startedAt:new Date().toISOString()}):g({...h,running:!1,lastError:"The web crawler service is not available in this Docker deployment."})}e.s(["checkDocker",0,k,"checkDockerSibling",0,_,"connectDockerSibling",0,P,"readLocalState",0,y,"refreshLocalStatus",0,R,"startLocal",0,E,"stopLocal",0,b])},304368,e=>{"use strict";var r=e.i(367165),t=e.i(700259);class a extends Error{status;constructor(e,r){super(e),this.status=r,this.name="FirecrawlError"}}async function n(){let e=await (0,r.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,t.readLocalState)();if(e.running&&e.apiKey)return{base:`${e.endpoint}/v1`,key:e.apiKey,mode:"local"};throw new a("The selected web crawler is not running. Choose a crawler provider in Settings.",401)}let n=e.firecrawlApiKey;if(n)return{base:"https://api.firecrawl.dev/v1",key:n,mode:"cloud"};throw new a("The cloud web crawler needs an API key. Add it in Settings.",401)}async function i(){let e=await (0,r.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,t.readLocalState)();return!!(e.running&&e.apiKey)}return!!e.firecrawlApiKey}async function s(e,r){let{base:t,key:i}=await n(),s=await fetch(`${t}${e}`,{...r,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json",...r?.headers??{}},cache:"no-store"}),o=await s.text(),l=o?c(o):{};if(!s.ok)throw new a(l?.error||`Firecrawl request failed (${s.status})`,s.status);return l}async function o(e){let{key:r}=await n(),t=await fetch(e,{headers:{Authorization:`Bearer ${r}`},cache:"no-store"}),i=await t.text(),s=i?c(i):{};if(!t.ok)throw new a(s?.error||`Firecrawl request failed (${t.status})`,t.status);return s}function c(e){try{return JSON.parse(e)}catch{return{}}}async function l(e,r=10){return((await s("/search",{method:"POST",body:JSON.stringify({query:e,limit:r})})).data??[]).map(e=>({url:e.url,title:e.title||e.url,description:e.description}))}let d={waitFor:1e4,onlyMainContent:!1,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","Accept-Language":"en-US,en;q=0.9","Sec-Ch-Ua":'"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"'}};async function u(e){let r=(await s("/scrape",{method:"POST",body:JSON.stringify({url:e,formats:["markdown"],...d})})).data??{};return{url:r.metadata?.sourceURL||e,title:r.metadata?.title||r.metadata?.ogTitle||e,markdown:r.markdown??""}}async function p(e,r){let t=await s("/crawl",{method:"POST",body:JSON.stringify({url:e,limit:r,allowExternalLinks:!1,scrapeOptions:{...d,formats:["markdown"],onlyMainContent:!0}})});if(!t.id)throw new a("Firecrawl did not return a crawl id");return t.id}async function w(e,r=!1){let t=r?await o(e):await s(`/crawl/${e}`,{method:"GET"});return{state:t.status??"scraping",total:t.total??0,completed:t.completed??0,next:t.next,pages:(t.data??[]).map(e=>({url:e.metadata?.sourceURL||e.metadata?.url||"",title:e.metadata?.title||e.metadata?.sourceURL||"Untitled",markdown:e.markdown??""}))}}async function m(e){try{await s(`/crawl/${e}`,{method:"DELETE"})}catch{}}e.s(["FirecrawlError",0,a,"cancelCrawl",0,m,"getCrawlStatus",0,w,"isFirecrawlConfigured",0,i,"scrapePage",0,u,"searchWeb",0,l,"startCrawl",0,p])},426237,e=>{"use strict";var r=e.i(766576),t=e.i(304368);async function a(){return r.NextResponse.json({configured:await (0,t.isFirecrawlConfigured)()})}async function n(e){try{let{query:a,limit:n}=await e.json();if(!a||!a.trim())return r.NextResponse.json({error:"A search query is required."},{status:400});let i=await (0,t.searchWeb)(a.trim(),Math.min(n??10,25));return r.NextResponse.json({results:i})}catch(n){let e=n instanceof t.FirecrawlError?n.status??500:500,a=n instanceof Error?n.message:"Search failed.";return r.NextResponse.json({error:a},{status:e})}}e.s(["GET",0,a,"POST",0,n,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])}];
60
-
61
- //# sourceMappingURL=%5Broot-of-the-server%5D__1vsvck0._.js.map