@fugood/buttress-server-poc 2.23.0-beta.2 → 2.23.0-beta.22

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 CHANGED
@@ -3,12 +3,21 @@ import fs from 'node:fs'
3
3
  import path from 'node:path'
4
4
  import os from 'node:os'
5
5
  import TOML from '@iarna/toml'
6
+ import { createRequire } from 'node:module'
6
7
 
7
8
  const serverModule =
8
9
  process.env.NODE_ENV === 'development'
9
10
  ? await import('../src/index.js')
10
11
  : await import('../lib/index.js')
11
- const { startServer, checkAndNotifyUpdates } = serverModule
12
+
13
+ const require = createRequire(import.meta.url)
14
+ const pkg = require('../package.json')
15
+
16
+ // Handle --version/-v flag
17
+ if (process.argv.includes('--version') || process.argv.includes('-v')) {
18
+ console.log(pkg.version)
19
+ process.exit(0)
20
+ }
12
21
 
13
22
  const portArgIndex = process.argv.findIndex((arg) => arg === '--port' || arg === '-p')
14
23
  const portValue = portArgIndex >= 0 ? Number(process.argv[portArgIndex + 1]) : undefined
@@ -53,6 +62,67 @@ if (configInput) {
53
62
  }
54
63
  }
55
64
 
65
+ const { testGgmlLlmCapabilities, showModelsTable, startServer, checkAndNotifyUpdates } =
66
+ serverModule
67
+
68
+ // Default models for --test-models-default
69
+ const DEFAULT_TEST_MODELS = [
70
+ 'ggml-org/gpt-oss-20b-GGUF',
71
+ 'ggml-org/gpt-oss-120b-GGUF',
72
+ 'unsloth/Qwen3-VL-30B-A3B-Instruct-GGUF',
73
+ 'bartowski/Mistral-Nemo-Instruct-2407-GGUF',
74
+ 'mistralai/Magistral-Small-2509-GGUF',
75
+ 'mistralai/Ministral-3-14B-Reasoning-2512-GGUF',
76
+ 'ggml-org/gemma-3-12b-it-qat-GGUF',
77
+ 'ggml-org/gemma-3-27b-it-qat-GGUF',
78
+ 'unsloth/phi-4-GGUF',
79
+ ]
80
+
81
+ // Handle --test-caps flag
82
+ const testCapsArgIndex = process.argv.findIndex((arg) => arg === '--test-caps')
83
+ if (testCapsArgIndex >= 0) {
84
+ const backendType = process.argv[testCapsArgIndex + 1] || 'ggml-llm'
85
+ if (backendType !== 'ggml-llm') {
86
+ console.error('Only ggml-llm backend is supported for testing capabilities')
87
+ process.exit(1)
88
+ }
89
+
90
+ // Check for --test-models or --test-models-default
91
+ const testModelsArgIndex = process.argv.findIndex((arg) => arg === '--test-models')
92
+ const hasTestModelsDefault = process.argv.includes('--test-models-default')
93
+
94
+ if (testModelsArgIndex >= 0) {
95
+ const modelIdsInput = process.argv[testModelsArgIndex + 1]
96
+ if (!modelIdsInput) {
97
+ console.error('Error: --test-models requires a comma-separated list of model IDs')
98
+ process.exit(1)
99
+ }
100
+ const modelIds = modelIdsInput.split(',').map((id) => id.trim())
101
+
102
+ await showModelsTable({
103
+ modelIds,
104
+ defaultConfig,
105
+ })
106
+ // Exit after showing table - process.exit is called inside showModelsTable
107
+ } else if (hasTestModelsDefault) {
108
+ await showModelsTable({
109
+ modelIds: DEFAULT_TEST_MODELS,
110
+ defaultConfig,
111
+ })
112
+ // Exit after showing table - process.exit is called inside showModelsTable
113
+ } else {
114
+ // Single model test
115
+ const testCapsModelIdArgIndex = process.argv.findIndex((arg) => arg === '--test-caps-model-id')
116
+ const modelId = testCapsModelIdArgIndex >= 0 ? process.argv[testCapsModelIdArgIndex + 1] : null
117
+
118
+ await testGgmlLlmCapabilities({
119
+ modelId,
120
+ defaultConfig,
121
+ })
122
+ // Exit after test - process.exit is called inside testGgmlLlmCapabilities
123
+ }
124
+ }
125
+
56
126
  const getLocalIpAddress = () => {
57
127
  const networkInterfaces = os.networkInterfaces()
58
128
  const localIp = Object.values(networkInterfaces)
@@ -77,7 +147,7 @@ startServer({
77
147
  console.log(
78
148
  'Please configure `Buttress (Remote Inference)` in the Generator like LLM (GGML) to connect to this server.',
79
149
  )
80
- console.log(`Use http://${ip}:${port} (tRPC path: /trpc) to connect to this server via LAN.`)
150
+ console.log(`Use http://${ip}:${port}/trpc to connect to this server via LAN.`)
81
151
  })
82
152
  .catch((error) => {
83
153
  console.error('Failed to start Buttress server POC:', error)
@@ -11,16 +11,28 @@ log_level = "info"
11
11
 
12
12
  [runtime]
13
13
  cache_dir = "./.buttress-cache"
14
+ # huggingface_token = "hf_xx"
14
15
 
15
16
  [[generators]]
16
17
  type = "ggml-llm"
17
18
  [generators.backend]
18
- variant_preference = ["cuda", "vulkan", "default"]
19
+ variant_preference = ["cuda", "vulkan", "snapdragon", "default"]
20
+ gpu_memory_fraction = 0.95
21
+ cpu_memory_fraction = 0.95
19
22
  [generators.model]
20
23
  repo_id = "ggml-org/gpt-oss-20b-GGUF"
21
24
  quantization = "mxfp4"
22
25
  n_ctx = 12800
23
26
 
27
+ [[generators]]
28
+ type = "ggml-llm"
29
+ [generators.backend]
30
+ variant_preference = ["cuda", "vulkan", "snapdragon", "default"]
31
+ gpu_memory_fraction = 1
32
+ [generators.model]
33
+ repo_id = "ggml-org/gpt-oss-120b-GGUF"
34
+ quantization = "mxfp4"
35
+
24
36
  [[generators]]
25
37
  type = "ggml-llm"
26
38
  [generators.backend]
@@ -28,3 +40,11 @@ variant_preference = ["default"]
28
40
  [generators.model]
29
41
  repo_id = "ggml-org/gemma-3-270m-qat-GGUF"
30
42
  quantization = "q4_0"
43
+
44
+ [[generators]]
45
+ type = "ggml-llm"
46
+ [generators.backend]
47
+ variant_preference = ["default"]
48
+ [generators.model]
49
+ n_ctx = 12800
50
+ 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"@huggingface/gguf";import*as n from"@fugood/llama.node";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:()=>x,Ux:()=>c.Ux,YO:()=>c.YO,Zy:()=>c.Zy,aE:()=>w,bR:()=>c.bR,sA:()=>E});var o=r(333),a=r(249),i=r(427),s=r(971),l=r(838),c=r(508),u=e([c]);c=(u.then?(await u)():u)[0];const d=new TextDecoder,f=o.initTRPC.context().create(),p=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:p}),v=(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((()=>{}))}},b=(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]=b(r[e]||{},t):r[e]=t})),r},_=e=>e&&"object"==typeof e?JSON.parse(JSON.stringify(e)):null,g=(e,t)=>{const r=_(e)||{},n=_(t)||{};return b(r,n)},w=(e=l,{defaultConfig:t}={})=>{const r=_(t)||{},n=Array.isArray(r.generators)?r.generators:[],{server:o,generators:a,...s}=r,c=e=>b(JSON.parse(JSON.stringify(s)),e||{});return f.router({startGenerator:f.procedure.input(h).mutation((async({input:t})=>{console.log("[Server] Start Generator:",t);const{type:r,config:o}=t,a=_(o),i=((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})(r,e.getModelIdentifier(r,a)),l=g(i,o);if(0===Object.keys(l).length)throw new Error("Buttress server missing generator configuration");return l.backend=l.backend||{},l.backend.type||(l.backend.type=r),e.startGenerator(r,l)})),finalizeGenerator:f.procedure.input(m).mutation((async({input:t})=>(console.log("[Server] Finalize Generator:",t),e.finalizeGenerator(t.id)))),ggmlLlm:f.router({initContext:f.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:f.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=v(o,r)}catch(e){r.error(e)}})(),()=>n()})))),tokenize:f.procedure.input(y).query((async({input:t})=>(console.log("[Server] Tokenize:",t),e.ggmlLlm.tokenize(t.id,t.property)))),detokenize:f.procedure.input(y).mutation((async({input:t})=>(console.log("[Server] Detokenize:",t),e.ggmlLlm.detokenize(t.id,t.property)))),applyChatTemplate:f.procedure.input(y).query((async({input:t})=>(console.log("[Server] Apply Chat Template:",t),e.ggmlLlm.applyChatTemplate(t.id,t.property)))),releaseContext:f.procedure.input(y).mutation((async({input:t})=>(console.log("[Server] Release Context:",t),e.ggmlLlm.releaseContext(t.id,t.property))))})})},E=({backend:e=l,router:t,createContext:r=(()=>({})),defaultConfig:n}={})=>{const o=t||w(e,{defaultConfig:n});return{server:(0,a.qv)({router:o,createContext:r,basePath:"/trpc/"}),router:o,backend:e}},x=async({port:e=2080,backend:t,router:r,createContext:n,defaultConfig:o}={})=>{const{server:a,router:i}=E({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,f=Object.defineProperty,p=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||f(e,o,{get:(e=>t[e]).bind(null,o),enumerable:!(n=p(t,o))||n.enumerable});return e})(!t&&e&&e.__esModule?r:f(r,"default",{value:e,enumerable:!0}),e));const _={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 g(e){var t;return null!==(t=_[e])&&void 0!==t?t:500}function w(e){return g(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}}),T=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}}),k=b(T(),1);function P(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,k.default)((0,k.default)({},e),{},{shape:i}))}var R=b(S(),1),A=class extends Error{};function j(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 A,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,R.default)(this,"cause",void 0),(0,R.default)(this,"code",void 0),this.code=e.code,this.name="TRPCError",null!==(n=this.cause)&&void 0!==n||(this.cause=o)}},M=b(T(),1);function C(e,t){return"error"in t?(0,M.default)((0,M.default)({},t),{},{error:e.transformer.output.serialize(t.error)}):"data"in t.result?(0,M.default)((0,M.default)({},t),{},{result:(0,M.default)((0,M.default)({},t.result),{},{data:e.transformer.output.serialize(t.result.data)})}):t}function q(e,t){return Array.isArray(t)?t.map((t=>C(e,t))):C(e,t)}Error;b(T(),1);async function D(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 I=Symbol();function U(e){return Array.isArray(e)&&e[2]===I}var z=n(427);function L(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 $=b(T(),1);function B(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=B((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 D(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,$.default)((0,$.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:L(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=B((async()=>await t.formData())),n=await D(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=B((async()=>t.body));return{calls:[{path:e.path,getRawInput:r.read,result:r.result,procedure:await D(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 Y(e){return i(e)&&"AbortError"===e.name}function H(e="AbortError"){throw new DOMException(e,"AbortError")}function Q(e){return"[object Object]"===Object.prototype.toString.call(e)}var V=b(S(),1);let W;const Z=new WeakMap,K=()=>{};W=Symbol.toStringTag;var X,ee,te,re,ne=class e{constructor(e){(0,V.default)(this,"promise",void 0),(0,V.default)(this,"subscribers",[]),(0,V.default)(this,"settlement",null),(0,V.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}}),fe=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}}),pe=b(ce(),1),me=b(de(),1),ye=b(fe(),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,pe.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&&H(),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,pe.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&&H(),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 _e(){let e,t;return{promise:new Promise(((r,n)=>{e=r,t=n})),resolve:e,reject:t}}var ge=b(ce(),1),we=b(de(),1),Ee=b(fe(),1);function xe(){let e="idle",t=_e();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,ge.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=_e()}}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),Te=b(de(),1),ke=b(fe(),1);const Pe=Symbol("ping");function Re(e,t){return Ae.apply(this,arguments)}function Ae(){return(Ae=(0,ke.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,Te.default)(ne.race([i,e.start()])),a===se){yield Pe;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,Te.default)(r.d())}}))).apply(this,arguments)}var je=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),Me=b(fe(),1),Ce=b(ce(),1),qe=b(je(),1);const De=0,Ie=1,Ue=0,ze=1,Le=0,$e=1,Be=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,Me.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,Me.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,ze,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,Me.default)((function*(n){try{var o=(0,Ce.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,Le,d(e.value,r)];break}yield[n,$e,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,Be,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[De,i(t,r)];if(l(t)){if(e.maxDepth&&r.length>=e.maxDepth)throw new Error("Max depth reached");return[Ie,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===Q(o=e)||void 0!==(a=o.constructor)&&(!1===Q(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 f={};for(const[e,r]of Object.entries(t))f[e]=d(r,[e]);yield f;let p=o;e.pingMs&&(p=Re(o,e.pingMs));var m,y=!1,h=!1;try{for(var v,b=(0,qe.default)(p);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 Ye(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===Pe?t.enqueue(Pe):t.enqueue(r(e))}}))),t.pipeThrough(new TransformStream({transform(e,t){e===Pe?t.enqueue(" "):t.enqueue(JSON.stringify(e)+"\n")}})).pipeThrough(new TextEncoderStream)}Error;var He=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}}),Qe=b(je(),1),Ve=b(de(),1),We=b(fe(),1),Ze=b(He(),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=Re(n,s.intervalMs));var o,a=!1,c=!1;try{for(var u,d=(0,Qe.default)(n);a=!(u=yield(0,Ve.default)(d.next())).done;a=!1)t=u.value,t!==Pe?(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,Ve.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,Qe.default)(function(){return c.apply(this,arguments)}())),yield{event:tt,data:""}}catch(n){var t,r;if(Y(n))return;const o=j(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 f=Oe(function(){return d.apply(this,arguments)}());return f.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(fe(),1),at=b(T(),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 f=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:g(a[e.error.code]):200})));return 1!==r.size?207:r.values().next().value}(c):200;const p=!c,m=p?[]: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:p,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&&(f=y.status),{status:f}}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"]]),f=s._def._config,p=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:p.searchParams,headers:e.req.headers,url:p})]}catch(e){return[j(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=[j(e),void 0]}}}})),b=y?lt:st,_="application/jsonl"===u.headers.get("trpc-accept"),g=null===(a=null===(i=f.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(_&&!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=j(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:P({config:f,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(q(f,n)),{status:i.status,headers:d})}case"subscription":{const n=c((()=>{if(o)return it(o);if(!g)return it(new N({code:"METHOD_NOT_SUPPORTED",message:'Missing experimental flag "sseSubscriptions"'}));if(!(0,z.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,z.AT)(a.data)?(0,z.di)(a.data,e.req.signal):a.data})),i=rt((0,at.default)((0,at.default)({},f.sse),{},{data:n,serialize:e=>f.transformer.output.serialize(e),formatError(r){var n,o,a;const i=j(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 P({config:f,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=Ye((0,at.default)((0,at.default)({},f.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:P({config:f,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,z.AT)(o.data)?(0,z.di)(o.data,e.req.signal):Promise.resolve(o.data);return{result:Promise.resolve({data:l})}})),serialize:e=>f.transformer.output.serialize(e),onError:t=>{var n,o;null===(n=e.onError)||void 0===n||n.call(e,{error:j(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=j(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 P({config:f,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:P({config:f,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(q(f,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=j(e);null==o||o({error:a,path:t.path,input:t.input,ctx:t.ctx,type:t.type,req:n});const i={error:P({config:r._def._config,error:a,type:t.type,path:t.path,input:t.input,ctx:t.ctx})},s=q(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 ft(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 pt(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=ft(e),i={headers:pt(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(Y(e))return;throw e}}var ht=b(T(),1);function vt(e){return t=>{var r;const{res:n,req:o}=e,a=j(t),i=P({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=q(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?j(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 _t=e(import.meta.url)("http");var gt=b(T(),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=ft(t);o=a.pathname.slice(r),await bt((0,gt.default)((0,gt.default)({},e),{},{req:t,res:n,path:o}))})).catch(vt((0,gt.default)({req:t,res:n,path:o},e)))}}function Et(e){return _t.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:()=>f,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}},f=(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},p=e=>{console.log(""),console.log("╭─────────────────────────────────────────────────╮"),console.log("│ Update available! %s → %s",c.padEnd(12),e.padEnd(12),"│"),console.log("│ │"),console.log("│ Run to upgrade: │"),console.log("│ npm install -g %s │",u.padEnd(27)),console.log("╰─────────────────────────────────────────────────╯"),console.log("")},m=async()=>{try{const e=await d();e&&f(c,e)&&p(e)}catch(e){}};n()}catch(e){n(e)}}),1)},760:t=>{t.exports=e(import.meta.url)("node:path")},838:(t,o,a)=>{a.r(o),a.d(o,{finalizeGenerator:()=>F,getModelIdentifier:()=>Y,ggmlLlm:()=>J,startGenerator:()=>G});var i=a(760);const s=e(import.meta.url)("node:os");var l=a(455);const c=e(import.meta.url)("node:crypto");const u=(e=>{var t={};return a.d(t,e),t})({gguf:()=>r.gguf});const d=(e=>{var t={};return a.d(t,e),t})({getBackendDevicesInfo:()=>n.getBackendDevicesInfo,isLibVariantAvailable:()=>n.isLibVariantAvailable,loadModel:()=>n.loadModel}),f=e(import.meta.url)("node:stream/web");var p=a.t(f,2);const m="undefined"!=typeof globalThis&&globalThis.ReadableStream&&globalThis.WritableStream?{ReadableStream:globalThis.ReadableStream,WritableStream:globalThis.WritableStream}:p,{ReadableStream:y,WritableStream:h}=m,v=new TextEncoder,b=(e={},t={})=>(Object.entries(t||{}).forEach((([t,r])=>{r&&"object"==typeof r&&!Array.isArray(r)?(e[t]&&"object"==typeof e[t]||(e[t]={}),b(e[t],r)):e[t]=r})),e),_="https://huggingface.co",g="https://huggingface.co/api",w=i.join(s.homedir(),".buttress","models"),E=["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"],x={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},O={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:g,base_url:_},runtime:{cache_dir:w,prefer_variants:[],huggingface_token:process.env.HUGGINGFACE_TOKEN||null,http_headers:{}}},S=(e,t=[])=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[...t],T=e=>{if(!e)return null;const t=String(e).toLowerCase();return["cuda","vulkan","default"].includes(t)?t:null},k=(e={})=>{const t=JSON.parse(JSON.stringify(O));if(b(t,e),t.backend.variant=T(t.backend.variant),t.backend.variant_preference=Array.from(new Set(S(t.backend.variant_preference).map(T).filter(Boolean))),0===t.backend.variant_preference.length&&(t.backend.variant_preference=["cuda","vulkan","default"]),t.runtime.prefer_variants=Array.from(new Set(S(t.runtime.prefer_variants).map(T).filter(Boolean))),t.model.preferred_quantizations=Array.from(new Set(S(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||_,t.model.api_base=t.model.api_base||g,t.runtime.cache_dir=t.runtime.cache_dir?i.resolve(t.runtime.cache_dir):w,t},P=e=>{const t=e?String(e).toLowerCase():"f16";return x[t]||2},R=e=>{const t=e.toLowerCase();return E.find((e=>t.includes(e)))||null},A=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},j=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 h({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}`)}},N=async e=>{const t=e.model.repo_id||e.model.repository||e.model.model;if(!t)throw new Error("`model.repo_id` is required in Buttress backend config");const r=e.model.revision||"main",n={...e.runtime.http_headers||{}};if(e.runtime.huggingface_token&&(n.Authorization=`Bearer ${e.runtime.huggingface_token}`),e.model.url){const o=await A(e.model.url,{headers:n}),a=Number(o.headers.get("content-length"))||null;return{repoId:t,revision:r,filename:e.model.filename||e.model.url.split("/").pop(),url:e.model.url,size:a,headers:n}}let{filename:o}=e.model,a=e.model.quantization&&String(e.model.quantization).toLowerCase();const i=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:n}),s=(i?.siblings||i?.files||[]).map((e=>e.rfilename||e.path||e.filename)).filter((e=>"string"==typeof e&&e.endsWith(".gguf")));if(0===s.length)throw new Error(`No GGUF artifacts found in repo ${t}`);const l=e.model.preferred_quantizations.length>0?e.model.preferred_quantizations:E;if(o)a||(a=R(o));else{const e=(()=>{const e=l.find((e=>s.find((t=>t.toLowerCase().includes(e)))));if(e)return{filename:s.find((t=>t.toLowerCase().includes(e))),quantization:e};return null})()||{filename:s[0],quantization:null},{filename:t,quantization:r}=e;o=t,a=r||R(o)}const c=`${e.model.base_url.replace(/\/+$/,"")}/${t}/resolve/${r}/${o}`,u=await A(c,{headers:n});return{repoId:t,revision:r,filename:o,url:c,size:Number(u.headers.get("content-length"))||null,quantization:a,headers:n}},M=async e=>{const t=(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(T).filter(Boolean)))})(e),r=await Promise.all(t.map((async e=>{try{if(!await(0,d.isLibVariantAvailable)(e))return{variant:e,devices:[],ok:!1,error:new Error(`Variant ${e} not available on this platform`)};const t=await(0,d.getBackendDevicesInfo)(e),r={variant:e,devices:Array.isArray(t)?t:[],ok:!0};return r.hasGpu=r.devices.some((e=>String(e.type||"").toLowerCase().includes("gpu"))),r.totalMemory=r.devices.filter((e=>"number"==typeof e.maxMemorySize)).reduce(((e,t)=>Math.max(e,t.maxMemorySize||0)),0),r}catch(t){return{variant:e,devices:[],ok:!1,error:t}}}))),n=r.filter((e=>e.ok));if(0===n.length)throw new Error(`Unable to initialize any backend variant (${t.join(", ")}). Errors: ${r.map((e=>`${e.variant}: ${e.error?e.error.message||e.error:"ok"}`)).join("; ")}`);return{selected:n.find((e=>e.hasGpu))||n.find((e=>"default"===e.variant))||n[0],attempts:r.flat()}},C=async e=>{const t=await M(e),r=await N(e),n=await(async(e,t)=>{const r=!/^https?:/i.test(e),{metadata:n}=await(0,u.gguf)(e,{fetch,additionalFetchHeaders:t,allowLocalFile:r});return n})(r.url,r.headers),o=n["general.architecture"],a=n[`${o}.context_length`]||n["llama.context_length"],c=n[`${o}.block_count`]||n["llama.block_count"],d=n[`${o}.embedding_length`]||n["llama.embedding_length"],f=Number.isFinite(Number(c))?Number(c):0,p=Number.isFinite(Number(d))?Number(d):0,m=n["general.quantization_version"]||null,y=n["general.file_type"]||null,h=e.model.n_ctx?Number(e.model.n_ctx):null;let v=h||a||4096;const b=[],_=[];let g=!0;if(h&&a&&h>a){g=!1;const e=`Requested context length (${h}) exceeds model training context (${a})`;b.push(e),_.push(e),v=a}h&&!a&&b.push("Model metadata missing training context length, using requested value");const w={k:e.model.cache_k_type,v:e.model.cache_v_type},E=r.size>0?r.size:0,x=f&&p?f*p*(P(w.k)+P(w.v)):0,O=t.selected.totalMemory||0,S=O*(e.backend.gpu_memory_fraction||1),T=null!=e.backend.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):.5,k=Math.max(0,s.totalmem()*T),R=t.selected.hasGpu?S:k;let A=null;if(!h&&x>0&&R>E){const e=R-E,t=Math.floor(e/x);t>0&&(A=t)}if(!h&&A){const e=a?Math.min(A,a):A;e<v&&b.push(`Context length capped to ${e} by memory limits`),v=Math.max(32,e)}a&&v>a&&(v=a);const j=a||h||v,C=Math.floor(A??j);console.log(`[buttress] Memory-limited context length: ${C}`);const q=((e,t,r,n={})=>{if(!e||!t||!r)return 0;const o=P(n.k),a=P(n.v),i=e*r*t;return Math.round(i*(o+a))})(f,p,v,w),D=E+q,I=!!t.selected.hasGpu&&(D>0&&D<=S),U=f?E/(f+1):E;let z,L=0;t.selected.hasGpu&&U>0&&(L=Math.min(f+1,Math.max(0,Math.floor(S/U)))),console.log(`[buttress] Auto GPU layer capacity (${t.selected.variant}): ${L}/${f+1}`),z="auto"===e.model.n_gpu_layers||null==e.model.n_gpu_layers?L:Math.max(0,Math.min(Number(e.model.n_gpu_layers)||0,f+1));const $=(()=>{const r=e.model.flash_attn&&String(e.model.flash_attn).toLowerCase();return"on"===r||"off"===r?r:t.selected.hasGpu?"auto":"off"})(),B=e.runtime.cache_dir,G=((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,r),F=await(async(e,t)=>{try{const r=await(0,l.stat)(e);return!t||r.size===t}catch(e){return!1}})(G,r.size),J={ok:g,backend:"ggml-llm",warnings:b,errors:_,model:{repoId:r.repoId,revision:r.revision,filename:r.filename,quantization:r.quantization,url:r.url,sizeBytes:r.size,metadata:{architecture:o,n_ctx_train:a,n_layer:f,n_embd:p,quantization_version:m,file_type:y}},runtime:{variant:t.selected.variant,n_ctx:v,requested_ctx:h,n_gpu_layers:z,n_parallel:e.model.n_parallel,n_batch:e.model.n_batch,flash_attn_type:$,cache_type_k:w.k,cache_type_v:w.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:L},resources:{modelBytes:E,kvCacheBytes:q,totalEstimatedBytes:D,gpuCapacityBytes:O,gpuUsableBytes:S,fitsInGpu:I,cpuUsableBytes:k},devices:{selected:t.selected,attempts:t.attempts},download:{cacheDir:B,localPath:G,exists:F},timestamp:(new Date).toISOString()};return{config:e,info:J,artifact:r,metadata:{arch:o,nCtxTrain:a,nLayer:f,nEmbd:p},devices:t,cacheTypes:w,localPath:G,localExists:F}},q=(e,t)=>`event: ${e}\ndata: ${null==t?"":JSON.stringify(t)}\n\n`,D=(e,t)=>{let r;return new y({async start(n){try{const o=await e.parallel.completion(t,((e,t)=>{t&&n.enqueue(v.encode(q("token",{requestId:e,...t})))})),{requestId:a}=o;r=o.stop;const i=await o.promise;console.log("[Completion] Result:",i),n.enqueue(v.encode(q("result",{requestId:a,...i}))),n.close()}catch(e){n.enqueue(v.encode(q("error",{message:e?.message||String(e)}))),n.error(e)}},cancel(){r&&r()}})},I=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)},U=async(e,t)=>{const r=I(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 j(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,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}},z=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 L=e=>{const t=k(e);return t.model.repo_id||t.model.repository||t.model.model||null},$=new Map,B=e=>{const t=(e=>{const t=$.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 G(e,t){if("ggml-llm"!==e)throw new Error("Currently only GGML LLM backend is supported");const r=L(t);if(!r)throw new Error("Buttress generator config missing repo identifier");const n=`${e}:${r}`,o=$.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 C(k(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 U(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=I(n),o=n.contexts.get(r);if(!o)throw new Error(`Context "${r}" not initialized`);return await o.ready,D(o.context,t)},tokenize:async(e={})=>{const{text:t="",params:r={}}=e,o=I(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=I(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=I(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=I(n),r=n.contexts.get(t);return!!r&&z(n,r,Boolean(e.force))},finalize:async()=>{const e=Array.from(n.contexts.values()).map((e=>z(n,e,!0)));await Promise.allSettled(e)}}}(n,t),i={id:n,type:a.type,instance:a,refCount:1};return $.set(n,i),{id:n,info:a.info}}async function F(e){const t=$.get(e);return!!t&&(t.refCount-=1,t.refCount<=0&&(await t.instance.finalize(),$.delete(e)),!0)}const J={initContext:async(e,t)=>B(e).initContext(t),completion:async(e,t)=>B(e).completion(t),tokenize:async(e,t)=>B(e).tokenize(t),detokenize:async(e,t)=>B(e).detokenize(t),applyChatTemplate:async(e,t)=>B(e).applyChatTemplate(t),releaseContext:async(e,t)=>B(e).releaseContext(t)};function Y(e,t){return"ggml-llm"===e?L(t):null}},971:(e,t,r)=>{e.exports=(e=>{var t={};return r.d(t,e),t})({z:()=>o.z})}},f={};function p(e){var t=f[e];if(void 0!==t)return t.exports;var r=f[e]={exports:{}};return d[e](r,r.exports,p),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())))},p.a=(e,t,r)=>{var n;r&&((n=[]).d=-1);var o,c,u,d=new Set,f=e.exports,p=new Promise(((e,t)=>{u=t,c=e}));p[i]=f,p[a]=e=>(n&&e(n),d.forEach(e),p.catch((e=>{}))),e.exports=p,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(p[s]=e):c(f),l(n)))),n&&n.d<0&&(n.d=0)},u=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,p.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);p.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,p.d(r,n),r},p.d=(e,t)=>{for(var r in t)p.o(t,r)&&!p.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},p.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var m=p(173);const y=(m=await m).bR,h=m.Ux,v=m.Zy,b=m.aE,_=m.sA,g=m.YO,w=m.UD;export{y as checkAndNotifyUpdates,h as checkForUpdates,v as compareVersions,b as createRouter,_ as createServer,g as currentVersion,w as startServer};
1
+ import*as e from"@trpc/server";import{createRequire as t}from"node:module";import*as n from"zod";import*as r from"@huggingface/gguf";import*as o from"@fugood/llama.node";import*as a from"@iarna/toml";var i,s,l={},u={};function c(e){var t=u[e];if(void 0!==t)return t.exports;var n=u[e]={exports:{}};return l[e](n,n.exports,c),n.exports}s=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var n=Object.create(null);c.r(n);var r={};i=i||[null,s({}),s([]),s(s)];for(var o=2&t&&e;"object"==typeof o&&!~i.indexOf(o);o=s(o))Object.getOwnPropertyNames(o).forEach((t=>r[t]=()=>e[t]));return r.default=()=>e,c.d(n,r),n},c.d=(e,t)=>{for(var n in t)c.o(t,n)&&!c.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var d={};c.r(d),c.d(d,{finalizeGenerator:()=>er,getCapabilities:()=>tr,getModelIdentifier:()=>rr,ggmlLlm:()=>nr,startGenerator:()=>Xn});const p=(e=>{var t={};return c.d(t,e),t})({initTRPC:()=>e.initTRPC}),f={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,BAD_GATEWAY:-32603,SERVICE_UNAVAILABLE:-32603,GATEWAY_TIMEOUT:-32603,UNAUTHORIZED:-32001,PAYMENT_REQUIRED:-32002,FORBIDDEN:-32003,NOT_FOUND:-32004,METHOD_NOT_SUPPORTED:-32005,TIMEOUT:-32008,CONFLICT:-32009,PRECONDITION_FAILED:-32012,PAYLOAD_TOO_LARGE:-32013,UNSUPPORTED_MEDIA_TYPE:-32015,UNPROCESSABLE_CONTENT:-32022,PRECONDITION_REQUIRED:-32028,TOO_MANY_REQUESTS:-32029,CLIENT_CLOSED_REQUEST:-32099},m={[-32700]:"PARSE_ERROR",[-32600]:"BAD_REQUEST",[-32603]:"INTERNAL_SERVER_ERROR",[-32001]:"UNAUTHORIZED",[-32002]:"PAYMENT_REQUIRED",[-32003]:"FORBIDDEN",[-32004]:"NOT_FOUND",[-32005]:"METHOD_NOT_SUPPORTED",[-32008]:"TIMEOUT",[-32009]:"CONFLICT",[-32012]:"PRECONDITION_FAILED",[-32013]:"PAYLOAD_TOO_LARGE",[-32015]:"UNSUPPORTED_MEDIA_TYPE",[-32022]:"UNPROCESSABLE_CONTENT",[-32028]:"PRECONDITION_REQUIRED",[-32029]:"TOO_MANY_REQUESTS",[-32099]:"CLIENT_CLOSED_REQUEST"};f.BAD_GATEWAY,f.SERVICE_UNAVAILABLE,f.GATEWAY_TIMEOUT,f.INTERNAL_SERVER_ERROR;function y(e){return!!e&&!Array.isArray(e)&&"object"==typeof e}const h="function"==typeof Symbol&&!!Symbol.asyncIterator;function b(e){return h&&y(e)&&Symbol.asyncIterator in e}const g=e=>e();function v(e){return e}var w=Object.create,_=Object.defineProperty,x=Object.getOwnPropertyDescriptor,E=Object.getOwnPropertyNames,S=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty,O=(e,t)=>function(){return t||(0,e[E(e)[0]])((t={exports:{}}).exports,t),t.exports},C=(e,t,n)=>(n=null!=e?w(S(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var o,a=E(t),i=0,s=a.length;i<s;i++)o=a[i],k.call(e,o)||o===n||_(e,o,{get:(e=>t[e]).bind(null,o),enumerable:!(r=x(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:_(n,"default",{value:e,enumerable:!0}),e));const M={PARSE_ERROR:400,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_SUPPORTED:405,TIMEOUT:408,CONFLICT:409,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,UNSUPPORTED_MEDIA_TYPE:415,UNPROCESSABLE_CONTENT:422,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504};function N(e){var t;return null!==(t=M[e])&&void 0!==t?t:500}function T(e){return N(e.code)}var B=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(e,t){function n(e){return t.exports=n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t.exports.__esModule=!0,t.exports.default=t.exports,n(e)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports}}),P=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(e,t){var n=B().default;t.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},t.exports.__esModule=!0,t.exports.default=t.exports}}),$=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(e,t){var n=B().default,r=P();t.exports=function(e){var t=r(e,"string");return"symbol"==n(t)?t:t+""},t.exports.__esModule=!0,t.exports.default=t.exports}}),I=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(e,t){var n=$();t.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},t.exports.__esModule=!0,t.exports.default=t.exports}}),A=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(e,t){var n=I();function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}t.exports=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e},t.exports.__esModule=!0,t.exports.default=t.exports}}),R=C(A(),1);function U(e){const{path:t,error:n,config:r}=e,{code:o}=e.error,a={message:n.message,code:f[o],data:{code:o,httpStatus:T(n)}};return r.isDev&&"string"==typeof e.error.stack&&(a.data.stack=e.error.stack),"string"==typeof t&&(a.data.path=t),r.errorFormatter((0,R.default)((0,R.default)({},e),{},{shape:a}))}var j=C(I(),1),q=class extends Error{};function L(e){if(e instanceof F)return e;if(e instanceof Error&&"TRPCError"===e.name)return e;const t=new F({code:"INTERNAL_SERVER_ERROR",cause:e});return e instanceof Error&&e.stack&&(t.stack=e.stack),t}var F=class extends Error{constructor(e){var t,n,r;const o=function(e){if(e instanceof Error)return e;const t=typeof e;return"undefined"!==t&&"function"!==t&&null!==e?"object"!==t?new Error(String(e)):y(e)?Object.assign(new q,e):void 0:void 0}(e.cause);super(null!==(t=null!==(n=e.message)&&void 0!==n?n:null==o?void 0:o.message)&&void 0!==t?t:e.code,{cause:o}),(0,j.default)(this,"cause",void 0),(0,j.default)(this,"code",void 0),this.code=e.code,this.name="TRPCError",null!==(r=this.cause)&&void 0!==r||(this.cause=o)}},D=C(A(),1);function z(e,t){return"error"in t?(0,D.default)((0,D.default)({},t),{},{error:e.transformer.output.serialize(t.error)}):"data"in t.result?(0,D.default)((0,D.default)({},t),{},{result:(0,D.default)((0,D.default)({},t.result),{},{data:e.transformer.output.serialize(t.result.data)})}):t}function G(e,t){return Array.isArray(t)?t.map((t=>z(e,t))):z(e,t)}Error;C(A(),1);async function H(e,t){const{_def:n}=e;let r=n.procedures[t];for(;!r;){const e=Object.keys(n.lazy).find((e=>t.startsWith(e)));if(!e)return null;const o=n.lazy[e];await o.load(),r=n.procedures[t]}return r}const V=Symbol();function J(e){return Array.isArray(e)&&e[2]===V}function K(e){return"object"==typeof e&&null!==e&&"subscribe"in e}function Y(e){const t={subscribe(t){let n=null,r=!1,o=!1,a=!1;function i(){null!==n?o||(o=!0,"function"==typeof n?n():n&&n.unsubscribe()):a=!0}return n=e({next(e){var n;r||null===(n=t.next)||void 0===n||n.call(t,e)},error(e){var n;r||(r=!0,null===(n=t.error)||void 0===n||n.call(t,e),i())},complete(){var e;r||(r=!0,null===(e=t.complete)||void 0===e||e.call(t),i())}}),a&&i(),{unsubscribe:i}},pipe:(...e)=>e.reduce(Q,t)};return t}function Q(e,t){return t(e)}function W(e,t){const n=function(e,t){let n=null;const r=()=>{null==n||n.unsubscribe(),n=null,t.removeEventListener("abort",r)};return new ReadableStream({start(o){n=e.subscribe({next(e){o.enqueue({ok:!0,value:e})},error(e){o.enqueue({ok:!1,error:e}),o.close()},complete(){o.close()}}),t.aborted?r():t.addEventListener("abort",r,{once:!0})},cancel(){r()}})}(e,t),r=n.getReader(),o={async next(){const e=await r.read();if(e.done)return{value:void 0,done:!0};const{value:t}=e;if(!t.ok)throw t.error;return{value:t.value,done:!1}},return:async()=>(await r.cancel(),{value:void 0,done:!0})};return{[Symbol.asyncIterator]:()=>o}}function Z(e){let t;try{t=JSON.parse(e)}catch(e){throw new F({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:e})}return function(e){try{if(null===e)return null;if(!y(e))throw new Error("Expected object");const t=Object.entries(e).filter((([e,t])=>"string"!=typeof t));if(t.length>0)throw new Error(`Expected connectionParams to be string values. Got ${t.map((([e,t])=>`${e}: ${typeof t}`)).join(", ")}`);return e}catch(e){throw new F({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:e})}}(t)}var X=C(A(),1);function ee(e){let t=null;const n=Symbol.for("@trpc/server/http/memo");let r=n;return{read:async()=>{var o;return r!==n||(null!==(o=t)&&void 0!==o||(t=e().catch((e=>{if(e instanceof F)throw e;throw new F({code:"BAD_REQUEST",message:e instanceof Error?e.message:"Invalid input",cause:e})}))),r=await t,t=null),r},result:()=>r!==n?r:void 0}}const te={isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("application/json"))},async parse(e){var t;const{req:n}=e,r="1"===e.searchParams.get("batch"),o=r?e.path.split(","):[e.path],a=ee((async()=>{let t;if("GET"===n.method){const n=e.searchParams.get("input");n&&(t=JSON.parse(n))}else t=await n.json();if(void 0===t)return{};if(!r)return{0:e.router._def._config.transformer.input.deserialize(t)};if(!y(t))throw new F({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});const a={};for(const n of o.keys()){const r=t[n];void 0!==r&&(a[n]=e.router._def._config.transformer.input.deserialize(r))}return a})),i=await Promise.all(o.map((async(t,n)=>{const r=await H(e.router,t);return{path:t,procedure:r,getRawInput:async()=>{let t=(await a.read())[n];if("subscription"===(null==r?void 0:r._def.type)){var o,i;const n=null!==(o=null!==(i=e.headers.get("last-event-id"))&&void 0!==i?i:e.searchParams.get("lastEventId"))&&void 0!==o?o:e.searchParams.get("Last-Event-Id");if(n)if(y(t))t=(0,X.default)((0,X.default)({},t),{},{lastEventId:n});else{var s;null!==(s=t)&&void 0!==s||(t={lastEventId:n})}}return t},result:()=>{var e;return null===(e=a.result())||void 0===e?void 0:e[n]}}}))),s=new Set(i.map((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})).filter(Boolean));if(s.size>1)throw new F({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(s).join(", ")}`});const l=null!==(t=s.values().next().value)&&void 0!==t?t:"unknown",u=e.searchParams.get("connectionParams");return{isBatchCall:r,accept:n.headers.get("trpc-accept"),calls:i,type:l,connectionParams:null===u?null:Z(u),signal:n.signal,url:e.url}}},ne=[te,{isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("multipart/form-data"))},async parse(e){const{req:t}=e;if("POST"!==t.method)throw new F({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});const n=ee((async()=>await t.formData())),r=await H(e.router,e.path);return{accept:null,calls:[{path:e.path,getRawInput:n.read,result:n.result,procedure:r}],isBatchCall:!1,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}},{isMatch(e){var t;return!!(null===(t=e.headers.get("content-type"))||void 0===t?void 0:t.startsWith("application/octet-stream"))},async parse(e){const{req:t}=e;if("POST"!==t.method)throw new F({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});const n=ee((async()=>t.body));return{calls:[{path:e.path,getRawInput:n.read,result:n.result,procedure:await H(e.router,e.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:t.signal,url:e.url}}}];async function re(e){const t=function(e){const t=ne.find((t=>t.isMatch(e)));if(t)return t;if(!t&&"GET"===e.method)return te;throw new F({code:"UNSUPPORTED_MEDIA_TYPE",message:e.headers.has("content-type")?`Unsupported content-type "${e.headers.get("content-type")}`:"Missing content-type header"})}(e.req);return await t.parse(e)}function oe(e){return y(e)&&"AbortError"===e.name}function ae(e="AbortError"){throw new DOMException(e,"AbortError")}function ie(e){return"[object Object]"===Object.prototype.toString.call(e)}var se=C(I(),1);let le;const ue=new WeakMap,ce=()=>{};le=Symbol.toStringTag;var de,pe,fe,me,ye=class e{constructor(e){(0,se.default)(this,"promise",void 0),(0,se.default)(this,"subscribers",[]),(0,se.default)(this,"settlement",null),(0,se.default)(this,le,"Unpromise"),this.promise="function"==typeof e?new Promise(e):e;const t=this.promise.then((e=>{const{subscribers:t}=this;this.subscribers=null,this.settlement={status:"fulfilled",value:e},null==t||t.forEach((({resolve:t})=>{t(e)}))}));"catch"in t&&t.catch((e=>{const{subscribers:t}=this;this.subscribers=null,this.settlement={status:"rejected",reason:e},null==t||t.forEach((({reject:t})=>{t(e)}))}))}subscribe(){let e,t;const{settlement:n}=this;if(null===n){if(null===this.subscribers)throw new Error("Unpromise settled but still has subscribers");const n=function(){let e,t;const n=new Promise(((n,r)=>{e=n,t=r}));return{promise:n,resolve:e,reject:t}}();this.subscribers=(r=this.subscribers,o=n,[...r,o]),e=n.promise,t=()=>{null!==this.subscribers&&(this.subscribers=function(e,t){const n=e.indexOf(t);return-1!==n?function(e,t){return[...e.slice(0,t),...e.slice(t+1)]}(e,n):e}(this.subscribers,n))}}else{const{status:r}=n;e="fulfilled"===r?Promise.resolve(n.value):Promise.reject(n.reason),t=ce}var r,o;return Object.assign(e,{unsubscribe:t})}then(e,t){const n=this.subscribe(),{unsubscribe:r}=n;return Object.assign(n.then(e,t),{unsubscribe:r})}catch(e){const t=this.subscribe(),{unsubscribe:n}=t;return Object.assign(t.catch(e),{unsubscribe:n})}finally(e){const t=this.subscribe(),{unsubscribe:n}=t;return Object.assign(t.finally(e),{unsubscribe:n})}static proxy(t){const n=e.getSubscribablePromise(t);return void 0!==n?n:e.createSubscribablePromise(t)}static createSubscribablePromise(t){const n=new e(t);return ue.set(t,n),ue.set(n,n),n}static getSubscribablePromise(e){return ue.get(e)}static resolve(t){const n="object"==typeof t&&null!==t&&"then"in t&&"function"==typeof t.then?t:Promise.resolve(t);return e.proxy(n).subscribe()}static async any(t){const n=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.any(n)}finally{n.forEach((({unsubscribe:e})=>{e()}))}}static async race(t){const n=(Array.isArray(t)?t:[...t]).map(e.resolve);try{return await Promise.race(n)}finally{n.forEach((({unsubscribe:e})=>{e()}))}}static async raceReferences(e){const t=e.map(he);try{return await Promise.race(t)}finally{for(const e of t)e.unsubscribe()}}};function he(e){return ye.proxy(e).then((()=>[e]))}function be(e,t){const n=e,r=n[Symbol.dispose];return n[Symbol.dispose]=()=>{t(),null==r||r()},n}function ge(e,t){const n=e,r=n[Symbol.asyncDispose];return n[Symbol.asyncDispose]=async()=>{await t(),await(null==r?void 0:r())},n}null!==(pe=(de=Symbol).dispose)&&void 0!==pe||(de.dispose=Symbol()),null!==(me=(fe=Symbol).asyncDispose)&&void 0!==me||(fe.asyncDispose=Symbol());const ve=Symbol();function we(e){let t=null;return be({start(){if(t)throw new Error("Timer already started");return new Promise((n=>{t=setTimeout((()=>n(ve)),e)}))}},(()=>{t&&clearTimeout(t)}))}var _e=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(e,t){t.exports=function(){var e="function"==typeof SuppressedError?SuppressedError:function(e,t){var n=Error();return n.name="SuppressedError",n.error=e,n.suppressed=t,n},t={},n=[];function r(e,t){if(null!=t){if(Object(t)!==t)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(e)var r=t[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(void 0===r&&(r=t[Symbol.dispose||Symbol.for("Symbol.dispose")],e))var o=r;if("function"!=typeof r)throw new TypeError("Object is not disposable.");o&&(r=function(){try{o.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:r.bind(null,!1),a:r.bind(null,!0),d:function(){var r,o=this.e,a=0;function i(){for(;r=n.pop();)try{if(!r.a&&1===a)return a=0,n.push(r),Promise.resolve().then(i);if(r.d){var e=r.d.call(r.v);if(r.a)return a|=2,Promise.resolve(e).then(i,s)}else a|=1}catch(e){return s(e)}if(1===a)return o!==t?Promise.reject(o):Promise.resolve();if(o!==t)throw o}function s(n){return o=o!==t?new e(n,o):n,i()}return i()}}},t.exports.__esModule=!0,t.exports.default=t.exports}}),xe=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(e,t){t.exports=function(e,t){this.v=e,this.k=t},t.exports.__esModule=!0,t.exports.default=t.exports}}),Ee=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(e,t){var n=xe();t.exports=function(e){return new n(e,0)},t.exports.__esModule=!0,t.exports.default=t.exports}}),Se=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(e,t){var n=xe();function r(e){var t,r;function o(t,r){try{var i=e[t](r),s=i.value,l=s instanceof n;Promise.resolve(l?s.v:s).then((function(n){if(l){var r="return"===t?"return":"next";if(!s.k||n.done)return o(r,n);n=e[r](n).value}a(i.done?"return":"normal",n)}),(function(e){o("throw",e)}))}catch(e){a("throw",e)}}function a(e,n){switch(e){case"return":t.resolve({value:n,done:!0});break;case"throw":t.reject(n);break;default:t.resolve({value:n,done:!1})}(t=t.next)?o(t.key,t.arg):r=null}this._invoke=function(e,n){return new Promise((function(a,i){var s={key:e,arg:n,resolve:a,reject:i,next:null};r?r=r.next=s:(t=r=s,o(e,n))}))},"function"!=typeof e.return&&(this.return=void 0)}r.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},r.prototype.next=function(e){return this._invoke("next",e)},r.prototype.throw=function(e){return this._invoke("throw",e)},r.prototype.return=function(e){return this._invoke("return",e)},t.exports=function(e){return function(){return new r(e.apply(this,arguments))}},t.exports.__esModule=!0,t.exports.default=t.exports}}),ke=C(_e(),1),Oe=C(Ee(),1),Ce=C(Se(),1);function Me(e){const t=e[Symbol.asyncIterator]();return t[Symbol.asyncDispose]?t:ge(t,(async()=>{var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))}))}function Ne(){return(Ne=(0,Ce.default)((function*(e,t){try{var n=(0,ke.default)();const r=n.a(Me(e)),o=n.u(we(t.maxDurationMs)).start();let a;for(;;){if(a=yield(0,Oe.default)(ye.race([r.next(),o])),a===ve&&ae(),a.done)return a;yield a.value,a=null}}catch(e){n.e=e}finally{yield(0,Oe.default)(n.d())}}))).apply(this,arguments)}function Te(){return(Te=(0,Ce.default)((function*(e,t){try{var n=(0,ke.default)();const r=n.a(Me(e));let o;const a=n.u(we(t.gracePeriodMs));let i=t.count,s=new Promise((()=>{}));for(;;){if(o=yield(0,Oe.default)(ye.race([r.next(),s])),o===ve&&ae(),o.done)return o.value;yield o.value,0==--i&&(s=a.start()),o=null}}catch(e){n.e=e}finally{yield(0,Oe.default)(n.d())}}))).apply(this,arguments)}function Be(){let e,t;return{promise:new Promise(((n,r)=>{e=n,t=r})),resolve:e,reject:t}}var Pe=C(_e(),1),$e=C(Ee(),1),Ie=C(Se(),1);function Ae(){let e="idle",t=Be();const n=[],r=new Set,o=[];function a(n){if("pending"!==e)return;const a=function(e,t){const n=e[Symbol.asyncIterator]();let r="idle";function o(){r="done",t=()=>{}}return{pull:function(){"idle"===r&&(r="pending",n.next().then((e=>{if(e.done)return r="done",t({status:"return",value:e.value}),void o();r="idle",t({status:"yield",value:e.value})})).catch((e=>{t({status:"error",error:e}),o()})))},destroy:async()=>{var e;o(),await(null===(e=n.return)||void 0===e?void 0:e.call(n))}}}(n,(n=>{if("pending"===e){switch(n.status){case"yield":o.push([a,n]);break;case"return":r.delete(a);break;case"error":o.push([a,n]),r.delete(a)}t.resolve()}}));r.add(a),a.pull()}return{add(t){switch(e){case"idle":n.push(t);break;case"pending":a(t)}},[Symbol.asyncIterator]:()=>(0,Ie.default)((function*(){try{var i=(0,Pe.default)();if("idle"!==e)throw new Error("Cannot iterate twice");e="pending";i.a(ge({},(async()=>{e="done";const n=[];if(await Promise.all(Array.from(r.values()).map((async e=>{try{await e.destroy()}catch(e){n.push(e)}}))),o.length=0,r.clear(),t.resolve(),n.length>0)throw new AggregateError(n)})));for(;n.length>0;)a(n.shift());for(;r.size>0;){for(yield(0,$e.default)(t.promise);o.length>0;){const[e,t]=o.shift();switch(t.status){case"yield":yield t.value,e.pull();break;case"error":throw t.error}}t=Be()}}catch(e){i.e=e}finally{yield(0,$e.default)(i.d())}}))()}}function Re(e){const t=e[Symbol.asyncIterator]();return new ReadableStream({async cancel(){var e;await(null===(e=t.return)||void 0===e?void 0:e.call(t))},async pull(e){const n=await t.next();n.done?e.close():e.enqueue(n.value)}})}var Ue=C(_e(),1),je=C(Ee(),1),qe=C(Se(),1);const Le=Symbol("ping");function Fe(e,t){return De.apply(this,arguments)}function De(){return(De=(0,qe.default)((function*(e,t){try{var n=(0,Ue.default)();const o=n.a(Me(e));let a,i=o.next();for(;;)try{var r=(0,Ue.default)();const e=r.u(we(t));if(a=yield(0,je.default)(ye.race([i,e.start()])),a===ve){yield Le;continue}if(a.done)return a.value;i=o.next(),yield a.value,a=null}catch(e){r.e=e}finally{r.d()}}catch(e){n.e=e}finally{yield(0,je.default)(n.d())}}))).apply(this,arguments)}var ze=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(e,t){function n(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return(n=function(e){this.s=e,this.n=e.next}).prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new n(e)}t.exports=function(e){var t,r,o,a=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,o=Symbol.iterator);a--;){if(r&&null!=(t=e[r]))return t.call(e);if(o&&null!=(t=e[o]))return new n(t.call(e));r="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")},t.exports.__esModule=!0,t.exports.default=t.exports}}),Ge=C(Ee(),1),He=C(Se(),1),Ve=C(_e(),1),Je=C(ze(),1);const Ke=0,Ye=1,Qe=0,We=1,Ze=0,Xe=1,et=2;function tt(e){return(y(e)||"function"==typeof e)&&"function"==typeof(null==e?void 0:e.then)&&"function"==typeof(null==e?void 0:e.catch)}var nt=class extends Error{constructor(e){super("Max depth reached at path: "+e.join(".")),this.path=e}};function rt(){return rt=(0,He.default)((function*(e){const{data:t}=e;let n=0;const r=0,o=Ae();function a(e){const t=n++,r=e(t);return o.add(r),t}function i(t,n){return a(function(){var r=(0,He.default)((function*(r){const o=l(n);o&&(t.catch((t=>{var r;null===(r=e.onError)||void 0===r||r.call(e,{error:t,path:n})})),t=Promise.reject(o));try{const e=yield(0,Ge.default)(t);yield[r,Qe,c(e,n)]}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:n}),yield[r,We,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:n})]}}));return function(e){return r.apply(this,arguments)}}())}function s(t,n){return a(function(){var r=(0,He.default)((function*(r){try{var o=(0,Ve.default)();const s=l(n);if(s)throw s;const u=o.a(Me(t));try{for(;;){const e=yield(0,Ge.default)(u.next());if(e.done){yield[r,Ze,c(e.value,n)];break}yield[r,Xe,c(e.value,n)]}}catch(t){var a,i;null===(a=e.onError)||void 0===a||a.call(e,{error:t,path:n}),yield[r,et,null===(i=e.formatError)||void 0===i?void 0:i.call(e,{error:t,path:n})]}}catch(e){o.e=e}finally{yield(0,Ge.default)(o.d())}}));return function(e){return r.apply(this,arguments)}}())}function l(t){return e.maxDepth&&t.length>e.maxDepth?new nt(t):null}function u(t,n){if(tt(t))return[Ke,i(t,n)];if(b(t)){if(e.maxDepth&&n.length>=e.maxDepth)throw new Error("Max depth reached");return[Ye,s(t,n)]}return null}function c(e,t){if(void 0===e)return[[]];const n=u(e,t);if(n)return[[r],[null,...n]];if(!1===ie(o=e)||void 0!==(a=o.constructor)&&(!1===ie(i=a.prototype)||!1===i.hasOwnProperty("isPrototypeOf")))return[[e]];var o,a,i;const s={},l=[];for(const[n,o]of Object.entries(e)){const e=u(o,[...t,n]);e?(s[n]=r,l.push([n,...e])):s[n]=o}return[[s],...l]}const d={};for(const[e,n]of Object.entries(t))d[e]=c(n,[e]);yield d;let p=o;e.pingMs&&(p=Fe(o,e.pingMs));var f,m=!1,y=!1;try{for(var h,g=(0,Je.default)(p);m=!(h=yield(0,Ge.default)(g.next())).done;m=!1){const e=h.value;yield e}}catch(e){y=!0,f=e}finally{try{m&&null!=g.return&&(yield(0,Ge.default)(g.return()))}finally{if(y)throw f}}})),rt.apply(this,arguments)}function ot(e){let t=Re(function(e){return rt.apply(this,arguments)}(e));const{serialize:n}=e;return n&&(t=t.pipeThrough(new TransformStream({transform(e,t){e===Le?t.enqueue(Le):t.enqueue(n(e))}}))),t.pipeThrough(new TransformStream({transform(e,t){e===Le?t.enqueue(" "):t.enqueue(JSON.stringify(e)+"\n")}})).pipeThrough(new TextEncoderStream)}Error;var at=O({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncGeneratorDelegate.js"(e,t){var n=xe();t.exports=function(e){var t={},r=!1;function o(t,o){return r=!0,o=new Promise((function(n){n(e[t](o))})),{done:!1,value:new n(o,1)}}return t["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},t.next=function(e){return r?(r=!1,e):o("next",e)},"function"==typeof e.throw&&(t.throw=function(e){if(r)throw r=!1,e;return o("throw",e)}),"function"==typeof e.return&&(t.return=function(e){return r?(r=!1,e):o("return",e)}),t},t.exports.__esModule=!0,t.exports.default=t.exports}}),it=C(ze(),1),st=C(Ee(),1),lt=C(Se(),1),ut=C(at(),1);C(_e(),1);const ct="ping",dt="serialized-error",pt="connected",ft="return";function mt(e){var t,n,r,o,a;const{serialize:i=v}=e,s={enabled:null!==(t=null===(n=e.ping)||void 0===n?void 0:n.enabled)&&void 0!==t&&t,intervalMs:null!==(r=null===(o=e.ping)||void 0===o?void 0:o.intervalMs)&&void 0!==r?r:1e3},l=null!==(a=e.client)&&void 0!==a?a:{};if(s.enabled&&l.reconnectAfterInactivityMs&&s.intervalMs>l.reconnectAfterInactivityMs)throw new Error(`Ping interval must be less than client reconnect interval to prevent unnecessary reconnection - ping.intervalMs: ${s.intervalMs} client.reconnectAfterInactivityMs: ${l.reconnectAfterInactivityMs}`);function u(){return u=(0,lt.default)((function*(){yield{event:pt,data:JSON.stringify(l)};let t,n,r=e.data;e.emitAndEndImmediately&&(r=function(e,t){return Te.apply(this,arguments)}(r,{count:1,gracePeriodMs:1})),e.maxDurationMs&&e.maxDurationMs>0&&e.maxDurationMs!==1/0&&(r=function(e,t){return Ne.apply(this,arguments)}(r,{maxDurationMs:e.maxDurationMs})),s.enabled&&s.intervalMs!==1/0&&s.intervalMs>0&&(r=Fe(r,s.intervalMs));var o,a=!1,u=!1;try{for(var c,d=(0,it.default)(r);a=!(c=yield(0,st.default)(d.next())).done;a=!1)t=c.value,t!==Le?(n=J(t)?{id:t[0],data:t[1]}:{data:t},n.data=JSON.stringify(i(n.data)),yield n,t=null,n=null):yield{event:ct,data:""}}catch(e){u=!0,o=e}finally{try{a&&null!=d.return&&(yield(0,st.default)(d.return()))}finally{if(u)throw o}}})),u.apply(this,arguments)}function c(){return c=(0,lt.default)((function*(){try{yield*(0,ut.default)((0,it.default)(function(){return u.apply(this,arguments)}())),yield{event:ft,data:""}}catch(r){var t,n;if(oe(r))return;const o=L(r),a=null!==(t=null===(n=e.formatError)||void 0===n?void 0:n.call(e,{error:o}))&&void 0!==t?t:null;yield{event:dt,data:JSON.stringify(i(a))}}})),c.apply(this,arguments)}const d=Re(function(){return c.apply(this,arguments)}());return d.pipeThrough(new TransformStream({transform(e,t){"event"in e&&t.enqueue(`event: ${e.event}\n`),"data"in e&&t.enqueue(`data: ${e.data}\n`),"id"in e&&t.enqueue(`id: ${e.id}\n`),"comment"in e&&t.enqueue(`: ${e.comment}\n`),t.enqueue("\n\n")}})).pipeThrough(new TextEncoderStream)}const yt={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform","X-Accel-Buffering":"no",Connection:"keep-alive"};var ht=C(Se(),1),bt=C(A(),1);function gt(e){return g((0,ht.default)((function*(){throw e})))}const vt={mutation:["POST"],query:["GET"],subscription:["GET"]},wt={mutation:["POST"],query:["GET","POST"],subscription:["GET","POST"]};function _t(e){var t,n,r;const{ctx:o,info:a,responseMeta:i,untransformedJSON:s,errors:l=[],headers:u}=e;let c=s?function(e){const t=Array.isArray(e)?e:[e],n=new Set(t.map((e=>{var t;return"error"in e&&y(e.error.data)?"number"==typeof(null===(t=e.error.data)||void 0===t?void 0:t.httpStatus)?e.error.data.httpStatus:N(m[e.error.code]):200})));return 1!==n.size?207:n.values().next().value}(s):200;const d=!s,p=d?[]:Array.isArray(s)?s:[s],f=null!==(t=null==i?void 0:i({ctx:o,info:a,paths:null==a?void 0:a.calls.map((e=>e.path)),data:p,errors:l,eagerGeneration:d,type:null!==(n=null==a||null===(r=a.calls.find((e=>{var t;return null===(t=e.procedure)||void 0===t?void 0:t._def.type})))||void 0===r||null===(r=r.procedure)||void 0===r?void 0:r._def.type)&&void 0!==n?n:"unknown"}))&&void 0!==t?t:{};if(f.headers)if(f.headers instanceof Headers)for(const[e,t]of f.headers.entries())u.append(e,t);else for(const[e,t]of Object.entries(f.headers))if(Array.isArray(t))for(const n of t)u.append(e,n);else"string"==typeof t&&u.set(e,t);return f.status&&(c=f.status),{status:c}}function xt(e){return!!y(e)&&(!!b(e)||(Object.values(e).some(tt)||Object.values(e).some(b)))}async function Et(e){var t,n,r,o,a,i;const{router:s,req:l}=e,u=new Headers([["vary","trpc-accept"]]),c=s._def._config,d=new URL(l.url);if("HEAD"===l.method)return new Response(null,{status:204});const p=null===(t=null!==(n=e.allowBatching)&&void 0!==n?n:null===(r=e.batching)||void 0===r?void 0:r.enabled)||void 0===t||t,f=null!==(o=e.allowMethodOverride)&&void 0!==o&&o&&"POST"===l.method,m=await g((async()=>{try{return[void 0,await re({req:l,path:decodeURIComponent(e.path),router:s,searchParams:d.searchParams,headers:e.req.headers,url:d})]}catch(e){return[L(e),void 0]}})),y=g((()=>{let t;return{valueOrUndefined:()=>{if(t)return t[1]},value:()=>{const[e,n]=t;if(e)throw e;return n},create:async n=>{if(t)throw new Error("This should only be called once - report a bug in tRPC");try{const r=await e.createContext({info:n});t=[void 0,r]}catch(e){t=[L(e),void 0]}}}})),h=f?wt:vt,v="application/jsonl"===l.headers.get("trpc-accept"),w=null===(a=null===(i=c.sse)||void 0===i?void 0:i.enabled)||void 0===a||a;try{const[t,n]=m;if(t)throw t;if(n.isBatchCall&&!p)throw new F({code:"BAD_REQUEST",message:"Batching is not enabled on the server"});if(v&&!n.isBatchCall)throw new F({message:"Streaming requests must be batched (you can do a batch of 1)",code:"BAD_REQUEST"});await y.create(n);const r=n.calls.map((async t=>{const r=t.procedure;try{if(e.error)throw e.error;if(!r)throw new F({code:"NOT_FOUND",message:`No procedure found on path "${t.path}"`});if(!h[r._def.type].includes(l.method))throw new F({code:"METHOD_NOT_SUPPORTED",message:`Unsupported ${l.method}-request to ${r._def.type} procedure at path "${t.path}"`});if("subscription"===r._def.type&&n.isBatchCall)throw new F({code:"BAD_REQUEST",message:"Cannot batch subscription calls"});return[void 0,{data:await r({path:t.path,getRawInput:t.getRawInput,ctx:y.value(),type:r._def.type,signal:e.req.signal})}]}catch(n){var o,a,i;const r=L(n),s=t.result();return null===(o=e.onError)||void 0===o||o.call(e,{error:r,path:t.path,input:s,ctx:y.valueOrUndefined(),type:null!==(a=null===(i=t.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown",req:e.req}),[r,void 0]}}));if(!n.isBatchCall){const[t]=n.calls,[o,a]=await r[0];switch(n.type){case"unknown":case"mutation":case"query":{if(u.set("content-type","application/json"),xt(null==a?void 0:a.data))throw new F({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"});const r=o?{error:U({config:c,ctx:y.valueOrUndefined(),error:o,input:t.result(),path:t.path,type:n.type})}:{result:{data:a.data}},i=_t({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:o?[o]:[],headers:u,untransformedJSON:[r]});return new Response(JSON.stringify(G(c,r)),{status:i.status,headers:u})}case"subscription":{const r=g((()=>{if(o)return gt(o);if(!w)return gt(new F({code:"METHOD_NOT_SUPPORTED",message:'Missing experimental flag "sseSubscriptions"'}));if(!K(a.data)&&!b(a.data))return gt(new F({message:`Subscription ${t.path} did not return an observable or a AsyncGenerator`,code:"INTERNAL_SERVER_ERROR"}));return K(a.data)?W(a.data,e.req.signal):a.data})),i=mt((0,bt.default)((0,bt.default)({},c.sse),{},{data:r,serialize:e=>c.transformer.output.serialize(e),formatError(n){var r,o,a;const i=L(n.error),s=null==t?void 0:t.result(),l=null==t?void 0:t.path,u=null!==(r=null==t||null===(o=t.procedure)||void 0===o?void 0:o._def.type)&&void 0!==r?r:"unknown";null===(a=e.onError)||void 0===a||a.call(e,{error:i,path:l,input:s,ctx:y.valueOrUndefined(),req:e.req,type:u});return U({config:c,ctx:y.valueOrUndefined(),error:i,input:s,path:l,type:u})}}));for(const[e,t]of Object.entries(yt))u.set(e,t);const s=_t({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:[],headers:u,untransformedJSON:null});return new Response(i,{headers:u,status:s.status})}}}if("application/jsonl"===n.accept){u.set("content-type","application/json"),u.set("transfer-encoding","chunked");const t=_t({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,errors:[],headers:u,untransformedJSON:null}),o=ot((0,bt.default)((0,bt.default)({},c.jsonl),{},{maxDepth:1/0,data:r.map((async t=>{const[r,o]=await t,a=n.calls[0];var i,s;if(r)return{error:U({config:c,ctx:y.valueOrUndefined(),error:r,input:a.result(),path:a.path,type:null!==(i=null===(s=a.procedure)||void 0===s?void 0:s._def.type)&&void 0!==i?i:"unknown"})};const l=K(o.data)?W(o.data,e.req.signal):Promise.resolve(o.data);return{result:Promise.resolve({data:l})}})),serialize:e=>c.transformer.output.serialize(e),onError:t=>{var r,o;null===(r=e.onError)||void 0===r||r.call(e,{error:L(t),path:void 0,input:void 0,ctx:y.valueOrUndefined(),req:e.req,type:null!==(o=null==n?void 0:n.type)&&void 0!==o?o:"unknown"})},formatError(e){var t,r;const o=null==n?void 0:n.calls[e.path[0]],a=L(e.error),i=null==o?void 0:o.result(),s=null==o?void 0:o.path,l=null!==(t=null==o||null===(r=o.procedure)||void 0===r?void 0:r._def.type)&&void 0!==t?t:"unknown";return U({config:c,ctx:y.valueOrUndefined(),error:a,input:i,path:s,type:l})}}));return new Response(o,{headers:u,status:t.status})}u.set("content-type","application/json");const o=(await Promise.all(r)).map((e=>{const[t,n]=e;return t?e:xt(n.data)?[new F({code:"UNSUPPORTED_MEDIA_TYPE",message:"Cannot use stream-like response in non-streaming request - use httpBatchStreamLink"}),void 0]:e})),a=o.map((([e,t],r)=>{const o=n.calls[r];var a,i;return e?{error:U({config:c,ctx:y.valueOrUndefined(),error:e,input:o.result(),path:o.path,type:null!==(a=null===(i=o.procedure)||void 0===i?void 0:i._def.type)&&void 0!==a?a:"unknown"})}:{result:{data:t.data}}})),i=o.map((([e])=>e)).filter(Boolean),s=_t({ctx:y.valueOrUndefined(),info:n,responseMeta:e.responseMeta,untransformedJSON:a,errors:i,headers:u});return new Response(JSON.stringify(G(c,a)),{status:s.status,headers:u})}catch(t){var _;const[n,r]=m,o=y.valueOrUndefined(),{error:a,untransformedJSON:i,body:s}=function(e,t){const{router:n,req:r,onError:o}=t.opts,a=L(e);null==o||o({error:a,path:t.path,input:t.input,ctx:t.ctx,type:t.type,req:r});const i={error:U({config:n._def._config,error:a,type:t.type,path:t.path,input:t.input,ctx:t.ctx})},s=G(n._def._config,i);return{error:a,untransformedJSON:i,body:JSON.stringify(s)}}(t,{opts:e,ctx:y.valueOrUndefined(),type:null!==(_=null==r?void 0:r.type)&&void 0!==_?_:"unknown"}),l=_t({ctx:o,info:r,responseMeta:e.responseMeta,untransformedJSON:i,errors:[a],headers:u});return new Response(s,{status:l.status,headers:u})}}function St(e){try{var t,n;const r=e.headers[":scheme"]&&"https"===e.headers[":scheme"]||e.socket&&"encrypted"in e.socket&&e.socket.encrypted?"https:":"http:",o=null!==(t=null!==(n=e.headers.host)&&void 0!==n?n:e.headers[":authority"])&&void 0!==t?t:"localhost";return new URL(e.url,`${r}//${o}`)}catch(e){throw new F({code:"BAD_REQUEST",message:"Invalid URL",cause:e})}}function kt(e){const t=new Headers;for(const n in e){const r=e[n];if("string"!=typeof n||!n.startsWith(":"))if(Array.isArray(r))for(const e of r)t.append(n,e);else null!=r&&t.append(n,r)}return t}function Ot(e,t,n){const r=new AbortController,o=()=>{t.off("close",o),e.off("aborted",o),r.abort()};t.once("close",o),e.once("aborted",o);const a=St(e),i={headers:kt(e.headers),method:e.method,signal:r.signal};"GET"!==e.method&&"HEAD"!==e.method&&(i.body=function(e,t){if("body"in e){if(void 0===e.body)return;return"string"==typeof e.body?e.body:JSON.stringify(e.body)}let n=0,r=!1;return new ReadableStream({start(o){const a=s=>{n+=s.length,!t.maxBodySize||n<=t.maxBodySize?o.enqueue(new Uint8Array(s.buffer,s.byteOffset,s.byteLength)):(o.error(new F({code:"PAYLOAD_TOO_LARGE"})),r=!0,e.off("data",a),e.off("end",i))},i=()=>{r||(r=!0,e.off("data",a),e.off("end",i),o.close())};e.on("data",a),e.on("end",i)},cancel(){e.destroy()}})}(e,n),i.duplex="half");return new Request(a,i)}async function Ct(e){const{res:t}=e;try{const n=new WritableStream({async write(e){var n;await async function(e,t){!1===e.write(t)&&await new Promise(((t,n)=>{const r=e=>{n(e),a()},o=()=>{t(),a()},a=()=>{e.off("error",r),e.off("drain",o)};e.once("error",r),e.once("drain",o)}))}(t,e),null===(n=t.flush)||void 0===n||n.call(t)}});await e.body.pipeTo(n,{signal:e.signal})}catch(e){if(oe(e))return;throw e}}var Mt=C(A(),1);function Nt(e){return t=>{var n;const{res:r,req:o}=e,a=L(t),i=U({config:e.router._def._config,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});null===(n=e.onError)||void 0===n||n.call(e,{req:o,error:a,type:"unknown",path:void 0,input:void 0,ctx:void 0});const s=G(e.router._def._config,{error:i});r.statusCode=i.data.httpStatus,r.end(JSON.stringify(s))}}async function Tt(e){return new Promise((t=>{var n;const r=null!==(n=e.middleware)&&void 0!==n?n:(e,t,n)=>n();return e.res.once("finish",(()=>{t()})),r(e.req,e.res,(t=>{g((async()=>{var n;const r=Ot(e.req,e.res,{maxBodySize:null!==(n=e.maxBodySize)&&void 0!==n?n:null}),o=await Et((0,Mt.default)((0,Mt.default)({},e),{},{req:r,error:t?L(t):null,createContext:async t=>{var n;return await(null===(n=e.createContext)||void 0===n?void 0:n.call(e,(0,Mt.default)((0,Mt.default)({},e),t)))},onError(t){var n;null==e||null===(n=e.onError)||void 0===n||n.call(e,(0,Mt.default)((0,Mt.default)({},t),{},{req:e.req}))}}));await async function(e){const{response:t,rawResponse:n}=e;200===n.statusCode&&(n.statusCode=t.status);for(const[e,r]of t.headers)n.setHeader(e,r);try{t.body&&await Ct({res:n,signal:e.request.signal,body:t.body})}catch(e){throw n.headersSent||(n.statusCode=500),e}finally{n.end()}}({request:r,response:o,rawResponse:e.res})})).catch(Nt(e))}))}))}const Bt=t(import.meta.url)("http");var Pt=C(A(),1);function $t(e){var t;const n=(null!==(t=e.basePath)&&void 0!==t?t:"/").length;return(t,r)=>{let o="";g((async()=>{const a=St(t);o=a.pathname.slice(n),await Tt((0,Pt.default)((0,Pt.default)({},e),{},{req:t,res:r,path:o}))})).catch(Nt((0,Pt.default)({req:t,res:r,path:o},e)))}}function It(e){return Bt.createServer(function(e){return $t(e)}(e))}const At=(e=>{var t={};return c.d(t,e),t})({z:()=>n.z}),Rt=t(import.meta.url)("node:path"),Ut=t(import.meta.url)("node:os"),jt=t(import.meta.url)("node:fs/promises"),qt=t(import.meta.url)("node:crypto");const Lt=(e=>{var t={};return c.d(t,e),t})({gguf:()=>r.gguf});const Ft=(e=>{var t={};return c.d(t,e),t})({getBackendDevicesInfo:()=>o.getBackendDevicesInfo,isLibVariantAvailable:()=>o.isLibVariantAvailable,loadModel:()=>o.loadModel}),Dt=(e,t,n)=>Math.min(Math.max(e,t),n),zt=e=>e?40:0,Gt=(e=0)=>{if(!e)return 0;return Dt(e/12884901888*20,0,20)},Ht=(e=0)=>{if(!e)return 0;return Dt(e/34359738368*10,0,10)},Vt=e=>e?10:0,Jt=(e="default",t=null)=>{const n=String(e).toLowerCase();if(!n)return 0;if(n.includes("cuda"))return 20;if(n.includes("vulkan"))return 10;if(n.includes("default")){return"darwin"===t||"ios"===t?15:5}return 0},Kt=({platform:e,variant:t,hasGpu:n,gpuUsableBytes:r=0,cpuUsableBytes:o=0,ok:a=!0}={})=>{if(!a)return 0;const i=zt(n)+Jt(t,e)+Gt(r),s=Ht(o),l=Vt(a);return Math.min(100,Math.round(i+s+l))},Yt=["cuda","vulkan","snapdragon","default"],Qt=e=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[],Wt=e=>e&&String(e).trim().toLowerCase()||null,Zt=(e={})=>{const t=String(e.type||e.deviceType||e.kind||"").toLowerCase();return!!t.includes("gpu")||(!!t.includes("cuda")||(!!t.includes("metal")||(!!t.includes("vulkan")||!!t.includes("snapdragon"))))},Xt=({platform:e,totalMemoryInBytes:t,variant:n,devices:r,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:i,error:s})=>{const l=(e=>Array.isArray(e)?e.map((e=>({...e}))):[])(((e,t)=>"snapdragon"===e?t.filter((e=>"GPUOpenCL"!==e.deviceName)):t)(n,r)),u=l.some(Zt),c=l.filter((e=>Zt(e)&&Number.isFinite(Number(e.maxMemorySize)))).reduce(((e,t)=>e+t.maxMemorySize),0),d=t,p=u?Math.floor(c*o):0,f=d?Math.floor(d*a):0,m={platform:e,variant:n,hasGpu:u,gpuUsableBytes:p,cpuUsableBytes:f,ok:i},y=Kt(m),h=i?(({platform:e,variant:t,hasGpu:n,gpuUsableBytes:r=0,cpuUsableBytes:o=0,ok:a=!0}={})=>({gpuPresence:zt(n),variant:Jt(t,e),gpuMemory:Gt(r),cpuMemory:Ht(o),availability:Vt(a)}))(m):null;return{platform:e,ok:i,variant:n,hasGpu:u,devices:l,gpuTotalBytes:c,gpuUsableBytes:p,cpuTotalBytes:d,cpuUsableBytes:f,score:y,breakdown:h,error:s,timestamp:(new Date).toISOString()}},en=({device:e,modelBytes:t=0,kvCacheBytes:n=0}={})=>{if(!e)return{totalRequiredBytes:t+n,fitsInGpu:!1,fitsInCpu:!1,limiting:"unknown-device"};const r=Math.max(0,Number(t)||0)+Math.max(0,Number(n)||0),o=e.hasGpu&&r>0&&r<=e.gpuUsableBytes,a=r>0&&r<=e.cpuUsableBytes;let i="ok";return!o&&e.hasGpu&&(i="gpu-memory"),a||(i=o?"cpu-memory":"insufficient-memory"),{totalRequiredBytes:r,fitsInGpu:o,fitsInCpu:a,limiting:i}},tn="ggml-llm",nn=new Map([[tn,async({platform:e,variant:t=null,preferVariants:n=[],variantPreference:r=[],gpuMemoryFraction:o=.85,cpuMemoryFraction:a=.5,includeBreakdown:i=!1,totalMemoryInBytes:s,modelBytes:l=null,kvCacheBytes:u=null,limitedKvCacheBytes:c=null,dependencies:d={}}={})=>{const{getBackendDevicesInfo:p,isLibVariantAvailable:f}=d;if("function"!=typeof p||"function"!=typeof f)throw new TypeError("GGML capability detection requires getBackendDevicesInfo and isLibVariantAvailable functions");const m=(({variant:e,preferVariants:t=[],variantPreference:n=[]}={})=>{const r=[];e&&r.push(e),r.push(...Qt(t)),r.push(...Qt(n)),r.push(...Yt);const o=r.map(Wt).filter(Boolean);return Array.from(new Set(o))})({variant:t,preferVariants:n,variantPreference:r}),y=[];for(const t of m)try{if(!await f(t))throw new Error(`Variant ${t} not available on this platform`);const n=await p(t);y.push(Xt({platform:e,totalMemoryInBytes:s,variant:t,devices:n,gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!0}))}catch(n){const r=n instanceof Error?n.message:String(n);y.push(Xt({platform:e,totalMemoryInBytes:s,variant:t,devices:[],gpuMemoryFraction:o,cpuMemoryFraction:a,ok:!1,error:r}))}const h=y.filter((e=>e.ok)),b=h.find((e=>e.hasGpu))||h.find((e=>"default"===e.variant))||h[0]||null,g={ok:Boolean(b),selected:b?{...b,breakdown:i?b.breakdown:void 0}:null,attempts:y};if(!i&&g.selected&&delete g.selected.breakdown,!g||!l&&!u)return g;const v=e=>{if(!e)return e;const t=en({device:e,modelBytes:l||0,kvCacheBytes:u||0});let n=null;return null!=c&&c!==u&&(n=en({device:e,modelBytes:l||0,kvCacheBytes:c})),{...e,fit:t,...n&&{limitedFit:n}}};return g.selected=v(g.selected),g.attempts=Array.isArray(g.attempts)?g.attempts.map(v):g.attempts,g}]]),rn=async({platform:e,totalMemoryInBytes:t,backend:n=tn,dependencies:r,...o}={})=>{const a=nn.get(n);if(!a)throw new Error(`No capability detector registered for backend "${n}"`);return await a({...o,dependencies:r,totalMemoryInBytes:t,platform:e})},on={f16:2,f32:4,q8_0:1,q6_k:.75,q5_k:.625,q5_k_m:.625,q5_k_s:.625,q5_1:.625,q5_0:.625,q4_k:.5,q4_k_m:.5,q4_k_s:.5,q4_1:.5,q4_0:.5,iq4_nl:.5},an=e=>{const t=e?String(e).toLowerCase():"f16";return on[t]||on.f16},sn=e=>e?String(e).trim().toLowerCase():null,ln=({arch:e,nLayer:t=0})=>({arch:sn(e),enabled:!1,window:null,pattern:null,denseFirst:!1,type:null,kvLayers:Math.max(0,Math.floor(Number(t)||0)),swaLayers:0}),un=new Map([["llama4",({nSwa:e})=>{if(0===e)return{enabled:!1};return{enabled:!0,window:e&&e>0?e:8192,pattern:4,type:"chunked"}}],["afmoe",({nSwa:e})=>!e||e<=0?{enabled:!1}:{enabled:!0,window:e,pattern:4,type:"standard"}],["phi3",()=>({enabled:!1})],["gemma2",({nSwa:e})=>{const t=e&&e>0?e:4096;return t?{enabled:!0,window:t,pattern:2,type:"standard"}:{enabled:!1}}],["gemma3",({nSwa:e})=>!e||e<=0?{enabled:!1}:{enabled:!0,window:e,pattern:6,type:"standard"}],["gemma3n",({nLayer:e,nSwa:t})=>!t||t<=0?{enabled:!1}:{enabled:!0,window:t,pattern:5,type:"standard",kvLayers:Math.min(20,e)}],["gemma-embedding",({nSwa:e})=>!e||e<=0?{enabled:!1}:{enabled:!0,window:e,pattern:6,type:"symmetric"}],["cohere2",({nSwa:e})=>!e||e<=0?{enabled:!1}:{enabled:!0,window:e,pattern:4,type:"standard"}],["olmo2",({nSwa:e})=>!e||e<=0?{enabled:!1}:{enabled:!0,window:e,pattern:4,type:"standard"}],["exaone4",({nLayer:e,nSwa:t})=>{let n=null;return t&&t>0?n=t:e>=64&&(n=4096),n?{enabled:!0,window:n,pattern:4,type:"standard"}:{enabled:!1}}],["gpt-oss",({nSwa:e})=>!e||e<=0?{enabled:!1}:{enabled:!0,window:e,pattern:2,type:"standard"}],["smallthinker",({nSwa:e})=>!e||e<=0?{enabled:!1}:{enabled:!0,window:4096,pattern:4,denseFirst:!0,type:"standard"}]]),cn=({arch:e,metadata:t={},nLayer:n=0}={})=>{const r=sn(e||t["general.architecture"]),o=Math.max(0,Math.floor(Number(n)||0)),a=((e={},t=null)=>{if(!e)return null;const n=sn(t),r=n?`${n}.attention.sliding_window`:null,o=(r&&null!=e[r]?e[r]:null)??e["llama.attention.sliding_window"];if(null==o)return null;const a=Number(o);return Number.isFinite(a)?a:null})(t,r),i=r?un.get(r):null;if(!i)return ln({arch:r,nLayer:n});const s=i({nLayer:o,nSwa:a,metadata:t});if(!s||!s.enabled||!s.window||s.window<=0)return ln({arch:r,nLayer:n});const l=Math.max(0,Math.floor(Number(s.pattern)||0)),u=null!=s.kvLayers&&Number.isFinite(Number(s.kvLayers))?Number(s.kvLayers):o,c=Math.max(0,Math.floor(u)),d=((e=0,t=0,n=!1)=>{const r=Math.max(0,Math.floor(Number(e)||0)),o=Math.max(0,Math.floor(Number(t)||0));if(!r||1===o)return 0;if(o<=0)return r;const a=Math.max(0,o-1),i=r%o;return Math.floor(r/o)*a+(n?Math.max(0,i-1):Math.min(i,a))})(c,l,Boolean(s.denseFirst));return{arch:r,enabled:d>0,window:s.window,pattern:l,denseFirst:Boolean(s.denseFirst),type:s.type||"standard",kvLayers:c,swaLayers:d}},dn=(e={})=>{const t=e["general.architecture"],n=(t,n=null)=>{const r=e[t],o=Number(r);return Number.isFinite(o)?o:n},r=t?n(`${t}.context_length`,n("llama.context_length")):null,o=t?n(`${t}.block_count`,n("llama.block_count")):null,a=t?n(`${t}.embedding_length`,n("llama.embedding_length")):null,i=t?n(`${t}.attention.head_count`,n("llama.attention.head_count")):null;return{arch:t,nCtxTrain:r,nLayer:o,nEmbd:a,nHead:i,nHeadKv:t?n(`${t}.attention.head_count_kv`,n("llama.attention.head_count_kv",i)):null,nEmbdHeadK:t?n(`${t}.attention.key_length`,n("llama.attention.key_length")):null,nEmbdHeadV:t?n(`${t}.attention.value_length`,n("llama.attention.value_length")):null,quantVersion:e["general.quantization_version"]||null,fileType:e["general.file_type"]||null}},pn=({layerCount:e,headKvCount:t,embdHeadKCount:n,embdHeadVCount:r,cacheTypes:o,swaConfig:a,kvUnified:i=!1,nParallel:s=1,swaFull:l=!1})=>{const u=a?.window&&i?Math.max(1,Number(s)||1):1;return i=>((e,t,n,r,o,a={},{totalLayers:i=null,swaLayers:s=0,swaContext:l=null,swaContextMultiplier:u=1,swaAdditionalTokens:c=0,swaFull:d=!1}={})=>{if(!(e&&t&&n&&r&&o))return 0;const p=Number(null!=i&&void 0!==i?i:e),f=Math.max(0,Math.floor(p));if(!f)return 0;const m=an(a.k),y=an(a.v),h=Number(n)*(Number(r)*m+Number(o)*y);if(!h)return 0;const b=Math.max(0,Number(t)||0),g=Math.min(f,Math.max(0,Math.floor(Number(s)||0))),v=Math.max(0,f-g),w=(null!=l&&Number.isFinite(Number(l))?Math.max(0,Number(l)):b)*Math.max(1,Number(u)||1)+Math.max(0,Number(c)||0),_=d?b:Math.min(b,w),x=v*b+g*Math.max(0,Math.floor(_));return Math.round(h*x)})(e,i,t,n,r,o,{totalLayers:e,swaLayers:a?.swaLayers||0,swaContext:a?.window,swaFull:l,swaContextMultiplier:u})},fn=({maxCtx:e,availableMemory:t,modelBytes:n,kvBytesForCtx:r})=>{const o=Math.max(1,Math.floor(Number(e)||0));if(!r||t<=n)return o;let a=1,i=o,s=o;for(;a<=i;){const e=Math.floor((a+i)/2);n+r(e)<=t?(s=e,a=e+1):i=e-1}return s},mn=t(import.meta.url)("node:stream/web");var yn=c.t(mn,2);const hn="undefined"!=typeof globalThis&&globalThis.ReadableStream&&globalThis.WritableStream?{ReadableStream:globalThis.ReadableStream,WritableStream:globalThis.WritableStream}:yn,{ReadableStream:bn,WritableStream:gn}=hn,vn=new TextEncoder,wn=(e={},t={})=>(Object.entries(t||{}).forEach((([t,n])=>{n&&"object"==typeof n&&!Array.isArray(n)?(e[t]&&"object"==typeof e[t]||(e[t]={}),wn(e[t],n)):e[t]=n})),e),_n="https://huggingface.co",xn="https://huggingface.co/api",En=Rt.join(Ut.homedir(),".buttress","models"),Sn=["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"],kn=.5,On={backend:{type:"ggml-llm",variant:null,variant_preference:["cuda","vulkan","snapdragon","default"],gpu_memory_fraction:.85,cpu_memory_fraction:kn},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:xn,base_url:_n},runtime:{cache_dir:En,prefer_variants:[],huggingface_token:process.env.HUGGINGFACE_TOKEN||null,http_headers:{}}},Cn=(e,t=[])=>e||0===e?Array.isArray(e)?e.filter((e=>null!=e)):[e]:[...t],Mn=e=>{if(!e)return null;const t=String(e).toLowerCase();return["cuda","vulkan","snapdragon","default"].includes(t)?t:null},Nn=(e={})=>{const t=JSON.parse(JSON.stringify(On));if(wn(t,e),t.backend.variant=Mn(t.backend.variant),t.backend.variant_preference=Array.from(new Set(Cn(t.backend.variant_preference).map(Mn).filter(Boolean))),0===t.backend.variant_preference.length&&(t.backend.variant_preference=["cuda","vulkan","snapdragon","default"]),t.runtime.prefer_variants=Array.from(new Set(Cn(t.runtime.prefer_variants).map(Mn).filter(Boolean))),t.model.preferred_quantizations=Array.from(new Set(Cn(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||_n,t.model.api_base=t.model.api_base||xn,t.runtime.cache_dir=t.runtime.cache_dir?Rt.resolve(t.runtime.cache_dir):En,t},Tn=e=>{const t=e.toLowerCase();return Sn.find((e=>t.includes(e)))||null},Bn=async e=>{await(0,jt.mkdir)(e,{recursive:!0})},Pn=(e,t,n=En)=>{const r=(0,qt.createHash)("sha256").update(e).digest("hex");return Rt.join(((e=En)=>Rt.join(e,".metadata-cache"))(n),t,`${r}.json`)},$n=async(e,t,n=En)=>{try{const r=Pn(e,t,n),o=await(0,jt.readFile)(r,"utf-8");return console.log(`[Cache] Hit ${t} cache:`,Rt.basename(r)),JSON.parse(o,((e,t)=>"string"==typeof t&&t.startsWith("__bigint__")?BigInt(t.slice(10)):t))}catch(e){return null}},In=async(e,t,n,r=En)=>{try{const o=Pn(e,t,r);await Bn(Rt.dirname(o)),await(0,jt.writeFile)(o,JSON.stringify(n,((e,t)=>"bigint"==typeof t?`__bigint__${t.toString()}`:t)),"utf-8"),console.log(`[Cache] Wrote ${t} cache:`,Rt.basename(o))}catch(e){console.warn(`[Cache] Failed to write ${t} cache:`,e.message)}},An=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const n=await fetch(e,t);if(!n.ok){const t=await n.text().catch((()=>""));throw new Error(`Failed to fetch ${e}: ${n.status} ${n.statusText} ${t}`.trim())}return n.json()},Rn=async(e,t={})=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");const n=await fetch(e,{...t,method:"HEAD"});if(!n.ok)throw new Error(`Failed to fetch headers for ${e}: ${n.status} ${n.statusText}`);return n},Un=async(e,t,n=En)=>{const r=JSON.stringify({url:e,headers:t}),o=await $n(r,"range-metadata",n);if(o)return o;const a=!/^https?:/i.test(e),{metadata:i}=await(0,Lt.gguf)(e,{fetch,additionalFetchHeaders:t,allowLocalFile:a});return await In(r,"range-metadata",i,n),i},jn=async(e,t)=>{try{const n=await(0,jt.stat)(e);return!t||n.size===t}catch(e){return!1}},qn=async(e,t,n,r,o)=>{if("function"!=typeof fetch)throw new Error("Global fetch is not available in this runtime");await Bn(Rt.dirname(n));const a=await fetch(e,{headers:t});if(!a.ok||!a.body)throw new Error(`Failed to download ${e}: ${a.status} ${a.statusText}`);const i=await(0,jt.open)(n,"w"),s=Number(a.headers.get("content-length"))||r||0;let l=0,u=.05;try{await a.body.pipeTo(new gn({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>=u;)o(u),u+=.05}},async close(){await i.close(),"function"==typeof o&&o(1)},async abort(e){throw await i.close().catch((()=>{})),await(0,jt.unlink)(n).catch((()=>{})),e}}))}catch(e){throw await i.close().catch((()=>{})),await(0,jt.unlink)(n).catch((()=>{})),e}if(r){const e=await(0,jt.stat)(n);if(e.size!==r)throw await(0,jt.unlink)(n).catch((()=>{})),new Error(`Downloaded file size mismatch, expected ${r} got ${e.size}`)}},Ln=async e=>{const t=e.model.repo_id||e.model.repository||e.model.model;if(!t)throw new Error("`model.repo_id` is required in Buttress backend config");const n=e.model.revision||"main",r=e.runtime.cache_dir,o=JSON.stringify({repoId:t,revision:n,filename:e.model.filename,url:e.model.url,quantization:e.model.quantization,preferred_quantizations:e.model.preferred_quantizations}),a=await $n(o,"artifact-info",r);if(a)return a;const i={...e.runtime.http_headers||{}};if(e.runtime.huggingface_token&&(i.Authorization=`Bearer ${e.runtime.huggingface_token}`),e.model.url){const a=await Rn(e.model.url,{headers:i}),s=Number(a.headers.get("content-length"))||null,l={repoId:t,revision:n,filename:e.model.filename||e.model.url.split("/").pop(),url:e.model.url,size:s,headers:i};return await In(o,"artifact-info",l,r),l}let{filename:s}=e.model,l=e.model.quantization&&String(e.model.quantization).toLowerCase();const u=await An(`${e.model.api_base}/models/${t}?revision=${n}&blobs=true`,{headers:i}),c=(u?.siblings||u?.files||[]).map((e=>e.rfilename||e.path||e.filename)).filter((e=>"string"==typeof e&&e.endsWith(".gguf")));if(0===c.length)throw new Error(`No GGUF artifacts found in repo ${t}`);const d=e.model.preferred_quantizations.length>0?e.model.preferred_quantizations:Sn;if(s)l||(l=Tn(s));else{const e=(()=>{const e=d.find((e=>c.find((t=>t.toLowerCase().includes(e)))));if(e)return{filename:c.find((t=>t.toLowerCase().includes(e))),quantization:e};return null})()||{filename:c[0],quantization:null},{filename:t,quantization:n}=e;s=t,l=n||Tn(s)}const p=`${e.model.base_url.replace(/\/+$/,"")}/${t}/resolve/${n}/${s}`,f=/-(\d{5})-of-(\d{5})\.gguf$/,m=s.match(f);let y=null;if(m){const[,,r]=m,o=await An(`${e.model.api_base}/models/${t}?revision=${n}&blobs=true`,{headers:i}),a=o?.siblings||o?.files||[],l=Number(r);y=0;for(let e=1;e<=l;e+=1){const t=String(e).padStart(5,"0"),n=s.replace(f,`-${t}-of-${r}.gguf`),o=a.find((e=>(e.rfilename||e.path||e.filename)===n)),i=Number(o?.size);Number.isFinite(i)&&i>0&&(y+=i)}}else{const e=await Rn(p,{headers:i});y=Number(e.headers.get("content-length"))||null}const h={repoId:t,revision:n,filename:s,url:p,size:y,quantization:l,headers:i,isSplit:Boolean(m),splitCount:m?Number(m[2]):0};return await In(o,"artifact-info",h,r),h},Fn=async(e,{modelBytes:t=null,kvCacheBytes:n=null}={})=>{const r=(e=>{const t=[];return e.backend.variant&&t.push(e.backend.variant),e.runtime.prefer_variants.length>0&&t.push(...e.runtime.prefer_variants),t.push(...e.backend.variant_preference),t.push("default"),Array.from(new Set(t.map(Mn).filter(Boolean)))})(e),[o,...a]=r,i=null!=e.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.gpu_memory_fraction))):On.backend.gpu_memory_fraction||1,s=null!=e.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):kn,l=await rn({platform:process.platform,totalMemoryInBytes:Ut.totalmem(),backend:"ggml-llm",variant:o||null,preferVariants:a,gpuMemoryFraction:i,cpuMemoryFraction:s,dependencies:{getBackendDevicesInfo:Ft.getBackendDevicesInfo,isLibVariantAvailable:Ft.isLibVariantAvailable},modelBytes:t,kvCacheBytes:n}),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(!l.ok||!l.selected){const e=(l.attempts||[]).map((e=>`${e.variant}: ${e.error||"unknown error"}`)).join("; ");throw new Error(`Unable to initialize any backend variant (${r.join(", ")}). Errors: ${e}`)}const c=(l.attempts||[]).map(u);return{selected:u(l.selected),attempts:c}},Dn=async e=>{const t=await Ln(e),n=await Un(t.url,t.headers,e.runtime.cache_dir),{arch:r,nCtxTrain:o,nLayer:a,nEmbd:i,nHead:s,nHeadKv:l,nEmbdHeadK:u,nEmbdHeadV:c,quantVersion:d,fileType:p}=dn(n),f=Number.isFinite(Number(a))?Number(a):0,m=Number.isFinite(Number(i))?Number(i):0,y=Number.isFinite(Number(s))?Number(s):0,h=Number.isFinite(Number(l))?Number(l):y,b=y>0&&m>0?m/y:128,g=Number.isFinite(Number(u))?Number(u):b,v=Number.isFinite(Number(c))?Number(c):b,w=cn({arch:r,metadata:n,nLayer:f}),_=w&&Number.isFinite(Number(w.kvLayers))?Number(w.kvLayers):f,x=Math.max(0,Math.floor(Number(_)||0)),E=e.model.n_ctx?Number(e.model.n_ctx):null;let S=E||o||4096;const k=[],O=[];let C=!0;if(E&&o&&E>o){C=!1;const e=`Requested context length (${E}) exceeds model training context (${o})`;k.push(e),O.push(e),S=o}E&&!o&&k.push("Model metadata missing training context length, using requested value");const M={k:e.model.cache_k_type,v:e.model.cache_v_type},N=t.size>0?t.size:0,T=pn({layerCount:x,headKvCount:h,embdHeadKCount:g,embdHeadVCount:v,cacheTypes:M,swaConfig:w,kvUnified:e.model.kv_unified,nParallel:e.model.n_parallel,swaFull:e.model.swa_full}),B=T(S),P=await Fn(e,{modelBytes:N,kvCacheBytes:B}),$=P.selected.totalMemory||0,I=$*(e.backend.gpu_memory_fraction||1),A=null!=e.backend.cpu_memory_fraction?Math.min(1,Math.max(0,Number(e.backend.cpu_memory_fraction))):kn,R=Math.max(0,Ut.totalmem()*A),U=P.selected.hasGpu?I:R,j=fn({maxCtx:S,availableMemory:U,modelBytes:N,kvBytesForCtx:T});if(!E&&j){const e=o?Math.min(j,o):j,t=Math.max(32,e);t<S&&k.push(`Context length capped to ${t} by memory limits`),S=t}S>j&&(S=j);const q=Math.floor(j);console.log(`[buttress] Memory-limited context length: ${q}`);const L=T(S),F=N+L,D=f?N/(f+1):N;let z,G=0;P.selected.hasGpu&&D>0&&(G=Math.min(f+1,Math.max(0,Math.floor(I/D)))),console.log(`[buttress] Auto GPU layer capacity (${P.selected.variant}): ${G}/${f+1}`),z="auto"===e.model.n_gpu_layers||null==e.model.n_gpu_layers?G:Math.max(0,Math.min(Number(e.model.n_gpu_layers)||0,f+1));const H=(()=>{const t=e.model.flash_attn&&String(e.model.flash_attn).toLowerCase();return"on"===t||"off"===t?t:P.selected.hasGpu?"auto":"off"})(),V=e.runtime.cache_dir,J=((e,t)=>{if(e.model.local_path)return Rt.resolve(e.model.local_path);const n=t.repoId.split("/"),r=Rt.join(e.runtime.cache_dir,...n,t.revision);return Rt.join(r,t.filename)})(e,t),K=await jn(J,t.size),Y={ok:C,backend:"ggml-llm",warnings:k,errors:O,model:{repoId:t.repoId,revision:t.revision,filename:t.filename,quantization:t.quantization,url:t.url,sizeBytes:t.size,metadata:{architecture:r,n_ctx_train:o,n_layer:f,n_embd:m,quantization_version:d,file_type:p,kv_layer_count:x,swa:w?.enabled?{window:w.window,pattern:w.pattern,dense_first:w.denseFirst,type:w.type,layers:w.swaLayers}:null}},runtime:{variant:P.selected.variant,n_ctx:S,requested_ctx:E,n_gpu_layers:z,n_parallel:e.model.n_parallel,n_batch:e.model.n_batch,flash_attn_type:H,cache_type_k:M.k,cache_type_v:M.v,ctx_shift:e.model.ctx_shift,kv_unified:e.model.kv_unified,swa_full:e.model.swa_full,estimated_max_n_ctx:q,auto_gpu_layers:G},resources:{modelBytes:N,kvCacheBytes:L,totalEstimatedBytes:F,gpuCapacityBytes:$,gpuUsableBytes:I,cpuUsableBytes:R,fit:P.selected.fit},devices:{selected:P.selected,attempts:P.attempts},download:{cacheDir:V,localPath:J,exists:K},timestamp:(new Date).toISOString()};return{config:e,info:Y,artifact:t,metadata:{arch:r,nCtxTrain:o,nLayer:f,nEmbd:m},devices:P,cacheTypes:M,localPath:J,localExists:K}},zn=(e,t)=>`event: ${e}\ndata: ${null==t?"":JSON.stringify(t)}\n\n`,Gn=(e,t)=>{let n;return new bn({async start(r){try{const o=await e.parallel.completion(t,((e,t)=>{t&&r.enqueue(vn.encode(zn("token",{requestId:e,...t})))})),{requestId:a}=o;n=o.stop;const i=await o.promise;console.log("[Completion] Result:",i),r.enqueue(vn.encode(zn("result",{requestId:a,...i}))),r.close()}catch(e){r.enqueue(vn.encode(zn("error",{message:e?.message||String(e)}))),r.error(e)}},cancel(){n&&n()}})},Hn=e=>{const t={model:e.plan.localPath,runtime:e.plan.info.runtime};return(0,qt.createHash)("sha256").update(JSON.stringify(t)).digest("hex").slice(0,24)},Vn=async(e,t)=>{const n=Hn(e);let r=e.contexts.get(n);if(r)return r.refCount+=1,await r.ready,"function"==typeof t&&t(1),r;r={key:n,refCount:1},r.ready=(async()=>{const n=await(async(e,t,n)=>{const{config:r,localPath:o,artifact:a}=e;if(e.localExists&&!t.has(o))return e.info.download.exists=!0,"function"==typeof n&&n(.5),o;if(r.model.local_path&&!r.model.allow_local_file)throw new Error("Local model path provided but `model.allow_local_file` is not enabled");const i=o;t.has(i)||t.set(i,(async()=>{if(a.isSplit&&a.splitCount>0){const e=/-(\d{5})-of-(\d{5})\.gguf$/,t=Rt.dirname(o),i=a.splitCount;let s=0;for(let o=1;o<=i;o+=1){const l=String(o).padStart(5,"0"),u=a.filename.replace(e,`-${l}-of-${String(i).padStart(5,"0")}.gguf`),c=`${r.model.base_url.replace(/\/+$/,"")}/${a.repoId}/resolve/${a.revision}/${u}`,d=Rt.join(t,u);await jn(d)||await qn(c,a.headers,d,null,(e=>{if(e>=0&&Number.isFinite(e)){const t=(s+e)/i,r=Math.round(100*t);console.log(`Downloading model splits: ${Math.min(100,r)}%`),"function"==typeof n&&n(.5*t)}})),s+=1}}else await qn(a.url,a.headers,o,a.size,(e=>{if(e>=0&&Number.isFinite(e)){const t=Math.round(100*e);console.log(`Downloading model: ${Math.min(100,t)}%`),"function"==typeof n&&n(.5*e)}}));e.localExists=!0,e.info.download.exists=!0})());try{await t.get(i)}finally{t.delete(i)}return o})(e.plan,e.downloads,t);"function"==typeof t&&t(.5);const o={model:n,n_ctx:e.plan.info.runtime.n_ctx,n_gpu_layers:e.plan.info.runtime.n_gpu_layers,n_parallel:e.plan.info.runtime.n_parallel,n_batch:e.plan.info.runtime.n_batch,flash_attn_type:e.plan.info.runtime.flash_attn_type,ctx_shift:e.plan.info.runtime.ctx_shift,kv_unified:e.plan.info.runtime.kv_unified,swa_full:e.plan.info.runtime.swa_full,lib_variant:e.plan.info.runtime.variant};let a;"off"!==e.plan.info.runtime.flash_attn_type&&(o.cache_type_k=e.plan.info.runtime.cache_type_k,o.cache_type_v=e.plan.info.runtime.cache_type_v),console.log("[Context] Load Options:",o);try{if(a=await(0,Ft.loadModel)(o,(e=>{"function"==typeof t&&(t(.5+.25*e),e%5==0&&console.log("[Context] Load Model Progress:",e))})),e.plan.info.runtime.n_parallel){if(!await a.parallel.enable({n_parallel:e.plan.info.runtime.n_parallel,n_batch:e.plan.info.runtime.n_batch}))throw new Error("Failed to enable parallel decoding mode for context")}return"function"==typeof t&&t(1),r.context=a,r.modelInfo=a.getModelInfo(),r}catch(e){if(a)try{a.release()}catch(e){}throw e}})(),e.contexts.set(n,r);try{return await r.ready,r}catch(t){throw e.contexts.delete(n),t}},Jn=async(e,t,n=!1)=>{if(n)t.refCount=0;else if(t.refCount=Math.max(0,t.refCount-1),t.refCount>0)return!1;e.contexts.delete(t.key);try{t.context?.parallel?.disable?.()}catch(e){}return await(t.context?.release?.()),!0};const Kn=e=>{const t=Nn(e);return t.model.repo_id||t.model.repository||t.model.model||null};const Yn=e=>e?"number"==typeof e.score&&Number.isFinite(e.score)?Number(e.score):Kt(e):0;async function Qn(e=null,t={}){const{threshold:n=1.1,includeBreakdown:r=!1,config:o,...a}=t;let i=null,s=null,l=null,u=null,c=null,d=null;if(o)try{const{modelBytes:e,kvCacheBytes:t,limitedKvCacheBytes:n,memoryLimitedCtx:r,kvInfo:a,quantization:p}=await async function(e){const t=Nn(e),n=await Ln(t),r=await Un(n.url,n.headers,t.runtime.cache_dir),{arch:o,nCtxTrain:a,nLayer:i,nEmbd:s,nHead:l,nHeadKv:u,nEmbdHeadK:c,nEmbdHeadV:d,quantVersion:p,fileType:f}=dn(r),m=Number.isFinite(Number(i))?Number(i):0,y=Number.isFinite(Number(s))?Number(s):0,h=Number.isFinite(Number(l))?Number(l):0,b=Number.isFinite(Number(u))?Number(u):h,g=h>0&&y>0?y/h:128,v=Number.isFinite(Number(c))?Number(c):g,w=Number.isFinite(Number(d))?Number(d):g,_=cn({arch:o,metadata:r,nLayer:m}),x=_&&Number.isFinite(Number(_.kvLayers))?Number(_.kvLayers):m,E=Math.max(0,Math.floor(Number(x)||0)),S=(t.model.n_ctx?Number(t.model.n_ctx):null)||a||4096,k={k:t.model.cache_k_type,v:t.model.cache_v_type},O=n.size>0?n.size:0,C=pn({layerCount:E,headKvCount:b,embdHeadKCount:v,embdHeadVCount:w,cacheTypes:k,swaConfig:_,kvUnified:t.model.kv_unified,nParallel:t.model.n_parallel,swaFull:t.model.swa_full}),M=null!=t.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.gpu_memory_fraction))):On.backend.gpu_memory_fraction||1,N=null!=t.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(t.backend.cpu_memory_fraction))):kn,T=C(S),B=await Fn(t,{modelBytes:O,kvCacheBytes:T}),P=(B.selected.totalMemory||0)*M,$=Math.max(0,Ut.totalmem()*N),I=B.selected.hasGpu?P:$,A=fn({maxCtx:S,availableMemory:I,modelBytes:O,kvBytesForCtx:C}),R=C(S),U=C(A);return{kvInfo:{nCtxTrain:a,nLayer:m,nEmbd:y,nHeadKv:b,nEmbdHeadK:v,nEmbdHeadV:w,nHeadCount:h,nHeadKvCount:b,kvLayerCount:E,swa:_?.enabled?{window:_.window,pattern:_.pattern,denseFirst:_.denseFirst,type:_.type,layers:_.swaLayers}:null},modelBytes:O,kvCacheBytes:R,limitedKvCacheBytes:U,memoryLimitedCtx:A,quantization:{fileType:f,version:p}}}(o);i=e,s=t,l=n,u=r,c=a,d=p}catch(e){}const p=null!=o?.backend?.gpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.gpu_memory_fraction))):void 0,f=null!=o?.backend?.cpu_memory_fraction?Math.min(1,Math.max(0,Number(o.backend.cpu_memory_fraction))):void 0,m=await rn({...a,platform:process.platform,totalMemoryInBytes:Ut.totalmem(),backend:"ggml-llm",includeBreakdown:r,gpuMemoryFraction:p,cpuMemoryFraction:f,dependencies:{getBackendDevicesInfo:Ft.getBackendDevicesInfo,isLibVariantAvailable:Ft.isLibVariantAvailable},modelBytes:i,kvCacheBytes:s,limitedKvCacheBytes:l}),y=m.selected,h=Yn(y);y.modelBytes=i||null,y.kvCacheBytes=s||null,y.memoryLimitedCtx=u||null,y.limitedKvCacheBytes=l||null,y.kvInfo=c||null,y.quantization=d||null;let b=null,g=null;if(e){const t=Yn(e);g={...e,score:t};let r="buttress",o="buttress-higher-score";if(m.ok)if(t||0===t){const e=g.fit,a=g.limitedFit,i=y?.fit,s=y?.limitedFit,l=e?.fitsInGpu||e?.fitsInCpu||a?.fitsInGpu||a?.fitsInCpu,u=i?.fitsInGpu||i?.fitsInCpu||s?.fitsInGpu||s?.fitsInCpu;l&&!u?(r="local",o="client-fits-in-memory"):u&&!l?(r="buttress",o="buttress-fits-in-memory"):t>h*n?(r="local",o="client-better"):h>t*n?(r="buttress",o="buttress-better"):(r="either",o="comparable-scores")}else r="buttress",o="missing-client-score";else r="local",o="buttress-unavailable";b={buttressScore:h,clientScore:t,threshold:n,recommendation:r,reason:o}}m.ok||b||(b={buttressScore:h,clientScore:e?.score??null,threshold:n,recommendation:"local",reason:"buttress-unavailable"});let v=null;return o&&(v={repoId:o.model?.repo_id||null,quantization:o.model?.quantization||null,nCtx:o.model?.n_ctx||null,cacheKType:o.model?.cache_k_type||"f16",cacheVType:o.model?.cache_v_type||"f16"}),{type:"ggml-llm",timestamp:(new Date).toISOString(),buttress:m,client:g,comparison:b,modelConfig:v}}const Wn=new Map,Zn=e=>{const t=(e=>{const t=Wn.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 Xn(e,t){if("ggml-llm"!==e)throw new Error("Currently only GGML LLM backend is supported");const n=Kn(t);if(!n)throw new Error("Buttress generator config missing repo identifier");const r=`${e}:${n}`,o=Wn.get(r);if(o)return o.refCount+=1,{id:o.id,info:o.instance.info};const a=await async function(e,t){const n=await Dn(Nn(t)),r={id:e,type:"ggml-llm",config:t,plan:n,info:n.info,contexts:new Map,downloads:new Map};return{id:e,type:"ggml-llm",info:n.info,initContext:async(e={})=>{const{onProgress:t}=e,n=await Vn(r,t);return{modelInfo:n.modelInfo?{...n.modelInfo}:null,runtime:{...r.plan.info.runtime},download:{...r.plan.info.download}}},completion:async(e={})=>{const{options:t={}}=e,n=Hn(r),o=r.contexts.get(n);if(!o)throw new Error(`Context "${n}" not initialized`);return await o.ready,Gn(o.context,t)},tokenize:async(e={})=>{const{text:t="",params:n={}}=e,o=Hn(r),a=r.contexts.get(o);if(!a)throw new Error(`Context "${o}" not initialized`);await a.ready;const i=await a.context.tokenize(t,n);if(!i)return{tokens:[]};const s=Array.from(i.tokens??[]).map((e=>Number(e)));return{...i,tokens:s}},detokenize:async(e={})=>{const{tokens:t=[]}=e,n=Hn(r),o=r.contexts.get(n);if(!o)throw new Error(`Context "${n}" not initialized`);await o.ready;const a=t.map((e=>Number(e)));return o.context.detokenize(a)},applyChatTemplate:async(e={})=>{const{messages:t=[],template:n,params:o}=e,a=Hn(r),i=r.contexts.get(a);if(!i)throw new Error(`Context "${a}" not initialized`);return await i.ready,i.context.getFormattedChat(t,n,o)},releaseContext:async(e={})=>{const t=Hn(r),n=r.contexts.get(t);return!!n&&Jn(r,n,Boolean(e.force))},finalize:async()=>{const e=Array.from(r.contexts.values()).map((e=>Jn(r,e,!0)));await Promise.allSettled(e)}}}(r,t),i={id:r,type:a.type,instance:a,refCount:1};return Wn.set(r,i),{id:r,info:a.info}}async function er(e){const t=Wn.get(e);return!!t&&(t.refCount-=1,t.refCount<=0&&(await t.instance.finalize(),Wn.delete(e)),!0)}async function tr(e,t=null,n={}){if("ggml-llm"===e)return Qn(t,n);throw new Error(`Unknown backend type: ${e}`)}const nr={initContext:async(e,t)=>Zn(e).initContext(t),completion:async(e,t)=>Zn(e).completion(t),tokenize:async(e,t)=>Zn(e).tokenize(t),detokenize:async(e,t)=>Zn(e).detokenize(t),applyChatTemplate:async(e,t)=>Zn(e).applyChatTemplate(t),releaseContext:async(e,t)=>Zn(e).releaseContext(t)};function rr(e,t){return"ggml-llm"===e?Kn(t):null}const{version:or,name:ar}={version:"2.23.0-beta.22",name:"@fugood/buttress-server-poc"},ir=async()=>{const e=`https://registry.npmjs.org/${ar}/latest`;try{const t=new AbortController,n=setTimeout((()=>t.abort()),3e3),r=await fetch(e,{headers:{Accept:"application/json"},signal:t.signal});if(clearTimeout(n),!r.ok)return null;return(await r.json()).version||null}catch{return null}},sr=(e,t)=>{if(!t)return!1;const n=e.split(/[.-]/),r=t.split(/[.-]/);for(let e=0;e<Math.max(n.length,r.length);e+=1){const t=parseInt(n[e])||0,o=parseInt(r[e])||0;if(o>t)return!0;if(o<t)return!1}return!1},lr=async()=>{try{const e=await ir();e&&sr(or,e)&&(e=>{console.log(""),console.log("╭─────────────────────────────────────────────────╮"),console.log("│ Update available! %s → %s",or.padEnd(12),e.padEnd(12),"│"),console.log("│ │"),console.log("│ Run to upgrade: │"),console.log("│ npm install -g %s │",ar.padEnd(27)),console.log("╰─────────────────────────────────────────────────╯"),console.log("")})(e)}catch(e){}},ur=t(import.meta.url)("node:fs"),cr=t(import.meta.url)("node:child_process");const dr=(e=>{var t={};return c.d(t,e),t})({default:()=>a.default}),pr=JSON.parse('{"UU":"@fugood/buttress-server-poc","rE":"2.23.0-beta.22"}');async function fr({modelIds:e=[],defaultConfig:t=null}={}){const n=[];console.log(`${pr.UU} v${pr.rE}`),console.log("Generating model capabilities comparison...\n"),n.push(`${pr.UU} v${pr.rE}`),n.push("## Model Capabilities Comparison\n"),e&&0!==e.length||(console.error("Error: No model IDs provided"),process.exit(1));try{const r=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=r(n[e]||{},t):n[e]=t})),n},o=t||{},{server:a,generators:i=[],...s}=o,l=e=>r(JSON.parse(JSON.stringify(s)),e||{}),u=e=>{if(Array.isArray(i)&&i.length>0){const t=i.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const n=t.find((t=>t.model?.repo_id===e));if(n)return l(n)}}return Object.keys(s).length>0?l({}):null},c=[];for(let t=0;t<e.length;t+=1){const n=e[t];console.log(`[${t+1}/${e.length}] Analyzing ${n}...`);let r=u(n);r={...r||{},model:{...r?.model||{},repo_id:n}};const o=await tr("ggml-llm",null,{config:r,includeBreakdown:!0});c.push({modelId:n,capabilities:o,modelInfo:o.buttress?.selected||null,modelConfig:o.modelConfig||null})}const d=e=>e?(e/1024/1024/1024).toFixed(2):"N/A",p=e=>e?"✅":"🚫";n.push("| Model ID | Size (GB) | Context Size | KV Cache Size (GB) | Total Required Memory (GB) | Fits GPU (Full) | Fits CPU (Full) |"),n.push("|----------|-----------|--------------|--------------------|----------------------------|-----------------|-----------------|"),c.forEach((({modelId:e,modelInfo:t,modelConfig:r})=>{const o=d(t?.modelBytes),a=r?.nCtx||t?.kvInfo?.nCtxTrain||"N/A",i=pn(t),s=Number(a),l=t?.kvCacheBytes||(i&&Number.isFinite(s)&&s>0?i(s):i&&i(t?.kvInfo?.nCtxTrain||0))||null,u=d(l),c=d(t?.modelBytes&&l?t.modelBytes+l:t?.fit?.totalRequiredBytes),f=p(t?.fit?.fitsInGpu),m=p(t?.fit?.fitsInCpu);n.push(`| ${e} | ${o} | ${a} | ${u} | ${c} | ${f} | ${m} |`);if((null!=t?.memoryLimitedCtx||null!=t?.limitedFit)&&(!t?.fit?.fitsInGpu||!t?.fit?.fitsInCpu)){const e=t?.memoryLimitedCtx||a,r=Number(e),s=t?.limitedKvCacheBytes||i&&Number.isFinite(r)&&r>0&&i(r)||null,l=d(s),f=d(t?.modelBytes&&s?t.modelBytes+s:t?.limitedFit?.totalRequiredBytes),m=p(t?.limitedFit?.fitsInGpu),y=p(t?.limitedFit?.fitsInCpu);(e!==a||l!==u||f!==c)&&n.push(`| ↳ Limited | ${o} | ${e} | ${l} | ${f} | ${m} | ${y} |`)}})),n.push("\n---"),n.push("\n### System Information");let f=null;if("win32"!==process.platform)try{f=(0,cr.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}if(f?n.push(`- **System:** ${f}`):(n.push(`- **Hostname:** ${Ut.hostname()}`),n.push(`- **OS:** ${Ut.type()} ${Ut.release()}`)),n.push(`- **Platform:** ${process.platform}`),n.push(`- **CPU Cores:** ${Ut.cpus().length}`),n.push(`- **Total System Memory:** ${(Ut.totalmem()/1024/1024/1024).toFixed(2)} GB`),c.length>0){const e=c[0].capabilities,t=e.buttress?.selected;if(t){const e=t.cpuTotalBytes>0?(t.cpuUsableBytes/t.cpuTotalBytes*100).toFixed(0):0;if(n.push(`- **Usable CPU Memory:** ${(t.cpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${e}% of ${(t.cpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),t.hasGpu){const e=t.devices.filter((e=>"gpu"===e.type));if(e.length>0){const r=e[0];n.push(`- **GPU Backend:** ${r.backend}`),n.push(`- **GPU Name:** ${r.deviceName}`),n.push(`- **GPU Total Memory:** ${(r.maxMemorySize/1024/1024/1024).toFixed(2)} GB`);const o=t.gpuTotalBytes>0?(t.gpuUsableBytes/t.gpuTotalBytes*100).toFixed(0):0;n.push(`- **GPU Usable Memory:** ${(t.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${o}% of ${(t.gpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`)}}else n.push("- **GPU:** Not available")}}n.push("\n### Command Used");const m=process.argv.slice(2).join(" ");if(n.push(`\`\`\`bash\n${process.argv[0]} ${process.argv[1]} ${m}\n\`\`\``),n.push("\n### Package Information"),n.push(`- **Name:** ${pr.UU}`),n.push(`- **Version:** ${pr.rE}`),pr.description&&n.push(`- **Description:** ${pr.description}`),t&&Object.keys(t).length>0){n.push("\n### Configuration"),n.push("<details>"),n.push("<summary>Click to expand TOML configuration</summary>"),n.push("\n```toml");try{const e=dr.default.stringify(t);n.push(e)}catch(e){n.push("# Error serializing config"),n.push(JSON.stringify(t,null,2))}n.push("```"),n.push("</details>")}const y=`model-capabilities-${(new Date).toISOString().replace(/[.:]/g,"-").split("T")[0]}.md`,h=Rt.join(process.cwd(),y);ur.writeFileSync(h,n.join("\n"),"utf8"),console.log(`\nModel capabilities table saved to: ${h}`),process.exit(0)}catch(e){console.error("Failed to generate model table:",e.message),process.exit(1)}}async function mr({modelId:e=null,defaultConfig:t=null}={}){console.log(`${pr.UU} v${pr.rE}`),console.log("Testing capabilities for backend: ggml-llm"),e&&console.log(`Model: ${e}`),console.log("--------------------------------");try{const n=t||{},{server:r,generators:o=[],...a}=n,i=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=i(n[e]||{},t):n[e]=t})),n},s=e=>i(JSON.parse(JSON.stringify(a)),e||{});let l=(e=>{if(Array.isArray(o)&&o.length>0){const t=o.filter((e=>"ggml-llm"===e?.type));if(t.length>0&&e){const n=t.find((t=>t.model?.repo_id===e));if(n)return s(n)}}return Object.keys(a).length>0?s({}):null})(e);e&&(l={...l||{},model:{...l?.model||{},repo_id:e}});const u=await tr("ggml-llm",null,{config:l,includeBreakdown:!0}),c=u.buttress?.selected||null,d=u.modelConfig||null;if(e||d?.repoId){console.log("\n=== Model Information ===");const t=e||d?.repoId;if(console.log(`Repository ID: ${t}`),d?.quantization&&console.log(`Quantization: ${d.quantization}`),d?.nCtx&&console.log(`Context Length: ${d.nCtx}`),c?.quantization){const{fileType:e}=c.quantization;null!=e&&console.log(`Model File Type (GGUF): ${e}`)}const n=d?.cacheKType||"f16",r=d?.cacheVType||"f16";if(console.log(`KV Cache Type: K=${n}, V=${r}`),c?.modelBytes&&c?.kvCacheBytes){if(console.log(`Model Size: ${(c.modelBytes/1024/1024/1024).toFixed(2)} GB`),c.kvInfo?console.log(`KV Cache Size: ${(c.kvCacheBytes/1024/1024/1024).toFixed(2)} GB (KV info: ${JSON.stringify(c.kvInfo)})`):console.log(`KV Cache Size: ${(c.kvCacheBytes/1024/1024/1024).toFixed(2)} GB`),console.log(`Total Required Memory: ${((c.modelBytes+c.kvCacheBytes)/1024/1024/1024).toFixed(2)} GB`),null!=c.memoryLimitedCtx){const e=c.memoryLimitedCtx,t=c.kvInfo?.nCtxTrain;t?console.log(`\nMemory-Limited Context: ${e} (Train: ${t})`):console.log(`\nMemory-Limited Context: ${e}`),null!=c.limitedKvCacheBytes&&console.log(`Limited KV Cache Size: ${(c.limitedKvCacheBytes/1024/1024/1024).toFixed(2)} GB`)}}else if(u.buttress?.selected?.fit){const{totalRequiredBytes:e}=u.buttress.selected.fit;console.log(`Total Required Memory: ${(e/1024/1024/1024).toFixed(2)} GB`)}}if(u.buttress?.selected){const{selected:e}=u.buttress;console.log("\n=== Hardware Information ===");let t=null;if("win32"!==process.platform)try{t=(0,cr.execSync)("uname -a",{encoding:"utf8"}).trim()}catch{}t?console.log(`System: ${t}`):(console.log(`Hostname: ${Ut.hostname()}`),console.log(`OS: ${Ut.type()} ${Ut.release()}`)),console.log(`Platform: ${e.platform}`),console.log(`CPU Cores: ${Ut.cpus().length}`),console.log(`Total System Memory: ${(Ut.totalmem()/1024/1024/1024).toFixed(2)} GB`);const n=e.cpuTotalBytes>0?(e.cpuUsableBytes/e.cpuTotalBytes*100).toFixed(0):0;if(console.log(`Usable CPU Memory: ${(e.cpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${n}% of ${(e.cpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),e.hasGpu){console.log("\n--- GPU Details ---");e.devices.filter((e=>"gpu"===e.type)).forEach((t=>{console.log(`GPU Backend: ${t.backend}`),console.log(`GPU Name: ${t.deviceName}`),console.log(`GPU Total Memory: ${(t.maxMemorySize/1024/1024/1024).toFixed(2)} GB`);const n=e.gpuTotalBytes>0?(e.gpuUsableBytes/e.gpuTotalBytes*100).toFixed(0):0;console.log(`GPU Usable Memory: ${(e.gpuUsableBytes/1024/1024/1024).toFixed(2)} GB (${n}% of ${(e.gpuTotalBytes/1024/1024/1024).toFixed(2)} GB)`),t.metadata&&(t.metadata.hasBFloat16&&console.log("Supports BFloat16: Yes"),t.metadata.hasUnifiedMemory&&console.log("Unified Memory: Yes"))}))}else console.log("GPU: Not available");console.log(`\nBackend Variant: ${e.variant}`),console.log(`Performance Score: ${e.score}`),e.fit&&(console.log("\n--- Model Fit Analysis ---"),console.log("Fits in GPU: "+(e.fit.fitsInGpu?"Yes":"No")),console.log("Fits in CPU: "+(e.fit.fitsInCpu?"Yes":"No")),console.log(`Limiting Factor: ${e.fit.limiting}`),e.limitedFit&&(console.log("\n--- Memory-Limited Fit Analysis ---"),console.log(`Limited Total Required: ${(e.limitedFit.totalRequiredBytes/1024/1024/1024).toFixed(2)} GB`),console.log("Fits in GPU (Limited): "+(e.limitedFit.fitsInGpu?"Yes":"No")),console.log("Fits in CPU (Limited): "+(e.limitedFit.fitsInCpu?"Yes":"No")),console.log(`Limiting Factor (Limited): ${e.limitedFit.limiting}`)))}console.log("\n=== Full Capabilities JSON ==="),console.log(JSON.stringify(u,null,2)),process.exit(0)}catch(e){console.error("Failed to get capabilities:",e.message),process.exit(1)}}const yr=new TextDecoder,hr=p.initTRPC.context().create(),br=At.z.record(At.z.any()).optional(),gr=At.z.object({id:At.z.string()}),vr=At.z.object({id:At.z.string(),property:At.z.any().optional()}),wr=At.z.object({type:At.z.string(),config:br}),_r=At.z.object({type:At.z.string().optional().default("ggml-llm"),config:br,currentClientCapabilities:At.z.record(At.z.any()).optional(),options:At.z.record(At.z.any()).optional()}).optional(),xr=(e={},t={})=>{const n=Array.isArray(e)?[...e]:{...e};return Object.entries(t||{}).forEach((([e,t])=>{t&&"object"==typeof t&&!Array.isArray(t)?n[e]=xr(n[e]||{},t):n[e]=t})),n},Er=e=>e&&"object"==typeof e?JSON.parse(JSON.stringify(e)):null,Sr=(e,t)=>{const n=Er(e)||{},r=Er(t)||{};return xr(n,r)},kr=(e=d,{defaultConfig:t}={})=>{const n=Er(t)||{},r=Array.isArray(n.generators)?n.generators:[],{server:o,generators:a,...i}=n,s=e=>xr(JSON.parse(JSON.stringify(i)),e||{}),l=(e,t)=>{if(r.length>0){const n=r.filter((t=>t?.type===e));if(n.length>0&&t){const e=n.find((e=>e.model?.repo_id===t));if(e)return s(e)}}return Object.keys(i).length>0?s({}):null};return hr.router({getCapabilities:hr.procedure.input(_r).query((async({input:t})=>{console.log("[Server] Get Capabilities:",t);const n=t||{type:"ggml-llm"},{type:r="ggml-llm",config:o,currentClientCapabilities:a=null,options:i={}}=n,s=Er(o),u=e.getModelIdentifier(r,s),c=l(r,u),d=Sr(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=r),e.getCapabilities(r,a,{...i,config:d})})),startGenerator:hr.procedure.input(wr).mutation((async({input:t})=>{console.log("[Server] Start Generator:",t);const{type:n,config:r}=t,o=Er(r),a=e.getModelIdentifier(n,o),i=l(n,a),s=Sr(i,r);if(0===Object.keys(s).length)throw new Error("Buttress server missing generator configuration");return s.backend=s.backend||{},s.backend.type||(s.backend.type=n),e.startGenerator(n,s)})),finalizeGenerator:hr.procedure.input(gr).mutation((async({input:t})=>(console.log("[Server] Finalize Generator:",t),e.finalizeGenerator(t.id)))),ggmlLlm:hr.router({initContext:hr.procedure.input(vr).subscription((({input:t})=>Y((n=>{console.log("[Server] Init Context:",t);let r=!0;return(async()=>{try{const o={...t.property,onProgress:e=>{r&&n.next({progress:e})}};await new Promise((e=>setTimeout(e)));const a=await e.ggmlLlm.initContext(t.id,o);r&&(n.next({result:a}),n.complete())}catch(e){r&&n.error(e)}})(),()=>{r=!1}})))),completion:hr.procedure.input(vr).subscription((({input:t})=>Y((n=>{console.log("[Server] Completion:",t);let r=()=>{};return(async()=>{try{const o=await e.ggmlLlm.completion(t.id,t.property);if(!o)return void n.complete();r=((e,t)=>{const n=e.getReader();let r=!0;return(async()=>{try{for(;r;){const{value:e,done:o}=await n.read();if(o||!r)break;if(e){const n=yr.decode(e,{stream:!0});t.next(n)}}t.complete()}catch(e){t.error(e)}finally{n.cancel().catch((()=>{}))}})(),()=>{r=!1,n.cancel().catch((()=>{}))}})(o,n)}catch(e){n.error(e)}})(),()=>r()})))),tokenize:hr.procedure.input(vr).query((async({input:t})=>(console.log("[Server] Tokenize:",t),e.ggmlLlm.tokenize(t.id,t.property)))),detokenize:hr.procedure.input(vr).mutation((async({input:t})=>(console.log("[Server] Detokenize:",t),e.ggmlLlm.detokenize(t.id,t.property)))),applyChatTemplate:hr.procedure.input(vr).query((async({input:t})=>(console.log("[Server] Apply Chat Template:",t),e.ggmlLlm.applyChatTemplate(t.id,t.property)))),releaseContext:hr.procedure.input(vr).mutation((async({input:t})=>(console.log("[Server] Release Context:",t),e.ggmlLlm.releaseContext(t.id,t.property))))})})},Or=({backend:e=d,router:t,createContext:n=(()=>({})),defaultConfig:r}={})=>{const o=t||kr(e,{defaultConfig:r});return{server:It({router:o,createContext:n,basePath:"/trpc/"}),router:o,backend:e}},Cr=async({port:e=2080,backend:t,router:n,createContext:r,defaultConfig:o}={})=>{const{server:a,router:i}=Or({backend:t,router:n,createContext:r,defaultConfig:o});return await new Promise((t=>a.listen(e,t))),{server:a,router:i,port:e}};export{lr as checkAndNotifyUpdates,ir as checkForUpdates,sr as compareVersions,kr as createRouter,Or as createServer,or as currentVersion,fr as showModelsTable,Cr as startServer,mr 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.2",
3
+ "version": "2.23.0-beta.22",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -13,10 +13,11 @@
13
13
  },
14
14
  "scripts": {
15
15
  "build": "webpack --config webpack.config.js",
16
+ "prepack": "npm run build",
16
17
  "start": "node bin/start.mjs"
17
18
  },
18
19
  "dependencies": {
19
- "@fugood/llama.node": "^1.3.0-rc.5",
20
+ "@fugood/llama.node": "^1.4.4",
20
21
  "@huggingface/gguf": "^0.3.2",
21
22
  "@iarna/toml": "^3.0.0",
22
23
  "@trpc/server": "^11.6.0",
@@ -25,5 +26,5 @@
25
26
  "devDependencies": {
26
27
  "terser-webpack-plugin": "^5.0.3"
27
28
  },
28
- "gitHead": "2176ba38968bb060ff039b3750e8a00684d5d221"
29
+ "gitHead": "d0a0fe0012e6938d1e756e0c6ef04759e997e138"
29
30
  }