larkup 0.1.21 → 0.1.22

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 (105) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/fallback-build-manifest.json +3 -3
  4. package/.next/server/app/_global-error.html +1 -1
  5. package/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/server/app/_not-found.html +1 -1
  12. package/.next/server/app/_not-found.rsc +1 -1
  13. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. package/.next/server/app/analytics.html +1 -1
  20. package/.next/server/app/analytics.rsc +1 -1
  21. package/.next/server/app/analytics.segments/_full.segment.rsc +1 -1
  22. package/.next/server/app/analytics.segments/_head.segment.rsc +1 -1
  23. package/.next/server/app/analytics.segments/_index.segment.rsc +1 -1
  24. package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  25. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/analytics.segments/analytics.segment.rsc +1 -1
  27. package/.next/server/app/chat.html +1 -1
  28. package/.next/server/app/chat.rsc +1 -1
  29. package/.next/server/app/chat.segments/_full.segment.rsc +1 -1
  30. package/.next/server/app/chat.segments/_head.segment.rsc +1 -1
  31. package/.next/server/app/chat.segments/_index.segment.rsc +1 -1
  32. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  33. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +1 -1
  34. package/.next/server/app/chat.segments/chat.segment.rsc +1 -1
  35. package/.next/server/app/data.html +1 -1
  36. package/.next/server/app/data.rsc +1 -1
  37. package/.next/server/app/data.segments/_full.segment.rsc +1 -1
  38. package/.next/server/app/data.segments/_head.segment.rsc +1 -1
  39. package/.next/server/app/data.segments/_index.segment.rsc +1 -1
  40. package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  41. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +1 -1
  42. package/.next/server/app/data.segments/data.segment.rsc +1 -1
  43. package/.next/server/app/index.html +1 -1
  44. package/.next/server/app/index.rsc +1 -1
  45. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  46. package/.next/server/app/index.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/settings.html +1 -1
  51. package/.next/server/app/settings.rsc +1 -1
  52. package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  53. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  54. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  55. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  56. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  57. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  58. package/.next/server/chunks/[root-of-the-server]__0036943._.js +1 -1
  59. package/.next/server/chunks/[root-of-the-server]__00nqa2u._.js +1 -1
  60. package/.next/server/chunks/[root-of-the-server]__02cpmox._.js +1 -1
  61. package/.next/server/chunks/[root-of-the-server]__02p-tv7._.js +2 -2
  62. package/.next/server/chunks/[root-of-the-server]__02t_0g7._.js +1 -1
  63. package/.next/server/chunks/[root-of-the-server]__04kopvt._.js +2 -2
  64. package/.next/server/chunks/[root-of-the-server]__04l~ip-._.js +1 -1
  65. package/.next/server/chunks/[root-of-the-server]__04visk8._.js +1 -1
  66. package/.next/server/chunks/[root-of-the-server]__05x8tmf._.js +1 -1
  67. package/.next/server/chunks/[root-of-the-server]__06l96vc._.js +1 -1
  68. package/.next/server/chunks/[root-of-the-server]__06ohoeu._.js +1 -1
  69. package/.next/server/chunks/[root-of-the-server]__07_1411._.js +1 -1
  70. package/.next/server/chunks/[root-of-the-server]__0acpo9m._.js +1 -1
  71. package/.next/server/chunks/[root-of-the-server]__0exyn0q._.js +1 -1
  72. package/.next/server/chunks/[root-of-the-server]__0fcf_rl._.js +1 -1
  73. package/.next/server/chunks/[root-of-the-server]__0f~eq1-._.js +1 -1
  74. package/.next/server/chunks/[root-of-the-server]__0ljy49-._.js +1 -1
  75. package/.next/server/chunks/[root-of-the-server]__0n0nerw._.js +1 -1
  76. package/.next/server/chunks/[root-of-the-server]__0oh5wgp._.js +1 -1
  77. package/.next/server/chunks/[root-of-the-server]__0oyc7s4._.js +1 -1
  78. package/.next/server/chunks/[root-of-the-server]__0pg~eys._.js +1 -1
  79. package/.next/server/chunks/[root-of-the-server]__0qtx78g._.js +1 -1
  80. package/.next/server/chunks/[root-of-the-server]__0r03jcl._.js +1 -1
  81. package/.next/server/chunks/[root-of-the-server]__0sb7d93._.js +1 -1
  82. package/.next/server/chunks/[root-of-the-server]__0t36t5o._.js +1 -1
  83. package/.next/server/chunks/[root-of-the-server]__0t_hp52._.js +1 -1
  84. package/.next/server/chunks/[root-of-the-server]__0v03x56._.js +1 -1
  85. package/.next/server/chunks/[root-of-the-server]__0v4bbce._.js +1 -1
  86. package/.next/server/chunks/[root-of-the-server]__0vcdpoc._.js +1 -1
  87. package/.next/server/chunks/[root-of-the-server]__0wvxpqf._.js +1 -1
  88. package/.next/server/chunks/[root-of-the-server]__0wyl7x5._.js +1 -1
  89. package/.next/server/chunks/[root-of-the-server]__0yx8vxp._.js +2 -2
  90. package/.next/server/chunks/[root-of-the-server]__0zh8t6z._.js +1 -1
  91. package/.next/server/chunks/[root-of-the-server]__0~q2fro._.js +1 -1
  92. package/.next/server/chunks/[root-of-the-server]__10d58x4._.js +1 -1
  93. package/.next/server/chunks/[root-of-the-server]__12kvuvp._.js +1 -1
  94. package/.next/server/chunks/packages_core_src_generator_generate-server_ts_0mt.je3._.js +3 -5
  95. package/.next/server/chunks/ssr/packages_core_src_generator_generate-server_ts_0o.y7vi._.js +3 -5
  96. package/.next/server/middleware-build-manifest.js +3 -3
  97. package/.next/server/pages/404.html +1 -1
  98. package/.next/server/pages/500.html +1 -1
  99. package/CHANGELOG.md +6 -0
  100. package/bin/larkup.js +43 -15
  101. package/next-env.d.ts +1 -1
  102. package/package.json +17 -17
  103. /package/.next/static/{KqIuNxkoeAlhCusoxtMrS → r6jTeoDnymfOosNztAlzL}/_buildManifest.js +0 -0
  104. /package/.next/static/{KqIuNxkoeAlhCusoxtMrS → r6jTeoDnymfOosNztAlzL}/_clientMiddlewareManifest.js +0 -0
  105. /package/.next/static/{KqIuNxkoeAlhCusoxtMrS → r6jTeoDnymfOosNztAlzL}/_ssgManifest.js +0 -0
@@ -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
@@ -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
@@ -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),M=!!(T.dynamicRoutes[j]||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(M&&!C){let e=!!T.routes[D],t=T.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await k();throw new f.NoFallbackError}}let L=null;!M||v.isDev||C||(L="/index"===(L=D)?"/":L);let q=!0===v.isDev||!M,F=M&&!q;P&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let K=e.method||"GET",_=(0,s.getTracer)(),H=_.getActiveScopeSpan(),G=!!(null==O?void 0:O.isWrappedByNextServer),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(!M)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(!M)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&&M||u.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(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),M)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
@@ -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
@@ -200,7 +200,7 @@ const server = createServer(async (req, res) => {
200
200
  <head>
201
201
  <meta charset="utf-8" />
202
202
  <meta name="viewport" content="width=device-width, initial-scale=1" />
203
- <title>\${${JSON.stringify(d.projectName)}} — RAG Server</title>
203
+ <title>\${${JSON.stringify(d.projectName)}} — Larkup Server</title>
204
204
  <link rel="icon" href="/favicon2.ico" type="image/x-icon" />
205
205
  <link rel="preconnect" href="https://fonts.googleapis.com">
206
206
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@@ -235,7 +235,7 @@ const server = createServer(async (req, res) => {
235
235
  <div class="container">
236
236
  <div class="badge"><span class="dot"></span> Server Online</div>
237
237
  <h1>\${${JSON.stringify(d.projectName)}}</h1>
238
- <p class="subtitle">Your RAG retrieval server is live and ready to accept queries.<br/>Powered by <strong style="color:#000000">Larkup</strong></p>
238
+ <p class="subtitle">Your Larkup Server is ready.<br/>Powered by <strong style="color:#df9c20">Larkup</strong></p>
239
239
  <div class="actions">
240
240
  <a href="/reference" class="btn btn-primary">
241
241
  <svg class="icon" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
@@ -741,9 +741,7 @@ const server = createServer(async (req, res) => {
741
741
  return send(res, 404, { error: "Not found" })
742
742
  })
743
743
 
744
- server.listen(PORT, () => {
745
- console.log(\`[${d.projectName}] RAG server listening on :\${PORT}\`)
746
- })
744
+ server.listen(PORT)
747
745
  `},{path:"chat.mjs",contents:i(d)},{path:"embed.mjs",contents:function(e){let t=`import { embed } from "ai"
748
746
  `,r="";if(e.embeddingModelId.startsWith("custom:")){let o=e.embeddingModelId.slice(7),s=(e.customEmbeddings??[]).find(e=>e.modelName===o);t+=`import { createOpenAICompatible } from "@ai-sdk/openai-compatible"
749
747
  `,r=`const provider = createOpenAICompatible({
@@ -84,7 +84,7 @@ const server = createServer(async (req, res) => {
84
84
  <head>
85
85
  <meta charset="utf-8" />
86
86
  <meta name="viewport" content="width=device-width, initial-scale=1" />
87
- <title>\${${JSON.stringify(g.projectName)}} — RAG Server</title>
87
+ <title>\${${JSON.stringify(g.projectName)}} — Larkup Server</title>
88
88
  <link rel="icon" href="/favicon2.ico" type="image/x-icon" />
89
89
  <link rel="preconnect" href="https://fonts.googleapis.com">
90
90
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@@ -119,7 +119,7 @@ const server = createServer(async (req, res) => {
119
119
  <div class="container">
120
120
  <div class="badge"><span class="dot"></span> Server Online</div>
121
121
  <h1>\${${JSON.stringify(g.projectName)}}</h1>
122
- <p class="subtitle">Your RAG retrieval server is live and ready to accept queries.<br/>Powered by <strong style="color:#000000">Larkup</strong></p>
122
+ <p class="subtitle">Your Larkup Server is ready.<br/>Powered by <strong style="color:#df9c20">Larkup</strong></p>
123
123
  <div class="actions">
124
124
  <a href="/reference" class="btn btn-primary">
125
125
  <svg class="icon" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
@@ -625,9 +625,7 @@ const server = createServer(async (req, res) => {
625
625
  return send(res, 404, { error: "Not found" })
626
626
  })
627
627
 
628
- server.listen(PORT, () => {
629
- console.log(\`[${g.projectName}] RAG server listening on :\${PORT}\`)
630
- })
628
+ server.listen(PORT)
631
629
  `},{path:"chat.mjs",contents:(o=e(g),q=(p=f(g,o)).startsWith("custom:")?p.slice(7):p,r=function(a,b=""){switch(a){case"google":return`import { createGoogleGenerativeAI } from "@ai-sdk/google";
632
630
  const provider = createGoogleGenerativeAI({ apiKey: CHAT_API_KEY });
633
631
  const model = provider(MODEL_NAME);`;case"cohere":return`import { createCohere } from "@ai-sdk/cohere";
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/KqIuNxkoeAlhCusoxtMrS/_buildManifest.js",
11
- "static/KqIuNxkoeAlhCusoxtMrS/_ssgManifest.js",
12
- "static/KqIuNxkoeAlhCusoxtMrS/_clientMiddlewareManifest.js"
10
+ "static/r6jTeoDnymfOosNztAlzL/_buildManifest.js",
11
+ "static/r6jTeoDnymfOosNztAlzL/_ssgManifest.js",
12
+ "static/r6jTeoDnymfOosNztAlzL/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/06lztj0p4bq9f.js",