larkup 0.1.21 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +12 -12
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +16 -16
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/analytics.html +1 -1
  25. package/.next/server/app/analytics.rsc +17 -17
  26. package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
  27. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  28. package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
  29. package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  30. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  31. package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  32. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/chat.html +1 -1
  34. package/.next/server/app/chat.rsc +17 -17
  35. package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  36. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  37. package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
  38. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  39. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  40. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  41. package/.next/server/app/data/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/data.html +1 -1
  43. package/.next/server/app/data.rsc +17 -17
  44. package/.next/server/app/data.segments/_full.segment.rsc +17 -17
  45. package/.next/server/app/data.segments/_head.segment.rsc +4 -4
  46. package/.next/server/app/data.segments/_index.segment.rsc +11 -11
  47. package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  48. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  49. package/.next/server/app/data.segments/data.segment.rsc +3 -3
  50. package/.next/server/app/index.html +1 -1
  51. package/.next/server/app/index.rsc +16 -16
  52. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  53. package/.next/server/app/index.segments/_full.segment.rsc +16 -16
  54. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  55. package/.next/server/app/index.segments/_index.segment.rsc +11 -11
  56. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  57. package/.next/server/app/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/settings.html +1 -1
  60. package/.next/server/app/settings.rsc +18 -18
  61. package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  62. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  63. package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  64. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  65. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  66. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  67. package/.next/server/chunks/[root-of-the-server]__0036943._.js +2 -2
  68. package/.next/server/chunks/[root-of-the-server]__00nqa2u._.js +2 -2
  69. package/.next/server/chunks/[root-of-the-server]__02cpmox._.js +3 -3
  70. package/.next/server/chunks/[root-of-the-server]__02p-tv7._.js +3 -3
  71. package/.next/server/chunks/[root-of-the-server]__02t_0g7._.js +2 -2
  72. package/.next/server/chunks/[root-of-the-server]__04kopvt._.js +3 -3
  73. package/.next/server/chunks/[root-of-the-server]__04l~ip-._.js +2 -2
  74. package/.next/server/chunks/[root-of-the-server]__04visk8._.js +2 -2
  75. package/.next/server/chunks/[root-of-the-server]__05x8tmf._.js +2 -2
  76. package/.next/server/chunks/[root-of-the-server]__06l96vc._.js +2 -2
  77. package/.next/server/chunks/[root-of-the-server]__06ohoeu._.js +2 -2
  78. package/.next/server/chunks/[root-of-the-server]__07_1411._.js +2 -2
  79. package/.next/server/chunks/[root-of-the-server]__0acpo9m._.js +2 -2
  80. package/.next/server/chunks/[root-of-the-server]__0exyn0q._.js +2 -2
  81. package/.next/server/chunks/[root-of-the-server]__0fcf_rl._.js +2 -2
  82. package/.next/server/chunks/[root-of-the-server]__0f~eq1-._.js +2 -2
  83. package/.next/server/chunks/[root-of-the-server]__0ljy49-._.js +2 -2
  84. package/.next/server/chunks/[root-of-the-server]__0n0nerw._.js +2 -2
  85. package/.next/server/chunks/[root-of-the-server]__0oh5wgp._.js +2 -2
  86. package/.next/server/chunks/[root-of-the-server]__0oyc7s4._.js +3 -3
  87. package/.next/server/chunks/[root-of-the-server]__0pg~eys._.js +2 -2
  88. package/.next/server/chunks/[root-of-the-server]__0qtx78g._.js +2 -2
  89. package/.next/server/chunks/[root-of-the-server]__0r03jcl._.js +2 -2
  90. package/.next/server/chunks/[root-of-the-server]__0sb7d93._.js +2 -2
  91. package/.next/server/chunks/[root-of-the-server]__0t36t5o._.js +3 -3
  92. package/.next/server/chunks/[root-of-the-server]__0t_hp52._.js +2 -2
  93. package/.next/server/chunks/[root-of-the-server]__0v03x56._.js +2 -2
  94. package/.next/server/chunks/[root-of-the-server]__0v4bbce._.js +2 -2
  95. package/.next/server/chunks/[root-of-the-server]__0vcdpoc._.js +2 -2
  96. package/.next/server/chunks/[root-of-the-server]__0wvxpqf._.js +2 -2
  97. package/.next/server/chunks/[root-of-the-server]__0wyl7x5._.js +2 -2
  98. package/.next/server/chunks/[root-of-the-server]__0yx8vxp._.js +2 -2
  99. package/.next/server/chunks/[root-of-the-server]__0zh8t6z._.js +2 -2
  100. package/.next/server/chunks/[root-of-the-server]__0~q2fro._.js +2 -2
  101. package/.next/server/chunks/[root-of-the-server]__10d58x4._.js +2 -2
  102. package/.next/server/chunks/[root-of-the-server]__12kvuvp._.js +2 -2
  103. package/.next/server/chunks/packages_core_src_generator_generate-server_ts_0mt.je3._.js +3 -5
  104. package/.next/server/chunks/ssr/_0s5_0n1._.js +1 -1
  105. package/.next/server/chunks/ssr/packages_core_src_generator_generate-server_ts_0o.y7vi._.js +3 -5
  106. package/.next/server/middleware-build-manifest.js +3 -3
  107. package/.next/server/pages/404.html +1 -1
  108. package/.next/server/pages/500.html +1 -1
  109. package/.next/static/chunks/0u4n0ggeto75y.js +1 -0
  110. package/CHANGELOG.md +12 -0
  111. package/bin/larkup.js +43 -15
  112. package/components/onboarding/simple-setup.tsx +2 -2
  113. package/components/onboarding/welcome-screen.tsx +2 -2
  114. package/next-env.d.ts +1 -1
  115. package/package.json +17 -17
  116. package/.next/static/chunks/0ho7lc.x2uknx.js +0 -1
  117. /package/.next/static/{KqIuNxkoeAlhCusoxtMrS → Fb01QU1MyWBHc7U1LHf5y}/_buildManifest.js +0 -0
  118. /package/.next/static/{KqIuNxkoeAlhCusoxtMrS → Fb01QU1MyWBHc7U1LHf5y}/_clientMiddlewareManifest.js +0 -0
  119. /package/.next/static/{KqIuNxkoeAlhCusoxtMrS → Fb01QU1MyWBHc7U1LHf5y}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
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.
1
+ module.exports=[750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,a)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,a)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(478500),i=e.i(761095);let s={projectName:"my-larkup",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
2
 
3
3
  You have these tools:
4
4
  1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
@@ -54,6 +54,6 @@ RESPONSE FORMATTING (Analytics Style):
54
54
  - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
55
  - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
56
  - DO NOT hallucinate facts; rely strictly on the provided query results.
57
- - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,i,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await E(),m(async()=>e(await S()??c))}function f(e){return a.default.join(d,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(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function E(){let e=await S();return e||m(b)}async function b(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),s=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(),d={id:n,name:i,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[d],mode:null})}async function R(){let e=await E(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function I(){let e=await R();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await I();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await N("My RAG server");return f(a.id)}async function T(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function N(e){return g(async n=>{let s=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},d=f(s);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath: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,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,N,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,R,"getDataDir",0,I,"getWorkspace",0,E,"renameServer",0,function(e,t){return g(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return A({...a,servers:r})})},"requireDataDir",0,C,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return g(async t=>t.servers.some(t=>t.id===e)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>A({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function s(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),s=JSON.parse(n),i=s.customEmbeddings,o=s.embeddingModelId;if(s.customEmbedding&&!i?.length){let e=s.customEmbedding;i=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...s,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...r.DEFAULT_CONFIG.chunking,...s.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...s.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function i(e){let r=await (0,n.requireDataDir)(),s={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(s,null,2),"utf8"),s}e.s(["readConfig",0,s,"writeConfig",0,i])},38862,e=>{"use strict";var t=e.i(686296),a=e.i(367165);async function r(e){let r,n=(await (0,a.readConfig)()).bingApiKey;if(!n)return t.NextResponse.json({error:"Bing search is not configured. Set BING_API_KEY in your environment.",configured:!1},{status:503});try{r=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:s,page:i=1}=r;if(!s?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let o=Math.max(1,Math.min(i,10)),l=(o-1)*10;try{let e=await fetch(`https://serpapi.com/search.json?engine=bing&q=${encodeURIComponent(s.trim())}&first=${l+1}&api_key=${n}`,{method:"GET",cache:"no-store"}),a=await e.json();if(!e.ok||a.error){let r=a.error??`Bing (SerpApi) error (${e.status})`;return t.NextResponse.json({error:r},{status:e.status})}let r=(a.organic_results??[]).map(e=>({url:e.link,title:e.title,description:e.snippet})),i=r.length>=10&&o<10,d=i?o+1:o;return t.NextResponse.json({items:r,totalResults:100,totalResultsIsEstimate:!0,currentPage:o,totalPages:d,hasMore:i,query:s.trim()})}catch(a){let e=a instanceof Error?a.message:"Bing search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,a.readConfig)()).bingApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,r,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},540310,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),i=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(38862);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/search/bing/route",pathname:"/api/search/bing",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/bing/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:A,serverHooks:E}=v;async function b(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/search/bing/route";w=w.replace(/\/index$/,"")||"/";let S=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:A,deploymentId:E,params:b,nextConfig:R,parsedUrl:I,isDraftMode:C,prerenderManifest:T,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=S,M=(0,o.normalizeAppPath)(w),j=!!(T.dynamicRoutes[M]||T.routes[D]),k=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(j&&!C){let e=!!T.routes[D],t=T.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await k();throw new f.NoFallbackError}}let L=null;!j||v.isDev||C||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!j,F=j&&!q;P&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,s.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,R,T,W);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let Y={params:b,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:q,incrementalCache:z,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:A,deploymentId:E}},B=new l.NodeNextRequest(e),$=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!W&&N&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(B,$,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind: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 v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),t}},d=await v.handleResponse({req:e,nextConfig:R,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!j)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&j||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(B,$,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};G&&H?await o(H):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!G))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),j)throw t;return await (0,p.sendResponse)(B,$,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:A})},"routeModule",0,v,"serverHooks",0,E,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,A])}];
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,s,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function h(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function g(e){return await E(),h(async()=>e(await S()??c))}function f(e){return a.default.join(d,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(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function E(){let e=await S();return e||h(b)}async function b(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),i=f(n);for(let e of(await t.promises.mkdir(i,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(i,e));await v(a.default.join(l,"lancedb"),a.default.join(i,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(i,"generated-server"));let s="Default server";try{let e=a.default.join(i,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(s=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:y(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),d={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[d],mode:null})}async function R(){let e=await E(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function I(){let e=await R();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await I();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await N("my-larkup");return f(a.id)}async function T(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function N(e){return g(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},d=f(i);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",storeConfig:{mode:"local",dbPath:y(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:i};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,N,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,R,"getDataDir",0,I,"getWorkspace",0,E,"renameServer",0,function(e,t){return g(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return A({...a,servers:r})})},"requireDataDir",0,C,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return g(async t=>t.servers.some(t=>t.id===e)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>A({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),s=i.customEmbeddings,o=i.embeddingModelId;if(i.customEmbedding&&!s?.length){let e=i.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...i,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,chunking:{...r.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function s(e){let r=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,s])},38862,e=>{"use strict";var t=e.i(686296),a=e.i(367165);async function r(e){let r,n=(await (0,a.readConfig)()).bingApiKey;if(!n)return t.NextResponse.json({error:"Bing search is not configured. Set BING_API_KEY in your environment.",configured:!1},{status:503});try{r=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:i,page:s=1}=r;if(!i?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let o=Math.max(1,Math.min(s,10)),l=(o-1)*10;try{let e=await fetch(`https://serpapi.com/search.json?engine=bing&q=${encodeURIComponent(i.trim())}&first=${l+1}&api_key=${n}`,{method:"GET",cache:"no-store"}),a=await e.json();if(!e.ok||a.error){let r=a.error??`Bing (SerpApi) error (${e.status})`;return t.NextResponse.json({error:r},{status:e.status})}let r=(a.organic_results??[]).map(e=>({url:e.link,title:e.title,description:e.snippet})),s=r.length>=10&&o<10,d=s?o+1:o;return t.NextResponse.json({items:r,totalResults:100,totalResultsIsEstimate:!0,currentPage:o,totalPages:d,hasMore:s,query:i.trim()})}catch(a){let e=a instanceof Error?a.message:"Bing search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,a.readConfig)()).bingApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,r,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},540310,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=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(38862);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/search/bing/route",pathname:"/api/search/bing",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/bing/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:A,serverHooks:E}=v;async function b(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/search/bing/route";w=w.replace(/\/index$/,"")||"/";let S=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:A,deploymentId:E,params:b,nextConfig:R,parsedUrl:I,isDraftMode:C,prerenderManifest:T,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=S,k=(0,o.normalizeAppPath)(w),j=!!(T.dynamicRoutes[k]||T.routes[D]),M=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(j&&!C){let e=!!T.routes[D],t=T.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await M();throw new f.NoFallbackError}}let L=null;!j||v.isDev||C||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!j,F=j&&!q;P&&U&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,i.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,R,T,W);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let Y={params:b,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:q,incrementalCache:z,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:A,deploymentId:E}},B=new l.NodeNextRequest(e),$=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>v.handle(V,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:a})=>{try{if(!W&&N&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(B,$,i,Y.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),t}},d=await v.handleResponse({req:e,nextConfig:R,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!j)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&j||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(B,$,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};G&&H?await o(H):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!G))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),j)throw t;return await (0,p.sendResponse)(B,$,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:A})},"routeModule",0,v,"serverHooks",0,E,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,A])}];
58
58
 
59
59
  //# sourceMappingURL=%5Broot-of-the-server%5D__0yx8vxp._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,a)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,a)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(478500),i=e.i(761095);let s={projectName:"my-rag",embeddingProvider:"openai",embeddingApiKey:"",embeddingModelId:"openai/text-embedding-3-small",indexType:"hybrid",chunking:{chunkSize:512,chunkOverlap:64,strategy:"recursive"},vectorStore:"lancedb",storeConfig:{mode:"local",dbPath:"./.larkup/lancedb",tableName:"documents"},topK:5,serperApiKey:"",webSearchEnabled:!1,webSearchProvider:"tavily",tavilyApiKey:"",googleApiKey:"",braveApiKey:"",bingApiKey:"",exaApiKey:"",chatModelId:"",chatApiKey:"",scraperProxyServer:"",scraperProxyUsername:"",scraperProxyPassword:"",useScraperProxy:!1,webCrawlerProvider:"local",firecrawlApiKey:"",toolConfigs:{},updatedAt:new Date(0).toISOString()},o=`You are a powerful data analysis assistant with access to a knowledge base, corpus introspection tools, tabular data tools, and a code sandbox.
1
+ module.exports=[750227,(e,t,a)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,a)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},478500,(e,t,a)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},761095,(e,t,a)=>{t.exports=e.x("node:net",()=>require("node:net"))},192441,638725,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(478500),i=e.i(761095);let s={projectName:"my-larkup",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
2
 
3
3
  You have these tools:
4
4
  1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
@@ -54,6 +54,6 @@ RESPONSE FORMATTING (Analytics Style):
54
54
  - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
55
  - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
56
  - DO NOT hallucinate facts; rely strictly on the provided query results.
57
- - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,s,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),u=a.default.join(l,"servers"),d=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},m=new n.AsyncLocalStorage,p=Promise.resolve();function h(e){let t=p.then(e,e);return p=t.catch(()=>{}),t}async function g(e){return await E(),h(async()=>e(await S()??c))}function f(e){return a.default.join(u,e)}function w(e,t){return`./.larkup/servers/${e}/${t}`}async function y(e){try{return await t.promises.access(e),!0}catch{return!1}}async function v(e,r){if(await y(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||h(I)}async function I(){let e=await S();if(e)return e;if(!await y(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),i=f(n);for(let e of(await t.promises.mkdir(i,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(i,e));await v(a.default.join(l,"lancedb"),a.default.join(i,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(i,"generated-server"));let s="Default server";try{let e=a.default.join(i,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(s=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:w(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),u={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[u],mode:null})}async function b(){let e=await E(),t=m.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=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await x();if(e)return e;let t=m.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 R(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function D(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await R(t);)t++;return t}function O(e){return g(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await D(n),createdAt:o,updatedAt:o},u=f(i);await t.promises.mkdir(u,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");d=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(u,"config.json"),JSON.stringify(function(e,t,a={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:w(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,d),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:i};return await A(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}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,x,"getWorkspace",0,E,"renameServer",0,function(e,t){return g(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return A({...a,servers:r})})},"requireDataDir",0,C,"runWithServer",0,function(e,t){return m.run({serverId:e},t)},"setActiveServer",0,function(e){return g(async t=>t.servers.some(t=>t.id===e)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>A({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),s=i.customEmbeddings,o=i.embeddingModelId;if(i.customEmbedding&&!s?.length){let e=i.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...i,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,chunking:{...r.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function s(e){let r=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,s])},705252,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(192441);let i=Promise.resolve();function s(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function o(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?a.default.join(t,"documents.json"):null}async function l(){let e=await o(!1);if(!e)return[];try{let a=await t.promises.readFile(e,"utf8"),r=JSON.parse(a);if(!Array.isArray(r))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return r}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function u(e){let n=await o(!0);if(!n)return;let i=a.default.join(a.default.dirname(n),`.${a.default.basename(n)}.${process.pid}.${(0,r.randomUUID)()}.tmp`);try{await t.promises.writeFile(i,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(i,n)}catch(e){throw await t.promises.unlink(i).catch(()=>{}),e}}function d(e){let t=e.content.trim();return{id:e.id??(0,r.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function c(){let e=await l(),t=e.reduce((e,t)=>e+t.charCount,0);return{docCount:e.length,charCount:t,bySource:e.reduce((e,t)=>(e[t.source]=(e[t.source]??0)+1,e),{})}}e.s(["addCrawledDocuments",0,function(e,t){return s(async()=>{let a=await l(),r=new Set(a.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&r.has(i.url))&&i.content.trim()&&(a.push(d({...i,jobId:e})),i.url&&r.add(i.url),n++);return n>0&&await u(a),n})},"addDocument",0,function(e){return s(async()=>{let t=await l(),a=d(e);return t.push(a),await u(t),a})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await l(),a=e.map(d);return t.push(...a),await u(t),a})},"clearDocuments",0,function(){return s(async()=>{await u([])})},"corpusStats",0,c,"deleteDocument",0,function(e){return s(async()=>{let t=await l();await u(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await l(),a=new Set(e);await u(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await u(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return s(async()=>{let a=await l(),r=a.findIndex(t=>t.id===e);if(r<0)return;let n=a[r],i=void 0!==t.content?t.content.trim():n.content,s={...n,title:void 0!==t.title?t.title.trim()||"Untitled":n.title,content:i,charCount:i.length,url:void 0!==t.url?t.url||void 0:n.url,metadata:void 0!==t.metadata?t.metadata:n.metadata,status:"unindexed"};return a[r]=s,await u(a),s})},"updateDocumentsStatus",0,function(e,t){return s(async()=>{let a=await l(),r=new Set(e),n=!1;for(let e of a)r.has(e.id)&&(e.status=t,n=!0);n&&await u(a)})}])},900263,e=>{"use strict";var t=e.i(666680),a=e.i(705252),r=e.i(489694);function n(e){return Math.max(1,Math.round(4*e))}let i=["\n\n","\n",". ","? ","! "," "];function s(e,t){let a=[];for(let r=0;r<e.length;r+=t)a.push(e.slice(r,r+t));return a}var o=e.i(523554),l=e.i(585071);async function u(e){let a=new Date().toISOString(),n={id:(0,t.randomUUID)(),status:"chunking",embeddingModelId:e.embeddingModelId,vectorStore:e.vectorStore,indexType:e.indexType,totalChunks:0,processedChunks:0,docCount:0,dimensions:(0,o.expectedDimensions)(e),startedAt:a,updatedAt:a};return(0,r.claimRun)(n)}async function d(e,t,u=null){let c=Date.now(),m=async t=>{let a=await (0,r.patchRun)(t,e);if(!a)throw Error("This index run no longer owns the active index lease.");return a};try{var p,h;let e=await (0,a.readDocuments)();if(u&&"completed"===u.status&&(e=e.filter(e=>"indexed"!==e.status)),0===e.length)return void(u?await m({status:"completed",docCount:0,finishedAt:new Date().toISOString(),durationMs:Date.now()-c}):await m({status:"failed",error:"The corpus is empty. Load documents before indexing.",finishedAt:new Date().toISOString()}));await m({status:"chunking",docCount:e.length});let r=(p=e,h=t.chunking,p.flatMap(e=>(function(e,t){let a=n(t.chunkSize),r=n(t.chunkOverlap),o=e.content?.trim()||"",l=[];if(o){var u;let n;switch(t.strategy){case"sentence":n=function(e,t){let a=e.match(/[^.!?]+[.!?]+[\s]*|[^.!?]+$/g)??[e],r=[],n="";for(let e of a){let a=n+e;a.length<=t?n=a:(n&&r.push(n.trim()),n=e.length>t?"":e,e.length>t&&r.push(...s(e,t)))}return n.trim()&&r.push(n.trim()),r}(o,a);break;case"fixed":n=s(o,a);break;default:n=function e(t,a){if(t.length<=a)return[t];for(let r of i){if(!t.includes(r))continue;let n=t.split(r),i=[],s="";for(let t of n){let n=s?s+r+t:t;n.length<=a?s=n:(s&&i.push(s),t.length>a?i.push(...e(t,a)):s=t)}if(s&&i.push(s),i.length>1)return i}return s(t,a)}(o,a)}let d=(u=n.map(e=>e.trim()).filter(Boolean),r<=0||u.length<=1?u:u.map((e,t)=>{if(0===t)return e;let a=u[t-1].slice(-r);return`${a} ${e}`.trim()}));l.push(...d.map((t,a)=>({id:`${e.id}#${a}`,documentId:e.id,index:a,text:t,title:e.title,url:e.url,source:e.source,charCount:t.length,metadata:e.metadata})))}if(e.metadata?.images&&Array.isArray(e.metadata.images)){let t=l.length;for(let a of e.metadata.images)l.push({id:`${e.id}#img${a.index}`,documentId:e.id,index:t++,text:a.description||`An image extracted from ${e.title} on page ${a.pageNumber}.`,title:`${e.title} - Image ${a.index+1}`,url:a.imageUrl||e.url,source:e.source,charCount:0,metadata:{isImage:!0,imageUrl:a.imageUrl,pageNumber:a.pageNumber,originalFile:e.title,description:a.description}})}return l})(e,h)));if(0===r.length)return void(u?await m({status:"completed",finishedAt:new Date().toISOString(),durationMs:Date.now()-c}):await m({status:"failed",error:"No chunks were produced from the corpus.",finishedAt:new Date().toISOString()}));await m({totalChunks:r.length,status:"embedding"});let d=await (0,l.createAdapter)(t,async(e,t)=>{await m({warning:`Sparse model rate-limited — pausing ${e}s (retry ${t}/3)…`})}),g=(0,o.expectedDimensions)(t),f=0,w=!1,y=0;for(let e=0;e<r.length;e+=64){let a=r.slice(e,e+64);y>0&&await new Promise(e=>setTimeout(e,y)),await m({status:"embedding"});let n=1,i=[],s=g;for(;;)try{let{embeddings:e,dimensions:r}=await (0,o.embedTexts)(t,a.map(e=>e.text));i=e,r&&(s=r);break}catch(e){if((e?.status===429||e?.statusCode===429||String(e?.message??"").includes("429")||String(e?.message??"").includes("rate limit")||String(e?.message??"").toLowerCase().includes("too many requests"))&&n<=3){let e=10*n;await m({warning:`Dense model rate-limited — pausing ${e}s (retry ${n}/3)…`}),await new Promise(t=>setTimeout(t,1e3*e)),y=Math.max(y,2e3),n++}else throw e}g=s,w||(await d.init(g),u||await d.reset(),w=!0,await m({dimensions:g}));let l=a.map((e,t)=>({id:e.id,vector:i[t],text:e.text,title:e.title,url:e.url,source:e.source,documentId:e.documentId,chunkIndex:e.index,metadata:e.metadata}));await m({status:"upserting"});let c=1;for(;;)try{await d.upsert(l);break}catch(e){if((e?.status===429||e?.statusCode===429||String(e?.message??"").includes("429")||String(e?.message??"").includes("rate limit")||String(e?.message??"").toLowerCase().includes("too many requests")||String(e?.message??"").includes("RESOURCE_EXHAUSTED"))&&c<=3){let e=10*c;await m({warning:`Vector store rate-limited — pausing ${e}s (retry ${c}/3)…`}),await new Promise(t=>setTimeout(t,1e3*e)),y=Math.max(y,2e3),c++}else throw e}f+=a.length,await m({processedChunks:f,status:"embedding",warning:void 0})}await m({status:"completed",processedChunks:f,dimensions:g,finishedAt:new Date().toISOString(),durationMs:Date.now()-c}),await (0,a.updateDocumentsStatus)(e.map(e=>e.id),"indexed")}catch(a){let t=a instanceof Error?a.message:"Indexing failed unexpectedly.";await (0,r.patchRun)({status:"failed",error:t,finishedAt:new Date().toISOString(),durationMs:Date.now()-c},e)}}e.s(["createRun",0,u,"runIndexer",0,d],900263)},347683,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),u=e.i(135958),d=e.i(86520),c=e.i(970949),m=e.i(741165),p=e.i(106898),h=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var w=e.i(605998),y=e.i(686296),v=e.i(367165),S=e.i(705252),A=e.i(489694),E=e.i(900263),I=e.i(399828),b=e.i(192441);function x(e,t){let a=[];(0,I.getEmbeddingModel)(e.embeddingModelId)||e.embeddingModelId?.startsWith("custom:")||a.push("No embedding model is selected.");let r=!!e.embeddingApiKey?.trim();if(!r)if(e.embeddingModelId?.startsWith("custom:")){let t=e.embeddingModelId.slice(7),a=(e.customEmbeddings??[]).find(e=>e.modelName===t);r=!!a?.apiKey||!0}else r=!1;return r||a.push("MISSING_EMBEDDING_API_KEY"),0===t&&a.push("The corpus is empty — load documents in the Data stage."),"pinecone"===e.vectorStore&&(e.storeConfig?.apiKey?.trim()||a.push("PINECONE_API_KEY is not set."),e.storeConfig?.indexName?.trim()||a.push("A Pinecone index name is required.")),{ready:0===a.length,blockers:a}}async function C(e){return R(new URL(e.url).searchParams.get("serverId"),D)}async function R(e,t){return e?(0,b.runWithServer)(e,t):t()}async function D(){let[t,a,r]=await Promise.all([(0,v.readConfig)(),(0,S.corpusStats)(),(0,A.readRun)()]),{ready:n,blockers:i}=x(t,a.docCount),s=0;if(r?.status==="completed"){let{readDocuments:t}=await e.A(358617);s=(await t()).filter(e=>e.createdAt>r.startedAt).length}else s=a.docCount;return y.NextResponse.json({run:r,running:await (0,A.isRunning)(),docCount:a.docCount,charCount:a.charCount,ready:n,blockers:i,unindexedCount:s,config:{embeddingModelId:t.embeddingModelId,vectorStore:t.vectorStore,indexType:t.indexType,chunking:t.chunking}})}async function O(e){if(await (0,A.isRunning)())return y.NextResponse.json({error:"An indexing run is already in progress."},{status:409});let[t,a]=await Promise.all([(0,v.readConfig)(),(0,S.corpusStats)()]),{ready:r,blockers:n}=x(t,a.docCount);if(!r)return y.NextResponse.json({error:n.join(" ")||"Indexing is not ready.",blockers:n},{status:400});let i={};try{i=await e.json()}catch{}let s=!0===i.incremental,o=await (0,A.readRun)(),l=await (0,E.createRun)(t);return(0,E.runIndexer)(l.id,t,s?o:null),y.NextResponse.json({run:l},{status:202})}async function T(){let{readRun:t,patchRun:a}=await e.A(297078),r=await t();return r&&["chunking","embedding","upserting"].includes(r.status)&&await a({status:"failed",error:"Cancelled by user.",finishedAt:new Date().toISOString()}),y.NextResponse.json({success:!0})}e.s(["DELETE",0,T,"GET",0,C,"POST",0,O,"dynamic",0,"force-dynamic"],764452);var N=e.i(764452);let U=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/index/route",pathname:"/api/index",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/index/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:P,serverHooks:_}=U;async function M(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),U.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/index/route";y=y.replace(/\/index$/,"")||"/";let v=await U.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:A,params:E,nextConfig:I,parsedUrl:b,isDraftMode:x,prerenderManifest:C,routerServerContext:R,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,resolvedPathname:T,clientReferenceManifest:N,serverActionsManifest:k}=v,P=(0,o.normalizeAppPath)(y),_=!!(C.dynamicRoutes[P]||C.routes[T]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,b,!1):t.end("This page could not be found"),null);if(_&&!x){let e=!!C.routes[T],t=C.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await M();throw new f.NoFallbackError}}let j=null;!_||U.isDev||x||(j="/index"===(j=T)?"/":j);let L=!0===U.isDev||!_,q=_&&!L;k&&N&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:N,serverActionsManifest:k});let F=e.method||"GET",K=(0,i.getTracer)(),$=K.getActiveScopeSpan(),H=!!(null==R?void 0:R.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await U.getIncrementalCache(e,I,C,G);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let z={params:E,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:L,incrementalCache:W,cacheLifeProfiles:I.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>U.onRequestError(e,t,r,n,R)},sharedContext:{buildId:S,deploymentId:A}},Y=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),B=u.NextRequestAdapter.fromNodeNextRequest(Y,(0,u.signalFromNodeResponse)(t));try{let n,s=async e=>U.handle(B,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${F} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${F} ${y}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:a})=>{try{if(!G&&D&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let o=z.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=z.renderOpts.collectedTags;if(!_)return await (0,m.sendResponse)(Y,V,i,z.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,r=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await U.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,R),t}},u=await U.handleResponse({req:e,nextConfig:I,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:G});if(!_)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==w.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});G||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,p.fromNodeOutgoingHttpHeaders)(u.value.headers);return G&&_||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,m.sendResponse)(Y,V,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};H&&$?await o($):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof f.NoFallbackError||await U.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,R),_)throw t;return await (0,m.sendResponse)(Y,V,new Response(null,{status:500})),null}}e.s(["handler",0,M,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:P})},"routeModule",0,U,"serverHooks",0,_,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,P],347683)},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","server/chunks/packages_core_src_models-list_ts_03-odl5._.js"].map(t=>e.l(t))).then(()=>t(43697)))},77149,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_stream_0g9s3ok._.js","server/chunks/[root-of-the-server]__0cumfx6._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0b17yoc._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0e_itje._.js"].map(t=>e.l(t))).then(()=>t(46465)))},358617,e=>{e.v(e=>Promise.resolve().then(()=>e(705252)))},297078,e=>{e.v(e=>Promise.resolve().then(()=>e(489694)))}];
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,s,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),u=a.default.join(l,"servers"),d=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},m=new n.AsyncLocalStorage,p=Promise.resolve();function h(e){let t=p.then(e,e);return p=t.catch(()=>{}),t}async function g(e){return await E(),h(async()=>e(await S()??c))}function f(e){return a.default.join(u,e)}function w(e,t){return`./.larkup/servers/${e}/${t}`}async function y(e){try{return await t.promises.access(e),!0}catch{return!1}}async function v(e,r){if(await y(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||h(I)}async function I(){let e=await S();if(e)return e;if(!await y(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),i=f(n);for(let e of(await t.promises.mkdir(i,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(i,e));await v(a.default.join(l,"lancedb"),a.default.join(i,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(i,"generated-server"));let s="Default server";try{let e=a.default.join(i,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(s=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:w(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),u={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[u],mode:null})}async function b(){let e=await E(),t=m.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=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await x();if(e)return e;let t=m.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await O("my-larkup");return f(a.id)}async function R(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function D(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await R(t);)t++;return t}function O(e){return g(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await D(n),createdAt:o,updatedAt:o},u=f(i);await t.promises.mkdir(u,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");d=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(u,"config.json"),JSON.stringify(function(e,t,a={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",storeConfig:{mode:"local",dbPath:w(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,d),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:i};return await A(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}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,x,"getWorkspace",0,E,"renameServer",0,function(e,t){return g(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return A({...a,servers:r})})},"requireDataDir",0,C,"runWithServer",0,function(e,t){return m.run({serverId:e},t)},"setActiveServer",0,function(e){return g(async t=>t.servers.some(t=>t.id===e)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>A({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),s=i.customEmbeddings,o=i.embeddingModelId;if(i.customEmbedding&&!s?.length){let e=i.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...i,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,chunking:{...r.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function s(e){let r=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,s])},705252,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(192441);let i=Promise.resolve();function s(e){let t=i.then(e,e);return i=t.catch(()=>{}),t}async function o(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?a.default.join(t,"documents.json"):null}async function l(){let e=await o(!1);if(!e)return[];try{let a=await t.promises.readFile(e,"utf8"),r=JSON.parse(a);if(!Array.isArray(r))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return r}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function u(e){let n=await o(!0);if(!n)return;let i=a.default.join(a.default.dirname(n),`.${a.default.basename(n)}.${process.pid}.${(0,r.randomUUID)()}.tmp`);try{await t.promises.writeFile(i,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(i,n)}catch(e){throw await t.promises.unlink(i).catch(()=>{}),e}}function d(e){let t=e.content.trim();return{id:e.id??(0,r.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function c(){let e=await l(),t=e.reduce((e,t)=>e+t.charCount,0);return{docCount:e.length,charCount:t,bySource:e.reduce((e,t)=>(e[t.source]=(e[t.source]??0)+1,e),{})}}e.s(["addCrawledDocuments",0,function(e,t){return s(async()=>{let a=await l(),r=new Set(a.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&r.has(i.url))&&i.content.trim()&&(a.push(d({...i,jobId:e})),i.url&&r.add(i.url),n++);return n>0&&await u(a),n})},"addDocument",0,function(e){return s(async()=>{let t=await l(),a=d(e);return t.push(a),await u(t),a})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await l(),a=e.map(d);return t.push(...a),await u(t),a})},"clearDocuments",0,function(){return s(async()=>{await u([])})},"corpusStats",0,c,"deleteDocument",0,function(e){return s(async()=>{let t=await l();await u(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await l(),a=new Set(e);await u(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await u(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return s(async()=>{let a=await l(),r=a.findIndex(t=>t.id===e);if(r<0)return;let n=a[r],i=void 0!==t.content?t.content.trim():n.content,s={...n,title:void 0!==t.title?t.title.trim()||"Untitled":n.title,content:i,charCount:i.length,url:void 0!==t.url?t.url||void 0:n.url,metadata:void 0!==t.metadata?t.metadata:n.metadata,status:"unindexed"};return a[r]=s,await u(a),s})},"updateDocumentsStatus",0,function(e,t){return s(async()=>{let a=await l(),r=new Set(e),n=!1;for(let e of a)r.has(e.id)&&(e.status=t,n=!0);n&&await u(a)})}])},900263,e=>{"use strict";var t=e.i(666680),a=e.i(705252),r=e.i(489694);function n(e){return Math.max(1,Math.round(4*e))}let i=["\n\n","\n",". ","? ","! "," "];function s(e,t){let a=[];for(let r=0;r<e.length;r+=t)a.push(e.slice(r,r+t));return a}var o=e.i(523554),l=e.i(585071);async function u(e){let a=new Date().toISOString(),n={id:(0,t.randomUUID)(),status:"chunking",embeddingModelId:e.embeddingModelId,vectorStore:e.vectorStore,indexType:e.indexType,totalChunks:0,processedChunks:0,docCount:0,dimensions:(0,o.expectedDimensions)(e),startedAt:a,updatedAt:a};return(0,r.claimRun)(n)}async function d(e,t,u=null){let c=Date.now(),m=async t=>{let a=await (0,r.patchRun)(t,e);if(!a)throw Error("This index run no longer owns the active index lease.");return a};try{var p,h;let e=await (0,a.readDocuments)();if(u&&"completed"===u.status&&(e=e.filter(e=>"indexed"!==e.status)),0===e.length)return void(u?await m({status:"completed",docCount:0,finishedAt:new Date().toISOString(),durationMs:Date.now()-c}):await m({status:"failed",error:"The corpus is empty. Load documents before indexing.",finishedAt:new Date().toISOString()}));await m({status:"chunking",docCount:e.length});let r=(p=e,h=t.chunking,p.flatMap(e=>(function(e,t){let a=n(t.chunkSize),r=n(t.chunkOverlap),o=e.content?.trim()||"",l=[];if(o){var u;let n;switch(t.strategy){case"sentence":n=function(e,t){let a=e.match(/[^.!?]+[.!?]+[\s]*|[^.!?]+$/g)??[e],r=[],n="";for(let e of a){let a=n+e;a.length<=t?n=a:(n&&r.push(n.trim()),n=e.length>t?"":e,e.length>t&&r.push(...s(e,t)))}return n.trim()&&r.push(n.trim()),r}(o,a);break;case"fixed":n=s(o,a);break;default:n=function e(t,a){if(t.length<=a)return[t];for(let r of i){if(!t.includes(r))continue;let n=t.split(r),i=[],s="";for(let t of n){let n=s?s+r+t:t;n.length<=a?s=n:(s&&i.push(s),t.length>a?i.push(...e(t,a)):s=t)}if(s&&i.push(s),i.length>1)return i}return s(t,a)}(o,a)}let d=(u=n.map(e=>e.trim()).filter(Boolean),r<=0||u.length<=1?u:u.map((e,t)=>{if(0===t)return e;let a=u[t-1].slice(-r);return`${a} ${e}`.trim()}));l.push(...d.map((t,a)=>({id:`${e.id}#${a}`,documentId:e.id,index:a,text:t,title:e.title,url:e.url,source:e.source,charCount:t.length,metadata:e.metadata})))}if(e.metadata?.images&&Array.isArray(e.metadata.images)){let t=l.length;for(let a of e.metadata.images)l.push({id:`${e.id}#img${a.index}`,documentId:e.id,index:t++,text:a.description||`An image extracted from ${e.title} on page ${a.pageNumber}.`,title:`${e.title} - Image ${a.index+1}`,url:a.imageUrl||e.url,source:e.source,charCount:0,metadata:{isImage:!0,imageUrl:a.imageUrl,pageNumber:a.pageNumber,originalFile:e.title,description:a.description}})}return l})(e,h)));if(0===r.length)return void(u?await m({status:"completed",finishedAt:new Date().toISOString(),durationMs:Date.now()-c}):await m({status:"failed",error:"No chunks were produced from the corpus.",finishedAt:new Date().toISOString()}));await m({totalChunks:r.length,status:"embedding"});let d=await (0,l.createAdapter)(t,async(e,t)=>{await m({warning:`Sparse model rate-limited — pausing ${e}s (retry ${t}/3)…`})}),g=(0,o.expectedDimensions)(t),f=0,w=!1,y=0;for(let e=0;e<r.length;e+=64){let a=r.slice(e,e+64);y>0&&await new Promise(e=>setTimeout(e,y)),await m({status:"embedding"});let n=1,i=[],s=g;for(;;)try{let{embeddings:e,dimensions:r}=await (0,o.embedTexts)(t,a.map(e=>e.text));i=e,r&&(s=r);break}catch(e){if((e?.status===429||e?.statusCode===429||String(e?.message??"").includes("429")||String(e?.message??"").includes("rate limit")||String(e?.message??"").toLowerCase().includes("too many requests"))&&n<=3){let e=10*n;await m({warning:`Dense model rate-limited — pausing ${e}s (retry ${n}/3)…`}),await new Promise(t=>setTimeout(t,1e3*e)),y=Math.max(y,2e3),n++}else throw e}g=s,w||(await d.init(g),u||await d.reset(),w=!0,await m({dimensions:g}));let l=a.map((e,t)=>({id:e.id,vector:i[t],text:e.text,title:e.title,url:e.url,source:e.source,documentId:e.documentId,chunkIndex:e.index,metadata:e.metadata}));await m({status:"upserting"});let c=1;for(;;)try{await d.upsert(l);break}catch(e){if((e?.status===429||e?.statusCode===429||String(e?.message??"").includes("429")||String(e?.message??"").includes("rate limit")||String(e?.message??"").toLowerCase().includes("too many requests")||String(e?.message??"").includes("RESOURCE_EXHAUSTED"))&&c<=3){let e=10*c;await m({warning:`Vector store rate-limited — pausing ${e}s (retry ${c}/3)…`}),await new Promise(t=>setTimeout(t,1e3*e)),y=Math.max(y,2e3),c++}else throw e}f+=a.length,await m({processedChunks:f,status:"embedding",warning:void 0})}await m({status:"completed",processedChunks:f,dimensions:g,finishedAt:new Date().toISOString(),durationMs:Date.now()-c}),await (0,a.updateDocumentsStatus)(e.map(e=>e.id),"indexed")}catch(a){let t=a instanceof Error?a.message:"Indexing failed unexpectedly.";await (0,r.patchRun)({status:"failed",error:t,finishedAt:new Date().toISOString(),durationMs:Date.now()-c},e)}}e.s(["createRun",0,u,"runIndexer",0,d],900263)},347683,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),u=e.i(135958),d=e.i(86520),c=e.i(970949),m=e.i(741165),p=e.i(106898),h=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var w=e.i(605998),y=e.i(686296),v=e.i(367165),S=e.i(705252),A=e.i(489694),E=e.i(900263),I=e.i(399828),b=e.i(192441);function x(e,t){let a=[];(0,I.getEmbeddingModel)(e.embeddingModelId)||e.embeddingModelId?.startsWith("custom:")||a.push("No embedding model is selected.");let r=!!e.embeddingApiKey?.trim();if(!r)if(e.embeddingModelId?.startsWith("custom:")){let t=e.embeddingModelId.slice(7),a=(e.customEmbeddings??[]).find(e=>e.modelName===t);r=!!a?.apiKey||!0}else r=!1;return r||a.push("MISSING_EMBEDDING_API_KEY"),0===t&&a.push("The corpus is empty — load documents in the Data stage."),"pinecone"===e.vectorStore&&(e.storeConfig?.apiKey?.trim()||a.push("PINECONE_API_KEY is not set."),e.storeConfig?.indexName?.trim()||a.push("A Pinecone index name is required.")),{ready:0===a.length,blockers:a}}async function C(e){return R(new URL(e.url).searchParams.get("serverId"),D)}async function R(e,t){return e?(0,b.runWithServer)(e,t):t()}async function D(){let[t,a,r]=await Promise.all([(0,v.readConfig)(),(0,S.corpusStats)(),(0,A.readRun)()]),{ready:n,blockers:i}=x(t,a.docCount),s=0;if(r?.status==="completed"){let{readDocuments:t}=await e.A(358617);s=(await t()).filter(e=>e.createdAt>r.startedAt).length}else s=a.docCount;return y.NextResponse.json({run:r,running:await (0,A.isRunning)(),docCount:a.docCount,charCount:a.charCount,ready:n,blockers:i,unindexedCount:s,config:{embeddingModelId:t.embeddingModelId,vectorStore:t.vectorStore,indexType:t.indexType,chunking:t.chunking}})}async function O(e){if(await (0,A.isRunning)())return y.NextResponse.json({error:"An indexing run is already in progress."},{status:409});let[t,a]=await Promise.all([(0,v.readConfig)(),(0,S.corpusStats)()]),{ready:r,blockers:n}=x(t,a.docCount);if(!r)return y.NextResponse.json({error:n.join(" ")||"Indexing is not ready.",blockers:n},{status:400});let i={};try{i=await e.json()}catch{}let s=!0===i.incremental,o=await (0,A.readRun)(),l=await (0,E.createRun)(t);return(0,E.runIndexer)(l.id,t,s?o:null),y.NextResponse.json({run:l},{status:202})}async function T(){let{readRun:t,patchRun:a}=await e.A(297078),r=await t();return r&&["chunking","embedding","upserting"].includes(r.status)&&await a({status:"failed",error:"Cancelled by user.",finishedAt:new Date().toISOString()}),y.NextResponse.json({success:!0})}e.s(["DELETE",0,T,"GET",0,C,"POST",0,O,"dynamic",0,"force-dynamic"],764452);var N=e.i(764452);let U=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/index/route",pathname:"/api/index",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/index/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:P,serverHooks:_}=U;async function M(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),U.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/index/route";y=y.replace(/\/index$/,"")||"/";let v=await U.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:A,params:E,nextConfig:I,parsedUrl:b,isDraftMode:x,prerenderManifest:C,routerServerContext:R,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,resolvedPathname:T,clientReferenceManifest:N,serverActionsManifest:k}=v,P=(0,o.normalizeAppPath)(y),_=!!(C.dynamicRoutes[P]||C.routes[T]),M=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,b,!1):t.end("This page could not be found"),null);if(_&&!x){let e=!!C.routes[T],t=C.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await M();throw new f.NoFallbackError}}let j=null;!_||U.isDev||x||(j="/index"===(j=T)?"/":j);let L=!0===U.isDev||!_,q=_&&!L;k&&N&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:N,serverActionsManifest:k});let F=e.method||"GET",K=(0,i.getTracer)(),$=K.getActiveScopeSpan(),H=!!(null==R?void 0:R.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await U.getIncrementalCache(e,I,C,G);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let z={params:E,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:L,incrementalCache:W,cacheLifeProfiles:I.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>U.onRequestError(e,t,r,n,R)},sharedContext:{buildId:S,deploymentId:A}},Y=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),B=u.NextRequestAdapter.fromNodeNextRequest(Y,(0,u.signalFromNodeResponse)(t));try{let n,s=async e=>U.handle(B,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${F} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${F} ${y}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:a})=>{try{if(!G&&D&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let o=z.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=z.renderOpts.collectedTags;if(!_)return await (0,m.sendResponse)(Y,V,i,z.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,r=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await U.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,R),t}},u=await U.handleResponse({req:e,nextConfig:I,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:G});if(!_)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==w.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});G||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,p.fromNodeOutgoingHttpHeaders)(u.value.headers);return G&&_||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,m.sendResponse)(Y,V,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};H&&$?await o($):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof f.NoFallbackError||await U.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,R),_)throw t;return await (0,m.sendResponse)(Y,V,new Response(null,{status:500})),null}}e.s(["handler",0,M,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:P})},"routeModule",0,U,"serverHooks",0,_,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,P],347683)},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","server/chunks/packages_core_src_models-list_ts_03-odl5._.js"].map(t=>e.l(t))).then(()=>t(43697)))},77149,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_stream_0g9s3ok._.js","server/chunks/[root-of-the-server]__0cumfx6._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0b17yoc._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0e_itje._.js"].map(t=>e.l(t))).then(()=>t(46465)))},358617,e=>{e.v(e=>Promise.resolve().then(()=>e(705252)))},297078,e=>{e.v(e=>Promise.resolve().then(()=>e(489694)))}];
58
58
 
59
59
  //# sourceMappingURL=%5Broot-of-the-server%5D__0zh8t6z._.js.map
@@ -1,4 +1,4 @@
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),o=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()},s=`You are a powerful data analysis assistant with access to a knowledge base, corpus introspection tools, tabular data tools, and a code sandbox.
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),o=e.i(761095);let i={projectName:"my-larkup",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
2
 
3
3
  You have these tools:
4
4
  1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
@@ -54,6 +54,6 @@ RESPONSE FORMATTING (Analytics Style):
54
54
  - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
55
  - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
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,s],638725);let l=r.default.join(process.cwd(),".larkup"),c=r.default.join(l,"servers"),u=r.default.join(l,"workspace.json"),d={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,f=Promise.resolve();function m(e){let t=f.then(e,e);return f=t.catch(()=>{}),t}async function h(e){return await O(),m(async()=>e(await b()??d))}function g(e){return r.default.join(c,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 b(){try{let e=await t.promises.readFile(u,"utf8");return{...d,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function O(){let e=await b();return e||m(E)}async function E(){let e=await b();if(e)return e;if(!await w(r.default.join(l,"config.json")))return A(d);let n=(0,a.randomUUID)(),o=g(n);for(let e of(await t.promises.mkdir(o,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(r.default.join(l,e),r.default.join(o,e));await v(r.default.join(l,"lancedb"),r.default.join(o,"lancedb")),await v(r.default.join(l,"generated-server"),r.default.join(o,"generated-server"));let i="Default server";try{let e=r.default.join(o,"config.json"),a=JSON.parse(await t.promises.readFile(e,"utf8"));a.projectName&&(i=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(),c={id:n,name:i,port:8080,createdAt:s,updatedAt:s};return A({username:null,activeServerId:n,servers:[c],mode:null})}async function T(){let e=await O(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function S(){let e=await T();if(!e)return null;let r=g(e.id);return await t.promises.mkdir(r,{recursive:!0}),r}async function k(){let e=await S();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:r}=await I("My RAG server");return g(r.id)}async function C(e){return new Promise(t=>{let r=o.default.createServer();r.once("error",()=>t(!1)),r.once("listening",()=>{r.close(()=>t(!0))}),r.listen(e,"127.0.0.1")})}async function x(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await C(t);)t++;return t}function I(e){return h(async n=>{let o=(0,a.randomUUID)(),s=new Date().toISOString(),l={id:o,name:e.trim()||"Untitled server",port:await x(n),createdAt:s,updatedAt:s},c=g(o);await t.promises.mkdir(c,{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(c,"config.json"),JSON.stringify(function(e,t,r={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:y(e,"lancedb")},embeddingApiKey:r.embeddingApiKey??i.embeddingApiKey,customEmbeddings:r.customEmbeddings??i.customEmbeddings,chatApiKey:r.chatApiKey??i.chatApiKey,customChatModels:r.customChatModels??i.customChatModels,serperApiKey:r.serperApiKey??i.serperApiKey,firecrawlApiKey:r.firecrawlApiKey??i.firecrawlApiKey,updatedAt:new Date().toISOString()}}(o,l.name,u),null,2),"utf8");let d={...n,servers:[...n.servers,l],activeServerId:o};return await A(d),{workspace:d,server:l}})}e.s(["createServer",0,I,"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}),A({...r,servers:a,activeServerId:n})})},"getActiveServer",0,T,"getDataDir",0,S,"getWorkspace",0,O,"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 A({...r,servers:a})})},"requireDataDir",0,k,"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)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return h(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return h(async t=>A({...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 o(){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"),o=JSON.parse(n),i=o.customEmbeddings,s=o.embeddingModelId;if(o.customEmbedding&&!i?.length){let e=o.customEmbedding;i=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...o,embeddingModelId:s??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...a.DEFAULT_CONFIG.chunking,...o.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...o.storeConfig}};return delete l.customEmbedding,l}catch{return a.DEFAULT_CONFIG}}async function i(e){let a=await (0,n.requireDataDir)(),o={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(o,null,2),"utf8"),o}e.s(["readConfig",0,o,"writeConfig",0,i])},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,o=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},l={VercelOidcTokenError:()=>u};for(var c in l)a(s,c,{get:l[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))i.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,o=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},l={AccessTokenMissingError:()=>u,RefreshAccessTokenFailedError:()=>d};for(var c in l)a(s,c,{get:l[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))i.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,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))l.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=o(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={findRootDir:()=>w,getUserDataDir:()=>v};for(var f in p)n(d,f,{get:p[f],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var m=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!==m.default.dirname(e);){let t=m.default.join(e,".vercel");if(h.default.existsSync(t))return e;e=m.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 m.default.join(g.default.homedir(),"Library/Application Support");case"linux":return m.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,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))l.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=o(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={isValidAccessToken:()=>b,readAuthConfig:()=>w,writeAuthConfig:()=>v};for(var f in p)n(d,f,{get:p[f],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var m=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(!m.existsSync(e))return null;let t=m.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);m.existsSync(r)||m.mkdirSync(r,{mode:504,recursive:!0}),m.writeFileSync(t,JSON.stringify(e,null,2),{mode:384})}function b(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,o=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},l={processTokenResponse:()=>h,refreshTokenRequest:()=>m};for(var c in l)a(s,c,{get:l[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))i.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 f(){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 m(e){let t=await f();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,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))l.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=o(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={assertVercelOidcTokenResponse:()=>T,findProjectInfo:()=>S,getTokenPayload:()=>x,getVercelDataDir:()=>A,getVercelOidcToken:()=>E,getVercelToken:()=>O,isExpired:()=>I,loadToken:()=>C,saveToken:()=>k};for(var f in p)n(d,f,{get:p[f],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var m=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),b=e.r(33015);function A(){let e=(0,y.getUserDataDir)();return e?m.join(e,"com.vercel.cli"):null}async function O(e){let t=(0,w.readAuthConfig)();if(!t?.token)throw new b.AccessTokenMissingError;if((0,w.isValidAccessToken)(t,e?.expirationBufferMs))return t.token;if(!t.refreshToken)throw(0,w.writeAuthConfig)({}),new b.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 b.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 b.AccessTokenMissingError||e instanceof b.RefreshAccessTokenFailedError)throw e;throw new b.RefreshAccessTokenFailedError(e)}}async function E(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 o=await n.json();return T(o),o}function T(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 S(){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=m.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 k(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=m.join(r,"com.vercel.token",`${t}.json`),n=JSON.stringify(e);h.mkdirSync(m.dirname(a),{mode:504,recursive:!0}),h.writeFileSync(a,n),h.chmodSync(a,432)}function C(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=m.join(t,"com.vercel.token",`${e}.json`);if(!h.existsSync(r))return null;let a=JSON.parse(h.readFileSync(r,"utf8"));return T(a),a}function x(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 I(e,t=0){return 1e3*e.exp<Date.now()+t}},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:o[e]||e.charAt(0).toUpperCase()+e.slice(1),modelCount:t})).sort((e,t)=>t.modelCount-e.modelCount)}let o={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),o=e.i(150036),i=e.i(380766),s=e.i(898201),l=e.i(188184),c=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,c,u,d=[]){if(c.startsWith("custom:")){let e=c.slice(7),t=d.find(t=>t.modelName===e);if(!t)throw Error(`Custom chat model "${e}" is not configured.`);return(0,l.createOpenAICompatible)({name:"custom_chat_provider",baseURL:t.baseUrl,apiKey:t.apiKey||u||void 0})(t.modelName)}let p=c.includes("/")?c.split("/").slice(1).join("/"):c;switch(e){case"google":return(0,o.createGoogleGenerativeAI)({apiKey:u})(p);case"cohere":return(0,r.createCohere)({apiKey:u})(p);case"mistral":return(0,i.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})(c);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,o=e?t.filter(t=>t.tags?.includes(e)):t,i=o.length>0?o:t;n=(0,c.getDefaultChatModel)(i.map(c.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}}])},959128,e=>{"use strict";var t=e.i(850492),r=e.i(891119),a=e.i(697373),n=e.i(765700),o=e.i(601263),i=e.i(706859),s=e.i(947547),l=e.i(819797),c=e.i(135958),u=e.i(86520),d=e.i(970949),p=e.i(741165),f=e.i(106898),m=e.i(454415),h=e.i(37125),g=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(686296),v=e.i(506848),b=e.i(367165),A=e.i(844915),O=e.i(192441),E=e.i(675101);async function T(e){let t=new URL(e.url).searchParams.get("serverId"),r=()=>S(e);return t?(0,O.runWithServer)(t,r):r()}async function S(t){try{let{base64:r,base64Images:a,prompt:n}=await t.json(),o=(a?.length?a:r?[r]:[]).slice(0,6);if(0===o.length)return w.NextResponse.json({error:"Missing image data"},{status:400});let i=await (0,b.readConfig)(),s=await (0,A.getModelsByType)("language"),l=(0,E.resolveConfiguredChatModel)(i,s,{requiredTag:"vision"}),c=(0,E.createChatModel)(l.provider,l.modelId,l.apiKey,i.customChatModels),{text:u,usage:d}=await (0,v.generateText)({model:c,abortSignal:t.signal,messages:[{role:"user",content:[{type:"text",text:n||'Provide a very brief, high-level summary of what this image contains (e.g., "A database ER diagram about films and actors", "A bar chart showing quarterly revenue"). Do NOT extract all text or exhaustively describe relationships. Keep it under 2 sentences.'},...o.map(e=>({type:"image",image:e.startsWith("data:")?e:`data:image/jpeg;base64,${e}`}))]}]}),{estimateCost:p,trackUsageEvent:f}=await e.A(313282);return f({type:"media_processing",mediaType:"image",modelId:l.modelId,provider:l.provider,promptTokens:d.inputTokens??0,completionTokens:d.outputTokens??0,totalTokens:d.totalTokens??0,estimatedCost:p(l.modelId,d.inputTokens??0,d.outputTokens??0),timestamp:new Date().toISOString()}),w.NextResponse.json({description:u})}catch(e){return console.error("Image description failed:",e),w.NextResponse.json({error:e.message},{status:500})}}e.s(["POST",0,T,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],158825);var k=e.i(158825);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/describe-image/route",pathname:"/api/describe-image",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/describe-image/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:I,serverHooks:R}=C;async function j(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/describe-image/route";w=w.replace(/\/index$/,"")||"/";let v=await C.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:b,deploymentId:A,params:O,nextConfig:E,parsedUrl:T,isDraftMode:S,prerenderManifest:k,routerServerContext:x,isOnDemandRevalidate:I,revalidateOnlyGenerated:R,resolvedPathname:j,clientReferenceManifest:D,serverActionsManifest:N}=v,P=(0,s.normalizeAppPath)(w),_=!!(k.dynamicRoutes[P]||k.routes[j]),M=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,T,!1):t.end("This page could not be found"),null);if(_&&!S){let e=!!k.routes[j],t=k.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await M();throw new g.NoFallbackError}}let U=null;!_||C.isDev||S||(U="/index"===(U=j)?"/":U);let L=!0===C.isDev||!_,F=_&&!L;N&&D&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:D,serverActionsManifest:N});let q=e.method||"GET",K=(0,o.getTracer)(),V=K.getActiveScopeSpan(),H=!!(null==x?void 0:x.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,E,k,$);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let z={params:O,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:L,incrementalCache:G,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>C.onRequestError(e,t,a,n,x)},sharedContext:{buildId:b,deploymentId:A}},W=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),Y=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let n,i=async e=>C.handle(Y,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${q} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${q} ${w}`)}),s=async n=>{var o,s;let l=async({previousCacheEntry:r})=>{try{if(!$&&I&&R&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let s=z.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=z.renderOpts.collectedTags;if(!_)return await (0,p.sendResponse)(W,B,o,z.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,a=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:I})},!1,x),t}},c=await C.handleResponse({req:e,nextConfig:E,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:R,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:$});if(!_)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(s=c.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",I?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return $&&_||u.delete(h.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(W,B,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};H&&V?await s(V):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(u.BaseServerSpan.handleRequest,{spanName:`${q} ${w}`,kind:o.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},s),void 0,!H))}catch(t){if(t instanceof g.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:I})},!1,x),_)throw t;return await (0,p.sendResponse)(W,B,new Response(null,{status:500})),null}}e.s(["handler",0,j,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:I})},"routeModule",0,C,"serverHooks",0,R,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,I],959128)},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)))}];
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,s],638725);let l=r.default.join(process.cwd(),".larkup"),c=r.default.join(l,"servers"),u=r.default.join(l,"workspace.json"),d={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,f=Promise.resolve();function m(e){let t=f.then(e,e);return f=t.catch(()=>{}),t}async function h(e){return await O(),m(async()=>e(await b()??d))}function g(e){return r.default.join(c,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 b(){try{let e=await t.promises.readFile(u,"utf8");return{...d,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function O(){let e=await b();return e||m(E)}async function E(){let e=await b();if(e)return e;if(!await w(r.default.join(l,"config.json")))return A(d);let n=(0,a.randomUUID)(),o=g(n);for(let e of(await t.promises.mkdir(o,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(r.default.join(l,e),r.default.join(o,e));await v(r.default.join(l,"lancedb"),r.default.join(o,"lancedb")),await v(r.default.join(l,"generated-server"),r.default.join(o,"generated-server"));let i="Default server";try{let e=r.default.join(o,"config.json"),a=JSON.parse(await t.promises.readFile(e,"utf8"));a.projectName&&(i=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(),c={id:n,name:i,port:8080,createdAt:s,updatedAt:s};return A({username:null,activeServerId:n,servers:[c],mode:null})}async function T(){let e=await O(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function S(){let e=await T();if(!e)return null;let r=g(e.id);return await t.promises.mkdir(r,{recursive:!0}),r}async function k(){let e=await S();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:r}=await I("my-larkup");return g(r.id)}async function C(e){return new Promise(t=>{let r=o.default.createServer();r.once("error",()=>t(!1)),r.once("listening",()=>{r.close(()=>t(!0))}),r.listen(e,"127.0.0.1")})}async function x(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await C(t);)t++;return t}function I(e){return h(async n=>{let o=(0,a.randomUUID)(),s=new Date().toISOString(),l={id:o,name:e.trim()||"Untitled server",port:await x(n),createdAt:s,updatedAt:s},c=g(o);await t.promises.mkdir(c,{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(c,"config.json"),JSON.stringify(function(e,t,r={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",storeConfig:{mode:"local",dbPath:y(e,"lancedb")},embeddingApiKey:r.embeddingApiKey??i.embeddingApiKey,customEmbeddings:r.customEmbeddings??i.customEmbeddings,chatApiKey:r.chatApiKey??i.chatApiKey,customChatModels:r.customChatModels??i.customChatModels,serperApiKey:r.serperApiKey??i.serperApiKey,firecrawlApiKey:r.firecrawlApiKey??i.firecrawlApiKey,updatedAt:new Date().toISOString()}}(o,l.name,u),null,2),"utf8");let d={...n,servers:[...n.servers,l],activeServerId:o};return await A(d),{workspace:d,server:l}})}e.s(["createServer",0,I,"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}),A({...r,servers:a,activeServerId:n})})},"getActiveServer",0,T,"getDataDir",0,S,"getWorkspace",0,O,"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 A({...r,servers:a})})},"requireDataDir",0,k,"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)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return h(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return h(async t=>A({...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 o(){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"),o=JSON.parse(n),i=o.customEmbeddings,s=o.embeddingModelId;if(o.customEmbedding&&!i?.length){let e=o.customEmbedding;i=[e],"custom"===s&&(s=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...o,embeddingModelId:s??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...a.DEFAULT_CONFIG.chunking,...o.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...o.storeConfig}};return delete l.customEmbedding,l}catch{return a.DEFAULT_CONFIG}}async function i(e){let a=await (0,n.requireDataDir)(),o={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(o,null,2),"utf8"),o}e.s(["readConfig",0,o,"writeConfig",0,i])},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,o=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},l={VercelOidcTokenError:()=>u};for(var c in l)a(s,c,{get:l[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))i.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,o=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},l={AccessTokenMissingError:()=>u,RefreshAccessTokenFailedError:()=>d};for(var c in l)a(s,c,{get:l[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))i.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,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))l.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=o(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={findRootDir:()=>w,getUserDataDir:()=>v};for(var f in p)n(d,f,{get:p[f],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var m=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!==m.default.dirname(e);){let t=m.default.join(e,".vercel");if(h.default.existsSync(t))return e;e=m.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 m.default.join(g.default.homedir(),"Library/Application Support");case"linux":return m.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,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))l.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=o(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={isValidAccessToken:()=>b,readAuthConfig:()=>w,writeAuthConfig:()=>v};for(var f in p)n(d,f,{get:p[f],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var m=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(!m.existsSync(e))return null;let t=m.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);m.existsSync(r)||m.mkdirSync(r,{mode:504,recursive:!0}),m.writeFileSync(t,JSON.stringify(e,null,2),{mode:384})}function b(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,o=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s={},l={processTokenResponse:()=>h,refreshTokenRequest:()=>m};for(var c in l)a(s,c,{get:l[c],enumerable:!0});t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of o(t))i.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 f(){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 m(e){let t=await f();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,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,c=(e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of i(t))l.call(e,s)||s===r||n(e,s,{get:()=>t[s],enumerable:!(a=o(t,s))||a.enumerable});return e},u=(e,t,r)=>(r=null!=e?a(s(e)):{},c(!t&&e&&e.__esModule?r:n(r,"default",{value:e,enumerable:!0}),e)),d={},p={assertVercelOidcTokenResponse:()=>T,findProjectInfo:()=>S,getTokenPayload:()=>x,getVercelDataDir:()=>A,getVercelOidcToken:()=>E,getVercelToken:()=>O,isExpired:()=>I,loadToken:()=>C,saveToken:()=>k};for(var f in p)n(d,f,{get:p[f],enumerable:!0});t.exports=c(n({},"__esModule",{value:!0}),d);var m=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),b=e.r(33015);function A(){let e=(0,y.getUserDataDir)();return e?m.join(e,"com.vercel.cli"):null}async function O(e){let t=(0,w.readAuthConfig)();if(!t?.token)throw new b.AccessTokenMissingError;if((0,w.isValidAccessToken)(t,e?.expirationBufferMs))return t.token;if(!t.refreshToken)throw(0,w.writeAuthConfig)({}),new b.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 b.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 b.AccessTokenMissingError||e instanceof b.RefreshAccessTokenFailedError)throw e;throw new b.RefreshAccessTokenFailedError(e)}}async function E(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 o=await n.json();return T(o),o}function T(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 S(){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=m.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 k(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=m.join(r,"com.vercel.token",`${t}.json`),n=JSON.stringify(e);h.mkdirSync(m.dirname(a),{mode:504,recursive:!0}),h.writeFileSync(a,n),h.chmodSync(a,432)}function C(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=m.join(t,"com.vercel.token",`${e}.json`);if(!h.existsSync(r))return null;let a=JSON.parse(h.readFileSync(r,"utf8"));return T(a),a}function x(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 I(e,t=0){return 1e3*e.exp<Date.now()+t}},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:o[e]||e.charAt(0).toUpperCase()+e.slice(1),modelCount:t})).sort((e,t)=>t.modelCount-e.modelCount)}let o={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),o=e.i(150036),i=e.i(380766),s=e.i(898201),l=e.i(188184),c=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,c,u,d=[]){if(c.startsWith("custom:")){let e=c.slice(7),t=d.find(t=>t.modelName===e);if(!t)throw Error(`Custom chat model "${e}" is not configured.`);return(0,l.createOpenAICompatible)({name:"custom_chat_provider",baseURL:t.baseUrl,apiKey:t.apiKey||u||void 0})(t.modelName)}let p=c.includes("/")?c.split("/").slice(1).join("/"):c;switch(e){case"google":return(0,o.createGoogleGenerativeAI)({apiKey:u})(p);case"cohere":return(0,r.createCohere)({apiKey:u})(p);case"mistral":return(0,i.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})(c);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,o=e?t.filter(t=>t.tags?.includes(e)):t,i=o.length>0?o:t;n=(0,c.getDefaultChatModel)(i.map(c.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}}])},959128,e=>{"use strict";var t=e.i(850492),r=e.i(891119),a=e.i(697373),n=e.i(765700),o=e.i(601263),i=e.i(706859),s=e.i(947547),l=e.i(819797),c=e.i(135958),u=e.i(86520),d=e.i(970949),p=e.i(741165),f=e.i(106898),m=e.i(454415),h=e.i(37125),g=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(686296),v=e.i(506848),b=e.i(367165),A=e.i(844915),O=e.i(192441),E=e.i(675101);async function T(e){let t=new URL(e.url).searchParams.get("serverId"),r=()=>S(e);return t?(0,O.runWithServer)(t,r):r()}async function S(t){try{let{base64:r,base64Images:a,prompt:n}=await t.json(),o=(a?.length?a:r?[r]:[]).slice(0,6);if(0===o.length)return w.NextResponse.json({error:"Missing image data"},{status:400});let i=await (0,b.readConfig)(),s=await (0,A.getModelsByType)("language"),l=(0,E.resolveConfiguredChatModel)(i,s,{requiredTag:"vision"}),c=(0,E.createChatModel)(l.provider,l.modelId,l.apiKey,i.customChatModels),{text:u,usage:d}=await (0,v.generateText)({model:c,abortSignal:t.signal,messages:[{role:"user",content:[{type:"text",text:n||'Provide a very brief, high-level summary of what this image contains (e.g., "A database ER diagram about films and actors", "A bar chart showing quarterly revenue"). Do NOT extract all text or exhaustively describe relationships. Keep it under 2 sentences.'},...o.map(e=>({type:"image",image:e.startsWith("data:")?e:`data:image/jpeg;base64,${e}`}))]}]}),{estimateCost:p,trackUsageEvent:f}=await e.A(313282);return f({type:"media_processing",mediaType:"image",modelId:l.modelId,provider:l.provider,promptTokens:d.inputTokens??0,completionTokens:d.outputTokens??0,totalTokens:d.totalTokens??0,estimatedCost:p(l.modelId,d.inputTokens??0,d.outputTokens??0),timestamp:new Date().toISOString()}),w.NextResponse.json({description:u})}catch(e){return console.error("Image description failed:",e),w.NextResponse.json({error:e.message},{status:500})}}e.s(["POST",0,T,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],158825);var k=e.i(158825);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/describe-image/route",pathname:"/api/describe-image",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/describe-image/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:I,serverHooks:R}=C;async function j(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),C.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/describe-image/route";w=w.replace(/\/index$/,"")||"/";let v=await C.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:b,deploymentId:A,params:O,nextConfig:E,parsedUrl:T,isDraftMode:S,prerenderManifest:k,routerServerContext:x,isOnDemandRevalidate:I,revalidateOnlyGenerated:R,resolvedPathname:j,clientReferenceManifest:D,serverActionsManifest:N}=v,P=(0,s.normalizeAppPath)(w),_=!!(k.dynamicRoutes[P]||k.routes[j]),M=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,T,!1):t.end("This page could not be found"),null);if(_&&!S){let e=!!k.routes[j],t=k.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await M();throw new g.NoFallbackError}}let U=null;!_||C.isDev||S||(U="/index"===(U=j)?"/":U);let L=!0===C.isDev||!_,F=_&&!L;N&&D&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:D,serverActionsManifest:N});let q=e.method||"GET",K=(0,o.getTracer)(),V=K.getActiveScopeSpan(),H=!!(null==x?void 0:x.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,E,k,$);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let z={params:O,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:L,incrementalCache:G,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>C.onRequestError(e,t,a,n,x)},sharedContext:{buildId:b,deploymentId:A}},W=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),Y=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let n,i=async e=>C.handle(Y,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${q} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${q} ${w}`)}),s=async n=>{var o,s;let l=async({previousCacheEntry:r})=>{try{if(!$&&I&&R&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let s=z.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=z.renderOpts.collectedTags;if(!_)return await (0,p.sendResponse)(W,B,o,z.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,a=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:I})},!1,x),t}},c=await C.handleResponse({req:e,nextConfig:E,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:R,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:$});if(!_)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(s=c.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",I?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return $&&_||u.delete(h.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(W,B,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};H&&V?await s(V):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(u.BaseServerSpan.handleRequest,{spanName:`${q} ${w}`,kind:o.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},s),void 0,!H))}catch(t){if(t instanceof g.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:I})},!1,x),_)throw t;return await (0,p.sendResponse)(W,B,new Response(null,{status:500})),null}}e.s(["handler",0,j,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:I})},"routeModule",0,C,"serverHooks",0,R,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,I],959128)},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)))}];
58
58
 
59
59
  //# sourceMappingURL=%5Broot-of-the-server%5D__0~q2fro._.js.map
@@ -1,4 +1,4 @@
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.
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-larkup",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
2
 
3
3
  You have these tools:
4
4
  1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
@@ -54,6 +54,6 @@ RESPONSE FORMATTING (Analytics Style):
54
54
  - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
55
  - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
56
  - DO NOT hallucinate facts; rely strictly on the provided query results.
57
- - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,i,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await S(),m(async()=>e(await A()??c))}function f(e){return a.default.join(d,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 A(){try{let e=await t.promises.readFile(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function E(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function S(){let e=await A();return e||m(b)}async function b(){let e=await A();if(e)return e;if(!await w(a.default.join(l,"config.json")))return E(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(),d={id:n,name:i,port:8080,createdAt:o,updatedAt:o};return E({username:null,activeServerId:n,servers:[d],mode:null})}async function R(){let e=await S(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function I(){let e=await R();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await I();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await N("My RAG server");return f(a.id)}async function T(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function N(e){return g(async n=>{let s=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},d=f(s);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath: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,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await E(c),{workspace:c,server:l}})}e.s(["createServer",0,N,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),E({...a,servers:r,activeServerId:n})})},"getActiveServer",0,R,"getDataDir",0,I,"getWorkspace",0,S,"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 E({...a,servers:r})})},"requireDataDir",0,C,"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)?E({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>E({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>E({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function s(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),s=JSON.parse(n),i=s.customEmbeddings,o=s.embeddingModelId;if(s.customEmbedding&&!i?.length){let e=s.customEmbedding;i=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...s,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...r.DEFAULT_CONFIG.chunking,...s.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...s.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function i(e){let r=await (0,n.requireDataDir)(),s={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(s,null,2),"utf8"),s}e.s(["readConfig",0,s,"writeConfig",0,i])},835716,e=>{"use strict";var t=e.i(686296),a=e.i(367165);async function r(e){let r,n=(await (0,a.readConfig)()).braveApiKey;if(!n)return t.NextResponse.json({error:"Brave search is not configured. Set BRAVE_API_KEY in your environment.",configured:!1},{status:503});try{r=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:s,page:i=1}=r;if(!s?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let o=Math.max(1,Math.min(i,10)),l=(o-1)*10;try{let e=await fetch(`https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(s.trim())}&count=10&offset=${l}`,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip","X-Subscription-Token":n},cache:"no-store"}),a=await e.json();if(!e.ok){let r=a.message??`Brave API error (${e.status})`;return t.NextResponse.json({error:r},{status:e.status})}let r=(a.web?.results??[]).map(e=>({url:e.url,title:e.title,description:e.description})),i=10===r.length&&o<10,d=i?10:o;return t.NextResponse.json({items:r,totalResults:100,totalResultsIsEstimate:!0,currentPage:o,totalPages:d,hasMore:i,query:s.trim()})}catch(a){let e=a instanceof Error?a.message:"Brave search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,a.readConfig)()).braveApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,r,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},167363,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),i=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(835716);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/search/brave/route",pathname:"/api/search/brave",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/brave/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:E,serverHooks:S}=v;async function b(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/search/brave/route";w=w.replace(/\/index$/,"")||"/";let A=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!A)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:E,deploymentId:S,params:b,nextConfig:R,parsedUrl:I,isDraftMode:C,prerenderManifest:T,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=A,M=(0,o.normalizeAppPath)(w),j=!!(T.dynamicRoutes[M]||T.routes[D]),k=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(j&&!C){let e=!!T.routes[D],t=T.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await k();throw new f.NoFallbackError}}let L=null;!j||v.isDev||C||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!j,F=j&&!q;P&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,s.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,R,T,z);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:b,previewProps:T.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)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:E,deploymentId:S}},B=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),$=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle($,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!z&&N&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(B,V,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind: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 v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),t}},d=await v.handleResponse({req:e,nextConfig:R,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:z});if(!j)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==y.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});z||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return z&&j||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(B,V,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};G&&H?await o(H):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!G))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),j)throw t;return await (0,p.sendResponse)(B,V,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,E])}];
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,i,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await S(),m(async()=>e(await A()??c))}function f(e){return a.default.join(d,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 A(){try{let e=await t.promises.readFile(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function E(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function S(){let e=await A();return e||m(b)}async function b(){let e=await A();if(e)return e;if(!await w(a.default.join(l,"config.json")))return E(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(),d={id:n,name:i,port:8080,createdAt:o,updatedAt:o};return E({username:null,activeServerId:n,servers:[d],mode:null})}async function R(){let e=await S(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function I(){let e=await R();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await I();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await N("my-larkup");return f(a.id)}async function T(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function N(e){return g(async n=>{let s=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},d=f(s);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",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,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await E(c),{workspace:c,server:l}})}e.s(["createServer",0,N,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),E({...a,servers:r,activeServerId:n})})},"getActiveServer",0,R,"getDataDir",0,I,"getWorkspace",0,S,"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 E({...a,servers:r})})},"requireDataDir",0,C,"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)?E({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>E({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>E({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function s(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),s=JSON.parse(n),i=s.customEmbeddings,o=s.embeddingModelId;if(s.customEmbedding&&!i?.length){let e=s.customEmbedding;i=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...s,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...r.DEFAULT_CONFIG.chunking,...s.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...s.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function i(e){let r=await (0,n.requireDataDir)(),s={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(s,null,2),"utf8"),s}e.s(["readConfig",0,s,"writeConfig",0,i])},835716,e=>{"use strict";var t=e.i(686296),a=e.i(367165);async function r(e){let r,n=(await (0,a.readConfig)()).braveApiKey;if(!n)return t.NextResponse.json({error:"Brave search is not configured. Set BRAVE_API_KEY in your environment.",configured:!1},{status:503});try{r=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:s,page:i=1}=r;if(!s?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let o=Math.max(1,Math.min(i,10)),l=(o-1)*10;try{let e=await fetch(`https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(s.trim())}&count=10&offset=${l}`,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip","X-Subscription-Token":n},cache:"no-store"}),a=await e.json();if(!e.ok){let r=a.message??`Brave API error (${e.status})`;return t.NextResponse.json({error:r},{status:e.status})}let r=(a.web?.results??[]).map(e=>({url:e.url,title:e.title,description:e.description})),i=10===r.length&&o<10,d=i?10:o;return t.NextResponse.json({items:r,totalResults:100,totalResultsIsEstimate:!0,currentPage:o,totalPages:d,hasMore:i,query:s.trim()})}catch(a){let e=a instanceof Error?a.message:"Brave search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,a.readConfig)()).braveApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,r,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},167363,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),i=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(835716);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/search/brave/route",pathname:"/api/search/brave",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/brave/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:E,serverHooks:S}=v;async function b(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/search/brave/route";w=w.replace(/\/index$/,"")||"/";let A=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!A)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:E,deploymentId:S,params:b,nextConfig:R,parsedUrl:I,isDraftMode:C,prerenderManifest:T,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=A,j=(0,o.normalizeAppPath)(w),k=!!(T.dynamicRoutes[j]||T.routes[D]),M=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(k&&!C){let e=!!T.routes[D],t=T.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await M();throw new f.NoFallbackError}}let L=null;!k||v.isDev||C||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!k,F=k&&!q;P&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,s.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,R,T,z);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let Y={params:b,previewProps:T.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)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:E,deploymentId:S}},B=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),$=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle($,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!z&&N&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(B,V,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind: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 v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),t}},d=await v.handleResponse({req:e,nextConfig:R,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:z});if(!k)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==y.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});z||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return z&&k||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(B,V,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};G&&H?await o(H):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!G))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),k)throw t;return await (0,p.sendResponse)(B,V,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,S,"workAsyncStorage",0,A,"workUnitAsyncStorage",0,E])}];
58
58
 
59
59
  //# sourceMappingURL=%5Broot-of-the-server%5D__10d58x4._.js.map
@@ -1,4 +1,4 @@
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.
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-larkup",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
2
 
3
3
  You have these tools:
4
4
  1. "searchKnowledgeBase" — semantic search over the RAG knowledge base. Returns top-K most relevant document chunks.
@@ -54,6 +54,6 @@ RESPONSE FORMATTING (Analytics Style):
54
54
  - Structure complex responses logically (e.g., Summary -> Key Metrics -> Breakdown).
55
55
  - If your findings contain a small table of data, format it cleanly using Markdown tables.
56
56
  - DO NOT hallucinate facts; rely strictly on the provided query results.
57
- - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,i,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await E(),m(async()=>e(await S()??c))}function f(e){return a.default.join(d,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(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function E(){let e=await S();return e||m(R)}async function R(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),s=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(),d={id:n,name:i,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[d],mode:null})}async function b(){let e=await E(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function I(){let e=await b();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await I();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await N("My RAG server");return f(a.id)}async function T(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function N(e){return g(async n=>{let s=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},d=f(s);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath: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,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,N,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,I,"getWorkspace",0,E,"renameServer",0,function(e,t){return g(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return A({...a,servers:r})})},"requireDataDir",0,C,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return g(async t=>t.servers.some(t=>t.id===e)?A({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>A({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>A({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function s(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),s=JSON.parse(n),i=s.customEmbeddings,o=s.embeddingModelId;if(s.customEmbedding&&!i?.length){let e=s.customEmbedding;i=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...s,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...r.DEFAULT_CONFIG.chunking,...s.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...s.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function i(e){let r=await (0,n.requireDataDir)(),s={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(s,null,2),"utf8"),s}e.s(["readConfig",0,s,"writeConfig",0,i])},104757,e=>{"use strict";var t=e.i(686296),a=e.i(367165);async function r(e){let r,n=(await (0,a.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{r=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:s,page:i=1}=r;if(!s?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let o=Math.max(1,Math.min(i,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:s.trim(),num:10,page:o}),cache:"no-store"}),a=await e.json();if(!e.ok||a.error){let r=a.error??`Serper API error (${e.status})`;return t.NextResponse.json({error:r},{status:e.status})}let r=(a.organic??[]).filter(e=>e.link).map(e=>({url:e.link,title:e.title??e.link,description:e.snippet})),i=r.length>=10&&o<10,l=(o-1)*10+r.length,d=a.searchInformation?.totalResults,u=null!=d?"string"==typeof d?parseInt(d,10)||l:d:l,c=null!=d?Math.min(Math.max(1,Math.ceil(Math.min(u,100)/10)),10):i?10:o;return t.NextResponse.json({items:r,totalResults:u,totalResultsIsEstimate:null==d,currentPage:o,totalPages:c,hasMore:i,query:s.trim()})}catch(a){let e=a instanceof Error?a.message:"Serper search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,a.readConfig)()).serperApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,r,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},954415,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),i=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(104757);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/search/google/route",pathname:"/api/search/google",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/google/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:A,serverHooks:E}=v;async function R(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/search/google/route";w=w.replace(/\/index$/,"")||"/";let S=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:A,deploymentId:E,params:R,nextConfig:b,parsedUrl:I,isDraftMode:C,prerenderManifest:T,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=S,M=(0,o.normalizeAppPath)(w),j=!!(T.dynamicRoutes[M]||T.routes[D]),k=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(j&&!C){let e=!!T.routes[D],t=T.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await k();throw new f.NoFallbackError}}let L=null;!j||v.isDev||C||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!j,F=j&&!q;P&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,s.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,b,T,W);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let Y={params:R,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:q,incrementalCache:z,cacheLifeProfiles:b.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:A,deploymentId:E}},V=new l.NodeNextRequest(e),$=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle(B,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!W&&N&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(V,$,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind: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 v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),t}},d=await v.handleResponse({req:e,nextConfig:b,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!j)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&j||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,$,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};G&&H?await o(H):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!G))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),j)throw t;return await (0,p.sendResponse)(V,$,new Response(null,{status:500})),null}}e.s(["handler",0,R,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:A})},"routeModule",0,v,"serverHooks",0,E,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,A])}];
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,i,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await A(),m(async()=>e(await S()??c))}function f(e){return a.default.join(d,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(u,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function E(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function A(){let e=await S();return e||m(R)}async function R(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return E(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(),d={id:n,name:i,port:8080,createdAt:o,updatedAt:o};return E({username:null,activeServerId:n,servers:[d],mode:null})}async function b(){let e=await A(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function I(){let e=await b();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function C(){let e=await I();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await N("my-larkup");return f(a.id)}async function T(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function N(e){return g(async n=>{let s=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},d=f(s);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...i,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",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,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await E(c),{workspace:c,server:l}})}e.s(["createServer",0,N,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),E({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,I,"getWorkspace",0,A,"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 E({...a,servers:r})})},"requireDataDir",0,C,"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)?E({...t,activeServerId:e}):t)},"setMode",0,function(e){return g(async t=>E({...t,mode:e}))},"setUsername",0,function(e){return g(async t=>E({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),n=e.i(192441);async function s(){let e=await (0,n.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let n=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),s=JSON.parse(n),i=s.customEmbeddings,o=s.embeddingModelId;if(s.customEmbedding&&!i?.length){let e=s.customEmbedding;i=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...r.DEFAULT_CONFIG,...s,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:i,chunking:{...r.DEFAULT_CONFIG.chunking,...s.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...s.storeConfig}};return delete l.customEmbedding,l}catch{return r.DEFAULT_CONFIG}}async function i(e){let r=await (0,n.requireDataDir)(),s={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(s,null,2),"utf8"),s}e.s(["readConfig",0,s,"writeConfig",0,i])},104757,e=>{"use strict";var t=e.i(686296),a=e.i(367165);async function r(e){let r,n=(await (0,a.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{r=await e.json()}catch{return t.NextResponse.json({error:"Invalid request body."},{status:400})}let{query:s,page:i=1}=r;if(!s?.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let o=Math.max(1,Math.min(i,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:s.trim(),num:10,page:o}),cache:"no-store"}),a=await e.json();if(!e.ok||a.error){let r=a.error??`Serper API error (${e.status})`;return t.NextResponse.json({error:r},{status:e.status})}let r=(a.organic??[]).filter(e=>e.link).map(e=>({url:e.link,title:e.title??e.link,description:e.snippet})),i=r.length>=10&&o<10,l=(o-1)*10+r.length,d=a.searchInformation?.totalResults,u=null!=d?"string"==typeof d?parseInt(d,10)||l:d:l,c=null!=d?Math.min(Math.max(1,Math.ceil(Math.min(u,100)/10)),10):i?10:o;return t.NextResponse.json({items:r,totalResults:u,totalResultsIsEstimate:null==d,currentPage:o,totalPages:c,hasMore:i,query:s.trim()})}catch(a){let e=a instanceof Error?a.message:"Serper search failed.";return t.NextResponse.json({error:e},{status:500})}}async function n(){let e=!!(await (0,a.readConfig)()).serperApiKey;return t.NextResponse.json({configured:e})}e.s(["GET",0,n,"POST",0,r,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},954415,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),i=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(104757);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/search/google/route",pathname:"/api/search/google",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/google/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:E,serverHooks:A}=v;async function R(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/search/google/route";w=w.replace(/\/index$/,"")||"/";let S=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:E,deploymentId:A,params:R,nextConfig:b,parsedUrl:I,isDraftMode:C,prerenderManifest:T,routerServerContext:O,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=S,M=(0,o.normalizeAppPath)(w),k=!!(T.dynamicRoutes[M]||T.routes[D]),j=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(k&&!C){let e=!!T.routes[D],t=T.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await j();throw new f.NoFallbackError}}let L=null;!k||v.isDev||C||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!k,F=k&&!q;P&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,s.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,b,T,W);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let Y={params:R,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:q,incrementalCache:z,cacheLifeProfiles:b.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:E,deploymentId:A}},V=new l.NodeNextRequest(e),$=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let n,i=async e=>v.handle(B,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=_.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!W&&N&&x&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let o=Y.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=Y.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(V,$,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind: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 v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),t}},d=await v.handleResponse({req:e,nextConfig:b,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!k)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&k||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,$,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};G&&H?await o(H):(n=_.getActiveScopeSpan(),await _.withPropagatedContext(e.headers,()=>_.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!G))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,O),k)throw t;return await (0,p.sendResponse)(V,$,new Response(null,{status:500})),null}}e.s(["handler",0,R,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,A,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,E])}];
58
58
 
59
59
  //# sourceMappingURL=%5Broot-of-the-server%5D__12kvuvp._.js.map