@fugood/buttress-server-poc 2.23.0-beta.6 → 2.23.0-beta.7
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/lib/index.js +1 -1
- package/package.json +2 -2
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as e}from"node:module";import*as t from"@huggingface/gguf";import*as r from"@fugood/llama.node";import*as n from"@trpc/server";import*as o from"zod";var a,i,s,l,c,u,d={101:(n,o,a)=>{a.r(o),a.d(o,{finalizeGenerator:()=>he,getCapabilities:()=>ve,getModelIdentifier:()=>ge,ggmlLlm:()=>be,startGenerator:()=>ye});var i=a(760),s=a(161),l=a(455);const c=e(import.meta.url)("node:crypto");const u=(e=>{var t={};return a.d(t,e),t})({gguf:()=>t.gguf});const d=(e=>{var t={};return a.d(t,e),t})({getBackendDevicesInfo:()=>r.getBackendDevicesInfo,isLibVariantAvailable:()=>r.isLibVariantAvailable,loadModel:()=>r.loadModel}),p=(e,t,r)=>Math.min(Math.max(e,t),r),f=e=>e?40:0,m=(e=0)=>{if(!e)return 0;return p(e/12884901888*20,0,20)},y=(e=0)=>{if(!e)return 0;return p(e/34359738368*10,0,10)},h=e=>e?10:0,v=(e="default",t=null)=>{const r=String(e).toLowerCase();if(!r)return 0;if(r.includes("cuda"))return 20;if(r.includes("vulkan"))return 10;if(r.includes("default")){return"darwin"===t||"ios"===t?15:5}return 0},b=({platform:e,variant:t,hasGpu:r,gpuUsableBytes:n=0,cpuUsableBytes:o=0,ok:a=!0}={})=>{if(!a)return 0;const i=f(r)+v(t,e)+m(n),s=y(o),l=h(a);return Math.min(100,Math.round(i+s+l))},g=["cuda","vulkan","default"],_=e=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[],w=e=>e&&String(e).trim().toLowerCase()||null,x=(e={})=>{const t=String(e.type||e.deviceType||e.kind||"").toLowerCase();return!!t.includes("gpu")||(!!t.includes("cuda")||(!!t.includes("metal")||!!t.includes("vulkan")))},E=({platform:e,totalMemoryInBytes:t,variant:r,devices:n,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:i,error:s})=>{const l=(e=>Array.isArray(e)?e.map((e=>({...e}))):[])(n),c=l.some(x),u=l.filter((e=>x(e)&&Number.isFinite(Number(e.maxMemorySize)))).reduce(((e,t)=>Math.max(e,Number(t.maxMemorySize)||0)),0),d=t,p=c?Math.floor(u*o):0,g=d?Math.floor(d*a):0,_={platform:e,variant:r,hasGpu:c,gpuUsableBytes:p,cpuUsableBytes:g,ok:i},w=b(_),E=i?(({platform:e,variant:t,hasGpu:r,gpuUsableBytes:n=0,cpuUsableBytes:o=0,ok:a=!0}={})=>({gpuPresence:f(r),variant:v(t,e),gpuMemory:m(n),cpuMemory:y(o),availability:h(a)}))(_):null;return{platform:e,ok:i,variant:r,hasGpu:c,devices:l,gpuTotalBytes:u,gpuUsableBytes:p,cpuTotalBytes:d,cpuUsableBytes:g,score:w,breakdown:E,error:s,timestamp:(new Date).toISOString()}},S=({device:e,modelBytes:t=0,kvCacheBytes:r=0}={})=>{if(!e)return{totalRequiredBytes:t+r,fitsInGpu:!1,fitsInCpu:!1,limiting:"unknown-device"};const n=Math.max(0,Number(t)||0)+Math.max(0,Number(r)||0),o=e.hasGpu&&n>0&&n<=e.gpuUsableBytes,a=n>0&&n<=e.cpuUsableBytes;let i="ok";return!o&&e.hasGpu&&(i="gpu-memory"),a||(i=o?"cpu-memory":"insufficient-memory"),{totalRequiredBytes:n,fitsInGpu:o,fitsInCpu:a,limiting:i}},k="ggml-llm",O=new Map([[k,async({platform:e,variant:t=null,preferVariants:r=[],variantPreference:n=[],gpuMemoryFraction:o=.85,cpuMemoryFraction:a=.5,includeBreakdown:i=!1,totalMemoryInBytes:s,modelBytes:l=null,kvCacheBytes:c=null,limitedKvCacheBytes:u=null,dependencies:d={}}={})=>{const{getBackendDevicesInfo:p,isLibVariantAvailable:f}=d;if("function"!=typeof p||"function"!=typeof f)throw new TypeError("GGML capability detection requires getBackendDevicesInfo and isLibVariantAvailable functions");const m=(({variant:e,preferVariants:t=[],variantPreference:r=[]}={})=>{const n=[];e&&n.push(e),n.push(..._(t)),n.push(..._(r)),n.push(...g);const o=n.map(w).filter(Boolean);return Array.from(new Set(o))})({variant:t,preferVariants:r,variantPreference:n}),y=[];for(const t of m)try{if(!await f(t))throw new Error(`Variant ${t} not available on this platform`);const r=await p(t);y.push(E({platform:e,totalMemoryInBytes:s,variant:t,devices:r,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!0}))}catch(r){const n=r instanceof Error?r.message:String(r);y.push(E({platform:e,totalMemoryInBytes:s,variant:t,devices:[],gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!1,error:n}))}const h=y.filter((e=>e.ok)),v=h.find((e=>e.hasGpu))||h.find((e=>"default"===e.variant))||h[0]||null,b={ok:Boolean(v),selected:v?{...v,breakdown:i?v.breakdown:void 0}:null,attempts:y};if(!i&&b.selected&&delete b.selected.breakdown,!b||!l&&!c)return b;const x=e=>{if(!e)return e;const t=S({device:e,modelBytes:l||0,kvCacheBytes:c||0});let r=null;return null!=u&&u!==c&&(r=S({device:e,modelBytes:l||0,kvCacheBytes:u})),{...e,fit:t,...r&&{limitedFit:r}}};return b.selected=x(b.selected),b.attempts=Array.isArray(b.attempts)?b.attempts.map(x):b.attempts,b}]]),T=async({platform:e,totalMemoryInBytes:t,backend:r=k,dependencies:n,...o}={})=>{const a=O.get(r);if(!a)throw new Error(`No capability detector registered for backend "${r}"`);return await a({...o,dependencies:n,totalMemoryInBytes:t,platform:e})},N={f16:2,f32:4,q8_0:1,q6_k:.75,q5_k:.625,q5_k_m:.625,q5_k_s:.625,q5_1:.625,q5_0:.625,q4_k:.5,q4_k_m:.5,q4_k_s:.5,q4_1:.5,q4_0:.5,iq4_nl:.5},M=e=>{const t=e?String(e).toLowerCase():"f16";return N[t]||N.f16},C=(e,t,r,n,o,a={})=>{if(!(e&&t&&r&&n&&o))return 0;const i=M(a.k),s=M(a.v),l=Number(t)*Number(r)*(Number(n)*i+Number(o)*s);return Math.round(Number(e)*l)},P=e(import.meta.url)("node:stream/web");var R=a.t(P,2);const A="undefined"!=typeof globalThis&&globalThis.ReadableStream&&globalThis.WritableStream?{ReadableStream:globalThis.ReadableStream,WritableStream:globalThis.WritableStream}:R,{ReadableStream:B,WritableStream:I}=A,j=new TextEncoder,q=(e={},t={})=>(Object.entries(t||{}).forEach((([t,r])=>{r&&"object"==typeof r&&!Array.isArray(r)?(e[t]&&"object"==typeof e[t]||(e[t]={}),q(e[t],r)):e[t]=r})),e),U="https://huggingface.co",$="https://huggingface.co/api",D=i.join(s.homedir(),".buttress","models"),z=["mxfp4","q8_0","q6_k","q6","q5_k_m","q5_k_s","q5_k","q5_1","q5_0","q4_k_m","q4_k_s","q4_k","q4_1","q4_0","q3","q2"],L=.5,G={backend:{type:"ggml-llm",variant:null,variant_preference:["cuda","vulkan","default"],gpu_memory_fraction:.85,cpu_memory_fraction:L},model:{repo_id:null,revision:"main",filename:null,url:null,quantization:null,preferred_quantizations:[],n_ctx:null,n_gpu_layers:"auto",n_parallel:4,n_batch:2048,flash_attn:"auto",cache_k_type:"f16",cache_v_type:"f16",ctx_shift:!1,kv_unified:!1,swa_full:!1,allow_local_file:!1,local_path:null,api_base:$,base_url:U},runtime:{cache_dir:D,prefer_variants:[],huggingface_token:process.env.HUGGINGFACE_TOKEN||null,http_headers:{}}},F=(e,t=[])=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[...t],J=e=>{if(!e)return null;const t=String(e).toLowerCase();return["cuda","vulkan","default"].includes(t)?t:null},V=(e={})=>{const t=JSON.parse(JSON.stringify(G));if(q(t,e),t.backend.variant=J(t.backend.variant),t.backend.variant_preference=Array.from(new Set(F(t.backend.variant_preference).map(J).filter(Boolean))),0===t.backend.variant_preference.length&&(t.backend.variant_preference=["cuda","vulkan","default"]),t.runtime.prefer_variants=Array.from(new Set(F(t.runtime.prefer_variants).map(J).filter(Boolean))),t.model.preferred_quantizations=Array.from(new Set(F(t.model.preferred_quantizations||t.model.quantizations).map((e=>e?String(e).toLowerCase():null)).filter(Boolean))),t.model.quantization){const e=String(t.model.quantization).toLowerCase();t.model.preferred_quantizations.includes(e)||t.model.preferred_quantizations.unshift(e)}return t.model.n_parallel=Math.max(1,Number(t.model.n_parallel)||4),t.model.n_batch=Math.max(1,Number(t.model.n_batch)||512),t.model.base_url=t.model.base_url||U,t.model.api_base=t.model.api_base||$,t.runtime.cache_dir=t.runtime.cache_dir?i.resolve(t.runtime.cache_dir):D,t},Y=e=>{const t=e.toLowerCase();return z.find((e=>t.includes(e)))||null},H=new Map,Q=new Map,W=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const r=await fetch(e,t);if(!r.ok){const t=await r.text().catch((()=>""));throw new Error(`Failed to fetch ${e}: ${r.status} ${r.statusText} ${t}`.trim())}return r.json()},K=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const r=await fetch(e,{...t,method:"HEAD"});if(!r.ok)throw new Error(`Failed to fetch headers for ${e}: ${r.status} ${r.statusText}`);return r},Z=async(e,t)=>{const r=JSON.stringify({url:e,headers:t});if(Q.has(r))return Q.get(r);const n=!/^https?:/i.test(e),{metadata:o}=await(0,u.gguf)(e,{fetch,additionalFetchHeaders:t,allowLocalFile:n});return Q.set(r,o),o},X=async(e,t)=>{try{const r=await(0,l.stat)(e);return!t||r.size===t}catch(e){return!1}},ee=async(e,t,r,n,o)=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");await(async e=>{await(0,l.mkdir)(e,{recursive:!0})})(i.dirname(r));const a=await fetch(e,{headers:t});if(!a.ok||!a.body)throw new Error(`Failed to download ${e}: ${a.status} ${a.statusText}`);const s=await(0,l.open)(r,"w"),c=Number(a.headers.get("content-length"))||n||0;let u=0,d=.05;try{await a.body.pipeTo(new I({async write(e){if(await s.write(e),u+=e.byteLength,"function"==typeof o&&c>0){const e=Math.min(1,u/c);for(;e>=d;)o(d),d+=.05}},async close(){await s.close(),"function"==typeof o&&o(1)},async abort(e){throw await s.close().catch((()=>{})),await(0,l.unlink)(r).catch((()=>{})),e}}))}catch(e){throw await s.close().catch((()=>{})),await(0,l.unlink)(r).catch((()=>{})),e}if(n){const e=await(0,l.stat)(r);if(e.size!==n)throw await(0,l.unlink)(r).catch((()=>{})),new Error(`Downloaded file size mismatch, expected ${n} got ${e.size}`)}},te=async e=>{const t=e.model.repo_id||e.model.repository||e.model.model;if(!t)throw new Error("`model.repo_id` is required in Buttress backend config");const r=e.model.revision||"main",n=JSON.stringify({repoId:t,revision:r,filename:e.model.filename,url:e.model.url,quantization:e.model.quantization,preferred_quantizations:e.model.preferred_quantizations});if(H.has(n))return H.get(n);const o={...e.runtime.http_headers||{}};if(e.runtime.huggingface_token&&(o.Authorization=`Bearer ${e.runtime.huggingface_token}`),e.model.url){const a=await K(e.model.url,{headers:o}),i=Number(a.headers.get("content-length"))||null,s={repoId:t,revision:r,filename:e.model.filename||e.model.url.split("/").pop(),url:e.model.url,size:i,headers:o};return H.set(n,s),s}let{filename:a}=e.model,i=e.model.quantization&&String(e.model.quantization).toLowerCase();const s=await W(`${e.model.api_base}/models/${t}?revision=${r}&blobs=true`,{headers:o}),l=(s?.siblings||s?.files||[]).map((e=>e.rfilename||e.path||e.filename)).filter((e=>"string"==typeof e&&e.endsWith(".gguf")));if(0===l.length)throw new Error(`No GGUF artifacts found in repo ${t}`);const c=e.model.preferred_quantizations.length>0?e.model.preferred_quantizations:z;if(a)i||(i=Y(a));else{const e=(()=>{const e=c.find((e=>l.find((t=>t.toLowerCase().includes(e)))));if(e)return{filename:l.find((t=>t.toLowerCase().includes(e))),quantization:e};return null})()||{filename:l[0],quantization:null},{filename:t,quantization:r}=e;a=t,i=r||Y(a)}const u=`${e.model.base_url.replace(/\/+$/,"")}/${t}/resolve/${r}/${a}`,d=/-(\d{5})-of-(\d{5})\.gguf$/,p=a.match(d);let f=null;if(p){const[,,n]=p,i=await W(`${e.model.api_base}/models/${t}?revision=${r}&blobs=true`,{headers:o}),s=i?.siblings||i?.files||[],l=Number(n);f=0;for(let e=1;e<=l;e+=1){const t=String(e).padStart(5,"0"),r=a.replace(d,`-${t}-of-${n}.gguf`),o=s.find((e=>(e.rfilename||e.path||e.filename)===r)),i=Number(o?.size);Number.isFinite(i)&&i>0&&(f+=i)}}else{const e=await K(u,{headers:o});f=Number(e.headers.get("content-length"))||null}const m={repoId:t,revision:r,filename:a,url:u,size:f,quantization:i,headers:o,isSplit:Boolean(p),splitCount:p?Number(p[2]):0};return H.set(n,m),m},re=async(e,{modelBytes:t=null,kvCacheBytes:r=null}={})=>{const n=(e=>{const t=[];return e.backend.variant&&t.push(e.backend.variant),e.runtime.prefer_variants.length>0&&t.push(...e.runtime.prefer_variants),t.push(...e.backend.variant_preference),t.push("default"),Array.from(new Set(t.map(J).filter(Boolean)))})(e),[o,...a]=n,i=null!=e.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.gpu_memory_fraction))):G.backend.gpu_memory_fraction||1,l=null!=e.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):L,c=await T({platform:process.platform,totalMemoryInBytes:s.totalmem(),backend:"ggml-llm",variant:o||null,preferVariants:a,gpuMemoryFraction:i,cpuMemoryFraction:l,dependencies:{getBackendDevicesInfo:d.getBackendDevicesInfo,isLibVariantAvailable:d.isLibVariantAvailable},modelBytes:t,kvCacheBytes:r}),u=e=>({...e,devices:Array.isArray(e.devices)?e.devices:[],ok:e.ok,hasGpu:Boolean(e.hasGpu),totalMemory:e.gpuTotalBytes||e.totalMemory||0,error:e.ok?null:new Error(e.error||`Variant ${e.variant} not available on this platform`)});if(!c.ok||!c.selected){const e=(c.attempts||[]).map((e=>`${e.variant}: ${e.error||"unknown error"}`)).join("; ");throw new Error(`Unable to initialize any backend variant (${n.join(", ")}). Errors: ${e}`)}const p=(c.attempts||[]).map(u);return{selected:u(c.selected),attempts:p}},ne=({elementSize:e,availableMemory:t,modelBytes:r,nCtx:n})=>{let o=null;if(e>0&&t>r){const n=t-r,a=Math.floor(n/e);a>0&&(o=a)}return o&&o<n?o:n},oe=async e=>{const t=await te(e),r=await Z(t.url,t.headers),n=r["general.architecture"],o=r[`${n}.context_length`]||r["llama.context_length"],a=r[`${n}.block_count`]||r["llama.block_count"],l=r[`${n}.embedding_length`]||r["llama.embedding_length"],c=r[`${n}.attention.head_count`]||r["llama.attention.head_count"],u=r[`${n}.attention.head_count_kv`]||r["llama.attention.head_count_kv"]||c,d=r[`${n}.attention.key_length`]||r["llama.attention.key_length"],p=r[`${n}.attention.value_length`]||r["llama.attention.value_length"],f=Number.isFinite(Number(a))?Number(a):0,m=Number.isFinite(Number(l))?Number(l):0,y=Number.isFinite(Number(c))?Number(c):0,h=Number.isFinite(Number(u))?Number(u):y,v=y>0&&m>0?m/y:128,b=Number.isFinite(Number(d))?Number(d):v,g=Number.isFinite(Number(p))?Number(p):v,_=r["general.quantization_version"]||null,w=r["general.file_type"]||null,x=e.model.n_ctx?Number(e.model.n_ctx):null;let E=x||o||4096;const S=[],k=[];let O=!0;if(x&&o&&x>o){O=!1;const e=`Requested context length (${x}) exceeds model training context (${o})`;S.push(e),k.push(e),E=o}x&&!o&&S.push("Model metadata missing training context length, using requested value");const T={k:e.model.cache_k_type,v:e.model.cache_v_type},N=t.size>0?t.size:0,P=f&&h&&b&&g?f*h*(b*M(T.k)+g*M(T.v)):0,R=C(f,E,h,b,g,T),A=await re(e,{modelBytes:N,kvCacheBytes:R}),B=A.selected.totalMemory||0,I=B*(e.backend.gpu_memory_fraction||1),j=null!=e.backend.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):L,q=Math.max(0,s.totalmem()*j),U=A.selected.hasGpu?I:q,$=ne({elementSize:P,availableMemory:U,modelBytes:N,nCtx:E});if(!x&&$){const e=o?Math.min($,o):$,t=Math.max(32,e);t<E&&S.push(`Context length capped to ${t} by memory limits`),E=t}E>$&&(E=$);const D=Math.floor($);console.log(`[buttress] Memory-limited context length: ${D}`);const z=C(f,E,h,b,g,T),G=N+z,F=f?N/(f+1):N;let J,V=0;A.selected.hasGpu&&F>0&&(V=Math.min(f+1,Math.max(0,Math.floor(I/F)))),console.log(`[buttress] Auto GPU layer capacity (${A.selected.variant}): ${V}/${f+1}`),J="auto"===e.model.n_gpu_layers||null==e.model.n_gpu_layers?V:Math.max(0,Math.min(Number(e.model.n_gpu_layers)||0,f+1));const Y=(()=>{const t=e.model.flash_attn&&String(e.model.flash_attn).toLowerCase();return"on"===t||"off"===t?t:A.selected.hasGpu?"auto":"off"})(),H=e.runtime.cache_dir,Q=((e,t)=>{if(e.model.local_path)return i.resolve(e.model.local_path);const r=t.repoId.split("/"),n=i.join(e.runtime.cache_dir,...r,t.revision);return i.join(n,t.filename)})(e,t),W=await X(Q,t.size),K={ok:O,backend:"ggml-llm",warnings:S,errors:k,model:{repoId:t.repoId,revision:t.revision,filename:t.filename,quantization:t.quantization,url:t.url,sizeBytes:t.size,metadata:{architecture:n,n_ctx_train:o,n_layer:f,n_embd:m,quantization_version:_,file_type:w}},runtime:{variant:A.selected.variant,n_ctx:E,requested_ctx:x,n_gpu_layers:J,n_parallel:e.model.n_parallel,n_batch:e.model.n_batch,flash_attn_type:Y,cache_type_k:T.k,cache_type_v:T.v,ctx_shift:e.model.ctx_shift,kv_unified:e.model.kv_unified,swa_full:e.model.swa_full,estimated_max_n_ctx:D,auto_gpu_layers:V},resources:{modelBytes:N,kvCacheBytes:z,totalEstimatedBytes:G,gpuCapacityBytes:B,gpuUsableBytes:I,cpuUsableBytes:q,fit:A.selected.fit},devices:{selected:A.selected,attempts:A.attempts},download:{cacheDir:H,localPath:Q,exists:W},timestamp:(new Date).toISOString()};return{config:e,info:K,artifact:t,metadata:{arch:n,nCtxTrain:o,nLayer:f,nEmbd:m},devices:A,cacheTypes:T,localPath:Q,localExists:W}},ae=(e,t)=>`event: ${e}\ndata: ${null==t?"":JSON.stringify(t)}\n\n`,ie=(e,t)=>{let r;return new B({async start(n){try{const o=await e.parallel.completion(t,((e,t)=>{t&&n.enqueue(j.encode(ae("token",{requestId:e,...t})))})),{requestId:a}=o;r=o.stop;const i=await o.promise;console.log("[Completion] Result:",i),n.enqueue(j.encode(ae("result",{requestId:a,...i}))),n.close()}catch(e){n.enqueue(j.encode(ae("error",{message:e?.message||String(e)}))),n.error(e)}},cancel(){r&&r()}})},se=e=>{const t={model:e.plan.localPath,runtime:e.plan.info.runtime};return(0,c.createHash)("sha256").update(JSON.stringify(t)).digest("hex").slice(0,24)},le=async(e,t)=>{const r=se(e);let n=e.contexts.get(r);if(n)return n.refCount+=1,await n.ready,"function"==typeof t&&t(1),n;n={key:r,refCount:1},n.ready=(async()=>{const r=await(async(e,t,r)=>{const{config:n,localPath:o,artifact:a}=e;if(e.localExists&&!t.has(o))return e.info.download.exists=!0,"function"==typeof r&&r(.5),o;if(n.model.local_path&&!n.model.allow_local_file)throw new Error("Local model path provided but `model.allow_local_file` is not enabled");const s=o;t.has(s)||t.set(s,(async()=>{if(a.isSplit&&a.splitCount>0){const e=/-(\d{5})-of-(\d{5})\.gguf$/,t=i.dirname(o),s=a.splitCount;let l=0;for(let o=1;o<=s;o+=1){const c=String(o).padStart(5,"0"),u=a.filename.replace(e,`-${c}-of-${String(s).padStart(5,"0")}.gguf`),d=`${n.model.base_url.replace(/\/+$/,"")}/${a.repoId}/resolve/${a.revision}/${u}`,p=i.join(t,u);await X(p)||await ee(d,a.headers,p,null,(e=>{if(e>=0&&Number.isFinite(e)){const t=(l+e)/s,n=Math.round(100*t);console.log(`Downloading model splits: ${Math.min(100,n)}%`),"function"==typeof r&&r(.5*t)}})),l+=1}}else await ee(a.url,a.headers,o,a.size,(e=>{if(e>=0&&Number.isFinite(e)){const t=Math.round(100*e);console.log(`Downloading model: ${Math.min(100,t)}%`),"function"==typeof r&&r(.5*e)}}));e.localExists=!0,e.info.download.exists=!0})());try{await t.get(s)}finally{t.delete(s)}return o})(e.plan,e.downloads,t);"function"==typeof t&&t(.5);const o={model:r,n_ctx:e.plan.info.runtime.n_ctx,n_gpu_layers:e.plan.info.runtime.n_gpu_layers,n_parallel:e.plan.info.runtime.n_parallel,n_batch:e.plan.info.runtime.n_batch,flash_attn_type:e.plan.info.runtime.flash_attn_type,ctx_shift:e.plan.info.runtime.ctx_shift,kv_unified:e.plan.info.runtime.kv_unified,swa_full:e.plan.info.runtime.swa_full,lib_variant:e.plan.info.runtime.variant};let a;"off"!==e.plan.info.runtime.flash_attn_type&&(o.cache_type_k=e.plan.info.runtime.cache_type_k,o.cache_type_v=e.plan.info.runtime.cache_type_v),console.log("[Context] Load Options:",o);try{if(a=await(0,d.loadModel)(o,(e=>{"function"==typeof t&&(t(.5+.25*e),e%5==0&&console.log("[Context] Load Model Progress:",e))})),e.plan.info.runtime.n_parallel){if(!await a.parallel.enable({n_parallel:e.plan.info.runtime.n_parallel,n_batch:e.plan.info.runtime.n_batch}))throw new Error("Failed to enable parallel decoding mode for context")}return"function"==typeof t&&t(1),n.context=a,n.modelInfo=a.getModelInfo(),n}catch(e){if(a)try{a.release()}catch(e){}throw e}})(),e.contexts.set(r,n);try{return await n.ready,n}catch(t){throw e.contexts.delete(r),t}},ce=async(e,t,r=!1)=>{if(r)t.refCount=0;else if(t.refCount=Math.max(0,t.refCount-1),t.refCount>0)return!1;e.contexts.delete(t.key);try{t.context?.parallel?.disable?.()}catch(e){}return await(t.context?.release?.()),!0};const ue=e=>{const t=V(e);return t.model.repo_id||t.model.repository||t.model.model||null};const de=e=>e?"number"==typeof e.score&&Number.isFinite(e.score)?Number(e.score):b(e):0;async function pe(e=null,t={}){const{threshold:r=1.1,includeBreakdown:n=!1,config:o,...a}=t;let i=null,l=null,c=null,u=null,p=null,f=null;if(o)try{const{modelBytes:e,kvCacheBytes:t,limitedKvCacheBytes:r,memoryLimitedCtx:n,kvInfo:a,quantization:d}=await async function(e){const t=V(e),r=await te(t),n=await Z(r.url,r.headers),o=n["general.architecture"],a=n[`${o}.context_length`]||n["llama.context_length"],i=n[`${o}.block_count`]||n["llama.block_count"],l=n[`${o}.embedding_length`]||n["llama.embedding_length"],c=n[`${o}.attention.head_count`]||n["llama.attention.head_count"],u=n[`${o}.attention.head_count_kv`]||n["llama.attention.head_count_kv"]||c,d=n[`${o}.attention.key_length`]||n["llama.attention.key_length"],p=n[`${o}.attention.value_length`]||n["llama.attention.value_length"],f=Number.isFinite(Number(i))?Number(i):0,m=Number.isFinite(Number(l))?Number(l):0,y=Number.isFinite(Number(c))?Number(c):0,h=Number.isFinite(Number(u))?Number(u):y,v=y>0&&m>0?m/y:128,b=Number.isFinite(Number(d))?Number(d):v,g=Number.isFinite(Number(p))?Number(p):v,_=(t.model.n_ctx?Number(t.model.n_ctx):null)||a||4096,w={k:t.model.cache_k_type,v:t.model.cache_v_type},x=r.size>0?r.size:0,E=f&&h&&b&&g?f*h*(b*M(w.k)+g*M(w.v)):0,S=null!=t.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.gpu_memory_fraction))):G.backend.gpu_memory_fraction||1,k=null!=t.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.cpu_memory_fraction))):L,O=C(f,_,h,b,g,w),T=await re(t,{modelBytes:x,kvCacheBytes:O}),N=(T.selected.totalMemory||0)*S,P=Math.max(0,s.totalmem()*k),R=T.selected.hasGpu?N:P,A=ne({elementSize:E,availableMemory:R,modelBytes:x,nCtx:_}),B=C(f,_,h,b,g,w),I=C(f,A,h,b,g,w),j=n["general.quantization_version"]||null;return{kvInfo:{nLayerCount:f,nEmbdCount:m,nCtxTrain:a},modelBytes:x,kvCacheBytes:B,limitedKvCacheBytes:I,memoryLimitedCtx:A,quantization:{fileType:n["general.file_type"]||null,version:j}}}(o);i=e,l=t,c=r,u=n,p=a,f=d}catch(e){}const m=null!=o?.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.gpu_memory_fraction))):void 0,y=null!=o?.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.cpu_memory_fraction))):void 0,h=await T({...a,platform:process.platform,totalMemoryInBytes:s.totalmem(),backend:"ggml-llm",includeBreakdown:n,gpuMemoryFraction:m,cpuMemoryFraction:y,dependencies:{getBackendDevicesInfo:d.getBackendDevicesInfo,isLibVariantAvailable:d.isLibVariantAvailable},modelBytes:i,kvCacheBytes:l,limitedKvCacheBytes:c}),v=h.selected,b=de(v);v.modelBytes=i||null,v.kvCacheBytes=l||null,v.memoryLimitedCtx=u||null,v.limitedKvCacheBytes=c||null,v.kvInfo=p||null,v.quantization=f||null;let g=null,_=null;if(e){const t=de(e);_={...e,score:t};let n="buttress",o="buttress-higher-score";if(h.ok)if(t||0===t){const e=_.fit,a=_.limitedFit,i=v?.fit,s=v?.limitedFit,l=e?.fitsInGpu||e?.fitsInCpu||a?.fitsInGpu||a?.fitsInCpu,c=i?.fitsInGpu||i?.fitsInCpu||s?.fitsInGpu||s?.fitsInCpu;l&&!c?(n="local",o="client-fits-in-memory"):c&&!l?(n="buttress",o="buttress-fits-in-memory"):t>b*r?(n="local",o="client-better"):b>t*r?(n="buttress",o="buttress-better"):(n="either",o="comparable-scores")}else n="buttress",o="missing-client-score";else n="local",o="buttress-unavailable";g={buttressScore:b,clientScore:t,threshold:r,recommendation:n,reason:o}}h.ok||g||(g={buttressScore:b,clientScore:e?.score??null,threshold:r,recommendation:"local",reason:"buttress-unavailable"});let w=null;return o&&(w={repoId:o.model?.repo_id||null,quantization:o.model?.quantization||null,nCtx:o.model?.n_ctx||null,cacheKType:o.model?.cache_k_type||"f16",cacheVType:o.model?.cache_v_type||"f16"}),{type:"ggml-llm",timestamp:(new Date).toISOString(),buttress:h,client:_,comparison:g,modelConfig:w}}const fe=new Map,me=e=>{const t=(e=>{const t=fe.get(e);if(!t)throw new Error(`Unknown generator id "${e}"`);return t})(e);if("ggml-llm"!==t.type)throw new Error(`Generator "${e}" does not support GGML LLM backend`);return t.instance};async function ye(e,t){if("ggml-llm"!==e)throw new Error("Currently only GGML LLM backend is supported");const r=ue(t);if(!r)throw new Error("Buttress generator config missing repo identifier");const n=`${e}:${r}`,o=fe.get(n);if(o)return o.refCount+=1,{id:o.id,info:o.instance.info};const a=await async function(e,t){const r=await oe(V(t)),n={id:e,type:"ggml-llm",config:t,plan:r,info:r.info,contexts:new Map,downloads:new Map};return{id:e,type:"ggml-llm",info:r.info,initContext:async(e={})=>{const{onProgress:t}=e,r=await le(n,t);return{modelInfo:r.modelInfo?{...r.modelInfo}:null,runtime:{...n.plan.info.runtime},download:{...n.plan.info.download}}},completion:async(e={})=>{const{options:t={}}=e,r=se(n),o=n.contexts.get(r);if(!o)throw new Error(`Context "${r}" not initialized`);return await o.ready,ie(o.context,t)},tokenize:async(e={})=>{const{text:t="",params:r={}}=e,o=se(n),a=n.contexts.get(o);if(!a)throw new Error(`Context "${o}" not initialized`);await a.ready;const i=await a.context.tokenize(t,r);if(!i)return{tokens:[]};const s=Array.from(i.tokens??[]).map((e=>Number(e)));return{...i,tokens:s}},detokenize:async(e={})=>{const{tokens:t=[]}=e,r=se(n),o=n.contexts.get(r);if(!o)throw new Error(`Context "${r}" not initialized`);await o.ready;const a=t.map((e=>Number(e)));return o.context.detokenize(a)},applyChatTemplate:async(e={})=>{const{messages:t=[],template:r,params:o}=e,a=se(n),i=n.contexts.get(a);if(!i)throw new Error(`Context "${a}" not initialized`);return await i.ready,i.context.getFormattedChat(t,r,o)},releaseContext:async(e={})=>{const t=se(n),r=n.contexts.get(t);return!!r&&ce(n,r,Boolean(e.force))},finalize:async()=>{const e=Array.from(n.contexts.values()).map((e=>ce(n,e,!0)));await Promise.allSettled(e)}}}(n,t),i={id:n,type:a.type,instance:a,refCount:1};return fe.set(n,i),{id:n,info:a.info}}async function he(e){const t=fe.get(e);return!!t&&(t.refCount-=1,t.refCount<=0&&(await t.instance.finalize(),fe.delete(e)),!0)}async function ve(e,t=null,r={}){if("ggml-llm"===e)return pe(t,r);throw new Error(`Unknown backend type: ${e}`)}const be={initContext:async(e,t)=>me(e).initContext(t),completion:async(e,t)=>me(e).completion(t),tokenize:async(e,t)=>me(e).tokenize(t),detokenize:async(e,t)=>me(e).detokenize(t),applyChatTemplate:async(e,t)=>me(e).applyChatTemplate(t),releaseContext:async(e,t)=>me(e).releaseContext(t)};function ge(e,t){return"ggml-llm"===e?ue(t):null}},136:t=>{t.exports=e(import.meta.url)("node:url")},161:t=>{t.exports=e(import.meta.url)("node:os")},173:(e,t,r)=>{r.a(e,(async(e,n)=>{try{r.d(t,{N1:()=>u.N,UD:()=>k,Ux:()=>c.Ux,YO:()=>c.YO,Zy:()=>c.Zy,aE:()=>E,bR:()=>c.bR,sA:()=>S});var o=r(333),a=r(249),i=r(427),s=r(971),l=r(101),c=r(508),u=r(534),d=e([c]);c=(d.then?(await d)():d)[0];const p=new TextDecoder,f=o.initTRPC.context().create(),m=s.z.record(s.z.any()).optional(),y=s.z.object({id:s.z.string()}),h=s.z.object({id:s.z.string(),property:s.z.any().optional()}),v=s.z.object({type:s.z.string(),config:m}),b=s.z.object({type:s.z.string().optional().default("ggml-llm"),config:m,currentClientCapabilities:s.z.record(s.z.any()).optional(),options:s.z.record(s.z.any()).optional()}).optional(),g=(e,t)=>{const r=e.getReader();let n=!0;return(async()=>{try{for(;n;){const{value:e,done:o}=await r.read();if(o||!n)break;if(e){const r=p.decode(e,{stream:!0});t.next(r)}}t.complete()}catch(e){t.error(e)}finally{r.cancel().catch((()=>{}))}})(),()=>{n=!1,r.cancel().catch((()=>{}))}},_=(e={},t={})=>{const r=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?r[e]=_(r[e]||{},t):r[e]=t})),r},w=e=>e&&"object"==typeof e?JSON.parse(JSON.stringify(e)):null,x=(e,t)=>{const r=w(e)||{},n=w(t)||{};return _(r,n)},E=(e=l,{defaultConfig:t}={})=>{const r=w(t)||{},n=Array.isArray(r.generators)?r.generators:[],{server:o,generators:a,...s}=r,c=e=>_(JSON.parse(JSON.stringify(s)),e||{}),u=(e,t)=>{if(n.length>0){const r=n.filter((t=>t?.type===e));if(r.length>0&&t){const e=r.find((e=>e.model?.repo_id===t));if(e)return c(e)}}return Object.keys(s).length>0?c({}):null};return f.router({getCapabilities:f.procedure.input(b).query((async({input:t})=>{console.log("[Server] Get Capabilities:",t);const r=t||{type:"ggml-llm"},{type:n="ggml-llm",config:o,currentClientCapabilities:a=null,options:i={}}=r,s=w(o),l=e.getModelIdentifier(n,s),c=u(n,l),d=x(c,o);if(0===Object.keys(d).length)throw new Error("Buttress server missing generator configuration");return d.backend=d.backend||{},d.backend.type||(d.backend.type=n),e.getCapabilities(n,a,{...i,config:d})})),startGenerator:f.procedure.input(v).mutation((async({input:t})=>{console.log("[Server] Start Generator:",t);const{type:r,config:n}=t,o=w(n),a=e.getModelIdentifier(r,o),i=u(r,a),s=x(i,n);if(0===Object.keys(s).length)throw new Error("Buttress server missing generator configuration");return s.backend=s.backend||{},s.backend.type||(s.backend.type=r),e.startGenerator(r,s)})),finalizeGenerator:f.procedure.input(y).mutation((async({input:t})=>(console.log("[Server] Finalize Generator:",t),e.finalizeGenerator(t.id)))),ggmlLlm:f.router({initContext:f.procedure.input(h).subscription((({input:t})=>(0,i.sH)((r=>{console.log("[Server] Init Context:",t);let n=!0;return(async()=>{try{const o={...t.property,onProgress:e=>{n&&r.next({progress:e})}};await new Promise((e=>setTimeout(e)));const a=await e.ggmlLlm.initContext(t.id,o);n&&(r.next({result:a}),r.complete())}catch(e){n&&r.error(e)}})(),()=>{n=!1}})))),completion:f.procedure.input(h).subscription((({input:t})=>(0,i.sH)((r=>{console.log("[Server] Completion:",t);let n=()=>{};return(async()=>{try{const o=await e.ggmlLlm.completion(t.id,t.property);if(!o)return void r.complete();n=g(o,r)}catch(e){r.error(e)}})(),()=>n()})))),tokenize:f.procedure.input(h).query((async({input:t})=>(console.log("[Server] Tokenize:",t),e.ggmlLlm.tokenize(t.id,t.property)))),detokenize:f.procedure.input(h).mutation((async({input:t})=>(console.log("[Server] Detokenize:",t),e.ggmlLlm.detokenize(t.id,t.property)))),applyChatTemplate:f.procedure.input(h).query((async({input:t})=>(console.log("[Server] Apply Chat Template:",t),e.ggmlLlm.applyChatTemplate(t.id,t.property)))),releaseContext:f.procedure.input(h).mutation((async({input:t})=>(console.log("[Server] Release Context:",t),e.ggmlLlm.releaseContext(t.id,t.property))))})})},S=({backend:e=l,router:t,createContext:r=(()=>({})),defaultConfig:n}={})=>{const o=t||E(e,{defaultConfig:n});return{server:(0,a.qv)({router:o,createContext:r,basePath:"/trpc/"}),router:o,backend:e}},k=async({port:e=2080,backend:t,router:r,createContext:n,defaultConfig:o}={})=>{const{server:a,router:i}=S({backend:t,router:r,createContext:n,defaultConfig:o});return await new Promise((t=>a.listen(e,t))),{server:a,router:i,port:e}};n()}catch(e){n(e)}}))},249:(t,r,n)=>{n.d(r,{qv:()=>xt});const o={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,BAD_GATEWAY:-32603,SERVICE_UNAVAILABLE:-32603,GATEWAY_TIMEOUT:-32603,UNAUTHORIZED:-32001,PAYMENT_REQUIRED:-32002,FORBIDDEN:-32003,NOT_FOUND:-32004,METHOD_NOT_SUPPORTED:-32005,TIMEOUT:-32008,CONFLICT:-32009,PRECONDITION_FAILED:-32012,PAYLOAD_TOO_LARGE:-32013,UNSUPPORTED_MEDIA_TYPE:-32015,UNPROCESSABLE_CONTENT:-32022,PRECONDITION_REQUIRED:-32028,TOO_MANY_REQUESTS:-32029,CLIENT_CLOSED_REQUEST:-32099},a={[-32700]:"PARSE_ERROR",[-32600]:"BAD_REQUEST",[-32603]:"INTERNAL_SERVER_ERROR",[-32001]:"UNAUTHORIZED",[-32002]:"PAYMENT_REQUIRED",[-32003]:"FORBIDDEN",[-32004]:"NOT_FOUND",[-32005]:"METHOD_NOT_SUPPORTED",[-32008]:"TIMEOUT",[-32009]:"CONFLICT",[-32012]:"PRECONDITION_FAILED",[-32013]:"PAYLOAD_TOO_LARGE",[-32015]:"UNSUPPORTED_MEDIA_TYPE",[-32022]:"UNPROCESSABLE_CONTENT",[-32028]:"PRECONDITION_REQUIRED",[-32029]:"TOO_MANY_REQUESTS",[-32099]:"CLIENT_CLOSED_REQUEST"};o.BAD_GATEWAY,o.SERVICE_UNAVAILABLE,o.GATEWAY_TIMEOUT,o.INTERNAL_SERVER_ERROR;function i(e){return!!e&&!Array.isArray(e)&&"object"==typeof e}const s="function"==typeof Symbol&&!!Symbol.asyncIterator;function l(e){return s&&i(e)&&Symbol.asyncIterator in e}const c=e=>e();function u(e){return e}var d=Object.create,p=Object.defineProperty,f=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyNames,y=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,v=(e,t)=>function(){return t||(0,e[m(e)[0]])((t={exports:{}}).exports,t),t.exports},b=(e,t,r)=>(r=null!=e?d(y(e)):{},((e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var o,a=m(t),i=0,s=a.length;i<s;i++)o=a[i],h.call(e,o)||o===r||p(e,o,{get:(e=>t[e]).bind(null,o),enumerable:!(n=f(t,o))||n.enumerable});return e})(!t&&e&&e.__esModule?r:p(r,"default",{value:e,enumerable:!0}),e));const g={PARSE_ERROR:400,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_SUPPORTED:405,TIMEOUT:408,CONFLICT:409,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,UNSUPPORTED_MEDIA_TYPE:415,UNPROCESSABLE_CONTENT:422,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504};function _(e){var t;return null!==(t=g[e])&&void 0!==t?t:500}function w(e){return _(e.code)}var x=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,t){function r(e){return t.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports}}),E=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,t){var r=x().default;t.exports=function(e,t){if("object"!=r(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},t.exports.__esModule=!0,t.exports.default=t.exports}}),S=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,t){var r=x().default,n=E();t.exports=function(e){var t=n(e,"string");return"symbol"==r(t)?t:t+""},t.exports.__esModule=!0,t.exports.default=t.exports}}),k=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,t){var r=S();t.exports=function(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},t.exports.__esModule=!0,t.exports.default=t.exports}}),O=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,t){var r=k();function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}t.exports=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e},t.exports.__esModule=!0,t.exports.default=t.exports}}),T=b(O(),1);function N(e){const{path:t,error:r,config:n}=e,{code:a}=e.error,i={message:r.message,code:o[a],data:{code:a,httpStatus:w(r)}};return n.isDev&&"string"==typeof e.error.stack&&(i.data.stack=e.error.stack),"string"==typeof t&&(i.data.path=t),n.errorFormatter((0,T.default)((0,T.default)({},e),{},{shape:i}))}var M=b(k(),1),C=class extends Error{};function P(e){if(e instanceof R)return e;if(e instanceof Error&&"TRPCError"===e.name)return e;const t=new R({code:"INTERNAL_SERVER_ERROR",cause:e});return e instanceof Error&&e.stack&&(t.stack=e.stack),t}var R=class extends Error{constructor(e){var t,r,n;const o=function(e){if(e instanceof Error)return e;const t=typeof e;return"undefined"!==t&&"function"!==t&&null!==e?"object"!==t?new Error(String(e)):i(e)?Object.assign(new C,e):void 0:void 0}(e.cause);super(null!==(t=null!==(r=e.message)&&void 0!==r?r:null==o?void 0:o.message)&&void 0!==t?t:e.code,{cause:o}),(0,M.default)(this,"cause",void 0),(0,M.default)(this,"code",void 0),this.code=e.code,this.name="TRPCError",null!==(n=this.cause)&&void 0!==n||(this.cause=o)}},A=b(O(),1);function B(e,t){return"error"in t?(0,A.default)((0,A.default)({},t),{},{error:e.transformer.output.serialize(t.error)}):"data"in t.result?(0,A.default)((0,A.default)({},t),{},{result:(0,A.default)((0,A.default)({},t.result),{},{data:e.transformer.output.serialize(t.result.data)})}):t}function I(e,t){return Array.isArray(t)?t.map((t=>B(e,t))):B(e,t)}Error;b(O(),1);async function j(e,t){const{_def:r}=e;let n=r.procedures[t];for(;!n;){const e=Object.keys(r.lazy).find((e=>t.startsWith(e)));if(!e)return null;const o=r.lazy[e];await o.load(),n=r.procedures[t]}return n}const q=Symbol();function U(e){return Array.isArray(e)&&e[2]===q}var $=n(427);function D(e){let t;try{t=JSON.parse(e)}catch(e){throw new R({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:e})}return function(e){try{if(null===e)return null;if(!i(e))throw new Error("Expected object");const t=Object.entries(e).filter((([e,t])=>"string"!=typeof t));if(t.length>0)throw new Error(`Expected connectionParams to be string values. Got ${t.map((([e,t])=>`${e}: ${typeof t}`)).join(", ")}`);return e}catch(e){throw new R({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:e})}}(t)}var z=b(O(),1);function L(e){let t=null;const r=Symbol.for("@trpc/server/http/memo");let n=r;return{read:async()=>{var o;return n!==r||(null!==(o=t)&&void 0!==o||(t=e().catch((e=>{if(e instanceof R)throw e;throw new R({code:"BAD_REQUEST",message:e instanceof Error?e.message:"Invalid input",cause:e})}))),n=await t,t=null),n},result:()=>n!==r?n:void 0}}const G={isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("application/json"))},async parse(e){var t;const{req:r}=e,n="1"===e.searchParams.get("batch"),o=n?e.path.split(","):[e.path],a=L((async()=>{let t;if("GET"===r.method){const r=e.searchParams.get("input");r&&(t=JSON.parse(r))}else t=await r.json();if(void 0===t)return{};if(!n)return{0:e.router._def._config.transformer.input.deserialize(t)};if(!i(t))throw new R({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});const a={};for(const r of o.keys()){const n=t[r];void 0!==n&&(a[r]=e.router._def._config.transformer.input.deserialize(n))}return a})),s=await Promise.all(o.map((async(t,r)=>{const n=await j(e.router,t);return{path:t,procedure:n,getRawInput:async()=>{let t=(await a.read())[r];if("subscription"===(null==n?void 0:n._def.type)){var o,s;const r=null!==(o=null!==(s=e.headers.get("last-event-id"))&&void 0!==s?s:e.searchParams.get("lastEventId"))&&void 0!==o?o:e.searchParams.get("Last-Event-Id");if(r)if(i(t))t=(0,z.default)((0,z.default)({},t),{},{lastEventId:r});else{var l;null!==(l=t)&&void 0!==l||(t={lastEventId:r})}}return t},result:()=>{var e;return null===(e=a.result())||void 0===e?void 0:e[r]}}}))),l=new Set(s.map((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})).filter(Boolean));if(l.size>1)throw new R({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(l).join(", ")}`});const c=null!==(t=l.values().next().value)&&void 0!==t?t:"unknown",u=e.searchParams.get("connectionParams");return{isBatchCall:n,accept:r.headers.get("trpc-accept"),calls:s,type:c,connectionParams:null===u?null:D(u),signal:r.signal,url:e.url}}},F=[G,{isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("multipart/form-data"))},async parse(e){const{req:t}=e;if("POST"!==t.method)throw new R({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});const r=L((async()=>await t.formData())),n=await j(e.router,e.path);return{accept:null,calls:[{path:e.path,getRawInput:r.read,result:r.result,procedure:n}],isBatchCall:!1,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}},{isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("application/octet-stream"))},async parse(e){const{req:t}=e;if("POST"!==t.method)throw new R({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});const r=L((async()=>t.body));return{calls:[{path:e.path,getRawInput:r.read,result:r.result,procedure:await j(e.router,e.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}}];async function J(e){const t=function(e){const t=F.find((t=>t.isMatch(e)));if(t)return t;if(!t&&"GET"===e.method)return G;throw new R({code:"UNSUPPORTED_MEDIA_TYPE",message:e.headers.has("content-type")?`Unsupported content-type "${e.headers.get("content-type")}`:"Missing content-type header"})}(e.req);return await t.parse(e)}function V(e){return i(e)&&"AbortError"===e.name}function Y(e="AbortError"){throw new DOMException(e,"AbortError")}function H(e){return"[object Object]"===Object.prototype.toString.call(e)}var Q=b(k(),1);let W;const K=new WeakMap,Z=()=>{};W=Symbol.toStringTag;var X,ee,te,re,ne=class e{constructor(e){(0,Q.default)(this,"promise",void 0),(0,Q.default)(this,"subscribers",[]),(0,Q.default)(this,"settlement",null),(0,Q.default)(this,W,"Unpromise"),this.promise="function"==typeof e?new Promise(e):e;const t=this.promise.then((e=>{const{subscribers:t}=this;this.subscribers=null,this.settlement={status:"fulfilled",value:e},null==t||t.forEach((({resolve:t})=>{t(e)}))}));"catch"in t&&t.catch((e=>{const{subscribers:t}=this;this.subscribers=null,this.settlement={status:"rejected",reason:e},null==t||t.forEach((({reject:t})=>{t(e)}))}))}subscribe(){let e,t;const{settlement:r}=this;if(null===r){if(null===this.subscribers)throw new Error("Unpromise settled but still has subscribers");const r=function(){let e,t;const r=new Promise(((r,n)=>{e=r,t=n}));return{promise:r,resolve:e,reject:t}}();this.subscribers=(n=this.subscribers,o=r,[...n,o]),e=r.promise,t=()=>{null!==this.subscribers&&(this.subscribers=function(e,t){const r=e.indexOf(t);return-1!==r?function(e,t){return[...e.slice(0,t),...e.slice(t+1)]}(e,r):e}(this.subscribers,r))}}else{const{status:n}=r;e="fulfilled"===n?Promise.resolve(r.value):Promise.reject(r.reason),t=Z}var n,o;return Object.assign(e,{unsubscribe:t})}then(e,t){const r=this.subscribe(),{unsubscribe:n}=r;return Object.assign(r.then(e,t),{unsubscribe:n})}catch(e){const t=this.subscribe(),{unsubscribe:r}=t;return Object.assign(t.catch(e),{unsubscribe:r})}finally(e){const t=this.subscribe(),{unsubscribe:r}=t;return Object.assign(t.finally(e),{unsubscribe:r})}static proxy(t){const r=e.getSubscribablePromise(t);return void 0!==r?r:e.createSubscribablePromise(t)}static createSubscribablePromise(t){const r=new e(t);return K.set(t,r),K.set(r,r),r}static getSubscribablePromise(e){return K.get(e)}static resolve(t){const r="object"==typeof t&&null!==t&&"then"in t&&"function"==typeof t.then?t:Promise.resolve(t);return e.proxy(r).subscribe()}static async any(t){const r=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.any(r)}finally{r.forEach((({unsubscribe:e})=>{e()}))}}static async race(t){const r=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.race(r)}finally{r.forEach((({unsubscribe:e})=>{e()}))}}static async raceReferences(e){const t=e.map(oe);try{return await Promise.race(t)}finally{for(const e of t)e.unsubscribe()}}};function oe(e){return ne.proxy(e).then((()=>[e]))}function ae(e,t){const r=e,n=r[Symbol.dispose];return r[Symbol.dispose]=()=>{t(),null==n||n()},r}function ie(e,t){const r=e,n=r[Symbol.asyncDispose];return r[Symbol.asyncDispose]=async()=>{await t(),await(null==n?void 0:n())},r}null!==(ee=(X=Symbol).dispose)&&void 0!==ee||(X.dispose=Symbol()),null!==(re=(te=Symbol).asyncDispose)&&void 0!==re||(te.asyncDispose=Symbol());const se=Symbol();function le(e){let t=null;return ae({start(){if(t)throw new Error("Timer already started");return new Promise((r=>{t=setTimeout((()=>r(se)),e)}))}},(()=>{t&&clearTimeout(t)}))}var ce=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(e,t){t.exports=function(){var e="function"==typeof SuppressedError?SuppressedError:function(e,t){var r=Error();return r.name="SuppressedError",r.error=e,r.suppressed=t,r},t={},r=[];function n(e,t){if(null!=t){if(Object(t)!==t)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(e)var n=t[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(void 0===n&&(n=t[Symbol.dispose||Symbol.for("Symbol.dispose")],e))var o=n;if("function"!=typeof n)throw new TypeError("Object is not disposable.");o&&(n=function(){try{o.call(t)}catch(e){return Promise.reject(e)}}),r.push({v:t,d:n,a:e})}else e&&r.push({d:t,a:e});return t}return{e:t,u:n.bind(null,!1),a:n.bind(null,!0),d:function(){var n,o=this.e,a=0;function i(){for(;n=r.pop();)try{if(!n.a&&1===a)return a=0,r.push(n),Promise.resolve().then(i);if(n.d){var e=n.d.call(n.v);if(n.a)return a|=2,Promise.resolve(e).then(i,s)}else a|=1}catch(e){return s(e)}if(1===a)return o!==t?Promise.reject(o):Promise.resolve();if(o!==t)throw o}function s(r){return o=o!==t?new e(r,o):r,i()}return i()}}},t.exports.__esModule=!0,t.exports.default=t.exports}}),ue=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(e,t){t.exports=function(e,t){this.v=e,this.k=t},t.exports.__esModule=!0,t.exports.default=t.exports}}),de=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(e,t){var r=ue();t.exports=function(e){return new r(e,0)},t.exports.__esModule=!0,t.exports.default=t.exports}}),pe=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(e,t){var r=ue();function n(e){var t,n;function o(t,n){try{var i=e[t](n),s=i.value,l=s instanceof r;Promise.resolve(l?s.v:s).then((function(r){if(l){var n="return"===t?"return":"next";if(!s.k||r.done)return o(n,r);r=e[n](r).value}a(i.done?"return":"normal",r)}),(function(e){o("throw",e)}))}catch(e){a("throw",e)}}function a(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?o(t.key,t.arg):n=null}this._invoke=function(e,r){return new Promise((function(a,i){var s={key:e,arg:r,resolve:a,reject:i,next:null};n?n=n.next=s:(t=n=s,o(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}n.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},n.prototype.next=function(e){return this._invoke("next",e)},n.prototype.throw=function(e){return this._invoke("throw",e)},n.prototype.return=function(e){return this._invoke("return",e)},t.exports=function(e){return function(){return new n(e.apply(this,arguments))}},t.exports.__esModule=!0,t.exports.default=t.exports}}),fe=b(ce(),1),me=b(de(),1),ye=b(pe(),1);function he(e){const t=e[Symbol.asyncIterator]();return t[Symbol.asyncDispose]?t:ie(t,(async()=>{var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))}))}function ve(){return(ve=(0,ye.default)((function*(e,t){try{var r=(0,fe.default)();const n=r.a(he(e)),o=r.u(le(t.maxDurationMs)).start();let a;for(;;){if(a=yield(0,me.default)(ne.race([n.next(),o])),a===se&&Y(),a.done)return a;yield a.value,a=null}}catch(e){r.e=e}finally{yield(0,me.default)(r.d())}}))).apply(this,arguments)}function be(){return(be=(0,ye.default)((function*(e,t){try{var r=(0,fe.default)();const n=r.a(he(e));let o;const a=r.u(le(t.gracePeriodMs));let i=t.count,s=new Promise((()=>{}));for(;;){if(o=yield(0,me.default)(ne.race([n.next(),s])),o===se&&Y(),o.done)return o.value;yield o.value,0==--i&&(s=a.start()),o=null}}catch(e){r.e=e}finally{yield(0,me.default)(r.d())}}))).apply(this,arguments)}function ge(){let e,t;return{promise:new Promise(((r,n)=>{e=r,t=n})),resolve:e,reject:t}}var _e=b(ce(),1),we=b(de(),1),xe=b(pe(),1);function Ee(){let e="idle",t=ge();const r=[],n=new Set,o=[];function a(r){if("pending"!==e)return;const a=function(e,t){const r=e[Symbol.asyncIterator]();let n="idle";function o(){n="done",t=()=>{}}return{pull:function(){"idle"===n&&(n="pending",r.next().then((e=>{if(e.done)return n="done",t({status:"return",value:e.value}),void o();n="idle",t({status:"yield",value:e.value})})).catch((e=>{t({status:"error",error:e}),o()})))},destroy:async()=>{var e;o(),await(null===(e=r.return)||void 0===e?void 0:e.call(r))}}}(r,(r=>{if("pending"===e){switch(r.status){case"yield":o.push([a,r]);break;case"return":n.delete(a);break;case"error":o.push([a,r]),n.delete(a)}t.resolve()}}));n.add(a),a.pull()}return{add(t){switch(e){case"idle":r.push(t);break;case"pending":a(t)}},[Symbol.asyncIterator]:()=>(0,xe.default)((function*(){try{var i=(0,_e.default)();if("idle"!==e)throw new Error("Cannot iterate twice");e="pending";i.a(ie({},(async()=>{e="done";const r=[];if(await Promise.all(Array.from(n.values()).map((async e=>{try{await e.destroy()}catch(e){r.push(e)}}))),o.length=0,n.clear(),t.resolve(),r.length>0)throw new AggregateError(r)})));for(;r.length>0;)a(r.shift());for(;n.size>0;){for(yield(0,we.default)(t.promise);o.length>0;){const[e,t]=o.shift();switch(t.status){case"yield":yield t.value,e.pull();break;case"error":throw t.error}}t=ge()}}catch(e){i.e=e}finally{yield(0,we.default)(i.d())}}))()}}function Se(e){const t=e[Symbol.asyncIterator]();return new ReadableStream({async cancel(){var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))},async pull(e){const r=await t.next();r.done?e.close():e.enqueue(r.value)}})}var ke=b(ce(),1),Oe=b(de(),1),Te=b(pe(),1);const Ne=Symbol("ping");function Me(e,t){return Ce.apply(this,arguments)}function Ce(){return(Ce=(0,Te.default)((function*(e,t){try{var r=(0,ke.default)();const o=r.a(he(e));let a,i=o.next();for(;;)try{var n=(0,ke.default)();const e=n.u(le(t));if(a=yield(0,Oe.default)(ne.race([i,e.start()])),a===se){yield Ne;continue}if(a.done)return a.value;i=o.next(),yield a.value,a=null}catch(e){n.e=e}finally{n.d()}}catch(e){r.e=e}finally{yield(0,Oe.default)(r.d())}}))).apply(this,arguments)}var Pe=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(e,t){function r(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return(r=function(e){this.s=e,this.n=e.next}).prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new r(e)}t.exports=function(e){var t,n,o,a=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,o=Symbol.iterator);a--;){if(n&&null!=(t=e[n]))return t.call(e);if(o&&null!=(t=e[o]))return new r(t.call(e));n="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")},t.exports.__esModule=!0,t.exports.default=t.exports}}),Re=b(de(),1),Ae=b(pe(),1),Be=b(ce(),1),Ie=b(Pe(),1);const je=0,qe=1,Ue=0,$e=1,De=0,ze=1,Le=2;function Ge(e){return(i(e)||"function"==typeof e)&&"function"==typeof(null==e?void 0:e.then)&&"function"==typeof(null==e?void 0:e.catch)}var Fe=class extends Error{constructor(e){super("Max depth reached at path: "+e.join(".")),this.path=e}};function Je(){return Je=(0,Ae.default)((function*(e){const{data:t}=e;let r=0;const n=0,o=Ee();function a(e){const t=r++,n=e(t);return o.add(n),t}function i(t,r){return a(function(){var n=(0,Ae.default)((function*(n){const o=c(r);o&&(t.catch((t=>{var n;null===(n=e.onError)||void 0===n||n.call(e,{error:t,path:r})})),t=Promise.reject(o));try{const e=yield(0,Re.default)(t);yield[n,Ue,d(e,r)]}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:r}),yield[n,$e,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:r})]}}));return function(e){return n.apply(this,arguments)}}())}function s(t,r){return a(function(){var n=(0,Ae.default)((function*(n){try{var o=(0,Be.default)();const s=c(r);if(s)throw s;const l=o.a(he(t));try{for(;;){const e=yield(0,Re.default)(l.next());if(e.done){yield[n,De,d(e.value,r)];break}yield[n,ze,d(e.value,r)]}}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:r}),yield[n,Le,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:r})]}}catch(e){o.e=e}finally{yield(0,Re.default)(o.d())}}));return function(e){return n.apply(this,arguments)}}())}function c(t){return e.maxDepth&&t.length>e.maxDepth?new Fe(t):null}function u(t,r){if(Ge(t))return[je,i(t,r)];if(l(t)){if(e.maxDepth&&r.length>=e.maxDepth)throw new Error("Max depth reached");return[qe,s(t,r)]}return null}function d(e,t){if(void 0===e)return[[]];const r=u(e,t);if(r)return[[n],[null,...r]];if(!1===H(o=e)||void 0!==(a=o.constructor)&&(!1===H(i=a.prototype)||!1===i.hasOwnProperty("isPrototypeOf")))return[[e]];var o,a,i;const s={},l=[];for(const[r,o]of Object.entries(e)){const e=u(o,[...t,r]);e?(s[r]=n,l.push([r,...e])):s[r]=o}return[[s],...l]}const p={};for(const[e,r]of Object.entries(t))p[e]=d(r,[e]);yield p;let f=o;e.pingMs&&(f=Me(o,e.pingMs));var m,y=!1,h=!1;try{for(var v,b=(0,Ie.default)(f);y=!(v=yield(0,Re.default)(b.next())).done;y=!1){const e=v.value;yield e}}catch(e){h=!0,m=e}finally{try{y&&null!=b.return&&(yield(0,Re.default)(b.return()))}finally{if(h)throw m}}})),Je.apply(this,arguments)}function Ve(e){let t=Se(function(e){return Je.apply(this,arguments)}(e));const{serialize:r}=e;return r&&(t=t.pipeThrough(new TransformStream({transform(e,t){e===Ne?t.enqueue(Ne):t.enqueue(r(e))}}))),t.pipeThrough(new TransformStream({transform(e,t){e===Ne?t.enqueue(" "):t.enqueue(JSON.stringify(e)+"\n")}})).pipeThrough(new TextEncoderStream)}Error;var Ye=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncGeneratorDelegate.js"(e,t){var r=ue();t.exports=function(e){var t={},n=!1;function o(t,o){return n=!0,o=new Promise((function(r){r(e[t](o))})),{done:!1,value:new r(o,1)}}return t["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},t.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(t.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(t.return=function(e){return n?(n=!1,e):o("return",e)}),t},t.exports.__esModule=!0,t.exports.default=t.exports}}),He=b(Pe(),1),Qe=b(de(),1),We=b(pe(),1),Ke=b(Ye(),1);b(ce(),1);const Ze="ping",Xe="serialized-error",et="connected",tt="return";function rt(e){var t,r,n,o,a;const{serialize:i=u}=e,s={enabled:null!==(t=null===(r=e.ping)||void 0===r?void 0:r.enabled)&&void 0!==t&&t,intervalMs:null!==(n=null===(o=e.ping)||void 0===o?void 0:o.intervalMs)&&void 0!==n?n:1e3},l=null!==(a=e.client)&&void 0!==a?a:{};if(s.enabled&&l.reconnectAfterInactivityMs&&s.intervalMs>l.reconnectAfterInactivityMs)throw new Error(`Ping interval must be less than client reconnect interval to prevent unnecessary reconnection - ping.intervalMs: ${s.intervalMs} client.reconnectAfterInactivityMs: ${l.reconnectAfterInactivityMs}`);function c(){return c=(0,We.default)((function*(){yield{event:et,data:JSON.stringify(l)};let t,r,n=e.data;e.emitAndEndImmediately&&(n=function(e,t){return be.apply(this,arguments)}(n,{count:1,gracePeriodMs:1})),e.maxDurationMs&&e.maxDurationMs>0&&e.maxDurationMs!==1/0&&(n=function(e,t){return ve.apply(this,arguments)}(n,{maxDurationMs:e.maxDurationMs})),s.enabled&&s.intervalMs!==1/0&&s.intervalMs>0&&(n=Me(n,s.intervalMs));var o,a=!1,c=!1;try{for(var u,d=(0,He.default)(n);a=!(u=yield(0,Qe.default)(d.next())).done;a=!1)t=u.value,t!==Ne?(r=U(t)?{id:t[0],data:t[1]}:{data:t},r.data=JSON.stringify(i(r.data)),yield r,t=null,r=null):yield{event:Ze,data:""}}catch(e){c=!0,o=e}finally{try{a&&null!=d.return&&(yield(0,Qe.default)(d.return()))}finally{if(c)throw o}}})),c.apply(this,arguments)}function d(){return d=(0,We.default)((function*(){try{yield*(0,Ke.default)((0,He.default)(function(){return c.apply(this,arguments)}())),yield{event:tt,data:""}}catch(n){var t,r;if(V(n))return;const o=P(n),a=null!==(t=null===(r=e.formatError)||void 0===r?void 0:r.call(e,{error:o}))&&void 0!==t?t:null;yield{event:Xe,data:JSON.stringify(i(a))}}})),d.apply(this,arguments)}const p=Se(function(){return d.apply(this,arguments)}());return p.pipeThrough(new TransformStream({transform(e,t){"event"in e&&t.enqueue(`event: ${e.event}\n`),"data"in e&&t.enqueue(`data: ${e.data}\n`),"id"in e&&t.enqueue(`id: ${e.id}\n`),"comment"in e&&t.enqueue(`: ${e.comment}\n`),t.enqueue("\n\n")}})).pipeThrough(new TextEncoderStream)}const nt={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform","X-Accel-Buffering":"no",Connection:"keep-alive"};var ot=b(pe(),1),at=b(O(),1);function it(e){return c((0,ot.default)((function*(){throw e})))}const st={mutation:["POST"],query:["GET"],subscription:["GET"]},lt={mutation:["POST"],query:["GET","POST"],subscription:["GET","POST"]};function ct(e){var t,r,n;const{ctx:o,info:s,responseMeta:l,untransformedJSON:c,errors:u=[],headers:d}=e;let p=c?function(e){const t=Array.isArray(e)?e:[e],r=new Set(t.map((e=>{var t;return"error"in e&&i(e.error.data)?"number"==typeof(null===(t=e.error.data)||void 0===t?void 0:t.httpStatus)?e.error.data.httpStatus:_(a[e.error.code]):200})));return 1!==r.size?207:r.values().next().value}(c):200;const f=!c,m=f?[]:Array.isArray(c)?c:[c],y=null!==(t=null==l?void 0:l({ctx:o,info:s,paths:null==s?void 0:s.calls.map((e=>e.path)),data:m,errors:u,eagerGeneration:f,type:null!==(r=null==s||null===(n=s.calls.find((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})))||void 0===n||null===(n=n.procedure)||void 0===n?void 0:n._def.type)&&void 0!==r?r:"unknown"}))&&void 0!==t?t:{};if(y.headers)if(y.headers instanceof Headers)for(const[e,t]of y.headers.entries())d.append(e,t);else for(const[e,t]of Object.entries(y.headers))if(Array.isArray(t))for(const r of t)d.append(e,r);else"string"==typeof t&&d.set(e,t);return y.status&&(p=y.status),{status:p}}function ut(e){return!!i(e)&&(!!l(e)||(Object.values(e).some(Ge)||Object.values(e).some(l)))}async function dt(e){var t,r,n,o,a,i;const{router:s,req:u}=e,d=new Headers([["vary","trpc-accept"]]),p=s._def._config,f=new URL(u.url);if("HEAD"===u.method)return new Response(null,{status:204});const m=null===(t=null!==(r=e.allowBatching)&&void 0!==r?r:null===(n=e.batching)||void 0===n?void 0:n.enabled)||void 0===t||t,y=null!==(o=e.allowMethodOverride)&&void 0!==o&&o&&"POST"===u.method,h=await c((async()=>{try{return[void 0,await J({req:u,path:decodeURIComponent(e.path),router:s,searchParams:f.searchParams,headers:e.req.headers,url:f})]}catch(e){return[P(e),void 0]}})),v=c((()=>{let t;return{valueOrUndefined:()=>{if(t)return t[1]},value:()=>{const[e,r]=t;if(e)throw e;return r},create:async r=>{if(t)throw new Error("This should only be called once - report a bug in tRPC");try{const n=await e.createContext({info:r});t=[void 0,n]}catch(e){t=[P(e),void 0]}}}})),b=y?lt:st,g="application/jsonl"===u.headers.get("trpc-accept"),_=null===(a=null===(i=p.sse)||void 0===i?void 0:i.enabled)||void 0===a||a;try{const[t,r]=h;if(t)throw t;if(r.isBatchCall&&!m)throw new R({code:"BAD_REQUEST",message:"Batching is not enabled on the server"});if(g&&!r.isBatchCall)throw new R({message:"Streaming requests must be batched (you can do a batch of 1)",code:"BAD_REQUEST"});await v.create(r);const n=r.calls.map((async t=>{const n=t.procedure;try{if(e.error)throw e.error;if(!n)throw new R({code:"NOT_FOUND",message:`No procedure found on path "${t.path}"`});if(!b[n._def.type].includes(u.method))throw new R({code:"METHOD_NOT_SUPPORTED",message:`Unsupported ${u.method}-request to ${n._def.type} procedure at path "${t.path}"`});if("subscription"===n._def.type&&r.isBatchCall)throw new R({code:"BAD_REQUEST",message:"Cannot batch subscription calls"});return[void 0,{data:await n({path:t.path,getRawInput:t.getRawInput,ctx:v.value(),type:n._def.type,signal:e.req.signal})}]}catch(r){var o,a,i;const n=P(r),s=t.result();return null===(o=e.onError)||void 0===o||o.call(e,{error:n,path:t.path,input:s,ctx:v.valueOrUndefined(),type:null!==(a=null===(i=t.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown",req:e.req}),[n,void 0]}}));if(!r.isBatchCall){const[t]=r.calls,[o,a]=await n[0];switch(r.type){case"unknown":case"mutation":case"query":{if(d.set("content-type","application/json"),ut(null==a?void 0:a.data))throw new R({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"});const n=o?{error:N({config:p,ctx:v.valueOrUndefined(),error:o,input:t.result(),path:t.path,type:r.type})}:{result:{data:a.data}},i=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,errors:o?[o]:[],headers:d,untransformedJSON:[n]});return new Response(JSON.stringify(I(p,n)),{status:i.status,headers:d})}case"subscription":{const n=c((()=>{if(o)return it(o);if(!_)return it(new R({code:"METHOD_NOT_SUPPORTED",message:'Missing experimental flag "sseSubscriptions"'}));if(!(0,$.AT)(a.data)&&!l(a.data))return it(new R({message:`Subscription ${t.path} did not return an observable or a AsyncGenerator`,code:"INTERNAL_SERVER_ERROR"}));return(0,$.AT)(a.data)?(0,$.di)(a.data,e.req.signal):a.data})),i=rt((0,at.default)((0,at.default)({},p.sse),{},{data:n,serialize:e=>p.transformer.output.serialize(e),formatError(r){var n,o,a;const i=P(r.error),s=null==t?void 0:t.result(),l=null==t?void 0:t.path,c=null!==(n=null==t||null===(o=t.procedure)||void 0===o?void 0:o._def.type)&&void 0!==n?n:"unknown";null===(a=e.onError)||void 0===a||a.call(e,{error:i,path:l,input:s,ctx:v.valueOrUndefined(),req:e.req,type:c});return N({config:p,ctx:v.valueOrUndefined(),error:i,input:s,path:l,type:c})}}));for(const[e,t]of Object.entries(nt))d.set(e,t);const s=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,errors:[],headers:d,untransformedJSON:null});return new Response(i,{headers:d,status:s.status})}}}if("application/jsonl"===r.accept){d.set("content-type","application/json"),d.set("transfer-encoding","chunked");const t=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,errors:[],headers:d,untransformedJSON:null}),o=Ve((0,at.default)((0,at.default)({},p.jsonl),{},{maxDepth:1/0,data:n.map((async t=>{const[n,o]=await t,a=r.calls[0];var i,s;if(n)return{error:N({config:p,ctx:v.valueOrUndefined(),error:n,input:a.result(),path:a.path,type:null!==(i=null===(s=a.procedure)||void 0===s?void 0:s._def.type)&&void 0!==i?i:"unknown"})};const l=(0,$.AT)(o.data)?(0,$.di)(o.data,e.req.signal):Promise.resolve(o.data);return{result:Promise.resolve({data:l})}})),serialize:e=>p.transformer.output.serialize(e),onError:t=>{var n,o;null===(n=e.onError)||void 0===n||n.call(e,{error:P(t),path:void 0,input:void 0,ctx:v.valueOrUndefined(),req:e.req,type:null!==(o=null==r?void 0:r.type)&&void 0!==o?o:"unknown"})},formatError(e){var t,n;const o=null==r?void 0:r.calls[e.path[0]],a=P(e.error),i=null==o?void 0:o.result(),s=null==o?void 0:o.path,l=null!==(t=null==o||null===(n=o.procedure)||void 0===n?void 0:n._def.type)&&void 0!==t?t:"unknown";return N({config:p,ctx:v.valueOrUndefined(),error:a,input:i,path:s,type:l})}}));return new Response(o,{headers:d,status:t.status})}d.set("content-type","application/json");const o=(await Promise.all(n)).map((e=>{const[t,r]=e;return t?e:ut(r.data)?[new R({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"}),void 0]:e})),a=o.map((([e,t],n)=>{const o=r.calls[n];var a,i;return e?{error:N({config:p,ctx:v.valueOrUndefined(),error:e,input:o.result(),path:o.path,type:null!==(a=null===(i=o.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown"})}:{result:{data:t.data}}})),i=o.map((([e])=>e)).filter(Boolean),s=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,untransformedJSON:a,errors:i,headers:d});return new Response(JSON.stringify(I(p,a)),{status:s.status,headers:d})}catch(t){var w;const[r,n]=h,o=v.valueOrUndefined(),{error:a,untransformedJSON:i,body:s}=function(e,t){const{router:r,req:n,onError:o}=t.opts,a=P(e);null==o||o({error:a,path:t.path,input:t.input,ctx:t.ctx,type:t.type,req:n});const i={error:N({config:r._def._config,error:a,type:t.type,path:t.path,input:t.input,ctx:t.ctx})},s=I(r._def._config,i);return{error:a,untransformedJSON:i,body:JSON.stringify(s)}}(t,{opts:e,ctx:v.valueOrUndefined(),type:null!==(w=null==n?void 0:n.type)&&void 0!==w?w:"unknown"}),l=ct({ctx:o,info:n,responseMeta:e.responseMeta,untransformedJSON:i,errors:[a],headers:d});return new Response(s,{status:l.status,headers:d})}}function pt(e){try{var t,r;const n=e.headers[":scheme"]&&"https"===e.headers[":scheme"]||e.socket&&"encrypted"in e.socket&&e.socket.encrypted?"https:":"http:",o=null!==(t=null!==(r=e.headers.host)&&void 0!==r?r:e.headers[":authority"])&&void 0!==t?t:"localhost";return new URL(e.url,`${n}//${o}`)}catch(e){throw new R({code:"BAD_REQUEST",message:"Invalid URL",cause:e})}}function ft(e){const t=new Headers;for(const r in e){const n=e[r];if("string"!=typeof r||!r.startsWith(":"))if(Array.isArray(n))for(const e of n)t.append(r,e);else null!=n&&t.append(r,n)}return t}function mt(e,t,r){const n=new AbortController,o=()=>{t.off("close",o),e.off("aborted",o),n.abort()};t.once("close",o),e.once("aborted",o);const a=pt(e),i={headers:ft(e.headers),method:e.method,signal:n.signal};"GET"!==e.method&&"HEAD"!==e.method&&(i.body=function(e,t){if("body"in e){if(void 0===e.body)return;return"string"==typeof e.body?e.body:JSON.stringify(e.body)}let r=0,n=!1;return new ReadableStream({start(o){const a=s=>{r+=s.length,!t.maxBodySize||r<=t.maxBodySize?o.enqueue(new Uint8Array(s.buffer,s.byteOffset,s.byteLength)):(o.error(new R({code:"PAYLOAD_TOO_LARGE"})),n=!0,e.off("data",a),e.off("end",i))},i=()=>{n||(n=!0,e.off("data",a),e.off("end",i),o.close())};e.on("data",a),e.on("end",i)},cancel(){e.destroy()}})}(e,r),i.duplex="half");return new Request(a,i)}async function yt(e){const{res:t}=e;try{const r=new WritableStream({async write(e){var r;await async function(e,t){!1===e.write(t)&&await new Promise(((t,r)=>{const n=e=>{r(e),a()},o=()=>{t(),a()},a=()=>{e.off("error",n),e.off("drain",o)};e.once("error",n),e.once("drain",o)}))}(t,e),null===(r=t.flush)||void 0===r||r.call(t)}});await e.body.pipeTo(r,{signal:e.signal})}catch(e){if(V(e))return;throw e}}var ht=b(O(),1);function vt(e){return t=>{var r;const{res:n,req:o}=e,a=P(t),i=N({config:e.router._def._config,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});null===(r=e.onError)||void 0===r||r.call(e,{req:o,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});const s=I(e.router._def._config,{error:i});n.statusCode=i.data.httpStatus,n.end(JSON.stringify(s))}}async function bt(e){return new Promise((t=>{var r;const n=null!==(r=e.middleware)&&void 0!==r?r:(e,t,r)=>r();return e.res.once("finish",(()=>{t()})),n(e.req,e.res,(t=>{c((async()=>{var r;const n=mt(e.req,e.res,{maxBodySize:null!==(r=e.maxBodySize)&&void 0!==r?r:null}),o=await dt((0,ht.default)((0,ht.default)({},e),{},{req:n,error:t?P(t):null,createContext:async t=>{var r;return await(null===(r=e.createContext)||void 0===r?void 0:r.call(e,(0,ht.default)((0,ht.default)({},e),t)))},onError(t){var r;null==e||null===(r=e.onError)||void 0===r||r.call(e,(0,ht.default)((0,ht.default)({},t),{},{req:e.req}))}}));await async function(e){const{response:t,rawResponse:r}=e;200===r.statusCode&&(r.statusCode=t.status);for(const[e,n]of t.headers)r.setHeader(e,n);try{t.body&&await yt({res:r,signal:e.request.signal,body:t.body})}catch(e){throw r.headersSent||(r.statusCode=500),e}finally{r.end()}}({request:n,response:o,rawResponse:e.res})})).catch(vt(e))}))}))}const gt=e(import.meta.url)("http");var _t=b(O(),1);function wt(e){var t;const r=(null!==(t=e.basePath)&&void 0!==t?t:"/").length;return(t,n)=>{let o="";c((async()=>{const a=pt(t);o=a.pathname.slice(r),await bt((0,_t.default)((0,_t.default)({},e),{},{req:t,res:n,path:o}))})).catch(vt((0,_t.default)({req:t,res:n,path:o},e)))}}function xt(e){return gt.createServer(function(e){return wt(e)}(e))}},333:(e,t,r)=>{e.exports=(e=>{var t={};return r.d(t,e),t})({initTRPC:()=>n.initTRPC})},427:(e,t,r)=>{function n(e){return"object"==typeof e&&null!==e&&"subscribe"in e}function o(e){const t={subscribe(t){let r=null,n=!1,o=!1,a=!1;function i(){null!==r?o||(o=!0,"function"==typeof r?r():r&&r.unsubscribe()):a=!0}return r=e({next(e){var r;n||null===(r=t.next)||void 0===r||r.call(t,e)},error(e){var r;n||(n=!0,null===(r=t.error)||void 0===r||r.call(t,e),i())},complete(){var e;n||(n=!0,null===(e=t.complete)||void 0===e||e.call(t),i())}}),a&&i(),{unsubscribe:i}},pipe:(...e)=>e.reduce(a,t)};return t}function a(e,t){return t(e)}function i(e,t){const r=function(e,t){let r=null;const n=()=>{null==r||r.unsubscribe(),r=null,t.removeEventListener("abort",n)};return new ReadableStream({start(o){r=e.subscribe({next(e){o.enqueue({ok:!0,value:e})},error(e){o.enqueue({ok:!1,error:e}),o.close()},complete(){o.close()}}),t.aborted?n():t.addEventListener("abort",n,{once:!0})},cancel(){n()}})}(e,t),n=r.getReader(),o={async next(){const e=await n.read();if(e.done)return{value:void 0,done:!0};const{value:t}=e;if(!t.ok)throw t.error;return{value:t.value,done:!1}},return:async()=>(await n.cancel(),{value:void 0,done:!0})};return{[Symbol.asyncIterator]:()=>o}}r.d(t,{AT:()=>n,di:()=>i,sH:()=>o})},455:t=>{t.exports=e(import.meta.url)("node:fs/promises")},508:(e,t,r)=>{r.a(e,(async(e,n)=>{try{r.d(t,{Ux:()=>d,YO:()=>c,Zy:()=>p,bR:()=>m});var o=r(455),a=r(136),i=r(760);const e=(0,a.fileURLToPath)("file:///Users/jhen/workspace/mybigday-bricks/buttress/buttress-server-poc/src/version-check.js"),s=i.dirname(e),l=JSON.parse(await(0,o.readFile)(i.join(s,"../package.json"),"utf8")),{version:c,name:u}=l,d=async()=>{const e=`https://registry.npmjs.org/${u}/latest`;try{const t=new AbortController,r=setTimeout((()=>t.abort()),3e3),n=await fetch(e,{headers:{Accept:"application/json"},signal:t.signal});if(clearTimeout(r),!n.ok)return null;return(await n.json()).version||null}catch{return null}},p=(e,t)=>{if(!t)return!1;const r=e.split(/[.-]/),n=t.split(/[.-]/);for(let e=0;e<Math.max(r.length,n.length);e+=1){const t=parseInt(r[e])||0,o=parseInt(n[e])||0;if(o>t)return!0;if(o<t)return!1}return!1},f=e=>{console.log(""),console.log("[33m╭─────────────────────────────────────────────────╮[0m"),console.log("[33m│[0m Update available! [2m%s[0m → [32m%s[0m",c.padEnd(12),e.padEnd(12),"[33m│[0m"),console.log("[33m│[0m [33m│[0m"),console.log("[33m│[0m Run to upgrade: [33m│[0m"),console.log("[33m│[0m [36mnpm install -g %s[0m [33m│[0m",u.padEnd(27)),console.log("[33m╰─────────────────────────────────────────────────╯[0m"),console.log("")},m=async()=>{try{const e=await d();e&&p(c,e)&&f(e)}catch(e){}};n()}catch(e){n(e)}}),1)},534:(t,r,n)=>{n.d(r,{N:()=>l});var o=n(161);const a=e(import.meta.url)("node:child_process");var i=n(101);const s=JSON.parse('{"UU":"@fugood/buttress-server-poc","rE":"2.23.0-beta.5"}');async function l({modelId:e=null,defaultConfig:t=null}={}){console.log(`${s.UU} v${s.rE}`),console.log("Testing capabilities for backend: ggml-llm"),e&&console.log(`Model: ${e}`),console.log("--------------------------------");try{const r=t||{},{server:n,generators:s=[],...l}=r,c=(e={},t={})=>{const r=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?r[e]=c(r[e]||{},t):r[e]=t})),r},u=e=>c(JSON.parse(JSON.stringify(l)),e||{});let d=(e=>{if(Array.isArray(s)&&s.length>0){const t=s.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const r=t.find((t=>t.model?.repo_id===e));if(r)return u(r)}}return Object.keys(l).length>0?u({}):null})(e);e&&(d={...d||{},model:{...d?.model||{},repo_id:e}});const p=await i.getCapabilities("ggml-llm",null,{config:d,includeBreakdown:!0}),f=p.buttress?.selected||null,m=p.modelConfig||null;if(e||m?.repoId){console.log("\n=== Model Information ===");const t=e||m?.repoId;if(console.log(`Repository ID: ${t}`),m?.quantization&&console.log(`Quantization: ${m.quantization}`),m?.nCtx&&console.log(`Context Length: ${m.nCtx}`),f?.quantization){const{fileType:e}=f.quantization;null!=e&&console.log(`Model File Type (GGUF): ${e}`)}const r=m?.cacheKType||"f16",n=m?.cacheVType||"f16";if(console.log(`KV Cache Type: K=${r}, V=${n}`),f?.modelBytes&&f?.kvCacheBytes){if(console.log(`Model Size: ${(f.modelBytes/1024/1024/1024).toFixed(2)} GB`),f.kvInfo?console.log(`KV Cache Size: ${(f.kvCacheBytes/1024/1024/1024).toFixed(2)} GB (Layer: ${f.kvInfo.nLayerCount}, Embd: ${f.kvInfo.nEmbdCount})`):console.log(`KV Cache Size: ${(f.kvCacheBytes/1024/1024/1024).toFixed(2)} GB`),console.log(`Total Required Memory: ${((f.modelBytes+f.kvCacheBytes)/1024/1024/1024).toFixed(2)} GB`),null!=f.memoryLimitedCtx){const e=f.memoryLimitedCtx,t=f.kvInfo?.nCtxTrain;t?console.log(`\nMemory-Limited Context: ${e} (Train: ${t})`):console.log(`\nMemory-Limited Context: ${e}`),null!=f.limitedKvCacheBytes&&console.log(`Limited KV Cache Size: ${(f.limitedKvCacheBytes/1024/1024/1024).toFixed(2)} GB`)}}else if(p.buttress?.selected?.fit){const{totalRequiredBytes:e}=p.buttress.selected.fit;console.log(`Total Required Memory: ${(e/1024/1024/1024).toFixed(2)} GB`)}}if(p.buttress?.selected){const{selected:e}=p.buttress;console.log("\n=== Hardware Information ===");let t=null;if("win32"!==process.platform)try{t=(0,a.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}t?console.log(`System: ${t}`):(console.log(`Hostname: ${o.hostname()}`),console.log(`OS: ${o.type()} ${o.release()}`)),console.log(`Platform: ${e.platform}`),console.log(`CPU Cores: ${o.cpus().length}`),console.log(`Total System Memory: ${(o.totalmem()/1024/1024/1024).toFixed(2)} GB`);const r=e.cpuTotalBytes>0?(e.cpuUsableBytes/e.cpuTotalBytes*100).toFixed(0):0;if(console.log(`Usable CPU Memory: ${(e.cpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${r}% of ${(e.cpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),e.hasGpu){console.log("\n--- GPU Details ---");e.devices.filter((e=>"gpu"===e.type)).forEach((t=>{console.log(`GPU Backend: ${t.backend}`),console.log(`GPU Name: ${t.deviceName}`),console.log(`GPU Total Memory: ${(t.maxMemorySize/1024/1024/1024).toFixed(2)} GB`);const r=e.gpuTotalBytes>0?(e.gpuUsableBytes/e.gpuTotalBytes*100).toFixed(0):0;console.log(`GPU Usable Memory: ${(e.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${r}% of ${(e.gpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),t.metadata&&(t.metadata.hasBFloat16&&console.log("Supports BFloat16: Yes"),t.metadata.hasUnifiedMemory&&console.log("Unified Memory: Yes"))}))}else console.log("GPU: Not available");console.log(`\nBackend Variant: ${e.variant}`),console.log(`Performance Score: ${e.score}`),e.fit&&(console.log("\n--- Model Fit Analysis ---"),console.log("Fits in GPU: "+(e.fit.fitsInGpu?"Yes":"No")),console.log("Fits in CPU: "+(e.fit.fitsInCpu?"Yes":"No")),console.log(`Limiting Factor: ${e.fit.limiting}`),e.limitedFit&&(console.log("\n--- Memory-Limited Fit Analysis ---"),console.log(`Limited Total Required: ${(e.limitedFit.totalRequiredBytes/1024/1024/1024).toFixed(2)} GB`),console.log("Fits in GPU (Limited): "+(e.limitedFit.fitsInGpu?"Yes":"No")),console.log("Fits in CPU (Limited): "+(e.limitedFit.fitsInCpu?"Yes":"No")),console.log(`Limiting Factor (Limited): ${e.limitedFit.limiting}`)))}console.log("\n=== Full Capabilities JSON ==="),console.log(JSON.stringify(p,null,2)),process.exit(0)}catch(e){console.error("Failed to get capabilities:",e.message),process.exit(1)}}},760:t=>{t.exports=e(import.meta.url)("node:path")},971:(e,t,r)=>{e.exports=(e=>{var t={};return r.d(t,e),t})({z:()=>o.z})}},p={};function f(e){var t=p[e];if(void 0!==t)return t.exports;var r=p[e]={exports:{}};return d[e](r,r.exports,f),r.exports}a="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",i="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",s="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",l=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},f.a=(e,t,r)=>{var n;r&&((n=[]).d=-1);var o,c,u,d=new Set,p=e.exports,f=new Promise(((e,t)=>{u=t,c=e}));f[i]=p,f[a]=e=>(n&&e(n),d.forEach(e),f.catch((e=>{}))),e.exports=f,t((e=>{var t;o=(e=>e.map((e=>{if(null!==e&&"object"==typeof e){if(e[a])return e;if(e.then){var t=[];t.d=0,e.then((e=>{r[i]=e,l(t)}),(e=>{r[s]=e,l(t)}));var r={};return r[a]=e=>e(t),r}}var n={};return n[a]=e=>{},n[i]=e,n})))(e);var r=()=>o.map((e=>{if(e[s])throw e[s];return e[i]})),c=new Promise((e=>{(t=()=>e(r)).r=0;var i=e=>e!==n&&!d.has(e)&&(d.add(e),e&&!e.d&&(t.r++,e.push(t)));o.map((e=>e[a](i)))}));return t.r?c:r()}),(e=>(e?u(f[s]=e):c(p),l(n)))),n&&n.d<0&&(n.d=0)},u=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);f.r(r);var n={};c=c||[null,u({}),u([]),u(u)];for(var o=2&t&&e;"object"==typeof o&&!~c.indexOf(o);o=u(o))Object.getOwnPropertyNames(o).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,f.d(r,n),r},f.d=(e,t)=>{for(var r in t)f.o(t,r)&&!f.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var m=f(173);const y=(m=await m).bR,h=m.Ux,v=m.Zy,b=m.aE,g=m.sA,_=m.YO,w=m.UD,x=m.N1;export{y as checkAndNotifyUpdates,h as checkForUpdates,v as compareVersions,b as createRouter,g as createServer,_ as currentVersion,w as startServer,x as testGgmlLlmCapabilities};
|
|
1
|
+
import{createRequire as e}from"node:module";import*as t from"@huggingface/gguf";import*as r from"@fugood/llama.node";import*as n from"@trpc/server";import*as o from"zod";var a,i,s,l,c,u,d={101:(n,o,a)=>{a.r(o),a.d(o,{finalizeGenerator:()=>be,getCapabilities:()=>ge,getModelIdentifier:()=>we,ggmlLlm:()=>_e,startGenerator:()=>ve});var i=a(760),s=a(161),l=a(455);const c=e(import.meta.url)("node:crypto");const u=(e=>{var t={};return a.d(t,e),t})({gguf:()=>t.gguf});const d=(e=>{var t={};return a.d(t,e),t})({getBackendDevicesInfo:()=>r.getBackendDevicesInfo,isLibVariantAvailable:()=>r.isLibVariantAvailable,loadModel:()=>r.loadModel}),p=(e,t,r)=>Math.min(Math.max(e,t),r),f=e=>e?40:0,m=(e=0)=>{if(!e)return 0;return p(e/12884901888*20,0,20)},y=(e=0)=>{if(!e)return 0;return p(e/34359738368*10,0,10)},h=e=>e?10:0,v=(e="default",t=null)=>{const r=String(e).toLowerCase();if(!r)return 0;if(r.includes("cuda"))return 20;if(r.includes("vulkan"))return 10;if(r.includes("default")){return"darwin"===t||"ios"===t?15:5}return 0},b=({platform:e,variant:t,hasGpu:r,gpuUsableBytes:n=0,cpuUsableBytes:o=0,ok:a=!0}={})=>{if(!a)return 0;const i=f(r)+v(t,e)+m(n),s=y(o),l=h(a);return Math.min(100,Math.round(i+s+l))},g=["cuda","vulkan","default"],_=e=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[],w=e=>e&&String(e).trim().toLowerCase()||null,x=(e={})=>{const t=String(e.type||e.deviceType||e.kind||"").toLowerCase();return!!t.includes("gpu")||(!!t.includes("cuda")||(!!t.includes("metal")||!!t.includes("vulkan")))},E=({platform:e,totalMemoryInBytes:t,variant:r,devices:n,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:i,error:s})=>{const l=(e=>Array.isArray(e)?e.map((e=>({...e}))):[])(n),c=l.some(x),u=l.filter((e=>x(e)&&Number.isFinite(Number(e.maxMemorySize)))).reduce(((e,t)=>Math.max(e,Number(t.maxMemorySize)||0)),0),d=t,p=c?Math.floor(u*o):0,g=d?Math.floor(d*a):0,_={platform:e,variant:r,hasGpu:c,gpuUsableBytes:p,cpuUsableBytes:g,ok:i},w=b(_),E=i?(({platform:e,variant:t,hasGpu:r,gpuUsableBytes:n=0,cpuUsableBytes:o=0,ok:a=!0}={})=>({gpuPresence:f(r),variant:v(t,e),gpuMemory:m(n),cpuMemory:y(o),availability:h(a)}))(_):null;return{platform:e,ok:i,variant:r,hasGpu:c,devices:l,gpuTotalBytes:u,gpuUsableBytes:p,cpuTotalBytes:d,cpuUsableBytes:g,score:w,breakdown:E,error:s,timestamp:(new Date).toISOString()}},S=({device:e,modelBytes:t=0,kvCacheBytes:r=0}={})=>{if(!e)return{totalRequiredBytes:t+r,fitsInGpu:!1,fitsInCpu:!1,limiting:"unknown-device"};const n=Math.max(0,Number(t)||0)+Math.max(0,Number(r)||0),o=e.hasGpu&&n>0&&n<=e.gpuUsableBytes,a=n>0&&n<=e.cpuUsableBytes;let i="ok";return!o&&e.hasGpu&&(i="gpu-memory"),a||(i=o?"cpu-memory":"insufficient-memory"),{totalRequiredBytes:n,fitsInGpu:o,fitsInCpu:a,limiting:i}},k="ggml-llm",O=new Map([[k,async({platform:e,variant:t=null,preferVariants:r=[],variantPreference:n=[],gpuMemoryFraction:o=.85,cpuMemoryFraction:a=.5,includeBreakdown:i=!1,totalMemoryInBytes:s,modelBytes:l=null,kvCacheBytes:c=null,limitedKvCacheBytes:u=null,dependencies:d={}}={})=>{const{getBackendDevicesInfo:p,isLibVariantAvailable:f}=d;if("function"!=typeof p||"function"!=typeof f)throw new TypeError("GGML capability detection requires getBackendDevicesInfo and isLibVariantAvailable functions");const m=(({variant:e,preferVariants:t=[],variantPreference:r=[]}={})=>{const n=[];e&&n.push(e),n.push(..._(t)),n.push(..._(r)),n.push(...g);const o=n.map(w).filter(Boolean);return Array.from(new Set(o))})({variant:t,preferVariants:r,variantPreference:n}),y=[];for(const t of m)try{if(!await f(t))throw new Error(`Variant ${t} not available on this platform`);const r=await p(t);y.push(E({platform:e,totalMemoryInBytes:s,variant:t,devices:r,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!0}))}catch(r){const n=r instanceof Error?r.message:String(r);y.push(E({platform:e,totalMemoryInBytes:s,variant:t,devices:[],gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!1,error:n}))}const h=y.filter((e=>e.ok)),v=h.find((e=>e.hasGpu))||h.find((e=>"default"===e.variant))||h[0]||null,b={ok:Boolean(v),selected:v?{...v,breakdown:i?v.breakdown:void 0}:null,attempts:y};if(!i&&b.selected&&delete b.selected.breakdown,!b||!l&&!c)return b;const x=e=>{if(!e)return e;const t=S({device:e,modelBytes:l||0,kvCacheBytes:c||0});let r=null;return null!=u&&u!==c&&(r=S({device:e,modelBytes:l||0,kvCacheBytes:u})),{...e,fit:t,...r&&{limitedFit:r}}};return b.selected=x(b.selected),b.attempts=Array.isArray(b.attempts)?b.attempts.map(x):b.attempts,b}]]),T=async({platform:e,totalMemoryInBytes:t,backend:r=k,dependencies:n,...o}={})=>{const a=O.get(r);if(!a)throw new Error(`No capability detector registered for backend "${r}"`);return await a({...o,dependencies:n,totalMemoryInBytes:t,platform:e})},N={f16:2,f32:4,q8_0:1,q6_k:.75,q5_k:.625,q5_k_m:.625,q5_k_s:.625,q5_1:.625,q5_0:.625,q4_k:.5,q4_k_m:.5,q4_k_s:.5,q4_1:.5,q4_0:.5,iq4_nl:.5},C=e=>{const t=e?String(e).toLowerCase():"f16";return N[t]||N.f16},M=(e,t,r,n,o,a={})=>{if(!(e&&t&&r&&n&&o))return 0;const i=C(a.k),s=C(a.v),l=Number(t)*Number(r)*(Number(n)*i+Number(o)*s);return Math.round(Number(e)*l)},P=e(import.meta.url)("node:stream/web");var R=a.t(P,2);const A="undefined"!=typeof globalThis&&globalThis.ReadableStream&&globalThis.WritableStream?{ReadableStream:globalThis.ReadableStream,WritableStream:globalThis.WritableStream}:R,{ReadableStream:B,WritableStream:I}=A,j=new TextEncoder,q=(e={},t={})=>(Object.entries(t||{}).forEach((([t,r])=>{r&&"object"==typeof r&&!Array.isArray(r)?(e[t]&&"object"==typeof e[t]||(e[t]={}),q(e[t],r)):e[t]=r})),e),U="https://huggingface.co",$="https://huggingface.co/api",D=i.join(s.homedir(),".buttress","models"),z=["mxfp4","q8_0","q6_k","q6","q5_k_m","q5_k_s","q5_k","q5_1","q5_0","q4_k_m","q4_k_s","q4_k","q4_1","q4_0","q3","q2"],L=.5,F={backend:{type:"ggml-llm",variant:null,variant_preference:["cuda","vulkan","default"],gpu_memory_fraction:.85,cpu_memory_fraction:L},model:{repo_id:null,revision:"main",filename:null,url:null,quantization:null,preferred_quantizations:[],n_ctx:null,n_gpu_layers:"auto",n_parallel:4,n_batch:2048,flash_attn:"auto",cache_k_type:"f16",cache_v_type:"f16",ctx_shift:!1,kv_unified:!1,swa_full:!1,allow_local_file:!1,local_path:null,api_base:$,base_url:U},runtime:{cache_dir:D,prefer_variants:[],huggingface_token:process.env.HUGGINGFACE_TOKEN||null,http_headers:{}}},G=(e,t=[])=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[...t],J=e=>{if(!e)return null;const t=String(e).toLowerCase();return["cuda","vulkan","default"].includes(t)?t:null},V=(e={})=>{const t=JSON.parse(JSON.stringify(F));if(q(t,e),t.backend.variant=J(t.backend.variant),t.backend.variant_preference=Array.from(new Set(G(t.backend.variant_preference).map(J).filter(Boolean))),0===t.backend.variant_preference.length&&(t.backend.variant_preference=["cuda","vulkan","default"]),t.runtime.prefer_variants=Array.from(new Set(G(t.runtime.prefer_variants).map(J).filter(Boolean))),t.model.preferred_quantizations=Array.from(new Set(G(t.model.preferred_quantizations||t.model.quantizations).map((e=>e?String(e).toLowerCase():null)).filter(Boolean))),t.model.quantization){const e=String(t.model.quantization).toLowerCase();t.model.preferred_quantizations.includes(e)||t.model.preferred_quantizations.unshift(e)}return t.model.n_parallel=Math.max(1,Number(t.model.n_parallel)||4),t.model.n_batch=Math.max(1,Number(t.model.n_batch)||512),t.model.base_url=t.model.base_url||U,t.model.api_base=t.model.api_base||$,t.runtime.cache_dir=t.runtime.cache_dir?i.resolve(t.runtime.cache_dir):D,t},Y=e=>{const t=e.toLowerCase();return z.find((e=>t.includes(e)))||null},H=async e=>{await(0,l.mkdir)(e,{recursive:!0})},Q=(e,t,r=D)=>{const n=(0,c.createHash)("sha256").update(e).digest("hex");return i.join(((e=D)=>i.join(e,".metadata-cache"))(r),t,`${n}.json`)},K=async(e,t,r=D)=>{try{const n=Q(e,t,r),o=await(0,l.readFile)(n,"utf-8");return console.log(`[Cache] Hit ${t} cache:`,i.basename(n)),JSON.parse(o,((e,t)=>"string"==typeof t&&t.startsWith("__bigint__")?BigInt(t.slice(10)):t))}catch(e){return null}},W=async(e,t,r,n=D)=>{try{const o=Q(e,t,n);await H(i.dirname(o)),await(0,l.writeFile)(o,JSON.stringify(r,((e,t)=>"bigint"==typeof t?`__bigint__${t.toString()}`:t)),"utf-8"),console.log(`[Cache] Wrote ${t} cache:`,i.basename(o))}catch(e){console.warn(`[Cache] Failed to write ${t} cache:`,e.message)}},Z=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const r=await fetch(e,t);if(!r.ok){const t=await r.text().catch((()=>""));throw new Error(`Failed to fetch ${e}: ${r.status} ${r.statusText} ${t}`.trim())}return r.json()},X=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const r=await fetch(e,{...t,method:"HEAD"});if(!r.ok)throw new Error(`Failed to fetch headers for ${e}: ${r.status} ${r.statusText}`);return r},ee=async(e,t,r=D)=>{const n=JSON.stringify({url:e,headers:t}),o=await K(n,"range-metadata",r);if(o)return o;const a=!/^https?:/i.test(e),{metadata:i}=await(0,u.gguf)(e,{fetch,additionalFetchHeaders:t,allowLocalFile:a});return await W(n,"range-metadata",i,r),i},te=async(e,t)=>{try{const r=await(0,l.stat)(e);return!t||r.size===t}catch(e){return!1}},re=async(e,t,r,n,o)=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");await H(i.dirname(r));const a=await fetch(e,{headers:t});if(!a.ok||!a.body)throw new Error(`Failed to download ${e}: ${a.status} ${a.statusText}`);const s=await(0,l.open)(r,"w"),c=Number(a.headers.get("content-length"))||n||0;let u=0,d=.05;try{await a.body.pipeTo(new I({async write(e){if(await s.write(e),u+=e.byteLength,"function"==typeof o&&c>0){const e=Math.min(1,u/c);for(;e>=d;)o(d),d+=.05}},async close(){await s.close(),"function"==typeof o&&o(1)},async abort(e){throw await s.close().catch((()=>{})),await(0,l.unlink)(r).catch((()=>{})),e}}))}catch(e){throw await s.close().catch((()=>{})),await(0,l.unlink)(r).catch((()=>{})),e}if(n){const e=await(0,l.stat)(r);if(e.size!==n)throw await(0,l.unlink)(r).catch((()=>{})),new Error(`Downloaded file size mismatch, expected ${n} got ${e.size}`)}},ne=async e=>{const t=e.model.repo_id||e.model.repository||e.model.model;if(!t)throw new Error("`model.repo_id` is required in Buttress backend config");const r=e.model.revision||"main",n=e.runtime.cache_dir,o=JSON.stringify({repoId:t,revision:r,filename:e.model.filename,url:e.model.url,quantization:e.model.quantization,preferred_quantizations:e.model.preferred_quantizations}),a=await K(o,"artifact-info",n);if(a)return a;const i={...e.runtime.http_headers||{}};if(e.runtime.huggingface_token&&(i.Authorization=`Bearer ${e.runtime.huggingface_token}`),e.model.url){const a=await X(e.model.url,{headers:i}),s=Number(a.headers.get("content-length"))||null,l={repoId:t,revision:r,filename:e.model.filename||e.model.url.split("/").pop(),url:e.model.url,size:s,headers:i};return await W(o,"artifact-info",l,n),l}let{filename:s}=e.model,l=e.model.quantization&&String(e.model.quantization).toLowerCase();const c=await Z(`${e.model.api_base}/models/${t}?revision=${r}&blobs=true`,{headers:i}),u=(c?.siblings||c?.files||[]).map((e=>e.rfilename||e.path||e.filename)).filter((e=>"string"==typeof e&&e.endsWith(".gguf")));if(0===u.length)throw new Error(`No GGUF artifacts found in repo ${t}`);const d=e.model.preferred_quantizations.length>0?e.model.preferred_quantizations:z;if(s)l||(l=Y(s));else{const e=(()=>{const e=d.find((e=>u.find((t=>t.toLowerCase().includes(e)))));if(e)return{filename:u.find((t=>t.toLowerCase().includes(e))),quantization:e};return null})()||{filename:u[0],quantization:null},{filename:t,quantization:r}=e;s=t,l=r||Y(s)}const p=`${e.model.base_url.replace(/\/+$/,"")}/${t}/resolve/${r}/${s}`,f=/-(\d{5})-of-(\d{5})\.gguf$/,m=s.match(f);let y=null;if(m){const[,,n]=m,o=await Z(`${e.model.api_base}/models/${t}?revision=${r}&blobs=true`,{headers:i}),a=o?.siblings||o?.files||[],l=Number(n);y=0;for(let e=1;e<=l;e+=1){const t=String(e).padStart(5,"0"),r=s.replace(f,`-${t}-of-${n}.gguf`),o=a.find((e=>(e.rfilename||e.path||e.filename)===r)),i=Number(o?.size);Number.isFinite(i)&&i>0&&(y+=i)}}else{const e=await X(p,{headers:i});y=Number(e.headers.get("content-length"))||null}const h={repoId:t,revision:r,filename:s,url:p,size:y,quantization:l,headers:i,isSplit:Boolean(m),splitCount:m?Number(m[2]):0};return await W(o,"artifact-info",h,n),h},oe=async(e,{modelBytes:t=null,kvCacheBytes:r=null}={})=>{const n=(e=>{const t=[];return e.backend.variant&&t.push(e.backend.variant),e.runtime.prefer_variants.length>0&&t.push(...e.runtime.prefer_variants),t.push(...e.backend.variant_preference),t.push("default"),Array.from(new Set(t.map(J).filter(Boolean)))})(e),[o,...a]=n,i=null!=e.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.gpu_memory_fraction))):F.backend.gpu_memory_fraction||1,l=null!=e.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):L,c=await T({platform:process.platform,totalMemoryInBytes:s.totalmem(),backend:"ggml-llm",variant:o||null,preferVariants:a,gpuMemoryFraction:i,cpuMemoryFraction:l,dependencies:{getBackendDevicesInfo:d.getBackendDevicesInfo,isLibVariantAvailable:d.isLibVariantAvailable},modelBytes:t,kvCacheBytes:r}),u=e=>({...e,devices:Array.isArray(e.devices)?e.devices:[],ok:e.ok,hasGpu:Boolean(e.hasGpu),totalMemory:e.gpuTotalBytes||e.totalMemory||0,error:e.ok?null:new Error(e.error||`Variant ${e.variant} not available on this platform`)});if(!c.ok||!c.selected){const e=(c.attempts||[]).map((e=>`${e.variant}: ${e.error||"unknown error"}`)).join("; ");throw new Error(`Unable to initialize any backend variant (${n.join(", ")}). Errors: ${e}`)}const p=(c.attempts||[]).map(u);return{selected:u(c.selected),attempts:p}},ae=({elementSize:e,availableMemory:t,modelBytes:r,nCtx:n})=>{let o=null;if(e>0&&t>r){const n=t-r,a=Math.floor(n/e);a>0&&(o=a)}return o&&o<n?o:n},ie=async e=>{const t=await ne(e),r=await ee(t.url,t.headers,e.runtime.cache_dir),n=r["general.architecture"],o=r[`${n}.context_length`]||r["llama.context_length"],a=r[`${n}.block_count`]||r["llama.block_count"],l=r[`${n}.embedding_length`]||r["llama.embedding_length"],c=r[`${n}.attention.head_count`]||r["llama.attention.head_count"],u=r[`${n}.attention.head_count_kv`]||r["llama.attention.head_count_kv"]||c,d=r[`${n}.attention.key_length`]||r["llama.attention.key_length"],p=r[`${n}.attention.value_length`]||r["llama.attention.value_length"],f=Number.isFinite(Number(a))?Number(a):0,m=Number.isFinite(Number(l))?Number(l):0,y=Number.isFinite(Number(c))?Number(c):0,h=Number.isFinite(Number(u))?Number(u):y,v=y>0&&m>0?m/y:128,b=Number.isFinite(Number(d))?Number(d):v,g=Number.isFinite(Number(p))?Number(p):v,_=r["general.quantization_version"]||null,w=r["general.file_type"]||null,x=e.model.n_ctx?Number(e.model.n_ctx):null;let E=x||o||4096;const S=[],k=[];let O=!0;if(x&&o&&x>o){O=!1;const e=`Requested context length (${x}) exceeds model training context (${o})`;S.push(e),k.push(e),E=o}x&&!o&&S.push("Model metadata missing training context length, using requested value");const T={k:e.model.cache_k_type,v:e.model.cache_v_type},N=t.size>0?t.size:0,P=f&&h&&b&&g?f*h*(b*C(T.k)+g*C(T.v)):0,R=M(f,E,h,b,g,T),A=await oe(e,{modelBytes:N,kvCacheBytes:R}),B=A.selected.totalMemory||0,I=B*(e.backend.gpu_memory_fraction||1),j=null!=e.backend.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):L,q=Math.max(0,s.totalmem()*j),U=A.selected.hasGpu?I:q,$=ae({elementSize:P,availableMemory:U,modelBytes:N,nCtx:E});if(!x&&$){const e=o?Math.min($,o):$,t=Math.max(32,e);t<E&&S.push(`Context length capped to ${t} by memory limits`),E=t}E>$&&(E=$);const D=Math.floor($);console.log(`[buttress] Memory-limited context length: ${D}`);const z=M(f,E,h,b,g,T),F=N+z,G=f?N/(f+1):N;let J,V=0;A.selected.hasGpu&&G>0&&(V=Math.min(f+1,Math.max(0,Math.floor(I/G)))),console.log(`[buttress] Auto GPU layer capacity (${A.selected.variant}): ${V}/${f+1}`),J="auto"===e.model.n_gpu_layers||null==e.model.n_gpu_layers?V:Math.max(0,Math.min(Number(e.model.n_gpu_layers)||0,f+1));const Y=(()=>{const t=e.model.flash_attn&&String(e.model.flash_attn).toLowerCase();return"on"===t||"off"===t?t:A.selected.hasGpu?"auto":"off"})(),H=e.runtime.cache_dir,Q=((e,t)=>{if(e.model.local_path)return i.resolve(e.model.local_path);const r=t.repoId.split("/"),n=i.join(e.runtime.cache_dir,...r,t.revision);return i.join(n,t.filename)})(e,t),K=await te(Q,t.size),W={ok:O,backend:"ggml-llm",warnings:S,errors:k,model:{repoId:t.repoId,revision:t.revision,filename:t.filename,quantization:t.quantization,url:t.url,sizeBytes:t.size,metadata:{architecture:n,n_ctx_train:o,n_layer:f,n_embd:m,quantization_version:_,file_type:w}},runtime:{variant:A.selected.variant,n_ctx:E,requested_ctx:x,n_gpu_layers:J,n_parallel:e.model.n_parallel,n_batch:e.model.n_batch,flash_attn_type:Y,cache_type_k:T.k,cache_type_v:T.v,ctx_shift:e.model.ctx_shift,kv_unified:e.model.kv_unified,swa_full:e.model.swa_full,estimated_max_n_ctx:D,auto_gpu_layers:V},resources:{modelBytes:N,kvCacheBytes:z,totalEstimatedBytes:F,gpuCapacityBytes:B,gpuUsableBytes:I,cpuUsableBytes:q,fit:A.selected.fit},devices:{selected:A.selected,attempts:A.attempts},download:{cacheDir:H,localPath:Q,exists:K},timestamp:(new Date).toISOString()};return{config:e,info:W,artifact:t,metadata:{arch:n,nCtxTrain:o,nLayer:f,nEmbd:m},devices:A,cacheTypes:T,localPath:Q,localExists:K}},se=(e,t)=>`event: ${e}\ndata: ${null==t?"":JSON.stringify(t)}\n\n`,le=(e,t)=>{let r;return new B({async start(n){try{const o=await e.parallel.completion(t,((e,t)=>{t&&n.enqueue(j.encode(se("token",{requestId:e,...t})))})),{requestId:a}=o;r=o.stop;const i=await o.promise;console.log("[Completion] Result:",i),n.enqueue(j.encode(se("result",{requestId:a,...i}))),n.close()}catch(e){n.enqueue(j.encode(se("error",{message:e?.message||String(e)}))),n.error(e)}},cancel(){r&&r()}})},ce=e=>{const t={model:e.plan.localPath,runtime:e.plan.info.runtime};return(0,c.createHash)("sha256").update(JSON.stringify(t)).digest("hex").slice(0,24)},ue=async(e,t)=>{const r=ce(e);let n=e.contexts.get(r);if(n)return n.refCount+=1,await n.ready,"function"==typeof t&&t(1),n;n={key:r,refCount:1},n.ready=(async()=>{const r=await(async(e,t,r)=>{const{config:n,localPath:o,artifact:a}=e;if(e.localExists&&!t.has(o))return e.info.download.exists=!0,"function"==typeof r&&r(.5),o;if(n.model.local_path&&!n.model.allow_local_file)throw new Error("Local model path provided but `model.allow_local_file` is not enabled");const s=o;t.has(s)||t.set(s,(async()=>{if(a.isSplit&&a.splitCount>0){const e=/-(\d{5})-of-(\d{5})\.gguf$/,t=i.dirname(o),s=a.splitCount;let l=0;for(let o=1;o<=s;o+=1){const c=String(o).padStart(5,"0"),u=a.filename.replace(e,`-${c}-of-${String(s).padStart(5,"0")}.gguf`),d=`${n.model.base_url.replace(/\/+$/,"")}/${a.repoId}/resolve/${a.revision}/${u}`,p=i.join(t,u);await te(p)||await re(d,a.headers,p,null,(e=>{if(e>=0&&Number.isFinite(e)){const t=(l+e)/s,n=Math.round(100*t);console.log(`Downloading model splits: ${Math.min(100,n)}%`),"function"==typeof r&&r(.5*t)}})),l+=1}}else await re(a.url,a.headers,o,a.size,(e=>{if(e>=0&&Number.isFinite(e)){const t=Math.round(100*e);console.log(`Downloading model: ${Math.min(100,t)}%`),"function"==typeof r&&r(.5*e)}}));e.localExists=!0,e.info.download.exists=!0})());try{await t.get(s)}finally{t.delete(s)}return o})(e.plan,e.downloads,t);"function"==typeof t&&t(.5);const o={model:r,n_ctx:e.plan.info.runtime.n_ctx,n_gpu_layers:e.plan.info.runtime.n_gpu_layers,n_parallel:e.plan.info.runtime.n_parallel,n_batch:e.plan.info.runtime.n_batch,flash_attn_type:e.plan.info.runtime.flash_attn_type,ctx_shift:e.plan.info.runtime.ctx_shift,kv_unified:e.plan.info.runtime.kv_unified,swa_full:e.plan.info.runtime.swa_full,lib_variant:e.plan.info.runtime.variant};let a;"off"!==e.plan.info.runtime.flash_attn_type&&(o.cache_type_k=e.plan.info.runtime.cache_type_k,o.cache_type_v=e.plan.info.runtime.cache_type_v),console.log("[Context] Load Options:",o);try{if(a=await(0,d.loadModel)(o,(e=>{"function"==typeof t&&(t(.5+.25*e),e%5==0&&console.log("[Context] Load Model Progress:",e))})),e.plan.info.runtime.n_parallel){if(!await a.parallel.enable({n_parallel:e.plan.info.runtime.n_parallel,n_batch:e.plan.info.runtime.n_batch}))throw new Error("Failed to enable parallel decoding mode for context")}return"function"==typeof t&&t(1),n.context=a,n.modelInfo=a.getModelInfo(),n}catch(e){if(a)try{a.release()}catch(e){}throw e}})(),e.contexts.set(r,n);try{return await n.ready,n}catch(t){throw e.contexts.delete(r),t}},de=async(e,t,r=!1)=>{if(r)t.refCount=0;else if(t.refCount=Math.max(0,t.refCount-1),t.refCount>0)return!1;e.contexts.delete(t.key);try{t.context?.parallel?.disable?.()}catch(e){}return await(t.context?.release?.()),!0};const pe=e=>{const t=V(e);return t.model.repo_id||t.model.repository||t.model.model||null};const fe=e=>e?"number"==typeof e.score&&Number.isFinite(e.score)?Number(e.score):b(e):0;async function me(e=null,t={}){const{threshold:r=1.1,includeBreakdown:n=!1,config:o,...a}=t;let i=null,l=null,c=null,u=null,p=null,f=null;if(o)try{const{modelBytes:e,kvCacheBytes:t,limitedKvCacheBytes:r,memoryLimitedCtx:n,kvInfo:a,quantization:d}=await async function(e){const t=V(e),r=await ne(t),n=await ee(r.url,r.headers,t.runtime.cache_dir),o=n["general.architecture"],a=n[`${o}.context_length`]||n["llama.context_length"],i=n[`${o}.block_count`]||n["llama.block_count"],l=n[`${o}.embedding_length`]||n["llama.embedding_length"],c=n[`${o}.attention.head_count`]||n["llama.attention.head_count"],u=n[`${o}.attention.head_count_kv`]||n["llama.attention.head_count_kv"]||c,d=n[`${o}.attention.key_length`]||n["llama.attention.key_length"],p=n[`${o}.attention.value_length`]||n["llama.attention.value_length"],f=Number.isFinite(Number(i))?Number(i):0,m=Number.isFinite(Number(l))?Number(l):0,y=Number.isFinite(Number(c))?Number(c):0,h=Number.isFinite(Number(u))?Number(u):y,v=y>0&&m>0?m/y:128,b=Number.isFinite(Number(d))?Number(d):v,g=Number.isFinite(Number(p))?Number(p):v,_=(t.model.n_ctx?Number(t.model.n_ctx):null)||a||4096,w={k:t.model.cache_k_type,v:t.model.cache_v_type},x=r.size>0?r.size:0,E=f&&h&&b&&g?f*h*(b*C(w.k)+g*C(w.v)):0,S=null!=t.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.gpu_memory_fraction))):F.backend.gpu_memory_fraction||1,k=null!=t.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.cpu_memory_fraction))):L,O=M(f,_,h,b,g,w),T=await oe(t,{modelBytes:x,kvCacheBytes:O}),N=(T.selected.totalMemory||0)*S,P=Math.max(0,s.totalmem()*k),R=T.selected.hasGpu?N:P,A=ae({elementSize:E,availableMemory:R,modelBytes:x,nCtx:_}),B=M(f,_,h,b,g,w),I=M(f,A,h,b,g,w),j=n["general.quantization_version"]||null;return{kvInfo:{nCtxTrain:a,nLayer:f,nEmbd:m,nHeadKv:h,nEmbdHeadK:b,nEmbdHeadV:g,nHeadCount:y,nHeadKvCount:h},modelBytes:x,kvCacheBytes:B,limitedKvCacheBytes:I,memoryLimitedCtx:A,quantization:{fileType:n["general.file_type"]||null,version:j}}}(o);i=e,l=t,c=r,u=n,p=a,f=d}catch(e){}const m=null!=o?.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.gpu_memory_fraction))):void 0,y=null!=o?.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.cpu_memory_fraction))):void 0,h=await T({...a,platform:process.platform,totalMemoryInBytes:s.totalmem(),backend:"ggml-llm",includeBreakdown:n,gpuMemoryFraction:m,cpuMemoryFraction:y,dependencies:{getBackendDevicesInfo:d.getBackendDevicesInfo,isLibVariantAvailable:d.isLibVariantAvailable},modelBytes:i,kvCacheBytes:l,limitedKvCacheBytes:c}),v=h.selected,b=fe(v);v.modelBytes=i||null,v.kvCacheBytes=l||null,v.memoryLimitedCtx=u||null,v.limitedKvCacheBytes=c||null,v.kvInfo=p||null,v.quantization=f||null;let g=null,_=null;if(e){const t=fe(e);_={...e,score:t};let n="buttress",o="buttress-higher-score";if(h.ok)if(t||0===t){const e=_.fit,a=_.limitedFit,i=v?.fit,s=v?.limitedFit,l=e?.fitsInGpu||e?.fitsInCpu||a?.fitsInGpu||a?.fitsInCpu,c=i?.fitsInGpu||i?.fitsInCpu||s?.fitsInGpu||s?.fitsInCpu;l&&!c?(n="local",o="client-fits-in-memory"):c&&!l?(n="buttress",o="buttress-fits-in-memory"):t>b*r?(n="local",o="client-better"):b>t*r?(n="buttress",o="buttress-better"):(n="either",o="comparable-scores")}else n="buttress",o="missing-client-score";else n="local",o="buttress-unavailable";g={buttressScore:b,clientScore:t,threshold:r,recommendation:n,reason:o}}h.ok||g||(g={buttressScore:b,clientScore:e?.score??null,threshold:r,recommendation:"local",reason:"buttress-unavailable"});let w=null;return o&&(w={repoId:o.model?.repo_id||null,quantization:o.model?.quantization||null,nCtx:o.model?.n_ctx||null,cacheKType:o.model?.cache_k_type||"f16",cacheVType:o.model?.cache_v_type||"f16"}),{type:"ggml-llm",timestamp:(new Date).toISOString(),buttress:h,client:_,comparison:g,modelConfig:w}}const ye=new Map,he=e=>{const t=(e=>{const t=ye.get(e);if(!t)throw new Error(`Unknown generator id "${e}"`);return t})(e);if("ggml-llm"!==t.type)throw new Error(`Generator "${e}" does not support GGML LLM backend`);return t.instance};async function ve(e,t){if("ggml-llm"!==e)throw new Error("Currently only GGML LLM backend is supported");const r=pe(t);if(!r)throw new Error("Buttress generator config missing repo identifier");const n=`${e}:${r}`,o=ye.get(n);if(o)return o.refCount+=1,{id:o.id,info:o.instance.info};const a=await async function(e,t){const r=await ie(V(t)),n={id:e,type:"ggml-llm",config:t,plan:r,info:r.info,contexts:new Map,downloads:new Map};return{id:e,type:"ggml-llm",info:r.info,initContext:async(e={})=>{const{onProgress:t}=e,r=await ue(n,t);return{modelInfo:r.modelInfo?{...r.modelInfo}:null,runtime:{...n.plan.info.runtime},download:{...n.plan.info.download}}},completion:async(e={})=>{const{options:t={}}=e,r=ce(n),o=n.contexts.get(r);if(!o)throw new Error(`Context "${r}" not initialized`);return await o.ready,le(o.context,t)},tokenize:async(e={})=>{const{text:t="",params:r={}}=e,o=ce(n),a=n.contexts.get(o);if(!a)throw new Error(`Context "${o}" not initialized`);await a.ready;const i=await a.context.tokenize(t,r);if(!i)return{tokens:[]};const s=Array.from(i.tokens??[]).map((e=>Number(e)));return{...i,tokens:s}},detokenize:async(e={})=>{const{tokens:t=[]}=e,r=ce(n),o=n.contexts.get(r);if(!o)throw new Error(`Context "${r}" not initialized`);await o.ready;const a=t.map((e=>Number(e)));return o.context.detokenize(a)},applyChatTemplate:async(e={})=>{const{messages:t=[],template:r,params:o}=e,a=ce(n),i=n.contexts.get(a);if(!i)throw new Error(`Context "${a}" not initialized`);return await i.ready,i.context.getFormattedChat(t,r,o)},releaseContext:async(e={})=>{const t=ce(n),r=n.contexts.get(t);return!!r&&de(n,r,Boolean(e.force))},finalize:async()=>{const e=Array.from(n.contexts.values()).map((e=>de(n,e,!0)));await Promise.allSettled(e)}}}(n,t),i={id:n,type:a.type,instance:a,refCount:1};return ye.set(n,i),{id:n,info:a.info}}async function be(e){const t=ye.get(e);return!!t&&(t.refCount-=1,t.refCount<=0&&(await t.instance.finalize(),ye.delete(e)),!0)}async function ge(e,t=null,r={}){if("ggml-llm"===e)return me(t,r);throw new Error(`Unknown backend type: ${e}`)}const _e={initContext:async(e,t)=>he(e).initContext(t),completion:async(e,t)=>he(e).completion(t),tokenize:async(e,t)=>he(e).tokenize(t),detokenize:async(e,t)=>he(e).detokenize(t),applyChatTemplate:async(e,t)=>he(e).applyChatTemplate(t),releaseContext:async(e,t)=>he(e).releaseContext(t)};function we(e,t){return"ggml-llm"===e?pe(t):null}},136:t=>{t.exports=e(import.meta.url)("node:url")},161:t=>{t.exports=e(import.meta.url)("node:os")},173:(e,t,r)=>{r.a(e,(async(e,n)=>{try{r.d(t,{N1:()=>u.N,UD:()=>k,Ux:()=>c.Ux,YO:()=>c.YO,Zy:()=>c.Zy,aE:()=>E,bR:()=>c.bR,sA:()=>S});var o=r(333),a=r(249),i=r(427),s=r(971),l=r(101),c=r(508),u=r(534),d=e([c]);c=(d.then?(await d)():d)[0];const p=new TextDecoder,f=o.initTRPC.context().create(),m=s.z.record(s.z.any()).optional(),y=s.z.object({id:s.z.string()}),h=s.z.object({id:s.z.string(),property:s.z.any().optional()}),v=s.z.object({type:s.z.string(),config:m}),b=s.z.object({type:s.z.string().optional().default("ggml-llm"),config:m,currentClientCapabilities:s.z.record(s.z.any()).optional(),options:s.z.record(s.z.any()).optional()}).optional(),g=(e,t)=>{const r=e.getReader();let n=!0;return(async()=>{try{for(;n;){const{value:e,done:o}=await r.read();if(o||!n)break;if(e){const r=p.decode(e,{stream:!0});t.next(r)}}t.complete()}catch(e){t.error(e)}finally{r.cancel().catch((()=>{}))}})(),()=>{n=!1,r.cancel().catch((()=>{}))}},_=(e={},t={})=>{const r=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?r[e]=_(r[e]||{},t):r[e]=t})),r},w=e=>e&&"object"==typeof e?JSON.parse(JSON.stringify(e)):null,x=(e,t)=>{const r=w(e)||{},n=w(t)||{};return _(r,n)},E=(e=l,{defaultConfig:t}={})=>{const r=w(t)||{},n=Array.isArray(r.generators)?r.generators:[],{server:o,generators:a,...s}=r,c=e=>_(JSON.parse(JSON.stringify(s)),e||{}),u=(e,t)=>{if(n.length>0){const r=n.filter((t=>t?.type===e));if(r.length>0&&t){const e=r.find((e=>e.model?.repo_id===t));if(e)return c(e)}}return Object.keys(s).length>0?c({}):null};return f.router({getCapabilities:f.procedure.input(b).query((async({input:t})=>{console.log("[Server] Get Capabilities:",t);const r=t||{type:"ggml-llm"},{type:n="ggml-llm",config:o,currentClientCapabilities:a=null,options:i={}}=r,s=w(o),l=e.getModelIdentifier(n,s),c=u(n,l),d=x(c,o);if(0===Object.keys(d).length)throw new Error("Buttress server missing generator configuration");return d.backend=d.backend||{},d.backend.type||(d.backend.type=n),e.getCapabilities(n,a,{...i,config:d})})),startGenerator:f.procedure.input(v).mutation((async({input:t})=>{console.log("[Server] Start Generator:",t);const{type:r,config:n}=t,o=w(n),a=e.getModelIdentifier(r,o),i=u(r,a),s=x(i,n);if(0===Object.keys(s).length)throw new Error("Buttress server missing generator configuration");return s.backend=s.backend||{},s.backend.type||(s.backend.type=r),e.startGenerator(r,s)})),finalizeGenerator:f.procedure.input(y).mutation((async({input:t})=>(console.log("[Server] Finalize Generator:",t),e.finalizeGenerator(t.id)))),ggmlLlm:f.router({initContext:f.procedure.input(h).subscription((({input:t})=>(0,i.sH)((r=>{console.log("[Server] Init Context:",t);let n=!0;return(async()=>{try{const o={...t.property,onProgress:e=>{n&&r.next({progress:e})}};await new Promise((e=>setTimeout(e)));const a=await e.ggmlLlm.initContext(t.id,o);n&&(r.next({result:a}),r.complete())}catch(e){n&&r.error(e)}})(),()=>{n=!1}})))),completion:f.procedure.input(h).subscription((({input:t})=>(0,i.sH)((r=>{console.log("[Server] Completion:",t);let n=()=>{};return(async()=>{try{const o=await e.ggmlLlm.completion(t.id,t.property);if(!o)return void r.complete();n=g(o,r)}catch(e){r.error(e)}})(),()=>n()})))),tokenize:f.procedure.input(h).query((async({input:t})=>(console.log("[Server] Tokenize:",t),e.ggmlLlm.tokenize(t.id,t.property)))),detokenize:f.procedure.input(h).mutation((async({input:t})=>(console.log("[Server] Detokenize:",t),e.ggmlLlm.detokenize(t.id,t.property)))),applyChatTemplate:f.procedure.input(h).query((async({input:t})=>(console.log("[Server] Apply Chat Template:",t),e.ggmlLlm.applyChatTemplate(t.id,t.property)))),releaseContext:f.procedure.input(h).mutation((async({input:t})=>(console.log("[Server] Release Context:",t),e.ggmlLlm.releaseContext(t.id,t.property))))})})},S=({backend:e=l,router:t,createContext:r=(()=>({})),defaultConfig:n}={})=>{const o=t||E(e,{defaultConfig:n});return{server:(0,a.qv)({router:o,createContext:r,basePath:"/trpc/"}),router:o,backend:e}},k=async({port:e=2080,backend:t,router:r,createContext:n,defaultConfig:o}={})=>{const{server:a,router:i}=S({backend:t,router:r,createContext:n,defaultConfig:o});return await new Promise((t=>a.listen(e,t))),{server:a,router:i,port:e}};n()}catch(e){n(e)}}))},249:(t,r,n)=>{n.d(r,{qv:()=>xt});const o={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,BAD_GATEWAY:-32603,SERVICE_UNAVAILABLE:-32603,GATEWAY_TIMEOUT:-32603,UNAUTHORIZED:-32001,PAYMENT_REQUIRED:-32002,FORBIDDEN:-32003,NOT_FOUND:-32004,METHOD_NOT_SUPPORTED:-32005,TIMEOUT:-32008,CONFLICT:-32009,PRECONDITION_FAILED:-32012,PAYLOAD_TOO_LARGE:-32013,UNSUPPORTED_MEDIA_TYPE:-32015,UNPROCESSABLE_CONTENT:-32022,PRECONDITION_REQUIRED:-32028,TOO_MANY_REQUESTS:-32029,CLIENT_CLOSED_REQUEST:-32099},a={[-32700]:"PARSE_ERROR",[-32600]:"BAD_REQUEST",[-32603]:"INTERNAL_SERVER_ERROR",[-32001]:"UNAUTHORIZED",[-32002]:"PAYMENT_REQUIRED",[-32003]:"FORBIDDEN",[-32004]:"NOT_FOUND",[-32005]:"METHOD_NOT_SUPPORTED",[-32008]:"TIMEOUT",[-32009]:"CONFLICT",[-32012]:"PRECONDITION_FAILED",[-32013]:"PAYLOAD_TOO_LARGE",[-32015]:"UNSUPPORTED_MEDIA_TYPE",[-32022]:"UNPROCESSABLE_CONTENT",[-32028]:"PRECONDITION_REQUIRED",[-32029]:"TOO_MANY_REQUESTS",[-32099]:"CLIENT_CLOSED_REQUEST"};o.BAD_GATEWAY,o.SERVICE_UNAVAILABLE,o.GATEWAY_TIMEOUT,o.INTERNAL_SERVER_ERROR;function i(e){return!!e&&!Array.isArray(e)&&"object"==typeof e}const s="function"==typeof Symbol&&!!Symbol.asyncIterator;function l(e){return s&&i(e)&&Symbol.asyncIterator in e}const c=e=>e();function u(e){return e}var d=Object.create,p=Object.defineProperty,f=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyNames,y=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,v=(e,t)=>function(){return t||(0,e[m(e)[0]])((t={exports:{}}).exports,t),t.exports},b=(e,t,r)=>(r=null!=e?d(y(e)):{},((e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var o,a=m(t),i=0,s=a.length;i<s;i++)o=a[i],h.call(e,o)||o===r||p(e,o,{get:(e=>t[e]).bind(null,o),enumerable:!(n=f(t,o))||n.enumerable});return e})(!t&&e&&e.__esModule?r:p(r,"default",{value:e,enumerable:!0}),e));const g={PARSE_ERROR:400,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_SUPPORTED:405,TIMEOUT:408,CONFLICT:409,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,UNSUPPORTED_MEDIA_TYPE:415,UNPROCESSABLE_CONTENT:422,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504};function _(e){var t;return null!==(t=g[e])&&void 0!==t?t:500}function w(e){return _(e.code)}var x=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,t){function r(e){return t.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports}}),E=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,t){var r=x().default;t.exports=function(e,t){if("object"!=r(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},t.exports.__esModule=!0,t.exports.default=t.exports}}),S=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,t){var r=x().default,n=E();t.exports=function(e){var t=n(e,"string");return"symbol"==r(t)?t:t+""},t.exports.__esModule=!0,t.exports.default=t.exports}}),k=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,t){var r=S();t.exports=function(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},t.exports.__esModule=!0,t.exports.default=t.exports}}),O=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,t){var r=k();function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}t.exports=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e},t.exports.__esModule=!0,t.exports.default=t.exports}}),T=b(O(),1);function N(e){const{path:t,error:r,config:n}=e,{code:a}=e.error,i={message:r.message,code:o[a],data:{code:a,httpStatus:w(r)}};return n.isDev&&"string"==typeof e.error.stack&&(i.data.stack=e.error.stack),"string"==typeof t&&(i.data.path=t),n.errorFormatter((0,T.default)((0,T.default)({},e),{},{shape:i}))}var C=b(k(),1),M=class extends Error{};function P(e){if(e instanceof R)return e;if(e instanceof Error&&"TRPCError"===e.name)return e;const t=new R({code:"INTERNAL_SERVER_ERROR",cause:e});return e instanceof Error&&e.stack&&(t.stack=e.stack),t}var R=class extends Error{constructor(e){var t,r,n;const o=function(e){if(e instanceof Error)return e;const t=typeof e;return"undefined"!==t&&"function"!==t&&null!==e?"object"!==t?new Error(String(e)):i(e)?Object.assign(new M,e):void 0:void 0}(e.cause);super(null!==(t=null!==(r=e.message)&&void 0!==r?r:null==o?void 0:o.message)&&void 0!==t?t:e.code,{cause:o}),(0,C.default)(this,"cause",void 0),(0,C.default)(this,"code",void 0),this.code=e.code,this.name="TRPCError",null!==(n=this.cause)&&void 0!==n||(this.cause=o)}},A=b(O(),1);function B(e,t){return"error"in t?(0,A.default)((0,A.default)({},t),{},{error:e.transformer.output.serialize(t.error)}):"data"in t.result?(0,A.default)((0,A.default)({},t),{},{result:(0,A.default)((0,A.default)({},t.result),{},{data:e.transformer.output.serialize(t.result.data)})}):t}function I(e,t){return Array.isArray(t)?t.map((t=>B(e,t))):B(e,t)}Error;b(O(),1);async function j(e,t){const{_def:r}=e;let n=r.procedures[t];for(;!n;){const e=Object.keys(r.lazy).find((e=>t.startsWith(e)));if(!e)return null;const o=r.lazy[e];await o.load(),n=r.procedures[t]}return n}const q=Symbol();function U(e){return Array.isArray(e)&&e[2]===q}var $=n(427);function D(e){let t;try{t=JSON.parse(e)}catch(e){throw new R({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:e})}return function(e){try{if(null===e)return null;if(!i(e))throw new Error("Expected object");const t=Object.entries(e).filter((([e,t])=>"string"!=typeof t));if(t.length>0)throw new Error(`Expected connectionParams to be string values. Got ${t.map((([e,t])=>`${e}: ${typeof t}`)).join(", ")}`);return e}catch(e){throw new R({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:e})}}(t)}var z=b(O(),1);function L(e){let t=null;const r=Symbol.for("@trpc/server/http/memo");let n=r;return{read:async()=>{var o;return n!==r||(null!==(o=t)&&void 0!==o||(t=e().catch((e=>{if(e instanceof R)throw e;throw new R({code:"BAD_REQUEST",message:e instanceof Error?e.message:"Invalid input",cause:e})}))),n=await t,t=null),n},result:()=>n!==r?n:void 0}}const F={isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("application/json"))},async parse(e){var t;const{req:r}=e,n="1"===e.searchParams.get("batch"),o=n?e.path.split(","):[e.path],a=L((async()=>{let t;if("GET"===r.method){const r=e.searchParams.get("input");r&&(t=JSON.parse(r))}else t=await r.json();if(void 0===t)return{};if(!n)return{0:e.router._def._config.transformer.input.deserialize(t)};if(!i(t))throw new R({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});const a={};for(const r of o.keys()){const n=t[r];void 0!==n&&(a[r]=e.router._def._config.transformer.input.deserialize(n))}return a})),s=await Promise.all(o.map((async(t,r)=>{const n=await j(e.router,t);return{path:t,procedure:n,getRawInput:async()=>{let t=(await a.read())[r];if("subscription"===(null==n?void 0:n._def.type)){var o,s;const r=null!==(o=null!==(s=e.headers.get("last-event-id"))&&void 0!==s?s:e.searchParams.get("lastEventId"))&&void 0!==o?o:e.searchParams.get("Last-Event-Id");if(r)if(i(t))t=(0,z.default)((0,z.default)({},t),{},{lastEventId:r});else{var l;null!==(l=t)&&void 0!==l||(t={lastEventId:r})}}return t},result:()=>{var e;return null===(e=a.result())||void 0===e?void 0:e[r]}}}))),l=new Set(s.map((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})).filter(Boolean));if(l.size>1)throw new R({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(l).join(", ")}`});const c=null!==(t=l.values().next().value)&&void 0!==t?t:"unknown",u=e.searchParams.get("connectionParams");return{isBatchCall:n,accept:r.headers.get("trpc-accept"),calls:s,type:c,connectionParams:null===u?null:D(u),signal:r.signal,url:e.url}}},G=[F,{isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("multipart/form-data"))},async parse(e){const{req:t}=e;if("POST"!==t.method)throw new R({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});const r=L((async()=>await t.formData())),n=await j(e.router,e.path);return{accept:null,calls:[{path:e.path,getRawInput:r.read,result:r.result,procedure:n}],isBatchCall:!1,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}},{isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("application/octet-stream"))},async parse(e){const{req:t}=e;if("POST"!==t.method)throw new R({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});const r=L((async()=>t.body));return{calls:[{path:e.path,getRawInput:r.read,result:r.result,procedure:await j(e.router,e.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}}];async function J(e){const t=function(e){const t=G.find((t=>t.isMatch(e)));if(t)return t;if(!t&&"GET"===e.method)return F;throw new R({code:"UNSUPPORTED_MEDIA_TYPE",message:e.headers.has("content-type")?`Unsupported content-type "${e.headers.get("content-type")}`:"Missing content-type header"})}(e.req);return await t.parse(e)}function V(e){return i(e)&&"AbortError"===e.name}function Y(e="AbortError"){throw new DOMException(e,"AbortError")}function H(e){return"[object Object]"===Object.prototype.toString.call(e)}var Q=b(k(),1);let K;const W=new WeakMap,Z=()=>{};K=Symbol.toStringTag;var X,ee,te,re,ne=class e{constructor(e){(0,Q.default)(this,"promise",void 0),(0,Q.default)(this,"subscribers",[]),(0,Q.default)(this,"settlement",null),(0,Q.default)(this,K,"Unpromise"),this.promise="function"==typeof e?new Promise(e):e;const t=this.promise.then((e=>{const{subscribers:t}=this;this.subscribers=null,this.settlement={status:"fulfilled",value:e},null==t||t.forEach((({resolve:t})=>{t(e)}))}));"catch"in t&&t.catch((e=>{const{subscribers:t}=this;this.subscribers=null,this.settlement={status:"rejected",reason:e},null==t||t.forEach((({reject:t})=>{t(e)}))}))}subscribe(){let e,t;const{settlement:r}=this;if(null===r){if(null===this.subscribers)throw new Error("Unpromise settled but still has subscribers");const r=function(){let e,t;const r=new Promise(((r,n)=>{e=r,t=n}));return{promise:r,resolve:e,reject:t}}();this.subscribers=(n=this.subscribers,o=r,[...n,o]),e=r.promise,t=()=>{null!==this.subscribers&&(this.subscribers=function(e,t){const r=e.indexOf(t);return-1!==r?function(e,t){return[...e.slice(0,t),...e.slice(t+1)]}(e,r):e}(this.subscribers,r))}}else{const{status:n}=r;e="fulfilled"===n?Promise.resolve(r.value):Promise.reject(r.reason),t=Z}var n,o;return Object.assign(e,{unsubscribe:t})}then(e,t){const r=this.subscribe(),{unsubscribe:n}=r;return Object.assign(r.then(e,t),{unsubscribe:n})}catch(e){const t=this.subscribe(),{unsubscribe:r}=t;return Object.assign(t.catch(e),{unsubscribe:r})}finally(e){const t=this.subscribe(),{unsubscribe:r}=t;return Object.assign(t.finally(e),{unsubscribe:r})}static proxy(t){const r=e.getSubscribablePromise(t);return void 0!==r?r:e.createSubscribablePromise(t)}static createSubscribablePromise(t){const r=new e(t);return W.set(t,r),W.set(r,r),r}static getSubscribablePromise(e){return W.get(e)}static resolve(t){const r="object"==typeof t&&null!==t&&"then"in t&&"function"==typeof t.then?t:Promise.resolve(t);return e.proxy(r).subscribe()}static async any(t){const r=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.any(r)}finally{r.forEach((({unsubscribe:e})=>{e()}))}}static async race(t){const r=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.race(r)}finally{r.forEach((({unsubscribe:e})=>{e()}))}}static async raceReferences(e){const t=e.map(oe);try{return await Promise.race(t)}finally{for(const e of t)e.unsubscribe()}}};function oe(e){return ne.proxy(e).then((()=>[e]))}function ae(e,t){const r=e,n=r[Symbol.dispose];return r[Symbol.dispose]=()=>{t(),null==n||n()},r}function ie(e,t){const r=e,n=r[Symbol.asyncDispose];return r[Symbol.asyncDispose]=async()=>{await t(),await(null==n?void 0:n())},r}null!==(ee=(X=Symbol).dispose)&&void 0!==ee||(X.dispose=Symbol()),null!==(re=(te=Symbol).asyncDispose)&&void 0!==re||(te.asyncDispose=Symbol());const se=Symbol();function le(e){let t=null;return ae({start(){if(t)throw new Error("Timer already started");return new Promise((r=>{t=setTimeout((()=>r(se)),e)}))}},(()=>{t&&clearTimeout(t)}))}var ce=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(e,t){t.exports=function(){var e="function"==typeof SuppressedError?SuppressedError:function(e,t){var r=Error();return r.name="SuppressedError",r.error=e,r.suppressed=t,r},t={},r=[];function n(e,t){if(null!=t){if(Object(t)!==t)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(e)var n=t[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(void 0===n&&(n=t[Symbol.dispose||Symbol.for("Symbol.dispose")],e))var o=n;if("function"!=typeof n)throw new TypeError("Object is not disposable.");o&&(n=function(){try{o.call(t)}catch(e){return Promise.reject(e)}}),r.push({v:t,d:n,a:e})}else e&&r.push({d:t,a:e});return t}return{e:t,u:n.bind(null,!1),a:n.bind(null,!0),d:function(){var n,o=this.e,a=0;function i(){for(;n=r.pop();)try{if(!n.a&&1===a)return a=0,r.push(n),Promise.resolve().then(i);if(n.d){var e=n.d.call(n.v);if(n.a)return a|=2,Promise.resolve(e).then(i,s)}else a|=1}catch(e){return s(e)}if(1===a)return o!==t?Promise.reject(o):Promise.resolve();if(o!==t)throw o}function s(r){return o=o!==t?new e(r,o):r,i()}return i()}}},t.exports.__esModule=!0,t.exports.default=t.exports}}),ue=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(e,t){t.exports=function(e,t){this.v=e,this.k=t},t.exports.__esModule=!0,t.exports.default=t.exports}}),de=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(e,t){var r=ue();t.exports=function(e){return new r(e,0)},t.exports.__esModule=!0,t.exports.default=t.exports}}),pe=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(e,t){var r=ue();function n(e){var t,n;function o(t,n){try{var i=e[t](n),s=i.value,l=s instanceof r;Promise.resolve(l?s.v:s).then((function(r){if(l){var n="return"===t?"return":"next";if(!s.k||r.done)return o(n,r);r=e[n](r).value}a(i.done?"return":"normal",r)}),(function(e){o("throw",e)}))}catch(e){a("throw",e)}}function a(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?o(t.key,t.arg):n=null}this._invoke=function(e,r){return new Promise((function(a,i){var s={key:e,arg:r,resolve:a,reject:i,next:null};n?n=n.next=s:(t=n=s,o(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}n.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},n.prototype.next=function(e){return this._invoke("next",e)},n.prototype.throw=function(e){return this._invoke("throw",e)},n.prototype.return=function(e){return this._invoke("return",e)},t.exports=function(e){return function(){return new n(e.apply(this,arguments))}},t.exports.__esModule=!0,t.exports.default=t.exports}}),fe=b(ce(),1),me=b(de(),1),ye=b(pe(),1);function he(e){const t=e[Symbol.asyncIterator]();return t[Symbol.asyncDispose]?t:ie(t,(async()=>{var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))}))}function ve(){return(ve=(0,ye.default)((function*(e,t){try{var r=(0,fe.default)();const n=r.a(he(e)),o=r.u(le(t.maxDurationMs)).start();let a;for(;;){if(a=yield(0,me.default)(ne.race([n.next(),o])),a===se&&Y(),a.done)return a;yield a.value,a=null}}catch(e){r.e=e}finally{yield(0,me.default)(r.d())}}))).apply(this,arguments)}function be(){return(be=(0,ye.default)((function*(e,t){try{var r=(0,fe.default)();const n=r.a(he(e));let o;const a=r.u(le(t.gracePeriodMs));let i=t.count,s=new Promise((()=>{}));for(;;){if(o=yield(0,me.default)(ne.race([n.next(),s])),o===se&&Y(),o.done)return o.value;yield o.value,0==--i&&(s=a.start()),o=null}}catch(e){r.e=e}finally{yield(0,me.default)(r.d())}}))).apply(this,arguments)}function ge(){let e,t;return{promise:new Promise(((r,n)=>{e=r,t=n})),resolve:e,reject:t}}var _e=b(ce(),1),we=b(de(),1),xe=b(pe(),1);function Ee(){let e="idle",t=ge();const r=[],n=new Set,o=[];function a(r){if("pending"!==e)return;const a=function(e,t){const r=e[Symbol.asyncIterator]();let n="idle";function o(){n="done",t=()=>{}}return{pull:function(){"idle"===n&&(n="pending",r.next().then((e=>{if(e.done)return n="done",t({status:"return",value:e.value}),void o();n="idle",t({status:"yield",value:e.value})})).catch((e=>{t({status:"error",error:e}),o()})))},destroy:async()=>{var e;o(),await(null===(e=r.return)||void 0===e?void 0:e.call(r))}}}(r,(r=>{if("pending"===e){switch(r.status){case"yield":o.push([a,r]);break;case"return":n.delete(a);break;case"error":o.push([a,r]),n.delete(a)}t.resolve()}}));n.add(a),a.pull()}return{add(t){switch(e){case"idle":r.push(t);break;case"pending":a(t)}},[Symbol.asyncIterator]:()=>(0,xe.default)((function*(){try{var i=(0,_e.default)();if("idle"!==e)throw new Error("Cannot iterate twice");e="pending";i.a(ie({},(async()=>{e="done";const r=[];if(await Promise.all(Array.from(n.values()).map((async e=>{try{await e.destroy()}catch(e){r.push(e)}}))),o.length=0,n.clear(),t.resolve(),r.length>0)throw new AggregateError(r)})));for(;r.length>0;)a(r.shift());for(;n.size>0;){for(yield(0,we.default)(t.promise);o.length>0;){const[e,t]=o.shift();switch(t.status){case"yield":yield t.value,e.pull();break;case"error":throw t.error}}t=ge()}}catch(e){i.e=e}finally{yield(0,we.default)(i.d())}}))()}}function Se(e){const t=e[Symbol.asyncIterator]();return new ReadableStream({async cancel(){var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))},async pull(e){const r=await t.next();r.done?e.close():e.enqueue(r.value)}})}var ke=b(ce(),1),Oe=b(de(),1),Te=b(pe(),1);const Ne=Symbol("ping");function Ce(e,t){return Me.apply(this,arguments)}function Me(){return(Me=(0,Te.default)((function*(e,t){try{var r=(0,ke.default)();const o=r.a(he(e));let a,i=o.next();for(;;)try{var n=(0,ke.default)();const e=n.u(le(t));if(a=yield(0,Oe.default)(ne.race([i,e.start()])),a===se){yield Ne;continue}if(a.done)return a.value;i=o.next(),yield a.value,a=null}catch(e){n.e=e}finally{n.d()}}catch(e){r.e=e}finally{yield(0,Oe.default)(r.d())}}))).apply(this,arguments)}var Pe=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(e,t){function r(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return(r=function(e){this.s=e,this.n=e.next}).prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new r(e)}t.exports=function(e){var t,n,o,a=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,o=Symbol.iterator);a--;){if(n&&null!=(t=e[n]))return t.call(e);if(o&&null!=(t=e[o]))return new r(t.call(e));n="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")},t.exports.__esModule=!0,t.exports.default=t.exports}}),Re=b(de(),1),Ae=b(pe(),1),Be=b(ce(),1),Ie=b(Pe(),1);const je=0,qe=1,Ue=0,$e=1,De=0,ze=1,Le=2;function Fe(e){return(i(e)||"function"==typeof e)&&"function"==typeof(null==e?void 0:e.then)&&"function"==typeof(null==e?void 0:e.catch)}var Ge=class extends Error{constructor(e){super("Max depth reached at path: "+e.join(".")),this.path=e}};function Je(){return Je=(0,Ae.default)((function*(e){const{data:t}=e;let r=0;const n=0,o=Ee();function a(e){const t=r++,n=e(t);return o.add(n),t}function i(t,r){return a(function(){var n=(0,Ae.default)((function*(n){const o=c(r);o&&(t.catch((t=>{var n;null===(n=e.onError)||void 0===n||n.call(e,{error:t,path:r})})),t=Promise.reject(o));try{const e=yield(0,Re.default)(t);yield[n,Ue,d(e,r)]}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:r}),yield[n,$e,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:r})]}}));return function(e){return n.apply(this,arguments)}}())}function s(t,r){return a(function(){var n=(0,Ae.default)((function*(n){try{var o=(0,Be.default)();const s=c(r);if(s)throw s;const l=o.a(he(t));try{for(;;){const e=yield(0,Re.default)(l.next());if(e.done){yield[n,De,d(e.value,r)];break}yield[n,ze,d(e.value,r)]}}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:r}),yield[n,Le,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:r})]}}catch(e){o.e=e}finally{yield(0,Re.default)(o.d())}}));return function(e){return n.apply(this,arguments)}}())}function c(t){return e.maxDepth&&t.length>e.maxDepth?new Ge(t):null}function u(t,r){if(Fe(t))return[je,i(t,r)];if(l(t)){if(e.maxDepth&&r.length>=e.maxDepth)throw new Error("Max depth reached");return[qe,s(t,r)]}return null}function d(e,t){if(void 0===e)return[[]];const r=u(e,t);if(r)return[[n],[null,...r]];if(!1===H(o=e)||void 0!==(a=o.constructor)&&(!1===H(i=a.prototype)||!1===i.hasOwnProperty("isPrototypeOf")))return[[e]];var o,a,i;const s={},l=[];for(const[r,o]of Object.entries(e)){const e=u(o,[...t,r]);e?(s[r]=n,l.push([r,...e])):s[r]=o}return[[s],...l]}const p={};for(const[e,r]of Object.entries(t))p[e]=d(r,[e]);yield p;let f=o;e.pingMs&&(f=Ce(o,e.pingMs));var m,y=!1,h=!1;try{for(var v,b=(0,Ie.default)(f);y=!(v=yield(0,Re.default)(b.next())).done;y=!1){const e=v.value;yield e}}catch(e){h=!0,m=e}finally{try{y&&null!=b.return&&(yield(0,Re.default)(b.return()))}finally{if(h)throw m}}})),Je.apply(this,arguments)}function Ve(e){let t=Se(function(e){return Je.apply(this,arguments)}(e));const{serialize:r}=e;return r&&(t=t.pipeThrough(new TransformStream({transform(e,t){e===Ne?t.enqueue(Ne):t.enqueue(r(e))}}))),t.pipeThrough(new TransformStream({transform(e,t){e===Ne?t.enqueue(" "):t.enqueue(JSON.stringify(e)+"\n")}})).pipeThrough(new TextEncoderStream)}Error;var Ye=v({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncGeneratorDelegate.js"(e,t){var r=ue();t.exports=function(e){var t={},n=!1;function o(t,o){return n=!0,o=new Promise((function(r){r(e[t](o))})),{done:!1,value:new r(o,1)}}return t["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},t.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(t.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(t.return=function(e){return n?(n=!1,e):o("return",e)}),t},t.exports.__esModule=!0,t.exports.default=t.exports}}),He=b(Pe(),1),Qe=b(de(),1),Ke=b(pe(),1),We=b(Ye(),1);b(ce(),1);const Ze="ping",Xe="serialized-error",et="connected",tt="return";function rt(e){var t,r,n,o,a;const{serialize:i=u}=e,s={enabled:null!==(t=null===(r=e.ping)||void 0===r?void 0:r.enabled)&&void 0!==t&&t,intervalMs:null!==(n=null===(o=e.ping)||void 0===o?void 0:o.intervalMs)&&void 0!==n?n:1e3},l=null!==(a=e.client)&&void 0!==a?a:{};if(s.enabled&&l.reconnectAfterInactivityMs&&s.intervalMs>l.reconnectAfterInactivityMs)throw new Error(`Ping interval must be less than client reconnect interval to prevent unnecessary reconnection - ping.intervalMs: ${s.intervalMs} client.reconnectAfterInactivityMs: ${l.reconnectAfterInactivityMs}`);function c(){return c=(0,Ke.default)((function*(){yield{event:et,data:JSON.stringify(l)};let t,r,n=e.data;e.emitAndEndImmediately&&(n=function(e,t){return be.apply(this,arguments)}(n,{count:1,gracePeriodMs:1})),e.maxDurationMs&&e.maxDurationMs>0&&e.maxDurationMs!==1/0&&(n=function(e,t){return ve.apply(this,arguments)}(n,{maxDurationMs:e.maxDurationMs})),s.enabled&&s.intervalMs!==1/0&&s.intervalMs>0&&(n=Ce(n,s.intervalMs));var o,a=!1,c=!1;try{for(var u,d=(0,He.default)(n);a=!(u=yield(0,Qe.default)(d.next())).done;a=!1)t=u.value,t!==Ne?(r=U(t)?{id:t[0],data:t[1]}:{data:t},r.data=JSON.stringify(i(r.data)),yield r,t=null,r=null):yield{event:Ze,data:""}}catch(e){c=!0,o=e}finally{try{a&&null!=d.return&&(yield(0,Qe.default)(d.return()))}finally{if(c)throw o}}})),c.apply(this,arguments)}function d(){return d=(0,Ke.default)((function*(){try{yield*(0,We.default)((0,He.default)(function(){return c.apply(this,arguments)}())),yield{event:tt,data:""}}catch(n){var t,r;if(V(n))return;const o=P(n),a=null!==(t=null===(r=e.formatError)||void 0===r?void 0:r.call(e,{error:o}))&&void 0!==t?t:null;yield{event:Xe,data:JSON.stringify(i(a))}}})),d.apply(this,arguments)}const p=Se(function(){return d.apply(this,arguments)}());return p.pipeThrough(new TransformStream({transform(e,t){"event"in e&&t.enqueue(`event: ${e.event}\n`),"data"in e&&t.enqueue(`data: ${e.data}\n`),"id"in e&&t.enqueue(`id: ${e.id}\n`),"comment"in e&&t.enqueue(`: ${e.comment}\n`),t.enqueue("\n\n")}})).pipeThrough(new TextEncoderStream)}const nt={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform","X-Accel-Buffering":"no",Connection:"keep-alive"};var ot=b(pe(),1),at=b(O(),1);function it(e){return c((0,ot.default)((function*(){throw e})))}const st={mutation:["POST"],query:["GET"],subscription:["GET"]},lt={mutation:["POST"],query:["GET","POST"],subscription:["GET","POST"]};function ct(e){var t,r,n;const{ctx:o,info:s,responseMeta:l,untransformedJSON:c,errors:u=[],headers:d}=e;let p=c?function(e){const t=Array.isArray(e)?e:[e],r=new Set(t.map((e=>{var t;return"error"in e&&i(e.error.data)?"number"==typeof(null===(t=e.error.data)||void 0===t?void 0:t.httpStatus)?e.error.data.httpStatus:_(a[e.error.code]):200})));return 1!==r.size?207:r.values().next().value}(c):200;const f=!c,m=f?[]:Array.isArray(c)?c:[c],y=null!==(t=null==l?void 0:l({ctx:o,info:s,paths:null==s?void 0:s.calls.map((e=>e.path)),data:m,errors:u,eagerGeneration:f,type:null!==(r=null==s||null===(n=s.calls.find((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})))||void 0===n||null===(n=n.procedure)||void 0===n?void 0:n._def.type)&&void 0!==r?r:"unknown"}))&&void 0!==t?t:{};if(y.headers)if(y.headers instanceof Headers)for(const[e,t]of y.headers.entries())d.append(e,t);else for(const[e,t]of Object.entries(y.headers))if(Array.isArray(t))for(const r of t)d.append(e,r);else"string"==typeof t&&d.set(e,t);return y.status&&(p=y.status),{status:p}}function ut(e){return!!i(e)&&(!!l(e)||(Object.values(e).some(Fe)||Object.values(e).some(l)))}async function dt(e){var t,r,n,o,a,i;const{router:s,req:u}=e,d=new Headers([["vary","trpc-accept"]]),p=s._def._config,f=new URL(u.url);if("HEAD"===u.method)return new Response(null,{status:204});const m=null===(t=null!==(r=e.allowBatching)&&void 0!==r?r:null===(n=e.batching)||void 0===n?void 0:n.enabled)||void 0===t||t,y=null!==(o=e.allowMethodOverride)&&void 0!==o&&o&&"POST"===u.method,h=await c((async()=>{try{return[void 0,await J({req:u,path:decodeURIComponent(e.path),router:s,searchParams:f.searchParams,headers:e.req.headers,url:f})]}catch(e){return[P(e),void 0]}})),v=c((()=>{let t;return{valueOrUndefined:()=>{if(t)return t[1]},value:()=>{const[e,r]=t;if(e)throw e;return r},create:async r=>{if(t)throw new Error("This should only be called once - report a bug in tRPC");try{const n=await e.createContext({info:r});t=[void 0,n]}catch(e){t=[P(e),void 0]}}}})),b=y?lt:st,g="application/jsonl"===u.headers.get("trpc-accept"),_=null===(a=null===(i=p.sse)||void 0===i?void 0:i.enabled)||void 0===a||a;try{const[t,r]=h;if(t)throw t;if(r.isBatchCall&&!m)throw new R({code:"BAD_REQUEST",message:"Batching is not enabled on the server"});if(g&&!r.isBatchCall)throw new R({message:"Streaming requests must be batched (you can do a batch of 1)",code:"BAD_REQUEST"});await v.create(r);const n=r.calls.map((async t=>{const n=t.procedure;try{if(e.error)throw e.error;if(!n)throw new R({code:"NOT_FOUND",message:`No procedure found on path "${t.path}"`});if(!b[n._def.type].includes(u.method))throw new R({code:"METHOD_NOT_SUPPORTED",message:`Unsupported ${u.method}-request to ${n._def.type} procedure at path "${t.path}"`});if("subscription"===n._def.type&&r.isBatchCall)throw new R({code:"BAD_REQUEST",message:"Cannot batch subscription calls"});return[void 0,{data:await n({path:t.path,getRawInput:t.getRawInput,ctx:v.value(),type:n._def.type,signal:e.req.signal})}]}catch(r){var o,a,i;const n=P(r),s=t.result();return null===(o=e.onError)||void 0===o||o.call(e,{error:n,path:t.path,input:s,ctx:v.valueOrUndefined(),type:null!==(a=null===(i=t.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown",req:e.req}),[n,void 0]}}));if(!r.isBatchCall){const[t]=r.calls,[o,a]=await n[0];switch(r.type){case"unknown":case"mutation":case"query":{if(d.set("content-type","application/json"),ut(null==a?void 0:a.data))throw new R({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"});const n=o?{error:N({config:p,ctx:v.valueOrUndefined(),error:o,input:t.result(),path:t.path,type:r.type})}:{result:{data:a.data}},i=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,errors:o?[o]:[],headers:d,untransformedJSON:[n]});return new Response(JSON.stringify(I(p,n)),{status:i.status,headers:d})}case"subscription":{const n=c((()=>{if(o)return it(o);if(!_)return it(new R({code:"METHOD_NOT_SUPPORTED",message:'Missing experimental flag "sseSubscriptions"'}));if(!(0,$.AT)(a.data)&&!l(a.data))return it(new R({message:`Subscription ${t.path} did not return an observable or a AsyncGenerator`,code:"INTERNAL_SERVER_ERROR"}));return(0,$.AT)(a.data)?(0,$.di)(a.data,e.req.signal):a.data})),i=rt((0,at.default)((0,at.default)({},p.sse),{},{data:n,serialize:e=>p.transformer.output.serialize(e),formatError(r){var n,o,a;const i=P(r.error),s=null==t?void 0:t.result(),l=null==t?void 0:t.path,c=null!==(n=null==t||null===(o=t.procedure)||void 0===o?void 0:o._def.type)&&void 0!==n?n:"unknown";null===(a=e.onError)||void 0===a||a.call(e,{error:i,path:l,input:s,ctx:v.valueOrUndefined(),req:e.req,type:c});return N({config:p,ctx:v.valueOrUndefined(),error:i,input:s,path:l,type:c})}}));for(const[e,t]of Object.entries(nt))d.set(e,t);const s=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,errors:[],headers:d,untransformedJSON:null});return new Response(i,{headers:d,status:s.status})}}}if("application/jsonl"===r.accept){d.set("content-type","application/json"),d.set("transfer-encoding","chunked");const t=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,errors:[],headers:d,untransformedJSON:null}),o=Ve((0,at.default)((0,at.default)({},p.jsonl),{},{maxDepth:1/0,data:n.map((async t=>{const[n,o]=await t,a=r.calls[0];var i,s;if(n)return{error:N({config:p,ctx:v.valueOrUndefined(),error:n,input:a.result(),path:a.path,type:null!==(i=null===(s=a.procedure)||void 0===s?void 0:s._def.type)&&void 0!==i?i:"unknown"})};const l=(0,$.AT)(o.data)?(0,$.di)(o.data,e.req.signal):Promise.resolve(o.data);return{result:Promise.resolve({data:l})}})),serialize:e=>p.transformer.output.serialize(e),onError:t=>{var n,o;null===(n=e.onError)||void 0===n||n.call(e,{error:P(t),path:void 0,input:void 0,ctx:v.valueOrUndefined(),req:e.req,type:null!==(o=null==r?void 0:r.type)&&void 0!==o?o:"unknown"})},formatError(e){var t,n;const o=null==r?void 0:r.calls[e.path[0]],a=P(e.error),i=null==o?void 0:o.result(),s=null==o?void 0:o.path,l=null!==(t=null==o||null===(n=o.procedure)||void 0===n?void 0:n._def.type)&&void 0!==t?t:"unknown";return N({config:p,ctx:v.valueOrUndefined(),error:a,input:i,path:s,type:l})}}));return new Response(o,{headers:d,status:t.status})}d.set("content-type","application/json");const o=(await Promise.all(n)).map((e=>{const[t,r]=e;return t?e:ut(r.data)?[new R({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"}),void 0]:e})),a=o.map((([e,t],n)=>{const o=r.calls[n];var a,i;return e?{error:N({config:p,ctx:v.valueOrUndefined(),error:e,input:o.result(),path:o.path,type:null!==(a=null===(i=o.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown"})}:{result:{data:t.data}}})),i=o.map((([e])=>e)).filter(Boolean),s=ct({ctx:v.valueOrUndefined(),info:r,responseMeta:e.responseMeta,untransformedJSON:a,errors:i,headers:d});return new Response(JSON.stringify(I(p,a)),{status:s.status,headers:d})}catch(t){var w;const[r,n]=h,o=v.valueOrUndefined(),{error:a,untransformedJSON:i,body:s}=function(e,t){const{router:r,req:n,onError:o}=t.opts,a=P(e);null==o||o({error:a,path:t.path,input:t.input,ctx:t.ctx,type:t.type,req:n});const i={error:N({config:r._def._config,error:a,type:t.type,path:t.path,input:t.input,ctx:t.ctx})},s=I(r._def._config,i);return{error:a,untransformedJSON:i,body:JSON.stringify(s)}}(t,{opts:e,ctx:v.valueOrUndefined(),type:null!==(w=null==n?void 0:n.type)&&void 0!==w?w:"unknown"}),l=ct({ctx:o,info:n,responseMeta:e.responseMeta,untransformedJSON:i,errors:[a],headers:d});return new Response(s,{status:l.status,headers:d})}}function pt(e){try{var t,r;const n=e.headers[":scheme"]&&"https"===e.headers[":scheme"]||e.socket&&"encrypted"in e.socket&&e.socket.encrypted?"https:":"http:",o=null!==(t=null!==(r=e.headers.host)&&void 0!==r?r:e.headers[":authority"])&&void 0!==t?t:"localhost";return new URL(e.url,`${n}//${o}`)}catch(e){throw new R({code:"BAD_REQUEST",message:"Invalid URL",cause:e})}}function ft(e){const t=new Headers;for(const r in e){const n=e[r];if("string"!=typeof r||!r.startsWith(":"))if(Array.isArray(n))for(const e of n)t.append(r,e);else null!=n&&t.append(r,n)}return t}function mt(e,t,r){const n=new AbortController,o=()=>{t.off("close",o),e.off("aborted",o),n.abort()};t.once("close",o),e.once("aborted",o);const a=pt(e),i={headers:ft(e.headers),method:e.method,signal:n.signal};"GET"!==e.method&&"HEAD"!==e.method&&(i.body=function(e,t){if("body"in e){if(void 0===e.body)return;return"string"==typeof e.body?e.body:JSON.stringify(e.body)}let r=0,n=!1;return new ReadableStream({start(o){const a=s=>{r+=s.length,!t.maxBodySize||r<=t.maxBodySize?o.enqueue(new Uint8Array(s.buffer,s.byteOffset,s.byteLength)):(o.error(new R({code:"PAYLOAD_TOO_LARGE"})),n=!0,e.off("data",a),e.off("end",i))},i=()=>{n||(n=!0,e.off("data",a),e.off("end",i),o.close())};e.on("data",a),e.on("end",i)},cancel(){e.destroy()}})}(e,r),i.duplex="half");return new Request(a,i)}async function yt(e){const{res:t}=e;try{const r=new WritableStream({async write(e){var r;await async function(e,t){!1===e.write(t)&&await new Promise(((t,r)=>{const n=e=>{r(e),a()},o=()=>{t(),a()},a=()=>{e.off("error",n),e.off("drain",o)};e.once("error",n),e.once("drain",o)}))}(t,e),null===(r=t.flush)||void 0===r||r.call(t)}});await e.body.pipeTo(r,{signal:e.signal})}catch(e){if(V(e))return;throw e}}var ht=b(O(),1);function vt(e){return t=>{var r;const{res:n,req:o}=e,a=P(t),i=N({config:e.router._def._config,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});null===(r=e.onError)||void 0===r||r.call(e,{req:o,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});const s=I(e.router._def._config,{error:i});n.statusCode=i.data.httpStatus,n.end(JSON.stringify(s))}}async function bt(e){return new Promise((t=>{var r;const n=null!==(r=e.middleware)&&void 0!==r?r:(e,t,r)=>r();return e.res.once("finish",(()=>{t()})),n(e.req,e.res,(t=>{c((async()=>{var r;const n=mt(e.req,e.res,{maxBodySize:null!==(r=e.maxBodySize)&&void 0!==r?r:null}),o=await dt((0,ht.default)((0,ht.default)({},e),{},{req:n,error:t?P(t):null,createContext:async t=>{var r;return await(null===(r=e.createContext)||void 0===r?void 0:r.call(e,(0,ht.default)((0,ht.default)({},e),t)))},onError(t){var r;null==e||null===(r=e.onError)||void 0===r||r.call(e,(0,ht.default)((0,ht.default)({},t),{},{req:e.req}))}}));await async function(e){const{response:t,rawResponse:r}=e;200===r.statusCode&&(r.statusCode=t.status);for(const[e,n]of t.headers)r.setHeader(e,n);try{t.body&&await yt({res:r,signal:e.request.signal,body:t.body})}catch(e){throw r.headersSent||(r.statusCode=500),e}finally{r.end()}}({request:n,response:o,rawResponse:e.res})})).catch(vt(e))}))}))}const gt=e(import.meta.url)("http");var _t=b(O(),1);function wt(e){var t;const r=(null!==(t=e.basePath)&&void 0!==t?t:"/").length;return(t,n)=>{let o="";c((async()=>{const a=pt(t);o=a.pathname.slice(r),await bt((0,_t.default)((0,_t.default)({},e),{},{req:t,res:n,path:o}))})).catch(vt((0,_t.default)({req:t,res:n,path:o},e)))}}function xt(e){return gt.createServer(function(e){return wt(e)}(e))}},333:(e,t,r)=>{e.exports=(e=>{var t={};return r.d(t,e),t})({initTRPC:()=>n.initTRPC})},427:(e,t,r)=>{function n(e){return"object"==typeof e&&null!==e&&"subscribe"in e}function o(e){const t={subscribe(t){let r=null,n=!1,o=!1,a=!1;function i(){null!==r?o||(o=!0,"function"==typeof r?r():r&&r.unsubscribe()):a=!0}return r=e({next(e){var r;n||null===(r=t.next)||void 0===r||r.call(t,e)},error(e){var r;n||(n=!0,null===(r=t.error)||void 0===r||r.call(t,e),i())},complete(){var e;n||(n=!0,null===(e=t.complete)||void 0===e||e.call(t),i())}}),a&&i(),{unsubscribe:i}},pipe:(...e)=>e.reduce(a,t)};return t}function a(e,t){return t(e)}function i(e,t){const r=function(e,t){let r=null;const n=()=>{null==r||r.unsubscribe(),r=null,t.removeEventListener("abort",n)};return new ReadableStream({start(o){r=e.subscribe({next(e){o.enqueue({ok:!0,value:e})},error(e){o.enqueue({ok:!1,error:e}),o.close()},complete(){o.close()}}),t.aborted?n():t.addEventListener("abort",n,{once:!0})},cancel(){n()}})}(e,t),n=r.getReader(),o={async next(){const e=await n.read();if(e.done)return{value:void 0,done:!0};const{value:t}=e;if(!t.ok)throw t.error;return{value:t.value,done:!1}},return:async()=>(await n.cancel(),{value:void 0,done:!0})};return{[Symbol.asyncIterator]:()=>o}}r.d(t,{AT:()=>n,di:()=>i,sH:()=>o})},455:t=>{t.exports=e(import.meta.url)("node:fs/promises")},508:(e,t,r)=>{r.a(e,(async(e,n)=>{try{r.d(t,{Ux:()=>d,YO:()=>c,Zy:()=>p,bR:()=>m});var o=r(455),a=r(136),i=r(760);const e=(0,a.fileURLToPath)("file:///Users/jhen/workspace/mybigday-bricks/buttress/buttress-server-poc/src/version-check.js"),s=i.dirname(e),l=JSON.parse(await(0,o.readFile)(i.join(s,"../package.json"),"utf8")),{version:c,name:u}=l,d=async()=>{const e=`https://registry.npmjs.org/${u}/latest`;try{const t=new AbortController,r=setTimeout((()=>t.abort()),3e3),n=await fetch(e,{headers:{Accept:"application/json"},signal:t.signal});if(clearTimeout(r),!n.ok)return null;return(await n.json()).version||null}catch{return null}},p=(e,t)=>{if(!t)return!1;const r=e.split(/[.-]/),n=t.split(/[.-]/);for(let e=0;e<Math.max(r.length,n.length);e+=1){const t=parseInt(r[e])||0,o=parseInt(n[e])||0;if(o>t)return!0;if(o<t)return!1}return!1},f=e=>{console.log(""),console.log("[33m╭─────────────────────────────────────────────────╮[0m"),console.log("[33m│[0m Update available! [2m%s[0m → [32m%s[0m",c.padEnd(12),e.padEnd(12),"[33m│[0m"),console.log("[33m│[0m [33m│[0m"),console.log("[33m│[0m Run to upgrade: [33m│[0m"),console.log("[33m│[0m [36mnpm install -g %s[0m [33m│[0m",u.padEnd(27)),console.log("[33m╰─────────────────────────────────────────────────╯[0m"),console.log("")},m=async()=>{try{const e=await d();e&&p(c,e)&&f(e)}catch(e){}};n()}catch(e){n(e)}}),1)},534:(t,r,n)=>{n.d(r,{N:()=>l});var o=n(161);const a=e(import.meta.url)("node:child_process");var i=n(101);const s=JSON.parse('{"UU":"@fugood/buttress-server-poc","rE":"2.23.0-beta.6"}');async function l({modelId:e=null,defaultConfig:t=null}={}){console.log(`${s.UU} v${s.rE}`),console.log("Testing capabilities for backend: ggml-llm"),e&&console.log(`Model: ${e}`),console.log("--------------------------------");try{const r=t||{},{server:n,generators:s=[],...l}=r,c=(e={},t={})=>{const r=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?r[e]=c(r[e]||{},t):r[e]=t})),r},u=e=>c(JSON.parse(JSON.stringify(l)),e||{});let d=(e=>{if(Array.isArray(s)&&s.length>0){const t=s.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const r=t.find((t=>t.model?.repo_id===e));if(r)return u(r)}}return Object.keys(l).length>0?u({}):null})(e);e&&(d={...d||{},model:{...d?.model||{},repo_id:e}});const p=await i.getCapabilities("ggml-llm",null,{config:d,includeBreakdown:!0}),f=p.buttress?.selected||null,m=p.modelConfig||null;if(e||m?.repoId){console.log("\n=== Model Information ===");const t=e||m?.repoId;if(console.log(`Repository ID: ${t}`),m?.quantization&&console.log(`Quantization: ${m.quantization}`),m?.nCtx&&console.log(`Context Length: ${m.nCtx}`),f?.quantization){const{fileType:e}=f.quantization;null!=e&&console.log(`Model File Type (GGUF): ${e}`)}const r=m?.cacheKType||"f16",n=m?.cacheVType||"f16";if(console.log(`KV Cache Type: K=${r}, V=${n}`),f?.modelBytes&&f?.kvCacheBytes){if(console.log(`Model Size: ${(f.modelBytes/1024/1024/1024).toFixed(2)} GB`),f.kvInfo?console.log(`KV Cache Size: ${(f.kvCacheBytes/1024/1024/1024).toFixed(2)} GB (KV info: ${JSON.stringify(f.kvInfo)})`):console.log(`KV Cache Size: ${(f.kvCacheBytes/1024/1024/1024).toFixed(2)} GB`),console.log(`Total Required Memory: ${((f.modelBytes+f.kvCacheBytes)/1024/1024/1024).toFixed(2)} GB`),null!=f.memoryLimitedCtx){const e=f.memoryLimitedCtx,t=f.kvInfo?.nCtxTrain;t?console.log(`\nMemory-Limited Context: ${e} (Train: ${t})`):console.log(`\nMemory-Limited Context: ${e}`),null!=f.limitedKvCacheBytes&&console.log(`Limited KV Cache Size: ${(f.limitedKvCacheBytes/1024/1024/1024).toFixed(2)} GB`)}}else if(p.buttress?.selected?.fit){const{totalRequiredBytes:e}=p.buttress.selected.fit;console.log(`Total Required Memory: ${(e/1024/1024/1024).toFixed(2)} GB`)}}if(p.buttress?.selected){const{selected:e}=p.buttress;console.log("\n=== Hardware Information ===");let t=null;if("win32"!==process.platform)try{t=(0,a.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}t?console.log(`System: ${t}`):(console.log(`Hostname: ${o.hostname()}`),console.log(`OS: ${o.type()} ${o.release()}`)),console.log(`Platform: ${e.platform}`),console.log(`CPU Cores: ${o.cpus().length}`),console.log(`Total System Memory: ${(o.totalmem()/1024/1024/1024).toFixed(2)} GB`);const r=e.cpuTotalBytes>0?(e.cpuUsableBytes/e.cpuTotalBytes*100).toFixed(0):0;if(console.log(`Usable CPU Memory: ${(e.cpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${r}% of ${(e.cpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),e.hasGpu){console.log("\n--- GPU Details ---");e.devices.filter((e=>"gpu"===e.type)).forEach((t=>{console.log(`GPU Backend: ${t.backend}`),console.log(`GPU Name: ${t.deviceName}`),console.log(`GPU Total Memory: ${(t.maxMemorySize/1024/1024/1024).toFixed(2)} GB`);const r=e.gpuTotalBytes>0?(e.gpuUsableBytes/e.gpuTotalBytes*100).toFixed(0):0;console.log(`GPU Usable Memory: ${(e.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${r}% of ${(e.gpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),t.metadata&&(t.metadata.hasBFloat16&&console.log("Supports BFloat16: Yes"),t.metadata.hasUnifiedMemory&&console.log("Unified Memory: Yes"))}))}else console.log("GPU: Not available");console.log(`\nBackend Variant: ${e.variant}`),console.log(`Performance Score: ${e.score}`),e.fit&&(console.log("\n--- Model Fit Analysis ---"),console.log("Fits in GPU: "+(e.fit.fitsInGpu?"Yes":"No")),console.log("Fits in CPU: "+(e.fit.fitsInCpu?"Yes":"No")),console.log(`Limiting Factor: ${e.fit.limiting}`),e.limitedFit&&(console.log("\n--- Memory-Limited Fit Analysis ---"),console.log(`Limited Total Required: ${(e.limitedFit.totalRequiredBytes/1024/1024/1024).toFixed(2)} GB`),console.log("Fits in GPU (Limited): "+(e.limitedFit.fitsInGpu?"Yes":"No")),console.log("Fits in CPU (Limited): "+(e.limitedFit.fitsInCpu?"Yes":"No")),console.log(`Limiting Factor (Limited): ${e.limitedFit.limiting}`)))}console.log("\n=== Full Capabilities JSON ==="),console.log(JSON.stringify(p,null,2)),process.exit(0)}catch(e){console.error("Failed to get capabilities:",e.message),process.exit(1)}}},760:t=>{t.exports=e(import.meta.url)("node:path")},971:(e,t,r)=>{e.exports=(e=>{var t={};return r.d(t,e),t})({z:()=>o.z})}},p={};function f(e){var t=p[e];if(void 0!==t)return t.exports;var r=p[e]={exports:{}};return d[e](r,r.exports,f),r.exports}a="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",i="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",s="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",l=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},f.a=(e,t,r)=>{var n;r&&((n=[]).d=-1);var o,c,u,d=new Set,p=e.exports,f=new Promise(((e,t)=>{u=t,c=e}));f[i]=p,f[a]=e=>(n&&e(n),d.forEach(e),f.catch((e=>{}))),e.exports=f,t((e=>{var t;o=(e=>e.map((e=>{if(null!==e&&"object"==typeof e){if(e[a])return e;if(e.then){var t=[];t.d=0,e.then((e=>{r[i]=e,l(t)}),(e=>{r[s]=e,l(t)}));var r={};return r[a]=e=>e(t),r}}var n={};return n[a]=e=>{},n[i]=e,n})))(e);var r=()=>o.map((e=>{if(e[s])throw e[s];return e[i]})),c=new Promise((e=>{(t=()=>e(r)).r=0;var i=e=>e!==n&&!d.has(e)&&(d.add(e),e&&!e.d&&(t.r++,e.push(t)));o.map((e=>e[a](i)))}));return t.r?c:r()}),(e=>(e?u(f[s]=e):c(p),l(n)))),n&&n.d<0&&(n.d=0)},u=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);f.r(r);var n={};c=c||[null,u({}),u([]),u(u)];for(var o=2&t&&e;"object"==typeof o&&!~c.indexOf(o);o=u(o))Object.getOwnPropertyNames(o).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,f.d(r,n),r},f.d=(e,t)=>{for(var r in t)f.o(t,r)&&!f.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var m=f(173);const y=(m=await m).bR,h=m.Ux,v=m.Zy,b=m.aE,g=m.sA,_=m.YO,w=m.UD,x=m.N1;export{y as checkAndNotifyUpdates,h as checkForUpdates,v as compareVersions,b as createRouter,g as createServer,_ as currentVersion,w as startServer,x as testGgmlLlmCapabilities};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fugood/buttress-server-poc",
|
|
3
|
-
"version": "2.23.0-beta.
|
|
3
|
+
"version": "2.23.0-beta.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"files": [
|
|
@@ -25,5 +25,5 @@
|
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"terser-webpack-plugin": "^5.0.3"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "7c3be998ca35559d375190e3fd29e9aea9eb4293"
|
|
29
29
|
}
|