larkup 0.1.40 → 0.1.42

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 (336) 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 +21 -21
  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 +18 -18
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +12 -12
  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 +2 -2
  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 +19 -19
  26. package/.next/server/app/analytics.segments/_full.segment.rsc +19 -19
  27. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  28. package/.next/server/app/analytics.segments/_index.segment.rsc +12 -12
  29. package/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
  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 +1 -1
  34. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  35. package/.next/server/app/api/chat/status/route.js.nft.json +1 -1
  36. package/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
  37. package/.next/server/app/api/config/route.js.nft.json +1 -1
  38. package/.next/server/app/api/config/test/route.js.nft.json +1 -1
  39. package/.next/server/app/api/connections/route.js.nft.json +1 -1
  40. package/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
  41. package/.next/server/app/api/demo/route.js.nft.json +1 -1
  42. package/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
  43. package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  44. package/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
  45. package/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
  46. package/.next/server/app/api/describe-image/route.js.nft.json +1 -1
  47. package/.next/server/app/api/documents/route.js.nft.json +1 -1
  48. package/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
  49. package/.next/server/app/api/index/route.js.nft.json +1 -1
  50. package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
  51. package/.next/server/app/api/jobs/route.js.nft.json +1 -1
  52. package/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
  53. package/.next/server/app/api/media/process/route.js.nft.json +1 -1
  54. package/.next/server/app/api/media/route.js.nft.json +1 -1
  55. package/.next/server/app/api/media/stream/route.js.nft.json +1 -1
  56. package/.next/server/app/api/search/bing/route.js.nft.json +1 -1
  57. package/.next/server/app/api/search/brave/route.js.nft.json +1 -1
  58. package/.next/server/app/api/search/exa/route.js.nft.json +1 -1
  59. package/.next/server/app/api/search/google/route.js.nft.json +1 -1
  60. package/.next/server/app/api/search/route.js.nft.json +1 -1
  61. package/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
  62. package/.next/server/app/api/server/agent/route.js.nft.json +1 -1
  63. package/.next/server/app/api/server/download/route.js.nft.json +1 -1
  64. package/.next/server/app/api/server/generate/route.js.nft.json +1 -1
  65. package/.next/server/app/api/server/local/route.js.nft.json +1 -1
  66. package/.next/server/app/api/servers/route.js.nft.json +1 -1
  67. package/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
  68. package/.next/server/app/api/tabular/route.js.nft.json +1 -1
  69. package/.next/server/app/api/upload-file/route.js.nft.json +1 -1
  70. package/.next/server/app/api/uploads/[...slug]/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 +19 -19
  74. package/.next/server/app/chat.segments/_full.segment.rsc +19 -19
  75. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  76. package/.next/server/app/chat.segments/_index.segment.rsc +12 -12
  77. package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  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.js.nft.json +1 -1
  81. package/.next/server/app/data/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app/data.html +1 -1
  83. package/.next/server/app/data.rsc +19 -19
  84. package/.next/server/app/data.segments/_full.segment.rsc +19 -19
  85. package/.next/server/app/data.segments/_head.segment.rsc +4 -4
  86. package/.next/server/app/data.segments/_index.segment.rsc +12 -12
  87. package/.next/server/app/data.segments/_tree.segment.rsc +2 -2
  88. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  89. package/.next/server/app/data.segments/data.segment.rsc +3 -3
  90. package/.next/server/app/index.html +1 -1
  91. package/.next/server/app/index.rsc +17 -17
  92. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  93. package/.next/server/app/index.segments/_full.segment.rsc +17 -17
  94. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  95. package/.next/server/app/index.segments/_index.segment.rsc +12 -12
  96. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  97. package/.next/server/app/page_client-reference-manifest.js +1 -1
  98. package/.next/server/app/settings/page.js.nft.json +1 -1
  99. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  100. package/.next/server/app/settings.html +1 -1
  101. package/.next/server/app/settings.rsc +19 -19
  102. package/.next/server/app/settings.segments/_full.segment.rsc +19 -19
  103. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  104. package/.next/server/app/settings.segments/_index.segment.rsc +12 -12
  105. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  106. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  107. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  108. package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +10 -7
  109. package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0sbf4ny.js +2 -2
  110. package/.next/server/chunks/[root-of-the-server]__06gca-c._.js +1 -1
  111. package/.next/server/chunks/[root-of-the-server]__0j2l54r._.js +1 -1
  112. package/.next/server/chunks/{[root-of-the-server]__1idgvjh._.js → [root-of-the-server]__0pmypq8._.js} +3 -3
  113. package/.next/server/chunks/[root-of-the-server]__0tlfusr._.js +1 -1
  114. package/.next/server/chunks/[root-of-the-server]__0x_a1jw._.js +1 -1
  115. package/.next/server/chunks/[root-of-the-server]__1-f7u-_._.js +1 -1
  116. package/.next/{standalone/apps/web/.next/server/chunks/[root-of-the-server]__1lhls88._.js → server/chunks/[root-of-the-server]__13xnq6l._.js} +1 -1
  117. package/.next/server/chunks/[root-of-the-server]__16jk_se._.js +1 -1
  118. package/.next/server/chunks/[root-of-the-server]__1s_l1di._.js +1 -1
  119. package/.next/server/chunks/[root-of-the-server]__1u4frv-._.js +1 -1
  120. package/.next/server/chunks/[root-of-the-server]__1w00ho9._.js +1 -1
  121. package/.next/server/chunks/_1ncm_ks._.js +1 -1
  122. package/.next/server/chunks/_1sx94ue._.js +1 -1
  123. package/.next/server/chunks/_20il040._.js +1 -1
  124. package/.next/server/chunks/packages_0cc5bxf._.js +1 -1
  125. package/.next/server/chunks/packages_1ggqion._.js +1 -1
  126. package/.next/server/chunks/packages_core_src_embeddings_registry_ts_05dafmb._.js +1 -1
  127. package/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  128. package/.next/server/chunks/ssr/[root-of-the-server]__1k1mxo2._.js +1 -1
  129. package/.next/server/chunks/ssr/_0ffb2sn._.js +1 -1
  130. package/.next/server/chunks/ssr/_169pdlf._.js +5 -5
  131. package/.next/server/chunks/ssr/_18jagqc._.js +1 -1
  132. package/.next/server/chunks/ssr/_1b5ufkw._.js +3 -0
  133. package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  134. package/.next/server/chunks/ssr/packages_core_src_generator_generate-server_ts_15zzrn2._.js +1 -1
  135. package/.next/server/middleware-build-manifest.js +3 -3
  136. package/.next/server/pages/404.html +1 -1
  137. package/.next/server/pages/500.html +1 -1
  138. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  139. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  140. package/.next/standalone/apps/web/.next/required-server-files.json +1 -1
  141. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  142. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  143. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  144. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  145. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  146. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  147. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  148. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  149. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  150. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +18 -18
  151. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  152. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  153. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +12 -12
  154. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  155. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  156. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  157. package/.next/standalone/apps/web/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  158. package/.next/standalone/apps/web/.next/server/app/analytics.html +1 -1
  159. package/.next/standalone/apps/web/.next/server/app/analytics.rsc +19 -19
  160. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_full.segment.rsc +19 -19
  161. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  162. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_index.segment.rsc +12 -12
  163. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
  164. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  165. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  166. package/.next/standalone/apps/web/.next/server/app/api/analytics/route.js.nft.json +1 -1
  167. package/.next/standalone/apps/web/.next/server/app/api/chat/route.js +1 -1
  168. package/.next/standalone/apps/web/.next/server/app/api/chat/route.js.nft.json +1 -1
  169. package/.next/standalone/apps/web/.next/server/app/api/chat/status/route.js.nft.json +1 -1
  170. package/.next/standalone/apps/web/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
  171. package/.next/standalone/apps/web/.next/server/app/api/config/route.js.nft.json +1 -1
  172. package/.next/standalone/apps/web/.next/server/app/api/config/test/route.js.nft.json +1 -1
  173. package/.next/standalone/apps/web/.next/server/app/api/connections/route.js.nft.json +1 -1
  174. package/.next/standalone/apps/web/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
  175. package/.next/standalone/apps/web/.next/server/app/api/demo/route.js.nft.json +1 -1
  176. package/.next/standalone/apps/web/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
  177. package/.next/standalone/apps/web/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  178. package/.next/standalone/apps/web/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
  179. package/.next/standalone/apps/web/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
  180. package/.next/standalone/apps/web/.next/server/app/api/describe-image/route.js.nft.json +1 -1
  181. package/.next/standalone/apps/web/.next/server/app/api/documents/route.js.nft.json +1 -1
  182. package/.next/standalone/apps/web/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
  183. package/.next/standalone/apps/web/.next/server/app/api/index/route.js.nft.json +1 -1
  184. package/.next/standalone/apps/web/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
  185. package/.next/standalone/apps/web/.next/server/app/api/jobs/route.js.nft.json +1 -1
  186. package/.next/standalone/apps/web/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
  187. package/.next/standalone/apps/web/.next/server/app/api/media/process/route.js.nft.json +1 -1
  188. package/.next/standalone/apps/web/.next/server/app/api/media/route.js.nft.json +1 -1
  189. package/.next/standalone/apps/web/.next/server/app/api/media/stream/route.js.nft.json +1 -1
  190. package/.next/standalone/apps/web/.next/server/app/api/search/bing/route.js.nft.json +1 -1
  191. package/.next/standalone/apps/web/.next/server/app/api/search/brave/route.js.nft.json +1 -1
  192. package/.next/standalone/apps/web/.next/server/app/api/search/exa/route.js.nft.json +1 -1
  193. package/.next/standalone/apps/web/.next/server/app/api/search/google/route.js.nft.json +1 -1
  194. package/.next/standalone/apps/web/.next/server/app/api/search/route.js.nft.json +1 -1
  195. package/.next/standalone/apps/web/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
  196. package/.next/standalone/apps/web/.next/server/app/api/server/agent/route.js.nft.json +1 -1
  197. package/.next/standalone/apps/web/.next/server/app/api/server/download/route.js.nft.json +1 -1
  198. package/.next/standalone/apps/web/.next/server/app/api/server/generate/route.js.nft.json +1 -1
  199. package/.next/standalone/apps/web/.next/server/app/api/server/local/route.js.nft.json +1 -1
  200. package/.next/standalone/apps/web/.next/server/app/api/servers/route.js.nft.json +1 -1
  201. package/.next/standalone/apps/web/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
  202. package/.next/standalone/apps/web/.next/server/app/api/tabular/route.js.nft.json +1 -1
  203. package/.next/standalone/apps/web/.next/server/app/api/upload-file/route.js.nft.json +1 -1
  204. package/.next/standalone/apps/web/.next/server/app/api/uploads/[...slug]/route.js.nft.json +1 -1
  205. package/.next/standalone/apps/web/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  206. package/.next/standalone/apps/web/.next/server/app/chat.html +1 -1
  207. package/.next/standalone/apps/web/.next/server/app/chat.rsc +19 -19
  208. package/.next/standalone/apps/web/.next/server/app/chat.segments/_full.segment.rsc +19 -19
  209. package/.next/standalone/apps/web/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  210. package/.next/standalone/apps/web/.next/server/app/chat.segments/_index.segment.rsc +12 -12
  211. package/.next/standalone/apps/web/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  212. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  213. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  214. package/.next/standalone/apps/web/.next/server/app/data/page.js.nft.json +1 -1
  215. package/.next/standalone/apps/web/.next/server/app/data/page_client-reference-manifest.js +1 -1
  216. package/.next/standalone/apps/web/.next/server/app/data.html +1 -1
  217. package/.next/standalone/apps/web/.next/server/app/data.rsc +19 -19
  218. package/.next/standalone/apps/web/.next/server/app/data.segments/_full.segment.rsc +19 -19
  219. package/.next/standalone/apps/web/.next/server/app/data.segments/_head.segment.rsc +4 -4
  220. package/.next/standalone/apps/web/.next/server/app/data.segments/_index.segment.rsc +12 -12
  221. package/.next/standalone/apps/web/.next/server/app/data.segments/_tree.segment.rsc +2 -2
  222. package/.next/standalone/apps/web/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  223. package/.next/standalone/apps/web/.next/server/app/data.segments/data.segment.rsc +3 -3
  224. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  225. package/.next/standalone/apps/web/.next/server/app/index.rsc +17 -17
  226. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  227. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +17 -17
  228. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
  229. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +12 -12
  230. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  231. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  232. package/.next/standalone/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  233. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  234. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  235. package/.next/standalone/apps/web/.next/server/app/settings.rsc +19 -19
  236. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +19 -19
  237. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  238. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +12 -12
  239. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  240. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  241. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  242. package/.next/standalone/apps/web/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +10 -7
  243. package/.next/standalone/apps/web/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0sbf4ny.js +2 -2
  244. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__06gca-c._.js +1 -1
  245. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0j2l54r._.js +1 -1
  246. package/.next/standalone/apps/web/.next/server/chunks/{[root-of-the-server]__1idgvjh._.js → [root-of-the-server]__0pmypq8._.js} +3 -3
  247. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0tlfusr._.js +1 -1
  248. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0x_a1jw._.js +1 -1
  249. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1-f7u-_._.js +1 -1
  250. package/.next/{server/chunks/[root-of-the-server]__1lhls88._.js → standalone/apps/web/.next/server/chunks/[root-of-the-server]__13xnq6l._.js} +1 -1
  251. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__16jk_se._.js +1 -1
  252. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1s_l1di._.js +1 -1
  253. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1u4frv-._.js +1 -1
  254. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1w00ho9._.js +1 -1
  255. package/.next/standalone/apps/web/.next/server/chunks/_1ncm_ks._.js +1 -1
  256. package/.next/standalone/apps/web/.next/server/chunks/_1sx94ue._.js +1 -1
  257. package/.next/standalone/apps/web/.next/server/chunks/_20il040._.js +1 -1
  258. package/.next/standalone/apps/web/.next/server/chunks/packages_0cc5bxf._.js +1 -1
  259. package/.next/standalone/apps/web/.next/server/chunks/packages_1ggqion._.js +1 -1
  260. package/.next/standalone/apps/web/.next/server/chunks/packages_core_src_embeddings_registry_ts_05dafmb._.js +1 -1
  261. package/.next/standalone/apps/web/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  262. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__1k1mxo2._.js +1 -1
  263. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0ffb2sn._.js +1 -1
  264. package/.next/standalone/apps/web/.next/server/chunks/ssr/_169pdlf._.js +5 -5
  265. package/.next/standalone/apps/web/.next/server/chunks/ssr/_18jagqc._.js +1 -1
  266. package/.next/standalone/apps/web/.next/server/chunks/ssr/_1b5ufkw._.js +3 -0
  267. package/.next/standalone/apps/web/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  268. package/.next/standalone/apps/web/.next/server/chunks/ssr/packages_core_src_generator_generate-server_ts_15zzrn2._.js +1 -1
  269. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  270. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  271. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  272. package/.next/standalone/apps/web/.next/static/chunks/1_knu6c2q82r_.js +1 -0
  273. package/.next/{static/chunks/37j20in7beze4.js → standalone/apps/web/.next/static/chunks/1gl22nlyonq0i.js} +1 -1
  274. package/.next/standalone/apps/web/.next/static/chunks/1xr94e4n5c_m_.css +1 -0
  275. package/.next/standalone/apps/web/.next/static/chunks/{2h-80z3n8mi3d.js → 2diknd81m_z55.js} +1 -1
  276. package/.next/standalone/apps/web/.next/static/chunks/2iog7bwy_5c7e.js +1 -0
  277. package/.next/standalone/apps/web/.next/static/chunks/{2_qbhu4zxkm7j.js → 2q_4eq7-dkww2.js} +5 -5
  278. package/.next/standalone/apps/web/.next/static/chunks/{1b9srvyupwcjz.js → 2t0il37i0nvoo.js} +1 -1
  279. package/.next/standalone/apps/web/.next/static/media/pdf.worker.min.43wid0v0nfx-f.mjs +29 -0
  280. package/.next/standalone/apps/web/CHANGELOG.md +21 -0
  281. package/.next/standalone/apps/web/app/api/chat/route.ts +30 -64
  282. package/.next/standalone/apps/web/app/api/chat/tools.ts +76 -12
  283. package/.next/standalone/apps/web/app/api/media/process/route.ts +88 -40
  284. package/.next/standalone/apps/web/components/chat/chat-workspace.tsx +10 -10
  285. package/.next/standalone/apps/web/components/chat/message-item.tsx +1 -8
  286. package/.next/standalone/apps/web/components/data/firecrawl-notice.tsx +3 -3
  287. package/.next/standalone/apps/web/components/data/media-panel.tsx +2 -8
  288. package/.next/standalone/apps/web/components/data/scrape-panel.tsx +3 -11
  289. package/.next/standalone/apps/web/components/data/upload-panel.tsx +7 -4
  290. package/.next/standalone/apps/web/components/index/index-workspace.tsx +1 -1
  291. package/.next/standalone/apps/web/lib/pdf-images.ts +30 -1
  292. package/.next/standalone/apps/web/lib/retrieval-routing.ts +72 -0
  293. package/.next/standalone/apps/web/package.json +1 -1
  294. package/.next/standalone/apps/web/server.js +1 -1
  295. package/.next/standalone/packages/tools/doc-editor/CHANGELOG.md +7 -0
  296. package/.next/standalone/packages/tools/doc-editor/package.json +1 -1
  297. package/.next/standalone/packages/tools/video-audio/CHANGELOG.md +6 -0
  298. package/.next/standalone/packages/tools/video-audio/dist/url-importer.js +37 -5
  299. package/.next/standalone/packages/tools/video-audio/package.json +1 -1
  300. package/.next/standalone/packages/tools/video-audio/src/url-importer.ts +61 -25
  301. package/.next/static/chunks/1_knu6c2q82r_.js +1 -0
  302. package/.next/{standalone/apps/web/.next/static/chunks/37j20in7beze4.js → static/chunks/1gl22nlyonq0i.js} +1 -1
  303. package/.next/static/chunks/1xr94e4n5c_m_.css +1 -0
  304. package/.next/static/chunks/{2h-80z3n8mi3d.js → 2diknd81m_z55.js} +1 -1
  305. package/.next/static/chunks/2iog7bwy_5c7e.js +1 -0
  306. package/.next/static/chunks/{2_qbhu4zxkm7j.js → 2q_4eq7-dkww2.js} +5 -5
  307. package/.next/static/chunks/{1b9srvyupwcjz.js → 2t0il37i0nvoo.js} +1 -1
  308. package/.next/static/media/pdf.worker.min.43wid0v0nfx-f.mjs +29 -0
  309. package/CHANGELOG.md +21 -0
  310. package/app/api/chat/route.ts +30 -64
  311. package/app/api/chat/tools.ts +76 -12
  312. package/app/api/media/process/route.ts +88 -40
  313. package/components/chat/chat-workspace.tsx +10 -10
  314. package/components/chat/message-item.tsx +1 -8
  315. package/components/data/firecrawl-notice.tsx +3 -3
  316. package/components/data/media-panel.tsx +2 -8
  317. package/components/data/scrape-panel.tsx +3 -11
  318. package/components/data/upload-panel.tsx +7 -4
  319. package/components/index/index-workspace.tsx +1 -1
  320. package/lib/pdf-images.ts +30 -1
  321. package/lib/retrieval-routing.ts +72 -0
  322. package/package.json +6 -6
  323. package/.next/server/chunks/ssr/apps_web_lib_pdf-images_ts_13-l5wa._.js +0 -3
  324. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_lib_pdf-images_ts_13-l5wa._.js +0 -3
  325. package/.next/standalone/apps/web/.next/static/chunks/2ib3e0xrrdait.js +0 -1
  326. package/.next/standalone/apps/web/.next/static/chunks/38f3p67a1uufx.js +0 -1
  327. package/.next/standalone/apps/web/.next/static/chunks/3fe06cefiv690.css +0 -1
  328. package/.next/static/chunks/2ib3e0xrrdait.js +0 -1
  329. package/.next/static/chunks/38f3p67a1uufx.js +0 -1
  330. package/.next/static/chunks/3fe06cefiv690.css +0 -1
  331. /package/.next/standalone/apps/web/.next/static/{7yuxi3XYqMr4kxUl6T-qk → YT7FJOJe86DX-Sa61-JJz}/_buildManifest.js +0 -0
  332. /package/.next/standalone/apps/web/.next/static/{7yuxi3XYqMr4kxUl6T-qk → YT7FJOJe86DX-Sa61-JJz}/_clientMiddlewareManifest.js +0 -0
  333. /package/.next/standalone/apps/web/.next/static/{7yuxi3XYqMr4kxUl6T-qk → YT7FJOJe86DX-Sa61-JJz}/_ssgManifest.js +0 -0
  334. /package/.next/static/{7yuxi3XYqMr4kxUl6T-qk → YT7FJOJe86DX-Sa61-JJz}/_buildManifest.js +0 -0
  335. /package/.next/static/{7yuxi3XYqMr4kxUl6T-qk → YT7FJOJe86DX-Sa61-JJz}/_clientMiddlewareManifest.js +0 -0
  336. /package/.next/static/{7yuxi3XYqMr4kxUl6T-qk → YT7FJOJe86DX-Sa61-JJz}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),n=e.i(638725),r=e.i(192441);async function o(){let e=await (0,r.getDataDir)();if(!e)return n.DEFAULT_CONFIG;try{let r=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),o=JSON.parse(r),i=o.customEmbeddings,s=o.embeddingModelId;if(o.customEmbedding&&!i?.length){let e=o.customEmbedding;i=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...n.DEFAULT_CONFIG,...o,embeddingModelId:s??n.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...n.DEFAULT_CONFIG.chunking,...o.chunking},storeConfig:{...n.DEFAULT_CONFIG.storeConfig,...o.storeConfig}};return delete l.customEmbedding,l}catch{return n.DEFAULT_CONFIG}}async function i(e){let n=await (0,r.requireDataDir)(),o={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(n,"config.json"),JSON.stringify(o,null,2),"utf8"),o}e.s(["readConfig",0,o,"writeConfig",0,i])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},399828,e=>{"use strict";let t={"openai/text-embedding-3-small":{dimensions:1536,maxInputTokens:8191},"openai/text-embedding-3-large":{dimensions:3072,maxInputTokens:8191},"openai/text-embedding-ada-002":{dimensions:1536,maxInputTokens:8191},"google/gemini-embedding-2":{dimensions:768,maxInputTokens:2048},"google/gemini-embedding-001":{dimensions:768,maxInputTokens:2048},"cohere/embed-english-v3.0":{dimensions:1024,maxInputTokens:512},"cohere/embed-multilingual-v3.0":{dimensions:1024,maxInputTokens:512},"voyage/voyage-3":{dimensions:1024,maxInputTokens:32e3},"voyage/voyage-3-lite":{dimensions:512,maxInputTokens:32e3},"voyage/voyage-code-3":{dimensions:1024,maxInputTokens:32e3},"mistral/mistral-embed":{dimensions:1024,maxInputTokens:8192},"jina/jina-embeddings-v3":{dimensions:1024,maxInputTokens:8192},"jina/jina-clip-v2":{dimensions:1024,maxInputTokens:8192},"nomic/nomic-embed-text-v1.5":{dimensions:768,maxInputTokens:8192}},a=[{id:"openai/text-embedding-3-small",label:"text-embedding-3-small",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Fast, cheap, strong general-purpose default."},{id:"openai/text-embedding-3-large",label:"text-embedding-3-large",provider:"openai",dimensions:3072,maxInputTokens:8191,description:"Highest quality OpenAI embeddings, larger vectors."},{id:"openai/text-embedding-ada-002",label:"text-embedding-ada-002",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Legacy model — kept for backward compatibility."},{id:"google/gemini-embedding-001",label:"gemini-embedding-001",provider:"google",dimensions:768,maxInputTokens:2048,description:"Gemini embedding 001."},{id:"cohere/embed-english-v3.0",label:"embed-english-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"Tuned for retrieval; great for English-heavy corpora."},{id:"cohere/embed-multilingual-v3.0",label:"embed-multilingual-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"100+ language multilingual retrieval embeddings."},{id:"voyage/voyage-3",label:"voyage-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Voyage's best general-purpose retrieval model."},{id:"voyage/voyage-3-lite",label:"voyage-3-lite",provider:"voyage",dimensions:512,maxInputTokens:32e3,description:"Optimized for latency and cost with strong performance."},{id:"voyage/voyage-code-3",label:"voyage-code-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Specialized for code retrieval tasks."},{id:"mistral/mistral-embed",label:"mistral-embed",provider:"mistral",dimensions:1024,maxInputTokens:8192,description:"Mistral's efficient embedding model for retrieval."},{id:"jina/jina-embeddings-v3",label:"jina-embeddings-v3",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multilingual, task-specific embeddings from Jina AI."},{id:"jina/jina-clip-v2",label:"jina-clip-v2",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multimodal embeddings for text and images."},{id:"nomic/nomic-embed-text-v1.5",label:"nomic-embed-text-v1.5",provider:"nomic",dimensions:768,maxInputTokens:8192,description:"Open-source, highly capable text embeddings."}];e.s(["EMBEDDING_DIMENSIONS",0,t,"EMBEDDING_MODELS",0,a,"getEmbeddingModel",0,function(e){return a.find(t=>t.id===e)},"getEmbeddingModelsForProvider",0,function(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())},"toEmbeddingDescriptor",0,function(e){let a=t[e.id],n=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:n,dimensions:a?.dimensions??e.context_window??768,maxInputTokens:a?.maxInputTokens??e.max_tokens??2048,description:e.description||""}}])},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,a){let n={};for(let r of e.fields.filter(e=>{if(e.showWhen){let a=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(a))return!1}return!e.showWhenIndexType||!a||!!e.showWhenIndexType.includes(a)}))r.required&&!t[r.key]?.trim()&&(n[r.key]=`${r.label} is required`);return n}])},480134,e=>{"use strict";var t=e.i(239441),a=e.i(449055),n=e.i(391328),r=e.i(6352),o=e.i(746789),i=e.i(423437),s=e.i(178820),l=e.i(569191),d=e.i(576251),u=e.i(199962),c=e.i(547545),p=e.i(664046),m=e.i(235691),h=e.i(298907),b=e.i(110763),v=e.i(193695);e.i(673243);var y=e.i(236167),g=e.i(766576),f=e.i(367165),k=e.i(489694),x=e.i(432970),w=e.i(585071),I=e.i(399828),C=e.i(979598),R=e.i(192441),q=e.i(523554);function S(e,t){return e?(0,R.runWithServer)(e,t):t()}async function T(e){return S(new URL(e.url).searchParams.get("serverId"),()=>_())}async function _(){let e=await (0,f.readConfig)(),t=await (0,k.readRun)(),a=await (0,x.refreshServerStatus)(),n=t?.status==="completed"&&(t.totalChunks??0)>0,r=n||a.running,o=[];return r||o.push("Build a larkup index (or launch a generated server) before running a demo query."),g.NextResponse.json({ready:r,blockers:o,indexed:n,server:{running:a.running,endpoint:a.endpoint},config:{projectName:e.projectName,embeddingModelId:e.embeddingModelId,vectorStore:e.vectorStore,indexType:e.indexType,topK:e.topK}})}async function E(e){let t,a=Date.now();try{t=await e.json()}catch{return g.NextResponse.json({error:"Invalid JSON body."},{status:400})}let n=t.query?.trim();return n?S(t.serverId??null,()=>A(n,t.topK,a)):g.NextResponse.json({error:"A non-empty 'query' is required."},{status:400})}async function A(e,t,a){let n=await (0,f.readConfig)(),r=Math.min(Math.max(Number(t)||n.topK,1),20),o=await (0,x.refreshServerStatus)();if(o.running)try{let t=await fetch(`${o.endpoint}/query`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:e,topK:r}),signal:AbortSignal.timeout(3e4)}),n=await t.json();if(t.ok){let t={query:e,hits:n.hits??[],source:"server",endpoint:o.endpoint,tookMs:Date.now()-a};return g.NextResponse.json(t)}}catch{}let i=await (0,k.readRun)();if(!i||"completed"!==i.status||(i.totalChunks??0)===0)return g.NextResponse.json({error:"No index to query yet. Build an index in the Index stage, or launch a server first."},{status:409});if(!(0,I.getEmbeddingModel)(n.embeddingModelId)&&!n.embeddingModelId?.startsWith("custom:"))return g.NextResponse.json({error:`Unknown embedding model "${n.embeddingModelId}".`},{status:400});if(!(0,C.getVectorStore)(n.vectorStore))return g.NextResponse.json({error:`Unknown vector store "${n.vectorStore}".`},{status:400});try{let t=await (0,q.embedQuery)(n,e),o=await (0,w.createAdapter)(n),i=await o.query(t,r,e),s={query:e,hits:i,source:"direct",tookMs:Date.now()-a};return g.NextResponse.json(s)}catch(t){let e=t instanceof Error?t.message:"Retrieval failed unexpectedly.";return g.NextResponse.json({error:e},{status:500})}}e.s(["GET",0,T,"POST",0,E,"dynamic",0,"force-dynamic"],840558);var N=e.i(840558);let D=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/demo/route",pathname:"/api/demo",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/demo/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:j,serverHooks:U}=D;async function O(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),D.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/demo/route";g=g.replace(/\/index$/,"")||"/";let f=await D.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!f)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:k,deploymentId:x,params:w,nextConfig:I,parsedUrl:C,isDraftMode:R,prerenderManifest:q,routerServerContext:S,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,resolvedPathname:E,clientReferenceManifest:A,serverActionsManifest:N}=f,P=(0,s.normalizeAppPath)(g),j=!!(q.dynamicRoutes[P]||q.routes[E]),U=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,C,!1):t.end("This page could not be found"),null);if(j&&!R){let e=!!q.routes[E],t=q.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await U();throw new v.NoFallbackError}}let O=null;!j||D.isDev||R||(O="/index"===(O=E)?"/":O);let M=!0===D.isDev||!j,L=j&&!M;N&&A&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:A,serverActionsManifest:N});let W=e.method||"GET",F=(0,o.getTracer)(),K=F.getActiveScopeSpan(),V=!!(null==S?void 0:S.isWrappedByNextServer),H=!!(0,r.getRequestMeta)(e,"minimalMode"),B=(0,r.getRequestMeta)(e,"incrementalCache")||await D.getIncrementalCache(e,I,q,H);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:w,previewProps:q.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:M,incrementalCache:B,cacheLifeProfiles:I.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>D.onRequestError(e,t,n,r,S)},sharedContext:{buildId:k,deploymentId:x}},$=new l.NodeNextRequest(e),Q=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest($,(0,d.signalFromNodeResponse)(t));try{let r,i=async e=>D.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=F.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${W} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${W} ${g}`)}),s=async r=>{var o,s;let l=async({previousCacheEntry:a})=>{try{if(!H&&T&&_&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(r);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&n.waitUntil&&(n.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)($,Q,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[b.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=b.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=b.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await D.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,S),t}},d=await D.handleResponse({req:e,nextConfig:I,cacheKey:O,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:q,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:H});if(!j)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",T?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return H&&j||u.delete(b.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)($,Q,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};V&&K?await s(K):(r=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},s),void 0,!V))}catch(t){if(t instanceof v.NoFallbackError||await D.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,S),j)throw t;return await (0,p.sendResponse)($,Q,new Response(null,{status:500})),null}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:j})},"routeModule",0,D,"serverHooks",0,U,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,j],480134)},77149,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_stream_0sl4nat._.js","server/chunks/[root-of-the-server]__1ynt2jc._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1i4svm8._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__01al2n0._.js"].map(t=>e.l(t))).then(()=>t(46465)))},225970,e=>{e.v(e=>Promise.resolve().then(()=>e(65048)))},953341,e=>{e.v(t=>Promise.all(["server/chunks/15sd_@vercel_oidc_dist_token_10ruti0.js"].map(t=>e.l(t))).then(()=>t(624299)))},313282,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_analytics-store_ts_06l_t47._.js","server/chunks/packages_core_src_models-list_ts_06z8z75._.js"].map(t=>e.l(t))).then(()=>t(43697)))}];
1
+ module.exports=[367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),n=e.i(638725),r=e.i(192441);async function o(){let e=await (0,r.getDataDir)();if(!e)return n.DEFAULT_CONFIG;try{let r=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),o=JSON.parse(r),i=o.customEmbeddings,s=o.embeddingModelId;if(o.customEmbedding&&!i?.length){let e=o.customEmbedding;i=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...n.DEFAULT_CONFIG,...o,embeddingModelId:s??n.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...n.DEFAULT_CONFIG.chunking,...o.chunking},storeConfig:{...n.DEFAULT_CONFIG.storeConfig,...o.storeConfig}};return delete l.customEmbedding,l}catch{return n.DEFAULT_CONFIG}}async function i(e){let n=await (0,r.requireDataDir)(),o={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(n,"config.json"),JSON.stringify(o,null,2),"utf8"),o}e.s(["readConfig",0,o,"writeConfig",0,i])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},399828,e=>{"use strict";let t={"openai/text-embedding-3-small":{dimensions:1536,maxInputTokens:8191},"openai/text-embedding-3-large":{dimensions:3072,maxInputTokens:8191},"openai/text-embedding-ada-002":{dimensions:1536,maxInputTokens:8191},"google/gemini-embedding-2":{dimensions:768,maxInputTokens:2048},"google/gemini-embedding-001":{dimensions:768,maxInputTokens:2048},"cohere/embed-english-v3.0":{dimensions:1024,maxInputTokens:512},"cohere/embed-multilingual-v3.0":{dimensions:1024,maxInputTokens:512},"voyage/voyage-3":{dimensions:1024,maxInputTokens:32e3},"voyage/voyage-3-lite":{dimensions:512,maxInputTokens:32e3},"voyage/voyage-code-3":{dimensions:1024,maxInputTokens:32e3},"mistral/mistral-embed":{dimensions:1024,maxInputTokens:8192},"jina/jina-embeddings-v3":{dimensions:1024,maxInputTokens:8192},"jina/jina-clip-v2":{dimensions:1024,maxInputTokens:8192},"nomic/nomic-embed-text-v1.5":{dimensions:768,maxInputTokens:8192}},a=[{id:"openai/text-embedding-3-small",label:"text-embedding-3-small",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Fast, cheap, strong general-purpose default."},{id:"openai/text-embedding-3-large",label:"text-embedding-3-large",provider:"openai",dimensions:3072,maxInputTokens:8191,description:"Highest quality OpenAI embeddings, larger vectors."},{id:"openai/text-embedding-ada-002",label:"text-embedding-ada-002",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Legacy model — kept for backward compatibility."},{id:"google/gemini-embedding-2",label:"gemini-embedding-2",provider:"google",dimensions:768,maxInputTokens:2048,description:"Current Gemini embedding model with multilingual retrieval support."},{id:"google/gemini-embedding-001",label:"gemini-embedding-001",provider:"google",dimensions:768,maxInputTokens:2048,description:"Gemini embedding 001."},{id:"cohere/embed-english-v3.0",label:"embed-english-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"Tuned for retrieval; great for English-heavy corpora."},{id:"cohere/embed-multilingual-v3.0",label:"embed-multilingual-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"100+ language multilingual retrieval embeddings."},{id:"voyage/voyage-3",label:"voyage-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Voyage's best general-purpose retrieval model."},{id:"voyage/voyage-3-lite",label:"voyage-3-lite",provider:"voyage",dimensions:512,maxInputTokens:32e3,description:"Optimized for latency and cost with strong performance."},{id:"voyage/voyage-code-3",label:"voyage-code-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Specialized for code retrieval tasks."},{id:"mistral/mistral-embed",label:"mistral-embed",provider:"mistral",dimensions:1024,maxInputTokens:8192,description:"Mistral's efficient embedding model for retrieval."},{id:"jina/jina-embeddings-v3",label:"jina-embeddings-v3",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multilingual, task-specific embeddings from Jina AI."},{id:"jina/jina-clip-v2",label:"jina-clip-v2",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multimodal embeddings for text and images."},{id:"nomic/nomic-embed-text-v1.5",label:"nomic-embed-text-v1.5",provider:"nomic",dimensions:768,maxInputTokens:8192,description:"Open-source, highly capable text embeddings."}];e.s(["EMBEDDING_DIMENSIONS",0,t,"EMBEDDING_MODELS",0,a,"getEmbeddingModel",0,function(e){return a.find(t=>t.id===e)},"getEmbeddingModelsForProvider",0,function(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())},"toEmbeddingDescriptor",0,function(e){let a=t[e.id],n=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:n,dimensions:a?.dimensions??e.context_window??768,maxInputTokens:a?.maxInputTokens??e.max_tokens??2048,description:e.description||""}}])},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,a){let n={};for(let r of e.fields.filter(e=>{if(e.showWhen){let a=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(a))return!1}return!e.showWhenIndexType||!a||!!e.showWhenIndexType.includes(a)}))r.required&&!t[r.key]?.trim()&&(n[r.key]=`${r.label} is required`);return n}])},480134,e=>{"use strict";var t=e.i(239441),a=e.i(449055),n=e.i(391328),r=e.i(6352),o=e.i(746789),i=e.i(423437),s=e.i(178820),l=e.i(569191),d=e.i(576251),u=e.i(199962),c=e.i(547545),p=e.i(664046),m=e.i(235691),h=e.i(298907),b=e.i(110763),g=e.i(193695);e.i(673243);var v=e.i(236167),y=e.i(766576),f=e.i(367165),k=e.i(489694),x=e.i(432970),w=e.i(585071),I=e.i(399828),C=e.i(979598),R=e.i(192441),q=e.i(523554);function S(e,t){return e?(0,R.runWithServer)(e,t):t()}async function T(e){return S(new URL(e.url).searchParams.get("serverId"),()=>_())}async function _(){let e=await (0,f.readConfig)(),t=await (0,k.readRun)(),a=await (0,x.refreshServerStatus)(),n=t?.status==="completed"&&(t.totalChunks??0)>0,r=n||a.running,o=[];return r||o.push("Build a larkup index (or launch a generated server) before running a demo query."),y.NextResponse.json({ready:r,blockers:o,indexed:n,server:{running:a.running,endpoint:a.endpoint},config:{projectName:e.projectName,embeddingModelId:e.embeddingModelId,vectorStore:e.vectorStore,indexType:e.indexType,topK:e.topK}})}async function E(e){let t,a=Date.now();try{t=await e.json()}catch{return y.NextResponse.json({error:"Invalid JSON body."},{status:400})}let n=t.query?.trim();return n?S(t.serverId??null,()=>A(n,t.topK,a)):y.NextResponse.json({error:"A non-empty 'query' is required."},{status:400})}async function A(e,t,a){let n=await (0,f.readConfig)(),r=Math.min(Math.max(Number(t)||n.topK,1),20),o=await (0,x.refreshServerStatus)();if(o.running)try{let t=await fetch(`${o.endpoint}/query`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:e,topK:r}),signal:AbortSignal.timeout(3e4)}),n=await t.json();if(t.ok){let t={query:e,hits:n.hits??[],source:"server",endpoint:o.endpoint,tookMs:Date.now()-a};return y.NextResponse.json(t)}}catch{}let i=await (0,k.readRun)();if(!i||"completed"!==i.status||(i.totalChunks??0)===0)return y.NextResponse.json({error:"No index to query yet. Build an index in the Index stage, or launch a server first."},{status:409});if(!(0,I.getEmbeddingModel)(n.embeddingModelId)&&!n.embeddingModelId?.startsWith("custom:"))return y.NextResponse.json({error:`Unknown embedding model "${n.embeddingModelId}".`},{status:400});if(!(0,C.getVectorStore)(n.vectorStore))return y.NextResponse.json({error:`Unknown vector store "${n.vectorStore}".`},{status:400});try{let t=await (0,q.embedQuery)(n,e),o=await (0,w.createAdapter)(n),i=await o.query(t,r,e),s={query:e,hits:i,source:"direct",tookMs:Date.now()-a};return y.NextResponse.json(s)}catch(t){let e=t instanceof Error?t.message:"Retrieval failed unexpectedly.";return y.NextResponse.json({error:e},{status:500})}}e.s(["GET",0,T,"POST",0,E,"dynamic",0,"force-dynamic"],840558);var N=e.i(840558);let D=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/demo/route",pathname:"/api/demo",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/demo/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:j,serverHooks:U}=D;async function O(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),D.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/demo/route";y=y.replace(/\/index$/,"")||"/";let f=await D.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!f)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:k,deploymentId:x,params:w,nextConfig:I,parsedUrl:C,isDraftMode:R,prerenderManifest:q,routerServerContext:S,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,resolvedPathname:E,clientReferenceManifest:A,serverActionsManifest:N}=f,P=(0,s.normalizeAppPath)(y),j=!!(q.dynamicRoutes[P]||q.routes[E]),U=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,C,!1):t.end("This page could not be found"),null);if(j&&!R){let e=!!q.routes[E],t=q.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await U();throw new g.NoFallbackError}}let O=null;!j||D.isDev||R||(O="/index"===(O=E)?"/":O);let M=!0===D.isDev||!j,L=j&&!M;N&&A&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:A,serverActionsManifest:N});let W=e.method||"GET",F=(0,o.getTracer)(),K=F.getActiveScopeSpan(),V=!!(null==S?void 0:S.isWrappedByNextServer),H=!!(0,r.getRequestMeta)(e,"minimalMode"),B=(0,r.getRequestMeta)(e,"incrementalCache")||await D.getIncrementalCache(e,I,q,H);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:w,previewProps:q.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:M,incrementalCache:B,cacheLifeProfiles:I.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>D.onRequestError(e,t,n,r,S)},sharedContext:{buildId:k,deploymentId:x}},$=new l.NodeNextRequest(e),Q=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest($,(0,d.signalFromNodeResponse)(t));try{let r,i=async e=>D.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=F.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${W} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${W} ${y}`)}),s=async r=>{var o,s;let l=async({previousCacheEntry:a})=>{try{if(!H&&T&&_&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(r);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&n.waitUntil&&(n.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)($,Q,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[b.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=b.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=b.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await D.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,S),t}},d=await D.handleResponse({req:e,nextConfig:I,cacheKey:O,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:q,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:H});if(!j)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",T?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return H&&j||u.delete(b.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)($,Q,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};V&&K?await s(K):(r=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${y}`,kind:o.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},s),void 0,!V))}catch(t){if(t instanceof g.NoFallbackError||await D.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,S),j)throw t;return await (0,p.sendResponse)($,Q,new Response(null,{status:500})),null}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:j})},"routeModule",0,D,"serverHooks",0,U,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,j],480134)},77149,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_stream_0sl4nat._.js","server/chunks/[root-of-the-server]__1ynt2jc._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1i4svm8._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__01al2n0._.js"].map(t=>e.l(t))).then(()=>t(46465)))},225970,e=>{e.v(e=>Promise.resolve().then(()=>e(65048)))},953341,e=>{e.v(t=>Promise.all(["server/chunks/15sd_@vercel_oidc_dist_token_10ruti0.js"].map(t=>e.l(t))).then(()=>t(624299)))},313282,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_analytics-store_ts_06l_t47._.js","server/chunks/packages_core_src_models-list_ts_06z8z75._.js"].map(t=>e.l(t))).then(()=>t(43697)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__06gca-c._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.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 u={...r.DEFAULT_CONFIG,...i,embeddingModelId:s??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:o,chunking:{...r.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete u.customEmbedding,u}catch{return r.DEFAULT_CONFIG}}async function o(e){let r=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,o])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},705252,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=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?a.default.join(t,"documents.json"):null}async function u(){let e=await s(!1);if(!e)return[];try{let a=await t.promises.readFile(e,"utf8"),r=JSON.parse(a);if(!Array.isArray(r))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return r}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function l(e){let n=await s(!0);if(!n)return;let i=a.default.join(a.default.dirname(n),`.${a.default.basename(n)}.${process.pid}.${(0,r.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 d(e){let t=e.content.trim();return{id:e.id??(0,r.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 c(){let e=await u(),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 a=await u(),r=new Set(a.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&r.has(i.url))&&i.content.trim()&&(a.push(d({...i,jobId:e})),i.url&&r.add(i.url),n++);return n>0&&await l(a),n})},"addDocument",0,function(e){return o(async()=>{let t=await u(),a=d(e);return t.push(a),await l(t),a})},"addDocuments",0,function(e){return o(async()=>{if(0===e.length)return[];let t=await u(),a=e.map(d);return t.push(...a),await l(t),a})},"clearDocuments",0,function(){return o(async()=>{await l([])})},"corpusStats",0,c,"deleteDocument",0,function(e){return o(async()=>{let t=await u();await l(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return o(async()=>{let t=await u(),a=new Set(e);await l(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,u,"replaceDocuments",0,function(e){return o(async()=>{let t=new Date().toISOString();await l(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return o(async()=>{let a=await u(),r=a.findIndex(t=>t.id===e);if(r<0)return;let n=a[r],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 a[r]=o,await l(a),o})},"updateDocumentsStatus",0,function(e,t){return o(async()=>{let a=await u(),r=new Set(e),n=!1;for(let e of a)r.has(e.id)&&(e.status=t,n=!0);n&&await l(a)})}])},798898,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=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,r.requireDataDir)():await (0,r.getDataDir)();return t?a.default.join(t,"jobs.json"):null}async function s(){let e=await o(!1);if(!e)return[];try{let a=await t.promises.readFile(e,"utf8");return JSON.parse(a)}catch{return[]}}async function u(e){let a=await o(!0);a&&await t.promises.writeFile(a,JSON.stringify(e,null,2),"utf8")}async function l(e){return(await s()).find(t=>t.id===e)}e.s(["deleteJob",0,function(e){return i(async()=>{let t=await s();await u(t.filter(t=>t.id!==e))})},"getJob",0,l,"readJobs",0,s,"saveJob",0,function(e){return i(async()=>{let t=await s(),a=t.findIndex(t=>t.id===e.id),r={...e,updatedAt:new Date().toISOString()};return a>=0?t[a]=r:t.unshift(r),await u(t),r})},"updateJob",0,function(e,t){return i(async()=>{let a=await s(),r=a.findIndex(t=>t.id===e);if(r<0)return;let n={...t(a[r]),updatedAt:new Date().toISOString()};return a[r]=n,await u(a),n})}])},962044,e=>{"use strict";var t=e.i(239441),a=e.i(449055),r=e.i(391328),n=e.i(6352),i=e.i(746789),o=e.i(423437),s=e.i(178820),u=e.i(569191),l=e.i(576251),d=e.i(199962),c=e.i(547545),p=e.i(664046),f=e.i(235691),w=e.i(298907),m=e.i(110763),g=e.i(193695);e.i(673243);var h=e.i(236167),y=e.i(766576),v=e.i(798898),C=e.i(705252),R=e.i(304368);let E=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 D(e,t){try{let a=await (0,R.scrapePage)(t.url);if(b(a.markdown))throw Error("Scraping blocked by anti-bot protection (e.g. Cloudflare)");return{added:await (0,C.addCrawledDocuments)(e,[{title:a.title,url:a.url,content:a.markdown,source:"scrape"}]),target:{...t,status:"completed",pagesCrawled:+!!a.markdown}}}catch(e){return{added:0,target:{...t,status:"failed",error:e instanceof Error?e.message:"scrape failed"}}}}async function x(e,t,a){try{if(!t.firecrawlId){let e=await (0,R.startCrawl)(t.url,a);return{added:0,target:{...t,firecrawlId:e,status:"running"}}}let r=t.firecrawlId,n=!1,i=0,o=0,s=t.pagesCrawled,u="running",l=[];for(;i<5;){let e=await (0,R.getCrawlStatus)(r,n);for(let t of(s=e.completed||s,e.pages))b(t.markdown)||l.push({title:t.title,url:t.url,content:t.markdown,source:"scrape"});if(i++,"completed"===e.state?u="completed":"failed"===e.state?u="failed":"cancelled"===e.state&&(u="cancelled"),e.next)r=e.next,n=!0;else break}return l.length&&(o=await (0,C.addCrawledDocuments)(e,l)),{added:o,target:{...t,status:u,pagesCrawled:s}}}catch(e){return{added:0,target:{...t,status:"failed",error:e instanceof Error?e.message:"crawl failed"}}}}async function S(e){let t=await (0,v.getJob)(e);if(t){if(["completed","failed","cancelled"].includes(t.status)||E.has(e))return t;E.add(e);try{let a=await Promise.all(t.targets.map(a=>"completed"===a.status||"failed"===a.status?Promise.resolve({target:a,added:0}):"page"===a.scope?D(e,a):x(e,a,t.pageLimit))),r=a.map(e=>e.target),n=r.reduce((e,t)=>e+t.pagesCrawled,0);return await (0,v.updateJob)(e,e=>({...e,targets:r,pagesCrawled:n,docCount:e.docCount+a.reduce((e,t)=>e+t.added,0),status:r.every(e=>"completed"===e.status)?"completed":r.every(e=>"failed"===e.status)?"failed":r.every(e=>"completed"===e.status||"failed"===e.status)&&r.some(e=>"completed"===e.status)?"completed":"running"}))}finally{E.delete(e)}}}async function N(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,R.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 A(e,{params:t}){let{id:a}=await t,r=await S(a);return r?y.NextResponse.json({job:r}):y.NextResponse.json({error:"Job not found."},{status:404})}async function I(e,{params:t}){let{id:a}=await t;if(new URL(e.url).searchParams.get("remove"))return await (0,v.deleteJob)(a),y.NextResponse.json({ok:!0});if(!await (0,v.getJob)(a))return y.NextResponse.json({error:"Job not found."},{status:404});let r=await N(a);return y.NextResponse.json({job:r})}e.s(["DELETE",0,I,"GET",0,A,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],934385);var O=e.i(934385);let T=new t.AppRouteRouteModule({definition:{kind:a.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:O,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:P,serverHooks:_}=T;async function U(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),T.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/jobs/[id]/route";y=y.replace(/\/index$/,"")||"/";let v=await T.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:C,deploymentId:R,params:E,nextConfig:b,parsedUrl:D,isDraftMode:x,prerenderManifest:S,routerServerContext:N,isOnDemandRevalidate:A,revalidateOnlyGenerated:I,resolvedPathname:O,clientReferenceManifest:j,serverActionsManifest:P}=v,_=(0,s.normalizeAppPath)(y),U=!!(S.dynamicRoutes[_]||S.routes[O]),k=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,D,!1):t.end("This page could not be found"),null);if(U&&!x){let e=!!S.routes[O],t=S.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await k();throw new g.NoFallbackError}}let F=null;!U||T.isDev||x||(F="/index"===(F=O)?"/":F);let q=!0===T.isDev||!U,J=U&&!q;P&&j&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:j,serverActionsManifest:P});let M=e.method||"GET",H=(0,i.getTracer)(),L=H.getActiveScopeSpan(),$=!!(null==N?void 0:N.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,b,S,G);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let B={params:E,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:q,incrementalCache:K,cacheLifeProfiles:b.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>T.onRequestError(e,t,r,n,N)},sharedContext:{buildId:C,deploymentId:R}},V=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),X=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t));try{let n,o=async e=>T.handle(X,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${M} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${M} ${y}`)}),s=async n=>{var i,s;let u=async({previousCacheEntry:a})=>{try{if(!G&&A&&I&&!a)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=B.renderOpts.fetchMetrics;let s=B.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let u=B.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(V,W,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,r=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:h.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:J,isOnDemandRevalidate:A})},!1,N),t}},l=await T.handleResponse({req:e,nextConfig:b,cacheKey:F,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:I,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:G});if(!U)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==h.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(s=l.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,f.fromNodeOutgoingHttpHeaders)(l.value.headers);return G&&U||d.delete(m.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,w.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(V,W,new Response(l.value.body,{headers:d,status:l.value.status||200})),null};$&&L?await s(L):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},s),void 0,!$))}catch(t){if(t instanceof g.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:J,isOnDemandRevalidate:A})},!1,N),U)throw t;return await (0,p.sendResponse)(V,W,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:P})},"routeModule",0,T,"serverHooks",0,_,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,P],962044)}];
1
+ module.exports=[367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.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 u={...r.DEFAULT_CONFIG,...i,embeddingModelId:s??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:o,chunking:{...r.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete u.customEmbedding,u}catch{return r.DEFAULT_CONFIG}}async function o(e){let r=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,o])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},705252,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=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?a.default.join(t,"documents.json"):null}async function u(){let e=await s(!1);if(!e)return[];try{let a=await t.promises.readFile(e,"utf8"),r=JSON.parse(a);if(!Array.isArray(r))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return r}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function l(e){let n=await s(!0);if(!n)return;let i=a.default.join(a.default.dirname(n),`.${a.default.basename(n)}.${process.pid}.${(0,r.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 d(e){let t=e.content.trim();return{id:e.id??(0,r.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 c(){let e=await u(),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 a=await u(),r=new Set(a.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&r.has(i.url))&&i.content.trim()&&(a.push(d({...i,jobId:e})),i.url&&r.add(i.url),n++);return n>0&&await l(a),n})},"addDocument",0,function(e){return o(async()=>{let t=await u(),a=d(e);return t.push(a),await l(t),a})},"addDocuments",0,function(e){return o(async()=>{if(0===e.length)return[];let t=await u(),a=e.map(d);return t.push(...a),await l(t),a})},"clearDocuments",0,function(){return o(async()=>{await l([])})},"corpusStats",0,c,"deleteDocument",0,function(e){return o(async()=>{let t=await u();await l(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return o(async()=>{let t=await u(),a=new Set(e);await l(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,u,"replaceDocuments",0,function(e){return o(async()=>{let t=new Date().toISOString();await l(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return o(async()=>{let a=await u(),r=a.findIndex(t=>t.id===e);if(r<0)return;let n=a[r],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 a[r]=o,await l(a),o})},"updateDocumentsStatus",0,function(e,t){return o(async()=>{let a=await u(),r=new Set(e),n=!1;for(let e of a)r.has(e.id)&&(e.status=t,n=!0);n&&await l(a)})}])},798898,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=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,r.requireDataDir)():await (0,r.getDataDir)();return t?a.default.join(t,"jobs.json"):null}async function s(){let e=await o(!1);if(!e)return[];try{let a=await t.promises.readFile(e,"utf8");return JSON.parse(a)}catch{return[]}}async function u(e){let a=await o(!0);a&&await t.promises.writeFile(a,JSON.stringify(e,null,2),"utf8")}async function l(e){return(await s()).find(t=>t.id===e)}e.s(["deleteJob",0,function(e){return i(async()=>{let t=await s();await u(t.filter(t=>t.id!==e))})},"getJob",0,l,"readJobs",0,s,"saveJob",0,function(e){return i(async()=>{let t=await s(),a=t.findIndex(t=>t.id===e.id),r={...e,updatedAt:new Date().toISOString()};return a>=0?t[a]=r:t.unshift(r),await u(t),r})},"updateJob",0,function(e,t){return i(async()=>{let a=await s(),r=a.findIndex(t=>t.id===e);if(r<0)return;let n={...t(a[r]),updatedAt:new Date().toISOString()};return a[r]=n,await u(a),n})}])},962044,e=>{"use strict";var t=e.i(239441),a=e.i(449055),r=e.i(391328),n=e.i(6352),i=e.i(746789),o=e.i(423437),s=e.i(178820),u=e.i(569191),l=e.i(576251),d=e.i(199962),c=e.i(547545),p=e.i(664046),f=e.i(235691),w=e.i(298907),m=e.i(110763),g=e.i(193695);e.i(673243);var h=e.i(236167),y=e.i(766576),v=e.i(798898),C=e.i(705252),R=e.i(304368);let E=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 D(e,t){try{let a=await (0,R.scrapePage)(t.url);if(b(a.markdown))throw Error("Scraping blocked by anti-bot protection (e.g. Cloudflare)");return{added:await (0,C.addCrawledDocuments)(e,[{title:a.title,url:a.url,content:a.markdown,source:"scrape"}]),target:{...t,status:"completed",pagesCrawled:+!!a.markdown}}}catch(e){return{added:0,target:{...t,status:"failed",error:e instanceof Error?e.message:"scrape failed"}}}}async function x(e,t,a){try{if(!t.firecrawlId){let e=await (0,R.startCrawl)(t.url,a);return{added:0,target:{...t,firecrawlId:e,status:"running"}}}let r=t.firecrawlId,n=!1,i=0,o=0,s=t.pagesCrawled,u="running",l=[];for(;i<5;){let e=await (0,R.getCrawlStatus)(r,n);for(let t of(s=e.completed||s,e.pages))b(t.markdown)||l.push({title:t.title,url:t.url,content:t.markdown,source:"scrape"});if(i++,"completed"===e.state?u="completed":"failed"===e.state?u="failed":"cancelled"===e.state&&(u="cancelled"),e.next)r=e.next,n=!0;else break}return l.length&&(o=await (0,C.addCrawledDocuments)(e,l)),{added:o,target:{...t,status:u,pagesCrawled:s}}}catch(e){if(t.firecrawlId?.startsWith("native-")&&e instanceof Error&&"Native crawl was not found."===e.message)return{added:0,target:{...t,firecrawlId:void 0,status:"running",error:"Restarting the local crawl…"}};return{added:0,target:{...t,status:"failed",error:e instanceof Error?e.message:"crawl failed"}}}}async function S(e){let t=await (0,v.getJob)(e);if(t){if(["completed","failed","cancelled"].includes(t.status)||E.has(e))return t;E.add(e);try{let a=await Promise.all(t.targets.map(a=>"completed"===a.status||"failed"===a.status?Promise.resolve({target:a,added:0}):"page"===a.scope?D(e,a):x(e,a,t.pageLimit))),r=a.map(e=>e.target),n=r.reduce((e,t)=>e+t.pagesCrawled,0);return await (0,v.updateJob)(e,e=>({...e,targets:r,pagesCrawled:n,docCount:e.docCount+a.reduce((e,t)=>e+t.added,0),status:r.every(e=>"completed"===e.status)?"completed":r.every(e=>"failed"===e.status)?"failed":r.every(e=>"completed"===e.status||"failed"===e.status)&&r.some(e=>"completed"===e.status)?"completed":"running"}))}finally{E.delete(e)}}}async function N(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,R.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 A(e,{params:t}){let{id:a}=await t,r=await S(a);return r?y.NextResponse.json({job:r}):y.NextResponse.json({error:"Job not found."},{status:404})}async function I(e,{params:t}){let{id:a}=await t;if(new URL(e.url).searchParams.get("remove"))return await (0,v.deleteJob)(a),y.NextResponse.json({ok:!0});if(!await (0,v.getJob)(a))return y.NextResponse.json({error:"Job not found."},{status:404});let r=await N(a);return y.NextResponse.json({job:r})}e.s(["DELETE",0,I,"GET",0,A,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],934385);var O=e.i(934385);let T=new t.AppRouteRouteModule({definition:{kind:a.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:O,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:P,serverHooks:_}=T;async function U(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),T.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/jobs/[id]/route";y=y.replace(/\/index$/,"")||"/";let v=await T.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:C,deploymentId:R,params:E,nextConfig:b,parsedUrl:D,isDraftMode:x,prerenderManifest:S,routerServerContext:N,isOnDemandRevalidate:A,revalidateOnlyGenerated:I,resolvedPathname:O,clientReferenceManifest:j,serverActionsManifest:P}=v,_=(0,s.normalizeAppPath)(y),U=!!(S.dynamicRoutes[_]||S.routes[O]),k=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,D,!1):t.end("This page could not be found"),null);if(U&&!x){let e=!!S.routes[O],t=S.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await k();throw new g.NoFallbackError}}let F=null;!U||T.isDev||x||(F="/index"===(F=O)?"/":F);let q=!0===T.isDev||!U,J=U&&!q;P&&j&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:j,serverActionsManifest:P});let M=e.method||"GET",H=(0,i.getTracer)(),L=H.getActiveScopeSpan(),$=!!(null==N?void 0:N.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,b,S,G);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let B={params:E,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:q,incrementalCache:K,cacheLifeProfiles:b.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>T.onRequestError(e,t,r,n,N)},sharedContext:{buildId:C,deploymentId:R}},W=new u.NodeNextRequest(e),V=new u.NodeNextResponse(t),X=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(t));try{let n,o=async e=>T.handle(X,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${M} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${M} ${y}`)}),s=async n=>{var i,s;let u=async({previousCacheEntry:a})=>{try{if(!G&&A&&I&&!a)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=B.renderOpts.fetchMetrics;let s=B.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let u=B.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(W,V,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,r=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:h.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:J,isOnDemandRevalidate:A})},!1,N),t}},l=await T.handleResponse({req:e,nextConfig:b,cacheKey:F,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:I,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:G});if(!U)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==h.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(s=l.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,f.fromNodeOutgoingHttpHeaders)(l.value.headers);return G&&U||d.delete(m.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,w.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(W,V,new Response(l.value.body,{headers:d,status:l.value.status||200})),null};$&&L?await s(L):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},s),void 0,!$))}catch(t){if(t instanceof g.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:J,isOnDemandRevalidate:A})},!1,N),U)throw t;return await (0,p.sendResponse)(W,V,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:P})},"routeModule",0,T,"serverHooks",0,_,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,P],962044)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0j2l54r._.js.map
@@ -1,4 +1,4 @@
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),s=i.customEmbeddings,o=i.embeddingModelId;if(i.customEmbedding&&!s?.length){let e=i.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...i,embeddingModelId:o??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,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 s(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,s])},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 s(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function o(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 o(!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 d(e){let n=await o(!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 c(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 u(){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 s(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(c({...i,jobId:e})),i.url&&a.add(i.url),n++);return n>0&&await d(r),n})},"addDocument",0,function(e){return s(async()=>{let t=await l(),r=c(e);return t.push(r),await d(t),r})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await l(),r=e.map(c);return t.push(...r),await d(t),r})},"clearDocuments",0,function(){return s(async()=>{await d([])})},"corpusStats",0,u,"deleteDocument",0,function(e){return s(async()=>{let t=await l();await d(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await l(),r=new Set(e);await d(t.filter(e=>!r.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await d(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return s(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,s={...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]=s,await d(r),s})},"updateDocumentsStatus",0,function(e,t){return s(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 d(r)})}])},399828,e=>{"use strict";let t={"openai/text-embedding-3-small":{dimensions:1536,maxInputTokens:8191},"openai/text-embedding-3-large":{dimensions:3072,maxInputTokens:8191},"openai/text-embedding-ada-002":{dimensions:1536,maxInputTokens:8191},"google/gemini-embedding-2":{dimensions:768,maxInputTokens:2048},"google/gemini-embedding-001":{dimensions:768,maxInputTokens:2048},"cohere/embed-english-v3.0":{dimensions:1024,maxInputTokens:512},"cohere/embed-multilingual-v3.0":{dimensions:1024,maxInputTokens:512},"voyage/voyage-3":{dimensions:1024,maxInputTokens:32e3},"voyage/voyage-3-lite":{dimensions:512,maxInputTokens:32e3},"voyage/voyage-code-3":{dimensions:1024,maxInputTokens:32e3},"mistral/mistral-embed":{dimensions:1024,maxInputTokens:8192},"jina/jina-embeddings-v3":{dimensions:1024,maxInputTokens:8192},"jina/jina-clip-v2":{dimensions:1024,maxInputTokens:8192},"nomic/nomic-embed-text-v1.5":{dimensions:768,maxInputTokens:8192}},r=[{id:"openai/text-embedding-3-small",label:"text-embedding-3-small",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Fast, cheap, strong general-purpose default."},{id:"openai/text-embedding-3-large",label:"text-embedding-3-large",provider:"openai",dimensions:3072,maxInputTokens:8191,description:"Highest quality OpenAI embeddings, larger vectors."},{id:"openai/text-embedding-ada-002",label:"text-embedding-ada-002",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Legacy model — kept for backward compatibility."},{id:"google/gemini-embedding-001",label:"gemini-embedding-001",provider:"google",dimensions:768,maxInputTokens:2048,description:"Gemini embedding 001."},{id:"cohere/embed-english-v3.0",label:"embed-english-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"Tuned for retrieval; great for English-heavy corpora."},{id:"cohere/embed-multilingual-v3.0",label:"embed-multilingual-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"100+ language multilingual retrieval embeddings."},{id:"voyage/voyage-3",label:"voyage-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Voyage's best general-purpose retrieval model."},{id:"voyage/voyage-3-lite",label:"voyage-3-lite",provider:"voyage",dimensions:512,maxInputTokens:32e3,description:"Optimized for latency and cost with strong performance."},{id:"voyage/voyage-code-3",label:"voyage-code-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Specialized for code retrieval tasks."},{id:"mistral/mistral-embed",label:"mistral-embed",provider:"mistral",dimensions:1024,maxInputTokens:8192,description:"Mistral's efficient embedding model for retrieval."},{id:"jina/jina-embeddings-v3",label:"jina-embeddings-v3",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multilingual, task-specific embeddings from Jina AI."},{id:"jina/jina-clip-v2",label:"jina-clip-v2",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multimodal embeddings for text and images."},{id:"nomic/nomic-embed-text-v1.5",label:"nomic-embed-text-v1.5",provider:"nomic",dimensions:768,maxInputTokens:8192,description:"Open-source, highly capable text embeddings."}];e.s(["EMBEDDING_DIMENSIONS",0,t,"EMBEDDING_MODELS",0,r,"getEmbeddingModel",0,function(e){return r.find(t=>t.id===e)},"getEmbeddingModelsForProvider",0,function(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())},"toEmbeddingDescriptor",0,function(e){let r=t[e.id],a=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:a,dimensions:r?.dimensions??e.context_window??768,maxInputTokens:r?.maxInputTokens??e.max_tokens??2048,description:e.description||""}}])},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,r){let a={};for(let n of e.fields.filter(e=>{if(e.showWhen){let r=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(r))return!1}return!e.showWhenIndexType||!r||!!e.showWhenIndexType.includes(r)}))n.required&&!t[n.key]?.trim()&&(a[n.key]=`${n.label} is required`);return a}])},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},983131,778923,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(660526),n=e.i(666680);let i="larkup-sandbox:latest",s="/sandbox/output",o=r.default.join({get url(){return`file://${e.P("packages/sandbox/dist/docker-runner.js")}`}}.dirname??"/ROOT/packages/sandbox/dist",".."),l=null;async function d(){if(!l){let{default:e}=await import("dockerode");l=new e}return l}async function c(){let e=await d();try{let t=await e.version(),r=await e.listImages({filters:{reference:[i]}});return{status:r.length>0?"ready":"image-not-found",backend:"docker",dockerVersion:t.Version,imageReady:r.length>0}}catch(e){return{status:"docker-not-found",backend:"docker",error:e.message??"Docker daemon not available"}}}async function u(e){let a=await d(),n=r.default.join(o,"Dockerfile");try{await t.promises.access(n)}catch{throw Error(`Sandbox Dockerfile not found at ${n}. Ensure the @larkup/sandbox package is properly installed.`)}e?.("Building sandbox image…");let s=await a.buildImage({context:o,src:["Dockerfile"]},{t:i});await new Promise((t,r)=>{a.modem.followProgress(s,e=>{e?r(e):t()},t=>{t.stream&&e?.(t.stream.trim())})}),e?.("Sandbox image built successfully ✓")}async function p(){let e=await d();if((await e.listImages({filters:{reference:[i]}})).length>0)return!0;try{return await u(),!0}catch{return!1}}async function m(e,i){let o,l,c=await d(),u=Date.now(),p=r.default.join(a.default.tmpdir(),`larkup-sandbox-${(0,n.randomUUID)()}`),m=r.default.join(p,"input"),g=r.default.join(p,"output");if(await t.promises.mkdir(m,{recursive:!0}),await t.promises.mkdir(g,{recursive:!0}),e.files)for(let a of e.files){let e=r.default.join(m,a.name);a.isBase64?await t.promises.writeFile(e,Buffer.from(a.content,"base64")):await t.promises.writeFile(e,a.content,"utf8")}if("python"===e.language){var h;h=e.code,o=`
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),s=i.customEmbeddings,o=i.embeddingModelId;if(i.customEmbedding&&!s?.length){let e=i.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...i,embeddingModelId:o??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,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 s(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,s])},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 s(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function o(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 o(!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 d(e){let n=await o(!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 c(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 u(){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 s(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(c({...i,jobId:e})),i.url&&a.add(i.url),n++);return n>0&&await d(r),n})},"addDocument",0,function(e){return s(async()=>{let t=await l(),r=c(e);return t.push(r),await d(t),r})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await l(),r=e.map(c);return t.push(...r),await d(t),r})},"clearDocuments",0,function(){return s(async()=>{await d([])})},"corpusStats",0,u,"deleteDocument",0,function(e){return s(async()=>{let t=await l();await d(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await l(),r=new Set(e);await d(t.filter(e=>!r.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await d(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return s(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,s={...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]=s,await d(r),s})},"updateDocumentsStatus",0,function(e,t){return s(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 d(r)})}])},399828,e=>{"use strict";let t={"openai/text-embedding-3-small":{dimensions:1536,maxInputTokens:8191},"openai/text-embedding-3-large":{dimensions:3072,maxInputTokens:8191},"openai/text-embedding-ada-002":{dimensions:1536,maxInputTokens:8191},"google/gemini-embedding-2":{dimensions:768,maxInputTokens:2048},"google/gemini-embedding-001":{dimensions:768,maxInputTokens:2048},"cohere/embed-english-v3.0":{dimensions:1024,maxInputTokens:512},"cohere/embed-multilingual-v3.0":{dimensions:1024,maxInputTokens:512},"voyage/voyage-3":{dimensions:1024,maxInputTokens:32e3},"voyage/voyage-3-lite":{dimensions:512,maxInputTokens:32e3},"voyage/voyage-code-3":{dimensions:1024,maxInputTokens:32e3},"mistral/mistral-embed":{dimensions:1024,maxInputTokens:8192},"jina/jina-embeddings-v3":{dimensions:1024,maxInputTokens:8192},"jina/jina-clip-v2":{dimensions:1024,maxInputTokens:8192},"nomic/nomic-embed-text-v1.5":{dimensions:768,maxInputTokens:8192}},r=[{id:"openai/text-embedding-3-small",label:"text-embedding-3-small",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Fast, cheap, strong general-purpose default."},{id:"openai/text-embedding-3-large",label:"text-embedding-3-large",provider:"openai",dimensions:3072,maxInputTokens:8191,description:"Highest quality OpenAI embeddings, larger vectors."},{id:"openai/text-embedding-ada-002",label:"text-embedding-ada-002",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Legacy model — kept for backward compatibility."},{id:"google/gemini-embedding-2",label:"gemini-embedding-2",provider:"google",dimensions:768,maxInputTokens:2048,description:"Current Gemini embedding model with multilingual retrieval support."},{id:"google/gemini-embedding-001",label:"gemini-embedding-001",provider:"google",dimensions:768,maxInputTokens:2048,description:"Gemini embedding 001."},{id:"cohere/embed-english-v3.0",label:"embed-english-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"Tuned for retrieval; great for English-heavy corpora."},{id:"cohere/embed-multilingual-v3.0",label:"embed-multilingual-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"100+ language multilingual retrieval embeddings."},{id:"voyage/voyage-3",label:"voyage-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Voyage's best general-purpose retrieval model."},{id:"voyage/voyage-3-lite",label:"voyage-3-lite",provider:"voyage",dimensions:512,maxInputTokens:32e3,description:"Optimized for latency and cost with strong performance."},{id:"voyage/voyage-code-3",label:"voyage-code-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Specialized for code retrieval tasks."},{id:"mistral/mistral-embed",label:"mistral-embed",provider:"mistral",dimensions:1024,maxInputTokens:8192,description:"Mistral's efficient embedding model for retrieval."},{id:"jina/jina-embeddings-v3",label:"jina-embeddings-v3",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multilingual, task-specific embeddings from Jina AI."},{id:"jina/jina-clip-v2",label:"jina-clip-v2",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multimodal embeddings for text and images."},{id:"nomic/nomic-embed-text-v1.5",label:"nomic-embed-text-v1.5",provider:"nomic",dimensions:768,maxInputTokens:8192,description:"Open-source, highly capable text embeddings."}];e.s(["EMBEDDING_DIMENSIONS",0,t,"EMBEDDING_MODELS",0,r,"getEmbeddingModel",0,function(e){return r.find(t=>t.id===e)},"getEmbeddingModelsForProvider",0,function(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())},"toEmbeddingDescriptor",0,function(e){let r=t[e.id],a=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:a,dimensions:r?.dimensions??e.context_window??768,maxInputTokens:r?.maxInputTokens??e.max_tokens??2048,description:e.description||""}}])},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,r){let a={};for(let n of e.fields.filter(e=>{if(e.showWhen){let r=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(r))return!1}return!e.showWhenIndexType||!r||!!e.showWhenIndexType.includes(r)}))n.required&&!t[n.key]?.trim()&&(a[n.key]=`${n.label} is required`);return a}])},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},983131,778923,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(660526),n=e.i(666680);let i="larkup-sandbox:latest",s="/sandbox/output",o=r.default.join({get url(){return`file://${e.P("packages/sandbox/dist/docker-runner.js")}`}}.dirname??"/ROOT/packages/sandbox/dist",".."),l=null;async function d(){if(!l){let{default:e}=await import("dockerode");l=new e}return l}async function c(){let e=await d();try{let t=await e.version(),r=await e.listImages({filters:{reference:[i]}});return{status:r.length>0?"ready":"image-not-found",backend:"docker",dockerVersion:t.Version,imageReady:r.length>0}}catch(e){return{status:"docker-not-found",backend:"docker",error:e.message??"Docker daemon not available"}}}async function u(e){let a=await d(),n=r.default.join(o,"Dockerfile");try{await t.promises.access(n)}catch{throw Error(`Sandbox Dockerfile not found at ${n}. Ensure the @larkup/sandbox package is properly installed.`)}e?.("Building sandbox image…");let s=await a.buildImage({context:o,src:["Dockerfile"]},{t:i});await new Promise((t,r)=>{a.modem.followProgress(s,e=>{e?r(e):t()},t=>{t.stream&&e?.(t.stream.trim())})}),e?.("Sandbox image built successfully ✓")}async function p(){let e=await d();if((await e.listImages({filters:{reference:[i]}})).length>0)return!0;try{return await u(),!0}catch{return!1}}async function m(e,i){let o,l,c=await d(),u=Date.now(),p=r.default.join(a.default.tmpdir(),`larkup-sandbox-${(0,n.randomUUID)()}`),m=r.default.join(p,"input"),g=r.default.join(p,"output");if(await t.promises.mkdir(m,{recursive:!0}),await t.promises.mkdir(g,{recursive:!0}),e.files)for(let a of e.files){let e=r.default.join(m,a.name);a.isBase64?await t.promises.writeFile(e,Buffer.from(a.content,"base64")):await t.promises.writeFile(e,a.content,"utf8")}if("python"===e.language){var h;h=e.code,o=`
2
2
  import sys, os, json, traceback
3
3
 
4
4
  # Ensure output directory exists
@@ -167,6 +167,6 @@ CRITICAL: Draw logical deductions from the events (e.g., explicitly stating who
167
167
  Section notes:
168
168
  ${y.map((e,t)=>`## Section ${t+1}
169
169
  ${e}`).join("\n\n")}`),D=await d(k,I,w,e.mediaType);return _++,await e.onProgress?.(_,_,"Created searchable media notes."),D.trim()}function i(e,t){let r=Math.max(0,Math.floor(t));try{let t=new URL(e);if(/(^|\.)youtube\.com$|(^|\.)youtu\.be$/.test(t.hostname)||t.searchParams.has("v"))return t.searchParams.set("t",`${r}s`),t.toString()}catch{}return`${e.split("#")[0]}#t=${r}`}function s(e){let t=Math.max(0,Math.floor(e)),r=Math.floor(t/3600),a=Math.floor(t%3600/60),n=t%60;return r>0?`${r}:${String(a).padStart(2,"0")}:${String(n).padStart(2,"0")}`:`${a}:${String(n).padStart(2,"0")}`}function o(e,t){if(e.length<=t)return[e];let r=[],a=0;for(;a<e.length;){let n=Math.min(e.length,a+t);if(n<e.length){let r=e.lastIndexOf("\n",n);r>a+t/2&&(n=r)}r.push(e.slice(a,n)),a=n}return r}function l(e){return`[${s(e.startSecs)}–${s(e.endSecs)}]
170
- ${e.text}`}async function d(r,a,n,i){let{text:s,usage:o}=await (0,t.generateText)({model:r,prompt:a,maxOutputTokens:1400,temperature:0}),{estimateCost:l,trackUsageEvent:d}=await e.A(313282);return d({type:"media_processing",mediaType:i,modelId:n.modelId,provider:n.provider,promptTokens:o.inputTokens??0,completionTokens:o.outputTokens??0,totalTokens:o.totalTokens??0,estimatedCost:l(n.modelId,o.inputTokens??0,o.outputTokens??0),timestamp:new Date().toISOString()}).catch(e=>console.error("Failed to record media synthesis usage:",e)),s}e.s(["buildMediaDocumentInputs",0,function(e){let t={mediaAssetId:e.assetId,mediaType:e.mediaType,fileName:e.fileName,mimeType:e.mimeType,mediaUrl:e.localUrl,originalUrl:e.originalUrl,durationSecs:e.durationSecs,transcriptSource:e.transcriptSource,transcriptProvider:e.transcriptProvider,transcriptLanguage:e.transcriptLanguage},r=e.originalUrl||e.localUrl,a="video"===e.mediaType?"Video":"Audio";return[{title:e.title,content:[`${a}: ${e.title}`,`Duration: ${s(e.durationSecs)}`,"## Human-style evidence notes",e.summary].join("\n\n"),source:"media",url:r,metadata:{...t,contentKind:`${e.mediaType}-summary`,isMediaSummary:!0,segmentCount:e.segments.length}},...e.segments.map(n=>({title:`${e.title} — ${s(n.startSecs)}`,content:[`${a}: ${e.title}`,`Evidence at ${s(n.startSecs)}–${s(n.endSecs)}`,n.text].join("\n\n"),source:"media",url:i(r,n.startSecs),metadata:{...t,contentKind:"video"===e.mediaType?"multimodal-segment":"audio-transcript-segment",isMediaSummary:!1,sequence:n.sequence,startSecs:n.startSecs,endSecs:n.endSecs,evidenceKinds:[...n.transcript?.trim()?["speech"]:[],...n.visualContext?.trim()?["visual","ocr"]:[]]}}))]},"createFallbackMediaSummary",0,function(e,t,r){return[`Overview: ${"video"===t?"Video":"Audio"} evidence notes for "${e}".`,"Representative timeline evidence:",...[...r.slice(0,2),...r.slice(Math.max(2,Math.floor(r.length/2)-1),Math.floor(r.length/2)+1),...r.slice(-3)].filter((e,t,r)=>r.findIndex(t=>t.sequence===e.sequence)===t).map(l),"The timestamped evidence documents contain the complete timeline."].join("\n\n")},"createMediaKnowledgeSummary",0,n,"formatTime",0,s,"normalizeMediaCitationRange",0,function(e,t,r,a){if("image"===e||void 0===r||!Number.isFinite(r))return{};let n=void 0!==t&&Number.isFinite(t)?Math.max(0,t):1/0,i=Math.min(Math.max(0,r),n),s=void 0!==a&&Number.isFinite(a)?Math.min(Math.max(i,a),n):void 0;return{startSecs:i,endSecs:s}},"queryAwareExcerpt",0,function(e,t,r,a=!1){if(e.length<=r)return e;let n=t.normalize("NFKC").toLocaleLowerCase().match(/[\p{Letter}\p{Number}][\p{Letter}\p{Mark}\p{Number}_-]{2,}/gu)??[],i=e.normalize("NFKC").toLocaleLowerCase(),s=[...new Set(n)].map(e=>i.indexOf(e)).filter(e=>e>=0);if(s.length>0){let t=Math.min(...s),a=Math.max(0,Math.min(e.length-r,t-Math.floor(r/3)));return`${a>0?"…":""}${e.slice(a,a+r)}${a+r<e.length?"…":""}`}return a?`…${e.slice(-r)}`:`${e.slice(0,r)}…`},"timestampMediaUrl",0,i])},225970,e=>{e.v(e=>Promise.resolve().then(()=>e(65048)))},953341,e=>{e.v(t=>Promise.all(["server/chunks/15sd_@vercel_oidc_dist_token_10ruti0.js"].map(t=>e.l(t))).then(()=>t(624299)))},77149,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1ynt2jc._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1lhls88._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__01al2n0._.js"].map(t=>e.l(t))).then(()=>t(46465)))},313282,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_analytics-store_ts_06l_t47._.js"].map(t=>e.l(t))).then(()=>t(43697)))},195213,e=>{e.v(e=>Promise.resolve().then(()=>e(568886)))},484620,e=>{e.v(e=>Promise.resolve().then(()=>e(504740)))},627270,e=>{e.v(e=>Promise.resolve().then(()=>e(612069)))},311108,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0n78tj0._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(104757)))},118890,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1m18nr1._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(508582)))},3366,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__18ih29u._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(835716)))},654210,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0a8dopv._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(38862)))},187616,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1gte051._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(129921)))},465615,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0j034yj._.js","server/chunks/0598_next_1f_7r6r._.js","server/chunks/packages_scraper_src_0kkcv_v._.js"].map(t=>e.l(t))).then(()=>t(426237)))}];
170
+ ${e.text}`}async function d(r,a,n,i){let{text:s,usage:o}=await (0,t.generateText)({model:r,prompt:a,maxOutputTokens:1400,temperature:0}),{estimateCost:l,trackUsageEvent:d}=await e.A(313282);return d({type:"media_processing",mediaType:i,modelId:n.modelId,provider:n.provider,promptTokens:o.inputTokens??0,completionTokens:o.outputTokens??0,totalTokens:o.totalTokens??0,estimatedCost:l(n.modelId,o.inputTokens??0,o.outputTokens??0),timestamp:new Date().toISOString()}).catch(e=>console.error("Failed to record media synthesis usage:",e)),s}e.s(["buildMediaDocumentInputs",0,function(e){let t={mediaAssetId:e.assetId,mediaType:e.mediaType,fileName:e.fileName,mimeType:e.mimeType,mediaUrl:e.localUrl,originalUrl:e.originalUrl,durationSecs:e.durationSecs,transcriptSource:e.transcriptSource,transcriptProvider:e.transcriptProvider,transcriptLanguage:e.transcriptLanguage},r=e.originalUrl||e.localUrl,a="video"===e.mediaType?"Video":"Audio";return[{title:e.title,content:[`${a}: ${e.title}`,`Duration: ${s(e.durationSecs)}`,"## Human-style evidence notes",e.summary].join("\n\n"),source:"media",url:r,metadata:{...t,contentKind:`${e.mediaType}-summary`,isMediaSummary:!0,segmentCount:e.segments.length}},...e.segments.map(n=>({title:`${e.title} — ${s(n.startSecs)}`,content:[`${a}: ${e.title}`,`Evidence at ${s(n.startSecs)}–${s(n.endSecs)}`,n.text].join("\n\n"),source:"media",url:i(r,n.startSecs),metadata:{...t,contentKind:"video"===e.mediaType?"multimodal-segment":"audio-transcript-segment",isMediaSummary:!1,sequence:n.sequence,startSecs:n.startSecs,endSecs:n.endSecs,evidenceKinds:[...n.transcript?.trim()?["speech"]:[],...n.visualContext?.trim()?["visual","ocr"]:[]]}}))]},"createFallbackMediaSummary",0,function(e,t,r){return[`Overview: ${"video"===t?"Video":"Audio"} evidence notes for "${e}".`,"Representative timeline evidence:",...[...r.slice(0,2),...r.slice(Math.max(2,Math.floor(r.length/2)-1),Math.floor(r.length/2)+1),...r.slice(-3)].filter((e,t,r)=>r.findIndex(t=>t.sequence===e.sequence)===t).map(l),"The timestamped evidence documents contain the complete timeline."].join("\n\n")},"createMediaKnowledgeSummary",0,n,"formatTime",0,s,"normalizeMediaCitationRange",0,function(e,t,r,a){if("image"===e||void 0===r||!Number.isFinite(r))return{};let n=void 0!==t&&Number.isFinite(t)?Math.max(0,t):1/0,i=Math.min(Math.max(0,r),n),s=void 0!==a&&Number.isFinite(a)?Math.min(Math.max(i,a),n):void 0;return{startSecs:i,endSecs:s}},"queryAwareExcerpt",0,function(e,t,r,a=!1){if(e.length<=r)return e;let n=t.normalize("NFKC").toLocaleLowerCase().match(/[\p{Letter}\p{Number}][\p{Letter}\p{Mark}\p{Number}_-]{2,}/gu)??[],i=e.normalize("NFKC").toLocaleLowerCase(),s=[...new Set(n)].map(e=>i.indexOf(e)).filter(e=>e>=0);if(s.length>0){let t=Math.min(...s),a=Math.max(0,Math.min(e.length-r,t-Math.floor(r/3)));return`${a>0?"…":""}${e.slice(a,a+r)}${a+r<e.length?"…":""}`}return a?`…${e.slice(-r)}`:`${e.slice(0,r)}…`},"timestampMediaUrl",0,i])},225970,e=>{e.v(e=>Promise.resolve().then(()=>e(65048)))},953341,e=>{e.v(t=>Promise.all(["server/chunks/15sd_@vercel_oidc_dist_token_10ruti0.js"].map(t=>e.l(t))).then(()=>t(624299)))},77149,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1ynt2jc._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__13xnq6l._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__01al2n0._.js"].map(t=>e.l(t))).then(()=>t(46465)))},313282,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_analytics-store_ts_06l_t47._.js"].map(t=>e.l(t))).then(()=>t(43697)))},195213,e=>{e.v(e=>Promise.resolve().then(()=>e(568886)))},484620,e=>{e.v(e=>Promise.resolve().then(()=>e(504740)))},627270,e=>{e.v(e=>Promise.resolve().then(()=>e(612069)))},311108,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0n78tj0._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(104757)))},118890,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1m18nr1._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(508582)))},3366,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__18ih29u._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(835716)))},654210,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0a8dopv._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(38862)))},187616,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1gte051._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(129921)))},465615,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0j034yj._.js","server/chunks/0598_next_1f_7r6r._.js","server/chunks/packages_scraper_src_0kkcv_v._.js"].map(t=>e.l(t))).then(()=>t(426237)))}];
171
171
 
172
- //# sourceMappingURL=%5Broot-of-the-server%5D__1idgvjh._.js.map
172
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0pmypq8._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),n=e.i(638725),r=e.i(192441);async function o(){let e=await (0,r.getDataDir)();if(!e)return n.DEFAULT_CONFIG;try{let r=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),o=JSON.parse(r),i=o.customEmbeddings,s=o.embeddingModelId;if(o.customEmbedding&&!i?.length){let e=o.customEmbedding;i=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...n.DEFAULT_CONFIG,...o,embeddingModelId:s??n.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...n.DEFAULT_CONFIG.chunking,...o.chunking},storeConfig:{...n.DEFAULT_CONFIG.storeConfig,...o.storeConfig}};return delete l.customEmbedding,l}catch{return n.DEFAULT_CONFIG}}async function i(e){let n=await (0,r.requireDataDir)(),o={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(n,"config.json"),JSON.stringify(o,null,2),"utf8"),o}e.s(["readConfig",0,o,"writeConfig",0,i])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},399828,e=>{"use strict";let t={"openai/text-embedding-3-small":{dimensions:1536,maxInputTokens:8191},"openai/text-embedding-3-large":{dimensions:3072,maxInputTokens:8191},"openai/text-embedding-ada-002":{dimensions:1536,maxInputTokens:8191},"google/gemini-embedding-2":{dimensions:768,maxInputTokens:2048},"google/gemini-embedding-001":{dimensions:768,maxInputTokens:2048},"cohere/embed-english-v3.0":{dimensions:1024,maxInputTokens:512},"cohere/embed-multilingual-v3.0":{dimensions:1024,maxInputTokens:512},"voyage/voyage-3":{dimensions:1024,maxInputTokens:32e3},"voyage/voyage-3-lite":{dimensions:512,maxInputTokens:32e3},"voyage/voyage-code-3":{dimensions:1024,maxInputTokens:32e3},"mistral/mistral-embed":{dimensions:1024,maxInputTokens:8192},"jina/jina-embeddings-v3":{dimensions:1024,maxInputTokens:8192},"jina/jina-clip-v2":{dimensions:1024,maxInputTokens:8192},"nomic/nomic-embed-text-v1.5":{dimensions:768,maxInputTokens:8192}},a=[{id:"openai/text-embedding-3-small",label:"text-embedding-3-small",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Fast, cheap, strong general-purpose default."},{id:"openai/text-embedding-3-large",label:"text-embedding-3-large",provider:"openai",dimensions:3072,maxInputTokens:8191,description:"Highest quality OpenAI embeddings, larger vectors."},{id:"openai/text-embedding-ada-002",label:"text-embedding-ada-002",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Legacy model — kept for backward compatibility."},{id:"google/gemini-embedding-001",label:"gemini-embedding-001",provider:"google",dimensions:768,maxInputTokens:2048,description:"Gemini embedding 001."},{id:"cohere/embed-english-v3.0",label:"embed-english-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"Tuned for retrieval; great for English-heavy corpora."},{id:"cohere/embed-multilingual-v3.0",label:"embed-multilingual-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"100+ language multilingual retrieval embeddings."},{id:"voyage/voyage-3",label:"voyage-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Voyage's best general-purpose retrieval model."},{id:"voyage/voyage-3-lite",label:"voyage-3-lite",provider:"voyage",dimensions:512,maxInputTokens:32e3,description:"Optimized for latency and cost with strong performance."},{id:"voyage/voyage-code-3",label:"voyage-code-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Specialized for code retrieval tasks."},{id:"mistral/mistral-embed",label:"mistral-embed",provider:"mistral",dimensions:1024,maxInputTokens:8192,description:"Mistral's efficient embedding model for retrieval."},{id:"jina/jina-embeddings-v3",label:"jina-embeddings-v3",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multilingual, task-specific embeddings from Jina AI."},{id:"jina/jina-clip-v2",label:"jina-clip-v2",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multimodal embeddings for text and images."},{id:"nomic/nomic-embed-text-v1.5",label:"nomic-embed-text-v1.5",provider:"nomic",dimensions:768,maxInputTokens:8192,description:"Open-source, highly capable text embeddings."}];e.s(["EMBEDDING_DIMENSIONS",0,t,"EMBEDDING_MODELS",0,a,"getEmbeddingModel",0,function(e){return a.find(t=>t.id===e)},"getEmbeddingModelsForProvider",0,function(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())},"toEmbeddingDescriptor",0,function(e){let a=t[e.id],n=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:n,dimensions:a?.dimensions??e.context_window??768,maxInputTokens:a?.maxInputTokens??e.max_tokens??2048,description:e.description||""}}])},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,a){let n={};for(let r of e.fields.filter(e=>{if(e.showWhen){let a=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(a))return!1}return!e.showWhenIndexType||!a||!!e.showWhenIndexType.includes(a)}))r.required&&!t[r.key]?.trim()&&(n[r.key]=`${r.label} is required`);return n}])},911602,e=>{"use strict";var t=e.i(239441),a=e.i(449055),n=e.i(391328),r=e.i(6352),o=e.i(746789),i=e.i(423437),s=e.i(178820),l=e.i(569191),d=e.i(576251),u=e.i(199962),c=e.i(547545),p=e.i(664046),m=e.i(235691),h=e.i(298907),b=e.i(110763),g=e.i(193695);e.i(673243);var y=e.i(236167),v=e.i(766576),f=e.i(432970),k=e.i(367165),x=e.i(192441);async function w(){try{await (0,x.requireDataDir)();let e=await (0,f.refreshAgentServerStatus)();return v.NextResponse.json(e)}catch(e){if(String(e).includes("No workspace data directory"))return v.NextResponse.json({running:!1},{status:404});return v.NextResponse.json({error:String(e)},{status:500})}}async function C(){try{let e=await (0,k.readConfig)(),t=await (0,f.startAgentServer)(e);return v.NextResponse.json(t)}catch(e){return console.error(e),v.NextResponse.json({error:String(e)},{status:500})}}async function R(){try{let e=await (0,f.stopAgentServer)();return v.NextResponse.json(e)}catch(e){return v.NextResponse.json({error:String(e)},{status:500})}}e.s(["DELETE",0,R,"GET",0,w,"POST",0,C],525801);var I=e.i(525801);let q=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/server/agent/route",pathname:"/api/server/agent",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/server/agent/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:T,serverHooks:E}=q;async function A(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),q.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/server/agent/route";v=v.replace(/\/index$/,"")||"/";let f=await q.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!f)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:k,deploymentId:x,params:w,nextConfig:C,parsedUrl:R,isDraftMode:I,prerenderManifest:S,routerServerContext:T,isOnDemandRevalidate:E,revalidateOnlyGenerated:A,resolvedPathname:D,clientReferenceManifest:N,serverActionsManifest:P}=f,U=(0,s.normalizeAppPath)(v),_=!!(S.dynamicRoutes[U]||S.routes[D]),O=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,R,!1):t.end("This page could not be found"),null);if(_&&!I){let e=!!S.routes[D],t=S.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await O();throw new g.NoFallbackError}}let j=null;!_||q.isDev||I||(j="/index"===(j=D)?"/":j);let L=!0===q.isDev||!_,M=_&&!L;P&&N&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:N,serverActionsManifest:P});let W=e.method||"GET",F=(0,o.getTracer)(),H=F.getActiveScopeSpan(),V=!!(null==T?void 0:T.isWrappedByNextServer),K=!!(0,r.getRequestMeta)(e,"minimalMode"),B=(0,r.getRequestMeta)(e,"incrementalCache")||await q.getIncrementalCache(e,C,S,K);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:w,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:L,incrementalCache:B,cacheLifeProfiles:C.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>q.onRequestError(e,t,n,r,T)},sharedContext:{buildId:k,deploymentId:x}},$=new l.NodeNextRequest(e),Q=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest($,(0,d.signalFromNodeResponse)(t));try{let r,i=async e=>q.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=F.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${W} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${W} ${v}`)}),s=async r=>{var o,s;let l=async({previousCacheEntry:a})=>{try{if(!K&&E&&A&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(r);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&n.waitUntil&&(n.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!_)return await (0,p.sendResponse)($,Q,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[b.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=b.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=b.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await q.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:E})},!1,T),t}},d=await q.handleResponse({req:e,nextConfig:C,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:A,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:K});if(!_)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return K&&_||u.delete(b.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)($,Q,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};V&&H?await s(H):(r=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},s),void 0,!V))}catch(t){if(t instanceof g.NoFallbackError||await q.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:E})},!1,T),_)throw t;return await (0,p.sendResponse)($,Q,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:T})},"routeModule",0,q,"serverHooks",0,E,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,T],911602)}];
1
+ module.exports=[367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),n=e.i(638725),r=e.i(192441);async function o(){let e=await (0,r.getDataDir)();if(!e)return n.DEFAULT_CONFIG;try{let r=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),o=JSON.parse(r),i=o.customEmbeddings,s=o.embeddingModelId;if(o.customEmbedding&&!i?.length){let e=o.customEmbedding;i=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...n.DEFAULT_CONFIG,...o,embeddingModelId:s??n.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...n.DEFAULT_CONFIG.chunking,...o.chunking},storeConfig:{...n.DEFAULT_CONFIG.storeConfig,...o.storeConfig}};return delete l.customEmbedding,l}catch{return n.DEFAULT_CONFIG}}async function i(e){let n=await (0,r.requireDataDir)(),o={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(n,"config.json"),JSON.stringify(o,null,2),"utf8"),o}e.s(["readConfig",0,o,"writeConfig",0,i])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},399828,e=>{"use strict";let t={"openai/text-embedding-3-small":{dimensions:1536,maxInputTokens:8191},"openai/text-embedding-3-large":{dimensions:3072,maxInputTokens:8191},"openai/text-embedding-ada-002":{dimensions:1536,maxInputTokens:8191},"google/gemini-embedding-2":{dimensions:768,maxInputTokens:2048},"google/gemini-embedding-001":{dimensions:768,maxInputTokens:2048},"cohere/embed-english-v3.0":{dimensions:1024,maxInputTokens:512},"cohere/embed-multilingual-v3.0":{dimensions:1024,maxInputTokens:512},"voyage/voyage-3":{dimensions:1024,maxInputTokens:32e3},"voyage/voyage-3-lite":{dimensions:512,maxInputTokens:32e3},"voyage/voyage-code-3":{dimensions:1024,maxInputTokens:32e3},"mistral/mistral-embed":{dimensions:1024,maxInputTokens:8192},"jina/jina-embeddings-v3":{dimensions:1024,maxInputTokens:8192},"jina/jina-clip-v2":{dimensions:1024,maxInputTokens:8192},"nomic/nomic-embed-text-v1.5":{dimensions:768,maxInputTokens:8192}},a=[{id:"openai/text-embedding-3-small",label:"text-embedding-3-small",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Fast, cheap, strong general-purpose default."},{id:"openai/text-embedding-3-large",label:"text-embedding-3-large",provider:"openai",dimensions:3072,maxInputTokens:8191,description:"Highest quality OpenAI embeddings, larger vectors."},{id:"openai/text-embedding-ada-002",label:"text-embedding-ada-002",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Legacy model — kept for backward compatibility."},{id:"google/gemini-embedding-2",label:"gemini-embedding-2",provider:"google",dimensions:768,maxInputTokens:2048,description:"Current Gemini embedding model with multilingual retrieval support."},{id:"google/gemini-embedding-001",label:"gemini-embedding-001",provider:"google",dimensions:768,maxInputTokens:2048,description:"Gemini embedding 001."},{id:"cohere/embed-english-v3.0",label:"embed-english-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"Tuned for retrieval; great for English-heavy corpora."},{id:"cohere/embed-multilingual-v3.0",label:"embed-multilingual-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"100+ language multilingual retrieval embeddings."},{id:"voyage/voyage-3",label:"voyage-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Voyage's best general-purpose retrieval model."},{id:"voyage/voyage-3-lite",label:"voyage-3-lite",provider:"voyage",dimensions:512,maxInputTokens:32e3,description:"Optimized for latency and cost with strong performance."},{id:"voyage/voyage-code-3",label:"voyage-code-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Specialized for code retrieval tasks."},{id:"mistral/mistral-embed",label:"mistral-embed",provider:"mistral",dimensions:1024,maxInputTokens:8192,description:"Mistral's efficient embedding model for retrieval."},{id:"jina/jina-embeddings-v3",label:"jina-embeddings-v3",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multilingual, task-specific embeddings from Jina AI."},{id:"jina/jina-clip-v2",label:"jina-clip-v2",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multimodal embeddings for text and images."},{id:"nomic/nomic-embed-text-v1.5",label:"nomic-embed-text-v1.5",provider:"nomic",dimensions:768,maxInputTokens:8192,description:"Open-source, highly capable text embeddings."}];e.s(["EMBEDDING_DIMENSIONS",0,t,"EMBEDDING_MODELS",0,a,"getEmbeddingModel",0,function(e){return a.find(t=>t.id===e)},"getEmbeddingModelsForProvider",0,function(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())},"toEmbeddingDescriptor",0,function(e){let a=t[e.id],n=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:n,dimensions:a?.dimensions??e.context_window??768,maxInputTokens:a?.maxInputTokens??e.max_tokens??2048,description:e.description||""}}])},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,a){let n={};for(let r of e.fields.filter(e=>{if(e.showWhen){let a=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(a))return!1}return!e.showWhenIndexType||!a||!!e.showWhenIndexType.includes(a)}))r.required&&!t[r.key]?.trim()&&(n[r.key]=`${r.label} is required`);return n}])},911602,e=>{"use strict";var t=e.i(239441),a=e.i(449055),n=e.i(391328),r=e.i(6352),o=e.i(746789),i=e.i(423437),s=e.i(178820),l=e.i(569191),d=e.i(576251),u=e.i(199962),c=e.i(547545),p=e.i(664046),m=e.i(235691),h=e.i(298907),b=e.i(110763),g=e.i(193695);e.i(673243);var y=e.i(236167),v=e.i(766576),f=e.i(432970),k=e.i(367165),x=e.i(192441);async function w(){try{await (0,x.requireDataDir)();let e=await (0,f.refreshAgentServerStatus)();return v.NextResponse.json(e)}catch(e){if(String(e).includes("No workspace data directory"))return v.NextResponse.json({running:!1},{status:404});return v.NextResponse.json({error:String(e)},{status:500})}}async function C(){try{let e=await (0,k.readConfig)(),t=await (0,f.startAgentServer)(e);return v.NextResponse.json(t)}catch(e){return console.error(e),v.NextResponse.json({error:String(e)},{status:500})}}async function I(){try{let e=await (0,f.stopAgentServer)();return v.NextResponse.json(e)}catch(e){return v.NextResponse.json({error:String(e)},{status:500})}}e.s(["DELETE",0,I,"GET",0,w,"POST",0,C],525801);var R=e.i(525801);let q=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/server/agent/route",pathname:"/api/server/agent",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/server/agent/route.ts",nextConfigOutput:"standalone",userland:R,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:T,serverHooks:E}=q;async function A(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),q.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/server/agent/route";v=v.replace(/\/index$/,"")||"/";let f=await q.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!f)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:k,deploymentId:x,params:w,nextConfig:C,parsedUrl:I,isDraftMode:R,prerenderManifest:S,routerServerContext:T,isOnDemandRevalidate:E,revalidateOnlyGenerated:A,resolvedPathname:D,clientReferenceManifest:N,serverActionsManifest:P}=f,U=(0,s.normalizeAppPath)(v),_=!!(S.dynamicRoutes[U]||S.routes[D]),O=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,I,!1):t.end("This page could not be found"),null);if(_&&!R){let e=!!S.routes[D],t=S.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await O();throw new g.NoFallbackError}}let j=null;!_||q.isDev||R||(j="/index"===(j=D)?"/":j);let L=!0===q.isDev||!_,M=_&&!L;P&&N&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:N,serverActionsManifest:P});let W=e.method||"GET",F=(0,o.getTracer)(),H=F.getActiveScopeSpan(),V=!!(null==T?void 0:T.isWrappedByNextServer),K=!!(0,r.getRequestMeta)(e,"minimalMode"),B=(0,r.getRequestMeta)(e,"incrementalCache")||await q.getIncrementalCache(e,C,S,K);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:w,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:L,incrementalCache:B,cacheLifeProfiles:C.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>q.onRequestError(e,t,n,r,T)},sharedContext:{buildId:k,deploymentId:x}},$=new l.NodeNextRequest(e),Q=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest($,(0,d.signalFromNodeResponse)(t));try{let r,i=async e=>q.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=F.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${W} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${W} ${v}`)}),s=async r=>{var o,s;let l=async({previousCacheEntry:a})=>{try{if(!K&&E&&A&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(r);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&n.waitUntil&&(n.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!_)return await (0,p.sendResponse)($,Q,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[b.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=b.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=b.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await q.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:E})},!1,T),t}},d=await q.handleResponse({req:e,nextConfig:C,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:A,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:K});if(!_)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return K&&_||u.delete(b.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)($,Q,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};V&&H?await s(H):(r=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${v}`,kind:o.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},s),void 0,!V))}catch(t){if(t instanceof g.NoFallbackError||await q.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:E})},!1,T),_)throw t;return await (0,p.sendResponse)($,Q,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:T})},"routeModule",0,q,"serverHooks",0,E,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,T],911602)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0tlfusr._.js.map