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