@fugood/buttress-server-poc 2.23.0-beta.8 → 2.23.0-beta.9
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/bin/start.mjs +1 -1
- package/lib/index.js +1 -1
- package/package.json +2 -2
package/bin/start.mjs
CHANGED
|
@@ -105,7 +105,7 @@ startServer({
|
|
|
105
105
|
console.log(
|
|
106
106
|
'Please configure `Buttress (Remote Inference)` in the Generator like LLM (GGML) to connect to this server.',
|
|
107
107
|
)
|
|
108
|
-
console.log(`Use http://${ip}:${port}
|
|
108
|
+
console.log(`Use http://${ip}:${port}/trpc to connect to this server via LAN.`)
|
|
109
109
|
})
|
|
110
110
|
.catch((error) => {
|
|
111
111
|
console.error('Failed to start Buttress server POC:', error)
|
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:()=>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.7"}');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};
|
|
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.8"}');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.9",
|
|
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": "6e869e1530a63c8574e3f7250f84923a184dfbc8"
|
|
29
29
|
}
|