larkup 0.1.14 → 0.1.21

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 (1047) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +69 -0
  3. package/.next/build/chunks/[root-of-the-server]__0cstldc._.js +206 -0
  4. package/.next/build/chunks/[root-of-the-server]__0s3ts0r._.js +500 -0
  5. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0xqnjlz._.js +13 -0
  6. package/.next/build/chunks/[turbopack]_runtime.js +890 -0
  7. package/.next/build/chunks/node_modules__pnpm_04zrf.1._.js +7126 -0
  8. package/.next/build/package.json +1 -0
  9. package/.next/build/postcss.js +6 -0
  10. package/.next/build-manifest.json +22 -0
  11. package/.next/diagnostics/build-diagnostics.json +6 -0
  12. package/.next/diagnostics/framework.json +1 -0
  13. package/.next/diagnostics/route-bundle-stats.json +133 -0
  14. package/.next/export-marker.json +6 -0
  15. package/.next/fallback-build-manifest.json +13 -0
  16. package/.next/images-manifest.json +68 -0
  17. package/.next/next-minimal-server.js.nft.json +1 -0
  18. package/.next/next-server.js.nft.json +1 -0
  19. package/.next/package.json +1 -0
  20. package/.next/prerender-manifest.json +210 -0
  21. package/.next/required-server-files.js +356 -0
  22. package/.next/required-server-files.json +356 -0
  23. package/.next/routes-manifest.json +462 -0
  24. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  25. package/.next/server/app/_global-error/page/build-manifest.json +18 -0
  26. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  27. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  28. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  29. package/.next/server/app/_global-error/page.js +10 -0
  30. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  31. package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  32. package/.next/server/app/_global-error.html +1 -0
  33. package/.next/server/app/_global-error.meta +15 -0
  34. package/.next/server/app/_global-error.rsc +15 -0
  35. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  36. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  37. package/.next/server/app/_global-error.segments/_head.segment.rsc +6 -0
  38. package/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
  39. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  40. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  41. package/.next/server/app/_not-found/page/build-manifest.json +18 -0
  42. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  43. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  44. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  45. package/.next/server/app/_not-found/page.js +14 -0
  46. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  47. package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  48. package/.next/server/app/_not-found.html +1 -0
  49. package/.next/server/app/_not-found.meta +16 -0
  50. package/.next/server/app/_not-found.rsc +28 -0
  51. package/.next/server/app/_not-found.segments/_full.segment.rsc +28 -0
  52. package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  53. package/.next/server/app/_not-found.segments/_index.segment.rsc +14 -0
  54. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  55. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  56. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
  57. package/.next/server/app/analytics/page/app-paths-manifest.json +3 -0
  58. package/.next/server/app/analytics/page/build-manifest.json +18 -0
  59. package/.next/server/app/analytics/page/next-font-manifest.json +11 -0
  60. package/.next/server/app/analytics/page/react-loadable-manifest.json +1 -0
  61. package/.next/server/app/analytics/page/server-reference-manifest.json +4 -0
  62. package/.next/server/app/analytics/page.js +15 -0
  63. package/.next/server/app/analytics/page.js.nft.json +1 -0
  64. package/.next/server/app/analytics/page_client-reference-manifest.js +3 -0
  65. package/.next/server/app/analytics.html +1 -0
  66. package/.next/server/app/analytics.meta +15 -0
  67. package/.next/server/app/analytics.rsc +32 -0
  68. package/.next/server/app/analytics.segments/_full.segment.rsc +32 -0
  69. package/.next/server/app/analytics.segments/_head.segment.rsc +6 -0
  70. package/.next/server/app/analytics.segments/_index.segment.rsc +14 -0
  71. package/.next/server/app/analytics.segments/_tree.segment.rsc +5 -0
  72. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +6 -0
  73. package/.next/server/app/analytics.segments/analytics.segment.rsc +5 -0
  74. package/.next/server/app/api/analytics/route/app-paths-manifest.json +3 -0
  75. package/.next/server/app/api/analytics/route/build-manifest.json +9 -0
  76. package/.next/server/app/api/analytics/route/server-reference-manifest.json +4 -0
  77. package/.next/server/app/api/analytics/route.js +9 -0
  78. package/.next/server/app/api/analytics/route.js.nft.json +1 -0
  79. package/.next/server/app/api/analytics/route_client-reference-manifest.js +3 -0
  80. package/.next/server/app/api/chat/route/app-paths-manifest.json +3 -0
  81. package/.next/server/app/api/chat/route/build-manifest.json +9 -0
  82. package/.next/server/app/api/chat/route/server-reference-manifest.json +4 -0
  83. package/.next/server/app/api/chat/route.js +24 -0
  84. package/.next/server/app/api/chat/route.js.nft.json +1 -0
  85. package/.next/server/app/api/chat/route_client-reference-manifest.js +3 -0
  86. package/.next/server/app/api/chat/status/route/app-paths-manifest.json +3 -0
  87. package/.next/server/app/api/chat/status/route/build-manifest.json +9 -0
  88. package/.next/server/app/api/chat/status/route/server-reference-manifest.json +4 -0
  89. package/.next/server/app/api/chat/status/route.js +9 -0
  90. package/.next/server/app/api/chat/status/route.js.nft.json +1 -0
  91. package/.next/server/app/api/chat/status/route_client-reference-manifest.js +3 -0
  92. package/.next/server/app/api/chat/suggestions/route/app-paths-manifest.json +3 -0
  93. package/.next/server/app/api/chat/suggestions/route/build-manifest.json +9 -0
  94. package/.next/server/app/api/chat/suggestions/route/server-reference-manifest.json +4 -0
  95. package/.next/server/app/api/chat/suggestions/route.js +17 -0
  96. package/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -0
  97. package/.next/server/app/api/chat/suggestions/route_client-reference-manifest.js +3 -0
  98. package/.next/server/app/api/config/route/app-paths-manifest.json +3 -0
  99. package/.next/server/app/api/config/route/build-manifest.json +9 -0
  100. package/.next/server/app/api/config/route/server-reference-manifest.json +4 -0
  101. package/.next/server/app/api/config/route.js +8 -0
  102. package/.next/server/app/api/config/route.js.nft.json +1 -0
  103. package/.next/server/app/api/config/route_client-reference-manifest.js +3 -0
  104. package/.next/server/app/api/config/test/route/app-paths-manifest.json +3 -0
  105. package/.next/server/app/api/config/test/route/build-manifest.json +9 -0
  106. package/.next/server/app/api/config/test/route/server-reference-manifest.json +4 -0
  107. package/.next/server/app/api/config/test/route.js +8 -0
  108. package/.next/server/app/api/config/test/route.js.nft.json +1 -0
  109. package/.next/server/app/api/config/test/route_client-reference-manifest.js +3 -0
  110. package/.next/server/app/api/config/test-embedding/route/app-paths-manifest.json +3 -0
  111. package/.next/server/app/api/config/test-embedding/route/build-manifest.json +9 -0
  112. package/.next/server/app/api/config/test-embedding/route/server-reference-manifest.json +4 -0
  113. package/.next/server/app/api/config/test-embedding/route.js +12 -0
  114. package/.next/server/app/api/config/test-embedding/route.js.nft.json +1 -0
  115. package/.next/server/app/api/config/test-embedding/route_client-reference-manifest.js +3 -0
  116. package/.next/server/app/api/config/test-llm/route/app-paths-manifest.json +3 -0
  117. package/.next/server/app/api/config/test-llm/route/build-manifest.json +9 -0
  118. package/.next/server/app/api/config/test-llm/route/server-reference-manifest.json +4 -0
  119. package/.next/server/app/api/config/test-llm/route.js +12 -0
  120. package/.next/server/app/api/config/test-llm/route.js.nft.json +1 -0
  121. package/.next/server/app/api/config/test-llm/route_client-reference-manifest.js +3 -0
  122. package/.next/server/app/api/config/test-provider/route/app-paths-manifest.json +3 -0
  123. package/.next/server/app/api/config/test-provider/route/build-manifest.json +9 -0
  124. package/.next/server/app/api/config/test-provider/route/server-reference-manifest.json +4 -0
  125. package/.next/server/app/api/config/test-provider/route.js +13 -0
  126. package/.next/server/app/api/config/test-provider/route.js.nft.json +1 -0
  127. package/.next/server/app/api/config/test-provider/route_client-reference-manifest.js +3 -0
  128. package/.next/server/app/api/config/verify/route/app-paths-manifest.json +3 -0
  129. package/.next/server/app/api/config/verify/route/build-manifest.json +9 -0
  130. package/.next/server/app/api/config/verify/route/server-reference-manifest.json +4 -0
  131. package/.next/server/app/api/config/verify/route.js +16 -0
  132. package/.next/server/app/api/config/verify/route.js.nft.json +1 -0
  133. package/.next/server/app/api/config/verify/route_client-reference-manifest.js +3 -0
  134. package/.next/server/app/api/connections/route/app-paths-manifest.json +3 -0
  135. package/.next/server/app/api/connections/route/build-manifest.json +9 -0
  136. package/.next/server/app/api/connections/route/server-reference-manifest.json +4 -0
  137. package/.next/server/app/api/connections/route.js +8 -0
  138. package/.next/server/app/api/connections/route.js.nft.json +1 -0
  139. package/.next/server/app/api/connections/route_client-reference-manifest.js +3 -0
  140. package/.next/server/app/api/connections/webhook/route/app-paths-manifest.json +3 -0
  141. package/.next/server/app/api/connections/webhook/route/build-manifest.json +9 -0
  142. package/.next/server/app/api/connections/webhook/route/server-reference-manifest.json +4 -0
  143. package/.next/server/app/api/connections/webhook/route.js +10 -0
  144. package/.next/server/app/api/connections/webhook/route.js.nft.json +1 -0
  145. package/.next/server/app/api/connections/webhook/route_client-reference-manifest.js +3 -0
  146. package/.next/server/app/api/demo/route/app-paths-manifest.json +3 -0
  147. package/.next/server/app/api/demo/route/build-manifest.json +9 -0
  148. package/.next/server/app/api/demo/route/server-reference-manifest.json +4 -0
  149. package/.next/server/app/api/demo/route.js +15 -0
  150. package/.next/server/app/api/demo/route.js.nft.json +1 -0
  151. package/.next/server/app/api/demo/route_client-reference-manifest.js +3 -0
  152. package/.next/server/app/api/deploy/cloud-project/route/app-paths-manifest.json +3 -0
  153. package/.next/server/app/api/deploy/cloud-project/route/build-manifest.json +9 -0
  154. package/.next/server/app/api/deploy/cloud-project/route/server-reference-manifest.json +4 -0
  155. package/.next/server/app/api/deploy/cloud-project/route.js +13 -0
  156. package/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -0
  157. package/.next/server/app/api/deploy/cloud-project/route_client-reference-manifest.js +3 -0
  158. package/.next/server/app/api/deploy/ssh/route/app-paths-manifest.json +3 -0
  159. package/.next/server/app/api/deploy/ssh/route/build-manifest.json +9 -0
  160. package/.next/server/app/api/deploy/ssh/route/server-reference-manifest.json +4 -0
  161. package/.next/server/app/api/deploy/ssh/route.js +8 -0
  162. package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -0
  163. package/.next/server/app/api/deploy/ssh/route_client-reference-manifest.js +3 -0
  164. package/.next/server/app/api/deployment/blob-setup/route/app-paths-manifest.json +3 -0
  165. package/.next/server/app/api/deployment/blob-setup/route/build-manifest.json +9 -0
  166. package/.next/server/app/api/deployment/blob-setup/route/server-reference-manifest.json +4 -0
  167. package/.next/server/app/api/deployment/blob-setup/route.js +8 -0
  168. package/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -0
  169. package/.next/server/app/api/deployment/blob-setup/route_client-reference-manifest.js +3 -0
  170. package/.next/server/app/api/deployment/config/route/app-paths-manifest.json +3 -0
  171. package/.next/server/app/api/deployment/config/route/build-manifest.json +9 -0
  172. package/.next/server/app/api/deployment/config/route/server-reference-manifest.json +4 -0
  173. package/.next/server/app/api/deployment/config/route.js +8 -0
  174. package/.next/server/app/api/deployment/config/route.js.nft.json +1 -0
  175. package/.next/server/app/api/deployment/config/route_client-reference-manifest.js +3 -0
  176. package/.next/server/app/api/describe-image/route/app-paths-manifest.json +3 -0
  177. package/.next/server/app/api/describe-image/route/build-manifest.json +9 -0
  178. package/.next/server/app/api/describe-image/route/server-reference-manifest.json +4 -0
  179. package/.next/server/app/api/describe-image/route.js +15 -0
  180. package/.next/server/app/api/describe-image/route.js.nft.json +1 -0
  181. package/.next/server/app/api/describe-image/route_client-reference-manifest.js +3 -0
  182. package/.next/server/app/api/doc-editor/edit/route/app-paths-manifest.json +3 -0
  183. package/.next/server/app/api/doc-editor/edit/route/build-manifest.json +9 -0
  184. package/.next/server/app/api/doc-editor/edit/route/server-reference-manifest.json +4 -0
  185. package/.next/server/app/api/doc-editor/edit/route.js +11 -0
  186. package/.next/server/app/api/doc-editor/edit/route.js.nft.json +1 -0
  187. package/.next/server/app/api/doc-editor/edit/route_client-reference-manifest.js +3 -0
  188. package/.next/server/app/api/doc-editor/export/route/app-paths-manifest.json +3 -0
  189. package/.next/server/app/api/doc-editor/export/route/build-manifest.json +9 -0
  190. package/.next/server/app/api/doc-editor/export/route/server-reference-manifest.json +4 -0
  191. package/.next/server/app/api/doc-editor/export/route.js +11 -0
  192. package/.next/server/app/api/doc-editor/export/route.js.nft.json +1 -0
  193. package/.next/server/app/api/doc-editor/export/route_client-reference-manifest.js +3 -0
  194. package/.next/server/app/api/doc-editor/extract-text/route/app-paths-manifest.json +3 -0
  195. package/.next/server/app/api/doc-editor/extract-text/route/build-manifest.json +9 -0
  196. package/.next/server/app/api/doc-editor/extract-text/route/server-reference-manifest.json +4 -0
  197. package/.next/server/app/api/doc-editor/extract-text/route.js +11 -0
  198. package/.next/server/app/api/doc-editor/extract-text/route.js.nft.json +1 -0
  199. package/.next/server/app/api/doc-editor/extract-text/route_client-reference-manifest.js +3 -0
  200. package/.next/server/app/api/doc-editor/parse/route/app-paths-manifest.json +3 -0
  201. package/.next/server/app/api/doc-editor/parse/route/build-manifest.json +9 -0
  202. package/.next/server/app/api/doc-editor/parse/route/server-reference-manifest.json +4 -0
  203. package/.next/server/app/api/doc-editor/parse/route.js +12 -0
  204. package/.next/server/app/api/doc-editor/parse/route.js.nft.json +1 -0
  205. package/.next/server/app/api/doc-editor/parse/route_client-reference-manifest.js +3 -0
  206. package/.next/server/app/api/doc-editor/restore/route/app-paths-manifest.json +3 -0
  207. package/.next/server/app/api/doc-editor/restore/route/build-manifest.json +9 -0
  208. package/.next/server/app/api/doc-editor/restore/route/server-reference-manifest.json +4 -0
  209. package/.next/server/app/api/doc-editor/restore/route.js +11 -0
  210. package/.next/server/app/api/doc-editor/restore/route.js.nft.json +1 -0
  211. package/.next/server/app/api/doc-editor/restore/route_client-reference-manifest.js +3 -0
  212. package/.next/server/app/api/document/sign/route/app-paths-manifest.json +3 -0
  213. package/.next/server/app/api/document/sign/route/build-manifest.json +9 -0
  214. package/.next/server/app/api/document/sign/route/server-reference-manifest.json +4 -0
  215. package/.next/server/app/api/document/sign/route.js +12 -0
  216. package/.next/server/app/api/document/sign/route.js.nft.json +1 -0
  217. package/.next/server/app/api/document/sign/route_client-reference-manifest.js +3 -0
  218. package/.next/server/app/api/documents/route/app-paths-manifest.json +3 -0
  219. package/.next/server/app/api/documents/route/build-manifest.json +9 -0
  220. package/.next/server/app/api/documents/route/server-reference-manifest.json +4 -0
  221. package/.next/server/app/api/documents/route.js +8 -0
  222. package/.next/server/app/api/documents/route.js.nft.json +1 -0
  223. package/.next/server/app/api/documents/route_client-reference-manifest.js +3 -0
  224. package/.next/server/app/api/firecrawl/local/route/app-paths-manifest.json +3 -0
  225. package/.next/server/app/api/firecrawl/local/route/build-manifest.json +9 -0
  226. package/.next/server/app/api/firecrawl/local/route/server-reference-manifest.json +4 -0
  227. package/.next/server/app/api/firecrawl/local/route.js +8 -0
  228. package/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -0
  229. package/.next/server/app/api/firecrawl/local/route_client-reference-manifest.js +3 -0
  230. package/.next/server/app/api/index/route/app-paths-manifest.json +3 -0
  231. package/.next/server/app/api/index/route/build-manifest.json +9 -0
  232. package/.next/server/app/api/index/route/server-reference-manifest.json +4 -0
  233. package/.next/server/app/api/index/route.js +14 -0
  234. package/.next/server/app/api/index/route.js.nft.json +1 -0
  235. package/.next/server/app/api/index/route_client-reference-manifest.js +3 -0
  236. package/.next/server/app/api/integrations/notion/callback/route/app-paths-manifest.json +3 -0
  237. package/.next/server/app/api/integrations/notion/callback/route/build-manifest.json +9 -0
  238. package/.next/server/app/api/integrations/notion/callback/route/server-reference-manifest.json +4 -0
  239. package/.next/server/app/api/integrations/notion/callback/route.js +8 -0
  240. package/.next/server/app/api/integrations/notion/callback/route.js.nft.json +1 -0
  241. package/.next/server/app/api/integrations/notion/callback/route_client-reference-manifest.js +3 -0
  242. package/.next/server/app/api/integrations/notion/route/app-paths-manifest.json +3 -0
  243. package/.next/server/app/api/integrations/notion/route/build-manifest.json +9 -0
  244. package/.next/server/app/api/integrations/notion/route/server-reference-manifest.json +4 -0
  245. package/.next/server/app/api/integrations/notion/route.js +8 -0
  246. package/.next/server/app/api/integrations/notion/route.js.nft.json +1 -0
  247. package/.next/server/app/api/integrations/notion/route_client-reference-manifest.js +3 -0
  248. package/.next/server/app/api/jobs/[id]/route/app-paths-manifest.json +3 -0
  249. package/.next/server/app/api/jobs/[id]/route/build-manifest.json +9 -0
  250. package/.next/server/app/api/jobs/[id]/route/server-reference-manifest.json +4 -0
  251. package/.next/server/app/api/jobs/[id]/route.js +8 -0
  252. package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -0
  253. package/.next/server/app/api/jobs/[id]/route_client-reference-manifest.js +3 -0
  254. package/.next/server/app/api/jobs/route/app-paths-manifest.json +3 -0
  255. package/.next/server/app/api/jobs/route/build-manifest.json +9 -0
  256. package/.next/server/app/api/jobs/route/server-reference-manifest.json +4 -0
  257. package/.next/server/app/api/jobs/route.js +8 -0
  258. package/.next/server/app/api/jobs/route.js.nft.json +1 -0
  259. package/.next/server/app/api/jobs/route_client-reference-manifest.js +3 -0
  260. package/.next/server/app/api/marketplace/[toolId]/route/app-paths-manifest.json +3 -0
  261. package/.next/server/app/api/marketplace/[toolId]/route/build-manifest.json +9 -0
  262. package/.next/server/app/api/marketplace/[toolId]/route/server-reference-manifest.json +4 -0
  263. package/.next/server/app/api/marketplace/[toolId]/route.js +9 -0
  264. package/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -0
  265. package/.next/server/app/api/marketplace/[toolId]/route_client-reference-manifest.js +3 -0
  266. package/.next/server/app/api/marketplace/route/app-paths-manifest.json +3 -0
  267. package/.next/server/app/api/marketplace/route/build-manifest.json +9 -0
  268. package/.next/server/app/api/marketplace/route/server-reference-manifest.json +4 -0
  269. package/.next/server/app/api/marketplace/route.js +9 -0
  270. package/.next/server/app/api/marketplace/route.js.nft.json +1 -0
  271. package/.next/server/app/api/marketplace/route_client-reference-manifest.js +3 -0
  272. package/.next/server/app/api/media/[id]/route/app-paths-manifest.json +3 -0
  273. package/.next/server/app/api/media/[id]/route/build-manifest.json +9 -0
  274. package/.next/server/app/api/media/[id]/route/server-reference-manifest.json +4 -0
  275. package/.next/server/app/api/media/[id]/route.js +8 -0
  276. package/.next/server/app/api/media/[id]/route.js.nft.json +1 -0
  277. package/.next/server/app/api/media/[id]/route_client-reference-manifest.js +3 -0
  278. package/.next/server/app/api/media/process/route/app-paths-manifest.json +3 -0
  279. package/.next/server/app/api/media/process/route/build-manifest.json +9 -0
  280. package/.next/server/app/api/media/process/route/server-reference-manifest.json +4 -0
  281. package/.next/server/app/api/media/process/route.js +17 -0
  282. package/.next/server/app/api/media/process/route.js.nft.json +1 -0
  283. package/.next/server/app/api/media/process/route_client-reference-manifest.js +3 -0
  284. package/.next/server/app/api/media/route/app-paths-manifest.json +3 -0
  285. package/.next/server/app/api/media/route/build-manifest.json +9 -0
  286. package/.next/server/app/api/media/route/server-reference-manifest.json +4 -0
  287. package/.next/server/app/api/media/route.js +9 -0
  288. package/.next/server/app/api/media/route.js.nft.json +1 -0
  289. package/.next/server/app/api/media/route_client-reference-manifest.js +3 -0
  290. package/.next/server/app/api/media/stream/route/app-paths-manifest.json +3 -0
  291. package/.next/server/app/api/media/stream/route/build-manifest.json +9 -0
  292. package/.next/server/app/api/media/stream/route/server-reference-manifest.json +4 -0
  293. package/.next/server/app/api/media/stream/route.js +7 -0
  294. package/.next/server/app/api/media/stream/route.js.nft.json +1 -0
  295. package/.next/server/app/api/media/stream/route_client-reference-manifest.js +3 -0
  296. package/.next/server/app/api/models/route/app-paths-manifest.json +3 -0
  297. package/.next/server/app/api/models/route/build-manifest.json +9 -0
  298. package/.next/server/app/api/models/route/server-reference-manifest.json +4 -0
  299. package/.next/server/app/api/models/route.js +9 -0
  300. package/.next/server/app/api/models/route.js.nft.json +1 -0
  301. package/.next/server/app/api/models/route_client-reference-manifest.js +3 -0
  302. package/.next/server/app/api/parse-file/route/app-paths-manifest.json +3 -0
  303. package/.next/server/app/api/parse-file/route/build-manifest.json +9 -0
  304. package/.next/server/app/api/parse-file/route/server-reference-manifest.json +4 -0
  305. package/.next/server/app/api/parse-file/route.js +11 -0
  306. package/.next/server/app/api/parse-file/route.js.nft.json +1 -0
  307. package/.next/server/app/api/parse-file/route_client-reference-manifest.js +3 -0
  308. package/.next/server/app/api/proxy/verify/route/app-paths-manifest.json +3 -0
  309. package/.next/server/app/api/proxy/verify/route/build-manifest.json +9 -0
  310. package/.next/server/app/api/proxy/verify/route/server-reference-manifest.json +4 -0
  311. package/.next/server/app/api/proxy/verify/route.js +8 -0
  312. package/.next/server/app/api/proxy/verify/route.js.nft.json +1 -0
  313. package/.next/server/app/api/proxy/verify/route_client-reference-manifest.js +3 -0
  314. package/.next/server/app/api/sandbox/route/app-paths-manifest.json +3 -0
  315. package/.next/server/app/api/sandbox/route/build-manifest.json +9 -0
  316. package/.next/server/app/api/sandbox/route/server-reference-manifest.json +4 -0
  317. package/.next/server/app/api/sandbox/route.js +8 -0
  318. package/.next/server/app/api/sandbox/route.js.nft.json +1 -0
  319. package/.next/server/app/api/sandbox/route_client-reference-manifest.js +3 -0
  320. package/.next/server/app/api/search/bing/route/app-paths-manifest.json +3 -0
  321. package/.next/server/app/api/search/bing/route/build-manifest.json +9 -0
  322. package/.next/server/app/api/search/bing/route/server-reference-manifest.json +4 -0
  323. package/.next/server/app/api/search/bing/route.js +8 -0
  324. package/.next/server/app/api/search/bing/route.js.nft.json +1 -0
  325. package/.next/server/app/api/search/bing/route_client-reference-manifest.js +3 -0
  326. package/.next/server/app/api/search/brave/route/app-paths-manifest.json +3 -0
  327. package/.next/server/app/api/search/brave/route/build-manifest.json +9 -0
  328. package/.next/server/app/api/search/brave/route/server-reference-manifest.json +4 -0
  329. package/.next/server/app/api/search/brave/route.js +8 -0
  330. package/.next/server/app/api/search/brave/route.js.nft.json +1 -0
  331. package/.next/server/app/api/search/brave/route_client-reference-manifest.js +3 -0
  332. package/.next/server/app/api/search/exa/route/app-paths-manifest.json +3 -0
  333. package/.next/server/app/api/search/exa/route/build-manifest.json +9 -0
  334. package/.next/server/app/api/search/exa/route/server-reference-manifest.json +4 -0
  335. package/.next/server/app/api/search/exa/route.js +8 -0
  336. package/.next/server/app/api/search/exa/route.js.nft.json +1 -0
  337. package/.next/server/app/api/search/exa/route_client-reference-manifest.js +3 -0
  338. package/.next/server/app/api/search/google/route/app-paths-manifest.json +3 -0
  339. package/.next/server/app/api/search/google/route/build-manifest.json +9 -0
  340. package/.next/server/app/api/search/google/route/server-reference-manifest.json +4 -0
  341. package/.next/server/app/api/search/google/route.js +8 -0
  342. package/.next/server/app/api/search/google/route.js.nft.json +1 -0
  343. package/.next/server/app/api/search/google/route_client-reference-manifest.js +3 -0
  344. package/.next/server/app/api/search/route/app-paths-manifest.json +3 -0
  345. package/.next/server/app/api/search/route/build-manifest.json +9 -0
  346. package/.next/server/app/api/search/route/server-reference-manifest.json +4 -0
  347. package/.next/server/app/api/search/route.js +8 -0
  348. package/.next/server/app/api/search/route.js.nft.json +1 -0
  349. package/.next/server/app/api/search/route_client-reference-manifest.js +3 -0
  350. package/.next/server/app/api/search/tavily/route/app-paths-manifest.json +3 -0
  351. package/.next/server/app/api/search/tavily/route/build-manifest.json +9 -0
  352. package/.next/server/app/api/search/tavily/route/server-reference-manifest.json +4 -0
  353. package/.next/server/app/api/search/tavily/route.js +8 -0
  354. package/.next/server/app/api/search/tavily/route.js.nft.json +1 -0
  355. package/.next/server/app/api/search/tavily/route_client-reference-manifest.js +3 -0
  356. package/.next/server/app/api/search/verify/route/app-paths-manifest.json +3 -0
  357. package/.next/server/app/api/search/verify/route/build-manifest.json +9 -0
  358. package/.next/server/app/api/search/verify/route/server-reference-manifest.json +4 -0
  359. package/.next/server/app/api/search/verify/route.js +8 -0
  360. package/.next/server/app/api/search/verify/route.js.nft.json +1 -0
  361. package/.next/server/app/api/search/verify/route_client-reference-manifest.js +3 -0
  362. package/.next/server/app/api/server/agent/route/app-paths-manifest.json +3 -0
  363. package/.next/server/app/api/server/agent/route/build-manifest.json +9 -0
  364. package/.next/server/app/api/server/agent/route/server-reference-manifest.json +4 -0
  365. package/.next/server/app/api/server/agent/route.js +10 -0
  366. package/.next/server/app/api/server/agent/route.js.nft.json +1 -0
  367. package/.next/server/app/api/server/agent/route_client-reference-manifest.js +3 -0
  368. package/.next/server/app/api/server/download/route/app-paths-manifest.json +3 -0
  369. package/.next/server/app/api/server/download/route/build-manifest.json +9 -0
  370. package/.next/server/app/api/server/download/route/server-reference-manifest.json +4 -0
  371. package/.next/server/app/api/server/download/route.js +9 -0
  372. package/.next/server/app/api/server/download/route.js.nft.json +1 -0
  373. package/.next/server/app/api/server/download/route_client-reference-manifest.js +3 -0
  374. package/.next/server/app/api/server/generate/route/app-paths-manifest.json +3 -0
  375. package/.next/server/app/api/server/generate/route/build-manifest.json +9 -0
  376. package/.next/server/app/api/server/generate/route/server-reference-manifest.json +4 -0
  377. package/.next/server/app/api/server/generate/route.js +10 -0
  378. package/.next/server/app/api/server/generate/route.js.nft.json +1 -0
  379. package/.next/server/app/api/server/generate/route_client-reference-manifest.js +3 -0
  380. package/.next/server/app/api/server/local/route/app-paths-manifest.json +3 -0
  381. package/.next/server/app/api/server/local/route/build-manifest.json +9 -0
  382. package/.next/server/app/api/server/local/route/server-reference-manifest.json +4 -0
  383. package/.next/server/app/api/server/local/route.js +10 -0
  384. package/.next/server/app/api/server/local/route.js.nft.json +1 -0
  385. package/.next/server/app/api/server/local/route_client-reference-manifest.js +3 -0
  386. package/.next/server/app/api/servers/route/app-paths-manifest.json +3 -0
  387. package/.next/server/app/api/servers/route/build-manifest.json +9 -0
  388. package/.next/server/app/api/servers/route/server-reference-manifest.json +4 -0
  389. package/.next/server/app/api/servers/route.js +10 -0
  390. package/.next/server/app/api/servers/route.js.nft.json +1 -0
  391. package/.next/server/app/api/servers/route_client-reference-manifest.js +3 -0
  392. package/.next/server/app/api/tabular/query/route/app-paths-manifest.json +3 -0
  393. package/.next/server/app/api/tabular/query/route/build-manifest.json +9 -0
  394. package/.next/server/app/api/tabular/query/route/server-reference-manifest.json +4 -0
  395. package/.next/server/app/api/tabular/query/route.js +8 -0
  396. package/.next/server/app/api/tabular/query/route.js.nft.json +1 -0
  397. package/.next/server/app/api/tabular/query/route_client-reference-manifest.js +3 -0
  398. package/.next/server/app/api/tabular/route/app-paths-manifest.json +3 -0
  399. package/.next/server/app/api/tabular/route/build-manifest.json +9 -0
  400. package/.next/server/app/api/tabular/route/server-reference-manifest.json +4 -0
  401. package/.next/server/app/api/tabular/route.js +8 -0
  402. package/.next/server/app/api/tabular/route.js.nft.json +1 -0
  403. package/.next/server/app/api/tabular/route_client-reference-manifest.js +3 -0
  404. package/.next/server/app/api/upload-file/route/app-paths-manifest.json +3 -0
  405. package/.next/server/app/api/upload-file/route/build-manifest.json +9 -0
  406. package/.next/server/app/api/upload-file/route/server-reference-manifest.json +4 -0
  407. package/.next/server/app/api/upload-file/route.js +8 -0
  408. package/.next/server/app/api/upload-file/route.js.nft.json +1 -0
  409. package/.next/server/app/api/upload-file/route_client-reference-manifest.js +3 -0
  410. package/.next/server/app/api/uploads/[...slug]/route/app-paths-manifest.json +3 -0
  411. package/.next/server/app/api/uploads/[...slug]/route/build-manifest.json +9 -0
  412. package/.next/server/app/api/uploads/[...slug]/route/server-reference-manifest.json +4 -0
  413. package/.next/server/app/api/uploads/[...slug]/route.js +8 -0
  414. package/.next/server/app/api/uploads/[...slug]/route.js.nft.json +1 -0
  415. package/.next/server/app/api/uploads/[...slug]/route_client-reference-manifest.js +3 -0
  416. package/.next/server/app/api/vector-stores/install/route/app-paths-manifest.json +3 -0
  417. package/.next/server/app/api/vector-stores/install/route/build-manifest.json +9 -0
  418. package/.next/server/app/api/vector-stores/install/route/server-reference-manifest.json +4 -0
  419. package/.next/server/app/api/vector-stores/install/route.js +8 -0
  420. package/.next/server/app/api/vector-stores/install/route.js.nft.json +1 -0
  421. package/.next/server/app/api/vector-stores/install/route_client-reference-manifest.js +3 -0
  422. package/.next/server/app/api/vector-stores/status/route/app-paths-manifest.json +3 -0
  423. package/.next/server/app/api/vector-stores/status/route/build-manifest.json +9 -0
  424. package/.next/server/app/api/vector-stores/status/route/server-reference-manifest.json +4 -0
  425. package/.next/server/app/api/vector-stores/status/route.js +8 -0
  426. package/.next/server/app/api/vector-stores/status/route.js.nft.json +1 -0
  427. package/.next/server/app/api/vector-stores/status/route_client-reference-manifest.js +3 -0
  428. package/.next/server/app/chat/page/app-paths-manifest.json +3 -0
  429. package/.next/server/app/chat/page/build-manifest.json +18 -0
  430. package/.next/server/app/chat/page/next-font-manifest.json +11 -0
  431. package/.next/server/app/chat/page/react-loadable-manifest.json +1 -0
  432. package/.next/server/app/chat/page/server-reference-manifest.json +4 -0
  433. package/.next/server/app/chat/page.js +15 -0
  434. package/.next/server/app/chat/page.js.nft.json +1 -0
  435. package/.next/server/app/chat/page_client-reference-manifest.js +3 -0
  436. package/.next/server/app/chat.html +1 -0
  437. package/.next/server/app/chat.meta +15 -0
  438. package/.next/server/app/chat.rsc +29 -0
  439. package/.next/server/app/chat.segments/_full.segment.rsc +29 -0
  440. package/.next/server/app/chat.segments/_head.segment.rsc +6 -0
  441. package/.next/server/app/chat.segments/_index.segment.rsc +14 -0
  442. package/.next/server/app/chat.segments/_tree.segment.rsc +5 -0
  443. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +6 -0
  444. package/.next/server/app/chat.segments/chat.segment.rsc +5 -0
  445. package/.next/server/app/data/page/app-paths-manifest.json +3 -0
  446. package/.next/server/app/data/page/build-manifest.json +18 -0
  447. package/.next/server/app/data/page/next-font-manifest.json +11 -0
  448. package/.next/server/app/data/page/react-loadable-manifest.json +1 -0
  449. package/.next/server/app/data/page/server-reference-manifest.json +4 -0
  450. package/.next/server/app/data/page.js +15 -0
  451. package/.next/server/app/data/page.js.nft.json +1 -0
  452. package/.next/server/app/data/page_client-reference-manifest.js +3 -0
  453. package/.next/server/app/data.html +1 -0
  454. package/.next/server/app/data.meta +15 -0
  455. package/.next/server/app/data.rsc +32 -0
  456. package/.next/server/app/data.segments/_full.segment.rsc +32 -0
  457. package/.next/server/app/data.segments/_head.segment.rsc +6 -0
  458. package/.next/server/app/data.segments/_index.segment.rsc +14 -0
  459. package/.next/server/app/data.segments/_tree.segment.rsc +5 -0
  460. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +6 -0
  461. package/.next/server/app/data.segments/data.segment.rsc +5 -0
  462. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  463. package/.next/server/app/favicon.ico/route/build-manifest.json +9 -0
  464. package/.next/server/app/favicon.ico/route.js +8 -0
  465. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  466. package/.next/server/app/favicon.ico.body +0 -0
  467. package/.next/server/app/favicon.ico.meta +1 -0
  468. package/.next/server/app/index.html +1 -0
  469. package/.next/server/app/index.meta +14 -0
  470. package/.next/server/app/index.rsc +26 -0
  471. package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -0
  472. package/.next/server/app/index.segments/_full.segment.rsc +26 -0
  473. package/.next/server/app/index.segments/_head.segment.rsc +6 -0
  474. package/.next/server/app/index.segments/_index.segment.rsc +14 -0
  475. package/.next/server/app/index.segments/_tree.segment.rsc +5 -0
  476. package/.next/server/app/page/app-paths-manifest.json +3 -0
  477. package/.next/server/app/page/build-manifest.json +18 -0
  478. package/.next/server/app/page/next-font-manifest.json +11 -0
  479. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  480. package/.next/server/app/page/server-reference-manifest.json +4 -0
  481. package/.next/server/app/page.js +16 -0
  482. package/.next/server/app/page.js.nft.json +1 -0
  483. package/.next/server/app/page_client-reference-manifest.js +3 -0
  484. package/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  485. package/.next/server/app/settings/page/build-manifest.json +18 -0
  486. package/.next/server/app/settings/page/next-font-manifest.json +11 -0
  487. package/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  488. package/.next/server/app/settings/page/server-reference-manifest.json +41 -0
  489. package/.next/server/app/settings/page.js +16 -0
  490. package/.next/server/app/settings/page.js.nft.json +1 -0
  491. package/.next/server/app/settings/page_client-reference-manifest.js +3 -0
  492. package/.next/server/app/settings.html +1 -0
  493. package/.next/server/app/settings.meta +15 -0
  494. package/.next/server/app/settings.rsc +31 -0
  495. package/.next/server/app/settings.segments/_full.segment.rsc +31 -0
  496. package/.next/server/app/settings.segments/_head.segment.rsc +6 -0
  497. package/.next/server/app/settings.segments/_index.segment.rsc +14 -0
  498. package/.next/server/app/settings.segments/_tree.segment.rsc +5 -0
  499. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +9 -0
  500. package/.next/server/app/settings.segments/settings.segment.rsc +5 -0
  501. package/.next/server/app-paths-manifest.json +69 -0
  502. package/.next/server/chunks/00i._ai_dist_index_mjs_0u4.k1t._.js +34 -0
  503. package/.next/server/chunks/02dz_web__next-internal_server_app_api_config_test-embedding_route_actions_09--owe.js +3 -0
  504. package/.next/server/chunks/02dz_web__next-internal_server_app_api_config_test-provider_route_actions_0l6xr0t.js +3 -0
  505. package/.next/server/chunks/02dz_web__next-internal_server_app_api_deploy_cloud-project_route_actions_0pghds2.js +3 -0
  506. package/.next/server/chunks/02dz_web__next-internal_server_app_api_deployment_blob-setup_route_actions_0f55gkq.js +3 -0
  507. package/.next/server/chunks/02dz_web__next-internal_server_app_api_doc-editor_extract-text_route_actions_0dzj6iq.js +3 -0
  508. package/.next/server/chunks/02dz_web__next-internal_server_app_api_marketplace_[toolId]_route_actions_0cxbtrw.js +3 -0
  509. package/.next/server/chunks/02dz_web__next-internal_server_app_api_vector-stores_install_route_actions_0_220fs.js +3 -0
  510. package/.next/server/chunks/02dz_web__next-internal_server_app_api_vector-stores_status_route_actions_0~_~b02.js +3 -0
  511. package/.next/server/chunks/0gvc_next_03p7xh-._.js +13 -0
  512. package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_0--xko7.js +24 -0
  513. package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_0.07y39.js +3 -0
  514. package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_04i84m2.js +10 -0
  515. package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_05yqn19.js +3 -0
  516. package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_0_c4eox.js +3 -0
  517. package/.next/server/chunks/0m6-_@ai-sdk_anthropic_dist_index_093y5mm.js +10 -0
  518. package/.next/server/chunks/0nf3_next-internal_server_app_api_integrations_notion_callback_route_actions_0hyfnmw.js +3 -0
  519. package/.next/server/chunks/0ntz_@ai-sdk_openai_dist_index_mjs_03ljy2u._.js +13 -0
  520. package/.next/server/chunks/0ozc_@vercel_oidc_dist_token_0m1934l.js +3 -0
  521. package/.next/server/chunks/0rgj_zod_v4_0ponial._.js +64 -0
  522. package/.next/server/chunks/0rgj_zod_v4_0zoqna9._.js +64 -0
  523. package/.next/server/chunks/[externals]__01hpkma._.js +3 -0
  524. package/.next/server/chunks/[externals]__01tm01i._.js +3 -0
  525. package/.next/server/chunks/[externals]_chromadb_0goja~y._.js +3 -0
  526. package/.next/server/chunks/[externals]_fs_0eo4gmu._.js +3 -0
  527. package/.next/server/chunks/[externals]_path_0.09pfe._.js +3 -0
  528. package/.next/server/chunks/[externals]_stream_0g9s3ok._.js +3 -0
  529. package/.next/server/chunks/[root-of-the-server]__0--6uey._.js +3 -0
  530. package/.next/server/chunks/[root-of-the-server]__0.qd1p3._.js +3 -0
  531. package/.next/server/chunks/[root-of-the-server]__0.r5yhr._.js +49 -0
  532. package/.next/server/chunks/[root-of-the-server]__0036943._.js +199 -0
  533. package/.next/server/chunks/[root-of-the-server]__00a7cyb._.js +3 -0
  534. package/.next/server/chunks/[root-of-the-server]__00nqa2u._.js +59 -0
  535. package/.next/server/chunks/[root-of-the-server]__0111be7._.js +3 -0
  536. package/.next/server/chunks/[root-of-the-server]__02c_z~9._.js +3 -0
  537. package/.next/server/chunks/[root-of-the-server]__02cpmox._.js +105 -0
  538. package/.next/server/chunks/[root-of-the-server]__02p-tv7._.js +105 -0
  539. package/.next/server/chunks/[root-of-the-server]__02p34d7._.js +3 -0
  540. package/.next/server/chunks/[root-of-the-server]__02t_0g7._.js +59 -0
  541. package/.next/server/chunks/[root-of-the-server]__03-x3no._.js +3 -0
  542. package/.next/server/chunks/[root-of-the-server]__03l~uw5._.js +143 -0
  543. package/.next/server/chunks/[root-of-the-server]__044l2_f._.js +143 -0
  544. package/.next/server/chunks/[root-of-the-server]__04kopvt._.js +63 -0
  545. package/.next/server/chunks/[root-of-the-server]__04l~ip-._.js +59 -0
  546. package/.next/server/chunks/[root-of-the-server]__04visk8._.js +105 -0
  547. package/.next/server/chunks/[root-of-the-server]__05wk..v._.js +3 -0
  548. package/.next/server/chunks/[root-of-the-server]__05x8tmf._.js +59 -0
  549. package/.next/server/chunks/[root-of-the-server]__06l96vc._.js +59 -0
  550. package/.next/server/chunks/[root-of-the-server]__06ohoeu._.js +59 -0
  551. package/.next/server/chunks/[root-of-the-server]__072q335._.js +3 -0
  552. package/.next/server/chunks/[root-of-the-server]__07_1411._.js +59 -0
  553. package/.next/server/chunks/[root-of-the-server]__09kos0n._.js +3 -0
  554. package/.next/server/chunks/[root-of-the-server]__09oyip3._.js +3 -0
  555. package/.next/server/chunks/[root-of-the-server]__09rsmk2._.js +3 -0
  556. package/.next/server/chunks/[root-of-the-server]__0_by00t._.js +11 -0
  557. package/.next/server/chunks/[root-of-the-server]__0a9jp5~._.js +3 -0
  558. package/.next/server/chunks/[root-of-the-server]__0acpo9m._.js +59 -0
  559. package/.next/server/chunks/[root-of-the-server]__0b17yoc._.js +3 -0
  560. package/.next/server/chunks/[root-of-the-server]__0cumfx6._.js +9 -0
  561. package/.next/server/chunks/[root-of-the-server]__0d7p0xo._.js +3 -0
  562. package/.next/server/chunks/[root-of-the-server]__0e_itje._.js +3 -0
  563. package/.next/server/chunks/[root-of-the-server]__0exyn0q._.js +88 -0
  564. package/.next/server/chunks/[root-of-the-server]__0fcf_rl._.js +59 -0
  565. package/.next/server/chunks/[root-of-the-server]__0f~eq1-._.js +59 -0
  566. package/.next/server/chunks/[root-of-the-server]__0g36cgg._.js +143 -0
  567. package/.next/server/chunks/[root-of-the-server]__0g4hq1o._.js +3 -0
  568. package/.next/server/chunks/[root-of-the-server]__0i9fj76._.js +3 -0
  569. package/.next/server/chunks/[root-of-the-server]__0lczaer._.js +143 -0
  570. package/.next/server/chunks/[root-of-the-server]__0ljy49-._.js +59 -0
  571. package/.next/server/chunks/[root-of-the-server]__0lk5hkk._.js +3 -0
  572. package/.next/server/chunks/[root-of-the-server]__0n0nerw._.js +59 -0
  573. package/.next/server/chunks/[root-of-the-server]__0np09bv._.js +3 -0
  574. package/.next/server/chunks/[root-of-the-server]__0ns~dg6._.js +3 -0
  575. package/.next/server/chunks/[root-of-the-server]__0oh5wgp._.js +59 -0
  576. package/.next/server/chunks/[root-of-the-server]__0oyc7s4._.js +105 -0
  577. package/.next/server/chunks/[root-of-the-server]__0pg~eys._.js +59 -0
  578. package/.next/server/chunks/[root-of-the-server]__0qhpl6k._.js +3 -0
  579. package/.next/server/chunks/[root-of-the-server]__0qhwzn-._.js +21 -0
  580. package/.next/server/chunks/[root-of-the-server]__0qs73xp._.js +143 -0
  581. package/.next/server/chunks/[root-of-the-server]__0qtx78g._.js +59 -0
  582. package/.next/server/chunks/[root-of-the-server]__0r03jcl._.js +59 -0
  583. package/.next/server/chunks/[root-of-the-server]__0rdjqpy._.js +3 -0
  584. package/.next/server/chunks/[root-of-the-server]__0sb7d93._.js +59 -0
  585. package/.next/server/chunks/[root-of-the-server]__0t36t5o._.js +60 -0
  586. package/.next/server/chunks/[root-of-the-server]__0t_hp52._.js +59 -0
  587. package/.next/server/chunks/[root-of-the-server]__0udlgj6._.js +3 -0
  588. package/.next/server/chunks/[root-of-the-server]__0ufk3d0._.js +3 -0
  589. package/.next/server/chunks/[root-of-the-server]__0uu6oan._.js +3 -0
  590. package/.next/server/chunks/[root-of-the-server]__0v.0gyp._.js +3 -0
  591. package/.next/server/chunks/[root-of-the-server]__0v03x56._.js +59 -0
  592. package/.next/server/chunks/[root-of-the-server]__0v4bbce._.js +59 -0
  593. package/.next/server/chunks/[root-of-the-server]__0v67rlo._.js +3 -0
  594. package/.next/server/chunks/[root-of-the-server]__0vcdpoc._.js +59 -0
  595. package/.next/server/chunks/[root-of-the-server]__0veqa4o._.js +3 -0
  596. package/.next/server/chunks/[root-of-the-server]__0wvxpqf._.js +59 -0
  597. package/.next/server/chunks/[root-of-the-server]__0wyl7x5._.js +59 -0
  598. package/.next/server/chunks/[root-of-the-server]__0y5y7tu._.js +3 -0
  599. package/.next/server/chunks/[root-of-the-server]__0yo._sm._.js +3 -0
  600. package/.next/server/chunks/[root-of-the-server]__0yx8vxp._.js +59 -0
  601. package/.next/server/chunks/[root-of-the-server]__0zh8t6z._.js +59 -0
  602. package/.next/server/chunks/[root-of-the-server]__0~q2fro._.js +59 -0
  603. package/.next/server/chunks/[root-of-the-server]__0~wsw0_._.js +3 -0
  604. package/.next/server/chunks/[root-of-the-server]__100gqj0._.js +143 -0
  605. package/.next/server/chunks/[root-of-the-server]__10au-r5._.js +13 -0
  606. package/.next/server/chunks/[root-of-the-server]__10d58x4._.js +59 -0
  607. package/.next/server/chunks/[root-of-the-server]__10zm06g._.js +143 -0
  608. package/.next/server/chunks/[root-of-the-server]__12kvuvp._.js +59 -0
  609. package/.next/server/chunks/[root-of-the-server]__13gq0t2._.js +3 -0
  610. package/.next/server/chunks/[turbopack]_runtime.js +903 -0
  611. package/.next/server/chunks/_01kokno._.js +3 -0
  612. package/.next/server/chunks/_059f-.0._.js +258 -0
  613. package/.next/server/chunks/_071mhy1._.js +32 -0
  614. package/.next/server/chunks/apps_web__next-internal_server_app_api_analytics_route_actions_0.uxcnt.js +3 -0
  615. package/.next/server/chunks/apps_web__next-internal_server_app_api_chat_route_actions_0q6zwqv.js +3 -0
  616. package/.next/server/chunks/apps_web__next-internal_server_app_api_chat_status_route_actions_0t_21~v.js +3 -0
  617. package/.next/server/chunks/apps_web__next-internal_server_app_api_chat_suggestions_route_actions_01umx_-.js +3 -0
  618. package/.next/server/chunks/apps_web__next-internal_server_app_api_config_route_actions_0-4ivvk.js +3 -0
  619. package/.next/server/chunks/apps_web__next-internal_server_app_api_config_test-llm_route_actions_0z5ew-0.js +3 -0
  620. package/.next/server/chunks/apps_web__next-internal_server_app_api_config_test_route_actions_08cur6r.js +3 -0
  621. package/.next/server/chunks/apps_web__next-internal_server_app_api_config_verify_route_actions_0hid6b..js +3 -0
  622. package/.next/server/chunks/apps_web__next-internal_server_app_api_connections_route_actions_0q3wdg3.js +3 -0
  623. package/.next/server/chunks/apps_web__next-internal_server_app_api_connections_webhook_route_actions_0wa28~b.js +3 -0
  624. package/.next/server/chunks/apps_web__next-internal_server_app_api_demo_route_actions_05lntn3.js +3 -0
  625. package/.next/server/chunks/apps_web__next-internal_server_app_api_deploy_ssh_route_actions_0r44rn0.js +3 -0
  626. package/.next/server/chunks/apps_web__next-internal_server_app_api_deployment_config_route_actions_0bkon.m.js +3 -0
  627. package/.next/server/chunks/apps_web__next-internal_server_app_api_describe-image_route_actions_0pmvs8v.js +3 -0
  628. package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_edit_route_actions_10hrovj.js +3 -0
  629. package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_export_route_actions_0rff01q.js +3 -0
  630. package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_parse_route_actions_0fkx6xw.js +3 -0
  631. package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_restore_route_actions_0g9uodw.js +3 -0
  632. package/.next/server/chunks/apps_web__next-internal_server_app_api_document_sign_route_actions_0_6rnl_.js +3 -0
  633. package/.next/server/chunks/apps_web__next-internal_server_app_api_documents_route_actions_0l2znaz.js +3 -0
  634. package/.next/server/chunks/apps_web__next-internal_server_app_api_firecrawl_local_route_actions_0ubjaim.js +3 -0
  635. package/.next/server/chunks/apps_web__next-internal_server_app_api_index_route_actions_0~2989e.js +3 -0
  636. package/.next/server/chunks/apps_web__next-internal_server_app_api_integrations_notion_route_actions_08es~5e.js +3 -0
  637. package/.next/server/chunks/apps_web__next-internal_server_app_api_jobs_[id]_route_actions_0.l39qd.js +3 -0
  638. package/.next/server/chunks/apps_web__next-internal_server_app_api_jobs_route_actions_08kx~8-.js +3 -0
  639. package/.next/server/chunks/apps_web__next-internal_server_app_api_marketplace_route_actions_0z~vymm.js +3 -0
  640. package/.next/server/chunks/apps_web__next-internal_server_app_api_media_[id]_route_actions_0wsnidd.js +3 -0
  641. package/.next/server/chunks/apps_web__next-internal_server_app_api_media_process_route_actions_0_j9maz.js +3 -0
  642. package/.next/server/chunks/apps_web__next-internal_server_app_api_media_route_actions_01szz-1.js +3 -0
  643. package/.next/server/chunks/apps_web__next-internal_server_app_api_media_stream_route_actions_0h2x_~2.js +3 -0
  644. package/.next/server/chunks/apps_web__next-internal_server_app_api_models_route_actions_0ervfbf.js +3 -0
  645. package/.next/server/chunks/apps_web__next-internal_server_app_api_parse-file_route_actions_134wu5p.js +3 -0
  646. package/.next/server/chunks/apps_web__next-internal_server_app_api_proxy_verify_route_actions_11frmb9.js +3 -0
  647. package/.next/server/chunks/apps_web__next-internal_server_app_api_sandbox_route_actions_0y9te9y.js +3 -0
  648. package/.next/server/chunks/apps_web__next-internal_server_app_api_search_bing_route_actions_0pfrdr1.js +3 -0
  649. package/.next/server/chunks/apps_web__next-internal_server_app_api_search_brave_route_actions_0sij14a.js +3 -0
  650. package/.next/server/chunks/apps_web__next-internal_server_app_api_search_exa_route_actions_013do9i.js +3 -0
  651. package/.next/server/chunks/apps_web__next-internal_server_app_api_search_google_route_actions_02aoghr.js +3 -0
  652. package/.next/server/chunks/apps_web__next-internal_server_app_api_search_route_actions_0_2o9ph.js +3 -0
  653. package/.next/server/chunks/apps_web__next-internal_server_app_api_search_tavily_route_actions_0z0cnd4.js +3 -0
  654. package/.next/server/chunks/apps_web__next-internal_server_app_api_search_verify_route_actions_0xtygzs.js +3 -0
  655. package/.next/server/chunks/apps_web__next-internal_server_app_api_server_agent_route_actions_11xuz1m.js +3 -0
  656. package/.next/server/chunks/apps_web__next-internal_server_app_api_server_download_route_actions_0vdr_bn.js +3 -0
  657. package/.next/server/chunks/apps_web__next-internal_server_app_api_server_generate_route_actions_12qf.pa.js +3 -0
  658. package/.next/server/chunks/apps_web__next-internal_server_app_api_server_local_route_actions_0c~tchb.js +3 -0
  659. package/.next/server/chunks/apps_web__next-internal_server_app_api_servers_route_actions_0_qimaq.js +3 -0
  660. package/.next/server/chunks/apps_web__next-internal_server_app_api_tabular_query_route_actions_0m_i8~j.js +3 -0
  661. package/.next/server/chunks/apps_web__next-internal_server_app_api_tabular_route_actions_06xgjmg.js +3 -0
  662. package/.next/server/chunks/apps_web__next-internal_server_app_api_upload-file_route_actions_0-df~h8.js +3 -0
  663. package/.next/server/chunks/apps_web__next-internal_server_app_api_uploads_[___slug]_route_actions_0-6rd8s.js +3 -0
  664. package/.next/server/chunks/apps_web__next-internal_server_app_favicon_ico_route_actions_0h5n1et.js +3 -0
  665. package/.next/server/chunks/node_modules__pnpm_00a45hz._.js +15 -0
  666. package/.next/server/chunks/node_modules__pnpm_01evtue._.js +36 -0
  667. package/.next/server/chunks/node_modules__pnpm_058qmaf._.js +36 -0
  668. package/.next/server/chunks/node_modules__pnpm_090g2s3._.js +3 -0
  669. package/.next/server/chunks/node_modules__pnpm_0of6.x_._.js +3 -0
  670. package/.next/server/chunks/node_modules__pnpm_0tui34u._.js +5 -0
  671. package/.next/server/chunks/node_modules__pnpm_11fyqx5._.js +15 -0
  672. package/.next/server/chunks/node_modules__pnpm_12rdsen._.js +36 -0
  673. package/.next/server/chunks/packages_070bs61._.js +3 -0
  674. package/.next/server/chunks/packages_0jmx5.-._.js +3 -0
  675. package/.next/server/chunks/packages_core_src_analytics-store_ts_03tqnqs._.js +3 -0
  676. package/.next/server/chunks/packages_core_src_embeddings_providers_ts_05f4_w-._.js +19 -0
  677. package/.next/server/chunks/packages_core_src_embeddings_registry_ts_031sc7-._.js +3 -0
  678. package/.next/server/chunks/packages_core_src_generator_generate-server_ts_0mt.je3._.js +1145 -0
  679. package/.next/server/chunks/packages_core_src_generator_server-runtime_ts_127f0ye._.js +648 -0
  680. package/.next/server/chunks/packages_core_src_index-store_ts_13sjtkb._.js +3 -0
  681. package/.next/server/chunks/packages_core_src_indexing_embedder_ts_0h75r~u._.js +20 -0
  682. package/.next/server/chunks/packages_core_src_media-store_ts_0v0lx36._.js +3 -0
  683. package/.next/server/chunks/packages_core_src_models-list_ts_03-odl5._.js +3 -0
  684. package/.next/server/chunks/packages_marketplace_src_0mxp_e3._.js +3 -0
  685. package/.next/server/chunks/packages_marketplace_src_storage-provider_ts_0mbs32-._.js +3 -0
  686. package/.next/server/chunks/packages_vector-stores_src_044u_tk._.js +3 -0
  687. package/.next/server/chunks/ssr/0ay0_framer-motion_dist_es_render_components_motion_proxy_mjs_00idub3._.js +3 -0
  688. package/.next/server/chunks/ssr/0gvc_next_dist_0e.uypd._.js +6 -0
  689. package/.next/server/chunks/ssr/0gvc_next_dist_client_components_0mj6fnc._.js +3 -0
  690. package/.next/server/chunks/ssr/0gvc_next_dist_client_components_builtin_forbidden_10qct8z.js +3 -0
  691. package/.next/server/chunks/ssr/0gvc_next_dist_client_components_builtin_global-error_0azu6.3.js +3 -0
  692. package/.next/server/chunks/ssr/0gvc_next_dist_client_components_builtin_unauthorized_03b6_.w.js +3 -0
  693. package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0-imr0z.js +4 -0
  694. package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_00l31p..js +4 -0
  695. package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0cjdc2w.js +4 -0
  696. package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0fsrb82.js +4 -0
  697. package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0l3eneq.js +4 -0
  698. package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0l6387r.js +4 -0
  699. package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0pk8tjk.js +4 -0
  700. package/.next/server/chunks/ssr/0hhw_pdfjs-dist_build_pdf_mjs_0emol.8._.js +47 -0
  701. package/.next/server/chunks/ssr/0ozc_@vercel_oidc_dist_token_0qkzh69.js +3 -0
  702. package/.next/server/chunks/ssr/[root-of-the-server]__03nybtv._.js +3 -0
  703. package/.next/server/chunks/ssr/[root-of-the-server]__061054q._.js +33 -0
  704. package/.next/server/chunks/ssr/[root-of-the-server]__0_lfs3c._.js +3 -0
  705. package/.next/server/chunks/ssr/[root-of-the-server]__0bxkvem._.js +3 -0
  706. package/.next/server/chunks/ssr/[root-of-the-server]__0ciwgj6._.js +3 -0
  707. package/.next/server/chunks/ssr/[root-of-the-server]__0f10~ff._.js +3 -0
  708. package/.next/server/chunks/ssr/[root-of-the-server]__0l9758p._.js +3 -0
  709. package/.next/server/chunks/ssr/[root-of-the-server]__0mib-aw._.js +3 -0
  710. package/.next/server/chunks/ssr/[root-of-the-server]__0o6u8a1._.js +3 -0
  711. package/.next/server/chunks/ssr/[root-of-the-server]__0q-0ign._.js +33 -0
  712. package/.next/server/chunks/ssr/[root-of-the-server]__0u7t7hm._.js +3 -0
  713. package/.next/server/chunks/ssr/[root-of-the-server]__0yxrvhy._.js +3 -0
  714. package/.next/server/chunks/ssr/[root-of-the-server]__0z9yy2_._.js +3 -0
  715. package/.next/server/chunks/ssr/[root-of-the-server]__0zl.q74._.js +3 -0
  716. package/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
  717. package/.next/server/chunks/ssr/_0-uky5v._.js +3 -0
  718. package/.next/server/chunks/ssr/_0007q7_._.js +3 -0
  719. package/.next/server/chunks/ssr/_003vid-._.js +3 -0
  720. package/.next/server/chunks/ssr/_03casre._.js +6 -0
  721. package/.next/server/chunks/ssr/_06imf71._.js +4 -0
  722. package/.next/server/chunks/ssr/_08uade7._.js +3 -0
  723. package/.next/server/chunks/ssr/_09~o4f.._.js +13 -0
  724. package/.next/server/chunks/ssr/_0_aolb-._.js +3 -0
  725. package/.next/server/chunks/ssr/_0_zom3a._.js +3 -0
  726. package/.next/server/chunks/ssr/_0erod4k._.js +3 -0
  727. package/.next/server/chunks/ssr/_0gh6844._.js +3 -0
  728. package/.next/server/chunks/ssr/_0h9s_hw._.js +3 -0
  729. package/.next/server/chunks/ssr/_0p1j64v._.js +3 -0
  730. package/.next/server/chunks/ssr/_0qi5c9~._.js +132 -0
  731. package/.next/server/chunks/ssr/_0qopd-r._.js +120 -0
  732. package/.next/server/chunks/ssr/_0s5_0n1._.js +3 -0
  733. package/.next/server/chunks/ssr/_11.lrfy._.js +6 -0
  734. package/.next/server/chunks/ssr/_13gucvb._.js +3 -0
  735. package/.next/server/chunks/ssr/apps_web__next-internal_server_app__global-error_page_actions_0.u5cfa.js +3 -0
  736. package/.next/server/chunks/ssr/apps_web__next-internal_server_app__not-found_page_actions_0appun9.js +3 -0
  737. package/.next/server/chunks/ssr/apps_web__next-internal_server_app_analytics_page_actions_04e3dmk.js +3 -0
  738. package/.next/server/chunks/ssr/apps_web__next-internal_server_app_chat_page_actions_0x9i55t.js +3 -0
  739. package/.next/server/chunks/ssr/apps_web__next-internal_server_app_data_page_actions_0f9t7xs.js +3 -0
  740. package/.next/server/chunks/ssr/apps_web__next-internal_server_app_page_actions_0rm5_5w.js +3 -0
  741. package/.next/server/chunks/ssr/apps_web_app_template_tsx_0.4m7c9._.js +3 -0
  742. package/.next/server/chunks/ssr/apps_web_app_template_tsx_0j2myib._.js +3 -0
  743. package/.next/server/chunks/ssr/apps_web_components_analytics_analytics-dashboard_tsx_0lrr85m._.js +3 -0
  744. package/.next/server/chunks/ssr/apps_web_components_ui_tabs_tsx_0435ww5._.js +3 -0
  745. package/.next/server/chunks/ssr/apps_web_lib_pdf-images_ts_0nzct~e._.js +3 -0
  746. package/.next/server/chunks/ssr/node_modules__pnpm_0auud-z._.js +3 -0
  747. package/.next/server/chunks/ssr/node_modules__pnpm_0efi01o._.js +3 -0
  748. package/.next/server/chunks/ssr/node_modules__pnpm_0ge5k63._.js +3 -0
  749. package/.next/server/chunks/ssr/node_modules__pnpm_0j6v-w5._.js +3 -0
  750. package/.next/server/chunks/ssr/node_modules__pnpm_0jmin55._.js +33 -0
  751. package/.next/server/chunks/ssr/node_modules__pnpm_0qjmu5-._.js +3 -0
  752. package/.next/server/chunks/ssr/node_modules__pnpm_0q~5d-e._.js +3 -0
  753. package/.next/server/chunks/ssr/node_modules__pnpm_0xnq.u3._.js +19 -0
  754. package/.next/server/chunks/ssr/packages_core_src_generator_generate-server_ts_0o.y7vi._.js +1145 -0
  755. package/.next/server/functions-config-manifest.json +52 -0
  756. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  757. package/.next/server/middleware-build-manifest.js +22 -0
  758. package/.next/server/middleware-manifest.json +6 -0
  759. package/.next/server/next-font-manifest.js +1 -0
  760. package/.next/server/next-font-manifest.json +31 -0
  761. package/.next/server/pages/404.html +1 -0
  762. package/.next/server/pages/500.html +1 -0
  763. package/.next/server/pages-manifest.json +4 -0
  764. package/.next/server/prefetch-hints.json +1 -0
  765. package/.next/server/server-reference-manifest.js +1 -0
  766. package/.next/server/server-reference-manifest.json +42 -0
  767. package/.next/static/KqIuNxkoeAlhCusoxtMrS/_buildManifest.js +16 -0
  768. package/.next/static/KqIuNxkoeAlhCusoxtMrS/_clientMiddlewareManifest.js +1 -0
  769. package/.next/static/KqIuNxkoeAlhCusoxtMrS/_ssgManifest.js +1 -0
  770. package/.next/static/chunks/0-l-_.e4~p-tu.js +1 -0
  771. package/.next/static/chunks/00bdh97xa16uo.js +1 -0
  772. package/.next/static/chunks/00h-ng_jqta-2.js +1 -0
  773. package/.next/static/chunks/03jot0gqi~a10.js +1 -0
  774. package/.next/static/chunks/03~yq9q893hmn.js +1 -0
  775. package/.next/static/chunks/066jf0nk75nic.css +2 -0
  776. package/.next/static/chunks/06lztj0p4bq9f.js +31 -0
  777. package/.next/static/chunks/06mvsykkx_ufi.js +1 -0
  778. package/.next/static/chunks/090nmx8zs_1wf.js +1 -0
  779. package/.next/static/chunks/0_~l8kd_h3sbq.js +1 -0
  780. package/.next/static/chunks/0c-2rnxmjsotm.js +118 -0
  781. package/.next/static/chunks/0ho7lc.x2uknx.js +1 -0
  782. package/.next/static/chunks/0i-8kxwbvp9.l.js +129 -0
  783. package/.next/static/chunks/0l27y8_9hhe7s.js +4 -0
  784. package/.next/static/chunks/0q_qvc60_3aw4.js +1 -0
  785. package/.next/static/chunks/0r4ctb~yxw0ip.js +45 -0
  786. package/.next/static/chunks/0rp85cjcakb29.js +1 -0
  787. package/.next/static/chunks/0uawaqqylt5zw.css +1 -0
  788. package/.next/static/chunks/0ufxt21gvl.3g.js +1 -0
  789. package/.next/static/chunks/0vnayejbagbex.js +1 -0
  790. package/.next/static/chunks/0w6lgn24.0eip.js +1 -0
  791. package/.next/static/chunks/0wrbyfcre8l1-.js +1 -0
  792. package/.next/static/chunks/0xil-1~ra.qnv.js +1 -0
  793. package/.next/static/chunks/0zoh3o_.geqbv.js +1 -0
  794. package/.next/static/chunks/0~074ua5vk6f8.js +1 -0
  795. package/.next/static/chunks/0~_-3fik2n4-i.js +1 -0
  796. package/.next/static/chunks/10a_hianorzj3.js +1 -0
  797. package/.next/static/chunks/10k--lk9wf4pw.js +1 -0
  798. package/.next/static/chunks/14x~vj_4i-4bz.js +1 -0
  799. package/.next/static/chunks/15tyhmsp4jgmc.js +11 -0
  800. package/.next/static/chunks/16alfqkklv-bt.js +2 -0
  801. package/.next/static/chunks/176ixsksxtch_.js +1 -0
  802. package/.next/static/chunks/turbopack-06_~2vs.chjg_.js +1 -0
  803. package/.next/static/media/4fa387ec64143e14-s.0wkzw~je483f-.woff2 +0 -0
  804. package/.next/static/media/53b9e256198e5412-s.0-wfv7uh4i7h9.woff2 +0 -0
  805. package/.next/static/media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2 +0 -0
  806. package/.next/static/media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2 +0 -0
  807. package/.next/static/media/7178b3e590c64307-s.0nx0ww8fni_q3.woff2 +0 -0
  808. package/.next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2 +0 -0
  809. package/.next/static/media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2 +0 -0
  810. package/.next/static/media/8a480f0b521d4e75-s.0jzbimsg8vl84.woff2 +0 -0
  811. package/.next/static/media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2 +0 -0
  812. package/.next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2 +0 -0
  813. package/.next/static/media/favicon.01rzdfen4476b.ico +0 -0
  814. package/.next/static/media/fef07dbb0973bf53-s.12tyk43_3sh9u.woff2 +0 -0
  815. package/.next/types/cache-life.d.ts +145 -0
  816. package/.next/types/routes.d.ts +136 -0
  817. package/.next/types/validator.ts +637 -0
  818. package/CHANGELOG.md +24 -0
  819. package/LICENSE +176 -0
  820. package/app/actions/vercel.ts +325 -152
  821. package/app/analytics/page.tsx +19 -0
  822. package/app/api/analytics/route.ts +31 -0
  823. package/app/api/chat/route.ts +331 -145
  824. package/app/api/chat/status/route.ts +73 -22
  825. package/app/api/chat/suggestions/route.ts +61 -48
  826. package/app/api/chat/tools.ts +995 -0
  827. package/app/api/config/route.ts +56 -32
  828. package/app/api/config/test/route.ts +33 -32
  829. package/app/api/config/test-llm/route.ts +9 -10
  830. package/app/api/config/verify/route.ts +315 -0
  831. package/app/api/connections/route.ts +39 -0
  832. package/app/api/connections/webhook/route.ts +43 -0
  833. package/app/api/demo/route.ts +32 -44
  834. package/app/api/deploy/cloud-project/route.ts +125 -0
  835. package/app/api/deploy/ssh/route.ts +173 -132
  836. package/app/api/deployment/blob-setup/route.ts +28 -0
  837. package/app/api/deployment/config/route.ts +23 -0
  838. package/app/api/describe-image/route.ts +84 -0
  839. package/app/api/doc-editor/edit/route.ts +88 -0
  840. package/app/api/doc-editor/export/route.ts +33 -0
  841. package/app/api/doc-editor/extract-text/route.ts +41 -0
  842. package/app/api/doc-editor/parse/route.ts +66 -0
  843. package/app/api/doc-editor/restore/route.ts +74 -0
  844. package/app/api/document/sign/route.ts +56 -0
  845. package/app/api/documents/route.ts +185 -35
  846. package/app/api/firecrawl/local/route.ts +63 -23
  847. package/app/api/index/route.ts +73 -59
  848. package/app/api/integrations/notion/callback/route.ts +121 -0
  849. package/app/api/integrations/notion/route.ts +304 -0
  850. package/app/api/jobs/route.ts +45 -47
  851. package/app/api/marketplace/[toolId]/route.ts +70 -0
  852. package/app/api/marketplace/route.ts +32 -0
  853. package/app/api/media/[id]/route.ts +108 -0
  854. package/app/api/media/process/route.ts +1242 -0
  855. package/app/api/media/route.ts +284 -0
  856. package/app/api/media/stream/route.ts +113 -0
  857. package/app/api/models/route.ts +23 -0
  858. package/app/api/proxy/verify/route.ts +66 -0
  859. package/app/api/sandbox/route.ts +59 -0
  860. package/app/api/search/bing/route.ts +87 -0
  861. package/app/api/search/brave/route.ts +89 -0
  862. package/app/api/search/exa/route.ts +101 -0
  863. package/app/api/search/google/route.ts +16 -29
  864. package/app/api/search/tavily/route.ts +94 -0
  865. package/app/api/search/verify/route.ts +28 -0
  866. package/app/api/server/agent/route.ts +41 -0
  867. package/app/api/server/download/route.ts +42 -34
  868. package/app/api/server/generate/route.ts +23 -23
  869. package/app/api/servers/route.ts +46 -62
  870. package/app/api/tabular/query/route.ts +26 -0
  871. package/app/api/tabular/route.ts +63 -0
  872. package/app/api/upload-file/route.ts +38 -0
  873. package/app/api/uploads/[...slug]/route.ts +90 -0
  874. package/app/api/vector-stores/install/route.ts +5 -6
  875. package/app/api/vector-stores/status/route.ts +9 -7
  876. package/app/chat/page.tsx +4 -8
  877. package/app/data/page.tsx +15 -8
  878. package/app/globals.css +150 -22
  879. package/app/layout.tsx +19 -17
  880. package/app/page.tsx +3 -32
  881. package/app/settings/page.tsx +80 -0
  882. package/app/themes.css +38 -2
  883. package/archive/redesign-v2/app/configure/page.tsx +53 -0
  884. package/archive/redesign-v2/app/demo/page.tsx +15 -0
  885. package/archive/redesign-v2/app/server/page.tsx +22 -0
  886. package/archive/redesign-v2/app/simple/chat/page.tsx +17 -0
  887. package/archive/redesign-v2/app/simple/docs/page.tsx +21 -0
  888. package/archive/redesign-v2/app/simple/settings/page.tsx +1104 -0
  889. package/{app → archive/redesign-v2/app-routes}/server/page.tsx +2 -2
  890. package/archive/redesign-v2/app-routes/simple/settings/page.tsx +1104 -0
  891. package/archive/redesign-v2/components/app-sidebar.tsx +188 -0
  892. package/archive/redesign-v2/components/app-topnav.tsx +195 -0
  893. package/archive/redesign-v2/components/global-settings.tsx +288 -0
  894. package/archive/redesign-v2/components/simple/simple-sidebar.tsx +171 -0
  895. package/archive/redesign-v2/components/simple/simple-topnav.tsx +175 -0
  896. package/bin/larkup.js +28 -0
  897. package/components/analytics/analytics-dashboard.tsx +504 -0
  898. package/components/app-sidebar.tsx +46 -57
  899. package/components/app-topnav.tsx +64 -150
  900. package/components/chat/canvas/doc-editor-provider.tsx +343 -0
  901. package/components/chat/canvas/document-canvas.tsx +102 -0
  902. package/components/chat/canvas/document-field.tsx +171 -0
  903. package/components/chat/canvas/document-viewer.tsx +453 -0
  904. package/components/chat/canvas/file-attachment-button.tsx +88 -0
  905. package/components/chat/canvas/file-chip.tsx +151 -0
  906. package/components/chat/chat-settings-modal.tsx +253 -149
  907. package/components/chat/chat-workspace.tsx +961 -149
  908. package/components/chat/message-item.tsx +935 -71
  909. package/components/chat/tools/chat-card.tsx +116 -0
  910. package/components/chat/tools/chat-chart.tsx +548 -0
  911. package/components/chat/tools/chat-data-table.tsx +370 -0
  912. package/components/chat/tools/chat-grid.tsx +99 -0
  913. package/components/chat/tools/chat-media-preview.tsx +246 -0
  914. package/components/chat/tools/chat-metrics.tsx +76 -0
  915. package/components/chat/tools/chat-sandbox-result.tsx +175 -0
  916. package/components/chat/tools/chat-signature-request.tsx +809 -0
  917. package/components/chat/tools/chat-tabs.tsx +66 -0
  918. package/components/chat/tools/corpus-data-result.tsx +206 -0
  919. package/components/chat/tools/knowledge-base-result.tsx +135 -0
  920. package/components/chat/tools/visual-placement-modal.tsx +316 -0
  921. package/components/chat/tools/visualization-tabs.tsx +37 -0
  922. package/components/client-layout-wrapper.tsx +52 -124
  923. package/components/configure/configure-form.tsx +301 -530
  924. package/components/configure/custom-model-modal.tsx +205 -0
  925. package/components/configure/store-fields.tsx +4 -1
  926. package/components/data/corpus-panel.tsx +329 -137
  927. package/components/data/data-workspace.tsx +428 -185
  928. package/components/data/firecrawl-notice.tsx +94 -122
  929. package/components/data/integrations-panel.tsx +408 -0
  930. package/components/data/jobs-panel.tsx +83 -105
  931. package/components/data/media-panel.tsx +1701 -0
  932. package/components/data/notion-panel.tsx +372 -0
  933. package/components/data/paste-panel.tsx +4 -3
  934. package/components/data/scrape-panel.tsx +389 -343
  935. package/components/data/tabular-preview.tsx +228 -0
  936. package/components/data/upload-panel.tsx +500 -206
  937. package/components/demo/demo-workspace.tsx +50 -83
  938. package/components/global-settings.tsx +71 -108
  939. package/components/index/global-index-progress.tsx +46 -0
  940. package/components/index/index-action-dialog.tsx +545 -0
  941. package/components/index/index-workspace.tsx +138 -219
  942. package/components/onboarding/simple-setup.tsx +126 -180
  943. package/components/onboarding/welcome-screen.tsx +428 -157
  944. package/components/server/deploy-button.tsx +95 -1233
  945. package/components/server/deploy-sheet.tsx +1061 -0
  946. package/components/server/server-workspace.tsx +62 -95
  947. package/components/settings/appearance-section.tsx +300 -0
  948. package/components/settings/connections-section.tsx +471 -0
  949. package/components/settings/deploy-section.tsx +24 -0
  950. package/components/settings/deployment-section.tsx +430 -0
  951. package/components/settings/general-section.tsx +734 -0
  952. package/components/settings/marketplace-section.tsx +385 -0
  953. package/components/settings/marketplace-tools-settings.tsx +436 -0
  954. package/components/settings/models-section.tsx +810 -0
  955. package/components/settings/playground-section.tsx +17 -0
  956. package/components/settings/prompts-section.tsx +384 -0
  957. package/components/settings/server-section.tsx +808 -0
  958. package/components/settings/settings-layout.tsx +147 -0
  959. package/components/settings/storage-section.tsx +394 -0
  960. package/components/simple/sdk-connect-dialog.tsx +38 -33
  961. package/components/simple/simple-sidebar.tsx +69 -72
  962. package/components/simple/simple-topnav.tsx +154 -0
  963. package/components/theme-customizer-provider.tsx +56 -79
  964. package/components/theme-switcher.tsx +92 -114
  965. package/components/ui/button.tsx +11 -13
  966. package/components/ui/card.tsx +17 -17
  967. package/components/ui/checkbox.tsx +5 -5
  968. package/components/ui/dialog.tsx +1 -1
  969. package/components/ui/dropdown-menu.tsx +24 -38
  970. package/components/ui/input.tsx +2 -2
  971. package/components/ui/popover.tsx +21 -34
  972. package/components/ui/provider-icon.tsx +88 -17
  973. package/components/ui/select.tsx +44 -61
  974. package/components/ui/sheet.tsx +33 -46
  975. package/components/ui/slider.tsx +52 -0
  976. package/components/ui/sonner.tsx +23 -36
  977. package/components/ui/table.tsx +19 -19
  978. package/components/ui/tabs.tsx +17 -24
  979. package/components/ui/textarea.tsx +4 -4
  980. package/components/unified-sidebar.tsx +222 -0
  981. package/components/update-banner.tsx +203 -0
  982. package/components/workspace/server-form-dialog.tsx +7 -7
  983. package/components/workspace/server-switcher.tsx +15 -37
  984. package/hooks/use-notion-auth.ts +60 -0
  985. package/lib/chat-model-provider.ts +115 -0
  986. package/lib/deployments.ts +119 -0
  987. package/lib/env-utils.ts +27 -0
  988. package/lib/media-knowledge.ts +431 -0
  989. package/lib/os-concurrency.ts +37 -0
  990. package/lib/pdf-images.ts +80 -0
  991. package/lib/search-provider-verification.ts +95 -0
  992. package/next.config.mjs +19 -2
  993. package/package.json +37 -20
  994. package/parse_log.mjs +67 -0
  995. package/public/icons/Confluence.png +0 -0
  996. package/public/icons/Salesforce.png +0 -0
  997. package/public/icons/audio.png +0 -0
  998. package/public/icons/bing.png +0 -0
  999. package/public/icons/brave.png +0 -0
  1000. package/public/icons/deepgram.png +0 -0
  1001. package/public/icons/discord.png +0 -0
  1002. package/public/icons/elevenlabs.png +0 -0
  1003. package/public/icons/exa.png +0 -0
  1004. package/public/icons/excel.png +0 -0
  1005. package/public/icons/fal.png +0 -0
  1006. package/public/icons/firecrawl.png +0 -0
  1007. package/public/icons/google-calender.png +0 -0
  1008. package/public/icons/google-drive.png +0 -0
  1009. package/public/icons/google.png +0 -0
  1010. package/public/icons/grok.png +0 -0
  1011. package/public/icons/image.png +0 -0
  1012. package/public/icons/jira.png +0 -0
  1013. package/public/icons/linear.png +0 -0
  1014. package/public/icons/markdown.png +0 -0
  1015. package/public/icons/onedrive.png +0 -0
  1016. package/public/icons/outlook.png +0 -0
  1017. package/public/icons/pdf.png +0 -0
  1018. package/public/icons/revai.png +0 -0
  1019. package/public/icons/revai.svg +1 -0
  1020. package/public/icons/sap.png +0 -0
  1021. package/public/icons/serpapi.svg +34 -0
  1022. package/public/icons/serper.png +0 -0
  1023. package/public/icons/sharepoint.png +0 -0
  1024. package/public/icons/slack.png +0 -0
  1025. package/public/icons/tavily.png +0 -0
  1026. package/public/icons/telegram.png +0 -0
  1027. package/public/icons/video.png +0 -0
  1028. package/public/icons/webhook.png +0 -0
  1029. package/public/icons/whatsapp.png +0 -0
  1030. package/public/icons/word.png +0 -0
  1031. package/public/logo-light2.png +0 -0
  1032. package/public/logo.png +0 -0
  1033. package/public/notion-white.png +0 -0
  1034. package/public/notion.png +0 -0
  1035. package/store/chat-store.ts +19 -0
  1036. package/store/scrape-store.ts +78 -0
  1037. package/tsconfig.json +1 -1
  1038. package/verify-models.mjs +133 -0
  1039. package/.env +0 -2
  1040. package/app/index-data/page.tsx +0 -15
  1041. package/app/simple/settings/page.tsx +0 -627
  1042. package/components/chat/knowledge-base-result.tsx +0 -97
  1043. /package/{app → archive/redesign-v2/app-routes}/configure/page.tsx +0 -0
  1044. /package/{app → archive/redesign-v2/app-routes}/demo/page.tsx +0 -0
  1045. /package/{app → archive/redesign-v2/app-routes}/simple/chat/page.tsx +0 -0
  1046. /package/{app → archive/redesign-v2/app-routes}/simple/docs/page.tsx +0 -0
  1047. /package/{app → archive/redesign-v2/app-routes}/simple/layout.tsx +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[347299,(e,t,r)=>{t.exports=e.x("node:http",()=>require("node:http"))},834335,e=>{"use strict";var t=e.i(850492),r=e.i(891119),a=e.i(697373),n=e.i(765700),o=e.i(601263),s=e.i(706859),i=e.i(947547),l=e.i(819797),u=e.i(135958),d=e.i(86520),p=e.i(970949),c=e.i(741165),h=e.i(106898),R=e.i(454415),v=e.i(37125),f=e.i(193695);e.i(530058);var m=e.i(605998),x=e.i(686296),y=e.i(347299);async function E(e){try{let t,{server:r,username:a,password:n}=await e.json();if(!r)return x.NextResponse.json({error:"Proxy server URL is required"},{status:400});try{t=new URL(r)}catch{return x.NextResponse.json({error:"Invalid proxy server URL"},{status:400})}return await new Promise((e,r)=>{let o={Host:"example.com"};if(a&&n){let e=Buffer.from(`${a}:${n}`).toString("base64");o["Proxy-Authorization"]=`Basic ${e}`}let s={hostname:t.hostname,port:t.port||("https:"===t.protocol?443:80),path:"http://example.com/",method:"GET",headers:o,timeout:1e4},i=y.request(s,t=>{t.statusCode&&t.statusCode>=200&&t.statusCode<400?e(!0):r(Error(`Proxy returned status code ${t.statusCode}`))});i.on("error",e=>{r(e)}),i.on("timeout",()=>{i.destroy(),r(Error("Proxy verification timed out"))}),i.end()}),x.NextResponse.json({success:!0})}catch(t){let e=t instanceof Error?t.message:"Verification failed";return x.NextResponse.json({error:e},{status:400})}}e.s(["POST",0,E,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],870817);var w=e.i(870817);let g=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/proxy/verify/route",pathname:"/api/proxy/verify",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/proxy/verify/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:A,serverHooks:P}=g;async function N(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),g.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/proxy/verify/route";x=x.replace(/\/index$/,"")||"/";let y=await g.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,deploymentId:w,params:C,nextConfig:A,parsedUrl:P,isDraftMode:N,prerenderManifest:T,routerServerContext:b,isOnDemandRevalidate:S,revalidateOnlyGenerated:O,resolvedPathname:_,clientReferenceManifest:q,serverActionsManifest:U}=y,H=(0,i.normalizeAppPath)(x),I=!!(T.dynamicRoutes[H]||T.routes[_]),M=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,P,!1):t.end("This page could not be found"),null);if(I&&!N){let e=!!T.routes[_],t=T.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await M();throw new f.NoFallbackError}}let j=null;!I||g.isDev||N||(j="/index"===(j=_)?"/":j);let k=!0===g.isDev||!I,D=I&&!k;U&&q&&(0,s.setManifestsSingleton)({page:x,clientReferenceManifest:q,serverActionsManifest:U});let $=e.method||"GET",B=(0,o.getTracer)(),F=B.getActiveScopeSpan(),K=!!(null==b?void 0:b.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await g.getIncrementalCache(e,A,T,L);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let V={params:C,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:k,incrementalCache:G,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>g.onRequestError(e,t,a,n,b)},sharedContext:{buildId:E,deploymentId:w}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let n,s=async e=>g.handle(z,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${$} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${$} ${x}`)}),i=async n=>{var o,i;let l=async({previousCacheEntry:r})=>{try{if(!L&&S&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let i=V.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let l=V.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,X,o,V.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[v.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=v.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,a=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=v.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await g.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,b),t}},u=await g.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!I)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&I||d.delete(v.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,R.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(W,X,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&F?await i(F):(n=B.getActiveScopeSpan(),await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${$} ${x}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},i),void 0,!K))}catch(t){if(t instanceof f.NoFallbackError||await g.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,b),I)throw t;return await (0,c.sendResponse)(W,X,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:A})},"routeModule",0,g,"serverHooks",0,P,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,A],834335)}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0uu6oan._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[148089,t=>{"use strict";t.s(["ChromaAdapter",0,class{config;client;collection;collectionName;constructor(t){this.config=t,this.client=null,this.collection=null,this.collectionName=t.collectionName?.trim()||"documents"}async getClient(){let e;if(this.client)return this.client;try{e=await t.A(917038)}catch{throw Error('The "chromadb" package is not installed. Please install it first via the Configure page or run: pnpm add chromadb --filter @larkup/vector-stores')}if("cloud"===this.config.mode){if(!this.config.apiKey)throw Error("Chroma Cloud requires an API key.");let t=e.CloudClient??e.default?.CloudClient;if(!t)throw Error("Could not find CloudClient in the chromadb package.");this.client=new t({apiKey:this.config.apiKey,tenant:this.config.tenant||"default_tenant",database:this.config.database||"default_database"})}else{let t=this.config.host?.trim()||"http://localhost:8000",i=e.ChromaClient??e.default?.ChromaClient;if(!i)throw Error("Could not find ChromaClient in the chromadb package.");let a={path:t};this.config.authToken&&(a.auth={provider:"token",credentials:this.config.authToken}),this.client=new i(a)}return this.client}async getCollection(){if(this.collection)return this.collection;let t=await this.getClient();return this.collection=await t.getOrCreateCollection({name:this.collectionName,metadata:{"hnsw:space":"cosine"}}),this.collection}async init(t){await this.getCollection()}async reset(){let t=await this.getClient();try{await t.deleteCollection({name:this.collectionName})}catch{}this.collection=null}async deleteByDocumentIds(t){if(0!==t.length)try{let e=await this.getCollection();await e.delete({where:{documentId:{$in:t}}})}catch(t){console.error("Failed to delete vectors by documentIds in Chroma:",t)}}async upsert(t){if(0===t.length)return;let e=await this.getCollection(),i=[],a=[],n=[],r=[];for(let e of t)i.push(e.id),a.push(e.vector),n.push(e.text),r.push(this.buildMetadata(e));for(let t=0;t<i.length;t+=4096)await e.upsert({ids:i.slice(t,t+4096),embeddings:a.slice(t,t+4096),documents:n.slice(t,t+4096),metadatas:r.slice(t,t+4096)})}buildMetadata(t){let e={title:t.title,source:t.source,documentId:t.documentId,chunkIndex:t.chunkIndex};if(t.url&&(e.url=t.url),t.metadata)for(let[i,a]of Object.entries(t.metadata))null!=a&&("string"==typeof a||"number"==typeof a||"boolean"==typeof a?e[i]=a:e[i]=JSON.stringify(a));return e}async count(){try{let t=await this.getCollection();return await t.count()}catch{return null}}async query(t,e,i){let a=await this.getCollection(),n="semantic"===this.config.indexType,r="lexical"===this.config.indexType;if(n||!i?.trim())return this.denseQuery(a,t,e);if(r)return this.documentQuery(a,i,e);let o=await this.denseQuery(a,t,e);try{let t=await this.documentQuery(a,i,e);if(t.length>0){var l,s,c;let i,a;return l=o,s=t,c=e,i=new Map,(a=t=>t.forEach((t,e)=>{let a=1/(60+e+1),n=i.get(t.id);n?n.score+=a:i.set(t.id,{hit:t,score:a})}))(l),a(s),[...i.values()].sort((t,e)=>e.score-t.score).slice(0,c).map(({hit:t,score:e})=>({...t,score:e}))}}catch{}return o}async denseQuery(t,e,i){let a=await t.query({queryEmbeddings:[e],nResults:i,include:["documents","metadatas","distances"]});return this.parseQueryResult(a)}async documentQuery(t,e,i){let a=await t.get({whereDocument:{$contains:e},limit:i,include:["documents","metadatas"]});return this.parseGetResult(a)}parseGetResult(t){if(!t.ids||0===t.ids.length)return[];let e=t.ids,i=t.documents??[],a=t.metadatas??[];return e.map((t,e)=>{let{title:n,url:r,source:o,documentId:l,chunkIndex:s,...c}=a[e]??{};return{id:t,score:1,text:i[e]??"",title:n??"Untitled",url:r||void 0,documentId:l??"",metadata:Object.keys(c).length>0?c:void 0}})}parseQueryResult(t){if(!t.ids?.[0])return[];let e=t.ids[0],i=t.documents?.[0]??[],a=t.metadatas?.[0]??[],n=t.distances?.[0]??[];return e.map((t,e)=>{let r=a[e]??{},o=n[e]??0,{title:l,url:s,source:c,documentId:d,chunkIndex:u,...h}=r;return{id:t,score:1/(1+o),text:i[e]??"",title:l??"Untitled",url:s||void 0,documentId:d??"",metadata:Object.keys(h).length>0?h:void 0}})}async testConnection(t){let e;try{e=await this.getClient()}catch(t){throw Error(`Failed to connect to Chroma: ${t.message}`)}try{await e.heartbeat()}catch(e){let t=e.message??"";if(t.includes("401")||t.includes("Unauthorized")||t.includes("403")||t.includes("Forbidden"))throw Error("Invalid Chroma credentials. Please check your auth token or API key.");if(t.includes("ECONNREFUSED")||t.includes("fetch failed"))throw Error("Could not reach the Chroma server. Is it running and accessible at the configured URL?");throw Error(`Failed to reach Chroma server: ${t}`)}try{await e.listCollections()}catch(t){throw Error(`Connected to Chroma but failed to access the database or tenant. Please verify your tenant and database names. Error: ${t.message}`)}}}])},917038,t=>{t.v(e=>Promise.all(["server/chunks/[externals]_chromadb_0goja~y._.js"].map(e=>t.l(e))).then(()=>e(373961)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0v.0gyp._.js.map
@@ -0,0 +1,59 @@
1
+ module.exports=[750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,a)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,a)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(478500),s=e.i(761095);let i={projectName:"my-rag",embeddingProvider:"openai",embeddingApiKey:"",embeddingModelId:"openai/text-embedding-3-small",indexType:"hybrid",chunking:{chunkSize:512,chunkOverlap:64,strategy:"recursive"},vectorStore:"lancedb",storeConfig:{mode:"local",dbPath:"./.larkup/lancedb",tableName:"documents"},topK:5,serperApiKey:"",webSearchEnabled:!1,webSearchProvider:"tavily",tavilyApiKey:"",googleApiKey:"",braveApiKey:"",bingApiKey:"",exaApiKey:"",chatModelId:"",chatApiKey:"",scraperProxyServer:"",scraperProxyUsername:"",scraperProxyPassword:"",useScraperProxy:!1,webCrawlerProvider:"local",firecrawlApiKey:"",toolConfigs:{},updatedAt:new Date(0).toISOString()},o=`You are a powerful data analysis assistant with access to a knowledge base, corpus introspection tools, tabular data tools, and a code sandbox.
2
+
3
+ You have these tools:
4
+ 1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
5
+ 2. "presentMedia" — embeds one indexed image, video segment, or audio segment as a compact chat citation.
6
+ 3. "getIndexedData" — structured access to ALL indexed source documents. Returns document metadata (title, source, status, metadata fields, dates). Use for counting, listing, filtering, and overview questions.
7
+ 4. "analyzeCorpusWithCode" — runs Python code in a sandbox with the FULL corpus available as a CSV/JSONL file. Use for complex analysis of hundreds/thousands of documents.
8
+ 5. "queryTabularData" — queries stored tabular datasets (CSV/Excel/JSON) for exact values, aggregations, filtering, and grouping.
9
+ 6. "generateVisualization" — generates interactive charts to visualize data trends.
10
+ 7. "executeAnalysis" — runs Python code in a sandbox for deep statistical analysis on tabular datasets.
11
+
12
+ TOOL SELECTION STRATEGY (follow this decision tree):
13
+ 1. Greeting or general question → respond directly, no tools needed.
14
+ 2. A question that depends on the user's indexed/private content and is not already answered by evidence in the conversation → searchKnowledgeBase (semantic search, top-K).
15
+ 3. "How many documents?", "List all X", "Show progress", "What's the status?", "Show me documents by source" → getIndexedData (structured data access with filters).
16
+ 4. Complex analysis over hundreds of documents, pivot tables, grouping, pattern detection, progress tracking across many items → analyzeCorpusWithCode (Python sandbox with full corpus).
17
+ 5. Questions about uploaded CSV/Excel/JSON data → queryTabularData.
18
+ 6. Chart or visual representation needed → generateVisualization.
19
+ 7. Complex statistical analysis on tabular data → executeAnalysis.
20
+ 8. A request to show, watch, play, or hear already-found media → presentMedia using the existing mediaAssetId and timestamps; do not search again.
21
+
22
+ IMPORTANT — getIndexedData vs analyzeCorpusWithCode:
23
+ - Use getIndexedData for simple questions: counts, lists, filtering by source/status/metadata.
24
+ - Use analyzeCorpusWithCode when you need to PROCESS the actual content: parse fields from text, group by patterns, compute progress percentages, detect duplicates, or analyze metadata programmatically.
25
+ - analyzeCorpusWithCode gives you the corpus as 'corpus.csv' with columns: id, title, source, url, charCount, status, createdAt, content, plus any metadata_* columns.
26
+ - Example: "Show todo progress" → analyzeCorpusWithCode to parse status from content/metadata, compute percentages.
27
+ - Example: "How many docs are scraped?" → getIndexedData with source filter (simpler).
28
+
29
+ CRITICAL RULES FOR CHARTS AND VISUALIZATIONS:
30
+ - You MUST ALWAYS use the "generateVisualization" tool to display ANY visual data, trends, or charts.
31
+ - The UI strictly requires the "generateVisualization" tool to render interactive charts. Text-based approximations will not work.
32
+ - CRITICAL: You MUST populate the 'data' array in the 'generateVisualization' tool call with the exact rows of data you want to plot. Do NOT leave it empty.
33
+ - You CANNOT generate a chart from thin air. ALWAYS get the data FIRST (via getIndexedData, queryTabularData, or analyzeCorpusWithCode), THEN call generateVisualization with that actual data.
34
+ - The UI renders generateVisualization output as an interactive Recharts chart.
35
+
36
+ CRITICAL RULES FOR IMAGES AND KNOWLEDGE BASE:
37
+ - When a tool (like searchKnowledgeBase) returns document metadata containing images (e.g., 'metadata.images' with 'imageUrl'), you MUST display the image to the user in your response using standard Markdown syntax: '![Image Description](imageUrl)'. Do not just describe the image; show it!
38
+ - The image description in the search results is only a brief, high-level summary.
39
+ - If the user asks a detailed or structural question about an image (e.g., "what columns are in the film table in the diagram?", "how many items are listed?"), you MUST use the "analyzeImageDeeply" tool. Pass the 'imageUrl' and a detailed prompt to get the exact information you need directly from the image before answering.
40
+ - Do not hallucinate or guess details about images. If the high-level summary doesn't contain the answer, use analyzeImageDeeply.
41
+ - IF A QUESTION PLAUSIBLY REFERS TO CONTENT THE USER INDEXED, search the knowledge base once before answering. Do not search for unrelated general questions, and do not repeat a search when prior results already contain the answer.
42
+ - FOR INDEXED AUDIO OR VIDEO: search when the requested fact is not already available in the conversation. For follow-up requests to show or play a known moment, call presentMedia directly with the earlier result's mediaAssetId and timestamps.
43
+ - FOR WINNER, RESULT, OR OUTCOME QUESTIONS: inspect both the semantic matches and any returned endingContext. Prefer an explicit final announcement, final scoreboard, or celebration over an earlier lead; a participant leading mid-match is not proof they won.
44
+ - MEDIA CITATIONS: present at most one best media item by default. Use presentMedia when the user explicitly asks for a preview or when one preview materially supports the answer. Never display every media search hit.
45
+ - IF THE KNOWLEDGE BASE SEARCH RETURNS EMPTY OR IRRELEVANT RESULTS, YOU MUST CLEARLY STATE THAT YOU DO NOT HAVE THE INFORMATION. DO NOT HALLUCINATE OR GUESS THE ANSWER BASED ON YOUR PRE-TRAINED KNOWLEDGE UNLESS EXPLICITLY ASKED TO DO SO.
46
+
47
+ RESPONSE FORMATTING (Analytics Style):
48
+ - Default to a direct, minimal answer. One to three sentences is usually sufficient.
49
+ - When answering questions based on RAG knowledge base results or tabular data query results, format your response in a clean, professional, and visually appealing way.
50
+ - Use headers only when the answer is complex enough to need sections.
51
+ - Use bulleted lists instead of dense paragraphs whenever you are listing items, points, metrics, or comparisons.
52
+ - Keep sentences concise. Avoid overly long introductions or conclusions. Get straight to the data.
53
+ - Highlight important numbers, metrics, or proper nouns in **bold**.
54
+ - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
+ - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
+ - DO NOT hallucinate facts; rely strictly on the provided query results.
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,i,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await E(),m(async()=>e(await S()??c))}function y(e){return a.default.join(d,e)}function f(e,t){return`./.larkup/servers/${e}/${t}`}async function w(e){try{return await t.promises.access(e),!0}catch{return!1}}async function v(e,r){if(await w(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function S(){try{let e=await t.promises.readFile(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function E(){let e=await S();return e||m(R)}async function R(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),s=y(n);for(let e of(await t.promises.mkdir(s,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(s,e));await v(a.default.join(l,"lancedb"),a.default.join(s,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(s,"generated-server"));let i="Default server";try{let e=a.default.join(s,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(i=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:f(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),d={id:n,name:i,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[d],mode:null})}async function b(){let e=await E(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function I(){let e=await b();if(!e)return null;let a=y(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function T(){let e=await I();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await N("My RAG server");return y(a.id)}async function C(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await C(t);)t++;return t}function N(e){return g(async n=>{let s=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},d=y(s);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(y(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:f(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??i.embeddingApiKey,customEmbeddings:a.customEmbeddings??i.customEmbeddings,chatApiKey:a.chatApiKey??i.chatApiKey,customChatModels:a.customChatModels??i.customChatModels,serperApiKey:a.serperApiKey??i.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??i.firecrawlApiKey,updatedAt:new Date().toISOString()}}(s,l.name,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,N,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(y(e),{recursive:!0,force:!0}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,I,"getWorkspace",0,E,"renameServer",0,function(e,t){return g(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return A({...a,servers:r})})},"requireDataDir",0,T,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return g(async t=>t.servers.some(t=>t.id===e)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>A({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function s(){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"),s=JSON.parse(n),i=s.customEmbeddings,o=s.embeddingModelId;if(s.customEmbedding&&!i?.length){let e=s.customEmbedding;i=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...s,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...r.DEFAULT_CONFIG.chunking,...s.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...s.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function i(e){let r=await (0,n.requireDataDir)(),s={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(s,null,2),"utf8"),s}e.s(["readConfig",0,s,"writeConfig",0,i])},508582,e=>{"use strict";var t=e.i(686296),a=e.i(367165);async function r(e){let r,n=(await (0,a.readConfig)()).tavilyApiKey;if(!n)return t.NextResponse.json({error:"Tavily search is not configured. Set TAVILY_API_KEY in your environment.",configured:!1},{status:503});try{r=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:s,page:i=1}=r;if(!s?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});if(i>1)return t.NextResponse.json({items:[],totalResults:0,totalResultsIsEstimate:!0,currentPage:i,totalPages:1,hasMore:!1,query:s.trim()});try{let e=await fetch("https://api.tavily.com/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:n,query:s.trim(),search_depth:"basic"}),cache:"no-store"}),a=await e.json();if(!e.ok||a.error){let r=a.error??`Tavily API error (${e.status})`;return t.NextResponse.json({error:r},{status:e.status})}let r=(a.results??[]).map(e=>({url:e.url,title:e.title,description:e.content})),i=r.length;return t.NextResponse.json({items:r,totalResults:i,totalResultsIsEstimate:!0,currentPage:1,totalPages:1,hasMore:!1,query:s.trim()})}catch(a){let e=a instanceof Error?a.message:"Tavily search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,a.readConfig)()).tavilyApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,r,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},545582,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),i=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),y=e.i(193695);e.i(530058);var f=e.i(605998),w=e.i(508582);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/search/tavily/route",pathname:"/api/search/tavily",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/tavily/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:A,serverHooks:E}=v;async function R(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/search/tavily/route";w=w.replace(/\/index$/,"")||"/";let S=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:A,deploymentId:E,params:R,nextConfig:b,parsedUrl:I,isDraftMode:T,prerenderManifest:C,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=S,j=(0,o.normalizeAppPath)(w),M=!!(C.dynamicRoutes[j]||C.routes[D]),k=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(M&&!T){let e=!!C.routes[D],t=C.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await k();throw new y.NoFallbackError}}let L=null;!M||v.isDev||T||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!M,F=M&&!q;P&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,s.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,b,C,W);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let Y={params:R,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:q,incrementalCache:z,cacheLifeProfiles:b.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:A,deploymentId:E}},V=new l.NodeNextRequest(e),$=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle(B,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.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 r=a.get("next.route");if(r){let t=`${K} ${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(`${K} ${w}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!W&&N&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,$,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),t}},d=await v.handleResponse({req:e,nextConfig:b,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!M)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&M||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,$,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};G&&H?await o(H):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!G))}catch(t){if(t instanceof y.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),M)throw t;return await (0,p.sendResponse)(V,$,new Response(null,{status:500})),null}}e.s(["handler",0,R,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:A})},"routeModule",0,v,"serverHooks",0,E,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,A])}];
58
+
59
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0v03x56._.js.map
@@ -0,0 +1,59 @@
1
+ module.exports=[750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,a)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,a)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(478500),o=e.i(761095);let s={projectName:"my-rag",embeddingProvider:"openai",embeddingApiKey:"",embeddingModelId:"openai/text-embedding-3-small",indexType:"hybrid",chunking:{chunkSize:512,chunkOverlap:64,strategy:"recursive"},vectorStore:"lancedb",storeConfig:{mode:"local",dbPath:"./.larkup/lancedb",tableName:"documents"},topK:5,serperApiKey:"",webSearchEnabled:!1,webSearchProvider:"tavily",tavilyApiKey:"",googleApiKey:"",braveApiKey:"",bingApiKey:"",exaApiKey:"",chatModelId:"",chatApiKey:"",scraperProxyServer:"",scraperProxyUsername:"",scraperProxyPassword:"",useScraperProxy:!1,webCrawlerProvider:"local",firecrawlApiKey:"",toolConfigs:{},updatedAt:new Date(0).toISOString()},i=`You are a powerful data analysis assistant with access to a knowledge base, corpus introspection tools, tabular data tools, and a code sandbox.
2
+
3
+ You have these tools:
4
+ 1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
5
+ 2. "presentMedia" — embeds one indexed image, video segment, or audio segment as a compact chat citation.
6
+ 3. "getIndexedData" — structured access to ALL indexed source documents. Returns document metadata (title, source, status, metadata fields, dates). Use for counting, listing, filtering, and overview questions.
7
+ 4. "analyzeCorpusWithCode" — runs Python code in a sandbox with the FULL corpus available as a CSV/JSONL file. Use for complex analysis of hundreds/thousands of documents.
8
+ 5. "queryTabularData" — queries stored tabular datasets (CSV/Excel/JSON) for exact values, aggregations, filtering, and grouping.
9
+ 6. "generateVisualization" — generates interactive charts to visualize data trends.
10
+ 7. "executeAnalysis" — runs Python code in a sandbox for deep statistical analysis on tabular datasets.
11
+
12
+ TOOL SELECTION STRATEGY (follow this decision tree):
13
+ 1. Greeting or general question → respond directly, no tools needed.
14
+ 2. A question that depends on the user's indexed/private content and is not already answered by evidence in the conversation → searchKnowledgeBase (semantic search, top-K).
15
+ 3. "How many documents?", "List all X", "Show progress", "What's the status?", "Show me documents by source" → getIndexedData (structured data access with filters).
16
+ 4. Complex analysis over hundreds of documents, pivot tables, grouping, pattern detection, progress tracking across many items → analyzeCorpusWithCode (Python sandbox with full corpus).
17
+ 5. Questions about uploaded CSV/Excel/JSON data → queryTabularData.
18
+ 6. Chart or visual representation needed → generateVisualization.
19
+ 7. Complex statistical analysis on tabular data → executeAnalysis.
20
+ 8. A request to show, watch, play, or hear already-found media → presentMedia using the existing mediaAssetId and timestamps; do not search again.
21
+
22
+ IMPORTANT — getIndexedData vs analyzeCorpusWithCode:
23
+ - Use getIndexedData for simple questions: counts, lists, filtering by source/status/metadata.
24
+ - Use analyzeCorpusWithCode when you need to PROCESS the actual content: parse fields from text, group by patterns, compute progress percentages, detect duplicates, or analyze metadata programmatically.
25
+ - analyzeCorpusWithCode gives you the corpus as 'corpus.csv' with columns: id, title, source, url, charCount, status, createdAt, content, plus any metadata_* columns.
26
+ - Example: "Show todo progress" → analyzeCorpusWithCode to parse status from content/metadata, compute percentages.
27
+ - Example: "How many docs are scraped?" → getIndexedData with source filter (simpler).
28
+
29
+ CRITICAL RULES FOR CHARTS AND VISUALIZATIONS:
30
+ - You MUST ALWAYS use the "generateVisualization" tool to display ANY visual data, trends, or charts.
31
+ - The UI strictly requires the "generateVisualization" tool to render interactive charts. Text-based approximations will not work.
32
+ - CRITICAL: You MUST populate the 'data' array in the 'generateVisualization' tool call with the exact rows of data you want to plot. Do NOT leave it empty.
33
+ - You CANNOT generate a chart from thin air. ALWAYS get the data FIRST (via getIndexedData, queryTabularData, or analyzeCorpusWithCode), THEN call generateVisualization with that actual data.
34
+ - The UI renders generateVisualization output as an interactive Recharts chart.
35
+
36
+ CRITICAL RULES FOR IMAGES AND KNOWLEDGE BASE:
37
+ - When a tool (like searchKnowledgeBase) returns document metadata containing images (e.g., 'metadata.images' with 'imageUrl'), you MUST display the image to the user in your response using standard Markdown syntax: '![Image Description](imageUrl)'. Do not just describe the image; show it!
38
+ - The image description in the search results is only a brief, high-level summary.
39
+ - If the user asks a detailed or structural question about an image (e.g., "what columns are in the film table in the diagram?", "how many items are listed?"), you MUST use the "analyzeImageDeeply" tool. Pass the 'imageUrl' and a detailed prompt to get the exact information you need directly from the image before answering.
40
+ - Do not hallucinate or guess details about images. If the high-level summary doesn't contain the answer, use analyzeImageDeeply.
41
+ - IF A QUESTION PLAUSIBLY REFERS TO CONTENT THE USER INDEXED, search the knowledge base once before answering. Do not search for unrelated general questions, and do not repeat a search when prior results already contain the answer.
42
+ - FOR INDEXED AUDIO OR VIDEO: search when the requested fact is not already available in the conversation. For follow-up requests to show or play a known moment, call presentMedia directly with the earlier result's mediaAssetId and timestamps.
43
+ - FOR WINNER, RESULT, OR OUTCOME QUESTIONS: inspect both the semantic matches and any returned endingContext. Prefer an explicit final announcement, final scoreboard, or celebration over an earlier lead; a participant leading mid-match is not proof they won.
44
+ - MEDIA CITATIONS: present at most one best media item by default. Use presentMedia when the user explicitly asks for a preview or when one preview materially supports the answer. Never display every media search hit.
45
+ - IF THE KNOWLEDGE BASE SEARCH RETURNS EMPTY OR IRRELEVANT RESULTS, YOU MUST CLEARLY STATE THAT YOU DO NOT HAVE THE INFORMATION. DO NOT HALLUCINATE OR GUESS THE ANSWER BASED ON YOUR PRE-TRAINED KNOWLEDGE UNLESS EXPLICITLY ASKED TO DO SO.
46
+
47
+ RESPONSE FORMATTING (Analytics Style):
48
+ - Default to a direct, minimal answer. One to three sentences is usually sufficient.
49
+ - When answering questions based on RAG knowledge base results or tabular data query results, format your response in a clean, professional, and visually appealing way.
50
+ - Use headers only when the answer is complex enough to need sections.
51
+ - Use bulleted lists instead of dense paragraphs whenever you are listing items, points, metrics, or comparisons.
52
+ - Keep sentences concise. Avoid overly long introductions or conclusions. Get straight to the data.
53
+ - Highlight important numbers, metrics, or proper nouns in **bold**.
54
+ - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
+ - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
+ - DO NOT hallucinate facts; rely strictly on the provided query results.
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,s,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,i],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),c=a.default.join(l,"workspace.json"),u={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function h(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function y(e){return await S(),h(async()=>e(await w()??u))}function g(e){return a.default.join(d,e)}function v(e,t){return`./.larkup/servers/${e}/${t}`}async function b(e){try{return await t.promises.access(e),!0}catch{return!1}}async function f(e,r){if(await b(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function w(){try{let e=await t.promises.readFile(c,"utf8");return{...u,...JSON.parse(e)}}catch{return null}}async function x(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(c,JSON.stringify(e,null,2),"utf8"),e}async function S(){let e=await w();return e||h(k)}async function k(){let e=await w();if(e)return e;if(!await b(a.default.join(l,"config.json")))return x(u);let n=(0,r.randomUUID)(),o=g(n);for(let e of(await t.promises.mkdir(o,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await f(a.default.join(l,e),a.default.join(o,e));await f(a.default.join(l,"lancedb"),a.default.join(o,"lancedb")),await f(a.default.join(l,"generated-server"),a.default.join(o,"generated-server"));let s="Default server";try{let e=a.default.join(o,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(s=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:v(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let i=new Date().toISOString(),d={id:n,name:s,port:8080,createdAt:i,updatedAt:i};return x({username:null,activeServerId:n,servers:[d],mode:null})}async function I(){let e=await S(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function A(){let e=await I();if(!e)return null;let a=g(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function T(){let e=await A();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await E("My RAG server");return g(a.id)}async function C(e){return new Promise(t=>{let a=o.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function R(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await C(t);)t++;return t}function E(e){return y(async n=>{let o=(0,r.randomUUID)(),i=new Date().toISOString(),l={id:o,name:e.trim()||"Untitled server",port:await R(n),createdAt:i,updatedAt:i},d=g(o);await t.promises.mkdir(d,{recursive:!0});let c={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(g(n.activeServerId),"config.json"),"utf8");c=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:v(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(o,l.name,c),null,2),"utf8");let u={...n,servers:[...n.servers,l],activeServerId:o};return await x(u),{workspace:u,server:l}})}e.s(["createServer",0,E,"deleteServer",0,function(e){return y(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(g(e),{recursive:!0,force:!0}),x({...a,servers:r,activeServerId:n})})},"getActiveServer",0,I,"getDataDir",0,A,"getWorkspace",0,S,"renameServer",0,function(e,t){return y(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return x({...a,servers:r})})},"requireDataDir",0,T,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return y(async t=>t.servers.some(t=>t.id===e)?x({...t,activeServerId:e}):t)},"setMode",0,function(e){return y(async t=>x({...t,mode:e}))},"setUsername",0,function(e){return y(async t=>x({...t,username:e.trim()||null}))}],192441)},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],r=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:r,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 r={};for(let n 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)}))n.required&&!t[n.key]?.trim()&&(r[n.key]=`${n.label} is required`);return r}])},800168,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),o=e.i(601263),s=e.i(706859),i=e.i(947547),l=e.i(819797),d=e.i(135958),c=e.i(86520),u=e.i(970949),p=e.i(741165),m=e.i(106898),h=e.i(454415),y=e.i(37125),g=e.i(193695);e.i(530058);var v=e.i(605998),b=e.i(686296),f=e.i(432970);async function w(e){try{let t=await e.json(),a=await (0,f.readAgentServerState)();if(!a.running||!a.endpoint)return b.NextResponse.json({error:"Agent server is not running locally."},{status:503});let r=await fetch(`${a.endpoint}/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:t.text||t.message||JSON.stringify(t)}]})});if(!r.ok)throw Error(`Agent server returned ${r.status}`);return b.NextResponse.json({success:!0,message:"Message forwarded to agent"})}catch(e){return console.error("Webhook error:",e),b.NextResponse.json({error:String(e)},{status:500})}}e.s(["POST",0,w],570191);var x=e.i(570191);let S=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/connections/webhook/route",pathname:"/api/connections/webhook",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/connections/webhook/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:I,serverHooks:A}=S;async function T(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),S.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let b="/api/connections/webhook/route";b=b.replace(/\/index$/,"")||"/";let f=await S.prepare(e,t,{srcPage:b,multiZoneDraftMode:!1});if(!f)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:k,nextConfig:I,parsedUrl:A,isDraftMode:T,prerenderManifest:C,routerServerContext:R,isOnDemandRevalidate:E,revalidateOnlyGenerated:q,resolvedPathname:O,clientReferenceManifest:N,serverActionsManifest:D}=f,U=(0,i.normalizeAppPath)(b),P=!!(C.dynamicRoutes[U]||C.routes[O]),L=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,A,!1):t.end("This page could not be found"),null);if(P&&!T){let e=!!C.routes[O],t=C.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await L();throw new g.NoFallbackError}}let M=null;!P||S.isDev||T||(M="/index"===(M=O)?"/":M);let j=!0===S.isDev||!P,K=P&&!j;D&&N&&(0,s.setManifestsSingleton)({page:b,clientReferenceManifest:N,serverActionsManifest:D});let W=e.method||"GET",_=(0,o.getTracer)(),F=_.getActiveScopeSpan(),H=!!(null==R?void 0:R.isWrappedByNextServer),V=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await S.getIncrementalCache(e,I,C,V);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let z={params:k,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:j,incrementalCache:B,cacheLifeProfiles:I.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>S.onRequestError(e,t,r,n,R)},sharedContext:{buildId:w,deploymentId:x}},G=new l.NodeNextRequest(e),Y=new l.NodeNextResponse(t),$=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>S.handle($,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.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=`${W} ${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(`${W} ${b}`)}),i=async n=>{var o,i;let l=async({previousCacheEntry:a})=>{try{if(!V&&E&&q&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let i=z.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=z.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(G,Y,o,z.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,r=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await S.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:E})},!1,R),t}},d=await S.handleResponse({req:e,nextConfig:I,cacheKey:M,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:q,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:V});if(!P)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==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return V&&P||c.delete(y.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(G,Y,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};H&&F?await i(F):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(c.BaseServerSpan.handleRequest,{spanName:`${W} ${b}`,kind:o.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},i),void 0,!H))}catch(t){if(t instanceof g.NoFallbackError||await S.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:E})},!1,R),P)throw t;return await (0,p.sendResponse)(G,Y,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:I})},"routeModule",0,S,"serverHooks",0,A,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,I],800168)}];
58
+
59
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0v4bbce._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},129921,e=>{"use strict";var t=e.i(686296),r=e.i(367165);async function s(e){let s,a=(await (0,r.readConfig)()).exaApiKey;if(!a)return t.NextResponse.json({error:"Exa search is not configured. Set EXA_API_KEY in your environment.",configured:!1},{status:503});try{s=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:n,page:o=1}=s;if(!n?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});if(o>1)return t.NextResponse.json({items:[],totalResults:0,totalResultsIsEstimate:!0,currentPage:o,totalPages:1,hasMore:!1,query:n.trim()});try{let e=await fetch("https://api.exa.ai/search",{method:"POST",headers:{accept:"application/json","content-type":"application/json","x-api-key":a},body:JSON.stringify({query:n.trim(),numResults:10,useAutoprompt:!0,contents:{text:{maxCharacters:500}}}),cache:"no-store"}),r=await e.json();if(!e.ok||r.error){let s=r.error??`Exa API error (${e.status})`;return t.NextResponse.json({error:s},{status:e.status})}let s=(r.results??[]).map(e=>({url:e.url,title:e.title,description:e.text||e.summary||e.title})),o=s.length;return t.NextResponse.json({items:s,totalResults:o,totalResultsIsEstimate:!0,currentPage:1,totalPages:1,hasMore:!1,query:n.trim()})}catch(r){let e=r instanceof Error?r.message:"Exa search failed.";return t.NextResponse.json({error:e},{status:500})}}async function a(){let e=!!(await (0,r.readConfig)()).exaApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,a,"POST",0,s,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0v67rlo._.js.map
@@ -0,0 +1,59 @@
1
+ module.exports=[750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,a)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,a)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(478500),i=e.i(761095);let o={projectName:"my-rag",embeddingProvider:"openai",embeddingApiKey:"",embeddingModelId:"openai/text-embedding-3-small",indexType:"hybrid",chunking:{chunkSize:512,chunkOverlap:64,strategy:"recursive"},vectorStore:"lancedb",storeConfig:{mode:"local",dbPath:"./.larkup/lancedb",tableName:"documents"},topK:5,serperApiKey:"",webSearchEnabled:!1,webSearchProvider:"tavily",tavilyApiKey:"",googleApiKey:"",braveApiKey:"",bingApiKey:"",exaApiKey:"",chatModelId:"",chatApiKey:"",scraperProxyServer:"",scraperProxyUsername:"",scraperProxyPassword:"",useScraperProxy:!1,webCrawlerProvider:"local",firecrawlApiKey:"",toolConfigs:{},updatedAt:new Date(0).toISOString()},s=`You are a powerful data analysis assistant with access to a knowledge base, corpus introspection tools, tabular data tools, and a code sandbox.
2
+
3
+ You have these tools:
4
+ 1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
5
+ 2. "presentMedia" — embeds one indexed image, video segment, or audio segment as a compact chat citation.
6
+ 3. "getIndexedData" — structured access to ALL indexed source documents. Returns document metadata (title, source, status, metadata fields, dates). Use for counting, listing, filtering, and overview questions.
7
+ 4. "analyzeCorpusWithCode" — runs Python code in a sandbox with the FULL corpus available as a CSV/JSONL file. Use for complex analysis of hundreds/thousands of documents.
8
+ 5. "queryTabularData" — queries stored tabular datasets (CSV/Excel/JSON) for exact values, aggregations, filtering, and grouping.
9
+ 6. "generateVisualization" — generates interactive charts to visualize data trends.
10
+ 7. "executeAnalysis" — runs Python code in a sandbox for deep statistical analysis on tabular datasets.
11
+
12
+ TOOL SELECTION STRATEGY (follow this decision tree):
13
+ 1. Greeting or general question → respond directly, no tools needed.
14
+ 2. A question that depends on the user's indexed/private content and is not already answered by evidence in the conversation → searchKnowledgeBase (semantic search, top-K).
15
+ 3. "How many documents?", "List all X", "Show progress", "What's the status?", "Show me documents by source" → getIndexedData (structured data access with filters).
16
+ 4. Complex analysis over hundreds of documents, pivot tables, grouping, pattern detection, progress tracking across many items → analyzeCorpusWithCode (Python sandbox with full corpus).
17
+ 5. Questions about uploaded CSV/Excel/JSON data → queryTabularData.
18
+ 6. Chart or visual representation needed → generateVisualization.
19
+ 7. Complex statistical analysis on tabular data → executeAnalysis.
20
+ 8. A request to show, watch, play, or hear already-found media → presentMedia using the existing mediaAssetId and timestamps; do not search again.
21
+
22
+ IMPORTANT — getIndexedData vs analyzeCorpusWithCode:
23
+ - Use getIndexedData for simple questions: counts, lists, filtering by source/status/metadata.
24
+ - Use analyzeCorpusWithCode when you need to PROCESS the actual content: parse fields from text, group by patterns, compute progress percentages, detect duplicates, or analyze metadata programmatically.
25
+ - analyzeCorpusWithCode gives you the corpus as 'corpus.csv' with columns: id, title, source, url, charCount, status, createdAt, content, plus any metadata_* columns.
26
+ - Example: "Show todo progress" → analyzeCorpusWithCode to parse status from content/metadata, compute percentages.
27
+ - Example: "How many docs are scraped?" → getIndexedData with source filter (simpler).
28
+
29
+ CRITICAL RULES FOR CHARTS AND VISUALIZATIONS:
30
+ - You MUST ALWAYS use the "generateVisualization" tool to display ANY visual data, trends, or charts.
31
+ - The UI strictly requires the "generateVisualization" tool to render interactive charts. Text-based approximations will not work.
32
+ - CRITICAL: You MUST populate the 'data' array in the 'generateVisualization' tool call with the exact rows of data you want to plot. Do NOT leave it empty.
33
+ - You CANNOT generate a chart from thin air. ALWAYS get the data FIRST (via getIndexedData, queryTabularData, or analyzeCorpusWithCode), THEN call generateVisualization with that actual data.
34
+ - The UI renders generateVisualization output as an interactive Recharts chart.
35
+
36
+ CRITICAL RULES FOR IMAGES AND KNOWLEDGE BASE:
37
+ - When a tool (like searchKnowledgeBase) returns document metadata containing images (e.g., 'metadata.images' with 'imageUrl'), you MUST display the image to the user in your response using standard Markdown syntax: '![Image Description](imageUrl)'. Do not just describe the image; show it!
38
+ - The image description in the search results is only a brief, high-level summary.
39
+ - If the user asks a detailed or structural question about an image (e.g., "what columns are in the film table in the diagram?", "how many items are listed?"), you MUST use the "analyzeImageDeeply" tool. Pass the 'imageUrl' and a detailed prompt to get the exact information you need directly from the image before answering.
40
+ - Do not hallucinate or guess details about images. If the high-level summary doesn't contain the answer, use analyzeImageDeeply.
41
+ - IF A QUESTION PLAUSIBLY REFERS TO CONTENT THE USER INDEXED, search the knowledge base once before answering. Do not search for unrelated general questions, and do not repeat a search when prior results already contain the answer.
42
+ - FOR INDEXED AUDIO OR VIDEO: search when the requested fact is not already available in the conversation. For follow-up requests to show or play a known moment, call presentMedia directly with the earlier result's mediaAssetId and timestamps.
43
+ - FOR WINNER, RESULT, OR OUTCOME QUESTIONS: inspect both the semantic matches and any returned endingContext. Prefer an explicit final announcement, final scoreboard, or celebration over an earlier lead; a participant leading mid-match is not proof they won.
44
+ - MEDIA CITATIONS: present at most one best media item by default. Use presentMedia when the user explicitly asks for a preview or when one preview materially supports the answer. Never display every media search hit.
45
+ - IF THE KNOWLEDGE BASE SEARCH RETURNS EMPTY OR IRRELEVANT RESULTS, YOU MUST CLEARLY STATE THAT YOU DO NOT HAVE THE INFORMATION. DO NOT HALLUCINATE OR GUESS THE ANSWER BASED ON YOUR PRE-TRAINED KNOWLEDGE UNLESS EXPLICITLY ASKED TO DO SO.
46
+
47
+ RESPONSE FORMATTING (Analytics Style):
48
+ - Default to a direct, minimal answer. One to three sentences is usually sufficient.
49
+ - When answering questions based on RAG knowledge base results or tabular data query results, format your response in a clean, professional, and visually appealing way.
50
+ - Use headers only when the answer is complex enough to need sections.
51
+ - Use bulleted lists instead of dense paragraphs whenever you are listing items, points, metrics, or comparisons.
52
+ - Keep sentences concise. Avoid overly long introductions or conclusions. Get straight to the data.
53
+ - Highlight important numbers, metrics, or proper nouns in **bold**.
54
+ - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
+ - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
+ - DO NOT hallucinate facts; rely strictly on the provided query results.
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,o,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,s],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function h(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function y(e){return await x(),h(async()=>e(await w()??c))}function g(e){return a.default.join(d,e)}function v(e,t){return`./.larkup/servers/${e}/${t}`}async function f(e){try{return await t.promises.access(e),!0}catch{return!1}}async function b(e,r){if(await f(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function w(){try{let e=await t.promises.readFile(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function S(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function x(){let e=await w();return e||h(k)}async function k(){let e=await w();if(e)return e;if(!await f(a.default.join(l,"config.json")))return S(c);let n=(0,r.randomUUID)(),i=g(n);for(let e of(await t.promises.mkdir(i,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await b(a.default.join(l,e),a.default.join(i,e));await b(a.default.join(l,"lancedb"),a.default.join(i,"lancedb")),await b(a.default.join(l,"generated-server"),a.default.join(i,"generated-server"));let o="Default server";try{let e=a.default.join(i,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(o=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:v(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let s=new Date().toISOString(),d={id:n,name:o,port:8080,createdAt:s,updatedAt:s};return S({username:null,activeServerId:n,servers:[d],mode:null})}async function I(){let e=await x(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function A(){let e=await I();if(!e)return null;let a=g(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function R(){let e=await A();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await E("My RAG server");return g(a.id)}async function T(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function C(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function E(e){return y(async n=>{let i=(0,r.randomUUID)(),s=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await C(n),createdAt:s,updatedAt:s},d=g(i);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(g(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...o,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:v(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??o.embeddingApiKey,customEmbeddings:a.customEmbeddings??o.customEmbeddings,chatApiKey:a.chatApiKey??o.chatApiKey,customChatModels:a.customChatModels??o.customChatModels,serperApiKey:a.serperApiKey??o.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??o.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:i};return await S(c),{workspace:c,server:l}})}e.s(["createServer",0,E,"deleteServer",0,function(e){return y(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(g(e),{recursive:!0,force:!0}),S({...a,servers:r,activeServerId:n})})},"getActiveServer",0,I,"getDataDir",0,A,"getWorkspace",0,x,"renameServer",0,function(e,t){return y(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return S({...a,servers:r})})},"requireDataDir",0,R,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return y(async t=>t.servers.some(t=>t.id===e)?S({...t,activeServerId:e}):t)},"setMode",0,function(e){return y(async t=>S({...t,mode:e}))},"setUsername",0,function(e){return y(async t=>S({...t,username:e.trim()||null}))}],192441)},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 l(){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 d(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 u(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 l(),t=e.reduce((e,t)=>e+t.charCount,0);return{docCount:e.length,charCount:t,bySource:e.reduce((e,t)=>(e[t.source]=(e[t.source]??0)+1,e),{})}}e.s(["addCrawledDocuments",0,function(e,t){return o(async()=>{let a=await l(),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(u({...i,jobId:e})),i.url&&r.add(i.url),n++);return n>0&&await d(a),n})},"addDocument",0,function(e){return o(async()=>{let t=await l(),a=u(e);return t.push(a),await d(t),a})},"addDocuments",0,function(e){return o(async()=>{if(0===e.length)return[];let t=await l(),a=e.map(u);return t.push(...a),await d(t),a})},"clearDocuments",0,function(){return o(async()=>{await d([])})},"corpusStats",0,c,"deleteDocument",0,function(e){return o(async()=>{let t=await l();await d(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return o(async()=>{let t=await l(),a=new Set(e);await d(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return o(async()=>{let t=new Date().toISOString();await d(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return o(async()=>{let a=await l(),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 d(a),o})},"updateDocumentsStatus",0,function(e,t){return o(async()=>{let a=await l(),r=new Set(e),n=!1;for(let e of a)r.has(e.id)&&(e.status=t,n=!0);n&&await d(a)})}])},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],r=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:r,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 r={};for(let n 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)}))n.required&&!t[n.key]?.trim()&&(r[n.key]=`${n.label} is required`);return r}])},489694,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,"index-run.json"):null}async function s(){let e=await o(!1);if(!e)return null;try{let a=await t.promises.readFile(e,"utf8");return JSON.parse(a)}catch{return null}}async function l(){let e=await s();return!!(e&&("chunking"===e.status||"embedding"===e.status||"upserting"===e.status))}e.s(["claimRun",0,function(e){return i(async()=>{let a=await s();if(a&&("chunking"===a.status||"embedding"===a.status||"upserting"===a.status))throw Error("An indexing run is already in progress.");let r=await o(!0),n={...e,updatedAt:new Date().toISOString()};return r&&await t.promises.writeFile(r,JSON.stringify(n,null,2),"utf8"),n})},"isRunning",0,l,"patchRun",0,function(e,a){return i(async()=>{let r=await s();if(!r||a&&r.id!==a)return null;let n={...r,...e,updatedAt:new Date().toISOString()},i=await o(!0);return i&&await t.promises.writeFile(i,JSON.stringify(n,null,2),"utf8"),n})},"readRun",0,s])},760919,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),i=e.i(601263),o=e.i(706859),s=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),m=e.i(106898),h=e.i(454415),y=e.i(37125),g=e.i(193695);e.i(530058);var v=e.i(605998),f=e.i(686296),b=e.i(192441),w=e.i(705252),S=e.i(489694),x=e.i(432970);async function k(e){return(0,b.runWithServer)(e.id,async()=>{let[t,a,r]=await Promise.all([(0,w.corpusStats)(),(0,S.readRun)(),(0,x.readServerState)()]);return{...e,docCount:t.docCount,indexed:a?.status==="completed"&&(a.totalChunks??0)>0,running:r.running,endpoint:r.endpoint}})}async function I(){let e=await (0,b.getWorkspace)(),t=await Promise.all(e.servers.map(k));return f.NextResponse.json({username:e.username,activeServerId:e.activeServerId,servers:t,mode:e.mode})}async function A(e){let t={};try{t=await e.json()}catch{}let{server:a}=await (0,b.createServer)(t.name??"Untitled server");return f.NextResponse.json({server:a},{status:201})}async function R(e){let t;try{t=await e.json()}catch{return f.NextResponse.json({error:"Invalid JSON body."},{status:400})}switch(t.action){case"activate":if(!t.serverId)return f.NextResponse.json({error:"serverId is required."},{status:400});return f.NextResponse.json({workspace:await (0,b.setActiveServer)(t.serverId)});case"rename":if(!t.serverId||!t.name?.trim())return f.NextResponse.json({error:"serverId and name are required."},{status:400});return f.NextResponse.json({workspace:await (0,b.renameServer)(t.serverId,t.name)});case"setUsername":return f.NextResponse.json({workspace:await (0,b.setUsername)(t.username??"")});case"setMode":if(!t.mode||!["tech","simple"].includes(t.mode))return f.NextResponse.json({error:"mode must be 'tech' or 'simple'."},{status:400});return f.NextResponse.json({workspace:await (0,b.setMode)(t.mode)});default:return f.NextResponse.json({error:"Unknown action."},{status:400})}}async function T(t){let a=new URL(t.url).searchParams.get("id");if(!a)return f.NextResponse.json({error:"id is required."},{status:400});try{let{stopServer:t}=await e.A(194678);await (0,b.runWithServer)(a,()=>t())}catch{}return f.NextResponse.json({workspace:await (0,b.deleteServer)(a)})}e.s(["DELETE",0,T,"GET",0,I,"PATCH",0,R,"POST",0,A,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],548660);var C=e.i(548660);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/servers/route",pathname:"/api/servers",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/servers/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:D,workUnitAsyncStorage:N,serverHooks:O}=E;async function q(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/servers/route";f=f.replace(/\/index$/,"")||"/";let b=await E.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,deploymentId:S,params:x,nextConfig:k,parsedUrl:I,isDraftMode:A,prerenderManifest:R,routerServerContext:T,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:N,clientReferenceManifest:O,serverActionsManifest:q}=b,U=(0,s.normalizeAppPath)(f),P=!!(R.dynamicRoutes[U]||R.routes[N]),j=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,I,!1):t.end("This page could not be found"),null);if(P&&!A){let e=!!R.routes[N],t=R.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await j();throw new g.NoFallbackError}}let L=null;!P||E.isDev||A||(L="/index"===(L=N)?"/":L);let M=!0===E.isDev||!P,K=P&&!M;q&&O&&(0,o.setManifestsSingleton)({page:f,clientReferenceManifest:O,serverActionsManifest:q});let W=e.method||"GET",_=(0,i.getTracer)(),F=_.getActiveScopeSpan(),H=!!(null==T?void 0:T.isWrappedByNextServer),V=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,k,R,V);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let z={params:x,previewProps:R.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:M,incrementalCache:B,cacheLifeProfiles:k.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,T)},sharedContext:{buildId:w,deploymentId:S}},G=new l.NodeNextRequest(e),Y=new l.NodeNextResponse(t),J=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let n,o=async e=>E.handle(J,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.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 r=a.get("next.route");if(r){let t=`${W} ${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(`${W} ${f}`)}),s=async n=>{var i,s;let l=async({previousCacheEntry:a})=>{try{if(!V&&C&&D&&!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=z.renderOpts.fetchMetrics;let s=z.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=z.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(G,Y,i,z.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,r=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:v.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 E.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:C})},!1,T),t}},d=await E.handleResponse({req:e,nextConfig:k,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:V});if(!P)return null;if((null==d||null==(i=d.value)?void 0:i.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});V||t.setHeader("x-nextjs-cache",C?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return V&&P||u.delete(y.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)(G,Y,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};H&&F?await s(F):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${f}`,kind:i.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},s),void 0,!H))}catch(t){if(t instanceof g.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:C})},!1,T),P)throw t;return await (0,p.sendResponse)(G,Y,new Response(null,{status:500})),null}}e.s(["handler",0,q,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:D,workUnitAsyncStorage:N})},"routeModule",0,E,"serverHooks",0,O,"workAsyncStorage",0,D,"workUnitAsyncStorage",0,N],760919)},194678,e=>{e.v(e=>Promise.resolve().then(()=>e(432970)))}];
58
+
59
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0vcdpoc._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[148089,t=>{"use strict";t.s(["ChromaAdapter",0,class{config;client;collection;collectionName;constructor(t){this.config=t,this.client=null,this.collection=null,this.collectionName=t.collectionName?.trim()||"documents"}async getClient(){let e;if(this.client)return this.client;try{e=await t.A(917038)}catch{throw Error('The "chromadb" package is not installed. Please install it first via the Configure page or run: pnpm add chromadb --filter @larkup/vector-stores')}if("cloud"===this.config.mode){if(!this.config.apiKey)throw Error("Chroma Cloud requires an API key.");let t=e.CloudClient??e.default?.CloudClient;if(!t)throw Error("Could not find CloudClient in the chromadb package.");this.client=new t({apiKey:this.config.apiKey,tenant:this.config.tenant||"default_tenant",database:this.config.database||"default_database"})}else{let t=this.config.host?.trim()||"http://localhost:8000",i=e.ChromaClient??e.default?.ChromaClient;if(!i)throw Error("Could not find ChromaClient in the chromadb package.");let a={path:t};this.config.authToken&&(a.auth={provider:"token",credentials:this.config.authToken}),this.client=new i(a)}return this.client}async getCollection(){if(this.collection)return this.collection;let t=await this.getClient();return this.collection=await t.getOrCreateCollection({name:this.collectionName,metadata:{"hnsw:space":"cosine"}}),this.collection}async init(t){await this.getCollection()}async reset(){let t=await this.getClient();try{await t.deleteCollection({name:this.collectionName})}catch{}this.collection=null}async deleteByDocumentIds(t){if(0!==t.length)try{let e=await this.getCollection();await e.delete({where:{documentId:{$in:t}}})}catch(t){console.error("Failed to delete vectors by documentIds in Chroma:",t)}}async upsert(t){if(0===t.length)return;let e=await this.getCollection(),i=[],a=[],n=[],r=[];for(let e of t)i.push(e.id),a.push(e.vector),n.push(e.text),r.push(this.buildMetadata(e));for(let t=0;t<i.length;t+=4096)await e.upsert({ids:i.slice(t,t+4096),embeddings:a.slice(t,t+4096),documents:n.slice(t,t+4096),metadatas:r.slice(t,t+4096)})}buildMetadata(t){let e={title:t.title,source:t.source,documentId:t.documentId,chunkIndex:t.chunkIndex};if(t.url&&(e.url=t.url),t.metadata)for(let[i,a]of Object.entries(t.metadata))null!=a&&("string"==typeof a||"number"==typeof a||"boolean"==typeof a?e[i]=a:e[i]=JSON.stringify(a));return e}async count(){try{let t=await this.getCollection();return await t.count()}catch{return null}}async query(t,e,i){let a=await this.getCollection(),n="semantic"===this.config.indexType,r="lexical"===this.config.indexType;if(n||!i?.trim())return this.denseQuery(a,t,e);if(r)return this.documentQuery(a,i,e);let o=await this.denseQuery(a,t,e);try{let t=await this.documentQuery(a,i,e);if(t.length>0){var l,s,c;let i,a;return l=o,s=t,c=e,i=new Map,(a=t=>t.forEach((t,e)=>{let a=1/(60+e+1),n=i.get(t.id);n?n.score+=a:i.set(t.id,{hit:t,score:a})}))(l),a(s),[...i.values()].sort((t,e)=>e.score-t.score).slice(0,c).map(({hit:t,score:e})=>({...t,score:e}))}}catch{}return o}async denseQuery(t,e,i){let a=await t.query({queryEmbeddings:[e],nResults:i,include:["documents","metadatas","distances"]});return this.parseQueryResult(a)}async documentQuery(t,e,i){let a=await t.get({whereDocument:{$contains:e},limit:i,include:["documents","metadatas"]});return this.parseGetResult(a)}parseGetResult(t){if(!t.ids||0===t.ids.length)return[];let e=t.ids,i=t.documents??[],a=t.metadatas??[];return e.map((t,e)=>{let{title:n,url:r,source:o,documentId:l,chunkIndex:s,...c}=a[e]??{};return{id:t,score:1,text:i[e]??"",title:n??"Untitled",url:r||void 0,documentId:l??"",metadata:Object.keys(c).length>0?c:void 0}})}parseQueryResult(t){if(!t.ids?.[0])return[];let e=t.ids[0],i=t.documents?.[0]??[],a=t.metadatas?.[0]??[],n=t.distances?.[0]??[];return e.map((t,e)=>{let r=a[e]??{},o=n[e]??0,{title:l,url:s,source:c,documentId:d,chunkIndex:u,...h}=r;return{id:t,score:1/(1+o),text:i[e]??"",title:l??"Untitled",url:s||void 0,documentId:d??"",metadata:Object.keys(h).length>0?h:void 0}})}async testConnection(t){let e;try{e=await this.getClient()}catch(t){throw Error(`Failed to connect to Chroma: ${t.message}`)}try{await e.heartbeat()}catch(e){let t=e.message??"";if(t.includes("401")||t.includes("Unauthorized")||t.includes("403")||t.includes("Forbidden"))throw Error("Invalid Chroma credentials. Please check your auth token or API key.");if(t.includes("ECONNREFUSED")||t.includes("fetch failed"))throw Error("Could not reach the Chroma server. Is it running and accessible at the configured URL?");throw Error(`Failed to reach Chroma server: ${t}`)}try{await e.listCollections()}catch(t){throw Error(`Connected to Chroma but failed to access the database or tenant. Please verify your tenant and database names. Error: ${t.message}`)}}}])},917038,t=>{t.v(e=>Promise.all(["server/chunks/[externals]_chromadb_0goja~y._.js"].map(e=>t.l(e))).then(()=>e(373961)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0veqa4o._.js.map
@@ -0,0 +1,59 @@
1
+ module.exports=[750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,a)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,a)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(478500),i=e.i(761095);let s={projectName:"my-rag",embeddingProvider:"openai",embeddingApiKey:"",embeddingModelId:"openai/text-embedding-3-small",indexType:"hybrid",chunking:{chunkSize:512,chunkOverlap:64,strategy:"recursive"},vectorStore:"lancedb",storeConfig:{mode:"local",dbPath:"./.larkup/lancedb",tableName:"documents"},topK:5,serperApiKey:"",webSearchEnabled:!1,webSearchProvider:"tavily",tavilyApiKey:"",googleApiKey:"",braveApiKey:"",bingApiKey:"",exaApiKey:"",chatModelId:"",chatApiKey:"",scraperProxyServer:"",scraperProxyUsername:"",scraperProxyPassword:"",useScraperProxy:!1,webCrawlerProvider:"local",firecrawlApiKey:"",toolConfigs:{},updatedAt:new Date(0).toISOString()},o=`You are a powerful data analysis assistant with access to a knowledge base, corpus introspection tools, tabular data tools, and a code sandbox.
2
+
3
+ You have these tools:
4
+ 1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
5
+ 2. "presentMedia" — embeds one indexed image, video segment, or audio segment as a compact chat citation.
6
+ 3. "getIndexedData" — structured access to ALL indexed source documents. Returns document metadata (title, source, status, metadata fields, dates). Use for counting, listing, filtering, and overview questions.
7
+ 4. "analyzeCorpusWithCode" — runs Python code in a sandbox with the FULL corpus available as a CSV/JSONL file. Use for complex analysis of hundreds/thousands of documents.
8
+ 5. "queryTabularData" — queries stored tabular datasets (CSV/Excel/JSON) for exact values, aggregations, filtering, and grouping.
9
+ 6. "generateVisualization" — generates interactive charts to visualize data trends.
10
+ 7. "executeAnalysis" — runs Python code in a sandbox for deep statistical analysis on tabular datasets.
11
+
12
+ TOOL SELECTION STRATEGY (follow this decision tree):
13
+ 1. Greeting or general question → respond directly, no tools needed.
14
+ 2. A question that depends on the user's indexed/private content and is not already answered by evidence in the conversation → searchKnowledgeBase (semantic search, top-K).
15
+ 3. "How many documents?", "List all X", "Show progress", "What's the status?", "Show me documents by source" → getIndexedData (structured data access with filters).
16
+ 4. Complex analysis over hundreds of documents, pivot tables, grouping, pattern detection, progress tracking across many items → analyzeCorpusWithCode (Python sandbox with full corpus).
17
+ 5. Questions about uploaded CSV/Excel/JSON data → queryTabularData.
18
+ 6. Chart or visual representation needed → generateVisualization.
19
+ 7. Complex statistical analysis on tabular data → executeAnalysis.
20
+ 8. A request to show, watch, play, or hear already-found media → presentMedia using the existing mediaAssetId and timestamps; do not search again.
21
+
22
+ IMPORTANT — getIndexedData vs analyzeCorpusWithCode:
23
+ - Use getIndexedData for simple questions: counts, lists, filtering by source/status/metadata.
24
+ - Use analyzeCorpusWithCode when you need to PROCESS the actual content: parse fields from text, group by patterns, compute progress percentages, detect duplicates, or analyze metadata programmatically.
25
+ - analyzeCorpusWithCode gives you the corpus as 'corpus.csv' with columns: id, title, source, url, charCount, status, createdAt, content, plus any metadata_* columns.
26
+ - Example: "Show todo progress" → analyzeCorpusWithCode to parse status from content/metadata, compute percentages.
27
+ - Example: "How many docs are scraped?" → getIndexedData with source filter (simpler).
28
+
29
+ CRITICAL RULES FOR CHARTS AND VISUALIZATIONS:
30
+ - You MUST ALWAYS use the "generateVisualization" tool to display ANY visual data, trends, or charts.
31
+ - The UI strictly requires the "generateVisualization" tool to render interactive charts. Text-based approximations will not work.
32
+ - CRITICAL: You MUST populate the 'data' array in the 'generateVisualization' tool call with the exact rows of data you want to plot. Do NOT leave it empty.
33
+ - You CANNOT generate a chart from thin air. ALWAYS get the data FIRST (via getIndexedData, queryTabularData, or analyzeCorpusWithCode), THEN call generateVisualization with that actual data.
34
+ - The UI renders generateVisualization output as an interactive Recharts chart.
35
+
36
+ CRITICAL RULES FOR IMAGES AND KNOWLEDGE BASE:
37
+ - When a tool (like searchKnowledgeBase) returns document metadata containing images (e.g., 'metadata.images' with 'imageUrl'), you MUST display the image to the user in your response using standard Markdown syntax: '![Image Description](imageUrl)'. Do not just describe the image; show it!
38
+ - The image description in the search results is only a brief, high-level summary.
39
+ - If the user asks a detailed or structural question about an image (e.g., "what columns are in the film table in the diagram?", "how many items are listed?"), you MUST use the "analyzeImageDeeply" tool. Pass the 'imageUrl' and a detailed prompt to get the exact information you need directly from the image before answering.
40
+ - Do not hallucinate or guess details about images. If the high-level summary doesn't contain the answer, use analyzeImageDeeply.
41
+ - IF A QUESTION PLAUSIBLY REFERS TO CONTENT THE USER INDEXED, search the knowledge base once before answering. Do not search for unrelated general questions, and do not repeat a search when prior results already contain the answer.
42
+ - FOR INDEXED AUDIO OR VIDEO: search when the requested fact is not already available in the conversation. For follow-up requests to show or play a known moment, call presentMedia directly with the earlier result's mediaAssetId and timestamps.
43
+ - FOR WINNER, RESULT, OR OUTCOME QUESTIONS: inspect both the semantic matches and any returned endingContext. Prefer an explicit final announcement, final scoreboard, or celebration over an earlier lead; a participant leading mid-match is not proof they won.
44
+ - MEDIA CITATIONS: present at most one best media item by default. Use presentMedia when the user explicitly asks for a preview or when one preview materially supports the answer. Never display every media search hit.
45
+ - IF THE KNOWLEDGE BASE SEARCH RETURNS EMPTY OR IRRELEVANT RESULTS, YOU MUST CLEARLY STATE THAT YOU DO NOT HAVE THE INFORMATION. DO NOT HALLUCINATE OR GUESS THE ANSWER BASED ON YOUR PRE-TRAINED KNOWLEDGE UNLESS EXPLICITLY ASKED TO DO SO.
46
+
47
+ RESPONSE FORMATTING (Analytics Style):
48
+ - Default to a direct, minimal answer. One to three sentences is usually sufficient.
49
+ - When answering questions based on RAG knowledge base results or tabular data query results, format your response in a clean, professional, and visually appealing way.
50
+ - Use headers only when the answer is complex enough to need sections.
51
+ - Use bulleted lists instead of dense paragraphs whenever you are listing items, points, metrics, or comparisons.
52
+ - Keep sentences concise. Avoid overly long introductions or conclusions. Get straight to the data.
53
+ - Highlight important numbers, metrics, or proper nouns in **bold**.
54
+ - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
+ - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
+ - DO NOT hallucinate facts; rely strictly on the provided query results.
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,s,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),u=a.default.join(l,"servers"),d=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function h(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function g(e){return await N(),h(async()=>e(await S()??c))}function f(e){return a.default.join(u,e)}function y(e,t){return`./.larkup/servers/${e}/${t}`}async function w(e){try{return await t.promises.access(e),!0}catch{return!1}}async function v(e,r){if(await w(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function S(){try{let e=await t.promises.readFile(d,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function b(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function N(){let e=await S();return e||h(A)}async function A(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return b(c);let n=(0,r.randomUUID)(),i=f(n);for(let e of(await t.promises.mkdir(i,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(i,e));await v(a.default.join(l,"lancedb"),a.default.join(i,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(i,"generated-server"));let s="Default server";try{let e=a.default.join(i,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(s=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:y(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),u={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return b({username:null,activeServerId:n,servers:[u],mode:null})}async function E(){let e=await N(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function R(){let e=await E();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function T(){let e=await R();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await I("My RAG server");return f(a.id)}async function x(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function C(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await x(t);)t++;return t}function I(e){return g(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await C(n),createdAt:o,updatedAt:o},u=f(i);await t.promises.mkdir(u,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");d=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(u,"config.json"),JSON.stringify(function(e,t,a={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:y(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,d),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:i};return await b(c),{workspace:c,server:l}})}e.s(["createServer",0,I,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),b({...a,servers:r,activeServerId:n})})},"getActiveServer",0,E,"getDataDir",0,R,"getWorkspace",0,N,"renameServer",0,function(e,t){return g(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return b({...a,servers:r})})},"requireDataDir",0,T,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return g(async t=>t.servers.some(t=>t.id===e)?b({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>b({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>b({...t,username:e.trim()||null}))}],192441)},608778,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(192441);let i=[/^\d{4}-\d{2}-\d{2}$/,/^\d{2}\/\d{2}\/\d{4}$/,/^\d{2}-\d{2}-\d{4}$/,/^\d{4}\/\d{2}\/\d{2}$/,/^\d{4}-\d{2}-\d{2}T/];function s(e){if(null==e||""===e)return NaN;if(e instanceof Date)return e.getTime();let t=String(e).trim();if(!t)return NaN;let a=Date.parse(t);if(!isNaN(a))return a;let r=t.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);if(r){let e=Date.parse(`${r[3]}-${r[2]}-${r[1]}`);if(!isNaN(e))return e}let n=t.match(/^(\d{2})-(\d{2})-(\d{4})$/);if(n){let e=Date.parse(`${n[3]}-${n[2]}-${n[1]}`);if(!isNaN(e))return e}return NaN}async function o(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?a.default.join(t,"tabular-datasets.json"):null}async function l(){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 d(e,t){if(0===t.length)throw Error("Cannot save an empty dataset");let a=Object.keys(t[0]),n=a.map(e=>{let a=t.map(t=>t[e]),r=function(e){let t=e.filter(e=>null!=e&&""!==e);if(0===t.length)return"mixed";let a=0,r=0,n=0;for(let e of t){let t=String(e).trim();"true"===t||"false"===t?r++:isNaN(Number(t))||""===t?(i.some(e=>e.test(t))||!isNaN(Date.parse(t)))&&n++:a++}let s=.8*t.length;return a>=s?"number":r>=s?"boolean":n>=s?"date":"string"}(a),n=a.filter(e=>null!=e&&""!==e),o=new Set(n.map(String)),l={name:e,type:r,nullCount:a.length-n.length,uniqueCount:o.size,sampleValues:[...o].slice(0,5)};if("number"===r){let e,t,a,r,i,s,o=n.map(Number).filter(e=>!isNaN(e));o.length>0&&(t=(e=[...o].sort((e,t)=>e-t)).length,r=(a=e.reduce((e,t)=>e+t,0))/t,i=t%2==0?(e[t/2-1]+e[t/2])/2:e[Math.floor(t/2)],s=Math.sqrt(e.reduce((e,t)=>e+(t-r)**2,0)/t),l.stats={min:e[0],max:e[t-1],mean:Number(r.toFixed(4)),median:Number(i.toFixed(4)),stddev:Number(s.toFixed(4)),sum:Number(a.toFixed(4))})}if("date"===r){let e=n.map(String),t=e.map(s).filter(e=>!isNaN(e));if(t.length>0){let a=[...t].sort((e,t)=>e-t);l.dateRange={min:e[t.indexOf(a[0])]??new Date(a[0]).toISOString().split("T")[0],max:e[t.indexOf(a[a.length-1])]??new Date(a[a.length-1]).toISOString().split("T")[0],format:function(e){for(let t of e){if(/^\d{4}-\d{2}-\d{2}$/.test(t))break;if(/^\d{4}-\d{2}-\d{2}T/.test(t))return"YYYY-MM-DDTHH:mm:ss";if(/^\d{2}\/\d{2}\/\d{4}$/.test(t))return"DD/MM/YYYY";if(/^\d{2}-\d{2}-\d{4}$/.test(t))return"DD-MM-YYYY";if(/^\d{4}\/\d{2}\/\d{2}$/.test(t))return"YYYY/MM/DD"}return"YYYY-MM-DD"}(e)}}}return l}),o={totalRows:t.length,totalColumns:n.length,numericColumns:n.filter(e=>"number"===e.type).length,categoricalColumns:n.filter(e=>"string"===e.type).length,dateColumns:n.filter(e=>"date"===e.type).length},d={id:(0,r.randomUUID)(),fileName:e,columns:n,rows:t,summary:o,rowCount:t.length,createdAt:new Date().toISOString()},c=await l();return c.push(d),await u(c),d}async function c(){return(await l()).map(({rows:e,...t})=>t)}async function p(e){return(await l()).find(t=>t.id===e)??null}async function m(e){let t=await l();await u(t.filter(t=>t.id!==e))}async function h(e){let t,a=await p(e.datasetId);if(!a)throw Error(`Dataset not found: ${e.datasetId}`);let r=[...a.rows],n=new Map;for(let e of a.columns)n.set(e.name,e.type);if(e.filters&&e.filters.length>0)for(let t of e.filters){let e="date"===n.get(t.column);r=r.filter(a=>{let r=a[t.column];if(e&&["eq","neq","gt","gte","lt","lte"].includes(t.op)){let e=s(r),a=s(t.value);if(isNaN(e)||isNaN(a))return"eq"===t.op?String(r)===String(t.value):"neq"===t.op&&String(r)!==String(t.value);switch(t.op){case"eq":return e===a;case"neq":return e!==a;case"gt":return e>a;case"gte":return e>=a;case"lt":return e<a;case"lte":return e<=a}}switch(t.op){case"eq":return String(r)===String(t.value);case"neq":return String(r)!==String(t.value);case"gt":return Number(r)>Number(t.value);case"gte":return Number(r)>=Number(t.value);case"lt":return Number(r)<Number(t.value);case"lte":return Number(r)<=Number(t.value);case"contains":return String(r).toLowerCase().includes(String(t.value).toLowerCase());case"in":return Array.isArray(t.value)&&t.value.includes(r);default:return!0}})}if(e.groupBy&&e.groupBy.length>0&&e.aggregations){let t=new Map;for(let a of r){let r=e.groupBy.map(e=>String(a[e])).join("|||"),n=t.get(r)??[];n.push(a),t.set(r,n)}let a=[];for(let[r,n]of t.entries()){let t={},i=r.split("|||");for(let a of(e.groupBy.forEach((e,a)=>{t[e]=i[a]}),e.aggregations)){let e=n.map(e=>Number(e[a.column])).filter(e=>!isNaN(e));t[`${a.op}_${a.column}`]=g(a.op,e)}a.push(t)}r=a}if(e.aggregations&&e.aggregations.length>0&&(!e.groupBy||0===e.groupBy.length))for(let a of(t={},e.aggregations)){let e=r.map(e=>Number(e[a.column])).filter(e=>!isNaN(e));t[`${a.op}_${a.column}`]=g(a.op,e)}if(e.columns&&e.columns.length>0&&(r=r.map(t=>{let a={};for(let r of e.columns)r in t&&(a[r]=t[r]);return a})),e.sortBy){let t="desc"===e.sortOrder?-1:1;r.sort((a,r)=>{let n=a[e.sortBy],i=r[e.sortBy];return null==n&&null==i?0:null==n?1:null==i?-1:"number"==typeof n&&"number"==typeof i?(n-i)*t:String(n).localeCompare(String(i))*t})}let i=r.length;return e.limit&&e.limit>0&&(r=r.slice(0,e.limit)),{columns:r.length>0?Object.keys(r[0]):e.columns??a.columns.map(e=>e.name),rows:r,totalRows:i,aggregationResults:t}}function g(e,t){if(0===t.length)return 0;switch(e){case"sum":return Number(t.reduce((e,t)=>e+t,0).toFixed(4));case"avg":return Number((t.reduce((e,t)=>e+t,0)/t.length).toFixed(4));case"count":return t.length;case"min":return Math.min(...t);case"max":return Math.max(...t);case"median":{let e=[...t].sort((e,t)=>e-t),a=e.length;return a%2==0?Number(((e[a/2-1]+e[a/2])/2).toFixed(4)):e[Math.floor(a/2)]}default:return 0}}e.s(["deleteTabularDataset",0,m,"getTabularDataset",0,p,"listTabularDatasets",0,c,"queryTabular",0,h,"saveTabularDataset",0,d])},977571,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),u=e.i(135958),d=e.i(86520),c=e.i(970949),p=e.i(741165),m=e.i(106898),h=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(686296),v=e.i(608778);async function S(e){try{let t=await e.json();if(!t.datasetId)return w.NextResponse.json({error:"datasetId is required"},{status:400});let a=await (0,v.queryTabular)(t);return w.NextResponse.json(a)}catch(t){let e=t instanceof Error?t.message:"Query failed";return w.NextResponse.json({error:e},{status:500})}}e.s(["POST",0,S,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],948115);var b=e.i(948115);let N=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/tabular/query/route",pathname:"/api/tabular/query",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/tabular/query/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:E,serverHooks:R}=N;async function T(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),N.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/tabular/query/route";w=w.replace(/\/index$/,"")||"/";let v=await N.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:b,params:A,nextConfig:E,parsedUrl:R,isDraftMode:T,prerenderManifest:x,routerServerContext:C,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,resolvedPathname:D,clientReferenceManifest:M,serverActionsManifest:U}=v,q=(0,o.normalizeAppPath)(w),P=!!(x.dynamicRoutes[q]||x.routes[D]),j=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,R,!1):t.end("This page could not be found"),null);if(P&&!T){let e=!!x.routes[D],t=x.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new f.NoFallbackError}}let k=null;!P||N.isDev||T||(k="/index"===(k=D)?"/":k);let L=!0===N.isDev||!P,K=P&&!L;U&&M&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:M,serverActionsManifest:U});let F=e.method||"GET",Y=(0,i.getTracer)(),H=Y.getActiveScopeSpan(),$=!!(null==C?void 0:C.isWrappedByNextServer),_=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,E,x,_);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let z={params:A,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:L,incrementalCache:B,cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>N.onRequestError(e,t,r,n,C)},sharedContext:{buildId:S,deploymentId:b}},W=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let n,s=async e=>N.handle(G,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=Y.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=`${F} ${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(`${F} ${w}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:a})=>{try{if(!_&&I&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let o=z.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=z.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(W,V,i,z.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,r=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:y.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 N.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:I})},!1,C),t}},u=await N.handleResponse({req:e,nextConfig:E,cacheKey:k,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:_});if(!P)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});_||t.setHeader("x-nextjs-cache",I?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return _&&P||d.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(W,V,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&H?await o(H):(n=Y.getActiveScopeSpan(),await Y.withPropagatedContext(e.headers,()=>Y.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof f.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:I})},!1,C),P)throw t;return await (0,p.sendResponse)(W,V,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:E})},"routeModule",0,N,"serverHooks",0,R,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,E],977571)}];
58
+
59
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0wvxpqf._.js.map