larkup 0.1.28 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +5 -5
- package/.next/diagnostics/route-bundle-stats.json +25 -25
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +4 -4
- package/.next/required-server-files.json +4 -4
- package/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +16 -16
- package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics/page/build-manifest.json +2 -2
- package/.next/server/app/analytics/page.js.nft.json +1 -1
- package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/server/app/analytics.html +1 -1
- package/.next/server/app/analytics.rsc +17 -17
- package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
- package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
- package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
- package/.next/server/app/api/analytics/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/route.js +8 -9
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/status/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/suggestions/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test-embedding/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test-llm/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test-provider/route.js.nft.json +1 -1
- package/.next/server/app/api/config/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/connections/route.js.nft.json +1 -1
- package/.next/server/app/api/connections/webhook/route.js.nft.json +1 -1
- package/.next/server/app/api/demo/route.js.nft.json +1 -1
- package/.next/server/app/api/deploy/cloud-project/route.js.nft.json +1 -1
- package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
- package/.next/server/app/api/deployment/blob-setup/route.js.nft.json +1 -1
- package/.next/server/app/api/deployment/config/route.js.nft.json +1 -1
- package/.next/server/app/api/describe-image/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/edit/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/export/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/extract-text/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/parse/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/document/sign/route.js.nft.json +1 -1
- package/.next/server/app/api/documents/route.js.nft.json +1 -1
- package/.next/server/app/api/firecrawl/local/route.js.nft.json +1 -1
- package/.next/server/app/api/index/route.js.nft.json +1 -1
- package/.next/server/app/api/integrations/notion/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/integrations/notion/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/[toolId]/route.js +1 -1
- package/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/route.js +1 -1
- package/.next/server/app/api/marketplace/route.js.nft.json +1 -1
- package/.next/server/app/api/media/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/media/process/route.js +2 -2
- package/.next/server/app/api/media/process/route.js.nft.json +1 -1
- package/.next/server/app/api/media/route.js +1 -1
- package/.next/server/app/api/media/route.js.nft.json +1 -1
- package/.next/server/app/api/media/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/parse-file/route.js.nft.json +1 -1
- package/.next/server/app/api/proxy/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/sandbox/route.js.nft.json +1 -1
- package/.next/server/app/api/search/bing/route.js.nft.json +1 -1
- package/.next/server/app/api/search/brave/route.js.nft.json +1 -1
- package/.next/server/app/api/search/exa/route.js.nft.json +1 -1
- package/.next/server/app/api/search/google/route.js.nft.json +1 -1
- package/.next/server/app/api/search/route.js.nft.json +1 -1
- package/.next/server/app/api/search/tavily/route.js.nft.json +1 -1
- package/.next/server/app/api/search/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/server/agent/route.js.nft.json +1 -1
- package/.next/server/app/api/server/download/route.js.nft.json +1 -1
- package/.next/server/app/api/server/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/server/local/route.js.nft.json +1 -1
- package/.next/server/app/api/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/tabular/query/route.js.nft.json +1 -1
- package/.next/server/app/api/tabular/route.js.nft.json +1 -1
- package/.next/server/app/api/upload-file/route.js.nft.json +1 -1
- package/.next/server/app/api/uploads/[...slug]/route.js.nft.json +1 -1
- package/.next/server/app/api/vector-stores/install/route.js.nft.json +1 -1
- package/.next/server/app/api/vector-stores/status/route.js.nft.json +1 -1
- package/.next/server/app/chat/page/build-manifest.json +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +17 -17
- package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
- package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
- package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
- package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
- package/.next/server/app/data/page/build-manifest.json +2 -2
- package/.next/server/app/data/page.js.nft.json +1 -1
- package/.next/server/app/data/page_client-reference-manifest.js +1 -1
- package/.next/server/app/data.html +1 -1
- package/.next/server/app/data.rsc +17 -17
- package/.next/server/app/data.segments/_full.segment.rsc +17 -17
- package/.next/server/app/data.segments/_head.segment.rsc +4 -4
- package/.next/server/app/data.segments/_index.segment.rsc +11 -11
- package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/data.segments/data.segment.rsc +3 -3
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +16 -16
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +16 -16
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page/build-manifest.json +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/build-manifest.json +2 -2
- package/.next/server/app/settings/page/server-reference-manifest.json +3 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +18 -18
- package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/chunks/[root-of-the-server]__0c80bj0._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1m7m2x7._.js → [root-of-the-server]__0drkoru._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0vnm6_8._.js → [root-of-the-server]__0kmh740._.js} +6 -6
- package/.next/server/chunks/{[root-of-the-server]__0ou70-v._.js → [root-of-the-server]__0nfenje._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0omd-x0._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1s1zui-._.js → [root-of-the-server]__10v5qsi._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1idgvjh._.js +172 -0
- package/.next/server/chunks/[root-of-the-server]__1ip05r1._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jc54o2._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0748x7h._.js → [root-of-the-server]__1lhls88._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0g_q-44._.js → [root-of-the-server]__1wy6wes._.js} +2 -2
- package/.next/server/chunks/{packages_1f4dx4h._.js → packages_1ggqion._.js} +2 -2
- package/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
- package/.next/server/chunks/{packages_vector-stores_src_064-9ay._.js → packages_vector-stores_src_1fib7u-._.js} +2 -2
- package/.next/server/chunks/ssr/_169pdlf._.js +2 -2
- package/.next/server/chunks/ssr/_1hetwwu._.js +2 -2
- package/.next/server/chunks/ssr/_1iff9ia._.js +1 -1
- package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
- package/.next/server/chunks/ssr/apps_web_lib_pdf-images_ts_13-l5wa._.js +1 -1
- package/.next/server/middleware-build-manifest.js +5 -5
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +4 -4
- package/.next/static/chunks/{13hmtkhrbm4t3.js → 01qmngac69n9j.js} +1 -1
- package/.next/static/chunks/{3bpr59xr-_rv7.js → 0ge3nirnmx_np.js} +1 -1
- package/.next/static/chunks/{0k405nomf6s4e.js → 102b8vinedggz.js} +6 -6
- package/.next/static/chunks/{2jqjx4-rh414_.js → 13kyiy7q3of41.js} +1 -1
- package/.next/static/chunks/{1fz_0-qb5r5wd.js → 1dykihoo_1ae5.js} +1 -1
- package/.next/static/chunks/{0rgt7-bqxonef.js → 1sh7d5tt49x8b.js} +2 -2
- package/.next/static/chunks/{1-afr-snks55m.js → 1z4nte07k3dt6.js} +1 -1
- package/.next/static/chunks/2ib3e0xrrdait.js +1 -0
- package/.next/static/chunks/{turbopack-2gu-fmc6o5wkn.js → turbopack-2qt7vn_ocj4ao.js} +1 -1
- package/CHANGELOG.md +10 -0
- package/app/api/describe-image/route.ts +12 -4
- package/components/data/media-panel.tsx +34 -2
- package/components/data/upload-panel.tsx +2 -1
- package/components/settings/marketplace-section.tsx +14 -2
- package/lib/pdf-images.ts +20 -5
- package/package.json +5 -5
- package/.next/server/chunks/[root-of-the-server]__00r1kgp._.js +0 -143
- package/.next/server/chunks/[root-of-the-server]__064gb96._.js +0 -3
- package/.next/server/chunks/_0ce9vcg._.js +0 -32
- package/.next/static/chunks/00z1f-adeq1lg.js +0 -1
- package/archive/redesign-v2/app/configure/page.tsx +0 -53
- package/archive/redesign-v2/app/demo/page.tsx +0 -15
- package/archive/redesign-v2/app/server/page.tsx +0 -22
- package/archive/redesign-v2/app/simple/chat/page.tsx +0 -17
- package/archive/redesign-v2/app/simple/docs/page.tsx +0 -21
- package/archive/redesign-v2/app/simple/settings/page.tsx +0 -1104
- package/archive/redesign-v2/app-routes/configure/page.tsx +0 -53
- package/archive/redesign-v2/app-routes/demo/page.tsx +0 -15
- package/archive/redesign-v2/app-routes/server/page.tsx +0 -22
- package/archive/redesign-v2/app-routes/simple/chat/page.tsx +0 -17
- package/archive/redesign-v2/app-routes/simple/docs/page.tsx +0 -21
- package/archive/redesign-v2/app-routes/simple/layout.tsx +0 -9
- package/archive/redesign-v2/app-routes/simple/settings/page.tsx +0 -1104
- package/archive/redesign-v2/components/app-sidebar.tsx +0 -188
- package/archive/redesign-v2/components/app-topnav.tsx +0 -195
- package/archive/redesign-v2/components/global-settings.tsx +0 -288
- package/archive/redesign-v2/components/simple/simple-sidebar.tsx +0 -171
- package/archive/redesign-v2/components/simple/simple-topnav.tsx +0 -175
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → W6QdudzTPo_OVPpNt29f7}/_buildManifest.js +0 -0
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → W6QdudzTPo_OVPpNt29f7}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → W6QdudzTPo_OVPpNt29f7}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,385290,t=>{"use strict";var e=t.i(410386);async function a(t){e.GlobalWorkerOptions.workerSrc=`//cdnjs.cloudflare.com/ajax/libs/pdf.js/${e.version}/pdf.worker.mjs`;let a=await t.arrayBuffer(),r=await e.getDocument({data:new Uint8Array(a)}).promise,i=r.numPages,n=[],h=0,o=t=>{let e=Math.min(1,1600/Math.max(t.width,t.height));if(1===e)return t.toDataURL("image/jpeg",.86);let a=document.createElement("canvas");return a.width=Math.max(1,Math.round(t.width*e)),a.height=Math.max(1,Math.round(t.height*e)),a.getContext("2d")?.drawImage(t,0,0,a.width,a.height),a.toDataURL("image/jpeg",.86)};for(let t=1;t<=i;t++)try{let a=await r.getPage(t),i=await a.getOperatorList(),g=[];for(let t=0;t<i.fnArray.length;t++)(i.fnArray[t]===e.OPS.paintImageXObject||i.fnArray[t]===e.OPS.paintInlineImageXObject)&&g.push(i.argsArray[t][0]);for(let e of g)try{let r=await new Promise(t=>{try{a.objs.get(e,e=>t(e))}catch(e){t(null)}});if(r&&r.bitmap){let e=document.createElement("canvas");e.width=r.bitmap.width||r.width,e.height=r.bitmap.height||r.height;let a=e.getContext("2d");a&&(a.drawImage(r.bitmap,0,0),n.push({base64:o(e),pageNumber:t,index:h++}))}else if(r&&r.data&&r.width&&r.height){let e=document.createElement("canvas");e.width=r.width,e.height=r.height;let a=e.getContext("2d");if(a){let i=new ImageData(new Uint8ClampedArray(r.data),r.width,r.height);a.putImageData(i,0,0),n.push({base64:o(e),pageNumber:t,index:h++})}}}catch(a){console.error(`Error extracting image ${e} on page ${t}`,a)}}catch(e){console.error(`Error processing page ${t}`,e)}return n}t.s(["extractImagesFromPDF",0,a])}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/27fi1xpxq8d86.js","static/chunks/2vf9qvtghwrpc.js","static/chunks/2ni3dzue_cjp8.js","static/chunks/3tq9j7hs47mpo.js","static/chunks/2jqjx4-rh414_.js"],runtimeModuleIds:[467071]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=j(),u=Object.assign(s,{[v]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[k]:e=>e(t)};return e.then(e=>{r[v]=e,C(t)},e=>{r[U]=e,C(t)}),r}}return{[v]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:i,resolve:l}=j(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?i:r()},function(e){e?l(u[U]=e):i(u[v]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,q(r));let o=r.included||[],i=o.map(e=>!!$.has(e)||_.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,q(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,q(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(i.Parent,this.m.id,e)};let x=Promise.resolve(void 0),A=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=A.get(o);if(void 0===l){let e=A.set.bind(A,o,x);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),A.set(o,l)}return l}function q(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(i.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>q(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(q(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let N=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?q(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(q("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(N.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(N.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(q(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(q(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/27fi1xpxq8d86.js","static/chunks/2vf9qvtghwrpc.js","static/chunks/2ni3dzue_cjp8.js","static/chunks/3tq9j7hs47mpo.js","static/chunks/13kyiy7q3of41.js"],runtimeModuleIds:[467071]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=j(),u=Object.assign(s,{[v]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[k]:e=>e(t)};return e.then(e=>{r[v]=e,C(t)},e=>{r[U]=e,C(t)}),r}}return{[v]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:i,resolve:l}=j(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?i:r()},function(e){e?l(u[U]=e):i(u[v]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,q(r));let o=r.included||[],i=o.map(e=>!!$.has(e)||_.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,q(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,q(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function q(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(i.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>q(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(q(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let N=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?q(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(q("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(N.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(N.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(q(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(q(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# larkup
|
|
2
2
|
|
|
3
|
+
## 0.1.29
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 19767f8: Fix isolated Marketplace tool loading in Docker, improve Video & Audio setup guidance, and reliably index PDF images.
|
|
8
|
+
- Updated dependencies [19767f8]
|
|
9
|
+
- @larkup/marketplace@0.1.5
|
|
10
|
+
- @larkup/tool-doc-editor@0.2.3
|
|
11
|
+
- @larkup/tool-video-audio@0.2.1
|
|
12
|
+
|
|
3
13
|
## 0.1.28
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -50,10 +50,18 @@ async function describeImage(req: Request) {
|
|
|
50
50
|
type: 'text',
|
|
51
51
|
text: prompt || defaultPrompt,
|
|
52
52
|
},
|
|
53
|
-
...images.map((image) =>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
...images.map((image) => {
|
|
54
|
+
const data = image.startsWith('data:') ? image : `data:image/jpeg;base64,${image}`;
|
|
55
|
+
const mediaType = data.match(/^data:([^;,]+)/)?.[1] || 'image/jpeg';
|
|
56
|
+
return {
|
|
57
|
+
// AI SDK 6 uses file parts for every binary attachment. The
|
|
58
|
+
// legacy `image` part emits a deprecation warning on every
|
|
59
|
+
// PDF/image analysis request.
|
|
60
|
+
type: 'file' as const,
|
|
61
|
+
mediaType,
|
|
62
|
+
data,
|
|
63
|
+
};
|
|
64
|
+
}),
|
|
57
65
|
],
|
|
58
66
|
},
|
|
59
67
|
],
|
|
@@ -304,6 +304,12 @@ export function MediaPanel({
|
|
|
304
304
|
const videoAudioTool = toolsData?.tools?.find((t: any) => t.id === 'video-audio');
|
|
305
305
|
const isToolInstalled = videoAudioTool?.status === 'installed';
|
|
306
306
|
const enabledTools = configData?.config?.enabledTools;
|
|
307
|
+
const videoAudioConfig = configData?.config?.toolConfigs?.['video-audio'] ?? {};
|
|
308
|
+
const audioProvider =
|
|
309
|
+
typeof videoAudioConfig.audioProvider === 'string' ? videoAudioConfig.audioProvider : '';
|
|
310
|
+
const audioApiKey =
|
|
311
|
+
typeof videoAudioConfig.audioApiKey === 'string' ? videoAudioConfig.audioApiKey : '';
|
|
312
|
+
const audioConfigured = Boolean(audioProvider && (audioProvider === 'local' || audioApiKey));
|
|
307
313
|
const isToolEnabled = enabledTools
|
|
308
314
|
? enabledTools.length === 0 || enabledTools.includes('video-audio')
|
|
309
315
|
: true;
|
|
@@ -391,6 +397,8 @@ export function MediaPanel({
|
|
|
391
397
|
mutate();
|
|
392
398
|
onAdded();
|
|
393
399
|
}}
|
|
400
|
+
audioConfigured={audioConfigured}
|
|
401
|
+
onConfigureAudio={() => router.push('/settings?section=tool-settings')}
|
|
394
402
|
/>
|
|
395
403
|
)}
|
|
396
404
|
</div>
|
|
@@ -428,7 +436,13 @@ function InstallPrompt({
|
|
|
428
436
|
const err = await res.json();
|
|
429
437
|
throw new Error(err.error || 'Install failed');
|
|
430
438
|
}
|
|
431
|
-
toast.success('
|
|
439
|
+
toast.success('Video & Audio installed', {
|
|
440
|
+
description: 'Choose an audio provider before indexing video or audio.',
|
|
441
|
+
action: {
|
|
442
|
+
label: 'Set up audio',
|
|
443
|
+
onClick: () => window.location.assign('/settings?section=tool-settings'),
|
|
444
|
+
},
|
|
445
|
+
});
|
|
432
446
|
onInstallComplete();
|
|
433
447
|
} catch (err) {
|
|
434
448
|
toast.error(err instanceof Error ? err.message : 'Failed to install tool');
|
|
@@ -509,6 +523,8 @@ function MediaContent({
|
|
|
509
523
|
serverId,
|
|
510
524
|
onMutate,
|
|
511
525
|
onUploadComplete,
|
|
526
|
+
audioConfigured,
|
|
527
|
+
onConfigureAudio,
|
|
512
528
|
}: {
|
|
513
529
|
mediaType: 'image' | 'video' | 'audio';
|
|
514
530
|
tab: MediaSubTab;
|
|
@@ -518,6 +534,8 @@ function MediaContent({
|
|
|
518
534
|
serverId?: string;
|
|
519
535
|
onMutate: () => void | Promise<unknown>;
|
|
520
536
|
onUploadComplete: () => void;
|
|
537
|
+
audioConfigured: boolean;
|
|
538
|
+
onConfigureAudio: () => void;
|
|
521
539
|
}) {
|
|
522
540
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
523
541
|
const router = useRouter();
|
|
@@ -587,7 +605,8 @@ function MediaContent({
|
|
|
587
605
|
if (
|
|
588
606
|
msg.toLowerCase().includes('api key') ||
|
|
589
607
|
msg.toLowerCase().includes('configuration') ||
|
|
590
|
-
msg.toLowerCase().includes('missing provider')
|
|
608
|
+
msg.toLowerCase().includes('missing provider') ||
|
|
609
|
+
msg.toLowerCase().includes('choose an audio provider')
|
|
591
610
|
) {
|
|
592
611
|
toast.error(msg, {
|
|
593
612
|
duration: 10000,
|
|
@@ -601,6 +620,16 @@ function MediaContent({
|
|
|
601
620
|
}
|
|
602
621
|
}
|
|
603
622
|
|
|
623
|
+
function ensureAudioConfiguration(): boolean {
|
|
624
|
+
if (mediaType === 'image' || audioConfigured) return true;
|
|
625
|
+
toast.error('Set up an audio provider to index video or audio.', {
|
|
626
|
+
description: 'Select a provider and add its API key in Installed Tools.',
|
|
627
|
+
duration: 10_000,
|
|
628
|
+
action: { label: 'Set up audio', onClick: onConfigureAudio },
|
|
629
|
+
});
|
|
630
|
+
return false;
|
|
631
|
+
}
|
|
632
|
+
|
|
604
633
|
async function processAssets(assetIds: string[]) {
|
|
605
634
|
const PROCESS_BATCH_SIZE = 4;
|
|
606
635
|
for (let i = 0; i < assetIds.length; i += PROCESS_BATCH_SIZE) {
|
|
@@ -635,6 +664,7 @@ function MediaContent({
|
|
|
635
664
|
async function reviewRemoteEstimate() {
|
|
636
665
|
const urls = parsedUrls();
|
|
637
666
|
if (urls.length === 0) return;
|
|
667
|
+
if (!ensureAudioConfiguration()) return;
|
|
638
668
|
setCheckingUrls(true);
|
|
639
669
|
try {
|
|
640
670
|
const res = await fetch(mediaApiUrl, {
|
|
@@ -655,6 +685,7 @@ function MediaContent({
|
|
|
655
685
|
async function importRemoteUrls() {
|
|
656
686
|
const urls = parsedUrls();
|
|
657
687
|
if (urls.length === 0 || !remoteEstimates) return;
|
|
688
|
+
if (!ensureAudioConfiguration()) return;
|
|
658
689
|
setImportingUrls(true);
|
|
659
690
|
try {
|
|
660
691
|
const res = await fetch(mediaApiUrl, {
|
|
@@ -681,6 +712,7 @@ function MediaContent({
|
|
|
681
712
|
|
|
682
713
|
async function uploadAll() {
|
|
683
714
|
if (staged.length === 0) return;
|
|
715
|
+
if (!ensureAudioConfiguration()) return;
|
|
684
716
|
setUploading(true);
|
|
685
717
|
|
|
686
718
|
const BATCH_SIZE = 5;
|
|
@@ -314,7 +314,7 @@ export function UploadPanel({ onAdded }: { onAdded: () => void }) {
|
|
|
314
314
|
|
|
315
315
|
const res = await fetch(img.base64);
|
|
316
316
|
const blob = await res.blob();
|
|
317
|
-
const file = new File([blob], `image-${img.index}.
|
|
317
|
+
const file = new File([blob], `image-${img.index}.jpg`, { type: 'image/jpeg' });
|
|
318
318
|
|
|
319
319
|
const formData = new FormData();
|
|
320
320
|
formData.append('file', file);
|
|
@@ -386,6 +386,7 @@ export function UploadPanel({ onAdded }: { onAdded: () => void }) {
|
|
|
386
386
|
imageUrl: img.imageUrl,
|
|
387
387
|
pageNumber: img.pageNumber,
|
|
388
388
|
index: img.index,
|
|
389
|
+
description: img.description,
|
|
389
390
|
})),
|
|
390
391
|
}
|
|
391
392
|
: undefined,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useState, useCallback, useMemo } from 'react';
|
|
4
4
|
import useSWR from 'swr';
|
|
5
|
+
import { useRouter } from 'next/navigation';
|
|
5
6
|
import {
|
|
6
7
|
Download,
|
|
7
8
|
Trash2,
|
|
@@ -88,6 +89,7 @@ const fetcher = (url: string) =>
|
|
|
88
89
|
fetch(url).then((r) => r.json() as Promise<{ tools: MarketplaceTool[] }>);
|
|
89
90
|
|
|
90
91
|
export function MarketplaceSection() {
|
|
92
|
+
const router = useRouter();
|
|
91
93
|
const { data, isLoading, mutate } = useSWR('/api/marketplace', fetcher);
|
|
92
94
|
const [installing, setInstalling] = useState<string | null>(null);
|
|
93
95
|
const [searchQuery, setSearchQuery] = useState('');
|
|
@@ -104,7 +106,17 @@ export function MarketplaceSection() {
|
|
|
104
106
|
const err = await res.json();
|
|
105
107
|
throw new Error(err.error || 'Install failed');
|
|
106
108
|
}
|
|
107
|
-
|
|
109
|
+
if (toolId === 'video-audio') {
|
|
110
|
+
toast.success('Video & Audio installed', {
|
|
111
|
+
description: 'Choose an audio provider before you index media.',
|
|
112
|
+
action: {
|
|
113
|
+
label: 'Set up audio',
|
|
114
|
+
onClick: () => router.push('/settings?section=tool-settings'),
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
} else {
|
|
118
|
+
toast.success('Tool installed successfully');
|
|
119
|
+
}
|
|
108
120
|
mutate();
|
|
109
121
|
} catch (err) {
|
|
110
122
|
toast.error(err instanceof Error ? err.message : 'Failed to install tool');
|
|
@@ -112,7 +124,7 @@ export function MarketplaceSection() {
|
|
|
112
124
|
setInstalling(null);
|
|
113
125
|
}
|
|
114
126
|
},
|
|
115
|
-
[mutate],
|
|
127
|
+
[mutate, router],
|
|
116
128
|
);
|
|
117
129
|
|
|
118
130
|
const handleUninstall = useCallback(
|
package/lib/pdf-images.ts
CHANGED
|
@@ -10,6 +10,22 @@ export async function extractImagesFromPDF(
|
|
|
10
10
|
const numPages = pdf.numPages;
|
|
11
11
|
const images: { base64: string; pageNumber: number; index: number }[] = [];
|
|
12
12
|
|
|
13
|
+
let imageIndex = 0;
|
|
14
|
+
const toDataUrl = (source: HTMLCanvasElement) => {
|
|
15
|
+
// Embedded PDF artwork can be several thousand pixels wide. Vision models
|
|
16
|
+
// do not need the raw print-resolution asset and sending it makes PDF
|
|
17
|
+
// ingestion slow and unreliable. Preserve diagrams while bounding input.
|
|
18
|
+
const maxDimension = 1_600;
|
|
19
|
+
const scale = Math.min(1, maxDimension / Math.max(source.width, source.height));
|
|
20
|
+
if (scale === 1) return source.toDataURL('image/jpeg', 0.86);
|
|
21
|
+
|
|
22
|
+
const resized = document.createElement('canvas');
|
|
23
|
+
resized.width = Math.max(1, Math.round(source.width * scale));
|
|
24
|
+
resized.height = Math.max(1, Math.round(source.height * scale));
|
|
25
|
+
resized.getContext('2d')?.drawImage(source, 0, 0, resized.width, resized.height);
|
|
26
|
+
return resized.toDataURL('image/jpeg', 0.86);
|
|
27
|
+
};
|
|
28
|
+
|
|
13
29
|
for (let i = 1; i <= numPages; i++) {
|
|
14
30
|
try {
|
|
15
31
|
const page = await pdf.getPage(i);
|
|
@@ -25,7 +41,6 @@ export async function extractImagesFromPDF(
|
|
|
25
41
|
}
|
|
26
42
|
}
|
|
27
43
|
|
|
28
|
-
let imgIndex = 0;
|
|
29
44
|
for (const objId of imageOps) {
|
|
30
45
|
try {
|
|
31
46
|
const img = await new Promise<any>((resolve) => {
|
|
@@ -43,9 +58,9 @@ export async function extractImagesFromPDF(
|
|
|
43
58
|
if (ctx) {
|
|
44
59
|
ctx.drawImage(img.bitmap, 0, 0);
|
|
45
60
|
images.push({
|
|
46
|
-
base64: canvas
|
|
61
|
+
base64: toDataUrl(canvas),
|
|
47
62
|
pageNumber: i,
|
|
48
|
-
index:
|
|
63
|
+
index: imageIndex++,
|
|
49
64
|
});
|
|
50
65
|
}
|
|
51
66
|
} else if (img && img.data && img.width && img.height) {
|
|
@@ -61,9 +76,9 @@ export async function extractImagesFromPDF(
|
|
|
61
76
|
);
|
|
62
77
|
ctx.putImageData(imageData, 0, 0);
|
|
63
78
|
images.push({
|
|
64
|
-
base64: canvas
|
|
79
|
+
base64: toDataUrl(canvas),
|
|
65
80
|
pageNumber: i,
|
|
66
|
-
index:
|
|
81
|
+
index: imageIndex++,
|
|
67
82
|
});
|
|
68
83
|
}
|
|
69
84
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "larkup",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.29",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"larkup": "./bin/larkup.js"
|
|
@@ -53,13 +53,13 @@
|
|
|
53
53
|
"xlsx": "^0.18.5",
|
|
54
54
|
"zod": "^4.4.3",
|
|
55
55
|
"zustand": "^5.0.14",
|
|
56
|
-
"@larkup/marketplace": "0.1.
|
|
56
|
+
"@larkup/marketplace": "0.1.5",
|
|
57
57
|
"@larkup/core": "0.2.2",
|
|
58
58
|
"@larkup/sandbox": "0.1.2",
|
|
59
|
-
"@larkup/
|
|
60
|
-
"@larkup/tool-doc-editor": "0.2.3",
|
|
59
|
+
"@larkup/vector-stores": "0.1.22",
|
|
61
60
|
"@larkup/tool-video-audio": "0.2.1",
|
|
62
|
-
"@larkup/
|
|
61
|
+
"@larkup/scraper": "0.1.23",
|
|
62
|
+
"@larkup/tool-doc-editor": "0.2.3"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@tailwindcss/postcss": "^4.2.0",
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
module.exports=[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"))},705252,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(666680),n=e.i(192441);let i=Promise.resolve();function 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?r.default.join(t,"documents.json"):null}async function l(){let e=await o(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8"),a=JSON.parse(r);if(!Array.isArray(a))throw Error(`Invalid document store at ${e}: expected a JSON array.`);return a}catch(e){if(e?.code==="ENOENT")return[];throw e}}async function d(e){let n=await o(!0);if(!n)return;let i=r.default.join(r.default.dirname(n),`.${r.default.basename(n)}.${process.pid}.${(0,a.randomUUID)()}.tmp`);try{await t.promises.writeFile(i,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(i,n)}catch(e){throw await t.promises.unlink(i).catch(()=>{}),e}}function u(e){let t=e.content.trim();return{id:e.id??(0,a.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function c(){let e=await l(),t=e.reduce((e,t)=>e+t.charCount,0);return{docCount:e.length,charCount:t,bySource:e.reduce((e,t)=>(e[t.source]=(e[t.source]??0)+1,e),{})}}e.s(["addCrawledDocuments",0,function(e,t){return s(async()=>{let r=await l(),a=new Set(r.filter(e=>e.url).map(e=>e.url)),n=0;for(let i of t)!(i.url&&a.has(i.url))&&i.content.trim()&&(r.push(u({...i,jobId:e})),i.url&&a.add(i.url),n++);return n>0&&await d(r),n})},"addDocument",0,function(e){return s(async()=>{let t=await l(),r=u(e);return t.push(r),await d(t),r})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await l(),r=e.map(u);return t.push(...r),await d(t),r})},"clearDocuments",0,function(){return s(async()=>{await d([])})},"corpusStats",0,c,"deleteDocument",0,function(e){return s(async()=>{let t=await l();await d(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await l(),r=new Set(e);await d(t.filter(e=>!r.has(e.id)))})},"readDocuments",0,l,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await d(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return s(async()=>{let r=await l(),a=r.findIndex(t=>t.id===e);if(a<0)return;let n=r[a],i=void 0!==t.content?t.content.trim():n.content,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 r[a]=s,await d(r),s})},"updateDocumentsStatus",0,function(e,t){return s(async()=>{let r=await l(),a=new Set(e),n=!1;for(let e of r)a.has(e.id)&&(e.status=t,n=!0);n&&await d(r)})}])},399828,e=>{"use strict";let t={"openai/text-embedding-3-small":{dimensions:1536,maxInputTokens:8191},"openai/text-embedding-3-large":{dimensions:3072,maxInputTokens:8191},"openai/text-embedding-ada-002":{dimensions:1536,maxInputTokens:8191},"google/gemini-embedding-2":{dimensions:768,maxInputTokens:2048},"google/gemini-embedding-001":{dimensions:768,maxInputTokens:2048},"cohere/embed-english-v3.0":{dimensions:1024,maxInputTokens:512},"cohere/embed-multilingual-v3.0":{dimensions:1024,maxInputTokens:512},"voyage/voyage-3":{dimensions:1024,maxInputTokens:32e3},"voyage/voyage-3-lite":{dimensions:512,maxInputTokens:32e3},"voyage/voyage-code-3":{dimensions:1024,maxInputTokens:32e3},"mistral/mistral-embed":{dimensions:1024,maxInputTokens:8192},"jina/jina-embeddings-v3":{dimensions:1024,maxInputTokens:8192},"jina/jina-clip-v2":{dimensions:1024,maxInputTokens:8192},"nomic/nomic-embed-text-v1.5":{dimensions:768,maxInputTokens:8192}},r=[{id:"openai/text-embedding-3-small",label:"text-embedding-3-small",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Fast, cheap, strong general-purpose default."},{id:"openai/text-embedding-3-large",label:"text-embedding-3-large",provider:"openai",dimensions:3072,maxInputTokens:8191,description:"Highest quality OpenAI embeddings, larger vectors."},{id:"openai/text-embedding-ada-002",label:"text-embedding-ada-002",provider:"openai",dimensions:1536,maxInputTokens:8191,description:"Legacy model — kept for backward compatibility."},{id:"google/gemini-embedding-001",label:"gemini-embedding-001",provider:"google",dimensions:768,maxInputTokens:2048,description:"Gemini embedding 001."},{id:"cohere/embed-english-v3.0",label:"embed-english-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"Tuned for retrieval; great for English-heavy corpora."},{id:"cohere/embed-multilingual-v3.0",label:"embed-multilingual-v3.0",provider:"cohere",dimensions:1024,maxInputTokens:512,description:"100+ language multilingual retrieval embeddings."},{id:"voyage/voyage-3",label:"voyage-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Voyage's best general-purpose retrieval model."},{id:"voyage/voyage-3-lite",label:"voyage-3-lite",provider:"voyage",dimensions:512,maxInputTokens:32e3,description:"Optimized for latency and cost with strong performance."},{id:"voyage/voyage-code-3",label:"voyage-code-3",provider:"voyage",dimensions:1024,maxInputTokens:32e3,description:"Specialized for code retrieval tasks."},{id:"mistral/mistral-embed",label:"mistral-embed",provider:"mistral",dimensions:1024,maxInputTokens:8192,description:"Mistral's efficient embedding model for retrieval."},{id:"jina/jina-embeddings-v3",label:"jina-embeddings-v3",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multilingual, task-specific embeddings from Jina AI."},{id:"jina/jina-clip-v2",label:"jina-clip-v2",provider:"jina",dimensions:1024,maxInputTokens:8192,description:"Multimodal embeddings for text and images."},{id:"nomic/nomic-embed-text-v1.5",label:"nomic-embed-text-v1.5",provider:"nomic",dimensions:768,maxInputTokens:8192,description:"Open-source, highly capable text embeddings."}];e.s(["EMBEDDING_DIMENSIONS",0,t,"EMBEDDING_MODELS",0,r,"getEmbeddingModel",0,function(e){return r.find(t=>t.id===e)},"getEmbeddingModelsForProvider",0,function(e,t){return"vercel_ai_gateway"===t?e:e.filter(e=>e.provider?.toLowerCase()===t.toLowerCase())},"toEmbeddingDescriptor",0,function(e){let r=t[e.id],a=e.id.split("/")[0]||e.owned_by;return{id:e.id,label:e.name||e.id.split("/").slice(1).join("/"),provider:a,dimensions:r?.dimensions??e.context_window??768,maxInputTokens:r?.maxInputTokens??e.max_tokens??2048,description:e.description||""}}])},979598,e=>{"use strict";let t={lancedb:{id:"lancedb",label:"LanceDB",description:"Embedded vector database for local development, LanceDB Cloud, or persistent S3-compatible storage such as Cloudflare R2.",runtime:"both",installStatus:"installed",docsUrl:"https://lancedb.github.io/lancedb/",serverDependencies:{"@lancedb/lancedb":"^0.30.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"local",help:"Use a local disk, LanceDB Cloud, or an S3-compatible bucket for persistent serverless deployments.",options:[{label:"Local (on-disk)",value:"local"},{label:"S3-compatible (Vercel / R2 / S3)",value:"s3"},{label:"Cloud",value:"cloud"}]},{key:"dbPath",label:"Database path",type:"path",required:!0,defaultValue:"./.larkup/lancedb",placeholder:"./.larkup/lancedb",help:"Directory where the LanceDB tables are stored.",showWhen:{key:"mode",equals:["local"]}},{key:"s3Uri",label:"Database URI",type:"text",required:!0,placeholder:"s3://my-bucket/larkup/my-server",help:"A dedicated, private bucket prefix for LanceDB table files. This is persistent across Vercel invocations.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Endpoint",label:"S3 endpoint",type:"text",required:!1,placeholder:"https://<account-id>.r2.cloudflarestorage.com",help:"Required for Cloudflare R2 and other S3-compatible providers. Leave blank for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3Region",label:"Region",type:"text",required:!0,defaultValue:"auto",placeholder:"auto",help:"Use “auto” for Cloudflare R2, or your bucket region for AWS S3.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3AccessKeyId",label:"Access key ID",type:"password",required:!0,secret:!0,help:"Use an object read/write credential restricted to this bucket.",showWhen:{key:"mode",equals:["s3"]}},{key:"s3SecretAccessKey",label:"Secret access key",type:"password",required:!0,secret:!0,help:"Stored as a deployment environment variable; never expose it in the browser.",showWhen:{key:"mode",equals:["s3"]}},{key:"uri",label:"Cloud URI",type:"text",required:!0,placeholder:"db://my-database",help:"Your LanceDB Cloud database URI.",showWhen:{key:"mode",equals:["cloud"]}},{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"LanceDB Cloud API key. Stored as an env var in the generated server.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"The table that holds your embedded chunks."}]},pinecone:{id:"pinecone",label:"Pinecone",description:"Fully-managed cloud vector database. Cloud-only — requires an API key and an existing index.",runtime:"cloud",installStatus:"installed",docsUrl:"https://docs.pinecone.io/",serverDependencies:{"@pinecone-database/pinecone":"^6.0.0"},fields:[{key:"apiKey",label:"API key",type:"password",required:!0,secret:!0,placeholder:"pcsk_...",help:"Pinecone API key. Stored as an env var in the generated server."},{key:"indexName",label:"Index name",type:"text",required:!0,placeholder:"rag-index",help:"Name of the Pinecone index to upsert into / query. For hybrid/lexical mode this index must use the 'dotproduct' metric."},{key:"namespace",label:"Namespace",type:"text",required:!1,placeholder:"default",help:"Optional namespace to isolate this dataset within the index."},{key:"sparseModel",label:"Sparse model",type:"text",required:!0,defaultValue:"pinecone-sparse-english-v0",help:"Pinecone-hosted sparse model used to generate keyword vectors via the Inference API. Both dense and sparse vectors are stored in the same index.",showWhenIndexType:["lexical","hybrid"]}]},weaviate:{id:"weaviate",label:"Weaviate",description:"Open-source AI-native vector database with built-in hybrid search, BM25, and multi-tenancy.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://weaviate.io/developers/weaviate",serverDependencies:{weaviate:"^3.0.0"},fields:[{key:"host",label:"Host URL",type:"text",required:!0,placeholder:"https://my-cluster.weaviate.network",help:"Weaviate Cloud URL or self-hosted host address."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"weaviate-api-key",help:"Weaviate Cloud API key (optional for self-hosted)."},{key:"className",label:"Collection name",type:"text",required:!0,defaultValue:"Documents",help:"The Weaviate collection (class) that holds your embedded chunks."}]},qdrant:{id:"qdrant",label:"Qdrant",description:"High-performance vector search engine with rich filtering, built for production-scale RAG.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://qdrant.tech/documentation/",serverDependencies:{"@qdrant/js-client-rest":"^1.9.0"},fields:[{key:"url",label:"Host URL",type:"text",required:!0,placeholder:"http://localhost:6333",help:"Qdrant server URL (local or Qdrant Cloud endpoint)."},{key:"apiKey",label:"API key",type:"password",required:!1,secret:!0,placeholder:"qdrant-api-key",help:"Qdrant Cloud API key (leave blank for local)."},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Qdrant collection to upsert into and query."}]},chroma:{id:"chroma",label:"Chroma",description:"Open-source, developer-friendly embedding database. Great for rapid local prototyping.",runtime:"both",installStatus:"installable",docsUrl:"https://docs.trychroma.com/",serverDependencies:{chromadb:"^1.9.0"},fields:[{key:"mode",label:"Mode",type:"select",required:!0,defaultValue:"server",help:"Server connects to a self-hosted Chroma instance. Cloud connects to Chroma Cloud.",options:[{label:"Server (Self-hosted)",value:"server"},{label:"Cloud (Chroma Cloud)",value:"cloud"}]},{key:"host",label:"Server URL",type:"text",required:!0,placeholder:"http://localhost:8000",defaultValue:"http://localhost:8000",help:"Chroma server URL (local Docker or remote).",showWhen:{key:"mode",equals:["server"]}},{key:"authToken",label:"Auth Token",type:"password",required:!1,secret:!0,placeholder:"chroma-token",help:"Optional static auth token for Chroma server.",showWhen:{key:"mode",equals:["server"]}},{key:"apiKey",label:"API Key",type:"password",required:!0,secret:!0,placeholder:"sk_...",help:"Chroma Cloud API Key.",showWhen:{key:"mode",equals:["cloud"]}},{key:"tenant",label:"Tenant",type:"text",required:!0,defaultValue:"default_tenant",help:"Tenant name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"database",label:"Database",type:"text",required:!0,defaultValue:"default_database",help:"Database name for Chroma Cloud.",showWhen:{key:"mode",equals:["cloud"]}},{key:"collectionName",label:"Collection name",type:"text",required:!0,defaultValue:"documents",help:"Chroma collection to store and retrieve embeddings."}]},pgvector:{id:"pgvector",label:"pgvector",description:"PostgreSQL extension for vector similarity search. Self-host vectors alongside your relational data.",runtime:"both",installStatus:"coming-soon",docsUrl:"https://github.com/pgvector/pgvector",serverDependencies:{pg:"^8.11.0",pgvector:"^0.2.0"},fields:[{key:"connectionString",label:"Connection string",type:"password",required:!0,secret:!0,placeholder:"postgresql://user:pass@localhost:5432/db",help:"Full PostgreSQL connection string."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"embeddings",help:"The table used to store vector embeddings. Created automatically if absent."}]},supabase:{id:"supabase",label:"Supabase",description:"Postgres-backed vector store via the pgvector extension with Supabase's managed infrastructure.",runtime:"cloud",installStatus:"coming-soon",docsUrl:"https://supabase.com/docs/guides/ai",serverDependencies:{"@supabase/supabase-js":"^2.43.0"},fields:[{key:"url",label:"Project URL",type:"text",required:!0,placeholder:"https://xyz.supabase.co",help:"Your Supabase project URL."},{key:"serviceKey",label:"Service role key",type:"password",required:!0,secret:!0,placeholder:"eyJhbGci...",help:"Supabase service_role key (not the anon key). Stored as an env var."},{key:"tableName",label:"Table name",type:"text",required:!0,defaultValue:"documents",help:"Supabase table with a vector column for embeddings."}]}};Object.values(t),e.s(["getVectorStore",0,function(e){return t[e]},"validateStoreConfig",0,function(e,t,r){let a={};for(let n of e.fields.filter(e=>{if(e.showWhen){let r=t[e.showWhen.key]??"";if(!e.showWhen.equals.includes(r))return!1}return!e.showWhenIndexType||!r||!!e.showWhenIndexType.includes(r)}))n.required&&!t[n.key]?.trim()&&(a[n.key]=`${n.label} is required`);return a}])},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},983131,778923,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(660526),n=e.i(666680);let i="larkup-sandbox:latest",s="/sandbox/output",o=r.default.join({get url(){return`file://${e.P("packages/sandbox/dist/docker-runner.js")}`}}.dirname??"/ROOT/packages/sandbox/dist",".."),l=null;async function d(){if(!l){let{default:e}=await import("dockerode");l=new e}return l}async function u(){let e=await d();try{let t=await e.version(),r=await e.listImages({filters:{reference:[i]}});return{status:r.length>0?"ready":"image-not-found",backend:"docker",dockerVersion:t.Version,imageReady:r.length>0}}catch(e){return{status:"docker-not-found",backend:"docker",error:e.message??"Docker daemon not available"}}}async function c(e){let a=await d(),n=r.default.join(o,"Dockerfile");try{await t.promises.access(n)}catch{throw Error(`Sandbox Dockerfile not found at ${n}. Ensure the @larkup/sandbox package is properly installed.`)}e?.("Building sandbox image…");let s=await a.buildImage({context:o,src:["Dockerfile"]},{t:i});await new Promise((t,r)=>{a.modem.followProgress(s,e=>{e?r(e):t()},t=>{t.stream&&e?.(t.stream.trim())})}),e?.("Sandbox image built successfully ✓")}async function p(){let e=await d();if((await e.listImages({filters:{reference:[i]}})).length>0)return!0;try{return await c(),!0}catch{return!1}}async function m(e,i){let o,l,u=await d(),c=Date.now(),p=r.default.join(a.default.tmpdir(),`larkup-sandbox-${(0,n.randomUUID)()}`),m=r.default.join(p,"input"),f=r.default.join(p,"output");if(await t.promises.mkdir(m,{recursive:!0}),await t.promises.mkdir(f,{recursive:!0}),e.files)for(let a of e.files){let e=r.default.join(m,a.name);a.isBase64?await t.promises.writeFile(e,Buffer.from(a.content,"base64")):await t.promises.writeFile(e,a.content,"utf8")}if("python"===e.language){var h;h=e.code,o=`
|
|
2
|
-
import sys, os, json, traceback
|
|
3
|
-
|
|
4
|
-
# Ensure output directory exists
|
|
5
|
-
os.makedirs("${s}", exist_ok=True)
|
|
6
|
-
|
|
7
|
-
# ============================================================
|
|
8
|
-
# SAFETY PREAMBLE: Suppress warnings & patch deprecated APIs
|
|
9
|
-
# ============================================================
|
|
10
|
-
import warnings
|
|
11
|
-
warnings.filterwarnings('ignore', category=FutureWarning)
|
|
12
|
-
warnings.filterwarnings('ignore', category=DeprecationWarning)
|
|
13
|
-
warnings.filterwarnings('ignore', category=UserWarning)
|
|
14
|
-
|
|
15
|
-
# Auto-import common data analysis modules
|
|
16
|
-
import numpy as np
|
|
17
|
-
|
|
18
|
-
try:
|
|
19
|
-
import pandas as pd
|
|
20
|
-
|
|
21
|
-
# --- Patch 1: DataFrame.append() was removed in pandas 2.0 ---
|
|
22
|
-
if not hasattr(pd.DataFrame, 'append'):
|
|
23
|
-
def _df_append(self, other, ignore_index=False, verify_integrity=False, sort=False, **kwargs):
|
|
24
|
-
"""Backwards-compatible append using pd.concat."""
|
|
25
|
-
if isinstance(other, (list, tuple)):
|
|
26
|
-
to_concat = [self] + list(other)
|
|
27
|
-
elif isinstance(other, dict):
|
|
28
|
-
to_concat = [self, pd.DataFrame([other])]
|
|
29
|
-
else:
|
|
30
|
-
to_concat = [self, other]
|
|
31
|
-
return pd.concat(to_concat, ignore_index=ignore_index, verify_integrity=verify_integrity, sort=sort)
|
|
32
|
-
pd.DataFrame.append = _df_append
|
|
33
|
-
|
|
34
|
-
# --- Patch 2: Series.append() was removed in pandas 2.0 ---
|
|
35
|
-
if not hasattr(pd.Series, 'append'):
|
|
36
|
-
def _series_append(self, to_append, ignore_index=False, verify_integrity=False):
|
|
37
|
-
"""Backwards-compatible Series.append using pd.concat."""
|
|
38
|
-
if isinstance(to_append, (list, tuple)):
|
|
39
|
-
to_concat = [self] + list(to_append)
|
|
40
|
-
else:
|
|
41
|
-
to_concat = [self, to_append]
|
|
42
|
-
return pd.concat(to_concat, ignore_index=ignore_index, verify_integrity=verify_integrity)
|
|
43
|
-
pd.Series.append = _series_append
|
|
44
|
-
|
|
45
|
-
# --- Patch 3: Fix deprecated resample frequency aliases ---
|
|
46
|
-
# "M" -> "ME", "Q" -> "QE", "Y" -> "YE", "H" -> "h", "T" -> "min", "S" -> "s"
|
|
47
|
-
_original_resample = pd.DataFrame.resample
|
|
48
|
-
_FREQ_ALIAS_MAP = {
|
|
49
|
-
'M': 'ME', 'Q': 'QE', 'Y': 'YE', 'A': 'YE',
|
|
50
|
-
'BM': 'BME', 'BQ': 'BQE', 'BA': 'BYE', 'BY': 'BYE',
|
|
51
|
-
'BMS': 'BMS', 'QS': 'QS', 'AS': 'YS', 'BAS': 'BYS',
|
|
52
|
-
'H': 'h', 'T': 'min', 'S': 's', 'L': 'ms', 'U': 'us', 'N': 'ns',
|
|
53
|
-
}
|
|
54
|
-
def _patched_resample(self, rule, *args, **kwargs):
|
|
55
|
-
if isinstance(rule, str) and rule in _FREQ_ALIAS_MAP:
|
|
56
|
-
rule = _FREQ_ALIAS_MAP[rule]
|
|
57
|
-
return _original_resample(self, rule, *args, **kwargs)
|
|
58
|
-
pd.DataFrame.resample = _patched_resample
|
|
59
|
-
|
|
60
|
-
# Also patch Series.resample
|
|
61
|
-
_original_series_resample = pd.Series.resample
|
|
62
|
-
def _patched_series_resample(self, rule, *args, **kwargs):
|
|
63
|
-
if isinstance(rule, str) and rule in _FREQ_ALIAS_MAP:
|
|
64
|
-
rule = _FREQ_ALIAS_MAP[rule]
|
|
65
|
-
return _original_series_resample(self, rule, *args, **kwargs)
|
|
66
|
-
pd.Series.resample = _patched_series_resample
|
|
67
|
-
|
|
68
|
-
# --- Patch 4: Fix pd.Grouper freq aliases ---
|
|
69
|
-
_original_grouper = pd.Grouper
|
|
70
|
-
class _PatchedGrouper(_original_grouper):
|
|
71
|
-
def __init__(self, *args, **kwargs):
|
|
72
|
-
if 'freq' in kwargs and isinstance(kwargs['freq'], str):
|
|
73
|
-
kwargs['freq'] = _FREQ_ALIAS_MAP.get(kwargs['freq'], kwargs['freq'])
|
|
74
|
-
super().__init__(*args, **kwargs)
|
|
75
|
-
pd.Grouper = _PatchedGrouper
|
|
76
|
-
|
|
77
|
-
except ImportError:
|
|
78
|
-
pass
|
|
79
|
-
|
|
80
|
-
# ============================================================
|
|
81
|
-
# Patch matplotlib to auto-save figures
|
|
82
|
-
# ============================================================
|
|
83
|
-
_figure_count = [0]
|
|
84
|
-
try:
|
|
85
|
-
import matplotlib
|
|
86
|
-
matplotlib.use("Agg")
|
|
87
|
-
import matplotlib.pyplot as plt
|
|
88
|
-
|
|
89
|
-
_original_show = plt.show
|
|
90
|
-
def _patched_show(*args, **kwargs):
|
|
91
|
-
for fig_num in plt.get_fignums():
|
|
92
|
-
fig = plt.figure(fig_num)
|
|
93
|
-
fname = f"${s}/chart_{_figure_count[0]}.png"
|
|
94
|
-
fig.savefig(fname, dpi=150, bbox_inches="tight", facecolor="white")
|
|
95
|
-
_figure_count[0] += 1
|
|
96
|
-
plt.close("all")
|
|
97
|
-
plt.show = _patched_show
|
|
98
|
-
except ImportError:
|
|
99
|
-
pass
|
|
100
|
-
|
|
101
|
-
# ============================================================
|
|
102
|
-
# Execute user code with robust error handling
|
|
103
|
-
# ============================================================
|
|
104
|
-
try:
|
|
105
|
-
exec(${JSON.stringify(h)})
|
|
106
|
-
|
|
107
|
-
# Auto-save any remaining matplotlib figures
|
|
108
|
-
try:
|
|
109
|
-
import matplotlib.pyplot as plt
|
|
110
|
-
if plt.get_fignums():
|
|
111
|
-
plt.show()
|
|
112
|
-
except (ImportError, Exception):
|
|
113
|
-
pass
|
|
114
|
-
except SystemExit as e:
|
|
115
|
-
# Let explicit sys.exit() calls through
|
|
116
|
-
if e.code != 0:
|
|
117
|
-
sys.exit(e.code)
|
|
118
|
-
except Exception as e:
|
|
119
|
-
# Print a clean, user-readable error instead of raw traceback
|
|
120
|
-
error_type = type(e).__name__
|
|
121
|
-
error_msg = str(e)
|
|
122
|
-
print(f"Error ({error_type}): {error_msg}", file=sys.stderr)
|
|
123
|
-
# Also print the relevant part of the traceback for debugging
|
|
124
|
-
tb = traceback.extract_tb(sys.exc_info()[2])
|
|
125
|
-
# Filter to only show the exec'd code frames (skip wrapper frames)
|
|
126
|
-
user_frames = [f for f in tb if f.filename == '<string>']
|
|
127
|
-
if user_frames:
|
|
128
|
-
last = user_frames[-1]
|
|
129
|
-
print(f" at line {last.lineno}: {last.line}", file=sys.stderr)
|
|
130
|
-
sys.exit(1)
|
|
131
|
-
|
|
132
|
-
# List generated artifacts
|
|
133
|
-
artifacts = []
|
|
134
|
-
if os.path.isdir("${s}"):
|
|
135
|
-
for f in sorted(os.listdir("${s}")):
|
|
136
|
-
fp = os.path.join("${s}", f)
|
|
137
|
-
if os.path.isfile(fp):
|
|
138
|
-
artifacts.append(f)
|
|
139
|
-
if artifacts:
|
|
140
|
-
print("\\n__ARTIFACTS__:" + json.dumps(artifacts))
|
|
141
|
-
`;let a=r.default.join(p,"run.py");await t.promises.writeFile(a,o,"utf8"),l=["python3","/sandbox/run.py"]}else{let a=r.default.join(p,"run.js");await t.promises.writeFile(a,e.code,"utf8"),l=["node","/sandbox/run.js"]}let g=e.timeout??i.timeoutMs,b=null;try{b=await u.createContainer({Image:i.imageName,Cmd:l,Entrypoint:[],WorkingDir:"/sandbox/input",HostConfig:{AutoRemove:!1,Memory:1024*i.memoryMB*1024,CpuShares:i.cpuShares,NetworkMode:i.networkDisabled?"none":"bridge",Binds:[`${m}:/sandbox/input:ro`,`${f}:${s}:rw`,`${p}/run.py:/sandbox/run.py:ro`],ReadonlyRootfs:!1},Tty:!1,AttachStdout:!0,AttachStderr:!0}),await b.start();let e=b.wait(),a=new Promise((e,t)=>{setTimeout(async()=>{try{await b?.kill()}catch{}t(Error(`Execution timed out after ${g}ms`))},g)}),n=await Promise.race([e,a]),o=await b.logs({stdout:!0,stderr:!0,follow:!1}),d=function(e){let t="",r="";if("string"==typeof e)return{stdout:e,stderr:""};let a=0;for(;a<e.length&&!(a+8>e.length);){let n=e.readUInt8(a),i=e.readUInt32BE(a+4);if((a+=8)+i>e.length)break;let s=e.subarray(a,a+i).toString("utf8");1===n?t+=s:2===n&&(r+=s),a+=i}return t||r||!(e.length>0)||(t=e.toString("utf8")),{stdout:t,stderr:r}}(o),h=[];try{for(let e of(await t.promises.readdir(f))){let a=r.default.join(f,e),n=await t.promises.readFile(a),i={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".svg":"image/svg+xml",".gif":"image/gif",".csv":"text/csv",".json":"application/json",".txt":"text/plain",".html":"text/html",".pdf":"application/pdf"}[r.default.extname(e).toLowerCase()]??"application/octet-stream";h.push({name:e,mimeType:i,data:n.toString("base64")})}}catch{}let{stdout:y,stderr:v}=d;return{stdout:y.replace(/\n__ARTIFACTS__:.*$/m,"").trimEnd(),stderr:v,exitCode:n.StatusCode??1,artifacts:h,executionTimeMs:Date.now()-c}}catch(e){return{stdout:"",stderr:e.message??"Execution failed",exitCode:1,artifacts:[],executionTimeMs:Date.now()-c}}finally{if(b)try{await b.remove({force:!0})}catch{}try{await t.promises.rm(p,{recursive:!0,force:!0})}catch{}}}let f={imageName:"larkup-sandbox:latest",memoryMB:512,cpuShares:1024,timeoutMs:3e4,networkDisabled:!0};e.s(["SandboxManager",0,class{config;constructor(e){this.config={backend:e?.backend??"docker",docker:e?.docker,remote:e?.remote}}async healthCheck(){switch(this.config.backend){case"docker":return u();case"e2b":case"modal":case"custom":return{status:"error",backend:this.config.backend,error:`${this.config.backend} backend is not yet implemented. Use Docker for local execution.`};default:return{status:"error",backend:this.config.backend,error:`Unknown backend: ${this.config.backend}`}}}async setup(e){if("docker"===this.config.backend)await c(e);else throw Error(`Setup not supported for backend: ${this.config.backend}`)}async execute(e){switch(this.config.backend){case"docker":if(!await p())return{stdout:"",stderr:"Sandbox image not available. Run setup first or ensure Docker is installed.",exitCode:1,artifacts:[],executionTimeMs:0};return m(e,{...f,...this.config.docker});case"e2b":case"modal":case"custom":return{stdout:"",stderr:`${this.config.backend} backend is not yet implemented.`,exitCode:1,artifacts:[],executionTimeMs:0};default:return{stdout:"",stderr:`Unknown backend: ${this.config.backend}`,exitCode:1,artifacts:[],executionTimeMs:0}}}}],778923),e.s([],983131)},608778,e=>{"use strict";var t=e.i(902157),r=e.i(750227),a=e.i(666680),n=e.i(192441);let i=[/^\d{4}-\d{2}-\d{2}$/,/^\d{2}\/\d{2}\/\d{4}$/,/^\d{2}-\d{2}-\d{4}$/,/^\d{4}\/\d{2}\/\d{2}$/,/^\d{4}-\d{2}-\d{2}T/];function s(e){if(null==e||""===e)return NaN;if(e instanceof Date)return e.getTime();let t=String(e).trim();if(!t)return NaN;let r=Date.parse(t);if(!isNaN(r))return r;let a=t.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);if(a){let e=Date.parse(`${a[3]}-${a[2]}-${a[1]}`);if(!isNaN(e))return e}let n=t.match(/^(\d{2})-(\d{2})-(\d{4})$/);if(n){let e=Date.parse(`${n[3]}-${n[2]}-${n[1]}`);if(!isNaN(e))return e}return NaN}async function o(e){let t=e?await (0,n.requireDataDir)():await (0,n.getDataDir)();return t?r.default.join(t,"tabular-datasets.json"):null}async function l(){let e=await o(!1);if(!e)return[];try{let r=await t.promises.readFile(e,"utf8");return JSON.parse(r)}catch{return[]}}async function d(e){let r=await o(!0);r&&await t.promises.writeFile(r,JSON.stringify(e,null,2),"utf8")}async function u(e,t){if(0===t.length)throw Error("Cannot save an empty dataset");let r=Object.keys(t[0]),n=r.map(e=>{let r=t.map(t=>t[e]),a=function(e){let t=e.filter(e=>null!=e&&""!==e);if(0===t.length)return"mixed";let r=0,a=0,n=0;for(let e of t){let t=String(e).trim();"true"===t||"false"===t?a++:isNaN(Number(t))||""===t?(i.some(e=>e.test(t))||!isNaN(Date.parse(t)))&&n++:r++}let s=.8*t.length;return r>=s?"number":a>=s?"boolean":n>=s?"date":"string"}(r),n=r.filter(e=>null!=e&&""!==e),o=new Set(n.map(String)),l={name:e,type:a,nullCount:r.length-n.length,uniqueCount:o.size,sampleValues:[...o].slice(0,5)};if("number"===a){let e,t,r,a,i,s,o=n.map(Number).filter(e=>!isNaN(e));o.length>0&&(t=(e=[...o].sort((e,t)=>e-t)).length,a=(r=e.reduce((e,t)=>e+t,0))/t,i=t%2==0?(e[t/2-1]+e[t/2])/2:e[Math.floor(t/2)],s=Math.sqrt(e.reduce((e,t)=>e+(t-a)**2,0)/t),l.stats={min:e[0],max:e[t-1],mean:Number(a.toFixed(4)),median:Number(i.toFixed(4)),stddev:Number(s.toFixed(4)),sum:Number(r.toFixed(4))})}if("date"===a){let e=n.map(String),t=e.map(s).filter(e=>!isNaN(e));if(t.length>0){let r=[...t].sort((e,t)=>e-t);l.dateRange={min:e[t.indexOf(r[0])]??new Date(r[0]).toISOString().split("T")[0],max:e[t.indexOf(r[r.length-1])]??new Date(r[r.length-1]).toISOString().split("T")[0],format:function(e){for(let t of e){if(/^\d{4}-\d{2}-\d{2}$/.test(t))break;if(/^\d{4}-\d{2}-\d{2}T/.test(t))return"YYYY-MM-DDTHH:mm:ss";if(/^\d{2}\/\d{2}\/\d{4}$/.test(t))return"DD/MM/YYYY";if(/^\d{2}-\d{2}-\d{4}$/.test(t))return"DD-MM-YYYY";if(/^\d{4}\/\d{2}\/\d{2}$/.test(t))return"YYYY/MM/DD"}return"YYYY-MM-DD"}(e)}}}return l}),o={totalRows:t.length,totalColumns:n.length,numericColumns:n.filter(e=>"number"===e.type).length,categoricalColumns:n.filter(e=>"string"===e.type).length,dateColumns:n.filter(e=>"date"===e.type).length},u={id:(0,a.randomUUID)(),fileName:e,columns:n,rows:t,summary:o,rowCount:t.length,createdAt:new Date().toISOString()},c=await l();return c.push(u),await d(c),u}async function c(){return(await l()).map(({rows:e,...t})=>t)}async function p(e){return(await l()).find(t=>t.id===e)??null}async function m(e){let t=await l();await d(t.filter(t=>t.id!==e))}async function f(e){let t,r=await p(e.datasetId);if(!r)throw Error(`Dataset not found: ${e.datasetId}`);let a=[...r.rows],n=new Map;for(let e of r.columns)n.set(e.name,e.type);if(e.filters&&e.filters.length>0)for(let t of e.filters){let e="date"===n.get(t.column);a=a.filter(r=>{let a=r[t.column];if(e&&["eq","neq","gt","gte","lt","lte"].includes(t.op)){let e=s(a),r=s(t.value);if(isNaN(e)||isNaN(r))return"eq"===t.op?String(a)===String(t.value):"neq"===t.op&&String(a)!==String(t.value);switch(t.op){case"eq":return e===r;case"neq":return e!==r;case"gt":return e>r;case"gte":return e>=r;case"lt":return e<r;case"lte":return e<=r}}switch(t.op){case"eq":return String(a)===String(t.value);case"neq":return String(a)!==String(t.value);case"gt":return Number(a)>Number(t.value);case"gte":return Number(a)>=Number(t.value);case"lt":return Number(a)<Number(t.value);case"lte":return Number(a)<=Number(t.value);case"contains":return String(a).toLowerCase().includes(String(t.value).toLowerCase());case"in":return Array.isArray(t.value)&&t.value.includes(a);default:return!0}})}if(e.groupBy&&e.groupBy.length>0&&e.aggregations){let t=new Map;for(let r of a){let a=e.groupBy.map(e=>String(r[e])).join("|||"),n=t.get(a)??[];n.push(r),t.set(a,n)}let r=[];for(let[a,n]of t.entries()){let t={},i=a.split("|||");for(let r of(e.groupBy.forEach((e,r)=>{t[e]=i[r]}),e.aggregations)){let e=n.map(e=>Number(e[r.column])).filter(e=>!isNaN(e));t[`${r.op}_${r.column}`]=h(r.op,e)}r.push(t)}a=r}if(e.aggregations&&e.aggregations.length>0&&(!e.groupBy||0===e.groupBy.length))for(let r of(t={},e.aggregations)){let e=a.map(e=>Number(e[r.column])).filter(e=>!isNaN(e));t[`${r.op}_${r.column}`]=h(r.op,e)}if(e.columns&&e.columns.length>0&&(a=a.map(t=>{let r={};for(let a of e.columns)a in t&&(r[a]=t[a]);return r})),e.sortBy){let t="desc"===e.sortOrder?-1:1;a.sort((r,a)=>{let n=r[e.sortBy],i=a[e.sortBy];return null==n&&null==i?0:null==n?1:null==i?-1:"number"==typeof n&&"number"==typeof i?(n-i)*t:String(n).localeCompare(String(i))*t})}let i=a.length;return e.limit&&e.limit>0&&(a=a.slice(0,e.limit)),{columns:a.length>0?Object.keys(a[0]):e.columns??r.columns.map(e=>e.name),rows:a,totalRows:i,aggregationResults:t}}function h(e,t){if(0===t.length)return 0;switch(e){case"sum":return Number(t.reduce((e,t)=>e+t,0).toFixed(4));case"avg":return Number((t.reduce((e,t)=>e+t,0)/t.length).toFixed(4));case"count":return t.length;case"min":return Math.min(...t);case"max":return Math.max(...t);case"median":{let e=[...t].sort((e,t)=>e-t),r=e.length;return r%2==0?Number(((e[r/2-1]+e[r/2])/2).toFixed(4)):e[Math.floor(r/2)]}default:return 0}}e.s(["deleteTabularDataset",0,m,"getTabularDataset",0,p,"listTabularDatasets",0,c,"queryTabular",0,f,"saveTabularDataset",0,u])},225970,e=>{e.v(e=>Promise.resolve().then(()=>e(65048)))},953341,e=>{e.v(t=>Promise.all(["server/chunks/15sd_@vercel_oidc_dist_token_10ruti0.js"].map(t=>e.l(t))).then(()=>t(624299)))},77149,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1ynt2jc._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0ou70-v._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__01al2n0._.js"].map(t=>e.l(t))).then(()=>t(46465)))},313282,e=>{e.v(t=>Promise.all(["server/chunks/packages_core_src_analytics-store_ts_06l_t47._.js"].map(t=>e.l(t))).then(()=>t(43697)))},195213,e=>{e.v(e=>Promise.resolve().then(()=>e(568886)))},627270,e=>{e.v(e=>Promise.resolve().then(()=>e(612069)))},311108,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0n78tj0._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(104757)))},118890,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1m18nr1._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(508582)))},3366,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__18ih29u._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(835716)))},654210,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0a8dopv._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(38862)))},187616,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1gte051._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(129921)))},465615,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1vsvck0._.js","server/chunks/0598_next_1f_7r6r._.js"].map(t=>e.l(t))).then(()=>t(426237)))}];
|
|
142
|
-
|
|
143
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__00r1kgp._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[367165,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(638725),i=e.i(192441);async function n(){let e=await (0,i.getDataDir)();if(!e)return r.DEFAULT_CONFIG;try{let i=await t.promises.readFile(a.default.join(e,"config.json"),"utf8"),n=JSON.parse(i),s=n.customEmbeddings,o=n.embeddingModelId;if(n.customEmbedding&&!s?.length){let e=n.customEmbedding;s=[e],"custom"===o&&(o=`custom:${e.modelName}`)}let u={...r.DEFAULT_CONFIG,...n,embeddingModelId:o??r.DEFAULT_CONFIG.embeddingModelId,customEmbeddings:s,chunking:{...r.DEFAULT_CONFIG.chunking,...n.chunking},storeConfig:{...r.DEFAULT_CONFIG.storeConfig,...n.storeConfig}};return delete u.customEmbedding,u}catch{return r.DEFAULT_CONFIG}}async function s(e){let r=await (0,i.requireDataDir)(),n={...e,updatedAt:new Date().toISOString()};return await t.promises.writeFile(a.default.join(r,"config.json"),JSON.stringify(n,null,2),"utf8"),n}e.s(["readConfig",0,n,"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),i=e.i(192441);let n=Promise.resolve();function s(e){let t=n.then(e,e);return n=t.catch(()=>{}),t}async function o(e){let t=e?await (0,i.requireDataDir)():await (0,i.getDataDir)();return t?a.default.join(t,"documents.json"):null}async function u(){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 d(e){let i=await o(!0);if(!i)return;let n=a.default.join(a.default.dirname(i),`.${a.default.basename(i)}.${process.pid}.${(0,r.randomUUID)()}.tmp`);try{await t.promises.writeFile(n,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(n,i)}catch(e){throw await t.promises.unlink(n).catch(()=>{}),e}}function l(e){let t=e.content.trim();return{id:e.id??(0,r.randomUUID)(),title:e.title.trim()||"Untitled",url:e.url,source:e.source,content:t,charCount:t.length,jobId:e.jobId,metadata:e.metadata,status:"unindexed",createdAt:new Date().toISOString()}}async function c(){let e=await u(),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 u(),r=new Set(a.filter(e=>e.url).map(e=>e.url)),i=0;for(let n of t)!(n.url&&r.has(n.url))&&n.content.trim()&&(a.push(l({...n,jobId:e})),n.url&&r.add(n.url),i++);return i>0&&await d(a),i})},"addDocument",0,function(e){return s(async()=>{let t=await u(),a=l(e);return t.push(a),await d(t),a})},"addDocuments",0,function(e){return s(async()=>{if(0===e.length)return[];let t=await u(),a=e.map(l);return t.push(...a),await d(t),a})},"clearDocuments",0,function(){return s(async()=>{await d([])})},"corpusStats",0,c,"deleteDocument",0,function(e){return s(async()=>{let t=await u();await d(t.filter(t=>t.id!==e))})},"deleteDocuments",0,function(e){return s(async()=>{let t=await u(),a=new Set(e);await d(t.filter(e=>!a.has(e.id)))})},"readDocuments",0,u,"replaceDocuments",0,function(e){return s(async()=>{let t=new Date().toISOString();await d(e.map(e=>({...e,status:"unindexed",createdAt:e.createdAt||t})))})},"updateDocument",0,function(e,t){return s(async()=>{let a=await u(),r=a.findIndex(t=>t.id===e);if(r<0)return;let i=a[r],n=void 0!==t.content?t.content.trim():i.content,s={...i,title:void 0!==t.title?t.title.trim()||"Untitled":i.title,content:n,charCount:n.length,url:void 0!==t.url?t.url||void 0:i.url,metadata:void 0!==t.metadata?t.metadata:i.metadata,status:"unindexed"};return a[r]=s,await d(a),s})},"updateDocumentsStatus",0,function(e,t){return s(async()=>{let a=await u(),r=new Set(e),i=!1;for(let e of a)r.has(e.id)&&(e.status=t,i=!0);i&&await d(a)})}])},585071,e=>{"use strict";var t=e.i(192441);async function a(a,r){let i={...a.storeConfig},n=await (0,t.getActiveServer)(),s=n?.id;if(s){let e=s.replace(/[^a-zA-Z0-9_-]/g,"_");"pinecone"===a.vectorStore?i.namespace=s:"chroma"===a.vectorStore?i.collectionName=`documents_${e}`:"lancedb"!==a.vectorStore&&a.vectorStore||(i.tableName=`documents_${e}`)}switch(a.vectorStore){case"pinecone":{let{PineconeAdapter:t}=await e.A(77149);return new t({apiKey:i.apiKey,indexName:i.indexName,namespace:i.namespace,sparseModel:i.sparseModel,indexType:a.indexType,onRateLimit:r})}case"chroma":{let{ChromaAdapter:t}=await e.A(195059);return new t({mode:i.mode,host:i.host,authToken:i.authToken,apiKey:i.apiKey,tenant:i.tenant,database:i.database,collectionName:i.collectionName,indexType:a.indexType})}default:{let{LanceDBAdapter:t}=await e.A(184904);return new t({mode:i.mode,dbPath:i.dbPath,uri:i.uri,apiKey:i.apiKey,s3Uri:i.s3Uri,s3Endpoint:i.s3Endpoint,s3Region:i.s3Region,s3AccessKeyId:i.s3AccessKeyId,s3SecretAccessKey:i.s3SecretAccessKey,tableName:i.tableName})}}}e.s(["createAdapter",0,a])},839554,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(666680),i=e.i(192441);let n=Promise.resolve();function s(e){let t=n.then(e,e);return n=t.catch(()=>{}),t}async function o(e){let t=e?await (0,i.requireDataDir)():await (0,i.getDataDir)();return t?a.default.join(t,"media-assets.json"):null}async function u(){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 i=await o(!0);if(!i)return;let n=a.default.join(a.default.dirname(i),`.${a.default.basename(i)}.${process.pid}.${(0,r.randomUUID)()}.tmp`);try{await t.promises.writeFile(n,JSON.stringify(e,null,2),"utf8"),await t.promises.rename(n,i)}catch(e){throw await t.promises.unlink(n).catch(()=>{}),e}}let l=["download","extract","transcribe","vision","synthesize","index"],c={download:10,extract:15,transcribe:25,vision:30,synthesize:5,index:15};function p(e){return l.map(t=>({stage:t,status:"waiting",updatedAt:e}))}function m(e){return void 0!==e&&Number.isFinite(e)?Math.max(0,e):void 0}function f(e){let t=m(e);return void 0===t?void 0:Math.min(100,t)}function g(e){return Math.floor(m(e.processingRevision)??0)+1}async function h(){let e=await u(),t={image:0,video:0,audio:0},a={pending:0,processing:0,completed:0,failed:0},r=0;for(let i of e)t[i.type]++,a[i.processingStatus]++,r+=i.fileSize;return{total:e.length,byType:t,byStatus:a,totalBytes:r}}async function w(e){return(await u()).find(t=>t.id===e)}e.s(["addMediaAssets",0,function(e){return s(async()=>{let t=await u(),a=new Date().toISOString(),i=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(...i),await d(t),i})},"claimMediaAsset",0,function(e){return s(async()=>{let t=await u(),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:g(t[a]),processingHeartbeatAt:r,updatedAt:r},await d(t),t[a]})},"deleteMediaAsset",0,function(e){return s(async()=>{let t=await u();await d(t.filter(t=>t.id!==e))})},"deleteMediaAssets",0,function(e){return s(async()=>{let t=await u(),a=new Set(e);await d(t.filter(e=>!a.has(e.id)))})},"getMediaAsset",0,w,"mediaStats",0,h,"readMediaAssets",0,u,"recoverStaleMediaAssets",0,function(e=3e5){return s(async()=>{let t=await u(),a=Date.now()-e,r="The background worker stopped. Retry to resume media processing.",i=0;for(let e=0;e<t.length;e++){let n=t[e],s="processing"===n.processingStatus,o="pending"===n.processingStatus&&"Queued for background processing..."===n.processingMessage,u=n.processingHeartbeatAt??n.updatedAt;if((s||o)&&new Date(u).getTime()<a){let a=new Date().toISOString(),s=n.processingSteps?.map(e=>"running"===e.status?{...e,status:"failed",message:r,updatedAt:a,finishedAt:a}:e);t[e]={...n,processingStatus:"failed",processingError:r,processingMessage:void 0,processingProgress:void 0,processingSteps:s,processingRevision:g(n),processingHeartbeatAt:a,updatedAt:a},i++}}return i>0&&await d(t),i})},"updateMediaAsset",0,function(e,t){return s(async()=>{let a=await u(),r=a.findIndex(t=>t.id===e);if(r<0)return;let i=a[r];return a[r]={...i,...t,documentIds:t.documentIds??i.documentIds,pendingDocumentIds:t.pendingDocumentIds??i.pendingDocumentIds,supersededDocumentIds:t.supersededDocumentIds??i.supersededDocumentIds,updatedAt:new Date().toISOString()},await d(a),a[r]})},"updateMediaStage",0,function(e,t,a){return s(async()=>{let r,i,n=await u(),s=n.findIndex(t=>t.id===e);if(s<0)return;let o=new Date().toISOString(),l=n[s],h=new Map((l.processingSteps??[]).map(e=>[e.stage,e])),w=p(o).map(e=>h.get(e.stage)??e),y=w.findIndex(e=>e.stage===t),v=w[y],A=new Set(["completed","skipped","failed"]),S=a.status??v.status,R=A.has(v.status)||"running"===v.status&&"waiting"===S?v.status:S,x=f(v.percent),D=f(a.percent),N=void 0===D?x:Math.max(x??0,D),b=m(v.current),I=m(a.current),E=void 0===I?b:Math.max(b??0,I),T=void 0===a.total?m(v.total):m(a.total);void 0!==E&&void 0!==T&&(T=Math.max(T,E))>0&&(N=Math.max(N??0,Math.min(100,E/T*100))),"completed"===R&&(N=100,void 0!==T&&(E=T));let U=A.has(R),M={...v,...a,stage:t,status:R,percent:N,current:E,total:T,startedAt:a.startedAt??v.startedAt??("running"===R||U?o:void 0),updatedAt:o,finishedAt:U?a.finishedAt??v.finishedAt??o:void 0};w[y]=M;let C=Math.max(f(l.processingProgress)??0,0===(i=(r=w.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=f(e.percent);return void 0!==t?t:void 0!==e.current&&void 0!==e.total&&Number.isFinite(e.current)&&Number.isFinite(e.total)&&e.total>0?Math.min(100,Math.max(0,e.current/e.total*100)):0}(t)/100,0)/i*100)),P=[...w].reverse().find(e=>"running"===e.status&&e.message)?.message,j="running"===M.status?M.message??a.message??l.processingMessage:P??a.message??M.message??l.processingMessage;return n[s]={...l,processingSteps:w,processingProgress:C,processingMessage:j,processingRevision:g(l),processingHeartbeatAt:o,updatedAt:o},await d(n),n[s]})}])},941486,e=>{"use strict";var t=e.i(902157),a=e.i(750227),r=e.i(192441);class i{id="local";name="Local Storage";async mediaDir(){let e=await (0,r.requireDataDir)(),i=a.default.join(e,"media");return await t.promises.mkdir(i,{recursive:!0}),i}async store(e,r,i){let n=await this.mediaDir(),s=a.default.join(n,e);return await t.promises.mkdir(a.default.dirname(s),{recursive:!0}),await t.promises.writeFile(s,r),`local://${e}`}async storeFile(e,r,i){let n=await this.mediaDir(),s=a.default.join(n,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(),i=a.default.resolve(r,t),n=a.default.relative(r,i);if(n.startsWith("..")||a.default.isAbsolute(n))throw Error("Invalid local storage URI");return i}async delete(e){let r=e.replace("local://",""),i=await this.mediaDir();try{await t.promises.unlink(a.default.join(i,r))}catch{}}async stats(){try{let e=await this.mediaDir();return await n(e)}catch{return{usedBytes:0,fileCount:0}}}}async function n(e){let r=0,i=0;async function n(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 n(s);else try{let e=await t.promises.stat(s);r+=e.size,i++}catch{}}}return await n(e),{usedBytes:r,fileCount:i}}e.s(["createStorageProvider",0,function(e){return new i}])},504740,e=>{"use strict";var t=e.i(463857);let a=new Map;async function r(e){if(a.has(e))return a.get(e);let r=await (0,t.getInstalledTool)(e);if(!r)return null;try{let t=function(e){switch(e.source){case"local":default:return e.packageName;case"registry":case"sandbox":return e.resolvedPath}}(r),i=await import(t);return a.set(e,i),i}catch(t){return console.error(`[marketplace] Failed to load tool "${e}":`,t),null}}e.s(["loadTool",0,r])},889271,e=>{"use strict";var t=e.i(239441),a=e.i(449055),r=e.i(391328),i=e.i(6352),n=e.i(746789),s=e.i(423437),o=e.i(178820),u=e.i(569191),d=e.i(576251),l=e.i(199962),c=e.i(547545),p=e.i(664046),m=e.i(235691),f=e.i(298907),g=e.i(110763),h=e.i(193695);e.i(673243);var w=e.i(236167),y=e.i(766576),v=e.i(839554),A=e.i(463857),S=e.i(504740),R=e.i(941486),x=e.i(705252),D=e.i(367165),N=e.i(585071),b=e.i(192441);async function I(e){return O(e,()=>E(e))}async function E(e){let t=new URL(e.url).searchParams.get("type");await (0,v.recoverStaleMediaAssets)();let[a,r]=await Promise.all([(0,v.readMediaAssets)(),(0,v.mediaStats)()]),i=t?a.filter(e=>e.type===t):a;i.sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime());let n=(0,R.createStorageProvider)(),s=await n.stats();return y.NextResponse.json({assets:i,stats:r,storage:{usedBytes:s.usedBytes,fileCount:s.fileCount}})}async function T(e){return O(e,()=>U(e))}async function U(t){try{if(t.headers.get("content-type")?.includes("application/json"))return await M(t);let r=(await t.formData()).getAll("file");if(0===r.length)return y.NextResponse.json({error:"No files provided."},{status:400});let i=(0,R.createStorageProvider)(),n=[];for(let e of r){var a;let t=(a=e.type).startsWith("image/")?"image":a.startsWith("video/")?"video":a.startsWith("audio/")?"audio":null;if(!t)continue;let r=Buffer.from(await e.arrayBuffer()),s=e.name.split(".").pop()||"bin",o=`${t}s/${Date.now()}_${Math.random().toString(36).slice(2)}.${s}`,u=await i.store(o,r,e.type);n.push({type:t,fileName:e.name,mimeType:e.type,storageUri:u,fileSize:e.size})}if(0===n.length)return y.NextResponse.json({error:"No supported media files found."},{status:400});let{addMediaAssets:s}=await e.A(742957),o=await s(n);return y.NextResponse.json({assets:o,count:o.length},{status:201})}catch(t){let e=t instanceof Error?t.message:"Failed to upload media.";return y.NextResponse.json({error:e},{status:500})}}async function M(t){let a=await t.json(),r=[...new Set(a.urls?.map(e=>e.trim()).filter(Boolean)??[])];if(0===r.length||r.length>10)return y.NextResponse.json({error:"Provide between 1 and 10 media URLs."},{status:400});if(!await (0,A.isToolInstalled)("video-audio"))return y.NextResponse.json({error:"Install the Video & Audio tool before importing media URLs."},{status:409});let i=await (0,S.loadTool)("video-audio");if(!i?.importMediaUrl||!i?.inspectMediaUrl)return y.NextResponse.json({error:"The installed Video & Audio tool needs an update."},{status:409});if(a.estimateOnly){let e=[];for(let t of r){let r=await i.inspectMediaUrl(t);if(a.mediaType&&"unknown"!==r.mediaType&&r.mediaType!==a.mediaType)return y.NextResponse.json({error:`The URL points to ${r.mediaType}, not ${a.mediaType}.`},{status:400});e.push(r)}return y.NextResponse.json({estimates:e})}let{addMediaAssets:n}=await e.A(742957),s=r.map(e=>({type:a.mediaType||"video",fileName:"Importing URL...",mimeType:"application/octet-stream",storageUri:`pending://${e}`,fileSize:0,originalUrl:e})),o=await n(s);return y.NextResponse.json({assets:o,count:o.length},{status:201})}async function C(e){return O(e,()=>P(e))}async function P(t){let a=new URL(t.url),r=a.searchParams.get("id"),i=a.searchParams.get("ids"),n=(0,R.createStorageProvider)();if(r){let{getMediaAsset:t}=await e.A(742957),a=await t(r);if(a){if(j(a))return y.NextResponse.json({error:"Wait for the media indexing job to finish before deleting it."},{status:409});let e=k(a);await _(e),await n.delete(a.storageUri).catch(()=>{}),a.thumbnailUri&&await n.delete(a.thumbnailUri).catch(()=>{}),await (0,x.deleteDocuments)(e)}await (0,v.deleteMediaAsset)(r)}else if(i){let e=i.split(","),t=(await (0,v.readMediaAssets)()).filter(t=>e.includes(t.id));if(t.some(j))return y.NextResponse.json({error:"Wait for all selected media indexing jobs to finish before deleting them."},{status:409});for(let e of t){let t=k(e);await _(t),await n.delete(e.storageUri).catch(()=>{}),e.thumbnailUri&&await n.delete(e.thumbnailUri).catch(()=>{}),await (0,x.deleteDocuments)(t)}await (0,v.deleteMediaAssets)(e)}return y.NextResponse.json({ok:!0})}function j(e){return"processing"===e.processingStatus||"pending"===e.processingStatus&&"Queued for background processing..."===e.processingMessage}function O(e,t){let a=new URL(e.url).searchParams.get("serverId");return a?(0,b.runWithServer)(a,t):t()}async function _(e){if(0===e.length)return;let t=await (0,N.createAdapter)(await (0,D.readConfig)());await t.deleteByDocumentIds(e)}function k(e){return[...new Set([...e.documentIds,...e.pendingDocumentIds??[],...e.supersededDocumentIds??[]])]}e.s(["DELETE",0,C,"GET",0,I,"POST",0,T,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],98281);var F=e.i(98281);let $=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/media/route",pathname:"/api/media",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/media/route.ts",nextConfigOutput:"standalone",userland:F,...{}}),{workAsyncStorage:q,workUnitAsyncStorage:H,serverHooks:L}=$;async function K(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),$.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/media/route";y=y.replace(/\/index$/,"")||"/";let v=await $.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:A,deploymentId:S,params:R,nextConfig:x,parsedUrl:D,isDraftMode:N,prerenderManifest:b,routerServerContext:I,isOnDemandRevalidate:E,revalidateOnlyGenerated:T,resolvedPathname:U,clientReferenceManifest:M,serverActionsManifest:C}=v,P=(0,o.normalizeAppPath)(y),j=!!(b.dynamicRoutes[P]||b.routes[U]),O=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,D,!1):t.end("This page could not be found"),null);if(j&&!N){let e=!!b.routes[U],t=b.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await O();throw new h.NoFallbackError}}let _=null;!j||$.isDev||N||(_="/index"===(_=U)?"/":_);let k=!0===$.isDev||!j,F=j&&!k;C&&M&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:M,serverActionsManifest:C});let q=e.method||"GET",H=(0,n.getTracer)(),L=H.getActiveScopeSpan(),K=!!(null==I?void 0:I.isWrappedByNextServer),B=!!(0,i.getRequestMeta)(e,"minimalMode"),z=(0,i.getRequestMeta)(e,"incrementalCache")||await $.getIncrementalCache(e,x,b,B);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let W={params:R,previewProps:b.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:k,incrementalCache:z,cacheLifeProfiles:x.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>$.onRequestError(e,t,r,i,I)},sharedContext:{buildId:A,deploymentId:S}},G=new u.NodeNextRequest(e),J=new u.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let i,s=async e=>$.handle(V,W).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")!==l.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=`${q} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",r),i.updateName(t))}else e.updateName(`${q} ${y}`)}),o=async i=>{var n,o;let u=async({previousCacheEntry:a})=>{try{if(!B&&E&&T&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await s(i);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let u=W.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(G,J,n,W.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(n.headers);u&&(t[g.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,r=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await $.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:E})},!1,I),t}},d=await $.handleResponse({req:e,nextConfig:x,cacheKey:_,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:T,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:B});if(!j)return null;if((null==d||null==(n=d.value)?void 0:n.kind)!==w.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});B||t.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return B&&j||l.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,f.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(G,J,new Response(d.value.body,{headers:l,status:d.value.status||200})),null};K&&L?await o(L):(i=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(l.BaseServerSpan.handleRequest,{spanName:`${q} ${y}`,kind:n.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof h.NoFallbackError||await $.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:E})},!1,I),j)throw t;return await (0,p.sendResponse)(G,J,new Response(null,{status:500})),null}}e.s(["handler",0,K,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:q,workUnitAsyncStorage:H})},"routeModule",0,$,"serverHooks",0,L,"workAsyncStorage",0,q,"workUnitAsyncStorage",0,H],889271)},627270,e=>{e.v(e=>Promise.resolve().then(()=>e(612069)))},77149,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__03264vc._.js","server/chunks/[root-of-the-server]__1ynt2jc._.js"].map(t=>e.l(t))).then(()=>t(292483)))},195059,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0748x7h._.js"].map(t=>e.l(t))).then(()=>t(148089)))},184904,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__01al2n0._.js"].map(t=>e.l(t))).then(()=>t(46465)))},742957,e=>{e.v(e=>Promise.resolve().then(()=>e(839554)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__064gb96._.js.map
|