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.
- package/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +69 -0
- package/.next/build/chunks/[root-of-the-server]__0cstldc._.js +206 -0
- package/.next/build/chunks/[root-of-the-server]__0s3ts0r._.js +500 -0
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0xqnjlz._.js +13 -0
- package/.next/build/chunks/[turbopack]_runtime.js +890 -0
- package/.next/build/chunks/node_modules__pnpm_04zrf.1._.js +7126 -0
- package/.next/build/package.json +1 -0
- package/.next/build/postcss.js +6 -0
- package/.next/build-manifest.json +22 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/diagnostics/route-bundle-stats.json +133 -0
- package/.next/export-marker.json +6 -0
- package/.next/fallback-build-manifest.json +13 -0
- package/.next/images-manifest.json +68 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +210 -0
- package/.next/required-server-files.js +356 -0
- package/.next/required-server-files.json +356 -0
- package/.next/routes-manifest.json +462 -0
- package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_global-error/page/build-manifest.json +18 -0
- package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/.next/server/app/_global-error/page.js +10 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +15 -0
- package/.next/server/app/_global-error.rsc +15 -0
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +6 -0
- package/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_not-found/page/build-manifest.json +18 -0
- package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/.next/server/app/_not-found/page.js +14 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/.next/server/app/_not-found.html +1 -0
- package/.next/server/app/_not-found.meta +16 -0
- package/.next/server/app/_not-found.rsc +28 -0
- package/.next/server/app/_not-found.segments/_full.segment.rsc +28 -0
- package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/.next/server/app/_not-found.segments/_index.segment.rsc +14 -0
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
- package/.next/server/app/analytics/page/app-paths-manifest.json +3 -0
- package/.next/server/app/analytics/page/build-manifest.json +18 -0
- package/.next/server/app/analytics/page/next-font-manifest.json +11 -0
- package/.next/server/app/analytics/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/analytics/page/server-reference-manifest.json +4 -0
- package/.next/server/app/analytics/page.js +15 -0
- package/.next/server/app/analytics/page.js.nft.json +1 -0
- package/.next/server/app/analytics/page_client-reference-manifest.js +3 -0
- package/.next/server/app/analytics.html +1 -0
- package/.next/server/app/analytics.meta +15 -0
- package/.next/server/app/analytics.rsc +32 -0
- package/.next/server/app/analytics.segments/_full.segment.rsc +32 -0
- package/.next/server/app/analytics.segments/_head.segment.rsc +6 -0
- package/.next/server/app/analytics.segments/_index.segment.rsc +14 -0
- package/.next/server/app/analytics.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +6 -0
- package/.next/server/app/analytics.segments/analytics.segment.rsc +5 -0
- package/.next/server/app/api/analytics/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/analytics/route/build-manifest.json +9 -0
- package/.next/server/app/api/analytics/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/analytics/route.js +9 -0
- package/.next/server/app/api/analytics/route.js.nft.json +1 -0
- package/.next/server/app/api/analytics/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/chat/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/chat/route/build-manifest.json +9 -0
- package/.next/server/app/api/chat/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/chat/route.js +24 -0
- package/.next/server/app/api/chat/route.js.nft.json +1 -0
- package/.next/server/app/api/chat/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/chat/status/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/chat/status/route/build-manifest.json +9 -0
- package/.next/server/app/api/chat/status/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/chat/status/route.js +9 -0
- package/.next/server/app/api/chat/status/route.js.nft.json +1 -0
- package/.next/server/app/api/chat/status/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/chat/suggestions/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/chat/suggestions/route/build-manifest.json +9 -0
- package/.next/server/app/api/chat/suggestions/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/chat/suggestions/route.js +17 -0
- package/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -0
- package/.next/server/app/api/chat/suggestions/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/config/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/config/route/build-manifest.json +9 -0
- package/.next/server/app/api/config/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/config/route.js +8 -0
- package/.next/server/app/api/config/route.js.nft.json +1 -0
- package/.next/server/app/api/config/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/config/test/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/config/test/route/build-manifest.json +9 -0
- package/.next/server/app/api/config/test/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/config/test/route.js +8 -0
- package/.next/server/app/api/config/test/route.js.nft.json +1 -0
- package/.next/server/app/api/config/test/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/config/test-embedding/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/config/test-embedding/route/build-manifest.json +9 -0
- package/.next/server/app/api/config/test-embedding/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/config/test-embedding/route.js +12 -0
- package/.next/server/app/api/config/test-embedding/route.js.nft.json +1 -0
- package/.next/server/app/api/config/test-embedding/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/config/test-llm/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/config/test-llm/route/build-manifest.json +9 -0
- package/.next/server/app/api/config/test-llm/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/config/test-llm/route.js +12 -0
- package/.next/server/app/api/config/test-llm/route.js.nft.json +1 -0
- package/.next/server/app/api/config/test-llm/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/config/test-provider/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/config/test-provider/route/build-manifest.json +9 -0
- package/.next/server/app/api/config/test-provider/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/config/test-provider/route.js +13 -0
- package/.next/server/app/api/config/test-provider/route.js.nft.json +1 -0
- package/.next/server/app/api/config/test-provider/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/config/verify/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/config/verify/route/build-manifest.json +9 -0
- package/.next/server/app/api/config/verify/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/config/verify/route.js +16 -0
- package/.next/server/app/api/config/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/config/verify/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/connections/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/connections/route/build-manifest.json +9 -0
- package/.next/server/app/api/connections/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/connections/route.js +8 -0
- package/.next/server/app/api/connections/route.js.nft.json +1 -0
- package/.next/server/app/api/connections/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/connections/webhook/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/connections/webhook/route/build-manifest.json +9 -0
- package/.next/server/app/api/connections/webhook/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/connections/webhook/route.js +10 -0
- package/.next/server/app/api/connections/webhook/route.js.nft.json +1 -0
- package/.next/server/app/api/connections/webhook/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/demo/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/demo/route/build-manifest.json +9 -0
- package/.next/server/app/api/demo/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/demo/route.js +15 -0
- package/.next/server/app/api/demo/route.js.nft.json +1 -0
- package/.next/server/app/api/demo/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/deploy/cloud-project/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/deploy/cloud-project/route/build-manifest.json +9 -0
- package/.next/server/app/api/deploy/cloud-project/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/deploy/cloud-project/route.js +13 -0
- package/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -0
- package/.next/server/app/api/deploy/cloud-project/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/deploy/ssh/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/deploy/ssh/route/build-manifest.json +9 -0
- package/.next/server/app/api/deploy/ssh/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/deploy/ssh/route.js +8 -0
- package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -0
- package/.next/server/app/api/deploy/ssh/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/deployment/blob-setup/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/deployment/blob-setup/route/build-manifest.json +9 -0
- package/.next/server/app/api/deployment/blob-setup/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/deployment/blob-setup/route.js +8 -0
- package/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -0
- package/.next/server/app/api/deployment/blob-setup/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/deployment/config/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/deployment/config/route/build-manifest.json +9 -0
- package/.next/server/app/api/deployment/config/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/deployment/config/route.js +8 -0
- package/.next/server/app/api/deployment/config/route.js.nft.json +1 -0
- package/.next/server/app/api/deployment/config/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/describe-image/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/describe-image/route/build-manifest.json +9 -0
- package/.next/server/app/api/describe-image/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/describe-image/route.js +15 -0
- package/.next/server/app/api/describe-image/route.js.nft.json +1 -0
- package/.next/server/app/api/describe-image/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/doc-editor/edit/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/doc-editor/edit/route/build-manifest.json +9 -0
- package/.next/server/app/api/doc-editor/edit/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/doc-editor/edit/route.js +11 -0
- package/.next/server/app/api/doc-editor/edit/route.js.nft.json +1 -0
- package/.next/server/app/api/doc-editor/edit/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/doc-editor/export/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/doc-editor/export/route/build-manifest.json +9 -0
- package/.next/server/app/api/doc-editor/export/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/doc-editor/export/route.js +11 -0
- package/.next/server/app/api/doc-editor/export/route.js.nft.json +1 -0
- package/.next/server/app/api/doc-editor/export/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/doc-editor/extract-text/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/doc-editor/extract-text/route/build-manifest.json +9 -0
- package/.next/server/app/api/doc-editor/extract-text/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/doc-editor/extract-text/route.js +11 -0
- package/.next/server/app/api/doc-editor/extract-text/route.js.nft.json +1 -0
- package/.next/server/app/api/doc-editor/extract-text/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/doc-editor/parse/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/doc-editor/parse/route/build-manifest.json +9 -0
- package/.next/server/app/api/doc-editor/parse/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/doc-editor/parse/route.js +12 -0
- package/.next/server/app/api/doc-editor/parse/route.js.nft.json +1 -0
- package/.next/server/app/api/doc-editor/parse/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/doc-editor/restore/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/doc-editor/restore/route/build-manifest.json +9 -0
- package/.next/server/app/api/doc-editor/restore/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/doc-editor/restore/route.js +11 -0
- package/.next/server/app/api/doc-editor/restore/route.js.nft.json +1 -0
- package/.next/server/app/api/doc-editor/restore/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/document/sign/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/document/sign/route/build-manifest.json +9 -0
- package/.next/server/app/api/document/sign/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/document/sign/route.js +12 -0
- package/.next/server/app/api/document/sign/route.js.nft.json +1 -0
- package/.next/server/app/api/document/sign/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/documents/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/documents/route/build-manifest.json +9 -0
- package/.next/server/app/api/documents/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/documents/route.js +8 -0
- package/.next/server/app/api/documents/route.js.nft.json +1 -0
- package/.next/server/app/api/documents/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/firecrawl/local/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/firecrawl/local/route/build-manifest.json +9 -0
- package/.next/server/app/api/firecrawl/local/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/firecrawl/local/route.js +8 -0
- package/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -0
- package/.next/server/app/api/firecrawl/local/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/index/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/index/route/build-manifest.json +9 -0
- package/.next/server/app/api/index/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/index/route.js +14 -0
- package/.next/server/app/api/index/route.js.nft.json +1 -0
- package/.next/server/app/api/index/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/integrations/notion/callback/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/integrations/notion/callback/route/build-manifest.json +9 -0
- package/.next/server/app/api/integrations/notion/callback/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/integrations/notion/callback/route.js +8 -0
- package/.next/server/app/api/integrations/notion/callback/route.js.nft.json +1 -0
- package/.next/server/app/api/integrations/notion/callback/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/integrations/notion/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/integrations/notion/route/build-manifest.json +9 -0
- package/.next/server/app/api/integrations/notion/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/integrations/notion/route.js +8 -0
- package/.next/server/app/api/integrations/notion/route.js.nft.json +1 -0
- package/.next/server/app/api/integrations/notion/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/jobs/[id]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/jobs/[id]/route/build-manifest.json +9 -0
- package/.next/server/app/api/jobs/[id]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/jobs/[id]/route.js +8 -0
- package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/jobs/[id]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/jobs/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/jobs/route/build-manifest.json +9 -0
- package/.next/server/app/api/jobs/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/jobs/route.js +8 -0
- package/.next/server/app/api/jobs/route.js.nft.json +1 -0
- package/.next/server/app/api/jobs/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/marketplace/[toolId]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/marketplace/[toolId]/route/build-manifest.json +9 -0
- package/.next/server/app/api/marketplace/[toolId]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/marketplace/[toolId]/route.js +9 -0
- package/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -0
- package/.next/server/app/api/marketplace/[toolId]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/marketplace/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/marketplace/route/build-manifest.json +9 -0
- package/.next/server/app/api/marketplace/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/marketplace/route.js +9 -0
- package/.next/server/app/api/marketplace/route.js.nft.json +1 -0
- package/.next/server/app/api/marketplace/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/media/[id]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/media/[id]/route/build-manifest.json +9 -0
- package/.next/server/app/api/media/[id]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/media/[id]/route.js +8 -0
- package/.next/server/app/api/media/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/media/[id]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/media/process/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/media/process/route/build-manifest.json +9 -0
- package/.next/server/app/api/media/process/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/media/process/route.js +17 -0
- package/.next/server/app/api/media/process/route.js.nft.json +1 -0
- package/.next/server/app/api/media/process/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/media/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/media/route/build-manifest.json +9 -0
- package/.next/server/app/api/media/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/media/route.js +9 -0
- package/.next/server/app/api/media/route.js.nft.json +1 -0
- package/.next/server/app/api/media/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/media/stream/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/media/stream/route/build-manifest.json +9 -0
- package/.next/server/app/api/media/stream/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/media/stream/route.js +7 -0
- package/.next/server/app/api/media/stream/route.js.nft.json +1 -0
- package/.next/server/app/api/media/stream/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/models/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/models/route/build-manifest.json +9 -0
- package/.next/server/app/api/models/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/models/route.js +9 -0
- package/.next/server/app/api/models/route.js.nft.json +1 -0
- package/.next/server/app/api/models/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/parse-file/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/parse-file/route/build-manifest.json +9 -0
- package/.next/server/app/api/parse-file/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/parse-file/route.js +11 -0
- package/.next/server/app/api/parse-file/route.js.nft.json +1 -0
- package/.next/server/app/api/parse-file/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/proxy/verify/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/proxy/verify/route/build-manifest.json +9 -0
- package/.next/server/app/api/proxy/verify/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/proxy/verify/route.js +8 -0
- package/.next/server/app/api/proxy/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/proxy/verify/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/sandbox/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/sandbox/route/build-manifest.json +9 -0
- package/.next/server/app/api/sandbox/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/sandbox/route.js +8 -0
- package/.next/server/app/api/sandbox/route.js.nft.json +1 -0
- package/.next/server/app/api/sandbox/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/search/bing/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/search/bing/route/build-manifest.json +9 -0
- package/.next/server/app/api/search/bing/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/search/bing/route.js +8 -0
- package/.next/server/app/api/search/bing/route.js.nft.json +1 -0
- package/.next/server/app/api/search/bing/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/search/brave/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/search/brave/route/build-manifest.json +9 -0
- package/.next/server/app/api/search/brave/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/search/brave/route.js +8 -0
- package/.next/server/app/api/search/brave/route.js.nft.json +1 -0
- package/.next/server/app/api/search/brave/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/search/exa/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/search/exa/route/build-manifest.json +9 -0
- package/.next/server/app/api/search/exa/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/search/exa/route.js +8 -0
- package/.next/server/app/api/search/exa/route.js.nft.json +1 -0
- package/.next/server/app/api/search/exa/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/search/google/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/search/google/route/build-manifest.json +9 -0
- package/.next/server/app/api/search/google/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/search/google/route.js +8 -0
- package/.next/server/app/api/search/google/route.js.nft.json +1 -0
- package/.next/server/app/api/search/google/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/search/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/search/route/build-manifest.json +9 -0
- package/.next/server/app/api/search/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/search/route.js +8 -0
- package/.next/server/app/api/search/route.js.nft.json +1 -0
- package/.next/server/app/api/search/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/search/tavily/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/search/tavily/route/build-manifest.json +9 -0
- package/.next/server/app/api/search/tavily/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/search/tavily/route.js +8 -0
- package/.next/server/app/api/search/tavily/route.js.nft.json +1 -0
- package/.next/server/app/api/search/tavily/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/search/verify/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/search/verify/route/build-manifest.json +9 -0
- package/.next/server/app/api/search/verify/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/search/verify/route.js +8 -0
- package/.next/server/app/api/search/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/search/verify/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/server/agent/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/server/agent/route/build-manifest.json +9 -0
- package/.next/server/app/api/server/agent/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/server/agent/route.js +10 -0
- package/.next/server/app/api/server/agent/route.js.nft.json +1 -0
- package/.next/server/app/api/server/agent/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/server/download/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/server/download/route/build-manifest.json +9 -0
- package/.next/server/app/api/server/download/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/server/download/route.js +9 -0
- package/.next/server/app/api/server/download/route.js.nft.json +1 -0
- package/.next/server/app/api/server/download/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/server/generate/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/server/generate/route/build-manifest.json +9 -0
- package/.next/server/app/api/server/generate/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/server/generate/route.js +10 -0
- package/.next/server/app/api/server/generate/route.js.nft.json +1 -0
- package/.next/server/app/api/server/generate/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/server/local/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/server/local/route/build-manifest.json +9 -0
- package/.next/server/app/api/server/local/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/server/local/route.js +10 -0
- package/.next/server/app/api/server/local/route.js.nft.json +1 -0
- package/.next/server/app/api/server/local/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/servers/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/servers/route/build-manifest.json +9 -0
- package/.next/server/app/api/servers/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/servers/route.js +10 -0
- package/.next/server/app/api/servers/route.js.nft.json +1 -0
- package/.next/server/app/api/servers/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tabular/query/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tabular/query/route/build-manifest.json +9 -0
- package/.next/server/app/api/tabular/query/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tabular/query/route.js +8 -0
- package/.next/server/app/api/tabular/query/route.js.nft.json +1 -0
- package/.next/server/app/api/tabular/query/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tabular/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tabular/route/build-manifest.json +9 -0
- package/.next/server/app/api/tabular/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tabular/route.js +8 -0
- package/.next/server/app/api/tabular/route.js.nft.json +1 -0
- package/.next/server/app/api/tabular/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/upload-file/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/upload-file/route/build-manifest.json +9 -0
- package/.next/server/app/api/upload-file/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/upload-file/route.js +8 -0
- package/.next/server/app/api/upload-file/route.js.nft.json +1 -0
- package/.next/server/app/api/upload-file/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/uploads/[...slug]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/uploads/[...slug]/route/build-manifest.json +9 -0
- package/.next/server/app/api/uploads/[...slug]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/uploads/[...slug]/route.js +8 -0
- package/.next/server/app/api/uploads/[...slug]/route.js.nft.json +1 -0
- package/.next/server/app/api/uploads/[...slug]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/vector-stores/install/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/vector-stores/install/route/build-manifest.json +9 -0
- package/.next/server/app/api/vector-stores/install/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/vector-stores/install/route.js +8 -0
- package/.next/server/app/api/vector-stores/install/route.js.nft.json +1 -0
- package/.next/server/app/api/vector-stores/install/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/vector-stores/status/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/vector-stores/status/route/build-manifest.json +9 -0
- package/.next/server/app/api/vector-stores/status/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/vector-stores/status/route.js +8 -0
- package/.next/server/app/api/vector-stores/status/route.js.nft.json +1 -0
- package/.next/server/app/api/vector-stores/status/route_client-reference-manifest.js +3 -0
- package/.next/server/app/chat/page/app-paths-manifest.json +3 -0
- package/.next/server/app/chat/page/build-manifest.json +18 -0
- package/.next/server/app/chat/page/next-font-manifest.json +11 -0
- package/.next/server/app/chat/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/chat/page/server-reference-manifest.json +4 -0
- package/.next/server/app/chat/page.js +15 -0
- package/.next/server/app/chat/page.js.nft.json +1 -0
- package/.next/server/app/chat/page_client-reference-manifest.js +3 -0
- package/.next/server/app/chat.html +1 -0
- package/.next/server/app/chat.meta +15 -0
- package/.next/server/app/chat.rsc +29 -0
- package/.next/server/app/chat.segments/_full.segment.rsc +29 -0
- package/.next/server/app/chat.segments/_head.segment.rsc +6 -0
- package/.next/server/app/chat.segments/_index.segment.rsc +14 -0
- package/.next/server/app/chat.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +6 -0
- package/.next/server/app/chat.segments/chat.segment.rsc +5 -0
- package/.next/server/app/data/page/app-paths-manifest.json +3 -0
- package/.next/server/app/data/page/build-manifest.json +18 -0
- package/.next/server/app/data/page/next-font-manifest.json +11 -0
- package/.next/server/app/data/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/data/page/server-reference-manifest.json +4 -0
- package/.next/server/app/data/page.js +15 -0
- package/.next/server/app/data/page.js.nft.json +1 -0
- package/.next/server/app/data/page_client-reference-manifest.js +3 -0
- package/.next/server/app/data.html +1 -0
- package/.next/server/app/data.meta +15 -0
- package/.next/server/app/data.rsc +32 -0
- package/.next/server/app/data.segments/_full.segment.rsc +32 -0
- package/.next/server/app/data.segments/_head.segment.rsc +6 -0
- package/.next/server/app/data.segments/_index.segment.rsc +14 -0
- package/.next/server/app/data.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +6 -0
- package/.next/server/app/data.segments/data.segment.rsc +5 -0
- package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
- package/.next/server/app/favicon.ico/route/build-manifest.json +9 -0
- package/.next/server/app/favicon.ico/route.js +8 -0
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +1 -0
- package/.next/server/app/index.html +1 -0
- package/.next/server/app/index.meta +14 -0
- package/.next/server/app/index.rsc +26 -0
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -0
- package/.next/server/app/index.segments/_full.segment.rsc +26 -0
- package/.next/server/app/index.segments/_head.segment.rsc +6 -0
- package/.next/server/app/index.segments/_index.segment.rsc +14 -0
- package/.next/server/app/index.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/page/app-paths-manifest.json +3 -0
- package/.next/server/app/page/build-manifest.json +18 -0
- package/.next/server/app/page/next-font-manifest.json +11 -0
- package/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/page/server-reference-manifest.json +4 -0
- package/.next/server/app/page.js +16 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings/page/app-paths-manifest.json +3 -0
- package/.next/server/app/settings/page/build-manifest.json +18 -0
- package/.next/server/app/settings/page/next-font-manifest.json +11 -0
- package/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/settings/page/server-reference-manifest.json +41 -0
- package/.next/server/app/settings/page.js +16 -0
- package/.next/server/app/settings/page.js.nft.json +1 -0
- package/.next/server/app/settings/page_client-reference-manifest.js +3 -0
- package/.next/server/app/settings.html +1 -0
- package/.next/server/app/settings.meta +15 -0
- package/.next/server/app/settings.rsc +31 -0
- package/.next/server/app/settings.segments/_full.segment.rsc +31 -0
- package/.next/server/app/settings.segments/_head.segment.rsc +6 -0
- package/.next/server/app/settings.segments/_index.segment.rsc +14 -0
- package/.next/server/app/settings.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/settings.segments/settings.segment.rsc +5 -0
- package/.next/server/app-paths-manifest.json +69 -0
- package/.next/server/chunks/00i._ai_dist_index_mjs_0u4.k1t._.js +34 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_config_test-embedding_route_actions_09--owe.js +3 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_config_test-provider_route_actions_0l6xr0t.js +3 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_deploy_cloud-project_route_actions_0pghds2.js +3 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_deployment_blob-setup_route_actions_0f55gkq.js +3 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_doc-editor_extract-text_route_actions_0dzj6iq.js +3 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_marketplace_[toolId]_route_actions_0cxbtrw.js +3 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_vector-stores_install_route_actions_0_220fs.js +3 -0
- package/.next/server/chunks/02dz_web__next-internal_server_app_api_vector-stores_status_route_actions_0~_~b02.js +3 -0
- package/.next/server/chunks/0gvc_next_03p7xh-._.js +13 -0
- package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_0--xko7.js +24 -0
- package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_0.07y39.js +3 -0
- package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_04i84m2.js +10 -0
- package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_05yqn19.js +3 -0
- package/.next/server/chunks/0gvc_next_dist_esm_build_templates_app-route_0_c4eox.js +3 -0
- package/.next/server/chunks/0m6-_@ai-sdk_anthropic_dist_index_093y5mm.js +10 -0
- package/.next/server/chunks/0nf3_next-internal_server_app_api_integrations_notion_callback_route_actions_0hyfnmw.js +3 -0
- package/.next/server/chunks/0ntz_@ai-sdk_openai_dist_index_mjs_03ljy2u._.js +13 -0
- package/.next/server/chunks/0ozc_@vercel_oidc_dist_token_0m1934l.js +3 -0
- package/.next/server/chunks/0rgj_zod_v4_0ponial._.js +64 -0
- package/.next/server/chunks/0rgj_zod_v4_0zoqna9._.js +64 -0
- package/.next/server/chunks/[externals]__01hpkma._.js +3 -0
- package/.next/server/chunks/[externals]__01tm01i._.js +3 -0
- package/.next/server/chunks/[externals]_chromadb_0goja~y._.js +3 -0
- package/.next/server/chunks/[externals]_fs_0eo4gmu._.js +3 -0
- package/.next/server/chunks/[externals]_path_0.09pfe._.js +3 -0
- package/.next/server/chunks/[externals]_stream_0g9s3ok._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0--6uey._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0.qd1p3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0.r5yhr._.js +49 -0
- package/.next/server/chunks/[root-of-the-server]__0036943._.js +199 -0
- package/.next/server/chunks/[root-of-the-server]__00a7cyb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__00nqa2u._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0111be7._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__02c_z~9._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__02cpmox._.js +105 -0
- package/.next/server/chunks/[root-of-the-server]__02p-tv7._.js +105 -0
- package/.next/server/chunks/[root-of-the-server]__02p34d7._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__02t_0g7._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__03-x3no._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__03l~uw5._.js +143 -0
- package/.next/server/chunks/[root-of-the-server]__044l2_f._.js +143 -0
- package/.next/server/chunks/[root-of-the-server]__04kopvt._.js +63 -0
- package/.next/server/chunks/[root-of-the-server]__04l~ip-._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__04visk8._.js +105 -0
- package/.next/server/chunks/[root-of-the-server]__05wk..v._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__05x8tmf._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__06l96vc._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__06ohoeu._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__072q335._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07_1411._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__09kos0n._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__09oyip3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__09rsmk2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0_by00t._.js +11 -0
- package/.next/server/chunks/[root-of-the-server]__0a9jp5~._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0acpo9m._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0b17yoc._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0cumfx6._.js +9 -0
- package/.next/server/chunks/[root-of-the-server]__0d7p0xo._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0e_itje._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0exyn0q._.js +88 -0
- package/.next/server/chunks/[root-of-the-server]__0fcf_rl._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0f~eq1-._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0g36cgg._.js +143 -0
- package/.next/server/chunks/[root-of-the-server]__0g4hq1o._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0i9fj76._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0lczaer._.js +143 -0
- package/.next/server/chunks/[root-of-the-server]__0ljy49-._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0lk5hkk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0n0nerw._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0np09bv._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ns~dg6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0oh5wgp._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0oyc7s4._.js +105 -0
- package/.next/server/chunks/[root-of-the-server]__0pg~eys._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0qhpl6k._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0qhwzn-._.js +21 -0
- package/.next/server/chunks/[root-of-the-server]__0qs73xp._.js +143 -0
- package/.next/server/chunks/[root-of-the-server]__0qtx78g._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0r03jcl._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0rdjqpy._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sb7d93._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0t36t5o._.js +60 -0
- package/.next/server/chunks/[root-of-the-server]__0t_hp52._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0udlgj6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ufk3d0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0uu6oan._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0v.0gyp._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0v03x56._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0v4bbce._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0v67rlo._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0vcdpoc._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0veqa4o._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0wvxpqf._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0wyl7x5._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0y5y7tu._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0yo._sm._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0yx8vxp._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0zh8t6z._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0~q2fro._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__0~wsw0_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__100gqj0._.js +143 -0
- package/.next/server/chunks/[root-of-the-server]__10au-r5._.js +13 -0
- package/.next/server/chunks/[root-of-the-server]__10d58x4._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__10zm06g._.js +143 -0
- package/.next/server/chunks/[root-of-the-server]__12kvuvp._.js +59 -0
- package/.next/server/chunks/[root-of-the-server]__13gq0t2._.js +3 -0
- package/.next/server/chunks/[turbopack]_runtime.js +903 -0
- package/.next/server/chunks/_01kokno._.js +3 -0
- package/.next/server/chunks/_059f-.0._.js +258 -0
- package/.next/server/chunks/_071mhy1._.js +32 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_analytics_route_actions_0.uxcnt.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_chat_route_actions_0q6zwqv.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_chat_status_route_actions_0t_21~v.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_chat_suggestions_route_actions_01umx_-.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_config_route_actions_0-4ivvk.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_config_test-llm_route_actions_0z5ew-0.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_config_test_route_actions_08cur6r.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_config_verify_route_actions_0hid6b..js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_connections_route_actions_0q3wdg3.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_connections_webhook_route_actions_0wa28~b.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_demo_route_actions_05lntn3.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_deploy_ssh_route_actions_0r44rn0.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_deployment_config_route_actions_0bkon.m.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_describe-image_route_actions_0pmvs8v.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_edit_route_actions_10hrovj.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_export_route_actions_0rff01q.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_parse_route_actions_0fkx6xw.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_doc-editor_restore_route_actions_0g9uodw.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_document_sign_route_actions_0_6rnl_.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_documents_route_actions_0l2znaz.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_firecrawl_local_route_actions_0ubjaim.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_index_route_actions_0~2989e.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_integrations_notion_route_actions_08es~5e.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_jobs_[id]_route_actions_0.l39qd.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_jobs_route_actions_08kx~8-.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_marketplace_route_actions_0z~vymm.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_media_[id]_route_actions_0wsnidd.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_media_process_route_actions_0_j9maz.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_media_route_actions_01szz-1.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_media_stream_route_actions_0h2x_~2.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_models_route_actions_0ervfbf.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_parse-file_route_actions_134wu5p.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_proxy_verify_route_actions_11frmb9.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_sandbox_route_actions_0y9te9y.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_search_bing_route_actions_0pfrdr1.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_search_brave_route_actions_0sij14a.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_search_exa_route_actions_013do9i.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_search_google_route_actions_02aoghr.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_search_route_actions_0_2o9ph.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_search_tavily_route_actions_0z0cnd4.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_search_verify_route_actions_0xtygzs.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_server_agent_route_actions_11xuz1m.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_server_download_route_actions_0vdr_bn.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_server_generate_route_actions_12qf.pa.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_server_local_route_actions_0c~tchb.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_servers_route_actions_0_qimaq.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_tabular_query_route_actions_0m_i8~j.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_tabular_route_actions_06xgjmg.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_upload-file_route_actions_0-df~h8.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_api_uploads_[___slug]_route_actions_0-6rd8s.js +3 -0
- package/.next/server/chunks/apps_web__next-internal_server_app_favicon_ico_route_actions_0h5n1et.js +3 -0
- package/.next/server/chunks/node_modules__pnpm_00a45hz._.js +15 -0
- package/.next/server/chunks/node_modules__pnpm_01evtue._.js +36 -0
- package/.next/server/chunks/node_modules__pnpm_058qmaf._.js +36 -0
- package/.next/server/chunks/node_modules__pnpm_090g2s3._.js +3 -0
- package/.next/server/chunks/node_modules__pnpm_0of6.x_._.js +3 -0
- package/.next/server/chunks/node_modules__pnpm_0tui34u._.js +5 -0
- package/.next/server/chunks/node_modules__pnpm_11fyqx5._.js +15 -0
- package/.next/server/chunks/node_modules__pnpm_12rdsen._.js +36 -0
- package/.next/server/chunks/packages_070bs61._.js +3 -0
- package/.next/server/chunks/packages_0jmx5.-._.js +3 -0
- package/.next/server/chunks/packages_core_src_analytics-store_ts_03tqnqs._.js +3 -0
- package/.next/server/chunks/packages_core_src_embeddings_providers_ts_05f4_w-._.js +19 -0
- package/.next/server/chunks/packages_core_src_embeddings_registry_ts_031sc7-._.js +3 -0
- package/.next/server/chunks/packages_core_src_generator_generate-server_ts_0mt.je3._.js +1145 -0
- package/.next/server/chunks/packages_core_src_generator_server-runtime_ts_127f0ye._.js +648 -0
- package/.next/server/chunks/packages_core_src_index-store_ts_13sjtkb._.js +3 -0
- package/.next/server/chunks/packages_core_src_indexing_embedder_ts_0h75r~u._.js +20 -0
- package/.next/server/chunks/packages_core_src_media-store_ts_0v0lx36._.js +3 -0
- package/.next/server/chunks/packages_core_src_models-list_ts_03-odl5._.js +3 -0
- package/.next/server/chunks/packages_marketplace_src_0mxp_e3._.js +3 -0
- package/.next/server/chunks/packages_marketplace_src_storage-provider_ts_0mbs32-._.js +3 -0
- package/.next/server/chunks/packages_vector-stores_src_044u_tk._.js +3 -0
- package/.next/server/chunks/ssr/0ay0_framer-motion_dist_es_render_components_motion_proxy_mjs_00idub3._.js +3 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_0e.uypd._.js +6 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_client_components_0mj6fnc._.js +3 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_client_components_builtin_forbidden_10qct8z.js +3 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_client_components_builtin_global-error_0azu6.3.js +3 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_client_components_builtin_unauthorized_03b6_.w.js +3 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0-imr0z.js +4 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_00l31p..js +4 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0cjdc2w.js +4 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0fsrb82.js +4 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0l3eneq.js +4 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0l6387r.js +4 -0
- package/.next/server/chunks/ssr/0gvc_next_dist_esm_build_templates_app-page_0pk8tjk.js +4 -0
- package/.next/server/chunks/ssr/0hhw_pdfjs-dist_build_pdf_mjs_0emol.8._.js +47 -0
- package/.next/server/chunks/ssr/0ozc_@vercel_oidc_dist_token_0qkzh69.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__03nybtv._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__061054q._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0_lfs3c._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0bxkvem._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ciwgj6._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0f10~ff._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0l9758p._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0mib-aw._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0o6u8a1._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0q-0ign._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0u7t7hm._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0yxrvhy._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0z9yy2_._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0zl.q74._.js +3 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
- package/.next/server/chunks/ssr/_0-uky5v._.js +3 -0
- package/.next/server/chunks/ssr/_0007q7_._.js +3 -0
- package/.next/server/chunks/ssr/_003vid-._.js +3 -0
- package/.next/server/chunks/ssr/_03casre._.js +6 -0
- package/.next/server/chunks/ssr/_06imf71._.js +4 -0
- package/.next/server/chunks/ssr/_08uade7._.js +3 -0
- package/.next/server/chunks/ssr/_09~o4f.._.js +13 -0
- package/.next/server/chunks/ssr/_0_aolb-._.js +3 -0
- package/.next/server/chunks/ssr/_0_zom3a._.js +3 -0
- package/.next/server/chunks/ssr/_0erod4k._.js +3 -0
- package/.next/server/chunks/ssr/_0gh6844._.js +3 -0
- package/.next/server/chunks/ssr/_0h9s_hw._.js +3 -0
- package/.next/server/chunks/ssr/_0p1j64v._.js +3 -0
- package/.next/server/chunks/ssr/_0qi5c9~._.js +132 -0
- package/.next/server/chunks/ssr/_0qopd-r._.js +120 -0
- package/.next/server/chunks/ssr/_0s5_0n1._.js +3 -0
- package/.next/server/chunks/ssr/_11.lrfy._.js +6 -0
- package/.next/server/chunks/ssr/_13gucvb._.js +3 -0
- package/.next/server/chunks/ssr/apps_web__next-internal_server_app__global-error_page_actions_0.u5cfa.js +3 -0
- package/.next/server/chunks/ssr/apps_web__next-internal_server_app__not-found_page_actions_0appun9.js +3 -0
- package/.next/server/chunks/ssr/apps_web__next-internal_server_app_analytics_page_actions_04e3dmk.js +3 -0
- package/.next/server/chunks/ssr/apps_web__next-internal_server_app_chat_page_actions_0x9i55t.js +3 -0
- package/.next/server/chunks/ssr/apps_web__next-internal_server_app_data_page_actions_0f9t7xs.js +3 -0
- package/.next/server/chunks/ssr/apps_web__next-internal_server_app_page_actions_0rm5_5w.js +3 -0
- package/.next/server/chunks/ssr/apps_web_app_template_tsx_0.4m7c9._.js +3 -0
- package/.next/server/chunks/ssr/apps_web_app_template_tsx_0j2myib._.js +3 -0
- package/.next/server/chunks/ssr/apps_web_components_analytics_analytics-dashboard_tsx_0lrr85m._.js +3 -0
- package/.next/server/chunks/ssr/apps_web_components_ui_tabs_tsx_0435ww5._.js +3 -0
- package/.next/server/chunks/ssr/apps_web_lib_pdf-images_ts_0nzct~e._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0auud-z._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0efi01o._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0ge5k63._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0j6v-w5._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0jmin55._.js +33 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0qjmu5-._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0q~5d-e._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_0xnq.u3._.js +19 -0
- package/.next/server/chunks/ssr/packages_core_src_generator_generate-server_ts_0o.y7vi._.js +1145 -0
- package/.next/server/functions-config-manifest.json +52 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +22 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +31 -0
- package/.next/server/pages/404.html +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +4 -0
- package/.next/server/prefetch-hints.json +1 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +42 -0
- package/.next/static/KqIuNxkoeAlhCusoxtMrS/_buildManifest.js +16 -0
- package/.next/static/KqIuNxkoeAlhCusoxtMrS/_clientMiddlewareManifest.js +1 -0
- package/.next/static/KqIuNxkoeAlhCusoxtMrS/_ssgManifest.js +1 -0
- package/.next/static/chunks/0-l-_.e4~p-tu.js +1 -0
- package/.next/static/chunks/00bdh97xa16uo.js +1 -0
- package/.next/static/chunks/00h-ng_jqta-2.js +1 -0
- package/.next/static/chunks/03jot0gqi~a10.js +1 -0
- package/.next/static/chunks/03~yq9q893hmn.js +1 -0
- package/.next/static/chunks/066jf0nk75nic.css +2 -0
- package/.next/static/chunks/06lztj0p4bq9f.js +31 -0
- package/.next/static/chunks/06mvsykkx_ufi.js +1 -0
- package/.next/static/chunks/090nmx8zs_1wf.js +1 -0
- package/.next/static/chunks/0_~l8kd_h3sbq.js +1 -0
- package/.next/static/chunks/0c-2rnxmjsotm.js +118 -0
- package/.next/static/chunks/0ho7lc.x2uknx.js +1 -0
- package/.next/static/chunks/0i-8kxwbvp9.l.js +129 -0
- package/.next/static/chunks/0l27y8_9hhe7s.js +4 -0
- package/.next/static/chunks/0q_qvc60_3aw4.js +1 -0
- package/.next/static/chunks/0r4ctb~yxw0ip.js +45 -0
- package/.next/static/chunks/0rp85cjcakb29.js +1 -0
- package/.next/static/chunks/0uawaqqylt5zw.css +1 -0
- package/.next/static/chunks/0ufxt21gvl.3g.js +1 -0
- package/.next/static/chunks/0vnayejbagbex.js +1 -0
- package/.next/static/chunks/0w6lgn24.0eip.js +1 -0
- package/.next/static/chunks/0wrbyfcre8l1-.js +1 -0
- package/.next/static/chunks/0xil-1~ra.qnv.js +1 -0
- package/.next/static/chunks/0zoh3o_.geqbv.js +1 -0
- package/.next/static/chunks/0~074ua5vk6f8.js +1 -0
- package/.next/static/chunks/0~_-3fik2n4-i.js +1 -0
- package/.next/static/chunks/10a_hianorzj3.js +1 -0
- package/.next/static/chunks/10k--lk9wf4pw.js +1 -0
- package/.next/static/chunks/14x~vj_4i-4bz.js +1 -0
- package/.next/static/chunks/15tyhmsp4jgmc.js +11 -0
- package/.next/static/chunks/16alfqkklv-bt.js +2 -0
- package/.next/static/chunks/176ixsksxtch_.js +1 -0
- package/.next/static/chunks/turbopack-06_~2vs.chjg_.js +1 -0
- package/.next/static/media/4fa387ec64143e14-s.0wkzw~je483f-.woff2 +0 -0
- package/.next/static/media/53b9e256198e5412-s.0-wfv7uh4i7h9.woff2 +0 -0
- package/.next/static/media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2 +0 -0
- package/.next/static/media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2 +0 -0
- package/.next/static/media/7178b3e590c64307-s.0nx0ww8fni_q3.woff2 +0 -0
- package/.next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2 +0 -0
- package/.next/static/media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2 +0 -0
- package/.next/static/media/8a480f0b521d4e75-s.0jzbimsg8vl84.woff2 +0 -0
- package/.next/static/media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2 +0 -0
- package/.next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2 +0 -0
- package/.next/static/media/favicon.01rzdfen4476b.ico +0 -0
- package/.next/static/media/fef07dbb0973bf53-s.12tyk43_3sh9u.woff2 +0 -0
- package/.next/types/cache-life.d.ts +145 -0
- package/.next/types/routes.d.ts +136 -0
- package/.next/types/validator.ts +637 -0
- package/CHANGELOG.md +24 -0
- package/LICENSE +176 -0
- package/app/actions/vercel.ts +325 -152
- package/app/analytics/page.tsx +19 -0
- package/app/api/analytics/route.ts +31 -0
- package/app/api/chat/route.ts +331 -145
- package/app/api/chat/status/route.ts +73 -22
- package/app/api/chat/suggestions/route.ts +61 -48
- package/app/api/chat/tools.ts +995 -0
- package/app/api/config/route.ts +56 -32
- package/app/api/config/test/route.ts +33 -32
- package/app/api/config/test-llm/route.ts +9 -10
- package/app/api/config/verify/route.ts +315 -0
- package/app/api/connections/route.ts +39 -0
- package/app/api/connections/webhook/route.ts +43 -0
- package/app/api/demo/route.ts +32 -44
- package/app/api/deploy/cloud-project/route.ts +125 -0
- package/app/api/deploy/ssh/route.ts +173 -132
- package/app/api/deployment/blob-setup/route.ts +28 -0
- package/app/api/deployment/config/route.ts +23 -0
- package/app/api/describe-image/route.ts +84 -0
- package/app/api/doc-editor/edit/route.ts +88 -0
- package/app/api/doc-editor/export/route.ts +33 -0
- package/app/api/doc-editor/extract-text/route.ts +41 -0
- package/app/api/doc-editor/parse/route.ts +66 -0
- package/app/api/doc-editor/restore/route.ts +74 -0
- package/app/api/document/sign/route.ts +56 -0
- package/app/api/documents/route.ts +185 -35
- package/app/api/firecrawl/local/route.ts +63 -23
- package/app/api/index/route.ts +73 -59
- package/app/api/integrations/notion/callback/route.ts +121 -0
- package/app/api/integrations/notion/route.ts +304 -0
- package/app/api/jobs/route.ts +45 -47
- package/app/api/marketplace/[toolId]/route.ts +70 -0
- package/app/api/marketplace/route.ts +32 -0
- package/app/api/media/[id]/route.ts +108 -0
- package/app/api/media/process/route.ts +1242 -0
- package/app/api/media/route.ts +284 -0
- package/app/api/media/stream/route.ts +113 -0
- package/app/api/models/route.ts +23 -0
- package/app/api/proxy/verify/route.ts +66 -0
- package/app/api/sandbox/route.ts +59 -0
- package/app/api/search/bing/route.ts +87 -0
- package/app/api/search/brave/route.ts +89 -0
- package/app/api/search/exa/route.ts +101 -0
- package/app/api/search/google/route.ts +16 -29
- package/app/api/search/tavily/route.ts +94 -0
- package/app/api/search/verify/route.ts +28 -0
- package/app/api/server/agent/route.ts +41 -0
- package/app/api/server/download/route.ts +42 -34
- package/app/api/server/generate/route.ts +23 -23
- package/app/api/servers/route.ts +46 -62
- package/app/api/tabular/query/route.ts +26 -0
- package/app/api/tabular/route.ts +63 -0
- package/app/api/upload-file/route.ts +38 -0
- package/app/api/uploads/[...slug]/route.ts +90 -0
- package/app/api/vector-stores/install/route.ts +5 -6
- package/app/api/vector-stores/status/route.ts +9 -7
- package/app/chat/page.tsx +4 -8
- package/app/data/page.tsx +15 -8
- package/app/globals.css +150 -22
- package/app/layout.tsx +19 -17
- package/app/page.tsx +3 -32
- package/app/settings/page.tsx +80 -0
- package/app/themes.css +38 -2
- package/archive/redesign-v2/app/configure/page.tsx +53 -0
- package/archive/redesign-v2/app/demo/page.tsx +15 -0
- package/archive/redesign-v2/app/server/page.tsx +22 -0
- package/archive/redesign-v2/app/simple/chat/page.tsx +17 -0
- package/archive/redesign-v2/app/simple/docs/page.tsx +21 -0
- package/archive/redesign-v2/app/simple/settings/page.tsx +1104 -0
- package/{app → archive/redesign-v2/app-routes}/server/page.tsx +2 -2
- package/archive/redesign-v2/app-routes/simple/settings/page.tsx +1104 -0
- package/archive/redesign-v2/components/app-sidebar.tsx +188 -0
- package/archive/redesign-v2/components/app-topnav.tsx +195 -0
- package/archive/redesign-v2/components/global-settings.tsx +288 -0
- package/archive/redesign-v2/components/simple/simple-sidebar.tsx +171 -0
- package/archive/redesign-v2/components/simple/simple-topnav.tsx +175 -0
- package/bin/larkup.js +28 -0
- package/components/analytics/analytics-dashboard.tsx +504 -0
- package/components/app-sidebar.tsx +46 -57
- package/components/app-topnav.tsx +64 -150
- package/components/chat/canvas/doc-editor-provider.tsx +343 -0
- package/components/chat/canvas/document-canvas.tsx +102 -0
- package/components/chat/canvas/document-field.tsx +171 -0
- package/components/chat/canvas/document-viewer.tsx +453 -0
- package/components/chat/canvas/file-attachment-button.tsx +88 -0
- package/components/chat/canvas/file-chip.tsx +151 -0
- package/components/chat/chat-settings-modal.tsx +253 -149
- package/components/chat/chat-workspace.tsx +961 -149
- package/components/chat/message-item.tsx +935 -71
- package/components/chat/tools/chat-card.tsx +116 -0
- package/components/chat/tools/chat-chart.tsx +548 -0
- package/components/chat/tools/chat-data-table.tsx +370 -0
- package/components/chat/tools/chat-grid.tsx +99 -0
- package/components/chat/tools/chat-media-preview.tsx +246 -0
- package/components/chat/tools/chat-metrics.tsx +76 -0
- package/components/chat/tools/chat-sandbox-result.tsx +175 -0
- package/components/chat/tools/chat-signature-request.tsx +809 -0
- package/components/chat/tools/chat-tabs.tsx +66 -0
- package/components/chat/tools/corpus-data-result.tsx +206 -0
- package/components/chat/tools/knowledge-base-result.tsx +135 -0
- package/components/chat/tools/visual-placement-modal.tsx +316 -0
- package/components/chat/tools/visualization-tabs.tsx +37 -0
- package/components/client-layout-wrapper.tsx +52 -124
- package/components/configure/configure-form.tsx +301 -530
- package/components/configure/custom-model-modal.tsx +205 -0
- package/components/configure/store-fields.tsx +4 -1
- package/components/data/corpus-panel.tsx +329 -137
- package/components/data/data-workspace.tsx +428 -185
- package/components/data/firecrawl-notice.tsx +94 -122
- package/components/data/integrations-panel.tsx +408 -0
- package/components/data/jobs-panel.tsx +83 -105
- package/components/data/media-panel.tsx +1701 -0
- package/components/data/notion-panel.tsx +372 -0
- package/components/data/paste-panel.tsx +4 -3
- package/components/data/scrape-panel.tsx +389 -343
- package/components/data/tabular-preview.tsx +228 -0
- package/components/data/upload-panel.tsx +500 -206
- package/components/demo/demo-workspace.tsx +50 -83
- package/components/global-settings.tsx +71 -108
- package/components/index/global-index-progress.tsx +46 -0
- package/components/index/index-action-dialog.tsx +545 -0
- package/components/index/index-workspace.tsx +138 -219
- package/components/onboarding/simple-setup.tsx +126 -180
- package/components/onboarding/welcome-screen.tsx +428 -157
- package/components/server/deploy-button.tsx +95 -1233
- package/components/server/deploy-sheet.tsx +1061 -0
- package/components/server/server-workspace.tsx +62 -95
- package/components/settings/appearance-section.tsx +300 -0
- package/components/settings/connections-section.tsx +471 -0
- package/components/settings/deploy-section.tsx +24 -0
- package/components/settings/deployment-section.tsx +430 -0
- package/components/settings/general-section.tsx +734 -0
- package/components/settings/marketplace-section.tsx +385 -0
- package/components/settings/marketplace-tools-settings.tsx +436 -0
- package/components/settings/models-section.tsx +810 -0
- package/components/settings/playground-section.tsx +17 -0
- package/components/settings/prompts-section.tsx +384 -0
- package/components/settings/server-section.tsx +808 -0
- package/components/settings/settings-layout.tsx +147 -0
- package/components/settings/storage-section.tsx +394 -0
- package/components/simple/sdk-connect-dialog.tsx +38 -33
- package/components/simple/simple-sidebar.tsx +69 -72
- package/components/simple/simple-topnav.tsx +154 -0
- package/components/theme-customizer-provider.tsx +56 -79
- package/components/theme-switcher.tsx +92 -114
- package/components/ui/button.tsx +11 -13
- package/components/ui/card.tsx +17 -17
- package/components/ui/checkbox.tsx +5 -5
- package/components/ui/dialog.tsx +1 -1
- package/components/ui/dropdown-menu.tsx +24 -38
- package/components/ui/input.tsx +2 -2
- package/components/ui/popover.tsx +21 -34
- package/components/ui/provider-icon.tsx +88 -17
- package/components/ui/select.tsx +44 -61
- package/components/ui/sheet.tsx +33 -46
- package/components/ui/slider.tsx +52 -0
- package/components/ui/sonner.tsx +23 -36
- package/components/ui/table.tsx +19 -19
- package/components/ui/tabs.tsx +17 -24
- package/components/ui/textarea.tsx +4 -4
- package/components/unified-sidebar.tsx +222 -0
- package/components/update-banner.tsx +203 -0
- package/components/workspace/server-form-dialog.tsx +7 -7
- package/components/workspace/server-switcher.tsx +15 -37
- package/hooks/use-notion-auth.ts +60 -0
- package/lib/chat-model-provider.ts +115 -0
- package/lib/deployments.ts +119 -0
- package/lib/env-utils.ts +27 -0
- package/lib/media-knowledge.ts +431 -0
- package/lib/os-concurrency.ts +37 -0
- package/lib/pdf-images.ts +80 -0
- package/lib/search-provider-verification.ts +95 -0
- package/next.config.mjs +19 -2
- package/package.json +37 -20
- package/parse_log.mjs +67 -0
- package/public/icons/Confluence.png +0 -0
- package/public/icons/Salesforce.png +0 -0
- package/public/icons/audio.png +0 -0
- package/public/icons/bing.png +0 -0
- package/public/icons/brave.png +0 -0
- package/public/icons/deepgram.png +0 -0
- package/public/icons/discord.png +0 -0
- package/public/icons/elevenlabs.png +0 -0
- package/public/icons/exa.png +0 -0
- package/public/icons/excel.png +0 -0
- package/public/icons/fal.png +0 -0
- package/public/icons/firecrawl.png +0 -0
- package/public/icons/google-calender.png +0 -0
- package/public/icons/google-drive.png +0 -0
- package/public/icons/google.png +0 -0
- package/public/icons/grok.png +0 -0
- package/public/icons/image.png +0 -0
- package/public/icons/jira.png +0 -0
- package/public/icons/linear.png +0 -0
- package/public/icons/markdown.png +0 -0
- package/public/icons/onedrive.png +0 -0
- package/public/icons/outlook.png +0 -0
- package/public/icons/pdf.png +0 -0
- package/public/icons/revai.png +0 -0
- package/public/icons/revai.svg +1 -0
- package/public/icons/sap.png +0 -0
- package/public/icons/serpapi.svg +34 -0
- package/public/icons/serper.png +0 -0
- package/public/icons/sharepoint.png +0 -0
- package/public/icons/slack.png +0 -0
- package/public/icons/tavily.png +0 -0
- package/public/icons/telegram.png +0 -0
- package/public/icons/video.png +0 -0
- package/public/icons/webhook.png +0 -0
- package/public/icons/whatsapp.png +0 -0
- package/public/icons/word.png +0 -0
- package/public/logo-light2.png +0 -0
- package/public/logo.png +0 -0
- package/public/notion-white.png +0 -0
- package/public/notion.png +0 -0
- package/store/chat-store.ts +19 -0
- package/store/scrape-store.ts +78 -0
- package/tsconfig.json +1 -1
- package/verify-models.mjs +133 -0
- package/.env +0 -2
- package/app/index-data/page.tsx +0 -15
- package/app/simple/settings/page.tsx +0 -627
- package/components/chat/knowledge-base-result.tsx +0 -97
- /package/{app → archive/redesign-v2/app-routes}/configure/page.tsx +0 -0
- /package/{app → archive/redesign-v2/app-routes}/demo/page.tsx +0 -0
- /package/{app → archive/redesign-v2/app-routes}/simple/chat/page.tsx +0 -0
- /package/{app → archive/redesign-v2/app-routes}/simple/docs/page.tsx +0 -0
- /package/{app → archive/redesign-v2/app-routes}/simple/layout.tsx +0 -0
|
@@ -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"))},104757,e=>{"use strict";var t=e.i(686296),r=e.i(367165);async function s(e){let s,n=(await (0,r.readConfig)()).serperApiKey;if(console.log({apiKey:n}),!n)return t.NextResponse.json({error:"Serper search is not configured. Set SERPER_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:a,page:o=1}=s;if(!a?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let i=Math.max(1,Math.min(o,10));try{let e=await fetch("https://google.serper.dev/search",{method:"POST",headers:{"X-API-KEY":n,"Content-Type":"application/json"},body:JSON.stringify({q:a.trim(),num:10,page:i}),cache:"no-store"}),r=await e.json();if(!e.ok||r.error){let s=r.error??`Serper API error (${e.status})`;return t.NextResponse.json({error:s},{status:e.status})}let s=(r.organic??[]).filter(e=>e.link).map(e=>({url:e.link,title:e.title??e.link,description:e.snippet})),o=s.length>=10&&i<10,l=(i-1)*10+s.length,u=r.searchInformation?.totalResults,p=null!=u?"string"==typeof u?parseInt(u,10)||l:u:l,c=null!=u?Math.min(Math.max(1,Math.ceil(Math.min(p,100)/10)),10):o?10:i;return t.NextResponse.json({items:s,totalResults:p,totalResultsIsEstimate:null==u,currentPage:i,totalPages:c,hasMore:o,query:a.trim()})}catch(r){let e=r instanceof Error?r.message:"Serper search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,r.readConfig)()).serperApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,s,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0d7p0xo._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[912714,(t,e,a)=>{e.exports=t.x("node:fs/promises",()=>require("node:fs/promises"))},406943,(t,e,a)=>{e.exports=t.x("@lancedb/lancedb-4527f12050dd5a79",()=>require("@lancedb/lancedb-4527f12050dd5a79"))},46465,t=>{"use strict";var e=t.i(750227),a=t.i(912714),i=t.i(406943);t.s(["LanceDBAdapter",0,class{config;conn;table;tableName;constructor(t){this.config=t,this.conn=null,this.table=null,this.tableName=t.tableName?.trim()||"documents"}async connect(){if(this.conn)return this.conn;if("cloud"===this.config.mode){if(!this.config.uri||!this.config.apiKey)throw Error("LanceDB Cloud requires both a URI and an API key.");if(!this.config.uri.startsWith("db://"))throw Error("LanceDB Cloud URI must start with 'db://' (e.g. db://my-database).");this.conn=await i.connect(this.config.uri,{apiKey:this.config.apiKey})}else if("s3"===this.config.mode){if(!this.config.s3Uri||!this.config.s3AccessKeyId||!this.config.s3SecretAccessKey)throw Error("S3-compatible LanceDB requires a URI, access key ID, and secret access key.");if(!this.config.s3Uri.startsWith("s3://"))throw Error("S3-compatible LanceDB URI must start with 's3://' (e.g. s3://my-bucket/lancedb).");this.conn=await i.connect(this.config.s3Uri,{storageOptions:{aws_access_key_id:this.config.s3AccessKeyId,aws_secret_access_key:this.config.s3SecretAccessKey,...this.config.s3Endpoint?{aws_endpoint:this.config.s3Endpoint}:{},...this.config.s3Region?{aws_region:this.config.s3Region}:{}}})}else{let t=this.config.dbPath?.trim()||"./.larkup/lancedb",s=e.default.isAbsolute(t)?t:e.default.join(process.cwd(),t);try{await a.default.mkdir(s,{recursive:!0})}catch(i){if(e.default.isAbsolute(t)){let i="."+t;s=e.default.join(process.cwd(),i);try{await a.default.mkdir(s,{recursive:!0})}catch(t){throw Error(`Could not create directory for LanceDB at "${s}": ${t.message}`)}}else throw Error(`Could not create directory for LanceDB at "${s}": ${i.message}`)}this.conn=await i.connect(s)}return this.conn}async init(){let t=await this.connect();(await t.tableNames()).includes(this.tableName)&&(this.table=await t.openTable(this.tableName))}async reset(){let t=await this.connect();(await t.tableNames()).includes(this.tableName)&&await t.dropTable(this.tableName),this.table=null}async deleteByDocumentIds(t){if(0===t.length||!this.table&&(await this.init(),!this.table))return;let e=t.map(t=>`'${t}'`).join(", ");await this.table.delete(`documentId IN (${e})`)}toRow(t){return{id:t.id,vector:t.vector,text:t.text,title:t.title,url:t.url??"",source:t.source,documentId:t.documentId,chunkIndex:t.chunkIndex,metadata:t.metadata?JSON.stringify(t.metadata):void 0}}async upsert(t){if(0===t.length)return;let e=await this.connect(),a=t.map(t=>this.toRow(t));this.table?await this.table.add(a):(await e.tableNames()).includes(this.tableName)?(this.table=await e.openTable(this.tableName),await this.table.add(a)):this.table=await e.createTable(this.tableName,a)}async count(){if(!this.table&&(await this.init(),!this.table))return 0;try{return await this.table.countRows()}catch{return null}}async query(t,e){return this.table||(await this.init(),this.table)?(await this.table.search(t).limit(e).toArray()).map(t=>({id:t.id,score:"number"==typeof t._distance?1/(1+t._distance):0,text:t.text,title:t.title,url:t.url||void 0,documentId:t.documentId,metadata:"string"==typeof t.metadata?JSON.parse(t.metadata):void 0})):[]}async testConnection(t){let e;if("cloud"!==this.config.mode)try{await this.connect();return}catch(e){let t="s3"===this.config.mode?"S3-compatible LanceDB":"local LanceDB";throw Error(`Failed to connect to ${t}: ${e.message}`)}try{e=await this.connect()}catch(t){throw Error(`Failed to connect to LanceDB Cloud: ${t.message}`)}try{await e.tableNames()}catch(e){let t=e.message??"";if(t.includes("401")||t.includes("Unauthorized")||t.includes("403")||t.includes("Forbidden"))throw Error("Invalid LanceDB Cloud API key. Please check your credentials in the LanceDB Cloud dashboard.");if(t.includes("404")||t.includes("Not Found"))throw Error('LanceDB Cloud database not found. Please verify your URI (e.g. "db://my-database").');throw Error(`Failed to reach LanceDB Cloud: ${t}`)}}}])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0e_itje._.js.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
module.exports=[750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,r)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=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: ''. 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 c=r.default.join(process.cwd(),".larkup"),l=r.default.join(c,"servers"),u=r.default.join(c,"workspace.json"),d={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function f(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function h(e){return await A(),f(async()=>e(await S()??d))}function g(e){return r.default.join(l,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,a){if(await w(e)){await t.promises.mkdir(r.default.dirname(a),{recursive:!0});try{await t.promises.rename(e,a)}catch{await t.promises.cp(e,a,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function S(){try{let e=await t.promises.readFile(u,"utf8");return{...d,...JSON.parse(e)}}catch{return null}}async function b(e){return await t.promises.mkdir(c,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function A(){let e=await S();return e||f(O)}async function O(){let e=await S();if(e)return e;if(!await w(r.default.join(c,"config.json")))return b(d);let n=(0,a.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 v(r.default.join(c,e),r.default.join(i,e));await v(r.default.join(c,"lancedb"),r.default.join(i,"lancedb")),await v(r.default.join(c,"generated-server"),r.default.join(i,"generated-server"));let o="Default server";try{let e=r.default.join(i,"config.json"),a=JSON.parse(await t.promises.readFile(e,"utf8"));a.projectName&&(o=a.projectName),"lancedb"===a.vectorStore&&(a.storeConfig?.mode??"local")==="local"&&(a.storeConfig={...a.storeConfig,dbPath:y(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(a,null,2),"utf8")}catch{}let s=new Date().toISOString(),l={id:n,name:o,port:8080,createdAt:s,updatedAt:s};return b({username:null,activeServerId:n,servers:[l],mode:null})}async function k(){let e=await A(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function T(){let e=await k();if(!e)return null;let r=g(e.id);return await t.promises.mkdir(r,{recursive:!0}),r}async function x(){let e=await T();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:r}=await M("My RAG server");return g(r.id)}async function I(e){return new Promise(t=>{let r=i.default.createServer();r.once("error",()=>t(!1)),r.once("listening",()=>{r.close(()=>t(!0))}),r.listen(e,"127.0.0.1")})}async function D(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await I(t);)t++;return t}function M(e){return h(async n=>{let i=(0,a.randomUUID)(),s=new Date().toISOString(),c={id:i,name:e.trim()||"Untitled server",port:await D(n),createdAt:s,updatedAt:s},l=g(i);await t.promises.mkdir(l,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(r.default.join(g(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(r.default.join(l,"config.json"),JSON.stringify(function(e,t,r={}){return{...o,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:y(e,"lancedb")},embeddingApiKey:r.embeddingApiKey??o.embeddingApiKey,customEmbeddings:r.customEmbeddings??o.customEmbeddings,chatApiKey:r.chatApiKey??o.chatApiKey,customChatModels:r.customChatModels??o.customChatModels,serperApiKey:r.serperApiKey??o.serperApiKey,firecrawlApiKey:r.firecrawlApiKey??o.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,c.name,u),null,2),"utf8");let d={...n,servers:[...n.servers,c],activeServerId:i};return await b(d),{workspace:d,server:c}})}e.s(["createServer",0,M,"deleteServer",0,function(e){return h(async r=>{let a=r.servers.filter(t=>t.id!==e),n=r.activeServerId===e?a[0]?.id??null:r.activeServerId;return await t.promises.rm(g(e),{recursive:!0,force:!0}),b({...r,servers:a,activeServerId:n})})},"getActiveServer",0,k,"getDataDir",0,T,"getWorkspace",0,A,"renameServer",0,function(e,t){return h(async r=>{let a=r.servers.map(r=>r.id===e?{...r,name:t.trim()||r.name,updatedAt:new Date().toISOString()}:r);return b({...r,servers:a})})},"requireDataDir",0,x,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return h(async t=>t.servers.some(t=>t.id===e)?b({...t,activeServerId:e}):t)},"setMode",0,function(e){return h(async t=>b({...t,mode:e}))},"setUsername",0,function(e){return h(async t=>b({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return a.DEFAULT_CONFIG;try{let n=await t.promises.readFile(r.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),o=i.customEmbeddings,s=i.embeddingModelId;if(i.customEmbedding&&!o?.length){let e=i.customEmbedding;o=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let c={...a.DEFAULT_CONFIG,...i,embeddingModelId:s??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:o,chunking:{...a.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete c.customEmbedding,c}catch{return a.DEFAULT_CONFIG}}async function o(e){let a=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,o])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},310470,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={},c={VercelOidcTokenError:()=>u};for(var l in c)a(s,l,{get:c[l],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))o.call(e,s)||void 0===s||a(e,s,{get:()=>t[s],enumerable:!(r=n(t,s))||r.enumerable});return e})(a({},"__esModule",{value:!0}),s);class u extends Error{constructor(e,t){super(e),this.name="VercelOidcTokenError",this.cause=t}toString(){return this.cause?`${this.name}: ${this.message}: ${this.cause}`:`${this.name}: ${this.message}`}}},33015,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={},c={AccessTokenMissingError:()=>u,RefreshAccessTokenFailedError:()=>d};for(var l in c)a(s,l,{get:c[l],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))o.call(e,s)||void 0===s||a(e,s,{get:()=>t[s],enumerable:!(r=n(t,s))||r.enumerable});return e})(a({},"__esModule",{value:!0}),s);class u extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login)."),this.name="AccessTokenMissingError"}}class d extends Error{constructor(e){super("Failed to refresh authentication token.",{cause:e}),this.name="RefreshAccessTokenFailedError"}}},250216,(e,t,r)=>{"use strict";var a=Object.create,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))c.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=i(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},l(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={findRootDir:()=>w,getUserDataDir:()=>v};for(var m in p)n(d,m,{get:p[m],enumerable:!0});t.exports=l(n({},"__esModule",{value:!0}),d);var f=u(e.r(814747)),h=u(e.r(522734)),g=u(e.r(446786)),y=e.r(310470);function w(){try{let e=process.cwd();for(;e!==f.default.dirname(e);){let t=f.default.join(e,".vercel");if(h.default.existsSync(t))return e;e=f.default.dirname(e)}}catch(e){throw new y.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function v(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(g.default.platform()){case"darwin":return f.default.join(g.default.homedir(),"Library/Application Support");case"linux":return f.default.join(g.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}},775427,(e,t,r)=>{"use strict";var a=Object.create,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))c.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=i(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},l(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={isValidAccessToken:()=>S,readAuthConfig:()=>w,writeAuthConfig:()=>v};for(var m in p)n(d,m,{get:p[m],enumerable:!0});t.exports=l(n({},"__esModule",{value:!0}),d);var f=u(e.r(522734)),h=u(e.r(814747)),g=e.r(65048);function y(){let e=(0,g.getVercelDataDir)();if(!e)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return h.join(e,"auth.json")}function w(){try{let e=y();if(!f.existsSync(e))return null;let t=f.readFileSync(e,"utf8");if(!t)return null;return JSON.parse(t)}catch(e){return null}}function v(e){let t=y(),r=h.dirname(t);f.existsSync(r)||f.mkdirSync(r,{mode:504,recursive:!0}),f.writeFileSync(t,JSON.stringify(e,null,2),{mode:384})}function S(e,t=0){if(!e.token)return!1;if("number"!=typeof e.expiresAt)return!0;let r=Math.floor(Date.now()/1e3);return e.expiresAt>=r+t/1e3}},371746,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={},c={processTokenResponse:()=>h,refreshTokenRequest:()=>f};for(var l in c)a(s,l,{get:c[l],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))o.call(e,s)||void 0===s||a(e,s,{get:()=>t[s],enumerable:!(r=n(t,s))||r.enumerable});return e})(a({},"__esModule",{value:!0}),s);var u=e.r(446786);let d=`@vercel/oidc node-${process.version} ${(0,u.platform)()} (${(0,u.arch)()}) ${(0,u.hostname)()}`,p=null;async function m(){if(p)return p;let e=await fetch("https://vercel.com/.well-known/openid-configuration",{headers:{"user-agent":d}});if(!e.ok)throw Error("Failed to discover OAuth endpoints");let t=await e.json();if(!t||"string"!=typeof t.token_endpoint)throw Error("Invalid OAuth discovery response");let r=t.token_endpoint;return p=r,r}async function f(e){let t=await m();return await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":d},body:new URLSearchParams({client_id:"cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",grant_type:"refresh_token",...e})})}async function h(e){let t=await e.json();return e.ok?"object"!=typeof t||null===t?[Error("Invalid token response")]:"string"!=typeof t.access_token?[Error("Missing access_token in response")]:"Bearer"!==t.token_type?[Error("Invalid token_type in response")]:"number"!=typeof t.expires_in?[Error("Missing expires_in in response")]:[null,t]:[Error("object"==typeof t&&t&&"error"in t?String(t.error):"Token refresh failed")]}},65048,(e,t,r)=>{"use strict";var a=Object.create,n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))c.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=i(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},l(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={assertVercelOidcTokenResponse:()=>k,findProjectInfo:()=>T,getTokenPayload:()=>D,getVercelDataDir:()=>b,getVercelOidcToken:()=>O,getVercelToken:()=>A,isExpired:()=>M,loadToken:()=>I,saveToken:()=>x};for(var m in p)n(d,m,{get:p[m],enumerable:!0});t.exports=l(n({},"__esModule",{value:!0}),d);var f=u(e.r(814747)),h=u(e.r(522734)),g=e.r(310470),y=e.r(250216),w=e.r(775427),v=e.r(371746),S=e.r(33015);function b(){let e=(0,y.getUserDataDir)();return e?f.join(e,"com.vercel.cli"):null}async function A(e){let t=(0,w.readAuthConfig)();if(!t?.token)throw new S.AccessTokenMissingError;if((0,w.isValidAccessToken)(t,e?.expirationBufferMs))return t.token;if(!t.refreshToken)throw(0,w.writeAuthConfig)({}),new S.RefreshAccessTokenFailedError("No refresh token available");try{let e=await (0,v.refreshTokenRequest)({refresh_token:t.refreshToken}),[r,a]=await (0,v.processTokenResponse)(e);if(r||!a)throw(0,w.writeAuthConfig)({}),new S.RefreshAccessTokenFailedError(r);let n={token:a.access_token,expiresAt:Math.floor(Date.now()/1e3)+a.expires_in};return a.refresh_token&&(n.refreshToken=a.refresh_token),(0,w.writeAuthConfig)(n),n.token}catch(e){if((0,w.writeAuthConfig)({}),e instanceof S.AccessTokenMissingError||e instanceof S.RefreshAccessTokenFailedError)throw e;throw new S.RefreshAccessTokenFailedError(e)}}async function O(e,t,r){let a=`https://api.vercel.com/v1/projects/${t}/token?source=vercel-oidc-refresh${r?`&teamId=${r}`:""}`,n=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!n.ok)throw new g.VercelOidcTokenError(`Failed to refresh OIDC token: ${n.statusText}`);let i=await n.json();return k(i),i}function k(e){if(!e||"object"!=typeof e)throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in e)||"string"!=typeof e.token)throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function T(){let e=(0,y.findRootDir)();if(!e)throw new g.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let t=f.join(e,".vercel","project.json");if(!h.existsSync(t))throw new g.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let r=JSON.parse(h.readFileSync(t,"utf8"));if("string"!=typeof r.projectId&&"string"!=typeof r.orgId)throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:r.projectId,teamId:r.orgId}}function x(e,t){let r=(0,y.getUserDataDir)();if(!r)throw new g.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let a=f.join(r,"com.vercel.token",`${t}.json`),n=JSON.stringify(e);h.mkdirSync(f.dirname(a),{mode:504,recursive:!0}),h.writeFileSync(a,n),h.chmodSync(a,432)}function I(e){let t=(0,y.getUserDataDir)();if(!t)throw new g.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let r=f.join(t,"com.vercel.token",`${e}.json`);if(!h.existsSync(r))return null;let a=JSON.parse(h.readFileSync(r,"utf8"));return k(a),a}function D(e){let t=e.split(".");if(3!==t.length)throw new g.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let r=t[1].replace(/-/g,"+").replace(/_/g,"/"),a=r.padEnd(r.length+(4-r.length%4)%4,"=");return JSON.parse(Buffer.from(a,"base64").toString("utf8"))}function M(e,t=0){return 1e3*e.exp<Date.now()+t}},705252,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(666680),n=e.i(192441);let i=Promise.resolve();function o(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function s(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?r.default.join(t,"documents.json"):null}async function c(){let e=await s(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8"),a=JSON.parse(r);if(!Array.isArray(a))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return a}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function l(e){let n=await s(!0);if(!n)return;let i=r.default.join(r.default.dirname(n),`.${r.default.basename(n)}.${process.pid}.${(0,a.randomUUID)()}.tmp`);try{await t.promises.writeFile(i,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(i,n)}catch(e){throw await t.promises.unlink(i).catch(()=>{}),e}}function u(e){let t=e.content.trim();return{id:e.id??(0,a.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function d(){let e=await c(),t=e.reduce((e,t)=>e+t.charCount,0);return{docCount:e.length,charCount:t,bySource:e.reduce((e,t)=>(e[t.source]=(e[t.source]??0)+1,e),{})}}e.s(["addCrawledDocuments",0,function(e,t){return o(async()=>{let r=await c(),a=new Set(r.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&a.has(i.url))&&i.content.trim()&&(r.push(u({...i,jobId:e})),i.url&&a.add(i.url),n++);return n>0&&await l(r),n})},"addDocument",0,function(e){return o(async()=>{let t=await c(),r=u(e);return t.push(r),await l(t),r})},"addDocuments",0,function(e){return o(async()=>{if(0===e.length)return[];let t=await c(),r=e.map(u);return t.push(...r),await l(t),r})},"clearDocuments",0,function(){return o(async()=>{await l([])})},"corpusStats",0,d,"deleteDocument",0,function(e){return o(async()=>{let t=await c();await l(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return o(async()=>{let t=await c(),r=new Set(e);await l(t.filter(e=>!r.has(e.id)))})},"readDocuments",0,c,"replaceDocuments",0,function(e){return o(async()=>{let t=new Date().toISOString();await l(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return o(async()=>{let r=await c(),a=r.findIndex(t=>t.id===e);if(a<0)return;let n=r[a],i=void 0!==t.content?t.content.trim():n.content,o={...n,title:void 0!==t.title?t.title.trim()||"Untitled":n.title,content:i,charCount:i.length,url:void 0!==t.url?t.url||void 0:n.url,metadata:void 0!==t.metadata?t.metadata:n.metadata,status:"unindexed"};return r[a]=o,await l(r),o})},"updateDocumentsStatus",0,function(e,t){return o(async()=>{let r=await c(),a=new Set(e),n=!1;for(let e of r)a.has(e.id)&&(e.status=t,n=!0);n&&await l(r)})}])},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},839554,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(666680),n=e.i(192441);let i=Promise.resolve();function o(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function s(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?r.default.join(t,"media-assets.json"):null}async function c(){let e=await s(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8"),a=JSON.parse(r);if(!Array.isArray(a))throw Error(`Invalid media asset store at ${e}: expected a JSON array.`);return a}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function l(e){let n=await s(!0);if(!n)return;let i=r.default.join(r.default.dirname(n),`.${r.default.basename(n)}.${process.pid}.${(0,a.randomUUID)()}.tmp`);try{await t.promises.writeFile(i,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(i,n)}catch(e){throw await t.promises.unlink(i).catch(()=>{}),e}}let u=["download","extract","transcribe","vision","synthesize","index"],d={download:10,extract:15,transcribe:25,vision:30,synthesize:5,index:15};function p(e){return u.map(t=>({stage:t,status:"waiting",updatedAt:e}))}function m(e){return void 0!==e&&Number.isFinite(e)?Math.max(0,e):void 0}function f(e){let t=m(e);return void 0===t?void 0:Math.min(100,t)}function h(e){return Math.floor(m(e.processingRevision)??0)+1}async function g(){let e=await c(),t={image:0,video:0,audio:0},r={pending:0,processing:0,completed:0,failed:0},a=0;for(let n of e)t[n.type]++,r[n.processingStatus]++,a+=n.fileSize;return{total:e.length,byType:t,byStatus:r,totalBytes:a}}async function y(e){return(await c()).find(t=>t.id===e)}e.s(["addMediaAssets",0,function(e){return o(async()=>{let t=await c(),r=new Date().toISOString(),n=e.map(e=>({id:(0,a.randomUUID)(),type:e.type,fileName:e.fileName,mimeType:e.mimeType,storageUri:e.storageUri,thumbnailUri:e.thumbnailUri,originalUrl:e.originalUrl,fileSize:e.fileSize,dimensions:e.dimensions,durationSecs:e.durationSecs,processingStatus:"pending",processingRevision:0,documentIds:[],createdAt:r,updatedAt:r}));return t.push(...n),await l(t),n})},"claimMediaAsset",0,function(e){return o(async()=>{let t=await c(),r=t.findIndex(t=>t.id===e);if(r<0||"processing"===t[r].processingStatus||"Queued for background processing..."===t[r].processingMessage)return;let a=new Date().toISOString();return t[r]={...t[r],processingStatus:"pending",processingError:void 0,processingMessage:"Queued for background processing...",processingProgress:1,processingSteps:p(a),processingRevision:h(t[r]),processingHeartbeatAt:a,updatedAt:a},await l(t),t[r]})},"deleteMediaAsset",0,function(e){return o(async()=>{let t=await c();await l(t.filter(t=>t.id!==e))})},"deleteMediaAssets",0,function(e){return o(async()=>{let t=await c(),r=new Set(e);await l(t.filter(e=>!r.has(e.id)))})},"getMediaAsset",0,y,"mediaStats",0,g,"readMediaAssets",0,c,"recoverStaleMediaAssets",0,function(e=3e5){return o(async()=>{let t=await c(),r=Date.now()-e,a="The background worker stopped. Retry to resume media processing.",n=0;for(let e=0;e<t.length;e++){let i=t[e],o="processing"===i.processingStatus,s="pending"===i.processingStatus&&"Queued for background processing..."===i.processingMessage,c=i.processingHeartbeatAt??i.updatedAt;if((o||s)&&new Date(c).getTime()<r){let r=new Date().toISOString(),o=i.processingSteps?.map(e=>"running"===e.status?{...e,status:"failed",message:a,updatedAt:r,finishedAt:r}:e);t[e]={...i,processingStatus:"failed",processingError:a,processingMessage:void 0,processingProgress:void 0,processingSteps:o,processingRevision:h(i),processingHeartbeatAt:r,updatedAt:r},n++}}return n>0&&await l(t),n})},"updateMediaAsset",0,function(e,t){return o(async()=>{let r=await c(),a=r.findIndex(t=>t.id===e);if(a<0)return;let n=r[a];return r[a]={...n,...t,documentIds:t.documentIds??n.documentIds,pendingDocumentIds:t.pendingDocumentIds??n.pendingDocumentIds,supersededDocumentIds:t.supersededDocumentIds??n.supersededDocumentIds,updatedAt:new Date().toISOString()},await l(r),r[a]})},"updateMediaStage",0,function(e,t,r){return o(async()=>{let a,n,i=await c(),o=i.findIndex(t=>t.id===e);if(o<0)return;let s=new Date().toISOString(),u=i[o],g=new Map((u.processingSteps??[]).map(e=>[e.stage,e])),y=p(s).map(e=>g.get(e.stage)??e),w=y.findIndex(e=>e.stage===t),v=y[w],S=new Set(["completed","skipped","failed"]),b=r.status??v.status,A=S.has(v.status)||"running"===v.status&&"waiting"===b?v.status:b,O=f(v.percent),k=f(r.percent),T=void 0===k?O:Math.max(O??0,k),x=m(v.current),I=m(r.current),D=void 0===I?x:Math.max(x??0,I),M=void 0===r.total?m(v.total):m(r.total);void 0!==D&&void 0!==M&&(M=Math.max(M,D))>0&&(T=Math.max(T??0,Math.min(100,D/M*100))),"completed"===A&&(T=100,void 0!==M&&(D=M));let E=S.has(A),C={...v,...r,stage:t,status:A,percent:T,current:D,total:M,startedAt:r.startedAt??v.startedAt??("running"===A||E?s:void 0),updatedAt:s,finishedAt:E?r.finishedAt??v.finishedAt??s:void 0};y[w]=C;let j=Math.max(f(u.processingProgress)??0,0===(n=(a=y.filter(e=>"skipped"!==e.status)).reduce((e,t)=>e+d[t.stage],0))?100:Math.round(a.reduce((e,t)=>e+d[t.stage]*function(e){if("completed"===e.status)return 100;if("waiting"===e.status||"skipped"===e.status)return 0;let t=f(e.percent);return void 0!==t?t:void 0!==e.current&&void 0!==e.total&&Number.isFinite(e.current)&&Number.isFinite(e.total)&&e.total>0?Math.min(100,Math.max(0,e.current/e.total*100)):0}(t)/100,0)/n*100)),_=[...y].reverse().find(e=>"running"===e.status&&e.message)?.message,P="running"===C.status?C.message??r.message??u.processingMessage:_??r.message??C.message??u.processingMessage;return i[o]={...u,processingSteps:y,processingProgress:j,processingMessage:P,processingRevision:h(u),processingHeartbeatAt:s,updatedAt:s},await l(i),i[o]})}])},941486,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(192441);class n{id="local";name="Local Storage";async mediaDir(){let e=await (0,a.requireDataDir)(),n=r.default.join(e,"media");return await t.promises.mkdir(n,{recursive:!0}),n}async store(e,a,n){let i=await this.mediaDir(),o=r.default.join(i,e);return await t.promises.mkdir(r.default.dirname(o),{recursive:!0}),await t.promises.writeFile(o,a),`local://${e}`}async storeFile(e,a,n){let i=await this.mediaDir(),o=r.default.join(i,e);return await t.promises.mkdir(r.default.dirname(o),{recursive:!0}),await t.promises.copyFile(a,o),`local://${e}`}async retrieve(e){let r=await this.resolvePath(e);if(!r)throw Error(`Unsupported local storage URI: ${e}`);return t.promises.readFile(r)}async resolvePath(e){if(!e.startsWith("local://"))return;let t=e.slice(8),a=await this.mediaDir(),n=r.default.resolve(a,t),i=r.default.relative(a,n);if(i.startsWith("..")||r.default.isAbsolute(i))throw Error("Invalid local storage URI");return n}async delete(e){let a=e.replace("local://",""),n=await this.mediaDir();try{await t.promises.unlink(r.default.join(n,a))}catch{}}async stats(){try{let e=await this.mediaDir();return await i(e)}catch{return{usedBytes:0,fileCount:0}}}}async function i(e){let a=0,n=0;async function i(e){let o;try{o=await t.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let s of o){let o=r.default.join(e,s.name);if(s.isDirectory())await i(o);else try{let e=await t.promises.stat(o);a+=e.size,n++}catch{}}}return await i(e),{usedBytes:a,fileCount:n}}e.s(["createStorageProvider",0,function(e){return new n}])},844915,e=>{"use strict";var t=e.i(891294);async function r(){return t.ALL_MODELS}async function a(e){return(await r()).filter(t=>t.type===e)}async function n(e){let t=await r(),a=e?t.filter(t=>t.type===e):t,n=new Map;for(let e of a)n.set(e.owned_by,(n.get(e.owned_by)??0)+1);return Array.from(n.entries()).map(([e,t])=>({id:e,name:i[e]||e.charAt(0).toUpperCase()+e.slice(1),modelCount:t})).sort((e,t)=>t.modelCount-e.modelCount)}let i={openai:"OpenAI",anthropic:"Anthropic",google:"Google",meta:"Meta",mistral:"Mistral",cohere:"Cohere",deepseek:"DeepSeek",amazon:"Amazon",xai:"xAI",perplexity:"Perplexity",alibaba:"Alibaba",groq:"Groq","together-ai":"Together AI",fireworks:"Fireworks",cerebras:"Cerebras",voyage:"Voyage AI",jina:"Jina AI",nomic:"Nomic",bfl:"Black Forest Labs","arcee-ai":"Arcee AI",luma:"Luma",minimax:"MiniMax",elevenlabs:"ElevenLabs"};e.s(["getAllModels",0,r,"getAllProviders",0,n,"getModelsByType",0,a])},336321,e=>{"use strict";function t(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())}e.s(["getChatModel",0,function(e,t){return e.find(e=>e.id===t)},"getChatModelsForProvider",0,t,"getDefaultChatModel",0,function(e,r){let a=t(e,r),n={openai:"openai/gpt-5",anthropic:"anthropic/claude-3.5-sonnet-latest",google:"google/gemini-2.5-pro",mistral:"mistral/mistral-large-latest",deepseek:"deepseek/deepseek-chat",cohere:"cohere/command-r-plus",meta:"meta/llama-4-maverick",xai:"xai/grok-3-mini",vercel_ai_gateway:"anthropic/claude-3.5-sonnet-latest"}[r];return a.find(e=>e.id===n)??a[0]},"toChatDescriptor",0,function(e){return{id:e.id,name:e.name,provider:e.owned_by,context_window:e.context_window,max_tokens:e.max_tokens,tags:e.tags,description:e.description}}])},675101,e=>{"use strict";var t=e.i(613424),r=e.i(528565),a=e.i(129286),n=e.i(354748),i=e.i(150036),o=e.i(380766),s=e.i(898201),c=e.i(188184),l=e.i(336321);let u={openai:"openai/gpt-4o-mini",anthropic:"anthropic/claude-3-5-sonnet-latest",google:"google/gemini-2.5-flash",cohere:"cohere/command-r-plus",mistral:"mistral/mistral-large-latest",deepseek:"deepseek/deepseek-chat"};e.s(["createChatModel",0,function(e,l,u,d=[]){if(l.startsWith("custom:")){let e=l.slice(7),t=d.find(t=>t.modelName===e);if(!t)throw Error(`Custom chat model "${e}" is not configured.`);return(0,c.createOpenAICompatible)({name:"custom_chat_provider",baseURL:t.baseUrl,apiKey:t.apiKey||u||void 0})(t.modelName)}let p=l.includes("/")?l.split("/").slice(1).join("/"):l;switch(e){case"google":return(0,i.createGoogleGenerativeAI)({apiKey:u})(p);case"cohere":return(0,r.createCohere)({apiKey:u})(p);case"mistral":return(0,o.createMistral)({apiKey:u})(p);case"deepseek":return(0,a.createDeepSeek)({apiKey:u})(p);case"anthropic":return(0,t.createAnthropic)({apiKey:u})(p);case"openai":return(0,s.createOpenAI)({apiKey:u})(p);case"vercel_ai_gateway":return(0,n.createGateway)({apiKey:u})(l);case"custom":throw Error("Choose a configured custom chat model before processing media.");default:throw Error(`Unsupported chat provider "${e}".`)}},"resolveConfiguredChatModel",0,function(e,t=[],r={}){let a=e.chatProvider||e.embeddingProvider||"openai",n=e.chatModelId?.trim();if(!n&&"custom"===a&&e.customChatModels?.[0]&&(n=`custom:${e.customChatModels[0].modelName}`),!n&&t.length>0){let e=r.requiredTag,i=e?t.filter(t=>t.tags?.includes(e)):t,o=i.length>0?i:t;n=(0,l.getDefaultChatModel)(o.map(l.toChatDescriptor),a)?.id}if(!n&&"vercel_ai_gateway"===a)throw Error("No gateway model is available. Choose a chat model before processing media.");return n||=u[a]||u.openai,{provider:a,modelId:n,apiKey:e.chatApiKey||e.embeddingApiKey||void 0}}])},504740,e=>{"use strict";var t=e.i(463857);let r=new Map;async function a(e){if(r.has(e))return r.get(e);let a=await (0,t.getInstalledTool)(e);if(!a)return null;try{let t=function(e){switch(e.source){case"local":default:return e.packageName;case"registry":case"sandbox":return e.resolvedPath}}(a),n=await import(t);return r.set(e,n),n}catch(t){return console.error(`[marketplace] Failed to load tool "${e}":`,t),null}}e.s(["loadTool",0,a])},534404,e=>{"use strict";var t=e.i(506848),r=e.i(844915),a=e.i(675101);async function n(e){var t,n,i,u,d,p,m,f,h,g,y;let w=function(e){let t=[],r=[],a=0;for(let n of e){let e=s(n.text,14e3);for(let i=0;i<e.length;i++){let o={...n,text:1===e.length?e[i]:`${e[i]}
|
|
58
|
+
[Continuation ${i+1} of ${e.length} for this timestamp range]`};r.length>0&&a+o.text.length>14e3&&(t.push(r),r=[],a=0),r.push(o),a+=o.text.length}}return r.length>0&&t.push(r),t}(e.segments),v=await (0,r.getModelsByType)("language"),S=(0,a.resolveConfiguredChatModel)(e.config,v),b=(0,a.createChatModel)(S.provider,S.modelId,S.apiKey,e.config.customChatModels),A=[],O=0;for(let r=0;r<w.length;r++){await e.onProgress?.(O,w.length+1,`Reviewing evidence section ${r+1} of ${w.length}...`);let a=(t=e,n=w[r],i=r,u=w.length,`You are carefully watching section ${i+1} of ${u} from a ${t.mediaType} titled "${t.title}".
|
|
59
|
+
|
|
60
|
+
Write compact factual viewing notes that remain useful for later questions. CRITICAL: Every single factual claim, event, score change, or action MUST be prefixed with its exact [HH:MM:SS-HH:MM:SS] timestamp copied strictly from the evidence chunks below. Do not hallucinate timestamps. Preserve exact names, numbers, scores, decisions, winners, results, actions, and timestamps. Connect pronouns and repeated entities when the evidence supports it. Treat later chronological scoreboard/result frames as newer than earlier animation states. For Arabic or other right-to-left text, copy the visible spelling and do not reverse labels. If evidence conflicts or OCR is genuinely ambiguous, record the conflict instead of inventing certainty. Do not add repetitive statements about facts that were not present.
|
|
61
|
+
|
|
62
|
+
Evidence:
|
|
63
|
+
${n.map(c).join("\n\n")}`),o=await l(b,a,S,e.mediaType);A.push(o),O++,await e.onProgress?.(O,Math.max(O+1,w.length+1),`Reviewed evidence section ${r+1} of ${w.length}.`)}let k=A,T=0;for(;k.join("\n\n").length>32e3;){T++;let t=function(e){let t=[],r=[],a=0;for(let n of e.flatMap(e=>s(e,14e3)))r.length>0&&a+n.length>14e3&&(t.push(r),r=[],a=0),r.push(n),a+=n.length;return r.length>0&&t.push(r),t}(k),r=[];for(let a=0;a<t.length;a++){let n=O+(t.length-a)+1;await e.onProgress?.(O,n,`Connecting note group ${a+1} of ${t.length}...`),r.push(await l(b,(d=e,p=t[a],m=T,f=a,h=t.length,`Consolidate chronological viewing notes for ${d.mediaType} "${d.title}".
|
|
64
|
+
This is reduction level ${m}, group ${f+1} of ${h}. Preserve exact people, names, numbers, scores, outcomes, decisions, anomalies, and timestamps.
|
|
65
|
+
CRITICAL: You MUST carry over and preserve the exact [HH:MM:SS-HH:MM:SS] timestamps for every event or claim. Keep later chronological states distinct from earlier states and retain genuine uncertainty. Do not mention this reduction process.
|
|
66
|
+
|
|
67
|
+
Notes:
|
|
68
|
+
${p.map((e,t)=>`## Note ${t+1}
|
|
69
|
+
${e}`).join("\n\n")}`),S,e.mediaType)),O++}k=r}await e.onProgress?.(O,O+1,"Connecting people, events, decisions, and outcomes...");let x=(g=e,y=k,`Act as a human who watched the complete ${o(g.durationSecs)} ${g.mediaType} "${g.title}" and consolidated notes while watching.
|
|
70
|
+
|
|
71
|
+
Create a concise, standalone knowledge-base summary with these headings when applicable:
|
|
72
|
+
- Overview / content type
|
|
73
|
+
- People and entities
|
|
74
|
+
- Key events in chronological order
|
|
75
|
+
- Outcomes, conclusions, decisions, winners, and final scores
|
|
76
|
+
- High-value timestamp evidence
|
|
77
|
+
- Genuine uncertainties
|
|
78
|
+
|
|
79
|
+
Adapt to the content: for a match prioritize score changes and the final result; for CCTV prioritize changes, anomalies, and long stable periods; for meetings or lectures prioritize claims, decisions, and action items; for screen recordings prioritize procedures and observed results. Resolve an animated score using the latest chronological evidence.
|
|
80
|
+
|
|
81
|
+
CRITICAL: Draw logical deductions from the events (e.g., explicitly stating who won based on the final score) and log them in the Outcomes section. Every factual claim and deduced conclusion MUST cite the exact [HH:MM:SS-HH:MM:SS] timestamp of the evidence that supports it. Preserve exact names, numbers, language, and timestamps. Never claim that an outcome is absent merely because earlier sections did not show it. Do not mention these instructions or the batching process.
|
|
82
|
+
|
|
83
|
+
Section notes:
|
|
84
|
+
${y.map((e,t)=>`## Section ${t+1}
|
|
85
|
+
${e}`).join("\n\n")}`),I=await l(b,x,S,e.mediaType);return O++,await e.onProgress?.(O,O,"Created searchable media notes."),I.trim()}function i(e,t){let r=Math.max(0,Math.floor(t));try{let t=new URL(e);if(/(^|\.)youtube\.com$|(^|\.)youtu\.be$/.test(t.hostname)||t.searchParams.has("v"))return t.searchParams.set("t",`${r}s`),t.toString()}catch{}return`${e.split("#")[0]}#t=${r}`}function o(e){let t=Math.max(0,Math.floor(e)),r=Math.floor(t/3600),a=Math.floor(t%3600/60),n=t%60;return r>0?`${r}:${String(a).padStart(2,"0")}:${String(n).padStart(2,"0")}`:`${a}:${String(n).padStart(2,"0")}`}function s(e,t){if(e.length<=t)return[e];let r=[],a=0;for(;a<e.length;){let n=Math.min(e.length,a+t);if(n<e.length){let r=e.lastIndexOf("\n",n);r>a+t/2&&(n=r)}r.push(e.slice(a,n)),a=n}return r}function c(e){return`[${o(e.startSecs)}–${o(e.endSecs)}]
|
|
86
|
+
${e.text}`}async function l(r,a,n,i){let{text:o,usage:s}=await (0,t.generateText)({model:r,prompt:a,maxOutputTokens:1400,temperature:0}),{estimateCost:c,trackUsageEvent:l}=await e.A(313282);return l({type:"media_processing",mediaType:i,modelId:n.modelId,provider:n.provider,promptTokens:s.inputTokens??0,completionTokens:s.outputTokens??0,totalTokens:s.totalTokens??0,estimatedCost:c(n.modelId,s.inputTokens??0,s.outputTokens??0),timestamp:new Date().toISOString()}).catch(e=>console.error("Failed to record media synthesis usage:",e)),o}e.s(["buildMediaDocumentInputs",0,function(e){let t={mediaAssetId:e.assetId,mediaType:e.mediaType,fileName:e.fileName,mimeType:e.mimeType,mediaUrl:e.localUrl,originalUrl:e.originalUrl,durationSecs:e.durationSecs,transcriptSource:e.transcriptSource,transcriptProvider:e.transcriptProvider,transcriptLanguage:e.transcriptLanguage},r=e.originalUrl||e.localUrl,a="video"===e.mediaType?"Video":"Audio";return[{title:e.title,content:[`${a}: ${e.title}`,`Duration: ${o(e.durationSecs)}`,"## Human-style evidence notes",e.summary].join("\n\n"),source:"media",url:r,metadata:{...t,contentKind:`${e.mediaType}-summary`,isMediaSummary:!0,segmentCount:e.segments.length}},...e.segments.map(n=>({title:`${e.title} — ${o(n.startSecs)}`,content:[`${a}: ${e.title}`,`Evidence at ${o(n.startSecs)}–${o(n.endSecs)}`,n.text].join("\n\n"),source:"media",url:i(r,n.startSecs),metadata:{...t,contentKind:"video"===e.mediaType?"multimodal-segment":"audio-transcript-segment",isMediaSummary:!1,sequence:n.sequence,startSecs:n.startSecs,endSecs:n.endSecs,evidenceKinds:[...n.transcript?.trim()?["speech"]:[],...n.visualContext?.trim()?["visual","ocr"]:[]]}}))]},"createFallbackMediaSummary",0,function(e,t,r){return[`Overview: ${"video"===t?"Video":"Audio"} evidence notes for "${e}".`,"Representative timeline evidence:",...[...r.slice(0,2),...r.slice(Math.max(2,Math.floor(r.length/2)-1),Math.floor(r.length/2)+1),...r.slice(-3)].filter((e,t,r)=>r.findIndex(t=>t.sequence===e.sequence)===t).map(c),"The timestamped evidence documents contain the complete timeline."].join("\n\n")},"createMediaKnowledgeSummary",0,n,"formatTime",0,o,"normalizeMediaCitationRange",0,function(e,t,r,a){if("image"===e||void 0===r||!Number.isFinite(r))return{};let n=void 0!==t&&Number.isFinite(t)?Math.max(0,t):1/0,i=Math.min(Math.max(0,r),n),o=void 0!==a&&Number.isFinite(a)?Math.min(Math.max(i,a),n):void 0;return{startSecs:i,endSecs:o}},"queryAwareExcerpt",0,function(e,t,r,a=!1){if(e.length<=r)return e;let n=t.normalize("NFKC").toLocaleLowerCase().match(/[\p{Letter}\p{Number}][\p{Letter}\p{Mark}\p{Number}_-]{2,}/gu)??[],i=e.normalize("NFKC").toLocaleLowerCase(),o=[...new Set(n)].map(e=>i.indexOf(e)).filter(e=>e>=0);if(o.length>0){let t=Math.min(...o),a=Math.max(0,Math.min(e.length-r,t-Math.floor(r/3)));return`${a>0?"…":""}${e.slice(a,a+r)}${a+r<e.length?"…":""}`}return a?`…${e.slice(-r)}`:`${e.slice(0,r)}…`},"timestampMediaUrl",0,i])},627270,e=>{e.v(e=>Promise.resolve().then(()=>e(612069)))},225970,e=>{e.v(e=>Promise.resolve().then(()=>e(65048)))},953341,e=>{e.v(t=>Promise.all(["server/chunks/0ozc_@vercel_oidc_dist_token_0m1934l.js"].map(t=>e.l(t))).then(()=>t(624299)))},313282,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_analytics-store_ts_03tqnqs._.js"].map(t=>e.l(t))).then(()=>t(43697)))},742957,e=>{e.v(e=>Promise.resolve().then(()=>e(839554)))},606714,e=>{e.v(e=>Promise.resolve().then(()=>e(902157)))},311105,e=>{e.v(e=>Promise.resolve().then(()=>e(750227)))},974237,e=>{e.v(e=>Promise.resolve().then(()=>e(660526)))},358617,e=>{e.v(e=>Promise.resolve().then(()=>e(705252)))},147730,e=>{e.v(t=>Promise.all(["server/chunks/packages_0jmx5.-._.js","server/chunks/packages_core_src_indexing_embedder_ts_0h75r~u._.js","server/chunks/packages_core_src_embeddings_providers_ts_05f4_w-._.js"].map(t=>e.l(t))).then(()=>t(900263)))},297078,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_index-store_ts_13sjtkb._.js"].map(t=>e.l(t))).then(()=>t(489694)))},473286,e=>{e.v(t=>Promise.all(["server/chunks/packages_vector-stores_src_044u_tk._.js"].map(t=>e.l(t))).then(()=>t(585071)))}];
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0exyn0q._.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: ''. 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"),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)(),s=f(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:y(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),u={id:n,name:i,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 O("My RAG server");return f(a.id)}async function x(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 C(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await x(t);)t++;return t}function O(e){return g(async n=>{let s=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await C(n),createdAt:o,updatedAt:o},u=f(s);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{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:y(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,d),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await b(c),{workspace:c,server:l}})}e.s(["createServer",0,O,"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 s=[/^\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 i(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?(s.some(e=>e.test(t))||!isNaN(Date.parse(t)))&&n++:a++}let i=.8*t.length;return a>=i?"number":r>=i?"boolean":n>=i?"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,s,i,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,s=t%2==0?(e[t/2-1]+e[t/2])/2:e[Math.floor(t/2)],i=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(s.toFixed(4)),stddev:Number(i.toFixed(4)),sum:Number(a.toFixed(4))})}if("date"===r){let e=n.map(String),t=e.map(i).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=i(r),a=i(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={},s=r.split("|||");for(let a of(e.groupBy.forEach((e,a)=>{t[e]=s[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],s=r[e.sortBy];return null==n&&null==s?0:null==n?1:null==s?-1:"number"==typeof n&&"number"==typeof s?(n-s)*t:String(n).localeCompare(String(s))*t})}let s=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:s,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])},206073,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),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(){try{let e=await (0,v.listTabularDatasets)();return w.NextResponse.json({datasets:e})}catch(t){let e=t instanceof Error?t.message:"Failed to list datasets";return w.NextResponse.json({error:e},{status:500})}}async function b(e){try{let{fileName:t,rows:a}=await e.json();if(!t||!Array.isArray(a)||0===a.length)return w.NextResponse.json({error:"fileName and non-empty rows array required"},{status:400});let r=await (0,v.saveTabularDataset)(t,a);return w.NextResponse.json({id:r.id,fileName:r.fileName,rowCount:r.rowCount,columns:r.columns,summary:r.summary})}catch(t){let e=t instanceof Error?t.message:"Failed to save dataset";return w.NextResponse.json({error:e},{status:500})}}async function N(e){try{let t=new URL(e.url).searchParams.get("id");if(!t)return w.NextResponse.json({error:"id required"},{status:400});return await (0,v.deleteTabularDataset)(t),w.NextResponse.json({ok:!0})}catch(t){let e=t instanceof Error?t.message:"Failed to delete dataset";return w.NextResponse.json({error:e},{status:500})}}e.s(["DELETE",0,N,"GET",0,S,"POST",0,b,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],201986);var A=e.i(201986);let E=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/tabular/route",pathname:"/api/tabular",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/tabular/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:R,workUnitAsyncStorage:T,serverHooks:x}=E;async function C(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/tabular/route";w=w.replace(/\/index$/,"")||"/";let v=await E.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:N,nextConfig:A,parsedUrl:R,isDraftMode:T,prerenderManifest:x,routerServerContext:C,isOnDemandRevalidate:O,revalidateOnlyGenerated:D,resolvedPathname:I,clientReferenceManifest:M,serverActionsManifest:U}=v,q=(0,o.normalizeAppPath)(w),P=!!(x.dynamicRoutes[q]||x.routes[I]),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[I],t=x.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await j();throw new f.NoFallbackError}}let k=null;!P||E.isDev||T||(k="/index"===(k=I)?"/":k);let L=!0===E.isDev||!P,F=P&&!L;U&&M&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:M,serverActionsManifest:U});let K=e.method||"GET",Y=(0,s.getTracer)(),H=Y.getActiveScopeSpan(),$=!!(null==C?void 0:C.isWrappedByNextServer),_=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,A,x,_);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let z={params:N,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:L,incrementalCache:B,cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>E.onRequestError(e,t,r,n,C)},sharedContext:{buildId:S,deploymentId:b}},W=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>E.handle(V,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=`${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(!_&&O&&D&&!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=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,G,s,z.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.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!==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: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 E.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:O})},!1,C),t}},u=await E.handleResponse({req:e,nextConfig:A,cacheKey:k,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:_});if(!P)return null;if((null==u||null==(s=u.value)?void 0:s.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",O?"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,G,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:`${K} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof f.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:O})},!1,C),P)throw t;return await (0,p.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:T})},"routeModule",0,E,"serverHooks",0,x,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,T],206073)}];
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0fcf_rl._.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 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()},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: ''. 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,i],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,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function f(e){return await E(),m(async()=>e(await S()??c))}function g(e){return a.default.join(u,e)}function y(e,t){return`./.larkup/servers/${e}/${t}`}async function v(e){try{return await t.promises.access(e),!0}catch{return!1}}async function w(e,r){if(await v(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 A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(d,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 v(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),s=g(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 w(a.default.join(l,e),a.default.join(s,e));await w(a.default.join(l,"lancedb"),a.default.join(s,"lancedb")),await w(a.default.join(l,"generated-server"),a.default.join(s,"generated-server"));let o="Default server";try{let e=a.default.join(s,"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:y(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let i=new Date().toISOString(),u={id:n,name:o,port:8080,createdAt:i,updatedAt:i};return A({username:null,activeServerId:n,servers:[u],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 x(){let e=await b();if(!e)return null;let a=g(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await x();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await O("My RAG server");return g(a.id)}async function I(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 T(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await I(t);)t++;return t}function O(e){return f(async n=>{let s=(0,r.randomUUID)(),i=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await T(n),createdAt:i,updatedAt:i},u=g(s);await t.promises.mkdir(u,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(g(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{...o,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:y(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()}}(s,l.name,d),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,O,"deleteServer",0,function(e){return f(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}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,x,"getWorkspace",0,E,"renameServer",0,function(e,t){return f(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,C,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return f(async t=>t.servers.some(t=>t.id===e)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return f(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return f(async t=>A({...t,username:e.trim()||null}))}],192441)},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},500874,(e,t,a)=>{t.exports=e.x("buffer",()=>require("buffer"))},305842,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),o=e.i(706859),i=e.i(947547),l=e.i(819797),u=e.i(135958),d=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),f=e.i(37125),g=e.i(193695);e.i(530058);var y=e.i(605998),v=e.i(686296),w=e.i(522734),S=e.i(814747),A=e.i(568886),E=e.i(192441);async function R(t){try{let a=new URL(t.url),r=a.searchParams.get("serverId")||"default";if("default"===r){let e=await (0,E.getActiveServer)();e&&(r=e.id)}let n=process.cwd(),s=null;for(let e of[S.default.join(n,".larkup","servers",r,"config.json"),S.default.join(n,".larkup","config.json")])if(w.default.existsSync(e))try{s=JSON.parse(w.default.readFileSync(e,"utf-8"));break}catch{}if(!s)return v.NextResponse.json({error:"Configuration not found."},{status:404});let{generateServer:o}=await e.A(878169),i=o(s),l=new A.default;for(let e of i.files)l.file(e.path,e.contents);let u=i.files.find(e=>".env.example"===e.path);if(u&&l.file(".env",u.contents),"lancedb"===s.vectorStore&&(s.storeConfig?.mode??"local")==="local"){let e=S.default.join(n,".larkup","servers",r,"lancedb");if(w.default.existsSync(e))for(let t of function e(t,a){let r=[];if(!w.default.existsSync(t))return r;for(let n of w.default.readdirSync(t)){if("node_modules"===n||".git"===n||"server.log"===n)continue;let s=S.default.join(t,n),o=w.default.statSync(s);o&&o.isDirectory()?r=r.concat(e(s,a)):r.push({file:S.default.relative(a,s).replace(/\\/g,"/"),fullPath:s})}return r}(e,S.default.join(n,".larkup","servers",r)))l.file(t.file,w.default.readFileSync(t.fullPath))}let d=a.searchParams.get("provider");"azure-container-apps"===d?l.file("DEPLOY_GUIDE.md","# Azure Container Apps Deployment Guide\n\n1. Install Azure CLI.\n2. Run `az containerapp up --source . --name my-rag-server`."):"aws-app-runner"===d?l.file("DEPLOY_GUIDE.md","# AWS App Runner Deployment Guide\n\n1. Push this folder to a GitHub repository.\n2. Connect the repository in AWS App Runner.\n3. Provide the Build Command: `npm install` and Start Command: `npm start`."):"gcp-cloud-run"===d&&l.file("DEPLOY_GUIDE.md","# GCP Cloud Run Deployment Guide\n\n1. Install gcloud CLI.\n2. Run `gcloud run deploy my-rag-server --source .`.");let c=await l.generateAsync({type:"nodebuffer"});return new v.NextResponse(c,{headers:{"Content-Type":"application/zip","Content-Disposition":`attachment; filename="${s.projectName||"rag-server"}.zip"`}})}catch(e){return console.error("ZIP Generation Error:",e),v.NextResponse.json({error:e.message},{status:500})}}e.s(["GET",0,R],145108);var b=e.i(145108);let x=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/server/download/route",pathname:"/api/server/download",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/server/download/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:I,serverHooks:T}=x;async function O(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),x.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/server/download/route";v=v.replace(/\/index$/,"")||"/";let w=await x.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:A,params:E,nextConfig:R,parsedUrl:b,isDraftMode:C,prerenderManifest:I,routerServerContext:T,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=w,k=(0,i.normalizeAppPath)(v),j=!!(I.dynamicRoutes[k]||I.routes[D]),L=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,b,!1):t.end("This page could not be found"),null);if(j&&!C){let e=!!I.routes[D],t=I.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await L();throw new g.NoFallbackError}}let M=null;!j||x.isDev||C||(M="/index"===(M=D)?"/":M);let q=!0===x.isDev||!j,_=j&&!q;P&&U&&(0,o.setManifestsSingleton)({page:v,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",F=(0,s.getTracer)(),H=F.getActiveScopeSpan(),z=!!(null==T?void 0:T.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,R,I,G);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:E,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:q,incrementalCache:W,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>x.onRequestError(e,t,r,n,T)},sharedContext:{buildId:S,deploymentId:A}},V=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),$=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>x.handle($,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=F.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==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=`${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} ${v}`)}),i=async n=>{var s,i;let l=async({previousCacheEntry:a})=>{try{if(!G&&O&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let i=Y.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=Y.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(V,B,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.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>=f.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:y.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 x.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:_,isOnDemandRevalidate:O})},!1,T),t}},u=await x.handleResponse({req:e,nextConfig:R,cacheKey:M,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:G});if(!j)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==y.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});G||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return G&&j||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,B,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};z&&H?await i(H):(n=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${K} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},i),void 0,!z))}catch(t){if(t instanceof g.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:_,isOnDemandRevalidate:O})},!1,T),j)throw t;return await (0,p.sendResponse)(V,B,new Response(null,{status:500})),null}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:I})},"routeModule",0,x,"serverHooks",0,T,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,I],305842)},878169,e=>{e.v(t=>Promise.all(["server/chunks/packages_070bs61._.js","server/chunks/packages_core_src_generator_generate-server_ts_0mt.je3._.js"].map(t=>e.l(t))).then(()=>t(171502)))}];
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0f~eq1-._.js.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
module.exports=[750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},811917,(e,t,r)=>{t.exports=e.x("dockerode-2f9c00396d72a1e4",()=>require("dockerode-2f9c00396d72a1e4"))},983131,778923,e=>{"use strict";var t=e.i(811917),r=e.i(902157),a=e.i(750227),i=e.i(660526),s=e.i(666680);let n="larkup-sandbox:latest",o="/sandbox/output",l=a.default.join({get url(){return`file://${e.P("packages/sandbox/dist/docker-runner.js")}`}}.dirname??"/ROOT/packages/sandbox/dist",".."),d=null;function p(){return d||(d=new t.default),d}async function c(){let e=p();try{let t=await e.version(),r=await e.listImages({filters:{reference:[n]}});return{status:r.length>0?"ready":"image-not-found",backend:"docker",dockerVersion:t.Version,imageReady:r.length>0}}catch(e){return{status:"docker-not-found",backend:"docker",error:e.message??"Docker daemon not available"}}}async function u(e){let t=p(),i=a.default.join(l,"Dockerfile");try{await r.promises.access(i)}catch{throw Error(`Sandbox Dockerfile not found at ${i}. Ensure the @larkup/sandbox package is properly installed.`)}e?.("Building sandbox image…");let s=await t.buildImage({context:l,src:["Dockerfile"]},{t:n});await new Promise((r,a)=>{t.modem.followProgress(s,e=>{e?a(e):r()},t=>{t.stream&&e?.(t.stream.trim())})}),e?.("Sandbox image built successfully ✓")}async function f(){let e=p();if((await e.listImages({filters:{reference:[n]}})).length>0)return!0;try{return await u(),!0}catch{return!1}}async function m(e,t){let n,l,d=p(),c=Date.now(),u=a.default.join(i.default.tmpdir(),`larkup-sandbox-${(0,s.randomUUID)()}`),f=a.default.join(u,"input"),m=a.default.join(u,"output");if(await r.promises.mkdir(f,{recursive:!0}),await r.promises.mkdir(m,{recursive:!0}),e.files)for(let t of e.files){let e=a.default.join(f,t.name);t.isBase64?await r.promises.writeFile(e,Buffer.from(t.content,"base64")):await r.promises.writeFile(e,t.content,"utf8")}if("python"===e.language){var g;g=e.code,n=`
|
|
2
|
+
import sys, os, json, traceback
|
|
3
|
+
|
|
4
|
+
# Ensure output directory exists
|
|
5
|
+
os.makedirs("${o}", exist_ok=True)
|
|
6
|
+
|
|
7
|
+
# ============================================================
|
|
8
|
+
# SAFETY PREAMBLE: Suppress warnings & patch deprecated APIs
|
|
9
|
+
# ============================================================
|
|
10
|
+
import warnings
|
|
11
|
+
warnings.filterwarnings('ignore', category=FutureWarning)
|
|
12
|
+
warnings.filterwarnings('ignore', category=DeprecationWarning)
|
|
13
|
+
warnings.filterwarnings('ignore', category=UserWarning)
|
|
14
|
+
|
|
15
|
+
# Auto-import common data analysis modules
|
|
16
|
+
import numpy as np
|
|
17
|
+
|
|
18
|
+
try:
|
|
19
|
+
import pandas as pd
|
|
20
|
+
|
|
21
|
+
# --- Patch 1: DataFrame.append() was removed in pandas 2.0 ---
|
|
22
|
+
if not hasattr(pd.DataFrame, 'append'):
|
|
23
|
+
def _df_append(self, other, ignore_index=False, verify_integrity=False, sort=False, **kwargs):
|
|
24
|
+
"""Backwards-compatible append using pd.concat."""
|
|
25
|
+
if isinstance(other, (list, tuple)):
|
|
26
|
+
to_concat = [self] + list(other)
|
|
27
|
+
elif isinstance(other, dict):
|
|
28
|
+
to_concat = [self, pd.DataFrame([other])]
|
|
29
|
+
else:
|
|
30
|
+
to_concat = [self, other]
|
|
31
|
+
return pd.concat(to_concat, ignore_index=ignore_index, verify_integrity=verify_integrity, sort=sort)
|
|
32
|
+
pd.DataFrame.append = _df_append
|
|
33
|
+
|
|
34
|
+
# --- Patch 2: Series.append() was removed in pandas 2.0 ---
|
|
35
|
+
if not hasattr(pd.Series, 'append'):
|
|
36
|
+
def _series_append(self, to_append, ignore_index=False, verify_integrity=False):
|
|
37
|
+
"""Backwards-compatible Series.append using pd.concat."""
|
|
38
|
+
if isinstance(to_append, (list, tuple)):
|
|
39
|
+
to_concat = [self] + list(to_append)
|
|
40
|
+
else:
|
|
41
|
+
to_concat = [self, to_append]
|
|
42
|
+
return pd.concat(to_concat, ignore_index=ignore_index, verify_integrity=verify_integrity)
|
|
43
|
+
pd.Series.append = _series_append
|
|
44
|
+
|
|
45
|
+
# --- Patch 3: Fix deprecated resample frequency aliases ---
|
|
46
|
+
# "M" -> "ME", "Q" -> "QE", "Y" -> "YE", "H" -> "h", "T" -> "min", "S" -> "s"
|
|
47
|
+
_original_resample = pd.DataFrame.resample
|
|
48
|
+
_FREQ_ALIAS_MAP = {
|
|
49
|
+
'M': 'ME', 'Q': 'QE', 'Y': 'YE', 'A': 'YE',
|
|
50
|
+
'BM': 'BME', 'BQ': 'BQE', 'BA': 'BYE', 'BY': 'BYE',
|
|
51
|
+
'BMS': 'BMS', 'QS': 'QS', 'AS': 'YS', 'BAS': 'BYS',
|
|
52
|
+
'H': 'h', 'T': 'min', 'S': 's', 'L': 'ms', 'U': 'us', 'N': 'ns',
|
|
53
|
+
}
|
|
54
|
+
def _patched_resample(self, rule, *args, **kwargs):
|
|
55
|
+
if isinstance(rule, str) and rule in _FREQ_ALIAS_MAP:
|
|
56
|
+
rule = _FREQ_ALIAS_MAP[rule]
|
|
57
|
+
return _original_resample(self, rule, *args, **kwargs)
|
|
58
|
+
pd.DataFrame.resample = _patched_resample
|
|
59
|
+
|
|
60
|
+
# Also patch Series.resample
|
|
61
|
+
_original_series_resample = pd.Series.resample
|
|
62
|
+
def _patched_series_resample(self, rule, *args, **kwargs):
|
|
63
|
+
if isinstance(rule, str) and rule in _FREQ_ALIAS_MAP:
|
|
64
|
+
rule = _FREQ_ALIAS_MAP[rule]
|
|
65
|
+
return _original_series_resample(self, rule, *args, **kwargs)
|
|
66
|
+
pd.Series.resample = _patched_series_resample
|
|
67
|
+
|
|
68
|
+
# --- Patch 4: Fix pd.Grouper freq aliases ---
|
|
69
|
+
_original_grouper = pd.Grouper
|
|
70
|
+
class _PatchedGrouper(_original_grouper):
|
|
71
|
+
def __init__(self, *args, **kwargs):
|
|
72
|
+
if 'freq' in kwargs and isinstance(kwargs['freq'], str):
|
|
73
|
+
kwargs['freq'] = _FREQ_ALIAS_MAP.get(kwargs['freq'], kwargs['freq'])
|
|
74
|
+
super().__init__(*args, **kwargs)
|
|
75
|
+
pd.Grouper = _PatchedGrouper
|
|
76
|
+
|
|
77
|
+
except ImportError:
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
# ============================================================
|
|
81
|
+
# Patch matplotlib to auto-save figures
|
|
82
|
+
# ============================================================
|
|
83
|
+
_figure_count = [0]
|
|
84
|
+
try:
|
|
85
|
+
import matplotlib
|
|
86
|
+
matplotlib.use("Agg")
|
|
87
|
+
import matplotlib.pyplot as plt
|
|
88
|
+
|
|
89
|
+
_original_show = plt.show
|
|
90
|
+
def _patched_show(*args, **kwargs):
|
|
91
|
+
for fig_num in plt.get_fignums():
|
|
92
|
+
fig = plt.figure(fig_num)
|
|
93
|
+
fname = f"${o}/chart_{_figure_count[0]}.png"
|
|
94
|
+
fig.savefig(fname, dpi=150, bbox_inches="tight", facecolor="white")
|
|
95
|
+
_figure_count[0] += 1
|
|
96
|
+
plt.close("all")
|
|
97
|
+
plt.show = _patched_show
|
|
98
|
+
except ImportError:
|
|
99
|
+
pass
|
|
100
|
+
|
|
101
|
+
# ============================================================
|
|
102
|
+
# Execute user code with robust error handling
|
|
103
|
+
# ============================================================
|
|
104
|
+
try:
|
|
105
|
+
exec(${JSON.stringify(g)})
|
|
106
|
+
|
|
107
|
+
# Auto-save any remaining matplotlib figures
|
|
108
|
+
try:
|
|
109
|
+
import matplotlib.pyplot as plt
|
|
110
|
+
if plt.get_fignums():
|
|
111
|
+
plt.show()
|
|
112
|
+
except (ImportError, Exception):
|
|
113
|
+
pass
|
|
114
|
+
except SystemExit as e:
|
|
115
|
+
# Let explicit sys.exit() calls through
|
|
116
|
+
if e.code != 0:
|
|
117
|
+
sys.exit(e.code)
|
|
118
|
+
except Exception as e:
|
|
119
|
+
# Print a clean, user-readable error instead of raw traceback
|
|
120
|
+
error_type = type(e).__name__
|
|
121
|
+
error_msg = str(e)
|
|
122
|
+
print(f"Error ({error_type}): {error_msg}", file=sys.stderr)
|
|
123
|
+
# Also print the relevant part of the traceback for debugging
|
|
124
|
+
tb = traceback.extract_tb(sys.exc_info()[2])
|
|
125
|
+
# Filter to only show the exec'd code frames (skip wrapper frames)
|
|
126
|
+
user_frames = [f for f in tb if f.filename == '<string>']
|
|
127
|
+
if user_frames:
|
|
128
|
+
last = user_frames[-1]
|
|
129
|
+
print(f" at line {last.lineno}: {last.line}", file=sys.stderr)
|
|
130
|
+
sys.exit(1)
|
|
131
|
+
|
|
132
|
+
# List generated artifacts
|
|
133
|
+
artifacts = []
|
|
134
|
+
if os.path.isdir("${o}"):
|
|
135
|
+
for f in sorted(os.listdir("${o}")):
|
|
136
|
+
fp = os.path.join("${o}", f)
|
|
137
|
+
if os.path.isfile(fp):
|
|
138
|
+
artifacts.append(f)
|
|
139
|
+
if artifacts:
|
|
140
|
+
print("\\n__ARTIFACTS__:" + json.dumps(artifacts))
|
|
141
|
+
`;let t=a.default.join(u,"run.py");await r.promises.writeFile(t,n,"utf8"),l=["python3","/sandbox/run.py"]}else{let t=a.default.join(u,"run.js");await r.promises.writeFile(t,e.code,"utf8"),l=["node","/sandbox/run.js"]}let h=e.timeout??t.timeoutMs,_=null;try{_=await d.createContainer({Image:t.imageName,Cmd:l,Entrypoint:[],WorkingDir:"/sandbox/input",HostConfig:{AutoRemove:!1,Memory:1024*t.memoryMB*1024,CpuShares:t.cpuShares,NetworkMode:t.networkDisabled?"none":"bridge",Binds:[`${f}:/sandbox/input:ro`,`${m}:${o}:rw`,`${u}/run.py:/sandbox/run.py:ro`],ReadonlyRootfs:!1},Tty:!1,AttachStdout:!0,AttachStderr:!0}),await _.start();let e=_.wait(),i=new Promise((e,t)=>{setTimeout(async()=>{try{await _?.kill()}catch{}t(Error(`Execution timed out after ${h}ms`))},h)}),s=await Promise.race([e,i]),n=await _.logs({stdout:!0,stderr:!0,follow:!1}),p=function(e){let t="",r="";if("string"==typeof e)return{stdout:e,stderr:""};let a=0;for(;a<e.length&&!(a+8>e.length);){let i=e.readUInt8(a),s=e.readUInt32BE(a+4);if((a+=8)+s>e.length)break;let n=e.subarray(a,a+s).toString("utf8");1===i?t+=n:2===i&&(r+=n),a+=s}return t||r||!(e.length>0)||(t=e.toString("utf8")),{stdout:t,stderr:r}}(n),g=[];try{for(let e of(await r.promises.readdir(m))){let t=a.default.join(m,e),i=await r.promises.readFile(t),s={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".svg":"image/svg+xml",".gif":"image/gif",".csv":"text/csv",".json":"application/json",".txt":"text/plain",".html":"text/html",".pdf":"application/pdf"}[a.default.extname(e).toLowerCase()]??"application/octet-stream";g.push({name:e,mimeType:s,data:i.toString("base64")})}}catch{}let{stdout:x,stderr:w}=p;return{stdout:x.replace(/\n__ARTIFACTS__:.*$/m,"").trimEnd(),stderr:w,exitCode:s.StatusCode??1,artifacts:g,executionTimeMs:Date.now()-c}}catch(e){return{stdout:"",stderr:e.message??"Execution failed",exitCode:1,artifacts:[],executionTimeMs:Date.now()-c}}finally{if(_)try{await _.remove({force:!0})}catch{}try{await r.promises.rm(u,{recursive:!0,force:!0})}catch{}}}let g={imageName:"larkup-sandbox:latest",memoryMB:512,cpuShares:1024,timeoutMs:3e4,networkDisabled:!0};e.s(["SandboxManager",0,class{config;constructor(e){this.config={backend:e?.backend??"docker",docker:e?.docker,remote:e?.remote}}async healthCheck(){switch(this.config.backend){case"docker":return c();case"e2b":case"modal":case"custom":return{status:"error",backend:this.config.backend,error:`${this.config.backend} backend is not yet implemented. Use Docker for local execution.`};default:return{status:"error",backend:this.config.backend,error:`Unknown backend: ${this.config.backend}`}}}async setup(e){if("docker"===this.config.backend)await u(e);else throw Error(`Setup not supported for backend: ${this.config.backend}`)}async execute(e){switch(this.config.backend){case"docker":if(!await f())return{stdout:"",stderr:"Sandbox image not available. Run setup first or ensure Docker is installed.",exitCode:1,artifacts:[],executionTimeMs:0};return m(e,{...g,...this.config.docker});case"e2b":case"modal":case"custom":return{stdout:"",stderr:`${this.config.backend} backend is not yet implemented.`,exitCode:1,artifacts:[],executionTimeMs:0};default:return{stdout:"",stderr:`Unknown backend: ${this.config.backend}`,exitCode:1,artifacts:[],executionTimeMs:0}}}}],778923),e.s([],983131)},406461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},921517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},524836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},898894,e=>{"use strict";var t=e.i(850492),r=e.i(891119),a=e.i(697373),i=e.i(765700),s=e.i(601263),n=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),p=e.i(86520),c=e.i(970949),u=e.i(741165),f=e.i(106898),m=e.i(454415),g=e.i(37125),h=e.i(193695);e.i(530058);var _=e.i(605998),x=e.i(686296);e.i(907667);var w=e.i(490517),y=e.i(203523),b=e.i(817521);async function k(e){try{let t=(await e.formData()).get("file");if(!t)return x.NextResponse.json({error:"No file provided"},{status:400});let r=Buffer.from(await t.arrayBuffer()),a=await (0,w.createSession)(r,t.name,t.type);if("pdf"===a.type&&""===a.parsed.rawText)if(a.parsed.totalPages<=5)try{let e=await (0,b.default)(r),t=(0,y.enrichPDFWithText)(a.parsed,e.text);a.parsed=t}catch{}else a.parsed.rawText="[Long PDF - Text extraction skipped for performance. You can still view it.]";return x.NextResponse.json({sessionId:a.id,fileName:a.fileName,type:a.type,mimeType:a.mimeType,fileSize:a.parsed.fileSize,totalPages:a.parsed.totalPages,fields:a.parsed.fields,pages:a.parsed.pages.map(e=>({index:e.index,text:e.text.slice(0,2e3),html:e.html,fields:e.fields,dimensions:e.dimensions})),rawText:a.parsed.rawText.slice(0,5e3),metadata:a.parsed.metadata})}catch(t){let e=t instanceof Error?t.message:"Failed to parse file";return x.NextResponse.json({error:e},{status:500})}}e.s(["POST",0,k,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],349733);var v=e.i(349733);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/doc-editor/parse/route",pathname:"/api/doc-editor/parse",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/doc-editor/parse/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:R,workUnitAsyncStorage:S,serverHooks:A}=E;async function P(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/doc-editor/parse/route";x=x.replace(/\/index$/,"")||"/";let w=await E.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,deploymentId:b,params:k,nextConfig:v,parsedUrl:R,isDraftMode:S,prerenderManifest:A,routerServerContext:P,isOnDemandRevalidate:C,revalidateOnlyGenerated:T,resolvedPathname:M,clientReferenceManifest:q,serverActionsManifest:F}=w,D=(0,o.normalizeAppPath)(x),I=!!(A.dynamicRoutes[D]||A.routes[M]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,R,!1):t.end("This page could not be found"),null);if(I&&!S){let e=!!A.routes[M],t=A.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(v.adapterPath)return await N();throw new h.NoFallbackError}}let j=null;!I||E.isDev||S||(j="/index"===(j=M)?"/":j);let B=!0===E.isDev||!I,$=I&&!B;F&&q&&(0,n.setManifestsSingleton)({page:x,clientReferenceManifest:q,serverActionsManifest:F});let O=e.method||"GET",U=(0,s.getTracer)(),H=U.getActiveScopeSpan(),L=!!(null==P?void 0:P.isWrappedByNextServer),Q=!!(0,i.getRequestMeta)(e,"minimalMode"),Y=(0,i.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,v,A,Q);null==Y||Y.resetRequestCache(),globalThis.__incrementalCache=Y;let G={params:k,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!v.experimental.authInterrupts},cacheComponents:!!v.cacheComponents,supportsDynamicResponse:B,incrementalCache:Y,cacheLifeProfiles:v.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>E.onRequestError(e,t,a,i,P)},sharedContext:{buildId:y,deploymentId:b}},K=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest(K,(0,d.signalFromNodeResponse)(t));try{let i,n=async e=>E.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.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=`${O} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",a),i.updateName(t))}else e.updateName(`${O} ${x}`)}),o=async i=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!Q&&C&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await n(i);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,u.sendResponse)(K,W,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,P),t}},d=await E.handleResponse({req:e,nextConfig:v,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:Q});if(!I)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==_.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});Q||t.setHeader("x-nextjs-cache",C?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return Q&&I||p.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,u.sendResponse)(K,W,new Response(d.value.body,{headers:p,status:d.value.status||200})),null};L&&H?await o(H):(i=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(p.BaseServerSpan.handleRequest,{spanName:`${O} ${x}`,kind:s.SpanKind.SERVER,attributes:{"http.method":O,"http.target":e.url}},o),void 0,!L))}catch(t){if(t instanceof h.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:C})},!1,P),I)throw t;return await (0,u.sendResponse)(K,W,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:S})},"routeModule",0,E,"serverHooks",0,A,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,S],898894)},195213,e=>{e.v(e=>Promise.resolve().then(()=>e(568886)))}];
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0g36cgg._.js.map
|