@fugood/buttress-server-poc 2.23.0-beta.15 → 2.23.0-beta.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +1 -1
- package/package.json +3 -3
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"@trpc/server";import{createRequire as t}from"node:module";import*as n from"zod";import*as r from"@huggingface/gguf";import*as o from"@fugood/llama.node";import*as a from"@iarna/toml";var i,s,l={},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return l[e](n,n.exports,u),n.exports}s=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,u.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 n=Object.create(null);u.r(n);var r={};i=i||[null,s({}),s([]),s(s)];for(var o=2&t&&e;"object"==typeof o&&!~i.indexOf(o);o=s(o))Object.getOwnPropertyNames(o).forEach((t=>r[t]=()=>e[t]));return r.default=()=>e,u.d(n,r),n},u.d=(e,t)=>{for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var d={};u.r(d),u.d(d,{finalizeGenerator:()=>Kn,getCapabilities:()=>Qn,getModelIdentifier:()=>Zn,ggmlLlm:()=>Wn,startGenerator:()=>Yn});const p=(e=>{var t={};return u.d(t,e),t})({initTRPC:()=>e.initTRPC}),f={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},m={[-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"};f.BAD_GATEWAY,f.SERVICE_UNAVAILABLE,f.GATEWAY_TIMEOUT,f.INTERNAL_SERVER_ERROR;function y(e){return!!e&&!Array.isArray(e)&&"object"==typeof e}const h="function"==typeof Symbol&&!!Symbol.asyncIterator;function g(e){return h&&y(e)&&Symbol.asyncIterator in e}const v=e=>e();function b(e){return e}var _=Object.create,w=Object.defineProperty,x=Object.getOwnPropertyDescriptor,E=Object.getOwnPropertyNames,S=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty,O=(e,t)=>function(){return t||(0,e[E(e)[0]])((t={exports:{}}).exports,t),t.exports},C=(e,t,n)=>(n=null!=e?_(S(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var o,a=E(t),i=0,s=a.length;i<s;i++)o=a[i],k.call(e,o)||o===n||w(e,o,{get:(e=>t[e]).bind(null,o),enumerable:!(r=x(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:w(n,"default",{value:e,enumerable:!0}),e));const T={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 N(e){var t;return null!==(t=T[e])&&void 0!==t?t:500}function M(e){return N(e.code)}var B=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,t){function n(e){return t.exports=n="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,n(e)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports}}),P=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,t){var n=B().default;t.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(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}}),$=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,t){var n=B().default,r=P();t.exports=function(e){var t=r(e,"string");return"symbol"==n(t)?t:t+""},t.exports.__esModule=!0,t.exports.default=t.exports}}),I=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,t){var n=$();t.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},t.exports.__esModule=!0,t.exports.default=t.exports}}),A=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,t){var n=I();function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}t.exports=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e},t.exports.__esModule=!0,t.exports.default=t.exports}}),R=C(A(),1);function U(e){const{path:t,error:n,config:r}=e,{code:o}=e.error,a={message:n.message,code:f[o],data:{code:o,httpStatus:M(n)}};return r.isDev&&"string"==typeof e.error.stack&&(a.data.stack=e.error.stack),"string"==typeof t&&(a.data.path=t),r.errorFormatter((0,R.default)((0,R.default)({},e),{},{shape:a}))}var j=C(I(),1),q=class extends Error{};function z(e){if(e instanceof D)return e;if(e instanceof Error&&"TRPCError"===e.name)return e;const t=new D({code:"INTERNAL_SERVER_ERROR",cause:e});return e instanceof Error&&e.stack&&(t.stack=e.stack),t}var D=class extends Error{constructor(e){var t,n,r;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)):y(e)?Object.assign(new q,e):void 0:void 0}(e.cause);super(null!==(t=null!==(n=e.message)&&void 0!==n?n:null==o?void 0:o.message)&&void 0!==t?t:e.code,{cause:o}),(0,j.default)(this,"cause",void 0),(0,j.default)(this,"code",void 0),this.code=e.code,this.name="TRPCError",null!==(r=this.cause)&&void 0!==r||(this.cause=o)}},G=C(A(),1);function F(e,t){return"error"in t?(0,G.default)((0,G.default)({},t),{},{error:e.transformer.output.serialize(t.error)}):"data"in t.result?(0,G.default)((0,G.default)({},t),{},{result:(0,G.default)((0,G.default)({},t.result),{},{data:e.transformer.output.serialize(t.result.data)})}):t}function L(e,t){return Array.isArray(t)?t.map((t=>F(e,t))):F(e,t)}Error;C(A(),1);async function J(e,t){const{_def:n}=e;let r=n.procedures[t];for(;!r;){const e=Object.keys(n.lazy).find((e=>t.startsWith(e)));if(!e)return null;const o=n.lazy[e];await o.load(),r=n.procedures[t]}return r}const V=Symbol();function H(e){return Array.isArray(e)&&e[2]===V}function Y(e){return"object"==typeof e&&null!==e&&"subscribe"in e}function K(e){const t={subscribe(t){let n=null,r=!1,o=!1,a=!1;function i(){null!==n?o||(o=!0,"function"==typeof n?n():n&&n.unsubscribe()):a=!0}return n=e({next(e){var n;r||null===(n=t.next)||void 0===n||n.call(t,e)},error(e){var n;r||(r=!0,null===(n=t.error)||void 0===n||n.call(t,e),i())},complete(){var e;r||(r=!0,null===(e=t.complete)||void 0===e||e.call(t),i())}}),a&&i(),{unsubscribe:i}},pipe:(...e)=>e.reduce(Q,t)};return t}function Q(e,t){return t(e)}function W(e,t){const n=function(e,t){let n=null;const r=()=>{null==n||n.unsubscribe(),n=null,t.removeEventListener("abort",r)};return new ReadableStream({start(o){n=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?r():t.addEventListener("abort",r,{once:!0})},cancel(){r()}})}(e,t),r=n.getReader(),o={async next(){const e=await r.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 r.cancel(),{value:void 0,done:!0})};return{[Symbol.asyncIterator]:()=>o}}function Z(e){let t;try{t=JSON.parse(e)}catch(e){throw new D({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:e})}return function(e){try{if(null===e)return null;if(!y(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 D({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:e})}}(t)}var X=C(A(),1);function ee(e){let t=null;const n=Symbol.for("@trpc/server/http/memo");let r=n;return{read:async()=>{var o;return r!==n||(null!==(o=t)&&void 0!==o||(t=e().catch((e=>{if(e instanceof D)throw e;throw new D({code:"BAD_REQUEST",message:e instanceof Error?e.message:"Invalid input",cause:e})}))),r=await t,t=null),r},result:()=>r!==n?r:void 0}}const te={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:n}=e,r="1"===e.searchParams.get("batch"),o=r?e.path.split(","):[e.path],a=ee((async()=>{let t;if("GET"===n.method){const n=e.searchParams.get("input");n&&(t=JSON.parse(n))}else t=await n.json();if(void 0===t)return{};if(!r)return{0:e.router._def._config.transformer.input.deserialize(t)};if(!y(t))throw new D({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});const a={};for(const n of o.keys()){const r=t[n];void 0!==r&&(a[n]=e.router._def._config.transformer.input.deserialize(r))}return a})),i=await Promise.all(o.map((async(t,n)=>{const r=await J(e.router,t);return{path:t,procedure:r,getRawInput:async()=>{let t=(await a.read())[n];if("subscription"===(null==r?void 0:r._def.type)){var o,i;const n=null!==(o=null!==(i=e.headers.get("last-event-id"))&&void 0!==i?i:e.searchParams.get("lastEventId"))&&void 0!==o?o:e.searchParams.get("Last-Event-Id");if(n)if(y(t))t=(0,X.default)((0,X.default)({},t),{},{lastEventId:n});else{var s;null!==(s=t)&&void 0!==s||(t={lastEventId:n})}}return t},result:()=>{var e;return null===(e=a.result())||void 0===e?void 0:e[n]}}}))),s=new Set(i.map((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})).filter(Boolean));if(s.size>1)throw new D({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(s).join(", ")}`});const l=null!==(t=s.values().next().value)&&void 0!==t?t:"unknown",c=e.searchParams.get("connectionParams");return{isBatchCall:r,accept:n.headers.get("trpc-accept"),calls:i,type:l,connectionParams:null===c?null:Z(c),signal:n.signal,url:e.url}}},ne=[te,{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 D({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});const n=ee((async()=>await t.formData())),r=await J(e.router,e.path);return{accept:null,calls:[{path:e.path,getRawInput:n.read,result:n.result,procedure:r}],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 D({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});const n=ee((async()=>t.body));return{calls:[{path:e.path,getRawInput:n.read,result:n.result,procedure:await J(e.router,e.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}}];async function re(e){const t=function(e){const t=ne.find((t=>t.isMatch(e)));if(t)return t;if(!t&&"GET"===e.method)return te;throw new D({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 oe(e){return y(e)&&"AbortError"===e.name}function ae(e="AbortError"){throw new DOMException(e,"AbortError")}function ie(e){return"[object Object]"===Object.prototype.toString.call(e)}var se=C(I(),1);let le;const ce=new WeakMap,ue=()=>{};le=Symbol.toStringTag;var de,pe,fe,me,ye=class e{constructor(e){(0,se.default)(this,"promise",void 0),(0,se.default)(this,"subscribers",[]),(0,se.default)(this,"settlement",null),(0,se.default)(this,le,"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:n}=this;if(null===n){if(null===this.subscribers)throw new Error("Unpromise settled but still has subscribers");const n=function(){let e,t;const n=new Promise(((n,r)=>{e=n,t=r}));return{promise:n,resolve:e,reject:t}}();this.subscribers=(r=this.subscribers,o=n,[...r,o]),e=n.promise,t=()=>{null!==this.subscribers&&(this.subscribers=function(e,t){const n=e.indexOf(t);return-1!==n?function(e,t){return[...e.slice(0,t),...e.slice(t+1)]}(e,n):e}(this.subscribers,n))}}else{const{status:r}=n;e="fulfilled"===r?Promise.resolve(n.value):Promise.reject(n.reason),t=ue}var r,o;return Object.assign(e,{unsubscribe:t})}then(e,t){const n=this.subscribe(),{unsubscribe:r}=n;return Object.assign(n.then(e,t),{unsubscribe:r})}catch(e){const t=this.subscribe(),{unsubscribe:n}=t;return Object.assign(t.catch(e),{unsubscribe:n})}finally(e){const t=this.subscribe(),{unsubscribe:n}=t;return Object.assign(t.finally(e),{unsubscribe:n})}static proxy(t){const n=e.getSubscribablePromise(t);return void 0!==n?n:e.createSubscribablePromise(t)}static createSubscribablePromise(t){const n=new e(t);return ce.set(t,n),ce.set(n,n),n}static getSubscribablePromise(e){return ce.get(e)}static resolve(t){const n="object"==typeof t&&null!==t&&"then"in t&&"function"==typeof t.then?t:Promise.resolve(t);return e.proxy(n).subscribe()}static async any(t){const n=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.any(n)}finally{n.forEach((({unsubscribe:e})=>{e()}))}}static async race(t){const n=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.race(n)}finally{n.forEach((({unsubscribe:e})=>{e()}))}}static async raceReferences(e){const t=e.map(he);try{return await Promise.race(t)}finally{for(const e of t)e.unsubscribe()}}};function he(e){return ye.proxy(e).then((()=>[e]))}function ge(e,t){const n=e,r=n[Symbol.dispose];return n[Symbol.dispose]=()=>{t(),null==r||r()},n}function ve(e,t){const n=e,r=n[Symbol.asyncDispose];return n[Symbol.asyncDispose]=async()=>{await t(),await(null==r?void 0:r())},n}null!==(pe=(de=Symbol).dispose)&&void 0!==pe||(de.dispose=Symbol()),null!==(me=(fe=Symbol).asyncDispose)&&void 0!==me||(fe.asyncDispose=Symbol());const be=Symbol();function _e(e){let t=null;return ge({start(){if(t)throw new Error("Timer already started");return new Promise((n=>{t=setTimeout((()=>n(be)),e)}))}},(()=>{t&&clearTimeout(t)}))}var we=O({"../../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 n=Error();return n.name="SuppressedError",n.error=e,n.suppressed=t,n},t={},n=[];function r(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 r=t[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(void 0===r&&(r=t[Symbol.dispose||Symbol.for("Symbol.dispose")],e))var o=r;if("function"!=typeof r)throw new TypeError("Object is not disposable.");o&&(r=function(){try{o.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:r.bind(null,!1),a:r.bind(null,!0),d:function(){var r,o=this.e,a=0;function i(){for(;r=n.pop();)try{if(!r.a&&1===a)return a=0,n.push(r),Promise.resolve().then(i);if(r.d){var e=r.d.call(r.v);if(r.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(n){return o=o!==t?new e(n,o):n,i()}return i()}}},t.exports.__esModule=!0,t.exports.default=t.exports}}),xe=O({"../../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}}),Ee=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(e,t){var n=xe();t.exports=function(e){return new n(e,0)},t.exports.__esModule=!0,t.exports.default=t.exports}}),Se=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(e,t){var n=xe();function r(e){var t,r;function o(t,r){try{var i=e[t](r),s=i.value,l=s instanceof n;Promise.resolve(l?s.v:s).then((function(n){if(l){var r="return"===t?"return":"next";if(!s.k||n.done)return o(r,n);n=e[r](n).value}a(i.done?"return":"normal",n)}),(function(e){o("throw",e)}))}catch(e){a("throw",e)}}function a(e,n){switch(e){case"return":t.resolve({value:n,done:!0});break;case"throw":t.reject(n);break;default:t.resolve({value:n,done:!1})}(t=t.next)?o(t.key,t.arg):r=null}this._invoke=function(e,n){return new Promise((function(a,i){var s={key:e,arg:n,resolve:a,reject:i,next:null};r?r=r.next=s:(t=r=s,o(e,n))}))},"function"!=typeof e.return&&(this.return=void 0)}r.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},r.prototype.next=function(e){return this._invoke("next",e)},r.prototype.throw=function(e){return this._invoke("throw",e)},r.prototype.return=function(e){return this._invoke("return",e)},t.exports=function(e){return function(){return new r(e.apply(this,arguments))}},t.exports.__esModule=!0,t.exports.default=t.exports}}),ke=C(we(),1),Oe=C(Ee(),1),Ce=C(Se(),1);function Te(e){const t=e[Symbol.asyncIterator]();return t[Symbol.asyncDispose]?t:ve(t,(async()=>{var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))}))}function Ne(){return(Ne=(0,Ce.default)((function*(e,t){try{var n=(0,ke.default)();const r=n.a(Te(e)),o=n.u(_e(t.maxDurationMs)).start();let a;for(;;){if(a=yield(0,Oe.default)(ye.race([r.next(),o])),a===be&&ae(),a.done)return a;yield a.value,a=null}}catch(e){n.e=e}finally{yield(0,Oe.default)(n.d())}}))).apply(this,arguments)}function Me(){return(Me=(0,Ce.default)((function*(e,t){try{var n=(0,ke.default)();const r=n.a(Te(e));let o;const a=n.u(_e(t.gracePeriodMs));let i=t.count,s=new Promise((()=>{}));for(;;){if(o=yield(0,Oe.default)(ye.race([r.next(),s])),o===be&&ae(),o.done)return o.value;yield o.value,0==--i&&(s=a.start()),o=null}}catch(e){n.e=e}finally{yield(0,Oe.default)(n.d())}}))).apply(this,arguments)}function Be(){let e,t;return{promise:new Promise(((n,r)=>{e=n,t=r})),resolve:e,reject:t}}var Pe=C(we(),1),$e=C(Ee(),1),Ie=C(Se(),1);function Ae(){let e="idle",t=Be();const n=[],r=new Set,o=[];function a(n){if("pending"!==e)return;const a=function(e,t){const n=e[Symbol.asyncIterator]();let r="idle";function o(){r="done",t=()=>{}}return{pull:function(){"idle"===r&&(r="pending",n.next().then((e=>{if(e.done)return r="done",t({status:"return",value:e.value}),void o();r="idle",t({status:"yield",value:e.value})})).catch((e=>{t({status:"error",error:e}),o()})))},destroy:async()=>{var e;o(),await(null===(e=n.return)||void 0===e?void 0:e.call(n))}}}(n,(n=>{if("pending"===e){switch(n.status){case"yield":o.push([a,n]);break;case"return":r.delete(a);break;case"error":o.push([a,n]),r.delete(a)}t.resolve()}}));r.add(a),a.pull()}return{add(t){switch(e){case"idle":n.push(t);break;case"pending":a(t)}},[Symbol.asyncIterator]:()=>(0,Ie.default)((function*(){try{var i=(0,Pe.default)();if("idle"!==e)throw new Error("Cannot iterate twice");e="pending";i.a(ve({},(async()=>{e="done";const n=[];if(await Promise.all(Array.from(r.values()).map((async e=>{try{await e.destroy()}catch(e){n.push(e)}}))),o.length=0,r.clear(),t.resolve(),n.length>0)throw new AggregateError(n)})));for(;n.length>0;)a(n.shift());for(;r.size>0;){for(yield(0,$e.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=Be()}}catch(e){i.e=e}finally{yield(0,$e.default)(i.d())}}))()}}function Re(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 n=await t.next();n.done?e.close():e.enqueue(n.value)}})}var Ue=C(we(),1),je=C(Ee(),1),qe=C(Se(),1);const ze=Symbol("ping");function De(e,t){return Ge.apply(this,arguments)}function Ge(){return(Ge=(0,qe.default)((function*(e,t){try{var n=(0,Ue.default)();const o=n.a(Te(e));let a,i=o.next();for(;;)try{var r=(0,Ue.default)();const e=r.u(_e(t));if(a=yield(0,je.default)(ye.race([i,e.start()])),a===be){yield ze;continue}if(a.done)return a.value;i=o.next(),yield a.value,a=null}catch(e){r.e=e}finally{r.d()}}catch(e){n.e=e}finally{yield(0,je.default)(n.d())}}))).apply(this,arguments)}var Fe=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(e,t){function n(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(n=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 n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new n(e)}t.exports=function(e){var t,r,o,a=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,o=Symbol.iterator);a--;){if(r&&null!=(t=e[r]))return t.call(e);if(o&&null!=(t=e[o]))return new n(t.call(e));r="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")},t.exports.__esModule=!0,t.exports.default=t.exports}}),Le=C(Ee(),1),Je=C(Se(),1),Ve=C(we(),1),He=C(Fe(),1);const Ye=0,Ke=1,Qe=0,We=1,Ze=0,Xe=1,et=2;function tt(e){return(y(e)||"function"==typeof e)&&"function"==typeof(null==e?void 0:e.then)&&"function"==typeof(null==e?void 0:e.catch)}var nt=class extends Error{constructor(e){super("Max depth reached at path: "+e.join(".")),this.path=e}};function rt(){return rt=(0,Je.default)((function*(e){const{data:t}=e;let n=0;const r=0,o=Ae();function a(e){const t=n++,r=e(t);return o.add(r),t}function i(t,n){return a(function(){var r=(0,Je.default)((function*(r){const o=l(n);o&&(t.catch((t=>{var r;null===(r=e.onError)||void 0===r||r.call(e,{error:t,path:n})})),t=Promise.reject(o));try{const e=yield(0,Le.default)(t);yield[r,Qe,u(e,n)]}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:n}),yield[r,We,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:n})]}}));return function(e){return r.apply(this,arguments)}}())}function s(t,n){return a(function(){var r=(0,Je.default)((function*(r){try{var o=(0,Ve.default)();const s=l(n);if(s)throw s;const c=o.a(Te(t));try{for(;;){const e=yield(0,Le.default)(c.next());if(e.done){yield[r,Ze,u(e.value,n)];break}yield[r,Xe,u(e.value,n)]}}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:n}),yield[r,et,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:n})]}}catch(e){o.e=e}finally{yield(0,Le.default)(o.d())}}));return function(e){return r.apply(this,arguments)}}())}function l(t){return e.maxDepth&&t.length>e.maxDepth?new nt(t):null}function c(t,n){if(tt(t))return[Ye,i(t,n)];if(g(t)){if(e.maxDepth&&n.length>=e.maxDepth)throw new Error("Max depth reached");return[Ke,s(t,n)]}return null}function u(e,t){if(void 0===e)return[[]];const n=c(e,t);if(n)return[[r],[null,...n]];if(!1===ie(o=e)||void 0!==(a=o.constructor)&&(!1===ie(i=a.prototype)||!1===i.hasOwnProperty("isPrototypeOf")))return[[e]];var o,a,i;const s={},l=[];for(const[n,o]of Object.entries(e)){const e=c(o,[...t,n]);e?(s[n]=r,l.push([n,...e])):s[n]=o}return[[s],...l]}const d={};for(const[e,n]of Object.entries(t))d[e]=u(n,[e]);yield d;let p=o;e.pingMs&&(p=De(o,e.pingMs));var f,m=!1,y=!1;try{for(var h,v=(0,He.default)(p);m=!(h=yield(0,Le.default)(v.next())).done;m=!1){const e=h.value;yield e}}catch(e){y=!0,f=e}finally{try{m&&null!=v.return&&(yield(0,Le.default)(v.return()))}finally{if(y)throw f}}})),rt.apply(this,arguments)}function ot(e){let t=Re(function(e){return rt.apply(this,arguments)}(e));const{serialize:n}=e;return n&&(t=t.pipeThrough(new TransformStream({transform(e,t){e===ze?t.enqueue(ze):t.enqueue(n(e))}}))),t.pipeThrough(new TransformStream({transform(e,t){e===ze?t.enqueue(" "):t.enqueue(JSON.stringify(e)+"\n")}})).pipeThrough(new TextEncoderStream)}Error;var at=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncGeneratorDelegate.js"(e,t){var n=xe();t.exports=function(e){var t={},r=!1;function o(t,o){return r=!0,o=new Promise((function(n){n(e[t](o))})),{done:!1,value:new n(o,1)}}return t["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},t.next=function(e){return r?(r=!1,e):o("next",e)},"function"==typeof e.throw&&(t.throw=function(e){if(r)throw r=!1,e;return o("throw",e)}),"function"==typeof e.return&&(t.return=function(e){return r?(r=!1,e):o("return",e)}),t},t.exports.__esModule=!0,t.exports.default=t.exports}}),it=C(Fe(),1),st=C(Ee(),1),lt=C(Se(),1),ct=C(at(),1);C(we(),1);const ut="ping",dt="serialized-error",pt="connected",ft="return";function mt(e){var t,n,r,o,a;const{serialize:i=b}=e,s={enabled:null!==(t=null===(n=e.ping)||void 0===n?void 0:n.enabled)&&void 0!==t&&t,intervalMs:null!==(r=null===(o=e.ping)||void 0===o?void 0:o.intervalMs)&&void 0!==r?r: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,lt.default)((function*(){yield{event:pt,data:JSON.stringify(l)};let t,n,r=e.data;e.emitAndEndImmediately&&(r=function(e,t){return Me.apply(this,arguments)}(r,{count:1,gracePeriodMs:1})),e.maxDurationMs&&e.maxDurationMs>0&&e.maxDurationMs!==1/0&&(r=function(e,t){return Ne.apply(this,arguments)}(r,{maxDurationMs:e.maxDurationMs})),s.enabled&&s.intervalMs!==1/0&&s.intervalMs>0&&(r=De(r,s.intervalMs));var o,a=!1,c=!1;try{for(var u,d=(0,it.default)(r);a=!(u=yield(0,st.default)(d.next())).done;a=!1)t=u.value,t!==ze?(n=H(t)?{id:t[0],data:t[1]}:{data:t},n.data=JSON.stringify(i(n.data)),yield n,t=null,n=null):yield{event:ut,data:""}}catch(e){c=!0,o=e}finally{try{a&&null!=d.return&&(yield(0,st.default)(d.return()))}finally{if(c)throw o}}})),c.apply(this,arguments)}function u(){return u=(0,lt.default)((function*(){try{yield*(0,ct.default)((0,it.default)(function(){return c.apply(this,arguments)}())),yield{event:ft,data:""}}catch(r){var t,n;if(oe(r))return;const o=z(r),a=null!==(t=null===(n=e.formatError)||void 0===n?void 0:n.call(e,{error:o}))&&void 0!==t?t:null;yield{event:dt,data:JSON.stringify(i(a))}}})),u.apply(this,arguments)}const d=Re(function(){return u.apply(this,arguments)}());return d.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 yt={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform","X-Accel-Buffering":"no",Connection:"keep-alive"};var ht=C(Se(),1),gt=C(A(),1);function vt(e){return v((0,ht.default)((function*(){throw e})))}const bt={mutation:["POST"],query:["GET"],subscription:["GET"]},_t={mutation:["POST"],query:["GET","POST"],subscription:["GET","POST"]};function wt(e){var t,n,r;const{ctx:o,info:a,responseMeta:i,untransformedJSON:s,errors:l=[],headers:c}=e;let u=s?function(e){const t=Array.isArray(e)?e:[e],n=new Set(t.map((e=>{var t;return"error"in e&&y(e.error.data)?"number"==typeof(null===(t=e.error.data)||void 0===t?void 0:t.httpStatus)?e.error.data.httpStatus:N(m[e.error.code]):200})));return 1!==n.size?207:n.values().next().value}(s):200;const d=!s,p=d?[]:Array.isArray(s)?s:[s],f=null!==(t=null==i?void 0:i({ctx:o,info:a,paths:null==a?void 0:a.calls.map((e=>e.path)),data:p,errors:l,eagerGeneration:d,type:null!==(n=null==a||null===(r=a.calls.find((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})))||void 0===r||null===(r=r.procedure)||void 0===r?void 0:r._def.type)&&void 0!==n?n:"unknown"}))&&void 0!==t?t:{};if(f.headers)if(f.headers instanceof Headers)for(const[e,t]of f.headers.entries())c.append(e,t);else for(const[e,t]of Object.entries(f.headers))if(Array.isArray(t))for(const n of t)c.append(e,n);else"string"==typeof t&&c.set(e,t);return f.status&&(u=f.status),{status:u}}function xt(e){return!!y(e)&&(!!g(e)||(Object.values(e).some(tt)||Object.values(e).some(g)))}async function Et(e){var t,n,r,o,a,i;const{router:s,req:l}=e,c=new Headers([["vary","trpc-accept"]]),u=s._def._config,d=new URL(l.url);if("HEAD"===l.method)return new Response(null,{status:204});const p=null===(t=null!==(n=e.allowBatching)&&void 0!==n?n:null===(r=e.batching)||void 0===r?void 0:r.enabled)||void 0===t||t,f=null!==(o=e.allowMethodOverride)&&void 0!==o&&o&&"POST"===l.method,m=await v((async()=>{try{return[void 0,await re({req:l,path:decodeURIComponent(e.path),router:s,searchParams:d.searchParams,headers:e.req.headers,url:d})]}catch(e){return[z(e),void 0]}})),y=v((()=>{let t;return{valueOrUndefined:()=>{if(t)return t[1]},value:()=>{const[e,n]=t;if(e)throw e;return n},create:async n=>{if(t)throw new Error("This should only be called once - report a bug in tRPC");try{const r=await e.createContext({info:n});t=[void 0,r]}catch(e){t=[z(e),void 0]}}}})),h=f?_t:bt,b="application/jsonl"===l.headers.get("trpc-accept"),_=null===(a=null===(i=u.sse)||void 0===i?void 0:i.enabled)||void 0===a||a;try{const[t,n]=m;if(t)throw t;if(n.isBatchCall&&!p)throw new D({code:"BAD_REQUEST",message:"Batching is not enabled on the server"});if(b&&!n.isBatchCall)throw new D({message:"Streaming requests must be batched (you can do a batch of 1)",code:"BAD_REQUEST"});await y.create(n);const r=n.calls.map((async t=>{const r=t.procedure;try{if(e.error)throw e.error;if(!r)throw new D({code:"NOT_FOUND",message:`No procedure found on path "${t.path}"`});if(!h[r._def.type].includes(l.method))throw new D({code:"METHOD_NOT_SUPPORTED",message:`Unsupported ${l.method}-request to ${r._def.type} procedure at path "${t.path}"`});if("subscription"===r._def.type&&n.isBatchCall)throw new D({code:"BAD_REQUEST",message:"Cannot batch subscription calls"});return[void 0,{data:await r({path:t.path,getRawInput:t.getRawInput,ctx:y.value(),type:r._def.type,signal:e.req.signal})}]}catch(n){var o,a,i;const r=z(n),s=t.result();return null===(o=e.onError)||void 0===o||o.call(e,{error:r,path:t.path,input:s,ctx:y.valueOrUndefined(),type:null!==(a=null===(i=t.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown",req:e.req}),[r,void 0]}}));if(!n.isBatchCall){const[t]=n.calls,[o,a]=await r[0];switch(n.type){case"unknown":case"mutation":case"query":{if(c.set("content-type","application/json"),xt(null==a?void 0:a.data))throw new D({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"});const r=o?{error:U({config:u,ctx:y.valueOrUndefined(),error:o,input:t.result(),path:t.path,type:n.type})}:{result:{data:a.data}},i=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:o?[o]:[],headers:c,untransformedJSON:[r]});return new Response(JSON.stringify(L(u,r)),{status:i.status,headers:c})}case"subscription":{const r=v((()=>{if(o)return vt(o);if(!_)return vt(new D({code:"METHOD_NOT_SUPPORTED",message:'Missing experimental flag "sseSubscriptions"'}));if(!Y(a.data)&&!g(a.data))return vt(new D({message:`Subscription ${t.path} did not return an observable or a AsyncGenerator`,code:"INTERNAL_SERVER_ERROR"}));return Y(a.data)?W(a.data,e.req.signal):a.data})),i=mt((0,gt.default)((0,gt.default)({},u.sse),{},{data:r,serialize:e=>u.transformer.output.serialize(e),formatError(n){var r,o,a;const i=z(n.error),s=null==t?void 0:t.result(),l=null==t?void 0:t.path,c=null!==(r=null==t||null===(o=t.procedure)||void 0===o?void 0:o._def.type)&&void 0!==r?r:"unknown";null===(a=e.onError)||void 0===a||a.call(e,{error:i,path:l,input:s,ctx:y.valueOrUndefined(),req:e.req,type:c});return U({config:u,ctx:y.valueOrUndefined(),error:i,input:s,path:l,type:c})}}));for(const[e,t]of Object.entries(yt))c.set(e,t);const s=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:[],headers:c,untransformedJSON:null});return new Response(i,{headers:c,status:s.status})}}}if("application/jsonl"===n.accept){c.set("content-type","application/json"),c.set("transfer-encoding","chunked");const t=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:[],headers:c,untransformedJSON:null}),o=ot((0,gt.default)((0,gt.default)({},u.jsonl),{},{maxDepth:1/0,data:r.map((async t=>{const[r,o]=await t,a=n.calls[0];var i,s;if(r)return{error:U({config:u,ctx:y.valueOrUndefined(),error:r,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=Y(o.data)?W(o.data,e.req.signal):Promise.resolve(o.data);return{result:Promise.resolve({data:l})}})),serialize:e=>u.transformer.output.serialize(e),onError:t=>{var r,o;null===(r=e.onError)||void 0===r||r.call(e,{error:z(t),path:void 0,input:void 0,ctx:y.valueOrUndefined(),req:e.req,type:null!==(o=null==n?void 0:n.type)&&void 0!==o?o:"unknown"})},formatError(e){var t,r;const o=null==n?void 0:n.calls[e.path[0]],a=z(e.error),i=null==o?void 0:o.result(),s=null==o?void 0:o.path,l=null!==(t=null==o||null===(r=o.procedure)||void 0===r?void 0:r._def.type)&&void 0!==t?t:"unknown";return U({config:u,ctx:y.valueOrUndefined(),error:a,input:i,path:s,type:l})}}));return new Response(o,{headers:c,status:t.status})}c.set("content-type","application/json");const o=(await Promise.all(r)).map((e=>{const[t,n]=e;return t?e:xt(n.data)?[new D({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"}),void 0]:e})),a=o.map((([e,t],r)=>{const o=n.calls[r];var a,i;return e?{error:U({config:u,ctx:y.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=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,untransformedJSON:a,errors:i,headers:c});return new Response(JSON.stringify(L(u,a)),{status:s.status,headers:c})}catch(t){var w;const[n,r]=m,o=y.valueOrUndefined(),{error:a,untransformedJSON:i,body:s}=function(e,t){const{router:n,req:r,onError:o}=t.opts,a=z(e);null==o||o({error:a,path:t.path,input:t.input,ctx:t.ctx,type:t.type,req:r});const i={error:U({config:n._def._config,error:a,type:t.type,path:t.path,input:t.input,ctx:t.ctx})},s=L(n._def._config,i);return{error:a,untransformedJSON:i,body:JSON.stringify(s)}}(t,{opts:e,ctx:y.valueOrUndefined(),type:null!==(w=null==r?void 0:r.type)&&void 0!==w?w:"unknown"}),l=wt({ctx:o,info:r,responseMeta:e.responseMeta,untransformedJSON:i,errors:[a],headers:c});return new Response(s,{status:l.status,headers:c})}}function St(e){try{var t,n;const r=e.headers[":scheme"]&&"https"===e.headers[":scheme"]||e.socket&&"encrypted"in e.socket&&e.socket.encrypted?"https:":"http:",o=null!==(t=null!==(n=e.headers.host)&&void 0!==n?n:e.headers[":authority"])&&void 0!==t?t:"localhost";return new URL(e.url,`${r}//${o}`)}catch(e){throw new D({code:"BAD_REQUEST",message:"Invalid URL",cause:e})}}function kt(e){const t=new Headers;for(const n in e){const r=e[n];if("string"!=typeof n||!n.startsWith(":"))if(Array.isArray(r))for(const e of r)t.append(n,e);else null!=r&&t.append(n,r)}return t}function Ot(e,t,n){const r=new AbortController,o=()=>{t.off("close",o),e.off("aborted",o),r.abort()};t.once("close",o),e.once("aborted",o);const a=St(e),i={headers:kt(e.headers),method:e.method,signal:r.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 n=0,r=!1;return new ReadableStream({start(o){const a=s=>{n+=s.length,!t.maxBodySize||n<=t.maxBodySize?o.enqueue(new Uint8Array(s.buffer,s.byteOffset,s.byteLength)):(o.error(new D({code:"PAYLOAD_TOO_LARGE"})),r=!0,e.off("data",a),e.off("end",i))},i=()=>{r||(r=!0,e.off("data",a),e.off("end",i),o.close())};e.on("data",a),e.on("end",i)},cancel(){e.destroy()}})}(e,n),i.duplex="half");return new Request(a,i)}async function Ct(e){const{res:t}=e;try{const n=new WritableStream({async write(e){var n;await async function(e,t){!1===e.write(t)&&await new Promise(((t,n)=>{const r=e=>{n(e),a()},o=()=>{t(),a()},a=()=>{e.off("error",r),e.off("drain",o)};e.once("error",r),e.once("drain",o)}))}(t,e),null===(n=t.flush)||void 0===n||n.call(t)}});await e.body.pipeTo(n,{signal:e.signal})}catch(e){if(oe(e))return;throw e}}var Tt=C(A(),1);function Nt(e){return t=>{var n;const{res:r,req:o}=e,a=z(t),i=U({config:e.router._def._config,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});null===(n=e.onError)||void 0===n||n.call(e,{req:o,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});const s=L(e.router._def._config,{error:i});r.statusCode=i.data.httpStatus,r.end(JSON.stringify(s))}}async function Mt(e){return new Promise((t=>{var n;const r=null!==(n=e.middleware)&&void 0!==n?n:(e,t,n)=>n();return e.res.once("finish",(()=>{t()})),r(e.req,e.res,(t=>{v((async()=>{var n;const r=Ot(e.req,e.res,{maxBodySize:null!==(n=e.maxBodySize)&&void 0!==n?n:null}),o=await Et((0,Tt.default)((0,Tt.default)({},e),{},{req:r,error:t?z(t):null,createContext:async t=>{var n;return await(null===(n=e.createContext)||void 0===n?void 0:n.call(e,(0,Tt.default)((0,Tt.default)({},e),t)))},onError(t){var n;null==e||null===(n=e.onError)||void 0===n||n.call(e,(0,Tt.default)((0,Tt.default)({},t),{},{req:e.req}))}}));await async function(e){const{response:t,rawResponse:n}=e;200===n.statusCode&&(n.statusCode=t.status);for(const[e,r]of t.headers)n.setHeader(e,r);try{t.body&&await Ct({res:n,signal:e.request.signal,body:t.body})}catch(e){throw n.headersSent||(n.statusCode=500),e}finally{n.end()}}({request:r,response:o,rawResponse:e.res})})).catch(Nt(e))}))}))}const Bt=t(import.meta.url)("http");var Pt=C(A(),1);function $t(e){var t;const n=(null!==(t=e.basePath)&&void 0!==t?t:"/").length;return(t,r)=>{let o="";v((async()=>{const a=St(t);o=a.pathname.slice(n),await Mt((0,Pt.default)((0,Pt.default)({},e),{},{req:t,res:r,path:o}))})).catch(Nt((0,Pt.default)({req:t,res:r,path:o},e)))}}function It(e){return Bt.createServer(function(e){return $t(e)}(e))}const At=(e=>{var t={};return u.d(t,e),t})({z:()=>n.z}),Rt=t(import.meta.url)("node:path"),Ut=t(import.meta.url)("node:os"),jt=t(import.meta.url)("node:fs/promises"),qt=t(import.meta.url)("node:crypto");const zt=(e=>{var t={};return u.d(t,e),t})({gguf:()=>r.gguf});const Dt=(e=>{var t={};return u.d(t,e),t})({getBackendDevicesInfo:()=>o.getBackendDevicesInfo,isLibVariantAvailable:()=>o.isLibVariantAvailable,loadModel:()=>o.loadModel}),Gt=(e,t,n)=>Math.min(Math.max(e,t),n),Ft=e=>e?40:0,Lt=(e=0)=>{if(!e)return 0;return Gt(e/12884901888*20,0,20)},Jt=(e=0)=>{if(!e)return 0;return Gt(e/34359738368*10,0,10)},Vt=e=>e?10:0,Ht=(e="default",t=null)=>{const n=String(e).toLowerCase();if(!n)return 0;if(n.includes("cuda"))return 20;if(n.includes("vulkan"))return 10;if(n.includes("default")){return"darwin"===t||"ios"===t?15:5}return 0},Yt=({platform:e,variant:t,hasGpu:n,gpuUsableBytes:r=0,cpuUsableBytes:o=0,ok:a=!0}={})=>{if(!a)return 0;const i=Ft(n)+Ht(t,e)+Lt(r),s=Jt(o),l=Vt(a);return Math.min(100,Math.round(i+s+l))},Kt=["cuda","vulkan","snapdragon","default"],Qt=e=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[],Wt=e=>e&&String(e).trim().toLowerCase()||null,Zt=(e={})=>{const t=String(e.type||e.deviceType||e.kind||"").toLowerCase();return!!t.includes("gpu")||(!!t.includes("cuda")||(!!t.includes("metal")||!!t.includes("vulkan")))},Xt=({platform:e,totalMemoryInBytes:t,variant:n,devices:r,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:i,error:s})=>{const l=(e=>Array.isArray(e)?e.map((e=>({...e}))):[])(r),c=l.some(Zt),u=l.filter((e=>Zt(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,f=d?Math.floor(d*a):0,m={platform:e,variant:n,hasGpu:c,gpuUsableBytes:p,cpuUsableBytes:f,ok:i},y=Yt(m),h=i?(({platform:e,variant:t,hasGpu:n,gpuUsableBytes:r=0,cpuUsableBytes:o=0,ok:a=!0}={})=>({gpuPresence:Ft(n),variant:Ht(t,e),gpuMemory:Lt(r),cpuMemory:Jt(o),availability:Vt(a)}))(m):null;return{platform:e,ok:i,variant:n,hasGpu:c,devices:l,gpuTotalBytes:u,gpuUsableBytes:p,cpuTotalBytes:d,cpuUsableBytes:f,score:y,breakdown:h,error:s,timestamp:(new Date).toISOString()}},en=({device:e,modelBytes:t=0,kvCacheBytes:n=0}={})=>{if(!e)return{totalRequiredBytes:t+n,fitsInGpu:!1,fitsInCpu:!1,limiting:"unknown-device"};const r=Math.max(0,Number(t)||0)+Math.max(0,Number(n)||0),o=e.hasGpu&&r>0&&r<=e.gpuUsableBytes,a=r>0&&r<=e.cpuUsableBytes;let i="ok";return!o&&e.hasGpu&&(i="gpu-memory"),a||(i=o?"cpu-memory":"insufficient-memory"),{totalRequiredBytes:r,fitsInGpu:o,fitsInCpu:a,limiting:i}},tn="ggml-llm",nn=new Map([[tn,async({platform:e,variant:t=null,preferVariants:n=[],variantPreference:r=[],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:n=[]}={})=>{const r=[];e&&r.push(e),r.push(...Qt(t)),r.push(...Qt(n)),r.push(...Kt);const o=r.map(Wt).filter(Boolean);return Array.from(new Set(o))})({variant:t,preferVariants:n,variantPreference:r}),y=[];for(const t of m)try{if(!await f(t))throw new Error(`Variant ${t} not available on this platform`);const n=await p(t);y.push(Xt({platform:e,totalMemoryInBytes:s,variant:t,devices:n,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!0}))}catch(n){const r=n instanceof Error?n.message:String(n);y.push(Xt({platform:e,totalMemoryInBytes:s,variant:t,devices:[],gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!1,error:r}))}const h=y.filter((e=>e.ok)),g=h.find((e=>e.hasGpu))||h.find((e=>"default"===e.variant))||h[0]||null,v={ok:Boolean(g),selected:g?{...g,breakdown:i?g.breakdown:void 0}:null,attempts:y};if(!i&&v.selected&&delete v.selected.breakdown,!v||!l&&!c)return v;const b=e=>{if(!e)return e;const t=en({device:e,modelBytes:l||0,kvCacheBytes:c||0});let n=null;return null!=u&&u!==c&&(n=en({device:e,modelBytes:l||0,kvCacheBytes:u})),{...e,fit:t,...n&&{limitedFit:n}}};return v.selected=b(v.selected),v.attempts=Array.isArray(v.attempts)?v.attempts.map(b):v.attempts,v}]]),rn=async({platform:e,totalMemoryInBytes:t,backend:n=tn,dependencies:r,...o}={})=>{const a=nn.get(n);if(!a)throw new Error(`No capability detector registered for backend "${n}"`);return await a({...o,dependencies:r,totalMemoryInBytes:t,platform:e})},on={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},an=e=>{const t=e?String(e).toLowerCase():"f16";return on[t]||on.f16},sn=(e,t,n,r,o,a={})=>{if(!(e&&t&&n&&r&&o))return 0;const i=an(a.k),s=an(a.v),l=Number(t)*Number(n)*(Number(r)*i+Number(o)*s);return Math.round(Number(e)*l)},ln=t(import.meta.url)("node:stream/web");var cn=u.t(ln,2);const un="undefined"!=typeof globalThis&&globalThis.ReadableStream&&globalThis.WritableStream?{ReadableStream:globalThis.ReadableStream,WritableStream:globalThis.WritableStream}:cn,{ReadableStream:dn,WritableStream:pn}=un,fn=new TextEncoder,mn=(e={},t={})=>(Object.entries(t||{}).forEach((([t,n])=>{n&&"object"==typeof n&&!Array.isArray(n)?(e[t]&&"object"==typeof e[t]||(e[t]={}),mn(e[t],n)):e[t]=n})),e),yn="https://huggingface.co",hn="https://huggingface.co/api",gn=Rt.join(Ut.homedir(),".buttress","models"),vn=["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"],bn=.5,_n={backend:{type:"ggml-llm",variant:null,variant_preference:["cuda","vulkan","snapdragon","default"],gpu_memory_fraction:.85,cpu_memory_fraction:bn},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:hn,base_url:yn},runtime:{cache_dir:gn,prefer_variants:[],huggingface_token:process.env.HUGGINGFACE_TOKEN||null,http_headers:{}}},wn=(e,t=[])=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[...t],xn=e=>{if(!e)return null;const t=String(e).toLowerCase();return["cuda","vulkan","snapdragon","default"].includes(t)?t:null},En=(e={})=>{const t=JSON.parse(JSON.stringify(_n));if(mn(t,e),t.backend.variant=xn(t.backend.variant),t.backend.variant_preference=Array.from(new Set(wn(t.backend.variant_preference).map(xn).filter(Boolean))),0===t.backend.variant_preference.length&&(t.backend.variant_preference=["cuda","vulkan","snapdragon","default"]),t.runtime.prefer_variants=Array.from(new Set(wn(t.runtime.prefer_variants).map(xn).filter(Boolean))),t.model.preferred_quantizations=Array.from(new Set(wn(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||yn,t.model.api_base=t.model.api_base||hn,t.runtime.cache_dir=t.runtime.cache_dir?Rt.resolve(t.runtime.cache_dir):gn,t},Sn=e=>{const t=e.toLowerCase();return vn.find((e=>t.includes(e)))||null},kn=async e=>{await(0,jt.mkdir)(e,{recursive:!0})},On=(e,t,n=gn)=>{const r=(0,qt.createHash)("sha256").update(e).digest("hex");return Rt.join(((e=gn)=>Rt.join(e,".metadata-cache"))(n),t,`${r}.json`)},Cn=async(e,t,n=gn)=>{try{const r=On(e,t,n),o=await(0,jt.readFile)(r,"utf-8");return console.log(`[Cache] Hit ${t} cache:`,Rt.basename(r)),JSON.parse(o,((e,t)=>"string"==typeof t&&t.startsWith("__bigint__")?BigInt(t.slice(10)):t))}catch(e){return null}},Tn=async(e,t,n,r=gn)=>{try{const o=On(e,t,r);await kn(Rt.dirname(o)),await(0,jt.writeFile)(o,JSON.stringify(n,((e,t)=>"bigint"==typeof t?`__bigint__${t.toString()}`:t)),"utf-8"),console.log(`[Cache] Wrote ${t} cache:`,Rt.basename(o))}catch(e){console.warn(`[Cache] Failed to write ${t} cache:`,e.message)}},Nn=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const n=await fetch(e,t);if(!n.ok){const t=await n.text().catch((()=>""));throw new Error(`Failed to fetch ${e}: ${n.status} ${n.statusText} ${t}`.trim())}return n.json()},Mn=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const n=await fetch(e,{...t,method:"HEAD"});if(!n.ok)throw new Error(`Failed to fetch headers for ${e}: ${n.status} ${n.statusText}`);return n},Bn=async(e,t,n=gn)=>{const r=JSON.stringify({url:e,headers:t}),o=await Cn(r,"range-metadata",n);if(o)return o;const a=!/^https?:/i.test(e),{metadata:i}=await(0,zt.gguf)(e,{fetch,additionalFetchHeaders:t,allowLocalFile:a});return await Tn(r,"range-metadata",i,n),i},Pn=async(e,t)=>{try{const n=await(0,jt.stat)(e);return!t||n.size===t}catch(e){return!1}},$n=async(e,t,n,r,o)=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");await kn(Rt.dirname(n));const a=await fetch(e,{headers:t});if(!a.ok||!a.body)throw new Error(`Failed to download ${e}: ${a.status} ${a.statusText}`);const i=await(0,jt.open)(n,"w"),s=Number(a.headers.get("content-length"))||r||0;let l=0,c=.05;try{await a.body.pipeTo(new pn({async write(e){if(await i.write(e),l+=e.byteLength,"function"==typeof o&&s>0){const e=Math.min(1,l/s);for(;e>=c;)o(c),c+=.05}},async close(){await i.close(),"function"==typeof o&&o(1)},async abort(e){throw await i.close().catch((()=>{})),await(0,jt.unlink)(n).catch((()=>{})),e}}))}catch(e){throw await i.close().catch((()=>{})),await(0,jt.unlink)(n).catch((()=>{})),e}if(r){const e=await(0,jt.stat)(n);if(e.size!==r)throw await(0,jt.unlink)(n).catch((()=>{})),new Error(`Downloaded file size mismatch, expected ${r} got ${e.size}`)}},In=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 n=e.model.revision||"main",r=e.runtime.cache_dir,o=JSON.stringify({repoId:t,revision:n,filename:e.model.filename,url:e.model.url,quantization:e.model.quantization,preferred_quantizations:e.model.preferred_quantizations}),a=await Cn(o,"artifact-info",r);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 Mn(e.model.url,{headers:i}),s=Number(a.headers.get("content-length"))||null,l={repoId:t,revision:n,filename:e.model.filename||e.model.url.split("/").pop(),url:e.model.url,size:s,headers:i};return await Tn(o,"artifact-info",l,r),l}let{filename:s}=e.model,l=e.model.quantization&&String(e.model.quantization).toLowerCase();const c=await Nn(`${e.model.api_base}/models/${t}?revision=${n}&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:vn;if(s)l||(l=Sn(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:n}=e;s=t,l=n||Sn(s)}const p=`${e.model.base_url.replace(/\/+$/,"")}/${t}/resolve/${n}/${s}`,f=/-(\d{5})-of-(\d{5})\.gguf$/,m=s.match(f);let y=null;if(m){const[,,r]=m,o=await Nn(`${e.model.api_base}/models/${t}?revision=${n}&blobs=true`,{headers:i}),a=o?.siblings||o?.files||[],l=Number(r);y=0;for(let e=1;e<=l;e+=1){const t=String(e).padStart(5,"0"),n=s.replace(f,`-${t}-of-${r}.gguf`),o=a.find((e=>(e.rfilename||e.path||e.filename)===n)),i=Number(o?.size);Number.isFinite(i)&&i>0&&(y+=i)}}else{const e=await Mn(p,{headers:i});y=Number(e.headers.get("content-length"))||null}const h={repoId:t,revision:n,filename:s,url:p,size:y,quantization:l,headers:i,isSplit:Boolean(m),splitCount:m?Number(m[2]):0};return await Tn(o,"artifact-info",h,r),h},An=async(e,{modelBytes:t=null,kvCacheBytes:n=null}={})=>{const r=(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(xn).filter(Boolean)))})(e),[o,...a]=r,i=null!=e.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.gpu_memory_fraction))):_n.backend.gpu_memory_fraction||1,s=null!=e.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):bn,l=await rn({platform:process.platform,totalMemoryInBytes:Ut.totalmem(),backend:"ggml-llm",variant:o||null,preferVariants:a,gpuMemoryFraction:i,cpuMemoryFraction:s,dependencies:{getBackendDevicesInfo:Dt.getBackendDevicesInfo,isLibVariantAvailable:Dt.isLibVariantAvailable},modelBytes:t,kvCacheBytes:n}),c=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(!l.ok||!l.selected){const e=(l.attempts||[]).map((e=>`${e.variant}: ${e.error||"unknown error"}`)).join("; ");throw new Error(`Unable to initialize any backend variant (${r.join(", ")}). Errors: ${e}`)}const u=(l.attempts||[]).map(c);return{selected:c(l.selected),attempts:u}},Rn=({elementSize:e,availableMemory:t,modelBytes:n,nCtx:r})=>{let o=null;if(e>0&&t>n){const r=t-n,a=Math.floor(r/e);a>0&&(o=a)}return o&&o<r?o:r},Un=async e=>{const t=await In(e),n=await Bn(t.url,t.headers,e.runtime.cache_dir),r=n["general.architecture"],o=n[`${r}.context_length`]||n["llama.context_length"],a=n[`${r}.block_count`]||n["llama.block_count"],i=n[`${r}.embedding_length`]||n["llama.embedding_length"],s=n[`${r}.attention.head_count`]||n["llama.attention.head_count"],l=n[`${r}.attention.head_count_kv`]||n["llama.attention.head_count_kv"]||s,c=n[`${r}.attention.key_length`]||n["llama.attention.key_length"],u=n[`${r}.attention.value_length`]||n["llama.attention.value_length"],d=Number.isFinite(Number(a))?Number(a):0,p=Number.isFinite(Number(i))?Number(i):0,f=Number.isFinite(Number(s))?Number(s):0,m=Number.isFinite(Number(l))?Number(l):f,y=f>0&&p>0?p/f:128,h=Number.isFinite(Number(c))?Number(c):y,g=Number.isFinite(Number(u))?Number(u):y,v=n["general.quantization_version"]||null,b=n["general.file_type"]||null,_=e.model.n_ctx?Number(e.model.n_ctx):null;let w=_||o||4096;const x=[],E=[];let S=!0;if(_&&o&&_>o){S=!1;const e=`Requested context length (${_}) exceeds model training context (${o})`;x.push(e),E.push(e),w=o}_&&!o&&x.push("Model metadata missing training context length, using requested value");const k={k:e.model.cache_k_type,v:e.model.cache_v_type},O=t.size>0?t.size:0,C=d&&m&&h&&g?d*m*(h*an(k.k)+g*an(k.v)):0,T=sn(d,w,m,h,g,k),N=await An(e,{modelBytes:O,kvCacheBytes:T}),M=N.selected.totalMemory||0,B=M*(e.backend.gpu_memory_fraction||1),P=null!=e.backend.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):bn,$=Math.max(0,Ut.totalmem()*P),I=N.selected.hasGpu?B:$,A=Rn({elementSize:C,availableMemory:I,modelBytes:O,nCtx:w});if(!_&&A){const e=o?Math.min(A,o):A,t=Math.max(32,e);t<w&&x.push(`Context length capped to ${t} by memory limits`),w=t}w>A&&(w=A);const R=Math.floor(A);console.log(`[buttress] Memory-limited context length: ${R}`);const U=sn(d,w,m,h,g,k),j=O+U,q=d?O/(d+1):O;let z,D=0;N.selected.hasGpu&&q>0&&(D=Math.min(d+1,Math.max(0,Math.floor(B/q)))),console.log(`[buttress] Auto GPU layer capacity (${N.selected.variant}): ${D}/${d+1}`),z="auto"===e.model.n_gpu_layers||null==e.model.n_gpu_layers?D:Math.max(0,Math.min(Number(e.model.n_gpu_layers)||0,d+1));const G=(()=>{const t=e.model.flash_attn&&String(e.model.flash_attn).toLowerCase();return"on"===t||"off"===t?t:N.selected.hasGpu?"auto":"off"})(),F=e.runtime.cache_dir,L=((e,t)=>{if(e.model.local_path)return Rt.resolve(e.model.local_path);const n=t.repoId.split("/"),r=Rt.join(e.runtime.cache_dir,...n,t.revision);return Rt.join(r,t.filename)})(e,t),J=await Pn(L,t.size),V={ok:S,backend:"ggml-llm",warnings:x,errors:E,model:{repoId:t.repoId,revision:t.revision,filename:t.filename,quantization:t.quantization,url:t.url,sizeBytes:t.size,metadata:{architecture:r,n_ctx_train:o,n_layer:d,n_embd:p,quantization_version:v,file_type:b}},runtime:{variant:N.selected.variant,n_ctx:w,requested_ctx:_,n_gpu_layers:z,n_parallel:e.model.n_parallel,n_batch:e.model.n_batch,flash_attn_type:G,cache_type_k:k.k,cache_type_v:k.v,ctx_shift:e.model.ctx_shift,kv_unified:e.model.kv_unified,swa_full:e.model.swa_full,estimated_max_n_ctx:R,auto_gpu_layers:D},resources:{modelBytes:O,kvCacheBytes:U,totalEstimatedBytes:j,gpuCapacityBytes:M,gpuUsableBytes:B,cpuUsableBytes:$,fit:N.selected.fit},devices:{selected:N.selected,attempts:N.attempts},download:{cacheDir:F,localPath:L,exists:J},timestamp:(new Date).toISOString()};return{config:e,info:V,artifact:t,metadata:{arch:r,nCtxTrain:o,nLayer:d,nEmbd:p},devices:N,cacheTypes:k,localPath:L,localExists:J}},jn=(e,t)=>`event: ${e}\ndata: ${null==t?"":JSON.stringify(t)}\n\n`,qn=(e,t)=>{let n;return new dn({async start(r){try{const o=await e.parallel.completion(t,((e,t)=>{t&&r.enqueue(fn.encode(jn("token",{requestId:e,...t})))})),{requestId:a}=o;n=o.stop;const i=await o.promise;console.log("[Completion] Result:",i),r.enqueue(fn.encode(jn("result",{requestId:a,...i}))),r.close()}catch(e){r.enqueue(fn.encode(jn("error",{message:e?.message||String(e)}))),r.error(e)}},cancel(){n&&n()}})},zn=e=>{const t={model:e.plan.localPath,runtime:e.plan.info.runtime};return(0,qt.createHash)("sha256").update(JSON.stringify(t)).digest("hex").slice(0,24)},Dn=async(e,t)=>{const n=zn(e);let r=e.contexts.get(n);if(r)return r.refCount+=1,await r.ready,"function"==typeof t&&t(1),r;r={key:n,refCount:1},r.ready=(async()=>{const n=await(async(e,t,n)=>{const{config:r,localPath:o,artifact:a}=e;if(e.localExists&&!t.has(o))return e.info.download.exists=!0,"function"==typeof n&&n(.5),o;if(r.model.local_path&&!r.model.allow_local_file)throw new Error("Local model path provided but `model.allow_local_file` is not enabled");const i=o;t.has(i)||t.set(i,(async()=>{if(a.isSplit&&a.splitCount>0){const e=/-(\d{5})-of-(\d{5})\.gguf$/,t=Rt.dirname(o),i=a.splitCount;let s=0;for(let o=1;o<=i;o+=1){const l=String(o).padStart(5,"0"),c=a.filename.replace(e,`-${l}-of-${String(i).padStart(5,"0")}.gguf`),u=`${r.model.base_url.replace(/\/+$/,"")}/${a.repoId}/resolve/${a.revision}/${c}`,d=Rt.join(t,c);await Pn(d)||await $n(u,a.headers,d,null,(e=>{if(e>=0&&Number.isFinite(e)){const t=(s+e)/i,r=Math.round(100*t);console.log(`Downloading model splits: ${Math.min(100,r)}%`),"function"==typeof n&&n(.5*t)}})),s+=1}}else await $n(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 n&&n(.5*e)}}));e.localExists=!0,e.info.download.exists=!0})());try{await t.get(i)}finally{t.delete(i)}return o})(e.plan,e.downloads,t);"function"==typeof t&&t(.5);const o={model:n,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,Dt.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),r.context=a,r.modelInfo=a.getModelInfo(),r}catch(e){if(a)try{a.release()}catch(e){}throw e}})(),e.contexts.set(n,r);try{return await r.ready,r}catch(t){throw e.contexts.delete(n),t}},Gn=async(e,t,n=!1)=>{if(n)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 Fn=e=>{const t=En(e);return t.model.repo_id||t.model.repository||t.model.model||null};const Ln=e=>e?"number"==typeof e.score&&Number.isFinite(e.score)?Number(e.score):Yt(e):0;async function Jn(e=null,t={}){const{threshold:n=1.1,includeBreakdown:r=!1,config:o,...a}=t;let i=null,s=null,l=null,c=null,u=null,d=null;if(o)try{const{modelBytes:e,kvCacheBytes:t,limitedKvCacheBytes:n,memoryLimitedCtx:r,kvInfo:a,quantization:p}=await async function(e){const t=En(e),n=await In(t),r=await Bn(n.url,n.headers,t.runtime.cache_dir),o=r["general.architecture"],a=r[`${o}.context_length`]||r["llama.context_length"],i=r[`${o}.block_count`]||r["llama.block_count"],s=r[`${o}.embedding_length`]||r["llama.embedding_length"],l=r[`${o}.attention.head_count`]||r["llama.attention.head_count"],c=r[`${o}.attention.head_count_kv`]||r["llama.attention.head_count_kv"]||l,u=r[`${o}.attention.key_length`]||r["llama.attention.key_length"],d=r[`${o}.attention.value_length`]||r["llama.attention.value_length"],p=Number.isFinite(Number(i))?Number(i):0,f=Number.isFinite(Number(s))?Number(s):0,m=Number.isFinite(Number(l))?Number(l):0,y=Number.isFinite(Number(c))?Number(c):m,h=m>0&&f>0?f/m:128,g=Number.isFinite(Number(u))?Number(u):h,v=Number.isFinite(Number(d))?Number(d):h,b=(t.model.n_ctx?Number(t.model.n_ctx):null)||a||4096,_={k:t.model.cache_k_type,v:t.model.cache_v_type},w=n.size>0?n.size:0,x=p&&y&&g&&v?p*y*(g*an(_.k)+v*an(_.v)):0,E=null!=t.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.gpu_memory_fraction))):_n.backend.gpu_memory_fraction||1,S=null!=t.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.cpu_memory_fraction))):bn,k=sn(p,b,y,g,v,_),O=await An(t,{modelBytes:w,kvCacheBytes:k}),C=(O.selected.totalMemory||0)*E,T=Math.max(0,Ut.totalmem()*S),N=O.selected.hasGpu?C:T,M=Rn({elementSize:x,availableMemory:N,modelBytes:w,nCtx:b}),B=sn(p,b,y,g,v,_),P=sn(p,M,y,g,v,_),$=r["general.quantization_version"]||null;return{kvInfo:{nCtxTrain:a,nLayer:p,nEmbd:f,nHeadKv:y,nEmbdHeadK:g,nEmbdHeadV:v,nHeadCount:m,nHeadKvCount:y},modelBytes:w,kvCacheBytes:B,limitedKvCacheBytes:P,memoryLimitedCtx:M,quantization:{fileType:r["general.file_type"]||null,version:$}}}(o);i=e,s=t,l=n,c=r,u=a,d=p}catch(e){}const p=null!=o?.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.gpu_memory_fraction))):void 0,f=null!=o?.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.cpu_memory_fraction))):void 0,m=await rn({...a,platform:process.platform,totalMemoryInBytes:Ut.totalmem(),backend:"ggml-llm",includeBreakdown:r,gpuMemoryFraction:p,cpuMemoryFraction:f,dependencies:{getBackendDevicesInfo:Dt.getBackendDevicesInfo,isLibVariantAvailable:Dt.isLibVariantAvailable},modelBytes:i,kvCacheBytes:s,limitedKvCacheBytes:l}),y=m.selected,h=Ln(y);y.modelBytes=i||null,y.kvCacheBytes=s||null,y.memoryLimitedCtx=c||null,y.limitedKvCacheBytes=l||null,y.kvInfo=u||null,y.quantization=d||null;let g=null,v=null;if(e){const t=Ln(e);v={...e,score:t};let r="buttress",o="buttress-higher-score";if(m.ok)if(t||0===t){const e=v.fit,a=v.limitedFit,i=y?.fit,s=y?.limitedFit,l=e?.fitsInGpu||e?.fitsInCpu||a?.fitsInGpu||a?.fitsInCpu,c=i?.fitsInGpu||i?.fitsInCpu||s?.fitsInGpu||s?.fitsInCpu;l&&!c?(r="local",o="client-fits-in-memory"):c&&!l?(r="buttress",o="buttress-fits-in-memory"):t>h*n?(r="local",o="client-better"):h>t*n?(r="buttress",o="buttress-better"):(r="either",o="comparable-scores")}else r="buttress",o="missing-client-score";else r="local",o="buttress-unavailable";g={buttressScore:h,clientScore:t,threshold:n,recommendation:r,reason:o}}m.ok||g||(g={buttressScore:h,clientScore:e?.score??null,threshold:n,recommendation:"local",reason:"buttress-unavailable"});let b=null;return o&&(b={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:m,client:v,comparison:g,modelConfig:b}}const Vn=new Map,Hn=e=>{const t=(e=>{const t=Vn.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 Yn(e,t){if("ggml-llm"!==e)throw new Error("Currently only GGML LLM backend is supported");const n=Fn(t);if(!n)throw new Error("Buttress generator config missing repo identifier");const r=`${e}:${n}`,o=Vn.get(r);if(o)return o.refCount+=1,{id:o.id,info:o.instance.info};const a=await async function(e,t){const n=await Un(En(t)),r={id:e,type:"ggml-llm",config:t,plan:n,info:n.info,contexts:new Map,downloads:new Map};return{id:e,type:"ggml-llm",info:n.info,initContext:async(e={})=>{const{onProgress:t}=e,n=await Dn(r,t);return{modelInfo:n.modelInfo?{...n.modelInfo}:null,runtime:{...r.plan.info.runtime},download:{...r.plan.info.download}}},completion:async(e={})=>{const{options:t={}}=e,n=zn(r),o=r.contexts.get(n);if(!o)throw new Error(`Context "${n}" not initialized`);return await o.ready,qn(o.context,t)},tokenize:async(e={})=>{const{text:t="",params:n={}}=e,o=zn(r),a=r.contexts.get(o);if(!a)throw new Error(`Context "${o}" not initialized`);await a.ready;const i=await a.context.tokenize(t,n);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,n=zn(r),o=r.contexts.get(n);if(!o)throw new Error(`Context "${n}" not initialized`);await o.ready;const a=t.map((e=>Number(e)));return o.context.detokenize(a)},applyChatTemplate:async(e={})=>{const{messages:t=[],template:n,params:o}=e,a=zn(r),i=r.contexts.get(a);if(!i)throw new Error(`Context "${a}" not initialized`);return await i.ready,i.context.getFormattedChat(t,n,o)},releaseContext:async(e={})=>{const t=zn(r),n=r.contexts.get(t);return!!n&&Gn(r,n,Boolean(e.force))},finalize:async()=>{const e=Array.from(r.contexts.values()).map((e=>Gn(r,e,!0)));await Promise.allSettled(e)}}}(r,t),i={id:r,type:a.type,instance:a,refCount:1};return Vn.set(r,i),{id:r,info:a.info}}async function Kn(e){const t=Vn.get(e);return!!t&&(t.refCount-=1,t.refCount<=0&&(await t.instance.finalize(),Vn.delete(e)),!0)}async function Qn(e,t=null,n={}){if("ggml-llm"===e)return Jn(t,n);throw new Error(`Unknown backend type: ${e}`)}const Wn={initContext:async(e,t)=>Hn(e).initContext(t),completion:async(e,t)=>Hn(e).completion(t),tokenize:async(e,t)=>Hn(e).tokenize(t),detokenize:async(e,t)=>Hn(e).detokenize(t),applyChatTemplate:async(e,t)=>Hn(e).applyChatTemplate(t),releaseContext:async(e,t)=>Hn(e).releaseContext(t)};function Zn(e,t){return"ggml-llm"===e?Fn(t):null}const{version:Xn,name:er}={version:"2.23.0-beta.15",name:"@fugood/buttress-server-poc"},tr=async()=>{const e=`https://registry.npmjs.org/${er}/latest`;try{const t=new AbortController,n=setTimeout((()=>t.abort()),3e3),r=await fetch(e,{headers:{Accept:"application/json"},signal:t.signal});if(clearTimeout(n),!r.ok)return null;return(await r.json()).version||null}catch{return null}},nr=(e,t)=>{if(!t)return!1;const n=e.split(/[.-]/),r=t.split(/[.-]/);for(let e=0;e<Math.max(n.length,r.length);e+=1){const t=parseInt(n[e])||0,o=parseInt(r[e])||0;if(o>t)return!0;if(o<t)return!1}return!1},rr=async()=>{try{const e=await tr();e&&nr(Xn,e)&&(e=>{console.log(""),console.log("[33m╭─────────────────────────────────────────────────╮[0m"),console.log("[33m│[0m Update available! [2m%s[0m → [32m%s[0m",Xn.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",er.padEnd(27)),console.log("[33m╰─────────────────────────────────────────────────╯[0m"),console.log("")})(e)}catch(e){}},or=t(import.meta.url)("node:fs"),ar=t(import.meta.url)("node:child_process");const ir=(e=>{var t={};return u.d(t,e),t})({default:()=>a.default}),sr=JSON.parse('{"UU":"@fugood/buttress-server-poc","rE":"2.23.0-beta.15"}');async function lr({modelIds:e=[],defaultConfig:t=null}={}){const n=[];console.log(`${sr.UU} v${sr.rE}`),console.log("Generating model capabilities comparison...\n"),n.push(`${sr.UU} v${sr.rE}`),n.push("## Model Capabilities Comparison\n"),e&&0!==e.length||(console.error("Error: No model IDs provided"),process.exit(1));try{const r=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=r(n[e]||{},t):n[e]=t})),n},o=t||{},{server:a,generators:i=[],...s}=o,l=e=>r(JSON.parse(JSON.stringify(s)),e||{}),c=e=>{if(Array.isArray(i)&&i.length>0){const t=i.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const n=t.find((t=>t.model?.repo_id===e));if(n)return l(n)}}return Object.keys(s).length>0?l({}):null},u=[];for(let t=0;t<e.length;t+=1){const n=e[t];console.log(`[${t+1}/${e.length}] Analyzing ${n}...`);let r=c(n);r={...r||{},model:{...r?.model||{},repo_id:n}};const o=await Qn("ggml-llm",null,{config:r,includeBreakdown:!0});u.push({modelId:n,capabilities:o,modelInfo:o.buttress?.selected||null,modelConfig:o.modelConfig||null})}const d=e=>e?(e/1024/1024/1024).toFixed(2):"N/A",p=e=>e?"✅":"🚫";n.push("| Model ID | Size (GB) | Context Size | KV Cache Size (GB) (SWA Disabled) | Total Required Memory (GB) | Fits GPU (Full) | Fits CPU (Full) |"),n.push("|----------|-----------|--------------|---------------------------------|---------------------------|-----------------|-----------------|"),u.forEach((({modelId:e,modelInfo:t,modelConfig:r})=>{const o=d(t?.modelBytes),a=r?.nCtx||t?.kvInfo?.nCtxTrain||"N/A",i=d(t?.kvCacheBytes),s=d(t?.modelBytes&&t?.kvCacheBytes?t.modelBytes+t.kvCacheBytes:t?.fit?.totalRequiredBytes),l=p(t?.fit?.fitsInGpu),c=p(t?.fit?.fitsInCpu);n.push(`| ${e} | ${o} | ${a} | ${i} | ${s} | ${l} | ${c} |`);if((null!=t?.memoryLimitedCtx||null!=t?.limitedFit)&&(!t?.fit?.fitsInGpu||!t?.fit?.fitsInCpu)){const e=t?.memoryLimitedCtx||a,r=d(t?.limitedKvCacheBytes),l=d(t?.modelBytes&&t?.limitedKvCacheBytes?t.modelBytes+t.limitedKvCacheBytes:t?.limitedFit?.totalRequiredBytes),c=p(t?.limitedFit?.fitsInGpu),u=p(t?.limitedFit?.fitsInCpu);(e!==a||r!==i||l!==s)&&n.push(`| ↳ Limited | ${o} | ${e} | ${r} | ${l} | ${c} | ${u} |`)}})),n.push("\n---"),n.push("\n### System Information");let f=null;if("win32"!==process.platform)try{f=(0,ar.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}if(f?n.push(`- **System:** ${f}`):(n.push(`- **Hostname:** ${Ut.hostname()}`),n.push(`- **OS:** ${Ut.type()} ${Ut.release()}`)),n.push(`- **Platform:** ${process.platform}`),n.push(`- **CPU Cores:** ${Ut.cpus().length}`),n.push(`- **Total System Memory:** ${(Ut.totalmem()/1024/1024/1024).toFixed(2)} GB`),u.length>0){const e=u[0].capabilities,t=e.buttress?.selected;if(t){const e=t.cpuTotalBytes>0?(t.cpuUsableBytes/t.cpuTotalBytes*100).toFixed(0):0;if(n.push(`- **Usable CPU Memory:** ${(t.cpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${e}% of ${(t.cpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),t.hasGpu){const e=t.devices.filter((e=>"gpu"===e.type));if(e.length>0){const r=e[0];n.push(`- **GPU Backend:** ${r.backend}`),n.push(`- **GPU Name:** ${r.deviceName}`),n.push(`- **GPU Total Memory:** ${(r.maxMemorySize/1024/1024/1024).toFixed(2)} GB`);const o=t.gpuTotalBytes>0?(t.gpuUsableBytes/t.gpuTotalBytes*100).toFixed(0):0;n.push(`- **GPU Usable Memory:** ${(t.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${o}% of ${(t.gpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`)}}else n.push("- **GPU:** Not available")}}n.push("\n### Command Used");const m=process.argv.slice(2).join(" ");if(n.push(`\`\`\`bash\n${process.argv[0]} ${process.argv[1]} ${m}\n\`\`\``),n.push("\n### Package Information"),n.push(`- **Name:** ${sr.UU}`),n.push(`- **Version:** ${sr.rE}`),sr.description&&n.push(`- **Description:** ${sr.description}`),t&&Object.keys(t).length>0){n.push("\n### Configuration"),n.push("<details>"),n.push("<summary>Click to expand TOML configuration</summary>"),n.push("\n```toml");try{const e=ir.default.stringify(t);n.push(e)}catch(e){n.push("# Error serializing config"),n.push(JSON.stringify(t,null,2))}n.push("```"),n.push("</details>")}const y=`model-capabilities-${(new Date).toISOString().replace(/[.:]/g,"-").split("T")[0]}.md`,h=Rt.join(process.cwd(),y);or.writeFileSync(h,n.join("\n"),"utf8"),console.log(`\nModel capabilities table saved to: ${h}`),process.exit(0)}catch(e){console.error("Failed to generate model table:",e.message),process.exit(1)}}async function cr({modelId:e=null,defaultConfig:t=null}={}){console.log(`${sr.UU} v${sr.rE}`),console.log("Testing capabilities for backend: ggml-llm"),e&&console.log(`Model: ${e}`),console.log("--------------------------------");try{const n=t||{},{server:r,generators:o=[],...a}=n,i=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=i(n[e]||{},t):n[e]=t})),n},s=e=>i(JSON.parse(JSON.stringify(a)),e||{});let l=(e=>{if(Array.isArray(o)&&o.length>0){const t=o.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const n=t.find((t=>t.model?.repo_id===e));if(n)return s(n)}}return Object.keys(a).length>0?s({}):null})(e);e&&(l={...l||{},model:{...l?.model||{},repo_id:e}});const c=await Qn("ggml-llm",null,{config:l,includeBreakdown:!0}),u=c.buttress?.selected||null,d=c.modelConfig||null;if(e||d?.repoId){console.log("\n=== Model Information ===");const t=e||d?.repoId;if(console.log(`Repository ID: ${t}`),d?.quantization&&console.log(`Quantization: ${d.quantization}`),d?.nCtx&&console.log(`Context Length: ${d.nCtx}`),u?.quantization){const{fileType:e}=u.quantization;null!=e&&console.log(`Model File Type (GGUF): ${e}`)}const n=d?.cacheKType||"f16",r=d?.cacheVType||"f16";if(console.log(`KV Cache Type: K=${n}, V=${r}`),u?.modelBytes&&u?.kvCacheBytes){if(console.log(`Model Size: ${(u.modelBytes/1024/1024/1024).toFixed(2)} GB`),u.kvInfo?console.log(`KV Cache Size: ${(u.kvCacheBytes/1024/1024/1024).toFixed(2)} GB (KV info: ${JSON.stringify(u.kvInfo)})`):console.log(`KV Cache Size: ${(u.kvCacheBytes/1024/1024/1024).toFixed(2)} GB`),console.log(`Total Required Memory: ${((u.modelBytes+u.kvCacheBytes)/1024/1024/1024).toFixed(2)} GB`),null!=u.memoryLimitedCtx){const e=u.memoryLimitedCtx,t=u.kvInfo?.nCtxTrain;t?console.log(`\nMemory-Limited Context: ${e} (Train: ${t})`):console.log(`\nMemory-Limited Context: ${e}`),null!=u.limitedKvCacheBytes&&console.log(`Limited KV Cache Size: ${(u.limitedKvCacheBytes/1024/1024/1024).toFixed(2)} GB`)}}else if(c.buttress?.selected?.fit){const{totalRequiredBytes:e}=c.buttress.selected.fit;console.log(`Total Required Memory: ${(e/1024/1024/1024).toFixed(2)} GB`)}}if(c.buttress?.selected){const{selected:e}=c.buttress;console.log("\n=== Hardware Information ===");let t=null;if("win32"!==process.platform)try{t=(0,ar.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}t?console.log(`System: ${t}`):(console.log(`Hostname: ${Ut.hostname()}`),console.log(`OS: ${Ut.type()} ${Ut.release()}`)),console.log(`Platform: ${e.platform}`),console.log(`CPU Cores: ${Ut.cpus().length}`),console.log(`Total System Memory: ${(Ut.totalmem()/1024/1024/1024).toFixed(2)} GB`);const n=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 (${n}% 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 n=e.gpuTotalBytes>0?(e.gpuUsableBytes/e.gpuTotalBytes*100).toFixed(0):0;console.log(`GPU Usable Memory: ${(e.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${n}% 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(c,null,2)),process.exit(0)}catch(e){console.error("Failed to get capabilities:",e.message),process.exit(1)}}const ur=new TextDecoder,dr=p.initTRPC.context().create(),pr=At.z.record(At.z.any()).optional(),fr=At.z.object({id:At.z.string()}),mr=At.z.object({id:At.z.string(),property:At.z.any().optional()}),yr=At.z.object({type:At.z.string(),config:pr}),hr=At.z.object({type:At.z.string().optional().default("ggml-llm"),config:pr,currentClientCapabilities:At.z.record(At.z.any()).optional(),options:At.z.record(At.z.any()).optional()}).optional(),gr=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=gr(n[e]||{},t):n[e]=t})),n},vr=e=>e&&"object"==typeof e?JSON.parse(JSON.stringify(e)):null,br=(e,t)=>{const n=vr(e)||{},r=vr(t)||{};return gr(n,r)},_r=(e=d,{defaultConfig:t}={})=>{const n=vr(t)||{},r=Array.isArray(n.generators)?n.generators:[],{server:o,generators:a,...i}=n,s=e=>gr(JSON.parse(JSON.stringify(i)),e||{}),l=(e,t)=>{if(r.length>0){const n=r.filter((t=>t?.type===e));if(n.length>0&&t){const e=n.find((e=>e.model?.repo_id===t));if(e)return s(e)}}return Object.keys(i).length>0?s({}):null};return dr.router({getCapabilities:dr.procedure.input(hr).query((async({input:t})=>{console.log("[Server] Get Capabilities:",t);const n=t||{type:"ggml-llm"},{type:r="ggml-llm",config:o,currentClientCapabilities:a=null,options:i={}}=n,s=vr(o),c=e.getModelIdentifier(r,s),u=l(r,c),d=br(u,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=r),e.getCapabilities(r,a,{...i,config:d})})),startGenerator:dr.procedure.input(yr).mutation((async({input:t})=>{console.log("[Server] Start Generator:",t);const{type:n,config:r}=t,o=vr(r),a=e.getModelIdentifier(n,o),i=l(n,a),s=br(i,r);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=n),e.startGenerator(n,s)})),finalizeGenerator:dr.procedure.input(fr).mutation((async({input:t})=>(console.log("[Server] Finalize Generator:",t),e.finalizeGenerator(t.id)))),ggmlLlm:dr.router({initContext:dr.procedure.input(mr).subscription((({input:t})=>K((n=>{console.log("[Server] Init Context:",t);let r=!0;return(async()=>{try{const o={...t.property,onProgress:e=>{r&&n.next({progress:e})}};await new Promise((e=>setTimeout(e)));const a=await e.ggmlLlm.initContext(t.id,o);r&&(n.next({result:a}),n.complete())}catch(e){r&&n.error(e)}})(),()=>{r=!1}})))),completion:dr.procedure.input(mr).subscription((({input:t})=>K((n=>{console.log("[Server] Completion:",t);let r=()=>{};return(async()=>{try{const o=await e.ggmlLlm.completion(t.id,t.property);if(!o)return void n.complete();r=((e,t)=>{const n=e.getReader();let r=!0;return(async()=>{try{for(;r;){const{value:e,done:o}=await n.read();if(o||!r)break;if(e){const n=ur.decode(e,{stream:!0});t.next(n)}}t.complete()}catch(e){t.error(e)}finally{n.cancel().catch((()=>{}))}})(),()=>{r=!1,n.cancel().catch((()=>{}))}})(o,n)}catch(e){n.error(e)}})(),()=>r()})))),tokenize:dr.procedure.input(mr).query((async({input:t})=>(console.log("[Server] Tokenize:",t),e.ggmlLlm.tokenize(t.id,t.property)))),detokenize:dr.procedure.input(mr).mutation((async({input:t})=>(console.log("[Server] Detokenize:",t),e.ggmlLlm.detokenize(t.id,t.property)))),applyChatTemplate:dr.procedure.input(mr).query((async({input:t})=>(console.log("[Server] Apply Chat Template:",t),e.ggmlLlm.applyChatTemplate(t.id,t.property)))),releaseContext:dr.procedure.input(mr).mutation((async({input:t})=>(console.log("[Server] Release Context:",t),e.ggmlLlm.releaseContext(t.id,t.property))))})})},wr=({backend:e=d,router:t,createContext:n=(()=>({})),defaultConfig:r}={})=>{const o=t||_r(e,{defaultConfig:r});return{server:It({router:o,createContext:n,basePath:"/trpc/"}),router:o,backend:e}},xr=async({port:e=2080,backend:t,router:n,createContext:r,defaultConfig:o}={})=>{const{server:a,router:i}=wr({backend:t,router:n,createContext:r,defaultConfig:o});return await new Promise((t=>a.listen(e,t))),{server:a,router:i,port:e}};export{rr as checkAndNotifyUpdates,tr as checkForUpdates,nr as compareVersions,_r as createRouter,wr as createServer,Xn as currentVersion,lr as showModelsTable,xr as startServer,cr as testGgmlLlmCapabilities};
|
|
1
|
+
import*as e from"@trpc/server";import{createRequire as t}from"node:module";import*as n from"zod";import*as r from"@huggingface/gguf";import*as o from"@fugood/llama.node";import*as a from"@iarna/toml";var i,s,l={},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return l[e](n,n.exports,u),n.exports}s=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,u.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 n=Object.create(null);u.r(n);var r={};i=i||[null,s({}),s([]),s(s)];for(var o=2&t&&e;"object"==typeof o&&!~i.indexOf(o);o=s(o))Object.getOwnPropertyNames(o).forEach((t=>r[t]=()=>e[t]));return r.default=()=>e,u.d(n,r),n},u.d=(e,t)=>{for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var d={};u.r(d),u.d(d,{finalizeGenerator:()=>Kn,getCapabilities:()=>Qn,getModelIdentifier:()=>Zn,ggmlLlm:()=>Wn,startGenerator:()=>Yn});const p=(e=>{var t={};return u.d(t,e),t})({initTRPC:()=>e.initTRPC}),f={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},m={[-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"};f.BAD_GATEWAY,f.SERVICE_UNAVAILABLE,f.GATEWAY_TIMEOUT,f.INTERNAL_SERVER_ERROR;function y(e){return!!e&&!Array.isArray(e)&&"object"==typeof e}const h="function"==typeof Symbol&&!!Symbol.asyncIterator;function g(e){return h&&y(e)&&Symbol.asyncIterator in e}const v=e=>e();function b(e){return e}var _=Object.create,w=Object.defineProperty,x=Object.getOwnPropertyDescriptor,E=Object.getOwnPropertyNames,S=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty,O=(e,t)=>function(){return t||(0,e[E(e)[0]])((t={exports:{}}).exports,t),t.exports},C=(e,t,n)=>(n=null!=e?_(S(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var o,a=E(t),i=0,s=a.length;i<s;i++)o=a[i],k.call(e,o)||o===n||w(e,o,{get:(e=>t[e]).bind(null,o),enumerable:!(r=x(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:w(n,"default",{value:e,enumerable:!0}),e));const T={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 N(e){var t;return null!==(t=T[e])&&void 0!==t?t:500}function M(e){return N(e.code)}var B=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,t){function n(e){return t.exports=n="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,n(e)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports}}),P=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,t){var n=B().default;t.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(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}}),$=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,t){var n=B().default,r=P();t.exports=function(e){var t=r(e,"string");return"symbol"==n(t)?t:t+""},t.exports.__esModule=!0,t.exports.default=t.exports}}),I=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,t){var n=$();t.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},t.exports.__esModule=!0,t.exports.default=t.exports}}),A=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,t){var n=I();function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}t.exports=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e},t.exports.__esModule=!0,t.exports.default=t.exports}}),R=C(A(),1);function U(e){const{path:t,error:n,config:r}=e,{code:o}=e.error,a={message:n.message,code:f[o],data:{code:o,httpStatus:M(n)}};return r.isDev&&"string"==typeof e.error.stack&&(a.data.stack=e.error.stack),"string"==typeof t&&(a.data.path=t),r.errorFormatter((0,R.default)((0,R.default)({},e),{},{shape:a}))}var j=C(I(),1),q=class extends Error{};function z(e){if(e instanceof D)return e;if(e instanceof Error&&"TRPCError"===e.name)return e;const t=new D({code:"INTERNAL_SERVER_ERROR",cause:e});return e instanceof Error&&e.stack&&(t.stack=e.stack),t}var D=class extends Error{constructor(e){var t,n,r;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)):y(e)?Object.assign(new q,e):void 0:void 0}(e.cause);super(null!==(t=null!==(n=e.message)&&void 0!==n?n:null==o?void 0:o.message)&&void 0!==t?t:e.code,{cause:o}),(0,j.default)(this,"cause",void 0),(0,j.default)(this,"code",void 0),this.code=e.code,this.name="TRPCError",null!==(r=this.cause)&&void 0!==r||(this.cause=o)}},G=C(A(),1);function F(e,t){return"error"in t?(0,G.default)((0,G.default)({},t),{},{error:e.transformer.output.serialize(t.error)}):"data"in t.result?(0,G.default)((0,G.default)({},t),{},{result:(0,G.default)((0,G.default)({},t.result),{},{data:e.transformer.output.serialize(t.result.data)})}):t}function L(e,t){return Array.isArray(t)?t.map((t=>F(e,t))):F(e,t)}Error;C(A(),1);async function J(e,t){const{_def:n}=e;let r=n.procedures[t];for(;!r;){const e=Object.keys(n.lazy).find((e=>t.startsWith(e)));if(!e)return null;const o=n.lazy[e];await o.load(),r=n.procedures[t]}return r}const V=Symbol();function H(e){return Array.isArray(e)&&e[2]===V}function Y(e){return"object"==typeof e&&null!==e&&"subscribe"in e}function K(e){const t={subscribe(t){let n=null,r=!1,o=!1,a=!1;function i(){null!==n?o||(o=!0,"function"==typeof n?n():n&&n.unsubscribe()):a=!0}return n=e({next(e){var n;r||null===(n=t.next)||void 0===n||n.call(t,e)},error(e){var n;r||(r=!0,null===(n=t.error)||void 0===n||n.call(t,e),i())},complete(){var e;r||(r=!0,null===(e=t.complete)||void 0===e||e.call(t),i())}}),a&&i(),{unsubscribe:i}},pipe:(...e)=>e.reduce(Q,t)};return t}function Q(e,t){return t(e)}function W(e,t){const n=function(e,t){let n=null;const r=()=>{null==n||n.unsubscribe(),n=null,t.removeEventListener("abort",r)};return new ReadableStream({start(o){n=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?r():t.addEventListener("abort",r,{once:!0})},cancel(){r()}})}(e,t),r=n.getReader(),o={async next(){const e=await r.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 r.cancel(),{value:void 0,done:!0})};return{[Symbol.asyncIterator]:()=>o}}function Z(e){let t;try{t=JSON.parse(e)}catch(e){throw new D({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:e})}return function(e){try{if(null===e)return null;if(!y(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 D({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:e})}}(t)}var X=C(A(),1);function ee(e){let t=null;const n=Symbol.for("@trpc/server/http/memo");let r=n;return{read:async()=>{var o;return r!==n||(null!==(o=t)&&void 0!==o||(t=e().catch((e=>{if(e instanceof D)throw e;throw new D({code:"BAD_REQUEST",message:e instanceof Error?e.message:"Invalid input",cause:e})}))),r=await t,t=null),r},result:()=>r!==n?r:void 0}}const te={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:n}=e,r="1"===e.searchParams.get("batch"),o=r?e.path.split(","):[e.path],a=ee((async()=>{let t;if("GET"===n.method){const n=e.searchParams.get("input");n&&(t=JSON.parse(n))}else t=await n.json();if(void 0===t)return{};if(!r)return{0:e.router._def._config.transformer.input.deserialize(t)};if(!y(t))throw new D({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});const a={};for(const n of o.keys()){const r=t[n];void 0!==r&&(a[n]=e.router._def._config.transformer.input.deserialize(r))}return a})),i=await Promise.all(o.map((async(t,n)=>{const r=await J(e.router,t);return{path:t,procedure:r,getRawInput:async()=>{let t=(await a.read())[n];if("subscription"===(null==r?void 0:r._def.type)){var o,i;const n=null!==(o=null!==(i=e.headers.get("last-event-id"))&&void 0!==i?i:e.searchParams.get("lastEventId"))&&void 0!==o?o:e.searchParams.get("Last-Event-Id");if(n)if(y(t))t=(0,X.default)((0,X.default)({},t),{},{lastEventId:n});else{var s;null!==(s=t)&&void 0!==s||(t={lastEventId:n})}}return t},result:()=>{var e;return null===(e=a.result())||void 0===e?void 0:e[n]}}}))),s=new Set(i.map((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})).filter(Boolean));if(s.size>1)throw new D({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(s).join(", ")}`});const l=null!==(t=s.values().next().value)&&void 0!==t?t:"unknown",c=e.searchParams.get("connectionParams");return{isBatchCall:r,accept:n.headers.get("trpc-accept"),calls:i,type:l,connectionParams:null===c?null:Z(c),signal:n.signal,url:e.url}}},ne=[te,{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 D({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});const n=ee((async()=>await t.formData())),r=await J(e.router,e.path);return{accept:null,calls:[{path:e.path,getRawInput:n.read,result:n.result,procedure:r}],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 D({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});const n=ee((async()=>t.body));return{calls:[{path:e.path,getRawInput:n.read,result:n.result,procedure:await J(e.router,e.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}}];async function re(e){const t=function(e){const t=ne.find((t=>t.isMatch(e)));if(t)return t;if(!t&&"GET"===e.method)return te;throw new D({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 oe(e){return y(e)&&"AbortError"===e.name}function ae(e="AbortError"){throw new DOMException(e,"AbortError")}function ie(e){return"[object Object]"===Object.prototype.toString.call(e)}var se=C(I(),1);let le;const ce=new WeakMap,ue=()=>{};le=Symbol.toStringTag;var de,pe,fe,me,ye=class e{constructor(e){(0,se.default)(this,"promise",void 0),(0,se.default)(this,"subscribers",[]),(0,se.default)(this,"settlement",null),(0,se.default)(this,le,"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:n}=this;if(null===n){if(null===this.subscribers)throw new Error("Unpromise settled but still has subscribers");const n=function(){let e,t;const n=new Promise(((n,r)=>{e=n,t=r}));return{promise:n,resolve:e,reject:t}}();this.subscribers=(r=this.subscribers,o=n,[...r,o]),e=n.promise,t=()=>{null!==this.subscribers&&(this.subscribers=function(e,t){const n=e.indexOf(t);return-1!==n?function(e,t){return[...e.slice(0,t),...e.slice(t+1)]}(e,n):e}(this.subscribers,n))}}else{const{status:r}=n;e="fulfilled"===r?Promise.resolve(n.value):Promise.reject(n.reason),t=ue}var r,o;return Object.assign(e,{unsubscribe:t})}then(e,t){const n=this.subscribe(),{unsubscribe:r}=n;return Object.assign(n.then(e,t),{unsubscribe:r})}catch(e){const t=this.subscribe(),{unsubscribe:n}=t;return Object.assign(t.catch(e),{unsubscribe:n})}finally(e){const t=this.subscribe(),{unsubscribe:n}=t;return Object.assign(t.finally(e),{unsubscribe:n})}static proxy(t){const n=e.getSubscribablePromise(t);return void 0!==n?n:e.createSubscribablePromise(t)}static createSubscribablePromise(t){const n=new e(t);return ce.set(t,n),ce.set(n,n),n}static getSubscribablePromise(e){return ce.get(e)}static resolve(t){const n="object"==typeof t&&null!==t&&"then"in t&&"function"==typeof t.then?t:Promise.resolve(t);return e.proxy(n).subscribe()}static async any(t){const n=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.any(n)}finally{n.forEach((({unsubscribe:e})=>{e()}))}}static async race(t){const n=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.race(n)}finally{n.forEach((({unsubscribe:e})=>{e()}))}}static async raceReferences(e){const t=e.map(he);try{return await Promise.race(t)}finally{for(const e of t)e.unsubscribe()}}};function he(e){return ye.proxy(e).then((()=>[e]))}function ge(e,t){const n=e,r=n[Symbol.dispose];return n[Symbol.dispose]=()=>{t(),null==r||r()},n}function ve(e,t){const n=e,r=n[Symbol.asyncDispose];return n[Symbol.asyncDispose]=async()=>{await t(),await(null==r?void 0:r())},n}null!==(pe=(de=Symbol).dispose)&&void 0!==pe||(de.dispose=Symbol()),null!==(me=(fe=Symbol).asyncDispose)&&void 0!==me||(fe.asyncDispose=Symbol());const be=Symbol();function _e(e){let t=null;return ge({start(){if(t)throw new Error("Timer already started");return new Promise((n=>{t=setTimeout((()=>n(be)),e)}))}},(()=>{t&&clearTimeout(t)}))}var we=O({"../../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 n=Error();return n.name="SuppressedError",n.error=e,n.suppressed=t,n},t={},n=[];function r(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 r=t[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(void 0===r&&(r=t[Symbol.dispose||Symbol.for("Symbol.dispose")],e))var o=r;if("function"!=typeof r)throw new TypeError("Object is not disposable.");o&&(r=function(){try{o.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:r.bind(null,!1),a:r.bind(null,!0),d:function(){var r,o=this.e,a=0;function i(){for(;r=n.pop();)try{if(!r.a&&1===a)return a=0,n.push(r),Promise.resolve().then(i);if(r.d){var e=r.d.call(r.v);if(r.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(n){return o=o!==t?new e(n,o):n,i()}return i()}}},t.exports.__esModule=!0,t.exports.default=t.exports}}),xe=O({"../../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}}),Ee=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(e,t){var n=xe();t.exports=function(e){return new n(e,0)},t.exports.__esModule=!0,t.exports.default=t.exports}}),Se=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(e,t){var n=xe();function r(e){var t,r;function o(t,r){try{var i=e[t](r),s=i.value,l=s instanceof n;Promise.resolve(l?s.v:s).then((function(n){if(l){var r="return"===t?"return":"next";if(!s.k||n.done)return o(r,n);n=e[r](n).value}a(i.done?"return":"normal",n)}),(function(e){o("throw",e)}))}catch(e){a("throw",e)}}function a(e,n){switch(e){case"return":t.resolve({value:n,done:!0});break;case"throw":t.reject(n);break;default:t.resolve({value:n,done:!1})}(t=t.next)?o(t.key,t.arg):r=null}this._invoke=function(e,n){return new Promise((function(a,i){var s={key:e,arg:n,resolve:a,reject:i,next:null};r?r=r.next=s:(t=r=s,o(e,n))}))},"function"!=typeof e.return&&(this.return=void 0)}r.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},r.prototype.next=function(e){return this._invoke("next",e)},r.prototype.throw=function(e){return this._invoke("throw",e)},r.prototype.return=function(e){return this._invoke("return",e)},t.exports=function(e){return function(){return new r(e.apply(this,arguments))}},t.exports.__esModule=!0,t.exports.default=t.exports}}),ke=C(we(),1),Oe=C(Ee(),1),Ce=C(Se(),1);function Te(e){const t=e[Symbol.asyncIterator]();return t[Symbol.asyncDispose]?t:ve(t,(async()=>{var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))}))}function Ne(){return(Ne=(0,Ce.default)((function*(e,t){try{var n=(0,ke.default)();const r=n.a(Te(e)),o=n.u(_e(t.maxDurationMs)).start();let a;for(;;){if(a=yield(0,Oe.default)(ye.race([r.next(),o])),a===be&&ae(),a.done)return a;yield a.value,a=null}}catch(e){n.e=e}finally{yield(0,Oe.default)(n.d())}}))).apply(this,arguments)}function Me(){return(Me=(0,Ce.default)((function*(e,t){try{var n=(0,ke.default)();const r=n.a(Te(e));let o;const a=n.u(_e(t.gracePeriodMs));let i=t.count,s=new Promise((()=>{}));for(;;){if(o=yield(0,Oe.default)(ye.race([r.next(),s])),o===be&&ae(),o.done)return o.value;yield o.value,0==--i&&(s=a.start()),o=null}}catch(e){n.e=e}finally{yield(0,Oe.default)(n.d())}}))).apply(this,arguments)}function Be(){let e,t;return{promise:new Promise(((n,r)=>{e=n,t=r})),resolve:e,reject:t}}var Pe=C(we(),1),$e=C(Ee(),1),Ie=C(Se(),1);function Ae(){let e="idle",t=Be();const n=[],r=new Set,o=[];function a(n){if("pending"!==e)return;const a=function(e,t){const n=e[Symbol.asyncIterator]();let r="idle";function o(){r="done",t=()=>{}}return{pull:function(){"idle"===r&&(r="pending",n.next().then((e=>{if(e.done)return r="done",t({status:"return",value:e.value}),void o();r="idle",t({status:"yield",value:e.value})})).catch((e=>{t({status:"error",error:e}),o()})))},destroy:async()=>{var e;o(),await(null===(e=n.return)||void 0===e?void 0:e.call(n))}}}(n,(n=>{if("pending"===e){switch(n.status){case"yield":o.push([a,n]);break;case"return":r.delete(a);break;case"error":o.push([a,n]),r.delete(a)}t.resolve()}}));r.add(a),a.pull()}return{add(t){switch(e){case"idle":n.push(t);break;case"pending":a(t)}},[Symbol.asyncIterator]:()=>(0,Ie.default)((function*(){try{var i=(0,Pe.default)();if("idle"!==e)throw new Error("Cannot iterate twice");e="pending";i.a(ve({},(async()=>{e="done";const n=[];if(await Promise.all(Array.from(r.values()).map((async e=>{try{await e.destroy()}catch(e){n.push(e)}}))),o.length=0,r.clear(),t.resolve(),n.length>0)throw new AggregateError(n)})));for(;n.length>0;)a(n.shift());for(;r.size>0;){for(yield(0,$e.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=Be()}}catch(e){i.e=e}finally{yield(0,$e.default)(i.d())}}))()}}function Re(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 n=await t.next();n.done?e.close():e.enqueue(n.value)}})}var Ue=C(we(),1),je=C(Ee(),1),qe=C(Se(),1);const ze=Symbol("ping");function De(e,t){return Ge.apply(this,arguments)}function Ge(){return(Ge=(0,qe.default)((function*(e,t){try{var n=(0,Ue.default)();const o=n.a(Te(e));let a,i=o.next();for(;;)try{var r=(0,Ue.default)();const e=r.u(_e(t));if(a=yield(0,je.default)(ye.race([i,e.start()])),a===be){yield ze;continue}if(a.done)return a.value;i=o.next(),yield a.value,a=null}catch(e){r.e=e}finally{r.d()}}catch(e){n.e=e}finally{yield(0,je.default)(n.d())}}))).apply(this,arguments)}var Fe=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(e,t){function n(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(n=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 n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new n(e)}t.exports=function(e){var t,r,o,a=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,o=Symbol.iterator);a--;){if(r&&null!=(t=e[r]))return t.call(e);if(o&&null!=(t=e[o]))return new n(t.call(e));r="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")},t.exports.__esModule=!0,t.exports.default=t.exports}}),Le=C(Ee(),1),Je=C(Se(),1),Ve=C(we(),1),He=C(Fe(),1);const Ye=0,Ke=1,Qe=0,We=1,Ze=0,Xe=1,et=2;function tt(e){return(y(e)||"function"==typeof e)&&"function"==typeof(null==e?void 0:e.then)&&"function"==typeof(null==e?void 0:e.catch)}var nt=class extends Error{constructor(e){super("Max depth reached at path: "+e.join(".")),this.path=e}};function rt(){return rt=(0,Je.default)((function*(e){const{data:t}=e;let n=0;const r=0,o=Ae();function a(e){const t=n++,r=e(t);return o.add(r),t}function i(t,n){return a(function(){var r=(0,Je.default)((function*(r){const o=l(n);o&&(t.catch((t=>{var r;null===(r=e.onError)||void 0===r||r.call(e,{error:t,path:n})})),t=Promise.reject(o));try{const e=yield(0,Le.default)(t);yield[r,Qe,u(e,n)]}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:n}),yield[r,We,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:n})]}}));return function(e){return r.apply(this,arguments)}}())}function s(t,n){return a(function(){var r=(0,Je.default)((function*(r){try{var o=(0,Ve.default)();const s=l(n);if(s)throw s;const c=o.a(Te(t));try{for(;;){const e=yield(0,Le.default)(c.next());if(e.done){yield[r,Ze,u(e.value,n)];break}yield[r,Xe,u(e.value,n)]}}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:n}),yield[r,et,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:n})]}}catch(e){o.e=e}finally{yield(0,Le.default)(o.d())}}));return function(e){return r.apply(this,arguments)}}())}function l(t){return e.maxDepth&&t.length>e.maxDepth?new nt(t):null}function c(t,n){if(tt(t))return[Ye,i(t,n)];if(g(t)){if(e.maxDepth&&n.length>=e.maxDepth)throw new Error("Max depth reached");return[Ke,s(t,n)]}return null}function u(e,t){if(void 0===e)return[[]];const n=c(e,t);if(n)return[[r],[null,...n]];if(!1===ie(o=e)||void 0!==(a=o.constructor)&&(!1===ie(i=a.prototype)||!1===i.hasOwnProperty("isPrototypeOf")))return[[e]];var o,a,i;const s={},l=[];for(const[n,o]of Object.entries(e)){const e=c(o,[...t,n]);e?(s[n]=r,l.push([n,...e])):s[n]=o}return[[s],...l]}const d={};for(const[e,n]of Object.entries(t))d[e]=u(n,[e]);yield d;let p=o;e.pingMs&&(p=De(o,e.pingMs));var f,m=!1,y=!1;try{for(var h,v=(0,He.default)(p);m=!(h=yield(0,Le.default)(v.next())).done;m=!1){const e=h.value;yield e}}catch(e){y=!0,f=e}finally{try{m&&null!=v.return&&(yield(0,Le.default)(v.return()))}finally{if(y)throw f}}})),rt.apply(this,arguments)}function ot(e){let t=Re(function(e){return rt.apply(this,arguments)}(e));const{serialize:n}=e;return n&&(t=t.pipeThrough(new TransformStream({transform(e,t){e===ze?t.enqueue(ze):t.enqueue(n(e))}}))),t.pipeThrough(new TransformStream({transform(e,t){e===ze?t.enqueue(" "):t.enqueue(JSON.stringify(e)+"\n")}})).pipeThrough(new TextEncoderStream)}Error;var at=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncGeneratorDelegate.js"(e,t){var n=xe();t.exports=function(e){var t={},r=!1;function o(t,o){return r=!0,o=new Promise((function(n){n(e[t](o))})),{done:!1,value:new n(o,1)}}return t["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},t.next=function(e){return r?(r=!1,e):o("next",e)},"function"==typeof e.throw&&(t.throw=function(e){if(r)throw r=!1,e;return o("throw",e)}),"function"==typeof e.return&&(t.return=function(e){return r?(r=!1,e):o("return",e)}),t},t.exports.__esModule=!0,t.exports.default=t.exports}}),it=C(Fe(),1),st=C(Ee(),1),lt=C(Se(),1),ct=C(at(),1);C(we(),1);const ut="ping",dt="serialized-error",pt="connected",ft="return";function mt(e){var t,n,r,o,a;const{serialize:i=b}=e,s={enabled:null!==(t=null===(n=e.ping)||void 0===n?void 0:n.enabled)&&void 0!==t&&t,intervalMs:null!==(r=null===(o=e.ping)||void 0===o?void 0:o.intervalMs)&&void 0!==r?r: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,lt.default)((function*(){yield{event:pt,data:JSON.stringify(l)};let t,n,r=e.data;e.emitAndEndImmediately&&(r=function(e,t){return Me.apply(this,arguments)}(r,{count:1,gracePeriodMs:1})),e.maxDurationMs&&e.maxDurationMs>0&&e.maxDurationMs!==1/0&&(r=function(e,t){return Ne.apply(this,arguments)}(r,{maxDurationMs:e.maxDurationMs})),s.enabled&&s.intervalMs!==1/0&&s.intervalMs>0&&(r=De(r,s.intervalMs));var o,a=!1,c=!1;try{for(var u,d=(0,it.default)(r);a=!(u=yield(0,st.default)(d.next())).done;a=!1)t=u.value,t!==ze?(n=H(t)?{id:t[0],data:t[1]}:{data:t},n.data=JSON.stringify(i(n.data)),yield n,t=null,n=null):yield{event:ut,data:""}}catch(e){c=!0,o=e}finally{try{a&&null!=d.return&&(yield(0,st.default)(d.return()))}finally{if(c)throw o}}})),c.apply(this,arguments)}function u(){return u=(0,lt.default)((function*(){try{yield*(0,ct.default)((0,it.default)(function(){return c.apply(this,arguments)}())),yield{event:ft,data:""}}catch(r){var t,n;if(oe(r))return;const o=z(r),a=null!==(t=null===(n=e.formatError)||void 0===n?void 0:n.call(e,{error:o}))&&void 0!==t?t:null;yield{event:dt,data:JSON.stringify(i(a))}}})),u.apply(this,arguments)}const d=Re(function(){return u.apply(this,arguments)}());return d.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 yt={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform","X-Accel-Buffering":"no",Connection:"keep-alive"};var ht=C(Se(),1),gt=C(A(),1);function vt(e){return v((0,ht.default)((function*(){throw e})))}const bt={mutation:["POST"],query:["GET"],subscription:["GET"]},_t={mutation:["POST"],query:["GET","POST"],subscription:["GET","POST"]};function wt(e){var t,n,r;const{ctx:o,info:a,responseMeta:i,untransformedJSON:s,errors:l=[],headers:c}=e;let u=s?function(e){const t=Array.isArray(e)?e:[e],n=new Set(t.map((e=>{var t;return"error"in e&&y(e.error.data)?"number"==typeof(null===(t=e.error.data)||void 0===t?void 0:t.httpStatus)?e.error.data.httpStatus:N(m[e.error.code]):200})));return 1!==n.size?207:n.values().next().value}(s):200;const d=!s,p=d?[]:Array.isArray(s)?s:[s],f=null!==(t=null==i?void 0:i({ctx:o,info:a,paths:null==a?void 0:a.calls.map((e=>e.path)),data:p,errors:l,eagerGeneration:d,type:null!==(n=null==a||null===(r=a.calls.find((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})))||void 0===r||null===(r=r.procedure)||void 0===r?void 0:r._def.type)&&void 0!==n?n:"unknown"}))&&void 0!==t?t:{};if(f.headers)if(f.headers instanceof Headers)for(const[e,t]of f.headers.entries())c.append(e,t);else for(const[e,t]of Object.entries(f.headers))if(Array.isArray(t))for(const n of t)c.append(e,n);else"string"==typeof t&&c.set(e,t);return f.status&&(u=f.status),{status:u}}function xt(e){return!!y(e)&&(!!g(e)||(Object.values(e).some(tt)||Object.values(e).some(g)))}async function Et(e){var t,n,r,o,a,i;const{router:s,req:l}=e,c=new Headers([["vary","trpc-accept"]]),u=s._def._config,d=new URL(l.url);if("HEAD"===l.method)return new Response(null,{status:204});const p=null===(t=null!==(n=e.allowBatching)&&void 0!==n?n:null===(r=e.batching)||void 0===r?void 0:r.enabled)||void 0===t||t,f=null!==(o=e.allowMethodOverride)&&void 0!==o&&o&&"POST"===l.method,m=await v((async()=>{try{return[void 0,await re({req:l,path:decodeURIComponent(e.path),router:s,searchParams:d.searchParams,headers:e.req.headers,url:d})]}catch(e){return[z(e),void 0]}})),y=v((()=>{let t;return{valueOrUndefined:()=>{if(t)return t[1]},value:()=>{const[e,n]=t;if(e)throw e;return n},create:async n=>{if(t)throw new Error("This should only be called once - report a bug in tRPC");try{const r=await e.createContext({info:n});t=[void 0,r]}catch(e){t=[z(e),void 0]}}}})),h=f?_t:bt,b="application/jsonl"===l.headers.get("trpc-accept"),_=null===(a=null===(i=u.sse)||void 0===i?void 0:i.enabled)||void 0===a||a;try{const[t,n]=m;if(t)throw t;if(n.isBatchCall&&!p)throw new D({code:"BAD_REQUEST",message:"Batching is not enabled on the server"});if(b&&!n.isBatchCall)throw new D({message:"Streaming requests must be batched (you can do a batch of 1)",code:"BAD_REQUEST"});await y.create(n);const r=n.calls.map((async t=>{const r=t.procedure;try{if(e.error)throw e.error;if(!r)throw new D({code:"NOT_FOUND",message:`No procedure found on path "${t.path}"`});if(!h[r._def.type].includes(l.method))throw new D({code:"METHOD_NOT_SUPPORTED",message:`Unsupported ${l.method}-request to ${r._def.type} procedure at path "${t.path}"`});if("subscription"===r._def.type&&n.isBatchCall)throw new D({code:"BAD_REQUEST",message:"Cannot batch subscription calls"});return[void 0,{data:await r({path:t.path,getRawInput:t.getRawInput,ctx:y.value(),type:r._def.type,signal:e.req.signal})}]}catch(n){var o,a,i;const r=z(n),s=t.result();return null===(o=e.onError)||void 0===o||o.call(e,{error:r,path:t.path,input:s,ctx:y.valueOrUndefined(),type:null!==(a=null===(i=t.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown",req:e.req}),[r,void 0]}}));if(!n.isBatchCall){const[t]=n.calls,[o,a]=await r[0];switch(n.type){case"unknown":case"mutation":case"query":{if(c.set("content-type","application/json"),xt(null==a?void 0:a.data))throw new D({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"});const r=o?{error:U({config:u,ctx:y.valueOrUndefined(),error:o,input:t.result(),path:t.path,type:n.type})}:{result:{data:a.data}},i=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:o?[o]:[],headers:c,untransformedJSON:[r]});return new Response(JSON.stringify(L(u,r)),{status:i.status,headers:c})}case"subscription":{const r=v((()=>{if(o)return vt(o);if(!_)return vt(new D({code:"METHOD_NOT_SUPPORTED",message:'Missing experimental flag "sseSubscriptions"'}));if(!Y(a.data)&&!g(a.data))return vt(new D({message:`Subscription ${t.path} did not return an observable or a AsyncGenerator`,code:"INTERNAL_SERVER_ERROR"}));return Y(a.data)?W(a.data,e.req.signal):a.data})),i=mt((0,gt.default)((0,gt.default)({},u.sse),{},{data:r,serialize:e=>u.transformer.output.serialize(e),formatError(n){var r,o,a;const i=z(n.error),s=null==t?void 0:t.result(),l=null==t?void 0:t.path,c=null!==(r=null==t||null===(o=t.procedure)||void 0===o?void 0:o._def.type)&&void 0!==r?r:"unknown";null===(a=e.onError)||void 0===a||a.call(e,{error:i,path:l,input:s,ctx:y.valueOrUndefined(),req:e.req,type:c});return U({config:u,ctx:y.valueOrUndefined(),error:i,input:s,path:l,type:c})}}));for(const[e,t]of Object.entries(yt))c.set(e,t);const s=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:[],headers:c,untransformedJSON:null});return new Response(i,{headers:c,status:s.status})}}}if("application/jsonl"===n.accept){c.set("content-type","application/json"),c.set("transfer-encoding","chunked");const t=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:[],headers:c,untransformedJSON:null}),o=ot((0,gt.default)((0,gt.default)({},u.jsonl),{},{maxDepth:1/0,data:r.map((async t=>{const[r,o]=await t,a=n.calls[0];var i,s;if(r)return{error:U({config:u,ctx:y.valueOrUndefined(),error:r,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=Y(o.data)?W(o.data,e.req.signal):Promise.resolve(o.data);return{result:Promise.resolve({data:l})}})),serialize:e=>u.transformer.output.serialize(e),onError:t=>{var r,o;null===(r=e.onError)||void 0===r||r.call(e,{error:z(t),path:void 0,input:void 0,ctx:y.valueOrUndefined(),req:e.req,type:null!==(o=null==n?void 0:n.type)&&void 0!==o?o:"unknown"})},formatError(e){var t,r;const o=null==n?void 0:n.calls[e.path[0]],a=z(e.error),i=null==o?void 0:o.result(),s=null==o?void 0:o.path,l=null!==(t=null==o||null===(r=o.procedure)||void 0===r?void 0:r._def.type)&&void 0!==t?t:"unknown";return U({config:u,ctx:y.valueOrUndefined(),error:a,input:i,path:s,type:l})}}));return new Response(o,{headers:c,status:t.status})}c.set("content-type","application/json");const o=(await Promise.all(r)).map((e=>{const[t,n]=e;return t?e:xt(n.data)?[new D({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"}),void 0]:e})),a=o.map((([e,t],r)=>{const o=n.calls[r];var a,i;return e?{error:U({config:u,ctx:y.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=wt({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,untransformedJSON:a,errors:i,headers:c});return new Response(JSON.stringify(L(u,a)),{status:s.status,headers:c})}catch(t){var w;const[n,r]=m,o=y.valueOrUndefined(),{error:a,untransformedJSON:i,body:s}=function(e,t){const{router:n,req:r,onError:o}=t.opts,a=z(e);null==o||o({error:a,path:t.path,input:t.input,ctx:t.ctx,type:t.type,req:r});const i={error:U({config:n._def._config,error:a,type:t.type,path:t.path,input:t.input,ctx:t.ctx})},s=L(n._def._config,i);return{error:a,untransformedJSON:i,body:JSON.stringify(s)}}(t,{opts:e,ctx:y.valueOrUndefined(),type:null!==(w=null==r?void 0:r.type)&&void 0!==w?w:"unknown"}),l=wt({ctx:o,info:r,responseMeta:e.responseMeta,untransformedJSON:i,errors:[a],headers:c});return new Response(s,{status:l.status,headers:c})}}function St(e){try{var t,n;const r=e.headers[":scheme"]&&"https"===e.headers[":scheme"]||e.socket&&"encrypted"in e.socket&&e.socket.encrypted?"https:":"http:",o=null!==(t=null!==(n=e.headers.host)&&void 0!==n?n:e.headers[":authority"])&&void 0!==t?t:"localhost";return new URL(e.url,`${r}//${o}`)}catch(e){throw new D({code:"BAD_REQUEST",message:"Invalid URL",cause:e})}}function kt(e){const t=new Headers;for(const n in e){const r=e[n];if("string"!=typeof n||!n.startsWith(":"))if(Array.isArray(r))for(const e of r)t.append(n,e);else null!=r&&t.append(n,r)}return t}function Ot(e,t,n){const r=new AbortController,o=()=>{t.off("close",o),e.off("aborted",o),r.abort()};t.once("close",o),e.once("aborted",o);const a=St(e),i={headers:kt(e.headers),method:e.method,signal:r.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 n=0,r=!1;return new ReadableStream({start(o){const a=s=>{n+=s.length,!t.maxBodySize||n<=t.maxBodySize?o.enqueue(new Uint8Array(s.buffer,s.byteOffset,s.byteLength)):(o.error(new D({code:"PAYLOAD_TOO_LARGE"})),r=!0,e.off("data",a),e.off("end",i))},i=()=>{r||(r=!0,e.off("data",a),e.off("end",i),o.close())};e.on("data",a),e.on("end",i)},cancel(){e.destroy()}})}(e,n),i.duplex="half");return new Request(a,i)}async function Ct(e){const{res:t}=e;try{const n=new WritableStream({async write(e){var n;await async function(e,t){!1===e.write(t)&&await new Promise(((t,n)=>{const r=e=>{n(e),a()},o=()=>{t(),a()},a=()=>{e.off("error",r),e.off("drain",o)};e.once("error",r),e.once("drain",o)}))}(t,e),null===(n=t.flush)||void 0===n||n.call(t)}});await e.body.pipeTo(n,{signal:e.signal})}catch(e){if(oe(e))return;throw e}}var Tt=C(A(),1);function Nt(e){return t=>{var n;const{res:r,req:o}=e,a=z(t),i=U({config:e.router._def._config,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});null===(n=e.onError)||void 0===n||n.call(e,{req:o,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});const s=L(e.router._def._config,{error:i});r.statusCode=i.data.httpStatus,r.end(JSON.stringify(s))}}async function Mt(e){return new Promise((t=>{var n;const r=null!==(n=e.middleware)&&void 0!==n?n:(e,t,n)=>n();return e.res.once("finish",(()=>{t()})),r(e.req,e.res,(t=>{v((async()=>{var n;const r=Ot(e.req,e.res,{maxBodySize:null!==(n=e.maxBodySize)&&void 0!==n?n:null}),o=await Et((0,Tt.default)((0,Tt.default)({},e),{},{req:r,error:t?z(t):null,createContext:async t=>{var n;return await(null===(n=e.createContext)||void 0===n?void 0:n.call(e,(0,Tt.default)((0,Tt.default)({},e),t)))},onError(t){var n;null==e||null===(n=e.onError)||void 0===n||n.call(e,(0,Tt.default)((0,Tt.default)({},t),{},{req:e.req}))}}));await async function(e){const{response:t,rawResponse:n}=e;200===n.statusCode&&(n.statusCode=t.status);for(const[e,r]of t.headers)n.setHeader(e,r);try{t.body&&await Ct({res:n,signal:e.request.signal,body:t.body})}catch(e){throw n.headersSent||(n.statusCode=500),e}finally{n.end()}}({request:r,response:o,rawResponse:e.res})})).catch(Nt(e))}))}))}const Bt=t(import.meta.url)("http");var Pt=C(A(),1);function $t(e){var t;const n=(null!==(t=e.basePath)&&void 0!==t?t:"/").length;return(t,r)=>{let o="";v((async()=>{const a=St(t);o=a.pathname.slice(n),await Mt((0,Pt.default)((0,Pt.default)({},e),{},{req:t,res:r,path:o}))})).catch(Nt((0,Pt.default)({req:t,res:r,path:o},e)))}}function It(e){return Bt.createServer(function(e){return $t(e)}(e))}const At=(e=>{var t={};return u.d(t,e),t})({z:()=>n.z}),Rt=t(import.meta.url)("node:path"),Ut=t(import.meta.url)("node:os"),jt=t(import.meta.url)("node:fs/promises"),qt=t(import.meta.url)("node:crypto");const zt=(e=>{var t={};return u.d(t,e),t})({gguf:()=>r.gguf});const Dt=(e=>{var t={};return u.d(t,e),t})({getBackendDevicesInfo:()=>o.getBackendDevicesInfo,isLibVariantAvailable:()=>o.isLibVariantAvailable,loadModel:()=>o.loadModel}),Gt=(e,t,n)=>Math.min(Math.max(e,t),n),Ft=e=>e?40:0,Lt=(e=0)=>{if(!e)return 0;return Gt(e/12884901888*20,0,20)},Jt=(e=0)=>{if(!e)return 0;return Gt(e/34359738368*10,0,10)},Vt=e=>e?10:0,Ht=(e="default",t=null)=>{const n=String(e).toLowerCase();if(!n)return 0;if(n.includes("cuda"))return 20;if(n.includes("vulkan"))return 10;if(n.includes("default")){return"darwin"===t||"ios"===t?15:5}return 0},Yt=({platform:e,variant:t,hasGpu:n,gpuUsableBytes:r=0,cpuUsableBytes:o=0,ok:a=!0}={})=>{if(!a)return 0;const i=Ft(n)+Ht(t,e)+Lt(r),s=Jt(o),l=Vt(a);return Math.min(100,Math.round(i+s+l))},Kt=["cuda","vulkan","snapdragon","default"],Qt=e=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[],Wt=e=>e&&String(e).trim().toLowerCase()||null,Zt=(e={})=>{const t=String(e.type||e.deviceType||e.kind||"").toLowerCase();return!!t.includes("gpu")||(!!t.includes("cuda")||(!!t.includes("metal")||!!t.includes("vulkan")))},Xt=({platform:e,totalMemoryInBytes:t,variant:n,devices:r,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:i,error:s})=>{const l=(e=>Array.isArray(e)?e.map((e=>({...e}))):[])(r),c=l.some(Zt),u=l.filter((e=>Zt(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,f=d?Math.floor(d*a):0,m={platform:e,variant:n,hasGpu:c,gpuUsableBytes:p,cpuUsableBytes:f,ok:i},y=Yt(m),h=i?(({platform:e,variant:t,hasGpu:n,gpuUsableBytes:r=0,cpuUsableBytes:o=0,ok:a=!0}={})=>({gpuPresence:Ft(n),variant:Ht(t,e),gpuMemory:Lt(r),cpuMemory:Jt(o),availability:Vt(a)}))(m):null;return{platform:e,ok:i,variant:n,hasGpu:c,devices:l,gpuTotalBytes:u,gpuUsableBytes:p,cpuTotalBytes:d,cpuUsableBytes:f,score:y,breakdown:h,error:s,timestamp:(new Date).toISOString()}},en=({device:e,modelBytes:t=0,kvCacheBytes:n=0}={})=>{if(!e)return{totalRequiredBytes:t+n,fitsInGpu:!1,fitsInCpu:!1,limiting:"unknown-device"};const r=Math.max(0,Number(t)||0)+Math.max(0,Number(n)||0),o=e.hasGpu&&r>0&&r<=e.gpuUsableBytes,a=r>0&&r<=e.cpuUsableBytes;let i="ok";return!o&&e.hasGpu&&(i="gpu-memory"),a||(i=o?"cpu-memory":"insufficient-memory"),{totalRequiredBytes:r,fitsInGpu:o,fitsInCpu:a,limiting:i}},tn="ggml-llm",nn=new Map([[tn,async({platform:e,variant:t=null,preferVariants:n=[],variantPreference:r=[],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:n=[]}={})=>{const r=[];e&&r.push(e),r.push(...Qt(t)),r.push(...Qt(n)),r.push(...Kt);const o=r.map(Wt).filter(Boolean);return Array.from(new Set(o))})({variant:t,preferVariants:n,variantPreference:r}),y=[];for(const t of m)try{if(!await f(t))throw new Error(`Variant ${t} not available on this platform`);const n=await p(t);y.push(Xt({platform:e,totalMemoryInBytes:s,variant:t,devices:n,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!0}))}catch(n){const r=n instanceof Error?n.message:String(n);y.push(Xt({platform:e,totalMemoryInBytes:s,variant:t,devices:[],gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!1,error:r}))}const h=y.filter((e=>e.ok)),g=h.find((e=>e.hasGpu))||h.find((e=>"default"===e.variant))||h[0]||null,v={ok:Boolean(g),selected:g?{...g,breakdown:i?g.breakdown:void 0}:null,attempts:y};if(!i&&v.selected&&delete v.selected.breakdown,!v||!l&&!c)return v;const b=e=>{if(!e)return e;const t=en({device:e,modelBytes:l||0,kvCacheBytes:c||0});let n=null;return null!=u&&u!==c&&(n=en({device:e,modelBytes:l||0,kvCacheBytes:u})),{...e,fit:t,...n&&{limitedFit:n}}};return v.selected=b(v.selected),v.attempts=Array.isArray(v.attempts)?v.attempts.map(b):v.attempts,v}]]),rn=async({platform:e,totalMemoryInBytes:t,backend:n=tn,dependencies:r,...o}={})=>{const a=nn.get(n);if(!a)throw new Error(`No capability detector registered for backend "${n}"`);return await a({...o,dependencies:r,totalMemoryInBytes:t,platform:e})},on={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},an=e=>{const t=e?String(e).toLowerCase():"f16";return on[t]||on.f16},sn=(e,t,n,r,o,a={})=>{if(!(e&&t&&n&&r&&o))return 0;const i=an(a.k),s=an(a.v),l=Number(t)*Number(n)*(Number(r)*i+Number(o)*s);return Math.round(Number(e)*l)},ln=t(import.meta.url)("node:stream/web");var cn=u.t(ln,2);const un="undefined"!=typeof globalThis&&globalThis.ReadableStream&&globalThis.WritableStream?{ReadableStream:globalThis.ReadableStream,WritableStream:globalThis.WritableStream}:cn,{ReadableStream:dn,WritableStream:pn}=un,fn=new TextEncoder,mn=(e={},t={})=>(Object.entries(t||{}).forEach((([t,n])=>{n&&"object"==typeof n&&!Array.isArray(n)?(e[t]&&"object"==typeof e[t]||(e[t]={}),mn(e[t],n)):e[t]=n})),e),yn="https://huggingface.co",hn="https://huggingface.co/api",gn=Rt.join(Ut.homedir(),".buttress","models"),vn=["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"],bn=.5,_n={backend:{type:"ggml-llm",variant:null,variant_preference:["cuda","vulkan","snapdragon","default"],gpu_memory_fraction:.85,cpu_memory_fraction:bn},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:hn,base_url:yn},runtime:{cache_dir:gn,prefer_variants:[],huggingface_token:process.env.HUGGINGFACE_TOKEN||null,http_headers:{}}},wn=(e,t=[])=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[...t],xn=e=>{if(!e)return null;const t=String(e).toLowerCase();return["cuda","vulkan","snapdragon","default"].includes(t)?t:null},En=(e={})=>{const t=JSON.parse(JSON.stringify(_n));if(mn(t,e),t.backend.variant=xn(t.backend.variant),t.backend.variant_preference=Array.from(new Set(wn(t.backend.variant_preference).map(xn).filter(Boolean))),0===t.backend.variant_preference.length&&(t.backend.variant_preference=["cuda","vulkan","snapdragon","default"]),t.runtime.prefer_variants=Array.from(new Set(wn(t.runtime.prefer_variants).map(xn).filter(Boolean))),t.model.preferred_quantizations=Array.from(new Set(wn(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||yn,t.model.api_base=t.model.api_base||hn,t.runtime.cache_dir=t.runtime.cache_dir?Rt.resolve(t.runtime.cache_dir):gn,t},Sn=e=>{const t=e.toLowerCase();return vn.find((e=>t.includes(e)))||null},kn=async e=>{await(0,jt.mkdir)(e,{recursive:!0})},On=(e,t,n=gn)=>{const r=(0,qt.createHash)("sha256").update(e).digest("hex");return Rt.join(((e=gn)=>Rt.join(e,".metadata-cache"))(n),t,`${r}.json`)},Cn=async(e,t,n=gn)=>{try{const r=On(e,t,n),o=await(0,jt.readFile)(r,"utf-8");return console.log(`[Cache] Hit ${t} cache:`,Rt.basename(r)),JSON.parse(o,((e,t)=>"string"==typeof t&&t.startsWith("__bigint__")?BigInt(t.slice(10)):t))}catch(e){return null}},Tn=async(e,t,n,r=gn)=>{try{const o=On(e,t,r);await kn(Rt.dirname(o)),await(0,jt.writeFile)(o,JSON.stringify(n,((e,t)=>"bigint"==typeof t?`__bigint__${t.toString()}`:t)),"utf-8"),console.log(`[Cache] Wrote ${t} cache:`,Rt.basename(o))}catch(e){console.warn(`[Cache] Failed to write ${t} cache:`,e.message)}},Nn=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const n=await fetch(e,t);if(!n.ok){const t=await n.text().catch((()=>""));throw new Error(`Failed to fetch ${e}: ${n.status} ${n.statusText} ${t}`.trim())}return n.json()},Mn=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const n=await fetch(e,{...t,method:"HEAD"});if(!n.ok)throw new Error(`Failed to fetch headers for ${e}: ${n.status} ${n.statusText}`);return n},Bn=async(e,t,n=gn)=>{const r=JSON.stringify({url:e,headers:t}),o=await Cn(r,"range-metadata",n);if(o)return o;const a=!/^https?:/i.test(e),{metadata:i}=await(0,zt.gguf)(e,{fetch,additionalFetchHeaders:t,allowLocalFile:a});return await Tn(r,"range-metadata",i,n),i},Pn=async(e,t)=>{try{const n=await(0,jt.stat)(e);return!t||n.size===t}catch(e){return!1}},$n=async(e,t,n,r,o)=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");await kn(Rt.dirname(n));const a=await fetch(e,{headers:t});if(!a.ok||!a.body)throw new Error(`Failed to download ${e}: ${a.status} ${a.statusText}`);const i=await(0,jt.open)(n,"w"),s=Number(a.headers.get("content-length"))||r||0;let l=0,c=.05;try{await a.body.pipeTo(new pn({async write(e){if(await i.write(e),l+=e.byteLength,"function"==typeof o&&s>0){const e=Math.min(1,l/s);for(;e>=c;)o(c),c+=.05}},async close(){await i.close(),"function"==typeof o&&o(1)},async abort(e){throw await i.close().catch((()=>{})),await(0,jt.unlink)(n).catch((()=>{})),e}}))}catch(e){throw await i.close().catch((()=>{})),await(0,jt.unlink)(n).catch((()=>{})),e}if(r){const e=await(0,jt.stat)(n);if(e.size!==r)throw await(0,jt.unlink)(n).catch((()=>{})),new Error(`Downloaded file size mismatch, expected ${r} got ${e.size}`)}},In=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 n=e.model.revision||"main",r=e.runtime.cache_dir,o=JSON.stringify({repoId:t,revision:n,filename:e.model.filename,url:e.model.url,quantization:e.model.quantization,preferred_quantizations:e.model.preferred_quantizations}),a=await Cn(o,"artifact-info",r);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 Mn(e.model.url,{headers:i}),s=Number(a.headers.get("content-length"))||null,l={repoId:t,revision:n,filename:e.model.filename||e.model.url.split("/").pop(),url:e.model.url,size:s,headers:i};return await Tn(o,"artifact-info",l,r),l}let{filename:s}=e.model,l=e.model.quantization&&String(e.model.quantization).toLowerCase();const c=await Nn(`${e.model.api_base}/models/${t}?revision=${n}&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:vn;if(s)l||(l=Sn(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:n}=e;s=t,l=n||Sn(s)}const p=`${e.model.base_url.replace(/\/+$/,"")}/${t}/resolve/${n}/${s}`,f=/-(\d{5})-of-(\d{5})\.gguf$/,m=s.match(f);let y=null;if(m){const[,,r]=m,o=await Nn(`${e.model.api_base}/models/${t}?revision=${n}&blobs=true`,{headers:i}),a=o?.siblings||o?.files||[],l=Number(r);y=0;for(let e=1;e<=l;e+=1){const t=String(e).padStart(5,"0"),n=s.replace(f,`-${t}-of-${r}.gguf`),o=a.find((e=>(e.rfilename||e.path||e.filename)===n)),i=Number(o?.size);Number.isFinite(i)&&i>0&&(y+=i)}}else{const e=await Mn(p,{headers:i});y=Number(e.headers.get("content-length"))||null}const h={repoId:t,revision:n,filename:s,url:p,size:y,quantization:l,headers:i,isSplit:Boolean(m),splitCount:m?Number(m[2]):0};return await Tn(o,"artifact-info",h,r),h},An=async(e,{modelBytes:t=null,kvCacheBytes:n=null}={})=>{const r=(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(xn).filter(Boolean)))})(e),[o,...a]=r,i=null!=e.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.gpu_memory_fraction))):_n.backend.gpu_memory_fraction||1,s=null!=e.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):bn,l=await rn({platform:process.platform,totalMemoryInBytes:Ut.totalmem(),backend:"ggml-llm",variant:o||null,preferVariants:a,gpuMemoryFraction:i,cpuMemoryFraction:s,dependencies:{getBackendDevicesInfo:Dt.getBackendDevicesInfo,isLibVariantAvailable:Dt.isLibVariantAvailable},modelBytes:t,kvCacheBytes:n}),c=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(!l.ok||!l.selected){const e=(l.attempts||[]).map((e=>`${e.variant}: ${e.error||"unknown error"}`)).join("; ");throw new Error(`Unable to initialize any backend variant (${r.join(", ")}). Errors: ${e}`)}const u=(l.attempts||[]).map(c);return{selected:c(l.selected),attempts:u}},Rn=({elementSize:e,availableMemory:t,modelBytes:n,nCtx:r})=>{let o=null;if(e>0&&t>n){const r=t-n,a=Math.floor(r/e);a>0&&(o=a)}return o&&o<r?o:r},Un=async e=>{const t=await In(e),n=await Bn(t.url,t.headers,e.runtime.cache_dir),r=n["general.architecture"],o=n[`${r}.context_length`]||n["llama.context_length"],a=n[`${r}.block_count`]||n["llama.block_count"],i=n[`${r}.embedding_length`]||n["llama.embedding_length"],s=n[`${r}.attention.head_count`]||n["llama.attention.head_count"],l=n[`${r}.attention.head_count_kv`]||n["llama.attention.head_count_kv"]||s,c=n[`${r}.attention.key_length`]||n["llama.attention.key_length"],u=n[`${r}.attention.value_length`]||n["llama.attention.value_length"],d=Number.isFinite(Number(a))?Number(a):0,p=Number.isFinite(Number(i))?Number(i):0,f=Number.isFinite(Number(s))?Number(s):0,m=Number.isFinite(Number(l))?Number(l):f,y=f>0&&p>0?p/f:128,h=Number.isFinite(Number(c))?Number(c):y,g=Number.isFinite(Number(u))?Number(u):y,v=n["general.quantization_version"]||null,b=n["general.file_type"]||null,_=e.model.n_ctx?Number(e.model.n_ctx):null;let w=_||o||4096;const x=[],E=[];let S=!0;if(_&&o&&_>o){S=!1;const e=`Requested context length (${_}) exceeds model training context (${o})`;x.push(e),E.push(e),w=o}_&&!o&&x.push("Model metadata missing training context length, using requested value");const k={k:e.model.cache_k_type,v:e.model.cache_v_type},O=t.size>0?t.size:0,C=d&&m&&h&&g?d*m*(h*an(k.k)+g*an(k.v)):0,T=sn(d,w,m,h,g,k),N=await An(e,{modelBytes:O,kvCacheBytes:T}),M=N.selected.totalMemory||0,B=M*(e.backend.gpu_memory_fraction||1),P=null!=e.backend.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):bn,$=Math.max(0,Ut.totalmem()*P),I=N.selected.hasGpu?B:$,A=Rn({elementSize:C,availableMemory:I,modelBytes:O,nCtx:w});if(!_&&A){const e=o?Math.min(A,o):A,t=Math.max(32,e);t<w&&x.push(`Context length capped to ${t} by memory limits`),w=t}w>A&&(w=A);const R=Math.floor(A);console.log(`[buttress] Memory-limited context length: ${R}`);const U=sn(d,w,m,h,g,k),j=O+U,q=d?O/(d+1):O;let z,D=0;N.selected.hasGpu&&q>0&&(D=Math.min(d+1,Math.max(0,Math.floor(B/q)))),console.log(`[buttress] Auto GPU layer capacity (${N.selected.variant}): ${D}/${d+1}`),z="auto"===e.model.n_gpu_layers||null==e.model.n_gpu_layers?D:Math.max(0,Math.min(Number(e.model.n_gpu_layers)||0,d+1));const G=(()=>{const t=e.model.flash_attn&&String(e.model.flash_attn).toLowerCase();return"on"===t||"off"===t?t:N.selected.hasGpu?"auto":"off"})(),F=e.runtime.cache_dir,L=((e,t)=>{if(e.model.local_path)return Rt.resolve(e.model.local_path);const n=t.repoId.split("/"),r=Rt.join(e.runtime.cache_dir,...n,t.revision);return Rt.join(r,t.filename)})(e,t),J=await Pn(L,t.size),V={ok:S,backend:"ggml-llm",warnings:x,errors:E,model:{repoId:t.repoId,revision:t.revision,filename:t.filename,quantization:t.quantization,url:t.url,sizeBytes:t.size,metadata:{architecture:r,n_ctx_train:o,n_layer:d,n_embd:p,quantization_version:v,file_type:b}},runtime:{variant:N.selected.variant,n_ctx:w,requested_ctx:_,n_gpu_layers:z,n_parallel:e.model.n_parallel,n_batch:e.model.n_batch,flash_attn_type:G,cache_type_k:k.k,cache_type_v:k.v,ctx_shift:e.model.ctx_shift,kv_unified:e.model.kv_unified,swa_full:e.model.swa_full,estimated_max_n_ctx:R,auto_gpu_layers:D},resources:{modelBytes:O,kvCacheBytes:U,totalEstimatedBytes:j,gpuCapacityBytes:M,gpuUsableBytes:B,cpuUsableBytes:$,fit:N.selected.fit},devices:{selected:N.selected,attempts:N.attempts},download:{cacheDir:F,localPath:L,exists:J},timestamp:(new Date).toISOString()};return{config:e,info:V,artifact:t,metadata:{arch:r,nCtxTrain:o,nLayer:d,nEmbd:p},devices:N,cacheTypes:k,localPath:L,localExists:J}},jn=(e,t)=>`event: ${e}\ndata: ${null==t?"":JSON.stringify(t)}\n\n`,qn=(e,t)=>{let n;return new dn({async start(r){try{const o=await e.parallel.completion(t,((e,t)=>{t&&r.enqueue(fn.encode(jn("token",{requestId:e,...t})))})),{requestId:a}=o;n=o.stop;const i=await o.promise;console.log("[Completion] Result:",i),r.enqueue(fn.encode(jn("result",{requestId:a,...i}))),r.close()}catch(e){r.enqueue(fn.encode(jn("error",{message:e?.message||String(e)}))),r.error(e)}},cancel(){n&&n()}})},zn=e=>{const t={model:e.plan.localPath,runtime:e.plan.info.runtime};return(0,qt.createHash)("sha256").update(JSON.stringify(t)).digest("hex").slice(0,24)},Dn=async(e,t)=>{const n=zn(e);let r=e.contexts.get(n);if(r)return r.refCount+=1,await r.ready,"function"==typeof t&&t(1),r;r={key:n,refCount:1},r.ready=(async()=>{const n=await(async(e,t,n)=>{const{config:r,localPath:o,artifact:a}=e;if(e.localExists&&!t.has(o))return e.info.download.exists=!0,"function"==typeof n&&n(.5),o;if(r.model.local_path&&!r.model.allow_local_file)throw new Error("Local model path provided but `model.allow_local_file` is not enabled");const i=o;t.has(i)||t.set(i,(async()=>{if(a.isSplit&&a.splitCount>0){const e=/-(\d{5})-of-(\d{5})\.gguf$/,t=Rt.dirname(o),i=a.splitCount;let s=0;for(let o=1;o<=i;o+=1){const l=String(o).padStart(5,"0"),c=a.filename.replace(e,`-${l}-of-${String(i).padStart(5,"0")}.gguf`),u=`${r.model.base_url.replace(/\/+$/,"")}/${a.repoId}/resolve/${a.revision}/${c}`,d=Rt.join(t,c);await Pn(d)||await $n(u,a.headers,d,null,(e=>{if(e>=0&&Number.isFinite(e)){const t=(s+e)/i,r=Math.round(100*t);console.log(`Downloading model splits: ${Math.min(100,r)}%`),"function"==typeof n&&n(.5*t)}})),s+=1}}else await $n(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 n&&n(.5*e)}}));e.localExists=!0,e.info.download.exists=!0})());try{await t.get(i)}finally{t.delete(i)}return o})(e.plan,e.downloads,t);"function"==typeof t&&t(.5);const o={model:n,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,Dt.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),r.context=a,r.modelInfo=a.getModelInfo(),r}catch(e){if(a)try{a.release()}catch(e){}throw e}})(),e.contexts.set(n,r);try{return await r.ready,r}catch(t){throw e.contexts.delete(n),t}},Gn=async(e,t,n=!1)=>{if(n)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 Fn=e=>{const t=En(e);return t.model.repo_id||t.model.repository||t.model.model||null};const Ln=e=>e?"number"==typeof e.score&&Number.isFinite(e.score)?Number(e.score):Yt(e):0;async function Jn(e=null,t={}){const{threshold:n=1.1,includeBreakdown:r=!1,config:o,...a}=t;let i=null,s=null,l=null,c=null,u=null,d=null;if(o)try{const{modelBytes:e,kvCacheBytes:t,limitedKvCacheBytes:n,memoryLimitedCtx:r,kvInfo:a,quantization:p}=await async function(e){const t=En(e),n=await In(t),r=await Bn(n.url,n.headers,t.runtime.cache_dir),o=r["general.architecture"],a=r[`${o}.context_length`]||r["llama.context_length"],i=r[`${o}.block_count`]||r["llama.block_count"],s=r[`${o}.embedding_length`]||r["llama.embedding_length"],l=r[`${o}.attention.head_count`]||r["llama.attention.head_count"],c=r[`${o}.attention.head_count_kv`]||r["llama.attention.head_count_kv"]||l,u=r[`${o}.attention.key_length`]||r["llama.attention.key_length"],d=r[`${o}.attention.value_length`]||r["llama.attention.value_length"],p=Number.isFinite(Number(i))?Number(i):0,f=Number.isFinite(Number(s))?Number(s):0,m=Number.isFinite(Number(l))?Number(l):0,y=Number.isFinite(Number(c))?Number(c):m,h=m>0&&f>0?f/m:128,g=Number.isFinite(Number(u))?Number(u):h,v=Number.isFinite(Number(d))?Number(d):h,b=(t.model.n_ctx?Number(t.model.n_ctx):null)||a||4096,_={k:t.model.cache_k_type,v:t.model.cache_v_type},w=n.size>0?n.size:0,x=p&&y&&g&&v?p*y*(g*an(_.k)+v*an(_.v)):0,E=null!=t.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.gpu_memory_fraction))):_n.backend.gpu_memory_fraction||1,S=null!=t.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.cpu_memory_fraction))):bn,k=sn(p,b,y,g,v,_),O=await An(t,{modelBytes:w,kvCacheBytes:k}),C=(O.selected.totalMemory||0)*E,T=Math.max(0,Ut.totalmem()*S),N=O.selected.hasGpu?C:T,M=Rn({elementSize:x,availableMemory:N,modelBytes:w,nCtx:b}),B=sn(p,b,y,g,v,_),P=sn(p,M,y,g,v,_),$=r["general.quantization_version"]||null;return{kvInfo:{nCtxTrain:a,nLayer:p,nEmbd:f,nHeadKv:y,nEmbdHeadK:g,nEmbdHeadV:v,nHeadCount:m,nHeadKvCount:y},modelBytes:w,kvCacheBytes:B,limitedKvCacheBytes:P,memoryLimitedCtx:M,quantization:{fileType:r["general.file_type"]||null,version:$}}}(o);i=e,s=t,l=n,c=r,u=a,d=p}catch(e){}const p=null!=o?.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.gpu_memory_fraction))):void 0,f=null!=o?.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.cpu_memory_fraction))):void 0,m=await rn({...a,platform:process.platform,totalMemoryInBytes:Ut.totalmem(),backend:"ggml-llm",includeBreakdown:r,gpuMemoryFraction:p,cpuMemoryFraction:f,dependencies:{getBackendDevicesInfo:Dt.getBackendDevicesInfo,isLibVariantAvailable:Dt.isLibVariantAvailable},modelBytes:i,kvCacheBytes:s,limitedKvCacheBytes:l}),y=m.selected,h=Ln(y);y.modelBytes=i||null,y.kvCacheBytes=s||null,y.memoryLimitedCtx=c||null,y.limitedKvCacheBytes=l||null,y.kvInfo=u||null,y.quantization=d||null;let g=null,v=null;if(e){const t=Ln(e);v={...e,score:t};let r="buttress",o="buttress-higher-score";if(m.ok)if(t||0===t){const e=v.fit,a=v.limitedFit,i=y?.fit,s=y?.limitedFit,l=e?.fitsInGpu||e?.fitsInCpu||a?.fitsInGpu||a?.fitsInCpu,c=i?.fitsInGpu||i?.fitsInCpu||s?.fitsInGpu||s?.fitsInCpu;l&&!c?(r="local",o="client-fits-in-memory"):c&&!l?(r="buttress",o="buttress-fits-in-memory"):t>h*n?(r="local",o="client-better"):h>t*n?(r="buttress",o="buttress-better"):(r="either",o="comparable-scores")}else r="buttress",o="missing-client-score";else r="local",o="buttress-unavailable";g={buttressScore:h,clientScore:t,threshold:n,recommendation:r,reason:o}}m.ok||g||(g={buttressScore:h,clientScore:e?.score??null,threshold:n,recommendation:"local",reason:"buttress-unavailable"});let b=null;return o&&(b={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:m,client:v,comparison:g,modelConfig:b}}const Vn=new Map,Hn=e=>{const t=(e=>{const t=Vn.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 Yn(e,t){if("ggml-llm"!==e)throw new Error("Currently only GGML LLM backend is supported");const n=Fn(t);if(!n)throw new Error("Buttress generator config missing repo identifier");const r=`${e}:${n}`,o=Vn.get(r);if(o)return o.refCount+=1,{id:o.id,info:o.instance.info};const a=await async function(e,t){const n=await Un(En(t)),r={id:e,type:"ggml-llm",config:t,plan:n,info:n.info,contexts:new Map,downloads:new Map};return{id:e,type:"ggml-llm",info:n.info,initContext:async(e={})=>{const{onProgress:t}=e,n=await Dn(r,t);return{modelInfo:n.modelInfo?{...n.modelInfo}:null,runtime:{...r.plan.info.runtime},download:{...r.plan.info.download}}},completion:async(e={})=>{const{options:t={}}=e,n=zn(r),o=r.contexts.get(n);if(!o)throw new Error(`Context "${n}" not initialized`);return await o.ready,qn(o.context,t)},tokenize:async(e={})=>{const{text:t="",params:n={}}=e,o=zn(r),a=r.contexts.get(o);if(!a)throw new Error(`Context "${o}" not initialized`);await a.ready;const i=await a.context.tokenize(t,n);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,n=zn(r),o=r.contexts.get(n);if(!o)throw new Error(`Context "${n}" not initialized`);await o.ready;const a=t.map((e=>Number(e)));return o.context.detokenize(a)},applyChatTemplate:async(e={})=>{const{messages:t=[],template:n,params:o}=e,a=zn(r),i=r.contexts.get(a);if(!i)throw new Error(`Context "${a}" not initialized`);return await i.ready,i.context.getFormattedChat(t,n,o)},releaseContext:async(e={})=>{const t=zn(r),n=r.contexts.get(t);return!!n&&Gn(r,n,Boolean(e.force))},finalize:async()=>{const e=Array.from(r.contexts.values()).map((e=>Gn(r,e,!0)));await Promise.allSettled(e)}}}(r,t),i={id:r,type:a.type,instance:a,refCount:1};return Vn.set(r,i),{id:r,info:a.info}}async function Kn(e){const t=Vn.get(e);return!!t&&(t.refCount-=1,t.refCount<=0&&(await t.instance.finalize(),Vn.delete(e)),!0)}async function Qn(e,t=null,n={}){if("ggml-llm"===e)return Jn(t,n);throw new Error(`Unknown backend type: ${e}`)}const Wn={initContext:async(e,t)=>Hn(e).initContext(t),completion:async(e,t)=>Hn(e).completion(t),tokenize:async(e,t)=>Hn(e).tokenize(t),detokenize:async(e,t)=>Hn(e).detokenize(t),applyChatTemplate:async(e,t)=>Hn(e).applyChatTemplate(t),releaseContext:async(e,t)=>Hn(e).releaseContext(t)};function Zn(e,t){return"ggml-llm"===e?Fn(t):null}const{version:Xn,name:er}={version:"2.23.0-beta.16",name:"@fugood/buttress-server-poc"},tr=async()=>{const e=`https://registry.npmjs.org/${er}/latest`;try{const t=new AbortController,n=setTimeout((()=>t.abort()),3e3),r=await fetch(e,{headers:{Accept:"application/json"},signal:t.signal});if(clearTimeout(n),!r.ok)return null;return(await r.json()).version||null}catch{return null}},nr=(e,t)=>{if(!t)return!1;const n=e.split(/[.-]/),r=t.split(/[.-]/);for(let e=0;e<Math.max(n.length,r.length);e+=1){const t=parseInt(n[e])||0,o=parseInt(r[e])||0;if(o>t)return!0;if(o<t)return!1}return!1},rr=async()=>{try{const e=await tr();e&&nr(Xn,e)&&(e=>{console.log(""),console.log("[33m╭─────────────────────────────────────────────────╮[0m"),console.log("[33m│[0m Update available! [2m%s[0m → [32m%s[0m",Xn.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",er.padEnd(27)),console.log("[33m╰─────────────────────────────────────────────────╯[0m"),console.log("")})(e)}catch(e){}},or=t(import.meta.url)("node:fs"),ar=t(import.meta.url)("node:child_process");const ir=(e=>{var t={};return u.d(t,e),t})({default:()=>a.default}),sr=JSON.parse('{"UU":"@fugood/buttress-server-poc","rE":"2.23.0-beta.16"}');async function lr({modelIds:e=[],defaultConfig:t=null}={}){const n=[];console.log(`${sr.UU} v${sr.rE}`),console.log("Generating model capabilities comparison...\n"),n.push(`${sr.UU} v${sr.rE}`),n.push("## Model Capabilities Comparison\n"),e&&0!==e.length||(console.error("Error: No model IDs provided"),process.exit(1));try{const r=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=r(n[e]||{},t):n[e]=t})),n},o=t||{},{server:a,generators:i=[],...s}=o,l=e=>r(JSON.parse(JSON.stringify(s)),e||{}),c=e=>{if(Array.isArray(i)&&i.length>0){const t=i.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const n=t.find((t=>t.model?.repo_id===e));if(n)return l(n)}}return Object.keys(s).length>0?l({}):null},u=[];for(let t=0;t<e.length;t+=1){const n=e[t];console.log(`[${t+1}/${e.length}] Analyzing ${n}...`);let r=c(n);r={...r||{},model:{...r?.model||{},repo_id:n}};const o=await Qn("ggml-llm",null,{config:r,includeBreakdown:!0});u.push({modelId:n,capabilities:o,modelInfo:o.buttress?.selected||null,modelConfig:o.modelConfig||null})}const d=e=>e?(e/1024/1024/1024).toFixed(2):"N/A",p=e=>e?"✅":"🚫";n.push("| Model ID | Size (GB) | Context Size | KV Cache Size (GB) (SWA Disabled) | Total Required Memory (GB) | Fits GPU (Full) | Fits CPU (Full) |"),n.push("|----------|-----------|--------------|---------------------------------|---------------------------|-----------------|-----------------|"),u.forEach((({modelId:e,modelInfo:t,modelConfig:r})=>{const o=d(t?.modelBytes),a=r?.nCtx||t?.kvInfo?.nCtxTrain||"N/A",i=d(t?.kvCacheBytes),s=d(t?.modelBytes&&t?.kvCacheBytes?t.modelBytes+t.kvCacheBytes:t?.fit?.totalRequiredBytes),l=p(t?.fit?.fitsInGpu),c=p(t?.fit?.fitsInCpu);n.push(`| ${e} | ${o} | ${a} | ${i} | ${s} | ${l} | ${c} |`);if((null!=t?.memoryLimitedCtx||null!=t?.limitedFit)&&(!t?.fit?.fitsInGpu||!t?.fit?.fitsInCpu)){const e=t?.memoryLimitedCtx||a,r=d(t?.limitedKvCacheBytes),l=d(t?.modelBytes&&t?.limitedKvCacheBytes?t.modelBytes+t.limitedKvCacheBytes:t?.limitedFit?.totalRequiredBytes),c=p(t?.limitedFit?.fitsInGpu),u=p(t?.limitedFit?.fitsInCpu);(e!==a||r!==i||l!==s)&&n.push(`| ↳ Limited | ${o} | ${e} | ${r} | ${l} | ${c} | ${u} |`)}})),n.push("\n---"),n.push("\n### System Information");let f=null;if("win32"!==process.platform)try{f=(0,ar.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}if(f?n.push(`- **System:** ${f}`):(n.push(`- **Hostname:** ${Ut.hostname()}`),n.push(`- **OS:** ${Ut.type()} ${Ut.release()}`)),n.push(`- **Platform:** ${process.platform}`),n.push(`- **CPU Cores:** ${Ut.cpus().length}`),n.push(`- **Total System Memory:** ${(Ut.totalmem()/1024/1024/1024).toFixed(2)} GB`),u.length>0){const e=u[0].capabilities,t=e.buttress?.selected;if(t){const e=t.cpuTotalBytes>0?(t.cpuUsableBytes/t.cpuTotalBytes*100).toFixed(0):0;if(n.push(`- **Usable CPU Memory:** ${(t.cpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${e}% of ${(t.cpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),t.hasGpu){const e=t.devices.filter((e=>"gpu"===e.type));if(e.length>0){const r=e[0];n.push(`- **GPU Backend:** ${r.backend}`),n.push(`- **GPU Name:** ${r.deviceName}`),n.push(`- **GPU Total Memory:** ${(r.maxMemorySize/1024/1024/1024).toFixed(2)} GB`);const o=t.gpuTotalBytes>0?(t.gpuUsableBytes/t.gpuTotalBytes*100).toFixed(0):0;n.push(`- **GPU Usable Memory:** ${(t.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${o}% of ${(t.gpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`)}}else n.push("- **GPU:** Not available")}}n.push("\n### Command Used");const m=process.argv.slice(2).join(" ");if(n.push(`\`\`\`bash\n${process.argv[0]} ${process.argv[1]} ${m}\n\`\`\``),n.push("\n### Package Information"),n.push(`- **Name:** ${sr.UU}`),n.push(`- **Version:** ${sr.rE}`),sr.description&&n.push(`- **Description:** ${sr.description}`),t&&Object.keys(t).length>0){n.push("\n### Configuration"),n.push("<details>"),n.push("<summary>Click to expand TOML configuration</summary>"),n.push("\n```toml");try{const e=ir.default.stringify(t);n.push(e)}catch(e){n.push("# Error serializing config"),n.push(JSON.stringify(t,null,2))}n.push("```"),n.push("</details>")}const y=`model-capabilities-${(new Date).toISOString().replace(/[.:]/g,"-").split("T")[0]}.md`,h=Rt.join(process.cwd(),y);or.writeFileSync(h,n.join("\n"),"utf8"),console.log(`\nModel capabilities table saved to: ${h}`),process.exit(0)}catch(e){console.error("Failed to generate model table:",e.message),process.exit(1)}}async function cr({modelId:e=null,defaultConfig:t=null}={}){console.log(`${sr.UU} v${sr.rE}`),console.log("Testing capabilities for backend: ggml-llm"),e&&console.log(`Model: ${e}`),console.log("--------------------------------");try{const n=t||{},{server:r,generators:o=[],...a}=n,i=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=i(n[e]||{},t):n[e]=t})),n},s=e=>i(JSON.parse(JSON.stringify(a)),e||{});let l=(e=>{if(Array.isArray(o)&&o.length>0){const t=o.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const n=t.find((t=>t.model?.repo_id===e));if(n)return s(n)}}return Object.keys(a).length>0?s({}):null})(e);e&&(l={...l||{},model:{...l?.model||{},repo_id:e}});const c=await Qn("ggml-llm",null,{config:l,includeBreakdown:!0}),u=c.buttress?.selected||null,d=c.modelConfig||null;if(e||d?.repoId){console.log("\n=== Model Information ===");const t=e||d?.repoId;if(console.log(`Repository ID: ${t}`),d?.quantization&&console.log(`Quantization: ${d.quantization}`),d?.nCtx&&console.log(`Context Length: ${d.nCtx}`),u?.quantization){const{fileType:e}=u.quantization;null!=e&&console.log(`Model File Type (GGUF): ${e}`)}const n=d?.cacheKType||"f16",r=d?.cacheVType||"f16";if(console.log(`KV Cache Type: K=${n}, V=${r}`),u?.modelBytes&&u?.kvCacheBytes){if(console.log(`Model Size: ${(u.modelBytes/1024/1024/1024).toFixed(2)} GB`),u.kvInfo?console.log(`KV Cache Size: ${(u.kvCacheBytes/1024/1024/1024).toFixed(2)} GB (KV info: ${JSON.stringify(u.kvInfo)})`):console.log(`KV Cache Size: ${(u.kvCacheBytes/1024/1024/1024).toFixed(2)} GB`),console.log(`Total Required Memory: ${((u.modelBytes+u.kvCacheBytes)/1024/1024/1024).toFixed(2)} GB`),null!=u.memoryLimitedCtx){const e=u.memoryLimitedCtx,t=u.kvInfo?.nCtxTrain;t?console.log(`\nMemory-Limited Context: ${e} (Train: ${t})`):console.log(`\nMemory-Limited Context: ${e}`),null!=u.limitedKvCacheBytes&&console.log(`Limited KV Cache Size: ${(u.limitedKvCacheBytes/1024/1024/1024).toFixed(2)} GB`)}}else if(c.buttress?.selected?.fit){const{totalRequiredBytes:e}=c.buttress.selected.fit;console.log(`Total Required Memory: ${(e/1024/1024/1024).toFixed(2)} GB`)}}if(c.buttress?.selected){const{selected:e}=c.buttress;console.log("\n=== Hardware Information ===");let t=null;if("win32"!==process.platform)try{t=(0,ar.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}t?console.log(`System: ${t}`):(console.log(`Hostname: ${Ut.hostname()}`),console.log(`OS: ${Ut.type()} ${Ut.release()}`)),console.log(`Platform: ${e.platform}`),console.log(`CPU Cores: ${Ut.cpus().length}`),console.log(`Total System Memory: ${(Ut.totalmem()/1024/1024/1024).toFixed(2)} GB`);const n=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 (${n}% 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 n=e.gpuTotalBytes>0?(e.gpuUsableBytes/e.gpuTotalBytes*100).toFixed(0):0;console.log(`GPU Usable Memory: ${(e.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${n}% 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(c,null,2)),process.exit(0)}catch(e){console.error("Failed to get capabilities:",e.message),process.exit(1)}}const ur=new TextDecoder,dr=p.initTRPC.context().create(),pr=At.z.record(At.z.any()).optional(),fr=At.z.object({id:At.z.string()}),mr=At.z.object({id:At.z.string(),property:At.z.any().optional()}),yr=At.z.object({type:At.z.string(),config:pr}),hr=At.z.object({type:At.z.string().optional().default("ggml-llm"),config:pr,currentClientCapabilities:At.z.record(At.z.any()).optional(),options:At.z.record(At.z.any()).optional()}).optional(),gr=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=gr(n[e]||{},t):n[e]=t})),n},vr=e=>e&&"object"==typeof e?JSON.parse(JSON.stringify(e)):null,br=(e,t)=>{const n=vr(e)||{},r=vr(t)||{};return gr(n,r)},_r=(e=d,{defaultConfig:t}={})=>{const n=vr(t)||{},r=Array.isArray(n.generators)?n.generators:[],{server:o,generators:a,...i}=n,s=e=>gr(JSON.parse(JSON.stringify(i)),e||{}),l=(e,t)=>{if(r.length>0){const n=r.filter((t=>t?.type===e));if(n.length>0&&t){const e=n.find((e=>e.model?.repo_id===t));if(e)return s(e)}}return Object.keys(i).length>0?s({}):null};return dr.router({getCapabilities:dr.procedure.input(hr).query((async({input:t})=>{console.log("[Server] Get Capabilities:",t);const n=t||{type:"ggml-llm"},{type:r="ggml-llm",config:o,currentClientCapabilities:a=null,options:i={}}=n,s=vr(o),c=e.getModelIdentifier(r,s),u=l(r,c),d=br(u,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=r),e.getCapabilities(r,a,{...i,config:d})})),startGenerator:dr.procedure.input(yr).mutation((async({input:t})=>{console.log("[Server] Start Generator:",t);const{type:n,config:r}=t,o=vr(r),a=e.getModelIdentifier(n,o),i=l(n,a),s=br(i,r);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=n),e.startGenerator(n,s)})),finalizeGenerator:dr.procedure.input(fr).mutation((async({input:t})=>(console.log("[Server] Finalize Generator:",t),e.finalizeGenerator(t.id)))),ggmlLlm:dr.router({initContext:dr.procedure.input(mr).subscription((({input:t})=>K((n=>{console.log("[Server] Init Context:",t);let r=!0;return(async()=>{try{const o={...t.property,onProgress:e=>{r&&n.next({progress:e})}};await new Promise((e=>setTimeout(e)));const a=await e.ggmlLlm.initContext(t.id,o);r&&(n.next({result:a}),n.complete())}catch(e){r&&n.error(e)}})(),()=>{r=!1}})))),completion:dr.procedure.input(mr).subscription((({input:t})=>K((n=>{console.log("[Server] Completion:",t);let r=()=>{};return(async()=>{try{const o=await e.ggmlLlm.completion(t.id,t.property);if(!o)return void n.complete();r=((e,t)=>{const n=e.getReader();let r=!0;return(async()=>{try{for(;r;){const{value:e,done:o}=await n.read();if(o||!r)break;if(e){const n=ur.decode(e,{stream:!0});t.next(n)}}t.complete()}catch(e){t.error(e)}finally{n.cancel().catch((()=>{}))}})(),()=>{r=!1,n.cancel().catch((()=>{}))}})(o,n)}catch(e){n.error(e)}})(),()=>r()})))),tokenize:dr.procedure.input(mr).query((async({input:t})=>(console.log("[Server] Tokenize:",t),e.ggmlLlm.tokenize(t.id,t.property)))),detokenize:dr.procedure.input(mr).mutation((async({input:t})=>(console.log("[Server] Detokenize:",t),e.ggmlLlm.detokenize(t.id,t.property)))),applyChatTemplate:dr.procedure.input(mr).query((async({input:t})=>(console.log("[Server] Apply Chat Template:",t),e.ggmlLlm.applyChatTemplate(t.id,t.property)))),releaseContext:dr.procedure.input(mr).mutation((async({input:t})=>(console.log("[Server] Release Context:",t),e.ggmlLlm.releaseContext(t.id,t.property))))})})},wr=({backend:e=d,router:t,createContext:n=(()=>({})),defaultConfig:r}={})=>{const o=t||_r(e,{defaultConfig:r});return{server:It({router:o,createContext:n,basePath:"/trpc/"}),router:o,backend:e}},xr=async({port:e=2080,backend:t,router:n,createContext:r,defaultConfig:o}={})=>{const{server:a,router:i}=wr({backend:t,router:n,createContext:r,defaultConfig:o});return await new Promise((t=>a.listen(e,t))),{server:a,router:i,port:e}};export{rr as checkAndNotifyUpdates,tr as checkForUpdates,nr as compareVersions,_r as createRouter,wr as createServer,Xn as currentVersion,lr as showModelsTable,xr as startServer,cr 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.16",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"files": [
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"start": "node bin/start.mjs"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@fugood/llama.node": "^1.3.
|
|
20
|
+
"@fugood/llama.node": "^1.3.7",
|
|
21
21
|
"@huggingface/gguf": "^0.3.2",
|
|
22
22
|
"@iarna/toml": "^3.0.0",
|
|
23
23
|
"@trpc/server": "^11.6.0",
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"terser-webpack-plugin": "^5.0.3"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "6acf704e7354e4bd8fc56020d8bb41e71a242c9b"
|
|
30
30
|
}
|