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,o,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,i],638725);let l=a.default.join(process.cwd(),".larkup"),u=a.default.join(l,"servers"),d=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await E(),m(async()=>e(await S()??c))}function y(e){return a.default.join(u,e)}function f(e,t){return`./.larkup/servers/${e}/${t}`}async function w(e){try{return await t.promises.access(e),!0}catch{return!1}}async function v(e,r){if(await w(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function S(){try{let e=await t.promises.readFile(d,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function E(){let e=await S();return e||m(R)}async function R(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),s=y(n);for(let e of(await t.promises.mkdir(s,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(s,e));await v(a.default.join(l,"lancedb"),a.default.join(s,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(s,"generated-server"));let o="Default server";try{let e=a.default.join(s,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(o=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:f(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let i=new Date().toISOString(),u={id:n,name:o,port:8080,createdAt:i,updatedAt:i};return A({username:null,activeServerId:n,servers:[u],mode:null})}async function b(){let e=await E(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function T(){let e=await b();if(!e)return null;let a=y(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function x(){let e=await T();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await O("My RAG server");return y(a.id)}async function C(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function I(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await C(t);)t++;return t}function O(e){return g(async n=>{let s=(0,r.randomUUID)(),i=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await I(n),createdAt:i,updatedAt:i},u=y(s);await t.promises.mkdir(u,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(y(n.activeServerId),"config.json"),"utf8");d=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(u,"config.json"),JSON.stringify(function(e,t,a={}){return{...o,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:f(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??o.embeddingApiKey,customEmbeddings:a.customEmbeddings??o.customEmbeddings,chatApiKey:a.chatApiKey??o.chatApiKey,customChatModels:a.customChatModels??o.customChatModels,serperApiKey:a.serperApiKey??o.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??o.firecrawlApiKey,updatedAt:new Date().toISOString()}}(s,l.name,d),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,O,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(y(e),{recursive:!0,force:!0}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,T,"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,x,"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)},198650,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),o=e.i(706859),i=e.i(947547),l=e.i(819797),u=e.i(135958),d=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),y=e.i(193695);e.i(530058);var f=e.i(605998),w=e.i(686296),v=e.i(902157),S=e.i(750227),A=e.i(192441);async function E(e){let t=e?await (0,A.requireDataDir)():await (0,A.getDataDir)();return t?S.default.join(t,"connections.json"):null}async function R(){try{let e=await E(!1);if(!e)return w.NextResponse.json({});try{let t=await v.promises.readFile(e,"utf8");return w.NextResponse.json(JSON.parse(t))}catch{return w.NextResponse.json({})}}catch(e){return w.NextResponse.json({error:String(e)},{status:500})}}async function b(e){try{let t=await e.json(),a=await E(!0);if(!a)throw Error("No workspace directory");return await v.promises.writeFile(a,JSON.stringify(t,null,2),"utf8"),w.NextResponse.json({success:!0})}catch(e){return w.NextResponse.json({error:String(e)},{status:500})}}e.s(["GET",0,R,"PUT",0,b],108e3);var T=e.i(108e3);let x=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/connections/route",pathname:"/api/connections",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/connections/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:I,serverHooks:O}=x;async function N(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),x.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/connections/route";w=w.replace(/\/index$/,"")||"/";let v=await x.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:A,params:E,nextConfig:R,parsedUrl:b,isDraftMode:T,prerenderManifest:C,routerServerContext:I,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=v,M=(0,i.normalizeAppPath)(w),j=!!(C.dynamicRoutes[M]||C.routes[D]),k=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,b,!1):t.end("This page could not be found"),null);if(j&&!T){let e=!!C.routes[D],t=C.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await k();throw new y.NoFallbackError}}let q=null;!j||x.isDev||T||(q="/index"===(q=D)?"/":q);let L=!0===x.isDev||!j,K=j&&!L;P&&U&&(0,o.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let F=e.method||"GET",H=(0,s.getTracer)(),_=H.getActiveScopeSpan(),W=!!(null==I?void 0:I.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,R,C,z);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let Y={params:E,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:L,incrementalCache:G,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>x.onRequestError(e,t,r,n,I)},sharedContext:{buildId:S,deploymentId:A}},V=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),$=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>x.handle($,Y).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${F} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${F} ${w}`)}),i=async n=>{var s,i;let l=async({previousCacheEntry:a})=>{try{if(!z&&O&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=Y.renderOpts.fetchMetrics;let i=Y.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=Y.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(V,B,s,Y.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:Y.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:O})},!1,I),t}},u=await x.handleResponse({req:e,nextConfig:R,cacheKey:q,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:z});if(!j)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return z&&j||d.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,B,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};W&&_?await i(_):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},i),void 0,!W))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:O})},!1,I),j)throw t;return await (0,p.sendResponse)(V,B,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:I})},"routeModule",0,x,"serverHooks",0,O,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,I],198650)}];
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,o,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,i],638725);let l=a.default.join(process.cwd(),".larkup"),u=a.default.join(l,"servers"),d=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function g(e){return await E(),m(async()=>e(await S()??c))}function y(e){return a.default.join(u,e)}function f(e,t){return`./.larkup/servers/${e}/${t}`}async function w(e){try{return await t.promises.access(e),!0}catch{return!1}}async function v(e,r){if(await w(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function S(){try{let e=await t.promises.readFile(d,"utf8");return{...c,...JSON.parse(e)}}catch{return null}}async function A(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function E(){let e=await S();return e||m(R)}async function R(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),s=y(n);for(let e of(await t.promises.mkdir(s,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(s,e));await v(a.default.join(l,"lancedb"),a.default.join(s,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(s,"generated-server"));let o="Default server";try{let e=a.default.join(s,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(o=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:f(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let i=new Date().toISOString(),u={id:n,name:o,port:8080,createdAt:i,updatedAt:i};return A({username:null,activeServerId:n,servers:[u],mode:null})}async function b(){let e=await E(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function T(){let e=await b();if(!e)return null;let a=y(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function x(){let e=await T();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await O("my-larkup");return y(a.id)}async function C(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function I(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await C(t);)t++;return t}function O(e){return g(async n=>{let s=(0,r.randomUUID)(),i=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await I(n),createdAt:i,updatedAt:i},u=y(s);await t.promises.mkdir(u,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(y(n.activeServerId),"config.json"),"utf8");d=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(u,"config.json"),JSON.stringify(function(e,t,a={}){return{...o,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",storeConfig:{mode:"local",dbPath:f(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??o.embeddingApiKey,customEmbeddings:a.customEmbeddings??o.customEmbeddings,chatApiKey:a.chatApiKey??o.chatApiKey,customChatModels:a.customChatModels??o.customChatModels,serperApiKey:a.serperApiKey??o.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??o.firecrawlApiKey,updatedAt:new Date().toISOString()}}(s,l.name,d),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:s};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,O,"deleteServer",0,function(e){return g(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(y(e),{recursive:!0,force:!0}),A({...a,servers:r,activeServerId:n})})},"getActiveServer",0,b,"getDataDir",0,T,"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,x,"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)},198650,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),s=e.i(601263),o=e.i(706859),i=e.i(947547),l=e.i(819797),u=e.i(135958),d=e.i(86520),c=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),g=e.i(37125),y=e.i(193695);e.i(530058);var f=e.i(605998),w=e.i(686296),v=e.i(902157),S=e.i(750227),A=e.i(192441);async function E(e){let t=e?await (0,A.requireDataDir)():await (0,A.getDataDir)();return t?S.default.join(t,"connections.json"):null}async function R(){try{let e=await E(!1);if(!e)return w.NextResponse.json({});try{let t=await v.promises.readFile(e,"utf8");return w.NextResponse.json(JSON.parse(t))}catch{return w.NextResponse.json({})}}catch(e){return w.NextResponse.json({error:String(e)},{status:500})}}async function b(e){try{let t=await e.json(),a=await E(!0);if(!a)throw Error("No workspace directory");return await v.promises.writeFile(a,JSON.stringify(t,null,2),"utf8"),w.NextResponse.json({success:!0})}catch(e){return w.NextResponse.json({error:String(e)},{status:500})}}e.s(["GET",0,R,"PUT",0,b],108e3);var T=e.i(108e3);let x=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/connections/route",pathname:"/api/connections",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/connections/route.ts",nextConfigOutput:"standalone",userland:T,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:I,serverHooks:O}=x;async function N(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),x.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/connections/route";w=w.replace(/\/index$/,"")||"/";let v=await x.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:A,params:E,nextConfig:R,parsedUrl:b,isDraftMode:T,prerenderManifest:C,routerServerContext:I,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,resolvedPathname:D,clientReferenceManifest:U,serverActionsManifest:P}=v,k=(0,i.normalizeAppPath)(w),M=!!(C.dynamicRoutes[k]||C.routes[D]),j=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,b,!1):t.end("This page could not be found"),null);if(M&&!T){let e=!!C.routes[D],t=C.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await j();throw new y.NoFallbackError}}let q=null;!M||x.isDev||T||(q="/index"===(q=D)?"/":q);let L=!0===x.isDev||!M,K=M&&!L;P&&U&&(0,o.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:P});let F=e.method||"GET",H=(0,s.getTracer)(),_=H.getActiveScopeSpan(),W=!!(null==I?void 0:I.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),Y=(0,n.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,R,C,z);null==Y||Y.resetRequestCache(),globalThis.__incrementalCache=Y;let G={params:E,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:L,incrementalCache:Y,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>x.onRequestError(e,t,r,n,I)},sharedContext:{buildId:S,deploymentId:A}},V=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),$=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>x.handle($,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${F} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${F} ${w}`)}),i=async n=>{var s,i;let l=async({previousCacheEntry:a})=>{try{if(!z&&O&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let i=G.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=G.renderOpts.collectedTags;if(!M)return await (0,p.sendResponse)(V,B,s,G.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!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:O})},!1,I),t}},u=await x.handleResponse({req:e,nextConfig:R,cacheKey:q,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:z});if(!M)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return z&&M||d.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(V,B,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};W&&_?await i(_):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},i),void 0,!W))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:O})},!1,I),M)throw t;return await (0,p.sendResponse)(V,B,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:I})},"routeModule",0,x,"serverHooks",0,O,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,I],198650)}];
58
58
 
59
59
  //# sourceMappingURL=%5Broot-of-the-server%5D__00nqa2u._.js.map
@@ -54,7 +54,7 @@ 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"),c=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),d={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function w(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function f(e){return await b(),w(async()=>e(await S()??d))}function h(e){return a.default.join(c,e)}function g(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(u,"utf8");return{...d,...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 b(){let e=await S();return e||w(A)}async function A(){let e=await S();if(e)return e;if(!await y(a.default.join(l,"config.json")))return E(d);let n=(0,r.randomUUID)(),i=h(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:g(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),c={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return E({username:null,activeServerId:n,servers:[c],mode:null})}async function C(){let e=await b(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function R(){let e=await C();if(!e)return null;let a=h(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function I(){let e=await R();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await T("My RAG server");return h(a.id)}async function D(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await D(t);)t++;return t}function T(e){return f(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},c=h(i);await t.promises.mkdir(c,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(h(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(c,"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:g(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,u),null,2),"utf8");let d={...n,servers:[...n.servers,l],activeServerId:i};return await E(d),{workspace:d,server:l}})}e.s(["createServer",0,T,"deleteServer",0,function(e){return f(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(h(e),{recursive:!0,force:!0}),E({...a,servers:r,activeServerId:n})})},"getActiveServer",0,C,"getDataDir",0,R,"getWorkspace",0,b,"renameServer",0,function(e,t){return f(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return E({...a,servers:r})})},"requireDataDir",0,I,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return f(async t=>t.servers.some(t=>t.id===e)?E({...t,activeServerId:e}):t)},"setMode",0,function(e){return f(async t=>E({...t,mode:e}))},"setUsername",0,function(e){return f(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 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])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},705252,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(192441);let i=Promise.resolve();function 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 c(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 u(e){let t=e.content.trim();return{id:e.id??(0,r.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function d(){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(u({...i,jobId:e})),i.url&&r.add(i.url),n++);return n>0&&await c(a),n})},"addDocument",0,function(e){return s(async()=>{let t=await l(),a=u(e);return t.push(a),await c(t),a})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await l(),a=e.map(u);return t.push(...a),await c(t),a})},"clearDocuments",0,function(){return s(async()=>{await c([])})},"corpusStats",0,d,"deleteDocument",0,function(e){return s(async()=>{let t=await l();await c(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await l(),a=new Set(e);await c(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await c(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 c(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 c(a)})}])},700259,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(761095),n=e.i(666680),i=e.i(874533),s=e.i(812057),o=e.i(367165);let l=(0,s.promisify)(i.exec);async function c(e,t){return l(e,{timeout:t,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let u=a.default.join(process.cwd(),".larkup"),d=a.default.join(u,"firecrawl-local.json"),p=a.default.join(u,"firecrawl","docker-compose.yml"),m="ragtoolkit-firecrawl";async function w(e){return new Promise((t,a)=>{let n=r.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>t(e))}),n.on("error",r=>{"EADDRINUSE"===r.code?w(0===e?0:e+1).then(t,a):a(r)})})}async function f(){try{let e=a.default.join(process.cwd(),"proxies.txt"),r=(await t.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(r.length>0){let e=r[Math.floor(Math.random()*r.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,o.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let h={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:m};async function g(){try{let e=await t.promises.readFile(d,"utf8");return{...h,...JSON.parse(e)}}catch{return h}}async function y(e){return await t.promises.mkdir(u,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function v(){try{await c("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await c("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await c("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function S(){let{docker:e,compose:t}=await v();return e?t?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function E(e,t,a){let r=a?[`PROXY_SERVER: "${a.server}"`,...a.username&&a.password?[`PROXY_USERNAME: "${a.username}"`,`PROXY_PASSWORD: "${a.password}"`]:[]]:[],n=['PORT: "3000"',...r].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...r,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
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"),c=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),d={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function w(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function f(e){return await b(),w(async()=>e(await S()??d))}function h(e){return a.default.join(c,e)}function g(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(u,"utf8");return{...d,...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 b(){let e=await S();return e||w(A)}async function A(){let e=await S();if(e)return e;if(!await y(a.default.join(l,"config.json")))return E(d);let n=(0,r.randomUUID)(),i=h(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:g(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),c={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return E({username:null,activeServerId:n,servers:[c],mode:null})}async function C(){let e=await b(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function R(){let e=await C();if(!e)return null;let a=h(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function I(){let e=await R();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await T("my-larkup");return h(a.id)}async function D(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await D(t);)t++;return t}function T(e){return f(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},c=h(i);await t.promises.mkdir(c,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(h(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(c,"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:g(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,u),null,2),"utf8");let d={...n,servers:[...n.servers,l],activeServerId:i};return await E(d),{workspace:d,server:l}})}e.s(["createServer",0,T,"deleteServer",0,function(e){return f(async a=>{let r=a.servers.filter(t=>t.id!==e),n=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(h(e),{recursive:!0,force:!0}),E({...a,servers:r,activeServerId:n})})},"getActiveServer",0,C,"getDataDir",0,R,"getWorkspace",0,b,"renameServer",0,function(e,t){return f(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return E({...a,servers:r})})},"requireDataDir",0,I,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return f(async t=>t.servers.some(t=>t.id===e)?E({...t,activeServerId:e}):t)},"setMode",0,function(e){return f(async t=>E({...t,mode:e}))},"setUsername",0,function(e){return f(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 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])},874533,(e,t,a)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,a)=>{t.exports=e.x("node:util",()=>require("node:util"))},705252,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),n=e.i(192441);let i=Promise.resolve();function 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 c(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 u(e){let t=e.content.trim();return{id:e.id??(0,r.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function d(){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(u({...i,jobId:e})),i.url&&r.add(i.url),n++);return n>0&&await c(a),n})},"addDocument",0,function(e){return s(async()=>{let t=await l(),a=u(e);return t.push(a),await c(t),a})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await l(),a=e.map(u);return t.push(...a),await c(t),a})},"clearDocuments",0,function(){return s(async()=>{await c([])})},"corpusStats",0,d,"deleteDocument",0,function(e){return s(async()=>{let t=await l();await c(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await l(),a=new Set(e);await c(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await c(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 c(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 c(a)})}])},700259,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(761095),n=e.i(666680),i=e.i(874533),s=e.i(812057),o=e.i(367165);let l=(0,s.promisify)(i.exec);async function c(e,t){return l(e,{timeout:t,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let u=a.default.join(process.cwd(),".larkup"),d=a.default.join(u,"firecrawl-local.json"),p=a.default.join(u,"firecrawl","docker-compose.yml"),m="ragtoolkit-firecrawl";async function w(e){return new Promise((t,a)=>{let n=r.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>t(e))}),n.on("error",r=>{"EADDRINUSE"===r.code?w(0===e?0:e+1).then(t,a):a(r)})})}async function f(){try{let e=a.default.join(process.cwd(),"proxies.txt"),r=(await t.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(r.length>0){let e=r[Math.floor(Math.random()*r.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,o.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let h={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:m};async function g(){try{let e=await t.promises.readFile(d,"utf8");return{...h,...JSON.parse(e)}}catch{return h}}async function y(e){return await t.promises.mkdir(u,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function v(){try{await c("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await c("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await c("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function S(){let{docker:e,compose:t}=await v();return e?t?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function E(e,t,a){let r=a?[`PROXY_SERVER: "${a.server}"`,...a.username&&a.password?[`PROXY_USERNAME: "${a.username}"`,`PROXY_PASSWORD: "${a.password}"`]:[]]:[],n=['PORT: "3000"',...r].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...r,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
58
58
  services:
59
59
  db:
60
60
  image: ghcr.io/firecrawl/nuq-postgres:latest
@@ -54,7 +54,7 @@ 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=r.default.join(process.cwd(),".larkup"),c=r.default.join(l,"servers"),d=r.default.join(l,"workspace.json"),u={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function h(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function w(e){return await A(),h(async()=>e(await S()??u))}function f(e){return r.default.join(c,e)}function g(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,a){if(await y(e)){await t.promises.mkdir(r.default.dirname(a),{recursive:!0});try{await t.promises.rename(e,a)}catch{await t.promises.cp(e,a,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function S(){try{let e=await t.promises.readFile(d,"utf8");return{...u,...JSON.parse(e)}}catch{return null}}async function E(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function A(){let e=await S();return e||h(b)}async function b(){let e=await S();if(e)return e;if(!await y(r.default.join(l,"config.json")))return E(u);let n=(0,a.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(r.default.join(l,e),r.default.join(i,e));await v(r.default.join(l,"lancedb"),r.default.join(i,"lancedb")),await v(r.default.join(l,"generated-server"),r.default.join(i,"generated-server"));let s="Default server";try{let e=r.default.join(i,"config.json"),a=JSON.parse(await t.promises.readFile(e,"utf8"));a.projectName&&(s=a.projectName),"lancedb"===a.vectorStore&&(a.storeConfig?.mode??"local")==="local"&&(a.storeConfig={...a.storeConfig,dbPath:g(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(a,null,2),"utf8")}catch{}let o=new Date().toISOString(),c={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return E({username:null,activeServerId:n,servers:[c],mode:null})}async function R(){let e=await A(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function T(){let e=await R();if(!e)return null;let r=f(e.id);return await t.promises.mkdir(r,{recursive:!0}),r}async function C(){let e=await T();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:r}=await x("My RAG server");return f(r.id)}async function I(e){return new Promise(t=>{let r=i.default.createServer();r.once("error",()=>t(!1)),r.once("listening",()=>{r.close(()=>t(!0))}),r.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await I(t);)t++;return t}function x(e){return w(async n=>{let i=(0,a.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},c=f(i);await t.promises.mkdir(c,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(r.default.join(f(n.activeServerId),"config.json"),"utf8");d=JSON.parse(e)}catch{}await t.promises.writeFile(r.default.join(c,"config.json"),JSON.stringify(function(e,t,r={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:g(e,"lancedb")},embeddingApiKey:r.embeddingApiKey??s.embeddingApiKey,customEmbeddings:r.customEmbeddings??s.customEmbeddings,chatApiKey:r.chatApiKey??s.chatApiKey,customChatModels:r.customChatModels??s.customChatModels,serperApiKey:r.serperApiKey??s.serperApiKey,firecrawlApiKey:r.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,d),null,2),"utf8");let u={...n,servers:[...n.servers,l],activeServerId:i};return await E(u),{workspace:u,server:l}})}e.s(["createServer",0,x,"deleteServer",0,function(e){return w(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(f(e),{recursive:!0,force:!0}),E({...r,servers:a,activeServerId:n})})},"getActiveServer",0,R,"getDataDir",0,T,"getWorkspace",0,A,"renameServer",0,function(e,t){return w(async r=>{let a=r.servers.map(r=>r.id===e?{...r,name:t.trim()||r.name,updatedAt:new Date().toISOString()}:r);return E({...r,servers:a})})},"requireDataDir",0,C,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return w(async t=>t.servers.some(t=>t.id===e)?E({...t,activeServerId:e}):t)},"setMode",0,function(e){return w(async t=>E({...t,mode:e}))},"setUsername",0,function(e){return w(async t=>E({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return a.DEFAULT_CONFIG;try{let n=await t.promises.readFile(r.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),s=i.customEmbeddings,o=i.embeddingModelId;if(i.customEmbedding&&!s?.length){let e=i.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...i,embeddingModelId:o??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,chunking:{...a.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return a.DEFAULT_CONFIG}}async function s(e){let a=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,s])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},700259,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(761095),n=e.i(666680),i=e.i(874533),s=e.i(812057),o=e.i(367165);let l=(0,s.promisify)(i.exec);async function c(e,t){return l(e,{timeout:t,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let d=r.default.join(process.cwd(),".larkup"),u=r.default.join(d,"firecrawl-local.json"),p=r.default.join(d,"firecrawl","docker-compose.yml"),m="ragtoolkit-firecrawl";async function h(e){return new Promise((t,r)=>{let n=a.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>t(e))}),n.on("error",a=>{"EADDRINUSE"===a.code?h(0===e?0:e+1).then(t,r):r(a)})})}async function w(){try{let e=r.default.join(process.cwd(),"proxies.txt"),a=(await t.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(a.length>0){let e=a[Math.floor(Math.random()*a.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,o.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let f={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:m};async function g(){try{let e=await t.promises.readFile(u,"utf8");return{...f,...JSON.parse(e)}}catch{return f}}async function y(e){return await t.promises.mkdir(d,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function v(){try{await c("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await c("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await c("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function S(){let{docker:e,compose:t}=await v();return e?t?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function E(e,t,r){let a=r?[`PROXY_SERVER: "${r.server}"`,...r.username&&r.password?[`PROXY_USERNAME: "${r.username}"`,`PROXY_PASSWORD: "${r.password}"`]:[]]:[],n=['PORT: "3000"',...a].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...a,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
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=r.default.join(process.cwd(),".larkup"),c=r.default.join(l,"servers"),d=r.default.join(l,"workspace.json"),u={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function h(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function w(e){return await A(),h(async()=>e(await S()??u))}function f(e){return r.default.join(c,e)}function g(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,a){if(await y(e)){await t.promises.mkdir(r.default.dirname(a),{recursive:!0});try{await t.promises.rename(e,a)}catch{await t.promises.cp(e,a,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function S(){try{let e=await t.promises.readFile(d,"utf8");return{...u,...JSON.parse(e)}}catch{return null}}async function E(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(d,JSON.stringify(e,null,2),"utf8"),e}async function A(){let e=await S();return e||h(b)}async function b(){let e=await S();if(e)return e;if(!await y(r.default.join(l,"config.json")))return E(u);let n=(0,a.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(r.default.join(l,e),r.default.join(i,e));await v(r.default.join(l,"lancedb"),r.default.join(i,"lancedb")),await v(r.default.join(l,"generated-server"),r.default.join(i,"generated-server"));let s="Default server";try{let e=r.default.join(i,"config.json"),a=JSON.parse(await t.promises.readFile(e,"utf8"));a.projectName&&(s=a.projectName),"lancedb"===a.vectorStore&&(a.storeConfig?.mode??"local")==="local"&&(a.storeConfig={...a.storeConfig,dbPath:g(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(a,null,2),"utf8")}catch{}let o=new Date().toISOString(),c={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return E({username:null,activeServerId:n,servers:[c],mode:null})}async function R(){let e=await A(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function T(){let e=await R();if(!e)return null;let r=f(e.id);return await t.promises.mkdir(r,{recursive:!0}),r}async function C(){let e=await T();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:r}=await x("my-larkup");return f(r.id)}async function I(e){return new Promise(t=>{let r=i.default.createServer();r.once("error",()=>t(!1)),r.once("listening",()=>{r.close(()=>t(!0))}),r.listen(e,"127.0.0.1")})}async function O(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await I(t);)t++;return t}function x(e){return w(async n=>{let i=(0,a.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await O(n),createdAt:o,updatedAt:o},c=f(i);await t.promises.mkdir(c,{recursive:!0});let d={};if(n.activeServerId)try{let e=await t.promises.readFile(r.default.join(f(n.activeServerId),"config.json"),"utf8");d=JSON.parse(e)}catch{}await t.promises.writeFile(r.default.join(c,"config.json"),JSON.stringify(function(e,t,r={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",storeConfig:{mode:"local",dbPath:g(e,"lancedb")},embeddingApiKey:r.embeddingApiKey??s.embeddingApiKey,customEmbeddings:r.customEmbeddings??s.customEmbeddings,chatApiKey:r.chatApiKey??s.chatApiKey,customChatModels:r.customChatModels??s.customChatModels,serperApiKey:r.serperApiKey??s.serperApiKey,firecrawlApiKey:r.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,d),null,2),"utf8");let u={...n,servers:[...n.servers,l],activeServerId:i};return await E(u),{workspace:u,server:l}})}e.s(["createServer",0,x,"deleteServer",0,function(e){return w(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(f(e),{recursive:!0,force:!0}),E({...r,servers:a,activeServerId:n})})},"getActiveServer",0,R,"getDataDir",0,T,"getWorkspace",0,A,"renameServer",0,function(e,t){return w(async r=>{let a=r.servers.map(r=>r.id===e?{...r,name:t.trim()||r.name,updatedAt:new Date().toISOString()}:r);return E({...r,servers:a})})},"requireDataDir",0,C,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return w(async t=>t.servers.some(t=>t.id===e)?E({...t,activeServerId:e}):t)},"setMode",0,function(e){return w(async t=>E({...t,mode:e}))},"setUsername",0,function(e){return w(async t=>E({...t,username:e.trim()||null}))}],192441)},367165,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(638725),n=e.i(192441);async function i(){let e=await (0,n.getDataDir)();if(!e)return a.DEFAULT_CONFIG;try{let n=await t.promises.readFile(r.default.join(e,"config.json"),"utf8"),i=JSON.parse(n),s=i.customEmbeddings,o=i.embeddingModelId;if(i.customEmbedding&&!s?.length){let e=i.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let l={...a.DEFAULT_CONFIG,...i,embeddingModelId:o??a.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,chunking:{...a.DEFAULT_CONFIG.chunking,...i.chunking},storeConfig:{...a.DEFAULT_CONFIG.storeConfig,...i.storeConfig}};return delete l.customEmbedding,l}catch{return a.DEFAULT_CONFIG}}async function s(e){let a=await (0,n.requireDataDir)(),i={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(r.default.join(a,"config.json"),JSON.stringify(i,null,2),"utf8"),i}e.s(["readConfig",0,i,"writeConfig",0,s])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},700259,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(761095),n=e.i(666680),i=e.i(874533),s=e.i(812057),o=e.i(367165);let l=(0,s.promisify)(i.exec);async function c(e,t){return l(e,{timeout:t,env:{...process.env,PATH:`${process.env.PATH||""}:/usr/local/bin:/opt/homebrew/bin:/bin:/usr/bin`}})}let d=r.default.join(process.cwd(),".larkup"),u=r.default.join(d,"firecrawl-local.json"),p=r.default.join(d,"firecrawl","docker-compose.yml"),m="ragtoolkit-firecrawl";async function h(e){return new Promise((t,r)=>{let n=a.default.createServer();n.listen(e,()=>{let e=n.address().port;n.close(()=>t(e))}),n.on("error",a=>{"EADDRINUSE"===a.code?h(0===e?0:e+1).then(t,r):r(a)})})}async function w(){try{let e=r.default.join(process.cwd(),"proxies.txt"),a=(await t.promises.readFile(e,"utf8")).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(a.length>0){let e=a[Math.floor(Math.random()*a.length)].split(":");if(e.length>=4)return{server:`http://${e[0]}:${e[1]}`,username:e[2],password:e[3]}}}catch(e){}let e=await (0,o.readConfig)();return e.useScraperProxy&&e.scraperProxyServer?{server:e.scraperProxyServer,username:e.scraperProxyUsername,password:e.scraperProxyPassword}:null}let f={running:!1,endpoint:"http://localhost:3002",apiKey:"",port:3002,project:m};async function g(){try{let e=await t.promises.readFile(u,"utf8");return{...f,...JSON.parse(e)}}catch{return f}}async function y(e){return await t.promises.mkdir(d,{recursive:!0}),await t.promises.writeFile(u,JSON.stringify(e,null,2),"utf8"),e}async function v(){try{await c("docker --version")}catch(e){return console.error("DOCKER ERR:",e),{docker:!1,compose:null}}try{return await c("docker compose version"),{docker:!0,compose:"docker compose"}}catch(e){console.error("DOCKER COMPOSE ERR:",e)}try{return await c("docker-compose version"),{docker:!0,compose:"docker-compose"}}catch{return{docker:!0,compose:null}}}async function S(){let{docker:e,compose:t}=await v();return e?t?{docker:!0,compose:!0,message:"Docker is ready."}:{docker:!0,compose:!1,message:"Docker is installed but the Compose plugin was not found. Install `docker compose` to launch Firecrawl locally."}:{docker:!1,compose:!1,message:"Docker isn't available on this machine. Install Docker Desktop (or the Docker engine) and make sure it's running."}}function E(e,t,r){let a=r?[`PROXY_SERVER: "${r.server}"`,...r.username&&r.password?[`PROXY_USERNAME: "${r.username}"`,`PROXY_PASSWORD: "${r.password}"`]:[]]:[],n=['PORT: "3000"',...a].map(e=>` ${e}`).join("\n"),i=['PORT: "3002"',...a,'HOST: "0.0.0.0"','REDIS_URL: "redis://redis:6379"','REDIS_RATE_LIMIT_URL: "redis://redis:6379"','PLAYWRIGHT_MICROSERVICE_URL: "http://playwright-service:3000/scrape"','USE_DB_AUTHENTICATION: "false"',`TEST_API_KEY: "${e}"`,`BULL_AUTH_KEY: "${e}"`,'DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_DATABASE_URL: "postgresql://user:password@db:5432/postgres"','NUQ_RABBITMQ_URL: "amqp://user:password@rabbitmq:5672"'].map(e=>` ${e}`).join("\n");return`# Auto-generated by RAG Toolkit. Do not edit by hand.
58
58
  services:
59
59
  db:
60
60
  image: ghcr.io/firecrawl/nuq-postgres:latest
@@ -100,6 +100,6 @@ ${n}
100
100
  environment:
101
101
  ${i}
102
102
  restart: unless-stopped
103
- `}async function A(){let e=await S();if(!e.compose)return y({...await g(),running:!1,lastError:e.message});let{compose:a}=await v(),i=await g(),s=i.apiKey||`fc-local-${(0,n.randomUUID)()}`,o=i.port||3002,l=await w();await t.promises.mkdir(r.default.dirname(p),{recursive:!0}),await t.promises.writeFile(p,E(s,o,l),"utf8");try{await c(`${a} -p ${m} -f "${p}" up -d`,18e4)}catch(r){let e=r instanceof Error?r.message:"docker compose failed";if(!(e.includes("address already in use")||e.includes("Ports are not available")))return y({...i,apiKey:s,port:o,running:!1,lastError:e});try{o=await h(o+1),await t.promises.writeFile(p,E(s,o,l),"utf8"),await c(`${a} -p ${m} -f "${p}" up -d`,18e4)}catch(e){return y({...i,apiKey:s,port:o,running:!1,lastError:e instanceof Error?e.message:"docker compose retry failed"})}}let d=(0,t.existsSync)("/.dockerenv"),u=`http://${d?"host.docker.internal":"localhost"}:${o}`,f=await C(u,6e4);return y({running:f,endpoint:u,apiKey:s,port:o,project:m,startedAt:new Date().toISOString(),lastError:f?void 0:"Containers started but the API did not become healthy in time. It may still be warming up — try refreshing in a moment."})}async function b(){let{compose:e}=await v(),t=await g();if(e)try{await c(`${e} -p ${m} -f "${p}" down`,6e4)}catch{}return y({...t,running:!1,startedAt:void 0})}async function R(){let e=await g();if(!e.startedAt)return e;let t=await T(e.endpoint);return t!==e.running?y({...e,running:t}):e}async function T(e){try{return(await fetch(e,{method:"GET",signal:AbortSignal.timeout(4e3)})).status>0}catch{return!1}}async function C(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(await T(e))return!0;await new Promise(e=>setTimeout(e,3e3))}return!1}let I="http://firecrawl-api:3002";async function O(){return"true"===process.env.DOCKER_ENV||"1"===process.env.DOCKER_BUILD||(0,t.existsSync)("/.dockerenv")?{available:await T(I),endpoint:I}:{available:!1,endpoint:""}}async function x(){let{available:e}=await O();return e?y({running:!0,endpoint:I,apiKey:`fc-docker-${(0,n.randomUUID)()}`,port:3002,project:"docker-sibling",startedAt:new Date().toISOString()}):y({...f,running:!1,lastError:"Firecrawl sibling service is not running. Restart with: docker compose --profile crawler up"})}e.s(["checkDocker",0,S,"checkDockerSibling",0,O,"connectDockerSibling",0,x,"readLocalState",0,g,"refreshLocalStatus",0,R,"startLocal",0,A,"stopLocal",0,b])},304368,e=>{"use strict";var t=e.i(367165),r=e.i(700259);class a extends Error{status;constructor(e,t){super(e),this.status=t,this.name="FirecrawlError"}}async function n(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();if(e.running&&e.apiKey)return{base:`${e.endpoint}/v1`,key:e.apiKey,mode:"local"};throw new a("Local Firecrawl is selected but not running. Launch a local instance from the UI.",401)}let n=e.firecrawlApiKey;if(n)return{base:"https://api.firecrawl.dev/v1",key:n,mode:"cloud"};throw new a("Cloud Firecrawl is selected but no API key is configured. Set FIRECRAWL_API_KEY in Settings.",401)}async function i(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();return!!(e.running&&e.apiKey)}return!!e.firecrawlApiKey}async function s(e,t){let{base:r,key:i}=await n(),s=await fetch(`${r}${e}`,{...t,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json",...t?.headers??{}},cache:"no-store"}),o=await s.text(),c=o?l(o):{};if(!s.ok)throw new a(c?.error||`Firecrawl request failed (${s.status})`,s.status);return c}async function o(e){let{key:t}=await n(),r=await fetch(e,{headers:{Authorization:`Bearer ${t}`},cache:"no-store"}),i=await r.text(),s=i?l(i):{};if(!r.ok)throw new a(s?.error||`Firecrawl request failed (${r.status})`,r.status);return s}function l(e){try{return JSON.parse(e)}catch{return{}}}async function c(e,t=10){return((await s("/search",{method:"POST",body:JSON.stringify({query:e,limit:t})})).data??[]).map(e=>({url:e.url,title:e.title||e.url,description:e.description}))}let d={waitFor:1e4,onlyMainContent:!1,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","Accept-Language":"en-US,en;q=0.9","Sec-Ch-Ua":'"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"'}};async function u(e){let t=(await s("/scrape",{method:"POST",body:JSON.stringify({url:e,formats:["markdown"],...d})})).data??{};return{url:t.metadata?.sourceURL||e,title:t.metadata?.title||t.metadata?.ogTitle||e,markdown:t.markdown??""}}async function p(e,t){let r=await s("/crawl",{method:"POST",body:JSON.stringify({url:e,limit:t,allowExternalLinks:!1,scrapeOptions:{...d,formats:["markdown"],onlyMainContent:!0}})});if(!r.id)throw new a("Firecrawl did not return a crawl id");return r.id}async function m(e,t=!1){let r=t?await o(e):await s(`/crawl/${e}`,{method:"GET"});return{state:r.status??"scraping",total:r.total??0,completed:r.completed??0,next:r.next,pages:(r.data??[]).map(e=>({url:e.metadata?.sourceURL||e.metadata?.url||"",title:e.metadata?.title||e.metadata?.sourceURL||"Untitled",markdown:e.markdown??""}))}}async function h(e){try{await s(`/crawl/${e}`,{method:"DELETE"})}catch{}}e.s(["FirecrawlError",0,a,"cancelCrawl",0,h,"getCrawlStatus",0,m,"isFirecrawlConfigured",0,i,"scrapePage",0,u,"searchWeb",0,c,"startCrawl",0,p])},426237,e=>{"use strict";var t=e.i(686296),r=e.i(304368);async function a(){return t.NextResponse.json({configured:await (0,r.isFirecrawlConfigured)()})}async function n(e){try{let{query:a,limit:n}=await e.json();if(!a||!a.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let i=await (0,r.searchWeb)(a.trim(),Math.min(n??10,25));return t.NextResponse.json({results:i})}catch(n){let e=n instanceof r.FirecrawlError?n.status??500:500,a=n instanceof Error?n.message:"Search failed.";return t.NextResponse.json({error:a},{status:e})}}e.s(["GET",0,a,"POST",0,n,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},325058,e=>{"use strict";var t=e.i(850492),r=e.i(891119),a=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),c=e.i(135958),d=e.i(86520),u=e.i(970949),p=e.i(741165),m=e.i(106898),h=e.i(454415),w=e.i(37125),f=e.i(193695);e.i(530058);var g=e.i(605998),y=e.i(426237);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/search/route",pathname:"/api/search",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:E,serverHooks:A}=v;async function b(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/search/route";y=y.replace(/\/index$/,"")||"/";let S=await v.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,deploymentId:A,params:b,nextConfig:R,parsedUrl:T,isDraftMode:C,prerenderManifest:I,routerServerContext:O,isOnDemandRevalidate:x,revalidateOnlyGenerated:D,resolvedPathname:N,clientReferenceManifest:U,serverActionsManifest:k}=S,P=(0,o.normalizeAppPath)(y),L=!!(I.dynamicRoutes[P]||I.routes[N]),_=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,T,!1):t.end("This page could not be found"),null);if(L&&!C){let e=!!I.routes[N],t=I.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await _();throw new f.NoFallbackError}}let M=null;!L||v.isDev||C||(M="/index"===(M=N)?"/":M);let F=!0===v.isDev||!L,q=L&&!F;k&&U&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:U,serverActionsManifest:k});let j=e.method||"GET",K=(0,i.getTracer)(),$=K.getActiveScopeSpan(),H=!!(null==O?void 0:O.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,R,I,G);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let B={params:b,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:F,incrementalCache:W,cacheLifeProfiles:R.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>v.onRequestError(e,t,a,n,O)},sharedContext:{buildId:E,deploymentId:A}},Y=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(Y,(0,c.signalFromNodeResponse)(t));try{let n,s=async e=>v.handle(V,B).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")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${j} ${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(`${j} ${y}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!G&&x&&D&&!r)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=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(Y,z,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,a=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:x})},!1,O),t}},c=await v.handleResponse({req:e,nextConfig:R,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:G});if(!L)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(o=c.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return G&&L||d.delete(w.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(Y,z,new Response(c.value.body,{headers:d,status:c.value.status||200})),null};H&&$?await o($):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${j} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:x})},!1,O),L)throw t;return await (0,p.sendResponse)(Y,z,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,A,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,E])}];
103
+ `}async function A(){let e=await S();if(!e.compose)return y({...await g(),running:!1,lastError:e.message});let{compose:a}=await v(),i=await g(),s=i.apiKey||`fc-local-${(0,n.randomUUID)()}`,o=i.port||3002,l=await w();await t.promises.mkdir(r.default.dirname(p),{recursive:!0}),await t.promises.writeFile(p,E(s,o,l),"utf8");try{await c(`${a} -p ${m} -f "${p}" up -d`,18e4)}catch(r){let e=r instanceof Error?r.message:"docker compose failed";if(!(e.includes("address already in use")||e.includes("Ports are not available")))return y({...i,apiKey:s,port:o,running:!1,lastError:e});try{o=await h(o+1),await t.promises.writeFile(p,E(s,o,l),"utf8"),await c(`${a} -p ${m} -f "${p}" up -d`,18e4)}catch(e){return y({...i,apiKey:s,port:o,running:!1,lastError:e instanceof Error?e.message:"docker compose retry failed"})}}let d=(0,t.existsSync)("/.dockerenv"),u=`http://${d?"host.docker.internal":"localhost"}:${o}`,f=await C(u,6e4);return y({running:f,endpoint:u,apiKey:s,port:o,project:m,startedAt:new Date().toISOString(),lastError:f?void 0:"Containers started but the API did not become healthy in time. It may still be warming up — try refreshing in a moment."})}async function b(){let{compose:e}=await v(),t=await g();if(e)try{await c(`${e} -p ${m} -f "${p}" down`,6e4)}catch{}return y({...t,running:!1,startedAt:void 0})}async function R(){let e=await g();if(!e.startedAt)return e;let t=await T(e.endpoint);return t!==e.running?y({...e,running:t}):e}async function T(e){try{return(await fetch(e,{method:"GET",signal:AbortSignal.timeout(4e3)})).status>0}catch{return!1}}async function C(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(await T(e))return!0;await new Promise(e=>setTimeout(e,3e3))}return!1}let I="http://firecrawl-api:3002";async function O(){return"true"===process.env.DOCKER_ENV||"1"===process.env.DOCKER_BUILD||(0,t.existsSync)("/.dockerenv")?{available:await T(I),endpoint:I}:{available:!1,endpoint:""}}async function x(){let{available:e}=await O();return e?y({running:!0,endpoint:I,apiKey:`fc-docker-${(0,n.randomUUID)()}`,port:3002,project:"docker-sibling",startedAt:new Date().toISOString()}):y({...f,running:!1,lastError:"Firecrawl sibling service is not running. Restart with: docker compose --profile crawler up"})}e.s(["checkDocker",0,S,"checkDockerSibling",0,O,"connectDockerSibling",0,x,"readLocalState",0,g,"refreshLocalStatus",0,R,"startLocal",0,A,"stopLocal",0,b])},304368,e=>{"use strict";var t=e.i(367165),r=e.i(700259);class a extends Error{status;constructor(e,t){super(e),this.status=t,this.name="FirecrawlError"}}async function n(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();if(e.running&&e.apiKey)return{base:`${e.endpoint}/v1`,key:e.apiKey,mode:"local"};throw new a("Local Firecrawl is selected but not running. Launch a local instance from the UI.",401)}let n=e.firecrawlApiKey;if(n)return{base:"https://api.firecrawl.dev/v1",key:n,mode:"cloud"};throw new a("Cloud Firecrawl is selected but no API key is configured. Set FIRECRAWL_API_KEY in Settings.",401)}async function i(){let e=await (0,t.readConfig)();if("local"===(e.webCrawlerProvider||"local")){let e=await (0,r.readLocalState)();return!!(e.running&&e.apiKey)}return!!e.firecrawlApiKey}async function s(e,t){let{base:r,key:i}=await n(),s=await fetch(`${r}${e}`,{...t,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json",...t?.headers??{}},cache:"no-store"}),o=await s.text(),c=o?l(o):{};if(!s.ok)throw new a(c?.error||`Firecrawl request failed (${s.status})`,s.status);return c}async function o(e){let{key:t}=await n(),r=await fetch(e,{headers:{Authorization:`Bearer ${t}`},cache:"no-store"}),i=await r.text(),s=i?l(i):{};if(!r.ok)throw new a(s?.error||`Firecrawl request failed (${r.status})`,r.status);return s}function l(e){try{return JSON.parse(e)}catch{return{}}}async function c(e,t=10){return((await s("/search",{method:"POST",body:JSON.stringify({query:e,limit:t})})).data??[]).map(e=>({url:e.url,title:e.title||e.url,description:e.description}))}let d={waitFor:1e4,onlyMainContent:!1,headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36","Accept-Language":"en-US,en;q=0.9","Sec-Ch-Ua":'"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"'}};async function u(e){let t=(await s("/scrape",{method:"POST",body:JSON.stringify({url:e,formats:["markdown"],...d})})).data??{};return{url:t.metadata?.sourceURL||e,title:t.metadata?.title||t.metadata?.ogTitle||e,markdown:t.markdown??""}}async function p(e,t){let r=await s("/crawl",{method:"POST",body:JSON.stringify({url:e,limit:t,allowExternalLinks:!1,scrapeOptions:{...d,formats:["markdown"],onlyMainContent:!0}})});if(!r.id)throw new a("Firecrawl did not return a crawl id");return r.id}async function m(e,t=!1){let r=t?await o(e):await s(`/crawl/${e}`,{method:"GET"});return{state:r.status??"scraping",total:r.total??0,completed:r.completed??0,next:r.next,pages:(r.data??[]).map(e=>({url:e.metadata?.sourceURL||e.metadata?.url||"",title:e.metadata?.title||e.metadata?.sourceURL||"Untitled",markdown:e.markdown??""}))}}async function h(e){try{await s(`/crawl/${e}`,{method:"DELETE"})}catch{}}e.s(["FirecrawlError",0,a,"cancelCrawl",0,h,"getCrawlStatus",0,m,"isFirecrawlConfigured",0,i,"scrapePage",0,u,"searchWeb",0,c,"startCrawl",0,p])},426237,e=>{"use strict";var t=e.i(686296),r=e.i(304368);async function a(){return t.NextResponse.json({configured:await (0,r.isFirecrawlConfigured)()})}async function n(e){try{let{query:a,limit:n}=await e.json();if(!a||!a.trim())return t.NextResponse.json({error:"A search query is required."},{status:400});let i=await (0,r.searchWeb)(a.trim(),Math.min(n??10,25));return t.NextResponse.json({results:i})}catch(n){let e=n instanceof r.FirecrawlError?n.status??500:500,a=n instanceof Error?n.message:"Search failed.";return t.NextResponse.json({error:a},{status:e})}}e.s(["GET",0,a,"POST",0,n,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},325058,e=>{"use strict";var t=e.i(850492),r=e.i(891119),a=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),c=e.i(135958),d=e.i(86520),u=e.i(970949),p=e.i(741165),m=e.i(106898),h=e.i(454415),w=e.i(37125),f=e.i(193695);e.i(530058);var g=e.i(605998),y=e.i(426237);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/search/route",pathname:"/api/search",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/search/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:E,serverHooks:A}=v;async function b(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/search/route";y=y.replace(/\/index$/,"")||"/";let S=await v.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:E,deploymentId:A,params:b,nextConfig:R,parsedUrl:T,isDraftMode:C,prerenderManifest:I,routerServerContext:O,isOnDemandRevalidate:x,revalidateOnlyGenerated:D,resolvedPathname:N,clientReferenceManifest:k,serverActionsManifest:U}=S,P=(0,o.normalizeAppPath)(y),L=!!(I.dynamicRoutes[P]||I.routes[N]),_=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,T,!1):t.end("This page could not be found"),null);if(L&&!C){let e=!!I.routes[N],t=I.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await _();throw new f.NoFallbackError}}let F=null;!L||v.isDev||C||(F="/index"===(F=N)?"/":F);let M=!0===v.isDev||!L,q=L&&!M;U&&k&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:k,serverActionsManifest:U});let j=e.method||"GET",K=(0,i.getTracer)(),$=K.getActiveScopeSpan(),H=!!(null==O?void 0:O.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),W=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,R,I,G);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let B={params:b,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:M,incrementalCache:W,cacheLifeProfiles:R.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>v.onRequestError(e,t,a,n,O)},sharedContext:{buildId:E,deploymentId:A}},Y=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(Y,(0,c.signalFromNodeResponse)(t));try{let n,s=async e=>v.handle(V,B).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")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${j} ${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(`${j} ${y}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!G&&x&&D&&!r)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=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(Y,z,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[w.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,a=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:x})},!1,O),t}},c=await v.handleResponse({req:e,nextConfig:R,cacheKey:F,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:G});if(!L)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(o=c.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",x?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return G&&L||d.delete(w.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(Y,z,new Response(c.value.body,{headers:d,status:c.value.status||200})),null};H&&$?await o($):(n=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${j} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:x})},!1,O),L)throw t;return await (0,p.sendResponse)(Y,z,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,A,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,E])}];
104
104
 
105
105
  //# sourceMappingURL=%5Broot-of-the-server%5D__02p-tv7._.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,n,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,i],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),c=a.default.join(l,"workspace.json"),u={username:null,activeServerId:null,servers:[],mode:null},p=new o.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function y(e){return await A(),m(async()=>e(await w()??u))}function v(e){return a.default.join(d,e)}function f(e,t){return`./.larkup/servers/${e}/${t}`}async function g(e){try{return await t.promises.access(e),!0}catch{return!1}}async function b(e,r){if(await g(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function w(){try{let e=await t.promises.readFile(c,"utf8");return{...u,...JSON.parse(e)}}catch{return null}}async function S(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(c,JSON.stringify(e,null,2),"utf8"),e}async function A(){let e=await w();return e||m(k)}async function k(){let e=await w();if(e)return e;if(!await g(a.default.join(l,"config.json")))return S(u);let o=(0,r.randomUUID)(),s=v(o);for(let e of(await t.promises.mkdir(s,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await b(a.default.join(l,e),a.default.join(s,e));await b(a.default.join(l,"lancedb"),a.default.join(s,"lancedb")),await b(a.default.join(l,"generated-server"),a.default.join(s,"generated-server"));let n="Default server";try{let e=a.default.join(s,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(n=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:f(o,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let i=new Date().toISOString(),d={id:o,name:n,port:8080,createdAt:i,updatedAt:i};return S({username:null,activeServerId:o,servers:[d],mode:null})}async function x(){let e=await A(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function C(){let e=await x();if(!e)return null;let a=v(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function R(){let e=await C();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await T("My RAG server");return v(a.id)}async function I(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function E(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await I(t);)t++;return t}function T(e){return y(async o=>{let s=(0,r.randomUUID)(),i=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await E(o),createdAt:i,updatedAt:i},d=v(s);await t.promises.mkdir(d,{recursive:!0});let c={};if(o.activeServerId)try{let e=await t.promises.readFile(a.default.join(v(o.activeServerId),"config.json"),"utf8");c=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...n,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:f(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??n.embeddingApiKey,customEmbeddings:a.customEmbeddings??n.customEmbeddings,chatApiKey:a.chatApiKey??n.chatApiKey,customChatModels:a.customChatModels??n.customChatModels,serperApiKey:a.serperApiKey??n.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??n.firecrawlApiKey,updatedAt:new Date().toISOString()}}(s,l.name,c),null,2),"utf8");let u={...o,servers:[...o.servers,l],activeServerId:s};return await S(u),{workspace:u,server:l}})}e.s(["createServer",0,T,"deleteServer",0,function(e){return y(async a=>{let r=a.servers.filter(t=>t.id!==e),o=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(v(e),{recursive:!0,force:!0}),S({...a,servers:r,activeServerId:o})})},"getActiveServer",0,x,"getDataDir",0,C,"getWorkspace",0,A,"renameServer",0,function(e,t){return y(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return S({...a,servers:r})})},"requireDataDir",0,R,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return y(async t=>t.servers.some(t=>t.id===e)?S({...t,activeServerId:e}):t)},"setMode",0,function(e){return y(async t=>S({...t,mode:e}))},"setUsername",0,function(e){return y(async t=>S({...t,username:e.trim()||null}))}],192441)},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,a){let r={};for(let o of e.fields.filter(e=>{if(e.showWhen){let a=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(a))return!1}return!e.showWhenIndexType||!a||!!e.showWhenIndexType.includes(a)}))o.required&&!t[o.key]?.trim()&&(r[o.key]=`${o.label} is required`);return r}])},585071,e=>{"use strict";var t=e.i(192441);async function a(a,r){let o={...a.storeConfig},s=await (0,t.getActiveServer)(),n=s?.id;if(n){let e=n.replace(/[^a-zA-Z0-9_-]/g,"_");"pinecone"===a.vectorStore?o.namespace=n:"chroma"===a.vectorStore?o.collectionName=`documents_${e}`:"lancedb"!==a.vectorStore&&a.vectorStore||(o.tableName=`documents_${e}`)}switch(a.vectorStore){case"pinecone":{let{PineconeAdapter:t}=await e.A(77149);return new t({apiKey:o.apiKey,indexName:o.indexName,namespace:o.namespace,sparseModel:o.sparseModel,indexType:a.indexType,onRateLimit:r})}case"chroma":{let{ChromaAdapter:t}=await e.A(195059);return new t({mode:o.mode,host:o.host,authToken:o.authToken,apiKey:o.apiKey,tenant:o.tenant,database:o.database,collectionName:o.collectionName,indexType:a.indexType})}default:{let{LanceDBAdapter:t}=await e.A(184904);return new t({mode:o.mode,dbPath:o.dbPath,uri:o.uri,apiKey:o.apiKey,s3Uri:o.s3Uri,s3Endpoint:o.s3Endpoint,s3Region:o.s3Region,s3AccessKeyId:o.s3AccessKeyId,s3SecretAccessKey:o.s3SecretAccessKey,tableName:o.tableName})}}}e.s(["createAdapter",0,a])},235718,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),o=e.i(765700),s=e.i(601263),n=e.i(706859),i=e.i(947547),l=e.i(819797),d=e.i(135958),c=e.i(86520),u=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),y=e.i(37125),v=e.i(193695);e.i(530058);var f=e.i(605998),g=e.i(686296),b=e.i(979598),w=e.i(585071);async function S(t){let a;try{a=await t.json()}catch{return g.NextResponse.json({error:"Invalid JSON body"},{status:400})}let r=(0,b.getVectorStore)(a.vectorStore);if(!r)return g.NextResponse.json({error:`Unknown vector store: ${a.vectorStore}`},{status:400});let o=(0,b.validateStoreConfig)(r,a.storeConfig??{},a.indexType);if(Object.keys(o).length>0)return g.NextResponse.json({error:"Missing required vector store fields",fieldErrors:o},{status:422});let s=1536;if(a.embeddingModelId.startsWith("custom:")){let e=a.embeddingModelId.slice(7),t=a.customEmbeddings?.find(t=>t.modelName===e);if(!t)return g.NextResponse.json({error:`Custom embedding model "${e}" not found in customEmbeddings`},{status:400});s=t.dimensions??1536}else{let{getEmbeddingModel:t,EMBEDDING_DIMENSIONS:r}=await e.A(23894),o=t(a.embeddingModelId);if(o)s=o.dimensions;else{let e=r[a.embeddingModelId];s=e?.dimensions??768}}try{let e=await (0,w.createAdapter)(a);return await e.testConnection(s),g.NextResponse.json({success:!0})}catch(e){return g.NextResponse.json({error:e instanceof Error?e.message:"Connection failed"},{status:400})}}e.s(["POST",0,S,"runtime",0,"nodejs"],932697);var A=e.i(932697);let k=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/config/test/route",pathname:"/api/config/test",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/config/test/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:C,serverHooks:R}=k;async function I(e,t,r){r.requestMeta&&(0,o.setRequestMeta)(e,r.requestMeta),k.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/config/test/route";g=g.replace(/\/index$/,"")||"/";let b=await k.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,deploymentId:S,params:A,nextConfig:x,parsedUrl:C,isDraftMode:R,prerenderManifest:I,routerServerContext:E,isOnDemandRevalidate:T,revalidateOnlyGenerated:N,resolvedPathname:q,clientReferenceManifest:O,serverActionsManifest:D}=b,U=(0,i.normalizeAppPath)(g),P=!!(I.dynamicRoutes[U]||I.routes[q]),K=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,C,!1):t.end("This page could not be found"),null);if(P&&!R){let e=!!I.routes[q],t=I.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await K();throw new v.NoFallbackError}}let L=null;!P||k.isDev||R||(L="/index"===(L=q)?"/":L);let _=!0===k.isDev||!P,M=P&&!_;D&&O&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:D});let j=e.method||"GET",W=(0,s.getTracer)(),H=W.getActiveScopeSpan(),V=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,o.getRequestMeta)(e,"minimalMode"),z=(0,o.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,x,I,F);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let B={params:A,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:_,incrementalCache:z,cacheLifeProfiles:x.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,o)=>k.onRequestError(e,t,r,o,E)},sharedContext:{buildId:w,deploymentId:S}},G=new l.NodeNextRequest(e),Y=new l.NodeNextResponse(t),$=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let o,n=async e=>k.handle($,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=W.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${j} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),o&&o!==e&&(o.setAttribute("http.route",r),o.updateName(t))}else e.updateName(`${j} ${g}`)}),i=async o=>{var s,i;let l=async({previousCacheEntry:a})=>{try{if(!F&&T&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await n(o);e.fetchMetrics=B.renderOpts.fetchMetrics;let i=B.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=B.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(G,Y,s,B.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,r=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:T})},!1,E),t}},d=await k.handleResponse({req:e,nextConfig:x,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:F});if(!P)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",T?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return F&&P||c.delete(y.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(G,Y,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};V&&H?await i(H):(o=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(c.BaseServerSpan.handleRequest,{spanName:`${j} ${g}`,kind:s.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},i),void 0,!V))}catch(t){if(t instanceof v.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:T})},!1,E),P)throw t;return await (0,p.sendResponse)(G,Y,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:C})},"routeModule",0,k,"serverHooks",0,R,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,C],235718)},77149,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__01tm01i._.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]__072q335._.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)))},23894,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_embeddings_registry_ts_031sc7-._.js"].map(t=>e.l(t))).then(()=>t(399828)))}];
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,n,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,i],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),c=a.default.join(l,"workspace.json"),u={username:null,activeServerId:null,servers:[],mode:null},p=new o.AsyncLocalStorage,h=Promise.resolve();function m(e){let t=h.then(e,e);return h=t.catch(()=>{}),t}async function y(e){return await A(),m(async()=>e(await w()??u))}function f(e){return a.default.join(d,e)}function v(e,t){return`./.larkup/servers/${e}/${t}`}async function g(e){try{return await t.promises.access(e),!0}catch{return!1}}async function b(e,r){if(await g(e)){await t.promises.mkdir(a.default.dirname(r),{recursive:!0});try{await t.promises.rename(e,r)}catch{await t.promises.cp(e,r,{recursive:!0}),await t.promises.rm(e,{recursive:!0,force:!0})}}}async function w(){try{let e=await t.promises.readFile(c,"utf8");return{...u,...JSON.parse(e)}}catch{return null}}async function S(e){return await t.promises.mkdir(l,{recursive:!0}),await t.promises.writeFile(c,JSON.stringify(e,null,2),"utf8"),e}async function A(){let e=await w();return e||m(k)}async function k(){let e=await w();if(e)return e;if(!await g(a.default.join(l,"config.json")))return S(u);let o=(0,r.randomUUID)(),s=f(o);for(let e of(await t.promises.mkdir(s,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await b(a.default.join(l,e),a.default.join(s,e));await b(a.default.join(l,"lancedb"),a.default.join(s,"lancedb")),await b(a.default.join(l,"generated-server"),a.default.join(s,"generated-server"));let n="Default server";try{let e=a.default.join(s,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(n=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:v(o,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let i=new Date().toISOString(),d={id:o,name:n,port:8080,createdAt:i,updatedAt:i};return S({username:null,activeServerId:o,servers:[d],mode:null})}async function x(){let e=await A(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function C(){let e=await x();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function R(){let e=await C();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await T("my-larkup");return f(a.id)}async function I(e){return new Promise(t=>{let a=s.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function E(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await I(t);)t++;return t}function T(e){return y(async o=>{let s=(0,r.randomUUID)(),i=new Date().toISOString(),l={id:s,name:e.trim()||"Untitled server",port:await E(o),createdAt:i,updatedAt:i},d=f(s);await t.promises.mkdir(d,{recursive:!0});let c={};if(o.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(o.activeServerId),"config.json"),"utf8");c=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...n,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",storeConfig:{mode:"local",dbPath:v(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??n.embeddingApiKey,customEmbeddings:a.customEmbeddings??n.customEmbeddings,chatApiKey:a.chatApiKey??n.chatApiKey,customChatModels:a.customChatModels??n.customChatModels,serperApiKey:a.serperApiKey??n.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??n.firecrawlApiKey,updatedAt:new Date().toISOString()}}(s,l.name,c),null,2),"utf8");let u={...o,servers:[...o.servers,l],activeServerId:s};return await S(u),{workspace:u,server:l}})}e.s(["createServer",0,T,"deleteServer",0,function(e){return y(async a=>{let r=a.servers.filter(t=>t.id!==e),o=a.activeServerId===e?r[0]?.id??null:a.activeServerId;return await t.promises.rm(f(e),{recursive:!0,force:!0}),S({...a,servers:r,activeServerId:o})})},"getActiveServer",0,x,"getDataDir",0,C,"getWorkspace",0,A,"renameServer",0,function(e,t){return y(async a=>{let r=a.servers.map(a=>a.id===e?{...a,name:t.trim()||a.name,updatedAt:new Date().toISOString()}:a);return S({...a,servers:r})})},"requireDataDir",0,R,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return y(async t=>t.servers.some(t=>t.id===e)?S({...t,activeServerId:e}):t)},"setMode",0,function(e){return y(async t=>S({...t,mode:e}))},"setUsername",0,function(e){return y(async t=>S({...t,username:e.trim()||null}))}],192441)},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,a){let r={};for(let o of e.fields.filter(e=>{if(e.showWhen){let a=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(a))return!1}return!e.showWhenIndexType||!a||!!e.showWhenIndexType.includes(a)}))o.required&&!t[o.key]?.trim()&&(r[o.key]=`${o.label} is required`);return r}])},585071,e=>{"use strict";var t=e.i(192441);async function a(a,r){let o={...a.storeConfig},s=await (0,t.getActiveServer)(),n=s?.id;if(n){let e=n.replace(/[^a-zA-Z0-9_-]/g,"_");"pinecone"===a.vectorStore?o.namespace=n:"chroma"===a.vectorStore?o.collectionName=`documents_${e}`:"lancedb"!==a.vectorStore&&a.vectorStore||(o.tableName=`documents_${e}`)}switch(a.vectorStore){case"pinecone":{let{PineconeAdapter:t}=await e.A(77149);return new t({apiKey:o.apiKey,indexName:o.indexName,namespace:o.namespace,sparseModel:o.sparseModel,indexType:a.indexType,onRateLimit:r})}case"chroma":{let{ChromaAdapter:t}=await e.A(195059);return new t({mode:o.mode,host:o.host,authToken:o.authToken,apiKey:o.apiKey,tenant:o.tenant,database:o.database,collectionName:o.collectionName,indexType:a.indexType})}default:{let{LanceDBAdapter:t}=await e.A(184904);return new t({mode:o.mode,dbPath:o.dbPath,uri:o.uri,apiKey:o.apiKey,s3Uri:o.s3Uri,s3Endpoint:o.s3Endpoint,s3Region:o.s3Region,s3AccessKeyId:o.s3AccessKeyId,s3SecretAccessKey:o.s3SecretAccessKey,tableName:o.tableName})}}}e.s(["createAdapter",0,a])},235718,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),o=e.i(765700),s=e.i(601263),n=e.i(706859),i=e.i(947547),l=e.i(819797),d=e.i(135958),c=e.i(86520),u=e.i(970949),p=e.i(741165),h=e.i(106898),m=e.i(454415),y=e.i(37125),f=e.i(193695);e.i(530058);var v=e.i(605998),g=e.i(686296),b=e.i(979598),w=e.i(585071);async function S(t){let a;try{a=await t.json()}catch{return g.NextResponse.json({error:"Invalid JSON body"},{status:400})}let r=(0,b.getVectorStore)(a.vectorStore);if(!r)return g.NextResponse.json({error:`Unknown vector store: ${a.vectorStore}`},{status:400});let o=(0,b.validateStoreConfig)(r,a.storeConfig??{},a.indexType);if(Object.keys(o).length>0)return g.NextResponse.json({error:"Missing required vector store fields",fieldErrors:o},{status:422});let s=1536;if(a.embeddingModelId.startsWith("custom:")){let e=a.embeddingModelId.slice(7),t=a.customEmbeddings?.find(t=>t.modelName===e);if(!t)return g.NextResponse.json({error:`Custom embedding model "${e}" not found in customEmbeddings`},{status:400});s=t.dimensions??1536}else{let{getEmbeddingModel:t,EMBEDDING_DIMENSIONS:r}=await e.A(23894),o=t(a.embeddingModelId);if(o)s=o.dimensions;else{let e=r[a.embeddingModelId];s=e?.dimensions??768}}try{let e=await (0,w.createAdapter)(a);return await e.testConnection(s),g.NextResponse.json({success:!0})}catch(e){return g.NextResponse.json({error:e instanceof Error?e.message:"Connection failed"},{status:400})}}e.s(["POST",0,S,"runtime",0,"nodejs"],932697);var A=e.i(932697);let k=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/config/test/route",pathname:"/api/config/test",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/config/test/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:C,serverHooks:R}=k;async function I(e,t,r){r.requestMeta&&(0,o.setRequestMeta)(e,r.requestMeta),k.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/config/test/route";g=g.replace(/\/index$/,"")||"/";let b=await k.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,deploymentId:S,params:A,nextConfig:x,parsedUrl:C,isDraftMode:R,prerenderManifest:I,routerServerContext:E,isOnDemandRevalidate:T,revalidateOnlyGenerated:N,resolvedPathname:q,clientReferenceManifest:O,serverActionsManifest:D}=b,U=(0,i.normalizeAppPath)(g),P=!!(I.dynamicRoutes[U]||I.routes[q]),K=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,C,!1):t.end("This page could not be found"),null);if(P&&!R){let e=!!I.routes[q],t=I.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await K();throw new f.NoFallbackError}}let L=null;!P||k.isDev||R||(L="/index"===(L=q)?"/":L);let _=!0===k.isDev||!P,j=P&&!_;D&&O&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:O,serverActionsManifest:D});let M=e.method||"GET",W=(0,s.getTracer)(),H=W.getActiveScopeSpan(),V=!!(null==E?void 0:E.isWrappedByNextServer),F=!!(0,o.getRequestMeta)(e,"minimalMode"),z=(0,o.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,x,I,F);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let B={params:A,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:_,incrementalCache:z,cacheLifeProfiles:x.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,o)=>k.onRequestError(e,t,r,o,E)},sharedContext:{buildId:w,deploymentId:S}},Y=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),$=d.NextRequestAdapter.fromNodeNextRequest(Y,(0,d.signalFromNodeResponse)(t));try{let o,n=async e=>k.handle($,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=W.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${M} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),o&&o!==e&&(o.setAttribute("http.route",r),o.updateName(t))}else e.updateName(`${M} ${g}`)}),i=async o=>{var s,i;let l=async({previousCacheEntry:a})=>{try{if(!F&&T&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await n(o);e.fetchMetrics=B.renderOpts.fetchMetrics;let i=B.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=B.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(Y,G,s,B.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,r=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:v.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 k.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:T})},!1,E),t}},d=await k.handleResponse({req:e,nextConfig:x,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:F});if(!P)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});F||t.setHeader("x-nextjs-cache",T?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return F&&P||c.delete(y.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(Y,G,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};V&&H?await i(H):(o=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(c.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},i),void 0,!V))}catch(t){if(t instanceof f.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:T})},!1,E),P)throw t;return await (0,p.sendResponse)(Y,G,new Response(null,{status:500})),null}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:C})},"routeModule",0,k,"serverHooks",0,R,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,C],235718)},77149,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__01tm01i._.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]__072q335._.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)))},23894,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_embeddings_registry_ts_031sc7-._.js"].map(t=>e.l(t))).then(()=>t(399828)))}];
58
58
 
59
59
  //# sourceMappingURL=%5Broot-of-the-server%5D__02t_0g7._.js.map
@@ -54,10 +54,10 @@ 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"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function g(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function h(e){return await b(),g(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 b(){let e=await S();return e||g(E)}async function E(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),i=f(n);for(let e of(await t.promises.mkdir(i,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(i,e));await v(a.default.join(l,"lancedb"),a.default.join(i,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(i,"generated-server"));let s="Default server";try{let e=a.default.join(i,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(s=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:y(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),d={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[d],mode:null})}async function I(){let e=await b(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function R(){let e=await I();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function x(){let e=await R();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await D("My RAG server");return f(a.id)}async function T(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function C(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function D(e){return h(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await C(n),createdAt:o,updatedAt:o},d=f(i);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-rag",storeConfig:{mode:"local",dbPath:y(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:i};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,D,"deleteServer",0,function(e){return h(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,I,"getDataDir",0,R,"getWorkspace",0,b,"renameServer",0,function(e,t){return h(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,x,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return h(async t=>t.servers.some(t=>t.id===e)?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)},839554,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,"media-assets.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 media asset store at ${e}: expected a JSON array.`);return r}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function d(e){let n=await 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}}let u=["download","extract","transcribe","vision","synthesize","index"],c={download:10,extract:15,transcribe:25,vision:30,synthesize:5,index:15};function p(e){return u.map(t=>({stage:t,status:"waiting",updatedAt:e}))}function m(e){return void 0!==e&&Number.isFinite(e)?Math.max(0,e):void 0}function g(e){let t=m(e);return void 0===t?void 0:Math.min(100,t)}function h(e){return Math.floor(m(e.processingRevision)??0)+1}async function f(){let e=await l(),t={image:0,video:0,audio:0},a={pending:0,processing:0,completed:0,failed:0},r=0;for(let n of e)t[n.type]++,a[n.processingStatus]++,r+=n.fileSize;return{total:e.length,byType:t,byStatus:a,totalBytes:r}}async function y(e){return(await l()).find(t=>t.id===e)}e.s(["addMediaAssets",0,function(e){return s(async()=>{let t=await l(),a=new Date().toISOString(),n=e.map(e=>({id:(0,r.randomUUID)(),type:e.type,fileName:e.fileName,mimeType:e.mimeType,storageUri:e.storageUri,thumbnailUri:e.thumbnailUri,originalUrl:e.originalUrl,fileSize:e.fileSize,dimensions:e.dimensions,durationSecs:e.durationSecs,processingStatus:"pending",processingRevision:0,documentIds:[],createdAt:a,updatedAt:a}));return t.push(...n),await d(t),n})},"claimMediaAsset",0,function(e){return s(async()=>{let t=await l(),a=t.findIndex(t=>t.id===e);if(a<0||"processing"===t[a].processingStatus||"Queued for background processing..."===t[a].processingMessage)return;let r=new Date().toISOString();return t[a]={...t[a],processingStatus:"pending",processingError:void 0,processingMessage:"Queued for background processing...",processingProgress:1,processingSteps:p(r),processingRevision:h(t[a]),processingHeartbeatAt:r,updatedAt:r},await d(t),t[a]})},"deleteMediaAsset",0,function(e){return s(async()=>{let t=await l();await d(t.filter(t=>t.id!==e))})},"deleteMediaAssets",0,function(e){return s(async()=>{let t=await l(),a=new Set(e);await d(t.filter(e=>!a.has(e.id)))})},"getMediaAsset",0,y,"mediaStats",0,f,"readMediaAssets",0,l,"recoverStaleMediaAssets",0,function(e=3e5){return s(async()=>{let t=await l(),a=Date.now()-e,r="The background worker stopped. Retry to resume media processing.",n=0;for(let e=0;e<t.length;e++){let i=t[e],s="processing"===i.processingStatus,o="pending"===i.processingStatus&&"Queued for background processing..."===i.processingMessage,l=i.processingHeartbeatAt??i.updatedAt;if((s||o)&&new Date(l).getTime()<a){let a=new Date().toISOString(),s=i.processingSteps?.map(e=>"running"===e.status?{...e,status:"failed",message:r,updatedAt:a,finishedAt:a}:e);t[e]={...i,processingStatus:"failed",processingError:r,processingMessage:void 0,processingProgress:void 0,processingSteps:s,processingRevision:h(i),processingHeartbeatAt:a,updatedAt:a},n++}}return n>0&&await d(t),n})},"updateMediaAsset",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];return a[r]={...n,...t,documentIds:t.documentIds??n.documentIds,pendingDocumentIds:t.pendingDocumentIds??n.pendingDocumentIds,supersededDocumentIds:t.supersededDocumentIds??n.supersededDocumentIds,updatedAt:new Date().toISOString()},await d(a),a[r]})},"updateMediaStage",0,function(e,t,a){return s(async()=>{let r,n,i=await l(),s=i.findIndex(t=>t.id===e);if(s<0)return;let o=new Date().toISOString(),u=i[s],f=new Map((u.processingSteps??[]).map(e=>[e.stage,e])),y=p(o).map(e=>f.get(e.stage)??e),w=y.findIndex(e=>e.stage===t),v=y[w],S=new Set(["completed","skipped","failed"]),A=a.status??v.status,b=S.has(v.status)||"running"===v.status&&"waiting"===A?v.status:A,E=g(v.percent),I=g(a.percent),R=void 0===I?E:Math.max(E??0,I),x=m(v.current),T=m(a.current),C=void 0===T?x:Math.max(x??0,T),D=void 0===a.total?m(v.total):m(a.total);void 0!==C&&void 0!==D&&(D=Math.max(D,C))>0&&(R=Math.max(R??0,Math.min(100,C/D*100))),"completed"===b&&(R=100,void 0!==D&&(C=D));let O=S.has(b),N={...v,...a,stage:t,status:b,percent:R,current:C,total:D,startedAt:a.startedAt??v.startedAt??("running"===b||O?o:void 0),updatedAt:o,finishedAt:O?a.finishedAt??v.finishedAt??o:void 0};y[w]=N;let M=Math.max(g(u.processingProgress)??0,0===(n=(r=y.filter(e=>"skipped"!==e.status)).reduce((e,t)=>e+c[t.stage],0))?100:Math.round(r.reduce((e,t)=>e+c[t.stage]*function(e){if("completed"===e.status)return 100;if("waiting"===e.status||"skipped"===e.status)return 0;let t=g(e.percent);return void 0!==t?t:void 0!==e.current&&void 0!==e.total&&Number.isFinite(e.current)&&Number.isFinite(e.total)&&e.total>0?Math.min(100,Math.max(0,e.current/e.total*100)):0}(t)/100,0)/n*100)),U=[...y].reverse().find(e=>"running"===e.status&&e.message)?.message,P="running"===N.status?N.message??a.message??u.processingMessage:U??a.message??N.message??u.processingMessage;return i[s]={...u,processingSteps:y,processingProgress:M,processingMessage:P,processingRevision:h(u),processingHeartbeatAt:o,updatedAt:o},await d(i),i[s]})}])},941486,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(192441);class n{id="local";name="Local Storage";async mediaDir(){let e=await (0,r.requireDataDir)(),n=a.default.join(e,"media");return await t.promises.mkdir(n,{recursive:!0}),n}async store(e,r,n){let i=await this.mediaDir(),s=a.default.join(i,e);return await t.promises.mkdir(a.default.dirname(s),{recursive:!0}),await t.promises.writeFile(s,r),`local://${e}`}async storeFile(e,r,n){let i=await this.mediaDir(),s=a.default.join(i,e);return await t.promises.mkdir(a.default.dirname(s),{recursive:!0}),await t.promises.copyFile(r,s),`local://${e}`}async retrieve(e){let a=await this.resolvePath(e);if(!a)throw Error(`Unsupported local storage URI: ${e}`);return t.promises.readFile(a)}async resolvePath(e){if(!e.startsWith("local://"))return;let t=e.slice(8),r=await this.mediaDir(),n=a.default.resolve(r,t),i=a.default.relative(r,n);if(i.startsWith("..")||a.default.isAbsolute(i))throw Error("Invalid local storage URI");return n}async delete(e){let r=e.replace("local://",""),n=await this.mediaDir();try{await t.promises.unlink(a.default.join(n,r))}catch{}}async stats(){try{let e=await this.mediaDir();return await i(e)}catch{return{usedBytes:0,fileCount:0}}}}async function i(e){let r=0,n=0;async function i(e){let s;try{s=await t.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let o of s){let s=a.default.join(e,o.name);if(o.isDirectory())await i(s);else try{let e=await t.promises.stat(s);r+=e.size,n++}catch{}}}return await i(e),{usedBytes:r,fileCount:n}}e.s(["createStorageProvider",0,function(e){return new n}])},977715,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),m=e.i(106898),g=e.i(454415),h=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(839554),v=e.i(941486),S=e.i(192441);let A=new TextEncoder;async function b(e,t){let a=await (0,w.readMediaAssets)(),r=e?a.filter(t=>t.type===e):a;r.sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime());let n={total:a.length,byType:{image:0,video:0,audio:0},byStatus:{pending:0,processing:0,completed:0,failed:0},totalBytes:0};for(let e of a)n.byType[e.type]++,n.byStatus[e.processingStatus]++,n.totalBytes+=e.fileSize;return{assets:r,stats:n,storage:t}}async function E(e){let t,a,r=new URL(e.url),n=r.searchParams.get("type"),i=r.searchParams.get("serverId"),s="image"===n||"video"===n||"audio"===n?n:null,o=e=>i?(0,S.runWithServer)(i,e):e();return await o(()=>(0,w.recoverStaleMediaAssets)()),new Response(new ReadableStream({async start(e){let r="",n=!1,i={usedBytes:0,fileCount:0},l=0,d=async()=>{if(!n){n=!0;try{if(Date.now()-l>3e4){try{let e=await o(()=>(0,v.createStorageProvider)().stats());i={usedBytes:e.usedBytes,fileCount:e.fileCount}}catch{}l=Date.now()}let t=await o(()=>b(s,i)),a=JSON.stringify(t);if(a!==r){r=a;let n=Math.max(0,...t.assets.map(e=>e.processingRevision??0));e.enqueue(A.encode(`id: ${n}
57
+ - End with a one-sentence synthesis if appropriate, avoiding filler words.`;e.s(["DEFAULT_CONFIG",0,s,"DEFAULT_DEPLOYMENT_CONFIG",0,{type:"rag-only",authMode:"none",enabledToolIds:[],widgetStyle:{primaryColor:"#000000",position:"bottom-right",title:"Chat with AI",welcomeMessage:"Hi! How can I help you today?",placeholder:"Type a message...",darkMode:!1,borderRadius:"lg"},allowedOrigins:["*"]},"DEFAULT_SYSTEM_PROMPT",0,o],638725);let l=a.default.join(process.cwd(),".larkup"),d=a.default.join(l,"servers"),u=a.default.join(l,"workspace.json"),c={username:null,activeServerId:null,servers:[],mode:null},p=new n.AsyncLocalStorage,m=Promise.resolve();function g(e){let t=m.then(e,e);return m=t.catch(()=>{}),t}async function h(e){return await b(),g(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 b(){let e=await S();return e||g(E)}async function E(){let e=await S();if(e)return e;if(!await w(a.default.join(l,"config.json")))return A(c);let n=(0,r.randomUUID)(),i=f(n);for(let e of(await t.promises.mkdir(i,{recursive:!0}),["config.json","documents.json","jobs.json","index-run.json","server-local.json"]))await v(a.default.join(l,e),a.default.join(i,e));await v(a.default.join(l,"lancedb"),a.default.join(i,"lancedb")),await v(a.default.join(l,"generated-server"),a.default.join(i,"generated-server"));let s="Default server";try{let e=a.default.join(i,"config.json"),r=JSON.parse(await t.promises.readFile(e,"utf8"));r.projectName&&(s=r.projectName),"lancedb"===r.vectorStore&&(r.storeConfig?.mode??"local")==="local"&&(r.storeConfig={...r.storeConfig,dbPath:y(n,"lancedb")}),await t.promises.writeFile(e,JSON.stringify(r,null,2),"utf8")}catch{}let o=new Date().toISOString(),d={id:n,name:s,port:8080,createdAt:o,updatedAt:o};return A({username:null,activeServerId:n,servers:[d],mode:null})}async function I(){let e=await b(),t=p.getStore()?.serverId??e.activeServerId;return t?e.servers.find(e=>e.id===t)??null:null}async function R(){let e=await I();if(!e)return null;let a=f(e.id);return await t.promises.mkdir(a,{recursive:!0}),a}async function x(){let e=await R();if(e)return e;let t=p.getStore()?.serverId;if(t)throw Error(`Server "${t}" no longer exists.`);let{server:a}=await D("my-larkup");return f(a.id)}async function T(e){return new Promise(t=>{let a=i.default.createServer();a.once("error",()=>t(!1)),a.once("listening",()=>{a.close(()=>t(!0))}),a.listen(e,"127.0.0.1")})}async function C(e){let t=Math.max(8079,...e.servers.map(e=>e.port))+1;for(;!await T(t);)t++;return t}function D(e){return h(async n=>{let i=(0,r.randomUUID)(),o=new Date().toISOString(),l={id:i,name:e.trim()||"Untitled server",port:await C(n),createdAt:o,updatedAt:o},d=f(i);await t.promises.mkdir(d,{recursive:!0});let u={};if(n.activeServerId)try{let e=await t.promises.readFile(a.default.join(f(n.activeServerId),"config.json"),"utf8");u=JSON.parse(e)}catch{}await t.promises.writeFile(a.default.join(d,"config.json"),JSON.stringify(function(e,t,a={}){return{...s,projectName:t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"my-larkup",storeConfig:{mode:"local",dbPath:y(e,"lancedb")},embeddingApiKey:a.embeddingApiKey??s.embeddingApiKey,customEmbeddings:a.customEmbeddings??s.customEmbeddings,chatApiKey:a.chatApiKey??s.chatApiKey,customChatModels:a.customChatModels??s.customChatModels,serperApiKey:a.serperApiKey??s.serperApiKey,firecrawlApiKey:a.firecrawlApiKey??s.firecrawlApiKey,updatedAt:new Date().toISOString()}}(i,l.name,u),null,2),"utf8");let c={...n,servers:[...n.servers,l],activeServerId:i};return await A(c),{workspace:c,server:l}})}e.s(["createServer",0,D,"deleteServer",0,function(e){return h(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,I,"getDataDir",0,R,"getWorkspace",0,b,"renameServer",0,function(e,t){return h(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,x,"runWithServer",0,function(e,t){return p.run({serverId:e},t)},"setActiveServer",0,function(e){return h(async t=>t.servers.some(t=>t.id===e)?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)},839554,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,"media-assets.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 media asset store at ${e}: expected a JSON array.`);return r}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function d(e){let n=await 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}}let u=["download","extract","transcribe","vision","synthesize","index"],c={download:10,extract:15,transcribe:25,vision:30,synthesize:5,index:15};function p(e){return u.map(t=>({stage:t,status:"waiting",updatedAt:e}))}function m(e){return void 0!==e&&Number.isFinite(e)?Math.max(0,e):void 0}function g(e){let t=m(e);return void 0===t?void 0:Math.min(100,t)}function h(e){return Math.floor(m(e.processingRevision)??0)+1}async function f(){let e=await l(),t={image:0,video:0,audio:0},a={pending:0,processing:0,completed:0,failed:0},r=0;for(let n of e)t[n.type]++,a[n.processingStatus]++,r+=n.fileSize;return{total:e.length,byType:t,byStatus:a,totalBytes:r}}async function y(e){return(await l()).find(t=>t.id===e)}e.s(["addMediaAssets",0,function(e){return s(async()=>{let t=await l(),a=new Date().toISOString(),n=e.map(e=>({id:(0,r.randomUUID)(),type:e.type,fileName:e.fileName,mimeType:e.mimeType,storageUri:e.storageUri,thumbnailUri:e.thumbnailUri,originalUrl:e.originalUrl,fileSize:e.fileSize,dimensions:e.dimensions,durationSecs:e.durationSecs,processingStatus:"pending",processingRevision:0,documentIds:[],createdAt:a,updatedAt:a}));return t.push(...n),await d(t),n})},"claimMediaAsset",0,function(e){return s(async()=>{let t=await l(),a=t.findIndex(t=>t.id===e);if(a<0||"processing"===t[a].processingStatus||"Queued for background processing..."===t[a].processingMessage)return;let r=new Date().toISOString();return t[a]={...t[a],processingStatus:"pending",processingError:void 0,processingMessage:"Queued for background processing...",processingProgress:1,processingSteps:p(r),processingRevision:h(t[a]),processingHeartbeatAt:r,updatedAt:r},await d(t),t[a]})},"deleteMediaAsset",0,function(e){return s(async()=>{let t=await l();await d(t.filter(t=>t.id!==e))})},"deleteMediaAssets",0,function(e){return s(async()=>{let t=await l(),a=new Set(e);await d(t.filter(e=>!a.has(e.id)))})},"getMediaAsset",0,y,"mediaStats",0,f,"readMediaAssets",0,l,"recoverStaleMediaAssets",0,function(e=3e5){return s(async()=>{let t=await l(),a=Date.now()-e,r="The background worker stopped. Retry to resume media processing.",n=0;for(let e=0;e<t.length;e++){let i=t[e],s="processing"===i.processingStatus,o="pending"===i.processingStatus&&"Queued for background processing..."===i.processingMessage,l=i.processingHeartbeatAt??i.updatedAt;if((s||o)&&new Date(l).getTime()<a){let a=new Date().toISOString(),s=i.processingSteps?.map(e=>"running"===e.status?{...e,status:"failed",message:r,updatedAt:a,finishedAt:a}:e);t[e]={...i,processingStatus:"failed",processingError:r,processingMessage:void 0,processingProgress:void 0,processingSteps:s,processingRevision:h(i),processingHeartbeatAt:a,updatedAt:a},n++}}return n>0&&await d(t),n})},"updateMediaAsset",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];return a[r]={...n,...t,documentIds:t.documentIds??n.documentIds,pendingDocumentIds:t.pendingDocumentIds??n.pendingDocumentIds,supersededDocumentIds:t.supersededDocumentIds??n.supersededDocumentIds,updatedAt:new Date().toISOString()},await d(a),a[r]})},"updateMediaStage",0,function(e,t,a){return s(async()=>{let r,n,i=await l(),s=i.findIndex(t=>t.id===e);if(s<0)return;let o=new Date().toISOString(),u=i[s],f=new Map((u.processingSteps??[]).map(e=>[e.stage,e])),y=p(o).map(e=>f.get(e.stage)??e),w=y.findIndex(e=>e.stage===t),v=y[w],S=new Set(["completed","skipped","failed"]),A=a.status??v.status,b=S.has(v.status)||"running"===v.status&&"waiting"===A?v.status:A,E=g(v.percent),I=g(a.percent),R=void 0===I?E:Math.max(E??0,I),x=m(v.current),T=m(a.current),C=void 0===T?x:Math.max(x??0,T),D=void 0===a.total?m(v.total):m(a.total);void 0!==C&&void 0!==D&&(D=Math.max(D,C))>0&&(R=Math.max(R??0,Math.min(100,C/D*100))),"completed"===b&&(R=100,void 0!==D&&(C=D));let O=S.has(b),N={...v,...a,stage:t,status:b,percent:R,current:C,total:D,startedAt:a.startedAt??v.startedAt??("running"===b||O?o:void 0),updatedAt:o,finishedAt:O?a.finishedAt??v.finishedAt??o:void 0};y[w]=N;let M=Math.max(g(u.processingProgress)??0,0===(n=(r=y.filter(e=>"skipped"!==e.status)).reduce((e,t)=>e+c[t.stage],0))?100:Math.round(r.reduce((e,t)=>e+c[t.stage]*function(e){if("completed"===e.status)return 100;if("waiting"===e.status||"skipped"===e.status)return 0;let t=g(e.percent);return void 0!==t?t:void 0!==e.current&&void 0!==e.total&&Number.isFinite(e.current)&&Number.isFinite(e.total)&&e.total>0?Math.min(100,Math.max(0,e.current/e.total*100)):0}(t)/100,0)/n*100)),U=[...y].reverse().find(e=>"running"===e.status&&e.message)?.message,P="running"===N.status?N.message??a.message??u.processingMessage:U??a.message??N.message??u.processingMessage;return i[s]={...u,processingSteps:y,processingProgress:M,processingMessage:P,processingRevision:h(u),processingHeartbeatAt:o,updatedAt:o},await d(i),i[s]})}])},941486,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(192441);class n{id="local";name="Local Storage";async mediaDir(){let e=await (0,r.requireDataDir)(),n=a.default.join(e,"media");return await t.promises.mkdir(n,{recursive:!0}),n}async store(e,r,n){let i=await this.mediaDir(),s=a.default.join(i,e);return await t.promises.mkdir(a.default.dirname(s),{recursive:!0}),await t.promises.writeFile(s,r),`local://${e}`}async storeFile(e,r,n){let i=await this.mediaDir(),s=a.default.join(i,e);return await t.promises.mkdir(a.default.dirname(s),{recursive:!0}),await t.promises.copyFile(r,s),`local://${e}`}async retrieve(e){let a=await this.resolvePath(e);if(!a)throw Error(`Unsupported local storage URI: ${e}`);return t.promises.readFile(a)}async resolvePath(e){if(!e.startsWith("local://"))return;let t=e.slice(8),r=await this.mediaDir(),n=a.default.resolve(r,t),i=a.default.relative(r,n);if(i.startsWith("..")||a.default.isAbsolute(i))throw Error("Invalid local storage URI");return n}async delete(e){let r=e.replace("local://",""),n=await this.mediaDir();try{await t.promises.unlink(a.default.join(n,r))}catch{}}async stats(){try{let e=await this.mediaDir();return await i(e)}catch{return{usedBytes:0,fileCount:0}}}}async function i(e){let r=0,n=0;async function i(e){let s;try{s=await t.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let o of s){let s=a.default.join(e,o.name);if(o.isDirectory())await i(s);else try{let e=await t.promises.stat(s);r+=e.size,n++}catch{}}}return await i(e),{usedBytes:r,fileCount:n}}e.s(["createStorageProvider",0,function(e){return new n}])},977715,e=>{"use strict";var t=e.i(850492),a=e.i(891119),r=e.i(697373),n=e.i(765700),i=e.i(601263),s=e.i(706859),o=e.i(947547),l=e.i(819797),d=e.i(135958),u=e.i(86520),c=e.i(970949),p=e.i(741165),m=e.i(106898),g=e.i(454415),h=e.i(37125),f=e.i(193695);e.i(530058);var y=e.i(605998),w=e.i(839554),v=e.i(941486),S=e.i(192441);let A=new TextEncoder;async function b(e,t){let a=await (0,w.readMediaAssets)(),r=e?a.filter(t=>t.type===e):a;r.sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime());let n={total:a.length,byType:{image:0,video:0,audio:0},byStatus:{pending:0,processing:0,completed:0,failed:0},totalBytes:0};for(let e of a)n.byType[e.type]++,n.byStatus[e.processingStatus]++,n.totalBytes+=e.fileSize;return{assets:r,stats:n,storage:t}}async function E(e){let t,a,r=new URL(e.url),n=r.searchParams.get("type"),i=r.searchParams.get("serverId"),s="image"===n||"video"===n||"audio"===n?n:null,o=e=>i?(0,S.runWithServer)(i,e):e();return await o(()=>(0,w.recoverStaleMediaAssets)()),new Response(new ReadableStream({async start(e){let r="",n=!1,i={usedBytes:0,fileCount:0},l=0,d=async()=>{if(!n){n=!0;try{if(Date.now()-l>3e4){try{let e=await o(()=>(0,v.createStorageProvider)().stats());i={usedBytes:e.usedBytes,fileCount:e.fileCount}}catch{}l=Date.now()}let t=await o(()=>b(s,i)),a=JSON.stringify(t);if(a!==r){r=a;let n=Math.max(0,...t.assets.map(e=>e.processingRevision??0));e.enqueue(A.encode(`id: ${n}
58
58
  event: media-update
59
59
  data: ${a}
60
60
 
61
- `))}}catch{}finally{n=!1}}};await d(),t=setInterval(()=>void d(),1e3),a=setInterval(()=>e.enqueue(A.encode(": keep-alive\n\n")),15e3)},cancel(){t&&clearInterval(t),a&&clearInterval(a)}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}})}e.s(["GET",0,E,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],222694);var I=e.i(222694);let R=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/media/stream/route",pathname:"/api/media/stream",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/media/stream/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:T,serverHooks:C}=R;async function D(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),R.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/media/stream/route";w=w.replace(/\/index$/,"")||"/";let v=await R.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:A,params:b,nextConfig:E,parsedUrl:I,isDraftMode:x,prerenderManifest:T,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,resolvedPathname:N,clientReferenceManifest:M,serverActionsManifest:U}=v,P=(0,o.normalizeAppPath)(w),k=!!(T.dynamicRoutes[P]||T.routes[N]),j=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,I,!1):t.end("This page could not be found"),null);if(k&&!x){let e=!!T.routes[N],t=T.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new f.NoFallbackError}}let q=null;!k||R.isDev||x||(q="/index"===(q=N)?"/":q);let L=!0===R.isDev||!k,F=k&&!L;U&&M&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:M,serverActionsManifest:U});let K=e.method||"GET",H=(0,i.getTracer)(),_=H.getActiveScopeSpan(),z=!!(null==C?void 0:C.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),$=(0,n.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,E,T,W);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let B={params:b,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:L,incrementalCache:$,cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>R.onRequestError(e,t,r,n,C)},sharedContext:{buildId:S,deploymentId:A}},G=new l.NodeNextRequest(e),Y=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>R.handle(V,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:a})=>{try{if(!W&&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=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(G,Y,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,r=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:D})},!1,C),t}},d=await R.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!k)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&k||u.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(G,Y,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};z&&_?await o(_):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!z))}catch(t){if(t instanceof f.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:D})},!1,C),k)throw t;return await (0,p.sendResponse)(G,Y,new Response(null,{status:500})),null}}e.s(["handler",0,D,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:T})},"routeModule",0,R,"serverHooks",0,C,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,T],977715)}];
61
+ `))}}catch{}finally{n=!1}}};await d(),t=setInterval(()=>void d(),1e3),a=setInterval(()=>e.enqueue(A.encode(": keep-alive\n\n")),15e3)},cancel(){t&&clearInterval(t),a&&clearInterval(a)}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}})}e.s(["GET",0,E,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],222694);var I=e.i(222694);let R=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/media/stream/route",pathname:"/api/media/stream",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/media/stream/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:T,serverHooks:C}=R;async function D(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),R.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/media/stream/route";w=w.replace(/\/index$/,"")||"/";let v=await R.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:S,deploymentId:A,params:b,nextConfig:E,parsedUrl:I,isDraftMode:x,prerenderManifest:T,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,resolvedPathname:N,clientReferenceManifest:M,serverActionsManifest:U}=v,P=(0,o.normalizeAppPath)(w),k=!!(T.dynamicRoutes[P]||T.routes[N]),j=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,I,!1):t.end("This page could not be found"),null);if(k&&!x){let e=!!T.routes[N],t=T.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new f.NoFallbackError}}let q=null;!k||R.isDev||x||(q="/index"===(q=N)?"/":q);let L=!0===R.isDev||!k,F=k&&!L;U&&M&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:M,serverActionsManifest:U});let K=e.method||"GET",H=(0,i.getTracer)(),_=H.getActiveScopeSpan(),z=!!(null==C?void 0:C.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),$=(0,n.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,E,T,W);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let B={params:b,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:L,incrementalCache:$,cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>R.onRequestError(e,t,r,n,C)},sharedContext:{buildId:S,deploymentId:A}},Y=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(Y,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>R.handle(V,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=H.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route");if(r){let t=`${K} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${K} ${w}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:a})=>{try{if(!W&&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=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(Y,G,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,r=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:D})},!1,C),t}},d=await R.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!k)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&k||u.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,g.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(Y,G,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};z&&_?await o(_):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${K} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},o),void 0,!z))}catch(t){if(t instanceof f.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:D})},!1,C),k)throw t;return await (0,p.sendResponse)(Y,G,new Response(null,{status:500})),null}}e.s(["handler",0,D,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:T})},"routeModule",0,R,"serverHooks",0,C,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,T],977715)}];
62
62
 
63
63
  //# sourceMappingURL=%5Broot-of-the-server%5D__04kopvt._.js.map